文章标题As-Projective-As-Possible Image Stitching with Moving DLT,来自CVPR 2013,文章主页,PDF。
摘要
本文主要目的是做图像拼接,使用MovingDirect Linear Transformation (MDLT)算法,强调全局投影(Globallyprojective)特性,同时允许局部非投影(local non-projective)偏差,能够有效的避免两幅图像重合部分的重影现象,降低了对准的误差,再几何上看起来更加逼近真实,畸变更小。
投影变换(Projective warp),逼近仿射变换(As-affine-as-possible warp)与本文的逼近投影变换(As-projective-as-possible warp)进行对比,如下图。(此图未完全看懂,谁看懂了说一下)
主要算法
文章使用的是Moving DLT算法,那么首先就要搞清楚什么是DLT算法。在两幅图片和中有一对匹配的点对,原始图像(Source Image)中的点
与目标图片(Target Image)中的点
,投影变换或者说单应矩阵(对极几何中的基础矩阵?本质矩阵?)要做的事就是得到一个映射关系
其中的代表单应矩阵中的第j行,并且此处映射为非线性映射。DLT算法就是计算单应矩阵
的一种基础算法。
此处文章直接给出来了一个公式,说根据公式1直接得到了,下面我稍微解释一下上面这个公式是怎么来的,from wiki。
此处文章直接给出来了一个公式,说根据公式1直接得到了,下面我稍微解释一下上面这个公式是怎么来的,from wiki。
重新排列后得到矩阵H。,将纵向排列得到。解为A奇异分解右侧的矩阵。如此,对其他像素根据单应矩阵做一次线性变换即可。由于是整幅图片使用一个单应矩阵,所以只适用于旋转角度不大的情况,本文对此做出改进,在计算时采用加权估值,使用
本文的基本操作
- SIFT提取匹配点对;
- RANSACwith DLT去除outliers
- 计算全局的单应矩阵,计算拼接之后整幅图size,使用全局单应矩阵将Source Image映射到Target Image中去
- 分块(cell)计算MDLT中的weight矩阵并映射。我们观察到大于40%的cell只有少数的weight值不同于。令,特征值分解:
真正的weight矩阵和区别在于那些很少的不为的地方,且均分布在对角线上。如此,就有
其中,为前面矩阵A的第i行,。用特征方程对角化上面公式中间的矩阵
得到,由于是奇异值分解右侧的矩阵,这样就得到了h的估计。用此对每一个cell做单应矩阵的变换。这样子做法好处是每个cell的时间复杂度是。