相位解包裹(一)一维相位解包裹

2024-05-14 17:48
文章标签 一维 相位 包裹

本文主要是介绍相位解包裹(一)一维相位解包裹,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

答辩结束了,可以接着更新啦~~~

 

前几篇文章已经写过FTP和PMP两种相位提取的方式,相位提取这一步基本都是固定的了,只要利用正弦条纹结构光做三维测量,这一步不管怎么玩,都基本不脱离FTP或者PMP,当然目前PMP的使用频率更高。

但是,提取相位后的下一步,应该是结构光三维重建非常重要的一步,在我看来,说是最重要的也不为过,就是相位解包裹。

首先我们先讨论什么是相位解包裹。

 

相位解包裹

相位提取不管用FTP还是PMP,最终都是要用反正切来求相位的,那这就意味着,求出来的相位值都是分布在[-pi,pi]或者实

[0,2pi]这一个区间里。需要注意的是这里所说的反正切是四象限反正切。

因此,提取出来的相位是被截断的,被称为包裹相位或者截断相位(wrapped phase),如下图蓝色虚线。需要将它恢复成连续的状态,如下图红色实线,恢复出来的相位称为连续相位或者绝对相位(absolute phase),这一个过程就被称为相位解包裹(phase unwrapping),也有翻译称为相位展开的。

 

 

一维相位解包裹

明白了相位解包裹是什么,就可以开始讨论如何去解包裹相位了,这里从最简单的一维相位解包裹开始讨论。

早在1982年Itoh对一维相位解包裹问题进行了总结,如下图的具体步骤。要注意的是,步骤2里的\mathcal{W}\left\{ \right\}指截断运算,反正切就是一种截断运算。不过这一步里,为了好理解和方便转成代码,我认为更合适的是MOD 2pi运算。

根据上述的步骤,一维相位解包裹可以总结为 :连续相位可以通过累加截断相位的差值的截断而求得,也就是表示为下面的式子(符号表示稍有点不一样,不同时间做的总结,我也懒得重新改了,理不直气也壮.jpg)

\Phi \left( m \right)=\Phi \left( 0 \right)+\sum\limits_{n=0}^{m-1}{\mathcal{W}}\left\{ \vartriangle \left\{ \mathcal{W}\left\{ \Phi \left( n \right) \right\} \right\} \right\}

式中,\Phi \left( m \right)为第m点的连续相位, \Phi \left( 0 \right)为初始化的起始相位点,\Phi \left( n \right) 为第n点的连续相位。\vartriangle \left\{ \right\}为求差运算符,定义为

\vartriangle \left\{ \Phi \left( n \right) \right\}=\Phi \left( n+1 \right)-\Phi \left( n \right)

 

代码逻辑

把上面一维相位解包裹的理论步骤转为代码的话,逻辑上可以更简单一点,可以用下面两种方式。

第一种方式,遍历全部相位值,比较前后两个位置的相位值,求后一点与前一个点的相位差,如果相位差大于pi,则后一个点的相位减2pi;如果相位差小于-pi,则后一个点的相位加2pi;如果相位差大于-pi小于pi,则继续比较下一位置的相位。

第二种方式:第n点的截断相位与第n-1点的连续相位之间的关系可用下式表示:

$\Phi \left( n \right)\text{=}\phi \left( n \right)+2\text{ }\!\!\pi\!\!\text{ }k\left( n \right)$

$\text{ }k \left( n \right)\text{=}round\left \{ \left[\phi \left( n \right)-\Phi \left( n-1 \right)\right]/2\text{ }\!\!\pi \right \}$

这个过程就像下面这幅图,向截断的相位加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联系我,大家一起讨论学习。

这篇关于相位解包裹(一)一维相位解包裹的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/989431

相关文章

简单的Q-learning|小明的一维世界(3)

简单的Q-learning|小明的一维世界(1) 简单的Q-learning|小明的一维世界(2) 一维的加速度世界 这个世界,小明只能控制自己的加速度,并且只能对加速度进行如下三种操作:增加1、减少1、或者不变。所以行动空间为: { u 1 = − 1 , u 2 = 0 , u 3 = 1 } \{u_1=-1, u_2=0, u_3=1\} {u1​=−1,u2​=0,u3​=1}

