Step1:模型 16个相机参数(内参、外参、畸变参数)

16个相机参数

摘要:本文首先介绍了针孔相机模型,然后推导四个坐标轴变换的关系,引出R、T、K、D中包含相机的5个内参,6个外参,5个畸变参数。相机的标定是从空间点及其对应的像素点,获得相机的位置信息和内部参数信息的过程,16个相机参数的总结为此提供了模型基础。

一、针孔相机模型

Step1:模型 16个相机参数(内参、外参、畸变参数)_第1张图片

相机中有四个坐标系,分别为{world},{camera},{image},{pixel}

  • {world}为世界坐标系,可以任意指定 x w x_w xw轴和 y w y_w yw
  • {camera}为相机坐标系,原点位于小孔,z轴与光轴重合, x c x_c xc轴和 y c y_c yc轴平行投影面
  • {image}为图像坐标系,原点位于光轴和投影面的交点, x p x_p xp轴和 y p y_p yp轴平行投影面
  • {pixel}为像素坐标系,从小孔向投影面方向看,投影面的左上角为原点 O p O_p Op i _i i x _x x,uv轴和投影面两边重合

Step1:模型 16个相机参数(内参、外参、畸变参数)_第2张图片
图片说明:{camera}:O c _c c-x c _c cy c _c cz c _c c,相机中心点Oc,焦距f。{picture}:O-xy,像平面π。主轴:从 O c O_c Oc出发,垂直于像平面的射线 。主点:主轴与像平面的交点p。

二、四个坐标轴的变换关系

介绍如何从世界坐标轴,通过相机坐标轴和像面坐标轴,得到像素坐标轴的变换的过程,即 w o r l d : P w = ( x w , y w , z w ) T world:P_w=(x_w,y_w,z_w)^T world:Pw=(xw,yw,zw)T-----> c a m e r a : P c = ( x c , y c , z c ) T camera:P_c=(x_c,y_c,z_c)^T camera:Pc=(xc,yc,zc)T------> i m a g e : m = ( x p , y p , 1 ) T image:m=(x_p,y_p,1)^T image:m=(xp,yp,1)T-----> p i x e l : P i x = ( u , v , 1 ) T pixel:Pix=(u,v,1)^T pixel:Pix=(u,v,1)T

2.1 从{world}到{camera}

设某点在{world}中的坐标为 P w = ( x w , y w , z w ) T Pw=(x_w,y_w,z_w)^T Pw=(xw,yw,zw)T,在{camera}中的坐标为 P c = ( x c , y c , z c ) T Pc=(x_c,y_c,z_c)^T Pc=(xc,yc,zc)T。则
P c = [ R T 0 1 ] P w P_c=\begin{bmatrix}R&T\\ 0&1\end{bmatrix}P_w Pc=[R0T1]Pw
其中,R为正交旋转矩阵,
R = [ r 11 r 12 r 13 r 21 r 22 r 23 r 31 r 32 r 33 ] R=\begin{bmatrix} r_{11} &r_{12}&r_{13}\\r_{21} &r_{22}&r_{23}\\ r_{31} &r_{32}&r_{33}\end{bmatrix} R=r11r21r31r12r22r32r13r23r33
T为平移矩阵, T = [ t x t y t z ] T T=\begin{bmatrix}t_x&t_y&t_z\end{bmatrix}^T T=[txtytz]T

2.2 从{camera}到{image}

