基于Kinect的上肢康复训练系统设计与实现

2024-06-21 12:17李源常庆丽刘浩林
河南科技 2024年8期
关键词:康复训练

李源 常庆丽 刘浩林

摘 要:【目的】解决中风、脑血栓等疾病造成的肢体损伤在后期康复训练中,采用传统康复训练需要康复医师全程参与的局限性。【方法】将Kinect与Unity3D相结合,构建了一套上肢康复训练系统,实现对患者信息管理、训练设置、康复训练、康复训练结果查询等功能。Kinect负责采集患者肢体运动状态信息;Unity3D作为系统开发工具,实现对患者信息管理,同时也是康复训练游戏的开发工具。系统采用SQLite数据库并部署在腾讯云服务器上。【结果】该系统提供的多个简单、趣味、易操作的游戏能极大地提高患者康复训练的积极性和主动性,从而达到患者康复训练的效果。【结论】该系统对上肢运动障碍患者的康复训练具有积极的应用价值。

关键词:Kinect;Unity3D;康复训练

中图分类号:TP3;TM623.1  文献标志码:A     文章编号:1003-5168(2024)08-0036-04

DOI:10.19968/j.cnki.hnkj.1003-5168.2024.08.007

Design and Implementation of Upper Limb Rehabilitation Training

System Based on Kinect

LI Yuan CHANG Qingli LIU Haolin

(School of Computer Science and Information Engineering, Anyang Institute of Technology, Anyang 455000, China)

Abstract: [Purposes] In order to solve the limitations of the traditional rehabilitation training in the late rehabilitation training for the limb injury caused by stroke, cerebral thrombosis and other diseases, the full participation of rehabilitation doctors is required. [Methods] In this paper, Kinect and Unity3D are combined to build a set of upper limb rehabilitation training system, which realized the functions of patient information management, training setting, rehabilitation training and querying rehabilitation training results. Kinect is responsible for collecting the information of patients' limb movement status, and Unity3D, as a system development tool, realizes the management of patient information and is also a development tool for rehabilitation training games. The system adopts SQLite database and deploys it on Tencent cloud server. [Findings] A number of games that are simple, interesting and easy to operate provided by the system can greatly improve the enthusiasm and initiative of patients' health training, so as to achieve the effect of rehabilitation training for patients. [Conclusions] The system has positive application value for rehabilitation training of patients with upper limb movement disorders.

Keywords: Kincect; Unity3D; rehabilitation training

0 引言

随着社会的发展,人们的生活方式愈加多样,生活质量不断提高。但由于交通事故、中风、脑血栓等造成的肢体损伤也越来越普遍。统计结果表明,70%~85%的此类患者会伴随一定程度的肢体功能障碍甚至缺失,严重影响患者的生活质量,同时也给患者家庭带来了沉重负担。研究表明,大量重复的肢体康复训练能帮助患者改善身体机能、最大限度地恢复患者的肢体运动功能,从而提高患者的生活质量[1-2]。

为了改进传统康复训练存在的不足,本研究通过结合Kinect与计算机虚拟实现技术,开发一套基于Kinect的上肢康复训练系统,实现患者在社区或家里都能进行康复训练。借助该上肢康复训练系统,康复医师仅需为患者制定合理的康复训练计划并简单指导患者进行康复训练即可,从而减轻康复医师的劳动强度。患者也可以根据自己的实际情况进行的针对性康复训练,使患者从传统康复训练中的被动者变为主动者。

Kinect具备强大的识别和提取用户身上特征点并进行后续动作骨架追踪的功能,因此可以使用Kinect作为信息采集传感器。开发人员不必自行分析人体骨架节点信息,可以将主要精力投入到体感界面的设计。Kinect广泛应用于体感游戏的人体动作数据采集[3-4],但随着Kinect应用推广,Kinect的应用也延伸到舞蹈和体育的辅助教学中[5-7]。为了将Kinect应用于医疗康复领域,科研人员进行了大量的研究工作,且取得了一系列成果[8-10]。本研究以Kinect为患者肢体信息采集传感器、Unity3D为开发工具、SQLite为数据库设计开发了一套上肢康复训练系统,实现对患者信息管理、康复训练等功能。该系统的应用,不仅能减轻康复医师的工作量,同时也能让患者在康复训练过程中获得更好的体验。

1 康复训练系统的设计

1.1 系统设计

本研究设计的康复训练系统框架结构如图1所示,系统主要包括患者信息管理、训练设置、康复训练、训练结果查询等模块。其中患者信息管理模块包括患者信息注册、修改、查询、登录等功能;训练设置模块包括设置训练肢体(左肢/右肢)、训练难度(简单/一般/困难)、训练时间等功能;康复训练模块包括4个可供选择的康复训练小游戏(切水果/煎鸡蛋/插墙/太空大战);训练结果查询模块包括按患者姓名或编号查询康复训练的结果。

