基于matlab在多光谱影像中查找植被(附源码)

news2024/11/17 13:18:42

一、前言

此示例演示如何使用 MATLAB数组算法来处理图像和绘制图像数据。特别是,此示例使用三维图像阵列,其中三个平面表示来自电磁频谱不同部分的图像信号,包括可见的红色和近红外 (NIR) 通道。

影像数据差异可用于区分影像的不同表面特征,这些表面特征在不同的光谱通道中具有不同的反射率。通过查找可见红色通道和近红外通道之间的差异,该示例标识了包含重要植被的区域。

二、实现步骤

步骤 1:从多光谱图像文件导入彩色红外通道

本示例在覆盖法国巴黎部分地区的 LANDSAT 专题制图器影像中查找植被。七个光谱通道(波段)以 Erdas LAN 格式存储在一个文件中。LAN 文件 包含 7 通道 512 x 512 的 Landsat 图像。128 字节标头后跟像素值,像素值按波段数递增的顺序按线 (BIL) 交错排列。像素值以小端字节顺序存储为无符号 8 位整数。

第一步是使用 MATLAB函数从 LAN 文件中读取频段 4、3 和 2。

通道 4、3 和 2 覆盖电磁频谱的近红外 (NIR)、可见红色和可见绿色部分。当它们分别映射到 RGB 图像的红色、绿色和蓝色平面时,结果是标准的彩色红外 (CIR) 合成。最后一个输入参数,用于指定要读取的波段和顺序,以便您可以在单个步骤中构造复合。

变量是一个 512 x 512 x 3 的类数组。这是一个RGB图像,但带有假颜色。显示图像时,红色像素值表示NIR通道,绿色值表示可见红色通道,蓝色值表示可见绿色通道。

在 CIR 图像中,水景非常暗(塞纳河),绿色植被显示为红色(公园和遮荫树)。大部分图像外观是由于健康,富含叶绿素的植被在近红外中具有高反射率。由于 NIR 通道映射到合成图像中的红色通道,因此任何植被密度较高的区域在显示中都显示为红色。一个明显的例子是左边缘的鲜红色区域,这是一个大型公园(Bois de Boulogne),位于巴黎市中心以西塞纳河的一个弯道内。

通过分析NIR和红色通道之间的差异,您可以量化植被区域与其他表面(如路面,裸露的土壤,建筑物或水)之间光谱含量的这种对比度。

第 2 步:构建近红外-红色光谱散射图

在比较NIR通道(显示为红色像素值)和可见红色通道(显示为绿色像素值)时,散点图是一个自然的起点。将这些通道从原始 CIR 复合中提取到各个变量中很方便。从一个类转换为另一个类也很有帮助,这样就可以在下面的 NDVI 计算以及散点图中使用相同的变量。

将两个通道一起作为灰度图像查看,您可以看到它们的外观有何不同。

只需在 MATLAB 中调用该命令,您就可以创建一个散点图,显示每个像素一个点(在本例中为蓝十字),其 x 坐标由其在红色通道中的值确定,其 y 坐标由其在 NIR 通道中的值确定。

巴黎场景散点图的外观是温带城市地区的特征,夏季树叶中有树木。对角线附近有一组像素,其NIR和红色值几乎相等。这种“灰色边缘”包括路面和许多屋顶等特征。上方和左侧是另一组像素,其NIR值通常远高于红色值。该区域基本上包括所有绿色植被。

第 3 步:通过 MATLAB® 数组算法计算植被指数

从散点图中观察到,采用NIR水平与红色水平的比率将是定位包含茂密植被的像素的一种方法。但是,对于两个通道中值较小的暗像素,结果将是噪声。另请注意,对于更大的叶绿素密度,NIR和红色通道之间的差异应该更大。归一化差分植被指数 (NDVI) 的动机是第二个观测值。它采用(NIR - 红色)差异并将其归一化,以帮助平衡不均匀照明的影响,例如云或山丘的阴影。换句话说,逐像素从近红外通道的值中减去红色通道的值,然后除以它们的总和。

