ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

ENVI遥感图像处理:从数据准备到信息提取的五个关键环节

ENVI遥感图像处理:从数据准备到信息提取的五个关键环节 简介这是一份面向遥感、GIS及地信专业学习者的ENVI遥感图像处理PDF资料重点讲解遥感图像预处理中的图像裁剪与掩膜操作适用于入门至中级用户在实习或项目中快速上手。内容以实习报告形式完整呈现规则分幅裁剪、不规则分幅裁剪手动绘制感兴趣区、矢量数据生成感兴趣区以及创建/应用掩膜文件的具体操作流程并配以参数设置说明和操作心得便于对照练习。资源为1个PDF文档包体约3.12MB轻量易下载适合在手机或电脑上随时查阅。目前已有1633人学习使用适合需要系统梳理ENVI操作步骤、完成实习作业或备考相关实验课程的读者。1. ENVI遥感图像处理从PDF菜单到五个必做的落地环节拿到《ENVI遥感图像处理.pdf》这类文档的人多半手上压着一个具体任务一批Landsat影像要出植被指数图或者GF-5高光谱数据要做蚀变信息提取。但遥感图像处理不像普通图像处理从打开影像到拿到能写进报告的成果中间隔着数据格式确认、辐射定标、大气校正、几何校正、信息提取五个环节任何一个环节的参数不对后面的结果全是白算。这篇文章按一线做项目的顺序把这五个环节的ENVI操作、参数依据和验证方式逐段讲清。适合刚装好ENVI找不到入口的新手也适合被某一环节卡住、想确认参数边界的熟手——PDF给的是菜单路径这里补的是路径背后的判断依据。2. ENVI环境与数据准备安装选型、格式转换与经纬度定位2.1 ENVI版本选型与安装别只看最新版选定版本之前先确认手头数据源。做Landsat、Sentinel-2这类中分辨率光学影像ENVI 5.3以上都能胜任如果要做GF-5、珠海一号这类国产高光谱数据建议选5.6及以上版本传感器定标参数更全。网上能下载到的安装包五花八门核心看两点版本号和附带扩展模块是否完整。ENVI的FLASH大气校正、高光谱分析工具都属于扩展模块下载的安装包如果精简了扩展部分后面做到大气校正才发现模块灰显返工成本远比重新下载安装高。安装过程有几个高频翻车点。第一ENVI对安装目录有隐性要求路径不能带中文和空格。第二License文件与安装版本必须严格对应5.6的License装到5.3上会直接激活失败报错提示在启动界面一闪而过很多人误以为是安装包问题。第三安装时默认把数据目录放在C盘遥感影像动辄几个GB建议安装时就指定到数据盘装完再改目录容易引起扩展模块路径错乱。装完以后打开ENVI先做两件事。一是进入File-Preferences把临时文件目录改到空间充足的磁盘很多跑着跑着没响应的问题不是软件坏了是临时目录所在盘满了。二是在Toolbox搜索框输入FLASH确认大气校正模块不是灰的。如果灰显先解决扩展模块问题再往下走别等到第3章才发现。另外提醒一句ENVI 5.x默认界面与Classic经典菜单差异很大网上旧教程写的是Classic菜单路径用5.6默认界面时直接在搜索框输工具名更快。2.2 遥感数据格式从GeoTIFF到ENVI NativeENVI原生数据格式由两个文件组成一个二进制数据文件扩展名.dat或没有扩展名一个.hdr头文件。头文件里记录了行数、列数、波段数、数据类型、投影参数、波段波长等关键信息。为什么强调这个格式因为FLASH大气校正、MNF降维、光谱角匹配这些模块对文件格式有隐性要求用GeoTIFF经常遇到能显示但工具报错的怪问题转成ENVI Native格式后问题少很多。格式投影信息位置打开方式备注ENVI Native.hdr文件File-Open直接打开推荐作为处理中间格式GeoTIFF内嵌标签File-Open直接打开注意投影可能丢失HDF5内嵌分层结构作为外部文件导入常见于高分和MODIS数据GeoTIFF打开后最典型的问题是投影信息丢失影像能正常显示但右键查看像元值时经纬度全为零或显示No Projection。原因是ENVI读取GeoTIFF内嵌坐标时偶尔失败或者下载数据时地理信息写得不规范。判断方法很简单在Layer Manager里右键图层查看Metadata如果Map Info显示Unknown说明投影没读进来。遇到投影丢失用File-Save As转成ENVI格式然后在Edit Header里手动补投影参数。补投影需要知道数据带的坐标系一般数据说明文档里有。如果实在查不到可以用影像覆盖范围的经纬度估算但精度有限项目要求高时建议用官方提供的投影信息。用Python快速读取.hdr文件里的投影信息也是一个办法# 读取ENVI .hdr文件打印投影和尺寸信息 def read_envi_hdr(hdr_path): info {} with open(hdr_path, r, encodingutf-8, errorsignore) as f: for line in f: line line.strip() if in line: key, value line.split(, 1) info[key.strip()] value.strip() print(尺寸:, info.get(samples), x, info.get(lines)) print(波段数:, info.get(bands)) print(数据类型:, info.get(data type)) print(投影信息:, info.get(coordinate system string, 未定义)) return info # 用法传入完整路径的.hdr文件 read_envi_hdr(rE:\landsat\LC08_20240615.hdr)这个脚本逻辑很简单按行读取.hdr文本把等号前后的字段拆出来存成字典再打印关键字段。跑完以后能直观看到数据是否带坐标系比打开ENVI再查Metadata更快。转成ENVI格式后的另一个好处是波段波长信息可以手动维护FLASH校正时能正确匹配大气模型这对高光谱数据尤其重要——很多高光谱处理结果不对根子在于头文件里波长字段是空的。2.3 查看导入影像经纬度的三种方法与投影检查ENVI怎么查看导入影像的经纬度是新手在群里被问得最多的问题之一。方法一打开影像后鼠标在影像窗口移动底部状态栏会实时显示当前像元的经纬度。如果状态栏没出现在View菜单里打开Data Manager面板勾选Cursor Location选项。方法二右键影像窗口选择Cursor Value弹出面板同时显示DN值和经纬度坐标多波段数值一起列出查单点信息比状态栏方便。方法三用Point Location工具输入经纬度反查像元位置验证地面控制点时很常用。处理经纬度问题先判断是操作问题还是数据问题如果状态栏能显示像元行列号但经纬度为0或者坐标区域显示空白这是数据问题回到2.2节补投影如果是整个状态栏都不显示或者光标位置值不动这是界面配置问题检查Cursor Location选项是否勾选。补完投影信息后建议存成ENVI格式重新打开确认经纬度随鼠标移动正常变化再做后续处理。投影信息检查是数据准备阶段必须做的一道工序。检查清单如下打开Metadata看Map Info是否完整用Pixel Locator工具随机点三个像元记录经纬度与已知点位坐标对比误差应在数据空间分辨率量级以内。这组检查做完数据在空间维度上才算干净。3. 预处理三件套辐射定标、大气校正与几何校正3.1 辐射定标把DN值变成物理量卫星影像原始存档是DN值数字量化值DN值大小取决于传感器增益、太阳高度角和大气条件直接拿来算NDVI或做变化检测结果不可比。辐射定标就是把DN值换算成传感器入瞳处的辐射亮度或表观反射率这是所有定量分析的前提。ENVI里定标入口在Toolbox-Radiometric Calibration以Landsat 8为例传感器选OLI输出类型在Radiance和Reflectance之间选做大气校正前的预处理选Radiance。定标参数里最容易踩坑的是Scale Factor。ENVI默认的Scale Factor会把输出值放大到百分比量级比如真实反射率0.25被记录成25后续波段比值计算会出现剧烈偏差。我一般把Scale Factor设为0.1让输出反射率落回0~1区间这样大气校正后的结果能直接用于指数运算。另一个细节输出数据类型选Float不选Integer。整型输出会截断小数点后的辐射精度大气校正时会出现大量负值像元负值像元多了后面做比值指数时会收获一片空白影像。定标完必须验证不验证等于白做。验证方法是用Pixel Locator查看有代表性像元水体像元在近红外波段的反射率应该低于0.05植被像元红光波段低、近红外波段高。如果水体在近红外波段反射率超过0.1说明定标参数不对或数据本身有问题别拿错误数据往下跑。验证的同时把定标参数写到一个文本文件里项目交底或复核时直接引用这是省下返工时间的好习惯。3.2 大气校正FLASH与QUAC怎么选大气校正是把定标后的辐射亮度转换成地表反射率消除大气分子散射和气溶胶吸收的影响。ENVI提供FLASH和QUAC两条路径参数复杂度完全不同。FLASH基于MODTRAN辐射传输模型需要输入成像日期、成像时刻、传感器高度、地面平均海拔、大气模型、气溶胶模型等参数做高光谱蚀变信息提取、矿物识别这类对光谱曲线形状敏感的任务必须用FLASH。QUAC是快速经验校正利用影像内暗像元推算大气影响不需要成像元数据适合批量快速处理但精度上对亮暗目标比例敏感做定量反演不建议用。FLASH参数里最容易错的是大气模型。场景大气模型选项适用区域中纬度春夏秋Mid-Latitude Summer中国华北、华东、华南大部分中纬度冬季Mid-Latitude Winter中国北方冬季影像热带地区Tropical海南、东南亚高海拔干燥区Sub-Arctic Summer青藏高原等注意海拔参数气溶胶模型默认选乡村Rural城市或工业区数据可改Urban。多光谱影像的传感器高度填卫星轨道高度即可Landsat约705公里GF-5约672公里填错也会影响结果。还有一个常被忽视的参数是地面平均海拔平地填0山地按影像覆盖区平均海拔填比如横断山区填2000~3000米这个值对FLASH计算大气路径辐射影响明显。FLASH校正完成后做合理性检查水体反射率在近红外和短波红外波段接近0光照充足的裸土在可见光波段反射率在0.2~0.5之间植被的红边特征红光低、近红外高应该清晰。如果植被近红外反射率普遍超过0.9或者出现成片负值区回去查定标Scale Factor和大气模型这两个是最可能的错误来源。另外一个常见错误是成像时间格式填错FLASH要求的是UTC时间不是北京时间东八区数据要减8小时这个坑很容易把整批数据校正结果带偏。3.3 几何校正Image to Image操作与参数几何校正解决的是影像位置偏差问题——卫星平台姿态误差会导致影像上地物坐标偏移几十到几百米。ENVI提供两个方向Image to Map用地面控制点和地图坐标校正有实测控制点时用Image to Image用已有基准影像做基准项目里更常用因为基准影像从已有的DOM或高分辨率影像就能拿不需要外业测点。Image to Image操作路径Toolbox-Geometric Correction-Registration-Image to Image。先选基准影像Base Image再选待校正影像Warp Image。控制点选取是核心环节至少9个点均匀分布全图优先选道路交叉口、田块边界、河湾拐点。自动找点时ENVI会给出匹配度分值分值低的点删掉重选。个人经验控制点数量宁多勿少单点RMS误差控制在0.5个像元以内整体RMS小于1个像元。RMS超标的处理思路先删掉误差最大的点再看整体RMS不要同时删多个点否则你无法判断是哪一步导致的精度损失。校正完成后有一个常被忽略的坑Image to Image默认输出校正后的影像但不会把基准影像的投影信息写进输出文件。如果输出文件后续要用经纬度定位或与其他GIS数据叠加需要手动把基准影像的投影参数复制到校正结果的.hdr里。复制操作用Edit Header把Map Info和Coordinate System信息写入即可。做项目验收时几何校正结果用同一组地面控制点验证点位误差超过1个像元就要返工这是甲方验收时最容易卡壳的环节。4. 信息提取实战监督分类、高光谱蚀变与波段运算4.1 监督分类样本选择、分类器对比与精度验证监督分类做的是让计算机按你选的样本学规律这件事样本质量直接决定分类精度。选样本用ROI工具在影像上勾选各类别的典型区域。三个原则每类至少30个像元样本落在该类别的纯净区域避开混合像元和地物边界。勾完样本先看各类别光谱曲线如果两个类别的曲线在主要波段上几乎重合分类器学了也区分不开要么换样本区域要么合并类别。分类器选择上ENVI 5.x提供最大似然、SVM、随机森林等算法。最大似然适合光谱特征清晰的低维数据速度快但对样本分布的正态性有假设SVM对小样本高维数据表现好是高光谱分类首选随机森林对噪声和异常值鲁棒适合有大量高质量样本时用。SVM参数重点看核函数类型和惩罚因子C默认RBF核和C100在大多数场景稳定不建议新手过度调参。真正值得花时间的不是调C而是把样本选纯。分类器适合场景样本需求常见问题最大似然低维多光谱、类别差异明显中等样本不服从正态时精度差SVM高光谱、样本量小少参数敏感需验证核函数随机森林样本量大、特征多样多训练慢结果解释性弱分类结果必须用混淆矩阵验证Toolbox-Classification-Confusion Matrix。Overall Accuracy建议不低于85%Kappa系数大于0.8。精度不达标时先别看分类器参数先回样本选择环节找原因——是样本量不够还是类别光谱混淆。这个顺序错位是很多项目返工的直接原因血泪经验放在这里样本错了换什么分类器都救不回来。4.2 GF-5高光谱蚀变信息提取MNF降维与光谱角匹配GF-5卫星搭载的高光谱传感器覆盖可见光到短波红外光谱分辨率约5纳米几十上百个波段在找矿蚀变信息提取中被用得很频繁。ENVI里做高光谱蚀变的流程比多光谱分类复杂但每一步定位明确坏波段剔除、MNF降维、光谱角匹配、阈值分割。第一步坏波段剔除。高光谱数据总有信噪比极低的波段、水汽吸收波段和探测器条带。在ENVI里先做Bad Bands分析把明显异常的波段删掉。以GF-5 AHSI数据为例1350~1450纳米和1800~1950纳米附近的水汽吸收波段通常是坏的直接剔除。第二步MNF变换Minimum Noise Fraction最小噪声分离相当于主成分分析的信噪比版本。入口在Toolbox-Transform-MNF Rotation运行后看各波段特征值曲线特征值从陡降变成平缓的拐点就是保留维度一般保留前10~15个波段。用MNF压缩后的数据做光谱角匹配计算量小且匹配精度更好。第三步光谱角匹配Spectral Angle Mapping。原理是把像元光谱和参考光谱看成向量夹角越小越相似。ENVI里需要先加载USGS光谱库然后用Spectral Analyst对比未知像元光谱与典型蚀变矿物褐铁矿、高岭石、绿泥石光谱设置角度阈值后输出为密度分割图。阈值设置过小会漏掉弱蚀变信息过大则噪声像元大量混入实际操作中先按默认阈值跑一遍再看结果中的蚀变异常区是否与已知矿点位置吻合逐步调整。高光谱处理里最容易翻车的一个坑跳过大气校正直接做光谱角匹配拿着辐射亮度光谱去和反射率光谱库比对光谱形状完全对不上匹配结果全错。GF-5数据务必先做FLASH大气校正大气模型按中纬度夏季气溶胶选乡村校正检查合格后再进入MNF和匹配流程。4.3 波段运算与指数计算NDVI及蚀变指数波段运算把预处理过的数据变成可解释的指数。ENVI的Band Math入口在Toolbox-Band Math表达式以b1、b2作为波段占位符b的编号对应打开文件的波段顺序。NDVI表达式为(float(b4) - float(b3)) / (float(b4) float(b3))其中b3、b4是Landsat 8的红光和近红外波段。高光谱数据做蚀变增强时用短波红外与近红外的比值表达铁染信息类似float(b50) / float(b30)b50、b30按实际数据波段顺序选写表达式前先在波段列表里核对编号毕竟GF-5的波段顺序和Landsat 8完全不是一回事。这里有一个高频错误值得单独说整型除法截断。原始影像如果没转Floatb4-b3的结果会因整型计算被截断表达式输出全是0或者满幅。解决方法是表达式里每个占位符都加float()强制转换输出数据类型也选Float。写完表达式先点Preview预览输出范围合理再点OK执行。5. 避坑记录ENVI使用中常见的5个翻车现场5.1 FLASH大气校正模块显示为灰色现象Toolbox搜索FLASH后图标是灰的点不了。原因ENVI 5.x的FLASH不属于默认安装工具需要独立的大气校正扩展模块下载的安装包若被精简扩展模块缺失。解决安装完整扩展模块后检查安装目录Extensions文件夹下是否存在flaash相关文件重启ENVI再查。如果软件是绿色版解压使用的需要手动把模块文件复制到Extensions目录并重启。不要用旧版本的flaash文件凑合和主程序版本不匹配会登录后自动退出。5.2 定标后反射率数值异常偏大现象辐射定标输出影像统计值量大最大值达几百上千波段比值结果明显失真。原因Scale Factor设为默认值没有调整输出反射率被放大100倍。解决定标对话框里把Scale Factor改成0.1让反射率落到0~1区间重新运行并检查统计值。验证方法输出影像的属性面板里查看统计值最小值应接近0最大值不超过1.2高亮云雪像元可能略超超过这个范围就继续调。5.3 高分影像打开后黑屏或颜色怪异现象GF-5或高分二号16位影像打开后全黑或者显示的颜色与真彩色完全不符。原因数据是16位存储ENVI默认的灰度拉伸方式不适合或RGB合成选错了波段。解决右键图层选Enhancements-Gaussian或Linear拉伸。RGB合成时要确认波段顺序GF-5的可见光、近红外、短波红外波段顺序与Landsat波段编号不同按数据产品说明选择R、G、B波段。如果拉伸后影像仍异常查看波段统计值确认数据是否损坏。5.4 监督分类结果中有大片空洞现象分类输出图上局部区域没有被分类呈黑色或背景色。原因训练样本没有覆盖全图所有地物类型或者某一类地物光谱特征与训练样本偏离过大。解决回到ROI工具在未分类区域补充代表性样本再重新训练分类器。空洞不是分类器故障样本覆盖不全是项目中最容易被误判的一类问题——很多人第一时间去调分类器参数浪费时间且无效。5.5 批处理脚本报错找不到文件路径现象用ENVI Modeler或IDL脚本跑批处理中途报错提示文件找不到而该文件明明存在于磁盘。原因ENVI批处理不会自动刷新相对路径和目录缓存中文路径也会导致匹配失败。解决脚本内所有输入输出路径写绝对路径且不含中文字符用FILE_SEARCH函数时加/ADD_EXTENSION参数确保通配符匹配到正确扩展名。批处理日志里出现异常提示时优先检查上一景输出的文件是否完整生成很多时候是上一景输出失败导致后续任务连锁报错。6. 进阶技巧用ENVI Modeler与IDL把重复劳动变成一键执行做真实项目的常态是几十景影像共用一套处理链。一景一景手动跑辐射定标、大气校正和几何校正慢且容易漏参数。把流程固化到ENVI Modeler或IDL脚本是熟手和初手在工作效率上拉开差距的地方。ENVI Modeler适合可视化搭建流程在Toolbox搜Modeler打开把定标节点、FLASH节点、重投影节点拖到画布里连接每个节点双击设参数。节点参数里Scale Factor这类固定值可以设成常数或留一个输入变量处理不同批次时改输入即可。Modeler的优点是把流程顺序固化成图新同事不容易配错缺点是处理上百景数据时循环逻辑不如脚本灵活。数据量小、流程固定用Modeler数据量大、参数按景变化用IDL。处理大批量数据时我推荐IDL脚本可以自动读取元数据动态传参。核心示意如下; 批量辐射定标 FLASH大气校正 PRO batch_process, input_dir, output_dir COMPILE_OPT IDL2 e ENVI(/HEADLESS) ; 启动无界面ENVI适合服务器批处理 files FILE_SEARCH(input_dir, *.tif, COUNTn) FOR i 0, n-1 DO BEGIN raster e.OpenRaster(files[i]) ; 辐射定标 cal_task ENVITask(RadiometricCalibration) cal_task.INPUT_RASTER raster cal_task.OUTPUT_RASTER_URI output_dir cal_ FILE_BASENAME(files[i]) cal_task.Execute ; FLASH大气校正参数按数据实际元数据填 flaash_task ENVITask(FLAASH) flaash_task.INPUT_RASTER e.OpenRaster(cal_task.OUTPUT_RASTER_URI) flaash_task.IMG_DATE 2024-06-15 flaash_task.IMG_TIME 03:20:00 flaash_task.OUTPUT_RASTER_URI output_dir fl_ FILE_BASENAME(files[i]) flaash_task.Execute ENDFOR END脚本逻辑是启动无界面的ENVI实例/HEADLESS参数适合服务器端批量跑不弹界面遍历输入目录所有tif文件逐景执行定标和FLASH。每个task对象的属性和菜单界面里的参数一一对应OUTPUT_RASTER_URI指定输出路径。运行前把参数填进脚本而不是运行时手工填批量效率才体现得出来。代码里的IMG_DATE和IMG_TIME是FLASH必需的成像参数需要按每景数据的元数据填写如果一批数据跨越不同日期建议在脚本里做一个按文件名匹配日期的映射表而不是全写死。脚本跑完必须抽查验证随机抽两景打开FLASH输出检查水体反射率和植被红边特征与手动处理的结果对比。如果某一景的成像时间与脚本默认时间偏差超过半小时该景需要单独重新处理——大气参数对时间敏感这也是脚本里需要保留一个跳过指定景参数的原因。我自己的习惯是每批数据处理完保留一份参数清单记录每景使用的定标因子、FLASH大气模型和RMS误差翻车或验收时都能按图索骥。希望帮到你。本文还有配套的精品资源点击获取
返回列表