ENVI系列教程(十八)——高级光谱分析
目录
1 概述
2 详细操作步骤
2.1 高光谱图像物质识别
2.1.1 第一步:端元波谱获取
2.1.2 第二步:波谱识别
2.1.3 第三步:浏览结果及分类后处理
2.2 波谱沙漏工具
1 概述
高光谱识别非常重要的一个步骤就是端元波谱的获取(端元波谱概念源自混合像元分解),也就是分类样本的选择。端元光谱的确定有两种方式:
(1)使用光谱仪在地面或实验室测量到的 “参考端元”;
(2)在遥感图像上得到的 “图像端元”。
方法(1)一般从标准波谱库选择,方法(2)直接从图像上寻找端元可选择的方法有:从二维散点图中基于几何顶点的端元提取,借助纯净像元指数(Pixel Purity Index——PPI)和 n 维可视化工具用于端元波谱收集,基于连续最大角凸锥(Sequential Maximum Angle Convex Cone—— 简称 SMACC)的端元自动提取。
本教程学习借助纯净像元指数(Pixel Purity Index——PPI)和 n 维可视化工具用于端元波谱收集,之后进行地物识别。
如下图为波谱识别一般流程,从图中可以可到,由于端元波谱获取方法不同,光谱识别操作流程有一定的区别。

2 详细操作步骤
下面以一个经过大气校正的航空高光谱数据为例,介绍基于 PPI 端元提取方法完成高光谱图像分类的过程。数据:《基本光谱分析》章节中的高光谱数据:CupriteReflectance.dat。
2.1 高光谱图像物质识别
2.1.1 第一步:端元波谱获取
(1)启动 ENVI,打开高光谱数据 CupriteReflectance.dat。

(2)在 Toolbox 中,选择 / Transform/MNF Rotation/Forward MNF Estimate Noise Statistics,选择高光谱数据,点击 OK。

(3)选择输出路径及文件名,其他参数按照默认,点击 OK。



(4)在 Toolbox 中,选择 / Spectral/Pixel Purity Index/Pixel Purity Index (PPI) [FAST] New Output Band,选择上一步 MNF 变换后的结果,单击 Spectral Subset 按钮,选择前 11 个波段。


(5)在 PPI 计算参数面板中,设置迭代次数(Number of Iterations):默认为 5000 和阈值(Threshold Factor):2.5。迭代次数越高,得到结果的精度越高,但是计算数据越慢。






(8)在 Toolbox 中,打开/Spectral/n-Dimensional Visualizer/n-Dimensional Visualizer New Data,选择 MNF 变换结果,点击 OK。

(9)在 n-D Selected Bands 列表框中,选择前 5 个波段,单击 Start 按钮,构成的散点图在 N 维可视化窗口中旋转,通过 Start 和 stop 控制旋转到的位置,Speed 控制角度,这里设置 Speed 为 10,转动到一定程度时候,单击 Stop 按钮,在视图中用鼠标勾画 “白点” 集中区域。继续单击 Start 按钮查看选择的点是否集中,如果点不集中,选择 Class>Items 1:20>White,选择散落的点删除。

(10)在散点图中单击右键,选择 New Class,新建一个样本区,重复第(8)步,选择足够多的样本区。











(15)在波谱曲线显示面板,将波谱分析得到的地物名在 Name 中输入。
(16)同样的方法,识别剩下的波谱,最后结果如下图所示。



2.1.2 第二步:波谱识别
(1)在 Toolbox 中,打开 / Classification/Endmember Collection 工具,在文件对话框中选择高光谱数据。

(2)在 Endmember Collection 面板中,选择 Import >from Plot Windows。将显示的端元波谱选中,点击 OK。



(3)在 Endmember Collection 面板中,选择 Algrithm >Spectral Angle Mapper 波谱角识别方法。

(4)选择 Select All 将所有端元波谱全部选中,点击 OK。
(5)单击 Apply,运行波谱角法制图。
(6)在 Spectral Angle Mapper 面板上,设置波谱角阈值:0.05,选择结果输出路径和名称。

2.1.3 第三步:浏览结果及分类后处理
得到的结果就是 ENVI 的分类文件的格式,自动加载显示在图中。

