计算机视觉——相机标定

发布于:2025-06-08 ⋅ 阅读:(20) ⋅ 点赞:(0)

一、像素坐标系、图像坐标系、相机坐标系、世界坐标系

  1. 像素坐标系:数字图像在计算机内为 M × N M\times N M×N 的数组,其中每个元素(称为像素)的数值即是图像点的亮度(或称为灰度,彩色图像对应的为RGB)。在图像上定义直角坐标系 u , v u,v u,v,每一个像素的坐标 ( u , v ) (u,v) (u,v) 分别是该像素在数组中的列数与行数。
  2. 图像坐标系:以图像内某一点 O 1 O_1 O1 为原点, x x x 轴与 y y y 轴分别与 u , v u,v u,v轴平行,该坐标系中,原点 O 1 O_1 O1 定义在相机光轴与图像平面的交点,该点一般位于图像中心处。

图1 像素坐标系与图像坐标系
  1. 相机坐标系:如图所示,其中 O O O 点称为相机光心, X c X_c Xc 轴和 Y c Y_c Yc 轴与图像的 x x x 轴与 y y y 轴平行, Z c Z_c Zc 轴为相机的光轴,它与图像平面垂直。光轴与图像平面的交点,即为图像物理坐标系的原点,由点 O O O X c , Y c , Z c X_c,Y_c,Z_c Xc,Yc,Zc 轴组成的直角坐标系称为相机坐标系。 O O 1 OO_1 OO1 为相机焦距。
  2. 世界坐标系:由于相机可安放在环境中的任意位置,我们在环境中还需选择一个基准坐标系来描述相机的位置,并用它描述环境中任意物体的位置,该坐标系称为世界坐标系。它由 X w , Y w , Z w X_w,Y_w,Z_w Xw,Yw,Zw 轴组成。

图2 相机坐标系与世界坐标系

二、坐标系变换

图像坐标系 → 像素坐标系

如图1所示,若 O 1 O_1 O1 u , v u,v u,v 坐标系中的坐标为 ( u 0 , v 0 ) (u_0,v_0) (u0,v0),每个像素在 x x x 轴与 y y y 轴方向上的物理尺寸为 d x , d y dx,dy dx,dy,单位:毫米(mm),则图像中任意一个像素在两个坐标系下的坐标有如下关系:
u = x d x + u 0 v = y d y + v 0 (1) \begin{aligned} u&=\frac{x}{dx}+u_0\\[2ex] v&=\frac{y}{dy}+v_0 \end{aligned}\tag{1} uv=dxx+u0=dyy+v0(1)

写成矩阵的形式:

[ u v 1 ] = [ 1 d x 0 u 0 0 1 d y v 0 0 0 1 ] [ x y 1 ] ⟺ [ x y 1 ] = [ d x 0 − u 0 d x 0 d y − v 0 d y 0 0 1 ] [ u v 1 ] (2) \left[ \begin{matrix} u \\[2ex] v \\[2ex] 1 \end{matrix} \right]= \left[ \begin{matrix} \dfrac{1}{dx} & 0 & u_0\\[2ex] 0 & \dfrac{1}{dy} & v_0\\[2ex] 0 & 0 & 1\\ \end{matrix} \right]\left[ \begin{matrix} x \\[2ex] y \\[2ex] 1 \end{matrix} \right] \quad\Longleftrightarrow\quad \left[ \begin{matrix} x \\[2ex] y \\[2ex] 1 \end{matrix} \right]= \left[ \begin{matrix} dx & 0 & -u_0dx\\[2ex] 0 & dy & -v_0dy\\[2ex] 0 & 0 & 1\\ \end{matrix} \right]\left[ \begin{matrix} u \\[2ex] v \\[2ex] 1 \end{matrix} \right]\tag{2} uv1 = dx1000dy10u0v01 xy1 xy1 = dx000dy0u0dxv0dy1 uv1 (2)

相机坐标系 → 图像坐标系

