ENVI处理Landsat8全流程:从辐射定标到影像融合裁剪
简介一份基于ENVI平台处理Landsat8卫星影像的完整实习报告面向地理信息科学、遥感专业学生及需要完成相关实验任务的读者。资源贴合真实实验流程依次涵盖波段组合、图像裁剪与拼接、辐射定标及反射率求算、FLAASH大气校正、图像融合Brovey变换、HSV变换、主成分变换、水体提取、植被覆盖度、温度反演大气校正法和单窗算法以及监督与非监督分类、土地利用变化分析每个环节均包含详细操作步骤、过程示意图和最终结果图并附实习心得体会。包体信息上压缩包内为单个docx文档约7.92MB便于直接查看和编辑。目前已有1240人浏览学习适合希望系统掌握ENVI处理流程、制作温度反演图或撰写实验报告的学习者。全文结构按实验目的、数据概况、操作步骤、结果对比递进图文结合既可对照练习也可作为报告撰写的完整范例。1. ENVI 处理 Landsat8这次实验到底要解决什么问题很多人第一次做 Landsat8 影像处理实验上来就在 ENVI 里“Open”一个 TIFF 文件然后对着灰蒙蒙的影像发呆。Landsat8 的原始产品不是一张“照片”它是一组带有元数据文件的 16 位浮点栅格每条轨道有 11 个波段包含多光谱、全色和热红外。ENVI 的价值在于把这套 30 米多光谱和 15 米全色波段通过辐射定标、大气校正、融合和裁剪变成一张能直接用于目视解译和定量分析的反射率影像。这篇内容就按“数据包结构 → 预处理链路 → 融合裁剪 → 验证成果”的顺序把 ENVI 处理 Landsat8 的完整实验流程拆开讲每个环节给出菜单路径、参数依据和踩坑记录适合第一次做遥感实验的学生也适合要从头建立批处理流水线的从业者。2. 读懂 Landsat8 数据包文件结构、元数据与 ENVI 打开前的两个检查2.1 下载下来的一堆文件里哪几个才是 ENVI 要的从 USGS 或地理空间数据云下载的 Landsat8 L1TP 产品解压后会看到十几个文件命名规律大致是LC08_L1TP_124044_20171025_20171030_01_T1这样的前缀。对常规 ENVI 实验来说核心文件只有两类以_B2、_B3、_B4、_B5、_B6、_B7结尾的 30 米多光谱 TIFF以及以_B8结尾的 15 米全色波段 TIFF。_B1是海岸气溶胶波段主要用于水体与气溶胶反演_B9是卷云探测波段_B10、_B11是热红外波段做地表温度反演时会用到但普通的光谱分析实验通常把它们排除在外。除了 TIFF 本身MTL.txt 才是 ENVI 读取信息的关键。它记录了影像采集时间、太阳高度角、太阳方位角、辐射定标系数REFLECTANCE_MULT 和 REFLECTANCE_ADD、地图投影参数和经纬度范围。ENVI 的 Landsat 读取器会优先解析这个文本文件如果 MTL.txt 缺失或格式被破坏ENVI 就会报错或读不出坐标信息。所以打开数据的第一步是确认 MTL.txt 和 TIFF 文件在同一个文件夹里且文件名前缀一致。提示不要手动修改 MTL.txt 里的任何数值。个别教程会教人把 DATE_ACQUIRED 改成其他格式来修复影像日期显示这是典型的“为了修表面问题引入新问题”。MTL.txt 一旦改动ENVI 的读取器可能在解析阶段直接中断。2.2 MTL.txt 里藏着哪些影响定标的参数辐射定标实验绕不开 MTL.txt 里的几组参数。以REFLECTANCE_MULT_BAND和REFLECTANCE_ADD_BAND为例Landsat8 在 L1 级别数据里给了每个波段的反射率转换系数公式是反射率 (DN × MULT ADD) / sin(太阳高度角)。ENVI 的 Radiometric Calibration 工具会自动读取这些系数所以多数情况下不需要手工查。太阳高度角参数同样在 MTL.txt 里字段名是SUN_ELEVATION。这个值影响大气校正时的大气路径长度和地表辐照度计算FLAASH 模块会自动读取。如果 MTL.txt 存在但某些参数缺失比如下载的是部分旧版本的 Landsat8 产品你会在定标输出里看到反射率整体偏大或偏小的异常这时候再把 MTL.txt 里的SUN_ELEVATION手动填进 FLAASH 对应栏位。2.3 用 ENVI 打开 Landsat8 影像的标准路径与坐标检查打开 Landsat8 不推荐直接双击 TIFF 文件那样 ENVI 只会把它当作普通栅格打开丢失波段名称、波长和投影信息。老版本的 ENVI 5.x 走File Open As Landsat Geo TIFF新版 ENVI 则统一到File Open External File Landsat 8。选择文件时要注意你选中的是 MTL.txt 而非某个波段 TIFFENVI 会一次性把全部波段读入并在 Data Manager 里显示为LC08_L1TP_..._MTL.txt这个名字的栅格文件。打开后先做两个检查。第一在 Data Manager 里右键该文件选择 View Metadata查看 Map Info 里的投影名称正常应该是UTM Zone 50N / WGS-84这类文本投影参数里有中央经线和假东偏移值。第二看影像像素大小多光谱显示30米全色显示15米热红外显示30米或100米重采样后的 30 米。如果 Raster Info 里显示“No Projection”或者坐标范围是 0 到几百那说明 MTL.txt 没有被正确解释按 2.3 节的报错处理。2.4 影像显示发灰不是数据坏了快速拉伸到可判读状态打开后的 Landsat8 影像大概率显示为一片灰暗这不是数据坏了而是 16 位 DN 值范围通常在 0 到 10000 以上ENVI 默认用全动态范围拉伸导致地物对比度被压缩在很窄的灰度区间。实验里最常用的手法是右键 Display 窗口选择Enhance Linear 2%或者点一下主窗口工具栏里的“2% Linear”按钮ENVI 会从直方图两端各截掉 2% 的极端像素把其余像元拉伸到 0 到 255。这一步不改变栅格数据本身只影响显示做辐射定标时用原始数据即可。做完 2% 线性拉伸后如果影像仍然一片死黑或者呈大面积的土黄色那就要回到数据源头检查是不是没有成功读到多光谱波段只导入了热红外波段。看 Data Manager 里的波段列表正常应该有 11 个波段快捷键是右键文件选择 Edit Header里面能看到每个波段的中心波长。3. 辐射定标与大气校正ENVI 里把 DN 值还原成真实反射率3.1 先做辐射定标TOA 反射率输出与三个必调参数拿到 DN 值不能直接比较不同时间、不同太阳高度角的影像所以第一步一定是辐射定标。ENVI 的路径在Toolbox Radiometric Correction Radiometric Calibration输入选择载入的 Landsat8 数据。工具会自动列出所有波段实验里通常只需要保留 B2 到 B7 六个波段B8 全色波段单独做融合时定标B10/B11 热红外不在这一步处理。多余的 B1、B9 波段可以取消勾选减少计算量和文件体积。定标输出类型有两个选项Radiance和TOA Reflectance。如果后面要接 FLAASH 大气校正就必须输出 Radiance单位是W/(m²·sr·μm)如果只是做单幅影像的对比分析直接输出 TOA Reflectance 也够用。输出数据类型选 Float不要选 Byte因为定标后反射率是 0 到 1 之间的小数Byte 会把小数舍入成 0 和 1整份数据就废了。Scale factor 保持默认值 1.0 即可ENVI 的 Landsat 读取器会在定标公式里自动应用 MTL.txt 里的系数。FLASSH参数抄作业清单放在 3.3 节详细写这里先提醒一个新手常犯的错有人为了省事跳过定标直接把 DN 值丢给 FLAASHFLAASH 也能运行但输出的反射率会整体放大几千倍植被反射率测出来接近 30这明显不对。3.2 大气校正FLAASH 还是 QUAC我的选择与理由Landsat8 定量分析里绕不开大气散射和吸收带来的影响不做大气校正典型的后果是蓝波段反射率偏高、近红外波段偏低NDVI 计算出来整体虚高。ENVI 提供两种主流工具FLAASH 和 QUAC。FLAASH 是物理模型需要输入传感器类型、成像时间、地面高程、气溶胶模式和初始能见度参数给全了精度更高尤其适合做多期影像对比和植被指数反演。QUAC 是快速近似工具不需要输入大气参数自动从影像内部端元估算平均大气状况速度极快适合做影像分类前的预处理。我的做法是凡是实验报告里涉及反射率对比、植被指数阈值分析、光谱角匹配一律用 FLAASH只是做假彩色合成和目视解译QUAC 或者干脆不做大气校正都行。Landsat8 的 30 米分辨率对大气校正的要求不像高光谱那样苛刻但 FLAASH 对消除蓝绿波段的水汽吸收带影响非常有效这点在植被光谱曲线上看得很清楚。3.3 用 FLAASH 做大气校正的参数抄作业清单FLAASH 的入口在Toolbox Radiometric Correction Atmospheric Correction Module FLAASH Atmospheric Correction。输入文件选 3.1 节输出的 Radiance 数据参数按下面这份清单填。参数名称推荐取值设置依据Sensor Type选 Landsat8 OLI不能选成 Landsat7 ETM波段设置会全部错乱Ground Elevation研究区平均高程单位为 km从影像元数据或 DEM 均值读取平原填 0.05山区按实景填 1.0 到 3.0Atmospheric Model中纬度夏季 / 中纬度冬季按影像获取月份和纬度选避免用热带模型Aerosol ModelRural 或 Urban城区选 Urban农田/山区选 RuralInitial Visibility20 到 40 km蓝天通透的影像填 40空气质量差填 10 到 20Water Retrieval开启后的波长约 1130 nm对应 Landsat8 B11 波段用于水汽反演Aerosol Retrieval 选2-band (K-T)这是 ENVI 推荐值。输出文件名单独命名不要覆盖定标文件。运行前还要确认Output Reflectance勾选单位选%还是无量纲比值都行但后续计算 NDVI 时如果数值在 0 到 100 的范围记得先除以 100。FLAASH 一次运行通常需要几分钟Landsat8 一景影像约 8000×8000 像元处理速度取决于内存。运行完成后先看直方图正常反射率影像的直方图应该在 0 到 0.6 之间集中分布水体波段反射率在 0.05 以下植被近红外反射率在 0.3 到 0.5 之间。如果直方图整体偏移到 0 到 10 的范围多半是输出单位选了%或系数填多了按 5.2 节排查。3.4 定标结果怎么看光谱曲线与波谱库对比做完 FLAASH别急着关闭工具用 ENVI 的Spectral Spectral Profile查看典型地物的波谱曲线。在 Display 窗口打开大气校正后的影像选择水体、植被、裸土各取一个样本点ENVI 会画出六条波谱曲线。把鼠标悬停在曲线窗口的横坐标上能看到每个波段的中心波长位置与 USGS 波谱库里的植被曲线做对比绿色植被在红光波段B4出现吸收谷在近红外B5迅速抬升中红外B6/B7有两个明显的水汽吸收带。如果曲线形态整体不对比如植被在蓝光波段反射率高于绿光多半是大气校正参数里的气溶胶模式填错或能见度过小导致蓝光补偿过度。曲线形态对了但反射率绝对值偏小检查 FLAASH 输入文件是不是 Radiance 而非 TOA Reflectance单位不对会导致整个量级错。4. 影像合成、融合与裁剪把 30 米多光谱变成 15 米彩色底图4.1 波段合成的顺序真彩色与假彩色怎么排大气校正后的影像仍然是一个多波段栅格单独查看每个波段是灰度图展示成果时必须做 RGB 合成。ENVI 里最简单的方式是在 Display 窗口右键选择Load RGB然后在 Band Selection 对话框里指定 R、G、B 三个通道对应的波段。做真彩色R 选 B4红、G 选 B3绿、B 选 B2蓝得到的是人眼熟悉的自然色彩做标准假彩色R 选 B5近红外、G 选 B4红、B 选 B3绿植被显示为红色水体显示为深蓝色。如果不想每次重新选波段可以把合成结果保存为独立文件。路径是File Save As Save As ENVI Standard在 Select Bands 里按 B4、B3、B2 的顺序加入输出格式选 ENVI 默认格式。这会生成一个.dat文件和配套的.hdr头文件后续在 ArcGIS 或 QGIS 里打开时系统能从.hdr里读到波段顺序不会再显示成混乱的色彩。4.2 Gram-Schmidt 全色融合Landsat8 全色波段的正确用法Landsat8 的多光谱波段分辨率是 30 米全色波段是 15 米融合的目的是把全色波段的高空间分辨率传递给多光谱波段同时保留多光谱的光谱信息。ENVI 的入口在Toolbox Pan Sharpening Gram-Schmidt这个算法是当前对 Landsat8 最稳妥的选择比 Brovey 和 PCA 融合的光谱失真小。操作时有两个输入多光谱文件选大气校正后的 B2 到 B7 六波段影像全色文件选定标后的 B8 波段。ENVI 会自动把多光谱重采样到与全色相同的像元大小15 米。关键参数里Sensor 选 Landsat 8输出数据类型保持 Float重采样算法选 Bilinear融合输出路径放在单独文件夹。Gram-Schmidt 对全色和多光谱的空间配准精度要求很高同一景影像内部没问题但如果是拼接后的影像全色和多光谱之间可能有几个像元的偏移先做好配准再融合。融合完成后做一次目视检查看道路边缘有没有白边看农田边界是否清晰看城市建筑有没有变色。如果植被区出现波纹或条带状亮暗差异参考 5.3 节处理。4.3 按研究区裁剪ROI 与矢量文件子集两种路径实验范围如果只是研究区的一小块直接裁剪能大幅提高后续计算效率也没有必要把整景影像带着跑。ENVI 提供两种常见路径按 ROI 裁剪和按矢量文件裁剪。ROI 裁剪适合现场圈范围先在 Display 窗口用Overlay Region of Interest ROI Tool画一个矩形或多边形然后右键主窗口选择File Subset Data via ROIs勾选需要裁剪的栅格输出即可。注意 ROI 工具默认用的是显示窗口的坐标系统如果裁剪目标栅格的投影与显示窗口使用的投影不一致ENVI 会提醒你坐标转换这时候不要直接点 OK先确认两个坐标系之间的转换参数。矢量裁剪适合用现成的行政区边界File Open External File Shapefile把矢量读入再用File Subset Data from ROIs里的矢量转 ROI 工具把每个多边形转成 ROI再执行裁剪。矢量坐标与影像投影不一致时要先做投影转换ENVI 的Raster Management Reproject Raster可以解决矢量本身的投影转换则在 ArcGIS 里处理好再导入。4.4 多期影像拼接无缝镶嵌的参数选择如果实验区跨了两景 Landsat8 影像先把它们镶嵌成一整幅。ENVI 的Toolbox Mosaicking Seamless Mosaic是首选。添加两幅影像后设置背景值为 0勾选Color Matching Apply Color MatchingENVI 会自动计算两景之间的直方图匹配系数消除接边处的色调跳变。融合方法选Feathering羽化宽度设为像元的 10 到 20 倍即 150 到 300 米这样接边过渡自然。镶嵌完成后检查两景影像重叠区的建筑和道路是否错位。如果错位问题通常出在两景影像之间没有做严格的几何配准。相邻轨道的 Landsat8 L1TP 产品理论上已经用地面控制点校正过但山区或者地形起伏大的区域仍有少量偏差可以先用Registration Image Registration Workflow做一次配准再镶嵌。5. ENVI 处理 Landsat8 的避坑清单常见问题与排查方法5.1 元文件读不出来或日期显示 1970-01-19现象按Open External File Landsat 8选 MTL.txt 后ENVI 报错“Unable to read metadata”或者生成的栅格日期显示为 1970-01-19经纬度范围全部为 0。原因通常是下载的数据包被解压软件修改过目录结构MTL.txt 与 TIFF 不在同一文件夹或者 MTL.txt 的文本编码被改变。解决方法是把 MTL.txt 和所有 TIFF 重新放到一个全新文件夹根目录下确保文件名前缀完全一致再用 Open External File 打开。日期显示 1970 的另一个案例是用户从旧版本 ENVI 打开 L1TP 产品旧读取器无法完整解析新格式的日期字段解决方式是升级 ENVI 版本或用Edit Header Time手动导入采集日期。5.2 FLAASH 大气校正输出全是黑色或暗角异常现象运行 FLAASH 后输出的影像大面积为黑色或者边缘出现规则渐变暗影。原因检查优先级最高的一项是输入的文件类型不对——FLAASH 要求输入辐射亮度单位是W/(m²·sr·μm)如果输入了 DN 值或 TOA Reflectance辐射亮度数值量级差出 1000 倍FLAASH 内部按物理量估算大气时就会把信号整体压低或抬升到异常范围。第二可能是 Scale Factor 被设置为过大数值导致输出数值被压缩到接近 0。解决方法是回到辐射定标步骤输出类型明确选 Radiance并在 FLAASH 输入面板确认“Input Radiance Units”是W/(m²·sr·μm)。如果已经运行过直接在 Raster Info 里查看波段单位不是这个单位就重做。5.3 融合后植被区出现“条纹”或光谱振荡现象Gram-Schmidt 融合输出在林地、农田区域出现横向或纵向的细条纹。多数情况不是融合算法本身的问题而是全色波段在融合前没有正确去噪。Landsat8 全色波段本身偶尔会有探测器响应差异导致的轻微条带另外融合时全色波段与多光谱波段之间如果有云和云的阴影也会在边缘处产生明暗交替的异常。处理方法是先对全色波段做一次 3×3 低通滤波用Filter Convolutions Low Pass去掉周期噪声再进行融合。如果条纹只出现在某个特定地物边缘可以考虑在融合前先做多光谱与全色波段的波段配准而不是直接处理融合结果。5.4 裁剪后影像经纬度不对投影与范围文件错位现象按 ROI 或矢量裁剪后输出影像的范围与预期不符经纬度偏移了几百米甚至更远。原因是 ROI 工具绘制时使用的是显示窗口的投影而裁剪目标影像本身是另一个投影。常见做法是在 ROI 工具里先把显示坐标切换到与目标影像相同的投影或者直接用矢量文件裁剪并确认矢量文件的投影与影像一致。若错位已经发生不要尝试手动修正坐标重新建立正确投影下的 ROI 再做 Subset整个过程不到两分钟。5.5 浮点影像显示灰阶拉伸与归一化的小技巧现象大气校正后的反射率影像打开显示为一片灰或者一片白任何地物都看不出层次。原因是反射率值范围太小比如 0 到 0.5而 ENVI 默认显示时按全动态范围 0 到 65535 做映射导致对比度几乎为零。解决方法是右键 Display 窗口选择Enhance Linear 0% - 1%或者直接在工具栏输入拉伸下限 0.02、上限 0.98。如果后续要把影像保存为 8 位 JPEG 或 GeoTIFF 输出用File Save As Raster to IDL或Save As ENVI前用Toolbox Raster Management Stretch Data把反射率乘以 10000 转为整数就不会在外部软件里出现同样的灰屏。6. 验证实验结果的三个手法光谱曲线、像元统计与实地点位做完整套 ENVI 处理流程最后要回答一个很实际的问题输出的反射率影像到底准不准。我的验证习惯是先取光谱曲线。用Spectral Spectral Profile在影像上分别点选水体、植被、裸土绘制三条曲线对照 USGS 波谱库的标准曲线形态水体的近红外、中红外反射率趋近于 0整条曲线低平植被在 B4 有吸收谷、在 B5 有陡升裸土曲线平缓上升。如果地形特征明显还能看到 B6、B7 处的土壤吸收差异。曲线形态能对上说明辐射定标和大气校正的思路是通的。第二个验证方法是像元统计。在 ENVI 里对输出影像计算统计量Toolbox Statistics Compute Statistics查看 B4 和 B5 波段的均值、标准差、最小最大值。健康的反射率影像植被覆盖区均值应该在 0.1 到 0.3 之间标准差不大如果 B5 均值高于 0.5 或者出现负反射率回查定标系数和 FLAASH 参数。用统计表再结合波段运算算一次 NDVIToolbox Band Ratio NDVI或 Band Math 输入(float(b5)-float(b4))/(float(b5)float(b4))结果里水体应接近 -0.1 到 0植被应在 0.5 以上这个区间是 Landsat8 常规影像的参考范围。第三个手法是用现势影像做空间位置验证。融合后的 15 米影像打开后对比 Google Earth 或本地高分辨率影像选几个特征明显的点——桥梁、河流拐弯、道路交叉口放大到 1:5000 目视比对。如果桥梁和道路轮廓对齐说明几何校正和融合的空间精度没有问题如果出现几米到十几米的错位检查两个数据的投影基准必要时用 ENVI 的 Image Registration 做一次局部配准。做遥感实验这几年我最深的体会是ENVI 处理 Landsat8 的每一步都能在界面上找到按钮但参数为什么这么填、异常为什么这么排查才是实验报告真正有价值的部分。每次跑完一条流程把参数表和异常记录存成一个文本文件下次换影像时照着重填一遍能省下大量反复试错的时间。希望这份处理路径能帮你在自己的数据上少走几步弯路。本文还有配套的精品资源点击获取