基于Python的多光谱遥感数据处理与分类技术实践—以农作物分类与NDVI评估为例

news2025/4/23 7:55:57

多光谱遥感数据包含可见光至红外波段的光谱信息,Python凭借其丰富的科学计算库(如rasterioscikit-learnGDAL),已成为处理此类数据的核心工具。本文以Landsat-8数据为例,演示‌辐射校正→特征提取→监督分类→精度评估‌的完整技术链。


数据处理流程

1. 辐射定标

将原始DN值转换为辐射亮度(Radiance):

代码实现‌:

python

import rasteriodefdn_to_radiance(band_path, M, A):with rasterio.open(band_path) as src:        dn = src.read(1)        radiance = M * dn + Areturn radiance.astype(np.float32)# Landsat-8 Band4参数示例M = 0.0003342A = -0.1b4_rad = dn_to_radiance('LC08_B4.TIF', M, A)

2. 大气校正(6S模型简化版)

采用暗像元法估算地表反射率:

代码实现‌:

python

import numpy as npdefatmospheric_correction(radiance, esun, solar_zenith):    d = 1.0# 日地距离修正因子    theta = np.deg2rad(solar_zenith)return (np.pi * radiance * d**2) / (esun * np.cos(theta))esun_b4 = 1536.36# Band4的ESUN值theta = 45.2# 太阳天顶角b4_refl = atmospheric_correction(b4_rad, esun_b4, theta)

3. 特征计算(NDVI为例)

代码实现‌:

python

with rasterio.open('B5.TIF') as nir_src, rasterio.open('B4.TIF') as red_src:    nir = nir_src.read(1)    red = red_src.read(1)    ndvi = (nir.astype(float) - red.astype(float)) / (nir + red + 1e-10)


图像分类实践

1. 数据准备(训练样本构建)

python

from sklearn.model_selection import train_test_splitimport numpy as np# 假设已提取特征矩阵X(shape: n_samples×n_features)# 标签数据y来自地面真实样本X = np.stack([b4_refl, b5_refl, ndvi], axis=2).reshape(-1,3)y = labeled_data.flatten()  # 0-背景,1-小麦,2-玉米,3-林地X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3)

2. 随机森林分类

原理公式‌:基于Gini不纯度选择分裂特征:

代码实现‌:

python

from sklearn.ensemble import RandomForestClassifierrf = RandomForestClassifier(n_estimators=100,                            max_depth=10,                           oob_score=True)rf.fit(X_train, y_train)pred_rf = rf.predict(X_test)

3. 支持向量机分类(RBF核)

核函数公式‌:

代码实现‌:

python

from sklearn.svm import SVCfrom sklearn.preprocessing import StandardScalerscaler = StandardScaler()X_train_scaled = scaler.fit_transform(X_train)X_test_scaled = scaler.transform(X_test)svm = SVC(kernel='rbf', C=10, gamma=0.1)svm.fit(X_train_scaled, y_train)pred_svm = svm.predict(X_test_scaled)


定量评估方法

1. 混淆矩阵与Kappa系数

Kappa计算公式‌:

代码实现‌:

python

from sklearn.metrics import confusion_matrix, cohen_kappa_scorecm = confusion_matrix(y_test, pred_rf)kappa = cohen_kappa_score(y_test, pred_rf)print(f"Kappa系数:{kappa:.3f}")

2. 分类报告(F1-score)

python

from sklearn.metrics import classification_reportreport = classification_report(y_test, pred_rf,                                target_names=['背景','小麦','玉米','林地'])print(report)

3. 特征重要性可视化

python

import matplotlib.pyplot as pltfeatures = ['Band4','Band5','NDVI']importances = rf.feature_importances_plt.barh(features, importances)plt.title('Feature Importance')plt.show()

成果展示

在黄淮海平原的实验中:

  • 随机森林总体精度达92.7%(Kappa=0.89)

  • NDVI特征使玉米识别精度提升15%

  • 分类结果与统计年鉴数据相关性R²=0.93

