ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

北京三号A星数据ENVI处理全流程:从原始影像到正射反射率产品

北京三号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或BIP,ENVI处理这两种格式比BSQ快;FLAASH处理前把研究区裁剪出来,别整景跑;融合操作前先把全色和多光谱都裁剪到同一范围,减少无效计算。另外ENVI的Preferences里可以把Temporary Directory设到SSD上,中间文件读写速度提升明显。

问题现象可能原因排查与解决
打开影像全黑数据类型设置错误按元数据确认Data Type,重新打开
反射率出现负值大气参数设置错误检查太阳高度角单位、气溶胶模型
正射后整体偏移DEM高程基准不一致确认DEM基准,做高程转换
融合后色彩失真全色多光谱未配准检查配准精度,重新配准后再融合
处理速度极慢输出格式或临时目录设置不当改BIL/BIP格式,临时目录设到SSD

7.5 几个容易被忽略的细节

第一个细节是文件路径不要有中文和空格。ENVI 5.6.2对中文路径的支持时好时坏,FLAASH尤其容易在中文路径下报错,养成全英文路径的习惯能省很多事。第二个细节是处理前把ENVI的缓存设置调大,Preferences > Cache Size设到内存的50%左右,大影像处理时能减少磁盘交换。第三个细节是每步处理完保存工程文件(.envi或者.hdr),别嫌麻烦,中间结果丢了重跑的时间成本远高于保存的时间。

8. 从处理结果到应用出口:几个典型场景的衔接建议

数据在ENVI里处理到反射率加正射校正这一步,其实已经是一个比较通用的基础产品了。往下走的方向取决于你的应用目标。做植被监测的,直接在ENVI里用Spectral Indices工具算NDVI、EVI,BJ3A的四波段配置算这两个指数没问题;做水体提取的,用NDWI结合阈值分割,注意BJ3A没有短波红外波段,所以不能算MNDWI,这是波段配置决定的,别硬套其他卫星的经验;做城市地物分类的,融合后的高分辨率多光谱影像可以直接喂给ENVI的Classification Workflow里的面向对象分类或者随机森林分类器。

我个人的习惯是,处理完的反射率影像和融合影像都保留一份,反射率影像用于定量分析,融合影像用于目视解译和制图出图。元数据和处理日志单独存一个文件夹,方便后面追溯参数。这套流程跑顺了之后,一景BJ3A数据从打开到出正射反射率产品,熟练的话两三个小时能搞定,其中大部分时间花在FLAASH的计算等待上。真正需要人工干预的环节其实不多,关键是每一步的参数别填错,尤其是太阳高度角、增益偏移和RPC这几项,错一个后面全白搭。

返回列表