ENVI 5.3下Landsat预处理全流程:条带去除、辐射定标与FLAASH大气校正
2026/9/15 16:00:20 网站建设 项目流程

做遥感的人基本都遇到过这么个场景:千辛万苦下载下来的Landsat影像,打开一看,一道一道的黑色条纹像拉链一样横在画面上,心里瞬间凉了半截。这是Landsat 7的老毛病,条带问题。就算数据肉眼看着挺正常,你也别高兴太早——如果不做辐射定标、大气校正,拿DN值直接算植被指数或者做分类,结果往往会被各种传感器响应差异和大气干扰带偏,甚至错得离谱。所以“条带去除、辐射定标、大气校正”这三个词,其实是Landsat预处理绕不开的三板斧。

这篇我把自己在ENVI 5.3里的完整操作流程写清楚,包括每个工具在哪、参数怎么填、为什么这么填、填错了会出什么妖蛾子。文章适合刚接触ENVI的师弟师妹,也适合处理过几景影像但总在某些步骤上卡壳的老油条。反正我这些年踩过的坑,尽量都给你填上。

1. 一步都不能乱的预处理流程:先想清楚再做

1.1 这三步到底在干什么

很多人第一次拿到Landsat影像,打开ENVI就急着点工具,结果做到一半发现顺序错了,前面全白干。所以在我讲具体操作之前,你先花两分钟把这三步的逻辑关系捋明白。

条带去除解决的纯粹是Landsat 7 ETM+传感器的物理故障问题。2003年5月31日之后,Landsat 7的扫描线校正器(SLC,Scan Line Corrector)失灵,导致扫描成像时,相邻扫描条带之间出现重叠不足甚至缺失的情况,影像上呈现出规律的楔形缝隙,也就是我们说的“条带”或“拉链纹”。这种缝隙在视觉上很难看,更影响后续分析和制图,所以第一步就要处理它。

辐射定标做的事,是把传感器记录的DN值(Digital Number,灰度值)转换成具有物理含义的辐射亮度值或表观反射率。DN值是一个无量纲的相对值,不同传感器、不同增益状态、甚至不同时间,同一个DN值对应的真实辐射能量可能完全不同。如果不做定标,不同影像之间根本没有可比性。

大气校正则是把传感器接收到的表观反射率,进一步换算成地表实际反射率。太阳辐射在到达地表和返回传感器的过程中,会被大气分子、气溶胶吸收和散射,导致信号里混入大量“非地表”的信息。FLAASH这类大气校正工具,就是通过大气辐射传输模型把这些干扰估算出来并扣除掉,让最终拿到的反射率尽量接近地表真实情况。

这三步之间的先后顺序不是随便定的。条带去除最好放在最前面,因为Landsat Gap Fill插件是基于DN值进行局部回归和插值的,而且早期插件对输入文件的单位、数据类型有要求,直接用原始DN数据最稳妥,也最不容易出幺蛾子。辐射定标一定要在大气校正之前,因为FLAASH的输入必须是辐射定标后的辐亮度数据,单位是W/(m²·sr·μm)。你要是拿DN值直接喂给FLAASH,模型根本没法算,报错还算轻的,万一算出来一堆负值,那你才真叫一个头大。

1.2 正确流程顺序与数据准备

我在ENVI 5.3里的标准处理链路是:

  1. 用File > Open As > Landsat 打开Landsat L1级原始影像(DN值数据)
  2. 对Landsat 7数据做条带去除(Gap Fill)
  3. 对去条带后的影像做辐射定标(Radiometric Calibration),输出辐亮度
  4. 对辐亮度数据做FLAASH大气校正,输出地表反射率

这套流程顺序,我强烈建议你不要打乱。有朋友试过先辐射定标再去条带,确实也能跑通,但Gap Fill插件在输入辐亮度数据时,往往需要对参数做额外调整,而且部分版本对非DN数据的支持并不好,容易在地物灰度范围变化后产生新的插值伪影。所以老老实实按顺序来,才是最大程度减少意外的方式。

