图像处理之图像拼接(python)

本文介绍了如何使用Python进行图像拼接,主要涉及图像的单应性相关理论,通过SIFT特征匹配和RANSAC算法排除错误匹配,计算变换矩阵,实现图像的无缝拼接。在实际应用中,室内场景和室外场景的拼接效果各有挑战,如分割明显、照片歪斜、物体变形等问题,提出了图片融合的方法如Graph cuts来改善拼接质量。

一、算法目的
在同一位置拍摄两张以上图片,这些图片是单应性相关的,即图片之间有相同的拍摄区域。基于此将图片进行缝补,拼成一个大的图像来创建全景图像。

二、基本原理
要实现两张图片的简单拼接,其实只需找出两张图片中相似的点 (至少四个,因为 homography 矩阵的计算需要至少四个点), 计算一张图片可以变换到另一张图片的变换矩阵 (homography 单应性矩阵),用这个矩阵把那张图片变换后放到另一张图片相应的位置 ,就是相当于把两张图片中定好的四个相似的点重合在一起。如此,就可以实现简单的全景拼接。

实现步骤

  1. 读入连续图片并使用SIFT特征查找匹配对应点对
import sift
#sift程序应与运行图片在同一文件夹下
featname = ['C:/Users/Administrator/Documents/python/jmu'+str(i+1)+'.sift' for i in range(5)] 
imname = ['C:/Users/Administrator/Documents/python/jmu'+str(i+1)+'.jpg' for i in range(5)]
l = {}
d = {}
for i in range(5): 
    sift.process_image(imname[i],featname[i])
    l[i],d[i] = sift.read_features_from_file(featname[i])

matches = {}
for i in range(4):
    matches[i] = sift.match(d[i+1],d[i])

在这里插入图片描述
sift算子存在错误的匹配点,因此需要用Ransac算法剔除错误匹配点。

  1. 利用RANSAC算法计算变换矩阵
    2.1 RANSAC算法
    RANSAC是"RANdom SAmple Consensus"(随机一致采样)的缩写。该方法是用来找到正确模型来拟合带有噪声数据的迭代方法。给定一个模型,例如点集之间的单应性矩阵。基本的思想是:数据中包含正确的点和噪声点,合理的模型应该能够在描述正确数据点的同时摒弃噪声点。
    示例
    一个简单的例子是从一组观测数据中找出合适的2维直线。假设观测数据中包含局内点和局外点,其中局内点近似的被直线所通过,而局外点远离于直线。简单的最小二乘法不能找到适应于局内点的直线,原因是最小二乘法尽量去适应包括局外点在内的所有点。相反,RANSAC能得出一个
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值