简介:这是一份面向遥感初学者与ENVI使用者的SAR数据预处理操作文档,围绕ALOS PALSAR数据,系统梳理了从数据导入、多视处理、滤波到地理编码与辐射定标,以及镶嵌匀色的完整流程。文档对每一步操作均给出面板路径、关键参数选取依据、结果文件说明,并附多视视数计算公式、Frost滤波窗口设置、投影参数与重采样方法选择等细节;同时解释了多视处理抑制斑点噪声、提高辐射分辨率的原理,以及地理编码将斜距投影转换为制图参考系的意义,方便读者对照操作并理解背后逻辑。资源为单个PDF文件,大小1.31MB,内容紧凑,步骤图文配合,既可用于课堂实验辅导,也可作为项目实操速查手册。目前已有470人学习,适合需要快速上手SARscape预处理、减少摸索时间的遥感相关专业学生与工程师。
1. 为什么说 ENVI 对 SAR 数据的预处理,决定了一个项目要不要返工
做过 SAR 的人都有过这种经历:拿着高分三号或者 Sentinel-1 的数据兴冲冲在 ENVI 里打开,结果看到的不是一张能直接用的“影像”,而是一堆暗乎乎的噪点,地物边界糊成一团,整景图像还带着肉眼可见的条带。光学遥感数据导入就能看、能分类、能提指数,而 SAR 数据不经过预处理,连最基本的“这是哪块地、亮度代表什么”都说不清。
这篇文章要聊的“ENVI 对 SAR 数据的预处理过程”,就是把 SAR 原始数据从“像素点的排列”变成“有物理意义的后向散射系数图像”的完整链路。它解决三个具体问题:噪声怎么抑制、几何怎么摆正、亮度值怎么换算成可比较的物理量。适合用 ENVI 做 SAR 影像分类、地表变化检测、水体提取和 InSAR 前处理的从业者。你会发现,预处理这一步做得扎实,后续建模能省下一半返工时间。
2. 预处理前必须搞懂的 SAR 数据特性:相位、斑点噪声与几何畸变
2.1 幅度和相位要分开看:SAR 数据不是一张普通影像
打开 ENVI 的数据文件列表,SAR 数据通常有两种表现形式:单极化数据是一个二维复数矩阵,每个像元里同时存着幅度和相位;多极化或干涉数据则是多个通道叠在一起。很多新手把复数数据的幅度通道提取出来当成普通灰度图处理,这没错,但心里得清楚:幅度信息反映地物后向散射的强弱,相位信息反映电磁波往返的路径差。在预处理阶段,如果你打算做干涉测量,相位通道要保留原始状态,不能用后续针对幅度图的滤波算法去动它;如果只做地物分类或变化检测,相位基本用不上,直接处理幅度图像。
这个区分直接决定你在 ENVI 里选择哪些工具。SARscape 模块里有专门针对幅度和相位的不同流程入口,例如生成干涉图之后再做的滤波是差分干涉滤波,和普通斑点噪声滤波完全是两回事。我在实际项目里见过不止一次,同事把干涉相位当成灰度图做了 Lee 滤波,结果生成的地形形变图出现一整片相位跳变,等于白干。回到最基础的逻辑:先确认你拿到的数据是 SLC(单视复数)还是 GRD(地距多视)产品。SLC 保留相位、分辨率高,适合干涉;GRD 已经做过部分多视和几何校正,适合直接用来做分类制图。依赖的数据不同,预处理链路也不同。
2.2 斑点噪声为什么是乘性的:滤波前先做多视的原因
SAR 影像是相干成像系统产生的,相干处理会在图像里制造一种类似“盐和胡椒”的颗粒状噪声,叫斑点噪声。它和光学影像的热噪声不一样:热噪声是加性的,跟信号强度无关;斑点噪声跟后向散射信号强度成比例,信号强的地方噪声也强,所以是乘性噪声。这个性质决定了你不能直接用光学影像那套“先平滑再增强”的处理思路。
乘性噪声意味着,如果你对整幅图像用一个固定阈值的滤波核,亮区的噪声没压下去,暗区的地物细节又被抹掉了。所以 SAR 领域最稳妥的做法是先做多视处理,把方位向和距离向的若干个独立样本平均起来,以牺牲空间分辨率为代价换取等效视数的提升。这个道理和摄影里多张堆栈降噪类似,只是 SAR 是把同一目标在多次回波里观测到的结果在统计意义上合并。
在 ENVI/SARscape 里,多视操作的输入是 SLC 数据,参数是方位向视数和距离向视数。举个例子,一个分辨率约 10 米的 Sentinel-1 SLC 产品,如果在距离向和方位向各取 2 视,输出分辨率大约会变成 20 米左右,等效视数从 1 提到 4,斑点噪声明显改善。多视做完以后,斑点噪声已经降了一轮,再用一个适度的空间滤波(比如 3x3 或 5x5 的 Lee、Refined Lee、Frost)去平滑残余噪声,才算完成噪声抑制的完整环节。顺序通常不能反——先滤波后多视,等于把没用上的统计平均机会浪费掉了,输出数据里保留的斑噪水平还是偏高。
2.3 斜距投影与地形起伏:几何校正必须分两步的原因
SAR 是侧视成像,传感器记录的是地物到卫星的斜距,而不是地面的水平距离。这带来一个光学影像几乎没有的麻烦:靠近星下点的地物在图像里被压缩,远离星下点的地物被拉伸,整景图像的几何尺度并不一致。对于平地,用多项式拟合做一次地距转换就能解决;一旦涉及山区,雷达波的斜距成像结合地形起伏,会产生叠掩、阴影和顶底倒置三种畸变。叠掩就是山体面向卫星的一面被压缩成一条亮线;阴影是背坡收不到雷达波变成黑区;顶底倒置则是山顶和山脚的相对位置在图像里发生颠倒。
正因为畸变来源不同,几何校正必须拆成两步:第一步是从斜距到地距的粗校正,把整景影像摆到一个规则的成像网格上;第二步是结合 DEM 的地形校正,消除地形起伏带来的局部几何错位和辐射畸变。不少人图省事,直接用 ENVI 里的通用几何校正工具拿 GCP 做一次多项式纠正,这在山区几乎都会翻车。SARscape 里专门提供了 Range Doppler 地形校正算法,核心思想是用卫星轨道信息和 DEM 模拟出每个像元对应的地面位置,再反算到影像坐标,从而完成逐像元的精确重采样。这一步是所有预处理中最耗计算资源的,但它同时把几何误差和辐射畸变一起处理掉了,没有替代方案。
3. 在 ENVI 里跑通 SAR 预处理的最小链路:导入、多视、滤波、定标、地形校正
3.1 数据导入:按传感器选对 SARscape 向导(以高分三号和 Sentinel-1 为例)
ENVI 里做 SAR 预处理最常见的路径是安装 SARscape 模块,它在 ENVI 的工具栏里单独生成一个下拉菜单。拿到原始数据后,第一件要做的事是把不同卫星的数据格式转到 ENVI 能识别的格式。这一步看似简单,踩坑率却极高,问题大多出在“找错了导入器”或者“参数模板没选对”。
以高分三号(GF-3)为例,产品通常是分景的 TIFF 或者 HDF5 文件,同时附带 XML 头文件和轨道参数。在 SARscape 菜单里进入Import Data > Generic > ...之类的导入向导后,需要选择对应的传感器类型;如果产品列表里没有 GF-3 的直接选项,就要用通用的ENVI SARscape Generic导入方式,手动指定极化通道、像元大小、波长和重访周期。关键是要把产品自带的 XML 里的轨道状态矢量读进去,后续地形校正才能算准。
Sentinel-1 相对省心,数据从欧空局下载后是标准 SAFE 格式,SARscape 里选择Sentinel-1导入器,工具会自动解析里面的 measurement 文件夹和 manifest 文件。导入时有一个参数叫Output File,官方推荐输出为 ENVI 标准格式,如果你要保留原始相位做干涉,记得在导入面板里确认输出方式为“复数据”而不是仅“幅度数据”。下表总结了三种常见数据的导入要点:
| 数据源 | 常见格式 | 导入器位置 | 最容易漏掉的参数 |
|---|---|---|---|
| 高分三号 | XML + TIFF | Generic / 对应传感器模板 | 极化通道顺序、轨道状态矢量 |
| Sentinel-1 | SAFE 标准包 | Sentinel-1 专用导入器 | 是否保留复数相位、幅度的缩比因子 |
| TerraSAR-X | 单景打包的 GeoTIFF | 对应传感器模板 | slant range 与 ground range 标识 |
导入完成后,在 ENVI 的 Layer Manager 里看到的是多波段数据,波段名会包含像S1_amplitude_VV这样的标识。建议立刻把数据另存为一个工作版本,不要在原文件上做任何操作,这一步能省掉后面所有“后悔药”的需求。
3.2 多视与滤波:参数和影像类型要匹配
拿到导入后的 SLC 数据,先判断自己做的是强度图应用还是干涉应用。只做分类和黄土地貌分析这类工作,直接运行SARscape > Basic > Intensity > Multi-looking。这个工具面板里需要填写:
Range Looks和Azimuth Looks:多视视数。经验法则是让输出像元尽量接近正方形,你可以先按距离向分辨率除以期望得到的地距分辨率算出视数范围。Output Pixel Size:工具会根据视数自动算出,但允许手动覆盖,建议统一到整数值,方便后续和光学影像融合。
多视处理输出的是幅度强度图,肉眼观察会比 SLC 平滑很多,但如果仍然有明显的颗粒感,紧接着做滤波。SARscape 的Filter > Lee / Refined Lee / Frost都可以选。对于城区这类有大量亮角反射器的场景,推荐 Refined Lee,它的边缘保持能力最好;对于农田、水面这类相对均质的场景,Frost 收敛更快。滤波核尺寸从 3x3 起步,如果噪声依旧明显,最多增加到 7x7。超过 7x7 的窗口对线状地物如道路、堤坝破坏明显,不建议在通用流程里使用。
滤波完成后,检查一下直方图分布。如果影像直方图呈尖锐的单峰且峰值偏向低值区,说明背景噪声占主导;正常的地表后向散射分布应该是一个相对平缓、有拖尾的峰,峰值集中在中低值。这一步只用眼睛看就够,不需要统计工具。
3.3 辐射定标与地形校正:把 DN 值换算成后向散射系数
滤波把噪声处理干净了,这时候图像还是一堆无量纲的灰度值。不同时间、不同模式下获取的数据,灰度值的绝对值受传感器增益、入射角影响,不能直接对比。所以要辐射定标,把 DN 值换算成后向散射系数,常见的有 beta0、sigma0、gamma0 三种。
在 SARscape 里,定标工具按传感器类型区分,例如 Sentinel-1 的辐射定标会读取产品里的calibration文件夹,包括calibration.xml和各极化通道的噪底文件。操作上只需要在面板里选择输入文件和输出文件,选定输出物理量类型即可。如果你要输出 sigma0,工具会自动结合入射角修正;如果输出 beta0,则忽略入射角修正。多数地表应用选 sigma0,城区和强反射目标分析选 gamma0 更稳定。定标完成后,数据的有效值通常分布在 -20 dB 到 0 dB 之间,可以直接用 dB 单位查看。
地形校正紧跟在定标之后。SARscape 的SARscape > Basic > Intensity > Terrain Correction面板里需要指定 DEM。常用选项是 SRTM 90 米或 30 米分辨率,山地项目建议用 12.5 米分辨率的 ALOS DEM。面板里的关键参数包括:
DEM Resampling:推荐默认的双线性或立方卷积,不要用最邻近,山区山脊线容易出现锯齿。Pixel Spacing:输出像元大小,通常设置成和源数据的地距分辨率一致,如果后续要融合光学影像,直接设成光学影像的像元大小,省一次重采样。Map Projection:按项目所在地区选择 UTM 分带,国内中西部项目注意带号别选错,选错了整个图像会偏移几百米。
运行地形校正后,输出结果里一般包含一个_tc后缀的文件,它已经完成几何定位,可以直接叠加到光学底图上验证对齐情况。
3.4 用波段运算验证输出:检查物理量是否符合预期
地形校正完成后别急着写报告,先做一项便宜的检查——在 ENVI 里用波段运算查看定标结果是否合理。常见做法是把后向散射系数换算成 dB 显示,或者直接计算水体和非水体的差值。打开 Band Math,输入以下表达式:
; 将 sigma0 线性值转换为 dB 显示 ; b1 为地形校正输出的 sigma0 波段 (b1 gt 0) * (10 * alog10(b1)) + (b1 le 0) * (-9999)这里(b1 gt 0)是一个条件掩膜,确保只有正值才参与对数运算;结果为 0 或负数的像元统一赋值为 -9999,避免出现无效的浮点值,也方便后续统计时直接排除。alog10是 ENVI 波段运算的内置函数,表示以 10 为底的对数。转换完成后,在图像窗口中用光标探查几个典型地物:平静水体的 sigma0 一般在 -18 dB 以下,裸土和建设用地在 -12 dB 到 -5 dB 之间,城区密集建筑区在 -5 dB 以上。如果水体的值和建筑区的值分不开,大概率是定标参数没配对,建议回到辐射定标步骤重新检查入射角设置。
4. 预处理参数速查:视数、滤波核、DEM 与重采样怎么配
4.1 多视视数和滤波核尺寸:先定分辨率预算再定窗口
调参前先想清楚一个约束:你最终需要多大的地面分辨率。多视视数越大,分辨率越粗,噪声越低;滤波核越大,纹理越平滑,边缘保持越差。这两个参数本质上是在分辨率预算范围内的分配问题。
以 Sentinel-1 IW 模式为例,原始 SLC 的距离向分辨率约 5 米。如果目标是做 20 米分辨率的地物分类,距离向视数取 2,方位向视数取 3 左右,输出像元约 10-15 米,留出余量给后续重采样;如果目标是做 10 米分辨率的精细制图,多视视数就别超过 2,后续滤波选 3x3 的 Refined Lee,宁可保留一点斑噪也不能牺牲边缘。高分三号的标准模式类似,FS II 模式 10 米分辨率下不建议做超过 2 视的多视,否则道路等线性地物会被拉断。
一个实用的检查方法:多视后的影像放大到 1:1,人眼应能区分田块边界和大片地类的纹理差异;如果整景图看起来像“均匀的磨砂玻璃”,说明视数给大了。同理,滤波后在地物边缘处用光标切一条剖面线,如果边缘两侧的灰度过渡超过 5 个像元,滤波核就要调小。
4.2 DEM 的选择与匹配:SRTM 还是更高精度的本地 DEM
地形校正阶段用哪个 DEM,直接影响山区结果的可靠性。平缓地区 SRTM 90 米和 30 米都能胜任,几乎看不出差异;中高山区,SRTM 90 米在陡坡处会出现明显的阶梯状几何错位,尤其在峡谷底部,叠掩和阴影边界会整体偏移。这时候用 ALOS 12.5 米 DEM 或项目自购的高精度 DEM,山脊线和沟谷的贴合度会好很多。
选择 DEM 时注意两点:第一,DEM 的范围必须完全覆盖影像范围,缺一角都会导致对应区域的输出像元无值;第二,DEM 的投影最好是地理经纬度或与影像输出投影一致,否则 SARscape 在重采样时会额外做一次坐标转换,增加边缘误差。如果手里只有分幅的 DEM 数据,先拼接再裁到目标区域,最后统一重采样到整米格网,再输入到工具里。
4.3 输出参数设置:网格大小、投影方式和 sigma0/gamma0 的选择
地形校正的输出网格大小,建议直接按后续应用场景指定。要做 SAR 与光学影像的波段叠加分析,把输出网格设成光学影像的地面分辨率,例如 Sentinel-2 的 10 米,这样省去后续在地理坐标系里的强制重采样。对影像的像元值造成二次平滑的次数越少越好。
投影方式以 UTM 为主,国内范围建议选 WGS 84 UTM 对应带号。很少用到 Albers 等面积投影,除非你后续要做面积统计制图。物理量的选择上,绝大多数地表遥感应用输出 sigma0;城区、裸岩这类对入射角敏感的场景,gamma0 在地形校正后更接近真实值。输出格式选 ENVI 标准栅格.dat,同时自动生成.hdr头文件,方便 ENVI 直接读取,也方便后续转成 GeoTIFF 给其他软件用。
下表是我常用的参数组合,来源于几个实际项目的设置,可以直接抄作业:
| 应用方向 | 多视视数(距离x方位) | 滤波类型 | DEM 分辨率 | 输出物理量 |
|---|---|---|---|---|
| 20 米地物分类 | 2x3 | Refined Lee 5x5 | SRTM 30米 | sigma0 |
| 10 米城区精细制图 | 1x2 | Refined Lee 3x3 | ALOS 12.5米 | gamma0 |
| 农作物长势监测 | 3x4 | Frost 5x5 | SRTM 90米 | sigma0 |
| InSAR 形变前处理 | 不执行多视 | 仅做轻微低通 | ALOS 12.5米 | 保留复数格式 |
5. ENVI SAR 预处理避坑指南:5 个翻车现场与排查思路
5.1 现象一:影像出现横向亮带或条带条纹
导入并多视后的影像上出现周期性横向亮带,尤其在 ScanSAR 模式或多条带拼接数据上最常见。原因分两类:一类是传感器 ScanSAR 模式本身的拼接边界效应,不同 sub-swath 的噪声底不一致;另一类是产品自带的增益定标参数在多视处理时没有传递给后续流程,导致相邻子带的辐射水平不连续。
解决思路是回到导入环节,检查 SARscape 导入面板里的“增益校正”选项是否勾选。对于已经出现亮带的数据,可以在滤波前用 ENVI 的局部去条带处理或高通滤波配合掩膜修正。还有一个省事的办法:把地理上相邻区域重叠部分用直方图匹配统一一下,能缓解视觉上的条带感,但本质上还是要在源头把定标参数配齐。
5.2 现象二:滤波后细节丢失严重、出现黑色斑块
滤波后图像边缘模糊、线状地物断裂,同时均质地物内部出现不自然的黑色斑块。先说黑色斑块的原因:后向散射值极低的水体或阴影区在滤波窗口内与强散射目标混在一起,在乘性噪声模型下容易产生强烈的局部方差,滤波算法会将低值区压得更低,形成黑洞。
解决方法是换成边缘保持能力更强的 Refined Lee 或带局部方差估计的滤波器,同时把滤波窗口从 7x7 收回到 5x5 或 3x3。另外检查是不是漏了一步多视——直接在单视复数数据上做大窗口滤波,最容易出现这类“黑斑”。细节丢失严重的问题,本质是滤波核尺寸和地物尺度不匹配,道路和细河网分布密集的区域尤其注意。
5.3 现象三:地形校正后边缘出现撕裂或像元错位
地形校正输出影像的边缘出现锯齿状撕裂,或者在建筑密集区出现地物轮廓错位。原因通常是输入 DEM 范围小于雷达影像的范围,边界处没有高程数据参与计算,导致重采样插值失效。另一个常见原因是 DEM 分辨率和影像分辨率差距过大,陡峭山区用 90 米 DEM 配 5 米影像,山脊附近会出现明显的几何“拉丝”。
解决方法是先对 DEM 做范围检查和裁剪,确保完整包住影像并外扩至少 100 个像元。再把 DEM 重采样到与目标输出网格一致的分辨率,再输入地形校正工具。如果用的是多帧 DEM 拼接,检查拼接缝附近的高程突变,必要时先对 DEM 做平滑处理。
5.4 现象四:后向散射系数数值明显偏离经验范围
定标完成后的 sigma0 统计值整体偏高,例如水体区域超过 -10 dB,或者整体低到 -30 dB 以下。大部分情况是单位换算错误——SARscape 里输出默认有的是线性幅度值,有的是 dB 值,如果你把线性值当成 dB 值分析,数值当然对不上。
检查方法很简单:用 ENVI 的 Quick Stats 看统计量,线性值的均值一般在 0.01 到 0.5 之间,dB 值的均值一般在 -15 到 -5 之间。要是发现统计端元完全对不上,回到辐射定标面板重新选择输出类型。另一条容易忽视的原因是:输入数据是 GRD 产品,已经在分发前做过定标,你在 ENVI 里又做了一次辐射定标,相当于二次定标,数值自然被放大或压缩。GRD 产品直接跳过多视和定标,从滤波开始就行。
5.5 现象五:多时相数据之间亮度不一致、无法比较
同一地区两期影像做完预处理后,整体亮度差异明显,但同一地面反射体的后向散射值却有跳跃。原因是两次预处理使用了不同的入射角数据集或不同的输出物理量,比如一期选了 beta0、另一期选了 sigma0。或者两期数据的轨道入射角差异过大,没有统一到某个参考入射角下。
解决方法是把多时相数据放在同一个预处理批次里,统一传感器模式、统一多视视数、统一输出物理量、统一网格。对已经生成的不同网格数据,在分析之前用 ENVI 的Regenerate工具做一次强制最邻近重采样到共同网格,不要用双线性插值,以免引入光谱混合误差。
6. 预处理结果的验证套路:剖面线、统计值与一个多时相技巧
6.1 三步快速验证:统计分布、剖面线与已知地物比对
预处理链路走完,我会固定用三个步骤验证,缺一不可。第一步,打开直方图,确认后向散射系数分布是连续单峰或者双峰形态,存在明显的无效值台阶或大量亮值堆积说明定标有问题。第二步,在水体和城区的边界上各拉一条剖面线,水体内部波动应小于 3 dB,水体与陆地的边界过渡不应超过 2 个像元。第三步,叠加同一区域的 Sentinel-2 或 Google Earth 底图,检查河道、道路、大型建筑群的轮廓对齐误差。这三个步骤加起来不到十分钟,能筛掉八成以上的预处理质量问题。
6.2 进阶技巧:把多时相 SAR 统一到一个网格再分析
后期做变化检测时,真正让我少走弯路的习惯是:在预处理阶段就把所有时相统一到同一个坐标网格上。操作上先随便选一期数据,用它的输出网格定义作为模板,其他所有时相在地形校正时直接指定同样的投影参数和像元尺寸。这样出来的多时相影像在 ENVI 里做波段叠加或像元级时间序列分析时,连重采样都省了,并且每一期的后向散射系数都是同一物理量,做差值时噪声水平一致,变化检测的虚警率会低很多。
早年我为了省时间,各期数据各跑各的,最后做时序分析时发现相邻两期之间的“变化”里有一半是网格错位造成的伪变化,只能回头把全部数据重跑一遍,那次返工让我记住了:预处理的时间成本要在流程设计阶段花,不要留到返工阶段加倍还。如果你是按这条链路做完第一景数据,希望帮到你,剩下的就是在参数和场景之间找到属于你自己数据的那组最优值。
本文还有配套的精品资源,点击获取