北京三号A星数据ENVI处理全流程:从原始影像到正射反射率产品 1. 从一景原始影像到可用产品北京三号A星数据在ENVI里的处理全流程手里拿到一景北京三号A星BJ3A的原始数据很多人的第一反应是直接拖进ENVI里打开看看。我最初也是这么干的结果发现打开的影像要么是一片灰白要么波段顺序对不上要么地理定位偏得离谱。北京三号A星作为一型高分辨率敏捷光学遥感卫星它的数据产品在交付时通常已经过分景、辐射校正等预处理但要把这些数据真正用到定量反演、变化检测或者专题制图里中间还隔着一条不短的工程化处理链路。ENVI 5.6.2作为一款成熟的遥感图像处理平台对国产高分辨率卫星数据的支持已经相当完善但前提是你得搞清楚数据的产品级别、元数据结构和波段组织方式否则后面每一步都可能踩坑。这篇内容面向的是手里有BJ3A数据、需要在ENVI里完成从打开到出图全流程的从业者包括测绘、自然资源监测、农业估产、城市违建识别等方向的技术人员。不管你是刚接触国产卫星数据的新手还是用过其他高分辨率数据、想迁移到BJ3A的老手下面这套流程和踩坑记录都能直接拿去用。我会把每个环节为什么这么做、参数怎么定、哪里容易翻车讲清楚重点放在ENVI 5.6.2这个具体版本的操作细节上因为不同版本之间菜单路径和工具行为差异不小照搬旧教程很容易卡住。2. 数据到手先别急着打开产品级别与元数据摸底2.1 搞清楚你拿到的是哪一级产品北京三号A星的数据产品一般分为几个级别常见的有传感器校正产品相当于L1级、系统几何校正产品相当于L2级和精化处理产品相当于L2A/L3级。这个分级直接决定了你在ENVI里要不要做正射校正、要不要重新做辐射定标。我见过不少人拿到传感器校正产品就直接开始做大气校正结果发现没有RPC文件几何精度根本没法保证白忙一场。判断产品级别最直接的办法是看数据包里的元数据文件。BJ3A的数据包通常包含一个XML格式的元数据文件、若干分景的影像文件可能是GeoTIFF或者专有格式转换后的TIFF以及RPC参数文件。如果数据包里带RPC文件通常命名为*.rpc或*_rpc.txt说明这景数据支持严格几何模型的正射校正如果没有RPC但有地理坐标信息那大概率是已经做过系统几何校正的产品几何精度在几十米量级做中等比例尺制图够用但做高精度变化检测就悬了。提示拿到数据第一件事不是打开影像而是把元数据文件用文本编辑器过一遍确认产品级别、成像时间、太阳高度角/方位角、传感器类型、波段数量和波长范围。这些信息后面每一步都要用到。2.2 元数据里必须提取的关键参数BJ3A的元数据文件里信息量很大但真正影响ENVI处理流程的就那么几个。我把它们整理成一张表方便你对照着提取参数项元数据中的常见标识在ENVI处理中的作用产品级别ProductLevel / ProcessingLevel决定是否需要正射校正、辐射定标成像时间AcquisitionTime / ImagingDate大气校正时输入日期影响太阳位置计算太阳高度角SunElevation辐射定标和大气校正的输入参数太阳方位角SunAzimuth大气校正辅助参数传感器标识SensorID / Instrument选择对应的光谱响应函数波段数量与波长BandCount / SpectralRange波段合成、光谱指数计算的依据增益与偏移Gain / Offset辐射定标的核心参数RPC文件路径RPCFile正射校正的几何模型来源这里特别说一下增益和偏移。BJ3A的辐射定标参数有时候写在元数据里有时候单独给一个定标系数文件。如果元数据里只有DN值范围而没有明确的增益偏移你需要找数据提供方要定标系数表。没有定标系数辐射定标这一步就没法做后面的大气校正和定量反演全部免谈。我遇到过一景数据元数据里只写了“绝对定标系数见附件”结果附件没给全只能回头找数据源补耽误了两天。2.3 波段组织方式的确认BJ3A搭载的是高分辨率多光谱相机通常包含蓝、绿、红、近红外四个多光谱波段部分产品还附带一个全色波段。不同产品打包方式不一样有的是多光谱和全色分开两个文件有的是合在一个文件里不同波段。在ENVI里打开后第一件事是确认波段顺序。我习惯用File Open打开后在Layer Manager里右键查看View Metadata看波段波长信息是否和预期一致。如果波长信息缺失就手动对照元数据里的波段说明在ENVI的波段属性里补上中心波长否则后面做光谱指数比如NDVI时ENVI不知道哪个是近红外、哪个是红波段计算结果直接是错的。3. 辐射定标把DN值变成有物理意义的辐亮度3.1 为什么必须先做辐射定标原始影像里每个像元的值是DN值数字量化值它只是一个相对大小的编码不同成像时间、不同传感器、不同增益设置下的DN值之间没有可比性。辐射定标就是把DN值转换成具有物理意义的辐亮度或者表观反射率这是后续大气校正、光谱分析、定量反演的前提。你可以把DN值理解成“没有刻度的温度计读数”辐射定标就是给它刻上刻度。ENVI 5.6.2里做辐射定标有两条路一是用Radiometric Calibration工具适合有明确增益偏移参数的情况二是用Apply Gain and Offset工具手动输入系数。对于BJ3A数据如果元数据里给了增益和偏移直接用前者最省事如果只给了定标系数表后者更灵活。3.2 在ENVI 5.6.2中执行辐射定标的具体操作打开ENVI走Toolbox Radiometric Correction Radiometric Calibration。在弹出的对话框里选输入影像然后关键的一步是设置Calibration Type。对于多光谱数据我一般选Radiance辐亮度因为后续大气校正FLAASH或QUAC需要辐亮度作为输入。如果你跳过大气校正直接做植被指数也可以选Reflectance但要注意ENVI计算表观反射率时需要太阳高度角这个值必须从元数据里准确填入填错了反射率整体偏移。定标参数设置界面里Output Interleave建议选BIL或BIP因为后续大气校正对这两种交错格式处理效率更高。Output Data Type选Float32别选Byte或者UInt16否则定标后的小数部分被截断辐亮度精度损失严重。我实测过用UInt16输出再做大气校正得到的反射率在水体区域会出现明显的阶梯状伪影换成Float32就消失了。注意辐射定标前务必确认输入影像的波段顺序和元数据一致。如果波段顺序错了定标系数对应错位出来的辐亮度数值会整体偏移而且这种错误很隐蔽不做光谱曲线检查根本发现不了。3.3 定标结果的快速验证方法定标做完别急着往下走先验证一下。在ENVI里用Spectral Profile工具在影像上选几个典型地物比如深水体、浓密植被、裸土看辐亮度曲线的形态是否合理。正常情况下植被在近红外波段的辐亮度应该明显高于红波段水体在近红外波段应该很低。如果曲线形态反了或者所有波段数值几乎一样大概率是波段顺序或者定标系数出了问题。这个检查花不了两分钟但能帮你避免后面几个小时的无效劳动。4. 大气校正从辐亮度到地表反射率的关键一跃4.1 FLAASH和QUAC怎么选ENVI 5.6.2里常用的大气校正工具就两个FLAASH和QUAC。FLAASH是基于辐射传输模型的物理校正方法精度高但需要输入大气参数气溶胶类型、能见度、水汽含量等对元数据完整性要求高QUAC是基于图像本身的经验性方法不需要大气参数速度快但精度相对低一些适合快速出图或者大气参数缺失的情况。对于BJ3A数据我的建议是如果元数据里太阳高度角、成像时间齐全且你能获取到成像区域当天的气象能见度数据优先用FLAASH如果这些都没有或者你只是做相对比较比如同一区域两期影像的NDVI变化QUAC够用。我做过对比在气溶胶光学厚度较低能见度大于20公里的晴天条件下FLAASH和QUAC得到的NDVI差异在0.02以内对大多数应用来说可以接受但在雾霾天或者气溶胶类型复杂的情况下两者差异能到0.1以上这时候就必须用FLAASH。4.2 FLAASH参数设置的实操细节走Toolbox Radiometric Correction Atmospheric Correction Module FLAASH Atmospheric Correction。输入文件选辐射定标后的辐亮度影像。Output Reflectance File指定输出路径Output Directory for FLAASH Files选一个临时目录放中间文件。关键参数在Atmospheric Model和Aerosol Model两块。大气模型根据成像时间和纬度选中纬度夏季成像选Mid-Latitude Summer中纬度冬季选Mid-Latitude Winter。气溶胶模型我一般选Rural乡村型因为BJ3A的应用场景多在城郊和农村区域如果是重工业城市周边选Urban更合适。Initial Visibility填能见度单位是公里这个值对校正结果影响很大有实测气象数据就填实测值没有的话晴天填20到30轻度雾霾填10到15。Multispectral Settings里要指定波段波长响应函数。ENVI自带的光谱库里有BJ3A的响应函数文件如果安装时勾选了国产卫星支持包直接选对应文件即可。如果没有需要手动指定每个波段的中心波长和半波宽这个参数在元数据里能找到。我遇到过响应函数文件缺失的情况手动填了中心波长后校正结果和用响应函数的结果差异不大说明在波段较宽的多光谱数据上中心波长近似是可以接受的。4.3 大气校正后的质量检查校正完打开反射率影像用Spectral Profile看植被的光谱曲线。健康植被应该在绿波段有个小反射峰红波段有吸收谷近红外波段反射率明显抬升典型值在0.3到0.5之间这就是所谓的“红边”特征。如果近红外反射率只有0.1左右说明校正不足或者大气参数设置偏了如果近红外反射率超过0.6可能是校正过度。水体在近红外波段的反射率应该接近0如果明显大于0.05说明气溶胶校正有问题。提示FLAASH对输入影像的波段数量有要求至少需要三个波段且包含蓝波段用于气溶胶反演。BJ3A的四波段多光谱数据满足这个条件但如果你的数据只有红和近红外两个波段FLAASH跑不了只能用QUAC。5. 正射校正与几何精处理让影像落到正确的位置上5.1 RPC正射校正的标准流程如果数据包里有RPC文件正射校正这一步相对直接。走Toolbox Geometric Correction Orthorectification RPC Orthorectification Workflow。输入影像选大气校正后的反射率影像也可以在校正前做顺序不影响最终结果但先做大气校正再做正射校正可以避免重采样对辐射值的二次影响。DEM选项里如果有研究区的DEM数据就选DEM File没有的话选Constant Elevation并填入平均高程。对于地形起伏不大的平原地区用常数高程的正射校正精度已经够用山区就必须用DEM否则山体阴影区域的几何畸变会很明显。Output Pixel Size建议保持原始分辨率或者按应用需求重采样。BJ3A多光谱数据的分辨率在几米量级做城市违建识别保持原始分辨率做区域尺度植被监测可以重采样到10米以提升处理速度。Resampling Method选Cubic Convolution比Nearest Neighbor的几何精度高又不像Cubic Spline那样容易产生过冲。5.2 没有RPC文件时的替代方案如果数据包里没有RPC文件说明这景数据可能只做了系统几何校正几何精度在几十米量级。这种情况下如果你有研究区的高精度参考影像比如已经正射校正好的底图可以用Image to Image Registration工具做几何精校正。流程是在参考影像和待校正影像上选同名点道路交叉口、建筑角点等稳定地物每景至少选15到20个点均匀分布然后用二次多项式或者Delaunay三角网做校正。同名点选取的精度直接决定校正结果我一般放大到最大级别选点确保点位偏差在一个像元以内。没有参考影像也没有RPC的情况下只能依赖数据自带的地理坐标信息几何精度没法保证。这种数据适合做趋势分析或者大尺度统计不适合做地块级别的精确制图。5.3 几何精度的快速验证正射校正做完后把结果和在线底图或者已有的高精度矢量数据叠加检查。在ENVI里可以用Link Displays功能把校正结果和一个已知准确的参考影像联动看道路、建筑轮廓是否对齐。如果整体偏移但形状一致说明是系统偏移可以用Apply GLT或者手动平移修正如果局部扭曲说明DEM或者控制点有问题需要回头检查。6. 全色与多光谱融合提升空间细节的实用技巧6.1 融合方法的选择与对比BJ3A同时提供全色和多光谱数据全色波段分辨率更高多光谱波段分辨率较低。融合的目的是把全色的空间细节注入到多光谱里得到既有高分辨率又有光谱信息的影像。ENVI 5.6.2里常用的融合方法有Gram-Schmidt Pan Sharpening、NNDiffuse Pan Sharpening和Brovey Transform。我实测下来对于BJ3A数据NNDiffuse Pan Sharpening在光谱保真度和空间细节注入之间平衡得最好尤其是植被区域的颜色失真最小。Gram-Schmidt效果也不错但计算量大大区域处理时速度明显慢。Brovey Transform速度快但光谱失真严重只适合做目视解译底图不适合做定量分析。如果你后续要做NDVI或者分类别用Brovey。6.2 融合操作的参数设置走Toolbox Image Sharpening NNDiffuse Pan Sharpening。Low Resolution Image选多光谱反射率影像High Resolution Image选全色影像全色也需要先做辐射定标和正射校正保证两者几何对齐。Output指定路径Resampling选Nearest Neighbor保持原始像元值不被插值改变。融合前必须确保全色和多光谱影像已经精确配准。如果两者有半个像元以上的偏移融合结果会出现明显的重影和色彩错位。检查方法是在ENVI里把两个影像叠加显示用Blend或者Flicker模式快速切换看地物边缘是否重合。6.3 融合质量的定量评价融合完不能只看目视效果要做定量评价。我常用的指标有两个一是计算融合前后多光谱影像的NDVI相关性相关系数应该在0.95以上低于这个值说明光谱失真严重二是在融合影像上选几个均匀地物区域比如大片草地、水面看其光谱曲线和融合前是否一致。如果草地变成了灰绿色或者水面出现了异常高值说明融合算法把光谱搞乱了。7. 常见问题与排查技巧实录7.1 数据打开报错或显示异常最常见的问题是ENVI打开BJ3A数据时提示“无法识别文件格式”或者打开后影像全黑。原因通常是数据格式不兼容。BJ3A原始数据可能是专有格式需要先转换成ENVI支持的格式如GeoTIFF。转换可以用数据提供方给的转换工具或者在ENVI里用File Open As Generic Formats尝试按二进制格式打开手动指定行列数和数据类型。如果打开后全黑检查Data Type设置是否正确比如实际是UInt16但按Byte打开了高位数据被截断显示出来就是黑的。7.2 大气校正结果异常FLAASH跑完反射率出现大面积负值或者超过1的值排查顺序是这样的先看辐射定标结果是否正常辐亮度有没有负值或者异常大值再看太阳高度角是否填错填成了弧度而不是度或者填反了最后看气溶胶模型和能见度是否合理。我遇到过一次反射率整体偏高0.2的情况查了半天发现是元数据里的太阳高度角单位是度但ENVI要求输入的是度我误填了弧度值导致太阳辐照度计算错误。7.3 正射校正后影像偏移RPC正射校正后影像整体偏移最常见的原因是DEM高程基准和RPC模型的高程基准不一致。BJ3A的RPC模型通常基于WGS84椭球高如果你用的DEM是大地高或者正常高两者差了一个大地水准面差距在平原地区可能只有几十米但在山区能到上百米。解决办法是确认DEM的高程基准必要时做高程基准转换。另一个原因是RPC文件本身有误或者不完整这种情况只能联系数据提供方。7.4 处理速度慢的优化思路BJ3A一景数据覆盖范围不小全流程跑下来对机器压力不小。几个提速技巧辐射定标和大气校正时把输出格式设为BIL或BIPENVI处理这两种格式比BSQ快FLAASH处理前把研究区裁剪出来别整景跑融合操作前先把全色和多光谱都裁剪到同一范围减少无效计算。另外ENVI的Preferences里可以把Temporary Directory设到SSD上中间文件读写速度提升明显。问题现象可能原因排查与解决打开影像全黑数据类型设置错误按元数据确认Data Type重新打开反射率出现负值大气参数设置错误检查太阳高度角单位、气溶胶模型正射后整体偏移DEM高程基准不一致确认DEM基准做高程转换融合后色彩失真全色多光谱未配准检查配准精度重新配准后再融合处理速度极慢输出格式或临时目录设置不当改BIL/BIP格式临时目录设到SSD7.5 几个容易被忽略的细节第一个细节是文件路径不要有中文和空格。ENVI 5.6.2对中文路径的支持时好时坏FLAASH尤其容易在中文路径下报错养成全英文路径的习惯能省很多事。第二个细节是处理前把ENVI的缓存设置调大Preferences Cache Size设到内存的50%左右大影像处理时能减少磁盘交换。第三个细节是每步处理完保存工程文件.envi或者.hdr别嫌麻烦中间结果丢了重跑的时间成本远高于保存的时间。8. 从处理结果到应用出口几个典型场景的衔接建议数据在ENVI里处理到反射率加正射校正这一步其实已经是一个比较通用的基础产品了。往下走的方向取决于你的应用目标。做植被监测的直接在ENVI里用Spectral Indices工具算NDVI、EVIBJ3A的四波段配置算这两个指数没问题做水体提取的用NDWI结合阈值分割注意BJ3A没有短波红外波段所以不能算MNDWI这是波段配置决定的别硬套其他卫星的经验做城市地物分类的融合后的高分辨率多光谱影像可以直接喂给ENVI的Classification Workflow里的面向对象分类或者随机森林分类器。我个人的习惯是处理完的反射率影像和融合影像都保留一份反射率影像用于定量分析融合影像用于目视解译和制图出图。元数据和处理日志单独存一个文件夹方便后面追溯参数。这套流程跑顺了之后一景BJ3A数据从打开到出正射反射率产品熟练的话两三个小时能搞定其中大部分时间花在FLAASH的计算等待上。真正需要人工干预的环节其实不多关键是每一步的参数别填错尤其是太阳高度角、增益偏移和RPC这几项错一个后面全白搭。