基于Leap Motion 的病患手评估算法研究*
2022-06-16于存光韩越兴张小凡欧阳皓寰
于存光 韩越兴 张小凡 欧阳皓寰
(1.黑龙江科技大学理学院 哈尔滨 150022)(2.上海大学计算机科学与工程学院 上海 200444)(3.上海大学上海先进通信与数据科学研究院 上海 200444)(4.厦门大学信息学院 厦门 361000)
1 引言
手也很容易受到外力的伤害和大脑损伤而造成功能丧失。现阶段大多数诊疗依然停留在医生目测或借助测角器等原始手段评定手的病情和治疗的疗效,因此存在很多的主观因素。随着人工智能的快速发展,各种硬件的革新换代,以及计算机算法的提出,使得利用计算机技术对手进行科学的、自动的评估成为了可能。标准化的评估手功能康复系统会帮助医生进行诊断。
获取手势数据信息的方式大体上分为两种:基于手套的手势数据获取方法和基于视觉的数据获取方法。基于数据手套的获取方法就是利用数据手套测量手指关节的弯曲度,手指间的角度,手掌的倾斜度等信息。2004年,高文[1]等选用了两个数据手套和3 个位置跟踪器成功识别了5113 个中国手语符号。肖阳[2]等的研究基于5DT 数据手套实现了对患者手部数据的采集,并以此建立模型评估患者手功能康复程度。文献[3]利用数据手套和触觉传感手套装置开发了一套中风后遗症患者恢复性治疗用的虚拟现实系统。数据手套的手势识别方法具有受环境干扰小,识别率高,但是很多手部患者因为手的伤害无法穿戴数据手套,而且数据手套的高昂造价。
基于视觉的数据获取方法是通过摄像设备采取手的各种视频信息,从而实现手势的识别和判断。一般来说,最常见的视频采集设备提取到的是手的二维信息,然后采用物体识别方法,如文献[4~7],来识别手势。Priyal和Boral提出的HGR[14]系统来识别手势。文献[15]介绍了一种基于(GNG)算法构建的图形表示和识别手势的方法。但是,这些基于二维空间的方法很难计算出手势的三维信息,也就是说,用二维图像匹配的方法来进行三维手势识别会丢失很多信息。因此,目前更多的是采用深度相机来采集手势的三维信息。如2004 年,Mckenna[8]通过模版匹配的方法对60 种用户定制的动态手势进行识别。2008 年,Lichtenauer[9]等通过改进的动态时间规整算法对120 个荷兰手语进行识别。但这些方法难以保证快速准确地估计人手姿态,同时它们无法实现近距离的高精度手势识别[10]。
2012 年,Leap 公司推出了小型运动控制系统Leap Motion,可以追踪多个手掌并识别手势,其识别精度为0.01mm[11]。Leap Motion 的基础技术是飞行时间(Time of Flight,TOF)技术[12],是一种较专业的手势采集设备[13]。Leap Motion传感器不同于Kinect对视野范围内追踪到物体的整体框架描述,其方法是通过对手部信息包括指尖、关节点、方向向量、法向量等的精细化描述,利用这些信息实现对手势的特征提取和准确识别。
本文中,我们设计一种基于Leap Motion 的非接触式手功能评估系统,探测手各个部位在空间位置,比较两手的手势差异,完成对患侧手的评价,从而帮助医师评估其手功能康复情况,做出正确判断,提出有效治疗病患手的方案。
2 左右手势差异的比较
对病患手的评估,需要考虑两种情况。当患者非病患手功能正常时,比较病侧手和健侧手的各种姿势的差异程度;当患者的双手都存在病患或者一只手缺失的时候,就需要病患手和一只第三方的健康手进行比较。为了对任意手都可以进行数据的标准评估,首先进行坐标标准化和尺寸标准化。然后,通过计算两手的关节点间差异度,指尖到掌心的欧几里得距离和指尖的向量点积差异度就能得出两手间差异度。
2.1 手的标准化
Leap Motion 定义了名叫finger 的对象,包含五个变量,thumb,index,middle,ring,pinky,代表了拇指、食指、中指、无名指和小指,通过finger可以获取多种数据信息。利用Leap Motion,首先应获取当前帧手池中手的数量,一般应当为两只手:一只是基准手,一只待测手。在这里,基准手是健侧手,待测手是患侧手。当基准手和待测手进行比较的时候,根据双手的左右不同,可以判断是同侧还是异侧,即同侧时,基准手和待测手的方向相同,而异侧时,基准手和待测手的方向相反。两只手变换重叠到一起才能比较,因此需要对手进行坐标变换。这里,我们假设测试的双手都是异侧的,因此,我们首先将一只异侧手变化为同侧手。
2.1.1 手的坐标标准化
Leap Motion 的默认坐标系采用的是右手笛卡尔坐标系,如图1(a)所示,原点O在设备中心,X轴和Z 轴水平,Y 轴竖直。为实现手模型的坐标标准化,我们需要构建一个手的坐标系,原点O'为手掌心,掌心到中指指尖的方向为Z 轴,掌平面法方向为Y 轴,Z 轴和Y 轴所在平面的法方向为X 轴,如图1(b)所示。
图1 Leap Motion坐标系和构建的手坐标系
通过Leap Motion 检测出手各点的位置是Leap Motion 坐标系的,需要把手的坐标变换到新建的手坐标系中,在数学表达上,两个坐标系的坐标变换是通过一个矩阵实现的。首先考虑平移,即使Leap Motion 坐标系的原点O与手坐标系的原点O'重合。
通过平移矩阵T 和旋转矩阵R 可将手上每个点P在Leap Motion 坐标系中的坐标变换成新建的手坐标系的坐标P',设P在Leap Motion 坐标系中的坐标为(x,y,z),P' 在手坐标系的坐标为(x',y',z'),则坐标变换公式可表示为
2.1.2 手的尺寸标准化
当基准手和待测手分别为两个人的手时,由于不同人的手大小都有差异,要实现手差异比较必须对手进行尺寸标准化。我们通过基准手的中指长度和被测手的中指长度计算尺寸参数,用来对被测手进行尺寸标准化。设基准手的中指长度为l0,被测手的中指长度为l1,则尺寸标准化比例参数ρ可表示为
设被测手骨节点的坐标为J,则尺寸标准化后的标准手骨节点J'的坐标可用式(3)计算:
其中,Ji为被测手第i 个骨节点的坐标,Ji'为进行尺寸标准化后被测手第i个骨节点的坐标。
2.2 两手差异度比较
比较两手差异度的方法有很多,不同的方法体现的手势差异的程度不同,本文通过两手的各个关节点间差异度,指尖到掌心的欧几里得距离和指尖向量点积三种方法来综合评价基准手和患侧手的差异程度。
2.2.1 基于关节点间差异度的两手比较
每只手有五根手指,每根手指在Leap Motion手模型中由四块骨头组成,每块骨头由两个关节点确定,骨头的开始位置点为前关节,骨头的结束位置点为后关节。
基准手和待测手中每一块骨头前关节之间的距离为前关节距离。设mdij为两手第i根手指的第j块骨头的前关节距离,可以用以下公式计算:
其中,m0ij为基准手第i根手指的第j块骨头的前关节坐标,m1ij为待测手第i根手指的第j块骨头的前关节坐标,||*||是三维向量的欧几里得距离(下同)。
基准手和待测手一块骨头后关节之间的距离为后关节距离。设ndij为基准手和待测手第i根手指的第j 块骨头的后关节距离,可以用以下公式计算:
其中,n0ij为基准手第i根手指的第j块骨头的后关节坐标,n1ij为待测手第i根手指的第j块骨头的后关节坐标。
最后,通过下面公式就可以得出基准手和待测手的关节点间差异度C:
其中,i是手的手指从1~5 变化,表示手的5 个手指;j从1~4变化,表示每个手指有4个骨头。
2.2.2 基于指尖到掌心的欧几里得距离差异度的两手比较
由于指尖的位置会随手势变化而变化,因此我们也可以通过计算标准手和待测手每对手指的指尖到掌心的欧几里得距离差的绝对值之和来表示手势的差异度。手指指尖到掌心的距离s可以用图2所示。
图2 掌心到中指指尖的距离及方向
设掌心的坐标为o,手指指尖的坐标为vi,i=(1,…,5),则每个指尖到掌心的欧几里得距离s可表示为
设s1i,s2i,i=(1,…,5),分别为标准手和待测手的指尖到掌心的欧几里得距离,则欧几里得差异度可用标准手和待测手指尖到掌心欧几里得距离差的绝对值之和E可以用下式计算:
2.2.3 基于指尖向量点积差异度的两手比较
欧几里得差异度可表示指尖位置不同的两手手势之间的差异,但当指尖位置相同手势不同时,例如两只手指弯曲状态不同,欧几里得差不能体现两手之间的差异。因此我们可以进一步通过对标准手和待测手对应的指尖点求向量点积的方法表示两手之间的差异度。设,i=(1,…,5),为标准手指尖点的向量,,i=(1,…,5),为待测手手指指尖点的向量,则向量点积差异度D可表示为式(9),其中,D越小,则表示两手差异越小。
2.2.4 三种比较方法进一步说明
本文采用的三种差异度比较方法体现了患侧手和健侧手的差异程度。关节点间差异度方法实现简单,但很多手势的差异程度不能体现出来。指尖到掌心的欧几里得距离差异度方法相较关节点间差异度方法做了很大改进,但是当两手的弯曲状态不同而指尖位置相同时,欧几里得差异度视为手势相同,因此也存在缺陷。本文最后采用的向量点积差异度方法改善了前两种的缺点。
在现实应用中,可以每种方法单独使用,也可以结合使用,如下:
其中λ1,λ2,λ3是各种方法结果的比例因子。
3 实验与分析
我们的演示系统包括一台计算机,一个放置双手的铁架,以及一个Leap Motion,如图3所示。
图3 实验装置和实验过程
为了验证系统的可行性和运行效果,本文模拟两种情况进行系统的手势识别差异的分析。第一种情况是病患的一只手出现问题而另一只手正常,则将患者正常的手作为健侧手,出现的问题的手作为患侧手,进行差异度检测并对患侧手进行诊断。当病患只有一只手且这只手出现问题时,则是本文模拟的第二种情况,此时病患出问题的手作为患侧手,另一个人的正常手作为健侧手,即将他人的手作为标准进行差异度检测并对病患的患侧手进行诊断。下面本文分别针对这两种情况详细介绍。
3.1 患侧手和健侧手为同一人的手
共10位受试者分别做出图4的两组手势,第一组手势旨在研究手指是否弯曲对手势差异的影响,包括图4 的(a)和(b),其中(a)请每位受势者左手和右手都做OK 手势,(b)请每位受试者左手做OK手势,右手在OK手势的基础上使中指,无名指和小拇指弯曲。第二组手势旨在研究手指的弯曲程度对手势差异度的影响,包括图4 的(c)和(d),其中(c)请每位受试者左手拇指伸直,食指微屈作为标准手,右手拇指伸直,食指伸直;(d)请每位受试者左手手势不变,将右手拇指伸直,食指弯曲。待系统显示结果稳定后记录数据,最后求平均值进行分析。
图4 实验手势
图5 是实验平台显示界面上手势变化情况,其中带有蓝色背景的界面是Leap Motion 工作界面,三个参数C,E 和D 体现两只手整体差异度。C 表示关节点间差异度,E 表示指尖到掌心的欧几里得距离差异度,D 为向量点积差异度。从图5 我们可以得知,当两手手势相近时,每个参数的值都很小,如图5(a)所示。反之当两手部分手指表现不同时,则相应数据变大,如图5(b)。
图5 实验结果
表1 和表2 为10 位受试者做两组手势的实验数据,以每组结果的平均值为依据进行分析。首先分析患者手指是否弯曲对手势差异结果的影响,如表1(a)所示,当受试者左手和右手都做OK 手势时,受试者差异值的平均值都很小;而当受试者将右手的中指,无名指和小拇指弯曲时,从(b)的五个手指差异的平均值可看差异值明显上升说明待测手和标准手差异很明显。
表1 手指是否弯曲对手势差异结果的影响T=Thumb,I=Index,M=Middle,R=Ring,P=Pink(下同)(a)左手和右手做OK手势(对应图4(a)))
当受试者左手大拇指伸直食指微屈,右手大拇指伸直食指伸直时结果如表2(a)所示,Index 平均值明显高于其它几个手指说明系统检测出待测手和标准手的食指之间的差异;当受试者将右手的食指弯曲时,结果如(b)所示,可见Index值明显上升,且D 的平均值远高于右手食指伸直的D 值,说明手指的弯曲程度更大时D值更高。
表2 患者手指的弯曲程度对手势差异结果的影响(a)左手大拇指伸直食指微屈,右手大拇指伸直食指伸直(对应图4(c))
3.2 患侧手和健侧手为不同人的手
本文模拟的第二种情况是病患只有一个手且这只手是病患手,则需要将另一个人的正常手作为健侧手。我们请10 位受试者两两为一组,每组中一个人的左手作为健侧手,另一个人的右手为患侧手。成员做图4的(a)和(b)手势,表3为实验结果,其显示说明本系统进行差异度比较时无论以自己的手作为健侧手还是以别人的手作为健侧手,检测结果都基本相同。
表3 健侧手和患侧手分属两人对实验结果的影响(a)左手和右做OK手势(对应图4(a))
实验结果表明,在患侧手和健侧手为同一个人的手的情况下,手指的差异度都能做出较准确的判断。
4 结语
本文是基于人体交互设备Leap Motion,构建了一个病患手评估系统,该系统通过分析Leap Motion探测并建立的手部模型提取各个部位的特征信息,进而可以判断两手的差异程度,可以提供给医生或者专家作为量化数据的指标以供参考。