视频帧修正方法及相关产品

文档序号:192836 发布日期:2021-11-02 浏览:30次 >En<

阅读说明:本技术 视频帧修正方法及相关产品 (Video frame correction method and related product ) 是由 刘山源 刘文韬 于 2021-07-12 设计创作,主要内容包括:本申请实施例提供一种视频帧修正方法及相关产品,该视频帧修正方法包括:根据检测结果矩阵确定视频中的错误帧;确定当前修正策略;按照当前修正策略对错误帧进行修正,得到视频的修正3D骨骼数据。本申请实施例可以提高视频帧的修正效果。(The embodiment of the application provides a video frame correction method and a related product, wherein the video frame correction method comprises the following steps: determining error frames in the video according to the detection result matrix; determining a current correction strategy; and correcting the error frame according to the current correction strategy to obtain the corrected 3D skeleton data of the video. The embodiment of the application can improve the correction effect of the video frame.)

视频帧修正方法及相关产品

技术领域

本申请涉及视频处理技术领域,具体涉及一种视频帧修正方法及相关产品。

背景技术

人物视频的三维(three-dimensions,3D)姿态建模是增强现实(augmentedreality,AR)领域和虚拟现实(virtual reality,VR)领域的重要问题。3D姿态建模在很多领域有重要的应用,比如虚拟偶像,VR游戏等等。

3D骨骼数据是3D姿态建模的重要数据,通过人物视频中的关键点构建3D骨骼数据。在计算人物视频的3D骨骼数据时,由于二维(two-dimensions,2D)关键点检测和3D骨骼生成均可能有误差,因此计算的3D骨骼数据难以直接使用。目前一般通过无差别的平滑、滤波等手段优化视频帧的3D骨骼数据。然而,对人物视频采用无差别的方式进行修正,会影响人物视频中原本表现比较好的视频帧,从而影响视频帧的修正效果。

发明内容

本申请实施例提供一种视频帧修正方法及相关产品,提高视频帧的修正效果。

本申请实施例的第一方面提供了一种视频帧修正方法,包括:

根据检测结果矩阵确定视频中的错误帧;

确定当前修正策略;

按照所述当前修正策略对所述错误帧进行修正,得到所述视频的修正3D骨骼数据。

其中,本申请实施例根据检测结果矩阵确定视频中的错误帧,对错误帧进行修正,不会影响视频帧中原本表现比较好的视频帧,从而提高视频帧的修正效果。

可选的,所述根据检测结果矩阵确定视频中的错误帧之前,所述方法还包括:

执行当前次错误帧检测,得到当前次检测结果;

根据所述当前次检测结果生成所述检测结果矩阵。

本申请实施例可以通过错误帧检测得到检测结果,根据检测结果生成检测结果矩阵,检测结果矩阵可以用于后续视频帧修复,提高视频帧修复的效果。

可选的,所述按照所述当前修正策略对所述错误帧进行修正之后,所述方法还包括:

在所述视频的累积修正次数达到第一阈值的情况下,确定所述视频完成视频帧修正;

在所述视频的累积修正次数小于所述第一阈值的情况下,执行下一次错误帧检测。

本申请实施例可以通过视频帧修正和错误帧检测循环交替执行的方式,从而逐步消除视频中的错误帧,从而使得错误帧优化结果更平滑。

可选的,所述执行当前次错误帧检测,得到当前次检测结果之后,所述方法还包括:

若所述当前次检测结果中存在连续正确帧的数量小于或等于第二阈值,将所述连续正确帧修改为错误帧,得到修改后的当前次检测结果;

所述根据所述当前次检测结果生成所述检测结果矩阵,包括:

根据所述修改后的当前次检测结果生成所述检测结果矩阵。

本申请实施例中,连续正确帧指的是:两个错误帧之间所有帧均为正确帧。如果连续正确帧的数量很少,则极有可能是上述当前次错误帧检测得到的当前次检测结果不太准确,需要进行修改,可以提高修改后的当前次检测结果的准确度,从而提高检测结果矩阵的准确度,进而可以提高根据检测结果矩阵准确确定视频中的错误帧的准确度。

可选的,所述执行当前次错误帧检测,得到当前次检测结果之后,所述方法还包括:

确定所述视频的累积执行错误帧检测的次数;

在所述累积执行错误帧检测的次数大于M的情况下,更新所述当前次检测结果;

所述根据所述当前次检测结果生成所述检测结果矩阵,包括:

根据更新后的当前次检测结果生成所述检测结果矩阵;M为大于或等于3的整数;

在所述累积执行错误帧检测的次数小于或等于M的情况下,执行所述根据所述当前次检测结果生成所述检测结果矩阵的步骤。

本申请实施例可以对当前次检测结果进行更新,更新可以避免对之前的正确帧进行造成影响。

可选的,所述执行当前次错误帧检测,得到当前次检测结果,包括:

获取所述视频的3D骨骼数据;所述3D骨骼数据包括原始3D骨骼数据或修正3D骨骼数据;

根据所述视频的3D骨骼数据计算所述视频中连续两帧的关键骨骼向量;

计算所述连续两帧之间对应的关键骨骼向量的相似度;

若所述相似度小于所述关键骨骼向量对应的预设阈值,判定所述连续两帧的当前次检测结果为错误帧;

若所述相似度大于所述关键骨骼向量对应的预设阈值,判定所述连续两帧的当前次检测结果为正确帧。

其中,不同的关键骨骼向量可以对应不同的预设阈值,可以提高错误帧检测的准确率,降低错误帧检测的错误率。

可选的,所述更新所述当前次检测结果,包括:

维持所述当前次检测结果中与第一轮检测结果相同的视频帧的检测结果;所述第一轮检测结果包括前M次执行错误帧检测后参与修正的所有错误帧和除所述所有错误帧之外的正确帧;

更新所述当前次检测结果为错误帧并且所述第一轮检测结果为正确帧的视频帧的检测结果;

维持所述当前次检测结果为正确帧并且所述第一轮检测结果为错误帧的视频帧的检测结果。

本申请实施例对于第一轮检测结果为正确帧的视频帧,并且该视频帧的当前次错误帧检测结果为错误帧时,才对该视频帧的当前次检测结果进行更新,将该视频的当前次检测结果从错误帧更改为正确帧,保留第一轮检测结果检测为正确帧的检测结果,当前次检测结果相比于第一轮检测结果,仅对第一轮检测结果中的错误帧进行了修正,不对第一轮检测结果中的正确帧进行修正可以将错误帧的优化限制在第一轮检测结果包括的错误帧的范围内,不对第一轮检测结果中的正确帧进行修正,不让错误帧扩大化,以免后续过于严格的设定阈值影响到错误帧之外的正确帧,不对全局造成影响,从而提高整体的视频帧修正效果。

可选的,所述关键骨骼向量对应的预设阈值基于所述关键骨骼向量和所述累积执行错误帧检测的次数确定;

其中,当所述关键骨骼向量确定时,所述累积执行错误帧检测的次数与所述预设阈值正相关。

本申请实施例,累积执行错误帧检测的次数越多,预设阈值也越大,可以随着执行错误帧检测的次数的增加中,逐渐上调设定阈值,采用从粗调到精调的策略,逐渐的对错误帧进行优化,从而提高错误帧优化效果。

可选的,所述关键骨骼向量包括第一类向量、第二类向量和第三类向量中的任一种;

所述第一类向量包括左右肩膀向量;

所述第二类向量包括胯骨中心根节点到脊柱中心节点向量;

所述第三类向量包括:左前臂向量、左上臂向量、左小腿向量、左大腿向量、右前臂向量、右上臂向量、右小腿向量和右大腿向量中的至少一种;

其中,当所述累积执行错误帧检测的次数确定时,所述第一类向量对应的预设阈值小于所述第三类向量对应的预设阈值,所述第三类向量对应的预设阈值小于所述第二类向量对应的预设阈值。

