简介:《ENVI对SAR数据的预处理过程详细版》是一份面向遥感初学者与ENVI/SARscape用户的实操型PDF教程,系统梳理SAR数据从导入到成图的关键步骤。文档以ALOS PALSAR数据为例,依次讲解数据导入、多视单视复数SLC处理、滤波降噪、地理编码与辐射定标,并在后文补充了影像镶嵌与不同传感器图像融合(如SPOT4与Landsat TM)的操作流程。每个环节均给出Toolbox菜单路径、参数设置建议(如方位向视数5、距离向视数1、Frost滤波窗口5×5等),并解释各步骤的作用,如多视抑制斑点噪声但降低空间分辨率,便于读者理解原理后动手实践。资源为单个PDF文件,大小1.16MB,已获得230人次学习,适合需要按步骤完成SAR预处理、缺少系统操作指引的工程师或科研人员作为案头参考。
1. ENVI做SAR数据预处理:为什么拿到手的雷达影像不能直接用
第一次把哨兵一号GRD数据拖进ENVI的人,大概率会愣一下:一片灰白噪点,城市和农田的边缘像被砂纸打过,山区还有大块黑影。直接用这张图做分类或变化检测,精度会惨到让人怀疑数据本身出了问题。ENVI对SAR数据的预处理过程详细版,本质上解决的就是一件事——把雷达测量值(DN)变成有物理意义的后向散射系数,同时把斑点噪声、叠掩、阴影和地形扭曲一层层剥掉。这个过程在行业里没有捷径,主流做法是ENVI配合SARscape模块走完整条链。适合做InSAR、光学和SAR协同、地物分类与变化检测的从业者,也适合刚拿到Sentinel-1、TerraSAR-X数据不知道从哪一步下手的初学者。
2. 用ENVI做SAR数据预处理:先弄清楚四个核心问题再做菜单操作
2.1 从SAR成像原理看:为什么SAR预处理和光学预处理思路完全不一样
SAR是主动微波遥感,卫星侧视发射电磁波并接收地面回波。SAR成像原理和光学成像最大的区别在于:光学影像记录的是地物反射太阳光的强度,而SAR记录的是地物对雷达波的“后向散射能力”。同一块地,在光学影像里叶子绿不绿决定亮度,在SAR影像里决定亮度的是表面粗糙度、介电常数和几何结构。所以很多做光学遥感的人第一次拿到SAR影像,下意识套用大气校正、辐射定标那套思路,结果发现完全行不通——SAR根本没有“大气散射”这个概念,它真正要处理的是相干斑噪声和侧视几何畸变。
侧视成像意味着地形起伏会把原本等距的地面压缩或拉长。面向卫星的坡面在影像上被压缩,叫透视收缩;陡坡超过雷达入射角时顶部回波先到,形成叠掩;雷达波照不到的山背后就是阴影。这些几何畸变和光学影像的投影差完全不同,不能用多项式拟合随便纠正,必须借助DEM做逐像素的地形校正。不同成像模式的畸变规律还不一样,聚束模式用PFA成像算法处理时相位历史的重构方式不同,叠掩和阴影的表现也更集中。所以预处理的第一步不是点菜单,而是先看你手里的数据是哪种产品、哪个级别、什么成像模式。
辐射定标的目标是把传感器输出的DN值转换成后向散射系数。对Sentinel-1 GRD产品来说,常用定标关系是σ0 = DN² / A²,A是定标常数,同时需要用查找表去除热噪声。这里有个常见误区:有人直接把DN转成8位灰度图再拉伸,然后拿去训练分类器,这样的特征值既不是后向散射强度也不是归一化值,换一个轨道或换一个时相就完全不可比。ENVI里做预处理,为的就是让不同时相、不同轨道、不同传感器的SAR数据放到同一个物理量纲下比较。
从工具属性看,ENVI把SAR预处理分成几个独立环节:导入、热噪声去除、辐射定标、多视、滤波、地理编码和地形校正。每个环节解决一类问题,顺序不能乱。多视通常在定标之前或紧跟着定标做,滤波放在定标之后,地形校正放在最后。实际项目里很多人图省事跳过热噪声去除,或者先裁剪再校正,这些省掉的步骤会在后续定量分析时加倍还回来。
2.2 ENVI的SAR工具链怎么选:内置工具、SARscape和SNAP各管什么
ENVI对SAR数据的支持经历了两个阶段。早期ENVI Classic自带一套Radar Tools菜单,能处理ERS、Radarsat这些老一代卫星的强度数据,做多视、滤波和简单地理编码。这套工具今天还在,但面对Sentinel-1、TerraSAR-X、ALOS-2这些新传感器时力不从心,不支持轨道导入、不支持SLC级别的相位处理。现在的行业主流做法是ENVI加SARscape模块。SARscape从第三方模块被收购进ENVI生态后,几乎成了ENVI用户做SAR预处理的默认选择。
SARscape把数据处理链路组织成几个固定目录:Import Data负责读入不同卫星产品,Focus做滤波和增强,Interferometry做干涉测量,DEM管理数字高程模型,所有工具都提供GUI菜单和批处理方式。相比之下,ESA官方的SNAP是另一个常见方案,免费、开源、对Sentinel-1的支持甚至比SARscape更细。很多新手会在两个工具之间纠结,我的建议是按项目定位选:如果你只处理Sentinel-1,且只做GRD强度图的预处理,SNAP完全够用;但如果你手里同时有光学影像和高光谱数据,希望在同一个工程里做光学和SAR协同、做蚀变信息提取、做PCA分析,那ENVI加SARscape的整合度更高,不用在SNAP和ENVI之间反复导数据。
安装环节有一个很容易翻车的点:装完SARscape后,ENVI菜单里看不到SARscape入口。原因通常是许可文件没被正确加载,或者ENVI版本和SARscape版本不匹配。SARscape 5.5以后的版本对ENVI 5.x各版本支持不同,装之前一定要对照模块说明确认版本对应关系,别只看安装包能跑就一路点下去。选ENVI版本也建议用5.6以上,老版本对BigTIFF和超大影像的支持会让你在处理大场景时吃不少苦头。
2.3 数据产品与目录组织:SLC和GRD别搞混,文件夹命名决定批处理效率
拿到SAR数据的第一件事不是打开ENVI,而是确认产品级别。这个决定直接改变整条预处理链条的方向。SLC是单视复数产品,保留了相位信息,做InSAR、地表形变必须用它;GRD是地距多视产品,已经是强度图,丢掉了相位,做地物分类、变化检测、光学和SAR协同分析用这个就够。SARscape里导入SLC和GRD是两条完全不同的入口,输出结果也不同:SLC导入后需要多视才能生成强度图,GRD导入后可直接走定标、滤波、地形校正,不需要再做多视。
实际项目中还有一个很实际的细节:目录组织和文件名规范。SARscape的批处理工具对输出路径有要求,路径里不能有中文和特殊字符。更重要的是,ENVI打开导入数据后,波段名默认显示为SARscape生成的名字,不一定带极化信息。如果你一次倒入VV、VH两个极化,后面处理完,波段名可能只显示成类似“s1a_iw_dv_010_..._σ0”这样一串,难以分辨哪个是VV哪个是VH。我的习惯是在预处理开始前就建好规范目录:原始数据、预处理输出、DEM、中间临时文件四层,原始文件名保留卫星名、轨道号和极化,输出文件名也按相同规则加后缀,例如S1A_IW_GRD_VV_σ0_DB.tif。
GRD和SLC的预处理差异可以用一张表说清楚:
| 产品级别 | 保留信息 | 适用任务 | 预处理链路的差异 |
|---|---|---|---|
| SLC | 振幅+相位 | InSAR、差分干涉、形变监测 | 导入后需多视生成强度图,相位链路单独走干涉流程 |
| GRD | 振幅(强度) | 分类、变化检测、光学融合 | 导入后直接定标、滤波、地形校正,不需要相位处理 |
预处理链路定了,再来看具体怎么做,这里落到几个真实参数上,才算是完整的过程。
3. SAR预处理详细步骤:用ENVI加SARscape跑通Sentinel-1 GRD全流程
3.1 从导入到地形校正的七个步骤
下面以Sentinel-1 IW模式GRD产品为例,用ENVI加SARscape走一遍完整预处理链。
第一步,导入数据。菜单路径是SARscape → Import Data → SAR Spaceborne → Sentinel-1。选到包含manifest.safe文件的文件夹,输出格式选ENVI Standard,这会生成一个.dat文件和配套的.hdr文件。导入时注意:GRD产品不要勾选SLC选项,两个产品在导入界面上虽然长得像,但选错后面的所有步骤都会崩。另外,Output Directory一定用英文路径,路径里有中文会在后续处理中报莫名其妙的错。
第二步,热噪声去除。菜单路径是SARscape → Focus → Thermal Noise Removal。这一步很多人直接跳过,觉得不做也能出图。实际效果是:不做热噪声去除,影像边缘会出现明显的条带状噪声,尤其在近距端和远距端的强度分布会偏离真实后向散射。在平坦区域不明显,但在海洋、裸土这类低后向散射区,热噪声会直接盖住真实信号。多极化数据记得选择All Polarizations,让VV和VH一起处理。
第三步,辐射定标。菜单路径是SARscape → Focus → Radiometric Calibration。校准类型选Sigma(σ0),输出数据类型选Float。SARscape内部会自动读取定标常数并应用定标方程。这一步的关键是把定标结果存成浮点型,千万别为了省空间输出成Byte。以后如果要计算比值、做时序分析,整数化的强度值会产生巨大的量化误差,这个坑在SAR数据处理里特别阴。
第四步,多视。GRD产品本身是经过多视处理的,所以在这里直接用1×1保持现状即可。如果你用的是SLC产品,或者觉得影像的等效视数还不够,想通过多视抑制斑点噪声,可以用2×2或3×3。多视的本质是用分辨率的代价换取辐射分辨率,视数越大斑点越平滑,但空间细节丢失越多。做变化检测通常2×2,做地物分类可以用3×3,做需要保留线性地物的任务时老老实实1×1。
第五步,滤波。菜单路径是SARscape → Focus → Filtering,滤波器选Refined Lee,窗口大小选5×5。Refined Lee是SARscape里用得最多的自适应滤波器,它能在平滑斑点噪声的同时尽量保留边缘和点目标。窗口大小选7×7以上时,河流、道路这类线性地物会被磨得看不出边界,后面做分类时会直接翻车。滤波的核心理念是选时相不变、窗口不变,保持处理一致性,宁可多留一点噪声也不要过度平滑。
第六步,地形校正。菜单路径是SARscape → General Tools → Geocoding → Range-Doppler Terrain Correction。这个步骤需要指定DEM。如果做的是小范围场景,用SRTM 30米DEM可以接受;如果研究区是山地或丘陵,强烈建议换国产的GDEMV3或Copernicus 30米DEM,陡峭区域需要10米分辨率。重采样方法选双线性插值,输出投影选择当地UTM带,这样影像才能和矢量底图、光学影像精确叠加。
第七步,检查输出。地形校正完成后,打开影像看一眼,重点检查三件事。第一,山区的阴影方向是否和雷达成像方向一致,如果阴影跑到另一边说明DEM和影像的几何关系错位了。第二,影像边缘是否有大面积黑边,有的话说明导入时选择的范围包含了无效扫描带。第三,强度直方图是否合理,如果直方图集中在极小值或极大值,多半是辐射定标参数没设对。
这几步走完,SAR数据就能用于目视解译和初步分析,但要真正做定量分析,参数的选择逻辑还需要展开讲透。
3.2 必调参数的选择逻辑:多视、滤波窗口、DEM、σ0还是γ0
参数选择不是拍脑袋,而是要回到SAR数据的物理特性上去。多视和滤波的目的都是抑制相干斑噪声,而相干斑是一种乘性噪声,噪声强度与信号强度成正比。这就意味着你不能像处理光学影像那样用固定窗口的高斯滤波去处理它,否则强信号区会有残余噪声,弱信号区会被过度平滑。Refined Lee这类自适应滤波器的好处在于,它会根据局部方差动态调整平滑强度,在均匀区域多平滑,在边缘区域少平滑。
窗口大小选择有实际规律:5×5适合城市、裸土、农田这类纹理丰富但边界清晰的场景;7×7适合大面积水体、沙漠这类均匀地表;3×3适合需要精细保留线性地物的任务,比如道路提取和河网提取。滤波参数在预处理链中的位置同样重要——滤波一定要在辐射定标之后做,因为定标会改变影像强度值的统计分布,先滤波再定标会让滤波器的统计假设失效。
DEM的影响往往被低估。地形校正的本质是用DEM模拟雷达侧视几何,然后逐个像素重新投影。如果DEM的分辨率明显低于SAR影像,校正完的影像会出现“阶梯状”纹理;如果DEM本身高程误差大,山脊线处会产生错位重影。SARscape里提供Range-Doppler和光学Flow算法两种校正方式,SAR数据常规用Range-Doppler。对Sentinel-1 GRD这类地距产品,Range-Doppler校正还支持一个关键参数:校正时选择输出σ0还是γ0。
σ0是雷达截面归一化到地面投影面积的量,γ0是归一化到垂直于雷达视线方向的投影面积。在平地上两者差别不大,在地形起伏大的山区,局部入射角变化会让σ0值产生较大波动,看起来像后向散射的真实变化,其实是几何效应。处理山地数据时我一般会输出γ0,它会减弱地形引起的强度调制,让后续分类和时间序列分析更稳定。SARscape的地形校正界面里有Sigma和Gamma两个选项,直接选Gamma就行。
还有一个细节是投影设置。以中国为例,青藏高原用UTM 46N或47N,云贵川用48N附近,选错了UTM带会让影像产生明显的旋转和位移。如果涉及跨带的大范围数据,直接用Albers等面积投影比UTM更合适。
3.3 批处理与数据导出:从浮点σ0到能入库的成品
SARscape本身提供批处理工具(Batch Processing),但它的批处理基于GUI参数一次性提交,不够灵活。更常见的是把预处理链完整跑完后,在ENVI里做最后一步包装:把浮点型σ0转成dB,并导出带地理信息的GeoTIFF。这里给出一段可用的IDL代码,做的是σ0转dB并浮点转Byte的标准化导出。
; 预处理输出包装:σ0浮点转dB并导出GeoTIFF ; 前提:已完成SARscape辐射定标和地形校正,输出为Float型 file = 'S1A_IW_GRD_VV_sigma0.dat' ENVI_OPEN_FILE, file, r_fid=r_fid ENVI_FILE_QUERY, r_fid, NB=nb, DIMS=dims, DATA_TYPE=dt ; 波段运算: dB = 10*log10(σ0 + 0.001) ; 加0.001是为了避免log(0)出现-Inf,并把极小值压低 exp = '10 * ALOG10(b1 + 0.001)' ENVI_DOIT, 'ENVI_BAND_MATH_DOIT', $ EXP=exp, DIMS=dims, $ B1={FID:r_fid, POS:0}, $ OUT_NAME='S1A_IW_GRD_VV_sigma0_db.dat' ; 导出GeoTIFF,保留地理参考信息 ENVI_FILE_QUERY, r_fid, MAP_INFO=map_info ENVI_EXPORT_TIFF, 'S1A_IW_GRD_VV_sigma0_db.tif', $ FID=r_fid, POS=0, MAP_INFO=map_info这段代码的逻辑很直接:先打开定标后的浮点影像,用波段运算公式把后向散射系数转成dB单位。之所以转dB,是因为后向散射系数的动态范围很大,线性域下低后向散射区(水体、道路)和高后向散射区(建筑、裸岩)相差数十倍,在8位灰度下全挤在暗部,完全看不出层次。转成dB后,典型水体约-18dB,城市约-5dB,动态范围变成十几dB,目视解译和阈值分割都更舒服。加0.001是工程里的小技巧,水面和阴影区域σ0可能接近0,直接求对数会产生负无穷,加一个小的偏移量把下界压住。
ENVI_EXPORT_TIFF是ENVI Classic里最常用的轻量级导出方式,适合单波段数据。新版ENVI 5.x推荐用ENVIExportTask,功能更完整,能支持BigTIFF。如果一张影像超过4GB,旧版TIFF格式写不进去,导出会直接失败。处理大范围Sentinel-1数据时经常遇到这种情况,解决方法是改用BigTIFF,或者在SARscape里按分块处理,最后再拼接。
代码里的Float输出问题是另一个常见坑。很多人在辐射定标时为了省空间选了Byte输出,等到转dB的时候发现负值全被截断了,影像直方图出现明显的断崖。这个损失是不可逆的,相当于把后向散射系数之间的比值信息扔掉了。所以前面说定标这一步必须输出Float,不是洁癖,是后面所有定量分析的根基。
4. 避坑:SAR预处理最容易翻车的5个细节
4.1 常见问题:定标、滤波和地形校正的翻车现场
现象一:导入Sentinel-1 GRD后影像有明显的条带状噪声,尤其在影像近距边和远距边,像一层横向的水波纹压在地表上。
原因:热噪声去除步骤被跳过。GRD产品的热噪声在边缘区域尤其明显,它会抬高低后向散射区的强度估计,使得水体、道路这类暗目标看起来像覆盖了一层雾。
解决:在SARscape里先执行Thermal Noise Removal再辐射定标。注意参数里要选中所有需要的极化,VV和VH均去除热噪声后,两极化通道才具备可比性。
现象二:滤波后点目标消失了。一座独立的高压电塔、一辆停在裸地上的车,处理前还能分辨,处理后变成一片模糊。
原因:滤波窗口太大,或者用了非自适应的滤波模式。常看到有人用7×7甚至9×9的Lee滤波处理城市区域,结果把线状和点状目标磨平了。
解决:把滤波器换成Refined Lee,窗口调回5×5。先多视后滤波,多视本身已经起了一次平滑作用,不要再叠加额外的大窗口。如果要做目标检测和线性地物提取,滤波强度应进一步降低,或者干脆不做滤波只做多视。
现象三:山地地形校正后,山脊线和沟谷的位置和光学影像对不上,严重时出现重影。
原因:DEM和SAR影像的分辨率差距太大,或者DEM的投影与校正输出投影不一致。SRTM 30米DEM在地形平缓地区够用,在陡峭山谷里一个像素可能跨越几十米的高差,校正算法找不到精确的匹配位置。
解决:换用Copernicus 30米或更精细的DEM,在SARscape地形校正界面上把DEM重采样方法设为双线性,输出投影和DEM投影先人工统一。另外检查是否选了Range-Doppler校正,别误选简单的多项式地理编码。
现象四:σ0输出后直方图堆积在0附近,整体影像发黑。
原因:辐射定标时选了线性尺度输出,而水体、阴影这类低后向散射目标的σ0值只有零点零零几,线性显示下几乎为黑。并不一定是处理错误,而是显示问题。
解决:转成dB单位显示。这在ENVI里就是一段Band Math的事:10*ALOG10(b1+0.001)。如果因为储存类型是Byte导致负值被截断,那就必须回头重新定标输出Float,截断造成的损失补不回来。
4.2 参数与环境相关的坑:轨道文件、坐标系和内存
现象五:用SARscape做多时相序列预处理时,各景影像的地理编码结果始终对不齐,同一地物在不同影像上偏差几个像素到十几像素。
原因:没有使用精确轨道文件。Sentinel-1发布时自带的轨道状态向量是预报轨道,定位精度在米级,而SAR预处理要求的地形校正精度需要亚像素级的一致性。这个问题在做时序分析和干涉测量时会被放大,直接影响形变解算结果。
解决:预处理前到ESA官网下载对应时段的精确轨道文件(EOF文件),导入SARscape的轨道设置里。SARscape支持在导入数据时自动关联轨道文件,但需要保证数据文件夹中有对应的EOF文件。用精确轨道完成后,同一地区的多时相影像可以做到亚像素级对齐。
坐标系也是一个高频翻车点。常见操作是先用ENVI里的多边形裁剪工具把SAR影像裁到研究区再地形校正,结果校正后的影像边缘出现大量拉伸变形,几何精度惨不忍睹。地距几何校正必须在原始斜距或地距空间完成,先裁剪会破坏轨道几何和DEM之间的映射关系,尤其在大地形变的边缘地区,错误会被地形校正在校正过程里放大。正确顺序是先完成整个数据范围的地形校正,再在投影坐标系下做矢量裁剪。
内存不足是另一个隐蔽问题。ENVI处理Sentinel-1 IW模式GRD时,单景数据体量通常在1-2GB,如果还叠加了高分辨率的DEM和多极化输出,SARscape的临时缓存会迅速占满系统盘。造成的结果是运行到一半跳出“Invalid parameter”或直接闪退,给的报错信息完全没参考价值。解决办法是在ENVI的Preferences里把临时文件目录和缓存大小指到大分区,SSD余量留出两倍于SAR影像数据体量的空间,同时确认ENVI 5.x的64位版本和足够的系统内存。别在8GB内存的机器上跑多极化大场景批处理,这个配置下做一景都勉强。
5. 进阶用法:预处理做完不等于结束,验证和数据挖掘才是分水岭
5.1 预处理质量体检:三个指标一张表
我前后跑过几十条SAR预处理链后总结出一个习惯:任何一条链跑完,先做三个检查再谈后续分析。第一个指标是等效视数ENL,计算公式是mean²/variance,在影像里选一块均匀区域(平静水面、平整裸地)计算,GRD产品预处理后ENL通常在10到30之间。ENL太低说明滤波不足或没有多视,太高说明细节被磨平了。第二个指标是后向散射直方图的形状,自然地表多时相影像的直方图应该是连续的、单峰的,如果是锯齿状或双峰,多半是定标或量化出了问题。第三个指标是几何配准误差,把预处理完的影像和光学底图或矢量边界叠在一起,看道路、水岸线这些线性特征的偏移量,山地场景允许一个像素内,平地场景应该做到0.5个像素以下。
这三个检查不需要复杂工具,ENVI里直接用统计功能和叠加窗口就能完成。拍照记下每景影像的ENL值和直方图范围,积累几条链后,你能本能地识别出哪些预处理参数设错了。
5.2 让预处理结果创造价值的两个方向:多时相PCA与光学协同
预处理完成的σ0影像,真正有价值的用法是做多时相分析。把同一地区不同日期的VV、VH影像按时间顺序叠成一个多波段文件,然后在ENVI里做主成分分析(PCA),第一主成分通常是总体后向散射强度的时相平均值,第二主成分往往能分离出植被物候变化或土壤湿度波动。这个方法在ENVI里就是标准PCA流程,但要注意把不同时相的影像先做直方图匹配,避免轨道或入射角差异被PCA当成主要信号。
SAR数据和光学数据的协同是这两年特别值得投入的方向。光学影像有云就容易失效,而SAR不受云干扰,用预处理后的SAR强度图和纹理特征可以辅助光学影像的云区信息重建,这个思路在植被监测和灾害评估里都有实际需求。另一条路是把SAR预处理结果和ENVI里的GF-5高光谱蚀变信息提取流程放在同一个工作流里,用SAR的后向散射特征去补充高光谱数据的地表粗糙度信息,对裸露区的矿物填图有帮助。
从我自己的经验看,SAR预处理里最常出问题的不是软件操作,而是处理目标不明确。拿到数据先问自己:我要的是强度、纹理还是相位?我关心的地表参数在哪个极化、哪个入射角下最敏感?这些问题想清楚了,参数设置自然有依据。我前年处理一批山地影像时就因为没做γ0归一化,把地形无意中当成了变化信号,浪费了不少时间。之后每条链路过完都先做上面三个检查,再叠加一句:先相信数据本身,再用验证结果去修正流程。希望这些经验对你的SAR处理能少走点弯路,也希望你能早点找到适合自己研究区的那套固定参数组合。
本文还有配套的精品资源,点击获取