相机模型(Ⅱ)& 相机标定(Camera Models 2 & Camera Calibration) 总结
弱透视投影(Weak perspective projection)
弱透视投影是计算机视觉和摄影测量中的一种近似投影模型。在这种投影中,假设物体距离相机足够远,使得物体上各点到相机光心的距离近似相等。
从图中可以看到,有一个光心
图中下方的公式展示了弱透视投影的坐标变换关系。原始的透视投影公式为
在透视投影中,我们可以把变换矩阵
进一步地,在弱透视投影中,由于变换矩阵的最后一行为
正交(仿射)投影(Orthographic (affine) projection)
在这种投影方式下,投影线是相互平行的,且投影线与投影平面是正交的。同时,我们认为投影中心到图像平面的距离无穷远。而一般透视投影公式为
这些模型的优点
- 弱透视投影(Weak perspective):
- 数学计算简单:相比其他模型,其涉及的数学运算更简便。
- 特定条件下准确:当物体较小且距离较远时,该模型能得出较为准确的结果。
- 适用于识别任务:在目标识别等任务中非常有用。
- 针孔透视投影(Pinhole perspective):
- 3D - 2D映射准确:对于将三维场景映射到二维图像的建模,它的准确性更高。
- 应用领域:常用于运动恢复结构(Structure from Motion,SfM)或同时定位与地图构建(Simultaneous Localization and Mapping,SLAM)等需要精确三维到二维转换的领域。
相机标定( Camera Calibration)
接下来我们介绍的是本节课的重点-相机标定问题。
在前面的介绍中我们已经知道,如果我们要精确描述一个投影变换,我们必须要知道相机的内参矩阵和外参矩阵,而这些矩阵我们都是通过平移旋转等变换得到的,因此为了更好地描述从世界坐标系到图像坐标系的变换,我们需要确定内参矩阵和外参矩阵的相关参数,这一过程我们称为相机标定。
为了更好地对相机标定的过程进行描述,我们这里更换一下解释,用
如图所示,这是一个相机标定的基本场景,在世界坐标系中有一个标定板,标定板上有一点
因此,如果我们知道了世界坐标系中一些点的位置,并且知道这些点在相机平面形成的投影点的位置,我们就能够确定相机的相关参数。所以相机标定的目标是通过这些已知点在世界坐标系和图像坐标系中的对应关系来求解这些参数进而计算相机的内参和外参。
因为投影矩阵
实际上不然,我们只需要使用超过
那么6对对应点就可以提供
接下来我们介绍如何进行标定。
假设我们知道了三维点
我们把
但是这一方程组我们没有办法直接进行求解,有没有什么办法能够让它的形式更加简单呢?我们擅长求解的是齐次线性方程组,有没有什么办法将其化简成齐次线性方程组呢?
观察上述式子,如果我们对其左右两边各乘上一个负号,每一个式子都可以看做是由相乘的两部分相加的形式,这与什么很类似呢?矩阵乘法!如图所示:
因此,我们可以把以上的方程紧凑地表示为
由于我们知道了每一个世界点的相关信息,相当于整个
我们把上述问题称为齐次线性系统,即线性系统可表示为
为了解决这一问题,我们采用 SVD 分解法。
通过 SVD 分解,我们能够将
是一个 的矩阵。 是一个 的对角矩阵,对角元素为 的奇异值。 是一个 的正交矩阵。
则向量
进一步地,我们知道了变换矩阵
如图所示,我们先给出相机投影矩阵
其中,
进一步,我们将矩阵
则我们能够提取出相机参数的公式:
-
尺度因子
。 -
图像主点坐标
, 。 -
像素纵横比角度参数
的余弦值 。
从而,我们可以得到下图中的重要参数:
内参矩阵
外参矩阵
因此相机标定的工作我们就完成了,我们只需要把上述求得的参数带回我们的内参矩阵和外参矩阵即可,这里我们把最初的定义再放一遍:
退化情况
假如世界坐标系中的点共面,会导致标定过程中的约束不足,使得无法准确求解相机的内参和外参等参数。同时,如果点位于两个二次曲面的交线上。这也会引起标定退化的情况,同样会造成参数求解的困难或不确定性。
因此在相机标定的过程中,我们应该避免这两种情况。
带有径向畸变的相机标定(Camera calibration with radial distortion)
首先我们先介绍一下什么是径向畸变。由于图像放大率随着与光轴距离的增加而减小(或增大),但是镜头不完善,图像会产生偏差,对于通过镜头边缘的光线,其偏差最为明显。
有三种不同的畸变类型:
由于径向畸变,我们需要对之前的投影变换进行修正,即在公式前乘上一个缩放矩阵
我们将缩放矩阵与变换矩阵相乘得到的矩阵记为
那后面的做法与之前一样吗?当然不是。主要的原因是我们得到的等式不是一个线性系统,不能简单地利用线性方法对其进行求解。我们这里要求解的问题是形如
解决非线性问题我们一般有两种做法:
牛顿法(Newton Method):是一种迭代方法,需要从初始解开始。其缺点包括如果初始解离真实解较远,求解过程可能较慢;并且由于存在局部极小值,估计解可能依赖于初始解。此外,牛顿法需要计算雅可比矩阵
列文伯格 - 马夸尔特算法(Levenberg - Marquardt Algorithm):同样是迭代方法,从初始解开始。相比牛顿法,它的优势在于不需要计算海森矩阵
下面介绍一种可能算法。步骤为:先求解系统线性部分找近似解;将此解作为完整系统初始条件;用牛顿法或列文伯格 - 马夸尔特算法求解完整系统。此算法利用先线性求解得初值再处理非线性部分的思路来应对相机标定的非线性问题。
从以上可以看出,在相机标定中,一些假设在实际应用中可以使相机标定问题变得相对简单,但同时也可能会在一定程度上影响标定的准确性,需要根据具体情况进行权衡和调整。通常我们会做出以下的假设:
-
零倾斜,方形像素:即假设图像像素之间不存在倾斜关系,并且像素是正方形的。这简化了相机内参的模型,减少了需要估计的参数数量。
-
为已知的图像中心:假设图像的主点坐标 是已知的,通常可以简单地认为是图像的几何中心。这个假设也有助于简化相机标定过程中的计算。
可以看出,在径向畸变的情况下,我们求解标定相机还是非常困难的,那么在某些情况下我们是否能够忽略径向畸变,从而较为简单地求解问题呢?
事实上,我们可以利用
首先给出图像点坐标
我们将方程组合到一起得到方程组,这组方程可写成矩阵形式
但是这种做法只能计算出
以上就是本节课的所有内容,如有问题,请指正。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】