数据准备阶段还有几个细节值得注意:

  • MTL文件一定不能丢。Landsat数据包里那个MTL.txt文件里存放着影像获取时间、太阳高度角、增益偏置、经纬度等关键信息,ENVI在辐射定标和FLAASH大气校正时都要依赖它。如果你提前裁剪过大影像,裁剪后的文件很可能不保留MTL信息,后面定标就会因为缺乏系数而出错。所以我的习惯是:先做预处理,后做裁剪。等大气校正完拿到地表反射率了,再按研究区边界裁剪,这样最省心。
  • 处理好一条影像的数据量。Landsat 8多光谱波段全分辨率下大概要占几百MB内存,做FLAASH时还会产生大量中间文件,请确保磁盘剩余空间充足,尤其是系统盘。我试过因为C盘满了导致FLAASH跑到一半突然闪退,前面半小时全白干。
  • 建议把所有原始数据和中间产物分目录存放。我的个人习惯是建一个以影像ID命名的根目录,下面再分L1、GapFill、Rad、FLAASH四个子目录,每步输出都落到对应文件夹。这样后续找数据方便,批处理时也可以用一个通配符把文件名串起来,省很多事。

2. 条带去除:把Landsat 7的“拉链纹”补回来

2.1 条带是怎么来的

这一节的内容,主要针对Landsat 7 ETM+数据。Landsat 5 TM和Landsat 8 OLI/TIRS都没有SLC故障,所以你处理这两种数据时,可以跳过条带去除这一步。

SLC故障的特点是:影像中间区域的数据相对完整,越往边缘,缝隙越宽,数据缺失越严重。原理解释起来很简单,ETM+的扫描镜是靠摆动来逐行扫描地面的,SLC负责把每次扫描的条带精确拼接起来。SLC坏掉之后,扫描条带彼此错位,一部分地面被漏掉,形成周期性出现的楔形空带。

Landsat 7在SLC故障后仍然持续采集数据,直到现在也有大量应用。很多研究区在某个时间窗口里只有L7数据可用,所以条带去除这个操作,在时序分析、土地利用变化研究里非常常见。

2.2 用LANDSAT Gap Fill恢复条带数据

ENVI 5.3处理条带,最经典的工具是Landsat Gap Fill插件,也就是网上常说的landsat_gapfill.sav。这个插件不是ENVI自带的,需要单独下载,然后放到ENVI 5.3安装目录下的extensions文件夹里。放好之后重启ENVI,在Toolbox中搜索“Gap Fill”或者在菜单中找到Landsat > Gap Fill,就能看到工具入口。

如果你的插件文件放进去后还是找不到,我遇到过一种情况:ENVI 5.3如果处于正在运行的状态,它不会自动扫描新的扩展插件,必须完全关闭再重新打开。另外注意插件文件后缀,老版本是.sav,新版本可能要求.pro编译,ENVI 5.3用.sav版本是没问题的。

工具打开后,界面大概是这样的:

  • Input Landsat Image:选择有条带的Landsat 7影像,一般选择多光谱波段,可以排除热红外波段。如果你用的是File > Open As > Landsat > Landsat 7打开的L1数据,这里会自动识别波段集合。
  • Input Fill Image:用于填补条带区域的参考影像。如果有同区域、接近时相的Landsat影像,选它效果最好;如果没有,也可以选择同一景影像的其他波段数据作为参考,或者直接使用单景数据交ENVI用局部回归方式自行预测。但实测下来,有合适的“填缝影像”时效果远比单景自插值好。
  • Adjust Pixel Size:一般建议选Yes。因为Landsat 7的多光谱波段分辨率是30米,但全色波段是15米,如果不做像素大小统一,后面计算时会出现几何不同步。
  • Calibration Step:这是迭代校准的步长参数,数值越小计算越精细,但耗时也越长。经验值通常在5到10之间。我处理过几十景L7数据,默认值如果没被我改过,一般都能得到可以接受的结果。
  • Gap Pixels:判断“空隙”的阈值,当某块区域的缺失像元数量超过这个阈值时才被视为需要补缝。设得太小会把正常地物误判为缝隙,设得太大则补不干净,要根据影像中条带的实际情况调整。
  • Output File:指定输出路径和文件名,建议命名为xxx_gapfill.dat,保留原文件的同时方便后续环节引用。

提交任务后,ENVI会在进度条里显示处理状态。条带越宽、像元越多、选择的自適應窗口越大,处理越慢。一景Landsat 7全波段数据大概需要跑几分钟到十几分钟不等,头一次跑别着急。

处理完成后,把输出影像加载进来跟原始影像对比,条带区域已经被填补,地物纹理过渡自然,看不出明显的拼接痕迹,说明这一关算是过了。

2.3 条带去除避坑要点

