相机小孔成像模型与透视变换
0 背景
本文用于记录小孔相机成像的数学模型推导,并讨论特定条件下两个相机之间看到图像的变换关系。
1 小孔成像模型
小孔成像模型如上图所示。物理世界发光点P,经过小孔O投影到物理成像平面,形成像点I’。
简易起见,构造虚拟成像平面,虚拟成像平面与物理成像平面关于O原点对称。
像点I’在虚拟成像平面对应的点为I。
为虚拟像平面建立坐标系u-v。
相机坐标系z轴垂直指向虚拟相平面,x轴与u轴同向,y轴与v轴同向。
P与I之间满足关系
O
I
⃗
=
λ
⋅
O
P
⃗
\vec{OI} = \lambda \cdot \vec{OP}
OI=λ⋅OP。再设I的x,y坐标与u,v坐标满足关系:
[
I
x
I
y
I
z
]
=
[
s
u
0
δ
u
0
s
v
δ
v
0
0
I
z
]
⋅
[
I
u
I
v
1
]
\begin{bmatrix} I_{x} \\ I_{y} \\ I_{z} \end{bmatrix} = \begin{bmatrix} s_{u} & 0 & \delta u \\ 0 & s_{v} & \delta v \\ 0 & 0 & I_{z} \end{bmatrix} \cdot \begin{bmatrix} I_{u} \\ I_{v} \\ 1 \end{bmatrix}
IxIyIz
=
su000sv0δuδvIz
⋅
IuIv1
用I点像坐标表示
O
I
⃗
\vec{OI}
OI,带入
O
I
⃗
=
λ
⋅
O
P
⃗
\vec{OI} = \lambda \cdot \vec{OP}
OI=λ⋅OP,基于第三维求得
λ
\lambda
λ,等式两边同时除以常量
I
z
I_{z}
Iz,得到小孔成像模型的数学表达。
[
f
u
0
b
u
0
f
v
b
v
0
0
1
]
⋅
[
I
u
I
v
1
]
=
1
I
z
⋅
[
I
x
I
y
I
z
]
=
1
P
z
⋅
[
P
x
P
y
P
z
]
\begin{bmatrix} f_{u} & 0 & b_{u} \\ 0 & f_{v} & b_{v} \\ 0 & 0 & 1 \end{bmatrix} \cdot \begin{bmatrix} I_{u} \\ I_{v} \\ 1 \end{bmatrix} = \frac{1}{I_{z}} \cdot \begin{bmatrix} I_{x} \\ I_{y} \\ I_{z} \end{bmatrix} = \frac{1}{P_{z}} \cdot \begin{bmatrix} P_{x} \\ P_{y} \\ P_{z} \end{bmatrix}
fu000fv0bubv1
⋅
IuIv1
=Iz1⋅
IxIyIz
=Pz1⋅
PxPyPz
简记为下式。其中
M
M
M 为包含
f
u
,
b
u
,
f
v
,
b
v
f_{u}, b_{u}, f_{v}, b_{v}
fu,bu,fv,bv 的
3
×
3
3 \times 3
3×3 矩阵。
I
⃗
\vec{I}
I 为点
I
I
I 在虚拟成像平面上的齐次坐标向量。
M
⋅
I
⃗
=
P
⃗
/
P
z
M \cdot \vec{I} = \vec{P} / P_{z}
M⋅I=P/Pz
再引入世界坐标系与相机坐标系的相对关系,设相机坐标系在世界坐标系下的旋转矩阵与平移向量为
R
R
R,
T
T
T,则小孔成像模型变形为
M
⋅
I
⃗
=
(
R
⋅
P
⃗
+
T
)
/
P
z
c
M \cdot \vec{I} = (R \cdot \vec{P} + T) / P^{c}_{z}
M⋅I=(R⋅P+T)/Pzc
其中,
P
z
c
P^{c}_{z}
Pzc 仍为
P
P
P点在相机坐标系下在z轴分量。
相应的,当已知像点坐标,对应物点坐标满足方程
P
⃗
=
P
z
c
⋅
R
T
M
I
⃗
−
R
T
T
,
P
z
c
>
0
\vec{P} = P^{c}_{z} \cdot R^{T} M \vec{I} - R^{T}T, P^{c}_{z} > 0
P=Pzc⋅RTMI−RTT,Pzc>0
可见,已知像点坐标,可行物点坐标构成了以相机坐标系原点为起始点,与
O
I
⃗
\vec{OI}
OI同向的射线。
2 物点在已知平面条件下的像点物点关系讨论
当已知物点在特定平面下,不是一般性地,假设物点在世界坐标系XOY平面中,即物点Z分量为0。此时,特化的小孔成像模型写为
M
⋅
I
⃗
=
1
P
z
c
⋅
[
r
1
r
2
T
]
⋅
[
X
Y
1
]
=
1
P
z
c
⋅
G
⋅
[
X
Y
1
]
M \cdot \vec{I} = \frac{1}{P^{c}_{z}} \cdot \begin{bmatrix} r_{1} & r_{2} & T \end{bmatrix} \cdot \begin{bmatrix} X \\ Y \\ 1 \end{bmatrix} = \frac{1}{P^{c}_{z}} \cdot G \cdot \begin{bmatrix} X \\ Y \\ 1 \end{bmatrix}
M⋅I=Pzc1⋅[r1r2T]⋅
XY1
=Pzc1⋅G⋅
XY1
其中,
r
1
r_{1}
r1与
r
2
r_{2}
r2分别为矩阵
R
R
R的第1,2列。此时根据像点坐标求解物点坐标方法为
[
X
Y
1
]
=
P
z
c
⋅
G
−
1
M
I
⃗
\begin{bmatrix} X \\ Y \\ 1 \end{bmatrix} = P^{c}_{z} \cdot G^{-1} M \vec{I}
XY1
=Pzc⋅G−1MI
这种特殊条件下,如果考虑两个相机模型,对同一物点P,两个像点坐标之间存在关系
[
I
u
2
I
v
2
1
]
=
P
z
c
1
P
z
c
2
⋅
M
2
−
1
G
2
G
1
−
1
M
1
⋅
[
I
u
1
I
v
1
1
]
\begin{bmatrix} I^{2}_{u} \\ I^{2}_{v} \\ 1 \end{bmatrix} = \frac{P^{c1}_{z}}{P^{c2}_{z}} \cdot M^{-1}_{2} G_{2} G^{-1}_{1} M_{1} \cdot \begin{bmatrix} I^{1}_{u} \\ I^{1}_{v} \\ 1 \end{bmatrix}
Iu2Iv21
=Pzc2Pzc1⋅M2−1G2G1−1M1⋅
Iu1Iv11
简记为
[
I
u
2
I
v
2
1
]
=
P
z
c
1
P
z
c
2
⋅
H
⋅
[
I
u
1
I
v
1
1
]
\begin{bmatrix} I^{2}_{u} \\ I^{2}_{v} \\ 1 \end{bmatrix} = \frac{P^{c1}_{z}}{P^{c2}_{z}} \cdot H \cdot \begin{bmatrix} I^{1}_{u} \\ I^{1}_{v} \\ 1 \end{bmatrix}
Iu2Iv21
=Pzc2Pzc1⋅H⋅
Iu1Iv11
考虑第三维分量,可以求得系数项
P
z
c
1
/
P
z
c
2
P^{c1}_{z}/P^{c2}_{z}
Pzc1/Pzc2,整理为以下公式
[
t
1
t
2
t
3
]
=
H
⋅
[
I
u
1
I
v
1
1
]
[
I
u
2
I
v
2
1
]
=
1
t
3
⋅
[
t
1
t
2
t
3
]
\begin{bmatrix} t_{1} \\ t_{2} \\ t_{3} \end{bmatrix} = H \cdot \begin{bmatrix} I^{1}_{u} \\ I^{1}_{v} \\ 1 \end{bmatrix} \\ \begin{bmatrix} I^{2}_{u} \\ I^{2}_{v} \\ 1 \end{bmatrix} = \frac{1}{t_{3}} \cdot \begin{bmatrix} t_{1} \\ t_{2} \\ t_{3} \end{bmatrix}
t1t2t3
=H⋅
Iu1Iv11
Iu2Iv21
=t31⋅
t1t2t3
综上所述,当已知物点P在世界坐标系XOY平面上时,两个相机下物点P的像点坐标之间满足透视变换关系,这个关系由透视变换矩阵
H
H
H唯一确定。
3 H H H矩阵的标定
本节讨论2描述的特殊条件下,
H
H
H矩阵的求解问题。将
H
H
H写作
H
=
[
h
11
h
12
h
13
h
21
h
22
h
23
h
31
h
32
h
33
]
H = \begin{bmatrix} h_{11} & h_{12} & h_{13} \\ h_{21} & h_{22} & h_{23} \\ h_{31} & h_{32} & h_{33} \end{bmatrix}
H=
h11h21h31h12h22h32h13h23h33
给定一组
{
(
I
u
1
,
I
v
1
)
,
(
I
u
2
,
I
v
2
)
}
\{(I^{1}_{u}, I^{1}_{v}),(I^{2}_{u},I^{2}_{v})\}
{(Iu1,Iv1),(Iu2,Iv2)}坐标对,则对任一对坐标对,求解的
H
H
H应满足约束
[
I
u
2
I
v
2
1
]
=
1
h
31
I
u
1
+
h
32
I
v
1
+
h
33
⋅
H
⋅
[
I
u
1
I
v
1
1
]
\begin{bmatrix} I^{2}_{u} \\ I^{2}_{v} \\ 1 \end{bmatrix} = \frac{1}{h_{31}I^{1}_{u}+h_{32}I^{1}_{v}+h_{33}} \cdot H \cdot \begin{bmatrix} I^{1}_{u} \\ I^{1}_{v} \\ 1 \end{bmatrix}
Iu2Iv21
=h31Iu1+h32Iv1+h331⋅H⋅
Iu1Iv11
设
H
0
H_{0}
H0满足上述约束,容易验证,任意
H
=
s
⋅
H
0
,
s
≠
0
H = s \cdot H_{0}, s \neq 0
H=s⋅H0,s=0均满足上述约束。
即满足约束的
H
H
H有无穷多个,它们之间只差一个缩放系数。而我们只需要求解一个即可。
简单起见,取
h
33
=
1
h_{33}=1
h33=1。则对于一个点对,我们有方程
[
I
u
1
I
v
1
1
0
0
0
−
I
u
2
I
u
1
−
I
u
2
I
v
1
−
I
u
2
0
0
0
I
u
1
I
v
1
1
−
I
v
2
I
u
1
−
I
v
2
I
v
1
−
I
u
v
]
⋅
[
h
11
h
12
h
13
h
21
h
22
h
23
h
31
h
32
1
]
=
0
⃗
\begin{bmatrix} I^{1}_{u} & I^{1}_{v} & 1 & 0 & 0 & 0 & -I^{2}_{u}I^{1}_{u} & -I^{2}_{u}I^{1}_{v} & -I^{2}_{u} \\ 0 & 0 & 0 & I^{1}_{u} & I^{1}_{v} & 1 & -I^{2}_{v}I^{1}_{u} & -I^{2}_{v}I^{1}_{v} & -I^{v}_{u} \end{bmatrix} \cdot \begin{bmatrix} h_{11} \\ h_{12} \\ h_{13} \\ h_{21} \\ h_{22} \\ h_{23} \\ h_{31} \\ h_{32} \\ 1 \\ \end{bmatrix} = \vec{0}
[Iu10Iv10100Iu10Iv101−Iu2Iu1−Iv2Iu1−Iu2Iv1−Iv2Iv1−Iu2−Iuv]⋅
h11h12h13h21h22h23h31h321
=0
可见一个点对提供了关于
H
H
H元素的两个线性方程。
最少4个点对,即可求解得到
H
H
H。