相机成像模型 /相机标定

四个坐标系

世界坐标系:世界坐标系可以任意选择,为假想坐标系,在被指定后随即不变且唯一,即为绝对坐标系。除此之外的其他三个坐标系均为相对坐标系,是随着相机位姿的变化而变化的。因此当一张图像只包含有限信息,需要综合多张图片信息的时候,需要世界坐标系这样一个绝对坐标系将串联起所有图片的位置。通常选定第一张图像中的相机坐标系为世界坐标系。
相机坐标系:以相机光心位置为坐标原点,X 轴和Y 轴分别平行于图像坐标系的X轴和 Y 轴,Z轴为相机的光轴
图像坐标系:原点在成像的中心,X 轴和Y 轴分别平行于相机坐标系的X轴和 Y 轴
像素坐标系:原点在成像的左上角,U 轴和V 轴分别平行于相机坐标系的X轴和 Y 轴

世界坐标系( X w , Y w , Z w X_w,Y_w,Z_w Xw,Yw,Zw) → \rightarrow 相机坐标系( X c , Y c , Z c X_c,Y_c,Z_c Xc,Yc,Zc)

通过旋转和平移,将世界坐标系与相机坐标系重合,目的是将物体的点从用世界坐标系来表示转换为用相机坐标系来表示

二维坐标系旋转

点A在X-Y坐标系中的坐标为(a,b),坐标系旋转 θ \theta θ后,点A坐标为(m,n)
则有
[ m n ] = [ c o s θ s i n θ − s i n θ c o s θ ] [ a b ] \begin{bmatrix}m\\n\\\end{bmatrix}= \begin{bmatrix}cos\theta&sin\theta\\-sin\theta&cos\theta\\\end{bmatrix} \begin{bmatrix}a\\b\\\end{bmatrix} [mn]=[cosθsinθsinθcosθ][ab]
在这里插入图片描述

三维坐标系旋转

坐标系绕X轴旋转 θ \theta θ后,点坐标的转换可以表示为
[ x ′ y ′ z ′ ] = [ 1 0 0 0 c o s θ s i n θ 0 − s i n θ c o s θ ] [ x y z ] = R X [ x y z ] \begin{bmatrix}x^{'}\\y^{'}\\z^{'}\end{bmatrix}= \begin{bmatrix}1&0&0\\ 0&cos\theta&sin\theta\\ 0&-sin\theta&cos\theta\\\end{bmatrix} \begin{bmatrix}x\\y\\z\end{bmatrix} =R_X\begin{bmatrix}x\\y\\z\end{bmatrix} xyz = 1000cosθsinθ0sinθcosθ xyz =RX xyz

同理,绕Y轴和Z轴旋转后
[ x ′ y ′ z ′ ] = [ c o s θ 0 s i n θ 0 1 0 − s i n θ 0 c o s θ ] [ x y z ] = R Y [ x y z ] \begin{bmatrix}x^{'}\\y^{'}\\z^{'}\end{bmatrix}= \begin{bmatrix}cos\theta&0&sin\theta\\ 0&1&0\\ -sin\theta&0&cos\theta\\\end{bmatrix} \begin{bmatrix}x\\y\\z\end{bmatrix} =R_Y\begin{bmatrix}x\\y\\z\end{bmatrix} xyz = cosθ0sinθ010sinθ0cosθ xyz =RY xyz

[ x ′ y ′ z ′ ] = [ c o s θ s i n θ 0 − s i n θ c o s θ 0 0 0 1 ] [ x y z ] = R Z [ x y z ] \begin{bmatrix}x^{'}\\y^{'}\\z^{'}\end{bmatrix}= \begin{bmatrix}cos\theta&sin\theta&0\\ -sin\theta&cos\theta&0\\ 0&0&1\\\end{bmatrix} \begin{bmatrix}x\\y\\z\end{bmatrix} =R_Z\begin{bmatrix}x\\y\\z\end{bmatrix} xyz = cosθsinθ0sinθcosθ0001 xyz =RZ xyz

因此,三维坐标系中的旋转矩阵可以表示为
R = R X R Y R Z R = R_XR_YR_Z R=RXRYRZ
再加上平移矩阵 T = [ t x , t y , t z ] T T=[t_x,t_y, t_z]^T T=[tx,ty,tz]T,可以得到
[ X c Y c Z c ] = R [ X w Y w Z w ] + T = [ r 11 r 12 r 13 r 21 r 22 r 23 r 31 r 32 r 33 ] [ X w Y w Z w ] + [ t x t y t z ] \begin{aligned} \begin{bmatrix}X_c\\Y_c\\Z_c\end{bmatrix} &= R\begin{bmatrix}X_w\\Y_w\\Z_w\end{bmatrix}+T\\ &=\begin{bmatrix}r_{11}&r_{12}&r_{13}\\r_{21}&r_{22}&r_{23}\\r_{31}&r_{32}&r_{33}\\\end{bmatrix}\begin{bmatrix}X_w\\Y_w\\Z_w\end{bmatrix}+\begin{bmatrix}t_x\\t_y\\t_z\end{bmatrix} \end{aligned} XcYcZc =R XwYwZw +T= r11r21r31r12r22r32r13r23r33 XwYwZw + txtytz

将其写为齐次坐标形式,可以表示为
[ X c Y c Z c 1 ] = [ r 11 r 12 r 13 t x r 21 r 22 r 23 t y r 31 r 32 r 33 t z 0 0 0 1 ] [ X w Y w Z w 1 ] = [ R t 0 1 ∗ 3 1 ] [ X w Y w Z w 1 ] \begin{aligned} \begin{bmatrix}X_c\\Y_c\\Z_c\\1\end{bmatrix} &=\begin{bmatrix}r_{11}&r_{12}&r_{13}&t_x\\r_{21}&r_{22}&r_{23}&t_y\\r_{31}&r_{32}&r_{33}&t_z\\0&0&0&1\\\end{bmatrix}\begin{bmatrix}X_w\\Y_w\\Z_w\\1\end{bmatrix}\\ &=\begin{bmatrix}R&t\\0_{1*3}&1\\\end{bmatrix}\begin{bmatrix}X_w\\Y_w\\Z_w\\1\end{bmatrix} \end{aligned} XcYcZc1 = r11r21r310r12r22r320r13r23r330txtytz1 XwYwZw1 =[R013t1] XwYwZw1

相机坐标系( X c , Y c , Z c X_c,Y_c,Z_c Xc,Yc,Zc) → \rightarrow 图像坐标系( X , Y X,Y X,Y)

相机坐标系转图像坐标系.png

利用小孔成像原理和相似三角形完成转换
Z C f = X C x = Y C y x = f Z C X C , y = f Z C Y C \frac{Z_C}{f}=\frac{X_C}{x}=\frac{Y_C}{y}\\ x=\frac{f}{Z_C}X_{C},\quad y=\frac{f}{Z_C}Y_{C} fZC=xXC=yYCx=ZCfXC,y=ZCfYC
写成矩阵形式:
[ x y 1 ] = [ f Z C 0 0 0 f Z C 0 0 0 1 Z C ] [ X C Y C Z C ] Z C [ x y 1 ] = [ f 0 0 0 0 f 0 0 0 0 1 0 ] [ X C Y C Z C 1 ] \begin{aligned} \begin{bmatrix}x\\y\\1\end{bmatrix} &= \begin{bmatrix}\frac{f}{Z_C}&0&0\\ 0&\frac{f}{Z_C}&0\\ 0&0&\frac{1}{Z_C}\\\end{bmatrix} \begin{bmatrix}X_C\\Y_C\\Z_C\end{bmatrix}\\ 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} \end{aligned} xy1 ZC xy1 = ZCf000ZCf000ZC1 XCYCZC = f000f0001000 XCYCZC1

图像坐标系( X , Y X,Y X,Y) → \rightarrow 像素坐标系( U , V U,V U,V)

图像坐标系转像素坐标系

像素坐标系u-v的单位是pixel,图像坐标系x-y的单位是mm,令 d x / d y dx/dy dx/dy为一个pixel在 x / y x/y x/y轴上的物理尺寸(单位是mm/pixel), ( u 0 , v 0 ) (u_0, v_0) (u0,v0)为图像坐标系的原点在u-v坐标系下的位置,则这两个坐标系的换算公式为

u = 1 d x x + u 0 v = 1 d y y + v 0 u=\frac{1}{dx} x + u_{0} \quad v=\frac{1}{dy} y + v_0 u=dx1x+u0v=dy1y+v0
写成矩阵形式:
[ u v 1 ] = [ 1 d x 0 u 0 0 1 d y v 0 0 0 1 ] [ x y 1 ] \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} uv1 = dx1000dy10u0v01 xy1

综上

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 f 0 ] [ R t 0 1 ∗ 3 1 ] [ X w Y w Z w 1 ] = [ f d x 0 u 0 0 0 f d y v 0 0 0 0 1 0 ] [ R t 0 1 ∗ 3 1 ] [ X w Y w Z w 1 ] 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&f&0\\\end{bmatrix}\begin{bmatrix}R&t\\0_{1*3}&1\\\end{bmatrix}\begin{bmatrix}X_w\\Y_w\\Z_w\\1\end{bmatrix}=\begin{bmatrix}\frac{f}{dx}&0&u_0&0\\0&\frac{f}{dy}&v_0&0\\0&0&1&0\\\end{bmatrix}\begin{bmatrix}R&t\\0_{1*3}&1\\\end{bmatrix}\begin{bmatrix}X_w\\Y_w\\Z_w\\1\end{bmatrix} ZC uv1 = dx1000dy10u0v01 f000f000f000 [R013t1] XwYwZw1 = dxf000dyf0u0v01000 [R013t1] XwYwZw1
[ f d x 0 u 0 0 0 f d y v 0 0 0 0 1 0 ] \begin{bmatrix}\frac{f}{dx}&0&u_0&0\\0&\frac{f}{dy}&v_0&0\\0&0&1&0\\\end{bmatrix} dxf000dyf0u0v01000 被称为内参,其中含有5个未知参数: f , d x , d y , u 0 , v 0 f,dx,dy,u0,v0 f,dx,dy,u0,v0

[ R t 0 1 ∗ 3 1 ] \begin{bmatrix}R&t\\0_{1*3}&1\\\end{bmatrix} [R013t1]被称为外参,其中含有6个未知参数: θ x , θ y , θ z , t x , t y , t z \theta_x,\theta_y,\theta_z,t_x,t_y,t_z θx,θy,θz,tx,ty,tz

畸变

个人感觉SLAM十四讲里面讲的比较详细了,就不复制粘贴了。

参考文章

相机模型中的世界坐标系究竟指什么
坐标系旋转与点旋转的变换公式
《视觉SLAM十四讲》
第六节、双目视觉之相机标定

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值