【相机模型】相机投影关系

最近一直在从事单目相机测距相关工作,相机模型是一个绕不过的知识点,索性趁此总结,以供后续查阅。


1.前置知识

进行相机模型介绍前,需要对基本的坐标系变换公式有一个了解。

1.1 坐标系旋转公式

在这里插入图片描述

图1.坐标轴旋转图示

如图1所示:(右手坐标系)直角坐标系 x ′ y ′ z ′ x'y'z' xyz z ′ z' z顺时针旋转 θ \theta θ 角度,得到新坐标系

x y z xyz xyz,则原来的坐标系下R点坐标 [ x ′ , y ′ , z ′ ] [x',y',z'] [x,y,z]与新坐标系下R点坐标 [ x , y , z ] [x,y,z] [x,y,z]关系为:

[ x y z ] \begin{bmatrix} x\\ y\\ z\\ \end{bmatrix} xyz= [ c o s θ − s i n θ 1 s i n θ c o s θ 1 0 0 1 ] \begin{bmatrix} cosθ&-sinθ&1\\ sinθ & cosθ& 1\\ 0&0&1\\ \end{bmatrix} cosθsinθ0sinθcosθ0111 [ x ′ y ′ z ′ ] \begin{bmatrix} x'\\ y'\\ z'\\ \end{bmatrix} xyz=R1 [ x ′ y ′ z ′ ] \begin{bmatrix} x'\\ y'\\ z'\\ \end{bmatrix} xyz

同理:绕 x x x y y y轴顺时针旋转 ϕ \phi ϕ, ω \omega ω :

[ x y z ] \begin{bmatrix} x\\ y\\ z\\ \end{bmatrix} xyz= [ 1 0 0 0 c o s ϕ − s i n ϕ 0 s i n ϕ c o s ϕ ] \begin{bmatrix} 1&0&0\\ 0 & cos\phi& -sin\phi\\ 0&sin\phi&cos\phi\\ \end{bmatrix} 1000cosϕsinϕ0sinϕcosϕ [ x ′ y ′ z ′ ] \begin{bmatrix} x'\\ y'\\ z'\\ \end{bmatrix} xyz=R2 [ x ′ y ′ z ′ ] \begin{bmatrix} x'\\ y'\\ z'\\ \end{bmatrix} xyz

[ x y z ] \begin{bmatrix} x\\ y\\ z\\ \end{bmatrix} xyz= [ c o s ω 0 s i n ω 0 1 0 − s i n ω 0 c o s ω ] \begin{bmatrix} cos\omega&0&sin\omega\\ 0 & 1& 0\\ -sin\omega&0&cos\omega\\ \end{bmatrix} cosω0sinω010sinω0cosω [ x ′ y ′ z ′ ] \begin{bmatrix} x'\\ y'\\ z'\\ \end{bmatrix} xyz=R3 [ x ′ y ′ z ′ ] \begin{bmatrix} x'\\ y'\\ z'\\ \end{bmatrix} xyz

故可得旋转向量: R = R 1 ∗ R 2 ∗ R 3 R=R_1*R_2*R_3 R=R1R2R3

PS:若为右手坐标系绕z轴逆时针旋转则:

[ x y z ] \begin{bmatrix} x\\ y\\ z\\ \end{bmatrix} xyz= [ c o s θ s i n θ 1 − s i n θ c o s θ 1 0 0 1 ] \begin{bmatrix} cosθ&sinθ&1\\ -sinθ & cosθ& 1\\ 0&0&1\\ \end{bmatrix} cosθsinθ0sinθcosθ0111 [ x ′ y ′ z ′ ] \begin{bmatrix} x'\\ y'\\ z'\\ \end{bmatrix} xyz=R1 [ x ′ y ′ z ′ ] \begin{bmatrix} x'\\ y'\\ z'\\ \end{bmatrix} xyz

1.2 坐标系平移公式

若坐标系无旋转,前后仅平移,则

[ x y z ] \begin{bmatrix} x\\ y\\ z\\ \end{bmatrix} xyz= [ x ′ y ′ z ′ ] \begin{bmatrix} x'\\ y'\\ z'\\ \end{bmatrix} xyz+ [ x T y T z T ] \begin{bmatrix} x_T\\ y_T\\ z_T\\ \end{bmatrix} xTyTzT

1.3 坐标系转换公式

所有坐标系(无缩放)转换过程均可分解为以上两个过程,即先旋转到指定坐标系方向,再平移过去,数学表示如下

[ x y z ] \begin{bmatrix} x\\ y\\ z\\ \end{bmatrix} xyz= R R R [ x ′ y ′ z ′ ] \begin{bmatrix} x'\\ y'\\ z'\\ \end{bmatrix} xyz+ [ x T y T z T ] \begin{bmatrix} x_T\\ y_T\\ z_T\\ \end{bmatrix} xTyTzT

齐次坐标表示:

[ x y z 1 ] \begin{bmatrix} x\\ y\\ z\\ 1\\ \end{bmatrix} xyz1= [ R 3 X 3 T 3 X 1 O 1 ] \begin{bmatrix} R_{3X3}&T_{3X1}\\ O&1\\ \end{bmatrix} [R3X3OT3X11] [ x y z 1 ] \begin{bmatrix} x\\ y\\ z\\ 1\\ \end{bmatrix} xyz1

引入齐次坐标的好处:

参考:Explaining Homogeneous Coordinates & Projective Geometry


2. 相机投影公式

2.1 坐标系介绍

在进行相机投影公式推导前,需先对相关坐标系进行声明:
在这里插入图片描述

图2.坐标系图示

如图2所示,相机投影中涉及到以下四个坐标系:

  • O w X w Y w Z w O_wX_wY_wZ_w OwXwYwZw:世界坐标系,一般为自定义坐标系
  • O c X c Y c Z c O_cX_cY_cZ_c OcXcYcZc:相机坐标系,光心为原点
  • o x y oxy oxy:图像坐标系,原点为图像中心,单位为mm
  • u v uv uv:像素坐标系,原点为图像左上角,单位为pixel

2.2 世界坐标系到相机坐标系坐标转换

在这里插入图片描述

图3.世界坐标系->相机坐标系图示

世界坐标系到相机坐标系的转换只涉及到坐标系的旋转平移过程,可得

[ X c Y c Z c ] \begin{bmatrix} X_c\\ Y_c\\ Z_c\\ \end{bmatrix} XcYcZc= R R R [ X w Y w Z w ] \begin{bmatrix} X_w\\ Y_w\\ Z_w\\ \end{bmatrix} XwYwZw+ T T T

齐次坐标表示:

[ X c Y c Z c 1 ] \begin{bmatrix} X_c\\ Y_c\\ Z_c\\ 1\\ \end{bmatrix} XcYcZc1= [ R 3 X 3 T 3 X 1 O 1 ] \begin{bmatrix} R_{3X3}&T_{3X1}\\ O&1\\ \end{bmatrix} [R3X3OT3X11] [ X w Y w Z w 1 ] \begin{bmatrix} X_w\\ Y_w\\ Z_w\\ 1\\ \end{bmatrix} XwYwZw1

2.3 相机坐标系到图像坐标系坐标转换

在这里插入图片描述

图4.相机坐标系->图像坐标系图示(小孔成像模型)

小孔成像模型下,相机坐标系->图像坐标系的坐标转换由简单的相似三角形推导可得:
在这里插入图片描述

2.4 图像坐标->像素坐标

在这里插入图片描述

2.5 总结:各坐标系间转换关系

在这里插入图片描述

  1. 世界坐标系->像素坐标系

Z C Z_C ZC [ u v 1 ] \begin{bmatrix} u\\ v\\ 1\\ \end{bmatrix} uv1= [ 1 d X 0 u 0 0 1 d Y v 0 0 0 1 ] \begin{bmatrix} \frac 1{dX}&0&u_0\\ 0&\frac 1{dY}&v_0\\ 0&0&1\\ \end{bmatrix} dX1000dY10u0v01 [ f 0 0 0 0 f 0 0 0 0 1 0 ] \begin{bmatrix} f&0&0&0\\ 0&f&0&0\\ 0&0&1&0\\ \end{bmatrix} f000f0001000 [ R 3 X 3 T 3 X 1 O 1 ] \begin{bmatrix} R_{3X3}&T_{3X1}\\ O&1\\ \end{bmatrix} [R3X3OT3X11] [ X w Y w Z w 1 ] \begin{bmatrix} X_w\\ Y_w\\ Z_w\\ 1\\ \end{bmatrix} XwYwZw1 =
[ f x 0 u 0 0 0 f y v 0 0 0 0 1 0 ] \begin{bmatrix} f_x&0&u_0&0\\ 0&f_y&v_0&0\\ 0&0&1&0\\ \end{bmatrix} fx000fy0u0v01000 [ R 3 X 3 T 3 X 1 O 1 ] \begin{bmatrix} R_{3X3}&T_{3X1}\\ O&1\\ \end{bmatrix} [R3X3OT3X11] [ X w Y w Z w 1 ] \begin{bmatrix} X_w\\ Y_w\\ Z_w\\ 1\\ \end{bmatrix} XwYwZw1

其中:

[ f x 0 u 0 0 0 f y v 0 0 0 0 1 0 ] \begin{bmatrix} f_x&0&u_0&0\\ 0&f_y&v_0&0\\ 0&0&1&0\\ \end{bmatrix} fx000fy0u0v01000即为内参矩阵

f x , f y f_x,f_y fx,fy为相机焦距, u 0 , v 0 u_0,v_0 u0,v0为相机光轴与相机成像平面的交点在像素坐标系下的坐标。

[ R 3 X 3 T 3 X 1 O 1 ] \begin{bmatrix} R_{3X3}&T_{3X1}\\ O&1\\ \end{bmatrix} [R3X3OT3X11]为相机外参

  1. 相机坐标系->像素坐标系

Z C Z_C ZC [ u v 1 ] \begin{bmatrix} u\\ v\\ 1\\ \end{bmatrix} uv1= [ f x 0 u 0 0 0 f y v 0 0 0 0 1 0 ] \begin{bmatrix} f_x&0&u_0&0\\ 0&f_y&v_0&0\\ 0&0&1&0\\ \end{bmatrix} fx000fy0u0v01000 [ X c Y c Z c 1 ] \begin{bmatrix} X_c\\ Y_c\\ Z_c\\ 1\\ \end{bmatrix} XcYcZc1

3. 畸变模型补充

在这里插入图片描述

在这里插入图片描述

参考:

  1. bilibili视频
  2. opencv官方介绍
  3. 摄像机标定(1) 标定中的四个坐标系(有部分错误)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值