相位解包裹(六)质量图导向法quality guide phase unwrapping(QGPU)

上一篇文章讲了通过连接残点形成branch的枝切法,这篇再介绍一种空间相位解包裹的算法,质量图导向法quality guide phase unwrapping(QGPU)。

 

质量图导向法QGPU

质量图导向法的核心是:通过一个优质的质量图,根据质量的大小,按质量从高到低的顺序来指导解包裹路径,从而躲开未被平衡的残点对解包裹的影响

可见,枝切法是先找残点,然后通过branch连接它们,解包裹的时候避开这些branch完成全图的相位解包裹。而QGPU则是先去计算一个质量图,根据质量图来解包裹。根据质量的大小来解包裹。总的来说,它们都是空间相位解包裹这一类下的算法,都是根据邻点的相位作为参考来解包裹,不过QGPU除了把残点留在最后去解包裹,在这之前的解包裹过程也是按照质量的大小去排列的,结果按理说会更优,但相对也会更耗时间。

 

质量图(quality map)

既然要用质量图来指导解包裹,那首先要知道质量图到底是什么东西。

按照Two-Dimensional Phase Unwrapping: Theory, Algorithms, and Software的定义,质量图就是用定义每个点的相位的质量或好坏的值的阵列(The arrays of values that define the quality or goodness of each pixel of the phase data)

在书中,介绍了多种质量图的计算方法,分别是相关系数(Correlation coefficients)、伪相关系数(Pseudo-correlation coefficients)、相位差分方差(Phase derivative variance)、最大相位梯度(Maximum phase gradient)等等。

相关系数(Correlation coefficients)仅适用于IFSAR数据,所以这里不讨论。

 

伪相关系数(Pseudo-correlation coefficients

\left| {​{z}_{m,n}} \right|=\frac{\sqrt{​{​{\left( \sum{\cos \phi \left( i,j \right)} \right)}^{2}}+{​{\left( \sum{\sin \phi \left( i,j \right)} \right)}^{2}}}}{​{​{k}^{2}}}

在k*k邻域中计算第(m,n)位置的伪相关系数,(m,n)为k*k邻域的中心位置,\phi \left( i,j \right)是k*k邻域中各点的相位。

 

相位差分方差(Phase derivative variance

\left| {​{z}_{m,n}} \right|=\frac{\sqrt{​{​{\left( \sum{\left( {​{\vartriangle }^{x}}\left( i,j \right)-{​{\overline{​{​{\vartriangle }^{x}}}}_{m,n}} \right)} \right)}^{2}}+{​{\left( \sum{\left( {​{\vartriangle }^{y}}\left( i,j \right)-{​{\overline{​{​{\vartriangle }^{y}}}}_{m,n}} \right)} \right)}^{2}}}}{​{​{k}^{2}}}

在k*k邻域中计算第(m,n)位置的相位差分方差,\vartriangle }^{x}}\left( i,j \right)\vartriangle }^{y}}\left( i,j \right)分别是沿x轴方向和沿y轴方向的相位差,\overline{​{​{\vartriangle }^{x}}}}_{m,n}\overline{​{​{\vartriangle }^{y}}}}_{m,n}分别是在k*k邻域中沿x轴方向和沿y轴方向的总的相位差的平均值。

 

