相机标定(一)-原理及内参、外参
相机标定(二)-畸变校正,张正友标定法
相机标定(三)-相机成像模型
在图像测量过程以及机器视觉应用中,为确定空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系,必须建立相机成像的几何模型,这些几何模型参数就是相机参数。在大多数条件下这些参数必须通过实验与计算才能得到,这个求解参数的过程就称之为相机标定(或摄像机标定)。无论是在图像测量或者机器视觉应用中,相机参数的标定都是非常关键的环节,其标定结果的精度及算法的稳定性直接影响相机工作产生结果的准确性。因此,做好相机标定是做好后续工作的前提,提高标定精度是科研工作的重点所在。
理解四个坐标系是进行相机标定的基础,它们是:
假设相机感光器件中单个像素的物理尺寸为 d X × d Y dX \times dY dX×dY,有:
{ u = x d X + u 0 v = y d Y + v 0 (1) \begin{cases} u=\frac{x}{dX}+u_0 \\ v=\frac{y}{dY}+v_0 \end{cases} \tag{1} {u=dXx+u0v=dYy+v0(1)
把上式写成齐次形式,有:
[ u v 1 ] = [ 1 d X 0 u 0 0 1 d Y v 0 0 0 1 ] [ x y 1 ] (2) \begin{bmatrix} u \\ v \\ 1 \end{bmatrix} = \begin{bmatrix} \frac{1}{dX} & 0 & u_0 \\ 0 & \frac{1}{dY} & v_0 \\ 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} x \\ y \\ 1 \end{bmatrix} \tag{2} ⎣⎡uv1⎦⎤=⎣⎡dX1000dY10u0v01⎦⎤⎣⎡xy1⎦⎤(2)
公式(2)完成了图像物理坐标系到图像像素坐标系的转换。
相机坐标系(camera coordinate) ( X c , Y c , Z c ) (X_c,Y_c,Z_c) (Xc,Yc,Zc),也是一个三维直角坐标系,原点位于镜头光心处, X c X_c Xc、 Y c Y_c Yc轴分别与像面的两边平行,z轴为镜头光轴,与像平面垂直。
点 P ( X c , Y c , Z c ) P(X_c,Y_c,Zc) P(Xc,Yc,Zc)为空间中任意一点,其通过投影中心的光线投影到图像平面上,在图像物理空间的投影点为 p ( x , y ) p(x,y) p(x,y),扩展到相机坐标系下其坐标为 ( x , y , f ) (x,y,f) (x,y,f)。根据相似三角形原理,有:
Z c f = X c x = Y c y ⇒ { x = f X c Z c y = f Y c Z c (3) \frac{Z_c}{f}=\frac{X_c}{x}=\frac{Y_c}{y} \Rightarrow \begin{cases} x=f\frac{X_c}{Z_c} \\ y=f\frac{Y_c}{Z_c} \end{cases} \tag{3} fZc=xXc=yYc⇒{x=fZcXcy=fZcYc(3)
转为齐次形式为:
Z c [ x y 1 ] = [ f 0 0 0 0 f 0 0 0 0 1 0 ] [ X c Y c Z c 1 ] (4) Z_c \begin{bmatrix} x \\ y \\ 1 \end{bmatrix}= \begin{bmatrix} f & 0 & 0 & 0\\ 0 & f & 0 & 0\\ 0 & 0 & 1 & 0 \end{bmatrix} \begin{bmatrix} X_c \\ Y_c \\ Z_c \\ 1 \end{bmatrix} \tag{4} Zc⎣⎡xy1⎦⎤=⎣⎡f000f0001000⎦⎤⎣⎢⎢⎡XcYcZc1⎦⎥⎥⎤(4)
公式(4)完成了相机坐标系到图像物理坐标系的转换。
世界坐标系(world coordinate) ( X w , Y w , Z w ) (X_w,Y_w,Z_w) (Xw,Yw,Zw),也称为测量坐标系、参考坐标系,是一个三维直角坐标系,以其为基准可以描述相机和待测物体的空间位置。世界坐标系的位置可以根据实际情况自由确定。
世界坐标系到相机坐标系的变换,实际上就是一个刚体变换,可以由旋转矩阵 R R R和平移矢量 t t t来表示。设 ( X w , Y w , Z w ) T (X_w,Y_w,Z_w)^T (Xw,Yw,Zw)T表示世界坐标系中的点, ( X c , Y c , Z c ) T (X_c,Y_c,Z_c)^T (Xc,Yc,Zc)T表示相机坐标系中的点,则它们之间的转换可由下式表示:
[ X c Y c Z c ] = R [ X w Y w Z w ] + t (5) \begin{bmatrix} X_c \\ Y_c \\ Z_c \end{bmatrix}= R \begin{bmatrix} X_w \\ Y_w \\ Z_w \end{bmatrix} +t \tag{5} ⎣⎡XcYcZc⎦⎤=R⎣⎡XwYwZw⎦⎤+t(5)
即:
[ X c Y c Z c 1 ] = [ R 3 × 3 t 3 × 1 0 1 × 3 1 1 × 1 ] [ X w Y w Z w 1 ] (6) \begin{bmatrix} X_c \\ Y_c \\ Z_c \\ 1 \end{bmatrix}= \begin{bmatrix} R_{3\times3} & t_{3\times1}\\ 0_{1\times3} & 1_{1\times1} \end{bmatrix} \begin{bmatrix} X_w \\ Y_w \\ Z_w \\ 1 \end{bmatrix} \tag{6} ⎣⎢⎢⎡XcYcZc1⎦⎥⎥⎤=[R3×301×3t3×111×1]⎣⎢⎢⎡XwYwZw1⎦⎥⎥⎤(6)
公式(6)完成了世界坐标系到相机坐标系的转换。
联立上面的(2)、(4)、(6)式,可以得到世界坐标系与像素坐标系之间的转换关系,有:
Z c [ u v 1 ] = [ 1 d X 0 u 0 0 1 d Y v 0 0 0 1 ] [ f 0 0 0 0 f 0 0 0 0 1 0 ] [ R t 0 T 1 ] [ X w Y w Z w 1 ] = M 1 M 2 [ X w Y w Z w 1 ] = M [ X w Y w Z w 1 ] (7) \begin{aligned} Z_c \begin{bmatrix} u \\ v \\ 1 \end{bmatrix} &= \begin{bmatrix} \frac{1}{dX} & 0 & u_0 \\ 0 & \frac{1}{dY} & v_0 \\ 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} f & 0 & 0 & 0\\ 0 & f & 0 & 0\\ 0 & 0 & 1 & 0 \end{bmatrix} \begin{bmatrix} R & t\\ 0^T & 1 \end{bmatrix} \begin{bmatrix} X_w \\ Y_w \\ Z_w \\ 1 \end{bmatrix} \\ &=M_1M_2 \begin{bmatrix} X_w \\ Y_w \\ Z_w \\ 1 \end{bmatrix} \\ &=M \begin{bmatrix} X_w \\ Y_w \\ Z_w \\ 1 \end{bmatrix} \end{aligned} \tag{7} Zc⎣⎡uv1⎦⎤=⎣⎡dX1000dY10u0v01⎦⎤⎣⎡f000f0001000⎦⎤[R0Tt1]⎣⎢⎢⎡XwYwZw1⎦⎥⎥⎤=M1M2⎣⎢⎢⎡XwYwZw1⎦⎥⎥⎤=M⎣⎢⎢⎡XwYwZw1⎦⎥⎥⎤(7)
M 1 = [ 1 d X 0 u 0 0 1 d Y v 0 0 0 1 ] [ f 0 0 0 0 f 0 0 0 0 1 0 ] = [ f x 0 u 0 0 0 f y v 0 0 0 0 1 0 ] (8) M_1= \begin{bmatrix} \frac{1}{dX} & 0 & u_0 \\ 0 & \frac{1}{dY} & v_0 \\ 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} f & 0 & 0 & 0\\ 0 & f & 0 & 0\\ 0 & 0 & 1 & 0 \end{bmatrix}= \begin{bmatrix} f_x & 0 & u_0 & 0 \\ 0 & f_y & v_0 & 0 \\ 0 & 0 & 1 & 0 \end{bmatrix} \tag{8} M1=⎣⎡dX1000dY10u0v01⎦⎤⎣⎡f000f0001000⎦⎤=⎣⎡fx000fy0u0v01000⎦⎤(8)
M 2 = [ R t 0 T 1 ] (9) M_2= \begin{bmatrix} R & t\\ 0^T & 1 \end{bmatrix} \tag{9} M2=[R0Tt1](9)
其中: