【SIFT】实例 图像拼接 Image Stitching
在同一位置(即图像的照相机位置相同)拍摄的两幅或者多幅图像是单应性相关的。我们经常用该约束来拼接图像,创建全景图像。
一、原理解释
1、图像拼接流程
①加载图片,提取SIFT特征点
②两张图片的SIFT特征匹配
③估计图片的几何变换(一张图作为模范图,另外一张图作为移动图,也就是对移动图进行拉伸旋转等几何变换)
④图片融合(最大密度投影法等)
2、RANSAC
RANSAC是“RANdom SAmple Consensus(随机一致性采样)”的缩写。它可以从一组包含“局外点”的观测数据集中,通过迭代方式估计数学模型的参数。用来找到正确模型来拟合带有噪声数据的点集,想要提高正确概率必须提高迭代次数。核心思想就是随机性和假设性,随机性用于减少计算,循环次数是利用正确数据出现的概率。所谓的假设性,就是说随机抽出来的数据都认为是正确的,并以此去计算其他点,获得其他满足变换关系的点,然后利用投票机制,选出获票最多的那一个变换。
二、运行过程
代码如下所示
from pylab import *
from numpy import *
from PIL import Image
# If you have PCV installed, these imports should work
from PCV.geometry import homography, warp
from PCV.localdescriptors import sift
"""
This is the panorama example from section 3.3.
"""
# set paths to data folder
fea