图像拼接方法、装置及终端设备与流程

文档序号:21088387发布日期:2020-06-12 17:03阅读:186来源:国知局
图像拼接方法、装置及终端设备与流程

本发明属于图像处理技术领域,更具体地说,是涉及一种图像拼接方法、装置及终端设备。



背景技术:

图像拼接技术可以有效解决宽视场图像获取问题,是“全景视频”热点应用的技术基础,在视频会议、监控和遥感测绘等领域有广泛的应用。

目前的应用较广的图像拼接算法主要为sift(scaleinvariantfeaturetransform)算法和surf(speeded-uprobustfeatures)算法。无论采用sift算法,还是surf算法,在完成特征提取和特征匹配之后,都至少需要4对特征匹配点计算参考图像和待拼接图像之间的坐标转换参数,即单应矩阵。然而,在大多数图像拼接场合,在应用sift算法或者suft算法进行特征匹配后,会得到多于4对的特征匹配点。由于图像多样性、模糊和噪声等干扰特性,有些匹配点对存在误差,甚至错误,不应用于计算单应矩阵。因此,需要从原始匹配点对中选出最优的4对特征匹配点,以尽可能准确地计算单应矩阵。

现有技术中,sift算法和surf算法主要采用ransac(randomsamplingconsensus)算法来选择最优的4对特征匹配点。

ransac算法的主要内容为:随机抽样4对匹配点,作为一个组合,计算单应矩阵,再计算其余匹配点由单应矩阵映射为内点(即匹配误差在阈值范围内的匹配点)的数目。重复抽样,通过比较各组合得到的内点数目大小来确定最佳4对匹配点组合以及单应矩阵。然而,ransac算法难以适应“内点”占比低的情形,比如得到12对匹配点,其中4对内点,8对外点(即匹配误差超出阈值范围的匹配点),这种情况下,ransac算法优选出错误组合的概率很高,得到的单应矩阵不够准确,导致后续的图像拼接也不够准确。



技术实现要素:

本发明的目的在于提供一种图像拼接方法、装置及终端设备,以提高图像的拼接精度。

本发明实施例的第一方面,提供了一种图像拼接方法,包括:

s11:对获取的参考图像和待拼接图像进行特征匹配,确定参考图像和待拼接图像的匹配点数据集,以及参考图像和待拼接图像的重叠区域;

s12:获取参考图像中所述重叠区域的多个局域像素,组成监督数据集;

s13:选取所述匹配点数据集中预设数量的匹配点对,并基于预设数量的匹配点对确定待拼接图像相对于参考图像的单应矩阵;

s14:基于所述监督数据集与所述单应矩阵确定所述监督数据集在待拼接图像上的映射数据集,并计算所述监督数据集与所述映射数据集之间的像素误差;

s15:检测步骤s13的执行次数,若步骤s13的执行次数未达到预设次数,则返回执行步骤s13~s14;若步骤s13的执行次数达到预设次数,则选取像素误差最小的单应矩阵作为最优单应矩阵,并基于最优单应矩阵对参考图像和待拼接图像进行拼接。

本发明实施例的第二方面,提供了一种图像拼接装置,包括:

特征匹配模块,用于执行步骤s11,其中,步骤s11包括:对获取的参考图像和待拼接图像进行特征匹配,确定参考图像和待拼接图像的匹配点数据集,以及参考图像和待拼接图像的重叠区域;

数据获取模块,用于执行步骤s12,其中,步骤s12包括:获取参考图像中所述重叠区域的多个局域像素,组成监督数据集;

矩阵计算模块,用于执行步骤s13,其中,步骤s13包括:选取所述匹配点数据集中预设数量的匹配点对,并基于预设数量的匹配点对确定待拼接图像相对于参考图像的单应矩阵;

误差确定模块,用于执行步骤s14,其中,步骤s14包括:基于所述监督数据集与所述单应矩阵确定所述监督数据集在待拼接图像上的映射数据集,并计算所述监督数据集与所述映射数据集之间的像素误差;

