AVIRIS反射率数据简介
AVIRIS高光谱成像光谱仪采集得到的原始图像为辐亮度图像,经过校正后的L1级产品为地表辐亮度信息。但是许多时候,我们更希望知道地面目标物的反射率信息,并且这一信息应该与在地面使用地物光谱仪(如常见的ASD光谱仪)采集的反射率曲线应该一致。因此从原始的辐亮度(Radiance)图像转换生成反射率图像通常需要进行大气校正,水汽吸收校正等过程,最终消除大气传输过程中的各种干扰因素影响,得到最终的反射率曲线。需要注意的是,由于大气水汽吸收的影响,如上图所示,在特定波长波段(1400nm左右与1900nm左右)信号强度非常弱,数据信噪比差,通常会将这些波段认定为无效波段。
特别注意:由于AVIRIS服役时间较长,数据采集和处理流程应该经历过多次优化,目前官方文档中介绍反射率图像生成和描述方法中提到的部分描述文件在当前下载到的反射率文件中不存在。因此我综合多个官方文档来理解和描述当前反射率图像数据,可能存在错误。
1. 基本说明
根据官方文档的描述[1],将原始的校正后的AVIRIS辐亮度数据(Radiance Data),通过高光谱-红外图像L2级处理流程,转换生成反射率信息。该处理只针对HyspIRI Precursor Data Sets
进行,也就是说只有部分图像有对应的反射率图像。文档中具体介绍了该处理流程中的使用的算法、理论假设以及最终结果数据组织等信息。网站上列出的文档最后更新日期为2013年10月,但是在下载到的数据中,有更新版本的文档(最后更新日期为2014年8月),最主要的不同是2014年版本中删除了关于结果数据组织的内容。因为13年版本描述的数据组织方式与我下载的几景图像的数据组织完全不同,可能后续更新过,但是并没有相关文档说明。
根据AVIRIS HyspIRI preparatory campaign measurements任务中关于L2级大气校正算法的描述[2],如下图所示,从辐亮度图像到反射率图像主要经过了大气校正和残差抑制两个步骤。具体描述如下。
2. 大气校正
大气校正是基于ATREM(Atmosphere Removal Algorithm)算法进行的,该算法通过水蒸气、二氧化碳、臭氧、氮氧化物、一氧化碳、甲烷和氧气的吸收作用来反演等比例的表面反射率(scaled surface reflectance)。根据这些气体吸收模型,再结合图像的成像几何,可以联合估计400~2500nm的大气透射率。大气散射效应则通过6S模型进行估计,6S模型是利用940nm和1140nm处的水汽吸收特征来反演水蒸气柱浓度,进而估算得到朗伯体表面反射率。
在HyspIRI数据预处理流程中,还增加几个额外的特征:HITRAN 2012 line list中的块吸收,同时估计液态、气态和固态水的三相反演结果。压力高度(Pressure Altitude)则使用氧气A波段的深度进行反演,在成像目标中存在大范围高程变化和多光学路径情况下,该方法能够提高反演精度。
3. 经验校正
最终,使用实地对应位置(in situ)的目标测量结果,通过经验模型,来修正表面反射率结果。具体的,为每个波段估计一个改正系数项,使得最终机载图像的光谱曲线与实地测量的同名点地物光谱曲线尽量一致。这个改正系数存储在以.smth为扩展名的额外对应文件中。如果研究人员希望使用原始数据,那么可以通过将网站提供的校正后的图像逐波段除以该改正系数即可。
4. 实际数据简介
从网站上实际下载的一景反射率图像中可能包含数个文件,其具体含义如下表所示(注:该表格为作者结合文档与数据情况理解制成,可能存在错误
)
文件名称 | 文件含义 |
---|---|
*_corr_v1 , *_corr_v1.hdr |
ENVI格式的反射率图像,该图像为最终矫正结果。需要注意的是,该图像像素值可能为整型(我下载的2013~2015的几景图像均为整型,2018年为浮点型),其含义是将原始浮点型反射率乘以10000得到的整数部分。也就是说如果想得到反射率数据,需要将像素值除以10000即可。例如某个像素值为2500,则该像素对应的实际反射率为0.25(2500 ÷ 10000 = 0.25)。 此外文档中提到的经验改正系数存储文件*.smth在下载得到的数据包中并不存在,而在ENVI数据头文件中,存在一项名为 correction factors 的浮点数列表,其中包含n个浮点数(n为波段数量),我猜测这个应该就是文档中提到的经验改正系数 |
*_h2o_v1 ,*_h2o_v1.hdr |
这个ENVI图像文件包含三个波段数据,每个波段图像的长宽与反射率图像相同,疑似为文档中提到的水汽的三相反演结果 |
*_README_v1.txt |
这个就是反射率处理流程的官方说明文档,不同数据中该文件几乎相同,只是最后更新版本的区别。 |
参考文档
- 本文作者: 闫钊
- 本文链接: https://whuhenry.github.io/2020/05/31/AVIRIS-reflectance-data-introduction/
- 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
AVIRIS反射率数据简介的更多相关文章
- Ajax.BeginForm的异步提交数据 简介
Html.BeginForm与Ajax.BeginForm都是MVC架构中的表单元素,它们从字面上可以看到区别,即Html.BeginForm是普通的表单提交,而Ajax.BeginForm是支持异步 ...
- Salesforce 导入导出数据简介
导入数据的方式 有两种方式可以将数据导入Salesforce: 数据导入向导 Data Loader工具 Salesforce支持将csv文件中的数据导入系统. 数据导入向导 数据导入向导可以从设置界 ...
- 【原创】Thinking in BigData (1)大数据简介
提到大数据,就不得不提到Hadoop,提到Hadoop,就不得不提到Google公布的3篇研究论文:GFS.MapReduce.BigTable,Google确实是一家伟大的公司,开启了全球的大数据时 ...
- Ajax传递json数据简介和一个需要注意的小问题
Ajax传递json数据 Ajax操作与json数据格式在实际中的运用十分广泛,本文为大家介绍一个两者相结合的小案例: 项目结构 我们新建一个Django项目,在里面创建一个名为app01的应用: p ...
- Spark记录-大数据简介
什么是大数据 大数据(big data),指无法在一定时间范围内用常规软件工具进行捕捉.管理和处理的数据集合,是需要新处理模式才能具有更强的决策力.洞察发现力和流程优化能力的海量.高增长率和多样化的信 ...
- python 读写Oracle10g数据简介
1.测试环境: Centos6 X86_64python 2.6 Oracle 10g 2.安装cx_Oracle 和 Oracle InstantClient: http://www.rpmfind ...
- NoSQL数据库技术实战-第1章 NoSQL与大数据简介 NoSQL数据库的类型
键值存储数据库临时性:如Memcached.临时性的键值数据库把数据存储在内存中,在两种情况下会造成上数据的丢失,一是断电,而是数据内容超出内存大小.这种处理的好处是非常快.永久型:如Tokyo Ty ...
- NoSQL数据库技术实战-第1章 NoSQL与大数据简介 NoSQL产生的原因
NoSQL产生的原因: 关系型数据库不擅长的操作,是NoSQL应运而生的原因: 大量的数据写入操作书上写的是“大量数据的写入操作“,我理解的应该是“大量的数据写入操作”,因为大量的数据写入操作才会引起 ...
- [转载] 使用 Twitter Storm 处理实时的大数据
转载自http://www.ibm.com/developerworks/cn/opensource/os-twitterstorm/ 流式处理大数据简介 Storm 是一个开源的.大数据处理系统,与 ...
随机推荐
- GIL-Guilds(黑白灰染色)
传送门门门门门咩咩咩咩咩咩咩咩咩咩咩咩 \(这题真是扯谈!!!\) \(灰色很高级是吧,但是题目没要你把颜色全部用上去啊!!!\) \(黑色或者白色只有一个条件,但灰色需要和所有三种颜色都相邻.这么难 ...
- B - Dining POJ - 3281 网络流
Cows are such finicky eaters. Each cow has a preference for certain foods and drinks, and she will c ...
- GoF23:建造者模式
目录 概念 角色分析 实现方式 方式一 角色分析 代码编写 方式二 角色分析 代码编写 总结 优点 缺点 应用场景 建造者也抽象工厂模式的比较 建造者模式也属于创建型模式,它提供了一种创建对象的最 ...
- CSS躬行记(10)——CSS方法论
方法论是一个哲学术语,会对一系列具体的方法进行分析研究.系统总结并最终提出较为一般性的原则.CSS方法论是一种面向CSS.由个人和组织设计.已被诸多项目检验且公认有效的最佳实践.这些方法论都会涉及结构 ...
- 第一行Kotlin系列(一)kotlin按钮点击事件
按钮findViewBuId <Button android:id="@+id/mButton4" android:layout_width="wrap_conte ...
- [c++ IO加速]快速输入输出
自己封装的FastIO类,效率虽有所损失,不过实用性提高很多. 测试,写10000000个整数(86M): printf 2.7s cout 27s FastIO 1s 测试,读10000000个整数 ...
- [hdu4498]离散化,simpson求积分
题意:,求这个函数在[0,100]上的图像的长度. 思路:采用离散化的思想,求出所有交点 ,把交点排序,把[0,100]分成若干个小区间,这样原函数在每个小区间上的图像属于某一个二次函数或者是一条直线 ...
- [hdu4497]分解质因数
题意:求满足gcd(x,y,z)=G,lcm(x,y,z)=L的x,y,z的解的个数. 大致思路:首先如果L % G != 0那么无解,否则令u = L / G,问题变为,gcd(r,s,t)=1,l ...
- flink优化总结
一.高性能Flink SQL优化技巧 1.Group Aggregate优化技巧 开启MicroBatch或MiniBatch(提升吞吐) MicroBatch和MiniBatch都是微批处理,只是微 ...
- (Python基础教程之十二)Python读写CSV文件
Python基础教程 在SublimeEditor中配置Python环境 Python代码中添加注释 Python中的变量的使用 Python中的数据类型 Python中的关键字 Python字符串操 ...