我是靠谱客的博主 难过发夹,最近开发中收集的这篇文章主要介绍MVG读书笔记——单应矩阵估计这件小事(二),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

还是以两幅图像进行单应矩阵求解为例,上面讲到使用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 。估计一个单应矩阵就是找到一个通过点的 H H 与H对应。令 Xˆi=(xˆi,yˆi,xˆi,yˆi)T H 上离 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 上的 H Xi ,由于前者的非线性,后者的计算估计往往需要需要通过迭代来进行估计,当测量点 Xi 很多时这项任务将变得很困难。因此我们想到假设损失函数在所估计的点附近是线性的,从而近似的估计 Xi 。近似后的误差称为Sampson误差。

H 上的点满足 Ah=0 H(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中元素有关的最小二乘问题。通过迭代进行优化。

极大似然估计

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

最后

以上就是难过发夹为你收集整理的MVG读书笔记——单应矩阵估计这件小事(二)的全部内容,希望文章能够帮你解决MVG读书笔记——单应矩阵估计这件小事(二)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(39)

评论列表共有 0 条评论

立即
投稿
返回
顶部