ENVI实战—一文搞定NDVI计算和MNDWI计算

2024-04-12 00:44

本文主要是介绍ENVI实战—一文搞定NDVI计算和MNDWI计算,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

实验1使用波段计算器计算波段值

目的:熟练掌握ENVI中波段计算器的使用方法,学会波段之间的运算。

过程:

①数据导入:打开ENVI5.6,在“文件”选项卡中选择“打开”,打开此前裁剪好的Sentinel-2的10m分辨率的波段数据。

②波段和计算:在工具箱上找到“波段代数”工具文件夹,选择“波段运算”,在“Enter an expression”中输入“b1+b2+b3”计算公式,点击“Add to List”添加到计算公式栏,选择后点击确定。在弹出的窗口中,找到上方的变量定义,根据源图像定义好计算的三个波段,选择B2、B3、B4,设置好文件保存格式,得到波段和结果。

③波段均值合成:与波段和计算的方法类似,同样在“波段运算”中输入相应的计算公式“(float(b1)+float(b2)+float(b3))/3.0)”,此处在波段前加上float,是为了使波段数据格式保留浮点类型,统一数据格式后避免计算出错。将波段按照b1-B2,b2-B3,b3-B4定义好,设置文件输出路径,得到最终结果。

结果:

①图1(左)展示了蓝光波段、绿光波段、红光波段和的计算结果,整体影像为黑白色,原因是计算结果在像素上将三个波段信息进行合成,映射成一个存储计算结果的仅包含0-255的灰度值的颜色通道,因此整体表现为黑白影像。

②图1(右)为RGB波段均值合成的结果,右击对应图层,可修改颜色表。对照原图像,发现水体经三个波段合成后表现出较高的值(红色),而陆地则较低(蓝绿色)。

实验2计算NDVI

目的:承接实验1,学会基于波段运算工具根据计算公式计算NDVI值

过程:

①明确计算公式:归一化植被指数(NDVI)的计算公式,需要用到两个波段,一个是近红外波段,一个是红光波段,具体公式为“NDVI = (NIR-RED)/(NIR+RED)”。本次实验所用的数据为Sentinel-2数据,通过查阅其卫星参数,明确近红外波段(NIR)为B8,红光波段为B4。

②计算过程:打开ENVI的波段代数工具,在波段运算中输入“(float(b1)-float(b2))/ (float(b1)+float(b2))”,按照“b1-B8,b2-B4”的定义规则,设置好相关参数,输出计算结果。

③查看像素点的NDVI值:为更好与原图进行对比,将计算结果加载到新视图,利用“鼠标取值”工具点击特定地点查看对应的像素值。

结果:

上图为NDVI值计算之后的结果,选择陆地上某处取值后,显示NDVI值为0.28左右,多次尝试水体取值,值的结果都在负数靠近0,基本符合水体的NDVI值特征。

实验3:使用波谱运算工具

目的:学会使用波谱运算工具,对比波谱计算前后曲线的差异

过程:

①选择波谱曲线:打开显示窗口的“波谱库浏览器”,在植被库中选择干燥子植被库,随机选择三种植物,查看其波谱曲线状况。

②波谱运算:打开工具箱中的“波谱处理”工具包,选择“波谱运算”,打开后,输入计算公式“S1+S2+S3”,对变量S1、S2、S3进行波谱赋值,点击确定,可以对三条波谱曲线进行相加,最终结果将得到合成波谱。

结果:

图1展示了波谱运算前后曲线发生的变化,左侧是三条曲线反射率随着波长的发生的变化,右侧是经过相加后合成的曲线。从结果可以看出,合成曲线的反射率数值是三条曲线叠加的结果,其反射率的值域范围明显提升,曲线的整体波动情况与原三条曲线相似。

实验4对比NDVI的地物差异

目的:强化NDVI的计算方法,理解NDVI在植被提取上的作用。

过程:

①裁剪空间区域:导入Sentinel-2影像,分别选择水体、植被和城市密集分布区域,在文件选项卡中点击“另存为ENVI文件”,利用“空间裁剪”方法,裁剪好上述区域。

②计算NDVI值:在波段运算工具中输入NDVI的计算公式,将NIR波段和RED波段分别代入,分别计算上述影像的NDVI值。

③对比地物NDVI值的差异:选择计算好的结果图层,鼠标右击,点击“快速统计”,在弹出的窗口中,可以“选择绘图中”点击绘制波段直方图,此时可以查看该图层像素的波段直方图,纵坐标是像元数,横坐标是数值,下方的表格中分别计算了均值、最大值、最小值等等。利用该方法可以对比不同地物的差异。此外,利用鼠标取值工具,同样可以进行数值查看,对比不同地物的差异。

结果:

图1展示了植被主导(左上)、建筑物主导(右上)和水体主导(下方)的NDVI的计算结果,图像经过了颜色的重新渲染,颜色越绿处代表该地的NDVI值更高,而颜色越红反之,三张结果基本符合NDVI的计算预期。

图2与图3展示了三张区域的像元值统计直方图与相关的统计结果,尽管未严格对植被、建筑、水体进行提取,但三张统计图仍然显示了其大面积叠加某一类地物后产生的影响。以植被覆盖为主的区域,NDVI峰值整体在0.2以后的像元占据大部分,均值较高;以建筑物为主体覆盖的区域,NDVI值整体在0-0.2的像元占据大部分,均值中间;以水体的区域,使得NDVI出现在负数部分出现统计峰值,说明水体的NDVI值较低。这与对三类地物进行鼠标取值后得到的结果一致。因此,水体的NDVI值较低,植被的NDVI值较高,NDVI能够较好地表征植被的覆盖程度。

图 植被主导、建筑主导、水体主导波段统计结果

实验5获取水体指数

