本发明涉及一种图像拼接方法,提出了一种基于sift特征提取算法对采集到的大量的大场景图像进行全景拼接的改进算法,同时开发出了一款对大场景图像进行拼接的客户端系统。
背景技术:
图像拼接技术是一种将一组有重叠信息的图像拼接成一幅宽视角、高分辨率的全景图的技术。最早始于摄影技术,人们通过手工方式把具有重叠区域的图片拼接在一起来获得更宽视野的图像,早期主要应用于航空和卫星照片的拼接合成。随着信息技术和微电子技术的快速发展,很多领域都需要高分辨率、宽视野的图像如医学领域、卫星遥感,同时数码摄像机的普及使得普通大众也可以方便地拍摄图像。
通常情况下,由于照相机等成像设备的限制,无法获取大面积区域的图像,所以需要利用图像拼接技术将获取的遥感图像序列拼接成大的全景图像。图像拼接技术一直是图像处理领域的研究热点,它通过计算机,运用数字配准和融合技术将一组具有重叠部分的图像或连续多帧视频图像,拼接成一个无缝的全面的大场景视图。而随着虚拟现实技术和计算机视觉技术的发展,人们希望可以通过照相机对景物进行连续拍摄,自动生成全景照片即全景照相,这同样是以图像拼接技术为基础的。图像拼接技术已经成为图像处理领域的一个非常重要的研究方向,在当今医学、摄影学、数字视频和视频通信等领域都有着广泛的应用,在现实生活、生产中都发挥着举足轻重的作用。
关于图像拼接的方法国内外已有不少的论文发表,其算法大致可分为基于模型的方法,基于变换域的方法,基于灰度相关的方法和基于特征的方法,目前使用的较多的是基于特征点的特征匹配方法,如sift、surf、orb、brisk等,然而缺陷在于有的方法匹配准确度较高但匹配速度较慢、有的提取速度快准确度不高。因此如何提高图像拼接的效率,减少处理时间和增强拼接系统的适应性一直是研究的重点。
目前,图像拼接技术中,大多采用sift进行特征匹配,但是由于sift特征提取会产生较多的特征点,在进行特征点匹配时耗时较久,无法满足对大量的高分辨率图片进行拼接或进行视频实时拼接的要求。因此,本发明提出通过计算照相机的转动速度结合图像分割判断图像间的重叠区域,在重叠区域内对图像进行特征提取,筛选特征点较多的区域来进行特征匹配,由此达到在不损失图像拼接质量的情况下提高拼接速度的目标。
技术实现要素:
针对图像拼接过程中sift算法提取特征点速度较慢,容易陷入卡顿的问题,提出了只对有效重叠区域进行特征提取的方法;并结合对重叠区域进行划分筛选特征点后再对特征点进行匹配的方法,对拍摄到的大场景图片进行拼接,提高拼接的速度。
1.基于sift特征的大场景图像拼接系统,其特征在于:
该系统包括图像的选取、图裁切及蒙版、图像预处理、图像特征点的提取、特征匹配及预览界面、特征点添加、图像融合参数设置以及生成全景图像;
无人机在空中进行图像的采集,通过网络将采集到的图片传回图片接收服务器,将无人机采集到的图像进行选取,每次选取相同格式的图像或者选取云台环绕拍摄的视频文件。
图像裁切和蒙版:如果待处理的图像中包含水印,软件提供了水印去除功能,同时对于尺寸超过1024*980的图片,利用软件对图片进行裁剪。
图像预处理模块:首先将输入的图像从真彩色图转为灰度图,然后将灰度图进行二值化,转变为二值图像,利用灰度图像将各像素灰度值进行垂直投影并将相同灰度值进行累加,将灰度值进行累加后得到投影曲线,通过比较相邻两张图像的投影曲线,获得初始的匹配位置,将第一次定位后的匹配位置记录下来,接下来,进行图像拼接的再次匹配,以预处理获得的匹配点为中心,在图像水平方向邻域范围内进行特征点搜索。
图像特征点提取:出于获得更高准确度的拼接图像的目的,经过试验比对后选择使用sift算法进行特征提取,由于目前各种设备拍摄的图像大多为高分辨率图像,并且拍摄间隙较短,获取的图像重叠区域大于50%,使用sift算法在对整幅图像提取时会产生大量的特征点,并会导致特征匹配时耗费大量的时间做无用匹配,由于两幅图像的重叠区域在30%~50%之间时,就可以将两幅图像拼接到一起,因此采用在重叠部分局部提取特征的方案来减少无用特征点,从而可以提高拼接速度;方案具体思路为:首先根据飞机飞行的速度或者相机云台转动速度来计算采样速率,取相邻两张图像的30%重叠区域作为特征点提取区域,进行特征点提取时,将特征点对存入到临时文件中,便于特征匹配时读取,这种方案将大大提高提取特征点的速度。
图像特征匹配:读取临时文件中保存的特征点对,随机选取一幅图像中的某个关键点,对待匹配图像中的所有关键点距离进行计算,将计算后的距离按照升序进行排列,选择距离最近的两个关键点,在这两个关键点中,如果最近的距离除以次近的距离小于阈值th,,则接受这一对匹配点,如果降低这个比例阈值,匹配点数量会增多,但稳定性会变得稍差,经过试验比对,选取阈值th为0.4。结合预处理获得的匹配点粗略匹配,还需要消除错配点,通过相似性度量得到潜在匹配对,其中不可避免会产生一些错误匹配,因此需要根据集合限制和附加约束消除错误匹配,提高算法的鲁棒性,本发明中采用ransac随机抽样一致性算法来去掉外点,然后对去除错配点后的特征集采用广度优先搜索算法进行遍历,筛去没有匹配的图像并按照顺序依次排列,为后续预览全景图作准备。
预览模块:本模块对排序好的图片进行柱面投影,将图像进行坐标转换,投射到同一个固定坐标系的画布中,由此初步的全景图像基本形成。预览模块具有可以手动调整初步形成的全景图像、缩放图像、显示匹配点、标示各个图片的位置、裁切或移动图像的功能。
输出模块:本模块主要功能为设置图像输出的格式、曝光融合的参数,当用户希望输出不同格式的全景图像时,也可以在本模块进行设置。
生成全景图:要将多张图片排列形成的初步的全景图转换为完成的全景图,需要进行图像融合来消除拼接缝、视觉错位的问题,本发明采用拉普拉斯金字塔融合的方法,对图像进行融合生成最终的全景图。
与现有技术相比,本发明具有以下优点:
本发明采用仅对相邻两幅图的30%重叠区域进行特征提取,同时在进行预处理时找到粗匹配点的方式,提高了图像拼接的速度,并且没有影响到图像拼接的质量,可同时应用于手动导入具有重叠区域的图片、环绕拍摄的视频或直接接入摄像头这三种拼接的方式,可扩展性强,后期可扩展接入目标识别、火焰识别、报警模块,更加完善整个系统的功能。
附图说明
图1为软件主界面;
图2为系统主流程图;
具体实施方式
本发明系统的设计方案主要分为四个部分:系统界面搭建、特征匹配后台模块实现、预览模块实现、图像融合后台模块实现。全景图像拼接系统界面采用c++的wxwidgets库进行搭建,可使系统具有跨平台的特点;特征匹配模块的实现采用sift算法进行特征提取,使用c++编写生成控制台exe以供界面系统调用,提取特征集写入到临时文件中;同理,图像融合模块也采用此种方法实现。
一、系统界面搭建
本发明利用c++的wxwidgets库进行界面的搭建,使该系统具有跨平台兼容的特性,并通过boost库为系统全景图的预览提供逻辑实现,设计添加各个功能的入口及摆放位置,如图1所示。
主要进行包括以下任务功能的设计与实现:
图像文件的选取:从计算机文件中选取相同格式的图像;
排列图像:当用户点击排列图像时,后台提取图像特征点并对特征点进行匹配,排列图像显示到画布中,弹出预览窗口;
裁切图像:点击进入裁切面板,左边显示所有图像,点击图像名称右边显示对应的图像,左下角输入四个端点坐标对图像进行裁切;
添加蒙版:点击进入蒙版面板,左边显示所有图像,点击图像名称右边显示对应的图像,左下角为相应蒙版操作;
调整参数:点击进入缝合器面板,面板上为各项参数,可点击修改对应参数;
全景图生成:点击助手面板的生成全景图按钮,弹出缝合exe,生成对应格式的全景图片。
二、特征匹配模块实现
特征点提取主要有sift、surf、orb、brisk等方法。
sift算法对于旋转、尺度缩放、亮度变化保持不变性,而且对视角变化、仿射变换、噪声也保持一定程度的稳定性。且该方法对特征点的个数和有效点的比例没有要求。当特征点不是很多时,经优化的sift匹配算法甚至可以达到实时的要求。而且可以很方便的与其他形式的特征向量进行联合。
surf除了具有sift算法稳定高效的特点外,还极大的降低了sift算法复杂度,其计算速度是sift的3倍左右,大大提高了特征检测和匹配的实时性。然而在求主方向阶段太过于依赖局部区域像素的梯度方向,有可能使得找到的主方向不准确,后面的特征向量提取以及匹配都严重依赖于主方向,即使不大偏差角度也可以造成后面特征匹配的放大误差,从而匹配不成功;另外图像金字塔的层取得不足够紧密也会使得尺度有误差。
orb算法最大的优点是速度非常快,但是匹配准确度较低,很容易出现问题。
经过试验比对,本发明采用sift算法进行特征点提取,相比于对整幅图像进行特征点提取的方式,本发明对相邻两幅图像重叠的30%的区域进行特征提取和匹配,将匹配的结果集保存到临时文件中。
三、预览模块实现
预览模块主要的功能为:预览排列后的图像、对图像进行缩放、拖动,使用boost库的graph图结构来实现图像的排列展示。
实现预览的步骤为:首先读取所有被选取的图像,添加到图结构中,然后读取图像的特征集添加到图结构中,使用广度优先搜索对图像进行排序,最后将排序好的图像显示到预览窗口中。
四、图像融合模块
点击创建全景图像,会弹出图像融合模块,如果有参数需要调整,可以到缝合器面板调整相对应的参数后再生成全景图。
图像融合的目的是将来自不同图像的特征与细节融合在一起,消除图像拼接过程中出现的拼接缝、视差位移的问题,本发明采用基于拉普拉斯金字塔的图像融合技术,图像金字塔方法的原理是:将参加融合的的每幅图像分解为多尺度的金字塔图像序列,将低分辨率的图像在上层,高分辨率的图像在下层,上层图像的大小为前一层图像大小的1/4。层数为0,1,2……n。将所有图像的金字塔在相应层上以一定的规则融合,就可得到合成金字塔,再将该合成金字塔按照金字塔生成的逆过程进行重构,得到融合金字塔。在高斯金字塔的运算过程中,图像经过卷积和下采样操作会丢失部分高频细节信息。为描述这些高频信息,人们定义了拉普拉斯金字塔(laplacianpyramid,lp)。用高斯金字塔的每一层图像减去其上一层图像上采样并高斯卷积之后的预测图像,得到一系列的差值图像即为lp分解图像。求得每个图像的拉普拉斯金字塔后需要对相应层次的图像进行融合,对融合后的拉普拉斯金字塔,从其顶层开始逐层从上至下按下式进行递推,可以恢复其对应的高斯金字塔,并最终可得到原图像g0。就是从最高层开始使用内插的方法。图像拉普拉斯金字塔分解的目的是将源图像分别分解到不同的空间频带上,融合过程是在各空间频率层上分别进行的,这样就可以针对不同分解层的不同频带上的特征与细节,采用不同的融合算子以达到突出特定频带上特征与细节的目的。即有可能将来自不同图像的特征与细节融合在一起。
进行图像融合后,排列的多张图片就生成了一张完整的全景图片。