Python计算机视觉——图像拼接

1. 原理

1.1 RANSAC算法

SIFT算法的描述子稳健性很强,比Harris角点要来得精确,但是它的匹配正确率也并不是百分百的,会受到一些噪声点的干扰,有时就会因为不同地方有类似的图案导致匹配错误。那么RANSAC算法便是用来找到正确模型来拟合带有噪声数据的迭代方法。RANSAC通过反复取样,也就是从整个观测数据中随机抽一些数据估算模型参数之后看和所有数据误差有多大,然后取误差最小视为最好以及分离内群与离群数据。基本的思想是,数据中包含正确的点和噪声点,合理的模型应该能够在描述正确数据点的同时摒弃噪声点。

1.2 RANSAC的一个标准化体现:直线的拟合

在这里插入图片描述

  1. 在所有的点中随机选择两个点。
  2. 根据这两个点作一条直线。
  3. 设定一个阈值,计算在这条线上的点的数量,记为inliners。
  4. 根据最大的inliners那条线进行后续计算。

同理,RANSAC算法可以应用到其它模块中,例如用于图像变换的单应性矩阵的计算
在拼接的过程中,通过将响速和单应矩阵H相乘,然后对齐次坐标进行归一化来实现像素间的映射。通过查看H中的平移量,我们可以决定应该将该图像填补到左边还是右边。当该图像填补到左边时,由于目标图像中点的坐标也变化了,所以在“左边”情况中,需要在单应矩阵中加入平移。

1.3 全景拼接

在之前的一篇博客介绍过SIFT匹配的方法,这里就不多写了,这次将其应用到图像拼接上。根据特征点匹配的方式,则利用这些匹配的点来估算单应矩阵(使用上面的RANSAC算法,也就是把其中一张通过个关联性和另一张匹配的方法通过单应矩阵H,可以将原图像中任意像素点坐标转换为新坐标点,转换后的图像即为适合拼接的结果图像。可以简单分为以下几步:

  1. 根据给定图像/集,实现特征匹配。
  2. 通过匹配特征计算图像之间的变换结构。
  3. 利用图像变换结构,实现图像映射。
  4. 针对叠加后的图像,采用APAP之类的算法,对齐特征点。(图像配准)
  5. 通过图割方法,自动选取拼接缝。
  6. 根据multi-band blending策略实现融合。
1.3.1 图像融合blending

其实图像拼接完会发现在拼接的交界处有明显的衔接痕迹,存在边缘效应,因为光照色泽的原因使得图片交界处的过渡很糟糕,所以需要特定的处理解决这种不自然。那么这时候可以采用blending方法。multi-band blending是目前图像融和方面比较好的方法。具体可以参考论文:论文

原始论文中采用的方法是直接对待拼接的两个图片进行拉普拉斯金字塔分解,而后一半对一半进行融合。在opencv内部已经实现了multi-band blending,但是本篇中没有做相关尝试。
相关参考
相关参考

转载自:https://blog.csdn.net/weixin_43361953/article/details/88833398

2. 实验过程

2.1 针对固定点位拍摄多张图片,以中间图片为中心,实现图像的拼接融合
  1. 数据集:

  • 6
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值