一种视频防抖控制方法以及终端与流程

文档序号:11139171阅读:344来源:国知局
一种视频防抖控制方法以及终端与制造工艺

本发明涉及通信领域,尤其涉及一种视频防抖控制方法以及终端。



背景技术:

随着手机等终端的发展,视频拍摄越来越多的被应用到人们的日常生活,但是人们在拍摄视频时往往会由于抖动,以致拍摄出来的视频效果不佳。

视频防抖技术目前主要有光学防抖,电子防抖以及软件防抖。在现有技术中,软件防抖通过FAST(Features from accelerated segment test)特征点检测采样算法,依顺序扫描一帧图像,检测图像中的所有角点,将图像中的所有角点作为采样点,并通过检测追踪当前帧与之后帧的采样点的运动来矫正视频帧的抖动。

由于现有技术的软件防抖是将每一帧图像的角点作为采样点,在后续执行步骤中需要检测追踪每一采样点的运动,极大增加了计算量,从而影响了软件防抖的处理效率。



技术实现要素:

本发明实施例提供了一种视频防抖控制方法以及终端,能够有效提高视频防抖的处理效率。

本发明实施例第一方面提供一种视频防抖控制方法,包括:

终端获取视频帧;

终端检测视频帧并确定第一角点;

终端根据第一角点确定满足预置范围的第二角点,根据第二角点确定满足预置范围的第三角点,直至确定各角点以使得各角点均匀稀疏地分布,各角点不相同;

终端将视频帧的各角点作为特征点采样以确定各视频帧对应的特征点集合;

终端根据特征点集合确定相邻视频帧中相互匹配的目标特征点;

终端根据目标特征点计算得到相邻视频帧中目标特征点的运动数据;

终端根据运动数据计算平滑运动数据,平滑运动数据用于使得目标特征点在相邻视频帧中平滑运动;

终端根据平滑运动数据矫正目标特征点在相邻视频帧中的位置。

一种可能的实现方式中,终端检测视频帧确定第一角点包括:

终端逐行扫描视频帧;

终端对视频帧进行角点检测;

终端将角点检测检测到的第一个角点确定为第一角点。

另一种可能的实现方式中,其特征在于,终端根据第一角点确定满足预置范围的第二角点,根据第二角点确定满足预置范围的第三角点,直至确定各角点以使得各角点均匀稀疏地分布的步骤具体包括:

终端将第一角点确定为目标角点;

1)终端根据目标角点确定满足预置范围的第二角点;

2)终端根据第二角点确定满足预置范围的第三角点;

之后还包括:

3)终端将第三角点确定为目标角点,并循环执行步骤1)至3),直至确定各角点以使得所述各角点均匀稀疏地分布,预置范围为预设置的角点间的距离。

另一种可能的实现方式中,终端根据第一角点确定满足预置范围的第二角点,根据第二角点确定满足预置范围的第三角点,直至确定各角点以使得各角点均匀稀疏地分布还包括:

若终端无法根据第一角点确定满足预置范围的第二角点,则终端在预置范围内确定第二角点虚拟点作为第二角点;

终端根据第二角点虚拟点确定满足预置范围的第三角点。

另一种可能的实现方式中,终端根据特征点集合确定相邻视频帧中相互匹配的目标特征点包括:

终端通过金字塔式的光流迭代特征点匹配算法确定相邻视频帧中相互匹配的目标特征点。

另一种可能的实现方式中,终端根据目标特征点计算得到相邻视频帧中目标特征点的运动数据包括:

终端采用全局运动估计算法计算得到相邻视频帧中目标特征点的运动数据;

全局运动估计算法包含采用不同的采样标准和收敛判断标准的随机抽样一致算法。

另一种可能的实现方式中,终端根据平滑运动数据矫正目标特征点在相邻视频帧中的位置包括:

终端通过图形处理器GPU处理平滑运动数据以矫正目标特征点在相邻视频帧中的位置。

另一种可能的实现方式中,视频帧包括:终端存储的视频帧或终端通过摄像装置实时拍摄的视频帧。

本发明实施例第二方面提供一种终端,包括:

获取单元,用于获取视频帧;

检测单元,用于检测获取单元获取的视频帧并确定第一角点;

确定单元,用于根据检测单元检测到的第一角点确定满足预置范围的第二角点,根据第二角点确定满足预置范围的第三角点,直至确定各角点以使得各角点均匀稀疏地分布,各角点不相同;

确定单元还用于,将视频帧的各角点作为特征点采样以确定各视频帧对应的特征点集合;

确定单元还用于,根据特征点集合确定相邻视频帧中相互匹配的目标特征点;

计算单元,用于根据目标特征点计算得到相邻视频帧中目标特征点的运动数据;

