本文主要是介绍相位解包裹(一)一维相位解包裹,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
答辩结束了,可以接着更新啦~~~
前几篇文章已经写过FTP和PMP两种相位提取的方式,相位提取这一步基本都是固定的了,只要利用正弦条纹结构光做三维测量,这一步不管怎么玩,都基本不脱离FTP或者PMP,当然目前PMP的使用频率更高。
但是,提取相位后的下一步,应该是结构光三维重建非常重要的一步,在我看来,说是最重要的也不为过,就是相位解包裹。
首先我们先讨论什么是相位解包裹。
相位解包裹
相位提取不管用FTP还是PMP,最终都是要用反正切来求相位的,那这就意味着,求出来的相位值都是分布在[-pi,pi]或者实
[0,2pi]这一个区间里。需要注意的是这里所说的反正切是四象限反正切。
因此,提取出来的相位是被截断的,被称为包裹相位或者截断相位(wrapped phase),如下图蓝色虚线。需要将它恢复成连续的状态,如下图红色实线,恢复出来的相位称为连续相位或者绝对相位(absolute phase),这一个过程就被称为相位解包裹(phase unwrapping),也有翻译称为相位展开的。
一维相位解包裹
明白了相位解包裹是什么,就可以开始讨论如何去解包裹相位了,这里从最简单的一维相位解包裹开始讨论。
早在1982年Itoh对一维相位解包裹问题进行了总结,如下图的具体步骤。要注意的是,步骤2里的指截断运算,反正切就是一种截断运算。不过这一步里,为了好理解和方便转成代码,我认为更合适的是MOD 2pi运算。
根据上述的步骤,一维相位解包裹可以总结为 :连续相位可以通过累加截断相位的差值的截断而求得,也就是表示为下面的式子(符号表示稍有点不一样,不同时间做的总结,我也懒得重新改了,理不直气也壮.jpg)
式中,为第m点的连续相位, 为初始化的起始相位点, 为第n点的连续相位。为求差运算符,定义为
。
代码逻辑
把上面一维相位解包裹的理论步骤转为代码的话,逻辑上可以更简单一点,可以用下面两种方式。
第一种方式,遍历全部相位值,比较前后两个位置的相位值,求后一点与前一个点的相位差,如果相位差大于pi,则后一个点的相位减2pi;如果相位差小于-pi,则后一个点的相位加2pi;如果相位差大于-pi小于pi,则继续比较下一位置的相位。
第二种方式:第n点的截断相位与第n-1点的连续相位之间的关系可用下式表示:
这个过程就像下面这幅图,向截断的相位加k个2pi把它抬起来到正确的位置
总的来说,一维相位解包裹的理论是比较简单好理解的,但为什么到了二维之后会出现那么多问题呢,这就留到后续的文章再继续讨论了。
参考文献:
[1] Itoh K. Analysis of the phase unwrapping algorithm[J]. Applied optics, 1982, 21(14): 2470-2470.
[2] Ghiglia D C, Pritt M D. Two-dimensional phase unwrapping: theory, algorithms, and software[M]. New York: Wiley, 1998.
声明:本文中的图片、公式等都和作者本人的毕业论文有关,如果抄袭盗用吃亏是你自己哦~实在有需要,这里建议你自己码一下公式,自己做一下相关的图哦亲。作者水平有限,如文中有错,请务必留言指正。如有学习交流需要,也可通过邮箱zhenyuchung@m.scnu.edu.cn联系我,大家一起讨论学习。
这篇关于相位解包裹(一)一维相位解包裹的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!