利用两个对同一地面区域的InSAR单视复数数据,做相位干涉图时,如何求得相位差?为什么要用复数共轭相乘,而不能用arctan或者其他方式?本文对此做一些简单的探讨。
1. 何为单视复数数据
SAR卫星遥感地面,利用的是微波波段的电磁波,简单来讲,SAR影像上每个像素内能获取的信息主要为:
SAR天线发射的电磁波,在地面这个像素内经过散射,又沿着发射路径传回SAR卫星的这一部分电磁波的振幅和相位。还有极化、时间延迟和频移等信息。
原始数据:SAR处理前的二维数据(0级),不能称之为图像,只是一组包含强度、相位、极化、时间延迟和频移等信息的大矩阵,叫做原始信号数据( Raw Signal Data)。
单视复数数据SLC(1级):没有进行后处理,只是原始数据经过脉冲压缩算法和SAR合成算法的结果。单视复数数据是一个矩阵,每个元素代表一个像素。每个像素以复数的形式表示,含有振幅和相位信息,那么复数是怎么表示振幅和相位的呢?显而易见:
若设某个像素的数据为:a+bi
振幅:
相位:
由于微波波长为mm-m的数量级,而SAR一个像素所代表的地面范围通常就是米级的,如哨兵1号的SLR数据:
图片引用自(3条消息) 哨兵1号(sentinel 1)数据各参数介绍_塞翁的读书笔记的博客-CSDN博客_sentinel1
那么可想而知,对于单幅SAR影像来说,相位是没什么用的,拿来一看,基本上是个服从均匀分布的“雪花图”。
但InSAR相位是距离的函数,通过相位信息来测量卫星到地面的距离,其中的信息我们怎么利用起来呢?根据杨氏双缝干涉原理,那么就是对于拍摄同一地面区域的两幅SAR影像,求取对应像素的相位差,所成图即干涉图。
2.如何做干涉计算
原理很简单,那么怎么从单视复数数据中求得两幅SAR影像的相位差?用arctan行不行?还是用复数的幅角差计算?有什么区别?
2.1 幅角
复数的幅角定义在区间内
计算两个复数的幅角差可以通过共轭相乘来很容易得到(这部分不会的百度一下,很简单的复数运算计算):
那么对求主幅角,得到的即为干涉相位,这个主幅角的范围显然也在
,并要认识到,
的主幅角并不等价于
,因为
的范围在
。
2.2 反正切
反正切直接计算得到的并不是干涉相位!!
反正切arctan的值域定义在区间内
如果利用arctan()计算两个复数的相位差
设
因此,利用arctan函数计算相位差,虽然
取值范围也是
,但由于在计算
时,将本是
的相位压缩到了
区间内,因此对于某些
,会存在
的跳变错误。
3.举例说明
大家可以拿一个栗子算一下,比如,用共轭相乘得到的值是135°,而用arctan()计算得的相位差是-45°。
4.matlab做干涉
完成两幅SAR影像的配准后,进行干涉计算,并可视化:
% % 干涉相位计算
dph=angle(cplx1.*conj(cplx2)); % cplx1,cplx2为两幅SAR的SLC数据
% % conversion to grey value
figure('Name','复数共轭相乘');
imagesc(dph);
fig=gcf;
fig.Position=[100,100,1400,800];
axis square
colorbar(gca,'Ticks',linspace(-3.14,3.14,5),'TickLabels' ,{'-\pi','-\pi/2','0','\pi/2','\pi'})
xlabel('pixel')
ylabel('pixel')
title('interferogram(origin)')