目的:模仿NDVI的计算方法,学会利用水体提取的波段公式,获取水体指数。

过程:

①波段裁剪与融合:通过“感兴趣的ROI”框选具有大面积水体分布的地区,将10m、20m分辨率的Sentinel-2数据裁剪为同一区域。选择图像融合工具,利用“Gram-Schmidt图像融合”方法,重采样方法为“双线性内插”,将两张影像融合成同一分辨率的数据,设置好文件路径输出。此时,数据已准备好。

②计算修正归一化差异水体指数(MNDWI):改进的水体指数采用绿光波段和短波红外进行计算得到,该指数能够较好地区分水体、陆地和植被。具体的计算公式为MNDWI = (Green-SWIR)/(Green-SWIR)。同样打开“波段代数”工具箱,在波段运算中输入计算公式,Sentinel-2中绿光波段为B3波段,SWIR波段为B11波段,定义后计算即可。

结果:

图1为计算前后的对比结果,左图为原始图像,右图为经过颜色渲染的MNDWI计算结果,颜色为越蓝代表MNDWI的值越高,反之,可以看出水体较好地和其他地物进行了区分。在水体覆盖区域进行取值,显示值为1。

图2是MNDWI的波段直方图,从图中可以看出有很大一部分像素的值为1,在靠近1的部分直方图呈现陡升现象。

内容创作不易,如果对你的学习有帮助,不要忘记了给小编点赞哦!在这里,我们致力于用简单的语言和你一同交流地学制图与数据分析的那些事,欢迎持续关注小编的公众号“梧桐GIS”!

这篇关于ENVI实战—一文搞定NDVI计算和MNDWI计算的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/895632

相关文章

网页解析 lxml 库--实战

lxml库使用流程 lxml 是 Python 的第三方解析库,完全使用 Python 语言编写,它对 XPath表达式提供了良好的支 持,因此能够了高效地解析 HTML/XML 文档。本节讲解如何通过 lxml 库解析 HTML 文档。 pip install lxml lxm| 库提供了一个 etree 模块,该模块专门用来解析 HTML/XML 文档,下面来介绍一下 lxml 库

性能分析之MySQL索引实战案例

文章目录 一、前言二、准备三、MySQL索引优化四、MySQL 索引知识回顾五、总结 一、前言 在上一讲性能工具之 JProfiler 简单登录案例分析实战中已经发现SQL没有建立索引问题,本文将一起从代码层去分析为什么没有建立索引? 开源ERP项目地址:https://gitee.com/jishenghua/JSH_ERP 二、准备 打开IDEA找到登录请求资源路径位置

MySQL数据库宕机,启动不起来,教你一招搞定!

作者介绍:老苏,10余年DBA工作运维经验,擅长Oracle、MySQL、PG、Mongodb数据库运维(如安装迁移,性能优化、故障应急处理等)公众号:老苏畅谈运维欢迎关注本人公众号,更多精彩与您分享。 MySQL数据库宕机,数据页损坏问题,启动不起来,该如何排查和解决,本文将为你说明具体的排查过程。 查看MySQL error日志 查看 MySQL error日志,排查哪个表(表空间

C#实战|大乐透选号器[6]:实现实时显示已选择的红蓝球数量

哈喽,你好啊,我是雷工。 关于大乐透选号器在前面已经记录了5篇笔记,这是第6篇; 接下来实现实时显示当前选中红球数量,蓝球数量; 以下为练习笔记。 01 效果演示 当选择和取消选择红球或蓝球时,在对应的位置显示实时已选择的红球、蓝球的数量; 02 标签名称 分别设置Label标签名称为:lblRedCount、lblBlueCount

poj 1113 凸包+简单几何计算

题意: 给N个平面上的点,现在要在离点外L米处建城墙,使得城墙把所有点都包含进去且城墙的长度最短。 解析: 韬哥出的某次训练赛上A出的第一道计算几何,算是大水题吧。 用convexhull算法把凸包求出来,然后加加减减就A了。 计算见下图: 好久没玩画图了啊好开心。 代码: #include <iostream>#include <cstdio>#inclu

uva 1342 欧拉定理(计算几何模板)

题意: 给几个点,把这几个点用直线连起来,求这些直线把平面分成了几个。 解析: 欧拉定理: 顶点数 + 面数 - 边数= 2。 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstring>#include <cmath>#inc

uva 11178 计算集合模板题

题意: 求三角形行三个角三等分点射线交出的内三角形坐标。 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstring>#include <cmath>#include <stack>#include <vector>#include <

XTU 1237 计算几何

题面: Magic Triangle Problem Description: Huangriq is a respectful acmer in ACM team of XTU because he brought the best place in regional contest in history of XTU. Huangriq works in a big compa

滚雪球学Java(87):Java事务处理:JDBC的ACID属性与实战技巧!真有两下子!

咦咦咦,各位小可爱,我是你们的好伙伴——bug菌,今天又来给大家普及Java SE啦,别躲起来啊,听我讲干货还不快点赞,赞多了我就有动力讲得更嗨啦!所以呀,养成先点赞后阅读的好习惯,别被干货淹没了哦~ 🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,助你一臂之力,带你早日登顶🚀,欢迎大家关注&&收藏!持续更新中,up!up!up!! 环境说明:Windows 10

音视频入门基础:WAV专题(10)——FFmpeg源码中计算WAV音频文件每个packet的pts、dts的实现

一、引言 从文章《音视频入门基础:WAV专题(6)——通过FFprobe显示WAV音频文件每个数据包的信息》中我们可以知道,通过FFprobe命令可以打印WAV音频文件每个packet(也称为数据包或多媒体包)的信息,这些信息包含该packet的pts、dts: 打印出来的“pts”实际是AVPacket结构体中的成员变量pts,是以AVStream->time_base为单位的显