图像拼接技术是数字图像处理技术一个重要的研究方向,它即是将两幅或多幅相互有部分重叠的场景照片拼接成具有超宽视角、与原始图像接近且失真小、没有明显缝合线的高分辨率图像。可以很好地解决广角镜、鱼眼镜头等全景图获取设备的不足。如下图:

图像拼接产生的图像不仅具有较好的景物全局影像,而且还保留了原始图像的细节信息。通过图像拼接技术,可以剔除图像冗余信息,压缩信息存储量,从而更加有效地表示信息。自动建立大型、高分辨率的图像拼接技术一直是计算机视觉、照相绘图学、图像处理和计算机图形学的活跃研究领域。

一、基本流程

早在计算机出现之前图像拼接技术就应用在实践中,人们把拍摄的图像拼接起来得到一幅视角更大的图像,这便是最初的手工图像拼接。随着电子信息技术的不断发展,现在所说的图像拼接往往指的是对数字图像的拼接。目前国内外有很多单位及个人致力于全景图像的生成和图像拼接算法的研究。

图像获取、图像预处理、图像配准和融合这四步是图像拼接的整体流程,其中图像配准被视为图像拼接最为关键的一步。

1、图像的获取

获取图像的方式不同必将导致输入图像的不同,从而需要根据不同的图像获取方式选择不同的图像配准方法。使用普通相机拍摄图像时,照相机的运动方式决定着图像的获取方式。使用普通相机拍摄时一般有旋转相机拍摄、平移相机拍摄和手持相机拍摄三种方式。
        (1)使用三脚架旋转相机进行拍摄:使用这种方法采集图像时三脚架放置在某一位置不动,照相机绕垂直轴旋转,每旋转过一定角度便拍摄一张图像,相邻的两种图像必须有部分重叠。因为相机固定不需要恢复太多参数,因此比较容易实现图像的拼接。但是由于这种旋转拍摄的图像序列不在同一平面上,若简单投影到同一平面上会导致图像发生扭曲等现象使图像质量下降影响整个图像拼接结果。旋转相机拍摄一般需要使用柱面投影或是球面投影来生成全景图像。这种拍摄方式也需要相邻的两幅图像有较大的重叠区域才能保证图像拼接的质量,一般选用不小于50%的重叠比例较为合适。而过大的重叠率会导致拼接全景图时需要更多的图像,增大需要处理的信息量。为了减小计算量采集图像时可以适当地使用广角镜头。

(2)把相机固定在水平滑轨上,保持相机焦距不变,水平移动相机每隔一定距离拍摄一幅图像,最后得到有一定重合区域的图像序列。这种方法获取的图像都在一个平面上是比较容易实现图像的拼接。但是这种方法对拍摄条件的限制比较苛刻,物体和相机的距离也会影响图像的配准结果,而且这种拍摄方式视点放生改变不适宜用来生成360度全景。

(3)手持相机拍摄,可以站在原地旋转相机进行拍摄,也可以水平移动进行拍摄,这种拍摄方式对拍摄器材的限制比较小只需要一台相机即可完成拍摄,是最易实现的拍摄方式。但是手持相机拍摄过程中相机的运动非常复杂,势必会发生难以预料的抖动,旋转角度或是平移距离都难以精确控制,给图像配准带来了很大的困难。但是研究这种相机运动方式复杂情况下拍摄的图像的拼接对图像拼接的广泛应用有着重要的意义。

这三种拍摄方式必须面对的同一问题就是相邻图像间的光强变化,理想情况下图像相同区域应该具有相同的光强,但是拍摄过程中光源的变化及相机与光源间角度的变化都是导致图像的相同区域之间具有不同光强的原因。使用多相机拍摄时不同摄像头的个体差别也会导致图像曝光的差异。使用合适的融合方法解决好图像获取中的曝光差异也是图像拼接需要研究的一个重要问题。

2、预处理

对图像的预处理主要包括去噪和校正,去噪不在此细提,主要说明一下校正。在图像采集的过程中相机的运动会导致图像发生几何形变,摄像头自身的问题也会使采集的图像无法还原真实世界中的场景,因此对图像的畸变进行校正是进行全景拼接前必不可少的一步。

