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”!

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

外包干了3天,技术退步明显.......

先说一下自己的情况,大专生,19年通过校招进入杭州某软件公司,干了接近4年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落! 而我已经在一个企业干了四年的功能测…

✔ ★Java项目——设计一个消息队列(二)

Java项目——设计一个消息队列 四. 项⽬创建五. 创建核⼼类创建 Exchange(名字、类型、持久化)创建 MSGQueue(名字、持久化、独占标识)创建 Binding(交换机名字、队列名字、bindingKey用于与routingKey匹配&#xff09…

【经典算法】LeetCode25:K 个一组翻转链表(Java/C/Python3,Hard)

#算法 目录 题目描述思路及实现方式一:递归思路代码实现Java 版本C 语言版本Python3 版本 复杂度分析 方式二:迭代和原地反转思路代码实现Java 版本C 语言版本Python3 版本 复杂度分析 总结相似题目 标签:链表、递归 题目描述 给你链表的头…

代码随想录阅读笔记-二叉树【总结】

二叉树的理论基础 代码随想录 (programmercarl.com):二叉树的种类、存储方式、遍历方式、定义方式 二叉树的遍历方式 深度优先遍历 代码随想录阅读笔记-二叉树【递归遍历】-CSDN博客:递归三部曲初次亮相代码随想录阅读笔记-二叉树【迭代遍历】-CSDN博…

2024年3月文章一览

2024年3月编程人总共更新了12篇文章: 1.2024年2月文章一览 2.Programming Abstractions in C阅读笔记:p308-p311 3.Programming Abstractions in C阅读笔记:p312-p326 4.Programming Abstractions in C阅读笔记:p327-p330 5.…

基于SSM的电影网站(有报告)。Javaee项目。ssm项目。

演示视频: 基于SSM的电影网站(有报告)。Javaee项目。ssm项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构,通过Spring SpringMv…

Ollama教程——兼容OpenAI API:高效利用兼容OpenAI的API进行AI项目开发

相关文章: Ollama教程——入门:开启本地大型语言模型开发之旅 Ollama教程——模型:如何将模型高效导入到ollama框架 Ollama教程——兼容OpenAI API:高效利用兼容OpenAI的API进行AI项目开发 Ollama教程——兼容OpenAI API:高效利用…

L2-2 巴音布鲁克永远的土(二分+并查集)

思路:我们可以二分答案,然后判断当前答案合不合理。 对于判断答案合理,可以用并查集,看mid能否把所有检查点连进一个集合中,枚举每个结点,如何当前结点周围的四个方向可以连的话,就加进同一个集…

【电子通识】热风枪的结构与使用方法

热风枪的结构 热风枪是专门用来拆焊、焊接贴片元器件和贴片集成电路的焊接工具,它主要由主机和热风焊枪两大部分构成。 热风枪主要有电源开关、风速设置、温度设置、热风连接等部件组成。根据不同品牌和价位的热风枪,有一些功能齐全的也集成了烙铁功能。…

波奇学Linux:

面向数据报:udp没有发送缓冲区,发送几次数据报,读取几次数据报,write和read一一对应 tcp通信时只管识别数据,在应用层才对字节进行拼接分析,得到完整请求 简单来说:udp之间传递的是报文&#x…

使用LNMP部署动态网站环境

目录 实验环境 一、配置LNMP架构环境 二、验证部署的LNMP 动态网站环境是否可用 三、配置过程中遇到的问题及解决思路 实验环境 centos7 192.168.81.131/24 一、配置LNMP架构环境 概念及配置手册参考第20章 使用LNMP架构部署动态网站环境。 | 《Linux就该这么学》 安装g…

三行命令解决Ubuntu Linux联网问题

本博客中Ubuntu版本为23.10.1最新版本,后续发现了很多问题我无法解决,已经下载了另外一个版本22.04,此版本自带网络 一开始我找到官方文档描述可以通过命令行连接到 WiFi 网络:https://cn.linux-console.net/?p10334#google_vig…

漫画|数据工程师面试常见问题之数据倾斜

话说,闹钟一响,现实照进梦想,又是李大虎面试找工作的一天。 李大虎心里一直有个想法,如果一天睡20个小时,然后这20个小时全做美梦,醒来的4个小时用来吃喝拉撒,这样岂不就和那些富二代一样了&am…

【core analyzer】core analyzer的介绍和安装详情

目录 🌞1. core和core analyzer的基本概念 🌼1.1 coredump文件 🌼1.2 core analyzer 🌞2. core analyzer的安装详细过程 🌼2.1 方式一 简单但不推荐 🌼2.2 方式二 推荐 🌻2.2.1 安装遇到…

【vue】v-if 条件渲染

v-if 不适用于频繁切换显示模式的场景 修改web.user&#xff0c;可看到条件渲染的效果 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initi…

【MATLAB源码-第5期】基于matlab的BPSK的理论误码率和实际误码率对比仿真。

1、算法描述 BPSK (Binary Phase Shift Keying)-------二进制相移键控。是把模拟信号转换成数据值的转换方式之一&#xff0c;利用偏离相位的复数波浪组合来表现信息键控移相方式。BPSK使用了基准的正弦波和相位反转的波浪&#xff0c;使一方为0&#xff0c;另一方为1&#xf…

Vue3大事件项目1 登录注册验证

创建项目 引入 element-ui 组件库 登录&#xff1a;注册样式准备之后&#xff0c;配置校验规则&#xff08;4个条件&#xff1a;一数据、二规则&#xff09; 1. 校验相关 (1) 给当前表单绑上整个的数据对象&#xff1a;el-form > :model"ruleForm" 绑…

Centos7搭建 Skywalking 单机版

介绍 Skywalking是应用性能监控平台&#xff0c;可用于分布式系统&#xff0c;支持微服务、云原生、Docker、Kubernetes 等多种架构场景。 整体架构如图 Agent &#xff1a;在应用中&#xff0c;收集 Trace、Log、Metrics 等监控数据&#xff0c;使用 RPC、RESTful API、Kafk…

JavaScript逆向爬虫——无限debugger的原理与绕过

debugger 是 JavaScript 中定义的一个专门用于断点调试的关键字&#xff0c;只要遇到它&#xff0c;JavaScript 的执行便会在此处中断&#xff0c;进入调试模式。 有了 debugger 这个关键字&#xff0c;就可以非常方便地对 JavaScript 代码进行调试&#xff0c;比如使用 JavaSc…

【热门话题】计算机视觉入门:探索数字世界中的“视觉智能”

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 计算机视觉入门&#xff1a;探索数字世界中的“视觉智能”摘要正文一、计算机视…