简单的Q-learning|小明的一维世界(2)

上篇介绍了小明的一维世界模型 、Q-learning的状态空间、行动空间、奖励函数、Q-table、Q table更新公式、以及从Q值导出策略的公式等。最后给出最简单的一维位置世界的Q-learning例子,从给出其状态空间、行动空间、以及稠密与稀疏两种奖励函数的设置方式。下面将继续深入,GO! 一维的速度世界 这个世界,小明只能控制自己的速度,并且只能对速度进行如下三种操作:增加1、减

c语言——用一维数组输出杨辉三角形

一.代码 #include <stdio.h>int Num[100];int Hang;int Lie;int a;int Flag;int main() {Lie = 1;Hang = 1;a = 0;while (1) {//列1为1if (Lie == 1) {Num[1] = 1;Lie++;}//数据存到数组里面while (Hang >= Lie && Hang !=

“弹性盒子”一维布局系统(补充)——WEB开发系列31

弹性盒子是一种一维布局方法,用于根据行或列排列元素。元素可以扩展以填补多余的空间,或者缩小以适应较小的空间,为容器中的子元素提供灵活的且一致的布局方式。 一、什么是弹性盒子? CSS 弹性盒子(Flexible Box Layout,简称 Flexbox)是 CSS3 中引入的一种布局模式,提供一种有效的方式来布局、对齐和分配容器内空间,特别是在动态和复杂的应用界面中。 1、

C#基础(3)一维数组

前言 我们先前已经进行了枚举的学习,但其实枚举相对来说,设计到的计算逻辑比较少,大多数时候都是和switch一起进行分支判断,而且屏幕前的你应该也发现了,这玩意儿其实更多就是一个编码规范的学习。 但今天我们要开始学习的数组:一维数组,多维数组,交错数组,这些在你日后的算法学习中也会经常出现。 所以希望大家跟紧我的脚步,把这个知识点理解透彻。 数组有很多作用,以下是其中一些常见的作用:

代码随想录算法训练营第35天|背包问题基础、46. 携带研究材料(01背包二维解法)(01背包一维解法)(acm)、416. 分割等和子集

目录 0、背包问题基础01背包 46. 携带研究材料(01背包)1、题目描述2、思路3、code(二维解法)3-1、code(一维解法)4、复杂度分析 416. 分割等和子集1、题目描述2、思路3、code4、复杂度分析 0、背包问题基础 01背包 有n件物品和一个最多能背重量为w 的背包。第i件物品的重量是weight[i],得到的价值是value[i] 。每件物品只能

java中一维数组、二维数组、查找某元素、数组查表法、逆序

一维数组 //定义:数据类型[] 数组名;int[] arr;//静态初始化int[] arr= {11,22,33};//动态初始化int[] arr= new int[3];//默认初始值会为0System.out.println(arr);//一个地址值System.out.println(arr[0]);//0 System.out.println(arr[1]);//0

并查集题目(路径压缩、扩展域并查集、带权并查集、二维转一维并查集、逆向思维并查集)

目录 P2814 家谱 P1955 [NOI2015] 程序自动分析 P2256 一中校运会之百米跑    (并查集结合map) P3144 [USACO16OPEN]Closing the Farm S P6121 [USACO16OPEN]Closing the Farm G P1197 [JSOI2008] 星球大战 P5092 [USACO04OPEN]Cube Stacki

5.在一维坐标轴上有n个区间段,求重合区间最长的两个区间段。

这种题目见过一些类似的题目。这里整理一下思路。 一位很牛逼的网友写的,点击打开链接。用的是分治法,类似于归并排序。 还有一种动态规划的方法,点击打开链接,思路如下: 假设S[n]表示n条线段中最长重叠距离,最长重叠距离只与两条线段有关,那么考虑两种情况: 1. 最长重叠距离与第n条线段无关,则最长重叠距离存在于前n-1条线段中,即S[n]=S[n-1]; 2. 最长重叠距离与第n条线段有

自定义RadioGrop,支持添加包裹着的RadioButton

控件类: package com.chinaCEB.cebView;import android.annotation.TargetApi;import android.content.Context;import android.content.res.TypedArray;import android.os.Build;import android.util.AttributeSet