基于6s模型的遥感影像大气校正方法

基于6s模型的遥感影像大气校正工程化实现

目的:针对光学遥感影像(Landsat-8、Sentinel-2、GF-1、GF-2)的大气校正自动化实现方法,大多数是使用ENVI的FLASSH模块进行大气校正,但是该模块工程化起来比较麻烦,虽然现在老美提供了FLASSH模块的调用接口。但是当需要对大规模数据进行处理时,尤其是在linux环境下,ENVI对环境配置特别麻烦,此外该模块的处理速度相对较慢。因此在实际工作中选用了开源的6s模型,来进行大气校正批处理。

一、大气校正的作用及原理

1.1 几个重要的概念

  数字量化值(Digital Number: DN):用来描述还没有校准到具有意义单位的像素值。是对卫星接收到辐射进行量化的一个数值,大小与量化深度有关,比如8bit量化,Max(DN)=255,无单位,无实际意义。
  辐射亮度(Radiance):是指单位面积、单位波长、单位立体角的辐射通量,辐射亮度值有单位标识,如W/cm2.μm.sr(瓦特/平方厘米.微米.球面度),将未定标的DN图像转换成辐射亮度图,只需要一个线性转换公式即可,需要用到偏移和增益两个参数,一般在元数据文件中可以获取.
  表观反射率(Top of Atmosphere Reflectance):又叫做卫星上反射率,大气表层反射率,是未经大气校正的,卫星上接收到的反射率。
  地表反射率:是地物真实反射率,由表观反射率去处大气影响后得到的反射率。可以通过辐射传输模型、统计模型等去除大气影响。
  大气校正目的:直接获取得到的影像为像素中存储的为没有实际意义的DN值,由于大气对太阳辐射和地面反射的散射和吸收,使原始影像存在失真情况,造成影像清晰度和对比度下降,反射率、辐射亮度等相关物理量出现偏差,因此需要进行大气校正以还原目标物的真实反射率。

二、大气校正的工程化实现

2.1、开发环境:使用的是conda、pycharm。具体安装过程可以百度或谷歌

2.2、安装操作6s模型的python包和接口

图像处理模块:conda install gdal
6s模型接口模块:pip install py6s
6s模型的python版本:pip install sisx
矩阵操作模块: numpy
辅助模块: re、shutil、glob

2.3、模型及参数介绍

2.3.1、模型

  5s模型:1986年,法国里科技大学大气光学实验室Tanre等人为了简化大气辐射传输方程,开发了太阳光谱波段卫星信号模拟程序5S(SIMULATION OF THE SATELLITE SIGNAL IN THE SOLAR SPECTRUM),用来模拟地气系统中太阳辐射的传输过程 并计算卫星入瞳处辐射亮度。
  6S模型(Second Simulation of the Satellite Signal in the Solar Spect-rum):1997年,美国马里兰大学地理系Eric Vemote对5S进行了改进, 发展到6S。6S模型可以很好地模拟太阳光在太阳-地面目标-传感器的传输过程中所受到的大气影响。相对于5S模型,6S模型考虑了地面目标的海拔高度、非朗伯平面的情况和新的吸收气体种类(CH4,N2O,CO)。通过采用theartapproximation近似算法和SOS运算法则,提高了瑞利和气溶胶散射作用的计算精度。光谱步长提高到了2.5nm。6S模型建立在辐射传输理论基础之上,模型应用范围广,不受研究区特点及目标类型等的影响。

2.3.2 参数介绍

1、几何参数
  6s模型提供的传感器类型有TM、MODIS等,目前我们经常使用的GF1、2、Landsat8、Sentinel传感器都没有,因此需要自己设置几何条件参数,主要包括太阳高度角、太阳方位角、卫星高度角、卫星观测角、影像获取日期(月、日)等,这些参数都可以在元文件中获得。
2、气候类型
  气候类型主要包括:NoGaseousAbsorption、Tropical、Midlati-tudeSummer、MidlatitudeWinter、SubarcticSummer、SubarcticWinter、USStandard1962。可以根据影像的时间和卫星自动选取气候类型(FLAASH一致)。如下表

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 MLW MLW MLW

