视觉slam十四讲 pdf_视觉SLAM十四讲学习笔记(四)

相机与图像
一、相机模型
针孔相机模型


其中负号表示成的像是倒立的。为了简化模型,我们把可以成像平面对称到相机前方,和 三维空间点一起放在摄像机坐标系的同一侧:





我们把中间的量组成的矩阵称为相机的内参数矩阵(Camera Intrinsics)K。通 常认为,相机的内参在出厂之后是固定的,不会在使用过程中发生变化。有的相机生产厂 商会告诉你相机的内参,而有时需要你自己确定相机的内参,也就是所谓的标定。
除了内参之外,自然还有相对的外参。考虑到在式(5.6)中,我们使用的是 P 在相机 坐标系下的坐标。由于相机在运动,所以 P 的相机坐标应该是它的世界坐标(记为 Pw), 根据相机的当前位姿,变换到相机坐标系下的结果。相机的位姿由它的旋转矩阵 R 和平 移向量 t 来描述。那么有:

其中,相机的位姿 R, t 又称为相机的外参数 (Camera Extrinsics)。相比于不变的内参,外参会随着相机运动发生改变,同时也是 SLAM 中待估计的目标,代表着机器人的轨迹。
上式两侧都是齐次坐标。因为齐次坐标乘上非零常数后表达同样的含义,所以可以简 单地把 Z 去掉:


这时 Pc 可以看成一个二维的齐次坐标,称为归一化坐标。它位于相机前方 z = 1 处的平面上。该平面称为归一化平面。由于 Pc 经过内参之后就得到了像素坐标,所以我们 可以把像素坐标 [u, v] T,看成对归一化平面上的点进行量化测量的结果。
双目相机模型

像素点可能存在的位置

双目相机的成像模型。OL, OR 为左右光圈中心,蓝色框为成像平面,f 为焦距。uL 和 uR 为成像平面的坐标。请注意按照图中坐标定义,uR 应该是负数,所以图中标出的距离为 −uR
现在,考虑一个空间点 P,它在左眼和右眼各成一像,记作 PL, PR。由于相机基线的 存在,这两个成像位置是不同的。理想情况下,由于左右相机只有在 x 轴上有位移,因此 P 的像也只在 x 轴(对应图像的 u 轴)上有差异。我们记它在左侧的坐标为 uL,右侧坐标 为 uR。那么,它们的几何关系如图所示。根据三角形 P −PL −PR 和 P −OL −OR 的相似关系,有:

这里 d 为左右图的横坐标之差,称为视差(Disparity)。根据视差,我们可以估计一 个像素离相机的距离。视差与距离成反比:视差越大,距离越近。同时,由于视差最小为 一个像素,于是双目的深度存在一个理论上的最大值,由 fb 确定。我们看到,当基线越长 时,双目最大能测到的距离就会变远;反之,小型双目器件则只能测量很近的距离。
虽然由视差计算深度的公式很简洁,但视差 d 本身的计算却比较困难。我们需要确切 地知道左眼图像某个像素出现在右眼图像的哪一个位置(即对应关系),这件事亦属于“人 类觉得容易而计算机觉得困难”的事务。当我们想计算每个像素的深度时,其计算量与精 度都将成为问题,而且只有在图像纹理变化丰富的地方才能计算视差。由于计算量的原因, 双目深度估计仍需要使用 GPU 或 FPGA 来计算。
RGB-D 相机模型
通过红外结构光(Structured Light)来测量像素距离的。例子有 Kinect 1 代、Project Tango 1 代、Intel RealSense 等;
通过飞行时间法(Time-of-flight, ToF)原理测量像素距离的。例子有 Kinect 2 代和 一些现有的 ToF 传感器等。
RGB-D 相机原理示意图
RGB-D 相机能够实时地测量每个像素点的距离。但是,由于这种发射-接受的测量方 式,使得它使用范围比较受限。用红外进行深度值测量的 RGB-D 相机,容易受到日光或 其他传感器发射的红外光干扰,因此不能在室外使用,同时使用多个时也会相互干扰。对 于透射材质的物体,因为接受不到反射光,所以无法测量这些点的位置。此外,RGB-D 相 机在成本、功耗方面,都有一些劣势。
二、图像

图像坐标示意图

