ENVI处理Landsat8遥感影像全流程与避坑指南

发布时间:2026/11/4 4:49:43
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、行列数是否与原影像一致、数据类型是否为浮点或整型。堆栈完成后加载 shp:File 菜单下 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,选中刚生成的 ROI,Mask pixels outside of ROI 这一项选 YES。YES 的含义是 ROI 范围外的像元全部置为 0,NO 则保留原始值只裁空间范围。做专题提取和统计时一般选 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(rf"RADIANCE_MULT_BAND_{band}\s*=\s*([\d.E+-]+)", text) add = re.search(rf"RADIANCE_ADD_BAND_{band}\s*=\s*([\d.E+-]+)", text) print(f"B{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.158
Brovey0.1990.1873.8880.094
HSV63.12013.8505.3390.207
PCA11.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、融合后必算信息熵、分类后必出混淆矩阵,四道检查缺一道就可能在最后出图时翻车。希望帮到你。

本文还有配套的精品资源,点击获取