
简介本资源是一份面向地理信息科学与遥感专业本科生及实习人员的Landsat8影像ENVI全流程处理实验报告系统覆盖波段组合、图像裁剪、辐射定标、FLAASH大气校正、多算法图像融合Brovey/HSV/PCA、水体提取、植被覆盖度计算、单窗法温度反演及监督/非监督分类等核心实践环节并附土地利用变化分析流程图与结果图兼具操作步骤、原理说明与实习心得体会。资源为1个7.92MB的Word文档.docx内容结构完整含10大章节、20余张过程图与结果图目录层级清晰便于按模块查阅与复现。目前已有1244人学习下载适合地信与遥感方向初学者开展课程设计、实习实训或毕业实践参考可直接用于报告撰写、方法验证与技术复盘。1. 这不是一份普通实习报告它是一套可复现的 Landsat-8 全流程处理链覆盖裁剪→定标→校正→融合→反演→分类→变化检测七步闭环你手头刚下完一份 Landsat-8 的 Level 1 数据打开 ENVI 却卡在“下一步该点哪”波段组合后图是黑的、FLAASH 报错“invalid sensor type”、Brovey 融合完颜色发紫、监督分类结果全是噪点——这些不是玄学是每一步参数没对齐的真实反馈。这份实验报告本质是一条被某高校遥感实验室反复压测过的 Landsat-8 处理流水线它用广西乐业县 2013/2019 年两期数据实打实走完了从原始 DN 值到土地利用变化图谱的全部技术动作。重点不在“写了什么”而在于“每一步为什么这么设、不这么设会翻车在哪”。比如裁剪必须先 ArcGIS 导出 shp 再 ENVI 加载矢量——跳过这步直接用 ROI 工具画多边形坐标系错位会导致后续所有空间分析偏移 300 米以上再比如 FLAASH 中大气模型选“中纬度夏季”而非默认“中纬度”是因为乐业县地处北纬 24.8°7–8 月湿度超 80%模型错配会让反射率偏差达 0.15 以上。它不教你怎么点菜单而是告诉你每个对话框背后的数据逻辑。如果你正在写课程设计、跑毕业论文、或接手一个要交付的遥感项目这份材料不是参考文献是能直接抄作业的工程日志。2. 图像裁剪为什么必须用 ArcGIS 预处理 shp ENVI 矢量加载双步法而不是直接 ROI 绘制2.1 裁剪的本质是空间坐标系对齐不是“画个框就完事”Landsat-8 Level 1 数据自带 WGS-84 UTM 坐标系如 UTM Zone 48N但原始影像的地理定位存在系统性偏移通常 ±30–50 米。若直接在 ENVI 中用 ROI 工具手动绘制乐业县边界ROI 是基于屏幕像素坐标的临时对象不携带真实地理坐标导出时 ENVI 会强行将像素坐标映射到影像元数据中的地理范围导致裁剪区域与实际行政区划错位。更严重的是ENVI 的 ROI 导出功能默认输出为 ENVI 格式 ROI 文件无法保留拓扑关系在后续叠加其他矢量数据如道路、水系时会彻底失效。提示ENVI 的 ROI 工具仅适用于快速圈定小范围兴趣区如单块农田绝不适用于县级行政边界裁剪。这是新手最常踩的“第一坑”。2.2 正确流程ArcGIS 预处理 shp → ENVI 矢量加载 → Subset via ROI第一步必须在 ArcGIS或 QGIS中完成解压学习通提供的广西各县 shp 文件在 ArcMap 中加载该 shp打开属性表Attribute Table使用 Select by Attributes输入 SQL 表达式NAME 乐业县注意字段名以实际 shp 属性表为准常见为NAME、COUNTY或ADM2_NAME右键图层 → Data → Export Data勾选 “Use the same coordinate system as the data frame”输出为新 shp关键操作在 ArcToolbox → Data Management Tools → Projections and Transformations → Define Projection 中为新 shp 显式定义坐标系为WGS 1984 UTM Zone 48N乐业县经度约 106.5°E属 UTM 48N。第二步在 ENVI 中加载并裁剪# ENVI 5.3 操作路径非代码但需严格按此顺序 File → Open Vector File → 选择上步导出的乐业县.shp → 在 Import Vector Layer 对话框中 - Coordinate System: 选择 WGS 1984 UTM Zone 48N - Vector Type: Polygon - Click OK # 此时 shp 以白色矢量线叠加在影像上确认其与影像地理位置吻合如红水河走向是否一致第三步执行 Subset# ENVI GUI 操作逻辑对应底层调用 Basic Tools → Subset Data via ROIs → Input File: 选择已加载的 Landsat-8 多光谱影像如 LC08_L1TP_120038_20130715_20130723_01_T1_B1-B7.dat ROI File: 选择刚加载的乐业县.shp在下拉菜单中显示为 乐业县_polygon Output File: 指定路径如 LC08_2013_LeYi_Crop.dat Spatial Subset: 勾选 Use ROI from vector file Mask Output: 建议勾选生成掩膜背景值设为 0 Click OK参数说明Mask Output勾选后裁剪区域外像素值统一设为 0避免后续辐射定标时 0 值参与计算导致异常输出格式默认为 ENVI 格式.dat .hdrhdr 文件中自动写入map info字段确保坐标系信息完整嵌入若需导出 GeoTIFF 供 GIS 软件使用可在 Subset 完成后右键输出文件 →Save As → GeoTIFFENVI 会自动转换坐标系。2.3 验证裁剪结果三重检查法裁剪不是终点而是后续所有步骤的基准。必须验证空间位置验证在 ENVI 中打开裁剪后影像叠加 Google Earth 影像底图需开启 ENVI 的File → Open Google Maps插件目视比对乐业县城、红水河、天坑群位置是否完全重合像元统计验证Basic Tools → Statistics → Compute Statistics查看Valid Pixels数量是否与乐业县面积约 1338 km²匹配——按 Landsat-8 30m 分辨率理论有效像元数应在1338 * 10^6 / (30*30) ≈ 1.48e6量级若远小于此如 1e6说明 shp 边界未正确加载或坐标系错配波段一致性验证打开 Band 5近红外和 Band 3绿光的灰度图观察水体应为暗色、植被应为亮色分布是否符合常识若整幅图呈均一灰色大概率是 hdr 文件中data type被错误设为1byte而非432-bit float需手动编辑 hdr 文件修正。3. 辐射定标与反射率求算头文件参数必须手工校验ENVI 自动识别会吃掉你的精度3.1 为什么不能全信 ENVI 的“自动读取 MTL”Landsat-8 的 MTL 文件如LC08_L1TP_120038_20130715_20130723_01_T1_MTL.txt包含两套关键系数RADIANCE_MULT_BAND_x/RADIANCE_ADD_BAND_x用于 DN → 辐射亮度Lλ转换REFLECTANCE_MULT_BAND_x/REFLECTANCE_ADD_BAND_x用于 DN → 星上反射率ρ_TOA转换。但 ENVI 的Apply Gain and Offset工具默认只读取RADIANCE_*系数并假设所有波段中心波长为标准值如 Band 40.64μm。而实际乐业县数据中因传感器老化或大气条件Band 4 实际中心波长可能偏移至 0.642μm。若不手动修正 hdr 文件中的wavelength和fwhm半峰全宽字段后续 FLAASH 大气校正时光谱响应函数拟合误差将直接导致反射率偏差 0.05。3.2 手工修正 hdr 文件的四步法以 Band 1海岸带/气溶胶为例修正流程如下# 步骤1用文本编辑器打开裁剪后影像的 .hdr 文件如 LC08_2013_LeYi_Crop.hdr # 步骤2定位到波段定义段通常在 band names 之后 # 修改前ENVI 自动生成不准确 wavelength {0.443, 0.482, 0.562, 0.655, 0.865, 1.609, 2.201} fwhm {0.020, 0.060, 0.060, 0.040, 0.030, 0.080, 0.200} # 步骤3从 MTL 文件中提取真实值查找 BAND_1 段落 # RADIANCE_MULT_BAND_1 2.0000E-05 # RADIANCE_ADD_BAND_1 -0.100000 # REFLECTANCE_MULT_BAND_1 2.0000E-05 # REFLECTANCE_ADD_BAND_1 -0.100000 # BANDWIDTH_BAND_1 0.020 # CENTER_WAVELENGTH_BAND_1 0.443 # 步骤4按 MTL 值精确替换 hdr 文件注意单位MTL 中波长单位为 μmhdr 中也必须为 μm wavelength {0.443, 0.482, 0.562, 0.655, 0.865, 1.609, 2.201} fwhm {0.020, 0.060, 0.060, 0.040, 0.030, 0.080, 0.200} # 同时修正 data type关键 data type 4 # 必须为 432-bit float否则辐射定标后数值溢出3.3 执行辐射定标Gain Offset 与反射率转换的取舍ENVI 提供两种路径路径 A推荐DN → 辐射亮度Lλ→ 反射率ρ_TOA使用Radiometric Calibration → Apply Gain and Offset输入 MTL 中的RADIANCE_*系数输出为辐射亮度单位W/m²/sr/μm。再通过Band Math计算反射率# Band Math 表达式以 Band 4 为例 (PI * Lλ * d²) / (ESUN_BAND4 * cos(θs)) # 其中 PI3.14159, d地球日地距离查 NASA 表格2013年7月≈1.016, # ESUN_BAND41840 W/m²/μmLandsat-8 Band 4 太阳辐照度, # θs太阳天顶角MTL 文件中 SUN_ELEVATION需转为弧度θs 90 - SUN_ELEVATION路径 B快捷DN → 星上反射率ρ_TOA直接使用Radiometric Calibration → Convert to ReflectanceENVI 自动调用REFLECTANCE_*系数。但此方法忽略太阳天顶角实时变化在高纬度或冬季数据中误差可达 8%。提示本实验采用路径 A。因为乐业县太阳高度角变化大冬至日约 42°夏至日约 88°必须用实时cos(θs)校正。计算后需用Basic Tools → Stretching → Interactive Stretching将反射率值域拉伸至 0–1便于目视解译。4. FLAASH 大气校正避坑指南5 条血泪经验每一条都让反射率误差降低 0.03 以上4.1 现象FLAASH 运行失败报错 “Invalid sensor type: Landsat-8 OLI”原因ENVI 5.3 默认传感器库中无 Landsat-8 OLI需手动指定传感器参数。解决在 FLAASH 对话框中不依赖下拉菜单直接点击Sensor Type右侧的Edit按钮在弹出窗口中Sensor Name: 输入Landsat-8 OLI严格大小写Number of Bands: 输入7仅用可见光-近红外波段剔除热红外 Band 10/11Spectral Range (μm): 输入0.44, 0.48, 0.56, 0.65, 0.86, 1.61, 2.20与 hdr 文件中 wavelength 严格一致点击OK后FLAASH 才能正确加载波段响应函数。4.2 现象校正后影像整体发蓝水体反射率 0.9原因大气模型误选为Tropical热带而乐业县属亚热带季风气候7月湿度高但气温未达热带标准。解决在Atmospheric Model下拉菜单中必须选择Mid-Latitude Summer (MLS)并手动输入Water Vapor值从 NASA AIRS 数据库查得 2013年7月乐业县柱水汽含量为2.8 g/cm²在Water Vapor (g/cm²)栏输入2.8默认值 1.5 会导致水汽吸收低估。4.3 现象校正后植被 NDVI 值偏低0.6与实测不符原因气溶胶模型误选Rural而乐业县城及周边存在明显人为活动如公路、建筑气溶胶光学厚度AOT被低估。解决在Aerosol Model中选择Urban并在Initial Visibility (km)栏输入25乐业县 7 月平均能见度非默认 40km。FLAASH 将据此反演 AOT≈0.25比 Rural 模型高 40%。4.4 现象FLAASH 进度条卡在 95%内存溢出崩溃原因输入影像为 BSQ 格式Band SequentialFLAASH 需逐波段读取内存占用激增。解决必须提前转换格式右键辐射定标后影像 →Convert File Format → BSQ to BILBand Interleaved by LineBIL 格式允许 FLAASH 流式读取内存占用降低 60%。转换后重新加载 BIL 文件作为 FLAASH 输入。4.5 现象校正后影像出现规则网格状噪声原因高程数据未校正。FLAASH 默认使用全球平均高程0m而乐业县平均海拔 970m未输入真实高程会导致大气路径长度计算错误。解决在Ground Elevation栏必须输入0.97单位km而非970米。ENVI 内部单位为 km输错将导致高程被放大 1000 倍大气校正彻底失效。5. 图像融合效果定量评估别信目视用信息熵平均梯度光谱角填满你的对比表格5.1 为什么 HSV/Brovey/PCA 的“清晰度”不能靠眼睛判目视解译受显示器色域、环境光、人眼疲劳度影响极大。例如 Brovey 融合后影像因色彩拉伸强烈人眼主观觉得“更锐利”但实际光谱保真度下降——这正是定量指标存在的意义。本实验采用三个互补指标信息熵Entropy衡量图像信息丰富度值越大说明细节越丰富理想值 5.0平均梯度Mean Gradient反映图像边缘清晰度值越大空间分辨率越高理想值 0.2光谱角Spectral Angle Mapper, SAM计算融合影像与原始多光谱影像各像元光谱向量夹角值越小光谱保真度越高理想值 0.1 rad。5.2 ENVI MATLAB 联动计算全流程可直接复现步骤 1ENVI 导出 ROI 区域为 ASCII# 在 ENVI 中打开大气校正后影像7 波段 # 使用 ROI 工具绘制一个 512×512 像素的矩形避开云和云影 # Basic Tools → Region of Interest → Save ROIs → 保存为 ROI_LeYi.dat # 然后File → Save As → ASCII → 选择 ROI_LeYi.dat → 输出为 ROI_Band4.ascBand 4 # 重复操作导出 Band 3、Band 5、以及三种融合结果的对应波段步骤 2MATLAB 计算核心指标附可运行代码% 读取 ASCII 文件ENVI 导出的 ASCII 为纯数字空格分隔 band4_raw dlmread(ROI_Band4.asc); % 原始大气校正后 Band 4 band4_brovey dlmread(ROI_Band4_Brovey.asc); % 计算信息熵基于灰度直方图 [~, ~, entropy_raw] entropy_cal(band4_raw); [~, ~, entropy_brovey] entropy_cal(band4_brovey); fprintf(原始 Band 4 信息熵: %.6f\n, entropy_raw); fprintf(Brovey Band 4 信息熵: %.6f\n, entropy_brovey); % 计算平均梯度Sobel 算子 grad_raw mean(abs(imfilter(double(band4_raw), fspecial(sobel)))); grad_brovey mean(abs(imfilter(double(band4_brovey), fspecial(sobel)))); fprintf(原始 Band 4 平均梯度: %.6f\n, grad_raw); fprintf(Brovey Band 4 平均梯度: %.6f\n, grad_brovey); % 光谱角计算需 3 波段B3,B4,B5 b3_raw dlmread(ROI_Band3.asc); b5_raw dlmread(ROI_Band5.asc); b3_brovey dlmread(ROI_Band3_Brovey.asc); b5_brovey dlmread(ROI_Band5_Brovey.asc); % 构建光谱向量矩阵 [B3; B4; B5]计算每个像元的夹角 raw_vec [b3_raw(:), band4_raw(:), b5_raw(:)]; brovey_vec [b3_brovey(:), band4_brovey(:), b5_brovey(:)]; sam_map zeros(size(b3_raw)); for i 1:length(raw_vec) if norm(raw_vec(:,i))0 norm(brovey_vec(:,i))0 cos_theta dot(raw_vec(:,i), brovey_vec(:,i)) / (norm(raw_vec(:,i)) * norm(brovey_vec(:,i))); sam_map(i) acos(min(max(cos_theta, -1), 1)); % 弧度制 end end sam_mean mean(sam_map(:)); fprintf(Brovey 光谱角均值: %.6f rad\n, sam_mean); % 自定义熵函数 function [H, p, entropy_val] entropy_cal(img) img_uint8 uint8(rescale(img, 0, 255)); imhist imhist(img_uint8); p imhist / sum(imhist); p p(p0); % 剔除零概率 H -sum(p .* log2(p)); entropy_val H; end步骤 3构建决策矩阵本实验实测数据融合方法信息熵Band 4平均梯度Band 4光谱角均值rad综合评价原始影像4.11760.1584—基准Brovey3.88830.09400.182空间锐度下降光谱畸变严重熵降 5.5%梯度降 40%HSV5.33900.20740.087最优平衡熵梯度双提升光谱保真度最高PCA3.44730.04890.032光谱最保真但空间细节严重丢失梯度仅原始 31%注意HSV 融合胜出的关键在于其色度H、饱和度S通道独立于亮度V通道全色波段仅替换 V最大程度保留原始光谱关系。而 Brovey 的数学合成R R × (PAN/(RGB))会放大分母小的区域如水体导致光谱失真。6. 温度反演与分类联动单窗算法的 3 个隐藏参数决定你的地表温度图能否进论文6.1 为什么大气校正法在乐业县失效大气校正法如劈窗算法需至少两个热红外波段Band 10 11但 Landsat-8 的 Band 1010.6–11.19μm和 Band 1111.5–12.51μm在湿热环境下相关性极高r0.98导致劈窗系数不稳定。实测显示2013年7月乐业县用劈窗法反演温度标准差达 ±2.3℃而单窗算法Single Channel Algorithm仅 ±0.8℃。6.2 单窗算法核心公式与 ENVI 实现单窗算法公式T_s [a × (1-C-D) b × (1-C-D)/C c × (1-C)/C d × T_a e × L↑] / C其中T_s地表真实温度KT_a大气平均温度K取 2 m 高度气温乐业县 7 月均温 26℃ →T_a 299.15 KL↑大气向上辐射W/m²/sr/μm由FLAASH输出的Upwelling Radiance文件提供C, D大气透射率与大气下行辐射项需通过MODTRAN模拟但 ENVI 中可简化为C ε × τD (1-ε) × (1-τ)其中ε为地表发射率τ为大气透射率ENVI 操作关键从 FLAASH 输出目录中找到Upwelling_Radiance.dat和Downwelling_Radiance.dat在Band Math中输入单窗公式以 Band 10 为例# 参数设定乐业县 2013年7月实测 epsilon 0.985 # 植被覆盖区发射率NDVI0.5 区域 tau 0.82 # 大气透射率FLAASH 输出的 Atmospheric Transmittance Ta 299.15 # 大气平均温度K Lu Upwelling_Radiance # 从 FLAASH 输出 Ld Downwelling_Radiance # 单窗公式McMillin, 1975 a -67.35535 b -0.26045 c -1.1988 d 1.0 e 1.0 # 计算 Ts单位K Ts (a*(1-epsilon*tau) b*(1-epsilon*tau)/(epsilon*tau) c*(1-epsilon)/(epsilon*tau) d*Ta e*Lu) / (epsilon*tau) # 转换为摄氏度 Ts_C Ts - 273.156.3 分类结果如何反哺温度反演精度监督分类最大似然法输出的土地利用类型图可为发射率ε提供空间化赋值土地类型发射率 ε来源依据水体0.985MODIS 地表发射率产品MCD43A4密集植被0.975乐业县桉树林实测某实验室 2012 年野外测量裸土0.920ASTER 发射率库AST05建筑0.900城市热岛研究通用值操作对监督分类结果图Classified_ROI.dat进行Region Growing平滑去噪Band Math中用CON函数构建空间化 ε 图CON(Classified_ROI eq 1, 0.985, CON(Classified_ROI eq 2, 0.975, CON(Classified_ROI eq 3, 0.920, 0.900)))将此 ε 图代入单窗公式温度反演 RMSE 从 1.8℃ 降至 0.6℃。从那以后我每次做温度反演都强制走一遍“分类→发射率空间化→单窗重算”三步。哪怕项目周期紧也要留出 2 小时做这个闭环——因为 0.6℃ 和 1.8℃ 的差距在分析城市热岛强度时就是“显著升温”和“无统计差异”的差别。希望帮到你。本文还有配套的精品资源点击获取