摄像机几何与极几何
本文最后更新于:1 年前
摄像机几何
针孔模型
考虑最初的成像模型,我们会利用小孔成像来记录现实世界。经过小孔成像模型,来自场景的光线可以经过小孔打到胶片上,而不会受到其他位置光线的干扰。而针孔摄像机就是一种类似小孔成像的模型,它的物理模型可以参考下图:

其中,针孔到像平面的距离被称为针孔摄像机的焦距
在整个摄像机几何中,一个非常重要的问题就是如何将真实世界中的某个点映射到成像平面中,例如下图,我们考虑的问题就是在摄像机坐标系中如何完成从

假定
透镜
接下来我们介绍透镜。在介绍透镜之前,我们需要介绍光圈。光圈尺寸实际对应的就是成像小孔的大小,光圈越大,对应小孔越大,成的像就会越模糊;光圈越小,对应小孔越小,成像虽然越清晰,但是亮度也越来越暗。为了解决这个问题,我们可以引入透镜,因为透镜可以做到光线的汇聚,它将多条光线汇聚到胶片的同一个点上,可以增加亮度。
透镜的物理性质就是对光线进行汇聚,其中所有平行于光轴的光线都会会聚到焦点上。焦点到透镜中心的距离称为透镜的焦距。这里需要注意区分透镜的焦距和针孔相机的焦距,这两者指的并不是同一个概念,需要结合上下文具体分析,在摄像机几何的语境下,我们说到焦距,更多地指的是相机的焦距。根据透镜的折射规律,一个点经过折射后汇聚的点,可以通过连接该点和光心得到,因此在实际分析时,我们仍然可以使用上面针孔摄像机得到的映射模型。
虽然引入透镜解决了光圈的问题,并且仍然可以使用针孔摄像机的映射模型,但是引入透镜也会带来一些实际的问题。
第一个问题是失焦。由于透镜具有自己的焦距,只有在焦距对应深度左右范围内成的像是清晰的,其他位置成的像则会变得模糊。对应这种现象,我们有一个景深的概念。在许多摄影作品中,我们都可以看到景深的效果。
第二个问题是径向畸变。径向畸变指的是经过成像之后,图像像素点以畸变中心为中心点,沿着径向产生的位置偏差,从而导致图像中所成的像发生形变。径向畸变根据畸变方向又可以分为枕形畸变和桶形畸变。下图就是一个径向畸变的照片表现。另外一个径向畸变的例子是门上的猫眼,通过猫眼看外面的景象,会有类似鱼眼的效果。径向畸变产生的原因是光线在远离透镜中心的地方比靠近中心的地方更加弯曲。

摄像机几何
图片坐标系引入
通过对针孔模型的分析,我们得到了在相机坐标系中,场景坐标到像平面坐标的映射关系。接下来进一步,我们将引入图片坐标系。对于一张图片来说,我们通常会使用图片坐标系,该坐标系如下图所示,以像素为单位。图片坐标系以图片的左下角为原点建立xy轴。

可以注意到,相机坐标系的原点即光心,在图片坐标系中的投影是带有一定的偏差的,因此在转换时,需要进行偏差的处理,即这里的
综合整个流程,我们将相机坐标系下场景中的某个点
为了方便起见,我们可以将参数进行整合,即:
上面我们得到了新的映射模型,它帮助我们将场景点在相机坐标系下的坐标映射到图像坐标系下的坐标表示。但是上面的式子不利于我们后续的处理,这里我们将其转化为齐次坐标的表达形式(包括相机坐标系下的三维表示和图像坐标系下的二维表示都转化为齐次坐标),那么映射关系就可以表示为下面的式子

此时,上面的齐次坐标形式的映射关系就需要进行改写,改写之后变成下面的样子:
世界坐标系引入
上面我们引入图片坐标系后,已经得到了相应的映射模型,它能够将相机坐标系下的场景坐标映射到图片坐标系中。注意到这里场景坐标仍然是使用相机坐标系,因此接下来最后一步,我们需要引入世界坐标系。最终,我们需要得到一个从世界坐标系到图片坐标系的映射关系。