条带去除看着简单,实操中还是有几个值得提醒的点:

  1. 不要在有云区域附近过分依赖条带填补。云和云的阴影会改变区域内的光谱统计特征,而Gap Fill本质上是对局部像元值进行回归和插值,如果参考区域内正好有云干扰,填补出来的条带区域会产生明显的光谱异常。我的经验是,如果条带刚好穿过云区,宁可在后续处理中把云和云影一起掩膜掉,也不要强行去靠插值“修复”。
  2. 填补后的条带区域,在定量分析中要格外小心。Gap Fill恢复的毕竟是通过回归预测出来的近似值,不是传感器实测值。做分类、面积统计可以,但要是拿去做高精度的高光谱反演或者植被参数定量化,务必要对条带区域单独评估一下误差。
  3. 多时相分析中,条带区域建议统一掩膜。如果时间序列中的每一景L7影像都带了条带,而这些条带的位置是相对固定的(SLC故障后扫描错位模式基本稳定),各时期条带区域叠加后,可以生成一个固定的掩膜,分析时统一排除。这样能防止不同时期的条带补缝效果不同,对变化检测结果造成干扰。
  4. 插件版本和文件类型兼容性问题。如果你是用GeoTIFF直接打开,而不是Open As Landsat,插件有可能报“File not recognized”的错误。解决办法是先用File > Save As,把GeoTIFF转成ENVI标准格式(.dat文件),再运行Gap Fill。

3. 辐射定标:把灰度值换算成物理量

3.1 为什么不能跳过辐射定标

很多GIS背景的人会觉得:ENVI里直接拿DN值算NDVI,出来的图看着也挺正常的,为什么非要费劲做辐射定标?

问题出在“看着正常”这四个字上。DN值本身只是一个量化后的数字,它背后对应的辐射能量大小,取决于传感器的增益、偏置、波长响应函数、太阳高度角、日地距离等一系列因素。同一块地,如果你用Landsat 5和Landsat 8同时观测(虽然实际做不到同时,但原理一样),即使地表反射率完全相同,两景影像里对应像元的DN值也绝对不一样。如果拿DN值直接做时间序列分析,这个系统性差异会完全淹没真实的地表变化信号。

辐射定标之后,影像每像元的值变成了具有物理单位的辐射亮度(Radiance)或表观反射率(Reflectance)。这样不同传感器、不同时相的影像才真正具备了可比性,定量遥感的后续操作也有了可靠的数据基础。

3.2 ENVI里的Radiometric Calibration完整操作

在ENVI 5.3中,辐射定标工具的位置在Toolbox里,路径是:

Toolbox > Radiometric Correction > Radiometric Calibration

打开之后,首先选择输入文件。注意,如果你已经处理过Landsat 7条带,这里要选择的是你去条带后输出的那个文件,而不是原始L1数据。选文件时,ENVI会弹出一个文件波段信息框,这里默认会列出这个文件里的所有波段。Landsat 5/7的多光谱数据一般包含6个反射率波段(B1-B5、B7)加1个热红外波段(B6),Landsat 8则包含OLI的8个波段(B1-B7、B9)加TIRS热红外波段。

处理的时候,建议在波段选择框里只保留反射率波段,把热红外波段单独拿出来。原因在于,热红外波段的定标单位是亮温(Kelvin),跟可见光近红外波段的辐亮度或反射率不是同一套物理量。混在一起处理,输出文件的量纲关系会变得混乱,后面FLAASH大气校正还要求输入文件必须是辐亮度,一旦混入亮温波段,FLAASH直接报错。

接下来是几个关键参数:

  • Calibration Type(定标类型):有三个选项——RadianceReflectanceBrightness Temperature。我把它统一设置成Radiance,因为这是下一步FLAASH输入所要求的。如果你只需要快速查看数据,不准备做大校正,选了Reflectance也算合理,但既然流程到这一步,建议一律输出辐亮度。
  • Output Data Type(输出数据类型):辐亮度一般用浮点型(Float),这样可以保留小数精度。如果你输出到整数型,数值会被截断,后续计算精度受影响。
  • Scale Factor(缩放因子):ENVI 5.3在定标辐亮度时,不同传感器版本的默认缩放系数可能不同。Landsat 8的OLI数据在定标成辐亮度时,有时候需要乘以0.1或者0.00001之类的系数,具体看数据产品说明。ENVI如果自动读取了MTL文件,一般会处理好,但你要手动检查一下输出结果的值域范围。正常的Landsat可见光波段辐射亮度值通常在0到200左右,如果发现输出值普遍在个位数或零点几徘徊,就说明缩放系数可能不对,回去检查设置。

