视觉SLAM_07_相机模型

说明:转发请注明作者和出处;以下文章内容为精简版,详细版以pdf格式的幻灯片形式呈现,请见链接:视觉SLAM_07_相机模型.pdf

0.目录

1.针孔相机模型

在这里插入图片描述

图1-1 针孔相机模型(摘自参考文献)

   O O O为摄像机光心,也是针孔模型中的针孔。现实世界的空间点 P = [ X , Y , Z ] T P=[X,Y,Z]^T P=[X,Y,Z]T,经过小孔 O O O投影后,落在物理成像平面 O ′ − x ′ − y ′ O^{'}-x^{'}-y^{'} Oxy上,成像点为 P ′ = [ X ′ , Y ′ , Z ′ ] T P^{'} = [X^{'},Y^{'},Z^{'}]^T P=[X,Y,Z]T,物理成像平面到小孔的距离为焦距 f f f
{ X ′ = f X Z Y ′ = f Y Z (1) \begin{cases} {} X^{'} = f \frac{X}{Z} & \\ Y^{'} = f \frac{Y}{Z} \tag{1} \end{cases} {X=fZXY=fZY(1)
在这里插入图片描述

图1-2 针孔相机模型(摘自参考文献)

像素坐标系通常的定义方式是:原点 o ′ o^{'} o位于图像的左上角, u u u轴向右与 x x x轴平行, v v v轴向下与 y y y轴平行。像素坐标系和成像平面之间,相差了一个缩放和一个原点平移。设像素坐标在 u u u轴上缩放了 α \alpha α倍,在 v v v轴上缩放了 β \beta β倍,同时,原点平移了 [ c x , c y ] T [c_x, c_y]^T [cx,cy]T,那么:
{ u = α X ′ + c x v = β Y ′ + c y (2) \begin{cases} {} u = \alpha X^{'} + c_x & \\ v = \beta Y^{'} + c_y \tag{2} \end{cases} {u=αX+cxv=βY+cy(2) 即: { u = f x X Z + c x v = f y Y Z + c y (3) \begin{cases} {} u = f_x \frac{X}{Z} + c_x & \\ v = f_y \frac{Y}{Z} + c_y \tag{3} \end{cases} {u=fxZX+cxv=fyZY+cy(3)写成矩阵形式:
Z [ u v 1 ] = [ f x 0 c x 0 f y c y 0 0 1 ] [ X Y Z ] = d e f K P (4) Z \begin{bmatrix} u \\ v \\ 1 \end{bmatrix} = \begin{bmatrix} f_x & 0 & c_x \\ 0 & f_y & c_y \\ 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} X \\ Y \\ Z \end{bmatrix} \overset{def}{=} \boldsymbol K \boldsymbol P \tag{4} Zuv1=fx000fy0cxcy1XYZ=defKP(4)矩阵 K \boldsymbol K K为相机内参数,相机内参出厂之后是固定的,不会在使用过程中发生变化。
  公式(4)中 P P P是在相机坐标系下的坐标,变换到世界坐标系下(记为 P w \boldsymbol P_w Pw):
Z P u v = Z [ u v 1 ] = K ( R P w + t ) = K T P w (5) Z \boldsymbol P_{uv} = Z \begin{bmatrix} u \\ v \\ 1 \end{bmatrix} = \boldsymbol{K} (\boldsymbol{R} \boldsymbol P_w + \boldsymbol t) = \boldsymbol{K} \boldsymbol{T} \boldsymbol P_w \tag{5} ZPuv=Zuv1=K(RPw+t)=KTPw(5) 相机的位姿 R , t \boldsymbol R, \boldsymbol{t} R,t又称为相机的外参数,外参会随着相机运动而改变,也是SLAM中待估计的目标,代表着机器人的轨迹。

2.畸变模型

  为了获得好的成像效果,在相机前方加了透镜,透镜的加入会对成像过程中光线的传播产生新的影响:一是透镜自身的形状对光线传播的影响;二是在机械组装过程中,透镜和成像平面不可能完全平行,这也会使光线穿过透镜投影到成像平面时的位置发生变化。

  由透镜形状引起的畸变(Distortion, 也叫失真)称为径向畸变,主要分为两大类:桶形畸变和枕形畸变,如图2-1所示。

  桶形畸变图像放大率随若与光轴之间的距离增加而减小,而枕形畸变则恰好相反。在这两种畸变中,穿过图像中心和光轴有交点的直线还能保持形状不变。

  除了透镜的形状会引入径向畸变,由于在相机的组装过程中不能使透镜和成像面严格平行,所以也会引入切向畸变,如图2-2所示。
在这里插入图片描述

2-1 径向畸变的两种类型(摘自参考文献)

在这里插入图片描述

2-2 切向畸变来源示意图(摘自参考文献)

  考虑归一化平面上的任意一点 p \boldsymbol p p, 它的坐标为 [ x , y ] T [x,y]^T [x,y]T,也可写成极坐标的形式 [ r , 0 ] T [r,0]^T [r,0]T。可以通过5个畸变系数找到这个点在像素平面上的正确位置:

  • 将三维空间点投影到归一化图像平面。设它的归一化坐标为 [ 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 x 2 ) + 2 p 2 x y \begin{cases} {} x_{distorted} = 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_{distorted} = y (1 + k_1 r^2 + k_2 r^4 + k_3 r^6) + p_1 (r^2 + 2 x^2) + 2 p_2 x y \end{cases} {xdistorted=x(1+k1r2+k2r4+k3r6)+2p1xy+p2(r2+2x2)ydistorted=y(1+k1r2+k2r4+k3r6)+p1(r2+2x2)+2p2xy
  • 将畸变后的点通过内参数矩阵投影到像素平面,得到该点在图像上的正确位置。
    { u = f x ⋅ x d i s t o r t e d + c x v = f y ⋅ y d i s t o r t e d + c y \begin{cases} {} u = f_x \cdot x_{distorted} + c_x & \\ v = f_y \cdot y_{distorted} + c_y \end{cases} {u=fxxdistorted+cxv=fyydistorted+cy   单目相机的成像过程总结:
  • 世界坐标系下有一个固定的点P, 世界坐标为 P w \boldsymbol P_w Pw
  • 由于相机在运动,它的运动由 R \boldsymbol R R t \boldsymbol t t或变换矩阵 T ∈ S E ( 3 ) \boldsymbol T \in SE(3) TSE(3)描述。P的相机坐标为 P c = R P w + t \boldsymbol P_c =\boldsymbol R \boldsymbol P_w + \boldsymbol t Pc=RPw+t
  • 这时的 P c \boldsymbol P_c Pc的分量为 X , Y , Z X,Y,Z X,Y,Z, 把它们投影到归一化平面 Z = l Z = l Z=l上,得到P的归一化坐标:
    P c = [ X / Z , Y / Z , 1 ] \boldsymbol P_c = [X/Z, Y/Z, 1] Pc=[X/Z,Y/Z,1]
  • 有畸变时,根据畸变参数计算 P c \boldsymbol P_c Pc发生畸变后的坐标。
  • P的归一化坐标经过内参后,对应到它的像素坐标: P u v = K P c \boldsymbol P_{uv} = \boldsymbol K \boldsymbol P_c Puv=KPc

3.双目相机模型

  仅根据一个像素,我们无法确定这个空间点的具体位置。这是因为,从相机光心到归一化平面连线上的所有点,都可以投影至该像素上。只有当P的深度确定时,我们才能确切地知道它的空间位置,如图3-1所示:
在这里插入图片描述

图3-1 像素点可能存在的位置(摘自参考文献)

  测显像素距离(或深度)的方式有很多种,下面简单介绍双目相机的成像原理,如图3-2所示:
在这里插入图片描述

图3-2 双目相机的成像模型(摘自参考文献)

O L , O R O_L, O_R OL,OR为左右光圈中心, 方框为成像平面, f f f为焦距。 u L u_L uL u R u_R uR为成像平面的坐标。请注意, 按照图中坐标定义,和 u R u_R uR应该是负数, 所以图中标出的距离为和 − u R -u_R uR

根据图3-2,有:
z − f z = b − u L + u R b \frac{z-f}{z} = \frac{b - u_L + u_R}{b} zzf=bbuL+uR 整理得:
z = f b u L − u R = f b d z = \frac{fb}{u_L - u_R} = \frac{fb}{d} z=uLuRfb=dfb 其中 d d d定义为左右图的横坐标之差,称为视差。

  • 由千视差最小为一个像素,于是双目的深度存在一个理论上的最大值,由 f b fb fb确定。
  • 基线越长,双目能测到的最大距离就越远,反之,小型双目器件则只能测量很近的距离。

4.RGB-D相机模型

  目前的RGB-D相机按原理可分为两大类,如图4-1 所示:

  • 通过红外结构光(Structured Light) 原理测量像素距离。
  • 通过飞行时间(Time-of-Flight, ToF) 原理测批像素距离。

  无论是哪种类型, RGB-D相机都需要向探测目标发射一束光线(通常是红外光)。在红外结构光原理中,相机根据返回的结构光图案,计算物体与自身之间的距离。而在ToF原理中,相机向目标发射脉冲光,然后根据发送到返回之间的光束飞行时间,确定物体与自身的距离。
在这里插入图片描述

图4-1 RGB-D相机原理示意图(摘自参考文献)

5.参考文献

  • 高翔等. 视觉SLAM十四讲:从理论到实践第二版. 北京:电子工业出版社,2019.8.
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一字艺

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值