主要内容

使用光谱签名匹配的目标检测

该示例通过使用光谱匹配方法,如何在高光谱图像中检测已知目标。已知目标材料的纯光谱特征用于在高光谱图像中检测和定位目标。在该示例中,您将使用光谱角映射器(SAM)光谱匹配方法在高光谱图像中检测人造屋顶材料(已知目标)。屋顶材料的纯光谱特征是从EcoStress光谱库中读取的,用作光谱匹配的参考光谱。将数据立方体中的所有像素的光谱签名与参考光谱进行比较,并且最佳匹配像素谱被归类为属于目标材料。

本示例使用来自Pavia university数据集的数据示例作为测试数据。数据集包含9个groundtruth类的端成员签名,每个签名都是长度为103的向量。地面真理类包括沥青,草地,砾石,树木,油漆金属板,裸露的土壤,沥青,自阻塞砖,和阴影。在这些类中,涂漆金属板通常属于屋顶材料类型,它是需要定位的目标。

读取测试数据

通过使用Pavia大学数据集读取测试数据超立方体函数。函数返回超立方体对象,该对象存储从测试数据中读取的数据集和元数据信息。测试数据有103个光谱波段,其波长范围从430 nm到860 nm。几何分辨率为1.3米,每个波段图像的空间分辨率为610 × 340。

hcube =超立方体('paviau.hdr');

从数据立方体中估计出RGB彩色图像彩色化函数。设置ContrastStretching参数值真正的以提高RGB彩色图像的对比度。显示RGB图像。

rgbImg =再着色(hcube,“方法”'RGB'“ContrastStretching”,真正的);图imshow (rgbImg)标题(“RGB图像”

读取参考光谱

从ECOSTRESS光谱库中读取与屋顶材料相对应的光谱信息readEcostressSig函数。添加包含ECOSTRESS光谱文件的完整文件路径,并从指定位置读取屋顶材料的光谱签名。

fileroot = matlabshared.金宝appsupportpkg.getSupportPackageRoot ();目录(fullfile (fileroot,“工具箱”'图片'“金宝appsupportpackages”高光谱的“hyperdata”“ECOSTRESSSpectraFiles”));自由= readEcostressSig (“manmade.roofingmaterial.metal.solid.all.0692uuucop.jhu.becknic.spectrum.txt”);

检查从ECOSTRESS库读取的参考光谱的属性。输出结构自由存储从ECOSTRESS库读取的元数据和数据值。

自由
自由=结构体字段:名称:“铜金属”型号:“人造”类:“屋面材料”子类:“金属”粒子:“固体”属:[0×0 string]种:[0×0 string] SampleNo:“0692UUUCOP”所有者:“国家摄影解说中心”波长:“所有”来源:“国家摄影判读中心非常规开采因素数据系统获得的光谱。”收集日期:“无”描述:“政府建筑屋顶防水板风化严重的裸铜金属。最初的ASTER光谱库名称为jhu. becknico . manmadeo .屋顶。metal.solid.0692uuu.spectrum.txt“测量:”方向(10度)半球反射率“第一列:“X”第二列:“Y”波长单位:“微米”数据单位:“反射率(百分比)”FirstXValue: "0.3000" LastXValue: "12.5000" NumberOfXValues: "536" AdditionalInformation: "none"波长:[536×1 double]反射率:[536×1 double]

读取存储在其中的波长和反射值自由.波长和反射对包括参考光谱或参考光谱特征。

波长= lib.wavelencth;反射率= lib.reflectance;

绘制从生态传感库读取的参考光谱。

情节(反射波长,“线宽”2)轴包含(“波长(\妈妈)”) ylabel (的反射率(%))标题(参考光谱的

执行光谱匹配

利用该方法求解参考光谱与数据立方体之间的光谱相似性spectralMatch函数。默认情况下,该函数使用光谱角度映射器(SAM)方法来寻找光谱匹配。输出是一个分数图,表示每个像素光谱与参考光谱之间的匹配。因此,得分图是与测试数据相同的空间维度矩阵。在本例中,得分地图的大小是610乘340。SAM对增益因子不敏感,因此可以用来匹配由于地形光照影响而固有增益因子未知的像素光谱。

scoreMap = spectralMatch(自由、hcube);

显示得分地图。

图('位置',[0 0 500 600]) imagesc(scoreMap) colormapparulacolorbar标题(“分数地图”

分类和检测目标

SAM评分的典型值在范围[0,3.142],测量单位为弧度。SAM分数越低,表示像素光谱与参考光谱的匹配越好。利用阈值法对输入数据中的目标区域进行空间定位。要确定阈值,请查看得分图的直方图。选取出现次数较多的最小SAM评分值作为检测目标区域的阈值。

图imhist (scoreMap);标题(“得分图直方图”);包含(“分数值地图”) ylabel (出现的数量);

从直方图图中,您可以推断出出现次数显著的最小得分值约为0.22。因此,可以在本地最大值附近设置一个值作为阈值。本例中,可以选择检测目标的阈值为0.25。小于最大阈值的像素值被分类为目标区域。

maxthreshold = 0.25;

通过阈值法检测光谱相似性最大的目标区域。将阈值图像叠加到高光谱数据的RGB图像上。

thresholdedImg = scoreMap <= maxthreshold;overlaidImg = imoverlay (rgbImg thresholdedImg,“绿色”);

显示结果。

无花果=图('位置',[0 0 900 500]);axes1 =轴(“父”无花果,'位置',[0.04 0.11 0.4 0.82]);显示亮度图像(thresholdedImg“父”, axes1);Colormap ([0 0 0;1 1 1]);标题(检测到目标区域的)轴axes2 =轴(“父”无花果,'位置',[0.47 0.11 0.4 0.82]);显示亮度图像(overlaidImg“父”axes2)轴标题(覆盖检测结果的

验证检测结果

通过使用来自Pavia University数据集的地面真实数据,可以验证所获得的目标检测结果。

加载.mat文件,其中包含地面真实数据。为定量验证结果,计算地面真实值与输出之间的均方误差。结果与地面真实值越接近,误差值越小。

负载(“paviauRoofingGT.mat”);err = imse (im2double(paviaurooinggt), im2double(thresholdedImg));流(' n均方误差为%0.4f\n', 呃)
均方误差为0.0040
无花果=图('位置',[0 0 900 500]);axes1 =轴(“父”无花果,'位置',[0.04 0.11 0.4 0.82]);显示亮度图像(thresholdedImg“父”, axes1);Colormap ([0 0 0;1 1 1]);标题(“结果”)轴axes2 =轴(“父”无花果,'位置',[0.47 0.11 0.4 0.82]);显示亮度图像(paviauRoofingGT“父”,轴2)Colormap([0 0 0; 1 1 1]);轴标题('地面真相'

参考

F.A. A.B. Lefkoff, J.W. Boardman, K.B. Heidebrecht, A.T. Shapiro, P.J. Barloon, A.F.H. Goetz。光谱图像处理系统(SIPS)——成像光谱仪数据的交互可视化和分析。环境遥感44岁的没有。2-3(1993年5月):145-63。https://doi.org/10.1016/0034 - 4257 (93) 90013 - n。

[2] Chein-I张。高光谱图像分析中光谱变异性、相似性和鉴别的信息理论方法。IEEE信息理论汇刊46岁的没有。5(2000年8月):1927-32。https://doi.org/10.1109/18.857802。

另请参阅

|||

相关话题