具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本说明书。但是本说明书能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本说明书内涵的情况下做类似推广,因此本说明书不受下面公开的具体实施的限制。
在本说明书一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本说明书一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
首先,对本说明书一个或多个实施例涉及的名词术语进行解释。
AI:(Artificial Intelligence,人工智能)是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。
状态机:由状态寄存器和组合逻辑电路构成,能够根据控制信号按照预先设定的状态进行状态转移,是协调相关信号动作、完成特定操作的控制中心。有限状态机简写为FSM(Finite State Machine),主要分为2大类:第一类,若输出只和状态有关而与输入无关,则称为Moore状态机;第二类,输出不仅和状态有关而且和输入有关系,则称为Mealy状态机。
在本说明书中,提供了一种视频处理方法,本说明书同时涉及一种视频处理装置,一种计算设备,以及一种计算机可读存储介质,在下面的实施例中逐一进行详细说明。
实际应用中,在利用状态机完成动作的计时计数时,状态机的主要原理是将一个动作抽象为一组关键帧的有序队列,每一个关键帧即为一个重要状态。例如对开合跳动作进行计数时,不用关注每一帧的动作,而需要注重关注手举到最高双脚张的最开,以及手放到最低双脚并到最拢这两个时刻;当在一定时间内,按序以达到状态机的每一个状态要求(对应开合跳动作的状态要求),即认为用户完成了一次开合跳动作。不难看出,通过状态机完成动作的计数需要定义动作对应的状态,而现有技术中,大多数采用人工参与的方式完成状态的定义,对计算资源和人力资源的利用较大,因此亟需一种有效的方案以解决上述问题。
有鉴于此,参见图1所示的示意图,在获取到目标动作关联的视频帧序列及其对应的多个关键点后,为了能够快速且准确的完成目标动作的动作状态构建,可以根据视频帧序列在多个关键点中筛选出目标关键点,并确定目标关键点对应的目标运动轨迹曲线,实现通过运动轨迹曲线可以明确视频帧序列中最能够体现目标动作特征的目标视频帧,之后创建目标视频帧对应的状态特征值和状态变化信息,再根据状态特征值和状态变化信息构建目标动作对应的动作状态即可,以用于下游业务完成对状态机的更新;实现了快速且精准的完成目标动作的动作状态构建,有效的节省了人力资源和时间资源。
图2示出了根据本说明书一实施例提供的一种视频处理方法的流程图,具体包括以下步骤:
步骤S202,获取目标动作关联的视频帧序列以及所述视频帧序列对应的多个关键点。
本实施例提供的视频处理方法用于定义动作状态机的动作状态,该动作状态对应目标动作;为方便描述,本实施例以目标动作为对应两状态的动作为例进行描述,例如开合跳动作、蹲起动作、俯卧撑动作、引体向上动作等;关于动作状态机存在多个状态的描述均可参见本实施例相同或相应的描述内容,在此不作过多赘述。
具体的,目标动作具体是指需要通过动作状态机进行识别的动作,其包括但不限于开合跳动作、俯卧撑动作、引体向上动作、蹲起动作等;在定义动作状态机对应目标动作的状态时,则需要先获取目标动作关联的视频帧序列,以通过视频帧序列完成动作的提取,即通过视频帧序列提取动作关键帧以及关键帧状态的判定属性,以此完成目标动作状态的定义。相应的,视频帧序列具体是指录制目标动作的视频对应的视频帧组成的序列,视频帧序列中包含的视频帧按照时间顺序排序;相应的,关键点具体是指用户在做出目标动作时,发生位置变化的各个骨架点,即用户的各个关节点。
基于此,当需要针对动作状态机定义目标动作对应的状态时,为了能够提高效率的同时降低人工消耗成本,可以先获取目标动作关联的视频帧序列,以及视频帧序列对应的多个关键点,以方便后续从多个关键点中定位目标动作关联强度较高的目标关键点,并结合视频帧序列筛选出最能够体现目标动作的视频帧,从而完成状态的定义处理操作。
进一步的,在确定多个关键点时,由于视频帧序列中包含的每个视频帧均存在用户作出目标动作时的姿态,因此每个视频帧都存在对应的关键点数据,而每一视频帧的关键点数据又包含不同的关键点类型;如开合跳动作中,手腕关节点,在每一视频帧中都会发生位置变化,这就导致在确定视频帧序列对应的关键点时,会得到大量类型相同但数据信息不同的关键点,因此为了能够方便后续快速的定义目标动作对应的动作状态,则可以在关键点识别后,按照类型对关键点进行归类,从而得到视频帧序列对应的多个关键点。本实施例中,具体实现方式如下:
获取所述目标动作关联的动作视频,通过对所述动作视频进行分帧处理获得所述视频帧序列;根据预设的关键点识别算法对所述视频帧序列中包含的视频帧分别进行处理,获得每个视频帧对应的子关键点数据;基于每个视频帧对应的子关键点数据确定所述视频帧序列对应的所述多个关键点。
具体的,动作视频具体是指录制目标动作的视频片段;相应的,分帧处理具体是指按照分帧处理规则对动作视频进行处理的操作,以根据分帧处理结果得到动作视频对应的视频帧序列;相应的,关键点识别算法具体是指能够对动作视频中作出目标动作的用户,其对应的关键点进行识别的算法,可以采用关键点识别模型实现,即将视频帧序列中包含的各个视频帧分别输入至关键点识别模型,以获得模型输出的对应视频帧序列中每个视频帧的子关键点数据。相应的,子关键点数据具体是指每一视频帧中,关联目标动作的各个关节点的位置数据。
基于此,当需要针对动作状态机定义关联目标动作的动作状态时,可以先获取目标动作关联的动作视频,之后通过对动作视频进行分帧处理,得到视频帧序列;此时再结合关键点识别算法对视频帧序列中包含的视频帧分别进行处理,即可得到每个视频对应的子关键点数据;最后再基于每个视频帧对应的子关键点数据即可确定视频帧序列对应的多个关键点,以方便后续用于定义动作状态。
实际应用中,在基于每个视频对应的子关键点数据确定多个关键点时,实则是基于关联目标动作的关节点的位置数据对不同类型的关节点进行归类,从而得到代表各个类型的关节点;如目标动作为开合跳动作,则确定的关节点可以包括手腕关节点、肩关节点、脚腕关节点、膝盖关节点等,从而方便后续构建各个关节点对应的运动轨迹曲线,以定位最能够体现开合跳动作的视频帧进行状态构建处理操作。
本实施例以目标动作为开合跳动作为例对视频处理方法进行说明,其他目标动作的动作状态的构建过程,均可参见本实施例相同或相应的描述内容,本实施例在此不作过多赘述。
具体的,获取针对用户做开合跳动作录制的动作视频30s,按照12帧/秒的单位对动作视频进行分帧处理,得到包含360个视频帧的视频帧序列。之后通过预设的人体关键点算法对视频帧序列进行处理,得到每个视频帧中用户对应的各个关节点数据,之后通过将关节点数据进行整合,根据整合结果确定视频帧序列对应的关节点包括手腕关节点、肩膀关节点……脚腕关节点等,以方便后续针对各个关节点构建运动轨迹曲线,以支持定义出开合跳动作的动作状态。
综上,在对动作视频进行分帧处理得到视频帧序列后,采用关键点识别算法对每个视频帧分别进行处理,从而获得子关键点数据,之后以此确定多个关键点,可以保证关键点确定的精准度,从而方便后续筛选出关联目标动作较强的目标关键点,再进行动作状态的构建。
步骤S204,根据所述视频帧序列在所述多个关键点中筛选目标关键点,并确定所述目标关键点对应的目标运动轨迹曲线。
具体的,在上述获取到视频帧序列及其对应的多个关键点后,进一步的,考虑到多个关键点是关联用户作出目标动作时的各个关节点,而部分关节点与目标动作的关联程度可能并不高。如果此时以多个关键点为基础进行状态构建,将会导致动作状态中混入冗余数据,无法保证动作状态的准确性;因此在确定多个关键点后,可以结合视频帧序列中包含的各个视频帧对多个关键点进行过滤,以根据过滤结果从中筛选出与目标动作关联度较强的目标关键点,之后再确定其对应的目标运动轨迹曲线,实现后续进行动作状态的构建即可。
其中,目标关键点具体是指多个关键点中与目标动作关联度较强的关节点;比如开合跳动作,当确定视频帧序列对应的关节点包括手腕关节点、脚腕关节点、眼部关节点后,经过分析确定开合跳动作仅通过肢体变化即可实现,并不会涉及眼部关节点的变化,因此可以剔除眼部关节点,将剩余的作为开合跳动作对应的目标关节点,以用于后续使用。相应的,目标运动轨迹曲线具体是指目标动作在执行过程中,基于目标关键点发生的位置变化构建出的运动轨迹曲线,通过目标运动轨迹曲线可以确定目标关键点在发生位置变化时的极值点,通过极值点可以明确目标关键点的运动轨迹周期,以方便后续确定每个周期最能够体现目标关键点处于运动变化状态的视频帧。
进一步的,在根据视频帧序列从多个关键点中筛选目标关键点时,考虑到每个关键点都是在目标动作执行过程中被识别到的关键点,为了避免造成与目标动作关联度较强的关键点遗漏,以及与目标动作关联度较弱的关键点留存,可以通过创建各个关键点对应的运动轨迹曲线分析出目标关键点,再以此为基础确定目标运动轨迹曲线即可。本实施例中,具体实现方式如步骤S2042至步骤S2046。
步骤S2042,根据所述视频帧序列构建每个关键点对应的运动轨迹曲线,并确定每个关键点对应的运动轨迹曲线的特征信息。
具体的,运动轨迹曲线具体是指每个关键点对应的运动轨迹曲线,特征信息具体是指表征运动轨迹曲线能够体现出的含义对应的信息,包括但不限于关键点特征轨迹变化幅度、关键点特征轨迹周期、关键点特征轨迹极值点;也就是说,当基于每个关键点的位置变化信息构建出如图3所示的运动轨迹曲线时,通过运动轨迹曲线可以体现出关键点特征轨迹周期、关键点特征轨迹变化幅度以及关键点特征轨迹极值点;其中,关键点特征轨迹变化幅度用于表征关键点与目标动作的参与度强弱,幅度越大表明参与度越大;关键点特征轨迹周期用于表征关键点运动轨迹稳定性,周期性越强表明越稳定;关节点特征轨迹极值点用于表征关键点运动轨迹的简易程度,极值点越少表明越易于分辨。
基于此,当得到视频帧序列及其对应的多个关键点后,可以基于视频帧序列构建各个关键点对应的运动轨迹曲线,并构建各个运动轨迹曲线的特征信息,以方便后续以特征信息为基础,确定每个关键点与目标动作的关联强度,从而可以准确的提取目标关键点。
进一步的,由于每个关键点的运动轨迹都是通过连续的视频帧体现出来的,因此在进行运动轨迹曲线创建时,可以先从视频帧序列中标定初始视频帧和关联视频帧,之后通过计算视频帧中包含的关键点之间的相似度方式,体现关键点在每一视频帧中发生的位置变化,以此构建出对应每个关键点的运动轨迹曲线,再进行后续的目标关键点筛选即可。本实施例中,具体实现方式如下:
在所述视频帧序列中确定初始视频帧以及关联视频帧;将所述初始视频帧中包含的初始关键点作为基准关键点,以及将所述关联视频帧中包含的关联关键点作为动作关键点;计算所述动作关键点与所述基准关键点的相似度,根据相似度计算结果构建所述多个关键点中每个关键点对应的运动轨迹曲线。
具体的,初始视频帧具体是指视频帧序列中位于序列首位置的视频帧;相应的,关联视频帧具体是指首位置之后剩余的视频帧;相应的,基准关键点具体是指初始视频帧中包含的人体骨架点,即对应目标动作的关节点。相应的,动作关键点具体是指每一个关联视频帧中包含的人体骨架点,即对应目标动作的关节点。相应的,相似度具体是指表征任意一个动作关键点与基准关键点之间的相似程度,用于体现重复出现的目标动作的动作结束和动作开始帧数。
基于此,在得到视频帧序列后,为了能够从多个关键点中准确的筛选出目标关键点,此时可以先在视频帧序列中确定位于首位置的视频帧作为初始视频帧,以及将剩余的视频帧作为关联视频帧;之后选择初始视频帧中包含的初始关键点作为基准关键点,每个关联视频帧中包含的关联关键点作为动作关键点,再计算基准关键点与每个动作关键点之间的相似度,用于体现动作关键点在位置发生变化时,相对于基准关键点的相似程度;最后即可根据相似度计算结果构建出每个关键点对应的运动轨迹曲线,以用于后续准确的筛选出与目标动作相关度较高的目标关键点。
需要说明的是,在构建运动轨迹曲线时,考虑到每个关键点的位置变化会分别对应x轴方向以及y轴方向;也就是说,每个关键点的x轴方向和y轴方向分别为两个单独的运动轨迹,因此在构建每个关键点对应的运动轨迹曲线时,可以综合两轴方向的运动轨迹同时完成,以保证运动轨迹曲线可以充分表征各个动作关键点相对于基准关键点的运动变化情况。
此外,在计算动作关键点与基准关键点之间的相似度时,实则将初始视频帧中的基准关键点依次和后续的关联视频帧中的动作关键点计算OKS(Object KeypointSimilarity),以此表征关键点之间的相似度。如图3所示的示意图,纵坐标为动作关键点与基准关键点之间的相似度,横坐标则可以是视频帧的帧数或者时间节点,具体应用时,可以根据实际应用场景设定,本实施例在此不作任何限定。
综上,通过采用计算基准关键点和动作关键点相似度的方式,确定每个关联视频帧中的各个关键点相对于初始视频帧中的各个关键点的变化情况,以此构建出能够充分体现各个关键点运动轨迹的曲线,可以通过运动轨迹曲线直观的了解到各个关键点与目标动作的相关性强弱,方便后续精准的筛选出目标关键点进行使用。
步骤S2044,根据所述特征信息在所述多个关键点中筛选出所述目标动作关联的所述目标关键点。
具体的,在上述完成每个关键点对应的运动轨迹曲线的构建,以及确定运动轨迹曲线的特征信息后,进一步的,为了能够通过特征信息精准的筛选出满足后续使用需求的目标关键点,可以综合运动轨迹曲线在多个维度的特征信息作为筛选条件,以筛选出与目标动作关联度较高的目标关键点。基于此,根据特征信息筛选目标关键点的过程如下所述:
在所述多个关键点中,选择所述关键点特征轨迹变化幅度大于预设幅度阈值的关键点作为初始标关键点,以及选择所述关键点特征轨迹周期满足预设周期条件的关键点作为初始标关键点,以及选择所述关键点特征轨迹极值点小于预设极值点数量的关键点作为初始标关键点;计算每个初始关键点对应的目标分值,基于所述目标分值在初始关键点中确定所述目标动作关联的所述目标关键点。
具体的,预设幅度阈值具体是指筛选初始关键点的条件,通过幅度阈值可以确定关键点的特征轨迹变化幅度大小,以体现关键点在目标动作变化中的参与度;预设周期条件具体是指筛选初始关键点的条件,通过周期条件可以确定关键点的特征轨迹周期性强弱,以体现关键点在目标动作变化中的稳定性;预设极值点数量具体是指筛选初始关键点的条件,通过极值点数量可以确定关键点的特征轨迹的简易程度,以体现关键点在目标动作变化中的易于分辨性。
实际应用中,考虑到运动轨迹曲线中关键点的特征轨迹变化幅度越大,说明该关键点在目标动作变化中参与度越大,因此可以确定该关键点是决定目标动作运动状态的一个重要关键点,则可以选择该关键点作为初始关键点。同时关键点的特征轨迹的周期性越强,说明该关键点轨迹稳定越规律,因此可以确定该关键点是决定目标动作运动状态的一个重要关键点,则可以选择该关键点作为初始关键点。此外关键点的特征轨迹一个周期内的极值点个数越少(非单调),说明该关键点在目标动作变化中运动轨迹越简单且易于分辨,因此可以确定该关键点是决定目标动作运动状态的一个重要关键点,则可以选择该关键点作为初始关键点。
也就是说,在得到多个关键点及其对应的运动轨迹曲线后,可以选择关键点特征轨迹变化幅度大于预设幅度阈值的关键点作为初始标关键点,以及选择关键点特征轨迹周期满足预设周期条件的关键点作为初始标关键点,以及选择关键点特征轨迹极值点小于预设极值点数量的关键点作为初始标关键点;以方便后续进行使用。
更进一步的,在得到初始关键点后,为了保证目标关键点筛选的准确度,此时还可以采用加权求和的方式计算各个关键点对应的目标分值,之后按照目标分值对初始关键点进行排序,以根据需求选择排序靠前的n个初始关键点作为目标关键点即可,以用于后续进行动作状态的定义。也就是说,分值越高的初始关键点,其对应的特征轨迹越能够代表目标动作的变化,因此可以选择分值高的关键点作为目标关键点。
此外,考虑到关联度较高的关键点可能存在重复表征的问题,例如开合跳动作,手腕关节点和手肘关键点的位置变化,都能够体现开合跳中手臂的运动,因此二者仅保留一个关节点也能够完成动作状态的构建。基于此,当得到初始关键点后,还可以根据预设的筛选规则,选择具有明显父节点和子节点关系的关键点进行去重(属于同一肢体的关节点),最后将剩余的关键点作为目标关键点即可,不仅可以降低目标关键点数量,还降低了冗余关键点的干扰,从而方便后续可以准确的定义目标动作对应的动作状态。
具体实施时,在确定目标关键点时,除上述方案外还可以根据实际需求选择满足业务场景的方案实现,本实施例在此不作任何限定。
综上,通过采用多个维度综合分析的方式确定目标关键点,不仅可以避免出现关键点遗漏的问题,还能够保证保留的关键点都是能够充分反映目标动作的关键点,从而方便后续以目标关键点为基础构建动作状态。
步骤S2046,在每个关键点对应的运动轨迹曲线中确定所述目标关键点对应的所述目标运动轨迹曲线。
具体的,在上述筛选出目标关键点后,此时即可将目标关键点对应的运动轨迹曲线作为目标运动轨迹曲线,以方便后续进行使用。
沿用上例,当得到对应开合跳动作的关节点后,可以选择视频帧中的第一帧作为初始视频帧,以及将第一帧之后的359帧作为关联动作帧;并选择初始视频帧中的各个关节点作为基准关节点,359个关联动作帧中的各个关节点作为动作关节点;依次计算关联视频帧中包含的各个关节点与初始视频帧中相同类型的各个关节点之间的OKS,以根据计算结果构建出如图3所示的运动轨迹曲线,以此类推,将分别构建手腕关节点、肩膀关节点……脚腕关节点中各个关节点对应的运动轨迹曲线。
进一步的,确定各个关节点对应的运动轨迹曲线对应的特征轨迹变化幅度、特征轨迹周期以及特征轨迹极值点;将各个关节点对应的特征轨迹变化幅度与预设幅度阈值进行比较,根据比较结果选择大于幅度阈值的关节点作为第一关节点;再将第一关节点对应的特征轨迹周期与预设周期条件进行比较,根据比较结果选择满足条件的关节点作为第二关节点;将第二关节点对应的特征轨迹极值点与预设极值点数量进行比较,根据比较结果选择小于极值点数量的关节点作为第三关节点。
更进一步的,考虑到第三关节点存在位于同一肢体的关节点,因此可以按照同一肢体关节点去重的规则,对第三关节点进行去重处理,即将属于同一肢体的关节点仅保留一个,剩余的剔除,最后根据去重处理结果得到对应开合跳动作的目标关节点{手腕关节点和脚腕关节点}。最后确定手腕关节点和脚腕关节点分别对应的运动轨迹曲线即可,以用于后续定义开合跳动作对应的动作状态。
步骤S206,根据所述目标运动轨迹曲线在所述视频帧序列中确定目标视频帧,创建所述目标视频帧对应的状态特征值和状态变化信息。
具体的,在上述完成目标关键点及其对应的目标运动轨迹曲线的确定后,进一步的,由于目标关键点最能够体现目标动作的运动状态,因此可以在视频帧序列中选择最能够体现目标关键点变化的视频帧作为目标视频帧,以此计算出状态特征值和状态变化信息,才能够准确的构建目标动作对应的动作状态。
其中,目标视频帧具体是指视频帧序列中能够充分体现目标关键点发生位置变化的视频帧,而目标关键点又是关联目标动作强度较高的关键点,因此以目标视频帧为基础能够准确定义目标动作的状态;相应的,状态特征值具体是指对应目标动作的状态判定值,通过状态特征值能够明确动作是否符合标准。相应的,状态变化信息具体是指对应目标动作的变化趋势信息,通过状态变化信息能够明确动作是否发生。
进一步的,在确定目标视频帧时,由于目标关键点中的各个子目标关键点均是与目标动作关联度较高的关键点,而最能够表征各个关键点运动状态的视频帧可能不在同一帧数下,其主要原因是用户在作出目标动作时,可能因为肢体运动标准度不够造成;如果基于不同的帧数分别确定目标视频帧,将会导致针对目标动作定义的动作状态不唯一,因此为避免上述问题产生的影响,可以采用均衡的方式确定目标视频帧。本实施例中,具体实现方式如下:
根据所述目标运动轨迹曲线,确定所述目标关键点中包含的子目标关键点对应的子目标运动轨迹曲线;根据所述子目标运动轨迹曲线,确定所述目标关键点中包含的子目标关键点对应的子目标帧数;根据每个子目标关键点对应的子目标帧数计算所述目标动作的目标帧数;按照所述目标帧数在所述视频帧序列中提取第一视频帧和第二视频帧,作为所述目标视频帧。
具体的,子目标帧数具体是指子目标关键点的运动轨迹特征在一个周期内的极值点所在的帧数;相应的,计算目标动作对应的目标帧数具体是指计算各个子目标关键点所对应的帧数平均值,目标帧数对应的视频帧能够综合各个子目标关键点的运动状态。相应的,第一视频帧具体是指视频帧序列中帧数为1的视频帧,第二视频帧即为目标帧数对应的视频帧。
基于此,当得到目标关键点对应的目标运动轨迹曲线后,可以根据目标运动轨迹曲线确定目标关键点中包含的子目标关键点对应的子目标运动轨迹曲线,再结合子目标运动轨迹曲线定位最能够表征子目标关键点的运动状态的子目标帧数;此时计算子目标帧数的平均值得到目标动作对应的目标帧数;最后按照目标帧数选择视频帧序列中的首位置视频帧作为第一视频帧,以及选择目标帧数对应的视频帧作为第二视频帧,实现后续可以在此基础上完成动作状态的构建。
综上,通过采用计算帧数平均值的方式确定关联目标动作的目标视频帧,可以准确的定位最能够表征各个目标关键点的目标视频帧,以方便后续能够在此基础上准确的定义动作状态,实现在应用阶段可以精准的完成动作计数。
更进一步的,在确定目标动作对应的目标视频帧后,由于目标动作的状态有两个状态决定;例如开合跳动作,需要由脚开的最大和开的最拢两个状态确定一次动作的完成,因此在状态特征值和状态变化信息的确定时,也将结合第一视频帧和第二视频帧完成,本实施例中,具体实现方式如下:
提取所述第一视频帧对应的第一状态特征值,以及所述第二视频帧对应的第二状态特征值;按照预设的调整策略对所述第一状态特征值和所述第二状态特征值分别进行调整,根据调整结果生成所述状态特征值;根据所述第一视频帧和所述第二视频帧在所述视频帧序列中提取目标视频帧序列,基于所述目标视频帧序列生成所述目标动作对应的所述状态变化信息。
具体的,第一状态特征值具体是指对应第一视频帧的状态值,通过第一状态特征值能够明确用户作出的动作是否满足第一视频帧中的动作标准;相应的,第二状态特征值具体是指对应第二视频帧的状态值,通过第二状态特征值能够用户作出的动作是否满足第二视频帧中的动作标准。相应的,目标视频帧序列具体是指从第一视频帧开始到第二视频帧结束,包含的全部视频帧组成的序列。
基于此,当得到第一视频帧及第二视频帧后,可以提取第一视频帧对应的第一状态特征值,以及第二视频帧对应的第二状态特征值,之后按照调整策略对第一状态特征值和第二状态特征值分别进行调整,以实现根据实际需求将状态特征值调整为满足实际应用场景的状态特征值。同时根据第一视频帧和第二视频帧在视频帧序列中提取目标视频帧序列,以根据目标视频帧序列确定第一视频帧到第二视频帧之间的变化趋势,以根据变化趋势确定目标动作对应的状态变化信息,实现后续可以结合状态特征值和状态变化信息构建目标动作对应的动作状态。
沿用上例,在确定目标关节点为手腕关节点和脚腕关节点后,此时根据手腕关节点对应的运动轨迹曲线,确定在一个周期内极值点所在的帧数为12帧,而根据脚腕关节点对应的运动轨迹曲线,确定在一个周期内极值点所在的帧数为11帧,则此时可以选择计算帧数平均值的方式,确定最能够体现开合跳动作的目标视频帧,根据计算结果确定目标帧数为11.5帧,则可以选择第12帧和第1帧作为目标动作对应的目标视频帧。
进一步的,在确定第1视频帧和第12视频帧为开合跳动作对应的目标视频帧后,可以确定第1视频帧对应开合跳的准备动作,第12视频帧对应开合跳的完成动作,即第1视频帧用户肢体动作为手腕最开,脚腕最并拢;第12视频帧用户肢体动作为手腕最合,脚腕最开;从第1视频帧到第12视频帧表征一次开合跳动作的完成。基于此,则此时可以提取第1视频帧对应的第一特征状态值,以及第12视频帧对应的第二特征状态值,之后按照预设的调整策略对第一特征状态值和第二特征状态值分别进行调整,得到对应开合跳动作的状态特征值,同时根据第1视频帧到第12视频帧之间的视频帧确定动作变化趋势,以此确定状态变化信息,以此为基础即可完成动作状态的构建。
其中,第一特征状态值和第二特征状态值可以是衡量手腕或脚腕是否达到标准的特征值,即手腕是否达到设定高度,或两个脚腕之间是否达到预设距离,从而方便在应用阶段可以实现开合跳动作的计数。
综上,通过以第一视频帧和第二视频帧为基础构建状态特征值和状态变化信息,可以保证状态特征值和状态变化信息的准确性,以方便准确定义目标动作对应的动作状态,从而完成状态机的构建。
步骤S208,根据所述状态特征值和所述状态变化信息构建所述目标动作的动作状态。
具体的,在上述完成状态特征值和状态变化信息的构建之后,进一步的,即可根据状态特征值和状态变化信息构建目标动作的动作状态;实现后续当用户做出与目标动作相同的动作时,可以通过动作状态机整合动作状态的参数,实现对用户的动作进行计数。
进一步的,对用户的动作进行计数的过程如下:
基于所述动作状态对动作状态机的参数进行更新,获得目标动作状态机;在采集到待识别动作对应的动作视频片段的情况下,根据所述动作视频片段确定所述待识别动作对应的动作特征值和动作变化信息;将所述动作特征值与所述状态特征值进行特征值比较,以及将所述动作变化信息与所述状态变化信息进行变化信息比较;根据特征值比较和变化信息比较结果确定所述待识别动作对应的完成信息,基于所述完成信息对所述待识别动作进行计数。
具体的,目标动作状态机具体是指能够对目标动作进行识别并计数的状态机;动作视频片段具体是指用户作出待识别动作后采集到的视频片段;相应的,动作特征值具体是指待识别动作对应视频片段中,动作准备阶段和动作完成阶段所在视频帧的状态特征值;相应的,动作变化信息具体是指待识别动作对应的变化信息。相应的,完成信息具体是指待识别动作是否完成目标动作,完成计数加1,反之加0。
基于此,当目标动作对应的动作状态构建完成后,此时即可基于动作状态对动作状态机的参数进行更新,以获得能够对目标动作进行计数的目标动作状态机;之后在采集到其他用户学习目标动作,做出的待识别动作对应的动作视频片段后,可以根据动作视频片段确定待识别动作对应的动作特征值和动作变化信息;此时将动作特征值与目标动作对应的状态特征值进行特征值比较,以及将动作变化信息与目标动作对应的状态变化信息进行变化信息比较,以根据变化结果确定用户作出的待识别动作是否达到目标动作的完成标准;若是,则根据特征值比较结果和变化信息比较结果确定完成信息为完成,并基于完成信息对待识别动作进行计数+1;若否,则根据特征值比较结果和变化信息比较结果确定完成信息为未完成,并基于完成信息对待识别动作进行计数+0。
沿用上例,当确定开合跳动作对应的状态特征值和状态变化信息后,此时可以结合二者构建开合跳动作对应的动作状态,并以此将动作状态机更新为能够对开合跳动作进行计数的目标动作状态机。基于此,当用户甲进行开合跳锻炼时,可以采集用户甲做出的待识别开合跳动作;之后将其对应的动作特征值和动作变化信息,以及目标动作状态机中的状态特征值和状态变化信息分别进行比较,根据比较结果确定用户甲完成开合跳动作的情况下,则开合跳计数加1,反之加0,以实现对用户甲开合跳动作进行计数。
本说明书提供的视频处理方法,在获取到目标动作关联的视频帧序列及其对应的多个关键点后,为了能够快速且准确的完成目标动作的动作状态构建,可以根据视频帧序列在多个关键点中筛选出目标关键点,并确定目标关键点对应的目标运动轨迹曲线,实现通过运动轨迹曲线可以明确视频帧序列中最能够体现目标动作特征的目标视频帧,之后创建目标视频帧对应的状态特征值和状态变化信息,再根据状态特征值和状态变化信息构建目标动作对应的动作状态即可,以用于下游业务完成对状态机的更新;实现了快速且精准的完成目标动作的动作状态构建,有效的节省了人力资源和时间资源。
下述结合附图4,以本说明书提供的视频处理方法在俯卧撑动作计数场景中的应用为例,对所述视频处理方法进行进一步说明。其中,图4示出了本说明书一实施例提供的一种视频处理方法的处理流程图,具体包括以下步骤:
步骤S402,获取目标动作关联的动作视频,通过对动作视频进行分帧处理获得视频帧序列。
步骤S404,根据预设的关键点识别算法对视频帧序列中包含的视频帧分别进行处理,获得每个视频帧对应的子关键点数据。
步骤S406,基于每个视频帧对应的子关键点数据确定视频帧序列对应的多个关键点。
步骤S408,在视频帧序列中确定初始视频帧以及关联视频帧。
步骤S410,将初始视频帧中包含的初始关键点作为基准关键点,以及将关联视频帧中包含的关联关键点作为动作关键点。
步骤S412,计算动作关键点与基准关键点的相似度,根据相似度计算结果构建多个关键点中每个关键点对应的运动轨迹曲线。
步骤S414,确定每个关键点对应的运动轨迹曲线的特征信息,并根据特征信息在多个关键点中筛选出目标动作关联的目标关键点。
具体的,每个关键点对应的特征信息包括但不限于关键点特征轨迹变化幅度、关键点特征轨迹周期、关键点特征轨迹极值点;相应的,在多个关键点中,选择关键点特征轨迹变化幅度大于预设幅度阈值的关键点作为初始标关键点,以及选择关键点特征轨迹周期满足预设周期条件的关键点作为初始标关键点,以及选择关键点特征轨迹极值点小于预设极值点数量的关键点作为初始标关键点;计算每个初始关键点对应的目标分值,基于目标分值在初始关键点中确定目标动作关联的目标关键点。
步骤S416,在每个关键点对应的运动轨迹曲线中确定目标关键点对应的目标运动轨迹曲线。
步骤S418,根据目标运动轨迹曲线,确定目标关键点中包含的子目标关键点对应的子目标运动轨迹曲线。
步骤S420,根据子目标运动轨迹曲线,确定目标关键点中包含的子目标关键点对应的子目标帧数。
步骤S422,根据每个子目标关键点对应的子目标帧数计算目标动作的目标帧数。
步骤S424,按照目标帧数在视频帧序列中提取第一视频帧和第二视频帧。
步骤S426,提取第一视频帧对应的第一状态特征值,以及第二视频帧对应的第二状态特征值。
步骤S428,按照预设的调整策略对第一状态特征值和第二状态特征值分别进行调整,根据调整结果生成状态特征值。
步骤S430,根据第一视频帧和第二视频帧在视频帧序列中提取目标视频帧序列,基于目标视频帧序列生成目标动作对应的状态变化信息。
步骤S432,根据状态特征值和状态变化信息构建目标动作的动作状态,并基于动作状态对动作状态机的参数进行更新,获得目标动作状态机。
进一步的,在采集到待识别动作对应的动作视频片段的情况下,根据动作视频片段确定待识别动作对应的动作特征值和动作变化信息;将动作特征值与状态特征值进行特征值比较,以及将动作变化信息与状态变化信息进行变化信息比较;根据特征值比较和变化信息比较结果确定待识别动作对应的完成信息,基于完成信息对待识别动作进行计数。
综上所述,在获取到目标动作关联的视频帧序列及其对应的多个关键点后,为了能够快速且准确的完成目标动作的动作状态构建,可以根据视频帧序列在多个关键点中筛选出目标关键点,并确定目标关键点对应的目标运动轨迹曲线,实现通过运动轨迹曲线可以明确视频帧序列中最能够体现目标动作特征的目标视频帧,之后创建目标视频帧对应的状态特征值和状态变化信息,再根据状态特征值和状态变化信息构建目标动作对应的动作状态即可,以用于下游业务完成对状态机的更新;实现了快速且精准的完成目标动作的动作状态构建,有效的节省了人力资源和时间资源。
与上述方法实施例相对应,本说明书还提供了视频处理装置实施例,图5示出了本说明书一实施例提供的一种视频处理装置的结构示意图。如图5所示,该装置包括:
获取模块502,被配置为获取目标动作关联的视频帧序列以及所述视频帧序列对应的多个关键点;
确定模块504,被配置为根据所述视频帧序列在所述多个关键点中筛选目标关键点,并确定所述目标关键点对应的目标运动轨迹曲线;
创建模块506,被配置为根据所述目标运动轨迹曲线在所述视频帧序列中确定目标视频帧,创建所述目标视频帧对应的状态特征值和状态变化信息;
构建模块508,被配置为根据所述状态特征值和所述状态变化信息构建所述目标动作的动作状态。
一个可选的实施例中,所述获取模块502进一步被配置为:
获取所述目标动作关联的动作视频,通过对所述动作视频进行分帧处理获得所述视频帧序列;根据预设的关键点识别算法对所述视频帧序列中包含的视频帧分别进行处理,获得每个视频帧对应的子关键点数据;基于每个视频帧对应的子关键点数据确定所述视频帧序列对应的所述多个关键点。
一个可选的实施例中,所述确定模块504进一步被配置为:
根据所述视频帧序列构建每个关键点对应的运动轨迹曲线,并确定每个关键点对应的运动轨迹曲线的特征信息;根据所述特征信息在所述多个关键点中筛选出所述目标动作关联的所述目标关键点;在每个关键点对应的运动轨迹曲线中确定所述目标关键点对应的所述目标运动轨迹曲线。
一个可选的实施例中,所述确定模块504进一步被配置为:
在所述视频帧序列中确定初始视频帧以及关联视频帧;将所述初始视频帧中包含的初始关键点作为基准关键点,以及将所述关联视频帧中包含的关联关键点作为动作关键点;计算所述动作关键点与所述基准关键点的相似度,根据相似度计算结果构建所述多个关键点中每个关键点对应的运动轨迹曲线。
一个可选的实施例中,所述特征信息包括:
关键点特征轨迹变化幅度、关键点特征轨迹周期、关键点特征轨迹极值点;
相应的,所述确定模块504进一步被配置为:
在所述多个关键点中,选择所述关键点特征轨迹变化幅度大于预设幅度阈值的关键点作为初始标关键点,以及选择所述关键点特征轨迹周期满足预设周期条件的关键点作为初始标关键点,以及选择所述关键点特征轨迹极值点小于预设极值点数量的关键点作为初始标关键点;计算每个初始关键点对应的目标分值,基于所述目标分值在初始关键点中确定所述目标动作关联的所述目标关键点。
一个可选的实施例中,所述创建模块506进一步被配置为:
根据所述目标运动轨迹曲线,确定所述目标关键点中包含的子目标关键点对应的子目标运动轨迹曲线;根据所述子目标运动轨迹曲线,确定所述目标关键点中包含的子目标关键点对应的子目标帧数;根据每个子目标关键点对应的子目标帧数计算所述目标动作的目标帧数;按照所述目标帧数在所述视频帧序列中提取第一视频帧和第二视频帧,作为所述目标视频帧。
一个可选的实施例中,所述创建模块506进一步被配置为:
提取所述第一视频帧对应的第一状态特征值,以及所述第二视频帧对应的第二状态特征值;按照预设的调整策略对所述第一状态特征值和所述第二状态特征值分别进行调整,根据调整结果生成所述状态特征值;根据所述第一视频帧和所述第二视频帧在所述视频帧序列中提取目标视频帧序列,基于所述目标视频帧序列生成所述目标动作对应的所述状态变化信息。
一个可选的实施例中,所述视频处理装置,还包括:
计数模块,被配置为基于所述动作状态对动作状态机的参数进行更新,获得目标动作状态机;在采集到待识别动作对应的动作视频片段的情况下,根据所述动作视频片段确定所述待识别动作对应的动作特征值和动作变化信息;将所述动作特征值与所述状态特征值进行特征值比较,以及将所述动作变化信息与所述状态变化信息进行变化信息比较;根据特征值比较和变化信息比较结果确定所述待识别动作对应的完成信息,基于所述完成信息对所述待识别动作进行计数。
本说明书提供的视频处理装置,在获取到目标动作关联的视频帧序列及其对应的多个关键点后,为了能够快速且准确的完成目标动作的动作状态构建,可以根据视频帧序列在多个关键点中筛选出目标关键点,并确定目标关键点对应的目标运动轨迹曲线,实现通过运动轨迹曲线可以明确视频帧序列中最能够体现目标动作特征的目标视频帧,之后创建目标视频帧对应的状态特征值和状态变化信息,再根据状态特征值和状态变化信息构建目标动作对应的动作状态即可,以用于下游业务完成对状态机的更新;实现了快速且精准的完成目标动作的动作状态构建,有效的节省了人力资源和时间资源。
上述为本实施例的一种视频处理装置的示意性方案。需要说明的是,该视频处理装置的技术方案与上述的视频处理方法的技术方案属于同一构思,视频处理装置的技术方案未详细描述的细节内容,均可以参见上述视频处理方法的技术方案的描述。
图6示出了根据本说明书一实施例提供的一种计算设备600的结构框图。该计算设备600的部件包括但不限于存储器610和处理器620。处理器620与存储器610通过总线630相连接,数据库650用于保存数据。
计算设备600还包括接入设备640,接入设备640使得计算设备600能够经由一个或多个网络660通信。这些网络的示例包括公用交换电话网(PSTN)、局域网(LAN)、广域网(WAN)、个域网(PAN)或诸如因特网的通信网络的组合。接入设备640可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(NIC))中的一个或多个,诸如IEEE802.11无线局域网(WLAN)无线接口、全球微波互联接入(Wi-MAX)接口、以太网接口、通用串行总线(USB)接口、蜂窝网络接口、蓝牙接口、近场通信(NFC)接口,等等。
在本说明书的一个实施例中,计算设备600的上述部件以及图6中未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图6所示的计算设备结构框图仅仅是出于示例的目的,而不是对本说明书范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。
计算设备600可以是任何类型的静止或移动计算设备,包括移动计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移动设备,或者诸如台式计算机或PC的静止计算设备。计算设备600还可以是移动式或静止式的服务器。其中,处理器620用于执行如下计算机可执行指令时实现视频处理方法的步骤。
上述为本实施例的一种计算设备的示意性方案。需要说明的是,该计算设备的技术方案与上述的视频处理方法的技术方案属于同一构思,计算设备的技术方案未详细描述的细节内容,均可以参见上述视频处理方法的技术方案的描述。
本说明书一实施例还提供一种计算机可读存储介质,其存储有计算机指令,该指令被处理器执行时以用于视频处理方法的步骤。
上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与上述的视频处理方法的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内容,均可以参见上述视频处理方法的技术方案的描述。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
所述计算机指令包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本说明书并不受所描述的动作顺序的限制,因为依据本说明书,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本说明书所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
以上公开的本说明书优选实施例只是用于帮助阐述本说明书。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本说明书的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本说明书。本说明书仅受权利要求书及其全部范围和等效物的限制。