简介面向遥感与地信专业学习者的ENVI处理Landsat8影像实习报告围绕卫星影像从预处理到专题制图的完整流程展开适合课程实验、实习报告撰写与软件操作复盘。内容覆盖波段组合、裁剪拼接、辐射定标与反射率求算、大气校正及比较并延伸到Brovey、HSV、主成分融合的定性与定量对比以及水体提取、植被覆盖度、温度反演、监督与非监督分类和土地利用变化分析。压缩包内为1个docx文档约7.92MB以图文步骤、结果图和实习心得体会组织便于按目录查阅关键操作与成图效果。已有1246人学习可据此对照复现实验流程、理解参数选择与结果评价也可作为地信遥感实习的参考范例。1. 一份 ENVI 遥感实验报告到底能复现什么从 DN 到专题图拿到一份标着 ENVI 技术的 Landsat 8 影像处理实验报告先别被几十页截图吓住它真正值钱的是从原始 DN 到专题结果的一条可复现链路。对遥感、地信专业的人来说这类实习报告最怕只有结果图没有参数这份材料把裁剪、波段合成、辐射定标、FLAASH 大气校正、融合、水体与植被提取、温度反演、分类和土地利用变化都串在了一条线上。它适合三类人正在做遥感课程设计、需要一份能对照操作的全流程底稿已经会用 ENVI 但参数总填不稳、想看清楚每一步为什么这么设以及准备把两期影像拿来做变化监测、却卡在预处理和结果验证上的从业者。报告里的实验区是模拟县域尺度数据是 2013 年和 2019 年两期 Landsat 8 影像流程完整结果图也多。需要提醒的是它更像一份“操作记录 结果对照”的实验报告不是万能模板阈值、高程、气溶胶模型这些参数换到你的研究区必须重算。2. 从 DN 值到反射率裁剪、波段合成与辐射定标的参数链2.1 先定实验区与波段顺序别急着点裁剪这份报告的第一步不是直接辐射定标而是先确定实验区范围再做裁剪和波段合成。这个顺序对新手很友好整景 Landsat 8 覆盖范围大直接定标和大气校正会白白消耗内存后面做融合和分类也容易被周边地物干扰。报告里的做法是先在 ArcMap 里用矢量边界裁剪出模拟实验区只保留目标县域的 shp 记录导出 shapefile 后再进 ENVI。这里有一个细节值得抄属性表里不要留多余行政区否则 Subset Data via ROIs 会把整张矢量当感兴趣区裁出来的结果边界会很乱。波段合成放在裁剪之后用 Basic Tools 里的 Layer Stacking把 Band 1 到 Band 8 按顺序叠成一个多波段文件。顺序必须从 1 到 8 正序排列不然后面 Edit Header 填中心波长时会错位FLAASH 读进去的波长曲线和实际波段对不上结果就是“校正完颜色怪但不报错”这类玄学问题多半是波段顺序埋的雷。报告里还提醒如果后续只做多光谱分析可以在这一步只保留 Band 1 到 Band 7把 Band 8 全色波段单独留着做融合我一般也会这么拆多光谱和全色分开管理后面融合时不容易选错输入。裁剪的实操路径是打开裁剪好的多波段影像显示 RGB 假彩色加载矢量边界确认白色线条落在目标范围上再走 File 里的 Export Active Layer to ROIs最后用 Basic Tools 的 Subset Data via ROIs 完成裁切。对话框里有一个 “Mask pixels outside of ROI” 之类的选项报告里改成 Yes这样边界外像元会被掩掉。裁完先别急着往下跑打开影像看统计值确认没有大面积 0 值或异常黑边如果边界外全是 0后面辐射定标会把 0 一起算进去统计指标会被拉低。提示裁剪前把矢量坐标系统和影像统一到同一投影报告里最终统一到 WGS-84。坐标不一致时 ENVI 可能不报错但 ROI 会偏移。2.2 头文件里的中心波长、增益偏置和 BIL 转换辐射定标不是点一下按钮就完事Landsat 8 的元数据必须先进头文件。报告里的做法是右键裁剪好的影像选 Edit Header把各波段的中心波长和波长范围按 MTL.txt 填进去单位改成 Micrometers。这里最容易翻车的是单位有人填了纳米却没改单位FLAASH 读到的波长范围会偏到离谱大气校正模型直接失真。填完以后回到波段列表逐个核对尤其是 Band 1 到 Band 7 的中心波长顺序别只看第一行。接下来用 Apply Gain and Offset 做辐射定标增益和偏置从 MTL.txt 里对应波段读取。报告里的输出结果是 7 个波段也就是把全色波段排除在定标结果之外方便后面单独处理。定标后文件类型要检查FLAASH 更喜欢 BIL 格式报告里专门把 BSQ 转成 BIL这一步不是形式主义BIL 按行交错存储FLAASH 读取辐射亮度数据时更稳尤其是大影像BSQ 直接喂进去可能报错或读错波段。操作项报告中的设置复现时检查点波段顺序Band 1 到 Band 8 正序错一位后面全错中心波长单位Micrometers不能混用纳米定标输出波段7 个多光谱波段Band 8 单独留作全色文件格式BSQ 转 BILFLAASH 输入前必查坐标系WGS-84与矢量边界一致2.3 裁剪与波段合成的可复现步骤把上面的动作拆成固定顺序复现时不容易漏在 ArcMap 或同类 GIS 工具里加载实验区矢量检查属性表只保留目标记录导出新的 shapefile。打开 ENVI用 Layer Stacking 把 Band 1 到 Band 8 合成一个文件记录波段顺序。加载矢量边界显示 RGB 影像确认边界覆盖范围。用 Export Active Layer to ROIs 把矢量转成 ROI。用 Subset Data via ROIs 裁剪边界外像元设为掩膜。打开裁剪结果Edit Header 填中心波长和波长范围单位改成 Micrometers。用 Apply Gain and Offset 输入增益和偏置输出 7 波段辐射定标文件。把输出格式转成 BIL检查像元统计值是否在合理范围。这套顺序里第 6 步和第 7 步最值得慢下来。中心波长填错FLAASH 不会立刻报错只会让反射率曲线整体跑偏增益偏置填错反射率可能出现负值或者大面积饱和。报告里有一句“记得检查以下中心波长修改的信息是否正确”这句话不是客套是血泪经验。定标完成后抽几个典型地物看光谱曲线水体在可见光到近红外应该整体偏低植被在近红外应该明显抬起如果曲线形状完全反了先回头查波段顺序不要急着改大气参数。3. FLAASH 大气校正与融合评价BIL、参数表和三组对照3.1 FLAASH 输入前为什么必须转 BIL报告里大气校正用的是 FLAASH输入是辐射定标后的 BIL 文件。很多人到这里会问BSQ 也能打开为什么非要转原因是 FLAASH 对输入辐射亮度文件的组织方式有要求BIL 按波段交错存储读取多波段时更符合它的内部调度BSQ 在大影像上容易出现读取异常表现可能是波段数识别错误、波长文件加载失败甚至跑完得到一张全黑图。报告里先把文件类型从 BSQ 转到 BIL再打开 Spectral-FLAASH这个顺序不要反过来。打开 FLAASH 后在 Model Input Parameters 对话框里选 Input Radiance Image把 BIL 文件放进去。报告里有一个参数值填 10这是输入辐射亮度的缩放因子具体填法要看你定标输出的量纲如果定标结果已经缩放到 0 到 1 附近这个值还按默认走输出反射率可能整体偏小。我的习惯是先用小范围影像试跑抽一条植被光谱和一条水体光谱确认反射率量级在 0 到 1 之间再跑全图。FLAASH 不是黑匣子但它对输入量纲很敏感量纲错了后面融合和分类都会跟着偏。3.2 传感器、气溶胶与高程参数怎么填报告里的参数表可以当作一个县域尺度 Landsat 8 的起点传感器类型选 Landsat-8 OLI中心经纬度在加载 BIL 后自动填充实验区平均海拔按 970 m 填大气模型选中纬度夏季也就是 MLS气溶胶模型选 Urban时间从 MTL.txt 里查影像成像时间不要选文件生成时间。这个区别很关键文件生成时间通常比成像时间晚气溶胶和太阳几何参数会错位校正后的地表反射率会出现整体偏移。Multispectral Settings 里报告里第一个框选第七波段第二个框选第一波段用来限定波段范围。不同版本的对话框顺序可能不一样填完以后回看波长曲线确认短波端和长波端没有颠倒。高程不要随手填一个默认值模拟实验区平均海拔 970 m 是报告里查到的值换到你的研究区必须重取海拔差几百米大气纠正量会有可见差异。气溶胶模型也不是随便选城区周边选 Urban植被覆盖高的区域可以选 Rural沙漠或裸地多的地方另说。报告里的实验区包含城镇、农田、水体和林地选 Urban 是合理的折中。注意FLAASH 路径里不要放中文和空格输入输出都放在英文目录下。报错信息经常只给一行翻半天不如先排除路径问题。3.3 融合方法选择Brovey、HSV、PCA 的边界大气校正完成后报告进入图像融合。融合的目的是把多光谱波段和 Band 8 全色波段合在一起提高空间分辨率同时尽量保留光谱信息。报告里对比了 Brovey 变换、HSV 变换和主成分变换另外还提到 CN Spectral Sharpening 和 Gram-Schmidt Pan Sharpening。实际复现时不需要全都跑一遍先明确你的目标如果看重空间纹理和目视判读HSV 和 Brovey 都能出效果如果看重光谱保持PCA 和 Gram-Schmidt 更稳如果只是做水体提取融合反而可能引入光谱畸变不如直接用大气校正后的多光谱影像。Brovey 变换的输入是 RGB 图像和全色波段报告里用大气校正后的 Band 5、Band 4、Band 3 合成 RGBBand 8 作高分辨率波段重采样用最邻近法。Brovey 的光谱保持相对好但受波段限制颜色容易偏。HSV 变换先把 RGB 转 HSV 颜色空间用全色波段替换亮度分量再转回 RGB报告里同样用 543 合成和 Band 8重采样也是最邻近法。HSV 的纹理改善明显居民地边界更清楚但光谱损失比 Brovey 大。PCA 变换先对多光谱做主成分再用全色替换第一主成分最后反变换报告里的目视结果是 PCA 反而更模糊颜色更艳说明第一主成分和全色波段的匹配没做好或者全色波段拉伸不到位。报告里专门提到“对比八波段进行拉伸变换”因为 Band 8 的反射率被设定在 0 到 1 之间直接拿去融合会和高分辨率影像的量纲不匹配。这个细节很实用先把 Band 8 拉伸到和多光谱一致的显示范围再做融合颜色会稳很多。融合后不要只看一张图报告里做了定性对比和定量对比定性看纹理和地物边界定量看均值、标准差、信息熵和平均梯度。下面这张表是报告里 Band 5 的样例数据注意不同方法的输出量纲不一样直接比均值会误判。影像类别波段均值标准差信息熵平均梯度融合前B510.9360804.6500954.11763790.1584453BroveyB50.1986900.1870263.88830100.0940486HSVB563.11972513.8501935.33899690.2074093PCAB511.4311083.6468053.44726210.04886233.4 定量评价均值、标准差、信息熵、平均梯度报告里的定量评价走的是 ENVI 统计加 MATLAB 编程的路子先用 Basic Tools 的 Compute Statistics 算均值和标准差再把影像导出成 ASCII 像元文件用 MATLAB 算信息熵和平均梯度。这个流程能跑通但导出 ASCII 再读入很费时间尤其是大区域。我一般会直接用 Python 读 ENVI 导出的文本或数组算完指标再回填表格。下面这段脚本适合处理已经导出成二维数组的单个波段输入是 ASCII 文本或者 numpy 数组输出四个指标。import numpy as np def read_band(path): # ASCII 导出文件按空白分隔首行可能是行列数按实际格式跳过 arr np.loadtxt(path, dtypenp.float64, skiprows0) return arr def band_metrics(band, nodata-9999, bins256): x band.astype(np.float64).ravel() x x[np.isfinite(x)] x x[x ! nodata] if x.size 0: return None mean x.mean() std x.std(ddof0) # 信息熵用 256 级直方图统计概率避免直接对原始 DN 归一化 hist, _ np.histogram(x, binsbins) p hist / hist.sum() p p[p 0] entropy -np.sum(p * np.log2(p)) # 平均梯度要求二维数组先恢复形状再算 h, w band.shape img band.astype(np.float64) gy, gx np.gradient(img) grad np.sqrt((gx ** 2 gy ** 2) / 2.0) grad np.nanmean(grad) return mean, std, entropy, grad if __name__ __main__: band read_band(band5_ascii.txt) result band_metrics(band, nodata-9999, bins256) print(mean%.6f std%.6f entropy%.6f grad%.6f % result)代码里的参数含义很直接nodata按导出时设置的无效值填报告里 ASCII 小数点位数设为 0无效值通常用 -9999bins256是信息熵的统计级数级数越多熵值越大比较不同影像时必须统一np.gradient算的是像元梯度平均梯度越大通常代表边缘越清晰但噪声也会拉高梯度所以要和目视结合看。需要强调的是融合前后的均值不可直接横比Brovey 输出被缩放到 0 到 1HSV 输出在 0 到 255量纲不同比较前要么统一拉伸要么只看同一方法不同区域的相对变化。报告里的表能说明趋势但不能拿 Brovey 的均值 0.198 去和融合前的 10.936 比高低那是单位不同不是信息量不同。4. 避坑排查FLAASH、融合和掩膜环节的五次翻车记录4.1 参数与头文件类问题现象一辐射定标后反射率全是 0 或出现大片负值。原因通常是增益偏置填错波段或者把 DN 值直接当反射率用了。Landsat 8 的 MTL.txt 里每个波段都有对应的增益和偏置Apply Gain and Offset 要按波段逐个对应不能只填第一行。另一个常见原因是输出量纲没检查定标结果本该是辐射亮度却被误当成 0 到 1 的反射率。解决方法是抽一个水体像元和植被像元看数值范围再回查头文件里的波长和增益表如果整幅图都是 0先看输入波段数是不是和增益偏置数量一致。现象二FLAASH 跑完一片黑或者报错说找不到波长文件。原因多半是输入文件还是 BSQ或者 Edit Header 里的中心波长没填全。报告里专门把 BSQ 转 BIL就是为了避开这个坑。还有一种情况是路径里有中文FLAASH 读取临时文件失败报错信息很短。解决方法是把输入输出放到英文目录确认 BIL 文件能在 ENVI 里正常显示再打开 Edit Header 逐波段核对波长单位和数值。不要迷信“默认参数”FLAASH 对头文件很敏感。现象三大气校正后植被光谱反而变平水体反射率异常高。原因常见于时间参数选错。MTL.txt 里有影像成像时间和文件生成时间报告里明确要求选影像生成时间也就是成像时刻不是文件处理时间。时间错位会影响太阳几何和气溶胶估计校正后光谱形状会拧。另一个原因是高程填了默认值模拟实验区平均海拔 970 m换到山区不重新取高程大气纠正量会偏。解决方法是回查 MTL.txt 的成像时间重新填平均海拔气溶胶模型按实验区类型选 Urban 或 Rural再用 ZProfile 对比校正前后的典型地物曲线。现象四融合后颜色失真居民地边缘出现块状锯齿。原因有两个Band 8 没有拉伸到和多光谱一致的范围或者重采样选了最邻近法但影像本身几何配准有偏差。报告里用最邻近法是因为它保留原始像元值适合分类前的融合但目视效果会有锯齿。解决方法是先对 Band 8 做线性拉伸把 0 到 1 映射到多光谱的显示范围再跑 Brovey 或 HSV如果锯齿严重换双线性或三次卷积做对比但分类用途要谨慎重采样会改变像元光谱。融合后不要只看 RGB抽 Band 5 和 Band 4 看光谱曲线有没有被拉断。4.2 结果与掩膜类问题现象五水体掩膜把河流边缘一起吞掉或者水体与背景同为黑色。报告里提到实验区有一条河在县域边缘掩膜后和背景一起变黑这是典型的边界问题。原因是指定阈值时用了全局固定值边缘水体混合像元多NDWI 或报告里用的密度分割阈值 0.2256 不一定适用整幅图。解决方法是先做密度分割看直方图双峰再分区域定阈值对边缘河流单独做缓冲区掩膜后叠加原图检查不要只看一张黑白图。另一个补救办法是用形态学开闭运算去掉小斑块再把河流矢量叠上去做人工修正。这五条翻车记录里前三条集中在预处理和大气校正后两条集中在融合和掩膜。共同点是ENVI 很少直接告诉你“参数错了”它只会给你一张看起来能看但数值不对的图。我的习惯是每跑完一步就抽三个典型地物看光谱和统计值水体、植被、建设用地各一个曲线形状不对就停下来查不要带着错误参数一路跑到分类。后悔药很贵预处理阶段多花十分钟后面少熬一晚上。5. 专题反演与分类水体、植被覆盖度、温度反演和变化监测5.1 水体提取与植被覆盖度NDWI/NDVI 阈值和掩膜报告里的水体提取用 Band Math 做指数运算再用 Density Slice 做密度分割最后用 Apply Mask 生成水体掩膜。原文提到“根据 NDVI 获得的数据来确定掩膜的最大值设置为 0.2256”这里要留个心眼提取水体更常用的是 NDWI 或 MNDWINDVI 对水体不如对植被敏感。如果沿用报告里的阈值要把它当成该实验区的经验值不是通用阈值。复现时建议先算 NDWI公式用(B3 - B5) / (B3 B5)看直方图双峰位置再把阈值定在谷底附近如果影像有山体阴影阴影在 NDWI 上也可能偏高需要叠加坡度或人工检查。植被覆盖度可以用 NDVI 做初步分级公式是(B5 - B4) / (B5 B4)。报告里没有展开像元二分模型但常见做法是用 NDVI 的置信区间取端元累积频率 5% 和 95% 附近的 NDVI 作为裸地和纯植被端元再算覆盖度。阈值不要拍脑袋先看研究区有没有大面积水体或云这些会污染端元统计。水体掩膜和植被覆盖度最好分开做不要用一个掩膜套所有专题否则边缘混合像元会被反复误判。专题常用指数报告中的处理复现注意水体NDWI / MNDWIBand Math 密度分割 掩膜阈值按直方图谷底定边缘河流单独检查植被覆盖度NDVINDVI 分级与统计先剔除水体、云和阴影不透水面NDBI 或分类后提取监督分类辅助与建设用地样本同步检查5.2 温度反演大气校正法与单窗算法的参数差异报告里列了两种温度反演路线大气校正法和单窗算法。大气校正法先用 Band 10 的辐射亮度算亮温再结合大气透射率、上行辐射和下行辐射做地表温度反演单窗算法则依赖亮温、地表比辐射率和大气平均作用温度等参数。两条路线都需要先把 DN 值转成辐射亮度再转亮温公式里都有常数项复现时不要手算一半就换工具。报告里的结果图做了温度分级分类反演图用来分析不同地类的温度差异这个思路比单看一张温度图更有用。实操上我一般会先做 Band 10 的辐射定标确认亮温范围合理再用 NDVI 阈值法估地表比辐射率水体、植被、建设用地的比辐射率分别取值混合像元按植被覆盖度加权。大气透射率和平均气温从同期气象数据或大气校正结果里取取不到就用报告里的参数做敏感性分析。温度反演最怕的是把亮温当气温亮温是传感器收到的辐射温度不是地表真实温度也不是气象站气温。报告里的分类反演图能帮你检查空间分布是否合理水体温度通常较稳定建设用地区域偏高植被区偏低如果结果完全反过来先查 Band 10 定标和比辐射率。5.3 分类与土地利用变化ISODATA、监督分类和转移矩阵分类部分报告里先做 ISODATA 非监督分类再做监督分类监督分类里对比了最大似然法和神经网络。ISODATA 的关键参数是类别数、迭代次数和类别合并阈值类别数不要一上来设太大先按研究区主要地类设 6 到 8 类迭代 10 到 20 次看类别分割是否稳定。监督分类的重点在样本兴趣点每类样本要分散不能全扎在一小块样本数量要够但也不能把边界混合像元全选进去。报告里监督分类结果图展示了最大似然和神经网络两版复现时建议先跑最大似然它参数少、解释性强神经网络适合样本量大且地物光谱重叠严重的情况。土地利用变化监测用两期分类图做转移矩阵报告里给了步骤和土地变换分析。复现时要注意两期影像的辐射一致性2013 年和 2019 年不是同一天成像大气条件和物候都不同直接分类再叠加会把物候差异当成地类变化。常见做法是先做相对辐射归一化或者用同一季节影像分类后做众数滤波去碎斑再统计转移矩阵。变化分析不要只给一张变化图要给出“建设用地转入来源”“水体转出方向”这类具体转移项否则报告看起来完整实际结论很虚。报告末尾有实习心得这部分看似软但复现时把参数、报错和修正过程记下来比只抄结果图有用得多。6. 结果验证与复现习惯用 ZProfile 和一张指标表收口验证大气校正不要只看 RGB 好不好看打开 ZProfile 抽典型地物看光谱曲线更直接。报告里对比了原图像、辐射定标后和大气校正后的 ZProfile校正后的植被曲线在近红外应该抬起水体曲线整体低且平建设用地曲线介于两者之间。如果校正后植被近红外反而被压平先查气溶胶模型和高程再查成像时间。融合验证则用一张小表收口同一区域、同一波段记录均值、标准差、信息熵和平均梯度同时保留目视截图量纲不同的融合结果先统一拉伸再比不要拿 Brovey 的 0 到 1 输出去和原始 DN 比均值。分类验证别省混淆矩阵。监督分类跑完以后重新抽一批独立样本不要用训练样本自评Kappa 系数和各类生产者精度、用户精度都记下来。变化监测至少做两期分类精度对比哪一期精度低变化矩阵的可信度就要打折。我现在的习惯是每做完一个专题就在工程目录里留一个params.txt记下影像日期、波段顺序、FLAASH 参数、融合方法、阈值和软件版本下次换研究区先翻这个文件比翻聊天记录靠谱。从那以后我每次跑 ENVI 全流程都强制走一遍“裁剪—定标—大气校正—融合—专题—精度”的检查点哪怕时间紧也不跳步因为预处理阶段省下的每一步后面都会以另一种方式找回来。希望帮到你。本文还有配套的精品资源点击获取
阅读完成 · 觉得有帮助?