基于RANSAC算法的图像拼接

在同一位置(即图像的照相机位置相同)拍摄的两幅或多幅图像是单应性相关的。接下来要讨论的就是利用该约束将很多图像缝补起来,拼成一个大的图像来创建全景图像。

1.1 RANSAC算法

RANSAC(RANdom SAmple Consensus)也称随机一致性采样。该算法是用来求解单应性矩阵并找到正确的直线来拟合带有噪声的数据。也就是说,给定一组数据点集中包含正确的点和噪声点,RANSAC能找到一条直线来挑选出正确的点,同时摒弃噪声点。
利用RANSAC算法进行图像拼接是为了减少多幅图像之间出现的特征点错配问题。

1.2 图像拼接

基于RANSAC算法的图像拼接是利用RANSAC算法估计出的图像间的单应性矩阵,再将所有图像扭曲到一个公共的图像平面上。
通常,这里的公共平面为中心图像平面(否则,需要进行大量变形)。一种方法是创建一个很大的图像,比如图像中全部填充0,使其和中心图像平行,然后将所有的图像扭曲到上面。由于我们所有的图像是由照相机水平旋转拍摄的,因此我们可以使用一个较简单的步骤:将中心图像左边或者右边的区域填充0,以便为扭曲的图像腾出空间。

下面给出不同场景下(室内&室外)及不同景深两种情况下的拼接结果。
Ⅰ 景深较小的室内场景:

要拼接的四张原图:
基于RANSAC算法的图像拼接

拼接后的结果:
基于RANSAC算法的图像拼接

基于RANSAC算法的图像拼接

Ⅱ 景深较小的室外场景:

要拼接的四张原图:
基于RANSAC算法的图像拼接

拼接后的结果:
基于RANSAC算法的图像拼接

基于RANSAC算法的图像拼接

Ⅲ 景深较大的室外场景:

要拼接的三张原图:
基于RANSAC算法的图像拼接

拼接后的结果:
基于RANSAC算法的图像拼接

基于RANSAC算法的图像拼接

基于RANSAC算法的图像拼接存在的问题可以从上面的拼接结果看出来,不同图像之间的连接部分出现不连贯以及由于图像曝光不同而出现的边缘效应的情况。而且还可以看出RANSAC算法只是将图像进行简单的扭曲(从矩形变成四边形),导致图像拼接得非常生硬。

eg:
基于RANSAC算法的图像拼接基于RANSAC算法的图像拼接