请注意 MATLAB 中的数组算术运算符如何在一个简单的命令中计算整个 NDVI 图像。回想一下变量并有类.此选择使用的存储比类少,但与整数类不同,它还允许结果比率假定值的平滑渐变。

变量是理论最大范围为 [-2 1] 的二维类数组。在显示为灰度图像时,可以指定这些理论限制。

塞纳河在NDVI图像中显得非常黑暗。图像左边缘附近的大光源区域是前面提到的公园(布洛涅森林)。

步骤 4:定位植被 -- 阈值 NDVI 图像

为了识别最有可能包含重要植被的像素,请对 NDVI 图像应用简单的阈值。因此,所选像素的百分比为或约5%。显示逻辑(二进制)图像时,公园和其他较小的植被区域默认显示为白色。

步骤 5:链接光谱和空间内容

要链接光谱和空间内容,可以在 NIR 红色散点图上定位高于阈值的像素,使用对比度颜色(绿色)的高于阈值像素重新绘制散点图,然后使用相同的蓝绿色配色方案重新显示阈值 NDVI 图像。正如预期的那样,NDVI值高于阈值的像素显示在其余像素的左上角,并与CIR复合显示器中的较红像素相对应。创建散点图,然后显示阈值 NDVI。

三、程序

使用Matlab R2022b版本,点击打开。(版本过低,运行该程序可能会报错)

程序有偿获取:评论区下留言,博主看到会私信你。

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

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

相关文章

数据库-SQL-DML语句

文章目录 DML语句添加数据修改数据DML-删除数据 DML语句 添加数据 表的结构 修改数据 DML-删除数据 DML-总结:

数字美容的艺术:深入探讨面部美化算法和人脸美型SDK

在当今社交媒体和自拍热潮的背景下,数字美容成为了许多人追求面部完美外貌的选择。通过面部美化算法和人脸美型SDK,人们可以在瞬间实现肌肤光滑、五官精致的效果。然而,这种技术的背后隐藏着怎样的原理和技术手段?本文将深入探讨面…

Elasticsearch索引库、文档操作

一、索引库操作 1、创建索引库: #创建索引库 PUT /索引库名 {"mappings": {"properties": {"info":{"type": "text","analyzer": "ik_smart"},"email":{"type": "…

【高级程序设计语言C++】 C++基础知识

1.1 C关键字1.2 命名空间1.2.1命名空间定义1.2.2命名空间的使用 1.3缺省参数1.3.1缺省参数分类 1.4函数的重载1.5.引用1.5.1引用的用法1.引用做参数2.引用返回 1.5.2 常引用 1.6 传值和传引用的区别1.7 引用和指针的区别1.8 auto关键字auto的使用细则 1.1 C关键字 C的关键字共…

vgg16-pytorch

基于pytorch实现VGG16模型 刚听完土哥的入门pytorch,试着写一个不完善的vgg16 VGG16具体的架构: VGG16模型构建: 卷积池化后尺寸计算公式: 引入库: from torch import nn from torch.nn.modules.flatten import Flattendil…

初识stm32

