《机器人建模和控制》第十一章计算机视觉之相机标定——内外部参数

相机标定

相机标定参考
https://blog.csdn.net/Aoulun/article/details/78768570

几个重要的参考系

  1. 世界坐标系
    描述我们处于的这个世界的三维直角坐标系,原点和坐标轴的选择有很大 自由度
  2. 相机坐标系
    可以看作是world coordinates的一个具体化,原点定在镜头光心,z轴是光轴,x,y轴构成一个和z轴垂直的面,这个面和后面的成像平面平行。

在这里插入图片描述
上图中的坐标系就是相机坐标系。
3. 图像坐标
首先定义图像平面:将包含检测阵列的平面定义为图像平面,如下图
在这里插入图片描述
image plane就是图像平面,我们用 ( u , v , λ ) (u,v,\lambda) (u,v,λ)表示图像平面的坐标,在相机坐标系中
4. 像素坐标
相机标定的目的是确定所有必须参数,从而将像素坐标 ( r , c ) (r,c) (r,c)和相机视场中的某点的坐标 ( x , y , z ) (x,y,z) (x,y,z)联系起来。

相机外部参数

世界坐标系坐标 ( x w , y w , z w ) (x_w,y_w,z_w) (xw,yw,zw) 和相机坐标系 ( x c , y c , z c ) (x_c,y_c,z_c) (xc,yc,zc)坐标,通过旋转和平移进行转换,矩阵形式如下
(1) ( x c , y c , z c , 1 ) T = [ R T 0 1 ] × ( x w , y w , z w , 1 ) T (x_c,y_c,z_c,1)^T= \left[\begin{matrix} R&T\\ 0&1 \end{matrix}\right]\times(x_w,y_w,z_w,1)^T\tag{1} (xc,yc,zc,1)T=[R0T1]×(xw,yw,zw,1)T(1)
其中 R R R是旋转矩阵, T T T是平移矩阵。这二者被称为相机的外部参数。

相机内部参数

内部参数可以理解为将世界坐标系的坐标和像素坐标相互映射的映射关系的参数。映射关系为 (2) r = − λ s x x z + o r , c = − λ s y y z + o c r=-\frac{\lambda}{s_x}\frac{x}{z}+o_r,\quad c=-\frac{\lambda}{s_y}\frac{y}{z}+o_c\tag{2} r=sxλzx+or,c=syλzy+oc(2)
其中的参数为 λ , s x , o r , s y , o c \lambda,s_x,o_r,s_y,o_c λ,sx,or,sy,oc。我们需要知道这些参数的值,或者这些参数的比值,比如 (3) f x = λ s x f y = λ s y f_x=\frac{\lambda}{s_x}\quad f_y=\frac{\lambda}{s_y}\tag{3} fx=sxλfy=syλ(3)
参数 f x , o r , f y , o c f_x,o_r,f_y,o_c fx,or,fy,oc,被称为相机的内部参数,对于给定相机,这些参数是固定不变的值。