这里首先研究相机本身系统问题导致的失真。理想情况下的摄像头可以还原真实世界中的场景,但是由于拍摄方式的问题及摄像机本身光学和电子系统的误差会使获取的图像发生扭曲无法还原真世界中的场景,这种扭曲是不规则的,但是这种扭曲通常情况下是以摄像头中心为对称轴成径向形态对称的,我们把这种畸变叫做径向畸变。径向畸变一般分为桶形失真和枕形失真两种:

在进行预处理时就需要将这些失真进行校正。

3、图像配准

图像配准可以认为是在不同时间或相同时间、从不同视角或相同视角对同一场景拍摄的两幅或者多幅图像进行空间域上的匹配过程 。用于得到输入图像之间的对应关系,包括平移、旋转、缩放等几何关系以及色差、亮度差等非几何关系。

把两幅图像分别定义为已知的二维矩阵, 分别表示两幅图像的灰度空间分布,则可以利用下面式子来表示两幅图像间的映射关系

式中f 为二维空间域的坐标变换,g 是一维图像灰度变换,所以图像配准的问题就是求解最优函数f 和g 的过程。图像配准的关键就在于获取最合适的空间或几何变换参数

图像配准可划分为以下4个要素:

  1. 特征空间:是指从图像中所提取出来的特征集合,例如角点、灰度与轮廓等;
  2. 搜索空间:是指图像间的几何变换关系。例如仿射、刚体及投影等形式:
  3. 相似度衡量:用于表示图像间匹配的依据,不同的情况会使用不同的度量方式;
  4. 捜索策略:根据度量方式,采用合适的算法进行捜索,目的是得到最佳的变换模型。

图像配准算法主要分为H个类别;基于变换域、基于灰度信息以及基于特征。

1)基于变换域的配准方法

该方式也称作基于频率域。处理方式是傅里叶变换。可W实现空间域到频域的对应,然后利用功率谱来计算图像间的几何关系,再根据结果进行配准。运用傅里叶变换的好处在于:实际中的图像变换有对应量;对抗噪声有很好的鲁棒性;运用FFT(快速傅里叶变换)可提高速度。

2)基于灰度信息的配准方法

基于灰度信息的图像配准方法,一般来说,不用经过复杂的预处理环节,而是通过图像本身就有的灰度信息来统计度量图像间的相似程度。所以,该方式的优缺点也很明显:优点在于不用提取特征,直按利用图像的灰度信息,可提高匹配精度和鲁棒性;缺点在于因计算邻域灰度而导致计算量大、速度慢,若图像间的灰度差异较大时无法保证精确配准。

该配准方法有互相关和互信息两种经典方法。其中,互相关配准方法是通过度量图像与模板间的相似度来进行配准的。互信息配准法是近年来研究最多的一种配准方法,是通过捜索图像间最大互信息来进行配准的,常应用于模板匹配或模式识别。

3)基于特征的配准方法

该配准方法的思路主要是从图像中获取具有显著特点的局部结构特征,如角点、边缘线、亮区域的暗点或暗区域的亮点等,再对所提取的特征进行匹配以确定图像间的对应关系。该方法的优点在于只需要局部显著特征,对应的计算量小、速度快,而且适用于带有一定程度噪声或变形等的情况:缺点是配准的效果受特征提取影响,而且还存在一定的误匹配情况,若图像间特性差异大时,误差较大。常见的特征提取方法有角点检测法、Forstner算法、SIFT算法和基于小波变换的提取算法及Canny检测算法等。

4、图像融合

图像融合技术是在图像配准之后进行的。该过程是针对上一步处理获得的两幅图像的数据信息,通过采取一定的算法将所包含的信息互补地合并处理,从而得到一幅所含信息更加完整、可靠队及准确的新图像。新图像能比较全面的描述图像采集场景,与单一图像作比较,能够降低或者控制对图像采集场景整体认知中可能存在的不确定性、片面性及多义性,最大程度地运用图像序列所提供的信息。总的来说,图像融合能更好地描述或表达被采集对象或场景,能够提高对图像信息的分析、理解及提取等方面的能力。