计算单元还用于,根据运动数据计算平滑运动数据,平滑运动数据用于使得目标特征点在视频帧中平滑运动;

矫正单元,用于根据平滑运动数据矫正目标特征点在相邻视频帧中的位置。

一种可能的实现方式中,检测单元具体用于:

逐行扫描视频帧;

对视频帧进行角点检测;

将角点检测检测到的第一个角点确定为第一角点。

另一种可能的实现方式中,确定单元具体用于:

将第一角点确定为目标角点;

确定单元具体包括:

确定单元1)目标角点确定满足预置范围的第二角点;

确定单元2)根据第二角点确定满足预置范围的第三角点;

之后还包括:

确定单元3)将第三角点确定为目标角点,并循环触发确定单元1)至确定单元3),直至确定各角点以使得所述各角点均匀稀疏地分布,预置范围为预设置的角点间的距离。

另一种可能的实现方式中,确定单元具体还用于:

若无法根据第一角点确定满足预置范围的第二角点,则在预置范围内确定第二角点虚拟点作为第二角点;

根据第六确定单元确定的第二角点虚拟点确定满足预置范围的第三角点。

从以上技术方案可以看出,本发明实施例具有以下优点:

本发明实施例中,当终端获取视频帧,可以检测该视频帧确定第一角点,然后可以根据第一角点确定满足预置范围的第二角点,再根据第二角点确定满足预置范围的第三角点,直至确定各角点以使得各角点均匀稀疏地分布,终端可以将该视频帧的各角点作为特征点采样以确定各视频帧对应的特征点集合,终端可以根据该特征点集合确定相邻视频帧中相互匹配的目标特征点,并可以根据目标特征点计算得到该相邻视频帧中目标特征点的运动数据,终端根据该运动数据计算平滑运动数据,该平滑运动数据用于使得目标特征点在相邻视频帧中平滑运动,该终端可以根据平滑运动数据矫正目标特征点在相邻视频帧中的位置。由此可知,终端通过根据第一角点确定满足预置范围的第二角点的方式确定均匀稀疏分布的各角点,并以各角点作为采样点,由此实现减少采样点,减少计算量,从而提高了视频防抖的处理效率。

附图说明

图1为本发明实施例中视频防抖控制方法的一个示意图;

图2为本发明是实施例中确定一个角点的一个示意图;

图3为本发明实施例中视频防抖控制方法的具体应用场景的一个示意图;

图4为本发明实施例中终端的一个示意图。

具体实施方式

本发明实施例提供了一种视频防抖控制方法以及终端,用于提高视频防抖的处理效率。

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

参照图1所示,本发明实例中视频防抖控制方法的一个实施例包括:

101、终端获取视频帧。

用户在使用终端拍照或摄影时,通常会开启前置摄像头或者后置摄像头,通过摄像头来获取当前所摄影的场景画面,终端采集到的当前场景画面则是由多个视频帧所组成的视频流。可选的,所述视频帧还可以是所述终端内所存储的视频帧或其他设备发送给所述终端的视频帧。需要说明的是,本发明实施例中所述的终端可以为移动终端,如智能手机、平板电脑、智能手表等具有摄影功能的智能设备,此处不做限定。

102、所述终端检测所述视频帧并确定第一角点。

每个视频帧都可以看作是一副图像,而角点是图像中的重要信息点,图像中的多个角点能够体现出图像的内同特征。在本发明实例中,可以通过角点(corner)检测方法,从视频帧,即图像中提取出特征点。如FAST角点检测方法使用一个包含N(例如16)个像素的圆来识别一个点是不是角点。参照图2所示,图2为确定像素点p是否为角点的一个示意图,其中1至16为以p像素点为圆心的周围16个像素点。如果一个候选像素点p满足条件:

一个N点的连续像素集S,x的亮度(Ix)>Ip+阀值t,或者,一个N点的连续像素集S,Ix<Ip–t。则这个点可以选为角点,N一般选择12或者16。

可选的,终端检测视频帧并确定第一角点具体可以为:

所述终端逐行扫描所述视频帧,所述终端对所述视频帧进行角点检测,所述终端将所述角点检测检测到的第一个角点确定为所述第一角点。

103、所述终端根据所述第一角点确定满足预置范围的第二角点,根据所述第二角点确定满足所述预置范围的第三角点,直至确定各角点以使得所述各角点均匀稀疏地分布,所述各角点不相同。

