使用光谱库识别未知区域或材料
光谱匹配方法将高光谱数据立方体中每个像素的光谱特征与ECOSTRESS光谱文件中的参考植被光谱特征进行比较。
阅读ECOSTRESS光谱库中植被的光谱特征。
fileroot = matlabshared.金宝appsupportpkg.getSupportPackageRoot ();文件名= fullfile (fileroot,“工具箱”,“图片”,“金宝appsupportpackages”,高光谱的,“hyperdata”,...“ECOSTRESSSpectraFiles”,“vegetation.tree.tsuga.canadensis.vswir.tsca - 1 - 47. ucsb.asd.spectrum.txt”);libData = readEcostressSig(文件名);
将高光谱数据读取到工作区。
hcube =超立方体(“paviaU.hdr”);
计算高光谱数据像素相对于参考光谱的光谱的距离分数。
分数= spectralMatch (libData hcube);
显示距离分数。距离分数低的像素与参考光谱的匹配度更强,更有可能属于植被区域。
图显示亮度图像colorbar(得分)
定义一个阈值,用于检测对应于植被区域的距离分数。
阈值= 0.3;
通过指定强度值生成二值图像1
对于分数小于指定阈值的像素。其他区域的强度值为0。二值图像中的最大强度区域对应于高光谱数据立方体中的植被区域。
Bw =评分<阈值;
利用二值图像中最大强度区域的指数分割高光谱数据立方体的植被区域。
T =重塑(hcube.DataCube,[size(hcube.DataCube,1)*size(hcube.DataCube,2) size(hcube.DataCube,3)]);T = 0(大小(T));T(bw==1,:) = T(bw==1,:)Ts =重塑(Ts,[size(hcube.DataCube,1) size(hcube.DataCube,2) size(hcube.DataCube,3)]);
.创建一个新的超立方体
对象,该对象只包含分段的植被区域。
hcube.Wavelength segmentedDataCube =超立方体(Ts);
对原始数据立方体和分割后的数据立方体进行RGB彩色图像估计彩色化
函数。
rgbImg =再着色(hcube,“方法”,“rgb”,“ContrastStretching”,真正的);segmentedImg =再着色(segmentedDataCube,“方法”,“rgb”,“ContrastStretching”,真正的);
将二值图像叠加到原始数据立方体的RGB版本上imoverlay
函数。
B = imoverlay (rgbImg bw,“黄色”);
将原始数据立方体和分割后的数据立方体的RGB彩色图像随叠加图像一起显示。分割后的图像只包含从原始数据立方体中分割出来的植被区域。
{rgbImg segmentdimg B},“大小”3[1])标题(['Original Image | ''分割图像| '“显示图片”])
阅读ECOSTRESS光谱库中的参考光谱签名。该图书馆由15个光谱特征组成,它们属于人造材料、土壤、水和植被。输出是一个结构数组,存储从ECOSTRESS库文件读取的光谱数据。
fileroot = matlabshared.金宝appsupportpkg.getSupportPackageRoot ();目录名= fullfile (fileroot,“工具箱”,“图片”,“金宝appsupportpackages”,高光谱的,“hyperdata”,“ECOSTRESSSpectraFiles”);libData = readEcostressSig(目录名);
加载一个.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
它包含与测试光谱最接近的参考光谱。
[价值,印第安纳州]=分(分数);
利用最小距离评分指标查找匹配参考光谱,并在ECOSTRESS库中显示匹配光谱数据的详细信息。结果表明,测试光谱与海水的光谱特征最为吻合。
matchingSpectra = libData(印第安纳州)
matchingSpectra =结构体字段:名称:“海泡”类型:“水”类:“海水”亚类:“无”粒子:“液体”属:[0×0 string]物种:[0×0 string] SampleNo:“海泡”所有者:“约翰霍普金斯大学地球与行星科学系”波长:“TIR”来源:“JHU红外光谱实验室”。收集日期:“无”说明:“海水泡沫水。原始文件名FOAM原始ASTER光谱库名称为jhu. becknico .water.sea.none.liquid.seafoam.spectrum.txt"测量:"方向(10度)半球反射"第一列:"X"第二列:"Y"波长单位:"微米"数据单位:"反射率(百分比)"FirstXValue: "14.0112" LastXValue: "2.0795" NumberOfXValues: "2110" AdditionalInformation: "none"波长:[2110×1 double]反射:[2110×1 double]
绘制测试光谱和相应的参考光谱的反射率值。为了绘制和可视化反射率曲线的形状,将反射率值重新缩放到[0,1]范围,并插值测试反射率值以在数量上与参考反射率值相匹配。
图testReflectance = rescale(反射率,0,1);refReflectance =重新调节(matchingSpectra.Reflectance 0 1);testLength =长度(testReflectance);newLength =长度(testReflectance) / (refReflectance);testReflectance = interp1 (1: testLength testReflectance 1: newLength: testLength);情节(refReflectance)在情节(testReflectance“r”)举行从传奇(“匹配参考反射”,“测试反射”)包含(样品的数量) ylabel (的反射率值)
libData
- - - - - -ECOSTRESS光谱数据光谱数据来自ECOSTRESS文件,返回为1-by-K结构数组。K是函数读取的频谱文件的数量。结构数组的每个元素都有24个字段,这些字段包含频谱文件的头信息。
字段名称 | 描述 |
的名字 |
被测样品或材料的名称 |
类型 |
样本类型,例如“矿物” ,“岩石” ,“树” ,或“人造” |
类 |
样本类型的类别 例如,如果样本类型为 |
子类 |
样本类型的子类 该字段包含一个空数组或 |
ParticleSize |
样品类型的粒度 该字段包含一个空数组,除非 |
属 |
样品属 该字段包含一个空数组,除非 |
物种 |
样本的种类 该字段包含一个空数组,除非 |
SampleNo |
样本数量 此值是相关示例的标识符。 |
老板 |
样本所有者 |
WavelengthRange |
测量样品的波长范围 该值必须为 |
起源 |
获取数据的位置 |
CollectionDate |
收集样本的日期 这个值是 |
描述 |
被测样品的描述 该字段提供有关样本特征的附加信息。 |
测量 |
光谱测量方式用于测量样品 |
FirstColumn |
频谱文件中数据值的第一列 |
SecondColumn |
频谱文件中数据值的第二列 |
WavelengthUnit |
样品光谱波长的测量单位 每个样本类型的值为 |
DataUnit |
光谱测量模式单位 光谱测量方式包括反射率、透射率和透射率。单位为百分比。该字段对应于 |
FirstXValue |
频谱文件中数据值的第一列中的第一个值 |
LastXValue |
频谱文件中第一列数据值的最后一个值 |
NumberofXValues |
频谱文件第一列中的数据值的总数 |
AdditionalInformation |
关于示例的附加信息 这个领域包括不属于光谱数据的信息。 |
波长 |
测量反射率的波长值 |
反射 |
在每个波长测量的反射值 |
hcube
- - - - - -输入高光谱数据超立方体
对象输入高光谱数据,指定为超立方体
对象。的DataCube
财产的超立方体
对象包含高光谱数据集。
反射
- - - - - -反射率值反射值,指定为aC元向量。C为已测量反射率值的波长数。
波长
- - - - - -波长值波长值,指定为C元向量。C为已测量反射率值的波长数。
指定可选的逗号分隔的对名称,值
参数。的名字
参数名和价值
为对应值。的名字
必须出现在引号内。可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家
.
spectralMatch (libData、hcube MinBandWidth, 0.5)
方法
- - - - - -光谱匹配方法“山姆”
(默认)|“席德”
|“sidsam”
|“jmsam”
|“ns3”
谱匹配方法,指定为逗号分隔对组成“方法”
其中一个价值观是:
“山姆”
-光谱角度映射(SAM)方法,通过计算两个光谱之间的角度距离来测量它们之间的相似性。
“席德”
-光谱信息发散(SID)方法,通过计算两个光谱的概率分布值的差值来度量它们之间的相似性。
“sidsam”
-混合光谱相似法,通过结合SID和SAM距离测量测量两个光谱之间的相似度。
“jmsam”
- Jeffries Matusita- spectral Angle Mapper (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元素列向量或标量。输出分数的维度取决于libData
以及测试数据是否为a超立方体
对象或一个波长
和反射
对。
如果测试谱特征被指定为超立方体
对象,hcube
数据立方体的大小米——- - - - - -N——- - - - - -C:
输入参数维数,libData |
维度的输出,分数 |
1 -K,包含K引用签名从K频谱文件数 | 大小的三维数字数组米——- - - - - -N——- - - - - -K包含每个像素相对的距离分数K参考签名 的每个通道中的值K每个像素的光谱相对于对应行的光谱数据的距离分数是多少 |
1 * 1,包含从一个频谱文件读取的引用签名(K= 1) | 矩阵的大小米——- - - - - -N,矩阵包含每个像素光谱相对于参考签名的距离分数。 |
如果指定测试谱特征为反射
和波长
价值观:
输入参数维数,libData |
维度的输出,分数 |
1 -K,包含K引用签名从K频谱文件数 | K元素向量,包含测试光谱相对的距离分数K参考签名。向量的每个元素是测试反射率值相对于对应行的光谱数据的距离分数libData . |
1 * 1,包含从一个频谱文件读取的引用签名(K= 1) | 标量 |
数据类型:双
给出测试光谱t和参考光谱r的长度C, SAM得分α是计算
谱信息发散(SID)方法是根据两个谱的概率分布之间的发散度来计算谱的相似度。让r和t分别为参考光谱和测试光谱。计算参考光谱的分布值为:
.
计算测试谱的分布值为:
.
然后,利用参考谱和测试谱的概率分布计算SID值:
SID-SAM方法计算谱相似度为:
JMSAM方法基于两个光谱之间的Jeffries Matusita (JM)和SAM距离计算光谱相似性。让r和t分别为参考光谱和测试光谱。
首先,计算JM距离,
在哪里B是巴塔查里亚距离,
μr和μt分别为参考谱和测试谱的平均值。σr和σt分别为参考谱和测试谱的协方差值。
然后,计算SAM值α利用测试光谱t参考光谱r的长度C,
最后,计算jmssam得分为:
NS3方法基于两个光谱之间的欧氏距离和SAM距离计算光谱相似性。让r和t分别为参考光谱和测试光谱。计算两个光谱之间的欧氏距离如下:
然后,计算SAM值α
最后,计算NS3得分如下:
你点击一个链接对应于这个MATLAB命令:
通过在MATLAB命令窗口中输入命令来运行命令。Web浏览器不支持MATLAB命令。金宝app
你也可以从以下列表中选择一个网站:
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。