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

来源:互联网 发布:北大生命科学院知乎 编辑:程序博客网 时间:2024/05/29 17:15

还是以两幅图像进行单应矩阵求解为例,上面讲到使用DLT算法一对对应点之间可以构成一个方程组Ah=0,其中A为一个2×9的矩阵。由此只需要4个点就可以求解出H矩阵。但是在实际的应用中,还有一些问题需要解决。

超定方程

实际情况下,我们得到的两幅图像的对应点往往多于4个点,从而可以得到矩阵A2n×9,而由于噪声的存在,矩阵的行向量之间并不是线性相关的。也就是说没有一组解h满足方程组。此时把Ah=0称为超定方程。

在此情况下,我们无法得到一个精确的解,只能得到一个近似解。为使得这个近似解尽量准确,我们需要建立一个评判标准,称为损失函数l。通过最小化损失函数,我们就可以解出一个近似解。

代数误差

很自然的一个想法是去最小化||Ah||,其中||h||=1,这其实和求解最小化||Ah||/||h||是等价的。

这个问题的求解可以通过求解ATA的最小特征值对应的特征向量得到,也可以通过进行SVD分解A=UΣVT找到最小奇异值对应的V中的奇异向量得到。具体证明在此不多说。

至此我们在有噪声情况下得到了多于4点匹配情况的解。使用这种损失函数称为代数距离。向量ϵ=Ah称为残差向量。

假设一对对应点xi,xi,它们通过A贡献点残差向量为ϵi,称为代数误差向量。它的范数称为代数距离,即

dalg(xi,Hxi)2=||ϵi||2=[0T wixTiwixTi0TyixTixixTi]h2

更一般的,对任意两个向量x1,x2我们可以写作

dalg(x1,x2)2=a21+a22, 其中a=(a1,a2,a3)T=x1×x2

给定一系列的对应点,ϵ=Ah是代数误差向量,可以看到

||ϵ||2=idalg(xi,Hxi)2=i||ϵi||2=||Ah||2

代数距离的优点是形式简单,易于计算,可以看到最小化代数误差基本可以看成DLT算法的一个延伸。它的缺点是没有几何学和统计学的意义,某些情况下不能得到最好的效果。因此它可以用作初值求解。

几何误差

对图像中观测到的一点我们记为x,它的实际坐标我们记为x¯,通过各种方法估计到的该点的位置我们记为xˆ

单幅图像中有噪声时的误差

假设原图像测量很精确,即x=x¯,则此时的几何误差就是转换后图像中的对应点x的测量值与它的理论值Hx的欧氏距离。将两点x,y之间的欧氏距离记作d(x,y)。则所有匹配点对点误差为

id(xi,Hx¯i)2

对称转移误差

由于两幅图像中的测量点x,x都有误差,假设变换为H,它的逆变换为H1。则此时的几何误差就是

id(xi,H1xi)2+d(xi,Hxi)2

第一项为第一幅图中的转移误差,第二项为第二幅图中的转移误差。显然估计出的单应矩阵Hˆ为使得误差最小时H的值

重投影误差

上面可以看到,无论是将x投影到x’还是将x’投影回x得到的投影点均不与观测值重合。由此我们希望通过寻找一对点xˆ,xˆ,以及一个单应矩阵Hˆ,使得两点xˆ,xˆ能够完美的相互投影。

为找到这几个量我们需要最小化的误差函数为

id(xi,xˆi)2+d(xi,xˆi)2,xˆi=Hˆxˆi

重投影误差的几何诠释

点对xi,x的非齐次坐标可以构成IR4中的一点(xi,yi,xi,yi)。对一个给定的H,对应的两点满足x×(Hx)=0,从而定义了一个IR4上的代数簇H。(代数簇就是若干多元多项式方程定义的公共零点集。)

H是两个二次超曲面的求交。(因为x×(Hx)=0的每一行都是关于坐标x,x,y,y的二次多项式,H定义了多项式的系数,故每一行代表了一个二次超平面;又因为有一行可以被其他两行线性表出,故只有两个)。

给定一个IR4上的点Xi=(xi,yi,xi,yi)T。估计一个单应矩阵就是找到一个通过点的HH与H对应。令Xˆi=(xˆi,yˆi,xˆi,yˆi)TH上离Xi最近点一个点,有

||XiXˆi||=d(xi,xˆi)2+d(xi,xˆi)2

这恰好就是重投影误差的公式。找到H和其上的Xˆi等价于找到估计的单应矩阵和估计的匹配点对。

进一步的,H上距离X最近点就是使得直线XXˆ垂直于H的点。即

d(xi,xˆi)2+d(xi,xˆi)2=d(Xi,H)2

总结一下,重投影误差即在IR4估计一个代数簇H使得它与所有的点的距离最小。

Sampson误差

接着上一节,投影误差虽然精确,但是很复杂。我们需要同时估计单应矩阵和对应点,换言之我们需要同时估计IR4上的HXi,由于前者的非线性,后者的计算估计往往需要需要通过迭代来进行估计,当测量点Xi很多时这项任务将变得很困难。因此我们想到假设损失函数在所估计的点附近是线性的,从而近似的估计Xi。近似后的误差称为Sampson误差。

H上的点满足Ah=0H(X)=0。做泰勒展开有

H(X+δX)=H(X)+HXδx

假设δx=XˆX,XˆH上等价于H(X)+HXδx=0。令ϵ=H(X)(这也是上一节对代数误差的定义)。有Jδx=ϵ。J为H(X)的Jacobian矩阵。此时我们需要解决的问题就是找到满足该方程的最小的δx,用规范的语言表述如下

找到向量δx使得||δx||取最小值,其中Jδx=ϵ

对该问题我们使用拉格朗日乘子法进行求解,需要找到δTxδx2λ(Jδx+ϵ)的最小值。对δx,λ分别求偏导解出

δx=JT(JJT)1ϵ

||δx||2=δTxδx=ϵT(JJT)1ϵ

此时我们已经消除了X̂ 的影响。重投影误差可以表示为:

=iϵTi(JiJTi)1ϵi

不管是J还是ϵ都只与H中的元素相关,而与X̂ 无关,重投影误差的优化可以很容易的转化成一个只与H中元素有关的最小二乘问题。通过迭代进行优化。

极大似然估计

极大似然估计在只有一张图像有噪声时等价于转移误差,在两张图像都有噪声时等价于重投影误差。给出了以上两种误差的概率学的诠释。具体推导过程不多赘述。

阅读全文
0 0