基于Kinect的自主康复系统的设计与实现
摘要:为了使患者能够在家中自主进行康复训练并能与医院进行信息交互,本文设计了一套基于Kinect的自主康复系统。系统使用Kinect开发完成,患者按康复计划规定的康复训练动作进行训练,并使用Kinect传感器获取人体骨骼关节点的空间坐标并捕捉节点运动轨迹,计算获取关节点的相对角度变化值判定患者动作是否完成并给出文字提示,医生可调用系统数据库数据查看患者康复情况并更新康复训练内容。实验证明,该系统能准确识别关节点的运动,能较为直观逼真地显示用户康复训练情况,实时性、准确性达到设计需求,具有较好的应用价值。
本文引用地址:http://www.amcfsurvey.com/article/277709.htm引言
Kinect体感传感器是微软公司于2010年发布的新兴体感交互式传感器[1],它打破了传统的人机交互方式,更加生动有效地展示了人机交互的理念和方式,因此在各行各业迅速得到应用推广。随着中国社会老龄化程度不断加深,老年人群比例逐年增大,老年病和慢性病成为社区医疗服务的重点关注疾病,老年痴呆、脑卒中、高血压等易发疾病不仅需要药物治疗,还需持久的康复训练[2],目前医疗资源较为紧张,将治疗后期用以增加肌体功能的康复训练转移到社区或家庭中进行能缓解老年疾病护理和医疗资源的需求供给矛盾,还能提高康复训练的信息化,有利于康复数据收集和研究[3] 。本文结合Kinect和软件及数据库技术,开发了一套自主康复系统,患者登录系统获取康复训练计划,按计划要求的动作进行康复训练,系统使用Kinect传感器获取人体关节点的空间坐标并捕捉节点运动轨迹,经异常值处理后判定患者各节点康复训练动作是否达标,并根据训练效果制定进一步的康复计划,医生可随时进入数据库系统查询患者的康复状态。该系统经验证可准确识别关节运动,交互实时性、准确性达到系统设计要求,为老年疾病康复训练提供了较好的恢复平台,而且所获得的康复数据也为相关疾病康复研究提供了大量的数据信息。
1 系统结构
系统使用Kinect设备获取用户的骨骼空间坐标并进行轨迹生成再现,同时计算用户训练的关节点相对角度值与设置的阈值比较,当相对角度变化值超过阈值后系统将提示用户完成该训练动作内容并给出响应。为完成这一系列过程,系统需要四个主要部分:(1)传感器数据采集;(2)数据处理运算;(3)数据显示;(4)数据存储。其中传感器数据采集主要由Kinect传感器完成,数据处理运算在Visual C++的后台中进行运算,数据显示通过生成的系统软件在前台显示并对用户动作响应,数据存储功能由MySQL完成,医生可随时调用数据库数据查看患者自主康复数据,并根据用户自主康复训练结果更新训练计划,在软件前端显示并提供用户使用,从而形成一个良性循环的闭环系统。系统功能结构如图 1所示。
2 系统功能原理
2.1 数据采集
Kinect设备能够实时获得彩色图像和深度图像数据,而且支持实时的半身和全向骨骼跟踪模式并能识别一系列的动作[4],这是自主康复系统应用Kinect的关键原因。Kinect由红外发射器、RGB彩色摄像头和红外线COMS摄像机组成[5]。Kinect能够提供人体内的二十个骨架关节点的三维坐标值,如图2所示。
以这二十个关节点为基础,计算任意两个关节点的距离和方位变化可得人体关节运动轨迹。Kinect可获取场景深度信息并进一步计算出人与相机间的空间间隔[6],设人体到Kinect设备的距离为d,可由式(1)求得:
(1)
式中dk是对象深度值,由Kinect设备获取,k=12.36厘米、H=3.5-10-4rad、L=1.18rad、O=3.7厘米。
2.2 运动轨迹生成
将深度图像坐标(xk,yk,zk)转化为实际坐标(xr,yr,zr),转化公式为:
(2)
式中F=0.0021,D'=-10,Kinect的分辨率[7]为w×h=680×480。这样利用(1)式、(2)式可得人体任意两个关节点的空间坐标值M(xr1,yr1,zr1)和N(xr2,yr2,zr2),可得两关节点间的距离为:
(3)
由于Kinect的硬件误差或抖动[8]等一系列因素导致骨骼关节点的相对位置在短时间内变化极大、数据中存在异常值,针对这一问题,在系统生成骨骼节点的运动轨迹时需对这类异常值进行筛选和删除,对运动轨迹进行平滑处理[9]。为达到降噪效果,将活动关节当前时刻的坐标值与前N-1个采样周期的关节坐标的平均值当作当前时刻的关节位置,并按时序以N为步长对获取的坐标位置进行递进前移,该方法可以使系统获取并用于显示的人体关节活动轨迹更为平滑优美,带给康复患者较好的视觉感观,以增强康复的信心。
2.3 姿势判断
获取骨骼节点的坐标标据和运动轨迹是生成人体关节运动轨迹的基础,而判断患者动作是否达到要求是系统指导患者进行康复训练的关键,在关节点运动过程中还需判断患者是否完成康复动作并在完成动作后给予响应。考虑人体运动时很多骨骼关节并非直线运动,而是以某一关节为圆心的类似圆弧运动[10],因此可实时获取各时刻的关节点角度,通过活动关节点相对于转动圆心关节点的角度变化值来计算患者是否完成康复动作。
c++相关文章:c++教程
评论