本申请实施例可以对关键骨骼向量进行分类,从而更好的确定关键骨骼向量中哪些骨骼向量是错误骨骼向量,从而可以更好的分析错误帧的错误原因。根据错误帧的错误原因更好的进行错误帧修正。在同一次错误帧检测时,不同的关键骨骼向量可以对应不同的预设阈值,可以提高错误帧检测的准确率,降低错误帧检测的错误率。

可选的,所述根据当前修正次数确定当前修正策略,包括:

若当前修正次数为(3N+1)次,则所述当前修正策略包括旋转错误补全策略;

若所述当前修正次数为(3N+2)次,则所述当前修正策略包括前倾后仰补全策略;

若所述当前修正次数为(3N+3)次,则所述当前修正策略包括手脚跳变补全策略,N为大于或等于0的整数。

本申请实施例中,首先采用旋转错误补全策略对错误影响较大的骨骼向量进行修正,降低错误影响较大的骨骼向量对错误影响较小的骨骼向量的干扰,从而更好的进行后续的错误影响较小的骨骼向量的校正。

可选的,所述按照所述当前修正策略对所述错误帧进行修正,包括:

若所述当前修正策略包括旋转错误补全策略,对所述错误帧的所有骨骼向量中除所述第一类向量、所述第二类向量和所述第三类向量之外的其他骨骼向量进行球面插值处理,对所述关键骨骼向量中的错误骨骼向量进行球面插值处理。

本申请实施例可以先对错误帧的主干躯体相关的向量(除所述第一类向量、所述第二类向量和所述第三类向量之外的其他骨骼向量)进行球面差值,让主干躯体运动流畅,再对关键骨骼向量中的所有的错误骨骼向量进行球面差值,对关键骨骼向量中的所有正确骨骼向量保持不变。先保证错误帧的主干躯体运动流畅,再对错误帧的肢体进行修正,提高错误帧的修正效果。

可选的,所述按照所述当前修正策略对所述错误帧进行修正,包括:

若所述当前修正策略包括前倾后仰补全策略,对所述错误帧的所有骨骼向量中除所述第一类向量、所述第二类向量和所述第三类向量之外的其他骨骼向量进行球面插值处理,对所述第一类向量、所述第二类向量和所述第三类向量中的错误骨骼向量进行球面插值处理;

若所述关键骨骼向量中的所述第二类向量为错误骨骼向量,计算所述关键骨骼向量中的第二类向量与目标向量的旋转矩阵,所述目标向量是所述视频中与所述错误帧的帧数相差最小的正确帧中的第二类向量;

根据所述旋转矩阵对所述错误帧的所有骨骼向量进行校正。

本申请实施例先对主干躯体相关的向量(除所述第一类向量、所述第二类向量和所述第三类向量之外的其他骨骼向量)进行球面差值,再对关键骨骼向量中的所有的错误骨骼向量进行球面差值,计算关键骨骼向量中的第二类向量与目标向量的旋转矩阵,通过旋转矩阵对人物的整体姿态进行还原,在姿态还原前将其他的向量调整到位,提高人物的整体姿态的还原效果。

可选的,所述按照所述当前修正策略对所述错误帧进行修正,包括:

若所述当前修正策略包括手脚跳变补全策略,所述关键骨骼向量中的第三类向量包含错误骨骼向量,对所述错误帧中第三类向量包含的错误骨骼向量进行球面插值处理;

对所述错误帧中除第三类向量之外的其他骨骼向量进行球面插值处理。

本申请实施例由于手脚跳变补全策略之前已经进行过错误帧检测,主干躯体相关的向量可能会有细微的变动,对错误帧中除第三类向量之外的其他骨骼向量进行球面插值处理,可以对主干躯体相关的向量进行球面差值,让主干躯体运动流畅。

本申请实施例的第二方面提供了一种视频帧修正装置,包括:

确定单元,用于根据检测结果矩阵确定视频中的错误帧;

所述确定单元,还用于确定当前修正策略;

修正单元,用于按照所述当前修正策略对所述错误帧进行修正,得到所述视频的修正3D骨骼数据。

本申请实施例的第三方面提供了一种电子设备,包括处理器和存储器,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,执行如本申请实施例第一方面中所描述的部分或全部步骤。

本申请实施例的第四方面提供了一种计算机可读存储介质,其中,上述计算机可读存储介质存储用于电子数据交换的计算机程序,其中,上述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行如本申请实施例第一方面所描述的部分或全部步骤。

本申请实施例的第五方面提供了一种计算机程序产品,其中,上述计算机程序产品包括计算机程序,上述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行如本申请实施例第一方面所描述的部分或全部步骤。该计算机程序产品可以为一个软件安装包。

本申请实施例中,在进行视频帧修正时,根据检测结果矩阵确定视频中的错误帧;确定当前修正策略;按照所述当前修正策略对所述错误帧进行修正,得到所述视频的修正3D骨骼数据。本申请实施例根据检测结果矩阵确定视频中的错误帧,对错误帧进行修正,不对正确帧进行处理,不会影响视频帧中原本表现比较好的视频帧,从而提高视频帧的修正效果。

附图说明

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

图1是本申请实施例提供的一种视频帧修正方法的流程示意图;

图2是本申请实施例提供的另一种视频帧修正方法的流程示意图;

图3是本申请实施例提供的一种某一个视频帧的关键点和骨骼向量的示意图;

图4是本申请实施例提供的一种球面差值的示意图;

图5为本申请实施例提供的一种视频帧修正装置的结构示意图;

图6是本申请实施例提供的一种电子设备的结构示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其他步骤或单元。

在本申请中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本申请所描述的实施例可以与其它实施例相结合。

本申请实施例所涉及到的电子设备可以包括具有图像和视频处理能力的设备,比如,手机、平板电脑、台式电脑等。

视频人物的三维(three-dimensions,3D)姿态建模是增强现实(augmentedreality,AR)领域和虚拟现实(virtual reality,VR)领域的重要问题。3D姿态建模在很多领域有重要的应用,比如虚拟偶像,VR游戏等等。目前一般通过无差别的平滑、滤波等手段优化视频帧的3D骨骼数据,优化可视化效果(就是把抖动的3D坐标给优化到肉眼看不出抖动的效果)。传统滤波平滑方法通常包括这些问题:全局改变,动作幅度损失,做误检测动作幅度很大,即无法彻底纠正大幅度错误帧,慢动作现象。慢动作现象是由于出现了很多错误帧,对这些错误帧进行平滑时候,导致动作过于平滑,没有快慢和幅度之分,看起来像是慢动作一样。

3D骨骼数据的生成,是使用2D姿态检测拿到的人体2D关键点坐标,通过神经网络(比如,神经网络模型)得到人体的3D空间关键点坐标。因为神经网络模型一般是一帧一帧的计算3D坐标,帧与帧之间没有关系,容易出现震荡、抖动等情况。

尤其在视频人物转身或者突然快速运动的过程中,2D姿态检测可能会检测出若干个完全错误的点,这样平滑之后的结果依然会包含错误动作,在舞蹈视频中经常出现。比如当人物转身时候,某个手肘在图像中已经被身体遮挡了,所以可以认为不存在这个点,但是神经网络模型依然需要输出一个点,那么有可能就输出完全错误的点;快速动作同样的道理,太快导致手部模糊,神经网络模型很难找到关键点,导致输出错误结果。

本申请实施的下面的方法步骤可以解决上述问题。

请参阅图1,图1是本申请实施例提供的一种视频帧修正方法的流程示意图。如图1所示,该方法包括如下步骤。

101,电子设备根据检测结果矩阵确定视频中的错误帧。

