MATLAB 2016计算NDVI

MATLAB 2016计算NDVI

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

文章目录

读取波段数据

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:10715
    for j =  1:13980
        if B4(i,j) == 0 || B5(i,j) ==0
            continue;
        end
        NDVI(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:10715
    for j =  1:13980
        if B4(i,j) == 0 || B5(i,j) ==0
            continue;
        end
        NDVI(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语法

相关推荐
新缸中之脑1 小时前
Autoresearch 代码深度解析
人工智能
love530love1 小时前
OpenClaw 手机直连配置全流程
人工智能·windows·python·智能手机·c#·agent·openclaw
VillanelleS1 小时前
AI工程化之Agent架构
人工智能·架构
余俊晖1 小时前
多模态大模型后训练强化学习训练方法:Shuffle-R1
人工智能·自然语言处理·多模态
黄焖鸡能干四碗2 小时前
网络安全建设实施方案(Word文件参考下载)
大数据·网络·人工智能·安全·web安全·制造
未来之窗软件服务2 小时前
为何模型越强、幻觉越大、工业越弱[AI人工智能(六十二)]—东方仙盟
人工智能·仙盟创梦ide·东方仙盟
云上的云端2 小时前
vLLM-Ascend operator torchvision::nms does not exist 问题解决
人工智能·pytorch·深度学习
szxinmai主板定制专家2 小时前
基于ZYNQ MPSOC船舶数据采集仪器设计(一)总体设计方案,包括振动、压力、温度、流量等参数
arm开发·人工智能·嵌入式硬件·fpga开发
Westward-sun.2 小时前
CNN 核心知识点详解:从图像基础到卷积与池化
人工智能·计算机视觉·cnn
IT_陈寒2 小时前
SpringBoot自动配置揭秘:5个让开发效率翻倍的隐藏技巧
前端·人工智能·后端