设空间点 X c X_c Xc在{camera}下: P c = ( x c , y c , z c , 1 ) T P_c=(xc,yc,zc,1)^T Pc=(xc,yc,zc,1)T,其像点m在{image}的齐次坐标为 m = ( x p , y p , 1 ) T m=(x_p,y_p,1)^T m=(xp,yp,1)T。由图中相似三角形可得,
{ x p = f x c z c y p = f y c z c \left\{\begin{matrix} x_p=\frac{fx_c}{z_c} \\ \\ y_p=\frac{fy_c}{z_c}\end{matrix}\right. xp=zcfxcyp=zcfyc
写成矩阵表示为,
z c m = [ f 0 0 0 0 f 0 0 0 0 1 0 ] P c z_cm=\begin{bmatrix} f& 0& 0& 0 \\ 0& f& 0& 0 \\ 0& 0& 1& 0 \end{bmatrix}P_c zcm=f000f0001000Pc
实际中,主点可能不在图像坐标系原点,若主点在图像坐标系中的坐标为 p = ( x 0 , y 0 , 1 ) T p=(x_0,y_0,1)^T p=(x0,y0,1)T

z c m = [ f x f y 1 ] = [ f 0 x 0 0 0 f y 0 0 0 0 1 0 ] P c z_cm=\begin{bmatrix}fx\\ fy\\ 1\end{bmatrix}=\begin{bmatrix} f& 0& x_0& 0 \\ 0& f& y_0& 0 \\ 0& 0& 1& 0 \end{bmatrix}P_c zcm=fxfy1=f000f0x0y01000Pc

2.3 从{image}到{pixel}

假设一个像素的长和宽分别为dx,dy,设像素坐标 P i x = ( u , v , 1 ) T Pix=(u,v,1)^T Pix=(u,v,1)T,则
[ u v 1 ] = [ 1 / d x 0 0 0 1 / d y 0 0 0 1 ] [ x p y p 1 ] \begin{bmatrix}u\\v\\1\end{bmatrix}=\begin{bmatrix}1/d_x&0&0\\0&1/d_y&0\\0&0&1\end{bmatrix}\begin{bmatrix}x_p\\y_p\\1\end{bmatrix} uv1=1/dx0001/dy0001xpyp1
结合{camera}到{image}的变换,则{camera}到{pixel}的变换矩阵K为
K = [ 1 / d x 0 0 0 1 / d y 0 0 0 1 ] [ f 0 x 0 0 f y 0 0 0 1 ] = [ f x 0 u 0 0 f y v 0 0 0 1 ] K=\begin{bmatrix}1/d_x&0&0\\0&1/d_y&0\\0&0&1\end{bmatrix} \begin{bmatrix}f&0&x_0\\ 0& f& y_0 \\ 0& 0& 1\end{bmatrix} =\begin{bmatrix}f_x&0&u_0\\0&f_y&v_0\\0&0&1 \end{bmatrix} K=1/dx0001/dy0001f000f0x0y01=fx000fy0u0v01
其中, f x = f / d x f_x=f/dx fx=f/dx, f y = f / d y f_y=f/dy fy=f/dy,称为相机在u轴和v轴方向上的尺度因子。
相机主点为 ( u 0 , v 0 ) T = ( x 0 / d x , y 0 / d y ) T (u_0,v_0)^T=(x_0/dx,y_0/dy)^T (u0v0)T=(x0/dxy0/dy)T

2.4 综合:从{world}到{pixel}

四个坐标系的变换过程: w o r l d : P w = ( x w , y w , z w ) T world:P_w=(x_w,y_w,z_w)^T world:Pw=(xw,yw,zw)T-----> c a m e r a : P c = ( x c , y c , z c ) T camera:P_c=(x_c,y_c,z_c)^T camera:Pc=(xc,yc,zc)T-----> i m a g e : m = ( x p , y p , 1 ) T image:m=(x_p,y_p,1)^T image:m=(xp,yp,1)T-----> p i x e l : P i x = ( u , v , 1 ) T pixel:Pix=(u,v,1)^T pixel:Pix=(u,v,1)T
矩阵表示为:
z c [ u v 1 ] = K ⋅ [ R T 0 1 ] [ x w y w z w 1 ] z_c\begin{bmatrix}u\\ v\\ 1\end{bmatrix}=K·\begin{bmatrix} R&T \\0&1\end{bmatrix} \begin{bmatrix}x_w\\y_w\\z_w\\1\end{bmatrix} zcuv1=K[R0T1]xwywzw1

2.5 畸变参数

Step1:模型 16个相机参数(内参、外参、畸变参数)_第3张图片

2.5.1 径向畸变

径向畸变(桶形畸变和枕形畸变)产生原因:光线在远离透镜中心的地方偏折更大。矫正公式:
x c o r r e c t e d = x ( 1 + k 1 r 2 + k 2 r 4 + k 3 r 6 ) x_{corrected}=x(1+k_1r^2+k_2r^4+k_3r^6) xcorrected=x(1+k1r2+k2r4+k3r6) y c o r r e c t e d = y ( 1 + k 1 r 2 + k 2 r 4 + k 3 r 6 ) y_{corrected}=y(1+k_1r^2+k_2r^4+k_3r^6) ycorrected=y(1+k1r2+k2r4+k3r6)Step1:模型 16个相机参数(内参、外参、畸变参数)_第4张图片

2.5.2 切向畸变

切向畸变产生原因:透镜不完全平行于图像平面。矫正公式:
x c o r r e c t e d = x + [ 2 p 1 x y + p 2 ( r 2 + 2 x 2 ) ] x_{corrected}=x+[2p_1xy+p_2(r^2+2x^2)] xcorrected=x+[2p1xy+p2(r2+2x2)] y c o r r e c t e d = y + [ p 1 ( r 2 + 2 y 2 ) + 2 p 2 x y ] y_{corrected}=y+[p_1(r^2+2y^2)+2p_2xy] ycorrected=y+[p1(r2+2y2)+2p2xy]
由此得到相机的5个畸变参数: D ( k 1 , k 2 , k 3 , p 1 , p 2 ) D(k_1,k_2,k_3,p_1,p_2) Dk1,k2,k3,p1,p2

2.6 小结

综上,16个单目相机的参数:

  • 10个内部参数(只与相机有关):
    • 5个内部矩阵参数K: f f f, d x dx dx, d y dy dy, u 0 u_0 u0, v 0 v_0 v0
      (也可视作4个参数 f x f_x fx, f y f_y fy, u 0 u_0 u0, v 0 v_0 v0
    • 5个畸变参数D: k 1 , k 2 , k 3 , p 1 , p 2 k_1,k_2,k_3,p_1,p_2 k1,k2,k3,p1,p2
  • 6个外部参数(取决于相机在{world}的位置):
    • 3个旋转参数R
    • 3个平移参数T

推导:

1.【旋转矩阵】https://www.cnblogs.com/caster99/p/4703033.html
旋转矩阵是一个完美的矩阵——正交矩阵。它的行列式为1,且每个列向量都是单位向量且相互正交,它的逆等于它的转置。
2.【平移矩阵】http://frankorz.com/2017/09/24/matrix-transformation-2/ 平移矩阵,比较平移旋转及旋转平移,说明先旋转后平移的好处
3.【反射矩阵推导】https://www.cnblogs.com/wantnon/p/5630915.html
4.【相机畸变详细推导 】https://blog.csdn.net/waeceo/article/details/51024396
5.【6个参数 旋转平移下坐标变换】https://blog.csdn.net/xuelabizp/article/details/50314633

参考:

1.https://blog.csdn.net/xuelabizp/article/details/50314633
2.https://blog.csdn.net/u010128736/article/details/52850444
3.https://www.cnblogs.com/Jessica-jie/p/6596450.html?tdsourcetag=s_pctim_aiomsg
4.https://blog.csdn.net/yangdashi888/article/details/51356385
5.https://blog.csdn.net/a083614/article/details/78579163
6.https://blog.csdn.net/lql0716/article/details/71973318?locationNum=8&fps=1)

你可能感兴趣的:(相机标定)