主要内容

基于库特征和SAM的高光谱图像分类

这个例子展示了如何使用光谱角制图器(SAM)分类算法对高光谱图像中的像素进行分类。该算法通过计算一个像素的光谱与从ECOSTRESS谱库中读取的纯光谱特征之间的光谱匹配得分,对测试数据中的每个像素进行分类。本示例使用来自Jasper Ridge数据集的数据示例作为测试数据。测试数据包含四个潜在的端元,包括道路、土壤、水和树木。在这个例子中,你会:

  1. 通过计算每个测试像素的光谱与一个纯光谱之间的SAM光谱匹配得分,生成测试数据中不同区域的得分图。纯光谱来自ECOSTRESS谱库。

  2. 使用最小评分标准对区域进行分类,并为测试数据中的每个像素分配类标签。

读取测试数据

使用超立方体功能。该函数返回一个超立方体对象,存储高光谱数据立方体以及从测试数据中读取的相应波长和元数据信息。测试数据有198个光谱波段,波长从399.4 nm到2457 nm。光谱分辨率高达9.9 nm,每个波段图像的空间分辨率为100 × 100。

hcube =超立方体(“jasperRidge2_R198.img”)
hcube = hypercube with properties: [100×100×198 int16]波长:[198×1 double]元数据:[1×1 struct]

从数据立方体估计RGB图像。应用对比度拉伸以增强输出RGB图像的对比度。

rgbImg=着色(hcube,“方法”,“rgb”,“ContrastStretching”,对);

显示测试数据的RGB图像。

图imagesc(rgbImg);轴形象标题(“数据立方体的RGB图像”)

阅读ECOSTRESS光谱库中的签名

ECOSTRESS光谱库由单个表面材料的纯光谱特征组成。如果像素的光谱与ECOSTRESS光谱库中的特征相匹配,则像素完全由单个表面材料组成。该光谱库汇集了3400多个天然和人造材料的光谱特征。因为了解测试数据中潜在的端部构件,选择与这四个端部构件相关的生态应力谱库文件。

从ECOSTRESS光谱库中读取与水、植被、土壤和混凝土相关的光谱文件。使用以下类型的光谱特征:

  • 人工对道路和公路结构进行分类

  • 用于划分砂、淤泥和粘土区域的土壤

  • 植被分类树的区域

  • 划分水域的水资源

fileroot=matlabshared.su万博1manbetxpportpkg.getSupportPackageRoot();addpath(完整文件(fileroot、,“工具箱”,“图片”,“万博1manbetx支持包”,“高光谱”,...“超数据”,“生态文件”));文件名=[“水。海水。无。液体。tir。seafoam。jhu。becknic。spectrum.txt”,...“植被.树木.桉树.斑叶桉.vswir.jpl087.jpl.asd.spectrum.txt”,...“soil.utisol.hapludult.none.all.87p707.jhu.becknic.spectrum.txt”,...“soil.mollisol.cryoboroll.none.all.85p4663.jhu.becknic.spectrum.txt”,...“人造.混凝土.铺筑混凝土.实心.全部.0092uuu_cnc.jhu.becknic.spectrum.txt”];自由= readEcostressSig(文件名)
解放党=带字段的1×5结构数组:名称类型类子类粒子属物种SampleNo所有者波长范围来源收集日期描述测量第一列第二列波长单位数据单位FirstXValue LastXValue NumberOfXValues附加信息波长反射率⋮

从库结构中提取类名。

一会= [lib.Class];

绘制从ECOSTRESS谱库读取的纯谱签名。

图保存对于idx=1:numel(lib)绘图(lib(idx).波长,lib(idx).反射率,“线宽”, 2)结束盒子标题(“来自ECOSTRESS图书馆的纯光谱特征”)包含('波长(\mum)') ylabel (的反射率(%))传说(类名,“位置”,“东北”)标题(图例,“类名”)举行

为测试数据中的像素计算得分地图

的方法查找每个像素光谱与库签名之间的光谱匹配得分频谱匹配函数。默认情况下频谱匹配函数使用SAM分类算法计算两个光谱之间的相似度。该函数返回一个数组,其空间维度与高光谱数据立方体相同,通道与指定的库签名数相同。每个通道包含单个库签名的得分映射。在本例中,指定了5个ECOSTRESS光谱库文件进行比较,高光谱数据立方体的每个波段的空间尺寸为100 × 100像素。因此,得分映射的输出数组的大小是100 * 100 * 5。

scoreMap = spectralMatch(自由、hcube);

显示得分地图。

图蒙太奇(scoreMap,“尺寸”,[1努美尔(lib)],“BorderSize”,10)头衔(“获得每个纯光谱的分数图”,“字体大小”14) colormap(飞机);colorbar

使用最小分数标准对像素进行分类

SAM值越低表示光谱相似性越高。通过在库签名中找到每个像素的最佳匹配,使用最低分数标准对测试像素进行分类。结果是一个像素级分类图,其中每个像素的值是中的库签名文件的索引解放党该像素的SAM值最低。例如,如果分类图中某个像素的值为1,则该像素与中的第一个库签名具有高度相似性解放党.

[~,classMap]=min(得分图,[],3);

创建一个类表,将分类图值映射到用于光谱匹配的ECOSTRESS库签名。

classTable =表((min (classMap(:)):马克斯(classMap(:))),类名,...“变化无常”, {“分类图值”,“匹配库签名”})
分类表=5×2表分类映射值匹配库签名  ________________________ __________________________ 1“海水”2“树”3“Utisol”4“软土”5“具体”

显示高光谱数据的RGB图像和分类结果。视觉检测表明,光谱匹配能有效地对每个像素进行分类。

无花果=图(“位置”,[0 0 700 300]);轴1=轴(“父”,无花果,“位置”,[0.04 0 0.4 0.9]);显示亮度图像(rgbImg“父”, axes1);轴标题(“数据立方体的RGB图像”)轴2=轴(“父”,无花果,“位置”,[0.47 0.45 0.9]);imagesc(类地图,“父”,轴2)轴彩色地图(jet(numel(lib))标题(“Pixel-wise分类地图”)ticks=linspace(1.4,4.8,numel(lib));颜色条(“滴答声”,滴答声,“TickLabels”类名)

参考文献

[1] Kruse,F.A.,A.B.Lefkoff,J.W.Boardman,K.B.Heidebrecht,A.T.Shapiro,P.J.Barlono和A.F.H.Goetz.“光谱图像处理系统(SIPS)-成像光谱仪数据的交互式可视化和分析。”环境遥感44,第2-3号(1993年5月):145-63。https://doi.org/10.1016/0034-4257(93)90013-N。

另见

|||

相关的话题