本申请实施例中,检测结果矩阵可以是在步骤101之前,执行错误帧检测得到的。本申请实施例提到的视频可以包括人物视频或动物视频。

检测结果矩阵可以是M×P的矩阵,M可以表示视频包含的视频帧的数量,P可以表示对应的视频帧是否为错误帧。比如,P可以是1维的向量,可以通过0表示正确帧、1表示错误帧;或者可以通过1表示正确帧、0表示错误帧。

举例来说,若M=5,P=1,0表示正确帧、1表示错误帧。如果检测结果矩阵为[0,1,1,0,0]T,则表明视频总共有5帧,第二帧和第三帧为错误帧,其他为正确帧,其中,视频中的5帧是连续的。

在一个实施例中,P也可以是多维向量,用于表示对应的视频帧中哪些骨骼向量是错误向量,哪些骨骼向量是正确向量。可以通过0表示正确向量、1表示错误向量;或者可以通过1表示正确向量、0表示错误向量。骨骼向量人物或动物的3D骨骼在是三维空间的向量。

举例来说,若M=5,P=10(用于表示视频帧中10段不同的骨骼向量),0表示正确向量、1表示错误向量。如果检测结果矩阵为:

从上述检测结果矩阵可以看出,视频总共有5帧(矩阵中的每一行代表一帧),第一帧、第四帧和第五帧为错误帧(错误帧中存在至少一个错误向量),第二帧和第三帧为正确帧(正确帧中,所有的骨骼向量都是正确向量)。第一帧中的第一段骨骼向量和第六段骨骼向量为错误向量,其他为正确向量;第四帧中的第三段骨骼向量、第六段骨骼向量、第七段骨骼向量和第九段骨骼向量为错误向量,其他为正确向量;第五帧中的第四段骨骼向量为错误向量,其他为正确向量。其中,视频中的5帧是连续的。

本申请实施例可以根据检测结果矩阵确定视频中的错误帧,还可以根据检测结果矩阵确定错误帧中哪些骨骼向量是错误向量。

102,电子设备确定当前修正策略。

本申请实施例中,步骤101至步骤103为视频修正的方法步骤,针对同一个视频,步骤101至步骤103可以循环执行多次。电子设备可以根据当前修正次数确定当前修正次数,当前修正次数,指的是针对同一个视频已经执行视频帧修正的次数(即,针对同一个视频执行步骤103的次数)。当前修正次数的初始值为0,每执行步骤103一次,当前修正次数+1。

每执行一次,表示一次修正次数。在不同的修正次数,可以采用不同的修正策略。本申请实施例可以采用先修正主干的错误骨骼向量,再修正肢体的骨骼向量的策略。由于主干的错误骨骼向量可能会影响肢体的骨骼向量,而肢体的错误骨骼向量一般不会影响主干的骨骼向量。本申请实施例首先对主干的错误骨骼向量进行修正,降低主干的错误骨骼向量对肢体的骨骼向量的干扰,从而更好的进行后续的肢体的骨骼向量的校正。

本申请实施例也可以采用先修改错误影响较大的骨骼向量,再修改错误影响较小的骨骼向量。由于错误影响较大的骨骼向量会严重的影响错误影响较小的骨骼向量,而错误影响较小的骨骼向量对错误影响较大的骨骼向量的影响很小。本申请实施例首先对错误影响较大的骨骼向量进行修正,降低错误影响较大的骨骼向量对错误影响较小的骨骼向量的干扰,从而更好的进行后续的错误影响较小的骨骼向量的校正。

本申请实施例也可以采用先修正主干的错误骨骼向量,再修正肢体的骨骼向量的策略,然后二者循环交替修正的策略。通过循环多次的方式,而不是两次修正就到位,使得错误帧优化结果更平滑。循环的次数可以根据经验值进行设定。

本申请实施例也可以采用先修改错误影响较大的骨骼向量,再修改错误影响较小的骨骼向量,然后二者循环交替修正的策略。通过循环多次的方式,而不是两次修正就到位,使得错误帧优化结果更平滑。循环的次数可以根据经验值进行设定。

其中,错误影响较大的骨骼向量可以包括跟整体姿态相关的骨骼向量,比如:左右肩膀向量、胯骨中心根节点到脊柱中心节点向量等。错误影响较小的骨骼向量可以包括四肢相关的向量,比如:左前臂向量、左上臂向量、左小腿向量、左大腿向量、右前臂向量、右上臂向量、右小腿向量和右大腿向量等。

其中,步骤101和步骤102的执行先后顺序不作限定。可以先执行步骤101,再执行步骤102,也可以先执行步骤102,再执行步骤101,也可以步骤101和102同时执行。

103,电子设备按照当前修正策略对错误帧进行修正,得到视频的修正3D骨骼数据。

本申请实施例中,对错误帧进行修正,可以是对错误帧中的骨骼向量进行修正,由于骨骼向量是基于3D骨骼数据生成的,对错误帧进行修正后,相当于对3D骨骼数据进行修正,可以得到修正3D骨骼数据。

本申请实施例根据检测结果矩阵确定视频中的错误帧,对错误帧进行修正,不会影响视频帧中原本表现比较好的视频帧,从而提高视频帧的修正效果。

请参阅图2,图2是本申请实施例提供的另一种视频帧修正方法的流程示意图。如图2所示,该方法包括如下步骤。

201,电子设备执行当前次错误帧检测,得到当前次检测结果。

202,电子设备根据当前次检测结果生成检测结果矩阵。

本申请实施例中,步骤201可以是首次执行针对视频的错误帧检测,也可以是执行视频帧修正后再执行错误帧检测。

在一个可能的实施例中,步骤201是首次执行针对该视频的错误帧检测。具体的,步骤201可以获取输入的原始3D骨骼数据,原始3D骨骼数据可以是神经网络模型计算得到的。举例来说,原始3D骨骼数据是1000*17*3,其中,1000是视频帧数量,17是关键点个数,3是每个关键点的三维空间坐标xyz。神经网络模型可以检测出每个视频帧的17个关键点,17个关键点之间可以组成多段骨骼向量。请参阅图3,图3是本申请实施例提供的一种某一个视频帧的关键点和骨骼向量的示意图。如图3所示,17个关键点分别为0、1、2、3、4、5、6、7、8、9、10、11、12、13、14、15、16。图3中的0表示胯骨中心根节点,1表示脊柱中心节点,2表示颈椎下端节点,3表示颈椎上端节点,4表示头部节点,5表示左肩膀与左上臂连接节点,6表示左上臂与左前臂连接节点,7表示左手腕节点,8表示右肩膀与右上臂连接节点,9表示右上臂与右前臂连接节点,10表示右手腕节点,11表示胯骨与左大腿连接节点,12表示左膝盖骨节点,13表示左踝骨节点,14表示胯骨与右大腿连接节点,15表示右膝盖骨节点,16表示右踝骨节点。图3示出了部分骨骼向量,如图3所示,①为关键点6和7之间的向量,也可以称为左前臂向量,②为关键点9和10之间的向量,也可以称为右前臂向量,③为关键点5和6之间的向量,也可以称为左上臂向量,④为关键点8和9之间的向量,也可以称为右上臂向量,⑤为关键点12和13之间的向量,也可以称为左小腿向量,⑥为关键点15和16之间的向量,也可以称为右小腿向量,⑦为关键点11和12之间的向量,也可以称为左大腿向量,⑧为关键点14和15之间的向量,也可以称为右大腿向量,⑨为关键点5和8之间的向量,也可以称为左右肩膀向量,⑩为关键点0和1之间的向量,也可以称为胯骨中心根节点到脊柱中心节点向量。图3还存在其他未示出的骨骼向量,比如,关键点11和14之间的向量,关键点1和2之间的向量,关键点2和3之间的向量、关键点3和4之间的向量等等。图3虽然显示的是二维图,但实际上这些关键点都是三维的,骨骼向量也是三维向量。

