《视觉SLAM十四讲》-- 相机与图像

04 相机与图像

4.1 相机模型

4.1.1 针孔相机模型

针孔模型描述了一束光线通过针孔后,在针孔背面投影成像的关系(类似小孔成像原理)。

《视觉SLAM十四讲》-- 相机与图像_第1张图片

根据相似三角关系

Z f = − X X ′ = − Y Y ′ (3-1) \frac{Z}{f}=-\frac{X}{X^{\prime}}=-\frac{Y}{Y^{\prime}} \tag{3-1} fZ=XX=YY(3-1)

其中,负号表示成的像是倒立的。

但实际相机得到的图像并不是倒像,我们等价地将成像平面对称地放到相机前方,这样就可以把负号去掉,
《视觉SLAM十四讲》-- 相机与图像_第2张图片

Z f = X X ′ = Y Y ′ (3-2) \frac{Z}{f}=\frac{X}{X^{\prime}}=\frac{Y}{Y^{\prime}} \tag{3-2} fZ=XX=YY(3-2)

整理得

{ X ′ = f X Z Y ′ = f Y Z (3-3) \left\{\begin{array}{l} {X^{\prime}}=f\frac{X}{Z} \\ \\ {Y^{\prime}}=f\frac{Y}{Z} \end{array}\right. \tag{3-3} X=fZXY=fZY(3-3)

像素坐标与成像平面之间,相差了一个缩放和一个原点的平移。假设像素坐标在 u u u 轴上缩放了 α \alpha α 倍, 在 v v v 轴上缩放了 β \beta β 倍,同时,原点平移了 [ c x , c y ] T [c_x, c_y]^T [cx,cy]T。那么, P ′ P' P 在成像平面坐标系和像素坐标系之间的关系为:

《视觉SLAM十四讲》-- 相机与图像_第3张图片

{ u = α X ′ + c x v = β Y ′ + c y (3-4) \left\{\begin{array}{l} u=\alpha X^{\prime}+c_{x} \\ v=\beta Y^{\prime}+c_{y} \end{array}\right. \tag{3-4} {u=αX+cxv=βY+cy(3-4)

代入式(3-3),得

{ u = α f X Z + c x v = β f Y Z + c y (3-5) \left\{\begin{array}{l} u=\alpha f \frac{X}{Z}+c_{x} \\ \\ v=\beta f \frac{Y}{Z}+c_{y} \end{array}\right. \tag{3-5} u=αfZX+cxv=βfZY+cy(3-5)
α f = f x , \alpha f=f_x, αf=fx, β f = f y \beta f=f_y βf=fy

{ u = f x X Z + c x v = f y Y Z + c y (3-6) \left\{\begin{array}{l} u=f_{x} \frac{X}{Z}+c_{x} \\ \\ v=f_{y} \frac{Y}{Z}+c_{y} \end{array}\right. \tag{3-6} u=fxZX+cxv=fyZY+cy(3-6)

写成矩阵形式

[ u v 1 ] = 1 Z [ f x 0 c x 0 f y c y 0 0 1 ] [ X Y Z ] =  def  1 Z K P (3-7) \left[\begin{array}{l} u \\ v \\ 1 \end{array}\right]=\frac{1}{Z}\left[\begin{array}{ccc} f_{x} & 0 & c_{x} \\ 0 & f_{y} & c_{y} \\ 0 & 0 & 1 \end{array}\right]\left[\begin{array}{c} X \\ Y \\ Z \end{array}\right] \stackrel{\text { def }}{=} \frac{1}{Z} \boldsymbol{K} \boldsymbol{P} \tag{3-7} uv1 =Z1 fx000fy0cxcy1 XYZ = def Z1KP(3-7)

Z Z Z 移到左边

Z [ u v 1 ] = [ f x 0 c x 0 f y c y 0 0 1 ] [ X Y Z ] =  def  K P (3-8) Z\left[\begin{array}{l} u \\ v \\ 1 \end{array}\right]=\left[\begin{array}{ccc} f_{x} & 0 & c_{x} \\ 0 & f_{y} & c_{y} \\ 0 & 0 & 1 \end{array}\right]\left[\begin{array}{c} X \\ Y \\ Z \end{array}\right] \stackrel{\text { def }}{=} \boldsymbol{K} \boldsymbol{P} \tag{3-8} Z uv1 = fx000fy0cxcy1 XYZ = def KP(3-8)

中间的矩阵称为相机内参数,一般在相机出厂后便已确定。

由于相机在运动,点 P P P 的相机坐标应由他的世界坐标( P w P_w Pw)根据相机当前位姿变换得到

Z P u v = Z [ u v 1 ] = K P = K ( R P w + t ) = K T P w (3-9) Z \boldsymbol{P}_{u v}=Z\left[\begin{array}{l} u \\ v \\ 1 \end{array}\right]=\boldsymbol{K} \boldsymbol{P}=\boldsymbol{K}\left(\boldsymbol{R} \boldsymbol{P}_{\mathrm{w}}+\boldsymbol{t}\right)=\boldsymbol{K} \boldsymbol{T} \boldsymbol{P}_{\mathrm{w}} \tag{3-9} ZPuv=Z uv1 =KP=K(RPw+t)=KTPw(3-9)
其中, R \boldsymbol{R} R t \boldsymbol{t} t外参

上式描述了从世界坐标系相机坐标系再到像素坐标系的过程。

将世界坐标转换到相机坐标后,再除掉最后一维的数值,这相当于把最后一维作归一化处理,得到它在归一化平面上的投影:

( R P w + t ) = [ X , Y , Z ] T ⏟ 相机坐标  → [ X / Z , Y / Z , 1 ] T ⏟ 归一化坐标  \left(\boldsymbol{R} \boldsymbol{P}_{\mathrm{w}}+\boldsymbol{t}\right)=\underbrace{[X, Y, Z]^{\mathrm{T}}}_{\text {相机坐标 }} \rightarrow \underbrace{[X / Z, Y / Z, 1]^{\mathrm{T}}}_{\text {归一化坐标 }} (RPw+t)=相机坐标  [X,Y,Z]T归一化坐标  [X/Z,Y/Z,1]T

可知,点的深度信息在投影过程中丢失了(变成二维),所以单目视觉无法得到像素点深度值。

4.1.2 畸变模型

(1)由透镜形状引起的畸变称为径向畸变,一般有桶形畸变枕形畸变两类。

《视觉SLAM十四讲》-- 相机与图像_第4张图片

对于径向畸变,离中心距离越远,畸变越严重;穿过图像中心和光轴有交点的直线形状不变。

(2)在相机组装过程中,透镜和成像平面无法完全平行,会产生切向畸变

(3)下面用数学模型进行描述:假设归一化平面上存在一点 P P P,坐标为 [ x , y ] T [x, y]^T [x,y]T,极坐标为 [ r , θ ] T [r, \theta]^T [r,θ]T,那么,正常归一化平面坐标和畸变后的坐标之间的关系为

{ x d i s t o r t e d = x ( 1 + k 1 r 2 + k 2 r 4 + k 3 r 6 ) y d i s t o r t e d = y ( 1 + k 1 r 2 + k 2 r 4 + k 3 r 6 ) (3-10) \left\{\begin{array}{l} x_{distorted}=x(1+k_1r^2+k_2r^4+k_3r^6)\\ \\ y_{distorted}=y(1+k_1r^2+k_2r^4+k_3r^6) \end{array}\right. \tag{3-10} xdistorted=x(1+k1r2+k2r4+k3r6)ydistorted=y(1+k1r2+k2r4+k3r6)(3-10)

类似的,切向畸变数学模型为

{ x distorted  = x + 2 p 1 x y + p 2 ( r 2 + 2 x 2 ) y distorted  = y + p 1 ( r 2 + 2 y 2 ) + 2 p 2 x y (3-11) \left\{\begin{array}{l} \begin{aligned} &x_{\text {distorted }}=x+2 p_{1} x y+p_{2}\left(r^{2}+2 x^{2}\right) \\ &y_{\text {distorted }}=y+p_{1}\left(r^{2}+2 y^{2}\right)+2 p_{2} x y \end{aligned} \end{array}\right. \tag{3-11} {xdistorted =x+2p1xy+p2(r2+2x2)ydistorted =y+p1(r2+2y2)+2p2xy(3-11)

(4)去畸变的过程:

  • 将三维空间上的点投影到归一化平面,得到坐标 [ x , y ] T [x, y]^T [x,y]T

  • 计算径向畸变和切向畸变

{ x d i s t o r t e d = x ( 1 + k 1 r 2 + k 2 r 4 + k 3 r 6 ) + 2 p 1 x y + p 2 ( r 2 + 2 x 2 ) y d i s t o r t e d = y ( 1 + k 1 r 2 + k 2 r 4 + k 3 r 6 ) + p 1 ( r 2 + 2 y 2 ) + 2 p 2 x y (3-12) \left\{\begin{array}{l} x_{distorted}=x(1+k_1r^2+k_2r^4+k_3r^6)+2 p_{1} x y+p_{2}\left(r^{2}+2 x^{2}\right)\\ \\ y_{distorted}=y(1+k_1r^2+k_2r^4+k_3r^6)+p_{1}\left(r^{2}+2 y^{2}\right)+2 p_{2} x y \end{array}\right. \tag{3-12} xdistorted=x(1+k1r2+k2r4+k3r6)+2p1xy+p2(r2+2x2)ydistorted=y(1+k1r2+k2r4+k3r6)+p1(r2+2y2)+2p2xy(3-12)

  • 通过内参矩阵将相机坐标投影到像素平面。
    《视觉SLAM十四讲》-- 相机与图像_第5张图片

(5)单目相机的成像过程

  • 世界坐标系下一点 P w P_w Pw

  • 经旋转平移得到相机坐标 P ~ c = R P w + t \tilde{P}_{\mathrm{c}}=\boldsymbol{RP_w+t} P~c=RPw+t

  • 将坐标的三个分量分别除以 Z Z Z,得到归一化坐标 P c = [ X / Z , Y / Z , 1 ] T P_c=[X/Z, Y/Z, 1]^T Pc=[X/Z,Y/Z,1]T

  • 计算发生畸变后的坐标;

  • 经过内参矩阵,得到像素坐标 P u v = K P c \boldsymbol{P}_{uv}=\boldsymbol{KP_c} Puv=KPc

4.1.3 双目相机模型

《视觉SLAM十四讲》-- 相机与图像_第6张图片

其中, O L O_L OL O R O_R OR为左右相机光圈中心,两者之间的距离称为基线 f f f 为焦距; u R u_R uR 为负数,需加负号。

根据几何关系,有

z − f z = b − ( u L − u R ) b = b − u L + u R b (3-13) \frac {z-f}{z}=\frac {b-(u_L-u_R)} {b}=\frac {b-u_L+u_R} {b} \tag{3-13} zzf=bb(uLuR)=bbuL+uR(3-13)

定义 d = u L − u R d=u_L-u_R d=uLuR,称为视差, 整理上式得,

z = f b d (3-14) z=\frac {fb}{d} \tag{3-14} z=dfb(3-14)

可见,视差越大,距离越近。基线 b b b 越大,可测量的距离就越大;反之,小型双目器件只能测量很近的距离。

4.1.4 RGB-D 相机模型

RGB-D 相机可以主动测量每个像素的深度,按原理可分为两类:

  • 通过红外结构光原理测量像素距离。

  • 通过飞行时间原理测量像素距离。

《视觉SLAM十四讲》-- 相机与图像_第7张图片

RGB-D 相机容易受到日光或其他传感器的干扰,因此不能在室外使用。

4.2 图像

《视觉SLAM十四讲》-- 相机与图像_第8张图片

你可能感兴趣的:(视觉SLAM十四讲,算法)