定标结果建议命名为xxx_rad.dat。输出后我在ENVI里做的第一件事就是用Cursor Value工具检查几个典型地物(水体、植被、裸土)的辐亮度值,看是否在合理范围内。比如水体在近红外波段的辐亮度应该明显低于植被,如果数值大小关系不对,八成是波段顺序或定标系数出了问题。

3.3 定标类型与常见错误

很多教程会告诉你,辐射定标有三种输出选项,但不会告诉你它们分别用在什么场景。这里我展开说清楚:

  • Radiance(辐射亮度):传感器入瞳处的辐射能量,单位W/(m²·sr·μm)。它是大气校正的输入条件,也是我在标准流程里的第一选择。
  • Reflectance(表观反射率):传感器入瞳处的反射率,等于辐射亮度经过太阳辐照度和日地距离校正后的值。它可以在不依赖大气校正的情况下粗略比较不同时相影像,但毕竟没扣掉大气影响,严格来说只能叫“表观反射率”。
  • Brightness Temperature(亮温):热红外波段专用,单位K。用它可以直接反演地表温度,但需要注意亮温是“等效黑体温度”,跟真实地表温度之间还有比辐射率修正等步骤,不能直接画等号。

遇到最多的错误,其实就是信息丢失:

  1. 裁剪后的文件做定标失败:ENVI弹出错误提示找不到增益/偏置。原因是裁剪后MTL信息没有保留。解决方式上面说过,先定标再裁剪,或者用原始文件重新定标。
  2. 定标结果数值异常大或异常小:十有八九是输入文件的数据类型(Unsigned Int、Float等)或缩放因子没匹配上。比如GeoTIFF格式的DN数据有时是16位无符号整型,但ENVI默认按8位打开,软件会把它当成浮点或者截断,定标自然不对。
  3. 定标后显示为全黑或全白:一般是数据拉伸问题,不是定标本身出错。在ENVI里用Enhance > Linear 2%拉伸一下,能正常看到地物纹理就没问题。但如果拉伸后还是纯色,赶紧检查定标输出文件的数据范围和直方图。

4. 大气校正:用FLAASH拿到地表反射率

4.1 FLAASH的输入条件

FLAASH(Fast Line-of-sight Atmospheric Analysis of Spectral Hypercubes)是ENVI里最常用的大气校正模块,基于MODTRAN大气辐射传输模型。它的核心思路,是根据影像获取时的太阳角度、传感器角度、大气类型、气溶胶状况等参数,模拟出大气对辐射传输过程的影响,再把这种影响从影像数据中扣除。

用FLAASH之前,盲目的做法是把一幅文件丢进去乱填参数,然后等结果。但正确做法是先检查输入数据是否满足FLAASH的基本要求:

  • 必须是辐射亮度数据,单位W/(m²·sr·μm),不能是DN值,也不能是反射率。
  • 必须包含中心波长(Center Wavelength)和波段宽度(FWHM)信息。用File > Open As > Landsat打开的Landsat数据,ENVI会自动把这些信息写进头文件。如果文件由其他方式生成,比如你前面做了波段合并或者格式转换,这些信息很可能丢了。这时先右键查看File Header,确保中心波长和FWHM两列有值,没有值就手动补上,否则FLAASH分分钟报错。
  • 最好是经过几何处理的L1T或L1GT级别的数据,这样文件自带RPC信息。如果数据没有经过几何校正,FLAASH虽然也能跑,但大气参数(比如地面高程)在你手里很难匹配准确,结果精度受影响。

在ENVI 5.3里,FLAASH工具在:

Toolbox > Radiometric Correction > Atmospheric Correction Module > FLAASH Atmospheric Correction

4.2 关键参数逐个说清楚

FLAASH界面第一次打开的时候,感觉像进了飞机驾驶舱,一堆输入框让人头皮发麻。但其实每一个参数都有明确的含义,一条一条搞定并不复杂。

Input Radiance Image:选辐射定标输出的辐亮度文件。这里有个细节,如果定标后的文件包含热红外波段,FLAASH界面上会出现波段选择框让你排除热红外波段。必须先把热红外波段从列表中剔掉,只保留适合大气校正的反射辐射波段。