1、什么是单片机? 单片机(Single-Chip Microcomputer)是一种集成电路芯片,把具有数据处理能力的中央处 理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功 能(可能还包括显示驱动电路、…

WHERE条件和ON条件的区别

目录 总结: 1.inner join方式关联 2.left join方式关联 实例 1.建表 2.left join 主表的on和where条件 3.left join 关联表的on和where条件 总结: 1.inner join方式关联 on条件(无论是对主表字段的限制还是对关联表字段的限制&#…

9种流程优化方法,提升业务效率!

编者按:简化工作流程、不断发现工作流程中的错误并有效整合、提高内部团队成员和客户的满意度,是当今每个企业、每个管理者乃至每个员工的共同责任。流程优化是永无止境的。本文回顾了流程优化的概念,详述了流程优化给业务带来的好处以及 9 种…

期货交易策略与技术分析经验总结

期货交易是一种金融衍生品,它是指在未来某个特定的时间和地点,按照事先约定的价格和数量,买卖某种标的物的合约。期货交易具有高杠杆、高风险、高收益的特点,因此需要有一定的交易策略和操作技巧,才能在市场中取得成功…

Qt中的信号与槽(Signals and Slots)

Qt中的信号与槽(Signals and Slots)是一种用于对象间通信的机制,常用于处理用户界面事件和数据更新等情况。通过信号与槽,可以实现对象之间的解耦和灵活的交互。 信号(Signal)是对象发出的事件或通知&…

肥肠恐布--探索Kali Linux中的Metasploit Framework(MSF听说肾透大佬经常用)

请注意,在使用Metasploit Framework进行渗透测试和漏洞利用时,务必遵守合法和授权的原则,此文仅供大家学习参考,请确保您获得了适当的授权,并遵守法律和合规性要求。非法使用和滥用导致严重的法律后果自负。 目录 前言…

mac使用conda(anaconda和miniconda一样)安装新版本的torch

使用pytorch给的命令行下载会很慢,因此我们应该修改镜像源,然后再下载torch 1.添加镜像 在终端输入以下命令,添加镜像: conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/ conda conf…

【HMS Core】Health Kit 睡眠各统计类型怎么定义的?有什么区别?

【问题描述】 1、睡眠各统计类型怎么定义的?有什么区别? 2、睡眠状态有5种,各个状态的详细定义是什么? 【解决方案】 1、①科学睡眠,会对睡眠数据进行分析,计算得分等,在连接穿戴设备的前提下…

【AGC】性能管理服务报502问题

【关键字】 AGC、性能管理、502 【问题描述】 有开发者反馈在使用AGC性能管理服务报502错误,接入了analytic sdk 是正常的上报分析数据,但尝试接入apms时出现无法上报情况。 日志截图如下,可以看到分析服务是正常的200上报了数据&#xff…

【Python爬虫与数据分析】Jupyter的安装与快捷键

目录 一、jupyter notebook安装与配置 二、命令模式快捷键 三、编辑模式快捷键 四、文件操作 一、jupyter notebook安装与配置 安装:Jupyter Notebook是以网页的形式打开的一个程序,集成在Anaconda包里面,也可以直接安装python3解释器&a…

jenkins手把手教你从入门到放弃02-jenkins在Windows系统安装与配置(详解)

简介 上一篇对jenkins有了大致了解之后,那么我们就开始来安装一下jenkins。 Jenkins安装 一、安装Java环境   1、你需要做的第一件事情就是在你的机器上安装Java环境。Jenkins是一个基于Java的Web应用程序,所以你至少需要安装JRE。如果没有安装自行百…

Stable Diffusion - Prompts 提示词工程框架

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/131544508 当前 Stable Diffusion 模型使用基础的 stable-diffusion-v1-5,即 v1-5-pruned-emaonly.safetensors。 Stable Diffusion …

全网首发,Python解决某象滑动还原验证码100%还原

与一般的滑动验证码不同,某象的滑动还原验证码是将图像上下两块分割,然后在随机一块往右移动,将两块拼图移动成完整的图像才算成功,事实上,解决这类验证码比普通的验证码还要简单 数据集: 我随机采集了某象任意张数据集,将其标注好,top和down代表的是原图中上面还是下面…

怎么把pytorch从CPU版本替换成GPU版本

使用pip命令pip uninstall torch就可以卸载当前的torch版本。(不是cpu版本一般也没有必要重装吧?) 接着找到官网https://pytorch.org/get-started/locally/ 在里面选择 根据你自己的需要选择最新的(我现在是11.8)或者没…

React渲染机制及相关优化方案

React渲染机制及相关优化方案 前言:一、react渲染步骤二、concurrent机制以及产生作用的机会1. 优先级调度:2. 递增式渲染: 三、简单模拟实现 concurrent mode 的递增式渲染四、与优先级调度有关的两个hooks1. useTransition2. useDeferredVa…