通过观察错误帧分布,可知错误帧的不流畅、误动作绝大多数情况下体现于手脚跳变(手或脚在连续帧中发生较大的变化)、错误旋转、错误前倾或后仰,因此可以选择10段骨骼向量(如图3所示的①~⑩段向量)作为错误帧判断依据,前8段(如图3所示的①~⑧段向量)分别是左右前臂向量、左右上臂向量、左右小腿向量、左右大腿向量,对应手脚跳变情况;第⑨段是左右肩膀向量(在骨骼点序图中一般不连接,此处指的是两者之间的向量),对应错误旋转情况;第⑩段是胯骨中心根节点到脊柱中心节点向量,对应错误前倾或后仰情况。

本申请实施例,电子设备在执行当前次错误帧检测时,可以检测视频中的连续两帧的骨骼向量,计算视频中连续两帧对应的骨骼向量的相似度,根据相似度与设定阈值的比较,即可确定该连续两帧是否为错误帧。如果相似度大于设定阈值,则表明该骨骼向量在连续两帧中的变化较大,确定该连续两帧的当前次检测结果为错误帧,若0表示正确帧、1表示错误帧,则该连续两帧在检测结果矩阵中对应的值为1。如果相似度小于设定阈值,则表明该骨骼向量在连续两帧中的变化较小,确定该连续两帧的当前次检测结果为正确帧,若0表示正确帧、1表示错误帧,则该连续两帧在检测结果矩阵中对应的值为0。计算得到视频中每一帧的当前次检测结果后,可以根据当前次检测结果生成1000*1的检测结果矩阵。

可选的,在执行步骤201之后,还可以执行如下步骤:

若所述当前次检测结果中存在连续正确帧的数量小于或等于第二阈值,电子设备将所述连续正确帧修改为错误帧,得到修改后的当前次检测结果。

其中,在每一次执行步骤201之后,在当前次检测结果中存在连续正确帧的数量小于或等于第二阈值的情况,电子设备都可以将所述连续正确帧修改为错误帧,得到修改后的当前次检测结果。

步骤202中,电子设备根据当前次检测结果生成检测结果矩阵可以包括如下步骤:

电子设备根据所述修改后的当前次检测结果生成所述检测结果矩阵。

本申请实施例中,如果连续正确帧过短,则很可能是误检测,则可以基于上述判断规则对当前次检测结果进行修正,得到修改后的当前次检测结果,从而根据修改后的当前次检测结果,得到更准确的检测结果矩阵。

其中,对于判断为错误帧的骨骼向量的不同,可以采用不同的第二阈值,从而提高修改后的当前次检测结果的准确度。

在一个实施例中,若判断为错误帧的骨骼向量为第9段向量(即,后续提到的第一类向量),则该错误帧为旋转错误帧,若视频帧中存在两段连续旋转错误帧之间的连续正确帧的数量小于或等于第二阈值,则将上述连续正确帧修改为错误帧,重新修改该当前次检测结果。本申请实施例为连续旋转错误帧-连续正确帧(连续正确帧可以只有1帧,也可以有至少2帧)-连续旋转错误帧的情况。比如,若第二阈值等于4,在连续的50帧中,第1~20帧为手脚跳变帧,第21~23帧为正确帧,第24~50帧为手脚跳变帧,则将第21~23帧修改为错误帧。如果连续正确帧过短,则很可能是误检测,则可以基于上述判断规则修改该当前次检测结果,得到更准确的修改后的当前次检测结果。

在一个实施例中,若判断为错误帧的骨骼向量为第10段向量(即,后续提到的第二类向量),则该错误帧为前倾后仰帧(前倾或者后仰,或者二者皆有),若视频帧中存在两段连续前倾后仰帧之间的连续正确帧的数量小于或等于第二阈值,则将上述连续正确帧修改为错误帧,重新修改该当前次检测结果。本申请实施例为连续旋转错误帧-连续正确帧(连续正确帧可以只有1帧,也可以有至少2帧)-连续旋转错误帧的情况。比如,若第二阈值等于1,在连续的50帧中,第1~20帧为前倾后仰帧,第21帧为正确帧,第22~50帧为手前倾后仰帧,则将第21帧修改为错误帧。如果连续正确帧过短,则很可能是误检测,则可以基于上述判断规则修改该当前次检测结果,得到更准确的修改后的当前次检测结果。

在一个实施例中,若判断为错误帧的骨骼向量为前8段向量(即,后续提到的第三类向量),则该错误帧为手脚跳变帧,若视频帧中存在两段连续手脚跳变帧之间的连续正确帧的数量小于或等于第二阈值,则将上述连续正确帧修改为错误帧,重新修改该当前次检测结果。本申请实施例为连续手脚跳变帧-连续正确帧(连续正确帧可以只有1帧,也可以有至少2帧)-连续手脚跳变帧的情况。比如,若第二阈值等于2,在连续的50帧中,第1~20帧为手脚跳变帧,第21~22帧为正确帧,第23~50帧为手脚跳变帧,则将第21~22帧修改为错误帧。如果连续正确帧过短,则很可能是误检测,则可以基于上述判断规则修改该当前次检测结果,得到更准确的修改后的当前次检测结果。其中,当判断为错误帧的骨骼向量的不同时,第二阈值也不同。具体的,当判断为错误帧的骨骼向量为第一类向量时,第二阈值最大;当判断为错误帧的骨骼向量为第三类向量时,第二阈值其次;当判断为错误帧的骨骼向量为第二类向量时,第二阈值最小。第二阈值可以设置为大于或等于1。

本申请实施例的相似度计算可以通过向量的余弦距离、欧几里得距离、曼哈顿距离、皮尔逊相关系数、cosine相似度等方式计算。

在另一个可能的实施例中,步骤201可以获取输入的修正3D骨骼数据,修正3D骨骼数据可以是执行视频帧修正后再执行的错误帧检测。

203,电子设备根据检测结果矩阵确定视频中的错误帧。

204,电子设备根据当前修正次数确定当前修正策略。

205,电子设备按照当前修正策略对错误帧进行修正,得到视频的修正3D骨骼数据。

其中,步骤203至205的具体实施请参见图1的步骤101至103的实施例,此处不再赘述。

可选的,在执行步骤205之后,还可以执行如下步骤:

(11)在所述视频的累积修正次数达到第一阈值的情况下,电子设备确定所述视频完成视频帧修正;

(12)在所述视频的累积修正次数小于所述第一阈值的情况下,电子设备执行下一次错误帧检测。

本申请实施例中,可以在视频的累积修正次数达到一定次数的时候,确定该视频完成视频帧修正。比如,第一阈值可以设置为3的倍数,比如,可以设置为15次。第一阈值可以是经验值。

如果视频的累积修正次数小于所述第一阈值的情况下,电子设备继续执行下一次错误帧检测,继续执行步骤201。可以循环执行步骤201至步骤205。在执行步骤205之后,可以执行上述步骤(11)和(12),从而判断是否继续执行步骤201。

可选的,在执行步骤201之后,还可以执行如下步骤:

(21)电子设备确定所述视频的累积执行错误帧检测的次数;

(22)在所述累积执行错误帧检测的次数小于或等于M的情况下,电子设备执行步骤202;M为大于或等于3的整数;

(23)在所述累积执行错误帧检测的次数大于M的情况下,电子设备更新所述当前次检测结果;

步骤202中,电子设备根据当前次检测结果生成检测结果矩阵,具体可以包括如下步骤:

电子设备根据更新后的当前次检测结果生成所述检测结果矩阵。

