技术领域
[0001] 本发明涉及人体动作识别技术领域,特别涉及一种实时人体动作的识别方法和一种实时人体动作的识别装置。
相关背景技术
[0002] 人机交互技术发展史已有超过五十年的发展历史,近年来,采用动作识别技术实现人机交互成为国内外学者研究的重点方向之一。人体动作识别是计算机视觉中一个具有挑战性的课题,同时也具有广阔的应用前景。基于视觉的人体运动分析是计算机视觉领域中一个非常活跃的研究方向,它包含运动检测、目标分类和跟踪以及对人的运动进行理解和识别等内容。这些内容之间的关系是层层递进的:运动人体的检测是目标分类和跟踪的基础,在解决这些基本问题的基础上,就可以进行人体动作识别。运动特征的选择直接影响人体动作识别方法的识别效果。单一特征往往受到人体外观、环境、摄像机设置等因素的影响不同,其适用范围不同,识别效果也是有限的。
[0003] 目前主流方法是计算机通过对传感器(摄像机)采集的原始图像或图像序列数据进行处理和分析,识别到视频中的人物,学习并理解其中人的动作和行为。
[0004] 但是,上述主流方法中,需要大量复杂的计算,做不到实时性和准确性。
[0005] 因此,如何设计出一种计算量少且能够实现实时人体动作的识别方法成为本领域亟需解决的技术问题。
具体实施方式
[0052] 以下结合附图对本发明的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本发明,并不用于限制本发明。
[0053] 如图1所示,本发明的第一方面,涉及一种实时人体动作的识别方法S100,所述方法S100包括:
[0054] S110、实时获取待识别人体的深度图像。
[0055] 具体地,在本步骤中,可以采用3D摄像头实时采集待识别人体的深度图像。当然,除了可以采用3D摄像头以外,还可以采用其他能够实时获取人体深度图像的图像获取设备。
[0056] 需要说明的是,在本步骤中,待识别人体可以仅仅包括一个人,当然,该待识别人体也可以同时包括多个人。这样,根据本实施例中的实时人体动作识别方法,可以实现同时实时的识别多个人的动作。
[0057] S120、根据所述深度图像,提取所述深度图像中人体的骨架数据,并对所述骨架数据进行归一化处理;其中,所述骨架数据包括人体关键节点的关节点数据集合。
[0058] 也就是说,在本步骤中,根据步骤S110中实时获取到的待识别人体的深度图像,提取该深度图像中的人体的骨架数据,该骨架数据主要包括人体关键节点(或者重要关节点)的骨架数据,例如,可以是头部关节点数据、肩关节中心数据、左肩关节数据、右肩关节数据、左肘关节数据、右肘关节数据、左腕关节数据、右腕关节数据、左手数据、右手数据、脊椎数据、髋关节中心数据、左髋关节数据、右髋关节数据、左膝关节数据、右膝关节数据、左踝关节数据、右踝关节数据、左脚数据和右脚数据等。
[0059] 换句话说,在本步骤中,并不需要每个关节点的骨架数据,这样,仅仅需要提取人体的几个关键节点的骨架数据,从而可以大大降低计算量,同时,还能够有效提高识别精度。
[0060] S130、获取动作录制文件,其中,所述动作录制文件包括预先设定的动作录制文件。
[0061] 也就是说,在本步骤中,动作录制文件是提前预先设定的动作录制文件,该预先设定的动作录制文件可以存储在存储介质或者云端服务器中,并且可以随时访问该预先设定的动作录制文件。
[0062] 应当理解的是,上述预先设定的动作录制文件可以包括多个,这样,可以使得本实施例中的识别方法,所识别的人体动作范围更加广泛,提高识别准确度。
[0063] S140、根据所述动作录制文件,设置关节点组合,并标记所述动作录制文件中的动作的起止位置。
[0064] 具体地,在本步骤中,可以播放该动作录制文件,同时,根据该动作录制文件中的动作所用到的关节点,例如,当该动作包括左手的姿势,例如左手平举,左手上举等,只需要处理关节组合(左肩关节数据,左肘关节数据,左手关节数据),这样可以有效避免其他关节点或者噪点数据造成的影响。
[0065] S150、利用预定算法,对所述动作录制文件中的动作进行训练,提取特征向量保存成动作模板文件。
[0066] 也就是说,在本步骤中,对上述获取到的动作录制文件中的动作进行训练,提取特征向量,并将该特征向量保存成动作模板文件。这样,能够更加精准地识别人体的动作。
[0067] S160、基于所述动作模板文件和所述关节点数据集合,对所述待识别人体的动作进行识别,输出识别结果。
[0068] 具体地,在步骤中,可以将关节点数据集合中的每一个关节点数据与动作模板文件进行匹配,并根据该匹配结果输出相应地识别结果,完成识别人体的动作,实现人机交互。
[0069] 本实施例中的实时人体动作的识别方法S100,能够在复杂环境中准确高效识别人体和关节点,从而能更精确判断动作的起始和整个动作的过程:另外,还可以同时支持多达实时识别多副人体骨架数据,即可以同时实时的识别多个人的动作,有效的保证人机交互的实效性。最后,可以根据动作录制文件中的动作灵活选取关节点组合(比如左手手势:左手平举,左手上举等只需要输入左手相关的几个关节点),识别时也仅计算相关关节点,从而有效避免其他因素影响姿势训练和识别的效果。
[0070] 优选地,上述步骤S120包括:
[0071] 提取所述深度图像中的像素点的深度信息。
[0072] 根据所述像素点的深度信息,将所述深度图像分割成前景图像和背景图像。
[0073] 将所述前景图像与标准人体模型进行比较,以获得所述骨架数据。
[0074] 也就是说,在本步骤中,根据像素点的深度信息,将深度图像中的前景与背景进行分割,前景作为人体的候选对象与标准人体模型进行比较,得到可以包含二十个关节点数据的骨架数据,该二十个关节点数据包括:头部关节点数据、肩关节中心数据、左肩关节数据、右肩关节数据、左肘关节数据、右肘关节数据、左腕关节数据、右腕关节数据、左手数据、右手数据、脊椎数据、髋关节中心数据、左髋关节数据、右髋关节数据、左膝关节数据、右膝关节数据、左踝关节数据、右踝关节数据、左脚数据和右脚数据。
[0075] 本实施例中的实时人体动作的识别方法S100,并不需要每个关节点的骨架数据,这样,仅仅需要提取人体的几个关键节点的骨架数据,从而可以大大降低计算量,同时,还能够有效提高识别精度。
[0076] 优选地,上述动作录制文件还包括用户自定义的动作录制文件。
[0077] 上述步骤S130包括:
[0078] 录制用户所展示的动作,以形成所述用户自定义的动作录制文件。
[0079] 具体地,在本步骤中,启动录制功能后,将需要训练的动作在摄像头前演示,同时,该摄像头能够实时捕捉到需要训练的动作的彩色画面。点击停止录制按钮,会将包含刚才演示动作的视频保存成动作录制文件,形成用户自定义的动作录制文件。
[0080] 需要说明的是,上述用户自定义的动作录制文件也可以包括多个,也就是说,用户可以自定义多个不同的动作录制文件,这样,可以使得本实施例中的识别方法,所识别的人体动作范围更加广泛,提高识别准确度。
[0081] 优选地,上述步骤S140包括:
[0082] 基于所述动作录制文件,提取所述动作录制文件中的动作所用到的每个关节点,生成关节点组合。
[0083] 其中,所述动作录制文件中的动作包括左手的姿势,所述左手的姿势包括左手平举和/或左手上举,相应地,所述关节点组合包括左肩关节点、左肘关节点和左手关节点。
[0084] 也就是说,在本步骤中,根据动作用到的关节点,设置关节点组合,比如左手的姿势:左手平举,左手上举等,只需要处理关节组合(左肩关节数据,左肘关节数据,左手关节数据),这样可以有效避免其他关节点或者噪点数据造成的影响。
[0085] 优选地,所述预定算法包括优化后的DTW算法。
[0086] 在大部分的学科中,时间序列是数据的一种常见表示形式。对于时间序列处理来说,一个普遍的任务就是比较两个序列的相似性。在时间序列中,需要比较相似性的两段时间序列的长度可能并不相等,在动作识别领域表现为不同人做同一个动作所花的时间不同。因为动作在完成的过程中具有相当大的随机性,即使同一个人在不同时刻做同一个动作,也不可能具有完全的时间长度。而且同一个人完成同一个动作在不同时间节点的速度也不相同。在这些复杂情况下,使用传统的欧几里得距离无法有效地求的两个时间序列之间的距离(或者相似性)。
[0087] DTW算法是一种具备扩展和压缩能力的柔性模式匹配算法,它能够对存在全局或局部扩展、压缩或变形的模式进行匹配,从而解决时间矢量序列间的相似度量问题。该算法采用动态规划的思想对两个矢量序列进行非线性规整,对两序列相似之处进行匹配,以得到两个矢量序列之间的最短距离,两个矢量序列间的距离越小,则它们的相似度越大。由于DTW算法采用动态规划技术来进行旋律的近似匹配,通过局部最优化原理计算出最佳路径的最小累计距离,本方法采用基于全局和局部约束的DTW优化算法进行相似度匹配,得到两个运动间的对应关系。最后通过归一化相似度和DTW平均距离分阶段判断运动的相似性。实验结果表明,分阶段的DTW优化算法在提高效率的同时对长度不等的运动能取得较好的识别结果。
[0088] 因此,本实施例中的实时人体动作的识别方法S100,预定算法采用DTW算法,DTW能够衡量两个序列的相似程度,或者说两个序列的距离。同时DTW能够对两个序列的延展或者压缩能够有一定的适应性,例如,不同人执行同一个动作存在一定的差别,特别在时长上,有些人会比标准的长或短,DTW对这种序列的延展和压缩不敏感,所以给定标准动作模板,DTW能够很好得识别单个动作,从而能够有效提高识别精度。
[0089] 本发明的第二方面,如图2所示,提供了一种实时人体动作的识别装置100,所述装置包括:
[0090] 骨架识别模块110,所述骨架识别模块110用于实时获取待识别人体的深度图像;以及,根据所述深度图像,提取所述深度图像中人体的骨架数据,并对所述骨架数据进行归一化处理;其中,所述骨架数据包括人体关键节点的关节点数据集合。
[0091] 录制模块120,所述录制模块120用于获取动作录制文件,其中,所述动作录制文件包括预先设定的动作录制文件。
[0092] 播放模块130,所述播放模块130用于根据所述动作录制文件,设置关节点组合,并标记所述动作录制文件中的动作的起止位置。
[0093] 动作训练模块140,所述动作训练模块140用于利用预定算法,对所述动作录制文件中的动作进行训练,提取特征向量保存成动作模板文件。
[0094] 动作识别模块150,所述动作识别模块150用于基于所述动作模板文件和所述关节点数据集合,对所述待识别人体的动作进行识别,输出识别结果。
[0095] 本实施例中的实时人体动作的识别装置100,能够在复杂环境中准确高效识别人体和关节点,从而能更精确判断动作的起始和整个动作的过程:另外,还可以同时支持多达实时识别多副人体骨架数据,即可以同时实时的识别多个人的动作,有效的保证人机交互的实效性。最后,可以根据动作录制文件中的动作灵活选取关节点组合(比如左手手势:左手平举,左手上举等只需要输入左手相关的几个关节点),识别时也仅计算相关关节点,从而有效避免其他因素影响姿势训练和识别的效果。
[0096] 优选地,所述骨架识别模块110还用于:
[0097] 提取所述深度图像中的像素点的深度信息;
[0098] 根据所述像素点的深度信息,将所述深度图像分割成前景图像和背景图像;
[0099] 将所述前景图像与标准人体模型进行比较,以获得所述骨架数据。
[0100] 也就是说,在本实施例中,骨架识别模块110用于根据像素点的深度信息,将深度图像中的前景与背景进行分割,前景作为人体的候选对象与标准人体模型进行比较,得到可以包含二十个关节点数据的骨架数据,该二十个关节点数据包括:头部关节点数据、肩关节中心数据、左肩关节数据、右肩关节数据、左肘关节数据、右肘关节数据、左腕关节数据、右腕关节数据、左手数据、右手数据、脊椎数据、髋关节中心数据、左髋关节数据、右髋关节数据、左膝关节数据、右膝关节数据、左踝关节数据、右踝关节数据、左脚数据和右脚数据。
[0101] 本实施例中的实时人体动作的识别装置100,并不需要每个关节点的骨架数据,这样,仅仅需要提取人体的几个关键节点的骨架数据,从而可以大大降低计算量,同时,还能够有效提高识别精度。
[0102] 优选地,所述动作录制文件还包括用户自定义的动作录制文件;所述录制模块120还用于录制用户所展示的动作,以形成所述用户自定义的动作录制文件。
[0103] 具体地,在实施例中,录制模块120启动录制功能后,将需要训练的动作在摄像头前演示,同时,该摄像头能够实时捕捉到需要训练的动作的彩色画面。点击停止录制按钮,会将包含刚才演示动作的视频保存成动作录制文件,形成用户自定义的动作录制文件。
[0104] 需要说明的是,上述用户自定义的动作录制文件也可以包括多个,也就是说,用户可以自定义多个不同的动作录制文件,这样,可以使得本实施例中的识别装置,所识别的人体动作范围更加广泛,提高识别准确度。
[0105] 优选地,所述播放模块130还用于:
[0106] 基于所述动作录制文件,提取所述动作录制文件中的动作所用到的每个关节点,生成关节点组合;
[0107] 其中,所述动作录制文件中的动作包括左手的姿势,所述左手的姿势包括左手平举和/或左手上举,相应地,所述关节点组合包括左肩关节点、左肘关节点和左手关节点。
[0108] 也就是说,在本实施例中,根据动作用到的关节点,设置关节点组合,比如左手的姿势:左手平举,左手上举等,只需要处理关节组合(左肩关节数据,左肘关节数据,左手关节数据),这样可以有效避免其他关节点或者噪点数据造成的影响
[0109] 优选地,所述预定算法包括优化后的DTW算法。
[0110] 本实施例中的实时人体动作的识别装置100,预定算法采用DTW算法,DTW能够衡量两个序列的相似程度,或者说两个序列的距离。同时DTW能够对两个序列的延展或者压缩能够有一定的适应性,例如,不同人执行同一个动作存在一定的差别,特别在时长上,有些人会比标准的长或短,DTW对这种序列的延展和压缩不敏感,所以给定标准动作模板,DTW能够很好得识别单个动作,从而能够有效提高识别精度。
[0111] 可以理解的是,以上实施方式仅仅是为了说明本发明的原理而采用的示例性实施方式,然而本发明并不局限于此。对于本领域内的普通技术人员而言,在不脱离本发明的精神和实质的情况下,可以做出各种变型和改进,这些变型和改进也视为本发明的保护范围。