本发明属于计算机视觉和康复机器人领域的交叉技术,涉及一种基于openpose和kinect的人体姿态估计方法及康复训练系统。
背景技术
自20世纪90年代以来,机器人辅助康复训练技术迅速发展并引起了各发达国家的普遍重视。现有的研究及临床应用表明:康复训练机器人可以对因脑卒中和脊髓损伤等引起的肢体运动功能障碍患者进行安全可靠、针对性强且具有自适应性的康复训练,在提高肢体运动功能障碍患者的康复训练质量、促进患者的早日康复、减轻家庭和社会负担方面具有重要意义。
而近年来,为开拓更加广泛的康复训练手段和进一步提高康复效率,智能康复应运而生。虚拟场景人机交互技术被引入以激励患者的主动参与意识,从而增加训练时间、训练强度和训练频率,提高训练效果。此外,人体姿态估计技术被用于捕捉患者康复训练过程中肢体的三维运动数据,以控制康复游戏中的虚拟代理,实现人机交互。国内外对应用于康复训练机器人的情景交互式虚拟环境技术和人体姿态估计技术做了大量的应用性研究,并且研制出了多种类型的融合以上两种技术的康复训练机器人情景交互系统。
利用kinect捕捉人体姿态以实现与虚拟游戏的人机交互的方法因其成本低、使用方便的特点得到了越来越多的认可。但是kinect自带的骨骼绑定算法极易受到光照、前景遮挡及人体自遮挡的影响,而出现无法识别或者误识别的现象。而中风患者由于部分肢体失能,往往需要穿戴一些支撑或固定设备以维持身体平衡,导致基于kinect自带的骨骼绑定算法的情景交互系统无法应用到对病人的身体有部分遮挡的康复机器人上。而且,现有的康复训练情景交互系统多数没有根据患者肢体的不同失能状况和不同的康复阶段提供目标导向性的康复训练虚拟游戏场景,以至于不能根据病人的康复情况提供针对性的康复训练方案。
技术实现要素:
本发明所要解决的技术问题是:
本发明的目的在于解决现有技术中存在的不足,提供一种基于openpose和kinect的人体姿态估计方法和一种基于openpose和kinect的情景交互式康复训练系统。
本发明为解决上述技术问题采用以下技术方案:
一种基于openpose和kinect的人体姿态估计方法,其包括以下步骤:
(1)对kinect的深度相机和彩色相机进行标定,获得彩色相机和深度相机的内参矩阵以及深度相机坐标系到彩色相机坐标系的旋转矩阵和平移向量;
(2)根据步骤(1)获得的内参矩阵、旋转矩阵和平移向量,再结合kinect的深度图像和彩色图像,生成三维空间的点云阵;
(3)通过时间戳将kinect的彩色图像与点云阵同步;
(4)使用openpose算法根据kinect的彩色图像得到二维关节点图像坐标;
(5)在步骤(3)中同步的点云阵中检索出二维关节点图像坐标对应的三维关节点空间坐标;
(6)使用中值滤波法和霍特双参数指数平滑法完成对步骤(5)获得的人体三维关节点空间坐标的平滑与预测。
优选地,在所述步骤(1)中获得彩色相机和深度相机的内参矩阵分别为
优选地,所述步骤(2)中生成三维空间的点云阵包括执行以下步骤:
i.根据深度相机的内参矩阵,将深度图像的二维图像坐标映射为深度相机坐标系下的三维空间坐标,设深度图像上的一点为(xd,yd),该点的深度值为depth(xd,yd),则该点在深度相机坐标下的三维坐标(xd,yd,zd)为:
ii.将深度相机坐标下的三维坐标(xd,yd,zd)转换成彩色相机坐标下的三维坐标(xrgb,yrgb,zrgb)为:
iii.进一步将彩色相机坐标系下的三维坐标(xrgb,yrgb,zrgb)投影到二维彩色图像平面,得到二维彩色图像的坐标(xrgb,yrgb)为:
在彩色图像中取出坐标为(xrgb,yrgb)的点对应的rgb值,作为彩色相机坐标系下的三维坐标(xrgb,yrgb,zrgb)的rgb值;
iv.对深度图像中每一个点重复步骤i~iii,从而生成xyzrgb格式的三维空间的点云阵。
优选地,所述步骤(6)中使用中值滤波法和霍特双参数指数平滑法完成对人体三维关节点空间坐标的平滑与预测包括:
设关节点的点云阵坐标(x,y,z)某邻域窗口s内包含n个点,这些点的坐标分别为(ui,vi,wi),i=1,…n,则将该关节点的坐标修改为这n个点的坐标的中值,即
所述霍特双参数指数平滑法包括两个基本平滑公式和一个预测模型,即:
平滑公式:
st=αpt+(1-α)(st-1+bt-1)
bt=β(st-st-1)+(1-β)bt-1
预测模型:
ft+m=st+btm
其中,α和β是平滑系数,取值在(0,1)之间,通过绘制预测值和实际值的曲线观察延迟和均方差特性,调整平滑系数α和β以优选出最佳预测模型来完成对三维关节点坐标的滤波;
对于人体三维关节点空间坐标的时间序列pt={p1,p2,p3……},pt为时间序列第t期的三维关节点坐标,st为时间序列第t期的平滑值,bt为时间序列第t期趋势的平滑值,m为预测的超前期数,ft+m为时间序列第t+m期的预测值,初始化s1为p1,b1为p2-p1,后序的st和bt根据前序的st-1和bt-1迭代得出,第t+m期的预测值ft+m根据第t期的st和bt计算得出。
在另一实施例中,提供一种基于openpose和kinect的情景交互式康复训练系统,其包括:
基于openpose和kinect的人体姿态估计模块,其根据kinect的深度图像和彩色图像实时识别患者的三维关节点数据;
情景交互式康复训练虚拟场景模块,其搭建基于unity3d平台的渐进式的康复训练虚拟场景,并实现虚拟代理的运动控制、关节点图表的绘制、视听觉反馈、碰撞作用力的计算、用户基本信息录入功能;及
三维关节点运动轨迹数据库,用于存储用户基本信息和三维关节点空间坐标。
优选地,所述基于openpose和kinect的人体姿态估计模块包括kinect点云阵生成节点、openpose节点、人体三维关节点映射及滤波节点、ros主控器、unity3d通信节点和数据库通信节点,
其中,所述kinect点云阵生成节点根据kinect的深度相机和彩色相机的内参矩阵、深度相机坐标系到彩色相机坐标系的旋转矩阵和平移向量,再结合kinect的深度图像和彩色图像,生成三维空间的点云阵;
openpose节点根据kinect的彩色图像得到二维关节点图像坐标;
人体三维关节点映射及滤波节点通过时间戳将kinect的彩色图像与点云阵同步,在同步的点云阵中检索出二维关节点图像坐标对应的三维关节点空间坐标,并使用中值滤波法和霍特双参数指数平滑法对三维关节点空间坐标进行平滑与预测;
数据库通信节点获取用于康复评估的三维关节点空间坐标并存储至三维关节点运动轨迹数据库;
unity3d通信节点获取用于控制虚拟代理运动的三维关节点空间坐标并发送至情景交互式康复训练虚拟场景模块;
ros主控器实现kinect点云阵生成节点、openpose节点、人体三维关节点映射及滤波节点、unity3d通信节点和数据库通信节点的互相通信。
优选地,所述情景交互式康复训练虚拟场景模块包括:
用户登录界面,供患者录入基本信息;
渐进式康复训练虚拟场景生成模块,用于基于unity3d平台,针对不同失能部位和不同康复训练阶段提供目标导向式的虚拟游戏环境;
虚拟代理控制模块,用于通过得到的三维关节点空间坐标控制康复训练虚拟游戏中虚拟代理的动作,同时将运动参数实时展示在虚拟场景中;及
反馈模块,用于根据场景中的事件触发视觉和听觉反馈,并计算应发送给康复训练机器人的作用力以向患者提供力反馈。
本发明采用以上技术方案与现有技术相比,具有以下技术效果:
(1)本发明将openpose算法得到的二维人体骨骼关节点与kinect的深度数据相结合得到三维人体骨骼关节点,一定程度上解决了kinect自带的骨骼绑定算法在患者身体被康复训练机器人部分遮挡时出现无法识别或误识别的问题。
(2)本发明将基于openpose和kinect的三维人体关节点数据用于控制虚拟环境中虚拟代理的动作,并将三维关节点数据存入mysql数据库,为后续的康复评估提供数字化的定量数据,便于康复医生进行康复状况的跟踪。
(3)本发明针对患者不同的康复阶段,设计了多种渐进式的、具有康复针对性的康复训练虚拟游戏环境,以配合康复训练机器人在不同康复阶段的情景交互需求。
(4)本发明采用模块化的设计思想,将康复训练情景交互系统的设计独立于康复训练机器人,采用一台kinect捕捉人体关节点的空间坐标作为系统的输入。使得本发明所述系统可以很方便地运用在现有的康复训练机器人上,提高了软件系统的移植性和扩展性。
附图说明
图1为openpose的骨骼结构;
图2为本发明的基于openpose和kinect的人体姿态估计方法的流程示意图;
图3为基于ros的节点通信软件框架图;
图4(a)到图4(c)为本发明中渐进式的情景交互式康复训练虚拟场景部分的场景截图。
具体实施方式
下面结合附图对本发明的技术方案进行更加清楚、更加详细的描述。
如图2所示,一种基于openpose和kinect的人体姿态估计方法包括以下步骤:
(1)对kinect的深度相机和彩色相机进行标定,获得彩色相机和深度相机的内参矩阵以及深度相机坐标系到彩色相机坐标系的旋转矩阵和平移向量;
(2)根据步骤(1)获得的内参矩阵、旋转矩阵和平移向量,再结合kinect的深度图像和彩色图像,生成三维空间的点云阵;
(3)通过时间戳将kinect的彩色图像与点云阵同步;
(4)使用openpose算法根据kinect的彩色图像得到二维关节点图像坐标;
(5)在步骤(3)中同步的点云阵中检索出二维关节点图像坐标对应的三维关节点空间坐标;
(6)使用中值滤波法和霍特双参数指数平滑法完成对步骤(5)获得的人体三维关节点空间坐标的平滑与预测。
在另一实施例中,一种基于openpose和kinect的情景交互式康复训练系统包括基于openpose和kinect的人体姿态估计、渐进式的情景交互式康复训练虚拟场景和三维关节点运动轨迹数据库。基于openpose和kinect的人体姿态估计部分用于实时捕捉患者的三维关节点数据,渐进式的情景交互式康复训练虚拟场景部分基于unity3d平台设计渐进式的康复训练虚拟场景,三维关节点运动轨迹数据库部分基于mysql搭建数据库,方便关节点数据的存储与再次调用。
一种基于openpose和kinect的情景交互式康复训练系统包含以下步骤:
步骤1:首先对kinect的深度相机和彩色相机进行标定,获得彩色相机和深度相机的内参矩阵分别为
步骤2:根据步骤1获得的内参矩阵、旋转矩阵和平移向量,再结合kinect的深度图像和彩色图像,生成三维空间的点云阵。具体步骤如下。
步骤2.1:根据深度相机的内参矩阵和小孔成像原理,将深度图像的二维图像坐标映射为深度相机坐标系下的三维空间坐标。设深度图像上的一点为(xd,yd),该点的深度值为depth(xd,yd),则该点在深度相机坐标下的三维坐标(xd,yd,zd)为:
步骤2.2:将深度相机坐标下的三维坐标(xd,yd,zd)转换成彩色相机坐标下的三维坐标(xrgb,yrgb,zrgb)为:
步骤2.3:进一步将彩色相机坐标系下的三维坐标(xrgb,yrgb,zrgb)投影到二维彩色图像平面,得到二维彩色图像的坐标(xrgb,yrgb)为:
在彩色图像中取出坐标为(xrgb,yrgb)的点对应的rgb值,作为彩色相机坐标系下的三维坐标(xrgb,yrgb,zrgb)的rgb值。
步骤2.4:对深度图像中每一个点重复步骤i~iii,即可生成xyzrgb格式的三维空间的点云阵。
步骤3:通过ros平台实现kinect节点、openpose节点、人体三维关节点映射及滤波节点、unity3d通信节点和数据库通信节点的互相通信,实现将二维人体关节点映射到同步的点云阵中获得三维人体关节点的功能。同时将三维人体关节点数据分别发送给渐进式的情景交互式康复训练虚拟场景模块和三维关节点运动轨迹数据库模块。
基于ros的节点通信软件框架如图3所示,具体步骤如下:
步骤3.1:软件框架可以分为感知层、姿态估计和数据存储层和应用层三层。姿态估计和数据存储层的kinect节点与感知层的kinect通信并计算生成点云阵,同层的人体三维关节点映射及滤波节点订阅由kinect节点发布的彩色图像和点云阵话题,并通过时间戳完成两者的同步。步骤3.2:人体三维关节点映射及滤波节点完成同步后将kinect的彩色图像以请求的方式发送给openpose节点,得到openpose节点返回的二维关节点图像坐标响应之后,在同步的点云阵中检索出二维关节点图像坐标对应的三维关节点空间坐标。最后使用中值滤波法和霍特双参数指数平滑法完成对三维关节点空间坐标的滤波。
步骤3.3:人体三维关节点映射及滤波节点完成平滑滤波之后,将得到的如图1所示的18个人体三维关节点空间坐标作为话题发布出去,供订阅该话题的节点提取感兴趣的关节点信息。数据库通信节点节选用于康复评估的相关关节点运动轨迹信息并存储进三维关节点运动轨迹数据库,为后续的康复效果评估提供数字化的定量数据。而unity3d通信节点则选取用于控制虚拟代理运动的关节点信息并以udp通信的方式发送给渐进式的情景交互式康复训练虚拟场景。
步骤4:使用中值滤波法和霍特双参数指数平滑法完成对步骤3获得的三维关节点空间坐标的平滑与预测。
步骤4.1:中值滤波法可以用公式(4)表示。设关节点的点云阵坐标(x,y,z)某邻域窗口s内包含n个点,这些点的坐标分别为(ui,vi,wi),i=1,…n。则将该关节点的坐标修改为这n个点的坐标的中值,即
步骤4.2:霍特双参数指数平滑法包括两个基本平滑公式和一个预测模型,即:
平滑公式:
st=αpt+(1-α)(st-1+bt-1)公式(5)
bt=β(st-st-1)+(1-β)bt-1
预测模型:
ft+m=st+btm公式(6)
其中,α和β是平滑系数,取值在(0,1)之间。通过绘制预测值和实际值的曲线观察延迟和均方差特性,调整平滑系数α和β以优选出最佳预测模型来完成对三维关节点坐标的滤波;
对于人体三维关节点空间坐标的时间序列pt={p1,p2,p3……},pt为时间序列第t期的三维关节点坐标,st为时间序列第t期的平滑值,bt为时间序列第t期趋势的平滑值,m为预测的超前期数,ft+m为时间序列第t+m期的预测值,初始化s1为p1,b1为p2-p1,后序的st和bt根据前序的st-1和bt-1迭代得出,第t+m期的预测值ft+m根据第t期的st和bt计算得出。
步骤5:用户登录渐进式的情景交互式康复训练虚拟场景的开始界面,并录入基本信息。
步骤6:康复训练系统针对不同失能部位和不同康复训练阶段提供目标导向性的游戏。比如针对肘关节和膝关节分别提供不同的康复训练虚拟游戏,针对康复初期的被动康复训练、康复中期的主动康复训练、以及康复后期的抗阻康复训练提供不同的康复训练虚拟游戏环境。以膝关节为例,图4(a)是针对康复初期被动康复训练的骑自行车场景,图4(b)是针对下肢康复中期主动康复训练的湖边漫步场景,图4(c)是针对下肢康复后期阻力康复训练的爬坡场景。
被动康复训练中,康复机器人带动病人的下肢运动,用病人膝关节的角速度控制虚拟人物骑车的速度。同时根据左右手臂关节运动轨迹判断病人向左挥手和向右挥手的手势动作,控制自行车左转和右转,以碰撞游戏场景中的金币,获得游戏加分。主动康复训练中,将病人主动步行时膝关节的角速度映射成场景中虚拟人物走路的速度。而阻力康复训练中则根据虚拟人物所处地面的高度判断是否在爬坡,如果虚拟人物处于爬坡过程,则向康复机器人发送指令,要求康复机器人给病人提供一个抗阻力反馈。
步骤7:通过步骤4得到的平滑后的三维人体关节点信息控制步骤6中康复训练虚拟游戏环境中的虚拟代理进行移动、旋转、动画播放等操作,同时将关节角度变化曲线、肢体可达空间、运动速率等运动参数以绘制图表的方式实时展现在虚拟训练场景中。
步骤8:通过虚拟代理与虚拟场景中物体的碰撞等事件触发视觉和听觉效果反馈,并计算碰撞作用力发送给康复训练机器人以提供力反馈给患者。
步骤9:基于mysql平台搭建的数据库在康复训练过程中实时保存步骤4得到的平滑后的三维关节点数据,保存数据时根据步骤5得到的患者的基本信息将康复训练数据和对应的患者相连接。训练结束后可以根据需要调用历史的康复训练数据。
以上技术方案阐述了本发明的技术思路,不能以此限定本发明的保护范围,凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上技术方案所作的任何改动及修饰,均属于本发明技术方案的保护范围。