主要内容

归一化植被指数

归一化植被指数

    描述

    例子

    输出=归一化植被指数(hcube计算数据立方体中每个像素的归一化植被指数(NDVI)值,并返回NDVI图像。NDVI图像显示输入高光谱数据的植被覆盖区域。该函数使用数据立方体中的红色(R)波段和近红外(NIR)波段图像计算NDVI值。的归一化植被指数函数分别对红色和近红外波段图像使用670 nm和800 nm波段反射率值。

    输出=归一化植被指数(hcube“BlockSize”,blocksize通过使用名称-值对参数指定高光谱数据立方体的块处理的块大小“BlockSize”

    该函数将输入图像划分为不同的分块,对每个分块进行处理,然后将每个分块处理后的输出连接起来,形成输出矩阵。高光谱图像是多维数据集,它们可能太大,无法全部装进系统内存。方法时,可能导致系统内存不足归一化植被指数函数。如果遇到这样的问题,请使用此语法执行块处理。

    例如,归一化植被指数(hcube BlockSize, [50 50])将输入图像分割成大小为50x50、互不重叠的块,然后计算每个块中像素的NDVI值。

    请注意

    来执行块处理“BlockSize”名值对参数,你必须有MATLAB®R2021a或更高版本。

    请注意

    此函数需要图像处理工具箱™高光谱成像库.您可以安装图像处理工具箱高光谱成像库从附加的探险家。有关安装插件的更多信息,请参见获取和管理插件

    例子

    全部折叠

    将高光谱数据读入工作空间。

    hcube =超立方体(“indian_pines.dat”);

    计算数据立方体中每个像素的NDVI值。

    ndviImg =归一化植被指数(hcube);

    方法从原始数据立方体中估计对比度拉伸的RGB图像彩色化函数。

    rgbImg =再着色(hcube,“方法”“RGB”“ContrastStretching”,真正的);

    显示原始图像和NDVI图像。

    无花果=图(“位置”,[0 0 1200 600]);axes1 =轴(“父”无花果,“位置”,[0 0.1 0.4 0.8]);imshow (rgbImg“父”axes1)标题(“数据立方的RGB图像”2 .中文:“父”无花果,“位置”,[0.45 0.1 0.4 0.8]);显示亮度图像(ndviImg“父”axes2) colorbar标题(“归一化植被指数图像”

    植被区NDVI值通常在0.2和0.8之间。NDVI值小于或等于0.2表示无植被。对NDVI图像进行阈值分割,实现植被区域的分割。指定阈值。

    阈值= 0.2;

    生成具有强度值的二值图像1对于评分大于或等于指定阈值的像素。所有其他像素的值都是0。二值图像中值为的区域1对应数据立方体中NDVI值大于阈值的植被区域。

    bw = ndviImg >阈值;

    将二值图像叠加到RGB图像上并显示叠加后的图像。

    overlayImg = imoverlay(rgbImg,bw,[0 1 0]);图显示亮度图像(overlayImg)标题(“植被区域覆盖在RGB图像上”

    根据一个光谱波段内的像素总数和NDVI值大于0.2的像素数计算植被覆盖度。

    numVeg = find(bw == 1);imgSize =大小(hcube.DataCube 1) *大小(hcube.DataCube 2);vegetationCover = (numVeg) / imgSize长度
    vegetationCover = 0.5696

    这个例子向你展示了如何:

    • 用二维光谱数据作为超立方体的高光谱函数。

    • 将植被光谱和非植被光谱进行分离归一化植被指数函数。

    加载二维光谱数据

    将包含20个印度松树数据集端元的2-D光谱数据加载到工作空间中。

    负载(“indian_pines_endmembers_20.mat”

    将Indian Pines数据集的每个波段的波长值加载到工作区中。

    负载(“indian_pines_wavelength.mat”

    准备用于高光谱函数的测试数据

    将二维光谱数据重构为三维体数据重塑函数。

    [numSpectra, spectralDim] =大小(endmembers);dataCube =重塑(端元,[numSpectra 1 spectralDim]);

    创建一个三维超立方体对象,通过指定3-D体积数据,使用单一维度dataCube和波长信息波长超立方体函数。

    hCube =超立方体(dataCube,波长);

    计算NDVI分离植被和非植被光谱

    计算超立方体对象中每个频谱的NDVI值。

    ndviVal =归一化植被指数(hCube);

    植被光谱的NDVI值通常大于零,而非植被光谱的NDVI值通常小于零。通过阈值分割将植被光谱和非植被光谱分开。

    index = ndviVal > 0;

    绘制植被和非植被端元。

    次要情节(2,1,1)情节(endmembers(指数:)”)标题(“植被endmembers”)包含(“乐队”) ylabel (“反射价值观”)轴次要情节(2,1,2)情节(endmembers(~指数:)”)标题(“Non-Vegetation endmembers”)包含(“乐队”) ylabel (“反射价值观”)轴

    图中包含2个轴对象。带有标题植被端成员的axis对象1包含17个类型为line的对象。标题为Non-Vegetation端成员的Axes对象2包含3个类型为line的对象。

    输入参数

    全部折叠

    输入高光谱数据,指定为a超立方体对象。函数读取高光谱数据立方体DataCube属性,然后计算每个像素的NDVI值。

    数据块的大小,指定为两个元素的正整数向量。向量的元素分别对应于每个块中的行数和列数。数据块的大小必须小于输入图像的大小。将高光谱图像划分为更小的块使您能够处理大数据集而不会耗尽内存。

    • 如果blocksize值过小,函数的内存使用量会减少,但会增加执行时间。

    • 如果blocksize值较大或等于输入图像大小时,执行时间会减少,但会增加内存使用量。

    例子:“BlockSize”,[20]20指定每个数据块的大小为20 × 20。

    输出参数

    全部折叠

    输出NDVI图像,作为大小矩阵返回——- - - - - -N而且N是输入数据立方体的空间维度。输入数据多维数据集的数据类型为,输出数据类型为.否则,输出数据类型为

    该函数计算每个像素的NDVI值为

    N D V N R R N R + R

    取值范围为[- 1,1]。接近1的值表示植被健康,0表示植被不健康,-1表示没有植被。

    数据类型:|

    参考文献

    [1] Haboudane, D. <预测作物冠层绿色LAI的高光谱植被指数和新算法:在精确农业背景下的建模和验证>。环境遥感90年,没有。3(2004年4月15日):337-52。https://doi.org/10.1016/j.rse.2003.12.013。

    版本历史

    介绍了R2020a

    Baidu
    map