相机标定(1)——四个坐标系

前言

二维图像能提供丰富的环境信息或空间信息,这些信息涵盖(1)图像上每一点的亮度与物体某个表面点的反射光的强度的关系(2)图像点在图像平面上的位置与 a . a. a.相机与空间物体的相对方位的关系; b . b. b.相机的内部结构关系1。利用这些信息,可实现诸如测距,测量,识别,地图构建,定位,相机运动和姿态估计等方面的工作。

为了描述相机的几何成像关系,需要进行数学建模,这些几何模型参数就是相机参数,包括内参和外参,而求解参数的过程就称为相机标定。本文所介绍的相机模型是计算机视觉中广泛使用的针孔模型(The basic pinhole model)。这种模型在数学上是三维空间到二维平面(image plane or focal plane)的中心投影,由一个 3 × 4 3\times4 3×4投影矩阵 P = K [ R ∣ t ] P=K[R|t] P=K[Rt]2来描述, K K K为相机内参(internal camera parameters), [ R ∣ t ] [R|t] [Rt]为外参(external parameters)。

我们通过描述四个坐标系的相互转换关系,可以拆分和剖析投影矩阵 P P P

四个坐标系

下图表示四个坐标系的相互关系3
在这里插入图片描述

  • 图像像素坐标系:表示三维空间物体在图像平面上的投影,像素是离散化的,其坐标原点在CCD图像平面的左上角, u u u轴平行于CCD平面水平向右, v v v轴垂直于 u u u轴向下,坐标使用 ( u , v ) (u,v) (u,v)来表示。图像宽度 W W W,高度 H H H
  • 图像物理坐标系:坐标原点在CCD图像平面的中心, x , y x,y x,y轴分别平行于图像像素坐标系的 ( u , v ) (u,v) (u,v)轴,坐标用 ( x , y ) (x,y) (x,y)表示。
  • 相机坐标系:以相机的光心为坐标系原点, X c , Y c X_c,Y_c Xc,Yc轴平行于图像坐标系的 x , y x,y x,y轴,相机的光轴为 Z c Z_c Zc轴,坐标系满足右手法则。相机的光心可理解为相机透镜的几何中心,如下图所示3
    在这里插入图片描述
  • 世界坐标系:用于表示空间物体的绝对坐标,使用 ( X w , Y w , Z w ) (X_w,Y_w,Z_w) (Xw,Yw,Zw)表示,世界坐标系可通过旋转和平移得到相机坐标系。

世界坐标系-相机坐标系

