python-全景拼接

1、全景拼接原理介绍

1、图像拼接的关键两步是:配准(registration)和融合(blending)。配准的目的是根据几何运动模型,将图像注册到同一个坐标系中;融合则是将配准后的图像合成为一张大的拼接图像。图像的平移模型是指图像仅在两维空间发生了 方向和 方向的位移,如果摄像机仅仅发生了平移运动,则可以采用平移模型。
2、图像拼接主要有以下几个步骤:
(1) 读入图片,利用SIFT特征自动找到匹配对应。
(2) 使用RANSAC算法求解单应性矩阵
(3) 将所有的图像扭曲到一个公共的图像平面上。
(4) 进行图像融合。
3、RANSAC是“RANdom SAmple Consensus(随机抽样一致)”的缩写。它可以从一组包含“局外点”的观测数据集中,通过迭代方式估计数学模型的参数。它是一种不确定的算法——它有一定的概率得出一个合理的结果;为了提高概率必须提高迭代次数。该算法最早由Fischler和Bolles于1981年提出。
RANSAC的基本假设是:
(1)数据由“局内点”组成,例如:数据的分布可以用一些模型参数来解释;
(2)“局外点”是不能适应该模型的数据;
(3)除此之外的数据属于噪声。
局外点产生的原因有:噪声的极值;错误的测量方法;对数据的错误假设。
RANSAC也做了以下假设:给定一组(通常很小的)局内点,存在一个可以估计模型参数的过程;而该模型能够解释或者适用于局内点。

2、针对不同场景做全景拼接

1)室内场景

python-全景拼接_第1张图片
python-全景拼接_第2张图片
在这里插入图片描述
1、在使用RANSAC模块时,只要在相应Python类中实现fit()和get_error()方法,fit()方法接受ransac.py选择的4个对应点对,然后拟合一个单应性矩阵。而get_error()方法对每个对应点对使用该单位矩阵,然后返回相应的平方距离之和。
2、transf()函数用来描述像素到像素间映射的函数,通过将像素和H相乘,然后对齐次坐标进行归一化来实现像素间映射。
3、可以看到,实验结果中间部分拼接的很好,然而全景拼接图的左右两边有很大的扭曲,这个问题还需要我进一步思考和解决。

你可能感兴趣的:(python-全景拼接)