2.2 波谱沙漏工具
以上高光谱物质识别的步骤都集成在波谱沙漏工具,采用向导式的操作,下面介绍用该工具进行高光谱物质识别的流程。
(1)打开高光谱数据。
(2)打开 / Spectral/Spectral Unmixing/Spectral Hourglass Wizard,波谱沙漏工具,显示了工具说明,点击 Next。

(3)点击 Select Input File,选择高光谱数据,点击 Next。

(4)设置 MNF 变换参数,默认是全部波段输出,点击 Next。

(5)查看 MNF 变换结果,点击 Next。

(6)计算数据维数,点击 Calculate Dimensionality,在 Spatial Coherence Threshold 面板中,设置 Threshold Level 为 0.8(即选择信息量达到 80% 的波段数量),回车,点击 OK,数据维数自动修改为 17(即前 17 个波段的信息量就达到了 80%),点击 Next。

(7)选择端元波谱方式,Drive Endmembers from Image?Yes 或者 No。如果选择 No,则需要从外部文件中获取端元波谱;如果选择 Yes,则从图像上获取端元波谱。这里我们选择 Yes,单击 Next。

(8)计算纯净像元指数,需要设置三个参数:
- 迭代次数(Number of PPI Iterations)
设定数据被映射到随机向量的次数。迭代次数越多,ENVI 越能较好的发现极值像元。因此要平衡迭代次数与所用时间的关系。每次迭代所需的时间是由 CPU 和系统的配置决定的。通常为高光谱数据制图时,需要上千次的迭代。运行中的迭代次数显示在图像头文件的描述行中。
- PPI 阈值(PPI Threshold Value)
以数据位数为单位键入一个阈值。例如:阈值为 “2”,则只有 DN 值与极值像元的差值大于两位数的像元才被标为极值。该阈值在影射向量的末端选取像元。阈值应是数据噪声等级的 2-3 倍。例如,对于 TM 数据,它的噪声通常小于 1 DN,因此阈值用 2 或 3 即可。当用包含标准化噪声的 MNF 数据时,1 DN 等于 1 标准差,因此阈值用 2 或 3 即可。较大的域值将使得 PPI 找到更多的极值像元,但是它们不可能是 “纯” 的端元。
- 最大使用内存(PPI Maximum Memory use)
默认是 10M,可根据内容大小自行调整。
(9)迭代次数和 PPI 阈值都按照默认值,使用最大内存设置为 1000M,单击 Next。



(10)这一步是选择 PPI 的个数,以便在 N 维散点图中选择波谱端元。默认是 10000 个 PPI 纯净像元,点击 Next。
(11)在 N 维可视化空间,自动选择了部分端元,可以手动修改或者重新收集部分端元波谱。直到在每个角度下,各类端元都是离散的。

(12)在流程化工具面板中,点击 Retrieve Endmembers,Endmember List 下面就列出了选择的几类端元,点击 Plot Endmembers,绘制出几类端元的波谱曲线。


(13)点击 Start Spectral Analyst,选择自带的标准矿物波谱库...\Program Files\Exelis\ENVI51\classic\spec_lib\usgs_min \usgs_min.sli,在 Spectral Analyst 面板上,选择 Options>Edit (x,y) Scale Factors,设置 X Data Multipliter 为 0.001,设置 Y Data Multipliter 为 0.0001,点击 OK,在 Spectral Analyst 面板上,单击 Apply 按钮,依次选择每类端元进行波谱分析,在 Endmenber List 中选中该类,点击 Edit Names,名称改为得分最高对应的地物;若是得分太低,可直接将该类端元删除,最后得到端元识别的结果。










(14)点击 Next,是否输入其他的端元波谱,默认为 No,如果选择 Yes,则会打开波谱收集工具,这里按照默认 No,点击 Next。

(15)提供了三种高光谱制图的方法:SAM 光谱角法、MTMF 以及 Unmixing 方法,这里选择 SAM 方法,最大光谱角度阈值设置为 0.05,点击 Next。

(16)查看分类的结果,(若是结果不理想,可以点击 Prev,调节阈值或者选择其他分类方法),点击 Next;点击 Finish。完成光谱分析,最后打印出了流程化操作过程的记录,可以 File >Save Text to ASCII,保存为文本文件,以供查看。