Output Reflectance File:输出地表反射率文件,建议命名xxx_flaash.dat

Center Latitude / Center Longitude:影像中心经纬度,单位是度。可以通过查看影像的属性信息获得,也可以用ROI工具在影像上点一个中心点,然后读取经纬度。这个参数决定了FLAASH选择哪一组大气廓线来做辐射传输计算,填偏了会影响校正精度,一般差个一两度问题不算太大,但最好不要随便填个0。我记得有人图省事直接把经纬度填成0,结果输出的反射率曲线形态全乱,还以为是传感器坏了。

Sensor Type:传感器类型,下拉菜单里有Landsat-5 TM、Landsat-7 ETM、Landsat-8 OLI等选项。选对后,ENVI会自动匹配该传感器的波段响应函数、中心波长、FWHM等参数。这一步可以省去大量手动设置,但后面还是要核对一遍,尤其是Landsat 8。

Flight Time / Date:数据获取时的格林尼治时间(GMT),年月日时分。这个时间在MTL.txt文件里有,注意Landsat产品默认给的是当地太阳时或者协调世界时,你要确认是不是GMT再填。时间填差几个小时,太阳天顶角和方位角就算错,校正结果会带明显误差。

Ground Elevation:地面平均高程(千米)。平原区填0.1左右,山区要填整个研究区的平均海拔,比如青藏高原大部分地区可以填4到5。ENVI不会自动从DEM里提取平均高程,所以这一步一定要手动调研。

Pixel Size:像元大小(米)。Landsat多光谱是30米,Landsat 8的OLI全色是15米,一定要按实际分辨率填。填错会导致最后输出的空间坐标网格对不上。

Atmospheric Model:大气模型,这是新手最容易随便选的一项。它本质上是一组大气参数廓线(温度、压力、水汽含量随高度的变化),不同纬度和季节差别很大。我按经验整理了一个表:

纬度带夏季冬季
0° ~ 20°热带Tropical热带Tropical
20° ~ 30°中纬度夏季MLS中纬度夏季MLS
30° ~ 45°中纬度夏季MLS中纬度冬季MLW
45° ~ 60°中纬度夏季MLS中纬度冬季MLW
60° ~ 90°亚极地夏季SAS亚极地冬季SAW

中国大部分中纬度地区,夏天选MLS,冬天选MLW;华南、海南这种热带区域全年用Tropical相对保险。

Aerosol Model:气溶胶模型。常见选项有Rural(乡村/大陆性)、Urban(城市)、Maritime(海洋)、Tropospheric(对流层)。这个参数描述的是大气中气溶胶的类型和组成。一般情况下,城市周边选Urban,农业区、林区选Rural,沿海区域选Maritime。如果拿不准,Rural是相对稳妥的默认选项,因为它代表的是比较常见的大陆性气溶胶状态。

Aerosol Retrieval:是否做气溶胶反演。两个常用选项:None(手动设置能见度)和2-band (K-T)(两波段气溶胶反演)。如果影像包含了清晰的暗目标(比如深水体、浓密植被),可以选2-band (K-T)让模型自动估算气溶胶光学厚度。但注意,Landsat影像如果海岸带区域或者内陆水域占比较大,反演效果会更好;如果研究区都是裸土和城镇,暗目标缺乏,反演容易失败,这时候老老实实选None,手动填一个合理的能见度。

Initial Visibility:初始能见度(km)。这个参数跟气溶胶反演联动,如果你选择了气溶胶反演,这里填的初始值相当于迭代起点,一般填40;如果手动模式,则直接决定大气校正扣除气溶胶散射的强度。能见度越小,代表大气越浑浊,校正时扣掉的大气影响越大。晴天能见度40到60km很正常,轻度霾天能见度可能只有10到20km。填错能见度最直观的表现是校正后的反射率曲线整体偏高或偏低。我通常先填40,跑一次看输出反射率是否符合常识,不符合就调。

Water Retrieval:水汽反演选择。Landsat 8在1380nm附近有卷云波段,在FLAASH里可以选1135nm附近的波段做水汽反演,但实测下来Landsat数据反演水汽的稳定性一般,而且如果影像上没有足够的水体暗像元,反演出的水汽分布会很粗糙。我的建议是,除非你对水汽信息有专门需求,否则直接选No,让FLAASH用大气模型内置的水汽总量来计算,这样更稳。

Spectral Polishing:光谱平滑选项。这个对高光谱数据才有意义,Landsat多光谱波段少,光谱平滑一般不需要勾选。