融合算法根据图像融合特色可分为三个层次,即像素级融合、铅征集融合和决策级融合。

(1)像素级融合

该分类是种低水平的图像融合技术。像素级融合的基本思路就是针对图像配准后的图像数据直接进行融合,然后再对融合结果中进行相应的特征提取,并做出必要的属性说明。其优点在于融合结果能尽可能地保留原始信息,能更好地显示源图像中的细节信息;缺点在于融合过程中需要处理的数据量大、所耗费地时间长,即计算和存储都不方便,并且要求传感器是同质的。

(2)特征级融合

这是一种中等水平的图像融合技术。该分类的基本思路是提取特征并用数学语言加以描述得到特征矢量,最后再通过综合分析对特征矢量进行融合处理。其优点待处理的信息得到压缩,从而提高计算速度,有利于实时;缺点是忽略了大量的原始细节信息,导致精度有所降低。

(3)决策级融合

这是一种高等水平的图像融合技术。决策级融合的基本思路是对单幅图像做属性说明,得到初步决策结果,再对获得的结果进行融合处理,从何获取最终的联合判决。其优点在于信息浓缩,具有一定的容错性和开放性,处理时间较短;缺点是融合结果效果不准确。

二、拼接质量评价

图像拼接质量的好坏主要体现在两个方面,即图像间的亮度一致性与结构一致性,其中亮度一致性主要取决于图像融合算法的性能,而结构一致性主要取决于图像配准算法的性能。为得到高质量的全景图像,许多先进的拼接方法被提出,如何评价这些方法的性能就成为一个重要问题。目前,图像拼接质量的评价方法主要有两种:主观质量评价方法和客观质量评价方法。

1、主观质量评价方法

主观质量拼接方法根据观察者对图像的主观视觉感知来评价图像质量的好坏。在图像拼接过程中,常见的视觉异常现象(visible artifacts)包括:

  1. 模糊(blurring);
  2. 重影(ghosting);
  3. 亮度突变(intensity saltation);
  4. 纹理断裂(texture crack);
  5. 透视畸变(perspective distortion)

对于融合后的全景图像,通常并不存在用于对比的“真值”(ground truth)。近年来一些无参考图像下的图像质量评价指标相继被提出,它们能够反映出图像压缩或传输过程中产生的噪声对图像质量的影响。但这些指标并不能客观有效地识别全景图像中是否存在上述视觉异常现象,这种情况下对图像质量的评价依然需要依靠人的常识和经验,因此,目前对图像拼接中融合方法性能的评价主要采用主观质量评价方法。

主观质量评价方法直接依赖于人类视觉系统(human visual system,HVS),因此评价结果最为可靠,但每一幅全景图像质量的评价都需要观察者介入,当图像数据量较大时,评价过程繁复耗时,实际应用中受限较大。

2、客观质量评价方法

客观质量评价方法使用特定的量化指标对图像质量进行定量评价。图像拼接中主要用于评价图像配准的精确程度,具体地,通过计算重叠区域图像间的相似程度衡量图像拼接质量的好坏。目前常用的客观质量指标主要有:均方误差(mean square error,MSE),峰值信噪比(peak signal-to-noise ratio,PSNR),归一化互相关系数(normalized cross-correlation,NCC),零均值归一化互相关系数(zero mean normalized cross-correlation,ZNCC),结构相似性指数(structuralsimilarity index,SSIM)以及多尺度结构相似性指数(multi-scale structural similarity index,MS-SSIM)等。

