本申请涉及计算机视觉,特别是涉及到一种手势识别的旋转锁定方法、装置、设备及存储介质。
背景技术:
1、在ar/vr手势识别的手部关键点提取时,由于手部动作改变可能会出现遮挡严重的情况,导致神经网络对手部关键点预测不准确,或者无法预测,影响用户体验。当用户在与场景虚拟物体进行交互,例如拾取,旋转物体,放下物体等动作时,常会因为关键点预测不准导致无法交互,甚至出现ar/vr虚拟手消失的问题,导致用户在与物体交互的过程时常会中断。
2、因此,现有的手势识别方法不能在手部出现遮挡严重的时准确识别手部关键点,导致手势识别异常。
技术实现思路
1、本申请的主要目的为提供一种手势识别的旋转锁定方法、装置、设备及存储介质,旨在解决现有技术在手部出现遮挡严重时,不能准确识别手部关键点的技术问题。
2、为了实现上述发明目的,本申请提出一种手势识别的旋转锁定方法,所述方法包括:
3、获取手部视频;
4、提取所述手部视频中每一帧手部的关键点,得到手部2d关键点;
5、将所述手部2d关键点重新投影到3d空间中,计算得到手部3d关键点;
6、根据所述手部3d关键点,计算每个手指关节旋转量以及手腕旋转量;
7、根据所述手腕旋转量,判断当前帧手腕是否处于旋转位置;
8、若当前帧手腕处于旋转位置,则获取历史帧手指关节旋转量,锁定手指关节;
9、将所述手腕旋转量和所述历史帧手指关节旋转量作用于模版手上,得到虚拟手。
10、进一步地,所述根据所述手腕旋转量,判断当前帧手腕是否处于旋转位置的步骤,包括:
11、获取设定的相机坐标系、左手手腕坐标系和右手手腕坐标系;
12、根据所述手腕旋转量,计算左手手腕和右手手腕相对于相机坐标系的旋转判断系数;
13、根据所述旋转判断系数,判断当前帧左手手腕和右手手腕是否处于旋转位置。
14、进一步地,所述若当前帧手腕处于旋转位置,则获取历史帧手指关节旋转量,锁定手指关节的步骤,包括:
15、获取当前帧拇指尖与食指尖的距离;
16、当所述距离小于第一预设距离时,判定拇指和食指捏合,手指关节解锁计数清零,锁定五指关节。
17、进一步地,所述获取当前帧拇指尖与食指尖的距离的步骤之后,包括:
18、当所述距离大于第一预设距离且所述距离小于第二预设距离时,获取当前帧之前的第一预设个数的帧对应的拇指尖与食指尖的历史距离,其中所述第二预设距离大于所述第一预设距离;
19、判断所述历史距离是否小于所述第一预设距离;
20、若所述历史距离小于所述第一预设距离,则计算所述历史距离小于所述第一预设距离的次数;
21、判断所述次数是否等于或大于第一预设次数;
22、若所述次数等于或大于所述第一预设次数,所述手指关节解锁计数清零,锁定五指关节;
23、若所述次数小于所述第一预设次数,所述手指关节解锁计数清零,锁定三指关节,其中,所述三指关节为中指、无名指和小指的关节。
24、进一步地,所述获取当前帧拇指尖与食指尖的距离的步骤之后,包括:
25、当所述距离大于所述第二预设距离时,判定拇指和食指分开,所述手指关节解锁计数加一。
26、进一步地,所述根据所述手腕旋转量,判断当前帧手腕是否处于旋转位置的步骤之后,包括:
27、判断当前帧的上一帧是否锁定手指关节;
28、若当前帧的上一帧锁定了手指关节,且当前帧手腕处于非旋转位置,则所述手指关节解锁计数加一。
29、进一步地,所述手指关节解锁计数加一的步骤之后,包括:
30、判断所述手指关节解锁计数是否大于或等于所述第一预设次数;
31、若所述手指关节解锁计数大于或等于所述第一预设次数,则解除手指关节锁定;
32、若所述手指关节解锁计数小于所述第一预设次数,则锁定所述三指关节。
33、本申请还提供了一种手势识别的旋转锁定装置,所述装置包括:
34、获取模块,用于获取手部视频;
35、2d关键点提取模块,用于提取所述手部视频中每一帧手部的关键点,得到手部2d关键点;
36、3d关键点计算模块,用于将所述手部2d关键点重新投影到3d空间中,计算得到手部3d关键点;
37、旋转量计算模块,用于根据所述手部3d关键点,计算每个手指关节旋转量以及手腕旋转量;
38、旋转判断模块,用于根据所述手腕旋转量,判断当前帧手腕是否处于旋转位置;
39、旋转锁定模块,用于若当前帧手腕处于旋转位置,则获取历史帧手指关节旋转量,锁定手指关节;
40、虚拟手生成模块,用于将所述手腕旋转量和所述历史帧手指关节旋转量作用于模版手上,得到虚拟手。
41、本申请还提供一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器执行所述计算机程序时实现上述任一项所述方法的步骤。
42、本申请还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一项所述方法的步骤。
43、本申请提供的一种手势识别的旋转锁定方法,通过旋转锁定的逻辑锁方法,有效地解决了手在旋转过程中无法保持稳定以及无法维持与物体的交互的难题。旋转锁定可以灵活决定什么时候采集历史数据,用什么历史数据,而不是一成不变地用过往帧的历史数据。同时旋转锁定不像滤波需要长期开启,只有在检测到手腕处于旋转位置并且手与虚拟物体交互时才会介入,因此在大部分情况下只需要消耗非常小的算力去判断是否需要锁定。此外,作为一个独立的模块,旋转锁定不影响其他模块的运算和更新。即使后期其他模块做出优化和替换,一样可以快速地适配新的模块而不需要重新修改接口,提高了整个手势识别系统的修改灵活性。
1.一种手势识别的旋转锁定方法,其特征在于,所述方法包括:
2.根据权利要求1所述的手势识别的旋转锁定方法,其特征在于,所述根据所述手腕旋转量,判断当前帧手腕是否处于旋转位置的步骤,包括:
3.根据权利要求1所述的手势识别的旋转锁定方法,其特征在于,所述若当前帧手腕处于旋转位置,则获取历史帧手指关节旋转量,锁定手指关节的步骤,包括:
4.根据权利要求3所述的手势识别的旋转锁定方法,其特征在于,所述获取当前帧拇指尖与食指尖的距离的步骤之后,包括:
5.根据权利要求4所述的手势识别的旋转锁定方法,其特征在于,所述获取当前帧拇指尖与食指尖的距离的步骤之后,包括:
6.根据权利要求4所述的手势识别的旋转锁定方法,其特征在于,所述根据所述手腕旋转量,判断当前帧手腕是否处于旋转位置的步骤之后,包括:
7.根据权利要求5或6所述的手势识别的旋转锁定方法,其特征在于,所述手指关节解锁计数加一的步骤之后,包括:
8.一种手势识别的旋转锁定装置,其特征在于,所述装置包括:
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述方法的步骤。