本申请实施例中,如果当前修正策略是旋转错误补全策略、前倾后仰补全策略、手脚跳变补全策略这三种修正策略中选一种,则M可以设置为3。比如,可以三种修正策略轮流执行。举例来说,如果累积执行错误帧检测的次数是1次,则第一次对错误帧进行修正时,可以采用旋转错误补全策略;如果累积执行错误帧检测的次数是2次,则第二次对错误帧进行修正时,可以采用前倾后仰补全策略;如果累积执行错误帧检测的次数是3次,则第三次对错误帧进行修正时,可以采用手脚跳变补全策略。以此类推,第四至第六次对错误帧进行修正时,按照先旋转错误补全策略、再前倾后仰补全策略、再手脚跳变补全策略进行修正。可以将前三次错误帧检测和前三次修正作为第一轮修正,将第四至第六次修正作为第二轮修正,以此类推。在第一轮修正时,对三种不同类型的错误(旋转错误、前倾后仰、手脚跳变补)进行修正时,无需对当前次检测结果进行更新。在第二轮修正以及后续的修正时,由于已经对三种类型的错误进行了一轮修正,则为了避免第二轮以及后续的的错误帧检测的当前次检测结果出现问题,第二轮以及后续的的错误帧检测时,可以对当前次检测结果进行更新,更新会保留第一轮检测的正确帧的检测结果,可以避免把之前检测的正确帧重新检测为错误帧,避免扩大错误帧的范围,进而使得错误帧检测的结果能够收敛,提高视频帧修正的效率。本申请实施例通过视频帧修正和错误帧检测循环交替执行的方式,从而逐步消除视频中的错误帧,从而使得错误帧优化结果更平滑。

可选的,步骤201中,电子设备执行当前次错误帧检测,得到当前次检测结果,具体可以包括如下步骤:

(31)电子设备获取所述视频的原始3D骨骼数据或修正3D骨骼数据;

其中,原始3D骨骼数据可以是神经网络模型计算得到的。修正3D骨骼数据是上一次对错误帧进行修正测得到的。

(32)电子设备根据所述视频的原始3D骨骼数据计算所述视频中连续两帧的关键骨骼向量;

其中,关键骨骼向量可以用来衡量视频帧是否为错误帧。例如,关键骨骼向量可以包括图3所示的①~⑩段向量中的任一个。只要其中任意一段向量在连续两帧之间的相似度小于对应的设定阈值,都可以判定该连续两帧为错误帧。

视频的3D骨骼数据可以包括每一帧的M个关键点的三维坐标数据。M个关键点是针对骨骼的关键点。例如,如图3所示,视频的3D骨骼数据可以包括每一帧的17个关键点的三维坐标数据。可以根据图3中的关键点6和7的三维坐标计算得到骨骼向量①(骨骼向量①的向量方向可以是从关键点6到7的方向,也即关键点6是起点,关键点7是终点;也可以是从关键点7到6的方向,也即关键点7是起点,关键点6是终点,以下的其他骨骼向量以此类推),根据图3中的关键点9和10的三维坐标计算得到骨骼向量②,根据图3中的关键点5和6的三维坐标计算得到骨骼向量③,根据图3中的关键点8和9的三维坐标计算得到骨骼向量④,根据图3中的关键点12和13的三维坐标计算得到骨骼向量⑤,根据图3中的关键点15和16的三维坐标计算得到骨骼向量⑥,根据图3中的关键点11和12的三维坐标计算得到骨骼向量⑦,根据图3中的关键点14和15的三维坐标计算得到骨骼向量⑧,根据图3中的关键点5和8的三维坐标计算得到骨骼向量⑨,根据图3中的关键点0和1的三维坐标计算得到骨骼向量⑩。为了根据骨骼向量计算相似度,需要视频的每一帧的骨骼向量都按照同样的方式来计算,比如,每一帧的骨骼向量①都是关键点6和7之间的向量,其方向都是从关键点6到7的方向。

(33)电子设备计算所述连续两帧之间对应的关键骨骼向量的相似度;

本申请实施例中,连续两帧之间对应的关键骨骼向量,指的是连续两帧中同一段向量。比如,可以计算连续两帧中的第一帧的骨骼向量①与连续两帧中的第二帧的骨骼向量①的相似度。相似度计算可以通过向量的余弦距离、欧几里得距离、曼哈顿距离、皮尔逊相关系数、cosine相似度等方式计算。举例来说,可以通过计算连续两帧之间对应的关键骨骼向量的余弦距离,将该连续两帧之间对应的关键骨骼向量的余弦距离作为连续两帧之间对应的关键骨骼向量的相似度。余弦距离指的是两个向量之间的夹角的余弦值,其范围在-1~1之间。余弦距离越大,表示两个向量的相似度越高,弦距离越小,表示两个向量的相似度越低。

(34)若所述相似度小于所述关键骨骼向量对应的预设阈值,电子设备判定所述连续两帧的当前次检测结果为错误帧;

(35)若所述相似度大于所述关键骨骼向量对应的预设阈值,电子设备判定所述连续两帧的当前次检测结果为正确帧。

本申请实施例中,由于不同的关键骨骼向量在人物的实际运动过程中的变化的差异性。比如,以图3为例,当人物在旋转时,骨骼向量⑨可能会发生较大的变化,因此,骨骼向量⑨对应的预设阈值可以设置得相对较小,比如可以设置为0.3。当人物在旋转或剧烈运动时,骨骼向量⑩都不会发生较大的变化,因此,骨骼向量⑩对应的预设阈值可以设置得相对较大,比如可以设置为0.9或0.97。本申请实施例的不同的关键骨骼向量可以对应不同的预设阈值,可以提高错误帧检测的准确率,降低错误帧检测的错误率。

根据视频的3D骨骼数据计算的关键骨骼向量可靠性相对较高,因此,可以直接根据步骤(14)和(15)判定的检测结果来生成检测结果矩阵。比如,若0表示正确帧、1表示错误帧,视频总共有10帧,若检测出第6、7、8帧为错误帧,其他帧为正确帧,则该视频的检测结果矩阵为[0,0,0,0,0,1,1,1,0,0]。

可选的,所述步骤(23)中,电子设备更新所述当前次检测结果,具体可以包括如下步骤:

(41)电子设备维持所述当前次检测结果中与第一轮检测结果相同的视频帧的检测结果;所述第一轮检测结果包括前M次执行错误帧检测后参与修正的所有错误帧和除所述所有错误帧之外的正确帧;

(42)电子设备更新所述当前次检测结果为错误帧并且所述第一轮检测结果为正确帧的视频帧的检测结果;

(43)电子设备维持所述当前次检测结果为正确帧并且所述第一轮检测结果为错误帧的视频帧的检测结果。

本申请实施例中,第一轮检测结果包括前M次执行错误帧检测后参与修正的所有错误帧和除所述所有错误帧之外的正确帧。下面以M=3为例进行说明。

