MVG读书笔记——单应矩阵估计这件小事(一)

来源:互联网 发布:云游seo 编辑:程序博客网 时间:2024/06/07 09:51

参数估计是计算机视觉中经常遇到的一个问题,为较好的估计参数,人们发明了各种各样的算法。这里我们就以单应矩阵H的估计为例,一个个介绍这些常用算法。

DLT算法

DLT(direct linear transform)算法是一个用于解决包含尺度的最小二乘问题的算法。可以解决的问题包括相机内参估计、单应矩阵估计、基础矩阵估计等。

以单应矩阵H的估算为例。由于H为3×3的矩阵,除去尺度的影响之后有8个自由度。需要4对对应点来求解。假设某一对对应点xi,xi,则

xi=Hxi=h1Txih2Txih3Txi

其中hjT代表H的第j行。

假设xi=(xi,yi,wi)T。对等式叉乘一个xi我们得到

xi×Hxi=yih3Txiwih2Txiwih1Txixih3Txixih2Txiyih1Txi=0


0T wixTi yixTiwixTi0TxixTiyixTixixTi0Th1h2h3=0(1)

可以记为Aih=0。其中A是一个3×9的矩阵,h是一个9维向量,它的元素对应H中的元素。即
h=h1h2h3,H=h1Th2Th3T

可以看到,Aih=0是一个关于h的线性方程,Ai可以由对应点坐标得到。同时A的第三行其实可以由前两行线性表出。由此每对点实际上是给出了H的两个约束。简化A可以得到一个2×9的矩阵。

四点法

取四对点,将它们的线性方程系数矩阵进行叠加我们就得到了一个8×9(去除线性相关的行)或者12×9的矩阵,不论如何这个矩阵的秩都为8。于是我们可以从线性方程Aih=0的一维零空间中得到h。这样的h有无穷多,彼此相差一个尺度,一般为求得唯一的解我们假设||h||=1

这种解法也称为最小解,因为它使用的点数最少。

多于四点的情况

当两幅图像中的对应点大于4对时,由于噪声的存在,矩阵A的秩为9,得到的线性方程只有零解。我们称这种方程为超定方程,此时可以求它的最小二乘解。即min||Ah||。对它的求解同样可以使用SVD分解。这将在后面进一步进行介绍。

退化

在使用四点法时,如果其中3点共线,就会发生退化。(很容易理解,3点共线=一点可以由其他两点线性表出=缺秩)从而得到无穷多解。这种在多于4点的情况也可能发生。

直线与混合情况下的求解

根据对偶原理,显然也可以根据两幅图像中的对应直线对。由li=HTli可以进行求解,在此不多赘述。
混合情况下,3个直线对和三个点对互相等价(三角形),从而可以转换成纯点或纯直线点求解。2个直线对、1个点对点的情况,和它的对偶情况无法求解,因为这相当于5个点对,其中有4个点共线点情况。