循环模块,用于执行步骤s15,其中,步骤s15包括:检测步骤s13的执行次数,若步骤s13的执行次数未达到预设次数,则返回执行步骤s13~s14;若步骤s13的执行次数达到预设次数,则选取像素误差最小的单应矩阵作为最优单应矩阵,并基于最优单应矩阵对参考图像和待拼接图像进行拼接。

本发明实施例的第三方面,提供了一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述的图像拼接方法的步骤。

本发明实施例的第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述的图像拼接方法的步骤。

本发明实施例提供的图像拼接方法、装置及终端设备的有益效果在于:与现有技术相比,本发明实施例从参考图像中的重叠区域任选出多个局域像素,组成监督数据集,再将监督数据集通过单应矩阵映射得到映射数据集,通过映射数据集与监督数据集的像素误差来选择最优的单应矩阵,有效避免了“内点占比低”所导致的图像拼接不够准确的情况,提高了图像的拼接精度。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明一实施例提供的图像拼接方法的流程示意图;

图2为本发明另一实施例提供的图像拼接方法的流程示意图;

图3为本发明一实施例提供的图像拼接装置的结构框图;

图4为本发明一实施例提供的终端设备的示意框图。

具体实施方式

为了使本发明所要解决的技术问题、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

请参考图1,图1为本发明一实施例提供的图像拼接方法的流程示意图,该方法包括:

s11:对获取的参考图像和待拼接图像进行特征匹配,确定参考图像和待拼接图像的匹配点数据集,以及参考图像和待拼接图像的重叠区域。

在本实施例中,可首先获取参考图像和待拼接图像,再使用sift算法或者suft算法对参考图像和待拼接图像进行特征匹配,得到参考图像和待拼接图像的特征匹配结果,最后基于参考图像和待拼接图像的特征匹配结果确定参考图像和待拼接图像的匹配点数据集、以及参考图像和待拼接图像的重叠区域。

其中,参考图像和待拼接图像的匹配点数据集中包含所有参考图像和待拼接图像的匹配点对。

s12:获取参考图像中重叠区域的多个局域像素,组成监督数据集。

在本实施例中,可随机选取参考图像中重叠区域的多个局域像素(也即多个局域像素点),多个局域像素组成监督数据集。

在本实施例中,重叠区域指的是参考图像与待拼接图像的重叠区域,参考图像中重叠区域指的是参考图像中与待拼接图像重叠的区域。

s13:选取匹配点数据集中预设数量的匹配点对,并基于预设数量的匹配点对确定待拼接图像相对于参考图像的单应矩阵。

在本实施例中,可随机选取4组匹配点对(也即预设数量为4),并根据随机选取的4组匹配点对计算待拼接图像相对于参考图像的单应矩阵。也可先按照排列组合方法确定4组匹配点对的所有组合方式,再根据需要从所有组合方式中按照预设顺序选取匹配点对。

在本实施例中,预设数量可根据需要进行设置,并不限于本实施例所提供的预设数量的取值。

s14:基于监督数据集与单应矩阵确定监督数据集在待拼接图像上的映射数据集,并计算监督数据集与映射数据集之间的像素误差。

在本实施例中,可通过单应矩阵将监督数据集中的各个局域像素映射到待拼接图像上,得到各个局域像素的映射值,各个局域像素的映射值组成映射数据集。

s15:检测步骤s13的执行次数,若步骤s13的执行次数未达到预设次数,则返回执行步骤s13~s14。若步骤s13的执行次数达到预设次数,则选取像素误差最小的单应矩阵作为最优单应矩阵,并基于最优单应矩阵对参考图像和待拼接图像进行拼接。

在本实施例中,可多次选取匹配点数据集中预设数量的匹配点对,得到多个单应矩阵,将监督数据集和映射数据集之间的像素误差最小时所对应的单应矩阵作为最优单应矩阵,将最优单应矩阵应用于参考图像和待拼接图像的图像拼接。

