利用最大丰度分类的高光谱图像分析
这个例子展示了如何通过执行最大丰度分类(MAC)来识别高光谱图像中的不同区域。丰度图描述了一个端元在高光谱图像上的分布。图像中的每个像素要么是a纯像素或者一个混合像素.为每个像素获得的丰度值集表示该像素中每个端元的百分比。在本例中,您将对高光谱图像中的像素进行分类,方法是找到每个像素的最大丰度值并将其分配给相关的端成员类。
本例使用来自帕维亚大学数据集的数据样本作为测试数据。测试数据包含9个端元,代表这些地面真相类:沥青、草地、砾石、树木、涂漆金属片、裸露的土壤、沥青、自阻塞砖和阴影。
加载和可视化数据
加载.mat
包含测试数据到工作区的文件。的.mat
文件包含数组paviaU
,表示高光谱数据立方体和矩阵签名
,表示从高光谱数据中提取的9个端元特征。数据立方体有103个光谱波段,波长从430nm到860nm。几何分辨率为1.3米,每个波段图像的空间分辨率为610 × 340。
负载(“paviaU.mat”);img = paviaU;Sig =签名;
计算每个光谱波段的中心波长,将波长范围均匀地间隔在光谱波段的数量上。
波长= [430 860];numBands = 103;波长= linspace(波长thrange(1),波长thrange (2),numBands);
创建一个超立方体
对象使用高光谱数据立方体和中心波长。然后根据高光谱数据估计RGB图像。设置ContrastStretching
参数值为真正的
以提高RGB输出的对比度。可视化RGB图像。
Hcube =超立方(img,波长);rgbImg = colorize(hcube,“方法”,“RGB”,“ContrastStretching”,真正的);图imshow (rgbImg)
测试数据包含9个ground truth类的端成员签名。的每一列团体
包含地面真值类的端成员签名。创建一个表,列出每个端成员的类名和的对应列团体
.
Num = 1:size(sig,2);endmemberCol = num2str(num');classNames = {“沥青”;‘草地’;“碎石”;“树”;“涂漆金属片”;裸露的土壤的;...“沥青”;“自堵砖”;“阴影”};表(endmemberCol,一会,“VariableName”, {“sig栏”;'端成员类名'})
ans =9×2表列团体Endmember类的名称 _____________ ________________________ 1{“沥青”}2{“草地”}3{“碎石”}4{‘树木’}5{画金属片的}6{“裸露的土壤”}7{“沥青”}8{“自我阻塞砖”}9{“阴影”}
绘制端点成员签名。
图图(sig) xlabel(带数字的) ylabel (的数据值) ylim([400 2700])标题(“Endmember签名”)传说(类名,“位置”,“西北”)
估计丰度图
属性创建端成员的丰度映射estimateAbundanceLS
函数,选择全约束最小二乘(FCLS)。该函数将丰度图输出为三维数组,并以空间维度作为输入数据。每个通道是对应签名列中端元的丰度映射。在本例中,输入数据的空间维度为610 × 340,端成员的数量为9。因此,输出丰度图的大小是610 × 340 × 9。
丰度emap =估计丰度(hcube,sig,“方法”,尺柜的);
显示丰度图。
图=图(“位置”,[0 0 1100 900]);n = ceil(sqrt(size(丰度地图,3)));为cnt = 1:size(丰度emap,3) subplot(n,n,cnt) imagesc(丰度emap (:,:,cnt)) title([“丰富的”一会{问}])在结束持有从
执行最大丰度分类
找出每个像素丰度值最大的通道号。为每个像素返回的通道号对应于中的列团体
包含与该像素的最大丰度值相关联的端成员签名。显示按最大丰度值分类的像素的彩色编码图像。
[~,matchIdx] = max(丰度地图,[],3);图imagesc(matchIdx) colormap(jet(numel(classNames)) colorbar(“TickLabels”类名)
对分类区域进行分割,并将其覆盖在高光谱数据立方体估计的RGB图像上。
segmentmg = 0 (size(matchIdx));overlayImg = 0(大小(丰度emap,1),大小(丰度emap,2),3,大小(丰度emap,3));为i = 1:size(丰度地图,3)segmentImg(matchIdx==i) = 1;overlayImg(:,:,:,i) = imoverlay(rgbImg,segmentImg);segmentmg = 0 (size(matchIdx));结束
显示分类和覆盖的高光谱图像区域及其类名。从图像中,你可以看到沥青、树木、裸露的土壤和砖块区域已经被准确分类。
图(“位置”,[0 0 1100 900]);n = ceil(sqrt(size(丰度地图,3)));为cnt = 1:size(丰度emap,3) subplot(n,n,cnt);显示亮度图像(uint8 (overlayImg (:,:,: cnt)));标题([“地区分类”一会{问}])在结束持有从