以一景2014年7月26日获取的Hyperion高光谱数据为例,介绍了在ENVI下基于Workshop补丁的Hyperion数据预处理操作流程,主要包括:数据打开、未标定及受水汽影响严重波段剔除、坏线去除及条纹修复、Smile效应校正以及FLAASH大气校正等。

1.配置插件

补丁下载地址、参考教程、辅助数据下载地址:http://pan.baidu.com/s/1sjDPyzj

安装:将hyp_wshop.sav文件拷贝至ENVI Classic(4.8/5.0/5.1/5.2均可)扩展文件夹save_add下即可,默认安装路径:C:\Program Files\Exelis\ENVIxx\classic\save_add

配置完后,打开ENVI Classic在菜单栏最后可看到新增加的Workshop菜单,对Hyperion的预处理即在该菜单下进行。

 

高光谱raw数据集导入python 高光谱数据预处理方法_List

解压辅助数据Ancillary Data.zip文件,解压后可看到包含4个文件夹和一个文本文件,这些文件在接下来的处理中会依次用到。如下图:

高光谱raw数据集导入python 高光谱数据预处理方法_提示窗口_02

2.Hyperion数据下载及命名格式

为了后面处理的方便,下载影像时建议选择L1R级别的影像,而不是L1GST,虽然L1GST级别比L1R高,但使用该插件做预处理时有诸多不便,比如坏线去除等。


下载的原始影像压缩文件命名格式说明如下:

EO1SPPPRRRYYYYDDDXXXML

EO1:卫星

S:传感器(A=ALI传感器,H=Hyperion传感器)

PPP:WRS列号

RRR:WRS行号

YYYY:影像获取年份

DDD:影像获取日期(儒略日)

X:Hyperion传感器状态(0=关,1=开)

X:ALI传感器状态(0=关,1=开)

X:AC传感器状态(0=关,1=开)

M:模式(N:Nadir,P:Pointed within path/row,K:Pointed outside path/row)

L:影像长度(F:全景,P:Partial scene,Q:Second partial scene,S:Swatch,另外有一些字母可能为了保持IDs的不同)

※详细说明可参考原始影像文件夹中README.txt文件。

3.预处理流程

启动ENVI Classic,以下处理步骤在ENVI4.8/5.0/5.1/5.2版本下均可进行。

(1)打开影像

由于下载的原始影像是压缩文件(本例中为EO1H1240302014207110KF_1R.ZIP文件),所以首先对其进行解压,解压后文件夹包括6个文件:一个元数据文件(.MET),一个HDF数据集文件(.L1R),一个hdr头文件(.hdr),一个辅助文件(.AUX),一个美国联邦地理数据委员会标准元数据文件(.fgdc)和一个README.txt文件。如下图:

 

高光谱raw数据集导入python 高光谱数据预处理方法_高光谱raw数据集导入python_03

依次File → Open External File → EO1→ HDF,选择*.L1R文件打开,如下所示:

高光谱raw数据集导入python 高光谱数据预处理方法_高光谱raw数据集导入python_04

高光谱raw数据集导入python 高光谱数据预处理方法_提示窗口_05

(2)条纹修复及坏线去除

依次Workshop→Apply Bad Pixel List,弹出Calibrating with an ascii file对话框,点击左下方Go按钮:

 

高光谱raw数据集导入python 高光谱数据预处理方法_提示窗口_06

弹出Select image to calibrate对话框,选择待处理影像:

 

高光谱raw数据集导入python 高光谱数据预处理方法_List_07

点击Spectral Subset按钮打开File Spectral Subset对话框,点击Select All按钮将所有波段全部选中(Number of items selected从189变为242),下一步操作时统一剔除,点击OK按钮,回到Select image to calibrate窗口,再次点击OK按钮:

高光谱raw数据集导入python 高光谱数据预处理方法_提示窗口_08

弹出OK to get on with fixing the Bad Pixels?(Y/N)提示窗口,选择是(Y):

高光谱raw数据集导入python 高光谱数据预处理方法_txt文件_09

弹出Select Bad Pixel List(.txt)file对话框,找到辅助数据文件夹下bad_pixel_list_esri.txt文件,选中,点击打开:

高光谱raw数据集导入python 高光谱数据预处理方法_txt文件_10

弹出File Data OK to Apply to the Image?提示窗口,点击是(Y):

 