更多相关技术学习推荐阅读:基于python多光谱遥感数据处理、图像分类、定量评估

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2340621.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vscode python 代码无法函数跳转的问题

TL; DR; python.languageServer 配置成了 None 导致 vscode python 代码无法函数跳转 详细信息 mac 环境下 vscode 正常 command 鼠标左键 可以跳转到定义或者使用位置,但是我的为何不知道失效了 我一开始以为是热键冲突,结果发现 mac 好像没办法定…

Unity 脚本使用(二)——UnityEngine.AI——NavMesh

描述 Singleton class 用于访问被烘培好的 NavMesh. 使用NavMesh类可以执行空间查询(spatial queries),例如路径查找和可步行性测试。此类还允许您设置特定区域类型的寻路成本,并调整寻路和避免的全局行为。 静态属性&#xff0…

从项目真实场景中理解二分算法的细节(附图解和模板)

遇到一个真实场景里使用二分算法的问题,本以为可以放心交给小师弟去做,结果出现了各种问题,在此梳理下二分算法的核心思想和使用细节。 文章目录 1.场景描述2.场景分析3.二分算法的精髓3.1 核心模板3.2 二分过程图解3.3 各种区间写法3.3.1 闭…

Jetson Orin NX 16G 配置GO1强化学习运行环境

这一次收到了Jrtson Orin NX, 可以进行部署了。上一次在nano上的失败经验 Jetson nano配置Docker和torch运行环境_jetson docker-CSDN博客 本次的目的是配置cuda-torch-python38环境离机运行策略。 Jetson Orin NX SUPER 1. 烧录镜像 参考链接在ubuntu系统中安装sdk manag…

深度学习3.5 图像分类数据集

%matplotlib inline import torch import torchvision from torch.utils import data from torchvision import transforms from d2l import torch as d2l代码执行流程图 #mermaid-svg-WWhBmQvijswiICpI {font-family:"trebuchet ms",verdana,arial,sans-serif;font-…

js原型链prototype解释

function Person(){} var personnew Person() console.log(啊啊,Person instanceof Function);//true console.log(,Person.__proto__Function.prototype);//true console.log(,Person.prototype.__proto__ Object.prototype);//true console.log(,Function.prototype.__prot…

【知识】性能优化和内存优化的主要方向

转载请注明出处:小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你,欢迎[点赞、收藏、关注]哦~ 前言 现在有很多论文,乍一看很高级,实际上一搜全是现有技术的堆砌,但是这种裁缝式的论文依然能发表在很好的会议和期…

VS Code + GitHub:高效开发工作流指南

目录 一、安装 & 基本配置 1.下载 VS Code 2.安装推荐插件(打开侧边栏 Extensions) 3.设置中文界面(可选) 二、使用 VS Code 操作 Git/GitHub 1.基本 Git 操作(不输命令行!) 2.连接 GitHub(第一次使用) 三、克隆远程仓库到 VS Code 方法一(推荐): 方…

软件测试之接口测试常见面试

一、什么是(软件)接口测试? 接口测试:是测试系统组件间接口的一种测试方法 接口测试的重点:检查数据的交换,数据传递的正确性,以及接口间的逻辑依赖关系 接口测试的意义:在较早期开展,在软件开发的同时…

11、Refs:直接操控元素——React 19 DOM操作秘籍

一、元素操控的魔法本质 "Refs是巫师与麻瓜世界的连接通道,让开发者能像操控魔杖般精准控制DOM元素!"魔杖工坊的奥利凡德先生轻抚着魔杖,React/Vue的refs能量在杖尖跃动。 ——以神秘事务司的量子纠缠理论为基,揭示DOM…

uniapp-商城-33-shop 布局搜索页面以及u-search

shop页面上有一个搜索&#xff0c;可以进行商品搜索&#xff0c;这里我们先做一个页面布局&#xff0c;后面再来进行数据i联动。 1、shop页面的搜索 2、搜索的页面代码 <navigator class"searchView" url"/pagesub/pageshop/search/search"> …