3、气溶胶类型
6s模型中气溶胶类型主要根据影像中地物类型分为:NoAerosols(非气溶胶)、Continental(陆地)、Maritime(海洋)、Urban(城市)、Desert(沙漠)、BiomassBurning(生物体燃烧)、Strat-ospheric(平流层)。在自动化程序中统一选择continental气溶胶类型。
4、能见度or550nm气溶胶光学厚度
能见度指的是影像获取当天大气条件,也可以使用550nm气溶胶光学厚度代表,实际的气溶胶厚度或能见度难以获得,在FLAASH中设置为默认的40km,在使用6s模型时与FLAASH保持一致都设置为40km,对应的550nm气溶胶厚度为0.14497,Py6s接口有个bug,就是只能用气溶胶厚度,而不能用能见度。
5、目标高度
影像的平均高程可以借助DEM和影像头文件中的位置信息计算得到。在自动化工程中使用的是分辨率为2km的全球DEM数据。
6、传感器高度
6s模型传感器高度根据遥感平台分为三类:-1000代表卫星传感器;0代表地面传感器;0~100km代表航空遥感平台的传感器如无人机、自由气球等。在自动化工程中选择卫星传感器。
7、光谱响应函数
6s模型有自带的影像光谱响应函数,Py6S提供了Landsat8和Sentinel的光谱响应函数,但是没有国产卫星的光谱响应函数,而且6s模型对于输入的光谱响应函数要求为间隔2.5nm,因此需要对官方提供的光谱响应函数重新插值。自己制作的高分1、2的光谱相应函数已经添加到工程中
8、大气校正模式
6s模型的大气校正模式分为三类:不做大气校正,辐射亮度大气校正、辐射率大气校正。其中辐射亮度大气校正模式指的是输入数据为辐射亮度,辐射率大气校正模式指的是输入数据为大气表观辐射率。需要注意的是目前的Py6S接口只提供辐射亮度大气校正,而目前Sentinel-2官方提供的是表观辐射率数据,因此在用Py6s对Sentinel-2影像做大气校正时需要先将表观辐射率转换成辐射亮度。

2.4、结果验证

2.4.1、植被光谱曲线

基于6s模型的遥感影像大气校正方法_第1张图片

Landsat8 三种模式下植被光谱曲线(原始、FLAASH校正、6S校正)

  由上图可以看出经过大气校正后的影像的植被光谱曲线呈现出正常的变化趋势。而且对于同一点,两种模式的校正结果接近。

2.4.2、植被归一化指数(NDVI)对比

基于6s模型的遥感影像大气校正方法_第2张图片基于6s模型的遥感影像大气校正方法_第3张图片基于6s模型的遥感影像大气校正方法_第4张图片
      原始NDVI             6s模型校正            FLAASH模型校正
基于6s模型的遥感影像大气校正方法_第5张图片

NDVI直方图曲线对比图

  由NDVI图可以看出经过大气校正后的NDVI指数增大了,这也是NDVI最大合成的原理,根据NDVI直方图曲线可以看到两种校正方法得到的结果很接近。综上,使用6s模型对影像有明显的校正结果,而且大气校正效果与常用的FLAASH模型接近。

2.5、具体操作及其代码(参见github):大气校正工程化代码

主要写了6s模型对landsat8、sentienl-2和高分1、2等常用影像的大气校正。具体操作可以看README。

更新-2019/12/25

针对标准格式的sentinel-2影像读取做了修改,详细说明见github。

更新-2020/1/17

1、根据文献和在评论区的同学建议,高分影像元文件中的天顶角实际为高度角,需要用90减去该值才得到真正的天顶角。
2、更新了高分影像2018、2019年的辐射定标参数。

更新-2020/3/26

2018年GF1号卫星又增加了B、C、D三颗卫星,原始代码写的时候还没有这三颗星,因此在自动判断卫星类型和传感器类型时会出错,本次修改了这个问题,同时在配置文件中增加了B、C、D三颗星2018、2019年的校正参数,光谱响应函数目前暂时还是用旧的代替。

更新-2020/3/30

对WFV和PMS传感器类型的判断做了修改,之前的代码在做传感器判断的逻辑是,首先按“—”来分割影像名,取第二个字符串来判断传感器是WFV还是PMS,实际上WFV有WFV1、WFV2、WFV3、WFV4,PMS分PMS1和PMS2,因此需要先取前三个字符,再做传感器的判断。

更新-2020/6/20

如果大家对某些传感器的需求比较多的话,可以在评论区留言,后续会持续添加一些新的传感器支持,别忘了点赞加关注哦。

更新-2020/6/30

GF1、2的辐射定标参数来自于资源卫星中心官网,地址是http://www.cresda.com/CN/Downloads/dbcs/index.shtml。参数更新会延迟一年,今年最新只能看到上一年的参数。

你可能感兴趣的:(遥感图像处理)