高光谱raw数据集导入python 高光谱数据预处理方法_List_11

弹出Select output image name窗口,选择保存位置,文件名默认(可自设),点击打开按钮:

高光谱raw数据集导入python 高光谱数据预处理方法_List_12

弹出Fixing Bad Pixels进度条窗口,等待运行完毕,自动加载结果到Available Bands List窗口:

高光谱raw数据集导入python 高光谱数据预处理方法_提示窗口_13

(3)未标定及水汽吸收严重波段剔除

依次Workshop→Apply Gain/Off with ASCII file,弹出Calibrating with an ascii file对话框,点击Go按钮;弹出Select image to calibrate对话框,选择上一步处理后的文件(本例中为EO1H1240302014207110KF_bpfix.img),点击OK;弹出弹出OK to get on with fixing the Bad Pixels?(Y/N)提示窗口,选择是(Y);弹出Select gain/offset(.txt)file对话框,找到辅助文件文件夹下Recal_242to179Band.txt文件,选中,点击打开按钮:

高光谱raw数据集导入python 高光谱数据预处理方法_txt文件_14

弹出File Data OK to Apply to Image?提示窗口,选择是(Y):

高光谱raw数据集导入python 高光谱数据预处理方法_txt文件_15

弹出Select output image name对话框,点击打开按钮:

高光谱raw数据集导入python 高光谱数据预处理方法_提示窗口_16

弹出Applying gains & offsets对话框,等待运行完毕,自动加载到Available Bands List窗口:

 

高光谱raw数据集导入python 高光谱数据预处理方法_高光谱raw数据集导入python_17

(4)D_Streak

依次Workshop→Column stats d_streak,弹出Column Statistic w/wo option to d_streak对话框,点击Go按钮;弹出Select file to get Column Stats对话框,选择上一步处理结果(本例中为EO1H1240302014207110KF_bpfix_cal.img文件),点击OK;弹出OK to get on and compute the statistics?(Y/N)提示窗口,点击是(Y),弹出Accumulating Column Statistics进度条窗口:

高光谱raw数据集导入python 高光谱数据预处理方法_txt文件_18

等待执行完毕,弹出Keep on with the outliers persent?(Y/N)提示窗口,点击是(Y);弹出Save the statistics in a file?(Y/N)提示窗口,点击是(Y);弹出Select file for ascii output of column stats对话框,选择保存位置,点击保存按钮:

高光谱raw数据集导入python 高光谱数据预处理方法_提示窗口_19

弹出Statistics Completed提示窗口,点击确定即可;接着弹出De-Streaking Apporach – Global or Local?对话框,选择Global选项,点击OK:

高光谱raw数据集导入python 高光谱数据预处理方法_txt文件_20

弹出D_Streaking using Global statistics对话框,选择Linear选项,点击OK:

高光谱raw数据集导入python 高光谱数据预处理方法_txt文件_21

弹出Get Output Image Size对话框,参数默认,点击OK;弹出Select name for output image对话框,选择文件保存位置,点击保存:

高光谱raw数据集导入python 高光谱数据预处理方法_提示窗口_22

弹出De_Streaking the image data对话框,运行完毕后会自动加载到Available Bands List窗口中:

高光谱raw数据集导入python 高光谱数据预处理方法_txt文件_23

(5)Smile效应校正

依次Workshop→Interpolate Wavelengths(de_smile),弹出Hyperion L1B1 input file对话框,选择上一步处理结果(本例中为EO1H1240302014207110KF_bpfix_cal_Global_Linear.img文件),点击OK;弹出De_smile output file对话框,选择输出到文件,点击按钮选择保存路径(此处路径不会自动识别,手动找到并输入文件名,下图所示),点击OK:

 

高光谱raw数据集导入python 高光谱数据预处理方法_List_24

返回De_smile output file对话框,点击OK:

 

高光谱raw数据集导入python 高光谱数据预处理方法_List_25

弹出Select Column wavelengths(CWL)(.txt)file对话框,选择辅助文件夹下cwl(179).txt文件,点击打开按钮:

 

高光谱raw数据集导入python 高光谱数据预处理方法_高光谱raw数据集导入python_26

接着弹出Select Common wavelengths(CA_CWL)(.txt)file对话框,选择辅助文件夹下avwvl(179).txt文件,点击打开按钮:

 