在本实施例中,选取匹配点数据集中预设数量的匹配点对的次数(也即预设次数)可根据实际需要进行设置。

在本实施例中,像素误差最小的单应矩阵指的是监督数据集和映射数据集的像素误差最小时所使用的单应矩阵。

由上可以得出,本发明实施例从参考图像中的重叠区域任选出多个局域像素,组成监督数据集,再将监督数据集通过单应矩阵映射得到映射数据集,通过映射数据集与监督数据集的像素误差来选择最优的单应矩阵,有效避免了“内点占比低”所导致的图像拼接不够准确的情况,提高了图像的拼接精度。

请一并参考图1及图2,图2为本申请另一实施例提供的图像拼接方法的流程示意图。在上述实施例的基础上,图像拼接方法还可以包括:

s21:对映射数据集中的各个局域像素进行k次移位变换,得到k个变换数据集。分别计算k个变换数据集与监督数据集之间的像素误差,得到k个像素误差。

s22:选取k个像素误差中最小的像素误差,记为第一像素误差,并将最优单应矩阵对应的像素误差记为第二像素误差。

s23:若第一像素误差小于第二像素误差,则获取第一像素误差对应的映射数据集的移位变换数值,并根据移位变换数值对拼接图像进行微调。其中,拼接图像为基于最优单应矩阵对参考图像和待拼接图像进行拼接后的图像。

步骤s11~s15可实现图像拼接,为了进一步提高参考图像与待拼接图像的拼接精度,可采用本实施例中步骤s21~s23的技术方案。

步骤s21中,映射数据集为监督数据集和映射数据集的像素误差最小时对应的映射数据集。

步骤s21中,可对映射数据集进行k次移位变换,则可以得到k个变换数据集,分别计算k个变换数据集与监督数据集的像素误差,则可以得到k个像素误差。其中,在进行像素误差的计算后,存储每次移位变换数值以及每次移位变换后对应的像素误差。其中,移位变换数值包括但不限于移位变换的方向以及在该移位变换方向上的移动数值。

步骤s23中,若第一像素误差小于第二像素误差,则根据第一像素误差对应的移位变换数值对拼接图像进行调整。若第一像素误差不小于第二像素误差,则不进行调整。

可选地,作为本发明实施例提供的图像拼接方法的一种具体实施方式,对映射数据集中的各个局域像素进行k次移位变换,可以详述为:

设定映射数据集中的各个局域像素的移位方向以及移位间隔。

基于设定的移位方向以及移位间隔对映射数据集中的各个局域像素进行k次移位变换。

在本实施例中,移位方向的设定方法为:建立直角坐标系,将映射数据集中的任意一个局域像素作为直角坐标系的原点,以45°为间隔在以原点为中心的360°范围内取8个方向。

在本实施例中,移位间隔的设定方法为:将整数个单元像素作为移位间隔。

在本实施例中,移位方向以及移位间隔具体可以设置为:在水平和垂直4个方向(也即直角坐标系的0°方向、90°方向、180°方向以及360°方向)均移位3次,分别移位1个、3个和5个像素,可取得12组新的局域像素。在45°、135°、225°和315°的4个方向均移位2次,分别移位1个和3个像素,可取得8组新的局域像素。本次移位变换总计可得到20组新的局域像素,也就是说,在本实施例中,k=20,可得到20的变换数据集。

可选地,作为本发明实施例提供的图像拼接方法的一种具体实施方式,若预设数量为4,则确定待拼接图像相对于参考图像的单应矩阵的方法为:

其中,hi为待拼接图像相对于参考图像的单应矩阵,h=[h1h2…h7h8]t

其中,h的确定方法为:

h=(ata)-1atb

其中,a的确定方法为:

其中,b的确定方法为:

b=[x′i1y′i1…x′i4y′i4]t

其中,(xi1,yi1,x′i1,y′i1)、(xi2,yi2,x′i2,y′i2)、(xi3,yi3,x′i3,y′i3)、(xi4,yi4,x′i4,y′i4)为4个匹配点对。