确定相机参数

  1. 灭点的概念确定参数 o r , o c o_r,o_c or,oc
    灭点:世界坐标系中的一组平行线将会投射到一组图像线上,这些图像线将会交于一点,即灭点。
    对于世界坐标系中的三组相互正交的平行线,他们的灭点定义了一个三角形,其垂心就是图像的主点
    在这里插入图片描述
  2. 确定剩余的相机参数
    剩下的相机参数可以通过构造线性方程组完成。
    • 第一步:获得形如 { r i , c i , x i , y i , z i } \{r_i,c_i,x_i,y_i,z_i\} {ri,ci,xi,yi,zi}的一组数据坐标。
    • 建立线性方程组。相机的外部参数如下给出
      (4) R = [ r 11 r 12 r 13 r 21 r 22 r 23 r 31 r 32 r 33 ] , T = [ T x T y T z ] R=\left[\begin{matrix} r_{11} & r_{12} & r_{13} \\ r_{21} & r_{22} & r_{23} \\ r_{31} & r_{32} & r_{33} \end{matrix}\right],\quad T=\left[\begin{matrix} T_x\\T_y\\T_z \end{matrix}\right]\tag{4} R=r11r21r31r12r22r32r13r23r33,T=TxTyTz(4)
      相机参考系下的坐标 ( x c , y c , z c ) (x^c,y^c,z^c) (xc,yc,zc)和世界坐标系下的坐标 ( x , y , z ) (x,y,z) (x,y,z)的关系可由下式给出
      (5) { x c = r 11 x + r 12 y + r 13 z + T x y c = r 21 x + r 22 y + r 23 z + T y z c = r 31 x + r 32 y + r 33 z + T z \left\{\begin{matrix} x^c=r_{11}x+r_{12}y+r_{13}z+T_x \\ y^c=r_{21}x+r_{22}y+r_{23}z+T_y \\ z^c=r_{31}x+r_{32}y+r_{33}z+T_z \\ \end{matrix}\right.\tag{5} xc=r11x+r12y+r13z+Txyc=r21x+r22y+r23z+Tyzc=r31x+r32y+r33z+Tz(5)
      联立式(2),(3)和(5),可以得到 (6) r − o r = − f x x c z c = − f x r 11 x + r 12 y + r 13 z + T x r 31 x + r 32 y + r 33 z + T z c − o c = − f y y c z c = − f y r 21 x + r 22 y + r 23 z + T y r 31 x + r 32 y + r 33 z + T z \begin{aligned} r-o_r=-f_x\frac{x^c}{z^c}=-f_x\frac{r_{11}x+r_{12}y+r_{13}z+T_x }{r_{31}x+r_{32}y+r_{33}z+T_z}\\ c-o_c=-f_y\frac{y^c}{z^c}=-f_y\frac{r_{21}x+r_{22}y+r_{23}z+T_y}{r_{31}x+r_{32}y+r_{33}z+T_z} \end{aligned}\tag{6} ror=fxzcxc=fxr31x+r32y+r33z+Tzr11x+r12y+r13z+Txcoc=fyzcyc=fyr31x+r32y+r33z+Tzr21x+r22y+r23z+Ty(6)
    1. 为了简化计算,令 r ← r − o r , c ← c − o c r\leftarrow r-o_r,c\leftarrow c-o_c rror,ccoc
      对于数据点 { r i , c i , x i , y i , z i } \{r_i,c_i,x_i,y_i,z_i\} {ri,ci,xi,yi,zi},上式相除,可以得到 r i f y ( r 21 x i + r 22 y i + r 23 z i + T y ) = c i f x ( r 11 x i + r 12 y i + r 13 z i + T x ) r_if_y(r_{21}x_i+r_{22}y_i+r_{23}z_i+T_y)=c_if_x(r_{11}x_i+r_{12}y_i+r_{13}z_i+T_x) rify(r21xi+r22yi+r23zi+Ty)=cifx(r11xi+r12yi+r13zi+Tx)
      若设 α = f x / f y \alpha=f_x/f_y α=fx/fy,则
      r i r 21 x i + r i r 22 y i + r i r 23 z i + T y − α c i r 11 y i − α c i r 12 y i − α c i r 13 z i − α c i T x = 0 r_ir_{21}x_i+r_ir_{22}y_i+r_ir_{23}z_i+T_y-\alpha c_ir_{11}y_i-\alpha c_ir_{12}y_i-\alpha c_ir_{13}z_i-\alpha c_iT_x=0 rir21xi+rir22yi+rir23zi+Tyαcir11yiαcir12yiαcir13ziαciTx=0
      将N个方程联立,则得到矩阵方程,形式可写成 A x = 0 Ax=0 Ax=0其中 x = ( r 21 , r 22 , r 23 , T y , α r 11 , α r 12 , α r 13 , α T x ) T \LARGE x=(r_{21},r_{22},r_{23,T_y,\alpha r_{11},\alpha r_{12},\alpha r_{13},\alpha T_x})^T x=(r21,r22,r23,Ty,αr11,αr12,αr13,αTx)T
      我们可以计算得到方程的一个解 x ‾ \overline{x} x,若期望解为 x x x,则二者存在线性关系,即存在 k ∈ R k\in R kR,使得 x ‾ = k ⋅ x \overline{x}=k\cdot x x=kx
    2. 旋转矩阵存 R R R在以下约束条件
      ( x 1 ‾ 2 + x 2 ‾ 2 + x 3 ‾ 2 ) = ( k 2 ( r 21 2 + r 22 2 + r 23 2 ) ) 1 2 = ∣ k ∣ (\overline{x_1}^2+\overline{x_2}^2+\overline{x_3}^2)=(k^2(r_{21}^2+r_{22}^2+r_{23}^2))^{\frac{1}{2}}=|k| (x12+x22+x32)=(k2(r212+r222+r232))21=k
      同样有 ( x 5 ‾ 2 + x 6 ‾ 2 + x 7 ‾ 2 ) = ( α 2 k 2 ( r 21 2 + r 22 2 + r 23 2 ) ) 1 2 = α ∣ k ∣ (\overline{x_5}^2+\overline{x_6}^2+\overline{x_7}^2)=(\alpha^2k^2(r_{21}^2+r_{22}^2+r_{23}^2))^{\frac{1}{2}}=\alpha|k| (x52+x62+x72)=(α2k2(r212+r222+r232))21=αk
      根据定义 α = f x / f y \alpha=f_x/f_y α=fx/fy α &gt; 0 \alpha&gt;0 α>0。关于 k k k值符号的选择,我们选择使 r x c &lt; 0 rx^c&lt;0 rxc<0 k k k值。由式(6)及 f x &gt; 0 , z c &gt; 0 f_x&gt;0,z^c&gt;0 fx>0,zc>0 r r r x c x^c xc异号。故有 r x c &lt; 0 rx^c&lt;0 rxc<0
    3. 此时我们已经确定了 k , α , r 21 , r 22 , r 23 , r 11 , r 12 , r 13 , T x , T y k,\alpha,r_{21},r_{22},r_{23},r_{11},r_{12},r_{13},T_x,T_y k,α,r21,r22,r23,r11,r12,r13,Tx,Ty参数的取值,剩下的任务就是确定 T z , f x , f y T_z,f_x,f_y Tz,fx,fy的取值,同理可以求出。
  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值