【结构光三维重建】多步相移余弦正弦条纹在不同情况时解算推导展示

下述推导过程在 N步相位解包裹公式推导表达,本文的含义是在丰富推导过程与纠正其中的错误处;推广正弦N步相移条纹的解包裹结论;解包裹过程中求反正切中符号加错反映到包裹相位结果情况;解包裹过程中公式初始相位与理想条纹给定的初始相位不一致时情况。

那么余弦N步相移条纹解包裹公式(保证理想光强与拍摄光强的误差平方和最小)推导如下:

余弦N步相移条纹解包裹公式
疑问1:   ∑ n = 1 N c o s ( Δ ϕ n ) = 0 ?   \ \sum_{n=1}^N {cos( \Delta \phi_n)}=0 ?\,  n=1Ncos(Δϕn)=0?
解答:   ∑ n = 1 N c o s ( Δ ϕ n ) = ∑ n = 1 N c o s ( 2 n π N )   \ \sum_{n=1}^N{cos( \Delta \phi_n)}=\sum_{n=1}^N{cos( \frac{2n\pi} N)} \,  n=1Ncos(Δϕn)=n=1Ncos(N2),该式乘   s i n ( n π N )   \ {sin( \frac{n\pi} N)}\,  sin(N)
  s i n ( n π N ) ∑ n = 1 N c o s ( 2 n π N ) = 1 2 [ s i n ( 3 π N ) − s i n ( π N ) + s i n ( 5 π N ) − s i n ( 3 π N ) … + s i n ( ( 2 N − 1 ) π N ) − s i n ( ( 2 N − 3 ) π N ) + s i n ( ( 2 N + 1 ) π N ) − s i n ( ( 2 N − 1 ) π N ) ] = s i n ( ( 2 N + 1 ) π N ) − s i n ( π N ) = 0   \ sin( \frac{n\pi} N)\sum_{n=1}^N{cos( \frac{2n\pi} N)} =\frac12[sin(\frac{3\pi}N)-sin(\frac{\pi}N)+sin(\frac{5\pi}N)-sin(\frac{3\pi}N)\ldots +sin(\frac{(2N-1)\pi}N)-sin(\frac{(2N-3)\pi}N)+sin(\frac{(2N+1)\pi}N)-sin(\frac{(2N-1)\pi}N)] = sin(\frac{(2N+1)\pi}N)-sin(\frac{\pi}N)=0\,  sin(N)n=1Ncos(N2)=21[sin(N3π)sin(Nπ)+sin(N5π)sin(N3π)+sin(N(2N1)π)sin(N(2N3)π)+sin(N(2N+1)π)sin(N(2N1)π)]=sin(N(2N+1)π)sin(Nπ)=0
同理,根据   s i n α c o s β = 1 2 [ c o s ( α + β ) − c o s ( α − β ) ]   \ sin{\alpha}cos{\beta}=\frac12[cos(\alpha+\beta)-cos(\alpha-\beta)]\,  sinαcosβ=21[cos(α+β)cos(αβ)],那么   ∑ n = 1 N s i n ( Δ ϕ n ) = 0   \ \sum_{n=1}^N {sin( \Delta \phi_n)}=0 \,  n=1Nsin(Δϕn)=0

疑问2:   ∑ n = 1 N c o s 2 ( Δ ϕ n ) = N 2 ?   \ \sum_{n=1}^N {cos^2( \Delta \phi_n)}=\frac N2 ?\,  n=1Ncos2(Δϕn)=2N?
解答:   ∑ n = 1 N c o s 2 ( Δ ϕ n ) = ∑ n = 1 N 1 + c o s ( 2 x ) 2 = N 2   \ \sum_{n=1}^N {cos^2( \Delta \phi_n)} = \sum_{n=1}^N \frac {1+cos(2x)}2 = \frac N2 \,  n=1Ncos2(Δϕn)=n=1N21+cos(2x)=2N