【dataframe显示不全问题】打开一个行列超多的excel转成df之后行列显示不全

出现问题如下图&#xff1a; 解决方案&#xff5e; display.width解决列显示不全 pd.set_option(display.max_columns,1000) pd.set_option(display.width, 1000) pd.set_option(display.max_colwidth,1000) pd.set_option(display.max_rows,1000)

Windows下Golang与Nuxt项目宝塔部署指南

在Windows下将Golang后端和Nuxt前端项目打包&#xff0c;并使用宝塔面板部署的步骤如下 一、Golang后端打包 交叉编译为Linux可执行文件 在Windows PowerShell中执行&#xff1a; powershell复制下载 $env:GOOS "linux" $env:GOARCH "amd64" go build…

真实趋势策略思路

该交易策略通过一系列技术指标的计算与逻辑判断&#xff0c;旨在捕捉市场趋势的反转与延续点&#xff0c;以实现盈利。其主要交易逻辑思路可以概括如下&#xff1a; 1. 趋势与动量分析 策略首先利用动量函数计算收盘价的短期&#xff08;3周期&#xff09;变化&#xff0c;通过…

江奇霖惊喜亮相泡泡岛音乐节,新歌首唱+合作舞台燃动现场

2025年4月20日&#xff0c;江奇霖受邀参加2025泡泡岛音乐与艺术节东南站。现场献唱三首歌曲&#xff0c;超5万名观众现场一同感受音乐的魅力。 在泡泡岛SPECIAL SET特别企划舞台中&#xff0c;江奇霖带来新歌的首唱&#xff0c;温暖的旋律如低语倾诉&#xff0c;观众们也纷纷喊…

【HarmonyOS】ArKUI框架

目录 概述 声明式开发范式 基于ArKUI的项目 • 1&#xff0e;创建资源文件 • 2&#xff0e;引用资源 • 3&#xff0e;引用系统资源&#xff1a; • 系统资源有哪些 • 4. 在配置和资源中引用资源 声明式语法 UI描述规范 UI组件概述 组件化 组件渲染控制语法 修改…

计算机网络八股——HTTP协议与HTTPS协议

目录 HTTP1.1简述与特性 1. 报文清晰易读 2. 灵活和易于扩展 3. ⽆状态 Cookie和Session 4. 明⽂传输、不安全 HTTP协议发展过程 HTTP/1.1的不足 HTTP/2.0 HTTP/3.0 HTTPS协议 HTTP协议和HTTPS协议的区别 HTTPS中的加密方式 HTTPS中建立连接的方式 前言&#xff…

webpack基础使用了解(入口、出口、插件、加载器、优化、别名、打包模式、环境变量、代码分割等)

目录 1、webpack简介2、简单示例3、入口(entry)和输出(output)4、自动生成html文件5、打包css代码6、优化&#xff08;单独提取css代码&#xff09;7、优化&#xff08;压缩过程&#xff09;8、打包less代码9、打包图片10、搭建开发环境&#xff08;webpack-dev-server&#xf…

微信小程序 van-dropdown-menu

点击其他按钮&#xff0c;关闭van-dropdown-menu下拉框 DropdownMenu 引入页面使用index.wxmlindex.scssindex.ts(重点)index.ts(全部) DropdownMenu 引入 在app.json或index.json中引入组件 "usingComponents": {"van-dropdown-menu": "vant/weapp…

智驱未来:AI大模型重构数据治理新范式

第一章 数据治理的进化之路 1.1 传统数据治理的困境 在制造业巨头西门子的案例中&#xff0c;其全球200个工厂每天产生1.2PB工业数据&#xff0c;传统人工清洗需要300名工程师耗时72小时完成&#xff0c;错误率高达15%。数据孤岛问题导致供应链决策延迟平均达48小时。 1.2 A…