一、算法目的:
在同一位置拍摄的两幅或者多幅图像是单应性相关的的,使用该约束将很多图片缝补起来,拼成一个大的图像来创建全景图像。两张图片的拼接必须首先找到相同特征,也就是说两张照片必须要有重叠的部分才能实现拼接,对人眼来说很容易找到两张图片的相似点,对计算机来说需要借助算法。因此图像拼接的第一步是分别获取两张图片的特征点并对特征点进行匹配,第二步对图片进行透视变换并对图片进行拼接。
二、特征点配对:
查找特征点使用sift方法,将两幅或者多幅图像中的相似点提取出来并完成图像的特征点匹配,相关sift的原理解释请看前面介绍。
运行sift找到特征匹配点对:
下面的图片是需要匹配的两张原图,而且它们具有相同的区域,可以找到相同特征点并完成匹配,由于两张图片相似点比较多,特征点容易找,所以匹配效果很明显。
三、RANSAC介绍:
1、ransac
是随机一致性采样,该方法是用来找到正确模型来拟合带来有噪声数据的迭代方法。给定一个模型,例如点集之间的单应性矩阵,ransac的基本思想是,数据中包含正确的点和噪声点,合理的模型应该能够在描述正确数据点的同时摒弃噪声点。
RANSAC算法的具体描述是:给定N个数据点组成的集合P,假设集合中大多数的点都是可以通过一个模型来产生的,且最少通过n个点(n<N)可以拟合出模型的参数,则可以通过以下的迭代方式拟合该参数。
对下面的操作执行k次:
(1)从P中随机选择n个数据点;
(2)用这n个数据点拟合出一个模型M;
(3)对P中剩余的数据点,计算每个点与模型M的距离,距离超过阈值的则认定为局外点,不超过阈值的认定为局内点,并记录该模型M所对应的局内点的值m;
迭代k次以后,选择m最大的模型M作为拟合的结果。
因为在实际应用中N的值通常会很大,那么从其中任选n个数据点的组合就会很
python opencv图片拼接、特征点匹配
最新推荐文章于 2025-06-09 13:26:27 发布