[读书笔记]Self-calibration - 3

Kruppa方程

首先假设世界坐标系中平面π上有一个二次曲线Cw,分别在两个视图中有两个投影CC‘,则与Cw相切的极平面定义了与CC‘相切的极线。Kruppa方程式就是与曲线相切的极线对应关系的代数表示。在第一个视图中两个切极线可以表示为一个退化的点索二次曲线(point conic),任何平面中,不同视图的极切线在单应性矩阵H下对应的。这一发现符合任意二次曲线,包括绝对二次曲线,因此,我们得到如下公式:(推导过程略,p470)

clip_image002                   (1)

如果各视点下内部参数不变,则clip_image002[4]=clip_image002[6],于是clip_image002[8]。这就是Kruppa方程的一般格式,但这并不常用,接下来给出一个常用的格式(推导过程略,p471)

clip_image002[10]          (2)

然后我们便可以根据约束得到二次方程。

以上的方法是基于两个视点的,这个方法也可以扩展到多个视点,给出3个视点,已知每对之间的F,则原则上存在6个约束,足够得出clip_image002[6]。使用其中任意的5个等式得到5个五元二次方程,可以得到2^5个可能的解。这并不是一个有前途的方法。

如果视点之间无旋转,则Kruppa方程无法提供对clip_image002[6]的约束。对于三个以上的视图,Kruppa方程所能提供的约束比其他方法要差一些,因为它本质上是视点对的约束。这是自定标文献史中的第一个例子,还是很有意义的方法。

分层的方法

要得到度量重建,可以先确定无穷远平面clip_image002[14],然后得到clip_image002[16],最后根据clip_image002[18]确定K

1. 仿射重建——得到clip_image002[14]

模约束(modulus constraint)是关于clip_image002[14]的坐标的一个多项式等式。假设内部参数是常量,然后根据p461的Ki=K,有:

clip_image002[22]                     (3)

它约束了无穷远平面的位置p。每一对视点都会生成一个四次方等式,因此3个视点就可以确定clip_image002[14],但可能有4^3个解。不过有了模约束提供的一个额外的三次方程约束,就可以删去大量的错误解(p474)。

你可以把模约束看做Kruppa方程的旁支,一个是关于clip_image002[6]的等式,一个是关于clip_image002[14]的等式。知道了其中一个,另一个就可以确定。

找出无穷远平面其实是自定标中最难的事情,我们有许多其他的方法,在第十章中讨论了。比如利用场景的几何属性,通过灭点的对应关系确定clip_image002[14]上的点,3个点确定一条平面等等,这里不再详细说,p474页有讲。

2. 仿射到度量的转换——根据clip_image002[14]确定K

确定了无穷远平面意味着仿射重建已知,剩下的步骤就是从仿射到度量的转换。基于IAC或者DIAC的转换是一个可用的线性算法。

无穷单应 无穷单应矩阵clip_image002[16]是根据无穷远平面而在两个图像之间进行平面投影转换,如果已知无穷远平面clip_image002[31]和镜头矩阵clip_image002[33],我们可以得到:

clip_image002[35]                       (4)

这是从镜头[I|0]到镜头clip_image002[33]的单应。如果第一个镜头并不是标准格式的,我们还可以这样计算:

clip_image002[38]              (5)

其实没有必要,我们可以创建一个新视点,符合标准格式,然后用它来表达无穷单应。

然后我们可以得到下面的关系:

clip_image002[40]   和   clip_image002[42]               (6)

有一个关系式对自定标很重要,是从仿射重建得到度量重建的基础,也是对非平移镜头进行定标的基础。就是如果clip_image002[44]已知,则clip_image002[46]clip_image002[48]之间的关系式线性的。这意味着在一个视点下clip_image002[46]上的约束可以轻易的转换到另一个视点下,因此可以通过线性关系得到足够的约束来确定clip_image002[48]。一旦clip_image002[48]被确定,K就可以通过Cholesky分解得到。

在一个单一的运动下K的计算对clip_image002[44]的准确度要求很高,如果clip_image00244不够准确则clip_image002[48]可能不会得到一个正定的矩阵,无法进行Cholesky分解。

使用clip_image002[48](IAC)的好处在于某些情况下它会使问题变得简单,比如零偏差的情况下,DIAC方法(我的日志Self-calibration - 2)需要得到主点,而IAC不用。

关于IAC的约束,在p478页的表格中有列出,详细的内容也请参见书籍。

问题描述

给定一个投影重建{Pi,Xj},其中Pi=[Ai | ai],通过一个仿射重建确定度量重建。

算法

1. 仿射修正:使用之前提到的方法确定定义clip_image00214的向量p,这样就可以用下面的方法得到仿射重建{PiHp,Hp-1Xj}

image

2. 无穷单应:计算引用视点和其他视点间的无穷单应性矩阵,需要对矩阵标准化,使得行列式为1:

clip_image00235

3. 计算clip_image00248

  • 常量定标:将clip_image002421(i=1,…,m)重写为Ac = 0的形式,A是6m*6的矩阵,c是二次曲线clip_image00248的元素重写为6维向量的格式。
  • 对于变量定标参数,使用等式clip_image002421来表达clip_image00246的元的线性约束,得到线性方程式。

4. 通过SVD得到Ac = 0的最小二乘解。

5. 度量修正:运用Cholesky分解image,然后可以通过下面的公式得到度量重建{PiHPHA,(HPHA)-1Xj}

image

6. 使用迭代的最小二乘最小化来优化结果。

3. 使用无穷单应关系的不确定性

如果镜头的运动仅仅有旋转的话,得到的结果会带有不确定性。尽管无穷单应看起来为clip_image0026的5个自由度提供了6个约束,但实际上只有4个是线性无关的。

一个参数的不确定性可以用某些方法来消除。比如假设镜头的内部参数来增加约束等,详细方法在p479-480中讨论。如果旋转轴与镜头的坐标轴平行,则我们还会遇到不确定性。这个不确定性是运动所带来的,并没有任何特定的自定标算法可以解决。

 

本文原创,转载请注明出处

http://www.cnblogs.com/luluathena/

你可能感兴趣的:(读书笔记)