温故而知新,可以为师矣!
一、参考资料
《计算机视觉中的多视图几何-第五章》-Richard Hartley, Andrew Zisserman.
二、针孔模型相关介绍
1. 重要概念
1.1 投影中心/摄像机中心/光心
投影中心称为摄像机中心,也称为光心。投影中心位于一个欧式坐标系的原点。
1.2 图像平面/聚焦平面
平面 Z = f Z=f Z=f 被称为图像平面或聚焦平面。
1.3 主轴/主射线
摄像机中心到图像平面的垂线称为摄像机的主轴或主射线。
1.4 主点
主轴与图像平面的交点称为主点。
1.5 主平面(摄像机)
过摄像机中心平行于图像平面的平面称为摄像机的主平面。
1.6 图像坐标系与摄像机坐标系
如上图所示,图像坐标系 ( x , y ) T (x,y)^T (x,y)T 和摄像机坐标系 ( x c a m , y c a m ) T (x_{cam},y_{cam})^T (xcam,ycam)T。
2. 基本针孔模型
在针孔摄像机模型下,3维空间坐标为
X
=
(
X
,
Y
,
Z
)
T
X=(X, Y, Z)^T
X=(X,Y,Z)T 的点
X
X
X 被投影到图像平面上的一点,该点是连接点
X
X
X 与投影中心的直线与图像平面的交点。根据相似三角形,可以很快地算出点
(
X
,
Y
,
Z
)
T
(X, Y , Z)^T
(X,Y,Z)T 被映射到图像平面上点
(
f
X
/
Z
,
f
Y
/
Z
,
f
)
T
(fX/Z, fY/Z, f)^T
(fX/Z,fY/Z,f)T 。略去最后一个图像坐标之后,从世界坐标到图像坐标的中心投影是:
(
X
,
Y
,
Z
)
T
↦
(
f
X
/
Z
,
f
Y
/
Z
)
T
(
1
)
(X,Y,Z)^{T}\mapsto(fX/Z,fY/Z)^{T}\quad(1)
(X,Y,Z)T↦(fX/Z,fY/Z)T(1)
这是从3维欧式空间
IR
3
\text{IR}^3
IR3 到 2维欧式空间
IR
2
\text{IR}^2
IR2 的一个映射。
3. 投影矩阵
齐次坐标的概念:齐次坐标就是用N+1维去描述一个N维的坐标。
如果用齐次矢量表示世界和图像点,那么中心投影可以简单地表示成齐次坐标之间的线性映射。具体地说,
公式
(
1
)
公式(1)
公式(1) 可以写成如下矩阵乘积形式:
[
X
Y
Z
1
]
↦
[
f
x
f
y
z
]
=
[
f
0
f
0
1
0
]
[
X
Y
Z
1
]
(
2
)
\left.\left[\begin{array}{c}\mathbf{X}\\\mathbf{Y}\\\mathbf{Z}\\\mathbf{1}\end{array}\right.\right]\mapsto\left[\begin{array}{c}f\mathbf{x}\\f\mathbf{y}\\\mathbf{z}\end{array}\right]=\left[\begin{array}{cc}f&&&0\\&f&&0\\&&1&0\end{array}\right]\left[\begin{array}{c}\mathbf{X}\\\mathbf{Y}\\\mathbf{Z}\\\mathbf{1}\end{array}\right]\quad(2)
XYZ1
↦
fxfyz
=
ff1000
XYZ1
(2)
其中
[
f
0
f
0
1
0
]
\left[\begin{array}{cc}f&&&0\\&f&&0\\&&1&0\end{array}\right]
ff1000
表示
3
∗
4
3*4
3∗4 齐次摄像机投影矩阵,记作
P
P
P。
P
P
P 可以写成
d
i
a
g
(
f
,
f
,
1
)
[
I
∣
0
]
diag(f,f,1)[I|0]
diag(f,f,1)[I∣0],其中
d
i
a
g
(
f
,
f
,
1
)
diag(f,f,1)
diag(f,f,1)是对角矩阵,而
[
I
∣
0
]
[I|0]
[I∣0]表示矩阵分块成一个
3
∗
3
3*3
3∗3 恒等矩阵加上一个零列矢量。那么,中心投影的针孔模型的摄像机投影矩阵可以表示为:
P
=
d
i
a
g
(
f
,
f
,
1
)
[
I
∣
0
]
P=diag(f,f,1)[I|0]
P=diag(f,f,1)[I∣0]
恒等矩阵的概念:恒等矩阵,又称为单位矩阵,是一个方阵,其对角线上的元素为1,其余元素均为0,记作 I I I或者 E E E。恒等矩阵的大小由其维度决定,例如3阶恒等矩阵是一个3x3的矩阵。
恒等矩阵在线性代数中具有很多重要的性质。例如,对于任意矩阵A,恒等矩阵1与A的乘积等于A本身。这是因为恒等矩阵的每个元素与A的对应元素相乘,并将其相加,得到的结果就是A本身。这个性质在矩阵的转置、逆运算等方面都有着重要的应用。
恒等矩阵在深度学习中也具有重要的作用。在神经网络中,恒等矩阵常被用作初始化权重矩阵。初始化权重矩阵时,将其设置为恒等矩阵可以使得神经网络的初始状态更稳定。这是因为恒等矩阵具有一定的对称性和平衡性,可以避免梯度消失或梯度爆炸等问题,有助于提高模型的训练效果。
恒等矩阵还可以用于矩阵的相似性度量。在图像处理和模式识别中,我们经常需要比较两个矩阵的相似性。通过计算两个矩阵之间的差异,可以得到它们的相似性度量。而恒等矩阵作为一个特殊的矩阵,与其他矩阵相比具有明显的差异,可以用于度量矩阵之间的相似性。
我们现在引入如下记号:世界点
X
X
X 用4维齐次矢量
(
X
,
Y
,
Z
,
1
)
(X,Y,Z,1)
(X,Y,Z,1)表示;图像点
x
x
x 被表示成3维齐次矢量的形式。则
公式
(
2
)
公式(2)
公式(2) 可以紧凑地写为:
x
=
P
X
x=PX
x=PX
4. 主点偏置
公式
(
1
)
公式(1)
公式(1) 假定图像平面的坐标原点在主点上,因此一般情形的映射为:
(
X
,
Y
,
Z
)
T
↦
(
f
X
/
Z
+
p
x
,
f
Y
/
Z
+
p
y
)
T
(X,Y,Z)^{T}\mapsto(fX/Z+p_x,fY/Z+p_y)^{T} \\
(X,Y,Z)T↦(fX/Z+px,fY/Z+py)T
其中
(
p
x
,
p
y
)
T
(p_x,p_y)^T
(px,py)T 是主点的坐标。该方程用齐次坐标可以表示为:
[
X
Y
Z
1
]
↦
[
f
x
+
Z
p
x
f
y
+
Z
p
y
z
]
=
[
f
p
x
0
f
p
x
0
1
0
]
[
X
Y
Z
1
]
(
3
)
\left.\left[\begin{array}{c}\mathbf{X}\\\mathbf{Y}\\\mathbf{Z}\\\mathbf{1}\end{array}\right.\right]\mapsto\left[\begin{array}{c}f\mathbf{x+Zp_x}\\f\mathbf{y+Zp_y}\\\mathbf{z}\end{array}\right]=\left[\begin{array}{cc}f&&p_x&0\\&f&p_x&0\\&&1&0\end{array}\right]\left[\begin{array}{c}\mathbf{X}\\\mathbf{Y}\\\mathbf{Z}\\\mathbf{1}\end{array}\right]\quad(3)
XYZ1
↦
fx+Zpxfy+Zpyz
=
ffpxpx1000
XYZ1
(3)
若记
K
=
[
f
p
x
f
p
x
1
]
(
4
)
K=\left[\begin{array}{cc}f&&p_x\\&f&p_x\\&&1\end{array}\right]\quad(4)
K=
ffpxpx1
(4)
则
公式
(
3
)
公式(3)
公式(3) 有一个简洁的形式:
x
=
K
[
I
∣
0
]
X
c
a
m
(
5
)
x=K[I|0]X_{cam}\quad(5)
x=K[I∣0]Xcam(5)
矩阵
K
K
K 称为摄像机标定矩阵,在
公式
(
5
)
公式(5)
公式(5) 中我们记
(
X
,
Y
,
Z
,
1
)
T
(X,Y,Z,1)^T
(X,Y,Z,1)T 为
X
c
a
m
X_{cam}
Xcam 是为了强调摄像机被设定在一个欧式坐标系的原点且主轴沿着
z
z
z 轴的指向,而点
X
c
a
m
X_{cam}
Xcam 按此坐标系表示。这样的坐标系可以称为摄像机坐标系。
摄像机坐标系的原点为主点, z z z轴方向指向主轴。
5. 摄像机旋转与位移
一般,3维空间点采用不同的欧式坐标系表示,称为世界坐标系。摄像机坐标系与世界坐标系通过旋转和平移相联系。
如果
X
~
\widetilde{X}
X
是一个3维非齐次矢量,表示世界坐标系中一点的坐标,而
X
~
c
a
m
\widetilde{X}_{cam}
X
cam 是以摄像机坐标系来表示的同一点,那么我们可以记
X
~
c
a
m
=
R
(
X
~
−
C
~
)
\widetilde{X}_{cam}=R\left(\widetilde{X}-\widetilde{C}\right)
X
cam=R(X
−C
) ,其中
C
~
\widetilde{C}
C
表示摄像机中心在世界坐标系中的坐标,
R
R
R 是一个
3
∗
3
3*3
3∗3 的旋转矩阵,表示摄像机坐标系的方位。这个方程在齐次坐标系下可以写成:
X
c
a
m
=
[
R
−
R
C
~
0
T
1
]
[
X
Y
Z
1
]
=
[
R
−
R
C
~
0
T
1
]
X
(
6
)
X_{cam}=\begin{bmatrix}R&-R\widetilde{C}\\0^{T}&1\end{bmatrix}\begin{bmatrix}X\\Y\\Z\\1\end{bmatrix}=\begin{bmatrix}R&-R\widetilde{C}\\0^{T}&1\end{bmatrix}\mathbf{X}\quad(6)
Xcam=[R0T−RC
1]
XYZ1
=[R0T−RC
1]X(6)
把它与
公式
(
5
)
公式(5)
公式(5) 结合起来形成公式:
x
=
K
R
[
I
∣
−
C
~
]
X
(
7
)
x=KR\left[I|-\widetilde{C}\right]X\quad(7)
x=KR[I∣−C
]X(7)
其中
X
X
X 用世界坐标系表示。这是由一个针孔模型给出的一般映射。
6. 摄像机内部参数与外部参数
由 公式 ( 7 ) 公式(7) 公式(7) 可以看出,一般的针孔摄像机 P = K R [ I ∣ − C ~ ] P=KR\left[I|-\widetilde{C}\right] P=KR[I∣−C ] 有9个自由度:3个来自 K (元素 f , p x , p y ) K(元素 f,p_x, p_y) K(元素f,px,py),3个来自 R R R,3个来自 C ~ \widetilde{C} C 。包含在 K K K 中的参数称为摄像机内部参数或摄像机的内部校准。包含在 R R R 和 C ~ \widetilde{C} C 中的参数与摄像机在世界坐标系中的方位和位置有关,并称为外部参数或外部校准。
为方便起见,通常摄像机中心不明显标出,而把世界坐标系到图像坐标系的变换表示成
X
~
c
a
m
=
R
X
~
+
t
\widetilde{X}_{cam}=R\widetilde{X}+t
X
cam=RX
+t。在次情形时摄像机矩阵简化成:
P
=
k
[
R
∣
t
]
(
8
)
P=k[R|t]\quad(8)
P=k[R∣t](8)
其中根据
公式
(
7
)
公式(7)
公式(7) ,
t
=
−
R
C
~
t=-R\widetilde{C}
t=−RC
。
7. CCD摄像机
对于基本针孔模型,假定图像坐标在两个轴向上有等尺度的欧式坐标。但CCD摄像机的像素可能不是正方形。如果图像坐标以像素来测量,那么需要在每个方向上引入非等量尺度因子。具体地说,如果在
x
x
x 和
y
y
y 方向上图像坐标单位距离的像素数分别是
m
x
m_x
mx 和
m
y
m_y
my,那么由世界坐标到像素坐标的变换由
公式
(
4
)
公式(4)
公式(4) 左乘一个附加的因子
d
i
a
g
(
m
x
,
m
y
,
1
)
diag(m_x,m_y,1)
diag(mx,my,1) 而得到。因此一个CCD摄像机标定矩阵的一般形式是:
K
=
[
a
x
x
0
a
y
y
0
1
]
(
9
)
K=\left[\begin{array}{cc}a_x&&x_0\\&a_y&y_0\\&&1\end{array}\right]\quad(9)
K=
axayx0y01
(9)
其中
a
x
=
f
m
x
a_x=fm_x
ax=fmx 和
a
y
=
f
m
y
a_y=fm_y
ay=fmy 分别把摄像机的焦距换算成
x
x
x 和
y
y
y 方向的像素量纲。同理,
x
~
0
=
(
x
0
,
y
0
)
T
\widetilde{x}_0=(x_0,y_0)^T
x
0=(x0,y0)T 是用像素量纲表示的主点,它的坐标是
x
0
=
m
x
p
x
x_0=m_xp_x
x0=mxpx 和
y
0
=
m
y
p
y
y_0=m_yp_y
y0=mypy。因此,一个CCD摄像机有10个自由度。