上一篇文章讲了相位解包裹算法的分类,那从这一篇文章开始,就可以开始介绍具体的相位解包裹算法了。

因为介绍过了残点的运算,所以这里首先介绍利用残点的特性去进行相位解包裹算法的一种经典算法,枝切法(Goldstein’s branch cut algorithm)。枝切法的解包裹是和路径有关的,所以其属于空间相位解包裹中的一种。

残点的极性(polarity/charge)

从残点的计算我们得知,在一个2*2的小区域里面求相位差的环路积分,结果可能为0,±1(所有结果都除2pi),+1成为正残点(positive),-1成为负残点(negative),这一属性成为残点的极性(polarity)或者charge(实在不知道怎么翻译)

可以得到,相位差的环路积分,实际就是经过多少个正负残点charge的和的2pi倍

之前一直说,相位解包裹因为残点存在,是一个与路径有关的过程,那怎么可以让他变成一个与路径无关的过程呢?

从上面的式子可以看出来,要是相位差的环路积分等于0,就需要让charge为0,那怎么才能为0呢,就是即路径经过的区域里,残点的charge被平衡(balance)了,意思是区域中正负残点的数量相等。只要所有区域的正负残点都是平衡的,那相位解包裹的过程自然就和路径没有关系了。

空间相位解包裹的基础就是残点的理论,通过设置一些障碍,例如连接残点的branch,让解包裹的路径绕开这些障碍,解包裹就能顺利进行。

以上讨论都是正常情况,假如认为假如噪声,导致计算的残点不等于±1,这些特殊情况需要另外讨论。

枝切法

枝切法就是利用连接残点的branch,让解包裹路径躲开这些区域的相位解包裹的算法。其最重要的贡献还是如何连接残点。

算法的核心:通过枝节(branch)连接距离最近的正负残点,并使它们达到平衡(balance)

残点的连接

对于用branch连接残点是有讲究的,如下图(a)从A到B解包裹,有3条路径,明显中间的路径经过了残点的区域,自然得到的结果和另外两条路径会不一样。假如像图(b)一样把正负残点连接使它们平衡,解包裹的路径需要躲开branch,只能走另外两条路的其中一条,不管哪一条,它们的结果都一样。但如果像图(c)一样,通过吧残点和相位图边界连接起来以平衡它们,那么解包裹路径还是会选择中间错误的路。

所以如何 通过branch连接正负残点,是需要一定的法则,如下图,连接残点的branch应该尽可能短。Goldstein等提出的方法,也只是能解决部分残点连接的问题,不是一个完美的方案,在他以后还有很多研究者提出各种各样的方法,要根据情况来决定算法的选取。这里也只讨论Goldstein枝切法一种。

Goldstein枝切法残点连接

1、首先当然是需要扫描检测出所有的残点。

2、将一个3*3的搜索窗放在残点的位置,寻找别的残点。如果找到了,将它们用branch连接起来。

(1)如果另一个残点的极性与当前残点相反,那么就认为这一个branch是已经平衡了,打上“balanced”标记。

(2)如果另一个残点的极性和当前残点相同,那搜索窗就放在新检测到的这个残点的位置,继续寻找残点,直到找到极性相反的残点并将它们用branch连接起来且他们charge的总和为0(也就是平衡了balanced);或者在搜索窗中再无残点被检测到,如果是后面这种情况,那么搜索窗会增大2,也就是变成5*5的窗,继续从开始的那个残点开始检测别的残点。

肥肠重要,一定要注意:

1、当在搜索窗中检测到了残点,都要将它们用branch连接起来。如果检测到的这个残点之前还未被用branch连接过,那它的极性需要加到charge里面来,如果连接过了的就不需要加。(目的就是要用branch上残点的charge总和为0,使它平衡)

2、如果在搜索窗遇到了相位图的边界,那直接把branch和边界连接,同时认定这一branch的charge总和为0。

3、之前讲过,残点实际是一个2*2的小区域,我们标记这个小区域左上角的那个像素为残点,但在残点的连接中,不需要连接被标记的两个像素,而是选择两个小区域最短的路径将他们连接起来,就像下面的图。

残点连接示例

假设,图中所有残点都已经计算检测出来,并且如图(a),已经连接了一个平衡了的branch,现在从右边的正残点开始检测残点并连接。

1、首先把3*3搜索窗放在右边的正残点上,没有检测到别的残点,当前charge的总和为1。

2、将搜索窗扩大为5*5的搜索窗,没有检测到别的残点当前charge的总和为1。

3、将搜索窗扩大为7*7的搜索窗,如图(b)检测到了箭头指着的正残点,将它们连接起来,由于检测到的这个残点已经连接过了branch,所以当前charge的总和还是为1。

4、7*7的搜索窗内没有检测到新的残点,且charge的总和不为0,将7*7的搜索窗移到箭头所指的残点上继续检测,检测到了相位图的边界,将branch和边界相连,charge的总和为0,这一branch已经平衡,结束检测。

枝切法相位解包裹

完成残点连接的工作,所有branch都已经平衡了之后,可以开始相位解包裹了,过程类似以flood fill算法。

1、选择一个非branch上的点作为起始点,标记为已解包裹,将它的4邻域的非branch的点,用Itoh方法解包裹,入队

2、只要队列不为空,首个元素出队,将该点的4邻域未曾入队、非branch且未解包裹的点,用Itoh方法解包裹,入队

