matlab 一维相位解缠

一、算法原理

1、相位解包裹算法的原理

   在相位 φ φ φ的提取过程中,进行了反正切函数的计算,由于三角函数具有周期性,即对于任意的 φ = φ 0 + 2 π ⋅ n φ= φ_0+2\pi \cdot n φ=φ0+2πn φ 0 φ_0 φ0是相位主值, n n n是整数), φ φ φ φ 0 φ_0 φ0的正切值相同,因此相位 φ φ φ被截断在反正切函数的主值范围内,仅获得 φ 0 φ_0 φ0的值。通过进一步判断,可将测量的相位结果扩展到 [ − π , π -\pi,\pi π,π]。当真实相位值超出 [ − π , π -\pi,\pi π,π]范围时,相位值受三角函数调制而形成 [ − π , π -\pi,\pi π,π]的包裹相位分布。在测量中,要获得物体表面的真实信息,就必须获得真实的相位分布。
  解包裹相位 ϕ ϕ ϕ和包裹相位 φ φ φ的关系可以用下式表示:
ϕ = φ + 2 π ⋅ n , − π ≤ φ ≤ π (1) ϕ= φ+2\pi \cdot n, -\pi\leq φ\leq\pi\tag{1} ϕ=φ+2πn,πφπ(1)
   相位解包裹的过程就是确定每一点的整数值,通过在相应的包裹相位点上加上(或减去) 2 π 2π 2π的整数倍,得到真实相位值,解包裹关键在于整数值 n n n的获得。

2、 相位解包裹的过程

   以一维的相位包裹图为例来描述相位解包裹的过程如图 1 所示。图 1 ( a ) 1(a) 1(a)是包裹相位分布,图 1 ( b ) 1(b) 1(b)是解包裹相位分布。从图 1 ( a ) 1(a) 1(a)到图 1 ( b ) 1(b) 1(b)是一个解包裹过程,可以看作是一个映射过程,而从图 1 ( b ) 1(b) 1(b)到图 1 ( a ) 1(a) 1(a)则是一个逆映射过程。将图 1 ( a ) 1(a) 1(a)映射到图 1 ( b ) 1(b) 1(b)可视为一个逐段平移拼接的过程:从左向右,在第一段保持不动时,第二段向上平移,直至第二段的左端点与第一段的右端点连接起来,这时第二段上所有的点都增加了 2 π 2π 2π;第三段向上平移,当与第二段相连时,第三段上的所有点都增加了 4 π 4π 4π;第四段上各点只需增加 2 π 2π 2π即可与第三段相连;剩余的不需平移已经与第四段连接了起来。完成整个平移过程后,由图 1 ( a ) 1(a) 1(a)就得到了图 1 ( b ) 1(b) 1(b)的解包裹相位分布。如果起始点的真实相位与包裹相位间有差值 π π π,则将解包裹相位值的每一点加上差值 π π π,得到起始点以零为基点的真实相位分布,如图 1 ( c ) 1(c) 1(c)所示。通过对上面的分析和总结,可以对相位解包裹的过程做如下描述:

  1. 沿某一方向进行解包裹处理时,设起始点的包裹相位值等于该点的解包裹相位 值,在出现周期性的相位跳变之前,各点的解包裹相位值等于对应的包裹相位值。
  2. 如果包裹相位值出现跳变,导致相邻两点的相位差值的绝对值大于 π π π时,将该点和以后各点加上或减去 2 π 2π 2π使相邻点的相位差介于 − π -π π π π π之间。
  3. 对上述处理后的各点继续进行扫描,对跳变点重复这样的处理,直至所有的相邻点的差值都在 − π -π π π π π之间,最后得到一个连续的相位分布。

  如果起始点的真实相位和包裹相位有一个差值 d d d,那么在进行完上述过程后,将所有的解包裹相位值都加上差值 d d d,即得到相位真值。在分析解包裹相位值的相对关系时,则不需要知道这个差值。

3、 一维相位解包裹的数学模型

在这里插入图片描述
在这里插入图片描述
  也就是说在 − π ≤ Δ φ i ≤ π -\pi≤Δφ_i≤π πΔφiπ的条件下,相邻点的真实相位差分值等于相应的相邻包裹相位差的包裹值,在知道真实相位初始点数值的情况下,选取适当的积分路线对包裹相位差的包裹值进行积分即可获得真实的相位分布。在相位解包裹算法的原理中曾提到可假设起始点的包裹相位值等于该点的解包裹相位值,因此可以实现相位的解包裹处理。
   − π ≤ Δ φ i ≤ π -\pi≤Δφ_i≤π πΔφiπ条件是指相邻点的真实相位值之差在 [ − π , π -\pi,\pi π,π]范围内,这个条件称作 N y q u i s t Nyquist Nyquist抽样条件(采样定理)。如果不满足抽样条件则不能进行相位的解包裹运算。
  长度为 N N N的一维相位解包裹处理的具体步骤如下:
在这里插入图片描述

4、参考文献

[1]马蛟. 基于数字光栅投影的形貌测量技术研究[D]. 合肥工业大学

二、代码实现

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% unwrap_1D.m 一维相位解缠
% 参考文献:[1]马蛟. 基于数字光栅投影的形貌测量技术研究[D]. 合肥工业大学, 2014.p30
% 由 CSDN 点云侠 创建于 2024/7/30
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


clc;
clear;
close all; 

%% ------------------------------生成螺旋线--------------------------------
t = linspace(0,6*pi,201);
x = t/pi.*cos(t);
y = t/pi.*sin(t);
%plot(x,y)
%% ------------------------------获取相位----------------------------------
% 使用 atan2 函数基于螺旋线的 x 和 y 坐标求其相位角。
% atan2 函数返回范围在 −π 到 π 的闭区间内的角度值。
P = atan2(y,x);
%% ------------------------------相位解缠----------------------------------
% 该图有不连续性。使用 unwrap 消除不连续性。
% 当 P 的连续元素之间的相位差大于或等于跳跃阈值 π 弧度时,
% unwrap 会将角度增加 ±2π 的倍数。平移后的相位角 Q 位于从 0 到 6π 的区间内。
Q = unwrap_1D(P) % 核心代码已封装成函数,这里直接调用即可!
%% -----------------------------结果可视化---------------------------------
figure
plot(t,P,'r--','linewidth',1);
hold on;
plot(t,Q,'b--','linewidth',1);
xlabel('时间');
ylabel('相位');
title('相位解缠');
legend('缠绕相位','真实相位');%图注
hold on;

三、结果展示

在这里插入图片描述

  • 17
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

点云侠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值