[读书笔记]Self-calibration - 1
1. 介绍
self-calibration又叫auto-calibration,用于将投影重建(projective reconstruction)转换为度量重建(metric reconstruction),也就是求得每幅图的未知的标定矩阵Kj。[Richard Szeliski 2010]
场景的已知信息不一样的话,所要采用的方法也不一样。例如,如果已知场景中存在平行线,得到三个以上的灭点,就可以建立无穷远平面的单应,从而恢复出焦点的长度和旋转量。如果没有这些外部信息,不可能独立地恢复出每个图像的所有标定矩阵的参数。考虑所有的镜头矩阵集合,将世界坐标
转换为屏幕坐标
。现在考虑用一个任意的4*4投影转换
来转换3D场景
,生成一个新的由点
组成的模型。让每个矩阵Pj左乘
会生成同样的屏幕坐标,通过对新镜头矩阵
进行RQ分解,就可以得到一个新的标定矩阵。(因此,你只有屏幕坐标的话,得不到唯一的标定矩阵。。。)
因此,所有的自定标方法都会对标定矩阵做一些格式限制,或者设置使它们的一些项相等,或者假设它们不随时间变化。
假设我们有一系列图像,并且知道镜头的内部参数是固定的,而且已经根据点的对应求出了投影重建。也就是说,得到了每个视图的投影镜头矩阵Pi。约束认为对每个视图,K是一样的。但每个镜头矩阵都可以分解,造成了每个视图的标定矩阵Ki不一致,不能满足我们的约束。但我们可以用单应性矩阵 H来转换镜头矩阵。既然镜头内部参数保持一致,则一定存在一个单应性矩阵(homography),使得
,从而保持了重建与约束的一致。我们可以将这个看做度量重建。如果目标是镜头标定而不是度量重建,则不需要显式地计算投影重建,而可以直接地计算标定矩阵。
2. 问题描述
假设我们有一个投影重建,基于上文提到的约束,我们希望得到一个纠正的单应性矩阵H,构成一个度量重建
。假设有m个镜头
,将一个3D的点XM投影到每个视图中的图像点
,M表示镜头已经定标过,并且世界坐标系是欧几里得的。这些镜头可以表示为
,i为1,…,m。
目标是求得未知的4*4单应矩阵H。
我们并不关心绝对的旋转、位移和比例缩放。设置世界坐标系与第一个镜头一致,则R1= I 而 t1 = 0。而Ri,ti指定了第i个镜头到第一个之间的欧式转换,。相似的,在投影重建中选择一个通用相机作为第一个视点,则P1 = [I|0],然后将H表示为
结合上式与(1)可以得到[K1|0] = [I|0]H,意味着A=K1,t=0。既然H是非奇异的,k一定是非0项,所以我们可以假设k=1,得到了H的格式:
向量v和K1合起来,指定了投影重建中的无穷远平面:
结论. 对于一个投影重建,令P1 = [I|0],可以用H将其转换成度量重建
,其中H为:
K是一个上三角矩阵,其实就是K1,。投影重建中无穷远平面的坐标为。因此,如果知道了投影帧中的无穷远平面和第一个镜头的标定矩阵,就可以从上式得到转换矩阵H。寻找度量结构(metric structure)等价于指定无穷远平面和绝对二次曲线(分别有3和5个自由度)。
3. 方法
下面推导基本的标定方程。将投影重建的镜头表示为,用公式(2)替换公式(1)得到
利用RRT = I ,得到
现在知道,是绝对二次曲线的双像(dual image DIAC)[Hartley and Zisserman 2004 p210],可以得到自定标的基本方程:
第二个公式是第一个公式逆的简化,ω是绝对二次曲线的像(IAC)。公式中的未知项为ω*i或ωi,以及参数p,已知项是投影镜头的Ai,ai。
自定标的关键在于对Ki使用约束,比如设置其中一项为0,来生成公式(4)中的p和K1的8个参数的方程。所有的自定标方法在解决这些方程中有些不同,接下来会讨论其中的几个,一般方法首先计算,然后使用迭代方法从中提取标定矩阵的值。
下面举个例子,假设所有的镜头都有一致的内参,则Ki=K,然后公式(4)转化为
每个视图提供一个公式,我们可以通过参数来确定需要的视图数量。除了第一个视图,每个视图都带有5个约束,两边都是3*3对称矩阵,并且方程是齐次的。假设这些约束独立于每个视图,可以根据5(m-I)>=8来求得,因此,原则上只要m>=3就可以获得答案,即需要三帧以上的画面。如果m远大于3,则未知的K和p是超定的(over-determined)。可以将上式看做是一个参数最小化问题,调整(2)中的8个参数使得(4)得到满足或者满足最接近的度量结构的耗费函数是最小的。具体内容会在接下来讨论。
一般的self-calibration都需要三帧以上的画面,但[Hartley and Zisserman 2004]中提出了一个简单的技术,二帧重建,根据基础矩阵F可以恢复两个图的焦点长度(f0 , f1)。首先,假设镜头0偏差,已知宽高比(通常设为1),还有一个已知的光学中心。(当然这个在实际引用中有多少可行性还是不确定的)如果要求度量单位绝对准确,必须先对镜头进行预定标,使用地面控制点来确定重建。如果仅仅是图像渲染应用级的重建,则以上的假设在实际中已经足够了。
如今大部分镜头都有square pixels,并且光学中心在图像中心附近,由于径向畸变的原因更容易偏离一个简单的相机模型,需要加以补偿。最大的问题在于,当图像偏离了中心,光学中心不再处于正中,或者当透视图像采用一个不同的图片,就需要一个一般化的镜头矩阵。具体内容也会在后面讲到。
参考文献:
[Hartley and Zisserman 2004] Multiple View Geometry
[Richard Szeliski 2010] Computer Vision: Algorithms and Applications
本文原创, 转载请注明出处