【相机模型】相机投影关系
最近一直在从事单目相机测距相关工作,相机模型是一个绕不过的知识点,索性趁此总结,以供后续查阅。1.前置知识进行相机模型介绍前,需要对基本的坐标系变换公式有一个了解。1.1 坐标系旋转公式图1.坐标轴旋转图示原直角坐标系 xyzxyzxyz绕原点逆时针旋转 θ\thetaθ 角度,得到新坐标系x′y′z′x'y'z'x′y′z′,则原来的坐标系下R点坐标[x,y,z][x,y,z][x,y,z]与新
最近一直在从事单目相机测距相关工作,相机模型是一个绕不过的知识点,索性趁此总结,以供后续查阅。
1.前置知识
进行相机模型介绍前,需要对基本的坐标系变换公式有一个了解。
1.1 坐标系旋转公式

如图1所示:(右手坐标系)直角坐标系 x ′ y ′ z ′ x'y'z' x′y′z′绕 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θ0−sinθcosθ0111⎦⎤ [ x ′ y ′ z ′ ] \begin{bmatrix} x'\\ y'\\ z'\\ \end{bmatrix} ⎣⎡x′y′z′⎦⎤=R1 [ x ′ y ′ z ′ ] \begin{bmatrix} x'\\ y'\\ z'\\ \end{bmatrix} ⎣⎡x′y′z′⎦⎤
同理:绕 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ϕ0−sinϕcosϕ⎦⎤ [ x ′ y ′ z ′ ] \begin{bmatrix} x'\\ y'\\ z'\\ \end{bmatrix} ⎣⎡x′y′z′⎦⎤=R2 [ x ′ y ′ z ′ ] \begin{bmatrix} x'\\ y'\\ z'\\ \end{bmatrix} ⎣⎡x′y′z′⎦⎤
[ 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ω0−sinω010sinω0cosω⎦⎤ [ x ′ y ′ z ′ ] \begin{bmatrix} x'\\ y'\\ z'\\ \end{bmatrix} ⎣⎡x′y′z′⎦⎤=R3 [ x ′ y ′ z ′ ] \begin{bmatrix} x'\\ y'\\ z'\\ \end{bmatrix} ⎣⎡x′y′z′⎦⎤
故可得旋转向量: R = R 1 ∗ R 2 ∗ R 3 R=R_1*R_2*R_3 R=R1∗R2∗R3
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} ⎣⎡x′y′z′⎦⎤=R1 [ x ′ y ′ z ′ ] \begin{bmatrix} x'\\ y'\\ z'\\ \end{bmatrix} ⎣⎡x′y′z′⎦⎤
1.2 坐标系平移公式
若坐标系无旋转,前后仅平移,则
[ x y z ] \begin{bmatrix} x\\ y\\ z\\ \end{bmatrix} ⎣⎡xyz⎦⎤= [ x ′ y ′ z ′ ] \begin{bmatrix} x'\\ y'\\ z'\\ \end{bmatrix} ⎣⎡x′y′z′⎦⎤+ [ 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} ⎣⎡x′y′z′⎦⎤+ [ 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⎦⎥⎥⎤
引入齐次坐标的好处:
2. 相机投影公式
2.1 坐标系介绍
在进行相机投影公式推导前,需先对相关坐标系进行声明:
如图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 世界坐标系到相机坐标系坐标转换

世界坐标系到相机坐标系的转换只涉及到坐标系的旋转平移过程,可得
[ 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 相机坐标系到图像坐标系坐标转换

小孔成像模型下,相机坐标系->图像坐标系的坐标转换由简单的相似三角形推导可得:
2.4 图像坐标->像素坐标

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

世界坐标系->像素坐标系
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]为相机外参
相机坐标系->像素坐标系
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. 畸变模型补充


参考:
更多推荐

所有评论(0)