虚拟现实手部康复训练系统的设计与实现
2013-04-29张冬蕊耿艳娟徐礼胜张秀峰李光林
张冬蕊 耿艳娟 徐礼胜 张秀峰 李光林
1(中国科学院深圳先进技术研究院 深圳 518055)
2(东北大学中荷生物医学与信息工程学院 沈阳 110004)
3(国家康复辅具研究中心 北京 100176)
1 引 言
脑卒中(Stroke)是脑中风的学名,它是一种发病率高、致残率高、死亡率高的常见难治性疾病,严重威胁着人们的生命安全[1]。我国是世界上脑卒中发病率较高的地区。近些年来,虽然随着医疗技术的发展与进步,我国中风幸存者数量增多,但当中仍然约有75% 患有不同程度的运动功能障碍,尤其是手部的运动功能障碍,严重致残率高达 10%[2]。手是大脑功能的延伸,在大量神经的支配下,手能完成很多精细活动与工作,所以手不仅是人重要的劳动器官,还是重要的感觉器官,有着精细的敏感度[3]。偏瘫患者的手部运动功能障碍大大降低了患者的生存质量,加重了患者及其家庭的经济负担和精神负担[2]。
研究表明,运动康复训练可促进偏瘫患者自发性神经功能恢复,有助于偏瘫患者恢复中枢神经对肢体运动的支配与控制,还可以防止肌肉“废用性”萎缩,有助于偏瘫患者的肢体运动功能恢复[4]。因此,物理疗法成为临床中最常用的运动功能康复训练方法之一。目前,临床康复训练一般是按照神经发育的规律,先从肩关节开始,逐渐过渡到肘关节、腕关节和手指功能训练,等肩、肘、腕关节功能恢复后再进行手功能训练往往已经错过最佳康复治疗时间,往往使得脑卒中患者偏瘫侧的手部运动功能恢复进程缓慢、恢复效果有限。
根据大脑皮层可塑性理论,大脑皮层区的可塑性变化即脑功能重塑,在很大程度上是运动康复训练的结果。研究表明,偏瘫患者的手部功能的康复训练应该在积极的环境下进行,被动或者不积极的训练,对患者脑功能重塑和手部运动功能的康复效果很不明显。所以,偏瘫患者在积极的环境下进行正确的手部康复训练,能加快患者脑功能重塑和手部运动功能恢复,收到良好的康复效果[3]。目前国内对偏瘫患者进行的运动功能康复训练仍然是在治疗师的指导下、辅助以训练器械对偏瘫患者进行一些被动或者辅助的运动训练[5]。这些康复训练方法有十分明显的缺点:(1)浪费人力物力,一名康复治疗师无法同时指导多名偏瘫患者进行康复训练;(2)康复训练比较机械而且枯燥,偏瘫患者很少能积极主动参与康复训练,治疗效果不甚理想;(3)偏瘫患者进行康复训练的强度和效果不易得到反馈评估。在偏瘫患者的运动康复训练利用虚拟现实技术,是让患者沉浸在虚拟的环境中,成为虚拟环境中的一部分,使用训练的动作和虚拟环境进行交互,同时虚拟环境给予偏瘫患者实时的视觉反馈,提高偏瘫患者进行康复训练的积极性和主动性。本文利用虚拟现实技术为偏瘫患者进行手部运动功能训练设计合适的手部康复训练系统,使患者在训练过程中能沉浸在虚拟环境中,进行康复训练的积极性得到提高,被动治疗也变为主动治疗。虚拟现实技术同时为患者提了供训练计划和效果评估。在虚拟现实手部康复训练系统中,交互设备采用5DT Data Glove 14 Ultra 数据手套,使用 Visual Studio 2012,基于 MFC 编程实现了人机交互软件,能完成用户管理、数据采集、手势信号分类、实时手势分类测试等功能,虚拟环境的建立采用了 Flash 游戏,通过 MFC 和 Flash 间的通讯使病人能通过手势进行Flash 游戏控制。虚拟现实手部康复训练系统能够指导使用者进行有效地手部康复训练,Flash 虚拟现实游戏应用于手部康复训练中变被动训练为主动训练,提高病人进行训练的积极性。
2 系统的设计目标和原则
从系统应实现的结构来考虑,虚拟现实手部康复训练系统主要由三个部分组成:人机交互设备、人机交互软件和虚拟现实环境。而从患者的实际需求来考虑,由于虚拟现实手部康复训练的使用者是有手部功能障碍的偏瘫患者,他们比常人更加虚弱、更容易受到损伤,所以应更多考虑到病人的需求,应从安全性、舒适性、主动性三个方面考虑进行设计。下面将详细阐述三个系统设计的原则。
2.1 安全性
偏瘫患者在使用康复训练系统进行训练时能保证安全是康复训练系统设计是首先要考虑的问题。人机交互设备使用 5DT Data Glove 14 Ultra,使用时不会对患者造成伤害。另外,系统中包含的手部训练任务也应保证患者在进行训练时不会受到伤害。
2.2 舒适性
偏瘫患者在使用康复训练系统进行训练的过程中能否感到放松、舒适,是康复训练系统在设计时需要重点考虑的问题。例如,穿戴的数据手套要舒适,避免给患者带来过度紧绷或笨重感;人机交互软件的界面设计美观、操作简单,不会给患者带来视觉疲劳或操作不便等。
2.3 主动性
如何激发患者主动进行康复训练、提高进行康复训练的积极性,是系统设计的重要内容。利用虚拟现实技术能有效提高患者进行康复训练的主动性和积极性。将虚拟现实集成到康复训练系统中,使患者在虚拟游戏中接受康复训练运动,如在“虚拟”的世界中完成任务的同时体会来自真实世界的反馈,变机械枯燥的运动为主动积极的游戏,使偏瘫患者享受康复训练,从而达到理想的康复效果。
3 系统的设计与实现
该康复训练系统由交互设备和人机交互软件,Flash 虚拟场景三部分组成,如图1 所示。
图1 系统结构框图
系统交互设备采用 5DT 公司生产的 5DT Data Glove 14 Ultra 数据手套,人机交互软件使用 Visual Studio 2012 作为开发工具,基于 MFC 编写,编程语言采用 C++,能实现用户管理、数据采集、手势信号分类及分类结果显示、实时手势识别测试的功能。构建的虚拟场景使用 Flash 游戏,通过 MFC 和 Flash 游戏间通讯能完成游戏操控。
3.1 数据手套简介
本系统使用的数据手套是 5DT Data Glove 14 Ultra,这是 5DT 公司开发的第二代高端数据手套,能够测量手指的屈伸和指间外展度,图2 为 5DT Data Glove 14 Ultra 14 个传感器的分布图。
图2 5DT Data Glove 14 Ultra 14 个传感器的分布图
5DT Data Glove 14 Ultra 数据手套为 8 位 A/D 采样,最大采样频率可达 200 Hz,具有的主要优点有:(1)数据手套的制作材质为弹性纤维,使用者穿戴舒适,同时弹性大,适用于尺寸大小不同的手;(2)数据手套采用的光纤传感器信号精确敏锐,获得的数据噪声少,减少了额外滤波对数据进行预处理;(3)提供给用户的软件开发包中包含了接口函数,用户能直接访问数据手套采集实时数据,极大方便了用户进行二次开发;(4)数据手套的数据流遵循 RS-232 协议,使用 USB 连接方式,方便了应用程序开发。
3.2 人机交互软件的实现
系统的人机交互软件主要包括四大功能模块,包括:用户管理模块、数据采集模块、手势信号分类模块、手势识别实时测试模块。图3 即为人机交互软件结构框图,用户管理模块主要能完成新用户注册、列出所有用户、打开用户等功能;数据采集模块能实现数据手套信号曲线的动态实时显示、用户 8 类手势信号的采集和保存等功能;手势信号分类模块能完成将采集的 8 类手势信号数据进行训练求得 LDA 参数并进行手势信号离线分类测试的功能;手势识别实时测试模块主要能完成手势信号的实时判别、指导用户完成实时手势任务的功能。本节将分模块对人机交互软件的实现做具体介绍。图4 为人机交互软件的主界面。
图3 人机交互软件结构框图
图4 人机交互软件主界面
3.2.1 用户管理模块的实现
用户管理模块功能能显示所用用户、打开用户和创建新用户,系统通过为每位用户分配单独的文件夹来实现用户管理。
显示所有用户的功能实现是使用 CFileFind 类的FindFile 函数找寻系统用户管理文件夹下的所有以用户名命名的子文件夹,GetFileName 函数获得所有文件夹名并将所有用户装载到 List 中并在列表控件中显示。打开用户功能实现是将全局变量 username 设定为用户列表中选定的用户,路径设定为选定用户所在的文件夹路径。注册新用户时,用户信息的保存是通过 C++中 stream 类的文件操作实现将信息保存到文本文件中。
3.2.2 数据采集模块的实现
数据采集部分,采样频率为 100 Hz,每类手势动作只采集动作时的数据 3 次,每次 8 秒,每类手势动作训练集和测试集的数据长度均为 2400。用户须采集 16 组(8 类,每类 2 组)长度为 2400 的数据用于训练和分类测试。图5 为软件数据采集模块的运行图。
图5 软件数据采集模块的运行图
(1)设计合理并具有针对性的康复训练手势能有效地指导病人进行手部康复训练并提高训练效率。根据 Brunnstrom 六级评价法[6]中对偏瘫患者手部功能的评价,系统中设计了 8 种手部康复训练的手势,如图6 所示,8 种动作涉及了偏瘫病人进行手部康复训练的几类动作、屈伸类(握拳)、抓握(球状抓握、钩状抓握)、单指活动(食指伸展、食指弯曲)、全范围伸指(手张开)、精细手部活动(对指)。这些手部活动跟患者的日常生活息息相关,有效地进行这些手势任务的康复训练能提高患者的生活质量。
图6 系统设计的 8 类手势任务
(2)采集数据手套的数据主要是调用 5DT Data Glove 14 Ultra SDK 中提供的接口函数,实现对手指弯曲度和外展度的采集,5DT Data Glove 14 Ultra SDK 提供了多种功能的接口函数,能采集传感器自动矫正的数据。
下面列出了与数据采集相关的接口函数:
数据采集时,先采集到的数据缓存到容器中,然后通过文件操作将采集到的用户手势数据保存到 dat文件中。
(3)数据采集的同时要求实时显示数据手套 28 个通道(每只手套 14 通道)的数据曲线动态,方便用户在数据采集的同时观察波形,此时需要 MFC 绘图功能。但是如果窗体在响应 WM_PAINT 消息的时候要进行复杂的图形处理,那么窗体在重绘时过频繁的刷新会引起闪烁现象。双缓冲绘图[7]能很好的解决闪烁问题并大大加快绘图的速度。双缓冲绘图是指创建一个与屏幕绘图区域一致的对象,先将图形绘制到内存中的这个对象上,再一次性将这个对象上的图形拷贝到屏幕上,在实际中是使用 BitBlt 函数,先在内存中作图,然后用此函数将做好的图复制到前台,同时禁止背景刷新。
MFC 双缓冲绘图实现过程如下:①在内存中创建与画布一致的缓冲区;②在缓冲区画图;③将缓冲区位图拷贝到当前画布上;④释放内存缓冲区[8]。
3.2.3 手势信号分类模块的实现
在康复训练系统中使用的分类器是线性判别分析分类器[9],它是利用各类的分布特征,即利用各类的概率密度函数和后验概率进行分类的。它使用已知类别的训练样本产生判别函数,相当于学习和训练,然后根据待分类样本代入判别函数,所得的值确定其类别。判别函数提供了相邻两类决策域的界面,也相当于在一些设定下的两类概率密度函数之差。这样,对于每个动作所得的特征向量,根据线性判别函数计算出来的结果,就对应了其在各个类型中的后验概率。所以比较同一次不同类型的判别函数,其中值最大的一类即为最优决策分类。
图7 为手势信号分类模块功能实现流程图,如图所示,首先读取数据采集模块采集到的用户训练集数据,使用 300 ms 的分析窗截取数据,并存入容器中。然后将加窗后的数据进行特征提取,在使用数据手套控制的模式识别分类中,研究成果表明,仅需要提取 4 个时域特征就可以获得较好的分类结果。这 4 个特征分别是:平均绝对值(Mean Absolute value,MAV)、过零率(Zero Crossing,ZC)、波长(Wave form Length,WL)和符号改变斜率(Slope Sign Change,SSC)[10,11]。接着使用提取的特征值数据进行训练得到 LDA 分类器的参数,并将参数保存至 dat 文件中。
图7 手势信号分类模块功能实现流程图
离线分类测试时是读取测试集数据,使用 300 ms的分析窗截取数据,并存入容器中,提取特征值数据后直接进行 LDA 判别,计算分类精度和误差,并使用混淆矩阵显示各类的分类精度和分类误差。图8 为软件手势分类模块的运行图。
图8 软件手势分类模块的运行图
3.2.4 手势识别实时测试模块的实现
图9 为系统实时手势识别的实现流程图。实时测试开始前先加载用户的 LDA 分类器参数存入容器中,每采集 0.3 s 的数据会将采集到的数据进行特征值提取并将特征值 featuredata 存入容器中,接着计算得到不同类型的线性判别函数,所以比较同一次不同类型的判别函数,其中值最大的一类即为系统判断的手势类别。采集完 0.3 s 数据后进行计算和判断,有的时间为 0.03 s,占用时间很少,因此采用采集-判断-采集的单线程工作模式可以满足测试需要。
图9 实时手势识别的实现流程图
手势识别实时测试要求使用者根据任务图片显示的手势任务做出相应手势,每 0.3 秒系统会做一次判断,判断使用者是否正确完成任务图片显示的手势,每个任务完成的标准是 5 秒内至少正确完成8 次。系统实时的手势任务设计是每 8 个任务为一组测试,每组中 8 个手势任务均以随机顺序出现,整个测试有 15 组,共计 120 个手势任务。图10 为一组测试的实现流程图,图11 为软件手势识别实时测试模块的运行图。
图10 一组手势识别实时测试的实现流程图
图11 软件手势识别实时测试模块的运行图
3.3 虚拟场景的构建于游戏实现
3.3.1 Flash 虚拟场景的建立系统的虚拟环境是基于 Flash 建立的,虚拟环境采用了网络分享“雷霆战机”的 Flash 游戏,此游戏使用 Adobe Flash CS5 开发,编程语言为 ActionScript 3.0。使用时系统对信号控制部分进行了更改,添加了控制飞机方向的变量 control,当 control 值为 0 时飞机向左飞行,当 control 值为 1 时飞机向右飞行,使用者可以使用手势信号通过 MFC 和 Flash 通讯控制飞机飞行方向。
3.3.2 MFC 和 Flash 通讯的实现
图12 MFC 和 Flash 通讯流程示意图
图13 Flash 康复训练游戏运行图
图12 为 Flash 与 VC 交互流程示意图。如图所示,Flash 和 MFC 之间通过 shockwave flash object 控件实现。系统人机交互软件和 Flash 康复训练游戏进行通讯时,MFC 使用 SetVariable() 设置 Flash 中控制飞机方向变量 control 的值,Flash 通过 FSCommand()函数向 MFC 发送 control 值,同时 MFC 通过添加 flash控件的成员函数 OnFSCommand() 接收 Flash 发送的control 值。图13 即为 Flash 康复训练游戏运行图。
4 系统功能详述
(1)首先,使用者登录系统,新用户使用时先要进行注册,需要填写用户信息,包括用户姓名、性别、年龄、偏瘫时间、偏瘫患者手部功能评价等,用户注册后打开用户便登录系统。
(2)用户需要进行 8 类手势信号的采集,每类手势信号要采集两组分别作为训练集数据和测试集数据。数据采集时,用户首先将数据手套连接到电脑的USB 接口,软件能自动搜索数据手套并显示,打开数据手套软件信号显示的界面会显示实时动态的数据手套信号曲线。用户根据提示和播放的动画可以完成手势信号的数据采集。
(3)采集完数据后,用户进入手势信号分类模块进行 LDA 分类器的训练和手势分类的离线测试,软件界面会显示测试的结果,包括混淆矩阵和分类误差。训练好 LDA 分类器后用户可以进行实时手势识别测试,打开数据手套,开始测试,用户根据界面显示的手势任务作出相应的手势即可完成测试。
(4)用户进行 Flash 康复训练游戏时,首先打开数据手套,选择并设置好控制游戏的手势信号后可以开始进行游戏。
5 总结与展望
本文设计并实现了虚拟现实手部康复训练系统,能够指导使用者进行有效的手部康复训练, Flash 虚拟现实游戏应用于手部康复训练中能将被动的康复训练转化为病人主动进行手部康复训练,提高病人进行训练的积极性。系统具有以下特点:(1)交互设备采用 5DT Data Glove 14 Ultra 数据手套;(2)基于 MFC编程实现了人机交互软件,能完成用户管理、数据采集、手势信号分类、实时手势分类测试等功能;(3)虚拟环境的建立采用 Flash 游戏,通过 MFC 和 Flash 间的通讯能使病人通过手势进行 Flash 游戏控制。
实现有效的手部康复训练系统来指导偏瘫患者进行主动高效的手部康复训练,仍然是当前偏瘫康复研究的热点和难点。我们对以后的研究工作有如下展望:①建立偏瘫患者数据库、将病人的基本信息、采集数据、分类器参数、康复训练结果存入数据库中,方便医生进行管理;②人机交互软件中建立康复训练反馈评价模块,能评价各个使用者的康复训练效果和进度,并将此存入数据库,方便医生了解各个病人康复情况并对其进行有效地康复训练指导;③在对偏瘫患者研究调查后,设计多款偏瘫患者喜欢的Flash 康复训练游戏以提高病人进行康复训练的主动性和积极性。
[1]邵卫. 机器人辅助上肢康复的虚拟现实训练系统的研究 [D].上海: 上海交通大学, 2012.
[2]乐趣, 屈云. 脑卒中后偏瘫侧手部运动功能康复技术进展 [J].中国康复医学杂志, 2012, 27(11).
[3]孙贵新, 徐文东, 顾玉东. 手部相关脑功能可塑性的研究进展 [J].实用手外科杂志, 2002, 16(3): 159-161.
[4]林日武, 林茂恩, 潘仕海, 等. 强制性运动疗法治疗脑卒中偏瘫的临床应用 [J]. 心脑血管病防治, 2007, 7(2): 97-98.
[5]于维东, 范红杰, 张文娟. 偏瘫康复理论与实践(续一)[J]. 现代康复, 2001, 5(4): 9-13.
[6]纪树荣. 康复医学 [M]. 高等教育出版社, 2004.
[7]曾麒. MFC 中双缓冲处理贴图闪屏问题 [J]. 科技信息, 2011,3: 68-68.
[8]张亮. 基于双缓冲技术的 VC++ 图形刷新技术的原理和实现 [J].福建电脑, 2010, 26(6): 110-110.
[9]钟珞, 潘吴, 封筠, 等. 模式识别 [M]. 武汉大学出版社, 2006.
[10]Sensinger J W, Lock B A, Kuiken T A. Adaptive pattern recognition of myoelectric signals: exploration of conceptual framework and practical algorithms [J]. IEEE Transactions on Neural Systems and Rehabilitation Engineering, 2009, 17: 270-278.
[11]Hargrove, Englehart. A training strategy to reduce classification degradation due to electrode displacements in pattern recognition based myoelectric control [J]. Biomedical Signal Processing and Control, 2008, 3: 175-180.