多视图几何总结——摄像机模型

多视图几何总结——摄像机模型

摄像机模型相对来说比较基础,针孔模型对于搞CV或者SLAM的人来说,是入门必须掌握的知识点,这里为了保证总结的完整性,同时也让自己再巩固下,抽了点时间进行一个简单的总结。
多视图几何中对于相机模型的介绍主要分为有限摄像机无限摄像机有限摄像机就近似于我们非常熟悉的针孔模型,而无限摄像机书中主要介绍的是仿射摄像机,下面分别总结分析下:

有限摄像机矩阵——推导

先上图
多视图几何总结——摄像机模型
如上左图所示,我们需要将一个空间点XX映射到一个图像点xx上即
多视图几何总结——摄像机模型根据右上图我们很容易推到处下面的变换:
多视图几何总结——摄像机模型这个结论是将图像平面的原点设立在主轴与图像平面的交点上,而实际上我们默认的图像坐标系应该是位于图像的左上角,向下为x轴向右为y轴,因此我们这里进行一个坐标系调整(可以理解为在齐次坐标下对点进行一个平移):
多视图几何总结——摄像机模型
多视图几何总结——摄像机模型
多视图几何总结——摄像机模型则上面的矩阵可以改写为
多视图几何总结——摄像机模型
这里的KK就是内参,而XcamX_{cam}指的是相机坐标系下的空间坐标,现在我们将其转到世界坐标系下
多视图几何总结——摄像机模型其中C~\widetilde{\mathrm{C}}为摄像机中心在世界坐标系下的坐标,结合上面的内参我们可以将针孔模型的最终结论写成如下形式:
多视图几何总结——摄像机模型而我们所谓的摄像机矩阵就是
多视图几何总结——摄像机模型为了增加一般性,将KK变为
多视图几何总结——摄像机模型其中ss为扭曲参数,这个参数的意义可以解释为像素元素产生的扭曲似的x轴和y周不垂直,在现实生活中,这个参数不为零的情况一般出现在对一张照片再次重拍的情况,所以参数ss一般是为零的。那为什么要这么做呢?因为这样我们可以将KK看做是一个上三角矩阵,如果我们已经事先得到了相机矩阵PP,我们可以很轻易地通过QR分解的分解的方法获得KKRR,从而确定相机的内参和相机的相对于全局坐标系的方向,在相机标定中就是这么做的。
顺便提一句,上面这种情况下,相机矩阵一共11个自由度,秩为3.


有限摄像机矩阵——计算

有限摄像机矩阵计算的过程其实就是相机的标定过程,我们给定的数据是一组空间中的3D点XiX_i和对应的2D图像点xix_i,求解一个3×4的矩阵PP满足xi=PXix_i=PX_i,这和计算单应矩阵、基础矩阵的方法几乎是一致的,可以参考多视图几何总结——基础矩阵、本质矩阵和单应矩阵的求解过程,这里简单分几种情况讨论下:

(1)最小配置解

上一节的文末提到了PP矩阵的自由度是11,而我们一对点(指一个3D空间点和一个2D图像点)能构成两个约束,因此最小配置解需要的点的对数是6,但是最后一对点我们只需要知道x或者y方向的数据即可,最后构成一个Ap=0Ap=0的方程,存在一维零空间,求解即可

(2)超定解(DLT)

在满足某个归一化的约束下,求Ap||Ap||的最小值(为什么是这样可以参考刚刚提到的博客里面单应矩阵的求解方法,这里有一点不同的是,这里需要对3D空间点进行归一化,平移到原点后缩放使它们到原点的均方根距离是3\sqrt{3},而不是2\sqrt{2}

(3)几何误差

其实就是根据几何意义建立一个优化目标,通过非线性优化的方法进行迭代优化,如下式:
多视图几何总结——摄像机模型,这是以图像上的误差作为优化目标,当然我们也可以用空间点的误差作为优化目标,或者是两个误差一起优化,只是优化目标函数不同而已,这里可以将DLT或者最小配置解的结果作为迭代最小化的初始值,从书上的结果大概可以知道,非线性优化的方法会更加准确,但是肯定也会更加耗时。

上面提到的几种方法是不考虑约束的(s=0,α1=α2)(s=0, \alpha_1=\alpha_2),上面的方法其实也是可以在带约束下进行求解的,简单地说就是在几何误差的方法中我将约束确定下来只优化剩下了没确定的六个参数,在DLT方法中就是进行一个矩阵映射,然后最小化映射后的结果。求出来矩阵PP之后进行QR分解就可以获得KKRR

这里在实际的算法操作中(例如张正友标定法)是不是一致的我还没有来得及去确认…之后有时间再补上。


仿射无限摄像机

仿射无限摄像机可以将其理解为其摄像机中心在无穷远平面,而仿射性质体现在将无穷远点映射为无穷远点,怎么理解呢?可以参考下这篇知乎如何理解无穷远摄像机模型?,对比下面两张图片就明白了
多视图几何总结——摄像机模型

多视图几何总结——摄像机模型
第一张图是有限摄像机拍出来的结果,第二张图就是仿射无限摄像机拍出来的图,可以发现在现实生活中平行的线(楼角)在这张图片中也是平行的,这就是所谓的将无穷远点映射为无穷远点,用过Solidworks的同学应该记得咱们画图的时候就是用的这种视角,我对于这个理解就这么深了,这种相机矩阵在电影拍摄的场景中有所应用,在SLAM里面好像还没有注意到相关的应用,因此不再深究

ok,有问题欢迎交流~