SLAM用到的相机模型——矩阵表示以及坐标变换矩阵
1 单目相机模型
说白了,单目相机就是针孔相机,需要建立三个坐标系,
- 成像坐标系,实际是个二维坐标系
- 相机坐标系,以镜片为原点,镜头向前为Z轴,随相机位置改变,即相机位姿
- 世界坐标系,只有一个,物体的真实坐标
现在来对这个简单的针孔模型进行几何建模。设 O − x − y − z 为相机坐标系,习惯上我们让 z 轴指向相机前方, x 向右, y 向下。 O 为摄像机的光心,也是针孔模型中的针孔。现实世界的空间点 P,经过小孔 O 投影之后,落在物理成像平面 O′ − x′ − y′ 上,像点为 P′。设 P 的坐标为 [X; Y; Z]T, P′ 为 [X′; Y ′; Z′]T,并且设物理成像平面到小孔的距离为 f(焦距)。那么,根据三角形相似关系:
式(5.3)描述了点 P 和它的像之间的空间关系。不过,在相机中,我们最终获得的是一个个的像素,这需要在成像平面上对像进行采样和量化。为了描述传感器将感受到的光线转换成图像像素的过程,我们设在物理成像平面上固定着一个像素平面 o − u − v。我们在像素平面得到了 P′ 的像素坐标: [u; v]T
像素坐标系‹通常的定义方式是:原点 o′ 位于图像的左上角, u 轴向右与 x 轴平行, v轴向下与 y 轴平行。像素坐标系与成像平面之间,相差了一个缩放和一个原点的平移。我们设像素坐标在 u 轴上缩放了 α 倍,在 v 上缩放了 β 倍。同时,原点平移了 [cx; cy]T。那么, P ′ 的坐标与像素坐标 [u; v]T 的关系为:
除了内参之外,自然还有相对的外参。考虑到在式(5.6)中,我们使用的是 P 在相机坐标系下的坐标。由于相机在运动,所以 P 的相机坐标应该是它的世界坐标(记为 Pw),根据相机的当前位姿,变换到相机坐标系下的结果。相机的位姿由它的旋转矩阵 R 和平移向量 t 来描述。那么有
右侧的** T Pw** 表示把一个世界坐标系下的齐次坐标,变换到相机坐标系下。为了使它与 K 相乘,需要取它的前三维组成向量——因为 T Pw 最后一维为 1
2 双目相机模型
相人眼一样左右同时采集世界,根据同一坐标点在两张照片中的坐标差计算深度信息。
它们是水平放置的,意味两个相机的光圈中心都位于 x 轴上。它们的距离称
为双目相机的基线(Baseline, 记作 b),是双目的重要参数。
现在,考虑一个空间点 P,它在左眼和右眼各成一像,记作 PL; PR。由于相机基线的存在,这两个成像位置是不同的。理想情况下,由于左右相机只有在 x 轴上有位移,因此P 的像也只在 x 轴(对应图像的 u 轴)上有差异。我们记它在左侧的坐标为 uL,右侧坐标为 uR。那么,它们的几何关系如图5-6右侧所示。根据三角形 P −PL −PR 和 P −OL −OR的相似关系,
然由视差计算深度的公式很简洁,但视差 d 本身的计算却比较困难。我们需要确切地知道左眼图像某个像素出现在右眼图像的哪一个位置(即对应关系),这件事亦属于“人类觉得容易而计算机觉得困难”的事务.
参考书籍:SLAM十四讲