1.2 Kinect人体骨骼信息提取

本研究所采用的人体骨骼信息采集传感器为微软公司开发设计的Kinect型号为Kinect for XBox One,实物如图2所示。Kinect for XBox One是Kinect for XBox的升级版,相较于上一代产品,新一代产品不仅外观设计不同,而且在性能、精准度、识别手指运动、识别面部表情等方面均有很大提升。

Kinect能够同时追踪6个人形物体,但最多只能选择优先进入Kinect视野的前2位进行详细的姿态和骨骼点的三维坐标信息计算;其余4位最多仅传回其质心位置。Kinect for Windows SDK开放了人体重要的20个关节点信息,人体20个骨骼点示意如图3所示。回传给应用程序的数据对象以骨骼帧形式提供。

在SDK中,每个骨骼点用Joint类型表示,20个骨骼点组成基于Joint类型的每一帧数据集合。Joint类型包含JointType、Position、TrackingState 3个属性信息,其中JointType是类型为枚举型的骨骼点类型,列举了20个骨骼点的特定名称;Position是类型为SkeletonPoint的骨骼点位置信息,SkeletonPoint是一个包含X,Y,Z三个数据成员的结构体,用以存储骨骼点的三维坐标信息;TrackingState也是一种类型为枚举型的骨骼点类型,表示骨骼点的追踪状态。Tracked、NotTracked、Inferred分别表示骨骼点“正确捕捉到”“没有捕捉到”“不确定”三种追踪状态。

1.3 彩色图像

Kinect的彩色图像流由KinectSensor对象的ColorStream属性提供,在使用彩色图像流前需要调用其Enable方法启动彩色图像流。Kinect传回的彩色图像分为4种:①GRB格式,也是Kinect默认传回的图像格式;②YUV、Raw YUV格式,要传回此格式的图像需要应用程序在开启彩色图像流时进行特别指定;③RAW Bayer格式;④Infared格式,红外线灰阶图像,由红外线摄像机所拍摄的红外线图像。

2 康复训练系统主界面设计

本研究的康复训练系统主界面设计采用Unity3D(版本为2021.3.26)为开发工具,C#为开发语言,数据库采用SQLite数据库并部署在腾讯云服务器上。数据库主要包含患者信息表(paint_info)和康复训练信息表(train_info)。

系统UI界面元素采用Unity3D系统自带的UGUI设计,系统主界面包含“患者信息管理”“训练设置”“康复训练”“训练信息查询”“退出”等功能按钮。在系统主界面(MenuUI)对象上挂载系统主界面管理脚本(MainManage.cs),MainManage.cs的Start()函数实现监听每个功能按钮是否被按下并做出对应处理。按钮的监听函数为Button对象的onClick属性中AddListener()方法,AddListener()方法可以接收一个Lambda表达式作为方法的实际参数。

3 Unity3D与Kinect结合

3.1 在Unity3D中使用Kinect

在Unity3D中使用Kinect,需要先下载并安装Kinect SDK 2.0驱动,再下载kinect for unity3d插件包并把该插件包导入Unity3D新建的上肢康复训练系统工程中。kinect for unity3d插件包中KinectManager.cs和KinectGestures.cs两个脚本是最核心的部分,负责Kinect与Unity3D的交互。在场景中新建一个空物体并命名为KinectController,然后把插件中主要的脚本挂载到该物体上,这样在Unity3D中即可正常使用Kinect。以上肢康复训练系统中游戏1(切水果游戏)为例,介绍Kinect与康复游戏的交互过程。

3.2 在游戏界面中显示玩家灰阶图像

实现游戏背景图中实时显示玩家灰阶图像,首先,需要在游戏场景中添加一个命名为PlayerImage、类型为RawImage的UI物体对象;其次,在控制玩家的脚本PayerControl.cs中定义一个类型为RawImage的变量PlayerRawImage,并把物体对象PlayerImage拖拽到变量PlayerRawImag中;再次,将KinectManager中ComputerUserMap属性值设置为User Texture,并勾选Compute User Map;最后,在Update函数中添加代码。

if(KinectManager.Instance.IsInitialized())

if(PlayerRawImag.texture == null)

Texture2D _texture = KinectManager.Instance.GetUsersLblTex();

PlayerRawImag.texture = _texture;

IsInitialized()函数返回的是Kinect设备是否完成初始化的Boolean类型值;GetUsersLblTex()函数返回的是Kinect设备检测到的深度图像数据。

3.3 判定玩家交互意图

Kinect前方出现多人时,可能导致应用程序在执行命令时出现异常,这就需要判定处于Kinect传感器视野内的玩家是否具有与应用程序进行交互的意图。有两种方式可以判定玩家交互意图,方式1,让玩家做出特定动作;方式2,让玩家向Kinect发出语音命令。由于方式2受距离、方言、识别发声玩家等因素影响,成功率较低,于是本研究采用方式1。