刚体变换只改变物体的空间位置(平移)和朝向(旋转),而不改变其形状的变换,可用两个变量来描述:正交单位旋转矩阵 R R R,三维平移矢量 t t t。世界坐标系到相机坐标系的转换关系也是如此,如下图所示2
在这里插入图片描述
平移比较好理解,世界坐标系原点移动到相机坐标系;旋转一共有三个自由度,即绕 x , y , z x,y,z x,y,z旋转,根据旋转角度可以分别得三个方向上的旋转矩阵 R x , R y , R z R_x,R_y,R_z Rx,Ry,Rz,而旋转矩阵即为他们的乘积4 R = R x × R y × R z R=R_x \times R_y \times R_z R=Rx×Ry×Rz。以绕 X X X轴旋转为例,我们可以得到 R x R_x Rx
在这里插入图片描述
{ X C = X W Y C = Y W ∗ cos ⁡ θ + Z W ∗ sin ⁡ θ Z C = − Y W ∗ sin ⁡ θ + Z W ∗ cos ⁡ θ \left\{ \begin{aligned} X_C &= X_W \\ Y_C &= Y_W * \cos{\theta} + Z_W * \sin{\theta} \\ Z_C &= -Y_W * \sin{\theta} + Z_W * \cos{\theta} \end{aligned} \right. XCYCZC=XW=YWcosθ+ZWsinθ=YWsinθ+ZWcosθ
写成矩阵形式如下,
[ X C Y C Z C ] = [ 1 0 0 0 cos ⁡ θ sin ⁡ θ 0 − sin ⁡ θ cos ⁡ θ ] [ X W Y W Z W ] = R x [ X W Y W Z W ] \left[ \begin{array}{c} X_C \\ Y_C \\ Z_C \end{array} \right ]= \left[ \begin{array}{ccc} 1 & 0 & 0 \\ 0 & \cos{\theta} & \sin{\theta} \\ 0 & -\sin{\theta}& \cos{\theta} \end{array} \right ] \left[ \begin{array}{c} X_W \\ Y_W \\ Z_W \end{array} \right ]= R_x \left[ \begin{array}{c} X_W \\ Y_W \\ Z_W \end{array} \right ] XCYCZC=1000cosθsinθ0sinθcosθXWYWZW=RxXWYWZW
同理可得绕 y y y轴和 z z z轴旋转的关系。
[ X C Y C Z C ] = [ cos ⁡ θ 0 − sin ⁡ θ 0 1 0 sin ⁡ θ 0 cos ⁡ θ ] [ X W Y W Z W ] = R y [ X W Y W Z W ] \left[ \begin{array}{c} X_C \\ Y_C \\ Z_C \end{array} \right ]= \left[ \begin{array}{ccc} \cos{\theta} & 0 & -\sin{\theta} \\ 0 & 1 & 0 \\ \sin{\theta} & 0& \cos{\theta} \end{array} \right ] \left[ \begin{array}{c} X_W \\ Y_W \\ Z_W \end{array} \right ]= R_y \left[ \begin{array}{c} X_W \\ Y_W \\ Z_W \end{array} \right ] XCYCZC=cosθ0sinθ010sinθ0cosθXWYWZW=RyXWYWZW
[ X C Y C Z C ] = [ cos ⁡ θ sin ⁡ θ 0 − sin ⁡ θ cos ⁡ θ 0 0 0 1 ] [ X W Y W Z W ] = R z [ X W Y W Z W ] \left[ \begin{array}{c} X_C \\ Y_C \\ Z_C \end{array} \right ]= \left[ \begin{array}{ccc} \cos{\theta} & \sin{\theta} & 0 \\ -\sin{\theta} & \cos{\theta} & 0 \\ 0 & 0& 1 \end{array} \right ] \left[ \begin{array}{c} X_W \\ Y_W \\ Z_W \end{array} \right ]= R_z \left[ \begin{array}{c} X_W \\ Y_W \\ Z_W \end{array} \right ] XCYCZC=cosθsinθ0sinθcosθ0001XWYWZW=RzXWYWZW
于是可得旋转矩阵 R = R x R y R z R = R_x R_y R_z R=RxRyRz
[ X C Y C Z C ] = R [ X W Y W Z W ] + t \left[ \begin{array}{c} X_C \\ Y_C \\ Z_C \end{array} \right ]= R \left[ \begin{array}{c} X_W \\ Y_W \\ Z_W \end{array} \right ] + t XCYCZC=RXWYWZW+t
写成齐次坐标系形式为,
[ X C Y C Z C 1 ] = [ R t 0 1 × 3 1 ] [ X W Y W Z W 1 ] (1) \left[ \begin{array}{c} X_C \\ Y_C \\ Z_C \\ 1 \end{array} \right ]= \left[ \begin{array}{cc} R & t\\ 0_{1 \times 3} & 1 \end{array} \right ] \left[ \begin{array}{c} X_W \\ Y_W \\ Z_W \\ 1 \end{array} \right ] \tag{1} XCYCZC1=[R01×3t1]XWYWZW1(1)

相机坐标系-图像坐标系

相机坐标系到图像坐标系是透视关系,利用相似三角形进行计算2
在这里插入图片描述
{ x f = X C Z C y f = Y C Z C \left\{ \begin{aligned} \frac{x}{f} = \frac{X_C}{Z_C} \\ \frac{y}{f} = \frac{Y_C}{Z_C} \end{aligned} \right. fx=ZCXCfy=ZCYC
写成齐次坐标形式的矩阵相乘为,
Z C [ x y 1 ] = [ f 0 0 0 0 f 0 0 0 0 1 0 ] [ X C Y C Z C 1 ] = [ K ∣ 0 ] [ X C Y C Z C 1 ] (2) Z_C\left[ \begin{array}{c} x \\ y \\ 1 \end{array} \right ]= \left[ \begin{array}{cccc} f & 0 & 0 & 0 \\ 0 & f & 0 & 0 \\ 0 & 0 & 1 & 0 \end{array} \right ] \left[ \begin{array}{c} X_C \\ Y_C \\ Z_C \\ 1 \end{array} \right ] = [K|0]\left[ \begin{array}{c} X_C \\ Y_C \\ Z_C \\ 1 \end{array} \right ] \tag{2} ZCxy1=f000f0001000XCYCZC1=[K0]XCYCZC1(2)
其中 K K K称为相机内参数矩阵。

主点偏离图像中心(principal point offset)1:在实际应用中,由于事先不知道主点的确切位置,通常都是以图像中心或者图像的左上角作为图像坐标系的原点来建立图像坐标系的。当主点不是坐标系原点时,相机内参数矩阵形式如下。 [ f 0 x 0 0 f y 0 0 0 1 ] \left[ \begin{array}{ccc} f & 0 & x_0 \\ 0 & f & y_0 \\ 0 & 0 & 1 \end{array} \right ] f000f0x0y01
这种说法可能不太好理解,我们这里仅作参考,感兴趣的可以阅读Reference1和2中的相关章节。

图像坐标系-像素坐标系

像素坐标系是图像坐标系的离散化表示,实际CCD相机每个像素对应一个感光点,是个矩形,假设其物理尺寸为 d x dx dx宽, d y dy dy高。以CCD传感器的左上角为坐标原点建立的坐标系与以成像平面中心建立的坐标系的转换关系如下。
在这里插入图片描述
{ u = x d x + u 0 v = y d y + v 0 \left\{ \begin{aligned} u = \frac{x}{d_x} + u_0 \\ v = \frac{y}{d_y} + v_0 \end{aligned} \right. u=dxx+u0v=dyy+v0
齐次坐标矩阵形式为,
[ u v 1 ] = [ 1 d x 0 u 0 0 1 d y v 0 0 0 1 ] [ x y 1 ] (3) \left[ \begin{array}{c} u \\ v \\ 1 \end{array} \right ]= \left[ \begin{array}{ccc} \frac{1}{d_x} & 0 & u_0 \\ 0 & \frac{1}{d_y} & v_0 \\ 0 & 0 & 1 \end{array} \right ] \left[ \begin{array}{c} x \\ y \\ 1 \end{array} \right ] \tag{3} uv1=dx1000dy10u0v01xy1(3)

由于制造工艺的限制,一般情况下,CCD 摄像机数字离散化后的像素不是一个矩形而是一个平行四边形,四边形的一边平行于 u u u轴,而另一边与 u u u轴形成一个 θ \theta θ角。则内参矩阵中会出现一个扭曲因子 s s s。感兴趣可进一步阅读Reference1中相关章节。

综合

根据公式 ( 1 ) ( 2 ) ( 3 ) (1)(2)(3) (1)(2)(3)可得,
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 1 × 3 1 ] [ X W Y W Z W 1 ] = [ f x 0 u 0 0 0 f y v 0 0 0 0 1 0 ] [ R t 0 1 × 3 1 ] [ X W Y W Z W 1 ] Z_C\left[ \begin{array}{c} u \\ v \\ 1 \end{array} \right ]= \left[ \begin{array}{ccc} \frac{1}{d_x} & 0 & u_0 \\ 0 & \frac{1}{d_y} & v_0 \\ 0 & 0 & 1 \end{array} \right ] \left[ \begin{array}{cccc} f & 0 & 0 & 0 \\ 0 & f & 0 & 0 \\ 0 & 0 & 1 & 0 \end{array} \right ] \left[ \begin{array}{cc} R & t\\ \bf{0}_{1 \times 3} & 1 \end{array} \right ] \left[ \begin{array}{c} X_W \\ Y_W \\ Z_W \\ 1 \end{array} \right ] \\ = \left[ \begin{array}{cccc} f_x & 0 & u_0 & 0 \\ 0 & f_y & v_0 & 0 \\ 0 & 0 & 1 & 0 \end{array} \right ] \left[ \begin{array}{cc} R & t\\ \bf{0}_{1 \times 3} & 1 \end{array} \right ] \left[ \begin{array}{c} X_W \\ Y_W \\ Z_W \\ 1 \end{array} \right ] ZCuv1=dx1000dy10u0v01f000f0001000[R01×3t1]XWYWZW1=fx000fy0u0v01000[R01×3t1]XWYWZW1
其中,
[ f x 0 u 0 0 0 f y v 0 0 0 0 1 0 ] \left[ \begin{array}{cccc} f_x & 0 & u_0 & 0 \\ 0 & f_y & v_0 & 0 \\ 0 & 0 & 1 & 0 \end{array} \right ] fx000fy0u0v01000为相机内参矩阵, [ R t 0 1 × 3 1 ] \left[ \begin{array}{cc} R & t\\ \bf{0}_{1 \times 3} & 1 \end{array} \right ] [R01×3t1]为外参矩阵。相机标定就是为了求解这两个矩阵的参数。

一图胜千言

在这里插入图片描述

扫描二维码关注公众号,回复: 12333725 查看本文章

Reference


  1. 吴福朝. 计算机视觉中的数学方法[M]. 科学出版社, 2008 ↩︎ ↩︎

  2. Hartley, R., & Zisserman, A. (2004). Multiple View Geometry in Computer Vision (2nd ed.). Cambridge: Cambridge University Press. doi:10.1017/CBO9780511811685 ↩︎ ↩︎ ↩︎

  3. Corke P. Robotics, vision and control: fundamental algorithms in MATLAB® second, completely revised[M]. Springer, 2017. ↩︎ ↩︎

  4. Rotation of Axes ↩︎

猜你喜欢

转载自blog.csdn.net/weixin_44278406/article/details/112986651