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

一种视频处理方法及相关装置与流程

2022-11-12 00:14:13 来源:中国专利 TAG:


1.本技术涉及视频处理技术领域,尤其涉及一种视频处理方法及相关装置。


背景技术:

2.随着社会的发展,人们越来越多的使用各种终端进行视频拍摄,包括消费者领域以及视频监控领域等。智能手机等便携式终端设备拍摄视频时的镜头抖动问题一直是生成高质量视频的最大难点之一。由于便携式终端比较轻便,用户通常会一边移动一边使用便携式终端拍摄视频,导致视频画面不稳定。在用户的移动过程中,便携式终端的镜头会发生抖动,从而导致视频画面中的灯光区域被更大区域的感光元件感应到,出现视频画面中的灯光区域不正常外扩的现象。
3.目前,亟需一种视频处理方案,以解决由镜头抖动所引起的视频画面中的灯光区域不正常外扩的问题。


技术实现要素:

4.本技术提供了一种视频处理方法,能够将视频中的震颤图像替换为正常显示的图像,从而解决由镜头抖动所引起的视频画面中的灯光区域不正常外扩的问题。
5.本技术第一方面提供一种视频处理方法,该方法可以应用于终端。该方法包括:当终端处于夜景拍摄模式时,检测所述终端拍摄的图像中是否存在灯光区域。
6.当所述终端拍摄的图像中存在灯光区域时,终端在采集的图像序列中确定第一图像,所述第一图像中的灯光区域的邻近区域出现过曝。所述第一图像中的灯光区域的邻近区域出现过曝是指该邻近区域中的像素的亮度值过高。第一图像中的灯光区域的邻近区域出现过曝的原因是终端在采集第一图像的时候发生了抖动位移,使得终端中对应于邻近区域的感光元件同样感应到了灯光区域内的光线,最终导致第一图像中的灯光区域的邻近区域出现过曝。
7.在确定第一图像后,终端根据所述第一图像在所述图像序列中确定第二图像和第三图像,所述第一图像的采集时刻位于所述第二图像的采集时刻与所述第三图像的采集时刻之间,所述第二图像以及所述第三图像中的灯光区域的邻近区域的过曝程度小于所述第一图像中的灯光区域邻近区域的过曝程度。其中,第二图像以及第三图像中的灯光区域与第一图像中的灯光区域具有对应关系,即第二图像以及第三图像中的灯光区域与第一图像中的灯光区域表示的是相同的画面内容。例如,第二图像和第三图像中的灯光区域表示的是某一个路灯的发光区域;第一图像中的灯光区域也是表示同一个路灯的发光区域。
8.终端根据所述第一图像、所述第二图像和所述第三图像生成目标图像,所述目标图像用于替换所述第一图像,所述目标图像的灯光区域的邻近区域的过曝程度小于所述第一图像的灯光区域的邻近区域的过曝程度。其中,第二图像和第三图像用于作为参考图像来生成替换第一图像的目标图像,以使得生成的目标图像的灯光区域的邻近区域的过曝程度小于所述第一图像的灯光区域的邻近区域的过曝程度。
9.终端基于所述目标图像,生成视频。具体地,终端可以是将采集得到的图像序列中的第一图像替换为目标图像,从而生成视频。
10.本实施例中,通过在夜景拍摄模式下定位灯光区域的邻近区域出现过曝的震颤图像,将震颤图像前后的图像作为参考图像,并基于震颤图像以及参考图像来生成用于替换震颤图像的目标图像。通过本方案,能够将视频中的震颤图像替换为正常显示的图像,从而解决由镜头抖动所引起的视频画面中的光亮部分灯光区域不正常外扩的问题。
11.在一种可能的实现方式中,终端可以通过图像识别的方式或者是预先训练好的神经网络来检测拍摄的图像中是否存在灯光区域。
12.具体地,终端可以通过检测拍摄的图像中的像素的亮度值,来判断图像中是否存在灯光区域。具体地,灯光区域内的像素的亮度值均大于或等于特定阈值,且灯光区域内的像素的亮度值与灯光区域的相邻区域的像素的亮度值之间的差异值大于或等于预设设定的差值。
13.其中,上述的特定阈值的取值可以为180-230,例如特定阈值具体为224;预先设定的差值的取值可以为25-50,例如预设设定的差值为32。例如,当终端检测到图像中存在有某一个区域内的像素的亮度值均大于或等于224,且该区域内的像素的亮度值与相邻区域的像素的亮度值之间的差异值大于或等于32,则终端可以确定该区域为灯光区域。其中,灯光区域的相邻区域可以是由与灯光区域内的像素相邻的像素所构成,即灯光区域的相邻区域内的像素与灯光区域内的像素相邻。
14.此外,在终端确定图像中存在灯光区域之后,终端还可以根据位于灯光区域内的像素的坐标,确定图像中的灯光区域的位置。其中,图像中的灯光区域的位置可以是以灯光区域的边界的像素的坐标来确定,即由灯光区域的边界的像素所包围的区域即为灯光区域。终端可以通过记录灯光区域的边界的像素的坐标或者是灯光区域内的所有像素的坐标,来确定灯光区域的位置。
15.具体地,上述第二图像以及所述第三图像中的灯光区域的邻近区域的过曝程度小于所述第一图像中的灯光区域邻近区域的过曝程度可以是指:第二图像以及所述第三图像中的灯光区域的邻近区域中发生过曝的区域的面积小于第一图像中的灯光区域的邻近区域中发生过曝的区域的面积;或者,第二图像以及所述第三图像中的灯光区域的邻近区域中发生过曝的像素的亮度值小于第一图像中的灯光区域的邻近区域中发生过曝的像素的亮度值。
16.可选的,第二图像以及所述第三图像中的灯光区域的邻近区域中发生过曝的区域的面积可以为0,即第二图像和第三图像中的灯光区域的邻近区域并没有发生过曝。总的来说,相对于第一图像,第二图像和第三图像是终端在抖动位移较小或者是没有发生抖动位移的情况下采集的,因此第二图像以及所述第三图像中的灯光区域的邻近区域的过曝程度小于所述第一图像中的灯光区域邻近区域的过曝程度。
17.在一种可能的实现方式中,所述方法还包括:当环境光的光照度小于第一预设阈值时,所述终端进入夜景拍摄模式。示例性地,第一预设阈值的取值可以为30-60,例如第一预设阈值为50。终端在拍摄的过程中,可以检测环境光的光照度,环境光的光照度小于50时,终端则进入夜景拍摄模式。或,当所述终端获取到用于触发进入夜景拍摄模式的指令时,所述终端进入夜景拍摄模式。例如,在用户操作终端进行拍摄的过程中,用户可以通过
触控终端屏幕的方式,向终端下发进入夜景拍摄模式的指令;这样一来,当终端获取到用于触发进入夜景拍摄模式的指令时,终端则进入夜景拍摄模式。
18.此外,终端还可以是根据拍摄过程中的预览图像的画面内容和/或预览图像各区域的环境亮度值,来确定当前拍摄场景是否为夜景场景,从而确定是否进入夜景拍摄模式。例如,当预览图像的画面内容包括夜晚天空或者夜景灯源等内容时,终端可以确定当前拍摄场景为夜景场景,从而进入夜景拍摄模式;或者,当预览图像的各区域中的环境亮度值符合夜景环境下图像的亮度分布特性时,终端可以确定当前拍摄场景为夜景场景,从而进入夜景拍摄模式。
19.在一种可能的实现方式中,所述终端采集所述第一图像时的抖动位移大于第二预设阈值。其中,第二预设阈值可以为300-400,例如第二预设阈值具体为360。所述终端采集所述第一图像时的抖动位移可以称为第一图像的抖动值。具体地,终端可以获取记录了终端在采集第一图像时的运动情况的传感器数据,并且基于传感器数据计算得到第一图像的抖动值。终端也可以是计算图像的对比度值,并根据图像的对比度值来确定图像的抖动值,即图像的对比度值越小,则图像的抖动值越大。此外,终端还可以基于预先训练好的神经网络来确定图像的抖动值。
20.在一种可能的实现方式中,终端还可以确定所述多个图像是否存在局部灯光区域。只有在某一个图像存在局部灯光区域且该图像的抖动值大于或等于第二预设阈值时,终端将该图像确定为震颤图像。
21.其中,第一图像中存在局部灯光区域,所述第一图像中目标像素的个数与第一图像的像素总个数的比值在预设范围内,所述目标像素为所述第一图像中的灯光区域内的像素。也就是说,第一图像中的灯光区域的面积与第一图像中所有区域的面积的比值在预设范围内。所述预设范围的取值例如可以为2%-20%,即第一图像中的灯光区域在第一图像中的面积占比在2%-20%内。示例性地,终端可以确定所述多个图像中的每个图像中目标像素的个数,所述目标像素是指灯光区域内的像素,其中灯光区域的定义可以参考上述的描述。然后,终端获取每个图像中目标像素的个数与图像的像素总个数的比值,并判断该比值是否在预设范围内。如果图像中目标像素的个数与图像的像素总个数的比值在预设范围内,则终端确定该图像中存在局部灯光区域;如果图像中目标像素的个数与图像的像素总个数的比值不在预设范围内,则终端确定该图像中不存在局部灯光区域。
22.在一种可能的实现方式中,所述终端根据所述第一图像在所述多个图像中确定第二图像和第三图像,包括以下的过程:终端分别确定所述多个图像中每个图像的稳定值,所述稳定值为所述图像的抖动值与所述图像和所述第一图像之间的采集时间差之和的倒数。其中,图像的稳定值与该图像的抖动值以及该图像与第一图像之间的采集时间差呈负相关的关系。也就是说,图像的抖动值越大,则该图像的稳定值越小;图像与第一图像之间的采集时间差越大,则该图像的稳定值越小。简单来说,终端需要尽可能地选择抖动值小且靠近第一图像的图像作为第二图像和第三图像。
23.然后,终端确定所述多个图像中稳定值最大的图像为所述第二图像,并根据所述第二图像的采集时刻,在所述多个图像中确定所述第三图像,以使得所述第一图像的采集时刻位于所述第二图像的采集时刻与所述第三图像的采集时刻之间。
24.具体地,终端可以根据所述第二图像的采集时刻,在所述多个图像中确定一个或
多个图像,所述第一图像的采集时刻位于所述第二图像的采集时刻与所述一个或多个图像的采集时刻之间;然后,终端在所述一个或多个图像中确定稳定值最大的图像为所述第三图像。基于上述的方式所确定的第二图像的稳定值大于第三图像,因此第二图像可以认为是用于生成目标图像的主参考图像,第三图像则可以认为是用于生成目标图像的次参考图像。
25.在一种可能的实现方式中,所述终端根据所述第一图像和所述第三图像确定所述多个图像块分别对应的运动矢量,包括以下的过程:首先,终端获取第一图像块对应的多个候选运动矢量。其中,所述第二图像中的多个图像块包括所述第一图像块,所述第一图像块可以为所述多个图像块中的任意一个图像块。然后,终端根据所述第一图像块的位置,确定所述多个候选运动矢量中每个候选运动矢量对应的第二图像块和第三图像块,所述第一图像包括所述第二图像块,所述第三图像包括所述第三图像块。
26.其次,终端根据所述第一图像块、所述第二图像块和所述第三图像块,确定所述每个候选运动矢量对应的目标误差值,所述目标误差值是基于所述第一图像块与所述第二图像块之间的误差值以及所述第一图像块与所述第三图像块之间的误差值得到的。其中,两个图像块之间的误差值表示两个图像块之间的差异,误差值越大,则两个图像块之间的差异越大。
27.最后,终端根据所述每个候选运动矢量对应的目标误差值,在所述多个候选运动矢量中确定目标误差值最小的运动矢量为所述第一图像块对应的运动矢量。
28.在一种可能的实现方式中,所述多个候选运动矢量,包括:一个或多个预设运动矢量、随机生成的一个或多个运动矢量和/或与所述第一图像块相邻的图像块对应的运动矢量。
29.由于第二图像与第三图像是采集时刻相近的两个图像,因此第二图像中的物体相对于第三图像的位移较小,从而可以认为第二图像中的图像块对应的运动矢量是在预设范围内的。这样一来,终端可以获取一个或多个预设运动矢量,并将这些预设运动矢量作为候选运动矢量。此外,为了尽可能地保证能够获取到第一图像块实际对应的运动矢量,还可以随机生成一个或多个运动矢量或者选取第一图像块相邻的图像块对应的运动矢量来作为候选运动矢量,从而避免候选运动矢量的取值范围过于局限。
30.在一种可能的实现方式中,在终端基于第二图像的多个图像块生成目标图像之后,若所述目标图像中存在无法基于所述多个图像块生成图像的区域,则终端对所述第三图像进行划分,得到所述第三图像的多个图像块。
31.然后,终端根据所述第一图像和所述第二图像确定所述第三图像的多个图像块分别对应的运动矢量。其中,终端确定所述第三图像的多个图像块分别对应的运动矢量的过程与上述终端确定第二图像的多个图像块对应的运动矢量的过程类似,具体可以参考上述实施例的描述,在此不再赘述。
32.最后,终端根据所述第三图像的多个图像块对应的运动矢量以及所述第三图像的多个图像块,更新所述目标图像,得到新的目标图像,所述新的目标图像用于替换所述第一图像。其中,终端更新所述目标图像是指终端根据第三图像的多个图像块对应的运动矢量,将所述第三图像中的图像块移动至目标图像中的空洞区域,从而实现空洞区域的填充。对于目标图像中已经存在有图像的区域,则不再更新这些已经存在有图像的区域。
33.本方案中,通过求取第三图像的运动矢量并基于第三图像的运动矢量来更新目标图像,能够有效消除目标图像中的空洞区域,提高目标图像的图像质量。
34.在一种可能的实现方式中,终端根据所述第一图像的曝光时间,获取所述第一图像对应的传感器数据,所述传感器数据用于记录所述终端在所述第一图像的曝光时间内的运动情况。所述传感器数据例如可以为陀螺仪数据,所述陀螺仪数据可以是记录了所述终端在所述第一图像的曝光时间内的角速度。在得到传感器数据之后,终端再根据所述传感器数据确定所述第一图像的抖动值,即基于所述传感器数据确定所述终端在所述第一图像的曝光期间的抖动位移。
35.本技术第二方面提供一种视频处理装置,包括:
36.检测单元,用于当终端处于夜景拍摄模式时,检测所述终端拍摄的图像中是否存在灯光区域;
37.第一确定单元,用于当所述终端拍摄的图像中存在灯光区域时,在所述终端采集的图像序列中确定第一图像,所述第一图像中的灯光区域的邻近区域出现过曝;
38.第二确定单元,用于根据所述第一图像在所述图像序列中确定第二图像和第三图像,所述第一图像的采集时刻位于所述第二图像的采集时刻与所述第三图像的采集时刻之间,所述第二图像以及所述第三图像中的灯光区域的邻近区域的过曝程度小于所述第一图像中的灯光区域邻近区域的过曝程度;
39.图像生成单元,还用于根据所述第一图像、所述第二图像和所述第三图像生成目标图像,所述目标图像用于替换所述第一图像,所述目标图像的灯光区域的邻近区域的过曝程度小于所述第一图像的灯光区域的邻近区域的过曝程度;
40.视频生成单元,还用于基于所述目标图像,生成视频。
41.在一种可能的实现方式中,还包括:控制单元;
42.所述控制单元用于:当环境光的光照度小于第一预设阈值时,控制所述终端进入夜景拍摄模式;或,当获取到用于触发进入夜景拍摄模式的指令时,控制所述终端进入夜景拍摄模式。
43.在一种可能的实现方式中,所述终端采集所述第一图像时的抖动位移大于第二预设阈值。
44.在一种可能的实现方式中,所述第一图像中目标像素的个数与第一图像的像素总个数的比值在预设范围内,所述目标像素为所述第一图像中的灯光区域内的像素。
45.在一种可能的实现方式中,所述第二确定单元用于:分别确定所述多个图像中每个图像的稳定值,所述稳定值为所述图像的抖动值与所述图像和所述第一图像之间的采集时间差之和的倒数;确定所述多个图像中稳定值最大的图像为所述第二图像;根据所述第二图像的采集时刻,在所述多个图像中确定所述第三图像。
46.在一种可能的实现方式中,所述第二确定单元用于:根据所述第二图像的采集时刻,在所述多个图像中确定一个或多个图像,所述第一图像的采集时刻位于所述第二图像的采集时刻与所述一个或多个图像的采集时刻之间;在所述一个或多个图像中确定稳定值最大的图像为所述第三图像。
47.在一种可能的实现方式中,所述图像生成单元用于:将所述第二图像划分为多个图像块;根据所述第一图像和所述第三图像确定所述多个图像块分别对应的运动矢量;根
据所述多个图像块分别对应的运动矢量以及所述多个图像块,生成所述目标图像。
48.在一种可能的实现方式中,所述图像生成单元用于:获取第一图像块对应的多个候选运动矢量,所述多个图像块包括所述第一图像块;根据所述第一图像块的位置,确定所述多个候选运动矢量中每个候选运动矢量对应的第二图像块和第三图像块,所述第一图像包括所述第二图像块,所述第三图像包括所述第三图像块;根据所述第一图像块、所述第二图像块和所述第三图像块,确定所述每个候选运动矢量对应的目标误差值,所述目标误差值是基于所述第一图像块与所述第二图像块之间的误差值以及所述第一图像块与所述第三图像块之间的误差值得到的;根据所述每个候选运动矢量对应的目标误差值,在所述多个候选运动矢量中确定目标误差值最小的运动矢量为所述第一图像块对应的运动矢量。
49.在一种可能的实现方式中,所述多个候选运动矢量,包括:一个或多个预设运动矢量、随机生成的一个或多个运动矢量和/或与所述第一图像块相邻的图像块对应的运动矢量。
50.在一种可能的实现方式中,所述图像生成单元用于:若所述目标图像中存在无法基于所述多个图像块生成图像的区域,则对所述第三图像进行划分,得到所述第三图像的多个图像块;根据所述第一图像和所述第二图像确定所述第三图像的多个图像块分别对应的运动矢量;根据所述第三图像的多个图像块对应的运动矢量以及所述第三图像的多个图像块,更新所述目标图像,得到新的目标图像,所述新的目标图像用于替换所述第一图像。
51.本技术第三方面提供一种视频处理装置,该视频处理装置包括:处理器、非易失性存储器和易失性存储器;其中,非易失性存储器或易失性存储器中存储有计算机可读指令;处理器读取计算机可读指令以使视频处理装置实现如第一方面中的任意一种实现方式的方法。
52.本技术第四方面提供一种终端设备,所述终端设备处理器、存储器、显示屏、摄像头和总线,其中:所述处理器、所述显示屏、所述摄像头和所述存储器通过所述总线连接;所述存储器,用于存放计算机程序和所述摄像头采集的图像;所述处理器,用于控制所述显示屏,还用于控制所述存储器,获取所述存储器上所存放的图像并执行所述存储器上所存放的程序,以执行以下的步骤:当终端处于夜景拍摄模式时,检测所述终端拍摄的图像中是否存在灯光区域;当所述终端拍摄的图像中存在灯光区域时,在所述终端采集的图像序列中确定第一图像,所述第一图像中的灯光区域的邻近区域出现过曝;根据所述第一图像在所述图像序列中确定第二图像和第三图像,所述第一图像的采集时刻位于所述第二图像的采集时刻与所述第三图像的采集时刻之间,所述第二图像以及所述第三图像中的灯光区域的邻近区域的过曝程度小于所述第一图像中的灯光区域邻近区域的过曝程度;根据所述第一图像、所述第二图像和所述第三图像生成目标图像,所述目标图像用于替换所述第一图像,所述目标图像的灯光区域的邻近区域的过曝程度小于所述第一图像的灯光区域的邻近区域的过曝程度;基于所述目标图像,生成视频。
53.在一种可能的实现方式中,所述处理器还用于:当环境光的光照度小于第一预设阈值时,所述终端进入夜景拍摄模式;或,当所述终端获取到用于触发进入夜景拍摄模式的指令时,所述终端进入夜景拍摄模式。
54.在一种可能的实现方式中,所述终端采集所述第一图像时的抖动位移大于第二预设阈值。
55.在一种可能的实现方式中,所述第一图像中目标像素的个数与第一图像的像素总个数的比值在预设范围内,所述目标像素为所述第一图像中的灯光区域内的像素。
56.在一种可能的实现方式中,所述处理器还用于:分别确定所述多个图像中每个图像的稳定值,所述稳定值为所述图像的抖动值与所述图像和所述第一图像之间的采集时间差之和的倒数;确定所述多个图像中稳定值最大的图像为所述第二图像;根据所述第二图像的采集时刻,在所述多个图像中确定所述第三图像。
57.在一种可能的实现方式中,所述处理器还用于:根据所述第二图像的采集时刻,在所述多个图像中确定一个或多个图像,所述第一图像的采集时刻位于所述第二图像的采集时刻与所述一个或多个图像的采集时刻之间;在所述一个或多个图像中确定稳定值最大的图像为所述第三图像。
58.在一种可能的实现方式中,所述处理器还用于:将所述第二图像划分为多个图像块;根据所述第一图像和所述第三图像确定所述多个图像块分别对应的运动矢量;根据所述多个图像块分别对应的运动矢量以及所述多个图像块,生成所述目标图像。
59.在一种可能的实现方式中,所述处理器还用于:获取第一图像块对应的多个候选运动矢量,所述多个图像块包括所述第一图像块;根据所述第一图像块的位置,确定所述多个候选运动矢量中每个候选运动矢量对应的第二图像块和第三图像块,所述第一图像包括所述第二图像块,所述第三图像包括所述第三图像块;根据所述第一图像块、所述第二图像块和所述第三图像块,确定所述每个候选运动矢量对应的目标误差值,所述目标误差值是基于所述第一图像块与所述第二图像块之间的误差值以及所述第一图像块与所述第三图像块之间的误差值得到的;根据所述每个候选运动矢量对应的目标误差值,在所述多个候选运动矢量中确定目标误差值最小的运动矢量为所述第一图像块对应的运动矢量。
60.在一种可能的实现方式中,所述多个候选运动矢量,包括:一个或多个预设运动矢量、随机生成的一个或多个运动矢量和/或与所述第一图像块相邻的图像块对应的运动矢量。
61.在一种可能的实现方式中,所述处理器还用于:若所述目标图像中存在无法基于所述多个图像块生成图像的区域,则对所述第三图像进行划分,得到所述第三图像的多个图像块;根据所述第一图像和所述第二图像确定所述第三图像的多个图像块分别对应的运动矢量;根据所述第三图像的多个图像块对应的运动矢量以及所述第三图像的多个图像块,更新所述目标图像,得到新的目标图像,所述新的目标图像用于替换所述第一图像。
62.本技术第五方面提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序,当其在计算机上运行时,使得计算机执行如第一方面中的任意一种实现方式的方法。
63.本技术第六方面提供一种计算机程序产品,当其在计算机上运行时,使得计算机执行如第一方面中的任意一种实现方式的方法。
64.本技术第七方面提供一种芯片,包括一个或多个处理器。处理器中的部分或全部用于读取并执行存储器中存储的计算机程序,以执行上述任一方面任意可能的实现方式中的方法。
65.可选地,该芯片该包括存储器,该存储器与该处理器通过电路或电线与存储器连接。可选地,该芯片还包括通信接口,处理器与该通信接口连接。通信接口用于接收需要处
理的数据和/或信息,处理器从该通信接口获取该数据和/或信息,并对该数据和/或信息进行处理,并通过该通信接口输出处理结果。该通信接口可以是输入输出接口。本技术提供的方法可以由一个芯片实现,也可以由多个芯片协同实现。
附图说明
66.图1a为本技术实施例提供的震颤图像以及用于替换震颤图像的图像之间的对比示意图;
67.图1b为本技术实施例提供的另一种震颤图像以及用于替换震颤图像的图像之间的对比示意图;
68.图2a为本技术实施例提供的终端设备的结构示意图;
69.图2b是本技术实施例提供的终端100的软件结构框图;
70.图3为本技术实施例提供的一种视频处理方法的流程示意图;
71.图4为本技术实施例提供的一种memc方法的示意图;
72.图5为本技术实施例提供的一种memc方法的另一示意图;
73.图6为本技术实施例提供的一种基于候选运动矢量确定图像块的示意图;
74.图7为本技术实施例提供的一种生成目标图像的示意图;
75.图8为本技术实施例提供的另一种生成目标图像的示意图;
76.图9为本技术实施例提供的一种视频处理方法的应用架构示意图;
77.图10为本技术实施例提供的一种替换震颤图像的流程示意图;
78.图11为本技术实施例提供的一种替换震颤图像的另一个流程示意图;
79.图12为本技术实施例提供的另一种视频处理方法的流程示意图;
80.图13为本技术实施例提供的一种终端1300的结构示意图;
81.图14为本技术实施例提供的一种计算机程序产品1400的结构示意图。
具体实施方式
82.下面结合附图,对本技术的实施例进行描述,显然,所描述的实施例仅仅是本技术一部分的实施例,而不是全部的实施例。本领域普通技术人员可知,随着技术的发展和新场景的出现,本技术实施例提供的技术方案对于类似的技术问题,同样适用。
83.本技术的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或模块的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或模块,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或模块。在本技术中出现的对步骤进行的命名或者编号,并不意味着必须按照命名或者编号所指示的时间/逻辑先后顺序执行方法流程中的步骤,已经命名或者编号的流程步骤可以根据要实现的技术目的变更执行次序,只要能达到相同或者相类似的技术效果即可。
84.长期以来,智能手机等便携式终端设备拍摄视频时的镜头抖动问题一直是生成高质量视频的最大难点之一。由于便携式终端比较轻便,用户通常会在使用便携式终端拍摄
视频的同时进行移动,导致便携式终端拍摄得到的视频画面不稳定。在用户的移动过程中,便携式终端的镜头会发生抖动,从而导致视频画面中的灯光区域被更大区域的感光元件感应到,出现视频画面中的灯光区域不正常外扩的现象。
85.在用户的移动过程中,便携式终端的镜头通常会发生不同程度的抖动,因此便携式终端拍摄得到的视频中的部分视频帧的灯光区域不正常外扩,视频中的另一部分视频帧的灯光区域则正常显示。在用户观看视频的过程中,灯光区域不正常外扩的视频帧以及灯光区域正常显示的视频帧交替出现,容易给观看视频的用户带来主观上的震颤感,影响了用户的体验。其中,这种画面中的灯光区域不正常外扩的视频帧可以称为震颤图像。
86.目前,便携式终端中所配置的电子图像防抖(electronic image stabilization,eis)技术通过对视频画面进行旋转、平移以及矫正等处理,使视频画面中的物体仍然能够处于稳定的位置中。然而,现有的eis技术无法处理视频画面中灯光区域不正常外扩的问题。基于eis技术,视频中的灯光区域在稳定帧和抖动帧中的显示位置是稳定的,但抖动帧中仍然会出现灯光区域不正常外扩的现象。
87.有鉴于此,本技术实施例提供了一种视频处理方法,通过确定视频中的图像的抖动值,来定位视频中的震颤图像。然后,将震颤图像前后的图像作为参考图像,并基于震颤图像以及参考图像来求取参考图像中的图像块之间的相对位移。最终,基于参考图像中的图像块以及图像块对应的相对位移来生成用于替换震颤图像的目标图像。通过本方案,能够将视频中的震颤图像替换为正常显示的图像,从而解决由镜头抖动所引起的视频画面中的灯光区域不正常外扩的问题。
88.可以参阅图1a和图1b,图1a为本技术实施例提供的震颤图像以及用于替换震颤图像的图像之间的对比示意图;图1b为本技术实施例提供的另一种震颤图像以及用于替换震颤图像的图像之间的对比示意图。
89.如图1a所示,图1a中的震颤图像1是在室外场景下所拍摄得到的图像。由图1a可以看出,震颤图像1中的灯光区域,即大楼的窗户所在的区域,出现了明显的外扩现象。在基于本技术实施例提供的方法对震颤图像1进行处理后,得到用于替换该震颤图像1的稳定图像1,该稳定图像1中的灯光区域正常显示。
90.如图1b所示,图1b中的震颤图像2是在室内场景下所拍摄得到的图像。由图1b可以看出,震颤图像2中的灯光区域,即室内天花板上的灯具所在的区域,出现了明显的外扩现象。在对震颤图像2进行处理后,得到用于替换该震颤图像2的稳定图像2,该稳定图像2中的灯光区域正常显示。
91.本技术实施例所提供的视频处理方法可以应用于具有视频采集功能的终端上。该终端又称之为用户设备(user equipment,ue)、移动台(mobile station,ms)、移动终端(mobile terminal,mt)等,是一种安装有能够拍摄视频的终端的设备,且能够对拍摄得到的视频进行处理,从而输出稳定显示的视频。例如,具有拍摄功能的手持式设备、监控摄像机等。
92.目前,一些终端的举例为:手机(mobile phone)、平板电脑、笔记本电脑、掌上电脑、监控摄像机、移动互联网设备(mobile internet device,mid)、可穿戴设备,虚拟现实(virtual reality,vr)设备、增强现实(augmented reality,ar)设备、工业控制(industrial control)中的无线终端、无人驾驶(self driving)中的无线终端、远程手术
(remote medical surgery)中的无线终端、智能电网(smart grid)中的无线终端、运输安全(transportation safety)中的无线终端、智慧城市(smart city)中的无线终端、智慧家庭(smart home)中的无线终端等。
93.终端中的图像采集装置用于将光信号转换为电信号,以生成图像信号。图像采集装置例如可以为图像传感器,图像传感器例如可以为电荷耦合器件(charge coupled device,ccd)或者互补金属氧化物半导体(complementary metal oxide semiconductor,cmos)。
94.为便于理解,下面将对本技术实施例提供的终端100的结构进行示例说明。参见图2a,图2a为本技术实施例提供的终端设备的结构示意图。
95.如图2a所示,终端100可以包括处理器110,外部存储器接口120,内部存储器121,通用串行总线(universal serial bus,usb)接口130,充电管理模块140,电源管理模块141,电池142,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,扬声器170a,受话器170b,麦克风170c,耳机接口170d,传感器模块180,按键190,马达191,指示器192,摄像头193,显示屏194,以及用户标识模块(subscriber identification module,sim)卡接口195等。其中传感器模块180可以包括压力传感器180a,陀螺仪传感器180b,气压传感器180c,磁传感器180d,加速度传感器180e,距离传感器180f,接近光传感器180g,指纹传感器180h,温度传感器180j,触摸传感器180k,环境光传感器180l,骨传导传感器180m等。
96.可以理解的是,本发明实施例示意的结构并不构成对终端100的具体限定。在本技术另一些实施例中,终端100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
97.处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(application processor,ap),调制解调处理器,图形处理器(graphics processing unit,gpu),图像信号处理器(image signal processor,isp),控制器,视频编解码器,数字信号处理器(digital signal processor,dsp),基带处理器,和/或神经网络处理器(neural-network processing unit,npu)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
98.控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
99.处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器110的等待时间,因而提高了系统的效率。
100.在一些实施例中,处理器110可以包括一个或多个接口。接口可以包括集成电路(inter-integrated circuit,i2c)接口,集成电路内置音频(inter-integrated circuit sound,i2s)接口,脉冲编码调制(pulse code modulation,pcm)接口,通用异步收发传输器(universal asynchronous receiver/transmitter,uart)接口,移动产业处理器接口(mobile industry processor interface,mipi),通用输入输出(general-purpose input/output,gpio)接口,用户标识模块(subscriber identity module,sim)接口,和/或
通用串行总线(universal serial bus,usb)接口等。
101.i2c接口是一种双向同步串行总线,包括一根串行数据线(serial data line,sda)和一根串行时钟线(derail clock line,scl)。在一些实施例中,处理器110可以包含多组i2c总线。处理器110可以通过不同的i2c总线接口分别耦合触摸传感器180k,充电器,闪光灯,摄像头193等。例如:处理器110可以通过i2c接口耦合触摸传感器180k,使处理器110与触摸传感器180k通过i2c总线接口通信,实现终端100的触摸功能。
102.i2s接口可以用于音频通信。在一些实施例中,处理器110可以包含多组i2s总线。处理器110可以通过i2s总线与音频模块170耦合,实现处理器110与音频模块170之间的通信。在一些实施例中,音频模块170可以通过i2s接口向无线通信模块160传递音频信号,实现通过蓝牙耳机接听电话的功能。
103.pcm接口也可以用于音频通信,将模拟信号抽样,量化和编码。在一些实施例中,音频模块170与无线通信模块160可以通过pcm总线接口耦合。在一些实施例中,音频模块170也可以通过pcm接口向无线通信模块160传递音频信号,实现通过蓝牙耳机接听电话的功能。所述i2s接口和所述pcm接口都可以用于音频通信。
104.uart接口是一种通用串行数据总线,用于异步通信。该总线可以为双向通信总线。它将要传输的数据在串行通信与并行通信之间转换。在一些实施例中,uart接口通常被用于连接处理器110与无线通信模块160。例如:处理器110通过uart接口与无线通信模块160中的蓝牙模块通信,实现蓝牙功能。在一些实施例中,音频模块170可以通过uart接口向无线通信模块160传递音频信号,实现通过蓝牙耳机播放音乐的功能。
105.mipi接口可以被用于连接处理器110与显示屏194,摄像头193等外围器件。mipi接口包括摄像头串行接口(camera serial interface,csi),显示屏串行接口(display serial interface,dsi)等。在一些实施例中,处理器110和摄像头193通过csi接口通信,实现终端100的拍摄功能。处理器110和显示屏194通过dsi接口通信,实现终端100的显示功能。
106.gpio接口可以通过软件配置。gpio接口可以被配置为控制信号,也可被配置为数据信号。在一些实施例中,gpio接口可以用于连接处理器110与摄像头193,显示屏194,无线通信模块160,音频模块170,传感器模块180等。gpio接口还可以被配置为i2c接口,i2s接口,uart接口,mipi接口等。
107.usb接口130是符合usb标准规范的接口,具体可以是mini usb接口,micro usb接口,usb type c接口等。usb接口130可以用于连接充电器为终端100充电,也可以用于终端100与外围设备之间传输数据。也可以用于连接耳机,通过耳机播放音频。该接口还可以用于连接其他电子设备,例如ar设备等。
108.可以理解的是,本发明实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对终端100的结构限定。在本技术另一些实施例中,终端100也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
109.充电管理模块140用于从充电器接收充电输入。
110.电源管理模块141用于连接电池142,充电管理模块140与处理器110。
111.终端100的无线通信功能可以通过天线1,天线2,移动通信模块150,无线通信模块160,调制解调处理器以及基带处理器等实现。
112.天线1和天线2用于发射和接收电磁波信号。终端100中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。例如:可以将天线1复用为无线局域网的分集天线。在另外一些实施例中,天线可以和调谐开关结合使用。
113.移动通信模块150可以提供应用在终端100上的包括2g/3g/4g/5g等无线通信的解决方案。移动通信模块150可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(low noise amplifier,lna)等。移动通信模块150可以由天线1接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。移动通信模块150还可以对经调制解调处理器调制后的信号放大,经天线1转为电磁波辐射出去。在一些实施例中,移动通信模块150的至少部分功能模块可以被设置于处理器110中。在一些实施例中,移动通信模块150的至少部分功能模块可以与处理器110的至少部分模块被设置在同一个器件中。
114.调制解调处理器可以包括调制器和解调器。其中,调制器用于将待发送的低频基带信号调制成中高频信号。解调器用于将接收的电磁波信号解调为低频基带信号。随后解调器将解调得到的低频基带信号传送至基带处理器处理。低频基带信号经基带处理器处理后,被传递给应用处理器。应用处理器通过音频设备(不限于扬声器170a,受话器170b等)输出声音信号,或通过显示屏194显示图像或视频。在一些实施例中,调制解调处理器可以是独立的器件。在另一些实施例中,调制解调处理器可以独立于处理器110,与移动通信模块150或其他功能模块设置在同一个器件中。
115.无线通信模块160可以提供应用在终端100上的包括无线局域网(wireless local area networks,wlan)(如无线保真(wireless fidelity,wi-fi)网络),蓝牙(bluetooth,bt),全球导航卫星系统(global navigation satellite system,gnss),调频(frequency modulation,fm),近距离无线通信技术(near field communication,nfc),红外技术(infrared,ir)等无线通信的解决方案。无线通信模块160可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块160经由天线2接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器110。无线通信模块160还可以从处理器110接收待发送的信号,对其进行调频,放大,经天线2转为电磁波辐射出去。
116.在一些实施例中,终端100的天线1和移动通信模块150耦合,天线2和无线通信模块160耦合,使得终端100可以通过无线通信技术与网络以及其他设备通信。所述无线通信技术可以包括全球移动通讯系统(global system for mobile communications,gsm),通用分组无线服务(general packet radio service,gprs),码分多址接入(code division multiple access,cdma),宽带码分多址(wideband code division multiple access,wcdma),时分码分多址(time-division code division multiple access,td-scdma),长期演进(long term evolution,lte),bt,gnss,wlan,nfc,fm,和/或ir技术等。所述gnss可以包括全球卫星定位系统(global positioning system,gps),全球导航卫星系统(global navigation satellite system,glonass),北斗卫星导航系统(beidou navigation satellite system,bds),准天顶卫星系统(quasi-zenith satellite system,qzss)和/或星基增强系统(satellite based augmentation systems,sbas)。
117.终端100通过gpu,显示屏194,以及应用处理器等实现显示功能。gpu为图像处理的微处理器,连接显示屏194和应用处理器。gpu用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个gpu,其执行程序指令以生成或改变显示信息。
118.显示屏194用于显示图像,视频等。显示屏194包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,lcd),有机发光二极管(organic light-emitting diode,oled),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrix organic light emitting diode的,amoled),柔性发光二极管(flex light-emitting diode,fled),miniled,microled,micro-oled,量子点发光二极管(quantum dot light emitting diodes,qled)等。在一些实施例中,终端100可以包括1个或n个显示屏194,n为大于1的正整数。
119.具体的,显示屏194可以显示本实施例中的目标界面。
120.终端100可以通过isp,摄像头193,视频编解码器,gpu,显示屏194以及应用处理器等实现拍摄功能。isp用于处理摄像头193反馈的数据。摄像头193用于捕获静态图像或视频。
121.视频编解码器用于对数字视频压缩或解压缩。终端100可以支持一种或多种视频编解码器。这样,终端100可以播放或录制多种编码格式的视频,例如:动态图像专家组(moving picture experts group,mpeg)1,mpeg2,mpeg3,mpeg4等。
122.外部存储器接口120可以用于连接外部存储卡,例如micro sd卡,实现扩展终端100的存储能力。外部存储卡通过外部存储器接口120与处理器110通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。
123.内部存储器121可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。内部存储器121可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)等。存储数据区可存储终端100使用过程中所创建的数据(比如音频数据,电话本等)等。此外,内部存储器121可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,ufs)等。处理器110通过运行存储在内部存储器121的指令,和/或存储在设置于处理器中的存储器的指令,执行终端100的各种功能应用以及数据处理。
124.终端100可以通过音频模块170,扬声器170a,受话器170b,麦克风170c,耳机接口170d,以及应用处理器等实现音频功能。例如音乐播放,录音等。
125.音频模块170用于将数字音频信息转换成模拟音频信号输出,也用于将模拟音频输入转换为数字音频信号。音频模块170还可以用于对音频信号编码和解码。在一些实施例中,音频模块170可以设置于处理器110中,或将音频模块170的部分功能模块设置于处理器110中。
126.扬声器170a,也称“喇叭”,用于将音频电信号转换为声音信号。终端100可以通过扬声器170a收听音乐,或收听免提通话。受话器170b,也称“听筒”,用于将音频电信号转换成声音信号。麦克风170c,也称“话筒”,“传声器”,用于将声音信号转换为电信号。耳机接口170d用于连接有线耳机。
127.压力传感器180a用于感受压力信号,可以将压力信号转换成电信号。
128.陀螺仪传感器180b可以用于确定终端100的运动姿态。
129.气压传感器180c用于测量气压。
130.磁传感器180d包括霍尔传感器。
131.加速度传感器180e可检测终端100在各个方向上(一般为三轴)加速度的大小。
132.距离传感器180f,用于测量距离。
133.接近光传感器180g可以包括例如发光二极管(led)和光检测器,例如光电二极管。
134.环境光传感器180l用于感知环境光亮度。
135.指纹传感器180h用于采集指纹。
136.温度传感器180j用于检测温度。
137.触摸传感器180k,也称“触控器件”。触摸传感器180k可以设置于显示屏194,由触摸传感器180k与显示屏194组成触摸屏,也称“触控屏”。触摸传感器180k用于检测作用于其上或附近的触摸操作。触摸传感器可以将检测到的触摸操作传递给应用处理器,以确定触摸事件类型。可以通过显示屏194提供与触摸操作相关的视觉输出。在另一些实施例中,触摸传感器180k也可以设置于终端100的表面,与显示屏194所处的位置不同。
138.骨传导传感器180m可以获取振动信号。
139.按键190包括开机键,音量键等。按键190可以是机械按键。也可以是触摸式按键。终端100可以接收按键输入,产生与终端100的用户设置以及功能控制有关的键信号输入。
140.马达191可以产生振动提示。
141.指示器192可以是指示灯,可以用于指示充电状态,电量变化,也可以用于指示消息,未接来电,通知等。
142.sim卡接口195用于连接sim卡。
143.终端100的软件系统可以采用分层架构,事件驱动架构,微核架构,微服务架构,或云架构。本发明实施例以分层架构的android系统为例,示例性说明终端100的软件结构。
144.图2b为本技术实施例提供的终端100的软件结构框图。
145.分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,将android系统分为四层,从上至下分别为应用程序层,应用程序框架层,安卓运行时(android runtime)和系统库,以及内核层。
146.应用程序层可以包括一系列应用程序包。
147.如图2b所示,应用程序包可以包括相机,图库,日历,通话,地图,导航,wlan,蓝牙,音乐,视频,短信息等应用程序。
148.应用程序框架层为应用程序层的应用程序提供应用编程接口(application programming interface,api)和编程框架。应用程序框架层包括一些预先定义的函数。
149.如图2b所示,应用程序框架层可以包括窗口管理器,内容提供器,视图系统,电话管理器,资源管理器,通知管理器等。
150.窗口管理器用于管理窗口程序。窗口管理器可以获取显示屏大小,判断是否有状态栏,锁定屏幕,截取屏幕等。
151.内容提供器用来存放和获取数据,并使这些数据可以被应用程序访问。所述数据可以包括视频,图像,音频,拨打和接听的电话,浏览历史和书签,电话簿等。
152.视图系统包括可视控件,例如显示文字的控件,显示图片的控件等。视图系统可用于构建应用程序。显示界面可以由一个或多个视图组成的。例如,包括短信通知图标的显示界面,可以包括显示文字的视图以及显示图片的视图。
153.电话管理器用于提供终端100的通信功能。例如通话状态的管理(包括接通,挂断
等)。
154.资源管理器为应用程序提供各种资源,比如本地化字符串,图标,图片,布局文件,视频文件等等。
155.通知管理器使应用程序可以在状态栏中显示通知信息,可以用于传达告知类型的消息,可以短暂停留后自动消失,无需用户交互。比如通知管理器被用于告知下载完成,消息提醒等。通知管理器还可以是以图表或者滚动条文本形式出现在系统顶部状态栏的通知,例如后台运行的应用程序的通知,还可以是以对话窗口形式出现在屏幕上的通知。例如在状态栏提示文本信息,发出提示音,电子设备振动,指示灯闪烁等。
156.android runtime包括核心库和虚拟机。android runtime负责安卓系统的调度和管理。
157.核心库包含两部分:一部分是java语言需要调用的功能函数,另一部分是安卓的核心库。
158.应用程序层和应用程序框架层运行在虚拟机中。虚拟机将应用程序层和应用程序框架层的java文件执行为二进制文件。虚拟机用于执行对象生命周期的管理,堆栈管理,线程管理,安全和异常的管理,以及垃圾回收等功能。
159.系统库可以包括多个功能模块。例如:表面管理器(surface manager),媒体库(media libraries),三维图形处理库(例如:opengl es),2d图形引擎(例如:sgl)等。
160.表面管理器用于对显示子系统进行管理,并且为多个应用程序提供了2d和3d图层的融合。
161.媒体库支持多种常用的音频,视频格式回放和录制,以及静态图像文件等。媒体库可以支持多种音视频编码格式,例如:mpeg4,h.264,mp3,aac,amr,jpg,png等。
162.三维图形处理库用于实现三维图形绘图,图像渲染,合成,和图层处理等。
163.2d图形引擎是2d绘图的绘图引擎。
164.内核层是硬件和软件之间的层。内核层至少包含显示驱动,摄像头驱动,音频驱动,传感器驱动。
165.下面结合视频播放场景,示例性说明终端100软件以及硬件的工作流程。
166.当触摸传感器180k接收到触摸操作,相应的硬件中断被发给内核层。内核层将触摸操作加工成原始输入事件(包括触摸坐标,触摸操作的时间戳等信息)。原始输入事件被存储在内核层。应用程序框架层从内核层获取原始输入事件,识别该输入事件所对应的控件。以该触摸操作是触摸单击操作,以该单击操作所对应的控件为视频播放相关应用图标的控件为例,视频播放应用调用应用框架层的接口,启动视频播放应用,进而通过调用内核层在视频播放应用的视频播放界面播放视频,例如可以播放自由视点视频。
167.以上介绍了本技术实施例所提供的视频处理方法的应用场景,以下将详细介绍该视频处理方法的执行过程。
168.可以参阅图3,图3为本技术实施例提供的一种视频处理方法的流程示意图。如图3所示,该视频处理方法包括以下的步骤301-步骤304。
169.步骤301,获取多个图像。
170.在本实施例中,所述多个图像可以是视频中的多个连续的图像。终端可以通过多种方式来获取所述多个图像。
171.在一种可能的方式中,终端可以是以固定的帧率拍摄视频,从而获取一段时间内拍摄得到的多个图像。例如,在终端以30hz的帧率拍摄视频时,所述多个图像可以是终端在1秒内所拍摄得到的30个图像。
172.在另一种可能的方式中,终端可以是接收其他终端所发送的多个图像,所述多个图像是由其他终端拍摄得到的。简单来说,其他终端以固定的帧率进行视频的拍摄,并在拍摄得到多个图像后,将所述多个图像发送给本实施例中的终端,由本实施例中的终端对所述多个图像进行处理。
173.步骤302,确定所述多个图像中的第一图像,所述第一图像的抖动值大于或等于第二预设阈值,所述抖动值为终端采集所述第一图像时的抖动位移。
174.本实施例中,终端通过确定所述多个图像中的每个图像的抖动值,来确定所述多个图像中的震颤图像。当所述多个图像中的任意一个图像的抖动值小于第二预设阈值时,则确定该图像不是震颤图像;当所述多个图像中的某一个图像的抖动值大于或等于第二预设阈值时,则确定该图像为震颤图像。其中,图像的抖动值是指终端在采集该图像时的抖动位移。第二预设阈值可以为300-400,例如第二预设阈值具体为360。
175.在一个可能的实施例中,终端可以获取记录了终端在采集第一图像时的运动情况的传感器数据,并且基于传感器数据计算得到第一图像的抖动值。
176.示例性地,终端根据所述第一图像的曝光时间,获取所述第一图像对应的传感器数据,所述传感器数据用于记录所述终端在所述第一图像的曝光时间内的运动情况。例如,所述传感器数据可以为陀螺仪数据,即通过陀螺仪采集得到的数据。其中,陀螺仪是一种角运动检测装置,通过陀螺仪采集得到的陀螺仪数据记录了所述终端在所述第一图像的曝光时间内的角速度。此外,所述传感器数据也可以是通过其他的传感器所采集得到的数据,所述其他的传感器可以记录了所述终端在所述第一图像的曝光时间内的角速度或者角加速度。然后,终端根据所述传感器数据确定所述第一图像的抖动值,即确定终端在第一图像的曝光期间所发生的抖动位移。
177.例如,在所述传感器数据为陀螺仪数据的情况下,终端可以获取到在第一图像曝光期间内的多个时刻的陀螺仪数据,每个陀螺仪数据都记录了终端在某一时刻下的三维转动角速度。因此,终端可以基于第一图像曝光期间内的多个陀螺仪数据以及相邻的两个陀螺仪数据之间的时间间隔,计算终端在相邻的两个采集时刻之间的角位移。最后,终端基于计算得到的多个角位移,确定终端在第一图像的曝光期间所发生的抖动位移。
178.基于上述的方法,终端可以获取到所述多个图像中的每个图像的抖动值,从而确定抖动值大于或等于第二预设阈值的第一图像。
179.在本实施例中,除了通过传感器数据来计算图像的抖动值之外,终端还可以是通过其他的方式来获取图像的抖动值。
180.在一种可能的实现方式中,终端可以计算图像的对比度值,并根据图像的对比度值确定图像的抖动值。
181.具体来说,对于所述多个图像,终端可以计算所述多个图像中的每个图像的对比度值,进而基于每个图像的对比度值确定每个图像的抖动值。其中,终端可以是基于图像的感兴趣区域中的像素的亮度值,来计算图像的对比度值。具体地,终端可以先确定图像中的感兴趣区域,该感兴趣区域例如可以为位于图像中心的特定范围的区域。比如,该感兴趣区
域为图像中心的12*12个像素所在的区域。然后,终端计算该感兴趣区域中的所有像素的亮度值,并且确定该感兴趣区域中亮度最高的像素以及亮度最低的像素。最后,终端计算亮度最高的像素的亮度值与亮度最低的像素的亮度值之间的比值,即终端计算最高亮度值与最低亮度值之间的比值,从而得到图像的对比度值。
182.在计算得到图像的对比度值之后,终端进一步根据图像的对比度值确定图像的抖动值。其中,图像的抖动值与图像的对比度值具有负相关的关系。即图像的对比度值越大,则图像的抖动值越小;图像的对比度值越小,图像的抖动值则越大。示例性地,可以定义图像的抖动值与图像的对比度值之间的乘积为一个特定的正数,因此终端可以通过将该正数除以图像的对比度值,来确定图像的抖动值。例如,假设图像的对比度值为c,则终端可以计算得到图像的抖动值为1/c。
183.在另一种可能的实现方式中,终端可以基于预先训练好的神经网络来确定图像的抖动值。
184.示例性地,终端可以获取预先基于大量标注有抖动值的图像训练好的神经网络,该神经网络用于预测图像的抖动值。然后,终端将所述多个图像输入到该神经网络中,得到神经网络所输出的抖动值,从而确定所述多个图像中的每个图像的抖动值。其中,该神经网络是基于预先准备好的训练数据训练得到的。该训练数据包括在终端发生抖动的情况下所拍摄的大量图像,这些图像中的灯光区域均存在不正常外扩的现象。此外,这些图像上均标注有图像对应的抖动值。在获取到训练数据后,即可根据现有的神经网络训练方法训练该神经网络,最终得到训练好的神经网络。
185.基于上述的两种实现方式,终端能够在无法获取到终端在采集图像时对应的传感器数据的情况下,有效地判断图像是否为震颤图像。
186.在一个可能的实施例中,终端还可以确定所述多个图像是否存在局部灯光区域。只有在某一个图像存在局部灯光区域且该图像的抖动值大于或等于第二预设阈值时,终端将该图像确定为震颤图像。
187.本实施例中,灯光区域内的像素的亮度值均大于特定阈值,且灯光区域内的像素的亮度值与灯光区域的相邻区域的像素的亮度值之间的差异值大于预设设定的差值。其中,上述的特定阈值的取值可以为180-230,例如特定阈值具体为224;预先设定的差值的取值可以为25-50,例如预设设定的差值为32。例如,当终端检测到图像中存在有某一个区域内的像素的亮度值均大于224,且该区域内的像素的亮度值与相邻区域的像素的亮度值之间的差异值大于32,则终端可以确定该区域为灯光区域。其中,灯光区域的相邻区域可以是由与灯光区域内的像素相邻的像素所构成,即灯光区域的相邻区域内的像素与灯光区域内的像素相邻。
188.示例性地,终端可以确定所述多个图像中的每个图像中目标像素的个数,所述目标像素是指灯光区域内的像素。然后,终端获取每个图像中目标像素的个数与图像的像素总个数的比值,并判断该比值是否在预设范围内。如果图像中目标像素的个数与图像的像素总个数的比值在预设范围内,则终端确定该图像中存在局部灯光区域;如果图像中目标像素的个数与图像的像素总个数的比值不在预设范围内,则终端确定该图像中不存在局部灯光区域。
189.也就是说,被确定为震颤图像的第一图像的抖动值大于或等于第二预设阈值,且
所述第一图像中目标像素的个数与像素总个数的比值在预设范围内,所述目标像素为灯光区域的像素。
190.示例性地,以图像的颜色空间的格式为yuv格式为例,图像中的像素的y值即为像素的亮度值。在图像中,像素的y值的取值范围0-255,y值越大,则像素的亮度值越大。假设上述的特定阈值为224,预先设定的差值为32,预设范围为2%-20%。那么,终端可以先确定图像中目标像素的个数,然后终端确定目标像素与图像的像素总个数的比值。其中,目标像素的y值大于或等于240,且目标像素的亮度值与灯光区域的邻近区域的像素的亮度值的差异值大于或等于32。如果目标像素与图像的像素总个数的比值在2%-20%之内,则确定该图像存在局部灯光区域。可以理解的是,上述的阈值、差值以及预设范围可以根据实际需要进行调整,本实施例并不对阈值、差值以及预设范围的具体取值进行限定。
191.步骤303,根据所述第一图像在所述多个图像中确定第二图像和第三图像。
192.在本实施例中,所述第一图像的采集时刻位于所述第二图像的采集时刻与所述第三图像的采集时刻之间。也就是说,在终端获取的所述多个图像中,所述第一图像并非是所述多个图像中的第一个图像,所述第一图像也不是所述多个图像中的最后一个图像。其中,所述多个图像是按采集时刻的先后顺序排列的,所述多个图像中的第一个图像是指所述多个图像中最早采集的图像,所述多个图像中的最后一个图像是指所述多个图像中最晚采集的图像。
193.此外,在所述第二图像和所述第三图像中,至少有一个图像的抖动值小于所述第一图像的抖动值。由于所述第二图像和所述第三图像是用于作为参考图像来生成替换第一图像的目标图像,因此需要保证所述第二图像和所述第三图像的图像质量,以便于能够生成灯光区域正常显示的目标图像。
194.在一种可能的实现方式中,终端可以是以所述第一图像为中心,在位于第一图像前后的n个图像中确定第二图像和第三图像。示例性地,终端可以在前述的多个图像中获取采集时刻位于第一图像之前的k个图像以及采集时刻位于第一图像之后的k个图像,并且在获取到的2k个图像中确定第二图像和第三图像。其中,k为大于或等于1的整数,例如k可以为1、2或3。由于所述第一图像的采集时刻位于所述第二图像的采集时刻与所述第三图像的采集时刻之间,因此,终端可以是在采集时刻位于第一图像之前的k个图像中确定第二图像,然后在采集时刻位于第一图像之后的k个图像确定第三图像。或者,终端可以是在采集时刻位于第一图像之前的k个图像中确定第三图像,然后在采集时刻位于第一图像之后的k个图像确定第二图像。
195.例如,假设第一图像为图像t,则终端可以获取图像t-k至图像t-1以及图像t 1至图像t k,并且在图像t-k至图像t-1以及图像t 1至图像t k中确定第二图像和第三图像。然后,终端可以在图像t-k至图像t-1中确定第二图像,并在图像t 1至图像t k中确定第三图像。或者,终端可以在图像t-k至图像t-1中确定第三图像,并在图像t 1至图像t k中确定第二图像。
196.可选的,为了尽可能地生成更高质量的目标图像,终端可以在多个图像中选择对生成高质量目标图像的稳定值更大的图像作为第二图像和第三图像。
197.示例性地,终端分别确定所述多个图像中每个图像的稳定值,所述稳定值为所述图像的抖动值与所述图像和所述第一图像之间的采集时间差之和的倒数。其中,图像的稳
定值与该图像的抖动值以及该图像与第一图像之间的采集时间差呈负相关的关系。也就是说,图像的抖动值越大,则该图像的稳定值越小;图像与第一图像之间的采集时间差越大,则该图像的稳定值越小。简单来说,终端需要尽可能地选择抖动值小且靠近第一图像的图像作为第二图像和第三图像。
198.然后,终端确定所述多个图像中稳定值最大的图像为所述第二图像,并根据所述第二图像的采集时刻,在所述多个图像中确定所述第三图像,以使得所述第一图像的采集时刻位于所述第二图像的采集时刻与所述第三图像的采集时刻之间。具体地,终端可以根据所述第二图像的采集时刻,在所述多个图像中确定一个或多个图像,所述第一图像的采集时刻位于所述第二图像的采集时刻与所述一个或多个图像的采集时刻之间;然后,终端在所述一个或多个图像中确定稳定值最大的图像为所述第三图像。基于上述的方式所确定的第二图像的稳定值大于第三图像,因此第二图像可以认为是用于生成目标图像的主参考图像,第三图像则可以认为是用于生成目标图像的次参考图像。
199.此外,终端也可以是分别确定位于第一图像前后的n个图像中每个图像的稳定值,并确定所述n个图像中稳定值最大的图像为所述第二图像。也就是说,终端以第一图像为中心,确定特定范围内的图像的稳定值,并将稳定值最大的图像确定为第二图像。最后,再基于第二图像确定第三图像。
200.例如,假设第一图像为图像t,终端在图像t-k至图像t-1以及图像t 1至图像t k中确定第二图像和第三图像。此外,假设图像t-k至图像t-1以及图像t 1至图像t k中的任意一个图像p的稳定值为h,图像p的抖动值为pd。那么,稳定值h具体为:h=1/(pd 100*|p-t|)。可以看出,图像p的抖动值越大,则该图像p的稳定值越小;图像p与第一图像之间的采集时间差越大,则该图像p的稳定值越小。
201.这样,终端可以分别计算图像t-k至图像t-1以及图像t 1至图像t k的稳定值h,并且在图像t-k至图像t-1以及图像t 1至图像t k中选取稳定值h最大的一个图像作为第二图像。如果第二图像是图像t-k至图像t-1中的一个图像,则终端继续在图像t 1至图像t k中选取稳定值h最大的一个图像作为第三图像。如果第二图像是图像t 1至图像t k中的一个图像,则终端继续在图像t-k至图像t-1中选取稳定值h最大的一个图像作为第三图像。
202.步骤304,根据所述第一图像、所述第二图像和所述第三图像生成目标图像。
203.本实施例中,所述目标图像用于替换所述第一图像。终端在生成所述目标图像后,可以将所述多个图像中的所述第一图像替换为所述目标图像,得到新的多个图像,并输出所述新的多个图像。
204.其中,所述第一图像和所述第三图像用于确定所述第二图像中的图像块对应的运动矢量,所述运动矢量用于表示所述第三图像中的图像块与所述第二图像中的图像块之间的相对位移,所述目标图像是基于所述第二图像中的图像块以及所述运动矢量得到的。
205.具体地,终端可以将所述第二图像划分为多个图像块,并根据所述第一图像和所述第三图像确定所述多个图像块分别对应的运动矢量,以使得所述多个图像块中的每个图像块基于该图像块对应的运动矢量都能够在第一图像和第三图像中找到匹配的图像块。也就是说,对于第二图像中的每个图像块来说,基于该图像块的运动矢量能够在第一图像和第三图像找到对应的图像块,且第一图像和第三图像中对应的图像块均与该第二图像中的图像块匹配。即,第一图像中对应的图像块与第二图像中的图像块相似,且第三图像中对应
的图像块也与该第二图像中的图像块相似。最后,终端根据所述多个图像块分别对应的运动矢量以及所述多个图像块,生成所述目标图像。
206.本实施例中,通过确定视频中的图像的抖动值,来定位视频中的震颤图像。然后,将震颤图像前后的图像作为参考图像,并基于震颤图像以及参考图像来求取参考图像中的图像块之间的相对位移。最终,基于参考图像中的图像块以及图像块对应的相对位移来生成用于替换震颤图像的目标图像。通过本方案,能够将视频中的震颤图像替换为正常显示的图像,从而解决由镜头抖动所引起的视频画面中的灯光区域不正常外扩的问题。
207.为了便于理解以上所述的终端确定第二图像中的图像块对应的运动矢量的过程,以下先简单介绍相关技术中的运动估计与运动补偿(motion estimate and motion compensation,memc)方法。
208.memc方法是目前一种用于防抖动或帧率转换的技术,memc方法通过估算图像中连续运动的物体的运动轨迹,得到图像中的多个图像块的运动矢量。然后,再结合图像块和得到的运动矢量,插值得到中间图像,从而提高视频帧率或改善视频播放时的抖动拖尾等问题。
209.可以参阅图4,图4为本技术实施例提供的一种memc方法的示意图。如图4所示,图像1和图像2为连续的两个图像,图像1为先采集的图像,图像2为后采集的图像,图像3则是基于图像1和图像2插值得到的图像。
210.在终端执行memc的过程中,终端对图像1和图像2分别执行分块操作,得到图像1中的多个图像块以及图像2中的多个图像块,每个图像块的大小一般为8*8个像素或者16*16个像素。对于图像1中的每个图像块,终端在图像2中查找与图像1中的图像块最为相似的图像块,即查找图像2中与图像1中的图像块匹配的图像块。例如,如图4所示,图像2中的图像块b与图像1中的图像块a最为相似,因此可以确定图像块b与图像块a匹配。基于图像块b与图像块a,可以确定图像块a对应的运动矢量,该运动矢量即为图像块b与图像块a之间的相对位移。也就是说,图像块a基于该运动矢量进行移动后,图像块a即可移动至图像块b所在的位置。这样一来,在确定了图像1中的每个图像块在图像2中匹配的图像块之后,即可得到图像1中的每个图像块对应的运动矢量。以上求取图像块对应的运动矢量的过程即为memc方法中的运动估计部分。
211.在得到图像1中的每个图像块对应的运动矢量之后,终端则可以基于每个图像块对应的运动矢量,将图像1中的每个图像块按照对应的运动矢量的一半进行移动,最终得到图像3。例如,如图4所示,图像1中的图像块a按照运动矢量的一半进行移动后,图像块移动至图像3中的位置p,位置p实际上位于图像块a所在位置以及图像块b所在位置的中间。以上基于运动矢量生成图像的过程即为memc方法中的运动补偿部分。
212.然而,上述的memc方法也有不足之处。由于memc方法中是基于最为相似的原则来查找匹配的图像块,因此当查找的图像中存在多个相似度接近的图像块时,则容易得到错误的运动矢量,从而导致最终生成的图像中出现明显的错误。
213.可以参阅图5,图5为本技术实施例提供的一种memc方法的另一示意图。如图5所示,假设图像2中还包括图像块b’,且图像块b’与图像块a相似。也就是说,对于图像块a而言,图像2中的图像块b以及图像块b’均与图像块a相似。在这种情况下,在基于图像块a对应的运动矢量生成图像3时,图像块a有可能被移动至图像3中的位置p或者位置p’。假设实际
上图像2中与图像块a匹配的图像块为图像块b,那么图像块a最终出现位置p’时,则导致图像3中出现明显的错误。
214.有鉴于此,本技术实施例在相关技术的memc方法的基础上,还引入了原图像,基于原图像来进一步确定图像块的运动矢量,从而保证生成的目标图像的质量。
215.具体来说,在本实施例中,终端在求取第二图像中的图像块对应的运动矢量的过程中,终端是基于第三图像和第一图像来共同确定第二图像中的图像块对应的运动矢量,以使得第二图像中的每个图像块基于该图像块对应的运动矢量都能够在第一图像和第三图像中找到匹配的图像块。这样一来,终端则可以确保得到的运动矢量是准确的。
216.以图5为例,在确定图像2中的图像块b以及图像块b’均与图像块a相似的情况下,基于图像块b以及图像块b’确定位于图像1和图像2之间的原图像上的位置p和位置p’。然后,获取原图像中位于位置p的图像块p以及位于位置p’的图像块p’,再求取图像块a与图像块p以及图像块p’之间的相似度。最终,结合图像块a与图像块b和图像块b’之间的相似度,以及图像块a与图像块p和图像块p’之间的相似度,确定图像a的运动矢量。这样一来,基于最终求得的运动矢量移动图像块a,能够使得图像块a被移动至正确的位置p上。
217.为便于理解,以下将详细介绍本实施例中终端根据第一图像和第三图像确定第二图像中的多个图像块分别对应的运动矢量的过程。
218.在一种可能的实现方式中,对于第二图像中的多个图像块,终端逐个求取所述多个图像块中的每一个图像块对应的运动矢量。以下将以终端求取所述多个图像块中的一个图像块对应的运动矢量的过程为例,说明终端如何确定第二图像中的多个图像块分别对应的运动矢量。
219.首先,终端获取第一图像块对应的多个候选运动矢量。其中,所述第二图像中的多个图像块包括所述第一图像块,所述第一图像块可以为所述多个图像块中的任意一个图像块。可选的,所述多个候选运动矢量包括:一个或多个预设运动矢量、随机生成的一个或多个运动矢量和/或与所述第一图像块相邻的图像块对应的运动矢量。
220.可以理解的是,由于第二图像与第三图像是采集时刻相近的两个图像,因此第二图像中的物体相对于第三图像的位移较小,从而可以认为第二图像中的图像块对应的运动矢量是在预设范围内的。这样一来,终端可以获取一个或多个预设运动矢量,并将这些预设运动矢量作为候选运动矢量。简单来说,假设第二图像中的物体在第二图像与第三图像的采集间隙发生了位移,但是由于第二图像与第三图像之间的采集时刻很相近,因此可以认为第二图像中的物体所发生的位移量是在一定范围内的。例如,预设运动矢量可以包括(0,-1)、(-1,0)、(-1,-1)、(-1,1)、(1,-1)、(0,0)、(0,1)、(1,0)以及(1,1),即认为第二图像中的图像块发生的位移量在1个像素以内。
221.此外,为了尽可能地保证能够获取到第一图像块实际对应的运动矢量,还可以随机生成一个或多个运动矢量或者选取第一图像块相邻的图像块对应的运动矢量来作为候选运动矢量,从而避免候选运动矢量的取值范围过于局限。由于第一图像块与第一图像块相邻的图像块有较大几率是表示同一个物体的不同部分,因此第一图像块与第一图像块相邻的图像块所对应的运动矢量很有可能是相同的。因此,选取第一图像块相邻的图像块对应的运动矢量来作为候选运动矢量,则能够保证候选运动矢量的全面性。示例性地,在终端是按照从左到右以及从上到下的顺序来求取图像块对应的运动矢量的情况下,那么与第一
图像块相邻的图像块则为位于第一图像块的左上方、上方、右上方以及左方的四个图像块。在终端是按照其他的顺序来求取图像块对应的运动矢量的情况下,那么与第一图像块相邻的图像块则可以为位于第一图像块的其他方位的图像块,本实施例并不对与第一图像块相邻的图像块所在的位置做具体限定。
222.在获取得到多个候选运动矢量后,终端可以根据所述第一图像块的位置,确定所述多个候选运动矢量中每个候选运动矢量对应的第二图像块和第三图像块,所述第一图像包括所述第二图像块,所述第三图像包括所述第三图像块。由于候选运动矢量是表示第三图像中的图像块与第二图像中的图像块之间的相对位移,因此终端可以基于第一图像块在第二图像中的位置以及候选运动矢量确定第一图像中的第二图像块以及第三图像中的第三图像块。示例性地,可以参阅图6,图6为本技术实施例提供的一种基于候选运动矢量确定图像块的示意图。如图6所示,假设第二图像为第一图像的前一个图像,第三图像为第一图像的后一个图像,第二图像中的第一图像块所在的位置的坐标为(0,0),第一图像块对应的候选运动矢量为(2,-2)。那么,基于第一图像块对应的候选运动矢量,可以求得第三图像中的第三图像块所在位置的坐标为(2,-2),第一图像中的第二图像块所在位置的坐标为(1,-1)。
223.其次,终端根据所述第一图像块、所述第二图像块和所述第三图像块,确定所述每个候选运动矢量对应的目标误差值,所述目标误差值是基于所述第一图像块与所述第二图像块之间的误差值以及所述第一图像块与所述第三图像块之间的误差值得到的。其中,两个图像块之间的误差值表示两个图像块之间的差异,误差值越大,则两个图像块之间的差异越大。例如,在基于候选运动矢量确定第一图像块对应的第二图像块和第三图像块之后,终端可以基于绝对误差和(sum of absolute difference,sad)算法求取第一图像块与第二图像块之间的误差值以及第一图像块与第三图像块之间的误差值。然后,终端再基于第一图像块与第二图像块之间的误差值以及第一图像块与第三图像块之间的误差值确定目标误差值。例如将第一图像块与第二图像块之间的误差值以及第一图像块与第三图像块之间的误差值相加,以得到目标误差值。
224.最后,终端根据所述每个候选运动矢量对应的目标误差值,在所述多个候选运动矢量中确定目标误差值最小的运动矢量为所述第一图像块对应的运动矢量。
225.以上为终端求取第二图像中的第一图像块的运动矢量的过程,在实际应用中,终端可以基于以上的流程求取第二图像中的每个图像块对应的运动矢量,最终得到第二图像中的多个图像块对应的运动矢量。
226.在实际应用中,由于第二图像中包括大量的图像块,而第二图像中的部分图像块可能会由于无法在第三图像中找到匹配的图像块,而无法确定对应的运动矢量。又或者,第二图像中的部分图像块基于对应的运动矢量进行移动后,可能会移动到相同的位置上。这样一来,在基于第二图像中的多个图像块生成目标图像的过程中,所生成的目标图像中可能会存在无法基于所述多个图像块生成图像的区域。这些无法生成图像的区域则可以称为空洞区域。
227.示例性地,可以参阅图7,图7为本技术实施例提供的一种生成目标图像的示意图。如图7所示,第二图像中位置(1,1)的图像块显示的是一个人物,第二图像中位置(2,1)的图像块显示的是一个路障,第二图像中位置(3,1)的图像块显示的是一个箱子。第一图像中位
置(1,1)的图像块显示的是一个消防栓,第一图像中位置(2,1)的图像块显示的是一个人物,第一图像中位置(3,1)的图像块显示的是一个箱子。第三图像中位置(1,1)的图像块显示的是一个消防栓,第三图像中位置(2,1)的图像块显示的是一个路障,第二图像中位置(3,1)的图像块显示的是一个人物。
228.在图7中,基于第一图像和第三图像求取第二图像中的图像块所对应的运动矢量时,第二图像中位置(1,1)的图像块1对应的运动矢量为(2,0),第二图像中位置(2,1)的图像块2对应的运动矢量为(0,0),第二图像中位置(3,1)的图像块3对应的运动矢量为(0,0)。基于上述求取到的运动矢量,第二图像中的图像块1移动到了目标图像中的位置(2,1),图像块2也移动到目标图像中的位置(2,1),图像块3移动到目标图像中的位置(3,1)。最终,目标图像中的位置(1,1)没有能够显示的图像,即位置(1,1)为空洞区域。
229.本实施例中,在求得第二图像中的多个图像块对应的运动矢量后,终端可以基于每个图像块对应的运动矢量确定该图像块在目标图像中对应的位置。如果第二图像中不同的图像块在目标图像中具有相同的位置,则终端需要在这多个不同的图像块中确定一个显示于目标图像上的图像块。例如,在图7中,第二图像中的图像块1和图像块2都需要移动至目标图像中的位置(2,1),即图像块1和图像块2在目标图像中对应的位置均为(2,1)。
230.具体地,终端在确定第二图像中的多个不同的图像块在目标图像中对应的位置相同后,终端分别获取该多个不同的图像块对应的运动矢量的目标误差值。由上述的实施例可知,第二图像中的每个图像块的运动矢量的目标误差值,是基于该图像块与第一图像中对应位置的图像块之间的误差值以及该图像块与第三图像中对应位置的图像块之间的误差值得到的。最后,终端在多个不同的图像块中确定目标误差值最小的一个图像块,并将这个目标误差值最小的图像块显示于目标图像上。
231.示例性地,对于图7中的图像块1和图像块2,图像块1对应的运动矢量的目标误差值是基于图像块1与第一图像中位置为(2,1)的图像块之间的误差值以及图像块1与第三图像中位置为(3,1)的图像块得到的;图像块2对应的运动矢量的目标误差值是基于图像块2与第一图像中位置为(2,1)的图像块之间的误差值以及图像块2与第三图像中位置为(3,1)的图像块得到的。显然,图像块1对应的运动矢量的目标误差值要小于图像块2对应的运动矢量的目标误差值。因此,目标图像中位置(2,1)最终显示的第二图像中的图像块1。
232.为了消除目标图像中的空洞区域,本实施例中基于第一图像和第二图像确定第三图像中的多个图像块对应的运动矢量,并根据第三图像中的多个图像块对应的运动矢量更新目标图像,最终得到更新后的目标图像。
233.示例性地,在终端基于第二图像的多个图像块生成目标图像之后,若所述目标图像中存在无法基于所述多个图像块生成图像的区域,则终端对所述第三图像进行划分,得到所述第三图像的多个图像块。
234.然后,终端根据所述第一图像和所述第二图像确定所述第三图像的多个图像块分别对应的运动矢量。其中,终端确定所述第三图像的多个图像块分别对应的运动矢量的过程与上述终端确定第二图像的多个图像块对应的运动矢量的过程类似,具体可以参考上述实施例的描述,在此不再赘述。
235.最后,终端根据所述第三图像的多个图像块对应的运动矢量以及所述第三图像的多个图像块,更新所述目标图像,得到新的目标图像,所述新的目标图像用于替换所述第一
图像。其中,终端更新所述目标图像是指终端根据第三图像的多个图像块对应的运动矢量,将所述第三图像中的图像块移动至目标图像中的空洞区域,从而实现空洞区域的填充。对于目标图像中已经存在有图像的区域,则不再更新这些已经存在有图像的区域。
236.示例性地,可以参阅图8,图8为本技术实施例提供的另一种生成目标图像的示意图。其中,图8是在图7所示实施例的基础上,基于第三图像中的图像块对应的运动矢量对目标图像进行更新,得到更新后的目标图像。
237.在图8中,基于第一图像和第三图像求取第二图像中的图像块所对应的运动矢量时,第三图像中位置(1,1)的图像块1’对应的运动矢量为(0,0),第三图像中位置(2,1)的图像块2’对应的运动矢量为(0,0),第三图像中位置(3,1)的图像块3’对应的运动矢量为(-2,0)。
238.基于上述求取到的运动矢量,第二图像中的图像块1’需要移动至目标图像中的位置(1,1),图像块2’需要移动到目标图像中的位置(2,1),图像块3’需要移动到目标图像中的位置(2,1)。由于生成的目标图像中的空洞区域的位置为(1,1),因此只需要基于运动矢量将第二图像中的图像块1’需要移动至目标图像中的位置(1,1),即可完成对目标目标图像的更新,得到更新后的目标图像。由图8可以看出,更新后的目标图像完成了对空洞区域的填充,且更新后的目标图像能够稳定显示第一图像中所包括的内容。
239.为便于理解,以下将结合具体例子详细介绍本实施例的视频处理方法。
240.可以参阅图9,图9为本技术实施例提供的一种视频处理方法的应用架构示意图。如图9所示,终端包括图像采集装置、陀螺仪、图像信号处理(image signal processing,isp)模块和显示组件。isp模块包括震颤判断单元和解震颤单元。可选的,isp模块还包括eis单元。其中,图像采集装置将采集得到的多个图像传输给eis单元,由eis单元对所述多个图像执行防抖操作。震颤判断单元获取eis单元输出的多个图像,并判断所述多个图像中是否存在震颤图像,最终由解震颤单元生成用于替换震颤图像的目标图像。解震颤单元将多个图像中的震颤图像替换为目标图像后,将替换目标图像后的多个图像输出至显示组件,由显示组件显示替换目标图像后的多个图像。
241.可以参阅图10和图11,图10为本技术实施例提供的一种替换震颤图像的流程示意图,图11为本技术实施例提供的一种替换震颤图像的另一个流程示意图。图10所示的视频处理方法包括以下的步骤1001至步骤1006。
242.步骤1001,获取多个图像,并判断多个图像中的图像t是否存在局部灯光区域。
243.在终端的图像采集装置采集到图像之后,震颤判断单元可以获取到多个图像,该多个图像可以是经过eis单元执行防抖处理的。震颤判断单元逐一判断该多个图像中的图像是否为震颤图像。
244.示例性地,震颤判断单元先判断多个图像中的图像t是否存在局部灯光区域。以图像的颜色空间的格式为yuv格式为例,终端可以先确定图像t中位于灯光区域的目标像素的个数,然后终端确定目标像素与图像t的像素总个数的比值。如果目标像素与图像的像素总个数的比值在2%-20%之内,则确定该图像存在局部灯光区域。在终端的具体实现过程中,终端可以设定变量total和变量light的初始值均为0。对于图像t中的每一个像素p,变量total的值加1;如果像素p位于灯光区域内,则light也加1。在图像t中的所有像素都被遍历后,计算r=light/total。如果r在2%-20%之内,则认为图像t存在局部灯光区域;如果r不
在2%-20%之内,则认为图像t不存在局部灯光区域,即图像t不是震颤图像。
245.步骤1002,判断图像t的抖动值是否大于或等于第二预设阈值。
246.在确定图像t中存在局部灯光区域之后,震颤判断单元进一步判断图像t的抖动值是否大于或等于第二预设阈值,以确定图像t是否为震颤图像。其中,第二预设阈值例如可以为360。
247.如果图像t的抖动值大于或等于第二预设阈值,则可以确定图像t为震颤图像;如果图像t的抖动值小于第二预设阈值,则可以确定图像t不是震颤图像。
248.本实施例中,震颤判断单元可以获取终端中的陀螺仪所采集的陀螺仪数据,并基于陀螺仪数据来确定图像t的抖动值。
249.首先,根据图像t的采集时间戳信息获取对应的陀螺仪数据。如果陀螺仪数据的采样率f小于事先设定的阈值fs,则基于上采样算法对陀螺仪数据执行上采样,以使得陀螺仪数据能够大于或等于阈值fs。其中,阈值fs例如可以为1000hz,在实际应用中也可以根据需要调整该阈值fs。用于对陀螺仪数据执行上采样的上采样算法可以采用现有的任意一种采样算法,例如三次卷积插值(cubic convolution interpolation)算法。简单来说,如果f《fs,则选取一个新的采样率f’≥fs,f’例如为f的整数倍;然后,执行上采样算法使采样率f上升至f’。
250.其中,陀螺仪数据采集的是三个维度上的角速度,以下分别以x、y、z来表示陀螺仪在不同维度上所采集到的角速度。具体地,陀螺仪数据的一个示例可以参阅表1。
251.表1
252.编号时间xyz0(start)t0
‑‑‑
1t1x1y1z12t2x2y2z23t3x3y3z3
……………
34(end)t4x34y34z34
253.在表1中,start是指当前图像开始曝光的时间,end是指当前图像结束曝光的时间。
254.由于x1、y1、z1等数据表示的是角速度,因此可以近似计算时间t[i]到t[i 1]的角位移是s[i]=((t[i 1]-t[i])*x[i],(t[i 1]-t[i])*y[i],(t[i 1]-t[i])*z[i])。这个公式包括t33到t34的角位移。特殊地,t0到t1的角位移,可以用编号为1的陀螺仪数据近似得到,即s[0]=((t[1]

t[0])*x[1],(t[1]-t[0])*y[1],(t[1]-t[0])*z[1])。
[0255]
基于角位移s[i],能够累加算出t1、t2、

