视觉SLAM笔记(20) 单目相机模型
单目相机模型的核心内容包括相机成像、针孔模型、内参数矩阵、外参数(位姿)、畸变及其纠正等。相机通过将三维世界点投影到二维图像平面实现成像,在此过程中需要考虑径向和切向畸变的影响,并通过内参数矩阵校准(如主焦点长度f、缩放系数α和β等)以及外参数(旋转矩阵R和平移向量t)进行空间定位。为了更精确地描述图像中的空间位置,在去畸变后可以直接应用针孔模型进行投影计算。相关研究可参考《视觉SLAM十四讲》等资源以深入了解这一领域。
视觉SLAM笔记(20) 单目相机模型
- 1. 成像技术
- 2. 相机系统的核心成像模块
- 3. 图像坐标系
- 4. 内参数矩阵描述
- 5. 外参数矩阵表征
- 6. 图像变形处理方法
-
6.1 径向变形处理方案
-
6.2 切向变形处理方案
-
7. 畸变纠正
-
8. 成像过程
-
1. 相机成像
在前文详细阐述了机器人位姿表示的问题,在前一段对 SLAM 经典模型中各变量的含义及其运动方程的部分进行了阐述。
为了探讨机器人如何获取外界信息,在视觉感知系统中首先要解决的问题就是建立观测模型——即所谓的观测方程部分。而在基于摄像头的视觉 SLAM 系统中,则主要关注的是通过图像生成来进行环境感知的技术研究。
在计算机视觉领域中,任何一张数字图片都可以被分解为无数个离散的像素点集合。每个像素点都精确地捕捉到了物体表面的颜色信息及其亮度水平。
三维空间中的物体通过反射或发射光线信号,在照相机系统中经过镜头光轴位置后投射到成像底片上。
相机内部配备了敏感的光电探测器阵列,在接收到入射光线之后进行信号处理和数据采集工作。这种过程能够有效获取相应的图像数据,并最终生成图像的过程。
相机通过几何模式将三维空间中的坐标点(以米为单位)转换为二维图像平面上的像素分布模式。这类模式多种多样,在应用中最为常见且有效的便是针孔模式。这种模式具体描述了光线经过理想化镜头后,在镜头后方形成影像的投影关系。然而由于实际镜头系统中透镜的影响,在光线投射至成像平面的过程中会产生一定程度的变形现象。因此,在这一整体投影过程中我们主要运用了针孔模式和畸变模式两个关键概念来加以建模与分析。这两个基本概念不仅能够实现外部三维空间点与相机内部成像平面之间的对应关系而且构成了整个相机系统的核心内参数特性
2. 相机的成像
在初中物理课堂上,这个常见的蜡烛投影实验通常出现在教材中:在一个暗箱前放置一支燃烧过的蜡烛,在其前方开一个小孔,在后面表面上可以看到一个倒置的蜡烛图像
在这个过程中,小孔模型能够实现三维空间中物体的映射成二维影像平面
同理,在这种简单模型的基础上可模拟和呈现相机的成像机制

为了更好地完成对该简单的针孔模型的几何建模工作,在建立相机坐标系时通常会设定 O−x−y−z 坐标系以确保符合视觉系统的习惯设置:其中 z 轴方向朝向镜头中心轴线位置且 x 轴向右延伸、y 轴向下垂直。在该坐标系中 O 点即为摄像机的光心位置同时也是该模型中的理想针孔点。
空间点 P 在通过小孔 O 的成像作用后,在物理成像平面 O’−x’−y’ 上形成影像点 P’。
定义其坐标为 [X, Y, Z]^T,并定义影像点 P' 的坐标表示为 [X', Y', Z']^T。
并假设物理成像平面与小孔之间的距离定为 f(焦距)。
根据三角形相似关系,则可推导得出:

其中负号表示成的像是倒立的
在模型简化过程中,在相机前方将可呈现在同一侧的平面与三维空间点。

这样做可以把公式中的负号去掉,使式子更加简洁:

整理得:

描述了点 P 和它的像之间的空间关系
3. 像素坐标系
不过,在相机系统中,最终所获取的是一个个的像素点,在成像平面上必须对图像进行采样与量化处理。
为了阐述传感器如何将光线转换为图像 pixel 的过程。
我们建立了在物理成像平面上的一个 o-u-v 坐标系下的 pixels 平面。
在该 pixels 平面上确定了 P' 点的 pixel 坐标:[u, v]^T
像素坐标系 常见设定为:取其左上角作为原点 o';其中u轴延伸至右侧方向与x轴平行;v轴延伸至下端方向与y轴平行。

