1.本文涉及计算机领域,尤其涉及一种运动视频图像的稳像方法、装置、设备及存储介质。
背景技术:2.随着图像技术和计算机技术的发展,视频越来越成为重要而直接的信息传播媒体。人类对视频需求的普遍化和多样化,催生了各种各样的摄像平台,手持,车载,机载等各种摄像设备进入人们生活。有时候,摄像设备不得不在震动平台使用,震动环境必然导致机械震动,从而导致视频图像抖动,而且这些抖动往往难以消除,高倍放大镜头下尤其明显,这些抖动严重影响了对视频的观察监控。
3.稳像的概念是消除视频图像的各种抖动,包括机械抖动以及随机噪声导致的抖动。一般情况下,稳像方式有三种:光学稳像,机械稳像和电子稳像。光学稳像通过增加某些特殊光学元件来达到稳像效果;机械稳像通过传感器估计机械运动,然后通过运动补偿来消除抖动;电子稳像通过数字信号处理判断帧间运动,然后通过变换补偿达到稳像效果。但目前现有技术中的稳像方法对正在运动的图像画面进行稳像的效果不佳,容易在消除高频的抖动的同时对画面内容的正常运动产生影响。
4.现在亟需一种运动视频图像的稳像方法,从而解决现有技术中在消除高频抖动的同时对运动画面内容的正常运动产生影响的问题。
技术实现要素:5.为解决现有技术中在消除高频抖动的同时对画面内容的正常运动产生影响的问题,本文实施例提供了一种运动视频图像的稳像方法、装置、设备及存储介质,能够解决现有技术中在消除高频抖动的同时对运动画面的正常运动产生影响的问题。
6.本文实施例提供了一种运动视频图像的稳像方法,所述方法包括,
7.获取运动视频中相邻两帧的图像;
8.分别确定所述相邻两帧的图像中的前一帧图像和后一帧图像的特征点;
9.根据所述前一帧图像的特征点和所述后一帧图像的特征点计算当前相邻两帧图像的整体运动矢量,整体运动矢量包括画面内容运动矢量和抖动运动矢量;
10.根据所述当前相邻两帧图像的整体运动矢量、上一相邻两帧图像的整体运动矢量中的画面内容运动矢量计算所述当前相邻两帧图像的整体运动矢量中的抖动运动矢量;
11.通过卡尔曼滤波以及当前相邻两帧图像的整体运动矢量中的抖动运动矢量对所述当前相邻两帧图像中的前一帧图像进行运动补偿,得到所述后一帧图像的稳像。
12.本文实施例还提供了一种运动视频图像的稳像装置,包括,
13.图像获取单元,用于获取运动视频中相邻两帧的图像;
14.图像特征点确定单元,用于分别确定所述相邻两帧的图像中的前一帧图像和后一帧图像的特征点;
15.整体运动矢量计算单元,用于根据所述前一帧图像的特征点和所述后一帧图像的特征点计算当前相邻两帧图像的整体运动矢量,整体运动矢量包括画面内容运动矢量和抖动运动矢量;
16.抖动运动矢量计算单元,用于根据所述当前相邻两帧图像的整体运动矢量、上一相邻两帧图像的整体运动矢量中的画面内容运动矢量计算所述当前相邻两帧图像的整体运动矢量中的抖动运动矢量;
17.运动补偿单元,用于通过卡尔曼滤波以及当前相邻两帧图像的整体运动矢量中的抖动运动矢量对所述当前相邻两帧图像中的前一帧图像进行运动补偿,得到所述后一帧图像的稳像。
18.本文实施例还提供了一种计算机设备,包括存储器、处理器、以及存储在所述存储器上的计算机程序,所述处理器执行所述计算机程序时实现上述的方法。
19.本文实施例还提供了一种计算机存储介质,其上存储有计算机程序,所述计算机程序被计算机设备的处理器运行时,执行上述的方法。
20.利用本文实施例,计算的当前相邻两帧图像的整体运动矢量中包括画面内容运动矢量和抖动运动矢量,并且根据当前相邻两帧图像的整体运动矢量、上一相邻两帧图像的整体运动矢量中的画面内容运动矢量计算当前相邻两帧图像的整体运动矢量中的抖动运动矢量,最后根据当前相邻两帧图像的整体运动矢量中的抖动运动矢量进行稳像,实现了在消除视频图像的高频抖动的同时,保持视频图像画面内容的运动特征,解决了现有技术中在消除高频抖动的同时对画面内容的正常运动产生影响的问题。
附图说明
21.为了更清楚地说明本文实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本文的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
22.图1所示为本文实施例一种运动视频图像的稳像方法的实施系统示意图;
23.图2所示为本文实施例一种运动视频图像的稳像方法的流程图;
24.图3所示为本文实施例计算当前相邻两帧图像的整体运动矢量中的抖动运动矢量的过程;
25.图4所示为本文实施例对当前相邻两帧图像中的后一帧图像进行运动补偿的过程;
26.图5所示为本文实施例确定图像裁剪区域的过程;
27.图6所示为本文实施例一种运动视频图像的稳像装置的结构图示意图;
28.图7所示为本文实施例对运动视频图像进行稳像的流程示意图;
29.图8所示为本文实施例计算机设备的结构示意图;
30.图9所示为本文实施例相邻量两帧图像中的前一帧图像和后一帧图像的运动关系示意图。
31.【附图标记说明】:
32.101、摄像单元;
33.102、运动物体;
34.103、呈像单元;
35.601、图像获取单元;
36.602、图像特征点确定单元;
37.603、整体运动矢量计算单元;
38.604、抖动运动矢量计算单元;
39.605、运动补偿单元;
40.802、计算机设备;
41.804、处理设备;
42.806、存储资源;
43.808、驱动机构;
44.810、输入/输出模块;
45.812、输入设备;
46.814、输出设备;
47.816、呈现设备;
48.818、图形用户接口;
49.820、网络接口;
50.822、通信链路;
51.824、通信总线。
具体实施方式
52.下面将结合本文实施例中的附图,对本文实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本文一部分实施例,而不是全部的实施例。基于本文中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本文保护的范围。
53.需要说明的是,本文的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本文的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、装置、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
54.如图1所示为本文实施例一种运动视频图像的稳像方法的实时系统示意图,包括:摄像单元101、运动物体102、呈像单元103。在本文实施例中,摄像单元101对运动物体102进行摄像,并将视频图像呈现在呈像单元103上,在摄像单元101对运动物体102进行拍摄时,由于摄像单元101的机械抖动或随机噪声导致摄像单元101拍摄的视频图像存在抖动,因此在呈像单元103上呈现的视频图像存在抖动,导致用户体验差。现有技术中对呈现在呈像单元103上的视频图像进行稳像时,对摄像单元101拍摄的运动物体102的画面内容的正常运动产生了影响,从而降低了呈像单元103上的视频图像的质量。
55.本文实施例所述的一种运动视频图像的稳像方法、装置、设备及存储介质可以应用于图1所示的摄像单元101中,解决现有技术中在消除高频抖动的同时对运动画面内容的正常运动产生影响的问题。
56.具体地,本文实施例提供了一种运动视频图像的稳像方法,能够有效地解决现有技术中在消除高频抖动的同时对运动画面的正常运动产生影响的问题。图2所示为本文实施例一种运动视频图像的稳像方法的流程图。在本图中描述了直播课程权限的管理过程,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的系统或装置产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行。具体地如图2所示,所述方法包括:
57.步骤201:获取运动视频中相邻两帧的图像;
58.步骤202:分别确定所述相邻两帧的图像中的前一帧图像和后一帧图像的特征点;
59.步骤203:根据所述前一帧图像的特征点和所述后一帧图像的特征点计算当前相邻两帧图像的整体运动矢量,整体运动矢量包括画面内容运动矢量和抖动运动矢量;
60.步骤204:根据所述当前相邻两帧图像的整体运动矢量、上一相邻两帧图像的整体运动矢量中的画面内容运动矢量计算所述当前相邻两帧图像的整体运动矢量中的抖动运动矢量;
61.步骤205:通过卡尔曼滤波以及当前相邻两帧图像的整体运动矢量中的抖动运动矢量对所述当前相邻两帧图像中的前一帧图像进行运动补偿,得到所述后一帧图像的稳像。
62.通过本文实施例的方法,计算的当前相邻两帧图像的整体运动矢量中包括画面内容运动矢量和抖动运动矢量,并且根据当前相邻两帧图像的整体运动矢量、上一相邻两帧图像的整体运动矢量中的画面内容运动矢量计算当前相邻两帧图像的整体运动矢量中的抖动运动矢量,最后根据当前相邻两帧图像的整体运动矢量中的抖动运动矢量进行稳像,实现了在消除视频图像的高频抖动的同时,保持了视频图像画面内容的运动特征,解决了现有技术中在消除高频抖动的同时对画面内容的正常运动产生影响的问题。
63.在本文实施例中,可以获取离线的运动视频中任意相邻两帧的图像,对离线运动视频进行稳像,也可以获取实时摄像的视频中任意相邻量两帧的图像,对运动视频进行实时稳像。本文实施例所述的图像的特征点即为图像的角点(harris),可以根据相邻两帧图像中相同角点的运动大小及方向计算相邻两帧图像的运动矢量。此外,该相邻量两帧图像中的前一帧图像和后一帧图像存在一定的运动关系,如图9所示,箭头所表示的方向为后一帧图像中某一像素点相对于前一帧图像中该像素的整体运动矢量,该整体运动矢量包括像素点的位移和旋转,其中位移表示该像素点在图像平面的x方向和y方向上的位移。此外,该整体运动矢量中还包括画面内容运动矢量和抖动运动矢量,其中画面内容运动矢量表示该运动视频图像中画面内容的正常运动,即拍摄的运动视频中的物体的运动,其中抖动运动矢量表示所述运动视频图像的抖动,该抖动由拍摄设备的机械运动等造成。
64.需要说明的是,本说明书实施例所述的一种运动视频图像的稳像方法可以应用到无人机吊顶舱中的摄像机中,也可以应用到其他摄像设备中,本说明书并不做限制。
65.根据本文的一个实施例,为了提升图像处理速度,本文实施例所述的运动视频图
像的稳像方法的处理过程优先在摄像单元101的gpu中进行,相比于在cpu中进行处理,在gpu中进行处理具有更快的运算速度。
66.根据本文的一个实施例,步骤202分别确定所述相邻两帧的图像中的前一帧图像和后一帧图像的特征点进一步包括,
67.对所述相邻两帧的图像由rgba格式转换为灰度图;
68.通过角点检测法计算该相邻两帧图像中的前一帧图像的特征点;
69.通过lk光流估计法计算该相邻两帧图像中的后一帧图像的特征点。
70.其中,rgba格式表示带颜色的图像格式,在本文实施例中,为了减小计算量,将带颜色的图像格式转换为灰度图。然后通过角点检测法计算该相邻两帧图像中前一帧图像的特征点。具体地,角点检测法根据角点区域移动后,在视频图像的x、y平面上图像亮度变化均较大的特性,对前一帧图像的像素计算其x、y方向上微小移动后的变化值,根据变化值对前一帧图像中所有像素进行变化值的降序排序,根据计算需要,在排序结果中选取一定数量的像素点作为前一帧图像的特征点。
71.然后通过lk光流估计法计算后一帧图像的特征点,具体地,首先通过建立高斯金字塔采用由粗到精的分层策略得到不同分辨率的图像,对于同分辨率的金字塔层结合lk光流估计法预测前一帧图像的特征点在后一帧图像中的位置,从而得到后一帧图像的特征点。本说明书实施例所述的角点检测法和lk光流估计法是目前较成熟的方案,在本说明实施例中不再赘述。
72.根据本文的一个实施例,步骤203根据所述前一帧图像的特征点和所述后一帧图像的特征点计算当前相邻两帧图像的整体运动矢量进一步包括,
73.分别计算当前相邻两帧图像中后一帧图像每个特征点的位置相对于对应特征点在前一帧图像的位置的位移和旋转角度,得到每个特征点的运动矢量;
74.根据最小二乘法以及每个特征点的运动矢量得到当前相邻两帧图像的整体运动矢量。
75.在本文实施例中,由于当前相邻两帧图像可能存在畸变,导致得到的各特征点的运动矢量存在差异,为了减小整体运动矢量和各特征点的运动矢量之间的差异,通过最小二乘法使得整体运动矢量与各特征点的运动矢量之间的差异最小,提高了整体运动矢量的计算精度。
76.根据本文的一个实施例,如图3所示,步骤204根据所述当前相邻两帧图像的整体运动矢量、上一相邻两帧图像的整体运动矢量中的画面内容运动矢量计算所述当前相邻两帧图像的整体运动矢量中的抖动运动矢量进一步包括,
77.步骤301:根据所述上一相邻两帧图像的整体运动矢量中的画面内容运动矢量、所述当前相邻两帧图像的整体运动矢量以及预设权重计算所述当前相邻两帧图像的整体运动矢量中的画面内容运动矢量,所述预设权重为0至1之间的小数;
78.步骤302:根据所述当前相邻两帧图像的整体运动矢量和所述当前相邻两帧图像的整体运动矢量中的画面内容运动矢量计算所述当前相邻两帧图像的整体运动矢量中的抖动运动矢量。
79.在本文实施例中,上一相邻两帧图像中的后一帧图像为当前相邻两帧图像的前一帧图像。整体运动矢量表示当前相邻两帧图像中后一帧图像相对于前一帧图像的运动情
况,整体运动矢量中包括当前相邻两帧图像中画面内容的正常运动的运动情况和图像的抖动情况,本文实施例在当前相邻两帧图像的整体运动矢量中过滤画面内容运动矢量,得到抖动运动矢量,以便于根据抖动运动矢量进行稳像,从而避免了在运动视频图像的稳像过程中对运动视频图像画面内容产生影响。
80.根据本文的一个实施例,步骤301根据所述当前相邻两帧图像的整体运动矢量和所述当前相邻两帧图像的整体运动矢量中的画面内容运动矢量计算所述当前相邻两帧图像的整体运动矢量中的抖动运动矢量的公式为(1),
81.mean_v
′
=(beta*mean_v+(1.0-beta)*measure
ꢀꢀꢀ
(1)
82.其中,其中,mean_v
′
表示所述当前相邻两帧图像的整体运动矢量中的画面内容运动矢量,mean_v表示所述上一相邻两帧图像的整体运动矢量中的画面内容运动矢量,measure表示当前相邻两帧图像的整体运动矢量,beta表示所述预设权重;
83.当measure为所述运动视频中首个相邻两帧图像的整体运动矢量时,所述首个相邻两帧图像的整体运动矢量中的画面内容运动矢量mean_v
′
等于所述首个相邻两帧图像的整体运动矢量measure。
84.在本文实施例中,预设权重可以通过人工经验得到,可以通过公式(1)对运动视频图像中所有连续的相邻两帧的整体运动矢量进行迭代,例如,运动视频共有n帧图像,若第2帧图像相对于第1帧图像的整体运动矢量为a,则第2帧图像相对于第1帧图像的画面内容运动矢量也为a,若第3帧图像相对于第2帧图像的整体运动矢量为b,预设权重为0.8,则通过公式(1)得到第3帧图像相对于第2帧图像的画面内容运动矢量为0.8倍的第2帧图像相对于第1帧图像的画面内容运动矢量a和0.2倍的第3帧图像相对于第2帧图像的整体运动矢量b之和,则第n帧图像相对于n-1帧图像的画面内容运动矢量为0.8倍的第n-1帧图像相对于第n-2帧图像的画面内容运动矢量和0.2倍的第n帧图像相对于第n-1帧图像的整体运动矢量之和。
85.根据本文的一个实施例,如图4所示,步骤205通过卡尔曼滤波以及当前相邻两帧图像的整体运动矢量中的抖动运动矢量对所述当前相邻两帧图像中的前一帧图像进行运动补偿,得到所述后一帧图像的稳像进一步包括,
86.步骤401:采用卡尔曼滤波得到所述当前相邻两帧图像的整体运动矢量中的抖动运动矢量对应的运动补偿矩阵;
87.步骤402:根据所述运动补偿矩阵和当前相邻两帧图像的中的前一帧图像对所述当前相邻两帧图像中的前一帧图像进行运动补偿,得到所述后一帧图像的稳像。
88.在本文实施例中,步骤401的具体计算过程为,通过卡尔曼滤波方法预测当前相邻两帧图像中的后一帧图像相对于运动视频的首帧图像的累计抖动运动矢量,并将当前相邻两帧图像的整体运动矢量中的抖动运动矢量和运动视频中当前相邻两帧图像之前的所有相邻两帧图像的整体运动矢量中的抖动运动矢量进行累加,得到测量的累计抖动运动矢量,然后根据预测的累计抖动运动矢量、测量的累计抖动运动矢量以及卡尔曼增益计算运动补偿矩阵,所述运动补偿矩阵中包括图像的平移大小和旋转角度。
89.然后存储预测累计抖动运动矢量、测量的累计抖动运动矢量以及当前相邻两帧图像的后一帧图像。步骤402的具体计算过程为,拷贝当前相邻两帧图像的前一帧图像,然后将拷贝的前一帧图像根据运动补偿矩阵进行运动补偿,将进行运动补偿后的拷贝的第一帧
图像作为后一帧图像的稳像。
90.当进行当前相邻两帧图像的之后的相邻两帧图像的稳像时,即之后相邻两帧图像的前一帧图像为当前相邻两帧图像的后一帧图像。通过卡尔曼滤波方法预测之后相邻两帧图像中的后一帧图像相对于运动视频的首帧图像的累计抖动运动矢量,然后将之后相邻两帧图像的整体运动矢量中的抖动运动矢量和存储的累计抖动运动矢量进行累加,更新测量累计抖动运动矢量,然后根据预测的累计抖动运动矢量、测量的累计抖动运动矢量以及卡尔曼增益计算运动补偿矩阵,拷贝存储的当前相邻两帧图像的后一帧图像,然后将拷贝的当前相邻两帧图像的后一帧图像根据运动补偿矩阵进行运动补偿,将进行运动补偿后的拷贝的当前相邻两帧图像的后一帧图像作为之后相邻两帧图像中的后一帧图像的稳像。
91.例如,当前相邻两帧图像的前一帧图像为运动视频中的第n-1帧图像,当前相邻两帧图像的后一帧图像为运动视频中的第n帧图像,之后相邻两帧图像的前一帧图像为运动视频中的第n帧图像,之后相邻两帧图像的后一帧图像为运动视频中的第n+1帧图像。根据图4所示的方法,首先采用卡尔曼滤波方法预测第n帧图像相对于运动视频的首帧图像的累计抖动运动矢量a,并将第n帧图像相对于第n-1帧图像的整体运动矢量中的抖动运动矢量和运动视频中第n-1帧图像之前的所有相邻两帧图像的整体运动矢量中的抖动运动矢量进行累加,得到测量的累计抖动运动矢量b,然后根据预测的累计抖动运动矢量a、测量的累计抖动运动矢量b以及卡尔曼增益计算运动补偿矩阵c。然后存储预测的累计抖动运动矢量a、测量的累计抖动运动矢量b以及第n帧图像。然后拷贝第n-1帧图像,然后将拷贝的第n-1帧图像根据运动补偿矩阵c进行运动补偿,将进行运动补偿后的拷贝的第n-1帧图像作为第n帧图像的稳像。
92.当进行第n+1帧图像的稳像时,通过卡尔曼滤波方法预测第n+1帧图像相对于运动视频的首帧图像的累计抖动运动矢量a’,并将第n+1帧图像相对于第n帧图像的整体运动矢量中的抖动运动矢量和累计运动矢量b进行累加,得到测量的累计的抖动运动矢量b’,然后根据预测的累计抖动运动矢量a’、测量的累计的抖动运动矢量b’以及卡尔曼增益计算运动补偿矩阵c’,拷贝存储的第n帧图像,然后将拷贝的第n帧图像根据运动补偿矩阵c’进行运动补偿,将进行运动补偿后的拷贝的第n帧图像作为第n+1帧图像的稳像。
93.由于卡尔曼滤波是目前较成熟的方案,本说明书实施例不再赘述。
94.现有的电子图像稳定算法,针对抖动比较剧烈的情况,图像画面在经过运动补偿后,图像四周会出现黑框现象,根据本文的一个实施例,为了使得最终稳像画面不会出现黑框,如图5所示,步骤402根据所述运动补偿矩阵对所述当前相邻两帧图像中的前一帧图像进行运动补偿,得到所述后一帧图像的稳像之后还包括,
95.步骤501:根据所述运动补偿矩阵和所述运动视频图像的大小确定图像裁剪区域;
96.步骤502:根据所述图像裁剪区域裁剪所述后一帧图像的稳像。
97.在本文实施例中,图像裁剪区域表示当前相邻两帧图像中的前一帧图像经过运动补偿之后,得到的后一帧图像的稳像四周出现的黑框宽度。根据运动补偿矩阵中图像的平移大小和旋转角度对前一帧图像进行运动补偿后,得到的后一帧图像的稳像四周出现的黑框宽度可能不同。然后根据图像四周黑框的最大宽度确定图像裁剪区域,然后根据图像裁剪区域将后一帧图像的稳像的四周均裁剪掉该最大黑框的宽度,最后将裁剪后的图像放大至原来的大小,从而消除稳像后图像四周出现的黑框。
98.例如,根据运动补偿矩阵将前一帧图像向上平移10个像素点的宽度,则运动补偿后的后一帧图像的稳像的下边界将出现10个像素点的宽度的黑框,需要将下边界出现的10个像素点的宽度的黑框裁剪掉,然后将裁剪后的图像放大至原来图像的大小。但若只裁剪图像下边界出现的10个像素点宽度的黑框,将图像放大后将会出现畸变,因此,图像裁剪区域为图像四周10个像素点宽度,根据图像裁剪区域对运动补偿后的后一帧图像的稳像进行裁剪之后,再放大到原后一帧图像的大小,从而消除了稳像画面中的黑框。
99.根据本文的一个实施例,为了减小裁剪对视频画面的清晰度的影响,步骤501根据所述运动补偿矩阵和所述运动视频图像的大小确定图像裁剪区域之后还包括,
100.根据所述裁剪区域和所述运动视频图像的分辨率确定图像裁剪比例;
101.根据所述图像裁剪比例裁剪所述后一帧图像的稳像。
102.在本文实施例中,运动视频图像的分辨率表示图像的一定范围内像素点的多少,同一范围内的像素点越多,则图像的分辨率越高。由于图像经过裁剪和放大处理后,同一范围内的像素点的数量将有所改变,所以需要根据裁剪区域和分辨率动态确定图像裁剪比例。具体地,以矩形图像为例,根据图像的长边需要裁剪的宽度计算该长边剩余的宽度,然后根据该长边剩余的宽度和分辨率计算图像短边的裁剪宽度,最终根据裁剪后的图像大小以及原图像大小确定图像裁剪比例,因此,减小了裁剪对视频画面的清晰度的影响。
103.例如,图像裁剪区域为裁剪15cm*10cm的图像四周0.5cm的宽度,图像的分辨率为每英寸像素为640*480,则在消除边框的前提下,确定图像裁剪比例为裁剪掉整体图像大小的5%。作为优选地,本文实施例的图像裁剪比例取值范围为5%-20%。
104.根据本文的一个实施例,为了减小画面突变缩放对用户的体验效果造成的影响,根据所述图像裁剪比例裁剪所述后一帧图像的稳像进一步包括,
105.将所述图像裁剪比例划分为若干子图像裁剪比例,
106.将所述子图像裁剪比例按照从小到大逐级递进的顺序进行排序;
107.根据所述排序的子图像裁剪比例裁剪所述后一帧图像的稳像以及后续帧图像的稳像。
108.在本文实施例中,若干个子图像裁剪比例的数值逐级递进,例如,确定的图像裁剪比例为5%,则可以将5%划分为5个子图像裁剪比例,则得到的子图像裁剪比例按照从小到大逐级递进的顺序进行排序为1%、2%、3%、4%、5%,最后根据子图像裁剪比例裁剪运动补偿后的后一帧图像的稳像以及后续帧图像的稳像。例如,第n帧图像的稳像的根据子图像裁剪比例1%进行裁剪,第n+1帧图像的稳像根据子图像裁剪比例2%进行裁剪,
…
第n+4帧图像的稳像根据子图像裁剪比例5%进行裁剪。从而减小了画面突变缩放对用户的体验效果造成的影响。作为优选地,本文实施例的子图像裁剪比例个数为30。
109.基于同一发明构思,本说明书实施例还提供了一种运动视频图像的稳像装置,如图6所示,所述运动视频图像的稳像装置包括图像获取单元601、图像特征点确定单元602、整体运动矢量计算单元603、抖动运动矢量计算单元604和运动补偿单元605。具体地,
110.图像获取单元601,用于获取运动视频中相邻两帧的图像;
111.图像特征点确定单元602,用于分别确定所述相邻两帧的图像中的前一帧图像和后一帧图像的特征点;
112.整体运动矢量计算单元603,用于根据所述前一帧图像的特征点和所述后一帧图
像的特征点计算当前相邻两帧图像的整体运动矢量,整体运动矢量包括画面内容运动矢量和抖动运动矢量;
113.抖动运动矢量计算单元604,用于根据所述当前相邻两帧图像的整体运动矢量、上一相邻两帧图像的整体运动矢量中的画面内容运动矢量计算所述当前相邻两帧图像的整体运动矢量中的抖动运动矢量;
114.运动补偿单元605,用于通过卡尔曼滤波以及当前相邻两帧图像的整体运动矢量中的抖动运动矢量对所述当前相邻两帧图像中的后一帧图像进行运动补偿,得到所述后一帧图像的稳像。
115.通过上述装置所取得的有益效果和上述方法所取得的有益效果一致,本说明书实施例不做赘述。
116.如图7所示为本文实施例对运动视频图像进行稳像的流程示意图,在本图中描述了一种对运动视频图像进行稳像的流程,显而易见地,本图中的步骤并不是实现对运动视频图像进行稳像的唯一步骤,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据本图的步骤获得其他的实现对运动视频图像进行稳像的步骤。具体包括,
117.步骤701:获取运动视频中相邻两帧的图像。
118.在本步骤中,首先获取运动视频图像中相邻两帧的图像。在本文实施例中,可以获取离线的运动视频中任意相邻两帧的图像,对离线运动视频进行稳像,也可以获取实时摄像的视频中任意相邻量两帧的图像,对运动视频进行实时稳像。
119.步骤702:对所述相邻两帧图像进行格式转换。
120.在本步骤中,将运动视频图像的格式转换为灰度图,以便于减小计算量。
121.步骤703:通过角点检测法计算前一帧图像的特征点。
122.在本步骤中,角点检测法根据角点区域移动后,在视频图像的x、y平面上图像亮度变化均较大的特性,对前一帧图像的像素计算其x、y方向上微小移动后的变化值,根据变化值对前一帧图像中所有像素进行变化值的降序排序,根据计算需要,在排序结果中选取一定数量的像素点作为前一帧图像的特征点。
123.步骤704:通过lk光流估计法计算后一帧图像的特征点。
124.在本步骤中,首先通过建立高斯金字塔采用由粗到精的分层策略得到不同分辨率的图像,对于同分辨率的金字塔层结合lk光流估计法预测前一帧图像的特征点在后一帧图像中的位置,从而得到后一帧图像的特征点。
125.步骤705:计算当前相邻两帧图像的整体运动矢量。
126.在本文实施例中,整体运动矢量表示当前相邻两帧图像中后一帧图像相对于前一帧图像的运动情况,整体运动矢量包括画面内容运动矢量和抖动运动矢量,其中画面内容运动矢量表示运动视频图像画面内容,抖动运动矢量表示摄像单元的机械抖动或随机噪声在运动视频画面上产生的抖动。在本步骤中,首先分别计算当前相邻两帧图像中后一帧图像每个特征点的位置相对于对应特征点在前一帧图像的位置的位移和旋转角度,得到每个特征点的运动矢量。然后根据最小二乘法以及每个特征点的运动矢量得到当前相邻两帧图像的整体运动矢量。通过最小二乘法使得整体运动矢量与各特征点的运动矢量之间的差异最小,提高了整体运动矢量的计算精度。
127.步骤706:计算当前相邻两帧图像的画面内容运动矢量。
128.在本步骤中,通过本说明书公式(1)计算当前相邻两帧图像的画面内容运动矢量。具体地,根据上一相邻两帧图像的整体运动矢量中的画面内容运动矢量、当前相邻两帧图像的整体运动矢量以及预设权重计算所述当前相邻两帧图像的整体运动矢量中的画面内容运动矢量。需要说明的是,运动视频中首个相邻两帧的画面内容运矢量等于整体运动矢量。
129.步骤707:计算当前两帧图像的抖动运动矢量。
130.在本步骤中,根据当前相邻两帧图像的整体运动矢量和当前相邻两帧图像的整体运动矢量中的画面内容运动矢量计算当前相邻两帧图像的整体运动矢量中的抖动运动矢量。
131.步骤708:计算抖动运动矢量对应的运动补偿矩阵。
132.在本步骤中,采用卡尔曼滤波得到当前相邻两帧图像的整体运动矢量中的抖动运动矢量对应的运动补偿矩阵。由于卡尔曼滤波是目前较成熟的方案,本说明书实施例不再赘述。
133.步骤709:对前一帧图像进行运动补偿,得到后一帧图像的稳像。
134.在本步骤中,根据步骤708得到的运动补偿矩阵和当前相邻两帧图像的中的前一帧图像进行运动补偿,得到后一帧图像的稳像。具体地,拷贝当前相邻两帧图像的前一帧图像,然后将拷贝的当前相邻两帧图像的前一帧图像根据运动补偿矩阵进行运动补偿,将进行运动补偿后的拷贝的当前相邻两帧图像的前一帧图像作为当前相邻两帧图像中的后一帧图像的稳像。
135.当进行当前相邻两帧图像的之后的相邻两帧图像的稳像时,即之后相邻两帧图像的前一帧图像为当前相邻两帧图像的后一帧图像。通过步骤708所述的卡尔曼滤波方法估计之后相邻两帧图像中的后一帧图像相对于运动视频的首帧图像的累计整体运动矢量,然后将之后相邻两帧图像的整体运动矢量中的抖动运动矢量和存储的累计抖动运动矢量进行累加,更新累计抖动运动矢量,然后根据估计的之后相邻两帧图像中的后一帧图像相对于运动视频的首帧图像的累计整体运动矢量、累计抖动运动矢量以及卡尔曼增益计算运动补偿矩阵,拷贝存储的当前相邻两帧图像的后一帧图像,然后将拷贝的当前相邻两帧图像的后一帧图像根据运动补偿矩阵进行运动补偿,将进行运动补偿后的拷贝的当前相邻两帧图像的后一帧图像作为之后相邻两帧图像中的后一帧图像的稳像。
136.步骤710:确定图像裁剪区域和图像裁剪比例。
137.在本步骤中,根据步骤708得到的运动补偿矩阵和运动视频图像的大小确定图像裁剪区域,根据裁剪区域和运动视频图像的分辨率确定图像裁剪比例,以便于根据图像裁剪比例对步骤709得到的补偿后的后一帧图像的稳像进行裁剪,从而减小了裁剪对视频画面的清晰度的影响。
138.步骤711:将图像裁剪比例划分为若干个子图像裁剪比例。
139.在本步骤中,将步骤710确定的图像裁剪比例划分为若干个数值逐级递进的子图像裁剪比例,例如,步骤710确定的图像裁剪比例为5%,则可以将5%划分为5个子图像裁剪比例,则得到的子图像裁剪比例按照从小到大逐级递进的顺序进行排序为1%、2%、3%、4%、5%。
140.步骤712:根据子图像裁剪比例对后一帧图像的稳像以及后续帧图像的稳像进行
裁剪。
141.在本步骤中,根据步骤711得到的若干个子图像裁剪比例对后一帧图像的稳像以及后续帧图像的稳像进行裁剪。例如,步骤711划分的子图像裁剪比例按照从小到大逐级递进的顺序进行排序为1%、2%、3%、4%、5%,若所述后一帧图像的稳像对饮的是运动视频中的第n帧图像,则第n帧图像的稳像的根据子图像裁剪比例1%进行裁剪,第n+1帧图像的稳像根据子图像裁剪比例2%进行裁剪,
…
第n+4帧图像的稳像根据子图像裁剪比例5%进行裁剪,从而减小了画面突变缩放对用户的体验效果造成的影响。
142.步骤713:输出裁剪后的图像。
143.在本步骤中,将裁剪后的图像输出到呈像单元,实现在消除运动视频图像的抖动的同时,保持了视频图像画面内容的运动特征。此外,通过步骤710-712的处理,消除稳像后图像四周出现的黑框,并且实现了稳像画面的无感缩放。
144.如图8所示为本文实施例计算机设备的结构示意图,本文中的运动视频图像为稳像装置可以为本实施例中的计算机设备,执行上述本文的方法。计算机设备802可以包括一个或多个处理设备804,诸如一个或多个中央处理单元(cpu),每个处理单元可以实现一个或多个硬件线程。计算机设备802还可以包括任何存储资源806,其用于存储诸如代码、设置、数据等之类的任何种类的信息。非限制性的,比如,存储资源806可以包括以下任一项或多种组合:任何类型的ram,任何类型的rom,闪存设备,硬盘,光盘等。更一般地,任何存储资源都可以使用任何技术来存储信息。进一步地,任何存储资源可以提供信息的易失性或非易失性保留。进一步地,任何存储资源可以表示计算机设备802的固定或可移除部件。在一种情况下,当处理设备804执行被存储在任何存储资源或存储资源的组合中的相关联的指令时,计算机设备802可以执行相关联指令的任一操作。计算机设备802还包括用于与任何存储资源交互的一个或多个驱动机构808,诸如硬盘驱动机构、光盘驱动机构等。
145.计算机设备802还可以包括输入/输出模块810(i/o),其用于接收各种输入(经由输入设备812)和用于提供各种输出(经由输出设备814)。一个具体输出机构可以包括呈现设备816和相关联的图形用户接口(gui)818。在其他实施例中,还可以不包括输入/输出模块810(i/o)、输入设备812以及输出设备814,仅作为网络中的一台计算机设备。计算机设备802还可以包括一个或多个网络接口820,其用于经由一个或多个通信链路822与其他设备交换数据。一个或多个通信总线824将上文所描述的部件耦合在一起。
146.通信链路822可以以任何方式实现,例如,通过局域网、广域网(例如,因特网)、点对点连接等、或其任何组合。通信链路822可以包括由任何协议或协议组合支配的硬连线链路、无线链路、路由器、网关功能、名称服务器等的任何组合。
147.对应于图2-图5、图7中的方法,本文实施例还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述的步骤。
148.本文实施例还提供一种计算机可读指令,其中当处理器执行所述指令时,其中的程序使得处理器执行如图2-图5、图7所示的方法。
149.应理解,在本文的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本文实施例的实施过程构成任何限定。
150.还应理解,在本文实施例中,术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系。例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
151.本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本文的范围。
152.所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
153.在本文所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
154.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本文实施例方案的目的。
155.另外,在本文各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
156.所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本文的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本文各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
157.本文中应用了具体实施例对本文的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本文的方法及其核心思想;同时,对于本领域的一般技术人员,依据本文的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本文的限制。