下述推导过程在 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(N2nπ),该式乘
s
i
n
(
n
π
N
)
\ {sin( \frac{n\pi} N)}\,
sin(Nnπ)
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(Nnπ)∑n=1Ncos(N2nπ)=21[sin(N3π)−sin(Nπ)+sin(N5π)−sin(N3π)…+sin(N(2N−1)π)−sin(N(2N−3)π)+sin(N(2N+1)π)−sin(N(2N−1)π)]=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的值返回值:
原正切角幅度范围是[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位置不同时的不同结果:
解包裹过程中公式初始相位与理想条纹给定的初始相位不一致时情况
投影条纹
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(θ+N2nπ),n=0,1,2...N−1 ;
如果相位解码时,给定的初始相位不一致,计算时差别
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=0N−1Incos(Δϕn±N2π)∑n=0N−1Insin(Δϕn±N2π)]=−atan[∑n=0N−1Incos(Δϕn)cos(N2π)∓∑n=0N−1Insin(Δϕn)sin(N2π)∑n=0N−1Insin(Δϕn)cos(N2π)±∑n=0N−1Incos(Δϕ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=0N−1Incos(Δϕn)∓∑n=0N−1Insin(Δϕn)tan(N2π)∑n=0N−1Insin(Δϕn)±∑n=0N−1Incos(Δϕn)tan(N2π)]=−atan[1∓∑n=0N−1Insin(Δϕn)∑n=0N−1Incos(Δϕn)tan(N2π)∑n=0N−1Insin(Δϕn)∑n=0N−1Incos(Δϕn)±tan(N2π)]
那么根据反正切的和差公式,整个相位是向左向右(±)平移了2pi/N。