3、重复步骤2,直到所有非branch上的点全部被解包裹

4、对于在branch上的点,根据他们的邻域中已解包裹的点的相位,对它们逐一解包裹。

最后,本文的理论和图片,都出自 Two-Dimensional Phase Unwrapping: Theory, Algorithms, and Software,我只是当了个翻译工、搬运工,根据自己的理解写出来而已,如果需要更详细的理论,可以自己查阅或者一起交流。

参考文献:

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

[2] Goldstein R M, Zebker H A, Werner C L. Satellite radar interferometry: Two-dimensional phase unwrapping[J]. Radio science, 1988, 23(4): 713-720.

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

相位解包裹(五)枝切法(Goldstein’s branch cut algorithm)相关推荐

  1. 光学算法——经典枝切法(解包裹算法)

    作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 注:本文所讲内容为本人硕士毕业论文:<基于干涉图像质量分析的激光干涉仪抗振技术研究> ...

  2. 相位解包裹(四)两类相位解包裹算法

    前文讲到了残点的计算,从残点出发,发展出了一类相位解包裹算法,空间(空域)相位解包裹(Spatial phase unwrapping). 各种算法的具体流程还是放到后面再说,本文先讲讲相位解包裹算法 ...

  3. matlab中枝切法解包裹,一种基于改进枝切法的激光散斑相位解包裹方法与流程

    本发明属于激光散斑干涉测量领域,涉及一种激光散斑相位解包裹方法. 背景技术: 散斑干涉相位图解包裹是激光散斑测量的关键步骤,Goldstein枝切法解包裹算法由于可识别残差点,防止误差传递,解缠精度高 ...

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

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

  5. 基于最小费用流(MCF)法的相位解包裹理论与实验验证-含Matlab代码

    一.引言 最小费用流算法(Minimum cost flow, MCF) 最早是由 Costantini M. A1998 年提出的,该方法是将未解缠相位的相邻梯度差与解缠相位的相邻梯度差间的差异即不 ...

  6. 基于加权最小二乘法的相位解包裹算法

    一.背景 1994年,Ghiglia和Romero提出了加权最小二乘迭代解包裹算法,其基本原理是通过加权系数来构造基于泊松方程的迭代公式,该算法运算速度快,并且稳健,还可以通过加权系数去控制平滑误差的 ...

  7. 基于强度传输方程的相位解包裹算法

    一.引言 2016年印度理工学院的 pandey等首次提出了基于强度传播方程的相位解包裹算法.该算法通过将包裹相位生成一个复数场,之后将其传播到一段距离.从而在复数场中紧密间隔的平面上模拟两个强度图像 ...

  8. 相位解包裹(三)残点(Residues)

    上一篇讲到,二维相位解包裹,由于采样率不足导致的相位混叠.获取过程中引入的相位噪声.奇异点等因素,使其是一个路径有关的问题. 那么如何才能在相位图找到这些导致解包裹过程与路径有关的因素呢?如何才能让相 ...

  9. 基于Flynn最小不连续相位解包裹算法

    一.Flynn最小不连续算法原理 Fynn最小不连续算法是求解包裹相位的最小加权不连续解 在此定义一对毗邻像素的差分超过π时为不连续,毗邻像素可能是垂直方向或水平方向,定义差分的最邻近整数个2π为跳变 ...

最新文章

  1. SQL Server物化视图学习笔记
  2. php 获取某一年最后一天_vivo年货节最后一天!多款机型大促,错过让你后悔再等一年!...
  3. 对话jQuery之父John Resig:JavaScript的开发之路
  4. 银行营业网点管理系统——entity类(Branches)
  5. stm32的串口DMA空闲中断接收不等长数据,stm32F1的usart1-DMA-IDLE收发
  6. java 多线程 面试题整理(更新......)
  7. Matlab实现和使用神经网络的几种方式详细讲解--附代码可下载
  8. Java找不到对象的警告_程序猿的24个段子:程序员找不到对象 一般有三种情况...
  9. 3、TM4之GPIO的输入输出
  10. php服务器支付宝的pcm,php - 支付宝当面付报错
  11. 交换机接口的双工模式
  12. OpenHarmony更新编译问题及解决办法
  13. 什么是跨域?一次性带你理解透
  14. 互联网巨头在2018年竞争的主战场 这个技术的新风口已到
  15. 我相信,一定有那么一句话可以温暖你的心
  16. 运动蓝牙耳机品牌推荐:2022年六大运动耳机推荐
  17. 实施工程师的必要条件
  18. ENVI_IDL: 批量制作专题地图
  19. 名帖09 邓石如 篆书《四箴四条屏》
  20. 张一鸣卸任字节跳动 CEO,网友调侃因未完成去年 OKR 被优化!

热门文章

  1. 共享文件夹:请检查名称的拼写,否则,网络可能有问题错误代码0x80070035
  2. 2.利用tensorflow框架对服装进行分类
  3. Flutter APPbar 自定义icon
  4. 谁要GMAIL和Orkut的邀请?
  5. Ubuntu18.04便签工具xpad安装
  6. 疯狂java讲义(李刚)6.2
  7. 基于Python+Django+Vue+MYSQL的社团管理系统
  8. 【Ceph】Ceph错误记录 Ceph 运维手册
  9. 为什么计算机不显示桌面工具栏,电脑开机后发现桌面、任务栏不见了怎么解决?...
  10. 曼妙琳珑心 Android 面试题(2)