所有参数都填完之后,点击OK,FLAASH会弹出运行界面。处理速度取决于影像大小、大气模型复杂度和你开的反演选项。一景Landsat全幅数据跑下来,少则十几分钟,多则半小时以上,跑的时候干点别的吧,别盯着进度条。

4.3 Landsat不同传感器的FLAASH设置差异

FLAASH对不同Landsat传感器的支持程度不完全一样,这里分型号说一下:

  • Landsat 5 TM / Landsat 7 ETM+:这类传感器波段设置经典,ENVI内置的传感器参数非常成熟。用File > Open As > Landsat方式打开后,FLAASH选中Sensor Type会自动匹配,中心波长和FWHM不用人工管。基本只要把大气模型、气溶胶模型、能见度填对,跑出来结果都比较漂亮。
  • Landsat 8 OLI:Landsat 8比老传感器多了沿海气溶胶波段和卷云波段。ENVI对L8的支持在5.x版本里也做了持续升级,但个别版本内置参数并不完整。我碰到过一次,FLAASH选中Landsat-8 OLI之后,点开“Edit”按钮,发现某些波段的中心波长明显偏差或者缺失。解决办法是手动编辑这些波段的中心波长和FWHM,数据来源可以参考USGS网站发布的Landsat 8波段响应函数文件。处理完顺便保存成模板,后面同一传感器数据直接调用,不用每次重填。

4.4 顺带说说MODIS大气校正

因为不少人搜索“MODIS卫星数据大气校正”,我想着干脆也把MODIS的常见做法在这里点一下。MODIS数据的预处理跟Landsat有相似之处,但也有明显的平台差异。

MODIS的L1B产品里,每个波段已经给好了缩放系数(scale_factor)和偏移量(offset),你拿到手的第一步是用公式:

真实值 = DN × scale_factor + offset

把DN值转成辐亮度或反射率。不同波段的方向不同,反射率波段有一个缩放系数,辐亮度波段又是另一个缩放系数,一定要在头文件里看清楚,这个跟Landsat自动读取MTL的体验不太一样,手动计算的时候容易搞混。

至于大气校正,MODIS数据在ENVI里也能尝试用FLAASH处理,但有个前提条件:你需要先通过MODIS Conversion Toolkit(MCTK)把MODIS L1B转成ENVI标准格式,并把每个波段的中心波长和FWHM写入头文件。操作上,比Landsat要麻烦一些。

更省事的选择是直接下载NASA发布的MOD09GA/MOD09GQ地表反射率产品。这是官方已经做过大气校正的产品,像元值就是地表反射率(缩放系数0.0001),很多研究直接用MOD09就够,不需要自己在ENVI里折腾大气校正。只有当你需要特定波段组合、特定处理参数或者做逐像元验证时,才考虑自己重新校正。所以提到MOD IS大气校正时,我的第一建议永远是:先看看官方产品能不能满足需求,不能的话再上FLAASH。

4.5 校正完成后怎么看效果

大气校正做完,很多人直接把结果拖进ENVI,看一眼觉得“颜色跟原来差不多嘛”,就完事了。大错特错。校正效果必须通过数值检查来判断。

我会做三件事:

  1. 查看典型地物的光谱曲线。在输出反射率影像上,分别对植被、水体、裸土取几个样本点,绘制光谱剖面。正常的植被光谱曲线在可见光波段反射率低,在近红外波段有一个明显的高反射“陡坡”,红光波段反射率低于近红外波段;水体在近红外波段反射率极低,基本贴近零;裸土曲线平滑,各波段反射率都比较高,没有明显吸收特征。如果实测曲线不符合这些规律,比如植被近红外反射率低于红光,要么是波段顺序错了,要么是大气校正参数出了问题。

  2. 检查像元值范围。地表反射率理论上在0到1之间(有些数据会以0到100的百分比形式输出)。强烈建议用Statistics工具统计一下输出影像的全局最小值、最大值和均值。如果出现大面积负值,说明大气校正扣除过度,常发生在能见度填得过小、气溶胶模型选择不当或者水汽反演失败的场景;如果像元值普遍大于1(排除水体和云等异常像元),说明校正不足,可能是能见度填得过大或者大气模型类型不准。

  3. 目视检查有无异常斑块。把标准假彩色合成(5、4、3波段对应R、G、B)显示出来,植被应该呈红色,城市呈青灰色,水体呈黑色或暗蓝色。如果影像上出现明显的圆形黑斑、白斑或颜色分块,多半是局部云和云影未处理,或者水汽反演产生伪影。这些区域不适合直接参与后续定量分析,建议制作掩膜剔除。

