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

相关文章

一文详解kafka开启kerberos认证的完整步骤

《一文详解kafka开启kerberos认证的完整步骤》这篇文章主要为大家详细介绍了kafka开启kerberos认证的完整步骤,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、kerberos安装部署二、准备机器三、Kerberos Server 安装1、配置krb5.con

基于Canvas的Html5多时区动态时钟实战代码

《基于Canvas的Html5多时区动态时钟实战代码》:本文主要介绍了如何使用Canvas在HTML5上实现一个多时区动态时钟的web展示,通过Canvas的API,可以绘制出6个不同城市的时钟,并且这些时钟可以动态转动,每个时钟上都会标注出对应的24小时制时间,详细内容请阅读本文,希望能对你有所帮助...

一文详解Nginx的强缓存和协商缓存

《一文详解Nginx的强缓存和协商缓存》这篇文章主要为大家详细介绍了Nginx中强缓存和协商缓存的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、强缓存(Strong Cache)1. 定义2. 响应头3. Nginx 配置示例4. 行为5. 适用场景二、协商缓存(协

Spring AI集成DeepSeek三步搞定Java智能应用的详细过程

《SpringAI集成DeepSeek三步搞定Java智能应用的详细过程》本文介绍了如何使用SpringAI集成DeepSeek,一个国内顶尖的多模态大模型,SpringAI提供了一套统一的接口,简... 目录DeepSeek 介绍Spring AI 是什么?Spring AI 的主要功能包括1、环境准备2

Spring AI与DeepSeek实战一之快速打造智能对话应用

《SpringAI与DeepSeek实战一之快速打造智能对话应用》本文详细介绍了如何通过SpringAI框架集成DeepSeek大模型,实现普通对话和流式对话功能,步骤包括申请API-KEY、项目搭... 目录一、概述二、申请DeepSeek的API-KEY三、项目搭建3.1. 开发环境要求3.2. mav

一文详解如何在Python中使用Requests库

《一文详解如何在Python中使用Requests库》:本文主要介绍如何在Python中使用Requests库的相关资料,Requests库是Python中常用的第三方库,用于简化HTTP请求的发... 目录前言1. 安装Requests库2. 发起GET请求3. 发送带有查询参数的GET请求4. 发起PO

Python与DeepSeek的深度融合实战

《Python与DeepSeek的深度融合实战》Python作为最受欢迎的编程语言之一,以其简洁易读的语法、丰富的库和广泛的应用场景,成为了无数开发者的首选,而DeepSeek,作为人工智能领域的新星... 目录一、python与DeepSeek的结合优势二、模型训练1. 数据准备2. 模型架构与参数设置3

Java实战之利用POI生成Excel图表

《Java实战之利用POI生成Excel图表》ApachePOI是Java生态中处理Office文档的核心工具,这篇文章主要为大家详细介绍了如何在Excel中创建折线图,柱状图,饼图等常见图表,需要的... 目录一、环境配置与依赖管理二、数据源准备与工作表构建三、图表生成核心步骤1. 折线图(Line Ch

Java使用Tesseract-OCR实战教程

《Java使用Tesseract-OCR实战教程》本文介绍了如何在Java中使用Tesseract-OCR进行文本提取,包括Tesseract-OCR的安装、中文训练库的配置、依赖库的引入以及具体的代... 目录Java使用Tesseract-OCRTesseract-OCR安装配置中文训练库引入依赖代码实

使用 sql-research-assistant进行 SQL 数据库研究的实战指南(代码实现演示)

《使用sql-research-assistant进行SQL数据库研究的实战指南(代码实现演示)》本文介绍了sql-research-assistant工具,该工具基于LangChain框架,集... 目录技术背景介绍核心原理解析代码实现演示安装和配置项目集成LangSmith 配置(可选)启动服务应用场景