主要内容

利用最大丰度分类的高光谱图像分析

这个例子展示了如何通过执行最大丰度分类(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)

图中包含一个轴对象。axis对象包含一个image类型的对象。

测试数据包含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签名”)传说(类名,“位置”“西北”

图中包含一个轴对象。标题为Endmember Signatures的axes对象包含9个类型为line的对象。这些对象代表沥青,草地,砾石,树木,油漆金属板,裸露的土壤,沥青,自堵砖,阴影。

估计丰度图

属性创建端成员的丰度映射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([“丰富的”一会{问}])结束持有

图中包含9个轴对象。标题为丰度沥青的坐标轴对象1包含一个图像类型的对象。标题为Abundance of Meadows的Axes对象2包含一个image类型的对象。标题为丰砾石的坐标轴对象3包含一个图像类型的对象。标题为“丰裕树”的Axes对象4包含一个图像类型的对象。轴对象5的标题为丰富的彩绘金属片包含一个类型为图像的对象。标题为丰度裸露土壤的轴对象6包含一个图像类型的对象。标题为丰度沥青的坐标轴对象7包含一个图像类型的对象。axis对象8的标题为“丰裕的自我阻塞砖块”,包含一个图像类型的对象。标题为“阴影丰富”的Axes对象9包含一个图像类型的对象。

执行最大丰度分类

找出每个像素丰度值最大的通道号。为每个像素返回的通道号对应于中的列团体包含与该像素的最大丰度值相关联的端成员签名。显示按最大丰度值分类的像素的彩色编码图像。

[~,matchIdx] = max(丰度地图,[],3);图imagesc(matchIdx) colormap(jet(numel(classNames)) colorbar(“TickLabels”类名)

图中包含一个轴对象。axis对象包含一个image类型的对象。

对分类区域进行分割,并将其覆盖在高光谱数据立方体估计的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)));标题([“地区分类”一会{问}])结束持有

图中包含9个轴对象。标题为Regions Classified as Asphalt的坐标轴对象1包含一个image类型的对象。标题为Regions Classified as Meadows的Axes对象2包含一个image类型的对象。标题为Regions Classified as Gravel的坐标轴对象3包含一个image类型的对象。标题为Regions Classified as Trees的Axes对象4包含一个image类型的对象。标题为“区域分类为涂漆金属片”的轴对象5包含一个图像类型的对象。标题为Regions Classified as Bare soil的坐标轴对象6包含一个图像类型的对象。标题为Regions Classified as Bitumen的Axes对象7包含一个image类型的对象。标题为Regions Classified as Self的Axes对象8包含一个image类型的对象。标题为Regions Classified as Shadows的Axes对象9包含一个image类型的对象。

另请参阅

||

相关的话题