主要内容

利用交互NDVI阈值识别植被区域

这个例子展示了如何通过对归一化植被指数(NDVI)地图的交互阈值来识别高光谱图像中的植被区域类型。高光谱数据集的NDVI图反映了高光谱数据各区域的植被密度。利用高光谱数据立方体的近红外(NIR)和可见光(R)波段图像计算NDVI值。

归一化植被指数 近红外光谱 - R 近红外光谱 + R

一个像素的NDVI值是-1到1之间的标量。植被健康或稠密区域的像元反射近红外光较多,NDVI值较高。植被不健康或贫瘠地区的像元吸收了更多的近红外光,导致NDVI值偏低或为负。根据其NDVI值,可以将一个区域的植被识别为浓密植被,中度植被,稀疏植被,没有植被.以下是每种类型区域的典型NDVI值范围:

  • 浓密的植被-大于或等于0.6

  • 中等植被-范围[0.4,0.6]

  • 稀疏植被-范围[0.2 - 0.4]

  • 没有植被-低于0.2

您可以通过使用NDVI值执行阈值来分割所需的植被区域。在本例中,您将交互式地选择和更改阈值,以根据NDVI值在高光谱数据立方体中识别不同的植被区域。

读高光谱数据

从ENVI格式文件中读取高光谱数据到工作空间。本例使用了来自Pavia数据集的数据示例,其中包含植被和贫瘠地区。

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

计算归一化植被指数

的方法计算数据立方体中每个像素的NDVI值归一化植被指数函数。该函数输出一个二维图像,其中每个像素的值就是高光谱数据立方体中对应像素的NDVI值。

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

使用阈值识别植被区域

利用多电平阈值识别高光谱数据中的不同区域。定义标签矩阵,根据指定的阈值将标签值分配给像素。根据计算得到的NDVI值设置阈值。

  • 标签的值1—设置阈值为0.6,查找NDVI值大于或等于阈值的像素。这些是密集的植被像素。

  • 标签的值2—下限阈值为0.4,上限阈值为0.6。找出NDVI值大于或等于0.4且小于0.6的像素。这些是中等植被像素。

  • 标签的值3.—阈值下限为0.2,上限为0.4。找出NDVI值大于或等于0.2且小于0.4的像素。这些是稀疏的植被像素。

  • 标签的值4—指定阈值为0.2,查找NDVI值小于阈值的像素。这些都不是植被像素。

L = 0(大小(ndviImg));L(ndviImg >= 0) = 1;drawtext (nvidia >= 0 and nvidia >= 0 and nvidia >= 0);drawtext (nvidia >= 0 and nvidia >= 0 and nvidia >= 0), coloryellow;L(ndviImg < 0.2) = 4; / /

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

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

定义颜色映射以不同颜色显示标签矩阵中的每个值。在RGB图像上覆盖标签矩阵。

Cmap = [0 1 0;0 0 1;1 1 0;1 0 0];overlayImg = labeloverlay (rgbImg, L,“Colormap”,提出);

创建NDVI阈值交互接口

要构建交互式界面,首先使用uifigure函数。然后在图形窗口中添加两个面板,用于并排显示输入的图像和覆盖的图像。

h = uifigure (“名字”“交互式NDVI阈值”“位置”, 200, 1000, 700);viewPanel1 = uipanel (h,“位置”,[2 220 400 450],“标题”输入图像的);ax₁=轴(viewPanel1);图像(rgbImg,“父”viewPanel2 = uipanel(h, ax1)“位置”,[400 220 400 450],“标题”“输入图像中的植被区域类型”);ax2 =轴(viewPanel2);图像(overlayImg,“父”, ax2)

用每个标签的颜色及其相关的植被密度标注图形窗口。植被密度为绿色,中等植被为蓝色,稀疏植被为黄色,无植被为红色。

注释(h,“矩形”,[0.82 0.82 0.03 0.03],“颜色”(0 1 0),“FaceColor”[0 1 0]);注释(h,“矩形”,[0.82 0.77 0.03 0.03],“颜色”(0 0 1),“FaceColor”, 0 0 1);注释(h,“矩形”,[0.82 0.72 0.03 0.03],“颜色”(1 1 0),“FaceColor”, (1 1 0));注释(h,“矩形”,[0.82 0.67 0.03 0.03],“颜色”(1 0 0),“FaceColor”, (1 0 0));注释(h,“文本框”,[0.85 0.80 0.9 0.05],“EdgeColor”“没有”“字符串”茂密的植被的);注释(h,“文本框”,[0.85 0.75 0.9 0.05],“EdgeColor”“没有”“字符串”“温和的植物”);注释(h,“文本框”,[0.85 0.70 0.9 0.05],“EdgeColor”“没有”“字符串”“稀疏植被”);注释(h,“文本框”,[0.85 0.65 0.9 0.05],“EdgeColor”“没有”“字符串”“没有植被”);

创建用于交互式更改阈值的滑块。使用uislider功能,添加用于调整最小阈值的滑块和用于调整最大阈值的滑块。

