一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种视频图像拼接方法、装置、可读存储介质及终端设备与流程

2022-11-30 13:14:49 来源:中国专利 TAG:


1.本技术属于图像处理技术领域,尤其涉及一种视频图像拼接方法、装置、计算机可读存储介质及终端设备。


背景技术:

2.在监控领域,更广的视场角与画面清晰度往往是矛盾的。因为在更广的视场角下,局部的像素总数往往是更少的,而局部像素更多时,画面的视场角通常很小。在实际中,为了同时获得更大的视场角与更好的画面清晰度,需要使用图像拼接技术。图像拼接技术,通常是通过多目相机进行图像采集,然后通过图像拼接算法将每一目采集到的图像进行拼接,最后获得一幅视场角大且画面清晰度高的图像。
3.现有的图像拼接方法主要针对的是单帧图像,而在对视频图像进行拼接时,仍套用对单帧图像的处理方式,即对每一帧均按照单帧图像的处理方式进行拼接,这种方式虽然可以实现对视频图像的拼接,但是计算量非常巨大,耗时较长,难以对视频图像进行实时处理。


技术实现要素:

4.有鉴于此,本技术实施例提供了一种视频图像拼接方法、装置、计算机可读存储介质及终端设备,以解决现有技术在进行视频图像拼接时存在的计算量大,耗时较长,难以进行实时处理的问题。
5.本技术实施例的第一方面提供了一种视频图像拼接方法,可以包括:
6.获取待拼接的第一视频图像和第二视频图像;
7.若所述第一视频图像和所述第二视频图像为视频序列中的第一帧,则计算所述第一视频图像和所述第二视频图像的重叠区域;
8.计算所述重叠区域的最优拼接缝;
9.根据所述最优拼接缝对所述第一视频图像和所述第二视频图像进行拼接,得到拼接视频图像;
10.若所述第一视频图像和所述第二视频图像不是视频序列中的第一帧,则确定所述重叠区域的画面变化程度;
11.根据所述画面变化程度对所述最优拼接缝进行更新;
12.根据更新后的所述最优拼接缝对所述第一视频图像和所述第二视频图像进行拼接,得到拼接视频图像。
13.在第一方面的一种具体实现方式中,所述根据所述画面变化程度对所述最优拼接缝进行更新,可以包括:
14.当所述画面变化程度符合第一预设条件时,不对所述最优拼接缝进行更新;
15.当所述画面变化程度符合第二预设条件时,对所述最优拼接缝进行全部更新;
16.当所述画面变化程度符合第三预设条件时,对所述最优拼接缝进行局部更新。
17.在第一方面的一种具体实现方式中,所述确定所述重叠区域的画面变化程度,可以包括:
18.使用预设的背景建模算法确定所述重叠区域中的背景建模前景像素;
19.使用预设的帧差算法确定所述重叠区域中的帧差前景像素;
20.分别统计所述背景建模前景像素的第一数目与所述帧差前景像素的第二数目;
21.根据所述第一数目和所述第二数目确定所述画面变化程度。
22.在第一方面的一种具体实现方式中,所述根据所述第一数目和所述第二数目确定所述画面变化程度,可以包括:
23.若所述第一数目和所述第二数目均为0,则确定所述画面变化程度符合第一预设条件;
24.若所述第一数目和所述第二数目只有一个为0,则确定所述画面变化程度符合第二预设条件;
25.若所述第一数目和所述第二数目均不为0,则统计所述最优拼接缝上的所述背景建模前景像素的第三数目,并根据所述第三数目确定所述画面变化程度。
26.在第一方面的一种具体实现方式中,所述根据所述第三数目确定所述画面变化程度,可以包括:
27.若所述第三数目小于预设的数目阈值,则确定所述画面变化程度符合第三预设条件;
28.若所述第三数目大于或等于数目阈值,则确定所述画面变化程度符合第一预设条件。
29.在第一方面的一种具体实现方式中,所述计算所述第一视频图像和所述第二视频图像的重叠区域,可以包括:
30.计算所述第一视频图像和所述第二视频图像之间的单应性矩阵;
31.根据所述单应性矩阵对所述第二视频图像进行映射,得到映射图像;
32.将所述第一视频图像和所述映射图像中的重叠像素组成的区域作为所述重叠区域。
33.在第一方面的一种具体实现方式中,所述计算所述重叠区域的最优拼接缝,可以包括:
34.分别计算所述重叠区域中的每个像素在所述第一视频图像和所述映射图像中的亮度差异值和梯度差异值;
35.根据所述亮度差异值和所述梯度差异值分别计算所述重叠区域中的每个像素的代价值;
36.根据所述重叠区域中的每个像素的代价值从所述重叠区域中选取一条总代价值最小的拼接缝作为所述最优拼接缝。
37.在第一方面的一种具体实现方式中,所述根据所述最优拼接缝对所述第一视频图像和所述第二视频图像进行拼接,得到拼接视频图像,可以包括:
38.根据所述最优拼接缝分别计算所述重叠区域中每行的融合宽度;
39.根据所述融合宽度分别计算所述重叠区域中的每个像素的羽化融合系数;
40.根据所述羽化融合系数对所述第一视频图像和所述映射图像进行羽化融合处理,
得到所述拼接视频图像。
41.在第一方面的一种具体实现方式中,所述根据所述最优拼接缝分别计算所述重叠区域中每行的融合宽度,可以包括:
42.确定所述最优拼接缝与目标行的交点像素;其中,所述目标行为所述重叠区域中的任意一行;
43.判断所述目标行中与所述交点像素相距d个像素的左右两个像素的代价值是否均小于预设的代价阈值;其中,d的初始值为1;
44.若左右两个像素的代价值均小于所述代价阈值,则判断2d 1是否等于预设的融合宽度阈值;
45.若2d 1等于所述融合宽度阈值,则确定所述目标行的融合宽度为所述融合宽度阈值;
46.若2d 1不等于所述融合宽度阈值,则将d增加一个计数单位,并返回执行所述判断所述目标行中与所述交点像素相距d个像素的左右两个像素的代价值是否均小于预设的代价阈值的步骤及其后续步骤;
47.若左右两个像素中的任一个的代价值大于或等于所述代价阈值,则确定所述目标行的融合宽度为2d 1。
48.在第一方面的一种具体实现方式中,所述对所述最优拼接缝进行全部更新,可以包括:
49.根据上一帧的所述最优拼接缝、所述重叠区域中的每个像素的亮度差异值、梯度差异值以及是否为前景像素分别计算所述重叠区域中的每个像素的代价值;
50.根据所述重叠区域中的每个像素的代价值从所述重叠区域中选取一条总代价值最小的拼接缝作为全部更新后的所述最优拼接缝。
51.在第一方面的一种具体实现方式中,所述对所述最优拼接缝进行局部更新,可以包括:
52.确定局部更新的行范围;
53.根据上一帧的所述最优拼接缝、所述行范围中的每个像素的亮度差异值、梯度差异值以及是否为前景像素分别计算所述行范围中的每个像素的代价值;
54.根据所述行范围中的每个像素的代价值从所述行范围中选取一条从起始像素至终止像素的总代价值最小的拼接缝作为局部更新拼接缝;其中,所述起始像素为所述最优拼接缝与所述行范围的起始行的交点像素,所述终止像素为所述最优拼接缝与所述行范围的终止行的交点像素;
55.将所述最优拼接缝在所述行范围内的部分替换为所述局部更新拼接缝。
56.本技术实施例的第二方面提供了一种视频图像拼接装置,可以包括:
57.第一视频图像和第二视频图像获取模块,用于获取待拼接的第一视频图像和第二视频图像;
58.重叠区域计算模块,用于若所述第一视频图像和所述第二视频图像为视频序列中的第一帧,则计算所述第一视频图像和所述第二视频图像的重叠区域;
59.最优拼接缝计算模块,用于计算所述重叠区域的最优拼接缝;
60.第一图像拼接模块,用于根据所述最优拼接缝对所述第一视频图像和所述第二视
频图像进行拼接,得到拼接视频图像;
61.画面变化程度确定模块,用于若所述第一视频图像和所述第二视频图像不是视频序列中的第一帧,则确定所述重叠区域的画面变化程度;
62.最优拼接缝更新模块,用于根据所述画面变化程度对所述最优拼接缝进行更新;
63.第二图像拼接模块,用于根据更新后的所述最优拼接缝对所述第一视频图像和所述第二视频图像进行拼接,得到拼接视频图像。
64.本技术实施例的第三方面提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述任一种视频图像拼接方法的步骤。
65.本技术实施例的第四方面提供了一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述任一种视频图像拼接方法的步骤。
66.本技术实施例的第五方面提供了一种计算机程序产品,当计算机程序产品在终端设备上运行时,使得终端设备执行上述任一种视频图像拼接方法的步骤。
67.本技术实施例与现有技术相比存在的有益效果是:本技术实施例获取待拼接的第一视频图像和第二视频图像;若所述第一视频图像和所述第二视频图像为视频序列中的第一帧,则计算所述第一视频图像和所述第二视频图像的重叠区域;计算所述重叠区域的最优拼接缝;根据所述最优拼接缝对所述第一视频图像和所述第二视频图像进行拼接,得到拼接视频图像;若所述第一视频图像和所述第二视频图像不是视频序列中的第一帧,则确定所述重叠区域的画面变化程度;根据所述画面变化程度对所述最优拼接缝进行更新;根据更新后的所述最优拼接缝对所述第一视频图像和所述第二视频图像进行拼接,得到拼接视频图像。在本技术实施例中,仅对第一帧视频图像按照单帧图像的处理方式进行拼接,而在后续各帧的处理过程中,则可以复用上一帧中的最优拼接缝等计算信息,仅需根据重叠区域的画面变化程度对其进行更新即可,极大减少了计算量,缩短了计算耗时,可以实现对视频图像的实时处理。
附图说明
68.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
69.图1为本技术实施例中一种视频图像拼接方法的一个实施例流程图;
70.图2为计算第一视频图像和第二视频图像的重叠区域的示意流程图;
71.图3为计算重叠区域的最优拼接缝的示意流程图;
72.图4为根据最优拼接缝对第一视频图像和第二视频图像进行拼接的示意流程图;
73.图5为对第一视频图像和映射图像进行羽化融合处理的示意流程图;
74.图6为确定重叠区域的画面变化程度的示意流程图;
75.图7为对最优拼接缝进行全部更新的示意流程图;
76.图8为对最优拼接缝进行局部更新的示意流程图;
77.图9为本技术实施例中一种视频图像拼接装置的一个实施例结构图;
78.图10为本技术实施例中一种终端设备的示意框图。
具体实施方式
79.为使得本技术的发明目的、特征、优点能够更加的明显和易懂,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本技术一部分实施例,而非全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本技术保护的范围。
80.应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
81.还应当理解,在此本技术说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本技术。如在本技术说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
82.还应当进一步理解,在本技术说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
83.如在本说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
[0084]
另外,在本技术的描述中,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
[0085]
在本技术实施例中,可以仅对第一帧视频图像按照单帧图像的处理方式进行拼接,而在后续各帧的处理过程中,则可以复用上一帧中的最优拼接缝等计算信息,仅需根据重叠区域的画面变化程度对其进行更新即可,极大减少了计算量,缩短了计算耗时,可以实现对视频图像的实时处理。本技术实施例的执行主体可以为任意一种终端设备,包括但不限于手机、平板电脑、桌上型计算机、笔记本、掌上电脑等,本技术实施例对终端设备的类型不作具体限定。
[0086]
请参阅图1,本技术实施例中一种视频图像拼接方法的一个实施例可以包括:
[0087]
步骤s101、获取待拼接的第一视频图像和第二视频图像。
[0088]
其中,第一视频图像和第二视频图像在同一时刻采集。第一视频图像(记为a)为由预设的第一目镜头采集的视频图像,第二视频图像(记为b)为由预设的第二目镜头采集的视频图像,第一目镜头、第二目镜头可以为同一多目相机中相邻的两个镜头,多目相机可以是双目相机、三目相机、四目相机等,多目相机的类型可以是球型鹰眼相机、碗型鹰眼相机、环视相机等。
[0089]
具体地,一个多目相机中可以包含多个镜头,将上述多个镜头中相邻的两个镜头分别作为第一目镜头和第二目镜头,例如,可以将相邻的两个镜头中左侧的镜头作为第一目镜头、将右侧的镜头作为第二目镜头,也可以将相邻的两个镜头中右侧的镜头作为第一
目镜头、将左侧的镜头作为第二目镜头。如无特殊说明,在本技术实施例中均以第一目镜头在左,第二目镜头在右为例进行叙述。
[0090]
实际应用中,在利用多目相机进行视频图像采集时,若采集的视频图像不存在图像畸变,则可以直接将第一目镜头采集的视频图像作为第一视频图像,并将第二目镜头采集的视频图像作为第二视频图像。若采集的视频图像存在图像畸变,则可以先对第一目镜头采集的视频图像进行畸变校正,将校正后的视频图像作为第一视频图像,并对第二目镜头采集的视频图像进行畸变校正,将校正后的视频图像作为第二视频图像。由于第一目镜头、第二目镜头位置相邻,且多目相机中各个镜头的朝向通常是一致的,从而第一视频图像和第二视频图像中通常会存在重叠区域。
[0091]
步骤s102、判断第一视频图像和第二视频图像是否为视频序列中的第一帧。
[0092]
在本技术实施例中,可以将终端设备每次开始执行视频图像拼接方法后首次获取到的第一视频图像和第二视频图像记为视频序列中的第一帧,并将后续获取到的第一视频图像和第二视频图像依次记为第二帧、第三帧、...、依次类推。
[0093]
若第一视频图像和第二视频图像为视频序列中的第一帧,则执行步骤s103及其后续步骤;若第一视频图像和第二视频图像不是视频序列中的第一帧,则执行步骤s106及其后续步骤。
[0094]
步骤s103、计算第一视频图像和第二视频图像的重叠区域。
[0095]
如图2所示,步骤s103具体可以包括如下过程:
[0096]
步骤s1031、计算第一视频图像和第二视频图像之间的单应性矩阵。
[0097]
在得到第一视频图像和第二视频图像之后,可以分别提取两图中的图像特征点。具体提取何种类型的图像特征点可以根据实际情况进行设置,例如,可以为以下类型中的至少一种:sift、surf、orb、hog和lbp。
[0098]
基于提取出的图像特征点,可以使用随机抽样一致性方法(random sample consensus,ransac)匹配两图中对应的图像特征点,得到两图中的匹配点对,并根据匹配点对确定出单应性矩阵,如下式所示:
[0099][0100]
其中,(u

,v

)为第一视频图像中的匹配点的像素位置坐标值,对应的齐次表达式为(u

,v

,1),(u,v)为第二视频图像中的匹配点的像素位置坐标值,对应的齐次表达式为(u,v,1),第一视频图像中的匹配点与第二视频图像中的匹配点组成一个匹配点对,h为单应性矩阵。
[0101]
步骤s1032、根据单应性矩阵对第二视频图像进行映射,得到映射图像。
[0102]
在确定出单应性矩阵之后,可以根据单应性矩阵对第二待拼接图像进行映射,得到映射图像(记为b1),如下式所示:
[0103]
p
b1
=h
·
pb[0104]
其中,pb为第二视频图像的像素位置齐次表达式,p
b1
为映射图像的像素位置齐次表达式,通过该式对第二视频图像中的各个像素进行一一映射,即可得到映射图像。
[0105]
步骤s1033、将第一视频图像和映射图像中的重叠像素组成的区域作为重叠区域。
[0106]
当某一像素位置在第一视频图像a与映射图像b1中都有像素位置对应时,此像素即为重叠像素。所有的重叠像素共同组成的区域即为第一视频图像和第二视频图像的重叠区域。
[0107]
步骤s104、计算重叠区域的最优拼接缝。
[0108]
如图3所示,步骤s104具体可以包括如下过程:
[0109]
步骤s1041、分别计算重叠区域中的每个像素在第一视频图像和映射图像中的亮度差异值和梯度差异值。
[0110]
以重叠区域中的位置为v行u列的像素(u,v)为例,可以根据下式计算其在第一视频图像和映射图像中的亮度差异值:
[0111]
z(u,v)=|za(u,v)-z
b1
(u,v)|
[0112]
其中,za(u,v)和z
b1
(u,v)分别为像素(u,v)在第一视频图像和映射图像中的亮度值,z(u,v)为像素(u,v)在第一视频图像和映射图像中的亮度差异值。
[0113]
可以根据下式计算其在第一视频图像和映射图像中的梯度差异值:
[0114][0115]
其中,分别为像素(u,v)在第一视频图像和映射图像中的梯度值,可以通过sobel、laplacian或其他梯度算子计算得到,为像素(u,v)在第一视频图像和映射图像中的梯度差异值。
[0116]
步骤s1042、根据亮度差异值和梯度差异值分别计算重叠区域中的每个像素的代价值。
[0117]
可以根据下式计算像素(u,v)的代价值:
[0118][0119]
其中,f(u,v)为像素(u,v)的代价值,ω1为预设的亮度权重,ω2为预设的梯度权重,两者的具体取值可以根据实际情况进行设置,例如,可以设置ω1=0.1,ω2=0.9,当然也可以将两者设置为其他取值,本技术实施例对此不作具体限定。
[0120]
步骤s1043、根据重叠区域中的每个像素的代价值从重叠区域中选取一条总代价值最小的拼接缝作为最优拼接缝。
[0121]
以左右拼接为例,可以通过以下过程从重叠区域中选取一条最优拼接缝:
[0122]
步骤s1043a、初始化拼接缝。
[0123]
为重叠区域中第一行的每个像素均初始化一条对应的拼接缝,每条拼接缝在初始时仅包括对应的一个像素,其总代价值为对应的像素的代价值。
[0124]
步骤s1043b、延长拼接缝。
[0125]
从重叠区域的第二行开始,为其中的每个像素在上一行中分别选取一个最佳的拼接缝。以像素(u,v)为例,可以比较该像素的上一行中3个相邻像素(即正上方、左上方和右上方的3个相邻像素)各自对应拼接缝的总代价值,选取其中的最小值对应的拼接缝,将选取的拼接缝延长至像素(u,v)处,延长后的拼接缝的总代价值为:
[0126]
m(u,v)=f(u,v) min(m(u-1,v-1),m(u,v-1),m(u 1,v-1))
[0127]
其中,m(u,v)为拼接缝延长至像素(u,v)后的总代价值。
[0128]
步骤s1043c、判断是否已计算完重叠区域的最后一行。
[0129]
若尚未计算完重叠区域的最后一行,则返回执行步骤s1043b,即重新为新的一行中的每个像素在上一行中分别选取一个最佳的拼接缝,将其延长至当前像素,并计算延长后的拼接缝的总代价值。若已计算完重叠区域的最后一行,则执行步骤s1043d。
[0130]
步骤s1043d、确定最优拼接缝。
[0131]
在计算完重叠区域的最后一行之后,最后一行中的每个像素均对应一条拼接缝,可以从中选取一条总代价值最小的拼接缝作为最优拼接缝。
[0132]
步骤s105、根据最优拼接缝对第一视频图像和第二视频图像进行拼接,得到拼接视频图像。
[0133]
如图4所示,步骤s105具体可以包括如下过程:
[0134]
步骤s1051、根据最优拼接缝分别计算重叠区域中每行的融合宽度。
[0135]
以重叠区域中任意一行(将其记为目标行)为例,可以通过以下过程计算其融合宽度:
[0136]
步骤s1051a、确定最优拼接缝与目标行的交点像素。
[0137]
其中,交点像素记为最优拼接缝与目标行相交处的像素,该像素即属于最优拼接缝,又属于目标行。
[0138]
步骤s1051b、判断目标行中与交点像素相距d个像素的左右两个像素的代价值是否均小于预设的代价阈值。
[0139]
其中,d的初始值为1。代价阈值的具体取值可以根据实际情况进行设置,本技术实施例对此不作具体限定。
[0140]
若左右两个像素的代价值均小于代价阈值,则执行步骤s1051c及其后续步骤;若左右两个像素中的任一个的代价值大于或等于代价阈值,则执行步骤s1051f。
[0141]
步骤s1051c、判断2d 1是否等于预设的融合宽度阈值。
[0142]
其中,融合宽度阈值为奇数,其具体取值可以根据实际情况进行设置,本技术实施例对此不作具体限定。
[0143]
若2d 1等于融合宽度阈值,则执行步骤s1051d;若2d 1不等于融合宽度阈值,则执行步骤s1051e及其后续步骤。
[0144]
步骤s1051d、确定目标行的融合宽度为融合宽度阈值。
[0145]
步骤s1051e、将d增加一个计数单位。
[0146]
即执行:d=d 1,然后返回执行步骤s1051b及其后续步骤。
[0147]
步骤s1051f、确定目标行的融合宽度为2d 1。
[0148]
在本技术实施例的一种具体实现方式中,可以直接使用计算得到的重叠区域中每行的融合宽度。在本技术实施例的另一种具体实现方式中,在计算得到重叠区域中每行的融合宽度之后,还可以对这些融合宽度数据进行平滑处理。例如,可以对这些融合宽度分区间进行平滑,对于相邻的两个不为融合宽度阈值的融合宽度,采用均值滤波对融合宽度进行平滑处理,从而得到平滑处理后的融合宽度。
[0149]
步骤s1052、根据融合宽度分别计算重叠区域中的每个像素的羽化融合系数。
[0150]
在本技术实施例中,可以将与第一视频图像对应的羽化融合系数记为第一羽化融合系数,将与映射图像对应的羽化融合系数记为第二羽化融合系数。对于重叠区域中的每个像素而言,其第一羽化融合系数与第二羽化融合系数之和为1。
[0151]
以重叠区域的任意一行为例,位于融合宽度左边的像素的第一羽化融合系数均为1;位于融合宽度右边的像素的第一羽化融合系数均为0;在融合宽度范围内,从左到右各个像素的第一羽化融合系数从1线性递减至0,每次递减其中,wpi为该行的融合宽度。
[0152]
相应地,位于融合宽度左边的像素的第二羽化融合系数均为0;位于融合宽度右边的像素的第二羽化融合系数均为1;在融合宽度范围内,从左到右各个像素的第二羽化融合系数从0线性递增至1,每次递增
[0153]
步骤s1053、根据羽化融合系数对第一视频图像和映射图像进行羽化融合处理,得到拼接视频图像。
[0154]
在本技术实施例中,如图5所示,可以将第一视频图像中不属于重叠区域的图像确定为第一边界图像,将第一视频图像中属于重叠区域的图像确定为第一重叠图像,将映射图像中不属于重叠区域的图像确定为第二边界图像,并将映射图像中属于重叠区域的图像确定为第二重叠图像。第一重叠图像和第二重叠图像中的各个像素是一一对应的,以其中的任意一对对应像素为例,可以将第一重叠图像中的像素记为第一像素,将第二重叠图像中的像素记为第二像素。
[0155]
在确定出第一羽化融合系数和第二羽化融合系数之后,可以分别计算第一像素的像素值与第一羽化融合系数的第一乘积,以及第二像素的像素值与第二羽化融合系数的第二乘积,再将第一乘积与第二乘积之和确定为融合像素的像素值,该融合像素即为第一像素和第二像素融合之后的像素。遍历第一重叠图像和第二重叠图像中的每对对应像素,分别计算对应的融合像素,即可得到重叠区域融合图像。最后将第一边界图像、重叠区域融合图像和第二边界图像依次连接,即可得到最终的拼接视频图像。
[0156]
步骤s106、确定重叠区域的画面变化程度。
[0157]
在本技术实施例中,假定第一目镜头和第二目镜头之间的相对位置保持不变,因此,后续各帧与第一帧的重叠区域是相同的,可以直接复用在第一帧中计算得到的重叠区域。
[0158]
如图6所示,步骤s106具体可以包括如下过程:
[0159]
步骤s1061、使用预设的背景建模算法确定重叠区域中的背景建模前景像素。
[0160]
在本技术实施例中,可以根据实际情况选取高斯混合模型(mixture of gaussian,mog)或者其他的背景建模算法分别确定第一视频图像在重叠区域中的前景像素以及映射图像在重叠区域中的前景像素。对于重叠区域中的任意一个像素位置,若其为第一视频图像或映射图像中任一个的前景像素,则可以将其确定为背景建模前景像素。
[0161]
步骤s1062、使用预设的帧差算法确定重叠区域中的帧差前景像素。
[0162]
在本技术实施例中,可以使用帧差算法(inter frame difference method)分别确定第一视频图像在重叠区域中的前景像素以及映射图像在重叠区域中的前景像素。对于重叠区域中的任意一个像素位置,若其为第一视频图像或映射图像中任一个的前景像素,则可以将其确定为帧差前景像素。
[0163]
步骤s1063、分别统计背景建模前景像素的第一数目与帧差前景像素的第二数目。
[0164]
步骤s1064、根据第一数目和第二数目确定画面变化程度。
[0165]
若第一数目和第二数目均为0,则可以确定画面变化程度符合第一预设条件。
[0166]
若第一数目和第二数目只有一个为0,则可以确定画面变化程度符合第二预设条件。
[0167]
若第一数目和第二数目均不为0,则可以统计最优拼接缝上的背景建模前景像素的第三数目,并根据第三数目确定画面变化程度。具体地,若第三数目小于预设的数目阈值,则可以确定画面变化程度符合第三预设条件;若第三数目大于或等于数目阈值,则可以确定画面变化程度符合第一预设条件。数目阈值的具体取值可以根据实际情况进行设置,本技术实施例对此不作具体限定。
[0168]
步骤s107、根据画面变化程度对最优拼接缝进行更新。
[0169]
当画面变化程度符合第一预设条件时,不对最优拼接缝进行更新,可以直接复用上一帧的最优拼接缝。
[0170]
当画面变化程度符合第二预设条件时,则可以根据图7所示的过程对最优拼接缝进行全部更新:
[0171]
步骤s1071、根据上一帧的最优拼接缝、重叠区域中的每个像素的亮度差异值、梯度差异值以及是否为前景像素分别计算重叠区域中的每个像素的代价值。
[0172]
以重叠区域中的位置为v行u列的像素(u,v)为例,可以根据下式计算其代价值:
[0173][0174][0175]
其中,s
p
(v)为上一帧的最优拼接缝在v行的位置,|u-s
p
(v)|为像素(u,v)与最优拼接缝之间的距离,fg(u,v)表示像素(u,v)是否为前景像素,若像素(u,v)为背景建模前景像素,则fg(u,v)为1,否则fg(u,v)为0,e
fg
(u,v)为像素(u,v)前景与背景的代价值,若fg(u,v)为1,则e
fg
(u,v)为128,若fg(u,v)为0,则e
fg
(u,v)为0。α1、α2和α3分别为预设的权重,其具体取值可以根据实际情况进行设置,例如,可以将三者分别设置为0.25、0.5和0.25,当然也可以将三者设置为其他取值,本技术实施例对此不作具体限定。
[0176]
步骤s1072、根据重叠区域中的每个像素的代价值从重叠区域中选取一条总代价值最小的拼接缝作为全部更新后的最优拼接缝。
[0177]
步骤s1072的过程与步骤s1043相同,具体可参照步骤s1043中的详细描述,此处不再赘述。
[0178]
当画面变化程度符合第三预设条件时,则可以根据图8所示的过程对最优拼接缝进行局部更新:
[0179]
步骤s1073、确定局部更新的行范围。
[0180]
将背景建模前景像素所在的第一行记为vm,所在的最后一行记为vn,向上下各外扩r行,则可得到局部更新的行范围,行范围的起始行为v
m-r,行范围的终止行为vn r。特殊地,若行范围超出了重叠区域,则可以将超出的部分去除掉。其中,r的具体取值可以根据实际情况进行设置,例如,可以将其设置为1、2或其他取值,本技术实施例对此不作具体限定。
[0181]
步骤s1074、根据上一帧的最优拼接缝、行范围中的每个像素的亮度差异值、梯度差异值以及是否为前景像素分别计算行范围中的每个像素的代价值。
[0182]
代价值的具体计算过程可以参照步骤s1071中的详细描述,此处不再赘述。
[0183]
步骤s1075、根据行范围中的每个像素的代价值从行范围中选取一条从起始像素至终止像素的总代价值最小的拼接缝作为局部更新拼接缝。
[0184]
其中,起始像素为上一帧的最优拼接缝与行范围的起始行的交点像素,其位置坐标为(s
p
(v
m-r),v
m-r),终止像素为上一帧的最优拼接缝与行范围的终止行的交点像素,其位置坐标为(s
p
(vn r),vn r)。
[0185]
具体地,可以通过以下过程从行范围中选取一条局部更新拼接缝:
[0186]
步骤s1075a、初始化拼接缝。
[0187]
为行范围中第一行的每个像素均初始化一条对应的拼接缝,每条拼接缝在初始时仅包括对应的一个像素。对于起始像素(s
p
(v
m-r),v
m-r)而言,其对应的拼接缝的总代价值即为起始像素的代价值,而对于其他像素而言,其对应的拼接缝的总代价值均设置为预设的最大代价值max_value,最大代价值的具体取值可以根据实际情况进行设置,例如,可以将其设置为(v
n-vm 1)*255或其他取值,本技术实施例对此不作具体限定。
[0188]
步骤s1075b、延长拼接缝。
[0189]
从行范围的第二行开始,为其中的每个像素在上一行中分别选取一个最佳的拼接缝。以像素(u,v)为例,可以比较该像素的上一行中3个相邻像素(即正上方、左上方和右上方的3个相邻像素)各自对应拼接缝的总代价值,选取其中的最小值对应的拼接缝,将选取的拼接缝延长至像素(u,v)处,延长后的拼接缝的总代价值为:
[0190]
m(u,v)=f(u,v) min(m(u-1,v-1),m(u,v-1),m(u 1,v-1))
[0191]
其中,m(u,v)为拼接缝延长至像素(u,v)后的总代价值。
[0192]
步骤s1075c、判断是否已计算完行范围的最后一行。
[0193]
若尚未计算完行范围的最后一行,则返回执行步骤s1075b,即重新为新的一行中的每个像素在上一行中分别选取一个最佳的拼接缝,将其延长至当前像素,并计算延长后的拼接缝的总代价值。若已计算完行范围的最后一行,则执行步骤s1075d。
[0194]
步骤s1075d、确定局部更新拼接缝。
[0195]
在计算完行范围的最后一行之后,即可从中选取一条从起始像素至终止像素的总代价值最小的拼接缝作为局部更新拼接缝。
[0196]
步骤s1076、将最优拼接缝在行范围内的部分替换为局部更新拼接缝。
[0197]
即仅对最优拼接缝在行范围内的部分进行更新,对其他部分仍保持不变,从而得到更新后的最优拼接缝。
[0198]
步骤s108、根据更新后的最优拼接缝对第一视频图像和第二视频图像进行拼接,得到拼接视频图像。
[0199]
步骤s108的过程与步骤s105相同,具体可参照步骤s105中的详细描述,此处不再赘述。需要注意的是,若更新方式为不更新,则可以直接复用上一帧中融合宽度和羽化融合系数,而无需重新进行计算;若更新方式为局部更新,则可以仅计算行范围内的融合宽度和羽化融合系数,而对其他行可以直接复用上一帧中融合宽度和羽化融合系数,而无需重新进行计算;若更新方式为全部更新,则需要对整个重叠区域内的融合宽度和羽化融合系数均重新进行计算。
[0200]
综上所述,本技术实施例获取待拼接的第一视频图像和第二视频图像;若所述第
一视频图像和所述第二视频图像为视频序列中的第一帧,则计算所述第一视频图像和所述第二视频图像的重叠区域;计算所述重叠区域的最优拼接缝;根据所述最优拼接缝对所述第一视频图像和所述第二视频图像进行拼接,得到拼接视频图像;若所述第一视频图像和所述第二视频图像不是视频序列中的第一帧,则确定所述重叠区域的画面变化程度;根据所述画面变化程度对所述最优拼接缝进行更新;根据更新后的所述最优拼接缝对所述第一视频图像和所述第二视频图像进行拼接,得到拼接视频图像。在本技术实施例中,仅对第一帧视频图像按照单帧图像的处理方式进行拼接,而在后续各帧的处理过程中,则可以复用上一帧中的最优拼接缝等计算信息,仅需根据重叠区域的画面变化程度对其进行更新即可,极大减少了计算量,缩短了计算耗时,可以实现对视频图像的实时处理。
[0201]
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本技术实施例的实施过程构成任何限定。
[0202]
对应于上文实施例所述的一种视频图像拼接方法,图9示出了本技术实施例提供的一种视频图像拼接装置的一个实施例结构图。
[0203]
本实施例中,一种视频图像拼接装置可以包括:
[0204]
视频图像获取模块901,用于获取待拼接的第一视频图像和第二视频图像;
[0205]
重叠区域计算模块902,用于若所述第一视频图像和所述第二视频图像为视频序列中的第一帧,则计算所述第一视频图像和所述第二视频图像的重叠区域;
[0206]
最优拼接缝计算模块903,用于计算所述重叠区域的最优拼接缝;
[0207]
第一图像拼接模块904,用于根据所述最优拼接缝对所述第一视频图像和所述第二视频图像进行拼接,得到拼接视频图像;
[0208]
画面变化程度确定模块905,用于若所述第一视频图像和所述第二视频图像不是视频序列中的第一帧,则确定所述重叠区域的画面变化程度;
[0209]
最优拼接缝更新模块906,用于根据所述画面变化程度对所述最优拼接缝进行更新;
[0210]
第二图像拼接模块907,用于根据更新后的所述最优拼接缝对所述第一视频图像和所述第二视频图像进行拼接,得到拼接视频图像。
[0211]
在本技术实施例的一种具体实现方式中,所述最优拼接缝更新模块可以包括:
[0212]
第一更新子模块,用于当所述画面变化程度符合第一预设条件时,不对所述最优拼接缝进行更新;
[0213]
第二更新子模块,当所述画面变化程度符合第二预设条件时,对所述最优拼接缝进行全部更新;
[0214]
第三更新子模块,当所述画面变化程度符合第三预设条件时,对所述最优拼接缝进行局部更新。
[0215]
在本技术实施例的一种具体实现方式中,所述画面变化程度确定模块可以包括:
[0216]
背景建模前景像素确定子模块,用于使用预设的背景建模算法确定所述重叠区域中的背景建模前景像素;
[0217]
帧差前景像素确定子模块,用于使用预设的帧差算法确定所述重叠区域中的帧差前景像素;
[0218]
前景像素统计子模块,用于分别统计所述背景建模前景像素的第一数目与所述帧差前景像素的第二数目;
[0219]
画面变化程度确定子模块,用于根据所述第一数目和所述第二数目确定所述画面变化程度。
[0220]
在本技术实施例的一种具体实现方式中,所述画面变化程度确定子模块可以包括:
[0221]
第一画面变化程度确定单元,用于若所述第一数目和所述第二数目均为0,则确定所述画面变化程度符合第一预设条件;
[0222]
第二画面变化程度确定单元,用于若所述第一数目和所述第二数目只有一个为0,则确定所述画面变化程度符合第二预设条件;
[0223]
第三画面变化程度确定单元,用于若所述第一数目和所述第二数目均不为0,则统计所述最优拼接缝上的所述背景建模前景像素的第三数目,并根据所述第三数目确定所述画面变化程度。
[0224]
在本技术实施例的一种具体实现方式中,所述第三画面变化程度确定单元可以具体用于:若所述第三数目小于预设的数目阈值,则确定所述画面变化程度符合第三预设条件;若所述第三数目大于或等于数目阈值,则确定所述画面变化程度符合第一预设条件。
[0225]
在本技术实施例的一种具体实现方式中,所述重叠区域计算模块可以包括:
[0226]
单应性矩阵计算子模块,用于计算所述第一视频图像和所述第二视频图像之间的单应性矩阵;
[0227]
图像映射子模块,用于根据所述单应性矩阵对所述第二视频图像进行映射,得到映射图像;
[0228]
重叠区域确定子模块,用于将所述第一视频图像和所述映射图像中的重叠像素组成的区域作为所述重叠区域。
[0229]
本技术实施例的一种具体实现方式中,所述最优拼接缝计算模块可以包括:
[0230]
差异值计算子模块,用于分别计算所述重叠区域中的每个像素在所述第一视频图像和所述映射图像中的亮度差异值和梯度差异值;
[0231]
代价值计算子模块,用于根据所述亮度差异值和所述梯度差异值分别计算所述重叠区域中的每个像素的代价值;
[0232]
最优拼接缝选取子模块,用于根据所述重叠区域中的每个像素的代价值从所述重叠区域中选取一条总代价值最小的拼接缝作为所述最优拼接缝。
[0233]
本技术实施例的一种具体实现方式中,所述第一图像拼接模块可以包括:
[0234]
融合宽度计算子模块,用于根据所述最优拼接缝分别计算所述重叠区域中每行的融合宽度;
[0235]
羽化融合系数计算子模块,用于根据所述融合宽度分别计算所述重叠区域中的每个像素的羽化融合系数;
[0236]
图像拼接子模块,用于根据所述羽化融合系数对所述第一视频图像和所述映射图像进行羽化融合处理,得到所述拼接视频图像。
[0237]
本技术实施例的一种具体实现方式中,所述融合宽度计算子模块可以具体用于:确定所述最优拼接缝与目标行的交点像素;其中,所述目标行为所述重叠区域中的任意一
行;判断所述目标行中与所述交点像素相距d个像素的左右两个像素的代价值是否均小于预设的代价阈值;其中,d的初始值为1;若左右两个像素的代价值均小于所述代价阈值,则判断2d 1是否等于预设的融合宽度阈值;若2d 1等于所述融合宽度阈值,则确定所述目标行的融合宽度为所述融合宽度阈值;若2d 1不等于所述融合宽度阈值,则将d增加一个计数单位,并返回执行所述判断所述目标行中与所述交点像素相距d个像素的左右两个像素的代价值是否均小于预设的代价阈值的步骤及其后续步骤;若左右两个像素中的任一个的代价值大于或等于所述代价阈值,则确定所述目标行的融合宽度为2d 1。
[0238]
本技术实施例的一种具体实现方式中,所述第二更新子模块具体可以用于:根据上一帧的所述最优拼接缝、所述重叠区域中的每个像素的亮度差异值、梯度差异值以及是否为前景像素分别计算所述重叠区域中的每个像素的代价值;根据所述重叠区域中的每个像素的代价值从所述重叠区域中选取一条总代价值最小的拼接缝作为全部更新后的所述最优拼接缝。
[0239]
本技术实施例的一种具体实现方式中,所述第三更新子模块具体可以用于:确定局部更新的行范围;根据上一帧的所述最优拼接缝、所述行范围中的每个像素的亮度差异值、梯度差异值以及是否为前景像素分别计算所述行范围中的每个像素的代价值;根据所述行范围中的每个像素的代价值从所述行范围中选取一条从起始像素至终止像素的总代价值最小的拼接缝作为局部更新拼接缝;其中,所述起始像素为所述最优拼接缝与所述行范围的起始行的交点像素,所述终止像素为所述最优拼接缝与所述行范围的终止行的交点像素;将所述最优拼接缝在所述行范围内的部分替换为所述局部更新拼接缝。
[0240]
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置,模块和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0241]
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
[0242]
图10示出了本技术实施例提供的一种终端设备的示意框图,为了便于说明,仅示出了与本技术实施例相关的部分。
[0243]
如图10所示,该实施例的终端设备10包括:处理器100、存储器101以及存储在所述存储器101中并可在所述处理器100上运行的计算机程序102。所述处理器100执行所述计算机程序102时实现上述各个视频图像拼接方法实施例中的步骤,例如图1所示的步骤s101至步骤s108。或者,所述处理器100执行所述计算机程序102时实现上述各装置实施例中各模块/单元的功能,例如图9所示模块901至模块907的功能。
[0244]
示例性的,所述计算机程序102可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器101中,并由所述处理器100执行,以完成本技术。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序102在所述终端设备10中的执行过程。
[0245]
所述终端设备10可以是桌上型计算机、笔记本、掌上电脑等计算设备。本领域技术人员可以理解,图10仅仅是终端设备10的示例,并不构成对终端设备10的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述终端设备10还可以包括输入输出设备、网络接入设备、总线等。
[0246]
所述处理器100可以是中央处理单元(central processing unit,cpu),还可以是
其它通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field-programmable gate array,fpga)或者其它可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
[0247]
所述存储器101可以是所述终端设备10的内部存储单元,例如终端设备10的硬盘或内存。所述存储器101也可以是所述终端设备10的外部存储设备,例如所述终端设备10上配备的插接式硬盘,智能存储卡(smart media card,smc),安全数字(secure digital,sd)卡,闪存卡(flash card)等。进一步地,所述存储器101还可以既包括所述终端设备10的内部存储单元也包括外部存储设备。所述存储器101用于存储所述计算机程序以及所述终端设备10所需的其它程序和数据。所述存储器101还可以用于暂时地存储已经输出或者将要输出的数据。
[0248]
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本技术的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0249]
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
[0250]
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
[0251]
在本技术所提供的实施例中,应该理解到,所揭露的装置/终端设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/终端设备实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
[0252]
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0253]
另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单
元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0254]
所述集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。基于这样的理解,本技术实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读存储介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读存储介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读存储介质不包括电载波信号和电信信号。
[0255]
以上所述实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的精神和范围,均应包含在本技术的保护范围之内。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献