有限摄像机模型
摄像机是将三维世界中的点映射到二维世界的一种传感器,在齐次坐标坐标下,它可以表示为矩阵形式:秩为3的3x4矩阵。
本篇先从最简单的针孔摄像机模型开始,逐步将该模型一般化,得到带有一定约束的摄像机矩阵(左边3x3的子矩阵非奇异)-- 有限摄像机模型。
在下一篇则是将这个非奇异约束去除,得到更一般的摄像机矩阵 – 一般射影摄像机模型。
三个基本坐标系
摄像机模型可以理解为在三个基本坐标系之间的变换,所以先介绍三个基本坐标系。
-
世界坐标系
物体在真实世界中的坐标,可以自己选择位置。 -
相机坐标系
以相机光心为原点的坐标系。 -
图像坐标系
图像平面所在的坐标系。
基本针孔模型
考虑空间点到平面的投影,投影中心位于原点,图像平面为
Z
=
f
Z=f
Z=f,即中心投影模型,如下图所示:
那么根据相似三角形可以很快算出,点
(
X
,
Y
,
Z
)
T
(X,Y,Z)^T
(X,Y,Z)T被投影到
(
f
X
/
Z
,
f
X
/
Y
)
T
(fX/Z,fX/Y)^T
(fX/Z,fX/Y)T。
在这个投影模型下,投影中心称为光心,光心到图像平面的垂线称为主轴,交图像平面于主点,过相机中心且平行于图像平面的称为摄像机的主平面。其他的更复杂的模型延续这几个基本概念的定义。
上述投影在数学上用齐次坐标坐标表示如下:
[
f
X
f
Y
Z
]
=
d
i
a
g
(
f
,
f
,
1
)
[
I
∣
0
]
[
X
Y
Z
1
]
\left[ \begin{matrix} fX \\ fY \\ Z \end{matrix} \right]= diag(f,f,1)\left[ I|0 \right] \left[ \begin{matrix} X \\ Y\\ Z \\ 1 \end{matrix} \right]
⎣⎡fXfYZ⎦⎤=diag(f,f,1)[I∣0]⎣⎢⎢⎡XYZ1⎦⎥⎥⎤
现在,我们将投影过程写为:
x
=
P
X
x=PX
x=PX,其中P为3x4的摄像机矩阵,则以上中心投影模型的摄像机矩阵为:
P
=
d
i
a
g
(
f
,
f
,
1
)
[
I
∣
0
]
P = diag(f,f,1)\left[I|0 \right]
P=diag(f,f,1)[I∣0]。
加入主点偏置
事实上,主点可能不在图像平面的原点,而是在
(
p
x
,
p
y
)
(p_x,p_y)
(px,py)处,此时投影如下:
(
X
,
Y
,
Z
)
T
→
(
f
X
/
Z
+
p
x
,
f
X
/
Y
+
p
y
)
T
(X,Y,Z)^T \to (fX/Z+p_x,fX/Y+p_y)^T
(X,Y,Z)T→(fX/Z+px,fX/Y+py)T
若记
K
=
[
f
0
p
x
0
f
p
y
0
0
1
]
K= \left[ \begin{matrix} f & 0 & p_x \\ 0 & f & p_y\\ 0 & 0 & 1 \end{matrix} \right]
K=⎣⎡f000f0pxpy1⎦⎤
则此时的摄像机矩阵可以写为:
x
=
K
[
I
∣
0
]
X
x = K \left[ I|0 \right] X
x=K[I∣0]X
矩阵K称为摄像机标定矩阵,此时默认摄像机坐标系与世界坐标系重合。
加入摄像机的旋转和平移
因为在上述简化模型中,投影的过程是将摄像机坐标系下的点投影到图像坐标系的过程,而当点是由世界坐标系坐标表示时,就需要先将其转化到摄像机坐标系下,这个过程是坐标系之间的变换,由旋转和平移矩阵连接。
X
c
a
m
=
[
R
−
R
C
^
0
T
1
]
[
X
Y
Z
1
]
X_{cam} = \left[ \begin{matrix} R & -R \hat{C} \\ 0^T & 1 \end{matrix} \right] \left[ \begin{matrix} X \\ Y \\ Z \\ 1 \end{matrix} \right]
Xcam=[R0T−RC^1]⎣⎢⎢⎡XYZ1⎦⎥⎥⎤
其中
C
^
\hat{C}
C^是相机中心在世界坐标系下的坐标,R是一个表示世界坐标系中,摄像机坐标系方向的旋转矩阵。
与投影模型结合后,一种简洁的形式写作:
x
=
K
R
[
I
∣
C
^
]
X
x = KR\left[I| \hat{C} \right]X
x=KR[I∣C^]X,这是针孔模型下的一般映射,K称为内参矩阵,有三个自由度:焦距与主点坐标(x,y),而R,
C
^
\hat{C}
C^是与摄像机位置相关的参数,称为摄像机外参。
方便起见,通常不显式写出摄像机中心的位置,而是用平移矩阵代替,是世界坐标的点到相机坐标系下的点:
X
c
a
m
=
R
X
+
t
X_{cam} = R X + t
Xcam=RX+t,此时摄像机矩阵写为:
P
=
K
[
R
∣
t
]
P = K\left[ R | t \right]
P=K[R∣t]。
推广到CCD摄像机
CCD相机与上述模型的区别在于其像素单元可能不是正方形的,也就是说,它在x方向和y方向的焦距是不同的,我们考虑其内参矩阵:
K
=
[
f
x
s
p
x
0
f
y
p
y
0
0
1
]
K = \left[ \begin{matrix} f_x & s & p_x \\ 0 & f_y & p_y \\ 0 & 0 & 1 \end{matrix} \right]
K=⎣⎡fx00sfy0pxpy1⎦⎤
其中,s是扭曲参数,大多数情况下取0,有时有特殊作用。
至此,我们得到了本篇讨论的摄像机矩阵的最终形态:
P
=
K
[
R
∣
t
]
P = K\left[ R | t \right]
P=K[R∣t]。
注意到,此时对于P的唯一约束是其左边3x3的矩阵是非奇异的,有限射影摄像机的摄像机矩阵的集合等于左边3x3的子矩阵为非奇异的3x4齐次矩阵构成的集合。