尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

MATLAB实现InSAR数据处理:从原理到SBAS时序分析

MATLAB实现InSAR数据处理:从原理到SBAS时序分析 简介本资源是一套面向遥感科学、测绘工程及地球物理专业学习者与科研人员的InSAR数据处理MATLAB实践代码集聚焦SAR成像原理模拟与干涉测量全流程实现助力用户掌握地表形变监测核心技术。压缩包共59个文件全部为.m脚本如simulateslc.m、siminterf.m用于SAR原始信号与干涉图仿真ph.m、residues.m、std_phase.m等专注相位处理与解缠freadhgt.m、plotdem.m支持数字高程模型读取与可视化总大小仅68KB轻量紧凑、即下即用。已有405人学习下载适用于课程实验、课题入门或算法复现场景。用户可直接调用模块化函数构建完整InSAR处理链从SLC模拟、干涉图生成、相位包裹/解缠到地形残差分析与形变初步估计配套注释清晰、命名规范具备良好的教学参考性与工程延展性。 做InSAR数据处理这几年我最常被问到的就是“MATLAB能不能做InSAR”以及“是不是非得上GAMMA、ISCE那些专业软件”这标题里的项目恰好就是一套完全基于MATLAB的InSAR数据处理流程覆盖了SAR成像到干涉测量的核心环节。这类代码库的价值不在于替代商业软件而在于把InSAR的处理链条中每一个“黑盒”环节都打开让你看得见每一行计算逻辑。如果你想深入掌握InSAR的原理或者需要针对特定区域定制处理策略趁早脱离“只会点按钮”的状态自己动手写一遍处理流程是绕不开的路。这个项目能做的事情很直白从SAR复数影像出发经过配准、干涉图生成、去平地效应、滤波、相位解缠最后得到形变信息。整个流程用MATLAB实现适合遥感、测绘、地球物理方向的研究生以及刚接触InSAR、想搞明白数据到底是怎么一步步变成形变图的工程师。我会把整个处理链路拆开每个环节的数学原理、MATLAB实现要点、以及我实测踩过的坑都交代清楚方便你对照自己的数据复现。1. 为什么用MATLAB做InSAR数据处理1.1 从SAR成像到InSAR一个相位的游戏先把底层的物理过程理顺。SAR成像系统向地面发射微波脉冲接收回波后通过距离向压缩和方位向压缩形成一幅复数影像。每个像元的值是一个复数包含振幅和相位两部分。振幅反映地物的后向散射强度相位则记录了雷达波从卫星到地面再返回的双程距离信息。单幅SAR影像的相位是没有意义的因为大气延迟、轨道误差、地形起伏都会改变相位。但两幅覆盖同一区域、成像时间不同的SAR影像它们的相位差可以抵消大部分共同误差剩下的相位差就主要包含三项地形相位、形变相位、以及大气和噪声相位。InSAR的基本思路就是用两张影像的相位差来反演地表信息。这个相位差就是我们说的干涉图。如果只用两幅影像做差分得到的是标准D-InSAR差分干涉测量可以测一次地震或者一次地面沉降事件的形变场。如果拿一整个时间序列的影像做联合解算就是时序InSAR常见的有PS-InSAR和SBAS-InSAR两种路线。标题里提到的“sbas insar”这个热搜词恰好指向了时序分析这条线。用MATLAB实现SBAS-InSAR本质上就是在二维干涉图的基础上增加一个时间维度的最小二乘解算。1.2 MATLAB与专业软件的选择什么时候该自己写很多入门者会纠结一个问题已经有GAMMA、ISCE、SNAP这些成熟工具了为什么还要用MATLAB自己写一遍我的看法是工具选择取决于你的目标。如果你只想要一张形变图赶紧出结果写论文那直接用GAMMA或者SNAP就够了没必要自己造轮子。但如果你想知道干涉图里的残差是怎么来的滤波参数改了会对结果产生什么影响或者你需要在一个特殊区域比如高山区、强形变区调整处理策略你就必须理解每一步的数学本质。MATLAB的优势在于矩阵运算语法天然适合影像处理可视化调试非常方便你可以随时把中间结果拿出来看看相位图、相干性图、残差图一目了然。这个项目的定位恰恰就是这个——教学和研究性质的原型实现。它不会像GAMMA那样对一万个细节做工程优化但它把主链路完整打通了。我自己带学生时通常也是先让他们用MATLAB把整个InSAR流程搭一遍等真正理解了每个环节之后再转到ISCE这类专业软件处理大范围数据会顺手得多。2. InSAR数据准备与预处理2.1 数据源分析与SLC影像读取InSAR的数据源一般有两类自己的数据或者公开数据。自己做实验的话哨兵1号Sentinel-1是最省事的选择数据免费开放重访周期12天而且欧空局提供了多种产品级别。需要明确的是InSAR处理用的不是普通的SAR强度影像而是单视复数SLC产品。SLC保留着完整的相位信息这是干涉测量的基础。哨兵1号的SLC数据从ASF或者欧空局的Copernicus Open Access Hub下载。拿到手是一个压缩包里面包含多个文件读取时最核心的是两个一个是影像数据本身一个是包含轨道信息、成像参数、姿态数据的注释文件。MATLAB读取这类数据有两种常见路径一是利用Matlab Image Processing Toolbox中的自定义函数二是通过read_geotiff配合XML解析来提取元数据。我自己更推荐另一种思路先将SLC数据从原始格式转换为MATLAB能直接读入的二进制格式再进行处理。很多开源的哨兵1号读取工具比如stripmap或S1_toolbox做了格式解析的工作你可以参考其逻辑。核心是读取SLC数据时要注意数据的存储顺序哨兵1号的复数数据通常是int16实部int16虚部交错存储需要按interleaved格式解析。如果读错了字节序干涉图会出现条纹异常这个问题后面我会专门讲。2.2 主影像选取与干涉像对组合拿到一批SLC影像后不是随便两两组合就能用。干涉像对的组合需要考虑空间基线和时间基线。空间基线太大导致去相干严重时间基线太大地表散射特性变化也会导致去相干。最理想的情况是选择空间基线短、时间基线短的像对。在MATLAB中实现像对筛选需要先解析每幅影像的轨道状态向量通过轨道方程计算每一对影像之间的垂直基线。一段简化的基线估计代码逻辑如下% 读取两个SLC影像的轨道状态向量单位m, m/s pos1 [x1, y1, z1]; vel1 [vx1, vy1, vz1]; pos2 [x2, y2, z2]; vel2 [vx2, vy2, vz2]; % 计算空间基线简化版取轨道位置差在垂直视线方向的投影 base_vec pos2 - pos1; los pos1 / norm(pos1); % 视线方向单位向量 perp_baseline dot(base_vec - dot(base_vec, los) * los, ...);实际工程中轨道数据需要插值到影像成像时刻。一般使用多项式插值将状态向量拟合到每个方位向时间。不要用线性插值轨道是光滑曲线线性插值引入的误差会导致基线估计不准后续地形相位纠正就会出现系统性偏差。对于SBAS-InSAR像对组合策略是设定一个空间基线阈值比如200米和时间基线阈值比如90天满足条件的像对才纳入组合。这个组合结果用一个小矩阵表示行是影像编号列是像对编号后面解算形变速率时要用到。2.3 影像配准干涉测量的第一道门槛配准是InSAR处理中最关键的一步配准精度直接影响干涉条纹质量。InSAR要求主辅影像之间的配准误差控制在亚像元级别一般是1/8像元以上精度。如果配准误差达到一个像元干涉相位基本淹没在噪声里。MATLAB实现的配准流程分为两步粗配准和精配准。粗配准通常基于卫星轨道参数计算主辅影像之间的几何偏移量得到一个粗略的偏移场。精配准需要在粗配准基础上利用强度影像的相关性做亚像元级偏移估计。这里有一个常用的思路在影像上选取均匀分布的窗口比如32x32像元对每个窗口在辅影像中搜索最佳匹配位置得到偏移量后拟合一个多项式偏移场。精配准的核心代码逻辑% 在强度影像上选取控制点 [rows, cols] size(master_amp); [X, Y] meshgrid(1:200:cols, 1:200:rows); % 对每个控制点计算偏移 for i 1:numel(X) win_m master_amp(Y(i)-16:Y(i)15, X(i)-16:X(i)15); % 在辅影像中搜索最佳匹配插值到亚像元 [offset_y(i), offset_x(i)] subpixel_correlation(win_m, slave_amp, search_radius); end % 用二阶多项式拟合偏移场 poly_order 2; offsets fit_polynomial(X, Y, offset_x, offset_y, poly_order);配准完成后要对辅影像做重采样。这里有一个重要的细节如果不做频域插值而是直接在空间域用interp2做双线性插值会导致干涉相位出现系统性的相位偏差。推荐使用FFT-based的sinc插值对复数数据做带限插值保持相位精度。实测下来当形变速率本身很小的场景里比如每年几个毫米的沉降插值方式的选择会直接影响最终结果能否看到真实的形变信号。3. InSAR核心处理流程的MATLAB实现3.1 干涉图生成与去平地效应配准完成后干涉图的计算非常简单将主影像的复数像元值与辅影像配准后的复数像元值的共轭相乘。interferogram master .* conj(slave_resampled);这个复数数组的相位就是干涉相位振幅就是干涉强度。但直接生成的干涉图条纹非常密集主要原因是大尺度的“平地相位”占了主导。平地相位来源于卫星与地面之间的几何关系即使地面完全没有形变和地形起伏由于斜距随位置变化干涉相位也会呈现出密集的线性条纹。去平地效应的本质是计算并扣除一个参考椭球面的相位贡献。这一步需要用到卫星轨道状态向量、地面点的经纬度、以及成像几何参数。在MATLAB中可以通过逐像元计算斜距差来实现但对于大数据量来说这种逐像元循环很慢建议采用矩阵化计算。% 利用精确轨道构建地面点的斜距 range_master sqrt((x_sat - x_ground).^2 (y_sat - y_ground).^2 (z_sat - z_ground).^2); range_slave sqrt((x_sat2 - x_ground).^2 (y_sat2 - y_ground).^2 (z_sat2 - z_ground).^2); % 平地相位 flat_phase 4 * pi / wavelength * (range_master - range_slave); % 扣除平地相位 interferogram_flat interferogram .* exp(-1i * flat_phase);去平地这一步看着简单但有一类坑非常隐蔽轨道误差。如果使用的是粗略轨道比如哨兵1号的初步轨道平地相位里面会残留误差导致干涉图出现大范围的条纹弯曲。解决方法是后期用精轨数据重新计算或者在做完解缠后利用残余相位多项式拟合去除轨道误差项。3.2 干涉图滤波Goldstein滤波的MATLAB实现去平地后的干涉图中还有大量斑点噪声。这些噪声如果不压制后续解缠会把噪声“解”成无意义的跳变。干涉图滤波的经典算法是Goldstein滤波它在频域中根据干涉图的局部相干性自适应调节滤波强度。Goldstein滤波的原理是对干涉图分块每一块做FFT变换在频域中对频谱做功率谱的alpha次方加权其中alpha的大小与局部相干性有关。相干性高的区域滤波强度小保留细节相干性低的区域滤波强度大压噪声。MATLAB中实现Goldstein滤波的骨架function ifilt goldstein_filter(interf, alpha_min) [nrows, ncols] size(interf); block_size 32; ifilt ones(nrows, ncols); for i 1:block_size:nrows for j 1:block_size:ncols block interf(i:min(iblock_size-1,nrows), ... j:min(jblock_size-1,ncols)); % 计算局部相干性 coherence abs(mean(block ./ abs(block))); if coherence 0.3 alpha 1 - coherence; % 相干性高则滤波弱 else alpha 0.8; end alpha max(alpha, alpha_min); % FFT域滤波 F fft2(block); F_filtered F .* abs(F).^alpha; ifilt(i:min(iblock_size-1,nrows), ... j:min(jblock_size-1,ncols)) ifft2(F_filtered); end end end实际使用中块大小和重叠率很重要。块太小了频谱估计不稳滤波效果差块太大了细节被抹平。我常用的配置是32x32的块50%的重叠率alpha_min取0.3左右。滤波窗口之间的接缝效应也要注意——分块处理会导致边缘出现条带在拼回去之前做一个边缘羽化taper会更平滑。还有一个工程技巧Goldstein滤波只对相位做强度不要滤波否则会破坏振幅信息。3.3 相位解缠枝切法与最小二乘法的选择相位解缠是整个InSAR处理里最折磨人的一步。干涉图中的相位值被限制在[-π, π)区间内真实相位可能是这个值加上整数的2π倍数。解缠的目的就是恢复这个整数倍数得到连续的相位场。为什么解缠难因为存在噪声区域和地形突变区域时相位的2π跳变无法被正确恢复误差会沿着解缠路径传播导致大片区域出现“条纹断层”或者“相位台阶”。工程实践中处理解缠问题有两大路线第一类是基于路径跟踪的方法代表是枝切法Branch Cut。这类方法先识别出残差点相位一致性被破坏的点然后用枝切线连接它们解缠时避免跨越枝切线。这类方法的优点是不会全局传播误差缺点是枝切线处理不好会留下空洞。第二类是基于最小二乘的方法目标是最小化解缠相位梯度和缠绕相位梯度之间的差异。这类方法稳定但容易在残差点区域产生平滑的误差。MATLAB中自己实现枝切法的工作量不小需要计算残差点、生成枝切线、做积分。有一个相对简单的替代方案用最小二乘法先解一遍再用残差校正。不过如果目标区域比较大我建议考虑调用成熟工具包比如开源的snaphu它可以通过外部命令从MATLAB调用处理效果比简单实现要强得多。这里分享一个我在实际项目中用过很顺手的流程先用Goldstein滤波把干涉图压干净再用Snaphu的MCF最小费用流模式解缠最后把解缠结果导回MATLAB做后续分析。这样既保留了MATLAB做前处理的灵活性又获得了专业解缠工具的质量。3.4 形变解算从单对差分到SBAS时序单对干涉图经过解缠后再减去模拟的地形相位利用外部DEM就得到差分干涉相位。这个差分相位里包含形变、大气延迟、轨道残差、噪声等成分。如果是单对D-InSAR直接除一个时间间隔就得到形变速率但噪声太大意义有限。SBAS-InSAR的思路是把很多对干涉图联合起来解算。核心思想是每个像对之间的相位差等于两个时刻之间形变相位之差加上其他误差项利用多对干涉图构成一个线性方程组求解最小二乘意义下的时间序列形变。这个线性方程组的系数矩阵由像对的时间关系决定。方程组形态大概是这样的% A矩阵行对应干涉像对列对应影像时间点 % 若像对(i, j)存在则 A(k, j) 1, A(k, i) -1 A sparse(num_pairs, num_scenes); for k 1:num_pairs A(k, scene_idx_master(k)) -1; A(k, scene_idx_slave(k)) 1; end % 解算相位时间序列 phase_ts A \ phase_vector;解算完之后还需要做一个时间域的高通滤波来去除大气延迟再做空间域的低通滤波去除噪声。这一步在MATLAB里的实现不算复杂核心是设计合适的时间窗口和空间滤波核。注意SBAS解算前必须做相位解缠的一致性检查如果一个像对的解缠结果和其他像对严重不一致最好剔除否则会污染整个时间序列。4. 实用工具链与性能优化建议4.1 MATLAB数据处理速度优化parfor与内存管理InSAR处理涉及的影像通常非常大。哨兵1号的一景SLC数据单轨大约有2.5万行乘以5千列复数双精度存储光一个数据矩阵就要占据好几个GB。如果实验区域跨多个轨数据量会更夸张。在MATLAB里处理这些数据如果还停留在“写循环逐像元算”的阶段跑一次基本可以下班了。我常用的提速手段有三个第一是parfor并行循环。MATLAB的并行计算工具箱支持多核并行。但要注意parfor适合可并行、无依赖的循环比如分块滤波、分块相干性计算。不适合有前后依赖的递推过程。第二是向量化计算。能用矩阵运算一次算完的就不要循环。比如干涉图生成、去平地相位计算这些用.*做完整个矩阵速度要比循环快几个数量级。第三是单精度存储。干涉图本身是复数存储精度不需要双精度时可以用single类型。一个复数单精度数组内存占用是双精度的二分一。形变速率这种最终结果也可以先用单精度算只在最后输出时不损失精度。另外如果数据量实在太大内存不够用可以考虑分块处理。具体做法是把影像切成重叠分块每个分块独立做配准和干涉拼回时用羽化消除边缘效应。我遇到过最大的一批数据是覆盖整条断层带的60多景哨兵影像如果不分块MATLAB直接OOM内存溢出。4.2 辅助数据的集成DEM、精密轨道与大气改正InSAR处理离不开三样辅助数据DEM、精密轨道、大气改正数据。这三样数据在MATLAB里的集成方式各不相同但都有一些需要注意的地方。DEM方面常用的公开数据是SRTM和Copernicus DEM。MATLAB读取DEM时需要注意坐标系与SAR影像的对应关系。一般需要用SAR成像参数做地理编码把雷达坐标系下的干涉图映射到地理坐标系。这个过程涉及反向地理编码已知地面点经纬度和高程计算其在雷达影像中的位置。常见的做法是用距离-多普勒定位方程求解。精密轨道方面哨兵1号有精确的POD精密星历使用时要换算到影像的成像时刻。我一般会写一个工具函数读取精密轨道文件拟合三次样条插值输出影像每个方位向行对应的轨道位置和速度。这个函数一旦写好了可以反复复用是后续所有InSAR处理的基础。大气改正方面比较常用的有GACOS全球大气校正服务它提供天顶对流层延迟数据。在SBAS-InSAR中通常不依赖单一的大气校正产品而是在解算后用时空滤波来分离大气信号。但如果你手头有GACOS数据也可以直接在干涉图上扣除大气的延迟分量。实测下来对于中国西南山区这种大气变化剧烈的区域GACOS校正能显著降低干涉图中的大气条纹。4.3 可视化与结果的交互式分析MATLAB做InSAR还有个优势是可视化方便。一张干涉图一个imagesc加colormap就能出图一段形变时间序列plot加errorbar就能画出来。但要想可视化做得专业还需要注意几点。干涉图显示时相位是循环量直接imagesc会因为-π和π的跳变产生颜色突变。建议用hsv色图这样相位在2π周期内首尾相接视觉上比较自然。如果要叠加相干性图可以用alpha通道把低相干区域半透明化突出高可信区域。辅助工具方面我会推荐几个常用的MATLAB工具箱Image Processing Toolbox滤波和形态学操作、Mapping Toolbox坐标转换和地图投影、Parallel Computing Toolbox并行加速、Statistics Toolbox时间序列回归。如果缺少Mapping Toolbox也可以用开源的m_map工具包做替代基本功能都能覆盖。还有一个在交互式分析中很实用的功能用datacursormode直接点击影像上的点查看某个位置的时间序列或干涉图相位值。在MATLAB的figure窗口里启用Data Cursor模式后自定义一个更新时间序列回调函数鼠标点击位置就能弹出对应的形变历史曲线。这个操作对于快速选点、检查异常点非常高效。5. 常见问题与排查技巧实录5.1 干涉条纹异常密集平地相位未正确去除这是新手最容易遇到的问题。第一眼看到干涉图密密麻麻全是条纹还以为自己成功做出了高分辨率干涉实际上很可能只是平地相位没扣干净。排查思路先看条纹的走向是否与卫星轨道的几何关系一致。如果条纹是等间距直线且方向与方位向有一定夹角基本可以断定是平地相位残余。解决方法有两条一是检查轨道数据是否精确用精密轨道重新计算平地相位二是检查去平地公式中的斜距计算是否正确尤其要确认采用了双程斜距要乘以2。经验之谈去平地后理想的干涉图应该呈现出清晰的地形条纹沿山体走向弯曲并且整体条纹密度明显下降。看到这种图像才说明前面的处理是正确的。5.2 相位解缠结果出现不连续拼图解缠结果往往会出现一种情况大片区域解缠结果连续但沿着某些边缘出现明显的跳变看起来像是一块块拼图拼起来但没对准。这种问题多半是解缠算法在低相干区域产生的误差或者是滤波不充分留下的残差点导致枝切线误判。解决方向第一检查相干性分布低相干区域水体、植被稠密区的相位本身就不可靠处理时可以考虑用相干性掩膜把低相干区域排除掉解缠后再插值补齐。第二增强滤波强度把Goldstein滤波的alpha_min调低一些但要注意不要过度滤波把真实形变信号抹掉。第三尝试更换解缠算法。如果用的是枝切法换成最小费用流或最小二乘方法很可能在问题区域表现更好。用MATLAB可以快速对比不同解缠参数对结果的影响。修改参数后重新解缠计算解缠结果与已知地面控制点之间的残差选残差最小的参数组合。5.3 MATLAB内存不足大数据量分块处理处理大范围InSAR数据时“Out of Memory”是绕不开的坎。尤其是单景哨兵1号SLC数据直接全加载几个GB内存就没了再开几个中间变量16GB内存的机器根本扛不住。我实测下来最有效的方案是分块处理。具体操作是把全影像按方位向切分成若干条带每条带之间重叠约10%像元。对每个条带独立完成配准、干涉、解缠。用重叠区域的平均值做拼接并加羽化过渡。分块的数量取决于你的可用内存。一个粗略的经验保证每个分块的处理过程峰值内存不超过物理内存的三分之一。重叠率10%算是一个平衡点太小了拼接边缘可能不自然太大了冗余计算太多。5.4 解算的形变速率场出现轨道斜坡形变速率场如果呈现明显的空间线性斜坡比如东南-西北方向的渐变大概率是轨道误差没有被完全去除。轨道误差在干涉图中表现为大尺度的相位斜坡其空间频率很低不容易通过常规滤波去除。处理方法是在SBAS解算后在形变图上拟合一个平面从结果中扣除。也可以用多项式拟合分段去除一般二次多项式就够了。这个操作在MATLAB中实现很简单% 拟合形变速率场的平面趋势 x 1:size(deformation_rate, 2); y 1:size(deformation_rate, 1); [X, Y] meshgrid(x, y); A [X(:), Y(:), ones(numel(X),1)]; coeff A \ deformation_rate(:); trend reshape(A * coeff, size(deformation_rate)); % 去除趋势 deformation_rate_detrended deformation_rate - trend;需要提醒的是并非所有斜坡都是轨道误差有些真实的地壳形变也会表现为大尺度斜坡如长期构造运动、地下水超采造成的大范围沉降。区分方法是看斜坡方向是否与轨道方向一致以及是否在不同轨的数据中重复出现。如果有覆盖同一区域的升轨和降轨数据交叉验证是最靠谱的方案。6. 工程化落地从实验代码到自动化处理6.1 搭建一个可复用的InSAR处理流程脚本项目做久了你会发现最花时间的不是算法本身而是把整个流程串起来、反复调试参数的过程。我在处理完第一批数据后就把整套InSAR处理流程整理成了可复用的脚本框架之后再接到新区域的批量数据改改参数就能直接跑。脚本框架的基本结构是这样的% 配置参数文件 config.work_dir /data/insar/; config.slc_dir [config.work_dir, SLC/]; config.dem_file [config.work_dir, DEM/srtm_30m.tif]; config.look_angle 33.9; % 哨兵1号默认入射角中心 config.wavelength 0.055465763; % 哨兵1号波长米 config.spatial_baseline_thr 200; % 空间基线阈值米 config.temporal_baseline_thr 90; % 时间基线阈值天 % 主流程 data Load_SLC_Data(config); baselines Estimate_Baselines(data, config); pairs Select_Interferometric_Pairs(baselines, config); for k 1:length(pairs) [master, slave] Coregister(data, pairs(k), config); interferogram Generate_Interferogram(master, slave); interferogram Remove_Flat_Earth(interferogram, baselines, config); interferogram Goldstein_Filter(interferogram, config); unwrapped Unwrap_Phase(interferogram, config); Stack_Interferograms(k) unwrapped; end rate SBAS_Inversion(Stack_Interferograms, baselines);实际工程中流程里还要加入质量控制和日志记录。每一景影像处理完输出质量报告包含配准偏移量、相干性均值、解缠良好比例等指标。如果中间某一步质量明显下降日志能帮你快速定位是哪对像对出了问题。6.2 处理结果的验证与精度评估InSAR处理完了怎么知道结果可不可信这一步比处理本身更重要。我的经验是至少要完成三方面的验证第一与外部数据对比。用GPS观测站的形变数据和时间序列InSAR结果对比计算相关系数和均方根误差。如果两者趋势一致但存在一个常数偏差很可能是参考点选择不一致导致的可以通过基准校正解决。第二残差分析。SBAS解算之后每个干涉像对都有一个观测值与模型值之间的残差。残差如果呈现明显的空间结构说明模型中遗漏了某些物理过程或者存在系统性误差。理论上合格的残差应该接近白噪声。第三升降轨交叉验证。如果研究区同时有升轨和降轨数据可以用两个方向分别处理提取同一地理位置的形变时间序列。升降轨的几何观测方向不同但对同一物理形变的反演结果应该一致。两者在视线向LOS上的变形分量投影到垂直向和东西向时应该能互相印证。MATLAB实现这些验证代码不算复杂但很值得做。有了这套验证流程你的InSAR结果就不再是一张花哨的图而是经得起推敲的定量产品。6.3 输出成果的标准化与论文配图最后一步是输出。SCI论文、工程报告里的InSAR结果图一般需要三个图层形变速率图叠加在光学影像或地形阴影图上时间序列图选取几个代表点的形变曲线相干性图用于说明结果的空间可靠性MATLAB的exportgraphics函数可以直接将figure导出为300dpi以上的TIFF或EPS不需要再用其他软件二次处理。导出前注意设置字体大小一般8-10pt、坐标轴标注和colormap。形变速率图常用的色带是蓝-白-红蓝色表示远离卫星、红色表示靠近卫星。用cmocean色带或者MATLAB自带的turbo效果都不错。至此一套用MATLAB做InSAR数据处理的完整链路就通了。这个项目标题里的“04924276”大概是作者当初的学号或者仓库编号“insar_dataproccessing”也准确描述了这个仓库的内容定位——它不是某个精雕细琢的软件产品但它是理解InSAR原理与实现的最佳起点。对每一个想真正掌握InSAR的从业者来说趁早把这段代码从头到尾调通、跑顺、理解透绝对是一件值得投入的事。本文还有配套的精品资源点击获取
返回列表