环境小卫星多光谱数据FLAASH精确大气校正方法.docx
《环境小卫星多光谱数据FLAASH精确大气校正方法.docx》由会员分享,可在线阅读,更多相关《环境小卫星多光谱数据FLAASH精确大气校正方法.docx(14页珍藏版)》请在冰豆网上搜索。
![环境小卫星多光谱数据FLAASH精确大气校正方法.docx](https://file1.bdocx.com/fileroot1/2023-1/7/964ff89b-e4d2-4c1b-bb05-9869ef468101/964ff89b-e4d2-4c1b-bb05-9869ef4681011.gif)
环境小卫星多光谱数据FLAASH精确大气校正方法
环境小卫星多光谱数据FLAASH精确大气校正方法
环境与灾害监测预报小卫星星座A、B星(简称环境小卫星,简写HJ-1A/1B)于2009年3月30日开始正式交付使用,HJ-1-A星搭载了CCD相机和超光谱成像仪(HSI),HJ-1-B星搭载了CCD相机和红外相机(IRS)。
HJ-1A/1B卫星是继我国继气象、海洋、国土资源卫星之后一个全新的民用卫星。
卫星投入使用后,对自然灾害、生态破坏、环境污染进行大范围、全天候、全天时的动态监测,对灾害和环境质量进行快速和科学评估,提高灾害和环境信息的观测、采集、传送和处理能力,为紧急救援、灾后救助及恢复重建和环境保护工作提高科学依据。
HJ-1数据应用于自然灾害、生态环境之前,需要进行几何及光谱方面的预处理。
ENVI在数据读取、图像配准、精确大气校正等方面提供了非常好的工具。
1、数据读取
目前,网上免费获取的HJ-1A/1B卫星CCD和HSI影像的分发的格式主要有两种:
CCD为Geotiff,每一个波段为一个Geotiff文件,并提供一个元数据说明(.XML);HSI为HDF5格式,也提供一个元数据说明(.XML)。
CCD相机的Geotiff格式直接可以在ENVI软件下打开,利用ENVI->BasicTools->LayerStacking工具将各个波段组合成一个文件输出。
HIS高光谱数据是以HDF5格式提供,安装ENVI的HDF5读取补丁后直接在ENVI中打开。
更为方便的方法是直接使用HJ-1数据读取补丁,下载网址为:
http:
//bbs.esrichina-.sav或拷贝sav文件到ENVI安装目录的save_add目录下,
1)启动ENVI->File->OpenExternalFile->HJ-1->HJ-1A/1BTools工具(下图)。
直接读取CCD、HIS、IRS数据,输出结果为一个多波段的ENVI标准栅格文件,并带有中心波长等信息,其中CCD数据可以直接输出定标结果(辐射亮度)。
图1.1HJ-1A/1BTools
注意此步骤中Calibration和LayerStacking选项应勾上。
如果数据是BSQ格式的,要转换成BIL或者BIP格式的。
转换方法
2)构建波谱响应函数
任何传感器在设计时都会给出严格的波段响应函数,环境小卫星也不例外。
在中国资源卫星应用中心可下载:
选择Window->StartNewPlotWindow,ENVIPlotWindow窗口中,选择File->InputData->ASCII,如图2所示,选择相应的波普响应函数
3)选择File->SavePlotAs->SpectralLibrary,将波谱曲线保存为波谱库文件。
注意此处的WavelengthUnits应选Nanometers.
4)如下图3.2所示,生成了4条曲线。
选择Edit->DataParameters,更改每一条曲线的名称:
b1,b2,b3,b4,便于区分。
2、FLAASH大气校正
启动FLAASH模块,将准备好的数据输入,注意定标后的单位是W/(m2*um*sr)与FLAASH要求的单位(μW)/(cm2*nm*sr)相差10倍关系,因此在RadianceScaleFactors中输入10缩放系数。
其他特殊参数设置主要如下:
l一般参数设置
传感器高度(SensorAltitude):
650km
像元大小(pixelSize):
30m
地面高程():
0.05km
多光谱数据参数设置
FileterFunctionFile:
选择前面生成的波谱响应文件。
大气模型(AtmosphericModel)根据经纬度和日期来定。
表1六种标准的大气模型
Latitude(°N)
Jan.
March
May
July
Sept.
Nov.
80
SAW
SAW
SAW
MLW
MLW
SAW
70
SAW
SAW
MLW
MLW
MLW
SAW
60
MLW
MLW
MLW
SAS
SAS
MLW
50
MLW
MLW
SAS
SAS
SAS
SAS
40
SAS
SAS
SAS
MLS
MLS
SAS
30
MLS
MLS
MLS
T
T
MLS
20
T
T
T
T
T
T
10
T
T
T
T
T
T
0
T
T
T
T
T
T
-10
T
T
T
T
T
T
-20
T
T
T
MLS
MLS
T
-30
MLS
MLS
MLS
MLS
MLS
MLS
-40
SAS
SAS
SAS
SAS
SAS
SAS
-50
SAS
SAS
SAS
MLW
MLW
SAS
-60
MLW
MLW
MLW
MLW
MLW
MLW
-70
MLW
MLW
MLW
MLW
MLW
MLW
-80
MLW
MLW
MLW
SAW
MLW
MLW
高级设置
其它参数参考FLAASH大气校正的参数说明。
高级设置里注意将TitleSize设置成合适的值,一般设置成100-800不等,如有发现此类问题相关报错,请试着调试TitleSize大小和图7中的ImageTitleSize大小,一般CacheSize设置成物理内存的一半,ImageTitleSize大小设置成CacheSize的一半。
图7
FLAASH大气校正常见错误及解决方法
FLAASH对输入数据类型有以下几个要求:
1、波段范围:
卫星图像:
400-2500nm,航空图像:
860nm-1135nm。
如果要执行水汽反演,光谱分辨率<=15nm(环境小卫星的光谱分辨率平均为5nm),且至少包含以下波段范围中的一个:
l1050-1210nm
l770-870nm
l870-1020nm
2、像元值类型:
经过定标后的辐射亮度(辐射率)数据,单位是:
(μW)/(cm2*nm*sr)。
3、数据类型:
浮点型(FloatingPoint)、32位无符号整型(LongInteger)、16位无符号和有符号整型(Integer、UnsignedInt),但是最终会在导入数据时通过ScaleFactor转成浮点型的辐射亮度(μW)/(cm2*nm*sr)。
4、文件类型:
ENVI标准栅格格式文件,BIP或者BIL储存结构。
5、中心波长:
数据头文件中(或者单独的一个文本文件)包含中心波长(wavelenth)值,如果是高光谱还必须有波段宽度(FWHM),这两个参数都可以通过编辑头文件信息输入(EditHeader)。
运行错误
1.Unabletowritetothisfile.Fileordirectoryisinvalidorunavailable。
没有设置输出反射率文件名。
解决方法是单击OutputReflectanceFile按钮,选择反射率数据输出目录及文件名,或者直接手动输入。
2.ACCError:
convert7
IDLError:
Endofinputrecordencounteredonfileunit:
0.
平均海拔高程太大。
注意:
填写影像所在区域的平均海拔高程的单位是km:
GroundElevation(Km)。
3.ACCerror:
avrd:
IDLerror:
Unabletoallocatememory:
tomakearray
Notenoughspace
ACC_AVRD
为了能处理大数据,ENVI采用分块计算的方式,这个提示是分块(Tile)太大了。
在高级设置里面(AdvancedSettings),tilesize:
它默认是File->preferences->miscellaneous:
cache的大小,这个值正常是1~4Mb(0背景很少的情况下);如果0背景较多,这个值还是需要设置大一些,比如100~200m。
4.ACCerror:
avrd:
Nononblankpixelsfound
IDLerror:
OPENR:
Erroropeningfile.Unit:
100,
为了能处理大数据,ENVI采用分块计算的方式,当Tile设置太小,而且有背景值(0),就会出现一个Tile中全部为0的情况,提示这个错误信息。
在高级设置里面(AdvancedSettings),tilesize:
设置稍微大一些,如100~200M等。
5.ACCerror:
lsmooth2:
IDLerror:
ACC_LSMOOTH2:
Cannotcontinuewithsmoothingcalculation
ENVI的FLAASH提供领域纠正功能,但是MODIS、AVHRR等图像分辨率比较低,领域效应区分不出来。
解决方法是在在高级设置里面(AdvancedSettings),将领域纠正(UseAdjacencyCorrection)设置为No。
6.ACCerror:
modrd5:
Nonfinitenumbersincoefficientarraycoef
xml:
namespaceprefix=ons="urn:
schemas-microsoft-com:
office:
office"/>
IDLerror:
CDRIVER4V3R2:
>>>WaitforMODTRAN4calculationto
finish…
xml:
namespaceprefix=vns="urn:
schemas-microsoft-com:
vml"/>
提示传入MODTRAN模型参数有误,常常是由于太阳高度角太小或者太大引起的。
提示这个错误之前会出现以下提示框。
解决方法是确认填写的影像中心位置经纬度信息(西经为负数、南纬为负数)、影像成像时间(格林威治时间)是否正确。
7.ACCerror:
autochan
HIS数据缺少K-T气溶胶反演的所需的波段,因此不能使用K-T方法反演气溶胶。
8、ACCerror:
autochanACC_AUTOCHAN:
Nowaterabsorptionchannelsselected
这种错误一直没模拟出来,一般是由于水汽反演、大气模型的选择和飞行时间的问题,如飞行时间使用的是北京时间等。
9、ACCerror:
avrd
IDLerror:
REBIN:
Resultdimensionsmustbeintegerfactoroforiginaldimen
这个错位一般出现在你多次执行FLAASH工程文件时,没有重新设置输出文件而选择替代的时候出现。
好的方法就是重新启动FLAASH和加载一次工程文件。
结果错误
1.结果中某一个波段或者多个波段全部为0或者负值
主要产生的原因是输入的辐射亮度数据值偏小。
可能有以下几种情况:
(1)在传感器定标的时候选择的是表观反射率(Reflectance)而不是辐射率数据(Radiance);
(2)没有做传感器定标,即没有将DN值转换为辐射率数据;
(3)选择了错误的波谱响应函数;
(4)用BandMath做了辐射亮度的单位换算,在FLAASH中导入辐射亮度数据时,ScaleFactor选择的不是1.0000。
2.结果中极大值、极小值非常多,也就是0~10000之外的值。
当选择RGB假彩色显示的时候,出现花花绿绿的情况。
辐射定标得到的辐射率数据单位与FLAASH要求的单位不一样。
可能有以下几种情况:
(1)用BandMath做了辐射亮度的单位换算,在FLAASH中导入辐射亮度数据时,ScaleFactor选择的不是1.0000。
(2)没有做单位换算。
3.结果中部分像元为负值
这个属于正常现象。
FLAASH是采用MODTRAN辐射传输模型模拟成像中的大气过程,而且很多大气属性都是通过图像来估算,加上大气组成的非均一性,即使MODTRAN4模型精度很高,也不能完全表达大气辐射传输的真实状况。
当影像上有强吸收或者高反射地物时候,就会出现部分像元为负值(如深水、高密度)或者大于10000。
解决方法可以手动修改,如用周围的像元的平均值代替,可以使用ENVI下的TheDEMEditingTool工具。
4.结果图像以RGB显示比原图像视觉效果要差,如模糊。
这个需要了解下遥感软件RGB显示机制。
遥感软件为了让遥感图像显示更加“艳丽”,方便解译,默认会对图像进行拉伸显示,一般是2%的线性拉伸。
也就是我们常常会看到图像值有两个,一个是Scrn值,也就是拉伸之后的显示值,一个是Data值,也就是原始的图像DN值。
另外一个方面,目前我们的RGB加色法显示都是基于8bit显示,也就是0~255。
FLAASH大气校正之后的结果是16bit的整型,而且存在一些极小、极大值,这些对直方图整体形状有一定的影响,影响拉伸效果。
解决方法是利用ENVI下的Interactivestretching工具,选择有效值范围进行拉伸。
还有一种情况是校正图像有很多背景值,比如经过几何校正的整景TM影像。
背景及图像边缘处的像元在大气校正之后变成负值或者0值,由于这样的像元数量多,对图像的整体拉伸影响很大。
解决方法就是将这些像元掩膜掉,如在ROITool中,利用Option->BandThresholdtoROI建立一个ROI进行图像裁剪。
5.结果图像为什么像元值大多是大于1
ENVIFLAASH考虑到数据储存和后续处理,将大气校正得到的反射率结果乘以10000变成16bit整型。
如果想让反射率结果在0~1范围,可用BandMath,表达式为b1/10000.0。