在本实施例中,(xi1,yi1,x′i1,y′i1)中,(xi1,yi1)表示某一像素在参考图像中的坐标,(x′i1,y′i1)表示该像素在待拼接图像中的坐标,(xi2,yi2,x′i2,y′i2)、(xi3,yi3,x′i3,y′i3)、(xi4,yi4,x′i4,y′i4)同理。

可选地,作为本发明实施例提供的图像拼接方法的一种具体实施方式,确定监督数据集在待拼接图像上的映射数据集的方法为:

对监督数据集中的每个局域像素进行单应矩阵的变换,得到监督数据集在待拼接图像上的映射数据集。

其中,单应矩阵的变换方法为:

其中,(an,bn)为监督数据集中的某一局域像素,为该局域像素经过单应矩阵变换后的值。

可选地,作为本发明实施例提供的图像拼接方法的一种具体实施方式,计算监督数据集与映射数据集之间的像素误差的方法为:

其中,dn为监督数据集与映射数据集之间的像素误差,n为监督数据集中局域像素的个数,i1(an,bn)为参考图像在局域像素(an,bn)位置的灰度值,为监督数据集在参考图像中的平均灰度值。为待拼接图像在位置的灰度值,为映射数据集在待拼接图像中的平均灰度值。

可选地,作为本发明实施例提供的图像拼接方法的一种具体实施方式,可在内点占比高以及内点占比低的情况下对本发明实施例提供的图像拼接方法进行验证,实验证明本发明实施例提供的图像拼接方法相对于现有拼接方法,在内点占比高以及内点占比低的情况下的拼接精度均有提升。

对应于上文实施例的图像拼接方法,图3为本发明一实施例提供的图像拼接装置的结构框图。为了便于说明,仅示出了与本发明实施例相关的部分。参考图3,该装置包括:特征匹配模块310、数据获取模块320、矩阵计算模块330、误差确定模块340、循环模块350。

其中,特征匹配模块310,用于执行步骤s11,其中,步骤s11包括:对获取的参考图像和待拼接图像进行特征匹配,确定参考图像和待拼接图像的匹配点数据集,以及参考图像和待拼接图像的重叠区域。

数据获取模块320,用于执行步骤s12,其中,步骤s12包括:获取参考图像中重叠区域的多个局域像素,组成监督数据集。

矩阵计算模块330,用于执行步骤s13,其中,步骤s13包括:选取匹配点数据集中预设数量的匹配点对,并基于预设数量的匹配点对确定待拼接图像相对于参考图像的单应矩阵。

误差确定模块340,用于执行步骤s14,其中,步骤s14包括:基于监督数据集与单应矩阵确定监督数据集在待拼接图像上的映射数据集,并计算监督数据集与映射数据集之间的像素误差。

循环模块350,用于执行步骤s15,其中,步骤s15包括:检测步骤s13的执行次数,若步骤s13的执行次数未达到预设次数,则返回执行步骤s13~s14。若步骤s13的执行次数达到预设次数,则选取像素误差最小的单应矩阵作为最优单应矩阵,并基于最优单应矩阵对参考图像和待拼接图像进行拼接。

参考图3,在本发明的另一个实施例中,图像拼接装置还可以包括:微调模块360,微调模块360用于执行以下步骤:

s21:对映射数据集中的各个局域像素进行k次移位变换,得到k个变换数据集。分别计算k个变换数据集与监督数据集之间的像素误差,得到k个像素误差。

s22:选取k个像素误差中最小的像素误差,记为第一像素误差,并将最优单应矩阵对应的像素误差记为第二像素误差。

s23:若第一像素误差小于第二像素误差,则获取第一像素误差对应的映射数据集的移位变换数值,并根据移位变换数值对拼接图像进行微调。其中,拼接图像为基于最优单应矩阵对参考图像和待拼接图像进行拼接后的图像。