举例来说,若0表示正确帧、1表示错误帧,视频总共有10帧,如果根据第一次执行错误帧检测的检测结果生成的检测结果矩阵为[0,0,0,0,0,1,1,1,0,0],在第一次执行错误帧检测后参与修正的错误帧为:第6~8帧。如果根据第二次执行错误帧检测的检测结果生成的检测结果矩阵为[0,0,0,0,0,0,1,1,0,0],在第二次执行错误帧检测后参与修正的错误帧为:第7~8帧。如果根据第三次执行错误帧检测的检测结果生成的检测结果矩阵为[0,0,0,1,1,1,0,0,0,0],在第二次执行错误帧检测后参与修正的错误帧为:第4~6帧。则前三次执行错误帧检测后参与修正的所有错误帧为第4~8帧,正确帧为第1~3、9~10为正确帧。则第一轮检测结果为:第1~3、9~10为正确帧;第4~8帧为错误帧。根据该第一轮检测结果生成的检测结果矩阵为[0,0,0,1,1,1,1,1,0,0]。如果当前次(第四次及以后)检测结果为:第1~7为正确帧;第8~10帧为错误帧,根据该当前次检测结果生成的检测结果矩阵为[0,0,0,0,0,0,0,1,1,1]。则对该当前次检测结果进行更新。具体的,当前次检测结果中与第一轮检测结果相同的视频帧为:第1~3、8帧;当前次检测结果为错误帧并且第一轮检测结果为正确帧的视频帧为:第9~10帧;当前次检测结果为正确帧并且所述第一轮检测结果为错误帧的视频帧的检测结果第4~7帧。因此,根据上述步骤(41)~(43),维持该当前次检测结果中第1~3、8帧的检测结果(即,当前次检测结果中第1~3、8帧的检测结果不发生变化),更新该当前次检测结果中第9~10帧的检测结果(即,将当前次检测结果中第9~10帧的检测结果由错误帧更改为正确帧),维持该当前次检测结果中第4~7帧的检测结果(即,当前次检测结果中第4~7帧的检测结果不发生变化)。更新后的当前次检测结果为:第1~7、9~10为正确帧,第8帧为错误帧。根据该更新后的当前次检测结果生成的检测结果矩阵为[0,0,0,0,0,0,0,1,0,0]。其中,[0,0,0,0,0,0,0,1,0,0]为[0,0,0,1,1,1,1,1,0,0]与[0,0,0,0,0,0,0,1,1,1]的交集。

视频帧修正和错误帧检测可以循环交替执行,每次执行错误帧检测后,进行视频帧修正,进行视频帧修正后,再进行下一次错误帧检测。本申请实施例对于第一轮检测结果为正确帧的视频帧,并且该视频帧的当前次错误帧检测结果为错误帧时,才对该视频帧的当前次检测结果进行更新,将该视频的当前次检测结果从错误帧更改为正确帧,保留第一轮检测结果检测为正确帧的检测结果,当前次检测结果相比于第一轮检测结果,仅对第一轮检测结果中的错误帧进行修正,可以将错误帧的优化限制在第一轮检测结果包括的错误帧的范围内,不对第一轮检测结果中的正确帧进行修正,不让错误帧扩大化,以免后续过于严格的设定阈值影响到错误帧之外的正确帧,不对全局造成影响,从而提高整体的视频帧修正效果。

可选的,所述关键骨骼向量对应的预设阈值基于所述关键骨骼向量和所述累积执行错误帧检测的次数确定;

其中,当所述关键骨骼向量确定时,所述累积执行错误帧检测的次数与所述预设阈值正相关。

其中,当所述累积执行错误帧检测的次数确定时,第一类向量对应的预设阈值小于第三类向量对应的预设阈值,第三类向量对应的预设阈值小于第二类向量对应的预设阈值。第一类向量、第二类向量、第三类向量可以参见下文的介绍。

本申请实施例中,在同一次错误帧检测时,不同的关键骨骼向量可以对应不同的预设阈值,可以提高错误帧检测的准确率,降低错误帧检测的错误率。同一段关键骨骼向量,在不同次的错误帧检测中,可以逐渐上调设定阈值,采用从粗调到精调的策略,逐渐的对错误帧进行优化,从而提高错误帧优化效果。如果一开始就设置较高的设定阈值,则会导致第一次错误帧检测的错误帧数量过多,后续的错误帧难以较好的收敛,使得错误帧的优化效果大打折扣。

举例来说,如果循环次数为5次,对于第三类向量,其对应的预设阈值可以按照[0.7,0.7,0.8,0.9,0.9]的参数进行调整,也即,第一次和第二次时,第三类向量对应的预设阈值为0.7,第三次时第三类向量对应的预设阈值为0.8,第四次和第五次时,第三类向量对应的预设阈值为0.9。对于第一类向量,其对应的预设阈值可以按照[0.3,0.3,0.4,0.5,0.5]的参数进行调整。对于第二类向量,其对应的预设阈值可以按照[0.97,0.97,0.98,0.98,0.99]的参数进行调整。

可选的,所述关键骨骼向量包括第一类向量、第二类向量和第三类向量中的任一种;所述第一类向量包括左右肩膀向量;所述第二类向量包括胯骨中心根节点到脊柱中心节点向量;所述第三类向量包括:左前臂向量、左上臂向量、左小腿向量、左大腿向量、右前臂向量、右上臂向量、右小腿向量和右大腿向量中的至少一种。

举例来说,如图3所示,第一类向量可以包括骨骼向量⑨,第二类向量可以包括骨骼向量⑩,第三类向量可以包括骨骼向量①~⑧中的至少一种。

本申请实施例可以对关键骨骼向量进行分类,从而更好的确定关键骨骼向量中哪些骨骼向量是错误骨骼向量,从而可以更好的分析错误帧的错误原因。根据错误帧的错误原因更好的进行错误帧修正。比如,如果错误帧中的骨骼向量①~⑧中的至少一种发生错误,则错误帧的错误原因是:手脚跳变。如果错误帧中的骨骼向量⑨发生错误,则错误帧的错误原因是:旋转错误。如果错误帧中的骨骼向量⑩发生错误,则错误帧的错误原因是:前倾后仰(人的身体不正常的前倾或者后仰)。

可选的,若当前修正次数为(3N+1)次,则所述当前修正策略包括旋转错误补全策略;若所述当前修正次数为(3N+2)次,则所述当前修正策略包括前倾后仰补全策略;若所述当前修正次数为(3N+3)次,则所述当前修正策略包括手脚跳变补全策略,N为大于或等于0的整数。

本申请实施例中,修正次数不同,对应的修正策略不同。第一次采用旋转错误补全策略,第二次采用前倾后仰补全策略,第三次采用手脚跳变补全策略,然后依次循环。错误帧出现的旋转错误对骨骼向量的影响相对最大,前倾后仰对骨骼向量的影响次之,手脚跳变对骨骼向量的影响相对最小。本申请实施例中,首先采用旋转错误补全策略对错误影响较大的骨骼向量进行修正,降低错误影响较大的骨骼向量对错误影响较小的骨骼向量的干扰,从而更好的进行后续的错误影响较小的骨骼向量的校正。采用先修改错误影响较大的骨骼向量,再修改错误影响较小的骨骼向量,然后循环交替修正的策略。通过循环多次的方式,使得错误帧优化结果更平滑。循环的次数可以根据经验值进行设定。

其中,旋转错误补全和前倾后仰的顺序可以互换。

可选的,若当前修正次数为(3N+1)次,则所述当前修正策略包括前倾后仰补全策略;若所述当前修正次数为(3N+2)次,则所述当前修正策略包括旋转错误补全策略;若所述当前修正次数为(3N+3)次,则所述当前修正策略包括手脚跳变补全策略,N为大于或等于0的整数。

本申请实施例中,修正次数不同,对应的修正策略不同。第一次采用前倾后仰补全策略,第二次采用旋转错误补全策略,第三次采用手脚跳变补全策略,然后依次循环。

可选的,步骤204中,电子设备按照当前修正策略对错误帧进行修正,具体可以包括:电子设备按照旋转错误补全策略对错误帧进行修正。

电子设备按照旋转错误补全策略对错误帧进行修正,具体可以包括如下步骤:

(51)电子设备对所述错误帧的所有骨骼向量中除所述第一类向量、所述第二类向量和所述第三类向量之外的其他骨骼向量进行球面插值处理;

(52)电子设备对所述关键骨骼向量中的错误骨骼向量进行球面插值处理。

