ENVI处理Landsat8遥感影像全流程与避坑指南
简介围绕Landsat8多光谱影像的ENVI处理实验报告面向地理信息科学与遥感专业学生、课程实习生及需要熟悉遥感影像标准流程的初学者帮助其系统梳理从数据预处理到专题信息提取的完整操作链路。资源包共1个docx文件约7.92MB以图文步骤、结果截图和实习心得组织内容目录覆盖图像裁剪、辐射定标与反射率求算、大气校正及对比、Brovey/HSV/主成分融合与定性定量评价、水体提取、植被覆盖度、温度反演大气校正法与单窗算法以及监督/非监督分类和土地利用变化分析。已有1246人学习适合用作课程实验参考、实习报告撰写范本或操作复盘材料。读者可据此对照各模块的处理思路、参数设置与结果图理解融合效果评价、温度反演和分类精度比较等关键环节并参考文末心得体会完善自己的实验总结。1. 从一份 ENVI 实习报告说起Landsat8 全流程能不能照着跑一份遥感实习报告最怕只有结果图、没有参数换个人照着做就卡在第一步。这份基于 ENVI 的 Landsat8 影像处理报告把波段组合、裁剪、辐射定标、FLAASH 大气校正、四种融合方法对比、水体与植被提取、温度反演、监督分类和土地利用变化监测串成了一条完整链每个环节都留了操作路径和容易翻车的地方。对地信、遥感方向的学生和刚接触 ENVI 的从业者来说它的价值不在结论图多好看而在于参数怎么填、结果怎么判断、错了从哪查。下面按处理顺序拆开重点落在能复现的步骤和边界条件上中间夹着我在同类流程里反复踩过的坑方便你对着自己的数据逐段核对。2. 波段组合与裁剪把研究区框死再谈定标拿到整景 Landsat8 数据第一反应往往是直接开 FLAASH 跑大气校正。真跑一次就知道整景七千乘七千像元、八个波段FLAASH 处理时间会拉得很长中途报错重来的成本也高。更稳妥的顺序是先在矢量边界上把研究区裁出来再做辐射定标和大气校正。裁剪本身不改变 DN 值定标系数仍然从整景的 MTL 头文件读取所以先裁后定标不会影响辐射量换算反而能把后续每一步的计算量压到原来的十分之一左右。2.1 先裁剪后定标的计算账与坐标系约束裁剪放在定标之前理由有三条。第一是计算量整景数据做 FLAASH 动辄二三十分钟裁剪到县级范围后通常几分钟就能出结果参数调错重跑的代价小很多。第二是 ROI 一致性ENVI 的 Subset Data via ROIs 依赖矢量边界先把 shp 导入并转成 ROI后续所有裁剪、掩膜、统计都共用同一套感兴趣区不会出现这份文件用县界、那份文件用矩形框的混乱。第三是坐标系统一ArcMap 里筛选 shp 时就要确认矢量坐标系和影像一致常见做法是统一到 WGS-84 地理坐标或对应的 UTM 投影否则裁剪结果会出现整体偏移边界对不上。这里有一个容易忽略的细节裁剪只改变空间范围不改变辐射值。有人裁完之后看到 DN 值范围变了以为是裁剪导致的其实是裁剪后统计样本变小、极值被切掉。定标系数还是按整景头文件里的 RADIANCE_MULT_BAND_x 和 RADIANCE_ADD_BAND_x 来不要因为裁剪后像元数变了就重新拟合增益偏置那样会把辐射定标做成另一套东西。2.2 ArcMap 筛 shp 到 ENVI 波段堆栈的完整链路ArcMap 这一侧的任务是把县界 shp 筛成只含目标研究区的一个多边形。加载 shp 后打开属性表按名称字段做筛选导出为新的 shapefile。筛选表达式因字段名而异常见写法如下-- 在 ArcMap 属性表中按名称字段筛选目标研究区 NAME 目标研究区名称这段表达式的关键是字段名要和 shp 属性表里实际字段一致有的数据里叫 NAME有的叫 COUNTY选中目标记录后右键导出数据坐标系选与影像一致的那一套。导出后只保留一个多边形后面 ENVI 导入时不会把整张表里的其他县也带进来。ENVI 这一侧先做波段堆栈。打开 B1 到 B8 八个单波段文件Basic Tools 里找 Layer Stacking按 B1、B2、B3、B4、B5、B6、B7、B8 的顺序添加。顺序不能乱后面 Edit Header 改中心波长、FLAASH 做波段映射都依赖这个顺序。堆栈输出选 ENVI 标准格式检查波段数是否为 8、行列数是否与原影像一致、数据类型是否为浮点或整型。堆栈完成后加载 shpFile 菜单下 Open Vector File选中导出的 shapefile弹出参数框里确认坐标系导入后图层上会显示白色边界线说明矢量和影像已经对齐。波段顺序和用途可以先记一张表后面定标和融合会反复用到波段光谱范围主要用途备注B1海岸/气溶胶气溶胶反演FLAASH 波段映射会用到B2蓝水体、植被真彩色合成B3绿植被、水体NDWI 常用B4红植被吸收NDVI 常用B5近红外植被、水体边界融合低分辨率输入B6短波红外 1湿度、地质温度反演辅助B7短波红外 2地质、云检测FLAASH 波段映射会用到B8全色融合高分辨率需先做拉伸2.3 Subset Data via ROIs 的参数与常见误设裁剪的动作在 ENVI 里分两步先把矢量图层转成 ROI再按 ROI 做子集。矢量图层右键选 Export Active Layer to ROIs弹出框里选第一个选项把整个图层转成一个 ROI 记录。然后 Basic Tools 里找 Subset Data via ROIs选中刚生成的 ROIMask pixels outside of ROI 这一项选 YES。YES 的含义是 ROI 范围外的像元全部置为 0NO 则保留原始值只裁空间范围。做专题提取和统计时一般选 YES避免背景像元混进均值、标准差的计算里。参数设完点 OK输出文件检查三件事边界是否贴合县界、行列数是否与 ROI 外接矩形匹配、背景值是否为 0。常见的误设有三类。一是 ROI 名称选错一个工程里存了多个 ROI 时容易点错裁剪出来是另一个县的范围。二是坐标系不一致shp 是地理坐标、影像投影坐标导入后边界整体偏移几公里这种要在 ArcMap 里先做投影转换再导出。三是 Mask 选了 NO后面做水体掩膜和分类统计时把背景 0 值也算进去均值被拉低、分类多出一个背景类这种错误在结果图上不明显但定量指标会明显失真。3. 辐射定标与 FLAASH 大气校正DN 值到反射率的参数链裁剪完的数据还是 DN 值直接做指数计算和分类不同时相之间的可比性很差。辐射定标把 DN 转成辐射亮度大气校正再把辐射亮度转成地表反射率这两步是后面水体提取、植被覆盖度和温度反演能定量比较的前提。整条链里最容易出问题的不是点哪个按钮而是中心波长、增益偏置、波段顺序和 FLAASH 参数之间的绑定关系一处填错后面全跟着偏。3.1 中心波长、增益偏置与波段顺序的绑定Landsat8 OLI 的波段中心波长要手动写进头文件ENVI 不会自动从 MTL 里读全。右键裁剪后的影像选 Edit Header找到波长Wavelength一项单位改成 Micrometers按 B1 到 B7 的顺序填中心波长。B8 全色波段在做融合时单独处理可以不参与大气校正所以波段数从 8 改成 7 是常见做法。中心波长填错的直接后果是 FLAASH 波段映射对不上或者反演出的反射率整体偏移肉眼看不出来但植被光谱曲线会变形。增益和偏置从 MTL 头文件里读。常见做法是用脚本先把需要的字段抽出来避免手工抄错# 从 Landsat8 MTL 头文件中提取增益和偏置 import re mtl_path LC08_L1TP_XXX_MTL.txt with open(mtl_path, r) as f: text f.read() # 匹配 RADIANCE_MULT_BAND_x 和 RADIANCE_ADD_BAND_x for band in range(1, 8): mult re.search(rfRADIANCE_MULT_BAND_{band}\s*\s*([\d.E-]), text) add re.search(rfRADIANCE_ADD_BAND_{band}\s*\s*([\d.E-]), text) print(fB{band}: mult{mult.group(1)}, add{add.group(1)})脚本做的是按波段号逐条匹配 MTL 里的乘系数和加系数输出后填进 ENVI 的 Apply Gain and Offset 工具。参数含义很直接辐射亮度等于 DN 乘以 mult 再加 add单位是 W/(m²·sr·μm)。填的时候注意波段顺序要和堆栈顺序一致B1 对 B1、B2 对 B2不能因为裁剪后重排了波段就按新顺序填旧系数。定标输出检查两点数值量级是否在 0 到几十之间、有没有出现负值。少量负值正常大量负值说明偏置填反了。3.2 FLAASH 参数逐项传感器、大气模型与气溶胶FLAASH 的入口在 Spectral 菜单下打开后先选输入辐射亮度文件。这里有一个前置条件输入文件必须是 BIL 格式BSQ 格式读不进去。ENVI 里用 Convert Interleave 把 BSQ 转成 BIL再加载。输入文件选好后参数框里大部分字段可以按下面的表来填参数取值依据传感器类型Landsat-8 OLI与数据源一致飞行高度705 kmLandsat8 轨道高度像元大小30 m多光谱波段分辨率研究区平均高程0.97 km研究区实际海拔大气模型MLS中纬度夏季影像获取季节与纬度气溶胶模型Urban研究区含居民点初始能见度40 km晴空条件经验值波段映射第七波段、第一波段Kaufman-Tanre 气溶胶反演中心经纬度在加载 BIL 文件后自动填充传感器参数也会自动识别这两项不用手改。高程要按研究区实际平均海拔填填 0 和填 0.97 公里反演出的反射率在短波红外会有可见差异。大气模型选 MLS 是因为影像获取时间在夏季、纬度在中纬度选错成 MLS 以外的模型整景反射率会整体偏亮或偏暗。气溶胶模型选 Urban 是考虑到研究区内有居民点和道路如果研究区以林地为主换成 Rural 更合适。Multispectral Settings 里要做波段映射第一个框选第七波段、第二个框选第一波段对应 Kaufman-Tanre 方法用短波红外和蓝波段反演气溶胶。这一步选错FLAASH 会报波段数不匹配或者气溶胶反演结果异常。参数填完先跑一小块裁剪区试参数确认无误再跑整景比整景报错重来省时间。3.3 校正前后怎么判断Z-profile 与光谱曲线FLAASH 跑完不能只看图好不好看要用 Z-profile 对比校正前后的像元光谱。在 ENVI 里打开原图、辐射定标图、大气校正图三个图层选同一块植被像元看光谱曲线走势。正常结果是大气校正后可见光波段反射率下降、近红外波段抬升植被在红波段出现吸收谷、在近红外出现反射峰整条曲线量级落在 0 到 1 之间。如果校正后整景偏蓝、植被近红外没有抬升先查气溶胶模型和能见度如果反射率出现大量负值或超过 1查波段映射和中心波长。另一个判断方法是看同一地物在不同时相的可比性。两期影像都做完大气校正后同一块水体或植被的反射率差异应该明显小于校正前。如果两期影像同一地物的反射率差距反而变大说明其中一期的大气模型或高程填错了。这一步不需要精确的野外实测数据靠地物光谱形态就能筛掉大部分参数错误。4. 图像融合与定量评价Brovey、HSV、PC 怎么选多光谱波段空间分辨率 30 米、全色波段 15 米融合的目的是把全色的空间细节注入多光谱得到既有颜色又有纹理的结果。ENVI 的 Transform 菜单下 Image Sharpening 一栏提供了 Brovey、HSV、PC、Gram-Schmidt 等方法每种方法的输入组合和参数不一样融合结果在光谱保真和空间增强上各有取舍。选哪种不是看哪个名字熟而是看你后面拿融合结果做什么做目视解译优先纹理清晰做指数计算优先光谱保真。4.1 全色波段拉伸与重采样方式的取舍融合之前要先处理全色波段。B8 的反射率量级在 0 到 1 之间多光谱波段经过定标和校正后量级也在 0 到 1 附近但有些流程里多光谱被拉伸到 0 到 255全色还是 0 到 1直接融合会导致结果整体偏暗。常见做法是先对 B8 做线性拉伸把 0 到 1 映射到 0 到 255和多光谱的量级对齐。拉伸参数在 ENVI 的 Stretch Data 里设输出检查全色波段的最小值、最大值是否与多光谱接近。重采样方式有最近邻、双线性、三次卷积三种。最近邻保留原始像元值不引入新值适合后续做分类和指数计算双线性和三次卷积视觉上更平滑但会改变像元值做定量反演时尽量不用。这份报告里几种融合方法都选了最近邻理由是融合后还要做水体提取和分类保持像元值可追溯比视觉平滑更重要。如果融合结果只用于出图双线性也能接受但要在报告里注明避免别人拿去做指数计算时对不上。4.2 Brovey、HSV、PC 与 Gram-Schmidt 的参数差异Brovey 变换的输入是低分辨率多光谱的 RGB 三波段和高分辨率全色波段算法把每个彩色波段乘以全色与三波段之和的比值再重采样到高分辨率像元。ENVI 里选 Transform Image Sharpening Brovey低分辨率输入选大气校正后的 B5、B4、B3 合成 RGB高分辨率选 B8重采样选最近邻。Brovey 的特点是光谱保持较好但受波段限制输入只能是三个波段不能把七个多光谱波段一次性融进去。HSV 变换先把 RGB 转成色度、饱和度、亮度三个分量用高分辨率全色替换亮度分量再把色度和饱和度重采样回高分辨率最后转回 RGB。操作路径是 Transform Image Sharpening HSV输入同样选 B5、B4、B3 和 B8重采样最近邻。HSV 的纹理改善明显居民区边界更清晰但光谱损失比 Brovey 大颜色容易偏。报告里对比下来HSV 在居住区识别上比 Brovey 更清楚代价是植被颜色略有偏移。PC 变换先对多光谱做的主成分分析用全色波段替换第一主成分再做逆变换。第一步对多光谱波段做主成分变换第二步把全色波段匹配到第一主成分的均值和方差第三步用匹配后的全色替换第一主成分第四步做逆变换。PC 的优点是没有波段数限制可以把七个多光谱波段都加进去缺点是第一主成分信息高度集中替换后色调变化较大视觉上反而可能变模糊。报告里的 PC 融合结果就是纹理改善有限、颜色偏鲜明做目视解译不如 HSV 和 Brovey。Gram-Schmidt 是 ENVI 自带的方法里光谱保真较好的一种先模拟一个低分辨率全色波段再对模拟全色和多光谱做 Gram-Schmidt 正交化用高分辨率全色替换第一分量。操作路径在 Image Sharpening 下选 Gram-Schmidt Pan Sharpening输入多光谱和全色传感器选 Landsat8重采样最近邻。这个方法参数少、自动化程度高适合不想逐项调参的场景。四种方法的对比如下方法输入波段光谱保真空间增强适用场景Brovey3 个多光谱 全色较好中等快速出图、色彩要求高HSV3 个多光谱 全色一般较好居民区、边界解译PC全部多光谱 全色较好一般多波段联合融合Gram-Schmidt全部多光谱 全色好较好定量反演前的融合4.3 定量评价均值、标准差、信息熵与平均梯度目视解译只能定性判断要比较融合方法得算指标。报告里用了均值、标准差、信息熵、平均梯度四个指标计算入口在 Basic Tools Statistics Compute Statistics信息熵和平均梯度需要把融合结果导出成 ASCII 像元值再用脚本算。均值反映亮度水平标准差反映对比度信息熵反映信息量平均梯度反映边缘清晰度。四个指标不是越高越好要结合光谱保真一起看。信息熵的计算脚本可以用 MATLAB 写核心是统计每个灰度级的出现概率再求熵% 计算单波段影像的信息熵 img imread(fusion_result.tif); img double(img(:)); % 统计各灰度级出现概率 [counts, ~] histcounts(img, 256); p counts / sum(counts); p p(p 0); % 信息熵 entropy -sum(p .* log2(p)); fprintf(Information Entropy: %.4f\n, entropy);脚本做的是把影像展平成向量、按 256 级统计频数、归一化成概率、再按熵公式求和。参数上要注意灰度级数要和影像位深匹配8 位影像用 256 级16 位影像要相应调整。平均梯度的计算类似对行列方向分别求差分再取平均这里不展开。报告里 B5 波段的指标对比可以直接拿来参考影像均值标准差信息熵平均梯度融合前10.9364.6504.1180.158Brovey0.1990.1873.8880.094HSV63.12013.8505.3390.207PCA11.4313.6473.4470.049这张表里 Brovey 的均值只有 0.199是因为融合前多光谱没有拉伸到 0 到 255量级和其他方法不一致横向比较均值意义不大重点看标准差和信息熵。HSV 的信息熵和平均梯度最高说明信息量和边缘细节保留最多PCA 的信息熵和平均梯度最低和目视解译里“变模糊”的结论一致。实际选方法时如果后续要做分类优先选信息熵和平均梯度高的如果要做指数反演优先选光谱保真好的 Brovey 或 Gram-Schmidt。5. 避坑排查从裁剪到融合的六条翻车记录这条流程看起来步骤清晰真跑起来报错和结果异常集中在几个固定位置。下面六条是我在同类流程里反复遇到的每条按现象、原因、解决三段写对照自己的工程逐条排查能省掉大部分重跑时间。5.1 裁剪与波段堆栈的坑第一条裁剪后边界整体偏移。现象是裁剪结果的范围和 shp 对不上整体往一个方向偏几公里。原因是 shp 和影像坐标系不一致shp 是地理坐标、影像用 UTM 投影ENVI 导入矢量时没有做动态投影。解决办法是在 ArcMap 里先把 shp 投影转换到和影像一致的坐标系再导出加载或者在 ENVI 打开矢量文件时手动指定坐标系不要用默认值。第二条波段堆栈后波段顺序错乱。现象是融合结果颜色异常、植被发红、水体发绿。原因是 Layer Stacking 时按文件名排序而不是按波段号排序B10、B11 排到了 B2 前面。解决办法是手动按 B1 到 B8 的顺序添加堆栈完成后在 Layer Manager 里核对每个波段的波长和文件来源确认顺序无误再往下做。这个错误在单波段显示时看不出来一合成彩色图就暴露。5.2 定标与大气校正的坑第三条FLAASH 报波段数不匹配。现象是点击运行后弹窗提示波段数和传感器不匹配。原因有两个一是中心波长没填或填错FLAASH 识别不出每个波段对应的光谱范围二是波段映射里选的波段号超出了输入文件的波段数。解决办法是先检查 Edit Header 里的波长是否按 B1 到 B7 填全、单位是否为微米再检查 Multispectral Settings 里两个映射框选的波段号是否在 1 到 7 之间。第四条大气校正后整景反射率偏移。现象是校正后植被近红外没有抬升、整景偏蓝或偏暗。原因是大气模型或气溶胶模型选错常见的是把中纬度夏季选成中纬度冬季或者研究区以林地为主却选了 Urban。解决办法是回到影像获取时间和研究区纬度重新选大气模型气溶胶模型按地表覆盖类型选跑之前先裁一小块试参数用 Z-profile 看植被光谱形态对不对再跑整景。第五条BSQ 格式读不进 FLAASH。现象是选输入文件时 FLAASH 不识别或者报错。原因是辐射定标输出默认是 BSQ 交错格式FLAASH 只认 BIL。解决办法是在 ENVI 里用 Convert Interleave 把 BSQ 转成 BIL转换时注意输出数据类型保持浮点不要转成整型否则反射率的小数部分会被截断。5.3 融合与专题提取的坑第六条融合结果整体偏暗。现象是 Brovey 或 HSV 融合后影像比原图暗很多颜色发灰。原因是全色波段没有做拉伸B8 还在 0 到 1 量级多光谱已经到 0 到 255两者量级不匹配。解决办法是融合前先对 B8 做线性拉伸把 0 到 1 映射到 0 到 255拉伸后再融合结果亮度就正常了。第七条水体掩膜把河边缘吞掉。现象是提取的水体图在河流窄段断裂或者河岸被误判成水体。原因是密度分割的阈值拍脑袋定没有对照 NDWI 灰度图的实际分布。解决办法是在 Band Math 算出 NDWI 后用 Overlay Density Slice 看灰度分布把阈值定在直方图双峰之间的谷底再生成掩膜。研究区河流在边界附近的还要检查裁剪时边界是否切掉了部分河道必要的话把裁剪范围外扩一两个像元。第八条分类样本和影像时相不匹配。现象是监督分类结果里某种地物大面积误分。原因是样本是从另一期影像或另一块区域选的光谱特征和当前影像对不上。解决办法是样本必须从当前待分类影像上选每类至少选几十个像元选完后用 ROI 可分离性工具看 Jeffries-Matusita 距离低于 1.8 的类别要合并或重新选样本。这条在土地利用变化监测里尤其重要两期影像分类样本要分别选不能一套样本用两次。6. 专题提取与分类的验证闭环阈值、混淆矩阵和转移矩阵专题提取和分类最容易做成“出图即结束”图好看但数值经不起追问。把验证环节补上整份报告的可信度会完全不一样。水体提取用 NDWI 做密度分割阈值定在直方图谷底而不是凭经验拍 0植被覆盖度用 NDVI 像元二分模型裸土和纯植被端的 NDVI 值要从影像统计里取不能直接套 0.05 和 0.7 的固定值。Band Math 里写指数表达式时注意波段号对应关系; NDWI 水体指数B3 为绿波段B5 为近红外 (float(b3) - float(b5)) / (float(b3) float(b5)) ; NDVI 植被指数B5 为近红外B4 为红波段 (float(b5) - float(b4)) / (float(b5) float(b4))表达式里先转浮点再运算避免整型相除丢小数。算出指数后用密度分割确定阈值生成掩膜再用 Apply Mask 把水体或植被区域单独提取出来。温度反演走大气校正法或单窗算法输入是大气校正后的热红外波段和地表比辐射率比辐射率按 NDVI 分区赋值水体、植被、建筑分别取不同经验值这一步的参数敏感性比大气校正还高建议先在小区域试算再铺开。分类精度用混淆矩阵验证ENVI 的 Confusion Matrix 工具可以算总体精度和 Kappa 系数Kappa 低于 0.7 的类别要回头查样本。土地利用变化监测用两期分类图做转移矩阵统计各地类之间的转换面积转移矩阵的对角线是未变部分非对角线是转换部分比单独看两期分类图更能说明问题。这一套验证做完报告里的每张图都能对应到一个数值指标别人追问时不用只靠“目视看起来对”。从那以后我每次做这类流程都会在裁剪后先跑一小块试参数、定标后必看 Z-profile、融合后必算信息熵、分类后必出混淆矩阵四道检查缺一道就可能在最后出图时翻车。希望帮到你。本文还有配套的精品资源点击获取