1.一种应用于助老助残移动服务机器人控制的手势识别方法,其特征在于,包括以下步骤:
S1:获取Kinect静态手势的深度图像并使用骨骼追踪方法获取手掌心坐标S0,同时以掌心坐标S0为中心截出一块包含手掌图像的正方形区域;
S2:采取自适应邻近值法对所述正方形区域所在的深度图像进行分割,以取得精确的手掌轮廓,然后对手掌轮廓进行图像形态学处理以降低手掌轮廓的细节;
S3:对形态学处理过后的手掌轮廓进行椭圆拟合,以椭圆圆心为手掌轮廓的几何中心S1,建立圆周序列曲线,求出圆周序列曲线上的所有极大值和极小值,并使用一个极大值和左右各一个极小值构成极值点对;
S4:求极值点对内的所有轮廓点,通过计算每个轮廓点的梯度排除掉不合适的轮廓点,剩下的部分便是手指轮廓或是手腕轮廓;再比较各轮廓的宽度,取其中宽度最大且比任何其他的轮廓宽度均大两倍以上的为手腕轮廓;
S5:通过手指轮廓确定手指的个数,从而得出静态手势的识别结果来调节移动服务机器人,即调节智能轮椅的速度大小;
S6:在步骤S5确定移动服务机器人的速度之后,做动态手势由Kinect获取其不同时刻的手心位置,计算得到手势轨迹角度,再根据所得角度采用12方向链码进行离散化将手势轨迹不同时刻的切线角度变化作为手势特征向量;
S7:根据经过训练的HMM模型对手势特征向量进行预测分类,其中HMM模型为根据对样本手势区域通过使用Baum-Welch算法进行训练得到的分类模型;
S8:以步骤S6中得到的手势特征向量中的局部特征和全局特征作为输入,运用HMM模型进行动态手势的识别,选用Viterbi算法计算似然度识别出当前帧中的动态手势类别,其结果用来确定移动服务机器人的运动方向,从而完成全部的识别工作;
所述步骤S5中,通过手指轮廓确定手指的个数,从而得出静态手势的识别结果来调节移动服务机器人即智能轮椅的速度大小,手指数从一到五分别代表其运行速度从小到大的五个档位,而握拳即识别手指数为零则代表停止。
2.根据权利要求1所述的应用于助老助残移动服务机器人控制的手势识别方法,其特征在于,所述步骤S2的具体实现包括:先将深度图像所有像素点置为白色,将掌心坐标S0设为源像素,置为灰色同时入队;只要队列不为空,就循环执行出队操作,对于每一个出队的像素点Pij如果Pij与掌心坐标S0的深度值之差不超过阈值Threshold,则将该像素置为黑色,否则置为白色;如果为黑色,则计算该像素Pij的深度值及与其曼哈顿距离为1的所有白色像素Pwhile的深度值之差,其中差值不超过1的就将Pwhile设为灰色Pgray同时入队列;当队列为空时,算法终止,标为黑色的像素便是前景像素;采用自适应邻近值法进行前景检测,自适应邻近值法指不强行规定阈值Threshold应该取何值,每次进行前景检测时阈值Threshold的值先从3开始取,然后依次递增分别使用邻近值法获取前景图像,当前景图像所包含的像素与上一次检测所包含的前景图像像素个数相差少于10时,表明前景检测已经稳定,阈值Threshold的值不用再递增;取已经稳定的前景图像与上一次并未稳定的前景图像之差,这个差值图像里最大的一块区域便是手腕的位置;在取出手掌前景图像后,对前景图像进行图像形态学处理,具体是指:先对图像作腐蚀操作,然后再做膨胀,腐蚀操作与膨胀操作所使用的均是3×3的核,以减少手掌图像轮廓的细节;最后寻找手掌轮廓,用序列表示,完成手掌的检测。
3.根据权利要求1所述的应用于助老助残移动服务机器人控制的手势识别方法,其特征在于,所述步骤S3的实现具体包括:对手掌轮廓进行椭圆拟合,以椭圆圆心作为新的轮廓几何中心S1,建立圆周序列曲线,圆周序列曲线是手指轮廓的另一种表示形式,它在X轴上有360个刻度,Y轴表示手掌轮廓上各角度X的点距手掌几何中心S1的最大欧几里德距离;
使用极值点对法对圆周序列曲线上的点进行运算,求出所有的极大值点和极小值点作为候选极大值点和候选极小值点,对于这些候选极值点,通过以下条件进行逐个筛选:(1)对于相连的几个极大值点,取出其中最大的一个;
(2)两个极大值点之间有且只有两个极小值点,如果大于两个,则将中间的候选极小值点删掉,留下两边的,如果只有一个,则复制一个跟它一样的极小值点;
(3)将一个极大值点和紧帖在它两边的两个极小值点组成一组极值点对,每组极值点对为一根候选手指或候选手腕,计算各组点对中极大值与极小值的平均差,对于平均差较小的点对,属于干扰点对,从候选手指中删除。
4.根据权利要求1所述的应用于助老助残移动服务机器人控制的手势识别方法,其特征在于,所述步骤S4的实现具体包括:取出极值点对中所包含的所有轮廓点,以极大值点为中点分为左右两部分,对左边部分上的每一个轮廓点求它的梯度方向上的直线是否能与右边部分相交,如果不相交,则该轮廓点作为孤立点从手指轮廓或手腕轮廓中剔除;取对右边部分上每一个轮廓点求它的梯度方向上的直线是否能与左边部分相交,如果不相交,则该轮廓点作为孤立点从手指轮廓或手腕轮廓中剔除;在删除两头部分孤立点之后,取剩下的轮廓为手指轮廓或手腕轮廓;比较各轮廓的宽度,取其中宽度最大的且比任何其他的轮廓宽度均大两倍以上的为手腕轮廓。
5.根据权利要求1所述的应用于助老助残移动服务机器人控制的手势识别方法,其特征在于,所述步骤S6中,在得出静态手势识别结果后开始做动态手势,向前后左右四个方向挥动给出轮椅运动的方向信号,通过Kinect获取不同时刻手心位置,计算手势运动轨迹,并分别提取手势轨迹方向角和三维质心距函数作为局部特征和全局特征,具体方法如下:S61:根据手心位置计算手势运动轨迹
S62:提取手势轨迹方向角作为局部特征:
设t和t-1时刻的手心坐标为根据下式就可以计算出手势轨迹的方向角,根据所得方向角度对其进行12方向链码离散化;
S63:根据下式提取三维质心距函数作为全局特征:
其中:xc,yc表示N个节点的加权质心。
6.根据权利要求1所述的应用于助老助残移动服务机器人控制的手势识别方法,其特征在于,所述步骤8中,动态手势识别的过程是指将待动态识别的手势与己经建立好的动态手势HMM模型库进行匹配,通过计算从而搜索到最佳匹配的过程,动态手势轨迹识别是在训练好HMM模型后进行,利用前后向算法和Viterbi算法,通过与训练好的模型库匹配来计算相似度,识别的具体流程包括:S81、首先提取手势轨迹特征,转换成观测向量值;
S82、然后采用前向后向算法或者Viterbi算法,计算出此动态手势轨迹的观察值向量序列与手势模型库中各个动态手势轨迹的HMM模型的概率P(O|λ);
S83、比较得到概率值最大手势模型,则这个分类为待识别动态手势轨迹的手势模型。