本申请实施例中,对错误帧的关键骨骼向量中的错误骨骼向量进行球面插值处理,是将错误帧中的该错误骨骼向量去除,根据该错误帧的上N帧和下N帧中与该错误骨骼向量对应的骨骼向量进行球面差值(比如,该错误帧的错误骨骼向量为左右肩膀向量,则将该错误帧的上N帧和下N帧中的左右肩膀向量进行球面差值),其中,N为正整数。比如,可以根据该错误帧的上一帧和下一帧中与该错误骨骼向量对应的骨骼向量进行球面差值。对所述错误帧的所有骨骼向量中除所述第一类向量、所述第二类向量和所述第三类向量之外的其他骨骼向量进行球面插值处理,是错误帧的所有骨骼向量中除所述第一类向量、所述第二类向量和所述第三类向量之外的其他骨骼向量去除,根据该错误帧的上N帧和下N帧中与该其他骨骼向量对应的骨骼向量进行球面差值,其中,N为正整数。

旋转错误补全策略中,先对所述错误帧中除所述第一类向量、所述第二类向量和所述第三类向量之外的其他骨骼向量(其他骨骼向量是主干躯体相关的骨骼向量,如图3所示的关键点11和14之间的向量,关键点1和2之间的向量,关键点2和3之间的向量、关键点3和4之间的向量)进行球面插值处理,再对所述关键骨骼向量中的错误骨骼向量进行球面插值处理,可以先对主干躯体相关的向量进行球面差值,让主干躯体运动流畅,再对关键骨骼向量中的所有的错误骨骼向量进行球面差值,对关键骨骼向量中的所有正确骨骼向量保持不变。先保证错误帧的主干躯体运动流畅,再对错误帧的肢体进行修正,提高错误帧的修正效果。

由于人体骨骼长度保持恒定,若直接进行线性差值,则骨长容易发生改变,如果线性差值之后再调整骨长,两帧之间骨骼的运动无法保持角度均匀,依然属于突变类型的错误帧。与线性差值相比,球面差值具有如下好处:(1)差值向量的模长不会发生突变;(2)角速度均匀,错误帧的优化效果更好。

请参阅图4,图4是本申请实施例提供的一种球面差值的示意图。如图4所示,v1为上一帧的骨骼向量,v2为下一帧的骨骼向量,v(t)为当前帧采用球面差值插入的骨骼向量,v3为当前帧采用线性差值插入的骨骼向量,可以看出,v(t)沿着v1,v2端点构成的圆弧进行。v1和v2是相邻的两帧,可以认为是等长的。采用球面差值的骨长不会发生突变,并且可以位于v1和v2的角平分线,角速度均匀,错误帧的优化效果更好。

可选的,步骤204中,电子设备按照当前修正策略对错误帧进行修正,具体可以包括:电子设备按照前倾后仰补全策略对错误帧进行修正。

电子设备按照前倾后仰补全策略对错误帧进行修正,具体可以包括如下步骤:

(61)电子设备对所述错误帧的所有骨骼向量中除所述第一类向量、所述第二类向量和所述第三类向量之外的其他骨骼向量进行球面插值处理,对所述第一类向量、所述第二类向量和所述第三类向量中的错误骨骼向量进行球面插值处理;

(62)若所述关键骨骼向量中的所述第二类向量为错误骨骼向量,电子设备计算所述关键骨骼向量中的第二类向量与目标向量的旋转矩阵,所述目标向量是所述视频中与所述错误帧的帧数相差最小的正确帧中的第二类向量;

(63)电子设备根据所述旋转矩阵对所述错误帧的所有骨骼向量进行校正。

本申请实施例中,球面差值的具体实施可以参见上述步骤(51)至步骤(52)的具体描述,此处不再赘述。前倾后仰补全策略中,由于前倾后仰补全策略之前已经进行过错误帧检测,主干躯体相关的向量可能会有细微的变动,先对所述错误帧的所有骨骼向量中除所述第一类向量、所述第二类向量和所述第三类向量之外的其他骨骼向量进行球面插值处理,对所述第一类向量、所述第二类向量和所述第三类向量中的错误骨骼向量进行球面插值处理,可以先对主干躯体相关的向量进行球面差值,让主干躯体运动流畅,再计算关键骨骼向量中的错误的第二类向量与目标向量的旋转矩阵,保留关键骨骼向量中正确的骨骼向量,再通过旋转矩阵对所述错误帧的所有骨骼向量进行校正,从而将人物的整体姿态还原回去,实现前倾后仰补全。先对主干躯体相关的向量进行球面差值,再计算关键骨骼向量中的第二类向量与目标向量的旋转矩阵,通过旋转矩阵对人物的整体姿态进行还原,在姿态还原前将其他的向量调整到位,提高人物的整体姿态的还原效果。

旋转矩阵,是在乘以一个向量的时候有改变向量的方向但不改变大小的效果并保持了手性的矩阵。

目标向量是视频中与该错误帧的帧数相差最小的正确帧中的第二类向量。比如,该错误帧是第100帧,其中,第95~99帧均为错误帧,第90~94帧均为正确帧,第101~102帧均为错误帧,第103~105帧均为正确帧,则与该错误帧(第100帧)的帧数相差最小的正确帧是第103帧,则目标向量是第103帧中的第二类向量。

可选的,步骤204中,电子设备按照当前修正策略对错误帧进行修正,具体可以包括:电子设备按照手脚跳变补全策略对错误帧进行修正。

电子设备按照手脚跳变补全策略对错误帧进行修正,具体可以包括如下步骤:

(71)若所述关键骨骼向量中的第三类向量包含错误骨骼向量,电子设备对所述错误帧中第三类向量包含的错误骨骼向量进行球面插值处理;

(72)电子设备对所述错误帧中除第三类向量之外的其他骨骼向量进行球面插值处理。

本申请实施例中,球面差值的具体实施可以参见上述步骤(51)至步骤(52)的具体描述,此处不再赘述。手脚跳变补全策略中,先对错误帧中第三类向量包含的错误骨骼向量进行球面插值处理,对错误帧中第三类向量包含的正确骨骼向量保持不变,再对错误帧中除第三类向量之外的其他骨骼向量进行球面插值处理,由于之前已经进行旋转错误补全和前倾后仰补全,手脚跳变补全时,首先对与手脚相关的第三类向量中的错误骨骼向量进行球面差值,实现手脚跳变补全,由于手脚跳变补全策略之前已经进行过错误帧检测,主干躯体相关的向量可能会有细微的变动,对错误帧中除第三类向量之外的其他骨骼向量进行球面插值处理,可以对主干躯体相关的向量进行球面差值,让主干躯体运动流畅。

在一个实施例中,本申请实施例的整体流程的伪代码如下:

i←0

while i<5

错误帧矩阵检测(对应步骤201和202、)

旋转错误补全(对应步骤(51)和(52))

错误帧矩阵检测(对应步骤201和202)

前倾后仰补全(对应步骤(61)、(62)和(63))

错误帧矩阵检测(对应步骤201和202)

手脚跳变补全(对应步骤(71)和(72))

i←i+1

End While

本申请实施例,通过循环多次并逐步增加设定阈值,使得错误帧优化结果更平滑。

上述主要从方法侧执行过程的角度对本申请实施例的方案进行了介绍。可以理解的是,电子设备为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所提供的实施例描述的各示例的单元及算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

本申请实施例可以根据上述方法示例对电子设备进行功能单元的划分,例如,可以对应各个功能划分各个功能单元,也可以将两个或两个以上的功能集成在一个处理单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。需要说明的是,本申请实施例中对单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。

请参阅图5,图5为本申请实施例提供的一种视频帧修正装置的结构示意图,该视频帧修正装置500应用于电子设备,该视频帧修正装置500可以包括确定单元501和修正单元502,其中:

确定单元501,用于根据检测结果矩阵确定视频中的错误帧;

所述确定单元501,还用于确定当前修正策略;

修正单元502,用于按照所述当前修正策略对所述错误帧进行修正,得到所述视频的修正3D骨骼数据。

可选的,该视频帧修正装置500还可以包括错误帧检测单元503和矩阵生成单元504;

