主要内容

基于最大丰度分类的高光谱图像分析

这个例子展示了如何通过执行最大丰度分类(MAC)来识别高光谱图像中的不同区域。丰度图描述了端元在高光谱图像上的分布。图像中的每个像素要么是a纯像素或者一个混合像素.每个像素获得的丰度值集代表该像素中存在的每个端元的百分比。在本例中,您将通过查找每个像素的最大丰度值并将其分配给相关的端成员类来对高光谱图像中的像素进行分类。

本示例使用来自Pavia University数据集的数据示例作为测试数据。测试数据包含九个终端成员,代表这些地面真理类:沥青,草地,砾石,树木,涂漆金属板,裸露的土壤,沥青,自阻塞砖,和阴影。

加载和可视化数据

加载.mat文件包含工作区中的测试数据。的.mat文件包含数组paviaU,表示高光谱数据立方体和矩阵签名,表示从高光谱数据中提取的9个端元签名。该数据立方体有103个光谱波段,波长从430 nm到860 nm。几何分辨率为1.3米,每个波段图像的空间分辨率为610 × 340。

负载(“paviaU.mat”);形象= paviaU;sig =签名;

计算每个光谱波段的中心波长,通过在光谱波段的数量上均匀间隔波长范围。

波长= [430860];numBands = 103;波长= linspace (wavelengthRange (1) wavelengthRange (2), numBands);

创建一个超立方体物体使用高光谱数据立方体和中心波长。然后从高光谱数据估计出RGB图像。设置ContrastStretching参数值真正的以提高RGB输出的对比度。可视化RGB图像。

hcube =超立方体(图片、波长);rgbImg =再着色(hcube,“方法”“RGB”“ContrastStretching”,真正的);图imshow (rgbImg)

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

测试数据包含9个ground truth类的端成员签名。每一列的团体包含ground truth类的端成员签名。创建一个表,列出每个端成员的类名和对应的列团体

num = 1:尺寸(sig, 2);endmemberCol = num2str (num”);一会= {“沥青”‘草地’“碎石”“树”金属板画的裸露的土壤的...“沥青”“自我阻塞砖”“阴影”};表(endmemberCol,一会,“VariableName”, {团体的列“Endmember类名”})
ans =9×2表列团体Endmember类的名称  _____________ ________________________ 1{“沥青”}2{“草地”}3{“碎石”}4{‘树木’}5{画金属片的}6{“裸露的土壤”}7{“沥青”}8{“自我阻塞砖”}9{“阴影”}

绘制端成员签名。

图绘制(sig)包含(带数字的) ylabel (的数据值) ylim([400 2700])“Endmember签名”)传说(类名,“位置”“西北”

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

估计丰富地图

属性创建丰度映射的端成员estimateAbundanceLS函数,选择全约束最小二乘(FCLS)方法。该函数以三维数组的形式输出丰度映射,以空间维度作为输入数据。每个通道是对应签名列的端成员的丰度映射。在本例中,输入数据的空间维数为610 × 340,端元数为9。因此,输出丰度图的大小是610 × 340 × 9。

abundanceMap = estimateAbundanceLS (hcube、团体、“方法”尺柜的);

显示丰富的地图。

无花果=图(“位置”,[0 0 1100 900]);n =装天花板(√大小(abundanceMap, 3)));cnt = 1:size(abundance emap,3) subplot(n,n,cnt) imagesc(abundance emap (:,:,cnt)) title([“大量的”一会{问}])结束持有

图中包含9个轴对象。标题为“丰富的沥青”的轴对象1包含一个类型为图像的对象。标题为“丰饶的草地”的坐标轴对象2包含一个类型为image的对象。标题为“丰富的砾石”的轴对象3包含一个类型为image的对象。标题为“丰富的树”的轴对象4包含一个类型为image的对象。标题为“丰富的彩绘金属片”的轴对象5包含一个类型为图像的对象。标题为“丰富的裸露土壤”的轴对象6包含一个类型为image的对象。标题为“丰富的沥青”的轴对象7包含一个类型为图像的对象。轴对象8,标题为“丰富的Self块砖”,包含一个类型为image的对象。标题为“阴影丰富”的轴对象9包含一个类型为image的对象。

执行最大丰度分类

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

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

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

将分类区域分割并叠加到由高光谱数据立方体估计的RGB图像上。

segmentImg = 0(大小(matchIdx));overlayImg = 0(大小(abundanceMap, 1),大小(abundanceMap, 2), 3,大小(abundanceMap, 3));i = 1:size(abundanceMap,3) segmentmg (matchIdx==i) = 1;overlayImg(::,:,我)= imoverlay (rgbImg segmentImg);segmentImg = 0(大小(matchIdx));结束

显示分类和覆盖的高光谱图像区域及其类名。从图像中,你可以看到沥青、树木、裸露的土壤和砖区域已经被准确地分类。

图(“位置”,[0 0 1100 900]);n =装天花板(√大小(abundanceMap, 3)));cnt = 1:size(abundance emap,3) subplot(n,n,cnt);显示亮度图像(uint8 (overlayImg (:,:,: cnt)));标题([“已分类的地区”一会{问}])结束持有

图中包含9个轴对象。标题为“区域分类为沥青”的轴对象1包含一个类型为图像的对象。标题为“区域分类为草地”的坐标轴对象2包含一个类型为image的对象。标题为“区域分类为砂砾”的轴对象3包含一个类型为image的对象。标题为“区域分类为树”的轴对象4包含一个类型为image的对象。标题为“区域分类”的轴对象5包含一个类型为图像的对象。标题为“区域分类为裸露土壤”的轴对象6包含一个类型为image的对象。标题为“区域分类为沥青”的轴对象7包含一个类型为图像的对象。标题为“区域分类为自块”的轴对象8包含一个类型为image的对象。标题为“区域分类为阴影”的轴对象9包含一个类型为image的对象。

另请参阅

||

相关的话题