可选地,作为本发明实施例提供的图像拼接装置的一种具体实施方式,对映射数据集中的各个局域像素进行k次移位变换,包括:

设定映射数据集中的各个局域像素的移位方向以及移位间隔。

基于设定的移位方向以及移位间隔对映射数据集中的各个局域像素进行k次移位变换。

可选地,作为本发明实施例提供的图像拼接装置的一种具体实施方式,若预设数量为4,则确定待拼接图像相对于参考图像的单应矩阵的方法为:

其中,hi为待拼接图像相对于参考图像的单应矩阵,h=[h1h2…h7h8]t

其中,h的确定方法为:

h=(ata)-1atb

其中,a的确定方法为:

其中,b的确定方法为:

b=[x′i1y′i1…x′i4y′i4]t

其中,(xi1,yi1,x′i1,y′i1)、(xi2,yi2,x′i2,y′i2)、(xi3,yi3,x′i3,y′i3)、(xi4,yi4,x′i4,y′i4)为4个匹配点对。

可选地,作为本发明实施例提供的图像拼接装置的一种具体实施方式,确定监督数据集在待拼接图像上的映射数据集的方法为:

对监督数据集中的每个局域像素进行单应矩阵的变换,得到监督数据集在待拼接图像上的映射数据集。

其中,单应矩阵的变换方法为:

其中,(an,bn)为监督数据集中的某一局域像素,为该局域像素经过单应矩阵变换后的值。

可选地,作为本发明实施例提供的图像拼接装置的一种具体实施方式,计算监督数据集与映射数据集之间的像素误差的方法为:

其中,dn为监督数据集与映射数据集之间的像素误差,n为监督数据集中局域像素的个数,i1(an,bn)为参考图像在局域像素(an,bn)位置的灰度值,为监督数据集在参考图像中的平均灰度值。为待拼接图像在位置的灰度值,为映射数据集在待拼接图像中的平均灰度值。

参见图4,图4为本发明一实施例提供的终端设备的示意框图。如图4所示的本实施例中的终端400可以包括:一个或多个处理器401、一个或多个输入设备402、一个或多个输出设备403及一个或多个存储器404。上述处理器401、输入设备402、则输出设备403及存储器404通过通信总线405完成相互间的通信。存储器404用于存储计算机程序,计算机程序包括程序指令。处理器401用于执行存储器404存储的程序指令。其中,处理器401被配置用于调用程序指令执行以下操作上述各装置实施例中各模块/单元的功能,例如图3所示模块310至360的功能。

应当理解,在本发明实施例中,所称处理器401可以是中央处理单元(centralprocessingunit,cpu),该处理器还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

输入设备402可以包括触控板、指纹采传感器(用于采集用户的指纹信息和指纹的方向信息)、麦克风等,输出设备403可以包括显示器(lcd等)、扬声器等。

该存储器404可以包括只读存储器和随机存取存储器,并向处理器401提供指令和数据。存储器404的一部分还可以包括非易失性随机存取存储器。例如,存储器404还可以存储设备类型的信息。

具体实现中,本发明实施例中所描述的处理器401、输入设备402、输出设备403可执行本发明实施例提供的图像拼接方法的第一实施例和第二实施例中所描述的实现方式,也可执行本发明实施例所描述的终端的实现方式,在此不再赘述。

在本发明的另一实施例中提供一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序包括程序指令,程序指令被处理器执行时实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,计算机程序包括计算机程序代码,计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。计算机可读介质可以包括:能够携带计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括是电载波信号和电信信号。

计算机可读存储介质可以是前述任一实施例的终端的内部存储单元,例如终端的硬盘或内存。计算机可读存储介质也可以是终端的外部存储设备,例如终端上配备的插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)等。进一步地,计算机可读存储介质还可以既包括终端的内部存储单元也包括外部存储设备。计算机可读存储介质用于存储计算机程序及终端所需的其他程序和数据。计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的终端和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的终端和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。

作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

以上,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1