全景图像拼接——基本流程相关推荐

  1. opencv4 图像特征匹配_概述 | 全景图像拼接技术全解析

    点击上方蓝字关注我们 微信公众号:OpenCV学堂 关注获取更多计算机视觉与深度学习知识 前言 图像/视频拼接的主要目的是为了解决相机视野(FOV-Field Of View)限制,生成更宽的FOV图 ...

  2. python计算机视觉--全景图像拼接

    目录 一.RANSAC算法 1.1 RANSAC算法简介 1.2 算法基本思想和流程 1.3 RANSAC求解单应性矩阵 二.图像映射与全景拼接 2.1 简介 2.2 计算第二张图像与第一张图像之间的 ...

  3. 计算机视觉——全景图像拼接

    全景图像拼接 1.全景图像拼接 1.1 基本介绍 1.2 基本原理 1.2.1 APAP算法 1.2.2 寻找最佳拼接缝(Seam Finding) 1.2.3 图像融合(multi-band ble ...

  4. 概述 | 全景图像拼接技术全解析

    点‍击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 前言 图像/视频拼接的主要目的是为了解决相机视野(FOV-Fie ...

  5. 全景图像拼接【计算机视觉】

    文章目录 一.全景图像拼接 1.1基本介绍 1.2原理解析 1.3 RANSAC算法(RANdom SAmple Consensus,RANSAC) 1.3 图像配准 1.4 APAP算法 1.5 图 ...

  6. Python计算机视觉(三)—— 全景图像拼接

    文章目录 一.创建全景图 1.1 图像拼接整体流程 1.2 RANSAC算法 1.3 图像配准 1.4 图割方法 1.5 图像融合 1.6 APAP算法 1.7 multi-band bleing算法 ...

  7. 计算机视觉实验三-全景图像拼接

    目录 一.图像映射与全景拼接 1.1 简介 1.2基础流程 1.3计算图像之间的变换结构 1.4图像拼接的几何原理 ​编辑 1.5变换类型选择 1.6 2D 图像变换原理 1.7 图像映射流程 1.8 ...

  8. 计算机视觉——实验四-全景图像拼接

    一.创建全景图 同一位置(即图像的照相机位置相同)拍摄的两幅或者多幅图像是单应性相关的.         我们经常使用该约束将很多图像缝补起来,拼成一个大的图像来创建全景图. 1.图像拼接整体流程 根 ...

  9. 计算机视觉——全景图像拼接(作业四)

    文章目录 1. 基本原理 1.1 图像拼接的几何原理 1.2 2D图像变换原理 1.3 直线拟合 1.4 RANSAC算法 1.5 APAP算法 1.6 寻找最佳拼接缝(*Seam Finding*) ...

最新文章

  1. Windows 下面 redis 发布为服务的官方方法
  2. CF-558E(E. A Simple Task)
  3. java 12错误_Java异常处理的12条军规总结
  4. 干货:4个小技巧助你搞定缺失、混乱的数据(附实例代码)
  5. python怎么学比较有技巧_学python必须知道的30个技巧
  6. 点云3D目标检测学习(1):pointnet、pointnet++模型
  7. ue java_Ue java 配置
  8. ORA-12505,TNS:listener does not currently know of SID given in connect descriptor(不知道的SID)
  9. C语言及程序设计进阶例程-30 联合体及其应用
  10. 第8.18节 Python类中内置析构方法__del__
  11. mysql字符集编码解析_MySQL字符集编码的理解
  12. Kali linux 安装Ralink外置无线网卡
  13. GHOST XP SP3 遐想网络 纯净驱动预览版 2.0
  14. Linux 安装.deb软件包之前 dpkg-deb 命令查看.deb文件详细信息 版本号 包名
  15. c语言小球消砖块的游戏,求大神帮忙看看这个弹弹球消砖块的游戏代码,为什么speed只能15...
  16. 微信小程序模板template的使用
  17. java中的 r是什么意思_R在java中是什么意思
  18. 数组,es5,字符串,Math和Date
  19. 看金融海啸是如何害死蚯蚓一家的(多图杀猫)
  20. 国密SM9算法C++实现之八:密钥交换算法

热门文章

  1. iOS小知识点(非UI部分)
  2. JSONModel的基本使用
  3. HDU 1715 大菲波数 (大数问题)
  4. GDI绘图基本步骤总结(经典)
  5. iOS开发-证书问题精析~
  6. CSS-合理使用z-index控制盒子视轴高度,解决z-index失效
  7. ZOJ Problem Set - 1067 Color Me Less
  8. jQuery以Post方式发送请求并获取返回的文件供下载!
  9. flash时间轴控制命令
  10. 处女座|处女座性格分析