KinectManager中定义了一个类型为Gestures的变量playerCalibrationPose,Gestures是在KinectGestures.cs脚本中声明的枚举类型,Gestures中枚举了各种人体的激活动作,如“RaiseRightHand”“RaiseLeftHand”“Tpose”分别表示“抬起右手高于肩膀”“抬起左手高于肩膀”“T姿势”等人体动作。本系统中设置playerCalibrationPose值为“Tpose”,即当应用程序检测到Kinect传感器视野内的玩家做出“T姿势”并保持1.5秒以上,则确定该玩家可与应用程序进行交互如图4所示。

3.4 生成手指运动轨迹

在游戏场景中添加一个组件类型为Effects的Trail,并命名为Knife,根据需要设置Knife包含的组件拖尾渲染器(TrailRenderer)的属性值。先在PayerControl脚本中确定一个Knife类型的对象knifeObj,把组件Knife拖拽到knifeObj上;接着在PayerControl脚本的Update函数中调用KinectManager脚本中的GetJointKinectPosition函数,获取Kinect识别到当前正与应用程序交互的玩家手中的世界坐标handPos;然后调用自定义函数CalculateCoordinates把handPos坐标转换为二维屏幕坐标handSenPos;最后执行如下代码,即可实现随着上肢带动手的运动,从而在游戏场景中出现刀痕拖尾的效果如图5所示。

knifeObj.GetComponent()。anchoredPosition = handSenPos

4 结论

本研究把Kinect传感器与Unity3D游戏引擎技术相结合,设计一套上肢康复训练系统并实现了其功能。该系统以Unity3D游戏引擎为开发工具,实现患者信息管理、训练设置、康复训练、康复训练结果查询等功能,在康复训练模块提供了4款简单、趣味、易操作的小游戏,让患者在愉快的游戏中,达到康复训练的效果。

参考文献:

[1]王静,马景全,陈长香,等.体感游戏Kinect改善脑卒中患者执行功能的效果研究[J].中国康复医学杂志,2014,29(8):748-751.

[2]王尚书,陈长香,张卫红,等.互动体感游戏对脑卒中患者运动和平衡功能的康复效果[J].中国康复理论与实践,2013,19(7):658-661.

[3]刘晋钢,刘卫斌,刘晋霞.Kinect与Unity3D数据整合技术在体感游戏中的应用研究[J].电脑开发与应用,2014,27(11):7-11,14.

[4]张帅,周恒杰,张琳涛.基于Unity3D和Kinect的体感跑酷游戏开发关键技术设计与实现[J].三明学院学报,2015,32(6):32-36.

[5]朱依晨,李御之,田丰.基于Kinect的舞蹈教学系统的设计与实现[J].工业控制计算机,2022,35(4):107-109.

[6]黄攀,张宇.基于Kinect的舞蹈动作姿势辅助识别系统设计[J].自动化与仪器仪表,2022(9):136-142.

[7]闵亚荣,牟莉.基于多个Kinect的体育辅助训练系统的研究[J].电子设计工程,2021,29(18):115-120.

[8]程杨,唐尧.基于Kinect的运动训练辅助决策支持系统设计[J].现代电子技术,2021,44(24):123-126.

[9]千承辉,张昕昊,陶锦,等.基于Kinect的康复训练系统设计与研究[J].吉林大学学报(信息科学版),2020,38(1):92-98.

[10]杨海清,钱涛.基于Kinect的动态姿势识别方法在医疗康复中的应用[J].电子技术应用,2020,46(12):94-96,102.

(栏目编辑:孙 焱)

收稿日期:2023-09-22

基金项目:安阳市科技攻关项目“基于Kinect的上肢康复训练与评估系统的研究”(2022C01SF111)。

作者简介:李源(1981—),男,硕士,副教授,研究方向:康复机器人、人工智能;常庆丽(1986—),女,硕士,讲师,研究方向:信息系统;刘浩林(2002—),男,本科生,研究方向:计算机网络、信息系统。

猜你喜欢
康复训练
听觉脑干植入儿童康复训练个案研究
气压差减重步行康复训练系统设计
多功能智能康复训练床的设计与仿真
穴位按摩与康复训练治疗周围性面瘫的疗效观察
卒中后运动神经反馈康复训练研究进展与前景
针刺联合康复训练治疗轻度认知功能障碍临床研究
日间康复训练用于精神分裂症患者治疗中的效果
对接受闭合性跟腱断裂修复术的患者实施等速康复训练的效果分析
上肢康复训练机器人的研究
康复训练联合心理健康教育辅助治疗老年脑卒中后抑郁的效果观察