、t34等时刻的陀螺仪位置。具体地,t0位置l[0]为(0,0,0);因此,基于上述的陀螺仪数据,可以得到陀螺仪分别在各个维度上的35个位置数据。
[0256]
对于x轴上的35个位置数据,取35个位置数据中值最大的位置数据和值最小的位置数据,相减后再取平方,得到x轴结果。类似地,基于y轴上的35个位置数据以及z轴上的35个位置数据求取得到y轴结果和z轴结果。最后,求取x轴结果、y轴结果和z轴结果之间的和,
并求取得到的和的方根,得到图像的抖动值。
[0257]
此外,除了通过求取35个位置数据中值最大的位置数据和值最小的位置数据之间的差值来获得x轴结果之外,也可以是通过求取35个位置数据之间的方差来获得x轴结果。类似地,通过求取y轴上的35个位置数据之间的方差以及z轴上的35个位置数据之间的方差来得到y轴结果和z轴结果。最后,求取x轴结果、y轴结果和z轴结果之间的和,并求取得到的和的方根,得到图像的抖动值。
[0258]
可选的,在一些情况下,当终端发生低频抖动时,终端拍摄得到的图像会发生模糊,但图像中可能不会出现灯光区域不正常外扩的现象;当终端发生高频且大幅度的抖动时,终端所拍摄得到的图像则会出现灯光区域不正常外扩的现象。基于此,在基于陀螺仪数据求取图像的抖动值的过程中,还可以求取陀螺仪数据对应的频谱信息,并基于频谱信息确定图像的抖动值。
[0259]
示例性地,对于表1中的数据,分别在x轴、y轴以及z轴的维度上做一次傅里叶变换,得到频谱图。例如,可以基于以下的公式1来求取x轴上的傅里叶变换结果。
[0260][0261]
其中,xk为傅里叶变换结果,k={0,1,2,3

,34},x[n]表示x轴上的陀螺仪数据,n为35。
[0262]
假设w=|x0|/sigma(|xi|),w表示x轴陀螺仪数据中最低频信息的占比,sigma()表示求和操作。在得到上述的x轴结果之后,将x轴结果与(1-w)相乘,得到更新后的x轴结果。以此类推,以类似的方式求取得到更新后的y轴和更新后的z轴结果。最后,求取更新后的x轴结果、y轴结果和z轴结果之间的和,并求取得到的和的方根,得到图像的抖动值。
[0263]
步骤1003,获取图像t-k至图像t k的抖动值。
[0264]
在确定图像t为震颤图像的情况下,震颤判断单元则将图像t送入至解震颤单元。此外,震颤判断单元获取图像t-k至图像t k的抖动值,并将图像t-k至图像t k的抖动值输入至解震颤单元。其中,图像t-k至图像t的抖动值可以是在获取图像t的抖动值之前则获取到的。
[0265]
本实施例中,震颤判断单元获取图像t-k至图像t k的抖动值的方式与获取图像t的抖动值的方式类似,在此不再赘述。
[0266]
步骤1004,根据图像t-k至图像t k的抖动值,确定主参考图像m和次参考图像m。
[0267]
在获得图像t-k至图像t k的抖动值之后,终端在图像t-k至图像t-1以及图像t 1至图像t k中确定主参考图像m和次参考图像m。此外,假设图像t-k至图像t-1以及图像t 1至图像t k中的任意一个图像p的稳定值为h,图像p的抖动值为pd。那么,稳定值h具体为:h=1/(pd 100*|p-t|)。可以看出,图像p的抖动值越大,则该图像p的稳定值越小;图像p与图像t相隔得越远,则该图像p的稳定值越小。
[0268]
这样,终端可以分别计算图像t-k至图像t-1以及图像t 1至图像t k的稳定值h,并且在图像t-k至图像t-1以及图像t 1至图像t k中选取稳定值h最大的一个图像作为主参考图像m。如果主参考图像m是图像t-k至图像t-1中的一个图像,则终端继续在图像t 1至图像t k中选取稳定值h最大的一个图像作为次参考图像m。如果主参考图像m是图像t 1至图像t
k中的一个图像,则终端继续在图像t-k至图像t-1中选取稳定值h最大的一个图像作为次参考图像m。
[0269]
此外,解震颤单元还可以定义一个算法帮助值q,算法帮助值q与主参考图像m的稳定值h1以及次参考图像m的稳定值h2正相关。该算法帮助值q表示基于主参考图像m和次参考图像m对于生成稳定显示的目标图像的帮助值。例如,可以定义q=(2*h1 h2)/3。在此基础上,可以事先设定一个帮助值阈值,若算法帮助值q低于该帮助值阈值,则可以判断基于主参考图像和次参考图像也较难使图像t变得更为稳定。例如,在图像t附近的主参考图像和次参考图像也都是震颤图像的情况下,主参考图像和次参考图像也无法使得图像t变得更为稳定。因此,在算法帮助值q低于帮助值阈值的情况下,解震颤单元可以结束对图像t的处理,即不再生成用于替换图像t的目标图像。
[0270]
步骤1005,根据主参考图像m、次参考图像m和图像t生成目标图像。
[0271]
本实施例中,通过将主参考图像m、次参考图像m划分为多个图像块,来生成用于替换图像t的目标图像。由于在主参考图像m、次参考图像m分辨率较高的情况下,对主参考图像m、次参考图像m进行图像块的划分,并求取图像块的运动矢量需要耗费过高的算力,因此本实施例中可以采用金字塔下采样方法来求取主参考图像m、次参考图像m中的图像块的运动矢量。
[0272]
具体地,首先对主参考图像m和次参考图像m执行金字塔下采样,得到主参考图像m和次参考图像m对应的多层下采样图像。例如,在主参考图像m的分辨率为1920*1080的情况下,可以主参考图像m执行4次下采样,得到主参考图像m对应的四层下采样图像。该四层下采样图像的分辨率例如可以为:480*270、120*68、60*34以及30*17。对于主参考图像m和次参考图像m,从分辨率最小的图层开始,直至原图所在层,获取每一层的主参考图像mx的图像块的运动矢量。其中,主参考图像mx表示主参考图像m在任意一层所对应的图像。
[0273]
首先,对于当前层的主参考图像mx,按照特定的大小(例如8*8个像素)对该主参考图像mx进行划分,得到主参考图像mx中的多个图像块。
[0274]
如果主参考图像mx为分辨率最小的一层的图像,则对于主参考图像mx中的图像块q,可以确定图像块q的候选运动矢量为预设候选运动矢量。例如,预设运动矢量可以包括(0,-1)、(-1,0)、(-1,-1)、(-1,1)、(1,-1)、(0,0)、(0,1)、(1,0)以及(1,1)。如果主参考图像mx不是分辨率最小的一层的图像,则对于主参考图像mx中的图像块q,可以确定图像块q的候选运动矢量包括:图像块q在上一层图像中对应的图像块的运动矢量、与图像块q相邻的图像块的运动矢量以及随机生成的运动矢量。
[0275]
对于图像块q的所有候选运动矢量,计算该图像块q根据候选运动矢量映射到次参考图像mx和图像t中的位置。具体地,图像块q根据候选运动矢量vec映射到图像t上时,需要将候选运动矢量根据m、m、t的取值按比例缩放为vec’=((t-m)/(m-m))*vec)。在得到次参考图像mx中与图像块q对应的图像块q1以及图像t中与图像块q对应的图像块q2后,分别计算图像块q与图像块q1以及图像块q2的误差值。示例性地,可以基于多种算法来计算图像块之间的误差值,例如sad算法。最终,假设图像块q与图像块q1之间的误差值为sad1,图像块q与图像块q2的误差值为sad2,对两个误差值加权求和得到候选运动矢量的误差值d。其中,两个误差值的权重可任意设定,例如可令d=sad1 αsad2,α=1/2。
[0276]
在求取得到图像块q的所有候选运动矢量对应的误差值d后,选取误差值d最小的
候选运动矢量作为图像块q在当前金字塔层的运动矢量。最终,通过重复上述的过程,可以计算得到主参考图像mx中的所有图像块的运动矢量。
[0277]
此外,在求取得到主参考图像m的原图所在层的运动矢量之后,可以对主参考图像m的运动矢量进行平滑修正,以消除个别明显不合理的运动矢量。例如,对于主参考图像中的某一个图像块,该图像块的运动矢量与该图像块相邻的其他图像块的运动矢量差异过大时,则消除该图像块的运动矢量。
[0278]
在得到主参考图像m中的每个图像块的运动矢量之后,假设待生成的目标图像为图像t’,可以基于主参考图像m中的每个图像块的运动矢量,根据换算比例转换为由图像t’指向主参考图像m的运动矢量vec’=(-(t-m)/(m-m))*vec。
[0279]
这样一来,如果图像t’中存在图像块不具有指向主参考图像m的运动矢量,则说明该图像块属于空洞区域,从而可以对该图像块进行空洞区域标记。
[0280]
在标记了图像t’中的空洞区域之后,可以根据主参考图像m中的图像块对图像t’中非空洞区域的图像块进行填充,得到仍包括有空洞区域的图像t’。
[0281]
值得注意的是,在根据主参考图像m中的图像块对图像t’中非空洞区域的图像块进行填充的过程中,如果主参考图像m中存在多个不同的图像块指向图像t’中的同一个图像块,则终端根据这多个不同的图像块的运动矢量的误差值d,在这多个不同的图像块中选出误差值d最小的图像块,并将该误差值d最小的图像块填充至图像t’。
[0282]
此外,解震颤单元可以求取次参考图像m中的每个图像块对应的运动矢量,并根据次参考图像m中的图像块对图像t’中的空洞区域进行填充,得到最终的目标图像t’。
[0283]
步骤1006,将图像t替换为目标图像。
[0284]
最后,在基于主参考图像m、次参考图像m和图像t得到目标图像之后,则将图像t替换为目标图像。
[0285]
类似地,对于终端采集得到的多个图像,均可以基于上述的步骤1001-步骤1006,确定多个图像中的震颤图像,并将多个图像中的震颤图像替换为所生成的稳定图像,最终输出替换了稳定图像后的多个图像。
[0286]
以上实施例介绍了终端在视频拍摄过程中,对视频进行处理的过程。以下将介绍终端在处于夜景拍摄模式时,对视频进行处理的过程。可以参阅图12,图12为本实施例所提供的另一种视频处理方法的流程示意图,该视频处理方法包括以下的流程。
[0287]
步骤1201,当终端处于夜景拍摄模式时,检测所述终端拍摄的图像中是否存在灯光区域。
[0288]
其中,终端可以通过检测拍摄的图像中的像素的亮度值,来判断图像中是否存在灯光区域。具体地,灯光区域内的像素的亮度值均大于特定阈值,且灯光区域内的像素的亮度值与灯光区域的相邻区域的像素的亮度值之间的差异值大于预设设定的差值。其中,上述的特定阈值的取值可以为180-230,例如特定阈值具体为224;预先设定的差值的取值可以为25-50,例如预设设定的差值为32。例如,当终端检测到图像中存在有某一个区域内的像素的亮度值均大于224,且该区域内的像素的亮度值与相邻区域的像素的亮度值之间的差异值大于32,则终端可以确定该区域为灯光区域。其中,灯光区域的相邻区域可以是由与灯光区域内的像素相邻的像素所构成,即灯光区域的相邻区域内的像素与灯光区域内的像素相邻。
[0289]
此外,在终端确定图像中存在灯光区域之后,终端还可以根据位于灯光区域内的像素的坐标,确定图像中的灯光区域的位置。其中,图像中的灯光区域的位置可以是以灯光区域的边界的像素的坐标来确定,即由灯光区域的边界的像素所包围的区域即为灯光区域。终端可以通过记录灯光区域的边界的像素的坐标或者是灯光区域内的所有像素的坐标,来确定灯光区域的位置。
[0290]
步骤1202,当所述终端拍摄的图像中存在灯光区域时,终端在采集的图像序列中确定第一图像,所述第一图像中的灯光区域的邻近区域出现过曝。
[0291]
所述第一图像中的灯光区域的邻近区域出现过曝是指该邻近区域中的像素的亮度值过高。第一图像中的灯光区域的邻近区域出现过曝的原因是终端在采集第一图像的时候发生了抖动位移,使得终端中对应于邻近区域的感光元件同样感应到了灯光区域内的光线,最终导致第一图像中的灯光区域的邻近区域出现过曝。
[0292]
步骤1203,终端根据所述第一图像在所述图像序列中确定第二图像和第三图像。
[0293]
所述第一图像的采集时刻位于所述第二图像的采集时刻与所述第三图像的采集时刻之间,所述第二图像以及所述第三图像中的灯光区域的邻近区域的过曝程度小于所述第一图像中的灯光区域邻近区域的过曝程度。其中,第二图像以及第三图像中的灯光区域与第一图像中的灯光区域具有对应关系,即第二图像以及第三图像中的灯光区域与第一图像中的灯光区域表示的是相同的画面内容。例如,第二图像和第三图像中的灯光区域表示的是某一个路灯的发光区域;第一图像中的灯光区域也是表示同一个路灯的发光区域。
[0294]
具体地,第二图像以及所述第三图像中的灯光区域的邻近区域的过曝程度小于所述第一图像中的灯光区域邻近区域的过曝程度可以是指:第二图像以及所述第三图像中的灯光区域的邻近区域中发生过曝的区域的面积小于第一图像中的灯光区域的邻近区域中发生过曝的区域的面积;或者,第二图像以及所述第三图像中的灯光区域的邻近区域中发生过曝的像素的亮度值小于第一图像中的灯光区域的邻近区域中发生过曝的像素的亮度值。可选的,第二图像以及所述第三图像中的灯光区域的邻近区域中发生过曝的区域的面积可以为0,即第二图像和第三图像中的灯光区域的邻近区域并没有发生过曝。总的来说,相对于第一图像,第二图像和第三图像是终端在抖动位移较小或者是没有发生抖动位移的情况下采集的,因此第二图像以及所述第三图像中的灯光区域的邻近区域的过曝程度小于所述第一图像中的灯光区域邻近区域的过曝程度。
[0295]
步骤1204,终端根据所述第一图像、所述第二图像和所述第三图像生成目标图像,所述目标图像用于替换所述第一图像,所述目标图像的灯光区域的邻近区域的过曝程度小于所述第一图像的灯光区域的邻近区域的过曝程度。其中,第二图像和第三图像用于作为参考图像来生成替换第一图像的目标图像,以使得生成的目标图像的灯光区域的邻近区域的过曝程度小于所述第一图像的灯光区域的邻近区域的过曝程度。
[0296]
步骤1205,终端基于所述目标图像,生成视频。具体地,终端可以是将采集得到的图像序列中的第一图像替换为目标图像,从而生成视频。
[0297]
本实施例中,通过在夜景拍摄模式下定位灯光区域的邻近区域出现过曝的震颤图像,将震颤图像前后的图像作为参考图像,并基于震颤图像以及参考图像来生成用于替换震颤图像的目标图像。通过本方案,能够将视频中的震颤图像替换为正常显示的图像,从而解决由镜头抖动所引起的视频画面中的光亮部分灯光区域不正常外扩的问题。
[0298]
可选的,本实施例所提供的方法还包括:当环境光的光照度小于第一预设阈值时,所述终端进入夜景拍摄模式。示例性地,第一预设阈值的取值可以为30-60,例如第一预设阈值为50。终端在拍摄的过程中,可以检测环境光的光照度,环境光的光照度小于50时,终端则进入夜景拍摄模式。或,当所述终端获取到用于触发进入夜景拍摄模式的指令时,所述终端进入夜景拍摄模式。例如,在用户操作终端进行拍摄的过程中,用户可以通过触控终端屏幕的方式,向终端下发进入夜景拍摄模式的指令;这样一来,当终端获取到用于触发进入夜景拍摄模式的指令时,终端则进入夜景拍摄模式。
[0299]
此外,终端还可以是根据拍摄过程中的预览图像的画面内容和/或预览图像各区域的环境亮度值,来确定当前拍摄场景是否为夜景场景,从而确定是否进入夜景拍摄模式。例如,当预览图像的画面内容包括夜晚天空或者夜景灯源等内容时,终端可以确定当前拍摄场景为夜景场景,从而进入夜景拍摄模式;或者,当预览图像的各区域中的环境亮度值符合夜景环境下图像的亮度分布特性时,终端可以确定当前拍摄场景为夜景场景,从而进入夜景拍摄模式。
[0300]
可选的,所述终端采集所述第一图像时的抖动位移大于第二预设阈值。其中,第二预设阈值可以为300-400,例如第二预设阈值具体为360。所述终端采集所述第一图像时的抖动位移可以称为第一图像的抖动值。所述终端可以是通过在图像序列中确定图像的抖动值是否大于或等于第二预设阈值,来确定图像序列中的第一图像。
[0301]
在一些可能的实现方式中,终端可以获取记录了终端在采集第一图像时的运动情况的传感器数据,并且基于传感器数据计算得到第一图像的抖动值。终端也可以是计算图像的对比度值,并根据图像的对比度值来确定图像的抖动值,即图像的对比度值越小,则图像的抖动值越大。此外,终端还可以基于预先训练好的神经网络来确定图像的抖动值。具体地,终端确定第一图像的抖动值的方式可以参考上述的实施例,在此不再赘述。
[0302]
在一种可能的实现方式中,终端还可以确定所述多个图像是否存在局部灯光区域。只有在某一个图像存在局部灯光区域且该图像的抖动值大于或等于第二预设阈值时,终端将该图像确定为震颤图像。其中,第一图像中存在局部灯光区域,所述第一图像中目标像素的个数与第一图像的像素总个数的比值在预设范围内,所述目标像素为所述第一图像中的灯光区域内的像素。示例性地,终端可以确定所述多个图像中的每个图像中目标像素的个数,所述目标像素是指灯光区域内的像素,其中灯光区域的定义可以参考上述的描述。然后,终端获取每个图像中目标像素的个数与图像的像素总个数的比值,并判断该比值是否在预设范围内。如果图像中目标像素的个数与图像的像素总个数的比值在预设范围内,则终端确定该图像中存在局部灯光区域;如果图像中目标像素的个数与图像的像素总个数的比值不在预设范围内,则终端确定该图像中不存在局部灯光区域。
[0303]
此外,终端基于第一图像在图像序列中确定第二图像和第三图像的方式也与上述的实施例类似,在此不再赘述。
[0304]
在图1a至图12所对应的实施例的基础上,为了更好的实施本技术实施例的上述方案,下面还提供用于实施上述方案的相关设备。
[0305]
具体可以参阅图13,图13为本技术实施例提供的一种终端1300的结构示意图,该终端1300包括:
[0306]
检测单元1301,用于当终端处于夜景拍摄模式时,检测所述终端拍摄的图像中是
否存在灯光区域;
[0307]
第一确定单元1302,用于当所述终端拍摄的图像中存在灯光区域时,在所述终端采集的图像序列中确定第一图像,所述第一图像中的灯光区域的邻近区域出现过曝;
[0308]
第二确定单元1303,用于根据所述第一图像在所述图像序列中确定第二图像和第三图像,所述第一图像的采集时刻位于所述第二图像的采集时刻与所述第三图像的采集时刻之间,所述第二图像以及所述第三图像中的灯光区域的邻近区域的过曝程度小于所述第一图像中的灯光区域邻近区域的过曝程度;
[0309]
图像生成单元1304,还用于根据所述第一图像、所述第二图像和所述第三图像生成目标图像,所述目标图像用于替换所述第一图像,所述目标图像的灯光区域的邻近区域的过曝程度小于所述第一图像的灯光区域的邻近区域的过曝程度;
[0310]
视频生成单元1305,还用于基于所述目标图像,生成视频。
[0311]
在一种可能的实现方式中,还包括:控制单元1306;
[0312]
所述控制单元1306用于:当环境光的光照度小于第一预设阈值时,控制所述终端进入夜景拍摄模式;或,当获取到用于触发进入夜景拍摄模式的指令时,控制所述终端进入夜景拍摄模式。
[0313]
在一种可能的实现方式中,所述终端采集所述第一图像时的抖动位移大于第二预设阈值。
[0314]
在一种可能的实现方式中,所述第一图像中目标像素的个数与第一图像的像素总个数的比值在预设范围内,所述目标像素为所述第一图像中的灯光区域内的像素。
[0315]
在一种可能的实现方式中,所述第二确定单元1303用于:分别确定所述多个图像中每个图像的稳定值,所述稳定值为所述图像的抖动值与所述图像和所述第一图像之间的采集时间差之和的倒数;确定所述多个图像中稳定值最大的图像为所述第二图像;根据所述第二图像的采集时刻,在所述多个图像中确定所述第三图像。
[0316]
在一种可能的实现方式中,所述第二确定单元1303用于:根据所述第二图像的采集时刻,在所述多个图像中确定一个或多个图像,所述第一图像的采集时刻位于所述第二图像的采集时刻与所述一个或多个图像的采集时刻之间;在所述一个或多个图像中确定稳定值最大的图像为所述第三图像。
[0317]
在一种可能的实现方式中,所述图像生成单元1304用于:将所述第二图像划分为多个图像块;根据所述第一图像和所述第三图像确定所述多个图像块分别对应的运动矢量;根据所述多个图像块分别对应的运动矢量以及所述多个图像块,生成所述目标图像。
[0318]
在一种可能的实现方式中,所述图像生成单元1304用于:获取第一图像块对应的多个候选运动矢量,所述多个图像块包括所述第一图像块;根据所述第一图像块的位置,确定所述多个候选运动矢量中每个候选运动矢量对应的第二图像块和第三图像块,所述第一图像包括所述第二图像块,所述第三图像包括所述第三图像块;根据所述第一图像块、所述第二图像块和所述第三图像块,确定所述每个候选运动矢量对应的目标误差值,所述目标误差值是基于所述第一图像块与所述第二图像块之间的误差值以及所述第一图像块与所述第三图像块之间的误差值得到的;根据所述每个候选运动矢量对应的目标误差值,在所述多个候选运动矢量中确定目标误差值最小的运动矢量为所述第一图像块对应的运动矢量。
[0319]
在一种可能的实现方式中,所述多个候选运动矢量,包括:一个或多个预设运动矢量、随机生成的一个或多个运动矢量和/或与所述第一图像块相邻的图像块对应的运动矢量。
[0320]
在一种可能的实现方式中,所述图像生成单元1304用于:若所述目标图像中存在无法基于所述多个图像块生成图像的区域,则对所述第三图像进行划分,得到所述第三图像的多个图像块;根据所述第一图像和所述第二图像确定所述第三图像的多个图像块分别对应的运动矢量;根据所述第三图像的多个图像块对应的运动矢量以及所述第三图像的多个图像块,更新所述目标图像,得到新的目标图像,所述新的目标图像用于替换所述第一图像。
[0321]
本技术实施例提供的视频处理方法具体可以由终端中的芯片来执行,该芯片包括:处理单元和通信单元,处理单元例如可以是处理器,通信单元例如可以是输入/输出接口、管脚或电路等。该处理单元可执行存储单元存储的计算机执行指令,以使服务器内的芯片执行上述图1a至图11所示实施例描述的视频处理方法。可选的,存储单元为芯片内的存储单元,如寄存器、缓存等,存储单元还可以是无线接入设备端内的位于芯片外部的存储单元,如只读存储器(read-only memory,rom)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,ram)等。
[0322]
参照图14,本技术还提供了一种计算机程序产品,在一些实施例中,上述图3所公开的方法可以实施为以机器可读格式被编码在计算机可读存储介质上的或者被编码在其它非瞬时性介质或者制品上的计算机程序指令。
[0323]
图14示意性地示出根据这里展示的至少一些实施例而布置的示例计算机程序产品的概念性局部视图,示例计算机程序产品包括用于在计算设备上执行计算机进程的计算机程序。
[0324]
在一个实施例中,计算机程序产品1400是使用信号承载介质1401来提供的。信号承载介质1401可以包括一个或多个程序指令1402,其当被一个或多个处理器运行时可以提供以上针对图2描述的功能或者部分功能。因此,例如,参考图3中所示的实施例,步骤301-306的一个或多个特征可以由与信号承载介质1401相关联的一个或多个指令来承担。此外,图14中的程序指令1402也描述示例指令。
[0325]
在一些示例中,信号承载介质1401可以包含计算机可读介质1403,诸如但不限于,硬盘驱动器、紧密盘(cd)、数字视频光盘(dvd)、数字磁带、存储器、rom或ram等等。
[0326]
在一些实施方式中,信号承载介质1401可以包含计算机可记录介质1404,诸如但不限于,存储器、读/写(r/w)cd、r/w dvd、等等。在一些实施方式中,信号承载介质1401可以包含通信介质1405,诸如但不限于,数字和/或模拟通信介质(例如,光纤电缆、波导、有线通信链路、无线通信链路、等等)。因此,例如,信号承载介质1401可以由无线形式的通信介质1405(例如,遵守ieee 802.14标准或者其它传输协议的无线通信介质)来传达。
[0327]
一个或多个程序指令1402可以是,例如,计算机可执行指令或者逻辑实施指令。在一些示例中,计算设备的计算设备可以被配置为,响应于通过计算机可读介质1403、计算机可记录介质1404、和/或通信介质1405中的一个或多个传达到计算设备的程序指令1402,提供各种操作、功能、或者动作。
[0328]
应该理解,这里描述的布置仅仅是用于示例的目的。因而,本领域技术人员将理
解,其它布置和其它元素(例如,机器、接口、功能、顺序、和功能组等等)能够被取而代之地使用,并且一些元素可以根据所期望的结果而一并省略。另外,所描述的元素中的许多是可以被实现为离散的或者分布式的组件的、或者以任何适当的组合和位置来结合其它组件实施的功能实体。
[0329]
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0330]
在本技术所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0331]
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0332]
另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0333]
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器、随机存取存储器、磁碟或者光盘等各种可以存储程序代码的介质。
再多了解一些

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

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

相关文献