如图2所示,相机坐标系中的点 ( X c , Y c , Z c ) (X_c,Y_c,Z_c) (Xc,Yc,Zc)投影到图像坐标系中的点为 ( x , y ) (x,y) (x,y)。根据相似三角形原理可以得到如下关系式:
x = f X c Z c , y = f Y c Z c (3) \begin{aligned} x=\dfrac{fX_c}{Z_c},\quad y=\dfrac{fY_c}{Z_c} \end{aligned}\tag{3} x=ZcfXcy=ZcfYc(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\left[ \begin{matrix} x \\[2ex] y \\[2ex] 1 \end{matrix} \right]=\left[ \begin{matrix} f & 0 & 0 & 0\\[2ex] 0 & f & 0 & 0\\[2ex] 0 & 0 & 1 & 0\\ \end{matrix} \right]\left[ \begin{matrix} X_c \\[2ex] Y_c \\[2ex] Z_c \\[2ex] 1 \end{matrix} \right]\tag{4} Zc xy1 = f000f0001000 XcYcZc1 (4)

世界坐标系 → 相机坐标系

相机坐标系与世界坐标系之间的关系可以用旋转矩阵 R \pmb R R 与平移向量 t \pmb t t 来描述。因此,若空间中某一点 P \pmb P P 在世界坐标系与相机坐标系下的坐标分别为 ( X w , Y w , Z w , 1 ) T (X_w,Y_w,Z_w,1)^T (Xw,Yw,Zw,1)T ( X c , Y c , Z c , 1 ) T (X_c,Y_c,Z_c,1)^T (Xc,Yc,Zc,1)T,于是存在如下关系:
[ X c Y c Z c 1 ] = [ R t   0 T 1 ] [ X w Y w Z w 1 ] = M 1 [ X w Y w Z w 1 ] (5) \left[ \begin{matrix} X_c \\[2ex] Y_c \\[2ex] Z_c \\[2ex] 1 \end{matrix} \right]= \left[ \begin{matrix} \pmb R & \pmb t\\[2ex] \ {\pmb 0}^T & 1 \end{matrix} \right]\left[ \begin{matrix} X_w \\[2ex] Y_w \\[2ex] Z_w \\[2ex] 1 \end{matrix} \right]=\pmb M_1\left[ \begin{matrix} X_w \\[2ex] Y_w \\[2ex] Z_w \\[2ex] 1 \end{matrix} \right]\tag{5} XcYcZc1 =[R 0Tt1] XwYwZw1 =M1 XwYwZw1 (5)

其中, R \pmb R R 3 × 3 3\times 3 3×3 单位正交矩阵, t \pmb t t 为三维平移向量, 0 = ( 0 , 0 , 0 ) T \pmb 0=(0,0,0)^T 0=(0,0,0)T M 1 \pmb M_1 M1 4 × 4 4\times 4 4×4 矩阵。

⋆ \star 世界坐标系 → 像素坐标系

联立式 ( 2 ) , ( 4 ) , ( 5 ) (2),(4),(5) (2),(4),(5),消去 ( x , y , 1 ) T , ( X c , Y c , Z c , 1 ) T (x,y,1)^T,(X_c,Y_c,Z_c,1)^T (x,y,1)T,(Xc,Yc,Zc,1)T,有,
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 ] = [ a x 0 u 0 0 0 a y v 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 ] (6) \begin{aligned} Z_c\left[ \begin{matrix} u \\[2ex] v \\[2ex] 1 \end{matrix} \right]&=\left[ \begin{matrix} \dfrac{1}{dx} & 0 & u_0\\[2ex] 0 & \dfrac{1}{dy} & v_0\\[2ex] 0 & 0 & 1\\ \end{matrix} \right]\left[ \begin{matrix} f & 0 & 0 & 0\\[2ex] 0 & f & 0 & 0\\[2ex] 0 & 0 & 1 & 0\\ \end{matrix} \right]\left[ \begin{matrix} \pmb R & \pmb t\\[2ex] \ {\pmb 0}^T & 1 \end{matrix} \right]\left[ \begin{matrix} X_w \\[2ex] Y_w \\[2ex] Z_w \\[2ex] 1 \end{matrix} \right]\\ &=\left[ \begin{matrix} a_x & 0 & u_0 & 0\\[2ex] 0 & a_y & v_0 & 0\\[2ex] 0 & 0 & 1 & 0\\ \end{matrix} \right]\left[ \begin{matrix} \pmb R & \pmb t\\[2ex] \ {\pmb 0}^T & 1 \end{matrix} \right]\left[ \begin{matrix} X_w \\[2ex] Y_w \\[2ex] Z_w \\[2ex] 1 \end{matrix} \right]\\ &=\pmb M_1\pmb M_2 \left[ \begin{matrix} X_w \\[2ex] Y_w \\[2ex] Z_w \\[2ex] 1 \end{matrix} \right]\\ &=\pmb M \left[ \begin{matrix} X_w \\[2ex] Y_w \\[2ex] Z_w \\[2ex] 1 \end{matrix} \right] \end{aligned}\tag{6} Zc uv1 = dx1000dy10u0v01 f000f0001000 [R 0Tt1] XwYwZw1 = ax000ay0u0v01000 [R 0Tt1] XwYwZw1 =M1M2 XwYwZw1 =M XwYwZw1 (6)

其中, a x = f d x , a y = f d y a_x=\dfrac{f}{dx},a_y=\dfrac{f}{dy} ax=dxf,ay=dyf, 由于 a x , a y , u 0 , v 0 a_x,a_y,u_0,v_0 ax,ay,u0,v0 只与相机内部结构有关,因此称 M 1 \pmb M_1 M1 为相机的内参矩阵;而 M 2 \pmb M_2 M2 完全由相机相对于世界坐标系的方位决定,因此称为相机的外参矩阵;称 M \pmb M M投影矩阵