现有技术中的角点检测方法中,是将视频帧中的每个像素都要要进行角点判断计算,并将所有的角点都检测出来,这样,需要花费大量的计算时间与系统资源。为了提高终端的计算效率,本发明实例中,终端只需确定出一个视频帧中均匀系数分布的一些角点即可,无需将视频帧中所有的角点均检测出来。这样,对视频帧进行均匀稀疏的采样,以保证后面能够估算出准确的全局运动。与现有技术相比,改善后的方法能大大减少计算量,尤其是大幅减少了后面特征点匹配的计算量,速度提升可达10倍以上;同时,由于特征点稀疏均匀的分布,迭代推算全局运动可以快速地收敛。而且,现有技术会顺序扫描一帧图像,检测图像中的所有角点,如果后续的处理更需要角点包含全局信息,密集的角点不但会增加计算量,甚至可能掩盖掉这些全局信息。本设计通过限定角点间的距离,分别限定横向和纵向的距离,所以选择性地减少角点数量,使角点能够均匀稀疏地分布,从而准确地表示全局信息。

可选的,具体步骤可以为:

所述终端将所述第一角点确定为目标角点;

1)所述终端根据所述目标角点确定满足所述预置范围的第二角点;

2)所述终端根据所述第二角点确定满足所述预置范围的第三角点;

之后还包括:

3)所述终端将所述第三角点确定为所述目标角点,并循环执行步骤1)至3),直至确定各角点以使得所述各角点均匀稀疏地分布,所述预置范围为预设置的角点间的距离。

需要说明的是,本发明实施例中并非只对一个视频帧选取了三个角点,而是以上述选择方法循环执行上述步骤,选出多个角点,比如确定出了16个角点或者36个角点等。具体的,比如,先确定第一个角点,再判断该第一个角点在视频帧中的位置,若是在左上角,则按照第一个角点的右侧或者下方进行预设距离的延伸,在预设距离出的预设范围,比如第一个角点的右侧相隔20个像素点位置,以该位置为圆心,三个像素点为半径的范围内,检测第二个角点,再按照同样的方式来检测出第三个角点,以此类推,直至检测出均匀疏散分布的多个角点。

可选的,若所述终端无法根据所述第一角点确定满足所述预置范围的第二角点,则所述终端在所述预置范围内确定第二角点虚拟点作为所述第二角点;所述终端根据所述第二角点虚拟点确定满足所述预置范围的第三角点。

104、所述终端将所述视频帧的各角点作为特征点采样以确定各视频帧对应的特征点集合。

终端在确定出均匀稀疏分布的多个角点后,则以这些角点作为特征点进行采样,以便后续各视频帧对应的特征点。

105、所述终端根据所述特征点集合确定相邻视频帧中相互匹配的目标特征点。

可选的,所述终端可以通过金字塔式的光流迭代特征点匹配算法确定相邻视频帧中相互匹配的目标特征点。金字塔式的光流迭代特征点匹配,计算出前后帧间特征点的光流运动,即在下一帧中找到对应的特征点。该算法能够精确并且稳健的计算出特征点的运动,不管是细微还是较大的运动。

106、所述终端根据所述目标特征点计算得到所述相邻视频帧中所述目标特征点的运动数据。

可选的,所述终端可以采用全局运动估计算法计算得到所述相邻视频帧中所述目标特征点的运动数据。所述全局运动估计算法包含采用不同的采样标准和收敛判断标准的随机抽样一致算法。

全局运动估计,采用场景自适应的随机抽样一致算法(RANdom SAmple Consensus,RANSAC)稳健地计算出特征点集的全局运动(仿射变换),也即是相机设备的运动,为后面去除不必要的抖动做准备。录像场景具有很强的不确定性,特征点分布特性各自不同,单一的迭代模式难以适应实际的录像场景需求。采用场景自适应的方法,通过在不同场景采用不同的采样标准和收敛判断标准,与其他RANSAC相比,能够更准确/更稳健地推算出实际的全局运动,排除场景突变,特征点稀少等干扰,防止出现失真变形现象。

具体的,比如根据当前能够找到的匹配上的数量来判断,当前在一个视频帧里找到两百个特征点,匹配上的特征点有一百五十个,这是比较好的情况,则使用更为严格的采样标准和收敛判断标准;有时候只能匹配上七八十个,越少则表示运动幅度越多,场景的纹理比较少,光线不好,则采用更宽松的采样标准和收敛标准。

107、所述终端根据所述运动数据计算平滑运动数据,所述平滑运动数据用于使得所述目标特征点在所述相邻视频帧中平滑运动。

终端在获取到特征点的运动数据后,则可以根据运动数据计算出平滑运动数据,一遍后续根据平滑运动数据在相邻视频中平滑运动以达到校正的目的。

108、所述终端根据所述平滑运动数据矫正所述目标特征点在所述相邻视频帧中的位置。

可选的,所述终端通过图形处理器GPU处理所述平滑运动数据以矫正所述目标特征点在所述相邻视频帧中的位置。

