相机标定技术原理(1):张氏标定算法详解

相机标定方法综述

相机标定技术繁多,总体上可以分为三类:

  1. 基于标定板的辅助标定
  2. 基于世界属性的半自动标定
  3. 相机的自标定(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} h1TKTKTh2=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} h1TKTK1h1=h2TKTK1h2(1.10)

2. 方程求解

B = K − T K − 1 B=K^{-T}K^{-1} B=KTK1
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(v11v22)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算法求得最优估计。


  1. 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 ↩︎

  2. Hartley R, Zisserman A. Multiple view geometry in computer vision[M]. Cambridge university press, 2003. ↩︎

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值