相机标定方法综述
相机标定技术繁多,总体上可以分为三类:
- 基于标定板的辅助标定
- 基于世界属性的半自动标定
- 相机的自标定(self-calibration)
1. 基于标定板的辅助标定
标定板标定方法的应用较为常见,历史早期得标定板为立体标定板,一般为两到三个相互垂直的平面,每个平面上有一些标记点,通过3D-2D投影关系估计相机的内参,立体标定板成本高,不易得到,使用不方便;张正友博士提出利用一个平面标定板依靠单应模型实现求解相机内外参数(外参数指相机得位姿),精度稳定,易于实现,成为最流行的相机标定技术,同时OpenCV采用该方法实现标定功能。1本文着重论述此方法。
2. 基于世界属性的半自动标定
通过获取场景属性,如建筑物、道路等边缘平行线、垂直线段,也可实现标定内参数,具体原理详见下一篇介绍。
3. 相机的自标定
通过先验约束条件,如相机的skew因数为零,实现相机的内参数估计,此类方法在多视图几何有详细论述,另一篇会总结该思路。 2
张氏标定算法详解
三维空间平面上的特征点与其像点存在单应关系(homography), 利用该约束可以构造关于内参得方程组求解未知参数。
1. 约束方程推导
采用齐次坐标表达,设世界坐标系原点在(标定板)平面上,xOy平面与平面重合
x
=
K
[
R
t
]
X
(1.1)
x=K \left[ \begin{matrix} R & t \end{matrix} \right] X\tag{1.1}
x=K[Rt]X(1.1)
其中,
K
=
[
α
γ
u
0
β
v
0
0
1
]
(1.2)
K=\left[\begin{matrix}\alpha&\gamma&u\\0&\beta&v\\0&0&1\end{matrix}\right]\tag{1.2}
K=⎣⎡α00γβ0uv1⎦⎤(1.2)
R
=
[
r
1
r
2
r
3
]
(1.3)
R=\left[\begin{matrix}r_1&r_2&r_3\end{matrix}\right]\tag{1.3}
R=[r1r2r3](1.3)
由于X的第三个元素为0,
x
=
K
[
r
1
r
2
t
]
[
a
b
1
]
(1.4)
x=K\left[\begin{matrix}r_1&r_2&t\end{matrix}\right]\left[\begin{matrix}a\\b\\1\end{matrix}\right]\tag{1.4}
x=K[r1r2t]⎣⎡ab1⎦⎤(1.4)
则存在,
x
=
H
X
′
(1.5)
x=HX^{'}\tag{1.5}
x=HX′(1.5)
其中,
X
′
=
[
a
b
1
]
(1.6)
X^{'}=\left[\begin{matrix}a\\b\\1\end{matrix}\right]\tag{1.6}
X′=⎣⎡ab1⎦⎤(1.6)
由等式1.3与1.4
H
=
λ
K
[
r
1
r
2
t
]
(1.7)
H=\lambda K\left[\begin{matrix}r_1&r_2&t\end{matrix}\right]\tag{1.7}
H=λK[r1r2t](1.7)
λ
\lambda
λ为比例因子,设
H
=
[
h
1
h
2
h
3
]
(1.8)
H=\left[\begin{matrix}h_1&h_2&h_3\end{matrix}\right]\tag{1.8}
H=[h1h2h3](1.8)
r
1
r_1
r1与
r
2
r_2
r2为正交单位向量,则有
h
1
T
K
−
T
K
−
T
h
2
=
0
(1.9)
h_1^TK^{-T}K^{-T}h_2=0\tag{1.9}
h1TK−TK−Th2=0(1.9)
h
1
T
K
−
T
K
−
1
h
1
=
h
2
T
K
−
T
K
−
1
h
2
(1.10)
h_1^TK^{-T}K^{-1}h_1=h_2^TK^{-T}K^{-1}h_2\tag{1.10}
h1TK−TK−1h1=h2TK−TK−1h2(1.10)
2. 方程求解
令
B
=
K
−
T
K
−
1
B=K^{-T}K^{-1}
B=K−TK−1,
B
=
[
1
α
2
−
γ
α
2
β
v
γ
−
u
β
α
2
β
−
γ
α
2
β
γ
2
α
2
β
2
+
1
β
2
−
γ
(
v
γ
−
u
β
)
α
2
β
2
−
v
β
2
v
γ
−
u
β
α
2
β
−
γ
(
v
γ
−
u
β
)
α
2
β
2
−
v
β
2
(
v
γ
−
u
β
)
2
α
2
β
2
+
v
2
β
2
+
1
]
(1.11)
B=\left[\begin{matrix}\frac{1}{\alpha^2}&-\frac{\gamma}{\alpha^2\beta}&\frac{v\gamma-u\beta}{\alpha^2\beta}\\-\frac{\gamma}{\alpha^2\beta}&\frac{\gamma^2}{\alpha^2\beta^2}+\frac{1}{\beta^2}&-\frac{\gamma(v\gamma-u\beta)}{\alpha^2\beta^2}-\frac{v}{\beta^2}\\\frac{v\gamma-u\beta}{\alpha^2\beta}&-\frac{\gamma(v\gamma-u\beta)}{\alpha^2\beta^2}-\frac{v}{\beta^2}&\frac{(v\gamma-u\beta)^2}{\alpha^2\beta^2}+\frac{v^2}{\beta^2}+1\end{matrix}\right]\tag{1.11}
B=⎣⎢⎡α21−α2βγα2βvγ−uβ−α2βγα2β2γ2+β21−α2β2γ(vγ−uβ)−β2vα2βvγ−uβ−α2β2γ(vγ−uβ)−β2vα2β2(vγ−uβ)2+β2v2+1⎦⎥⎤(1.11)
b
=
[
B
11
B
12
B
22
B
13
B
23
B
33
]
b=\left[\begin{matrix}B_{11}&B_{12}&B_{22}&B_{13}&B_{23}&B_{33}\end{matrix}\right]
b=[B11B12B22B13B23B33],令式(1.5)中H的第i列为
h
i
=
[
h
i
1
h
i
2
h
i
3
]
T
h_i=\left[\begin{matrix}h_{i1}&h_{i2}&h_{i3}\end{matrix}\right]^T
hi=[hi1hi2hi3]T,令
v
i
j
=
[
h
i
1
h
j
1
h
i
1
h
j
2
+
h
i
2
h
j
1
h
i
2
h
j
2
h
i
1
h
j
3
+
h
i
3
h
j
1
h
i
2
h
j
3
+
h
i
3
h
j
2
h
i
3
h
j
3
]
T
v_{ij}=\left[\begin{matrix}h_{i1}h_{j1}&h_{i1}h_{j2}+h_{i2}h_{j1}&h_{i2}h_{j2}&h_{i1}h_{j3}+h_{i3}h_{j1}&h_{i2}h_{j3}+h_{i3}h_{j2}&h_{i3}h_{j3}\end{matrix}\right]^T
vij=[hi1hj1hi1hj2+hi2hj1hi2hj2hi1hj3+hi3hj1hi2hj3+hi3hj2hi3hj3]T
由式(1.9),(1.10),
[
v
12
T
(
v
11
−
v
22
)
T
]
b
=
0
(1.12)
\left[\begin{matrix}v_{12}^T\\(v_{11}-v_{22})^T\end{matrix}\right]b=0\tag{1.12}
[v12T(v11−v22)T]b=0(1.12)
从1帧图像估计的单应矩阵H可以获得2个标定方程,设有n张标定板图像,则可构成
V
b
=
0
(1.13)
Vb=0\tag{1.13}
Vb=0(1.13)
其中,V是2n x 6大小的矩阵
式(1.13)为齐次方程,可采用SVD求得b,利用下式获得内参:
进一步可以求得相机外参,即位姿参数:
3. 参数优化
上述推导过程假设相机是理想的针孔相机模型,没有考虑镜头畸变问题,同时上述求解过程是一个代数解法,结果不是最优参数,可以相机内外参数、畸变系数为待优化参数最小化重投影误差,利用LM算法求得最优估计。
Z. Zhang, “A flexible new technique for camera calibration,” in IEEE Transactions on Pattern Analysis and Machine Intelligence, vol. 22, no. 11, pp. 1330-1334, Nov. 2000.
doi: 10.1109/34.888718 ↩︎Hartley R, Zisserman A. Multiple view geometry in computer vision[M]. Cambridge university press, 2003. ↩︎