参考视频录像多帧累积下来的全局运动,为当前帧推算出期望的平滑稳定的运动。视频帧矫正是利用推算出来的平滑稳定的运动,矫正视频帧,从而生成稳定流畅的视频流。这一步是整个流程数据量和计算量最集中的部分,本设计把其分配到GPU,利用GPU强大的数据并行能力,以提高性能和降低能耗。

上述的处理过程中,是建立了一组视频帧缓存和对应的全局运动,并不断地更新这个缓存,通过防抖算法生成稳定/平滑的视频,带给用户流畅舒适的视频观看体验。在视频矫正这一步,使用了GPU通用计算技术OpenCL,利用GPU的强大数据并行处理能力极大地降低了能耗;让CPU和GPU更够发挥各自的优点,提高了资源利用效率和处理性能。同因为只需CPU和GPU,无需其他的芯片,较大地降低了设备成本。

需要说明的是,本发明实施例中所处理的对象包括市面上主流的像素格式,比如:yuv420p、NV21、NV12等。

本发明所提供的方法可用于终端进行实时使用处理,比如当前手机主流CPU/GPU 480p,720p可以实时,当前手机顶级CPU/GPU,1080p可以实时。

本发明实施例中,当终端获取视频帧,可以检测该视频帧确定第一角点,然后可以根据第一角点确定满足预置范围的第二角点,再根据第二角点确定满足预置范围的第三角点,直至确定各角点以使得各角点均匀稀疏地分布,终端可以将该视频帧的各角点作为特征点采样以确定各视频帧对应的特征点集合,终端可以根据该特征点集合确定相邻视频帧中相互匹配的目标特征点,并可以根据目标特征点计算得到该相邻视频帧中目标特征点的运动数据,终端根据该运动数据计算平滑运动数据,该平滑运动数据用于使得目标特征点在相邻视频帧中平滑运动,该终端可以根据平滑运动数据矫正目标特征点在相邻视频帧中的位置。由此可知,终端通过根据第一角点确定满足预置范围的第二角点的方式确定均匀稀疏分布的各角点,并以各角点作为采样点,由此实现减少采样点,减少计算量,从而提高了视频防抖的处理效率。

参照图3所示,图3为一个具体的应用场景实施例,具体步骤包括:

201、获取视频帧。

202、进行特征点采样,即角点采样。

203、进行特征点匹配,匹配前后帧的特征点。

204、进行全局运动估计,得到前后帧之间特征点集的仿射变换矩阵。

205、参考视频多帧累计下来的全局运动,推算稳定的/矫正的全局运动。

206、运用稳定后的全局运动生成稳定的视频帧。

上述步骤的具体执行主体可以为终端,比如手机或者平板电脑等移动终端。

参照图4所示,本发明实例中终端的一个示意图包括:

获取单元301,用于获取视频帧;

检测单元302,用于检测所述获取单元获取的所述视频帧并确定第一角点;

确定单元303,用于根据所述检测单元检测到的所述第一角点确定满足预置范围的第二角点,根据所述第二角点确定满足所述预置范围的第三角点,直至确定各角点以使得所述各角点均匀稀疏地分布,所述各角点不相同;

所述确定单元303还用于,将所述视频帧的各角点作为特征点采样以确定各视频帧对应的特征点集合;

所述确定单元303还用于,根据所述特征点集合确定相邻视频帧中相互匹配的目标特征点;

计算单元304,用于根据所述目标特征点计算得到所述相邻视频帧中所述目标特征点的运动数据;

所述计算单元304还用于,根据所述运动数据计算平滑运动数据,所述平滑运动数据用于使得所述目标特征点在所述视频帧中平滑运动;

矫正单元305,用于根据所述平滑运动数据矫正所述目标特征点在所述相邻视频帧中的位置。

可选的,所述检测单元302具体用于:

逐行扫描所述视频帧;

对所述视频帧进行角点检测;

将所述角点检测检测到的第一个角点确定为所述第一角点。

可选的,所述确定单元303具体用于:

将所述第一角点确定为目标角点;

确定单元1)所述目标角点确定满足所述预置范围的第二角点;

确定单元2)根据所述所述第二角点确定满足所述预置范围的第三角点;

之后还包括:

确定单元3)将所述第三角点确定为所述目标角点并循环触发确定单元1)至确定单元3),直至确定各角点以使得所述各角点均匀稀疏地分布,所述预置范围为预设置的角点间的距离。

可选的,所述确定单元303具体还用于:

若无法根据所述第一角点确定满足所述预置范围的第二角点,则在所述预置范围内确定第二角点虚拟点作为所述第二角点;

根据所述第六确定单元确定的所述第二角点虚拟点确定满足所述预置范围的第三角点。

关于图4实施例中终端的各个单元的具体描述可以参照图1实施例中视频防抖控制方法的具体描述内容,此处不做赘述。

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

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

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

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

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

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