Python计算机视觉实验四——图像全景拼接

这篇博客介绍了使用Python进行计算机视觉中的图像全景拼接,重点探讨了RANSAC算法在估计稳健单应性矩阵中的应用,以及由此进行的图像拼接过程。在实际操作中,尽管出现了图像断层和重影问题,但通过SIFT特征匹配实现了部分图像的拼接。
摘要由CSDN通过智能技术生成

1.RANSAC

PANSAC是“RANdom SAmple Consensus”(随机一致性采样)的缩写。该方法是用来找到正确模型来拟合带有噪声数据的迭代方法。给定一个模型,例如点集之间的单应性矩阵,RANSAC基本的思想是,数据中包含着正确的点和噪声点,合理的模型应该能够在描述正确数据点的同时摒弃噪声点。
RANSAC算法的步骤:
选择4对匹配特征点(选择4对特征点因为单应性矩阵有8个自由度,需要4个特征点,每个特征点都能构造2个方程,然后求解单应性矩阵,但是任意3个点或4个点不能在同一条直线上)
根据直接线性变换解法DLT计算单应性矩阵H
对所匹配点,计算映射误差
根据误差阈值,确定inliers数量
针对最大的inliers集合,重新计算单应性矩阵H

2.稳健的单应性矩阵估计

我们在任何模型中都可以使用 RANSAC 模块。在使用 RANSAC 模块时,我们只需要在相应 Python 类中实现 fit() 和 get_error() 方法,剩下就是正确地使用 ransac.py,我们这里使用可能的对应点集来自动找到用于全景图像的单应性矩阵。下面是使用SIFT特征自动找到匹配对应。

3.拼接图像

from numpy import *
from matplotlib.pyplot import *
from PIL import Image
from PCV.geometry import warp, homography
# import homography
from PCV.localdescriptors import sift

featname = ['imag3/' + str(i + 1) + '.sift' for i in range(5)]
imname = ['imag3/' + 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
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值