三、相机标定

确定某一相机的内外参矩阵,称为相机标定。

将式 ( 6 ) (6) (6) 写成
Z c i [ u i v i 1 ] = [ m 11 m 12 m 13 m 14 m 21 m 22 m 23 m 24 m 31 m 32 m 33 m 34 ] [ X w i Y w i Z w i 1 ] (7) Z_{ci}\left[ \begin{matrix} u_i \\[2ex] v_i \\[2ex] 1 \end{matrix} \right]=\left[ \begin{matrix} m_{11} & m_{12} & m_{13} & m_{14} \\[2ex] m_{21} & m_{22} & m_{23} & m_{24} \\[2ex] m_{31} & m_{32} & m_{33} & m_{34} \end{matrix} \right]\left[ \begin{matrix} X_{wi} \\[2ex] Y_{wi} \\[2ex] Z_{wi} \\[2ex] 1 \end{matrix} \right]\tag{7} Zci uivi1 = m11m21m31m12m22m32m13m23m33m14m24m34 XwiYwiZwi1 (7)

其中, ( X w i , Y w i , Z w i , 1 ) (X_{wi},Y_{wi},Z_{wi},1) (Xwi,Ywi,Zwi,1) 为空间中第 i i i 个点的世界坐标; ( u i , v i , 1 ) (u_i,v_i,1) (ui,vi,1) 为对应的像素坐标。式 ( 7 ) (7) (7) 包含三个方程:
Z c i u i = m 11 X w i + m 12 Y w i + m 13 Z w i + m 14 Z c i v i = m 21 X w i + m 22 Y w i + m 23 Z w i + m 24 Z c i = m 31 X w i + m 32 Y w i + m 33 Z w i + m 34 (8) \begin{aligned} Z_{ci}u_i&=m_{11}X_{wi}+m_{12}Y_{wi}+m_{13}Z_{wi}+m_{14}\\[2ex] Z_{ci}v_i&=m_{21}X_{wi}+m_{22}Y_{wi}+m_{23}Z_{wi}+m_{24}\\[2ex] Z_{ci}&=m_{31}X_{wi}+m_{32}Y_{wi}+m_{33}Z_{wi}+m_{34} \end{aligned}\tag{8} ZciuiZciviZci=m11Xwi+m12Ywi+m13Zwi+m14=m21Xwi+m22Ywi+m23Zwi+m24=m31Xwi+m32Ywi+m33Zwi+m34(8)

将式 ( 8 ) (8) (8) 中的第一式减去 u i u_i ui 乘第三式,第二式减去 v i v_i vi 乘第三式,分别消去 Z c i Z_{ci} Zci 后,可得如下线性方程:
X w i m 11 + Y w i m 12 + Z w i m 13 + m 14 − u i X w i m 31 − u i Y w i m 32 − u i Z w i m 33 − u i m 34 = 0 X w i m 21 + Y w i m 22 + Z w i m 23 + m 24 − v i X w i m 31 − v i Y w i m 32 − v i Z w i m 33 − v i m 34 = 0 (9) \begin{aligned} X_{wi}m_{11}+Y_{wi}m_{12}+Z_{wi}m_{13}+m_{14}-u_iX_{wi}m_{31}-u_iY_{wi}m_{32}-u_iZ_{wi}m_{33}-u_im_{34}&=0\\[2ex] X_{wi}m_{21}+Y_{wi}m_{22}+Z_{wi}m_{23}+m_{24}-v_iX_{wi}m_{31}-v_iY_{wi}m_{32}-v_iZ_{wi}m_{33}-v_im_{34}&=0\\[2ex] \end{aligned}\tag{9} Xwim11+Ywim12+Zwim13+m14uiXwim31uiYwim32uiZwim33uim34Xwim21+Ywim22+Zwim23+m24viXwim31viYwim32viZwim33vim34=0=0(9)

上式表示,若已知 n n n 个点的世界坐标 ( X w i , Y w i , Z w i ) (X_{wi},Y_{wi},Z_{wi}) (Xwi,Ywi,Zwi),与它们的像素坐标 ( u i , v i ) (u_i,v_i) (ui,vi),则我们有 2 n 2n 2n 个关于投影矩阵 M \pmb M M 元素的线性方程。

由此可见,由空间6个以上点的世界坐标与对应的像素坐标,我们可求出投影矩阵 M \pmb M M。在一般的标定中,我们都有数十个已知点,使方程的个数远超未知数的个数,从而用最小二乘法求解以降低误差造成的影响。


网站公告

今日签到

点亮在社区的每一天
去签到