季齐 占瑜毅 黄龙 高文雄
摘 要:提出一种基于深度信息对手指坐标进行实时跟踪,并可用于机械手同步运动控制的方案。首先利用Kinect的骨骼信息定位手掌位置并进行手部分割和轮廓提取,再提取指尖坐标,经卡尔曼滤波后计算手指与手掌的夹角,并发送至下位机,进而控制机械手与人手同步运动。
关键词:Kinect 手势识别 指尖检测 机械手 人机交互
中图分类号:U292 文献标识码:A 文章编号:1672-3791(2018)05(a)-0078-02
在当今社会中,计算机技术在各种领域中都有广泛应用。现在主流的人机交互手段是键盘、鼠标,但是这种交互手段在直观性、自然性上有一定的限制。手势识别是新兴的人机交互手段,利用计算机视觉技术使得计算机明白人的意图,从而实现相应的控制,这种便捷的控制方式具有广泛的研究价值。
1 Kincet设备获取手部信息
1.1 Kinect简介
2010年11月,微软公司发布了一款体感外设Kinect,它可以检测用户的骨骼信息与运动姿态,使玩家能脱离传统的手柄键盘进行操作。Kinect由3个镜头组成。RGB彩色相机用来采集彩色图像,左右两侧的相机构成一组深度摄像头,可用来采集深度数据[1]。
1.2 手掌区域分割
Kinect SDK可以检测人体的骨骼信息并追踪关节点坐标,进而快速获得掌心的大致坐标,利用最近邻法可从深度图像分离手部区域,具体算法步骤如下。
(1)使用Kinect SDK提供的骨骼点检测功能提取右手掌心和手腕的坐标。
(2)以掌心为中心提取160×160像素的特征区域ROI。
(3)遍历特征区域ROI,设定阈值T1,T2,将深度在手心深度减T1,手腕深度加T2范围内点判定为手掌点,其余点为环境点。使用式(1)进行二值化。
2 指尖检测和手指追踪
2.1 掌心点计算
Kinect SDK虽然提供了掌心点坐标,但该坐标稳定性较差。为了减小误差,本文利用分割出的手掌区域计算特征矩进而得到掌心坐标。
2.2 优化K-curvature算法计算指尖坐标
首先利用findContours函数提取手部轮廓,再对手掌轮廓上的各点Pi,计算与,如果矢量夹角的余弦值大于设定的阈值dot,则判定Pi为指尖点。经实验表明,k取轮廓数目的5%、dot取0.4时效果最好。
2.3 手势判定
得到指尖坐标和掌心坐标后,根据手指数量及其坐标关系计算特征值T1-T5即可实现相关手势的判定。T1表示手指数目,T2表示是否存在大拇指,T3表示两侧指尖与掌心夹角的范围,T4表示手指与手掌夹角的范围,T5表示最外侧指尖到掌心的距离。
2.4 角度计算
为了消除手指坐标的抖动,本文采用卡尔曼滤波器对每根手指的坐标进行追踪,再使用滤波后的坐标计算指尖-指根-掌心的角度。最终手指与手掌的夹角计算公式如式4所示,其中B,A,0分别为指尖点、指根点、掌心点B'与A'为指尖点和指根点在ZOY平面内的投影。
3 机械手控制部分设计
本文的机械手是一个总自由度为5的多关节灵巧手指,分为灵巧指与掌部两块,手指由基关节、近指节、中指节和远指节组成[4]。手的掌部用以固定5个基关节以及容纳布线。主控芯片选择stm32f103,电机选用Maxon空心杯减速电机,电机输出的扭矩通过伞齿轮传递,可将圆周运动转换成指节的摆动。
4 结语
经测试,该系统可以在搭载Windows系统的电脑中正常运行,可识别预设的12个手势,并计算每根手指的指尖坐标和弯曲角度,通过串口发送至下位机,驱动电机转过相应角度,实现机械手的运动控制。
参考文献
[1] 王劲东,武频.一种基于Kinect的指尖检测算法[J].计算机技术与发展,2016,26(7):14-18.
[2] 李吉,顾德,刘飞.基于Kinect深度信息的手指及手部跟踪研究[J].计算机应用与软件,2015,32(3):79-83.
[3] 谈家谱,徐文胜.基于Kinect的指尖检测与手势识别方法[J].计算机应用,2015,35(6):1795-1800.
[4] 王松林.基于Kinect的手势识别与机器人控制技术研究[D].北京交通大学,2014.
[5] 高伟.手部运动分析方法研究[D].天津大学,2014.
[6] 袁方剑,王毅轩,王毅刚,等.基于Kinect深度图像的指尖识别及手势判定[J].电子科技,2014,27(8):6-10.
[7] 郑斌珏,赵辽英,王毅轩.基于Kinect深度信息的手指检测与手势识别[J].计算机科学與技术汇刊:中英文版,2014(1):9-14.
[8] 卜夺夺.仿人机器人欠驱动灵巧手研究[D].杭州电子科技大学,2012.