图像拼接技术步骤归纳

2023-11-16

前言

    图像拼接也是计算机视觉领域的一个研究热点,本人这段时间内也对该算法进行了一番研究,在这里把其思想步骤简单归纳总结一下,以免忘记。


一、算法目的

    随便拍摄两张图片(图1和图2),两图之间有相同的拍摄区域,需要将两幅图无缝拼接在一起,完全接壤。(不就是全景拼接嘛!!)


二、存在问题

    有人说:既然两图有同样的区域,把相同的区域重合起来不就行了吗?
    非也非也~!由于镜头拍照的位置不同,会导致图1和图2虽然有相同的拍摄区域,但是并不能简单地将图2和图1重叠的区域覆盖进行拼接。因为,拍摄图1和图2时,相机的世界坐标位置基本都会发生变化。试想一下,你首先站在A位置看物体1,然后换到B位置再看物体1,物体1虽然仍然在你的视野中,但是,它在你眼中与周围参照物的距离都会发生变化(除非你只是转一下眼珠)。
    
     所以,我们要有将图2进行透视变换的一个过程,变换后的图2在进行简单的平移后就能完全与图1中的重叠部分重合。

三、处理步骤

    总体思路就如上面所述,那么,我们来看看具体的操作步骤吧(如有错误欢迎指正):
     步骤一、首先需要将图像进行桶形变换。该变换的主要目的是为了减少拼接后图片的畸变。
     如果没有进行桶形变换,拼出的图片可能是这样:
    
    如果还有更多的图片,拼出来的结果可能会更加夸张:
    
    那为什么桶形变换后就能改善拼接效果呢?作者认为由于图1和图2的重叠区域主要是在边缘,进行桶形变换后缩减了边缘图像匹配的发散,尽量让匹配点的纵坐标的差值减小,缩减透视变换后的变形。
    步骤二、桶形变换后,需要找到两幅图中相同的特征点,也就是 特征点匹配。
     在此首先需要计算特征点,然后将特征点进行匹配(可用到的特征有sift、surf、fast、角点等)。作者用的是sift,它具有旋转不变性和缩放不变性,效果很好,理论资料以及代码都可以在网上找到,这里不作详解,只是速度非常慢,如果只是离线计算透视矩阵,可以考虑选用它。

    步骤三、经过上面步骤后,我们获得了特征匹配点(即图1和图2中同样特征点分别在两图中的坐标),但是经过观察,所匹配的点并不会百分百正确,有少数匹配点是不正确的(如下图中最长的那根黄线,明显找错位置了,但如果绝大多数匹配点都找错了,那就没有往下继续的必要了,而该回头看看是不是重叠区域过少,或者图片特征点太少造成的,再或者特征点计算的算法本身就有错误),透视矩阵需要选取4对特征点计算(如有时间讲解一下透视矩阵的计算过程,先占一个坑),万一选中了不正确的匹配点,那么计算的透视矩阵肯定是不正确的。因此,为了提高计算结果的鲁棒性,我们下一步就是要把这些不正确的匹配点给剔除掉,获得正确的透视矩阵。


    那要如何剔除不正确的匹配点呢?在这里使用了一个暴力的方法RANSAC(我觉得经过这一步骤已经可以把匹配错误的点给剔除掉了,除非匹配错误的点数大于匹配正确的点数):随机抽取不同的4对特征匹配坐标(在图1中随机抽取4个特征坐标,以及这4个特征坐标在图2中匹配的4个特征坐标,组成4对特征匹配坐标),利用这4对特征匹配坐标计算出透视矩阵H1(3x3的一个矩阵,图2经过透视矩阵变换后,可以把图2映射到图1的坐标空间中,再将图2进行简单的平移即可与图1实现无缝拼接),再将图2中所有特征匹配点经过该透视矩阵H1映射到图1的坐标空间,然后与图1匹配点实际坐标求欧氏距离(就是为了验证计算出来的这个H1矩阵是否满足绝大多数特征匹配点);之后重复上面内容,再随机抽取不同的四组特征匹配坐标,再计算透视矩阵H2,再求欧式距离,如此重复多次(次数自己定,本人取了1000次)。最后以欧式距离最小的那个透视矩阵(表示这个特征矩阵H满足最多的特征匹配点,它最优秀)作为最终计算结果,同时将欧氏距离过大的匹配特征点剔除(表示由这4组计算出来的透视矩阵满足不了绝大多数匹配点)。这时可以看到下图中,不正确的匹配点已经剔除了。而为什么说这种方法暴力呢?因为它每计算一次透视矩阵,就要用这个透视矩阵把所有的匹配点都测试一遍,如果匹配点的数量太多,速度会很慢。
    步骤五、最后,我们对图2进行透视变换,与图1进行拼接,来看看拼接效果吧,是否做到了无缝呢?对的,图像基本做到无缝了,但是你还能看到有明显的衔接线条存在,如果重叠区域用模糊处理后,衔接线条应该就不会那么明显了。

    什么?你还想看看没经过桶形变换就进行拼接的效果?