基于像素坐标系与成像平面之间的关系存在缩放和平移变换。我们设定u轴上的缩放系数为α,在v轴上的缩放系数为β。同时,在xy方向上进行了平移变换,并将平移量表示为向量形式[ cx , cy ]^T。由此可得P'的齐次坐标(x', y', w')^T与原始图像中的二维直角坐标(x, y, 1)^T满足以下关系式:

代入之前的描述点 P 和它的像之间的空间关系的公式:

并把 αf 合并成 fx,把 βf 合并成 fy,得:

其中, f 的单位为米, α,β 的单位为像素每米,所以 fx,fy 的单位为像素
4. 内参数矩阵
把上式写成矩阵形式,会更加简洁,不过左侧需要用到齐次坐标:

按照传统的习惯,把 Z 挪到左侧:

中间的量组成的矩阵称为相机的 内参数矩阵 (Camera Intrinsics) K
普遍认为,在相机出厂时其内部参数(即内参)是恒定不变的,在使用过程中也不会发生改变。
其中一些相机生产商会提供其内参信息;但有时用户需要自行确定这些参数,这通常被称为校准。
考虑到标定算法已经较为完善,并且在线资源提供了大量关于相机校准的教学材料。
5. 外参
除了内参之外,自然还有对应的外参

由于相机在运动,所以 P 的相机坐标应该是它的世界坐标(记为 Pw)
基于相机当前的姿态信息,在相机坐标系中进行转换操作。相机的姿态由其旋转矩阵 R 和平移向量 t 完成描述。那么有:

该方法阐述了物体世界坐标与图像像素坐标的映射关系,在本节中讨论的是相机的姿态与位置(即相机的外参数)。
与不变的内参不同的是,在相机运动影响下外参数会发生变化;同时它也是SLAM问题中需要估计的目标量,并表示着机器人在空间中的运动轨迹
该等式两边均为齐次坐标系。由于齐次坐标系乘以任意非零标量后具有相同意义,因此我们可以直接省略Z值。

但这样会导致等号的概念发生调整,在齐次坐标系中相等的概念会引入一个非零的比例因子的影响。为了避免讨论的复杂性,在直角坐标系下采用传统的书写方式来定义等号关系。
我们可以提及潜在的齐次到非齐次变换过程。观察右侧 TPw ,它代表了将世界坐标系中的点转换至相机坐标系的过程。为了使其与 K 矩阵相乘运算顺利进行,请选取前三个分量构成向量——这是因为右侧矩阵的最后一行为1。

当处理一个三维向量时,还可以采用齐次坐标方法来对最后一维进行归一化处理。这一步骤有助于简化后续计算过程。经过上述操作后,在相机归一化平面上就能得到点P的投影位置:

此时 P_c 可被视为一个二元齐次坐标的模型,在归一化平面方程中定位其位置
该点位于相机前方 z=1 处的平面中,并以此为基础定义了归一化平面
经过相机内参数变换后得到对应的像素坐标系
因此我们可以将像素坐标的计算结果视为对归一化平面上点进行数字采样的一种表现形式
6. 畸变
在相机前方安置了透镜将有助于获得良好的成像效果。 在相机前方安装透镜可能会对光线在成像过程中的传输产生新的影响。
光路受到透镜形状的影响程度如何?
当进行机械装配时,在机械组装阶段...时,在完成安装后,
\text{光轴与物镜主光轴不平行}
这一现象必须被避免。
使得光线穿过透镜投影到成像面时的位置发生变化
6.1. 径向畸变
源于透镜形状特征的变化产生的畸变被定义为径向畸变。
按照针孔模型理论,在该模型下一条直线仍保持为直线。
然而,在实际拍摄的照片中,
摄像机镜头通常导致真实环境中的直线在成像时呈现曲线状态。
这种现象随着图像接近边缘部位而愈发显著。
基于实际情况,在透镜制造过程中,大多数透镜往往呈现中心对称特性。
其结果通常是径向对称的畸变。
这些不规则畸变主要可分为两种类型:
- 桶形畸变
- 枕形畸变