高光谱raw数据集导入python 高光谱数据预处理方法_提示窗口_27

弹出Smile Correction对话框,运行完毕后(时间较上几步稍长一些)会自动加载到Available Bands List窗口中:

 

高光谱raw数据集导入python 高光谱数据预处理方法_List_28

(6)FLAASH大气校正

依次Basic Tools→Preprocessing→Calibrating Utilities→FLAASH,打开FLAASH参数设置面板FLAASH Atmospheric Correction Model Input Parameters,我们分为下面三个板块进行设置:

 

高光谱raw数据集导入python 高光谱数据预处理方法_高光谱raw数据集导入python_29

首先,点击Input Radiance Image按钮,选择上一步处理结果(本例中为EO1H1240302014207110KF_bpfix_cal_Global_Linear_Desmile.img文件),弹出Radiance Scale Factors对话框,选择Read array of scale factors (1 per band) from ASCII file选项,点击OK;弹出Enter ASCII Filename containing spectral scale factors(gains)对话框,选择辅助文件夹下179FLAASH_Scale_Factors.txt文件,点击打开按钮(下图);弹出Input ASCII File对话框,参数默认,点击OK按钮;返回参数设置面板,依次选择Output Reflectance File和Out Directory for FLAASH Files按钮,设置输出文件保存路径:

 

高光谱raw数据集导入python 高光谱数据预处理方法_提示窗口_30

然后,依次设置中心经纬度(自动识别),传感器类型(选择Hyperspectral→Hyperion)、高度(706km)、分辨率(30m),地面高程及时间信息。其中,高程依具体情况而定(可从对应地区DEM数据获取(更准确)或查询已有文献资料或从Google Earth中获取平均高程(较便捷));成像时间可从原始影像文件夹中*.MET元数据中获取(用记事本或其他文本编辑器打开,本例中为EO1H1240302014207110KF.MET文件),具体位置为HYP Start Time所在行(第8行),此处获取的时间月份和日期为儒略日形式,需转换。另一种比较简单的方法是直接查看原始影像头文件(下图),从此处获取的时间无需进行转换,比较方便。或者,也可用ENVI新版本打开Hyperion原始影像通过元数据Time属性获取时间。

 

高光谱raw数据集导入python 高光谱数据预处理方法_txt文件_31

最后,设置第三部分参数,根据实际情况设置Atmospheric Model和Aerosol Model参数;选中Water Retrieval,Water Absorption Feature会自动选中,选择1135nm,其他参数默认。全部参数设置见下图: 

 

高光谱raw数据集导入python 高光谱数据预处理方法_List_32

点击Apply按钮,弹出FLAASH Atmospheric Correction对话框,开始运行。运行过程中若出现错误,请根据错误提示进行解决,FLAASH常见错误及解决办法参考以下博客:http://blog.sina.com.cn/s/blog_764b1e9d0100pvrk.html

 

高光谱raw数据集导入python 高光谱数据预处理方法_txt文件_33

校正结果会自动加载到Available Bands List窗口中:

 

高光谱raw数据集导入python 高光谱数据预处理方法_提示窗口_34

由于前面剔除未标定及受水汽影响波段时,原始影像波段号重新从1开始排列,这里需要通过编辑通文件将其改为原始波段编号。具体操作如下:

在Available Bands List窗口中选择大气校正后的结果,右键选择Edit Header,在Edit Attributes中选择Band Names,弹出Edit Band Name values对话框:

 

高光谱raw数据集导入python 高光谱数据预处理方法_高光谱raw数据集导入python_35

单击Imprt ASCII按钮,打开Enter ASCII Filename对话框,选择辅助文件夹下band_names.txt文件,点击打开按钮,然后点击两次OK即可:

 

高光谱raw数据集导入python 高光谱数据预处理方法_提示窗口_36

(7)几何校正

利用大气校正后的结果进行Hyperion影像的几何校正,关于使用ENVI进行几何校正的操作网上很多,再次不再累赘。下图所示分别为预处理前后的影像对比(真彩色显示)。

高光谱raw数据集导入python 高光谱数据预处理方法_txt文件_37

高光谱raw数据集导入python 高光谱数据预处理方法_txt文件_38

(a)处理前

(b)处理后

至此,Hyperion的预处理工作全部结束,可以进行下一步的分析应用。