简介:面向遥感与雷达图像处理初学者及工程应用人员的一份Word说明文档,围绕ENVI平台下的SARscape 5.2展开,重点回答该插件是什么、适合哪些任务以及如何选择模块。内容从sarmap公司的雷达图像处理背景切入,梳理核心模块与五个扩展模块的分工,涉及数据预处理、几何校正、辐射校正、干涉测量、极化雷达分析和时间序列分析等典型场景,并说明其与ENVI协同处理哨兵一号等多源遥感数据的思路。压缩包内共1个docx文件,大小约14KB,轻量便于查阅和随项目归档。已有1475人学习,适合希望快速建立SARscape功能框架、在InSAR、PolSAR及变化监测等方向选型的使用者作为入门参考,也可为后续查阅官方资料和设计处理流程提供索引。
1. 相位才是信息载体:一张满屏斑点的灰图凭什么测出毫米形变
用 SARscape 5.2 挂进 ENVI 跑完一条干涉流程,不少人第一次看到结果会以为软件出了问题:满屏斑点,明暗条纹像水波纹,跟光学影像那种干净利落完全不是一回事。可这张“丑图”恰好说明了雷达遥感最反直觉的一点——被记录下来的不是亮度,而是相位。灰度只是复数模长的副产品,真正承载地形与形变的是那个取值范围只有 -π 到 π 的角度。C 波段一个 2π 的相位循环只对应视线向 2.8 厘米左右的位移,而干涉相位能测到这个循环的百分之一量级。搞懂相位怎么被生成、怎么被缠绕、又怎么被还原,才算真正摸到雷达图像处理的底层。
2. 从脉冲到复数像元:SAR 图像是被“算”出来的
雷达图像不是“拍”出来的,是“算”出来的。这个差别决定了后面所有的处理逻辑:一张 SLC 里每个像元是一个复数,实部虚部各有来历,而这个复数是在距离向和方位向两次匹配滤波之后才成形的。理解这两次压缩,才能理解为什么带宽决定分辨率、为什么天线长度决定方位精度、为什么斜距坐标不能直接当地图用。
2.1 侧视几何:雷达测的是往返时间,不是角度
光学相机靠镜头把不同角度的光线投到焦平面上,雷达没有焦平面,它发射一个电磁脉冲出去,等回波回来,用往返时间折算斜距。这个物理机制带来三个直接后果:天线斜着往地面照,所以存在叠掩、透视收缩和阴影;两个维度的分辨率来源完全不对称,一个靠信号带宽,一个靠平台运动;输出的坐标是斜距-方位,不是地距-地理,任何要与地图叠加的成果都必须先做地理编码。
距离向分辨率的表达式很干脆,δR = c / (2B),B 是线性调频信号的带宽。原始发射脉冲持续时间往往是几十微秒,按 c·τ/2 算出来分辨率是公里级,根本没法成像。解决方式是让脉冲在持续时间内频率线性扫过一段带宽,接收端用一个与发射波形共轭匹配的滤波器做相关,把能量重新聚成一个窄峰,主瓣宽度约等于 1/B。这套“以时间换带宽、以计算换分辨率”的思路,是整条雷达信号处理链的地基。
import numpy as np # 距离向脉冲压缩示意:线性调频(chirp)+ 匹配滤波 B = 56.5e6 # 带宽 56.5 MHz,理论距离分辨率 c/(2B) ≈ 2.65 m T = 40e-6 # 脉冲持续时间 40 微秒 fs = 1.2 * B # 采样率,留 20% 余量避免混叠 t = np.arange(0, T, 1 / fs) k = B / T # 调频率 = 带宽 / 脉宽 chirp = np.exp(1j * np.pi * k * t ** 2) # 发射的复信号表示 pos = 1000 # 目标回波在第 1000 个采样点 rx = np.zeros(2 * len(chirp), dtype=complex) rx[pos:pos + len(chirp)] = chirp # 接收信号 = 延迟后的发射波形 matched = np.conj(chirp[::-1]) # 匹配滤波器:时间反转取共轭 compressed = np.convolve(rx, matched, mode="same") peak = int(np.argmax(np.abs(compressed))) print(peak, np.abs(compressed[peak]), f"{3e8 / (2 * B):.2f} m")这段代码只做一件事:验证压缩后的主瓣位置和宽度。B决定分辨率,调大 B 会让主瓣变窄、峰值变高,但采样率和噪声带宽也同步上升,这就是硬件设计上真实存在的取舍。T决定能量,时间带宽积 B·T 越大,压缩增益越高。实际处理中还要处理距离徙动、窗函数加权(压低旁瓣、展宽主瓣)这些细节,但主干就是这几行。
2.2 方位向:用几公里的“虚拟天线”换米级精度
平台沿轨道飞行,同一个地面点会在一段航程里被连续照射几十次到上百次。每照一次,雷达记录一个相位。因为雷达与目标的相对位置一直在变,回波相位随慢时间呈近似二次型变化,形成一个多普勒调频信号——等价于在方位向也有一个 chirp。对方位向再做一次匹配滤波,就能把这段“历史”压成一个点。
方位向分辨率约等于天线方位向尺寸的一半,D/2,而且与轨道高度、与距离都无关。物理天线十几米,等效孔径能拉到几公里,这才是“合成孔径”四个字的真正含义。代价也很明确:脉冲重复频率限制了不模糊的方位向多普勒范围,平台姿态和轨道精度直接决定聚焦质量,处理链里必须做多普勒中心估计和多普勒调频估计,这两步估偏了,整景图会整体模糊。
提示:方位向模糊、距离向模糊不是软件 bug,是采样定理决定的硬边界,只能靠设计参数和成像模式规避。
2.3 SLC 像元解剖:幅度、相位与三种定标口径
SLC 全称 Single Look Complex,每个像元存的是 I + jQ 两个实数。幅度 A = √(I² + Q²) 用于目视成像、纹理分析和强度分类;相位 φ = atan2(Q, I) 才是干涉、极化和偏移量追踪真正消费的东西。注意这个相位是主值,范围被压在 (-π, π],它与真实路径长度的关系是 φ = -(4πR/λ) mod 2π——斜距每变化半个波长,相位就绕一圈,这就是后面所有“缠绕”问题的源头。
强度定标有三种常用口径,混用会让反演结果差出几 dB。beta0 是雷达亮度,不做任何几何归一化,只适合传感器之间的一致性比较;sigma0 归一化到斜距面,但仍带入射角效应;gamma0 归一化到地距面,把投影面积的变化补偿掉,植被、土壤这类散射体做定量分析时更常用。三种口径之间的换算需要入射角,软件里给你选哪个,本质上问的是“你要不要消掉地形对散射面积的调制”。
import numpy as np def slc_to_products(i, q, cal_const_db=0.0): """把一个 SLC 像元拆成幅度、相位、定标强度""" z = np.asarray(i, dtype=float) + 1j * np.asarray(q, dtype=float) amp = np.abs(z) # 幅度:给目视和分类用 phase = np.angle(z) # 相位:主值,范围 (-pi, pi] intensity = amp ** 2 # 强度 = 幅度平方 sigma0 = intensity * 10 ** (-cal_const_db / 10) # 用定标常数还原物理量 return amp, phase, 10 * np.log10(sigma0 + 1e-12) amp, ph, db = slc_to_products(120, -37) print(f"amp={amp:.1f} phase={ph:.3f} rad power={db:.2f} dB")cal_const_db是定标常数,单位 dB,来自元数据里的标定字段;+1e-12只是防止对 0 取对数。关键在于最后一行:一旦转成 dB,后面再做比值、做减法都要小心,dB 域相减等于线性域相除,很多“反演值偏了几个 dB”的问题都出在这里。
3. 模块化架构:核心加五个扩展模块背后的裁剪逻辑
雷达数据处理的计算量和内存占用跟光学完全不是一个量级。一景 Sentinel-1 IW SLC 解压后几个 GB,做干涉要同时驻留两景加一堆中间产品,时序分析更是几十上百景的栈。把功能拆成核心模块加五个扩展模块,表面上是商业上的按需购买,底层其实是让用户按自己的算力预算和数据规模裁剪处理链——不跑干涉的人不必为解缠算法和相位栈占用的资源买单。
3.1 核心模块:不是“基础功能”,是数据模型与坐标基准
核心模块承担的活看起来最不起眼:数据导入、元数据解析、质量检查、基础图像运算。但它是整条链的地基,因为它定义了后面所有模块共用的数据模型。卫星原始产品格式各不相同,轨道文件、定标常数、成像时间、多普勒参数都得在导入阶段一次性读进元数据并做一致性校验;坐标系、投影、像元间距、斜距与地距的换算关系也在这里确定。
这一步做不好,后面全是玄学。轨道文件缺失会导致地理编码偏移,元数据里的成像时间差几秒会让配准直接失败,定标常数读错会让所有强度分析偏出量级。质量检查环节往往被跳过,但它做的事很实在:检查数据饱和度、检查缺失行、检查元数据完整性。老手的习惯是导入完先看一遍元数据和强度直方图,两分钟能省掉后面两小时的排查。
3.2 干涉测量:一个相位里同时装着高程、形变和噪声
干涉相位不是单一来源,它是个加法式:
φ_int = φ_flat + φ_topo + φ_defo + φ_atm + φ_orbit + φ_noise
φ_flat 是参考椭球面带来的平地相位,与地形无关但随基线变化;φ_topo 是地形相位,与垂直基线 B⊥ 成正比;φ_defo 是形变相位,与时间基线内的位移成正比。去平地和去地形这两步的本质,就是用几何模型把前两项算出来减掉,剩下的才可能是形变。这也是为什么干涉处理必须依赖精密轨道和外部 DEM——你在用一个已知模型去剥离未知量。
灵敏度差异很值得注意。高程方向,相位对高程的敏感度与垂直基线成正比,基线越长对地形越敏感,但基线过长会导致失相干,这是个硬约束;形变方向,一个 2π 对应 λ/2 的视线向位移,C 波段约 2.8 厘米,且与基线无关。所以长基线适合做 DEM,短基线适合做形变,同一个模块里两种用法对基线的要求是矛盾的。
3.3 极化分析:四个通道构成的 2×2 散射矩阵
全极化数据每个分辨单元记录的是一个 2×2 复散射矩阵,四个元素对应 HH、HV、VH、VV 四种收发组合。在互易性假设下 HV ≈ VH,剩下三个独立复通道,共 9 个实自由度。这 9 个数描述的不是亮度,而是目标对不同极化状态的响应方式:表面散射、二面角散射、体散射在这 9 个数上的分布明显不同。
处理方法上,常见的是构造协方差矩阵或相干矩阵(3×3 或 4×4 的厄米矩阵),再做分解。Pauli 分解把矩阵投影到一组正交基上,得到三个通道分别强调奇次散射、偶次散射和体散射,物理意义直观;特征值分解类的做法(H/A/α 那一套)把矩阵拆成特征值和特征向量,用熵、平均散射角这些量刻画散射的随机程度。森林监测里区分冠层体散射和地表二面角、城市里区分建筑朝向,靠的都是这些分解量,而不是单通道强度。
3.4 时间序列:把二维图像变成三维数据栈
时序分析做的事情是把 N 景影像对齐到同一个网格上,构成一个 N×H×W 的复数栈,然后对每个像元独立解一个时间序列模型。这个数据组织方式的改变带来两个后果:一是内存和 IO 成为主要瓶颈,必须分块处理;二是误差模型变了,单幅干涉里可以忽略的大气延迟,在时序里必须建模,否则会污染整条曲线。
两类主流路线解决的是同一问题的两个侧面。一类基于永久散射体,靠幅度离散指数筛出稳定点,用单主影像构 interferogram,对点位相位做线性加季节项的模型拟合,优点是点位精度高、抗失相干强,缺点是在植被覆盖区点太稀;另一类基于小基线集,把影像按时空基线分组,组内做差分干涉,再用奇异值分解把不连续的观测拼成连续时间序列,优点是空间覆盖完整,缺点是对失相干区域敏感。选哪条路线,取决于你的研究区是城市还是农田,而不是哪个算法更“先进”。
3.5 几何校正与辐射校正:把斜距图变成可叠加的产品
几何校正解决的是“这个像元到底在地球上哪个位置”。雷达是斜距成像,地形起伏会让地物在图上发生位移,近处山坡被拉向雷达、远处被推远,不做校正直接叠到地图上会整体错位。校正依赖距离-多普勒模型,需要轨道状态矢量、外部 DEM 和多普勒参数三者配合:轨道定卫星位置,DEM 定地面高程,多普勒方程定等距线的交点。地理编码就是把这个模型逐像元解算一遍的过程。
辐射校正解决的是“这个像元的回波强度能不能跟别的像元比”。地形起伏会改变局部入射角,同一片草地长在陡坡和平地上,回波强度能差好几 dB,但它们的生物物理属性可能完全一样。地形辐射校正就是用地形模型把局部入射角算出来,按散射面积做补偿。这一步在分类和定量反演前几乎是必须的,跳过它会让分类器学到“坡度”而不是“地物”。
4. 干涉处理链:从两景 SLC 到一张可信形变图的每一步
一整条干涉链有七八个环节,每个环节都有失败的可能,但失败的表现往往长得一样——相干性低、条纹乱、解缠错。把每个环节的误差传递搞清楚,才能在看结果时快速定位是哪一步出了问题,而不是一路改参数试到天亮。
4.1 配准:为什么精度必须压到百分之一像元
两景影像必须先配准到亚像元级,干涉才能成立。原因是相位对几何错位极度敏感:主影像的一个像元与从影像的对应像元如果错开 δ 个像元,两者记录的斜距就差了一小段,这段差值直接进入干涉相位,形成一个随距离向线性变化的趋势项,看起来像倾斜的条纹。
常见的经验线是把配准误差压到 1/100 像元以下,这样引入的相位误差能控制在几度的量级,不至于淹没有用的形变信号。实际流程通常是粗配准加精配准两级:粗配准用轨道参数算初始偏移,精配准在过采样后的干涉图上做相干最大化或相位差最小化,迭代几次把偏移量收敛到亚像素。这里翻车最常见的原因是时间基线太长或地表变化太大,配准窗口里根本找不到稳定特征,这时候换更长的窗口、换更稳的区域、或者干脆换一对影像,比调参数有效。
4.2 相干性与滤波:噪声的地图,也是可信度的地图
相干性是两个复信号的归一化互相干系数的模,取值 0 到 1,物理含义是这两次观测里散射体构型保持稳定的程度。它不是副产品,是质量地图:水体、茂密植被、快速变化的施工区相干性接近 0,岩石、建筑、裸地接近 1。判断一张干涉图能不能用,先看相干性图,比看条纹靠谱得多。
滤波的目的是压低相位噪声,让条纹连续。空域自适应滤波是主流做法,按局部统计特性分配平滑强度,相干性高的地方轻平滑、低的地方重平滑,代价是分辨率损失和相位偏差。这里有个常见误区:把滤波当成万能的,反复加大滤波强度直到条纹“好看”。过度滤波会把真实的高频形变信号一起抹掉,还会在相干性突变的地方引入相位跳变,直接害死后面的解缠。
4.3 相位解缠:把绕圈的相位还原成连续路径
干涉相位被缠在主值区间,解缠的任务是为每个像元找到正确的 2π 整数倍,把它还原成连续的绝对相位。这是个病态问题:二维相位场只有在满足积分与路径无关(残差为零)时才有唯一解,实际数据里噪声和失相干会制造大量残差点,解就变成“在约束下找一条最合理的路径”。
主流算法分两大家族。一类是路径跟踪型,先识别残差点并在正负残差点之间连枝切线,解缠时绕开这些切线,保证积分路径不穿过噪声;另一类是最优化型,把解缠写成最小费用流或最小二乘问题,用全局代价函数求解。前者的结果对切线策略敏感,后者计算量大但更稳。
import numpy as np def estimate_wrapped_gradient(phase): """在缠绕域估计相位梯度:先把相邻差绕回主值区间""" dx = np.angle(np.exp(1j * (phase[:, 1:] - phase[:, :-1]))) dy = np.angle(np.exp(1j * (phase[1:, :] - phase[:-1, :]))) return dx, dy def residue_map(dx, dy): """残差点:绕一个闭环的梯度积分不为零的位置 = 解缠的麻烦制造者""" loop = dx[:-1, :] - dx[1:, :] + dy[:, 1:] - dy[:, :-1] return np.round(loop / (2 * np.pi)).astype(int) wrapped = np.angle(np.exp(1j * np.random.rand(64, 64) * 6)) # 模拟缠绕相位 dx, dy = estimate_wrapped_gradient(wrapped) res = residue_map(dx, dy) print("残差点数量:", np.count_nonzero(res))np.angle(np.exp(1j * Δ))是缠绕域求差的固定写法,作用是把差值折回 (-π, π],避免跨圈造成假梯度。第二段按四个相邻梯度求闭环积分,结果除以 2π 取整,得到的就是该闭环包住的残差电荷。残差点越多,说明数据质量越差,解缠结果越不可信。实际算法里,残差点的分布直接决定枝切线怎么连,而切线策略的优劣又直接体现在解缠图的“疤痕”走向上。
注意:解缠失败的区域往往成片出现,且边界沿着河流、道路、植被边界这些相干性突变的位置,这本身就是判断解缠是否可信的重要线索。
4.4 时序解算:PS 与 SBAS 各自付出的代价
时序处理把前面每一步都重做几十上百遍,然后在时间维上做联合解算。PS 路线选点靠幅度离散指数,一般要求点目标的幅度在时间上足够稳定,选出来的点稀但准,随后对每个点建相位模型——常数项加线性速率加可能的季节项,用最小二乘拟合,迭代剔除残差大的观测。它的隐含假设是形变在时间上近似线性,遇到突变的沉降或施工加载会失真。
SBAS 路线先按基线阈值把影像分成若干小基线集,集合内部做差分干涉,再用地形相位和轨道残差做校正,最后把所有集合的观测拼成一个大的稀疏方程组,用奇异值分解求最小范数解。
import numpy as np def sbas_invert(design, phase, reg=1e-6): """ design: 形状 (n_ifg, n_epoch-1),每行表示该干涉对应的两个历元差分 phase : 形状 (n_ifg,),解缠后的差分相位(已转成位移) reg : 正则化系数,抑制病态方向 """ d = design.T @ design + reg * np.eye(design.shape[1]) rhs = design.T @ phase # 方程秩亏时用伪逆求最小范数解,正则是给数值稳定性兜底 velocity = np.linalg.solve(d, rhs) return velocity n_epoch, n_ifg = 20, 45 D = np.zeros((n_ifg, n_epoch - 1)) for i in range(n_ifg): a, b = np.sort(np.random.choice(n_epoch, 2, replace=False)) D[i, a:b] = 1.0 # 干涉 = 区间内各历元速率累加 phi = D @ np.random.rand(n_epoch - 1) * 0.02 + np.random.randn(n_ifg) * 0.005 v = sbas_invert(D, phi) print(v.shape, np.round(v[:5], 4))设计矩阵D的每一行描述“这个干涉覆盖了哪一段历元区间”,本质上是个积分算子;reg用来对付那些所有干涉都没覆盖到的历元,没有它矩阵会奇异。这个结构的直接后果是:SBAS 解出来的是相邻历元之间的平均速率,绝对量需要外部基准约束;而 PS 解出来的是每个点的绝对位移序列,但点稀疏。两者互补,不是替代关系。
5. 避坑与排查:处理链上最容易翻车的五件事
雷达处理的坑有个共同特点——报错信息往往跟真正的原因无关,软件一路跑完也不报错,但结果就是不能用。下面这几条都是从结果往回推才能定位的经验。
5.1 相干性整景接近零:先查时间和几何基线
现象是干涉图几乎全是噪声,相干性图整体偏暗,滤波器开到最大也出不来条纹。原因通常有两个:时间基线太长,地表散射体已经彻底变了,尤其是植被和农田区域,几十天就足够让相干性掉到 0.1 以下;几何基线太长,两次观测的入射角差异大,散射相位不再相关。还有一种隐蔽情况是成像模式不匹配,一景是升轨一景是降轨,或者一景条带模式一景宽幅模式,几何上根本不构成干涉对。
解决思路是先看元数据里的基线参数,跟经验阈值对照:C 波段垂直基线一般控制在几百米以内,时间基线看出什么地物,城市可以长一些,植被最好几天内。配对不是随便配的,得按时空基线筛选,选最优的一对作为主参考。
5.2 解缠整片跳变:平滑过度或者跨过失相干区
现象是解缠后的相位出现整片的台阶或条带,位移场上出现明显的、边界笔直的大数值跳变。原因通常是解缠路径穿过了低相干区域,整数倍被算错,误差沿着解缠的生长方向一路传播;或者滤波强度过大,把相位梯度抹平了,解缠算法拿到的梯度场已经不真实。
解决是先把相干性阈值提上去,让低相干区成为无效区而不是被强行解算,再去检查滤波参数,宁可留点噪声也别抹掉梯度。有些情况下需要手动加控制点或掩膜,把已知稳定的区域作为解缠种子。
5.3 地理编码后整体偏移几百米
现象是结果叠到地图上系统性偏了,偏移方向一致、量级几百米。最常见原因是轨道文件缺失或用了精密轨道之外的类型,其次是 DEM 与影像覆盖区不匹配(用了另一地区的 DEM 或垂直基准不同),还有一种是坐标基准设错,投影带选偏了一度。这种偏移是有规律的,方向一致就是几何模型的问题,不是噪声。
解决是逐项核对:轨道文件有没有加载、DEM 的坐标系与工程坐标系是否一致、地理编码参数里的输出投影和像元间距是否被改过。做一次已知地物(比如水体边界)的目视比对,比读参数快。
5.4 处理到一半内存爆掉或者磁盘写满
现象是软件卡死、进程被杀、临时目录不断膨胀。原因很直接:干涉中间产品每一样都是几十 GB 量级,滤波、解缠这些步骤还要额外的浮点副本,如果处理范围没裁剪、多视倍数不够、临时目录和数据目录放在同一块盘上,很快就会撑爆。
解决是三步:先用小范围测试,跑通再放开;适当增加距离向和方位向多视,用分辨率换内存;把临时目录单独指到大容量磁盘,处理完及时清理中间文件。处理范围裁剪不是偷懒,是工程上必须做的分段策略。
5.5 强度反演值整体偏几个 dB
现象是定标后的后向散射系数与文献值对不上,或者两次处理结果差一个固定偏移。原因基本都是口径和单位混用:把 beta0 当 sigma0 用、把 dB 值当线性值做除法、定标常数没有从元数据里读进来,或者入射角归一化时用了错误的局部入射角。这几个错误单独出现时都不报错,只是数值安静地错。
解决办法是固定一条自检流程:先确认当前产品是哪种定标口径,再做一次已知均匀目标(平静水面、裸地)的统计,看量级是否合理,最后才进入业务分析。养成“先校准再计算”的顺序,能挡掉绝大多数这类问题。
6. 挂载式架构的取舍:为什么不做一个独立软件
把它做成一个独立运行的软件,技术上完全可行,但它最终选择以扩展模块的形式挂在 ENVI 里,这个决定背后有个很现实的判断:雷达处理从来不是终点,它只是遥感分析链条中的一段。
6.1 共用数据模型换来的无缝切换
最大的收益是数据模型统一。雷达产品经过地理编码之后,本质上就是一张带地理参考的多波段图像,它的坐标、投影、像元间距与光学影像没有任何区别。挂在 ENVI 里意味着后续的光谱分析、图像分类、变化检测、精度评价全都可以直接复用同一套工具,不需要导来导去。做多模态研究时,同一天的雷达和光学数据可以叠在同一个图层树里,配准、融合、联合分类都在一个坐标基准下完成,这种便利不是靠格式转换能替代的。
代价也在这里。数据模型统一意味着雷达特有的中间产品(复数干涉图、相位栈、散射矩阵)必须被包装成能被通用图像容器承载的形式,一些参数只能塞进元数据或附属文件里,处理链的可追溯性因此变弱。这不是设计缺陷,是寄生架构必须付的税。
6.2 流程固化与可复现
批处理的另一个价值是让处理链变成可复现的资产。手工点菜单做出来的结果,换个人、换台机器,参数就丢了;把参数和步骤固化成流程文件之后,同一套参数可以在不同区域、不同时相的数据上重复执行,结果之间的差异才归因于数据本身而不是操作者。研发一个有几十个环节的处理链,如果参数只存在人的记忆里,那不是工程,是手艺。
6.3 取舍在哪里
模块化加上宿主软件的架构,换来了灵活性和生态复用,代价是三件事:一是性能上限受宿主环境约束,大规模时序处理时内存管理和并行调度不是它能完全掌控的;二是版本耦合,宿主软件大版本升级时插件必须跟着适配,否则工具箱直接不出现;三是要理解两套东西——雷达算法本身,和宿主软件的数据管理规则。
我的血泪经验是:越是想跑大数据量,越要在动手前把内存模型和坐标系这两件事想清楚,而不是先跑流程。从那以后我每次开新项目,都强制自己先在三景以内的小范围上跑通导入、配准、干涉这三段,看一眼相干性图和相位直方图,确认基线、定标口径和坐标基准都对得上,再放开到全量数据。这个习惯替我挡掉了很多次跑了一整夜才发现前提就错的翻车。资源里那份说明文档把模块划分和参数含义写得比较细,配合上面的机制理解去读,会比直接照步骤点菜单省很多来回。希望帮到你。
本文还有配套的精品资源,点击获取