最大相位梯度(Maximum phase gradient

\max \left( \left| {​{\overline{​{​{\vartriangle }^{x}}}}_{m,n}} \right| \right)

\max \left( \left| {​{\overline{​{​{\vartriangle }^{y}}}}_{m,n}} \right| \right)

最大相位梯度一般为两个值的组合。

相位差分方差(Phase derivative variance)、最大相位梯度(Maximum phase gradient)都是描述相位的质量“劣”,而不是“优”,为了方便,所以都是取它们的相反数。

 

按书中介绍,最优的相关系数和相位差分方差,最大相位梯并不适应所有情况,伪相关系数在实际应用不是十分实用。

除此,在参考文献[4]还介绍了多种计算质量图的方式,主要是采用像傅里叶变换、窗口傅里叶变换、小波变换等来计算质量图。文章中还讨论了各种质量图的计算方法在不同情况下的优劣,有兴趣可以自己去下载来看看。我这里简单总结就是了。

质量图计算有两种情形,一种是从原始的测量数据中计算(case A),另一种是从截断相位图或归一化后的复数数据中计算(case B),针对A、B两种情况,对应的一些计算方式如下。

 文章中分析了质量图计算对噪声以及相位不连续的对比情况,简单总结就跳过了。

 

我用过的就是相位差分方差,和傅里叶变换提取基频,逆变换得到的复数矩阵中计算幅度谱,效果都差不多。一个合适的好的质量图,是后续相位解包裹正确完成的关键,所以具体情况还需要具体分析。

 

质量图导向法流程

以下为质量图导向法最基本的流程:

1、生成质量图

2、搜索质量图中,质量最大的位置作为起始点,将其四邻域的点解包裹,进队

3、只要队列非空,质量最高的点出队,将该点的四邻域、未进队且未被解包裹的点,解包裹,进队

4、重复步骤3,直到队列为空,相位图中所有点都已经被解包裹

如果仔细想想这个算法的实现,就会发现这个算法其实是相当耗时间的,因为随着进队的点越来越多,而每次都需要质量最大的点出队,相当于要做非常多次的质量大小比较,队列越长,比较的次数就越多,所需要的时间也会增加。

因此,需要算法的提速,需要考虑优化的数据结构来实现这个队列,参考文献[4]就有算法实现策略的对比,里面对比了多种数据结构实现的速度,参考文献[5]、参考文献[6]也提出了用不同的数据结构来实现QGPU。这里只讲算法基本原理,如何实现就不讲了,感兴趣可以自己看文章哦。

我个人用的是priority queue,也就是优先队列,由于我是用C++实现所有算法的,所以优先队列可以直接用C++ STL中的prority queue模板,当然也可以自己写最大堆的结构来实现。

 

我在FTP文章里面放的人脸的重建,解包裹就是用QGPU来实现的,我感觉效果还算过得去吧,但也要考虑时间复杂度的问题。对于400*400的图,我写的算法解包裹平均要0.75s,电脑配置是i7-8750H CPU@ 2.20GHz, NVIDIA Geforce GTX1060, 16GB RAM,其实我对这个速度是相当不满意的,不过算法嘛,我也是个渣渣,也没想清楚怎么去提升速度,后来慢慢放弃了QGPU,去用时间相位解包裹的算法了(真香~)。

 

 

 

 

 

 

参考文献:

[1] Ghiglia D C, Pritt M D. Two-dimensional phase unwrapping: theory, algorithms, and software[M]. New York: Wiley, 1998.

[2] Xu W, Cumming I. A region-growing algorithm for InSAR phase unwrapping[J]. IEEE transactions on geoscience and remote sensing, 1999, 37(1): 124-134.

[3] Su X, Chen W. Reliability-guided phase unwrapping algorithm: a review[J]. Optics and Lasers in Engineering, 2004, 42(3): 245-261.

[4] Zhao M, Huang L, Zhang Q, et al. Quality-guided phase unwrapping technique: comparison of quality maps and guiding strategies[J]. Applied optics, 2011, 50(33): 6214-6224.

[5] Zhong H, Tang J, Zhang S, et al. An improved quality-guided phase-unwrapping algorithm based on priority queue[J]. IEEE Geoscience and Remote Sensing Letters, 2010, 8(2): 364-368.

[6] Zhao M, Kemao Q. Quality-guided phase unwrapping implementation: an improved indexed interwoven linked list[J]. Applied optics, 2014, 53(16): 3492-3500.

 

声明:作者水平有限,如文中有错,请务必留言指正。如有学习交流需要,也可通过邮箱zhenyuchung@m.scnu.edu.cn联系我,大家一起讨论学习。

  • 10
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 13
    评论
Two-dimensional phase unwrapping: theory, algorithms, and software Phase unwrapping is a mathematical problem-solving technique increasingly used in synthetic aperture radar (SAR) interferometry, optical interferometry, adaptive optics, and medical imaging. In Two-Dimensional Phase Unwrapping, two internationally recognized experts sort through the multitude of ideas and algorithms cluttering current research, explain clearly how to solve phase unwrapping problems, and provide practicable algorithms that can be applied to problems encountered in diverse disciplines. Complete with case studies and examples as well as hundreds of images and figures illustrating the concepts, this book features: * A thorough introduction to the theory of phase unwrapping * Eight algorithms that constitute the state of the art in phase unwrapping * Detailed description and analysis of each algorithm and its performance in a number of phase unwrapping problems * C language software that provides a complete implementation of each algorithm * Comparative analysis of the algorithms and techniques for evaluating results * A discussion of future trends in phase unwrapping research * Foreword by former NASA scientist Dr. John C. Curlander Two-Dimensional Phase Unwrapping skillfully integrates concepts, algorithms, software, and examples into a powerful benchmark against which new ideas and algorithms for phase unwrapping can be tested. This unique introduction to a dynamic, rapidly evolving field is essential for professionals and graduate students in SAR interferometry, optical interferometry, adaptive optics, and magnetic resonance imaging (MRI).
质量导向Quality-guided Phase Unwrapping)是一种用于包裹相位的方,可以在相位中恢复出原始的连续相位信息。MATLAB是一种常用的科学计算软件,也提供了相位包裹的函数。 质量导向首先利用质量评价指标构建质量,该指标可用于评估相邻像素之间的不连续性程度。然后,通过一个迭代过程,将不连续的相位进行修复,使其变得连续。 在MATLAB中,可以使用相应的函数来实现质量导向相位包裹。该函数需要输入原始的相位质量作为参数,并返回包裹后的连续相位。实现的具体步骤如下: 1. 读取原始的相位质量。可以使用MATLAB的像读取函数来加载相应的像文件。 2. 构建质量。根据相邻像素之间的不连续性程度计算每个像素的质量值。可以使用MATLAB中的像处理函数来计算相邻像素的差异和梯度等信息,并将其用作质量。 3. 利用质量进行相位包裹。使用MATLAB中提供的相位包裹函数,并将原始相位质量作为输入参数传递给函数。函数将根据质量的信息来修复相位的不连续性,从而得到连续的相位。 4. 显示包裹后的相位。使用MATLAB的像显示函数将包裹后的相位显示出来,可以进一步分析和处理。 总结而言,质量导向相位包裹是一种基于质量评价指标的相位修复方。在MATLAB中,可以利用相应的函数来实现质量导向相位包裹的过程,从而恢复出原始的连续相位信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值