5. 高频故障与排查技巧实录

5.1 每步都可能翻车的问题速查表

下面这些故障,是我处理Landsat数据时碰到过或者帮别人排查过的典型问题,整理成一个速查表,按“现象—原因—解决”的顺序写清楚。

问题现象可能原因解决办法
ENVI里找不到Landsat Gap Fill工具插件没放进extensions目录,或ENVI没有重启检查插件文件位置,重启ENVI后再搜索
Gap Fill报错“Input file must be Landsat 7”输入文件不是通过Open As Landsat打开的L7数据,或数据本身被转成了非标准格式改用Open As Landsat方式打开原始数据,或先转成ENVI标准格式再尝试
Gap Fill补缝后出现明显的“补丁块”辅助影像时相差异太大,或Calibration Step/Gap Pixels参数设置不当换更接近时相的数据做参考,或调整参数重新运行
辐射定标报错“Unable to calibrate”影像的MTL信息丢失,常见于裁剪后使用原始L1文件重新定标,或者先恢复MTL信息再操作
定标输出值整体偏大或偏小缩放因子或数据类型设置不对检查MTL中的增益偏置,确认Scale Factor设置,输出改为Float类型
FLAASH报错“Input radiance must be in units W/(m²·sr·μm)”输入了DN值,或定标时选了Reflectance回到辐射定标步骤,重新输出Radiance类型的定标文件
FLAASH输出反射率大面积负值能见度填得过小、气溶胶模型过强,或水汽反演失败增大初始能见度,换用Rural模型,关闭水汽反演
输出反射率曲线形态正常但整体偏高大气模型选错,或者能见度偏大核对纬度和季节,按大气模型对照表重填
大气校正后的影像出现规律性条带花纹条带去除没做好,或输入文件里仍残留条带检查去条带环节,确认Gap Fill输出文件是否被正确用于定标
一景影像处理时间特别长,内存占用满开的反演选项过多,或者中间文件太大关闭不必要的反演,规划好磁盘空间,必要时分块处理

5.2 几个提升效率的实操心得

最后分享几个我在实际处理过程中的习惯,谈不上高大上,但能少走不少弯路。

第一个心得:建立自己的参数模板。FLAASH里那些大气模型、能见度、气溶胶模型等参数,对同一地区、同一季节的影像来说基本是固定的。我第一次处理某个研究区的数据时,会花半小时认真核对所有参数,确认输出反射率没问题后,把这一套参数记下来或者直接在ENVI里存成模板。后面再来几景同区域的影像,只需要改一下日期和时间,其他参数直接复用。我最多一次同时处理了40多景Landsat影像,靠的就是这套模板化的填参方式。

第二个心得:每步输出都保留中间文件,别急着覆盖。条带去除后的数据、辐射定标后的辐亮度、大气校正后的反射率,每一步都单独存盘。这样做的好处是,当最后发现FLAASH结果有问题时,你可以快速判断问题是出在大气校正参数上,还是更早的定标环节上。我吃过一次亏,把中间文件都删了,结果最后反射率数值异常,只能从头开始跑整条流程,白白耗掉一下午。

第三个心得:善用ROI统计来快速判断处理质量。因为遥感影像动辄几十万个像元,光靠肉眼很难发现系统性的数值偏差。我会在原始影像上框出几块具有明确地物属性的ROI(比如一块纯水体、一块浓密植被、一块城市裸土),把ROI保存下来,然后在每个处理步骤后都对同一个ROI做区域统计,看均值、标准差的数字变化是否符合物理规律。这个习惯让我在批量处理时能迅速定位是哪一步出了问题,而不是等所有步骤跑完再回头慢慢查。

预处理流程走到这里,一景Landsat时空谱信息基本算是“洗干净”了。条带补好了,DN值变成了辐亮度,辐亮度又变成了地表反射率,后续不管你是做监督分类、植被指数计算、地表温度反演还是变化检测,手上的数据都站得住脚。我自己偶尔也会犯懒跳过某些步骤,但每次结果被审稿人质疑的时候,回头一看,基本都是预处理没做到位。所以这几步,踏踏实实走完,绝对不亏。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询