那么正弦N步相移条纹解包裹公式推导如下:

  I n = I A + I B s i n ( θ + Δ ϕ n ) = I A + I B s i n ( θ ) c o s ( Δ ϕ n ) + I B c o s ( θ ) s i n ( Δ ϕ n )   \ I_n = I_A + I_Bsin(\theta + \Delta \phi_n) = I_A + I_Bsin(\theta)cos(\Delta \phi_n) + I_Bcos(\theta)sin(\Delta \phi_n) \,  In=IA+IBsin(θ+Δϕn)=IA+IBsin(θ)cos(Δϕn)+IBcos(θ)sin(Δϕn)
{ a 0 = I A a 1 = I B s i n θ a 2 = I B c o s θ \left\{ \begin{array}{c} a_0 = I_A \\ a_1 = I_Bsin{\theta} \\ a_2 = I_Bcos{\theta} \end{array} \right. a0=IAa1=IBsinθa2=IBcosθ
那么最后结论包裹相位公式是:   θ = a t a n a 1 a 2 = a t a n [ ∑ n = 1 N I n c o s ( Δ ϕ n ) ∑ n = 1 N I n s i n ( Δ ϕ n ) ]   \ \theta = atan \frac{a_1}{a_2} = atan[\frac{\sum_{n=1}^N I_n cos(\Delta \phi_n)}{\sum_{n=1}^N I_n sin(\Delta \phi_n)}] \,  θ=atana2a1=atan[n=1NInsin(Δϕn)n=1NIncos(Δϕn)]
与余弦N步相移条纹解包裹公式不同的是分子分母反了,而且负号也没了;所以还是要特别注意一下使用的是正弦条纹还是余弦条纹。

上述解包裹过程中求反正切中符号位置加错,XY上下搞反,包裹相位会是怎么样呢?

如图是atan2(Y, X)基于X,Y的值返回值:
atan2(Y, X)基于X,Y的值返回值
原正切角幅度范围是[0 2pi];
如果X,Y的符号正确,atan2(Y, X)的返回值是[0 pi -pi 0]; 那么atan2(-Y, X)的返回值是[0 -pi pi 0];
那么atan2(Y, -X)的返回值是[ pi 0 -pi ]; 那么atan2(-Y, -X)的返回值是[-pi 0 pi];
结论:atan2(Y, X) = -atan2(-Y, X);atan2(-Y, -X) = -atan2(Y, -X);
atan2(Y, X) 与 atan2(-Y, -X) ,atan2(-Y, X) 与 atan2(Y, -X)的关系就是像素位置变换±半个周期长度;

注:图中atan2(Y, X)和atan2(-Y, X)的返回值pi与-pi不重合是因为采样率的关系,把采样频率调高效果就会好很多。
反正切atan2(Y,X)XY不同正负号不同结果
反正切atan2(Y,X)XY位置不同时的不同结果:
反正切atan2(Y,X)XY位置不同时的不同结果

解包裹过程中公式初始相位与理想条纹给定的初始相位不一致时情况

投影条纹   I n = I A + I B c o s ( θ + 2 n π N ) , n = 0 , 1 , 2... N − 1   \ I_n = I_A + I_Bcos(\theta + \frac{2n\pi}N) , n = 0,1,2...N-1\,  In=IA+IBcos(θ+N2),n=0,1,2...N1 ;
如果相位解码时,给定的初始相位不一致,计算时差别   2 π N   \ \frac{2\pi}N\,  N2π那么最终相位会是啥样呢?
  θ = − a t a n [ ∑ n = 0 N − 1 I n s i n ( Δ ϕ n ± 2 π N ) ∑ n = 0 N − 1 I n c o s ( Δ ϕ n ± 2 π N ) ] = − a t a n [ ∑ n = 0 N − 1 I n s i n ( Δ ϕ n ) c o s ( 2 π N ) ± ∑ n = 0 N − 1 I n c o s ( Δ ϕ n ) s i n ( 2 π N ) ∑ n = 0 N − 1 I n c o s ( Δ ϕ n ) c o s ( 2 π N ) ∓ ∑ n = 0 N − 1 I n s i n ( Δ ϕ n ) s i n ( 2 π N ) ]   \ \theta = -atan[\frac{\sum_{n=0}^{N-1} I_n sin(\Delta \phi_n \pm \frac{2\pi}N)}{\sum_{n=0}^{N-1} I_n cos(\Delta \phi_n \pm \frac{2\pi}N)}]=-atan[\frac{\sum_{n=0}^{N-1} I_n sin(\Delta \phi_n)cos(\frac{2\pi}N) \pm \sum_{n=0}^{N-1} I_n cos(\Delta \phi_n)sin(\frac{2\pi}N)}{\sum_{n=0}^{N-1} I_n cos(\Delta \phi_n)cos(\frac{2\pi}N) \mp \sum_{n=0}^{N-1} I_n sin(\Delta \phi_n)sin(\frac{2\pi}N)}] \,  θ=atan[n=0N1Incos(Δϕn±N2π)n=0N1Insin(Δϕn±N2π)]=atan[n=0N1Incos(Δϕn)cos(N2π)n=0N1Insin(Δϕn)sin(N2π)n=0N1Insin(Δϕn)cos(N2π)±n=0N1Incos(Δϕn)sin(N2π)]
  = − a t a n [ ∑ n = 0 N − 1 I n s i n ( Δ ϕ n ) ± ∑ n = 0 N − 1 I n c o s ( Δ ϕ n ) t a n ( 2 π N ) ∑ n = 0 N − 1 I n c o s ( Δ ϕ n ) ∓ ∑ n = 0 N − 1 I n s i n ( Δ ϕ n ) t a n ( 2 π N ) ] = − a t a n [ ∑ n = 0 N − 1 I n c o s ( Δ ϕ n ) ∑ n = 0 N − 1 I n s i n ( Δ ϕ n ) ± t a n ( 2 π N ) 1 ∓ ∑ n = 0 N − 1 I n c o s ( Δ ϕ n ) ∑ n = 0 N − 1 I n s i n ( Δ ϕ n ) t a n ( 2 π N ) ]   \ =-atan[\frac{\sum_{n=0}^{N-1} I_n sin(\Delta \phi_n) \pm \sum_{n=0}^{N-1} I_n cos(\Delta \phi_n)tan(\frac{2\pi}N)}{\sum_{n=0}^{N-1} I_n cos(\Delta \phi_n) \mp \sum_{n=0}^{N-1} I_n sin(\Delta \phi_n)tan(\frac{2\pi}N)}] =-atan[\frac{\frac{\sum_{n=0}^{N-1} I_n cos(\Delta \phi_n)}{\sum_{n=0}^{N-1} I_n sin(\Delta \phi_n)}\pm tan(\frac{2\pi}N)}{1\mp \frac{\sum_{n=0}^{N-1} I_n cos(\Delta \phi_n)}{\sum_{n=0}^{N-1} I_n sin(\Delta \phi_n)} tan(\frac{2\pi}N)}]\,  =atan[n=0N1Incos(Δϕn)n=0N1Insin(Δϕn)tan(N2π)n=0N1Insin(Δϕn)±n=0N1Incos(Δϕn)tan(N2π)]=atan[1n=0N1Insin(Δϕn)n=0N1Incos(Δϕn)tan(N2π)n=0N1Insin(Δϕn)n=0N1Incos(Δϕn)±tan(N2π)]
那么根据反正切的和差公式,整个相位是向左向右(±)平移了2pi/N

  • 7
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值