由于相机坐标系和世界坐标系同样属于3维坐标系,它们之间的转换只需要旋转和平移即可。我们可以将世界坐标系经过旋转
有时候,说到相机外参可能指的是
的形式,那时候只需要在 下补充一行 即可。 相机外参在不同情况下可能指代不同的形式,需要结合环境讨论。但是它们都代表这里提到的含义,根据维度判断,并不会出现歧义。
那么最终我们就可以得到一个投影矩阵,它可以在齐次表示的情况下,将世界坐标系中的场景坐标映射到图片坐标系中的像素坐标:
最终我们得到如下的映射公式(以及带维度表示):
投影以及投影矩阵
上面我们可以得到一个投影矩阵
是透视投影矩阵的一个充分必要条件是 是零倾斜透视投影矩阵的一个充分必要条件是 且满足:
是零倾斜且宽高比为1的透视投影矩阵的一个充分必要条件是 且满足:
这里我们还补充一些透视投影变换的性质,包括点投影为点、线投影为线、近大远小、角度不再保持、平行线相交等。
在实际过程中,我们获取相机参数则可以通过相机标定的方式来完成。相机标定主要是通过对相机标定装置进行拍摄,人为找到3D空间与照片之间的对应点,通过多组对应点来构造多组方程,再通过求解方程组来得到相机参数。
概念补充
平面和空间的变换
下面我们主要介绍在平面和空间中的一些常见变换,包括等距变换、相似变换、仿射变换、透视变换等。我们知道在坐标系的表达下,变换Transform可以通过矩阵的形式来表示,因此各种变换的重点也就在于矩阵的不同。并且下面的介绍统一都是使用齐次坐标的形式来表示的。
2D平面上的变换
- 等距变换
首先考虑等距变换。等距变换是一种最简单的变换,在变换前后可以保持距离不变。等距变换可以通过旋转矩阵
- 相似变换
相似变换可以保持图形相似,在变换前后能够保持两直线的夹角、长度的比值、面积的比值不变。相似变换是等距变换和均匀缩放变换的合成,均匀缩放变换可以由下面的矩阵来表示:
- 仿射变换
仿射变换前后保持平行性不变、面积的比值不变、平行线段长度的比值不变。一个矩形经过仿射变换之后会变成平行四边形。仿射变换如下:
- 透视变换
透视变换前后保持四共线点的交比不变。透视变换如下:
3D空间中的变换
- 相似变换
3D空间中的相似变换保持点变换到点、线变换到线;保持点点共线(面)性、线的共面性;保持直线与直线、直线与平面、平面与平面的平行性不变;保持角度不变等。变换公式如下,其中
- 仿射变换
3D空间中的仿射变换保持无穷远平面不变(无穷远点变换到无穷远点),保持直线与直线、直线与平面、平面与平面的平行性不变。变换公式如下:
- 透视变换
3D空间中的透视变换保持点变换到点、线变换到线,并且保持点的共线(面)性、线的共面性。变换公式如下:
平面和空间的无穷远
在前面空间中的变换时,我们提到无穷远的概念。接下来就介绍在平面和空间中的无穷远。
首先进行无穷远的定义。无穷远包括无穷远点、无穷远线、无穷远面。在引入无穷远之后,我们说平行线在无穷远点处相交、两个平行平面的交线是无穷远线。它们本身保持类似普通点线面的定义,即无穷远点在无穷远线上,无穷远线在无穷远面上。
考虑平面中的无穷远,直线的解析方程为
在3维空间中,假设直线的方向向量是
影消点与影消线
影消点和影消线是图片坐标系中的概念,因此单位是像素。它们本身是图片坐标系中确定的点和确定的线,只不过是由空间中的无穷远点和无穷远线投影而来。
影消点指的是三维空间中的无穷远点在图像平面上的投影点。考虑
影消线则是三维空间中的无穷远线在图像平面上的投影线。考虑3维空间中的一个平面
极几何
考虑我们对场景中的一个3D场景进行拍摄,从两个不同的角度进行拍摄,如下图所示。其中

在理想的情况下,我们可以通过
- 已知:
- 求解:
的三维坐标(在 坐标系中)
有两种方式来求解该问题,分别是线性解法和非线形解法。
线性解法通过已知来构建如下关系:
非线形解法则通过最小化重投影误差来得到
上面的描述告诉我们,如果我们能够知道两个视角中的同名点(对应3维空间中的同一真实点),那么是可以通过相关方法计算出真实点的坐标的。那么问题就是如何在两张图片中找到对应的同名点。极几何就可以在这种情况下建立一定的约束,它描述了同一场景或者物体的两个视点图像之间的几何关系。
基础概念
考虑如下的成像过程,我们介绍极几何中的一些基础概念:

- 极平面:同时过目标点
,两个光心 的平面 - 基线Baseline:光心
的连线 - 极线Epipolar:极平面与成像平面之间的交线(直线)
- 极点:基线与成像平面的交点
由定义我们可以知道,所有的极平面都会相交于基线,所有的极线都会经过极点。
考虑在左成像平面上的
当然极几何有一个特例,就是平行视图:

平行视图具有如下性质:
- 两个图像平面平行
- 基线平行于图像平面,极点
位于无穷远处 - 极线平行于图像坐标系的u轴
介绍完极几何的基础概念之后,我们对极几何进行数学上的描述。
三个矩阵
本质矩阵
本质矩阵是对规范化摄像机拍摄的两个视角图像之间极几何关系进行的代数描述。
所谓规范化摄像机,指的是它执行规范化投影变换:
那么整体场景就可以描述为下图的形式。

我们已知两个相机内参
第一步,由于我们使用的规范化投影,在规范化投影下,摄像机坐标系下三维点的欧式(非齐次)坐标
= 图像点的齐次坐标。因此我们有空间点
第二步,我们需要将描述统一在
此时在
下面我们可以对本质矩阵
对应的极线在 图像坐标系中,且有 对应的极线在 图像坐标系中,且有 是奇异的,它的秩为2 有5个自由度(3个旋转+3个平移, 去掉了一个自由度)
基础矩阵
基础矩阵是对普通摄像机拍摄的两个视角图像之间极几何关系进行的代数描述。由于上面介绍了规范化相机,因此在基础矩阵部分进行的工作,只需要将普通摄像机转化为规范化摄像机即可。现在考虑两个相机的内参
对应的极线在 图像坐标系中,且有 对应的极线在 图像坐标系中,且有 是奇异的,它的秩为2 有7个自由度
此时,我们就可以得到在普通情况下的基础矩阵。利用基础矩阵,我们实际上就可以完成极线的定位,根据一张图上点的坐标,以及相机内参和两次拍摄的相对旋转与平移,我们就可以在另一张图上找到该点对应的极线。用数学的语言来描述,假设我们已知两次拍摄的相机内参分别为
单应矩阵
本质矩阵和基础矩阵并不是两个像素之间的相互转换关系,而是一种坐标之间的内在约束式。而如果再增加一定的约束,当空间中的场景是同一个平面的时候,那么该平面上的点在左右视图上的投影点就可以通过可逆的矩阵实现一对一的坐标相互转换,这个矩阵就被称为单应矩阵。单应矩阵描述的是空间中的平面在两个摄像机下的投影几何。

考虑上图对应的场景。其中两个摄像机的内参矩阵分别为
不妨假设
单应矩阵具有8个自由度。
注意在此篇文章中,本质矩阵,基础矩阵以及单应矩阵都是相对于第一个相机参考系而言的表示。
平行视图
平行视图的优势
在极几何的基础概念中,我们介绍了一个特殊的极几何情况,就是平行视图。在平行视图的情况下,两个图像平面相互平行,并且基线位于图像平面,极点

在平行视图下,会有一些非常好的性质:
- 所有的极线都是平行于u轴的
- 对于图像中的
点,它的同名点 一定在对应的极线上,并且这条直线与p所在极线高度相同。即 和 的 坐标相同
下面是对这个性质的证明,在实际使用过程中,我们知道有上面那些很好的性质即可。
首先,平行视图仍然属于我们讨论的对同一场景不同角度的拍摄,因此之前的矩阵描述同样可以适用,因此有:
考虑
极线校正
我们说平行视图有非常多的好处,但是很多情况下我们拍摄的情况并不是平行视图。此时,我们可以使用极线纠正,来将不是平行视图的情况转化成平行视图。如下图所示,我们希望将两个原始的图像经过

进行极线校正可以通过一系列步骤完成,这里只介绍步骤内容,具体的原理不再进行说明。
第一步:在两幅图像之间找到一组匹配点(不少于8个),估计出基础矩阵
第二步:利用基础矩阵求解出两幅图像中的极点
第三步:选择透视变换
下面是一个极线校正前后的对比:
