MATLAB 2016计算NDVI

server/2024/9/23 3:44:36/

MATLAB 2016计算NDVI

之前大二的一段MATLAB代码,突然找到,记录一下当时初学MATLAB的程序,用于读取TIFF计算归一化植被指数(NDVI)并将其保存为TIFF文件。

文章目录

  • MATLAB 2016计算NDVI
    • 读取波段数据
    • 初始化NDVI矩阵和转换数据类型
    • 计算NDVI
    • 获取参考图像信息并写入GeoTIFF文件
    • 完整代码如下
  • 参考

读取波段数据

matlab">[B4,R] = geotiffread('G:\data-2022\result_2_Red.tif');
[B5,R] = geotiffread('G:\data-2022\result_4_NIR.tif');

使用geotiffread函数分别读取两个GeoTIFF文件:result_2_Red.tif(红光波段,对应B4)和result_4_NIR.tif(近红外波段,对应B5)。每个波段数据被存储为一个二维数组(矩阵),有相同的地理参考信息R,包含图像的坐标系统、像素大小等空间属性。

初始化NDVI矩阵和转换数据类型

matlab">NDVI = zeros(10715,13980,'single');
B4 = single(B4);
B5 = single(B5);

根据波段数据的维度(此处为10715行×13980列,当时提前看属性的,这里改为size函数更通用),用zeros函数创建一个同样大小的零矩阵NDVI,用于存储计算出的NDVI值,并指定数据类型为'single'(单精度浮点数)。接着,将读取到的波段数据B4B5转换为单精度浮点数类型。

计算NDVI

matlab">for i = 1:10715for j =  1:13980if B4(i,j) == 0 || B5(i,j) ==0continue;endNDVI(i,j) = (B5(i,j)-B4(i,j))/(B5(i,j)+B4(i,j));end
end

使用两层循环遍历波段数据的每一个像素位置(i为行索引,j为列索引)。在计算NDVI时,检查B4B5是否为零,避免除以零。

获取参考图像信息并写入GeoTIFF文件

matlab">info = geotiffinfo('G:\data-2022\result_2_Red.tif');
geotiffwrite('G:\data-2022\result_NDVI.tif', NDVI, R, 'GeoKeyDirectoryTag', info.GeoTIFFTags.GeoKeyDirectoryTag);

使用geotiffinfo函数读取result_2_Red.tif的元数据信息,并将其存储在结构体变量info中。然后,使用geotiffwrite函数将计算得到的NDVI矩阵写入新的GeoTIFF文件。

完整代码如下

matlab">[B4,R] = geotiffread('G:\data-2022\result_2_Red.tif');
[B5,R] = geotiffread('G:\data-2022\result_4_NIR.tif');
NDVI = zeros(10715,13980,'single');
B4 = single(B4);
B5 = single(B5);
for i = 1:10715for j =  1:13980if B4(i,j) == 0 || B5(i,j) ==0continue;endNDVI(i,j) = (B5(i,j)-B4(i,j))/(B5(i,j)+B4(i,j));end
end
info = geotiffinfo('G:\data-2022\result_2_Red.tif');
geotiffwrite('G:\data-2022\result_NDVI.tif',NDVI,R,'GeoKeyDirectoryTag',info.GeoTIFFTags.GeoKeyDirectoryTag);

参考

Matlab语法


http://www.ppmy.cn/server/23874.html

相关文章

关于discuz论坛网址优化的一些记录(网站地图sitemap提交)

最近网站刚上线,针对SEO做了些操作,为了方便网站网页百度被收录,特此记录下 discuz有免费的sitemap插件可以用,打开后台管理,找到插件栏,然后找到更多插件,进入插件市场。 选择这个免费的sitem…

STM32 float浮点数转换成四个字节

float浮点数转换成四个字节 在C或C中,联合体(union)是一种特殊的数据结构,它允许在相同的内存位置存储不同的数据类型。联合体中的所有成员共享同一块内存区域,这意味着同一时间内,联合体只能保存其中一个…

最佳实践之部署安全且具有韧性的AI系统

AI安全是一个高速发展的研究领域。随着各政府、行业界和学术界发现AI技术潜在弱点以及利用这些弱点的技术,除了将传统的IT最佳实践应用于人工智能系统,他们需要不断升级更新AI人工智能系统以应对不断变化的风险。 AI功能的快速采纳、部署和应用使其成为了…

Llama 3消费级PC安装与运行教程

我是 Llama 的忠实粉丝。 Meta 发布其 LLM 开源代码对整个科技界来说是一项净收益,其宽松的许可证允许大多数中小型企业在几乎没有任何限制的情况下使用其 LLM(当然,在法律范围内)。 他们的最新版本是备受期待的 Llama 3。 Llama…

使用 MobX 实现数据持久化:最佳实践与技巧!

MobX 本身不提供数据持久化功能,但是可以结合其他库或技术来实现数据持久化。以下是几种常见的数据持久化方式: 使用 localStorage 或 sessionStorage 您可以使用 localStorage 或 sessionStorage 在浏览器中存储数据。在 MobX 中,您可以将…

机器学习笔记 - 基于pytorch的自定义数据集和数据加载器

PyTorch 提供了torch.utils.data.DataLoader和torch.utils.data.Dataset 允许您使用预加载的数据集以及您自己的数据。 Dataset存储样本及其相应的标签,并基于DataLoader进行迭代Dataset以访问样本。 自定义 Dataset 类必须实现三个函数:__init__、__len__和__getitem__。 下…

leetCode59. 螺旋矩阵 II

leetCode59. 螺旋矩阵 II 题目思路&#xff1a;见我的这篇博客 代码 class Solution { public:vector<vector<int>> generateMatrix(int n) {// n * n的矩阵的初始化vector<vector<int>> res(n, vector<int> (n));// 方向数组int dx[] {0, 1…

【RAG 论文】Chain-of-Note:为 RAG 引入 CoT 让模型生成阅读笔记来提高面对噪音文档和未知场景的鲁棒性

论文&#xff1a;Chain-of-Note: Enhancing Robustness in Retrieval-Augmented Language Models ⭐⭐⭐ Tencent AI Lab, arXiv:2311.09210 文章目录 一、论文速读二、实现的细节2.1 Note Design2.2 Data Collection2.3 Model Training 三、实验结果3.1 QA Performance3.2 对 …