slidePanel1 = uipanel (h,“位置”(400120400、70),“标题”“最低阈值”);minsld = uislider (slidePanel1,“位置”(40350 3),“价值”, 1“限制”[1],“MajorTicks”, 1:0.4:1);slidePanel2 = uipanel (h,“位置”(400、30400、70),“标题”“最大阈值”);maxsld = uislider (slidePanel2,“位置”(35350 3),“价值”, 1“限制”[1],“MajorTicks”, 1:0.4:1);

交互式NDVI阈值包含2个轴对象和其他类型的uipanel对象。axis对象1包含一个image类型的对象。axis对象2包含一个image类型的对象。

改变阈值交互

使用的函数ndviThreshold更改最小和最大阈值限制。当您移动滑块拇指并释放鼠标按钮时,ValueChangedFcnCallback更新滑块值并将滑块值设置为新的阈值。你必须打电话给ndviThreshold功能分别为最小阈值滑块和最大阈值滑块。通过调整滑块来改变阈值限制。这使您能够在指定的阈值限制内检查植被区域的类型。

minsld。ValueChangedFcn = @(es,ed) ndviThreshold(minsld,maxsld,ndviImg,rgbImg,ax2,cmap);maxsld。ValueChangedFcn = @(es,ed) ndviThreshold(minsld,maxsld,ndviImg,rgbImg,ax2,cmap);

ndviThreshold函数使用更新的阈值生成新的标签矩阵,并动态更新图形窗口中覆盖的图像。

创建回调函数

创建回调函数以交互方式更改阈值限制并动态更新结果。

函数ndviThreshold(minsld,maxsld,ndviImg,rgbImg,ax2,cmap) L = 0 (size(ndviImg));月后=圆(minsld.Value, 2);maxth =圆(maxsld.Value, 2);如果Minth >最大错误(“最小阈值必须小于最大阈值”结束如果月后> = 0.6%标记1为密集植被L(ndviImg >= minth & ndviImg <= maxth) = 1;overlayImg = labeloverlay (rgbImg, L,“Colormap”,提出);elseifMinth >= 0.4 && Minth < 0.6%标记1为密集植被%标记2为中等植被如果drawtext (nvidia bb1 = 0 and nvidia bb1 < 0), color0000ff;drawtext (nvidia >= 0 and nvidia >= 0 and nvidia >= 0 and nvidia >= 0), colorred;其他的L(ndviImg >= minth & ndviImg < maxth) = 2; / /结束overlayImg = labeloverlay (rgbImg, L,“Colormap”,提出);elseifMinth >= 0.2 && Minth <0.4%标记1为密集植被%标记2为中等植被% Label 3用于稀疏植被如果max (ndviImg >= minth & ndviImg <= maxth) = 3; / /elseifdrawtext (ndviImg = > and ndviImg < 0.4), color0000ff;drawtext (ndviImg = > and ndviImg <= maxth) = 1, color0000ff;elseifmax (islastbar = 1) and (islastbar = 1) and (islastbar = 1));drawtext (nvidia >= 0 and nvidia >= 0 and nvidia >= 0);drawtext (nvidia >= 0 and nvidia >= 0 and nvidia >= 0 and nvidia >= 0), colorred;结束overlayImg = labeloverlay (rgbImg, L,“Colormap”,提出);elseif月后< 0.2%标记1为密集植被%标记2为中等植被% Label 3用于稀疏植被%标签4为无植被L(ndviImg >= minth & ndviImg < 0.2) = 4; / /如果drawtext (ndviImg = 0 and ndviImg <= max) = 1;drawtext (nvidia >= 0 and nvidia >= 0 and nvidia >= 0);drawtext (nvidia >= 0 and nvidia >= 0 and nvidia >= 0), coloryellow;elseifdrawtext (ndviImg =0 and ndviImg <= max), colorred;drawtext (nvidia >= 0 and nvidia >= 0 and nvidia >= 0), coloryellow;elseifdrawtext (ndviImg = > and ndviImg < 0.4), colorffffff;结束overlayImg = labeloverlay (rgbImg, L,“Colormap”,提出);elseif月后= = maxth如果maxth < 0.2 L(ndviImg == minth) = 4; / /最小值elseifdrawtext (ndviImg == hhv (hhv (hhv (hhv (hhv))));elseifL(ndviImg == max) = 1; / / < 0elseifdrawtext (ndviImg == hhv (hhv (hhv (hhv (hhv (hhv))))), colorred;结束overlayImg = labeloverlay (rgbImg, L,“Colormap”,提出);结束显示覆盖图像。图像(overlayImg,“父”, ax2);%存储更新的标签图像minsld。使用rData = L; maxsld.UserData = L;结束

参考文献

J.W. Rouse, R.H. Hass, J.A. Schell和D.W. Deering。“用ERTS监测大平原的植被系统。”第三届地球资源技术卫星1号研讨会论文集, 1:309-17。Greenbelt, NASA SP-351,华盛顿特区,1973年。

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

另请参阅

|||||

相关的话题