视觉SLAM十四讲学习笔记——第五章 相机与图像

版权声明:这些都是咸鱼Nova最后的挣扎,各位大佬转载请注明出处 https://blog.csdn.net/weixin_40883049/article/details/87346132

在这里插入图片描述

5.1 相机模型

5.1.1 针孔相机模型

  1. 相机将三维世界中的坐标点(单位为米)映射到二维图像平面(单位为像素)的过程能够用一个几何模型进行描述,其中最简单的是针孔相机模型。
  2. 针孔相机模型模型的建立:设 O x y z O − x − y − z 为相机坐标系, O O 为摄像机的光心,也是针孔模型中的针孔。现实世界的空间点 P P ,经过小孔 O O 投影之后,落在物理成像平面 O x y O^′ − x^′ − y^′ 上,成像点为 P P^′ 。设 P P 的坐标为 [ X , Y , Z ] T [X, Y, Z]^T P P^′ [ X , Y , Z ] T [X^′, Y^′, Z^′]^T ,并且设物理成像平面到小孔的距离为 f f (焦距)。
    在这里插入图片描述
    根据三角形相似关系,有:
                在这里插入图片描述
    将成像平面对称至镜头前方,有:
                在这里插入图片描述
    在这里插入图片描述
    整理得:
                在这里插入图片描述
  3. 在相机中,最终获得的是一个个的像素,这需要在成像平面上对像进行采样和量化,设在物理成像平面上固定着一个像素平面 o u v o − u − v ,得到了 P P^′ 的像素坐标: [ u , v ] T [u, v]^T ,像素坐标系与成像平面之间,相差了一个缩放和一个原点的平移。
  4. 成像坐标与像素坐标的关系为:
                在这里插入图片描述
    其中: α , β α , β 是缩放倍率,单位是像素每米, c x , c y c_x, c_y 是平移量,单位是像素
  5. 与前式联立得:
                在这里插入图片描述
    其中, f x = α f , f y = β f f_x = αf, f_y = βf f x , f y fx, fy 的单位为像素。
  6. 矩阵形式:
         在这里插入图片描述
  7. 中间的量组成的矩阵称为相机的内参数矩阵(Camera Intrinsics) K \bm{K} ,通常情况下,相机的内参在出厂之后是固定的,不会在使用过程中发生变化。
  8. 标定:确定内参的过程。
  9. 若已知 P P 的世界坐标,则需要根据位姿来确定其在相机下的坐标:
         在这里插入图片描述
  10. 相机的位姿 R , t \bm{R}, \bm{t} 称为相机的外参数,外参会随着相机运动发生改变,同时也是 SLAM中待估计的目标,代表着机器人的轨迹。
  11. P P 在相机归一化平面上的投影:
            在这里插入图片描述
    P c \bm{P_c} 可以看成一个二维的齐次坐标,称为归一化坐标。它位于相机前方 z = 1 z = 1 处的平面上,该平面称为归一化平面。由于 P c \bm{P_c} 经过内参之后就得到了像素坐标,所以可以把像素坐标 [ u , v ] T [u, v]^T ,看成对归一化平面上的点进行量化测量的结果。

5.1.2 畸变

  1. 透镜对相机的影响:
    1. 透镜自身的形状对光线传播的影响
    2. 在机械组装过程中,透镜和成像平面不可能完全平行,使得光线穿过透镜投影到成像面时的位置发生变化。
  2. 径向畸变:由透镜形状引起的畸变,越靠近图像的边缘,这种现象越明显。
  3. 径向畸变的分类:主要分为桶形畸变和枕形畸变,穿过图像中心和光轴有交点的直线还能保持形状不变。
    1. 桶形畸变是由于图像放大率随着离光轴的距离增加而减小。
    2. 枕形畸变是由于图像放大率随着离光轴的距离增加而增加。
      在这里插入图片描述
  4. 切向畸变:在相机的组装过程中由于不能使得透镜和成像面严格平行而导致的畸变。
    在这里插入图片描述
  5. 径向畸变可看成坐标点沿着长度方向发生了变化 δ r δr , 也就是其距离原点的长度发生了变化。切向畸变可以看成坐标点沿着切线方向发生了变化,也就是水平夹角发生了变化 δ θ δθ
  6. 径向畸变的纠正:
          在这里插入图片描述
    其中 r r 是点到光心的距离,修改前后的横纵坐标都是归一平面上的坐标。
  7. 切向畸变的纠正:
          在这里插入图片描述
  8. 联合纠正:
    在这里插入图片描述
    其中,参数要根据实际需要灵活选择。
  9. 单目相机的成像过程总结:
    1. 世界坐标系下有一个固定的点 P P ,世界坐标为 P w \bm{P_w}
    2. 由于相机在运动,它的运动由 R , t \bm{R}, \bm{t} 或变换矩阵 T S E ( 3 ) \bm{T} \in SE(3) 描述。 P 的相机坐标为: P c ~ = R P w + t \bm{\tilde{P_c}} = \bm{RP_w} + \bm{t}
    3. 这时的 P c ~ \bm{\tilde{P_c}} X , Y , Z X, Y, Z 三个量,把它们投影到归一化平面 Z = 1 Z = 1 上,得到 P P 的归一化相机坐标: P c = [ X / Z , Y / Z , 1 ] T \bm{P_c} = [X/Z, Y/Z, 1]^T
    4. 最后, P P 的归一化坐标经过内参后,对应到它的像素坐标: P u v = K P c \bm{P_{uv}} = \bm{KP_c}

5.1.3 双目相机模型

  1. 仅根据一个像素,无法确定这个空间点的具体位置。这是因为,从相机光心到归一化平面连线上的所有点,都可以投影至该像素上,深度确定时,才能确切地知道它的空间位置。
  2. 人眼可以根据左右眼看到的景物差异(或称视差)来判断物体与我们的距离。
  3. 双目相机一般由左眼和右眼两个水平放置的相机组成,两个相机可都看
    作针孔相机,水平放置,两个相机的光圈中心都位于 x 轴,它们的距离称
    为双目相机的基线。
    在这里插入图片描述
  4. 双目相机深度公式
             在这里插入图片描述
    其中, d d 称为视差。
  5. 视差与距离成反比,视差越大,距离越近。视差最小为一个像素,双目的深度存在一个理论上的最大值,由 f b fb 确定。当基线越长时,双目最大能测到的距离就会变远;反之,小型双目器件则只能测量很近的距离。

5.1.4 RGB-D 相机模型

  1. RGB-D 相机按原理可分为两大类
    1. 通过红外结构光(Structured Light)来测量像素距离
    2. 通过飞行时间法(Time-of-flight, ToF)原理测量像素距离的。
  2. 无论是结构光还是 ToF, RGB-D 相机都需要向探测目标发射一束光线(通常是红外光)
    1. 在结构光原理中,相机根据返回的结构光图案,计算物体离自身的距离。
    2. 在 ToF中,相机向目标发射脉冲光,然后根据发送到返回之间的光束飞行时间,确定物体离自身的距离。(获取整个图像的深度,而不是一个点)。
  3. 在测量完成后,RGB-D 相机通常按照生产时的各个相机摆放位置,自己完成深度与彩色图像素之间的配对,输出一一对应的彩色图和深度图。
  4. 通过图像上的色彩和深度信息,计算3D坐标,生成点云。
  5. 用红外进行深度值测量的 RGB-D 相机,容易受到日光或其他传感器发射的红外光干扰,因此不能在室外使用,同时使用多个时也会相互干扰。对于透射材质的物体,因为接受不到反射光,所以无法测量这些点的位置。

5.2 图像

在计算机中,图像用二维矩阵存储。

5.2.1 计算机中图像的表示

  1. 在一张灰度图中,每个像素位置 ( x , y ) (x, y) 对应到一个灰度值 I I ,一张宽度为 w w ,高度为 h h 的图像,数学形式可以记成一个矩阵: I ( x , y ) R w × h \bm{I}(x,y) \in \R^{w×h}
  2. 0 255 0-255 之间的数,即一个 unsigned char,一个字节来表达灰度的大小。
  3. 将图像坐标化,用坐标表示每一个像素,同时也可以访问灰度(颜色)
    在这里插入图片描述
  4. RGB-D 相机的量程通常在十几米范围左右,采用十六位整数(C++ 中的 unsigned short)来记录一个深度图的信息,最大可表示65米。
  5. 彩色图像的表示则需要通道(channel)的概念,在计算机中,用红色,绿色和蓝色这三种颜色的组合来表达任意一种色彩。对于每一个像素,就要记录它的 R,G,B 三个数值,每一个数值就称为一个通道,通常情况下,每一个通道占8位。
  6. 通道的数量,顺序都是可以自由定义。OpenCV中的顺序是 B,G,R。

5.3 实践:图像的存取与访问

5.4 实践:拼接点云

实践采用的代码与高翔博士给出的相似,这里不在赘述

猜你喜欢

转载自blog.csdn.net/weixin_40883049/article/details/87346132
今日推荐