所述错误帧检测单元503,用于在确定单元501根据检测结果矩阵确定视频中的错误帧之前,执行当前次错误帧检测,得到当前次检测结果;

矩阵生成单元504,用于根据所述当前次检测结果生成所述检测结果矩阵。

可选的,所述确定单元501,用于在修正单元502按照所述当前修正策略对所述错误帧进行修正之后,在所述视频的累积修正次数达到第一阈值的情况下,确定所述视频完成视频帧修正;

所述错误帧检测单元503,还用于在所述视频的累积修正次数小于所述第一阈值的情况下,执行下一次错误帧检测。

可选的,该视频帧修正装置500还可以包括检测结果修改单元505。

所述检测结果修改单元505,用于在所述错误帧检测单元503执行当前次错误帧检测,得到当前次检测结果之后,在所述当前次检测结果中存在连续正确帧的数量小于或等于第二阈值的情况下,将所述连续正确帧修改为错误帧,得到修改后的当前次检测结果;

所述矩阵生成单元504根据所述当前次检测结果生成所述检测结果矩阵,包括:根据所述修改后的当前次检测结果生成所述检测结果矩阵。

可选的,该视频帧修正装置500还可以包括更新单元506。

所述确定单元501,还用于在所述错误帧检测单元503执行当前次错误帧检测,得到当前次检测结果之后,确定所述视频的累积执行错误帧检测的次数;

所述矩阵生成单元504,还用于在所述累积执行错误帧检测的次数小于或等于M的情况下,根据所述当前次检测结果生成所述检测结果矩阵;M为大于或等于3的整数;

所述更新单元506,用于在所述累积执行错误帧检测的次数大于M的情况下,更新所述当前次检测结果;

所述矩阵生成单元504根据所述当前次检测结果生成所述检测结果矩阵,包括:根据更新后的当前次检测结果生成所述检测结果矩阵。

可选的,所述错误帧检测单元503执行当前次错误帧检测,得到当前次检测结果,包括:获取所述视频的3D骨骼数据;所述3D骨骼数据包括原始3D骨骼数据或修正3D骨骼数据;根据所述视频的3D骨骼数据计算所述视频中连续两帧的关键骨骼向量;计算所述连续两帧之间对应的关键骨骼向量的相似度;在所述相似度小于所述关键骨骼向量对应的预设阈值的情况下,判定所述连续两帧的当前次检测结果为错误帧;在所述相似度大于所述关键骨骼向量对应的预设阈值的情况下,判定所述连续两帧的当前次检测结果为正确帧。

可选的,所述更新单元506更新所述当前次检测结果,包括:维持所述当前次检测结果中与第一轮检测结果相同的视频帧的检测结果;所述第一轮检测结果包括前M次执行错误帧检测后参与修正的所有错误帧和除所述所有错误帧之外的正确帧;更新所述当前次检测结果为错误帧并且所述第一轮检测结果为正确帧的视频帧的检测结果;维持所述当前次检测结果为正确帧并且所述第一轮检测结果为错误帧的视频帧的检测结果。

可选的,所述关键骨骼向量对应的预设阈值基于所述关键骨骼向量和所述累积执行错误帧检测的次数确定;

其中,当所述关键骨骼向量确定时,所述累积执行错误帧检测的次数与所述预设阈值正相关。

可选的,所述关键骨骼向量包括第一类向量、第二类向量和第三类向量中的任一种;

所述第一类向量包括左右肩膀向量;

所述第二类向量包括胯骨中心根节点到脊柱中心节点向量;

所述第三类向量包括:左前臂向量、左上臂向量、左小腿向量、左大腿向量、右前臂向量、右上臂向量、右小腿向量和右大腿向量中的至少一种;

其中,当所述累积执行错误帧检测的次数确定时,所述第一类向量对应的预设阈值小于所述第三类向量对应的预设阈值,所述第三类向量对应的预设阈值小于所述第二类向量对应的预设阈值。

可选的,若当前修正次数为(3N+1)次,则所述当前修正策略包括旋转错误补全策略;

若所述当前修正次数为(3N+2)次,则所述当前修正策略包括前倾后仰补全策略;

若所述当前修正次数为(3N+3)次,则所述当前修正策略包括手脚跳变补全策略,N为大于或等于0的整数。

可选的,所述修正单元502按照所述当前修正策略对所述错误帧进行修正,包括:在所述当前修正策略包括旋转错误补全策略的情况下,对所述错误帧的所有骨骼向量中除所述第一类向量、所述第二类向量和所述第三类向量之外的其他骨骼向量进行球面插值处理,对所述关键骨骼向量中的错误骨骼向量进行球面插值处理。

可选的,所述修正单元502按照所述当前修正策略对所述错误帧进行修正,包括:在所述当前修正策略包括前倾后仰补全策略的情况下,对所述错误帧的所有骨骼向量中除所述第一类向量、所述第二类向量和所述第三类向量之外的其他骨骼向量进行球面插值处理,对所述第一类向量、所述第二类向量和所述第三类向量中的错误骨骼向量进行球面插值处理;在所述关键骨骼向量中的所述第二类向量为错误骨骼向量的情况下,计算所述关键骨骼向量中的第二类向量与目标向量的旋转矩阵,所述目标向量是所述视频中与所述错误帧的帧数相差最小正确帧中的第二类向量;根据所述旋转矩阵对所述错误帧的所有骨骼向量进行校正。

可选的,所述修正单元502按照所述当前修正策略对所述错误帧进行修正,包括:在所述当前修正策略包括手脚跳变补全策略的情况下,所述关键骨骼向量中的第三类向量包含错误骨骼向量,对所述错误帧中第三类向量包含的错误骨骼向量进行球面插值处理;对所述错误帧中除第三类向量之外的其他骨骼向量进行球面插值处理。

其中,本申请实施例中的确定单元501、修正单元502、错误帧检测单元503、矩阵生成单元504、检测结果修改单元505和更新单元506可以是电子设备的处理器。

本申请实施例中,可以根据检测结果矩阵确定视频中的错误帧,对错误帧进行修正,不会影响视频帧中原本表现比较好的视频帧,从而提高视频帧的修正效果。

请参阅图6,图6是本申请实施例提供的一种电子设备的结构示意图,如图6所示,该电子设备600包括处理器601和存储器602,处理器601、存储器602可以通过通信总线603相互连接。通信总线603可以是外设部件互连标准(Peripheral Component Interconnect,简称PCI)总线或扩展工业标准结构(Extended Industry Standard Architecture,简称EISA)总线等。通信总线603可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。存储器602用于存储计算机程序,计算机程序包括程序指令,处理器601被配置用于调用程序指令,上述程序包括用于执行图1或2所示的方法。

处理器601可以是通用中央处理器(CPU),微处理器,特定应用集成电路(application-specific integrated circuit,ASIC),或一个或多个用于控制以上方案程序执行的集成电路。

存储器602可以是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,RAM)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(ElectricallyErasable Programmable Read-Only Memory,EEPROM)、只读光盘(Compact Disc Read-Only Memory,CD-ROM)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器可以是独立存在,通过总线与处理器相连接。存储器也可以和处理器集成在一起。

该电子设备600还可以包括显示屏、扬声器等装置,还可以包括射频电路、天线等装置。

本申请实施例中,可以根据检测结果矩阵确定视频中的错误帧,对错误帧进行修正,不会影响视频帧中原本表现比较好的视频帧,从而提高视频帧的修正效果。

本申请实施例还提供一种计算机可读存储介质,其中,该计算机可读存储介质存储用于电子数据交换的计算机程序,该计算机程序使得计算机执行如上述方法实施例中记载的任何一种方法的部分或全部步骤。

需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

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

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

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

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

本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器、随机存取器、磁盘或光盘等。

以上对本申请实施例进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

27页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种图形三维旋转和透视方法、装置、设备

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!