桶状变形是由于当偏离主光轴时成像放大系数逐渐减弱所致;反而是盘状变形的表现特征
在这两种畸变中,穿过图像中心和光轴有交点的直线还能保持形状不变
6.2. 切向畸变
除了透镜形状所带来的径向畸变外,在相机组装过程中在无法实现透镜与成像面严格平行的情况下也会产生切向畸变。

7. 畸变纠正
为了深入理解径向畸变与切向畸变的本质特征, 我们可以通过更为严谨的数学表达式来描述这两种变形. 了解平面上任意一点P都可以通过表示式[x, y]^T来定位, 在极坐标系下则可表示为[r, θ]^T. 其中r代表的是该点p到原点的距离; 而θ则代表的是该点与水平轴之间的夹角.
径向畸变即是坐标点沿轴线方向有所改变δr, 其至原点的距离也随之变动;切向畸变即是坐标点沿切线方向发生位移δθ, 亦即水平夹角随之产生相应的变化
在径向变形问题中,桶形和枕形两种变形形式均表现出随着与中心点距离的增加而增大特性。可以通过一个多项式函数来描述变形前后点坐标的变换关系。对于这一类变形现象而言,在分析和消除过程中通常采用与中心距离相关的二次及更高次的多项式函数来实现有效的校正效果。

具体来说,在此上下文中,未校正的坐标为 [x, y]^T,
而经过校正后的对应坐标则表示为 [x_{corrected}, y_{corrected}]^T。
特别指出,在本研究中所涉及的所有坐标均为归一化平面内的点,
这些坐标并不位于像素平面内。
在该纠偏模型中,
针对图像中心区域中的轻微畸变区域,
主要由k1参数负责。
而对于位于图像边缘部分的较大程度畸变区域,
则主要由k2参数处理。
通常情况下,
这两个参数足以有效消除径向畸变形。
对于具有严重变形特性的摄像头系统,
例如鱼眼镜头,
可以通过引入k3参数来进一步改善矫正效果。
另一方面,对于切向畸变,可以使用另外的两个参数 p1,p2 来进行纠正:

由此可见, 结合前文所述的两个公式组,
借助于五个畸变系数,
确定该点在图像平面中的准确位置.
将三维空间的点投影至归一化图像平面,并设定其归一化的坐标为[x, y]^T。
对该平面上的各点实施径向畸变与切向畸变的纠正。

通过使用内参数矩阵将校正后的点投影至像素平面来确定该点在图像中的精确位置。

在上述纠正畸变的步骤中采用了五个畸变项。实际应用中可灵活配置纠正模型参数,在具体实施时通常采用k₁、p₁、p₂等组合。
值得一提的是,存在两种去畸变处理(Undistort,或称畸变校正)做法:
- 首先对整个图像施加去畸变处理,获得其去畸变后的影像,并对其进行空间位置分析。
- 选取图像中的任一点,并通过相应的几何校正公式对其应用去畸变处理后的位置信息进行分析。
二者都是可行的,不过前者在视觉 SLAM 中似乎更加常见一些
在图像经过去畸变处理后从而可以直接应用针孔模型来描述其投影关系无需再考虑畸变因素
8. 成像过程
小结一下单目相机的成像过程:
- 首先,世界坐标系下有一个固定的点 P,世界坐标为 Pw
- 由于相机在运动,它的运动由 R,t 或变换矩阵 T ∈ SE(3) 描述,P 的相机坐标为:\tilde{P}c = RPw + t
- 这时的 \tilde{P}c 仍有 X,Y,Z 三个量,把它们投影到归一化平面 Z = 1 上,得到 P 的归一化相机坐标: Pc = [X/Z,Y/Z,1]T
- 最后, P 的归一化坐标经过内参后,对应到它的像素坐标: Puv = KPc
综上所述,一共谈到了四种坐标:世界、相机、归一化相机和像素坐标
参考:
相关推荐:
视觉SLAM笔记(19) 相似变换群及其李代数表达
视觉SLAM笔记(18) Sophus理论及其实现
视觉SLAM笔记(17) 李代数空间中的导数计算及其扰动分析模型
视觉SLAM笔记(16) 从旋转矩阵到角位移的指数映射与对数映射关系
视觉SLAM笔记(15) 基于矩阵运算的李群及其对应的李代数表示方法
谢谢!