四、总结

    

    最后,我们再来总结一下吧。

    要进行图像的无缝拼接,我们的目标就是了获得透视矩阵H,而为了获得透视矩阵,首先需要寻找图像的特征点(sift、surf等等),然后把两个图像中相同的特征点找出来,再根据匹配的特征点计算透视矩阵H。

    计算出透视矩阵H之后,剩下的就是把图2经过H矩阵进行透视变换,让图2在图1的坐标系下表示,这时再进行简单的平移拼接即可实现。

    本文只是将算法思路以通俗的语言简单描述了一下,有些算法并没深入介绍,如仿射矩阵的理论,sift的理论,但是这些算法可以在网上很方便地查找,甚至有现成的代码,如果有想学习的还是自己动动手,搜集一些资料吧。

    最后来一张多图拼接的效果:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

图像拼接技术步骤归纳 的相关文章

随机推荐

  • 《信号与系统》4.10.2工频干扰的滤除

    平台 版本 Multisim14 1 参考书籍 信号与系统 4 10 2工频干扰的滤除 工程上 滤除工频干扰比较常用的电路是无源双T陷波滤波器 图示双T的无源陷波滤波器电路 陷波器是某一小频率范围内的带阻滤波器 陷波器的一个常见的应用是滤除
  • Seaborn入门详细教程

    作者 luanhz 来源 小数志 Seaborn入门详细教程 导读 今天我们来介绍 seaborn 这是一个基于matplotlib进行高级封装的可视化库 相比之下 绘制图表更为集成化 绘图风格具有更高的定制性 教程目录 01 初始seab
  • 一文带你了解序列化与反序列化基本原理与操作

    文章目录 一 什么是序列化与反序列化 二 为什么我们需要序列化与反序列化 三 步骤说明 四 注意说明 五 代码说明 六 序列化与反序列化原理 一 什么是序列化与反序列化 序列化是指将对象转换为字节序列的过程 以便于存储或传输 在序列化过程中
  • torch的交叉熵损失函数(cross_entropy)计算(含python代码)

    1 调用 首先 torch的交叉熵损失函数调用方式为 torch nn functional cross entropy input target weight None size average None ignore index 100
  • idea 配置log4j

    1 导入log4j jar包 放在lib目录下 右键jar包 createlibrary 好像是 还有一种方法 2 配置log4j properties文件 设置输出信息 DEBUG级别和ERROR级别 log4j rootLogger d
  • 【图像检测】基于计算机视觉和滤波实现热红外图像温度检测系统含Matlab源码

    1 简介 读入给定的热红外图像 完成彩色图像灰度化 对步骤1中的灰色图像加噪 并采用不同的方法对不同的加噪图像去噪 使得去噪效果更佳 基于灰度图像中标准温度对照带 提取图像中各像素的温度值 2 部分代码 function varargout
  • Keras-多输入多输出【多任务】

    模型结果设计 代码 from keras import Input Model from keras layers import Dense Concatenate import numpy as np from keras utils i
  • Reid 论文文章

    Reid 论文探索 Harmonious Attention Network for Person Re Identification 着重在空间注意力和通道注意力上 结构设计比较巧妙 通过global和local的两级将特征细化 参考链接
  • [QT_027]Qt学习之按钮类控件(QPushButton、QToolButton、QRadioButton、QCheckBox、QCommandLinkButton)

    本文转自 Qt编程指南 作者 奇先生 Qt编程指南 Qt新手教程 Qt Programming Guide 5 1 按钮类的控件 本节介绍图形程序里常见的按钮 包括普通的按钮按钮 之前都用过多次了 还有单选按钮 复选框 命令链接按钮等 本节
  • 【python】jupyter notebook的快捷键

    Jupyter Notebook 提供了许多快捷键以方便操作 这些快捷键分为两类 命令模式快捷键和编辑模式快捷键 命令模式快捷键 在命令模式下 细胞边框是蓝色的 这些快捷键主要用于操作单元格 Enter 进入编辑模式 Shift Enter
  • NoSQL数据库如何选型

    NoSQL数据库在体系结构和功能上各不相同 整体来说 NoSQL数据库选型需要从数据模型和存储特性两方面综合考虑 一 数据模型 NoSQL数据模型包括键值 宽列 图形 文档等 与关系型数据库使用的数据结构不同 具有高扩展性 弱一致性 适合分
  • Ozone作为Hadoop FileSystem的配置使用

    文章目录 前言 Ozone FileSystem的Hadoop兼容性文件系统实现原理 Ozone FileSystem的配置 Ozone FileSystem的使用 引用 前言 Ozone作为同样隶属于Hadoop大数据生态圈的一个系统 尽
  • Dynamics CRM 365 电子邮箱配置

    Dynamics CRM 365 如何配置电子邮箱服务 电子邮件服务器配置 电子邮件配置设置 邮箱 注意 天天在踩坑 坑坑不一样 启用CRM的电子邮箱通知 1 先配置电子邮件服务器文件 2 在电子邮件配置中设置好相关属性配置 3 在邮箱中设
  • NPOI从数据库中调取数据直接导出到EXCEL中

    https blog csdn net weixin 30725315 article details 98769248 一 关于NPOI NPOI是POI项目的 NET版本 是由 Tony Qu http tonyqus cnblogs
  • 证明正定矩阵的充要条件:全部顺序主子式大于0

    定理 f x T A x f x TAx f xTAx 正定的充要条件是
  • ChatGLM-6B,支持在单张消费级显卡上进行推理使用 案例

    近日 由清华技术成果转化的公司智谱AI 开源了 GLM 系列模型的新成员 中英双语对话模型 ChatGLM 6B 支持在单张消费级显卡上进行推理使用 这是继此前开源 GLM 130B 千亿基座模型之后 智谱AI 再次推出大模型方向的研究成果
  • artTemplate 模板引擎(简洁语法/原生语法)

    1 artTemplate 简洁语法模板 1 引入插件 lt script src template js gt 2 编写模板
  • flea-common使用之通用策略模式实现

    通用策略模式实现 Flea Strategy 1 概述 2 参考 3 实现 3 1 定义Flea策略接口类 3 2 定义狗喊叫声策略类 3 3 定义猫喊叫声策略类 3 4 定义鸭喊叫声策略类 3 5 定义策略上下文接口类 3 6 定义Fle
  • 采坑系列:Waves MaxxAudio Pro无法正常启动,插入耳机窗口闪过,耳机没声音

    解决 用驱动精灵下载这个版本的驱动就可以解决 参考网址 http tieba baidu com p 5887035088 第11楼 降低声卡驱动版本
  • 图像拼接技术步骤归纳

    前言 图像拼接也是计算机视觉领域的一个研究热点 本人这段时间内也对该算法进行了一番研究 在这里把其思想步骤简单归纳总结一下 以免忘记 一 算法目的 随便拍摄两张图片 图1和图2 两图之间有相同的拍摄区域 需要将两幅图无缝拼接在一起 完全接壤