spectralMatch
利用谱库识别未知区域或材料
语法
描述
例子
基于光谱匹配的高光谱数据植被区域分割
光谱匹配方法将高光谱数据立方体中每个像素的光谱签名与来自ECOSTRESS光谱文件的植被参考光谱签名进行比较。
从ECOSTRESS谱库中读取植被的光谱特征。
fileroot = matlabshared.万博1manbetxsupportpkg.getSupportPackageRoot();文件名= fullfile(fileroot)“工具箱”,“图片”,“万博1manbetxsupportpackages”,高光谱的,“hyperdata”,...“ECOSTRESSSpectraFiles”,“vegetation.tree.tsuga.canadensis.vswir.tsca - 1 - 47. ucsb.asd.spectrum.txt”);libData = readecostress ssig(文件名);
将高光谱数据读入工作区。
超立方体(“paviaU.hdr”);
计算高光谱数据像素的光谱相对于参考光谱的距离分数。
score = spectralMatch(libData,hcube);
显示距离分数。距离分数低的像素点与参考光谱的匹配度更强,更有可能属于植被区域。
图imagesc(score)色条
定义一个阈值,用于检测与植被区域对应的距离分数。
阈值= 0.3;
通过指定强度值生成二值图像1
对于分数小于指定阈值的像素。其他区域的强度值为0。二值图像中的最大强度区域与高光谱数据立方体中的植被区域相对应。
Bw =分数<阈值;
利用二值图像中最大强度区域的指标对高光谱数据立方体的植被区域进行分割。
T =重塑(hcube.DataCube,[size(hcube.DataCube,1)*size(hcube.DataCube,2) size(hcube.DataCube,3)]);Ts = 0(大小(T));T(bw==1,:) = T(bw==1,:);Ts =重塑(Ts,[size(hcube.DataCube,1) size(hcube.DataCube,2) size(hcube.DataCube,3)]);
.创建一个新的超立方体
对象,该对象仅包含分段植被区域。
segmentedDataCube =超立方体(Ts,hcube.Wavelength);
估计原始数据立方体和分割后的数据立方体的RGB彩色图像彩色化
函数。
rgbImg = colorize(hcube,“方法”,“rgb”,“ContrastStretching”,真正的);segmenteddimg = colorize(segmentedDataCube,“方法”,“rgb”,“ContrastStretching”,真正的);
控件将二进制图像覆盖在原始数据多维数据集的RGB版本上imoverlay
函数。
B = ioverlay (rgbImg,bw,“黄色”);
将原始数据立方体和分割后的数据立方体的RGB彩色图像与叠加后的图像一起显示。分割后的图像只包含从原始数据立方体中分割出来的植被区域。
图蒙太奇({rgbImg segmentedImg B},“大小”,[1 3])标题([“原始图像|”“分段图像|”“显示图片”])
利用光谱匹配识别未知光谱特征
从ECOSTRESS谱库中读取参考光谱签名。该库包括15个光谱特征,属于人造材料、土壤、水和植被。输出是一个结构数组,用于存储从ECOSTRESS库文件中读取的光谱数据。
fileroot = matlabshared.万博1manbetxsupportpkg.getSupportPackageRoot();Dirname = fullfile(fileroot,“工具箱”,“图片”,“万博1manbetxsupportpackages”,高光谱的,“hyperdata”,“ECOSTRESSSpectraFiles”);libData = readecostress ssig (dirname);
加载一个.mat
文件,其中包含进入工作区的未知材料的反射率和波长值。反射率和波长值共同构成测试光谱。
负载spectralData“反射”“波长”
利用光谱信息发散(SID)方法计算参考光谱与测试光谱之间的光谱匹配。该函数只计算那些与测试光谱有带宽重叠的参考光谱的距离分数。该功能为所有其他光谱显示警告信息。
分数= spectralMatch(libData,反射率,波长,“方法”,“席德”);
警告:无法在测试光谱和库签名号8之间找到重叠的波长
警告:无法在测试光谱和库签名号9之间找到重叠的波长
警告:无法在测试光谱和库签名号11之间找到重叠的波长
显示测试频谱的距离分数。距离分数越低的像素与参考光谱的匹配越强。的距离分数值南
表示对应的参考频谱和测试频谱不满足重叠带宽阈值。
分数
分数=1×15297.8016 122.5567 203.5864 103.3351 288.7747 275.5321 294.2341 NaN NaN 290.4887 NaN 299.5762 171.6919 46.2072 176.6637
求最小距离分数和相应的指数。返回的索引值表示结构数组的行libData
其中包含与测试频谱最接近的参考频谱。
[value,ind] = min(分数);
利用最小距离分数的索引找到匹配的参考光谱,并在ECOSTRESS库中显示匹配光谱数据的详细信息。结果表明,试验光谱与海水的光谱特征最为吻合。
匹配谱= libData(ind)
matchingSpectra =带字段的结构:名称:“海洋泡沫”类型:“水”类:“海水”子类:“无”粒子:“液体”属:[0×0串]种:[0×0串]SampleNo:“海洋泡沫”所有者:“约翰霍普金斯大学地球与行星科学系”波长:“TIR”来源:“JHU红外光谱实验室。”收藏日期:“无”描述:“海水泡沫水。原始文件名FOAM ASTER光谱库名称为jhu.becknic.water.sea.none.liquid.seafoam.spectrum.txt"测量:"定向(10度)半球反射率"第一列:"X"第二列:"Y"波长单位:"千分尺"数据单位:"反射率(百分比)"FirstXValue: "14.0112" LastXValue: "2.0795" NumberOfXValues: "2110"附加信息:"none"波长:[2110×1 double]反射率:[2110×1 double]
绘制测试光谱和相应参考光谱的反射率值。为了绘制和可视化反射率曲线的形状,将反射率值重新缩放到范围[0,1],并将测试反射率值内插到与参考反射率值在数量上匹配。
图testReflectance = rescale(反射率,0,1);refReflectance = rescale(matchingspectrum . reflectance,0,1);testLength =长度(testReflectance);newLength = length(terefflectance)/length(refReflectance);testReflectance = interp1(1:testLength,testReflectance,1:newLength:testLength);情节(refReflectance)在情节(testReflectance“r”)举行从传奇(“匹配参考反射率”,“测试反射”)包含(“样本数量”) ylabel (的反射率值)
输入参数
libData
- - - - - -ECOSTRESS光谱数据
结构
来自ECOSTRESS文件的光谱数据,作为1 × -返回K结构数组。K是函数读取的频谱文件的数量。结构数组的每个元素都有24个字段,包含频谱文件的头信息。
字段名称 | 描述 |
的名字 |
被测样品或材料的名称 |
类型 |
样本类型,如“矿物” ,“岩石” ,“树” ,或“人造” |
类 |
样例类型的类 例如,如果示例类型为 |
子类 |
样例类型的子类 此字段包含一个空数组或 |
ParticleSize |
样品类型的粒度 字段包含一个空数组,除非 |
属 |
样本的属 字段包含一个空数组,除非 |
物种 |
样本的种类 字段包含一个空数组,除非 |
SampleNo |
样本数量 这个值是关联样例的标识符。 |
老板 |
样品所有者 |
WavelengthRange |
被测样品的波长范围 取值必须为 |
起源 |
获取数据的位置 |
CollectionDate |
样本采集的日期 该值位于 |
描述 |
被测样品的描述 该字段提供关于样本特征的附加信息。 |
测量 |
光谱测量模式用于测量样品 |
FirstColumn |
频谱文件中的第一列数据值 |
SecondColumn |
频谱文件中数据值的第二列 |
WavelengthUnit |
样品的光谱波长测量单元 每个示例类型的值为 |
DataUnit |
光谱测量模式的单位 光谱测量方式包括反射率、透射率和透射率。单位为百分比。该字段对应于 |
FirstXValue |
频谱文件中数据值的第一列中的第一个值 |
LastXValue |
频谱文件中数据值的第一列中的最后一个值 |
NumberofXValues |
频谱文件第一列中的数据值总数 |
AdditionalInformation |
关于示例的附加信息 该字段包括不属于光谱数据的信息。 |
波长 |
测量反射率的波长值 |
反射 |
在每个波长测量的反射率值 |
hcube
- - - - - -输入高光谱数据
超立方体
对象
输入高光谱数据,指定为超立方体
对象。的DataCube
的属性超立方体
对象包含高光谱数据立方体。
反射
- - - - - -反射率值
C元向量
反射率值,指定为aC元向量。C已测量反射率值的波长数。
波长
- - - - - -波长值
C元向量
波长值,指定为aC元向量。C已测量反射率值的波长数。
名称-值参数
指定可选参数对为Name1 = Value1,…,以=家
,在那里的名字
参数名称和价值
对应的值。名称-值参数必须出现在其他参数之后,但对的顺序无关紧要。
在R2021a之前,使用逗号分隔每个名称和值,并将其括起来的名字
在报价。
例子:spectralMatch (libData、hcube MinBandWidth, 0.5)
方法
- - - - - -光谱匹配法
“山姆”
(默认)|“席德”
|“sidsam”
|“jmsam”
|“ns3”
光谱匹配方法,指定为逗号分隔对组成“方法”
其中一个价值观是:
“山姆”
-光谱角度映射器(SAM)方法,通过计算两个光谱之间的角距离来测量它们之间的相似性。“席德”
-谱信息发散(SID)方法,通过计算两个谱的概率分布值的差值来衡量两个谱之间的相似性。“sidsam”
-混合光谱相似度法,通过结合SID和SAM距离测量来测量两个光谱之间的相似度。“jmsam”
- Jeffries Matusita-光谱角度映射器(JMSAM),通过结合Jeffries Matusita (JM)和SAM距离测量来测量两个光谱之间的相似性。“ns3”
-归一化光谱相似度评分(NS3)方法,结合欧几里得距离度量和SAM距离度量来度量两个光谱之间的相似度。
有关这些光谱匹配方法的详细信息,请参见更多关于.
数据类型:字符
|字符串
MinBandWidth
- - - - - -最小重叠带宽
300
(默认)|积极的标量
最小重叠带宽,指定为由逗号分隔的对组成“MinBandWidth”
一个正的标量,单位是纳米。参考光谱与测试光谱之间的重叠带宽定义为:
BW重叠=W马克斯−W最小值
W最小值是参考光谱和测试光谱中最小波长的最大值。
W马克斯是参考光谱和测试光谱中最大波长的最大值。
的“MinBandWidth”
参数定义测试材料的光谱值与ECOSTRESS光谱数据之间重叠带宽的最小期望值。
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
输出参数
分数
-距离得分
三维数字数组|矩阵|K-element列向量|标量
距离分数,返回为三维数字数组,矩阵,K-element列向量,或标量。的维数决定了输出分数的维数libData
以及测试数据是否为a超立方体
对象或波长
而且反射
对。
如果测试光谱特征被指定为a超立方体
对象,hcube
数据立方体是大小的米——- - - - - -N——- - - - - -C:
输入参数的维数,libData |
输出尺寸,分数 |
1 -K,包含K从引用签名中读取K频谱文件数量 | 大小的三维数值数组米——- - - - - -N——- - - - - -K包含每个像素相对于的距离分数K参考签名 的每个通道中的值K每个像素的光谱与对应行光谱数据的距离分值是 |
,包含从一个频谱文件(K= 1) | 大小矩阵米——- - - - - -N,矩阵包含每个像素的光谱相对于参考特征的距离分数。 |
如果测试光谱特征被指定为反射
而且波长
价值观:
输入参数的维数,libData |
输出尺寸,分数 |
1 -K,包含K从引用签名中读取K频谱文件数量 | K-元素向量,包含测试光谱相对于的距离分数K参考签名。向量的每个元素都是测试反射率值相对于对应行的光谱数据的距离分数libData . |
,包含从一个频谱文件(K= 1) | 标量 |
数据类型:双
更多关于
光谱角度绘图仪
给定测试光谱t还有一个参考光谱r的长度C, SAM分数α的计算方法为
光谱信息发散(SID)
光谱信息发散度(SID)方法是基于两个光谱概率分布的发散度来计算光谱相似度。让r而且t分别为参考光谱和测试光谱。计算参考光谱的分布值为:
.
计算测试光谱的分布值为:
.
然后,利用参考谱和测试谱的概率分布计算SID值:
SID-SAM
SID-SAM方法计算光谱相似度如下:
Jeffries matusita -光谱角绘图仪
JMSAM方法基于两个光谱之间的Jeffries Matusita (JM)和SAM距离计算光谱相似度。让r而且t分别为参考光谱和测试光谱。
首先,计算JM距离,
在哪里B是巴塔查里亚距离,
μr而且μt分别为参考光谱和测试光谱的平均值。σr而且σt分别为参考谱和试验谱的协方差值。
然后,计算SAM值α利用测试光谱t参考光谱r的长度C,
最后,计算JMSAM分数为:
归一化谱相似度(NS3)
NS3方法基于两个光谱之间的欧几里得距离和SAM距离计算光谱相似度。让r而且t分别为参考光谱和测试光谱。计算两个光谱之间的欧几里得距离为:
然后,计算SAM值α
最后,计算NS3分数为:
版本历史
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入该命令来运行该命令。Web浏览器不支持MATLAB命令。万博1manbetx
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。