尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

MATLAB搭建InSAR处理链路:核心步骤与实战技巧

MATLAB搭建InSAR处理链路:核心步骤与实战技巧 简介本资源是一套面向遥感与雷达图像处理初学者及科研人员的InSAR数据处理MATLAB实践代码集聚焦干涉合成孔径雷达InSAR原理实现与SAR成像流程模拟解决地表形变监测、相位解缠、干涉图生成等核心问题适用于高校遥感课程实验、地质灾害分析入门及SAR算法验证场景。压缩包含59个.m函数文件总大小68KB涵盖SAR原始信号仿真simslc、siminterf、干涉图构建ramp、wrap、相位处理std_phase、residues、多视滤波cpxmultilook、地形校正heightamb、噪声模拟simnoise及可视化工具plotdem、plotcbar等完整模块代码结构清晰、注释充分支持从SLC数据生成到形变提取的全流程复现。目前已有405人学习下载可直接运行调试快速掌握InSAR数据处理关键算法与MATLAB工程实践方法。1. 用MATLAB搭建InSAR处理链路这活儿到底该不该自己干接手InSAR数据处理这个活儿大多数人第一反应是装GAMMA、ISCE或者SNAP很少会琢磨用MATLAB自己写一条链路。但我还真见过不少实验室和公司项目核心处理流程是拿MATLAB搭起来的——尤其当目标是SAR成像算法验证、InSAR教学演示、小范围形变监测或者后续要接SBAS时序分析的时候MATLAB的灵活性和可视化优势非常明显。1.1 成熟工具那么多为什么还要MATLAB自己写先别急着反驳。GAMMA、ISCE、SNAP这些工具确实成熟Sentinel-1数据丢进去几步操作就能出干涉图。问题出在箱子里面是什么这件事上。做科研或者做项目交付很多时候需要精确控制每一步的处理参数甚至要临时改算法逻辑。你不可能为了一个滤波窗口大小的试验就去改GAMMA的源码但MATLAB里面改一个参数、换一个函数几秒钟的事。另外MATLAB的调试和可视化是天然优势。InSAR处理链路长中间产品多一个干涉图出来对不对、频谱有没有对准、相干性分布是否合理MATLAB里直接imagesc一拉就能看。很多老师傅第一次接触ISCE光是把中间结果导出来看就得费半天劲而MATLAB里根本没有这个问题。还有一个容易被忽视的场景教学和算法验证。SAR成像、InSAR干涉、相位解缠这些课程的作业几乎全是MATLAB写的。你在MATLAB里把回波仿真、成像、干涉、解缠全跑通一遍比直接调现成工具包学到的东西多得多。当然MATLAB这条路也有天花板。大数据量的星载SAR全场景处理比如一整景Sentinel-1大概几万个像素乘几千行纯MATLAB循环能跑到你怀疑人生。所以我的建议很明确教学验证、科研原型、中小规模数据处理用MATLAB大规模业务化生产老老实实上专业工具或者转C/GPU。1.2 这套流程的定位能处理什么不碰什么说了半天先把边界划清楚。用MATLAB写InSAR处理链路最适合处理的是以下几个层次的问题单景SAR图像的聚焦成像验证特别是点目标仿真和成像参数分析单对SLC影像的干涉图生成、相干性计算、滤波和解缠小范围、低分辨率的形变场提取比如矿区、大坝、城市局部区域SBAS时序分析的原型实现基于已有干涉对组合反演形变速率序列不碰什么也很明确不碰大范围高分辨率的生产级处理不碰需要精密定轨和大气校正的毫米级业务也不碰需要GPU加速的实时处理场景。明白这个边界后面所有选型和设计都不会跑偏。2. 数据入口的选择公开星载数据、仿真回波与MATLAB读入细节处理链路第一步永远是数据。InSAR处理的数据来源主要有三条路下载公开星载SAR卫星数据、用MATLAB自己仿真SAR原始回波、或者拿到别人处理好的SLC数据直接开始。这三条路的准备工作完全不同我分别说。2.1 在轨主流星载SAR数据源及参数速查如果你要做真实的InSAR形变监测第一步是选数据源。目前公开可下载的星载SAR数据里最常用的几个我在表格里列一下这些参数在后续基线估计、干涉图生成的时候都要用到。卫星/传感器波段波长cm重访周期分辨率方位向x距离向数据获取途径Sentinel-1A/BC5.66天双星约5m x 20mIW模式免费ASF/ESAALOS-2L23.614天约3m x 10m条带部分免费/研究申请TerraSAR-X/TanDEM-XX3.111天约1m x 3m条带商业/研究申请Radarsat-2C5.624天约3m x 8m条带商业/研究申请国产高分三号C5.629天约1m x 1m聚束研究申请选数据源的核心逻辑是看形变梯度和地表覆盖。植被密集区用L波段穿透性好城市用X波段精度高大面积常规监测用C波段的Sentinel-1最划算毕竟免费且重访频繁。做InSAR之前把轨道参数文件精密轨道也一起下载下来后面基线估计要用别省这一步。2.2 MATLAB生成SAR原始回波仿真数据从零构造测试样本没有合适数据源或者想先验证算法逻辑的时候用MATLAB仿真SAR回波是非常好用的手段。仿真分两步第一步构造地面场景的后向散射系数第二步模拟雷达发射线性调频信号并计算回波。一段最简点目标仿真代码长这样% 基本参数设置 fc 5.4e9; % 载频对应C波段 c 3e8; % 光速 lambda c / fc; % 波长 B 60e6; % 信号带宽 Tr 10e-6; % 脉冲持续时间 Kr B / Tr; % 调频率 fs 1.2 * B; % 距离向采样率 PRF 1000; % 脉冲重复频率 % 点目标位置距离向、方位向坐标 R0 800e3; % 最近斜距 X0 0; % 方位向位置 % 生成距离向时间轴和方位向慢时间轴 tr 2 * R0 / c (-Tr/2 : 1/fs : Tr/2); ta (-100 : 1/PRF : 100); % 模拟回波二维矩阵 echo zeros(length(ta), length(tr)); for i 1:length(ta) R sqrt(R0^2 (ta(i) - X0)^2); % 瞬时斜距 t_delay 2 * R / c; % 时延 % 基带信号 echo(i, :) exp(1j * pi * Kr * (tr - t_delay).^2) .* ... (abs(tr - t_delay) Tr/2) * exp(-1j * 4 * pi * R / lambda); end注意这里R0和场景位置要自己定义实际仿真的时候我习惯把点目标放在场景中心附近减小边缘效应。仿真回波的最大好处是每个参数都是已知的你处理完可以用点目标响应来验证成像质量比如峰值旁瓣比、分辨率是否和理论值吻合。2.3 SLC数据读入MATLABInt16、Float32和复数格式的坑拿到真实星载SAR SLC数据之后第一步是正确读入。不同卫星的SLC存储格式不一样但核心都一样每个像素是一个复数通常用int16实部加int16虚部或者打包成一个float32复数。读入的时候最容易犯的错是字节序搞反导致图像像一副抽象画。我常用的读法以Sentinel-1 SLC的tiff格式为例% 读取复数SLC影像 [slc_i, slc_q] deal(zeros(nlines, npixels, single)); for line 1:nlines data fread(fid, [2, npixels], *int16); slc_i(line, :) data(1, :); slc_q(line, :) data(2, :); end slc complex(slc_i, slc_q);或者直接借助MATLAB的readgeoraster或者multibandread但要注意转成复数类型。读进来之后先做一个幅度图可视化正常图像应该能看到地物轮廓如果全是噪点或者条纹先检查字节序和数据类型。这里有一个必须养成的习惯SLC数据量很大5000x5000的复数矩阵单精度就是200MB处理完一个阶段及时清理中间变量别让MATLAB工作区变成垃圾场。3. 干涉处理的核心步骤拆解从复图像对到位相形变图的完整链路InSAR的干涉处理链路说白了就是把两景不同时间获取的SAR复数图像做共轭相乘提取相位差然后从相位差里反演形变信息。这条链路在MATLAB里每一步都有明确的实现但每一步的细节决定了最终结果的质量。3.1 图像配准一个像素的偏差就会毁掉整幅干涉图很多人忽略配准的重要性上来直接做干涉。两景SAR影像如果配准误差超过0.1个像素干涉条纹的相干性就会显著下降。特别是高分辨率X波段数据对配准精度要求极高。配准的基本思路是先根据轨道参数计算一个初始偏移量再用互相关或相位相关方法做亚像素配准。MATLAB里可以用imregcorr做初步配准但更专业的做法是选取地面控制点用二次多项式拟合偏移场。% 基于互相关的粗配准 [optimizer, metric] imregconfig(monomodal); tform imregtform(slc2_amp, slc1_amp, affine, optimizer, metric); slc2_reg imwarp(slc2, tform, OutputView, imref2d(size(slc1)));这是我实际项目里用过的简单方案对于同一轨道的Sentinel-1数据粗配准加多项式精配准基本能到0.05像素以内。做完配准一定要看配准后的干涉图如果条纹连续平滑说明配准质量OK如果条纹像被揉皱的纸多半是配准精度不够。3.2 基线估计与数字高程模型为什么平地相位必须去掉InSAR的相位既有地形贡献又有形变贡献要提取形变必须把地形相位去掉。去地形相位有两种路径一种是利用外部DEM模拟地形相位并去除这叫两轨法另一种是利用三轨或者差分干涉直接消除地形影响。在MATLAB里关键步骤是根据基线参数计算平地相位。平地相位的公式是[ \phi_{flat}(x, r) -\frac{4\pi}{\lambda} \cdot \frac{B_\perp}{R \tan\theta} \cdot r ]其中(B_\perp)是垂直基线(R)是斜距(\theta)是入射角。实际代码里我按逐像素的方式计算然后把平地相位从干涉相位里减掉% 生成平地相位模型 flat_phase zeros(size(int_phase)); for i 1:nlines for j 1:npixels R R0 j * rg_spacing; flat_phase(i, j) -4 * pi / lambda * (B_perp / (R * tan(theta))) * (j * rg_spacing); end end % 去除平地相位 diff_phase angle(interfogram .* exp(-1j * flat_phase));注意这种双循环在数据量小的时候没问题数据量一大就非常慢建议改成矩阵运算。一个经验是先对整幅影像的平地相位做二维多项式拟合再用矩阵运算一次性生成相位平面速度会快几个数量级。外部DEM的使用也很关键。我一般用SRTM或者Copernicus DEM在MATLAB里用shaperead或者readgeoraster读入然后投影到SAR坐标体系。DEM分辨率要和SAR影像分辨率匹配不然地形的短波成分会被欠采样产生残余条纹。3.3 干涉图生成与相干性计算一张图判断数据质量做完配准和去平地相位后干涉图和相干性图是整个流程中最重要的质量诊断产品。相干性计算可以理解为一个局部窗口内两幅图像相似度的度量公式是[ \gamma \frac{|\sum S_1 S_2^*|}{\sqrt{\sum |S_1|^2 \sum |S_2|^2}} ]MATLAB里面比较直接的做法win_size 5; % 窗口大小 kernel ones(win_size) / win_size^2; numerator filter2(kernel, slc1 .* conj(slc2)); denom sqrt(filter2(kernel, abs(slc1).^2) .* filter2(kernel, abs(slc2).^2)); coherence abs(numerator) ./ (denom eps);相干性图的作用非常大。如果某片区域的相干性低于0.2那这块区域的干涉相位基本是噪声后面解缠的时候就应该用掩膜把它盖住。我做项目时一定把相干性图和干涉条纹图对照着看条纹清晰但相干性很低的区域多半是相位跳变太快或者存在不连续形变这种区域要格外小心。3.4 相位解缠从包裹相位到真实形变的最后一道关干涉相位是包裹在(-\pi)到(\pi)之间的要得到真实的形变相位必须解缠。MATLAB有一些自带函数比如unwrap是一维的但二维相位解缠要复杂得多因为存在残差点。我自己常用的方案是调用SNAPHUStatistical-cost, Network-flow Algorithm for Phase Unwrapping它虽然是独立工具但MATLAB可以通过系统调用传递参数。做法是先把包裹相位写成SNAPHU能读的二进制格式调用命令再把结果读回来。snaphu -f snaphu.conf -d interferogram.int -u unwrapped.int -c correlation.cor如果不想依赖外部工具MATLAB里也可以实现基于最小二乘的快速解缠但残差点的处理比较麻烦容易解出飞周。我的经验是对于教学演示和初步分析用最小二乘解缠足够对于需要高精度结果的科研项目还是建议用SNAPHU。解缠之后得到的相位还需要做一步相位转形变。形变视线向位移的计算公式是[ d_{los} -\frac{\lambda}{4\pi} \cdot \phi_{unwrapped} ]把解缠相位乘上这个系数就得到视线向形变图。到此单对InSAR的核心链路就跑通了。4. 滤波、多视与干涉质量控制条纹噪声的实战手法干涉图生成后往往噪声很大如果不做滤波后续解缠和形变反演会很崩溃。这一章专门讲滤波和多视这两个最常用的质量提升手段以及参数怎么定。4.1 多视处理用分辨率换质量的最直接手段多视就是对方位向和距离向做平均以降低斑点噪声提高相干性。代价是分辨率下降。这里有个经验公式假设原始分辨率是(R_a \times R_r)多视比是(m_a : m_r)处理后的分辨率大概是((m_a \cdot R_a) \times (m_r \cdot R_r))。应用场景推荐多视比方位向:距离向原因城镇形变监测4:1 或 5:1城市相干性好保持适当分辨率自然地表裸土、草地8:1 到 10:1低相干区域需要更多平均来提升相位质量矿区/大坝5:1形变梯度大过度多视会抹平细节SBAS时序分析4:1 或 5:1需要在分辨率和时序一致性之间平衡MATLAB里做多视用blockproc或者reshape加mean实现例如function ml multilook(slc, az_looks, rg_looks) [nlines, npixels] size(slc); valid_nlines floor(nlines / az_looks) * az_looks; valid_npixels floor(npixels / rg_looks) * rg_looks; slc_crop slc(1:valid_nlines, 1:valid_npixels); ml squeeze(mean(mean(reshape(slc_crop, ... az_looks, [], rg_looks), 1), 3)); end注意多视处理不光作用于幅度也作用于复数数据。多视后的复数数据再做干涉比先干涉再多视效果更稳定因为先多视降低了每个像素的相位噪声。4.2 Goldstein滤波最常用的干涉图滤波算法Goldstein滤波是干涉处理的标配算法它的核心思想是在频域做自适应滤波高相干区用较弱的滤波保留细节低相干区用较强的滤波压制噪声。MATLAB实现Goldstein滤波的大致流程function filtered goldstein_filter(int_phase, coherence, alpha) % int_phase: 包裹相位 % coherence: 相干性 % alpha: 滤波强度系数推荐0.3-0.9 [nlines, npixels] size(int_phase); filtered zeros(size(int_phase)); winsize 32; for i 1:winsize:nlines-winsize1 for j 1:winsize:npixels-winsize1 block int_phase(i:iwinsize-1, j:jwinsize-1); coh_block coherence(i:iwinsize-1, j:jwinsize-1); mean_coh mean(coh_block(:)); fft_block fft2(exp(1j * block)); fft_shifted fftshift(fft_block); filter_weight (1 - mean_coh) * alpha; fft_filtered fft_shifted .* (abs(fft_shifted)).^filter_weight; filtered_block ifft2(ifftshift(fft_filtered)); filtered(i:iwinsize-1, j:jwinsize-1) angle(filtered_block); end end end滤波强度参数alpha的选择有讲究。数据质量好、相干性高的场景alpha取0.3-0.5保留更多高频细节相干性普遍偏低比如植被覆盖区alpha可以到0.7甚至0.9。我在处理Sentinel-1数据时一般先看一眼全域平均相干性均值大于0.5用0.40.3到0.5之间用0.6小于0.3直接用0.8。4.3 自适应窗口和掩膜低相干区别硬扛还有一种思路不要忽略不是所有区域都适合滤波比如水体、阴影区、叠掩区这些地方的相位完全是噪声。与其滤波硬扛不如直接做掩膜。掩膜的依据主要有三个相干性阈值、幅度阈值、和地理先验知识。比如河流、大型水域可以直接用DEM或者遥感分类结果扣掉。在MATLAB里先用相干性图生成掩膜mask coherence 0.25; % 阈值根据经验设定 % 对掩膜做形态学闭运算消除细小空洞 mask imclose(mask, strel(disk, 3));掩膜的重要性在解缠阶段体现得最明显。低相干区域的相位如果参与解缠会让残差点连成网络解出的相位整片飘掉。我见过不少初学者解出离谱的形变值最后发现就是没做掩膜低相干区把周边全带偏了。5. 从单对干涉到SBAS时序分析MATLAB扩展实现要点单对InSAR只能给出一段时间内的总形变如果要看形变随时间演化的过程就得做时序InSAR分析。SBAS小基线集是其中最常用的一种。核心逻辑一句话概括把多景影像分成若干小基线组合生成多幅干涉图然后通过最小二乘反演出每个时间点的形变量。5.1 SBAS-InSAR的整体思路与MATLAB实现框架SBAS的实现步骤大致如下选取主影像按时间和空间基线阈值生成干涉对组合对每个干涉对做常规InSAR处理得到解缠相位拼接所有干涉对的相位方程形成观测方程组用最小二乘或SVD方法反演形变时间序列估计并去除残余地形误差和大气延迟MATLAB里第3步和第4步的代码核心是一个线性反演问题。假设有(M)个干涉对、(N)个影像时间点每个干涉对的解缠相位观测值(d_i)与相邻时间点的形变增量之间的关系是[ d_i \sum_{kp}^{q} v_k \cdot \Delta t_k ]把所有干涉对拼成一个方程矩阵(A)大小(M \times (N-1))然后% 构建设计矩阵A A zeros(M, N-1); for i 1:M A(i, tstart(i):tend(i)-1) 1; % 该干涉对覆盖的时间段 end % 最小二乘求解形变速率 v_hat (A * A) \ (A * d_obs); % 累积形变量 cum_displacement cumsum(v_hat .* dt);实际反演中还要注意A矩阵可能是欠秩的干涉对不连续这时候用SVD求伪逆更稳健[U, S, V] svd(A, econ); invS diag(1 ./ diag(S)); v_hat V * invS * U * d_obs;SBAS的优势在于它能充分利用多景数据压制大气噪声。但同样的时间序列基线组合选得好不好直接决定结果质量。我通常这样定阈值时间基线小于60天空间基线小于临界基线Sentinel-1大概200米的30%-50%这样既能保证干涉对数量足够又能控制去相干影响。5.2 形变速率图的可视化与导出小技巧反演得到形变速率场之后可视化是另一个容易被忽略的环节。很多人在MATLAB里imagesc一拉颜色条一糊就完事。实际上形变图的可视化有几个讲究第一坐标系要对。SAR数据处理完得到的形变图是斜距坐标系需要地理编码到经纬度才能和GIS数据叠加。MATLAB里可以根据几何参数做逐像素重采样或者二次多项式拟合到已知控制点。第二显示范围要合理。形变图往往有少量异常大值解缠残留或大气噪声直接全范围显示会让颜色条被极端值拉开真实形变区域反而看不出颜色差异。我处理时一般把显示范围卡在形变值分布的2%-98%分位数low prctile(deformation(:), 2); high prctile(deformation(:), 98); imagesc(x, y, deformation, [low high]);第三色带选择不要用默认的jet彩虹色带会让人产生错误的视觉权重。推荐用蓝白红或者蓝白橙这样的双极色带零值放中间形变正负一目了然。5.3 分辨率、时间基线与解缠精度的连锁影响SBAS结果看着漂亮但实际调试的时候经常遇到一个连锁反应多视比取大了分辨率下降但相干性提升相干性提升后解缠误差变小时序反演更稳定。多视比取小了细节保留但噪声大解缠经常出飞周飞周在时序反演里会被当成真实信号误差呈指数级扩散。所以我的经验是做SBAS之前一定要先做单对干涉的质量预检。拿3-5对时间基线和空间基线都适中的干涉对跑一遍完整链路统计解缠残差和相干性分布。如果这些预检对的质量都不错再放量做全时序如果预检对就出现大面积低相干或者解缠飞周先想清楚是数据问题、配准问题还是参数问题不要一头扎进SBAS反演里浪费时间。另外大气延迟是SBAS中最难完全消除的误差源。MATLAB里可以用线性模型或者高斯滤波做初步大气校正但要做到更好得引入外部气象模型数据或者独立的大气延迟图。项目精度要求高的时候这部分工作不能省。6. 实际调试中躲不开的坑类型、精度与内存的教训最后这一章专门说踩坑经验。InSAR处理链路很长任何一个环节出错都会导致结果一塌糊涂而且错误往往不容易立刻发现等发现时已经浪费了大量时间。6.1 复数数据类型最隐蔽的敌人MATLAB里复数默认是double双精度一景5000x5000的复数SLCdouble类型就是400MB。很多人的MATLAB脚本写着写着就内存不足了根源就在于没控制数据精度。我建议所有SLC数据读入后立刻转singleslc1 single(slc1); slc2 single(slc2);单精度对InSAR处理精度完全够用。相位精度要求再高也不至于在单精度上有可感知的损失。但如果不加控制一个处理链路上可能有七八个中间变量都是double再加上干涉图、相干性图、滤波结果内存轻松爆掉。还有一个更隐蔽的坑有些MATLAB函数比如fft2在输入是single时按single计算但在某些版本里可能返回double。处理完一个模块后养成用whos检查变量类型的习惯别不知不觉又变回double了。6.2 MATLAB版本兼容性与奇怪的报错做SAR处理的人常用旧版本MATLAB因为很多第三方工具箱和脚本只在新版验证过但旧版运行时会碰到一些奇奇怪怪的报错。我自己遇到过一个经典问题R2022b里imregcorr的参数名和R2021a不一样导致同事的脚本一到新版本就报错。处理策略是在脚本开头加一段版本检查或者干脆封装一个兼容层函数。比如读取SLC文件function data read_slc_float(filename, nlines, npixels) fid fopen(filename, rb); if verLessThan(matlab, 9.10) data fread(fid, [2*npixels, nlines], float32float32); else data fread(fid, [2*npixels, nlines], float32single); end fclose(fid); data complex(data(1:2:end, :), data(2:2:end, :)); end这类兼容性问题不解决换台机器换个版本就抓瞎。做数据处理的人一定要有这个意识脚本要能跨机器跨版本复现这是基本功。如果你碰到MATLAB启动时报错或版本冲突比如之前线上出现过r2022b error 9这类启动异常最有效的处理是彻底清理用户目录下的偏好设置或者重装对应运行库。很多都是老版本的运行库和新版本冲突导致跟代码本身没什么关系。6.3 循环慢用向量化和Parallel Computing Toolbox提速InSAR处理的循环多到让人头皮发麻。逐像素的双循环在5000x5000的矩阵上跑一次纯MATLAB可能要几分钟甚至半小时。提速的方法主要有两个方向第一矩阵化。能用矩阵运算解决的绝不用循环。比如上面提到的平地相位生成用meshgrid生成坐标网格一次性计算整个平面比逐像素循环快几十倍[cols, rows] meshgrid(1:npixels, 1:nlines); R R0 cols * rg_spacing; flat_phase -4 * pi / lambda * (B_perp ./ (R .* tan(theta))) .* (cols * rg_spacing);第二并行化。parfor替代for尤其是在分块滤波、分块多视这类循环结构里效果非常明显。但parfor有一个常见误区默认的并行池大小取决于逻辑处理器数量而不是物理核心数。对于计算密集型任务如果你用的是支持超线程的CPU逻辑处理器比物理核心多一倍开满逻辑处理器反而可能导致性能下降。我一般先用feature(numcores)查物理核心数再在parpool里指定这个数值。num_physical_cores feature(numcores); parpool(local, num_physical_cores);另外一个实用的提速技巧在parfor里避免传大数据块。每轮循环需要的大变量可以在循环外面裁剪好以切片方式传进去不然通信开销会让你得不偿失。6.4 可视化排错的三个常用手法最后分享几个快速定位问题的可视化技巧。处理InSAR数据遇到结果不对的时候别急着改参数先做诊断。第一相位图要配着幅度图看。干涉相位图上的条纹正常情况下应该与地形或形变场的空间分布相关。如果条纹呈现毫无规律的密集噪声纹大概率是配准失败或者主辅影像方向反了。第二解缠结果用剖面线检查。在解缠后的相位图上画一条横截面线看相位变化是否连续。如果出现整段整段的相位跳变通常是掩膜没做好或者解缠算法在低相干区崩了。第三用两景数据的幅度图叠加检查配准。把主影像幅度图调成红色通道辅影像配准后的幅度图调成青色通道在MATLAB里用imshow叠加显示如果边缘对齐叠加图应该是灰色调的如果出现红色和青色镶边说明配准还有亚像素级偏移。这些排错方法不高端但非常实用。做InSAR处理不是跑通脚本就完事每一步都要能解释为什么才能确保结论可信。我在实际项目里的习惯是每个中间产品都会存一份图和一份数据哪怕当时觉得没用后面排错的时候可能就是救命的关键线索。本文还有配套的精品资源点击获取
返回列表