高光谱图像分析使用最大数量分类
这个例子展示了如何识别不同地区在高光谱图像通过执行最大数量分类(MAC)。丰富的地图描述endmember在高光谱图像的分布。图像中每个像素是一个纯像素或者一个混合像素。丰度值的组获得每个像素代表的比例每个endmembers存在于像素。在这个例子中,您将在高光谱图像分类像素通过寻找每个像素的最大丰度值并将它分配给相关endmember类。
这个例子需要图像处理工具箱™高光谱影像库。你可以从附加组件安装图像处理工具箱高光谱影像库的探险家。关于安装插件的更多信息,请参阅获取和管理插件。图像处理工具箱高光谱影像库需要MATLAB®桌面,MATLAB®在线™和MATLAB®移动™不支持图书馆。金宝app
帕维亚大学这个示例使用一个数据样本数据集作为测试数据。测试数据包含九个endmembers代表这些地面实况类:沥青、草地,砾石,树木,画金属片,裸露的土壤、沥青、自我阻塞砖,和阴影。
加载和可视化数据
加载.mat
包含测试数据的文件到工作区中。的.mat
文件包含一个数组paviaU
,代表了高光谱数据立方体和一个矩阵签名
,代表了九endmember签名从高光谱数据。数据立方体有103个光谱波段的波长从430纳米到860纳米。几何分辨率1.3米和每个波段图像的空间分辨率是610 - 340。
负载(“paviaU.mat”);img = paviaU;sig =签名;
计算每个光谱带的中心波长均匀间隔的波长范围在谱带的数量。
wavelengthRange = (430 - 860);numBands = 103;波长= linspace (wavelengthRange (1) wavelengthRange (2), numBands);
创建一个超立方体
对象使用高光谱数据立方体和中心波长。然后估计RGB图像的高光谱数据。设置ContrastStretching
参数值真正的
为了提高RGB输出的对比。可视化RGB图像。
hcube =超立方体(img,波长);rgbImg =再着色(hcube,“方法”,“RGB”,“ContrastStretching”,真正的);图imshow (rgbImg)
测试数据包含九个地面实况的endmember签名类。每一列的团体
包含endmember地面真理类的签名。创建一个表,列出每个endmember的类名称和相应的列团体
。
num = 1:尺寸(sig, 2);endmemberCol = num2str (num”);一会= {“沥青”;‘草地’;“碎石”;“树”;金属板画的;裸露的土壤的;…“沥青”;“自我阻塞砖”;“阴影”};表(endmemberCol,一会,“VariableName”,{团体的列;“Endmember类名”})
ans =9×2表列团体Endmember类名_________________ ________________________ 1{“沥青”}2{“草地”}3{“碎石”}4{‘树木’}5{画金属片的}6{“裸露的土壤”}7{“沥青”}8{“自我阻塞砖”}9{“阴影”}
情节endmember签名。
图绘制(sig)包含(带数字的)ylabel (的数据值)ylim(2700年[400])标题(“Endmember签名”)传说(类名,“位置”,“西北”)
估计丰富地图
创建丰富的地图endmembers使用estimateAbundanceLS
作为正式约束最小二乘函数并选择方法(尺柜)。函数输出大量地图与空间维度作为一个三维数组作为输入数据。每个通道的丰度图endmember对应的列的签名。在本例中,输入数据的空间维度的数量由- 340和610 - endmembers是9。因此,丰富地图输出的大小610 - 340 - 9。
abundanceMap = estimateAbundanceLS (hcube、团体、“方法”,尺柜的);
显示丰富的地图。
无花果=图(“位置”[0 0 1100 900]);n =装天花板(√大小(abundanceMap, 3)));为问= 1:尺寸(abundanceMap, 3)次要情节(n, n,问)显示亮度图像(abundanceMap (:,: cnt))标题([“大量的”一会{问}])在结束持有从
执行最大数量分类
找到最大的富足的通道数量为每个像素值。返回的通道数量为每个像素对应的列团体
包含endmember签名与像素的最大丰度值有关。显示的颜色编码的图像像素分类最大丰度值。
[~,matchIdx] = max (abundanceMap [], 3);图显示亮度图像(matchIdx) colormap (jet(元素个数(类名)))colorbar (“TickLabels”类名)
段的分类区域和覆盖每一个RGB图像估计从高光谱数据立方体。
segmentImg = 0(大小(matchIdx));overlayImg = 0(大小(abundanceMap, 1),大小(abundanceMap, 2), 3,大小(abundanceMap, 3));为i = 1:尺寸(abundanceMap, 3) segmentImg (matchIdx = = i) = 1;overlayImg(::,:,我)= imoverlay (rgbImg segmentImg);segmentImg = 0(大小(matchIdx));结束
显示分类和覆盖高光谱图像区域以及它们的类名。从图片中,可以看到,沥青,树木,裸露的土壤,砖地区已经准确地分类。
图(“位置”[0 0 1100 900]);n =装天花板(√大小(abundanceMap, 3)));为问= 1:尺寸(abundanceMap, 3)次要情节(n, n,问);显示亮度图像(uint8 (overlayImg (:,:,: cnt)));标题([的区域划分为一会{问}])在结束持有从