资料下载 - 厦门大学数字媒体计算研究中心

Download Report

Transcript 资料下载 - 厦门大学数字媒体计算研究中心

基于Kinect的手势识别
技术研究
目录
1
手势识别简介
2
基于Kinect的手势识别
3
Hand Gesture Recognition Using Kinect
手势识别简介
 手势:人手或者手臂结合产生的各种姿势或动作
 根据其时变特性,分为
 静态手势:用手的形状来表明手势者意图
 动态手势:运动的手势,由一组序列图像组成
 手势识别研究方向:
 基于触摸屏
 基于数据手套
 基于视觉
手势识别简介
 基于触摸屏的手势识别
 通过手指或触摸笔与物体表面接触达到直接人机交互目的
 智能手机、平板电脑等
 优点
• 多用户、多点同时与计算机交互
 缺点
• 直接接触,操作受到一定限制
• 精度受手指影响
手势识别简介
 基于数据手套的手势识别
 利用手套内的传感器系统采集数据以判断手指的弯曲程度、
关节角度等,转化为传感信号,输入到计算机中
 优点
• 输入数据量小、识别率高、速度快
• 可识别手势种类多,可实时
 缺点
• 需要佩戴装备,不符合自然人交互原理
• 装备昂贵,不适合推广
手势识别简介
 基于视觉的手势识别
 手势采集后,需要对图像进行手势分割,将手势从图像中分
离出来,常用的方法有
• 增加限制法:特定背景等,精度高,但降低手势自由性
• 肤色检测法:常用。分离出肤色区域
手势识别简介
 肤色检测法
 早期:设置基于RGB颜色值的阈值,分离出隶属肤色
范围的像素点,受光照影响较大
 当前:确定适合的颜色空间 RGB,CMY,HSV,YCbCr
• 正常光照下:RGB色空间
• 光照变化较大时:YCbCr色空间
 针对不同人种造成的肤色不同,色空间内肤色设置的
阈值不是固定的,而是采用自适应的阈值选取方法
手势识别简介
 YCbCr色空间
 YCbCr中Y是指亮度分量,Cb指蓝色色度分量,Cr指红色色度分量,
因此该颜色空间对亮度和颜色能进行较好的分割
 优点:
• 将亮度与色度分离,并且色度分量
在色彩上具有一定的聚类性
• 与RGB颜色空间之间是线性的转换关系
肤色像素在CbCr区域的分布
手势识别简介
 不同色空间检测率对比
色空间
肤色阈值
检测率
RGB
0.36<r<0.465
0.28<g<0.363
0.279<b<0.291
82.38%
HSV
0.04<H<0.13
79.02%
HIS
0<H<1.6∪5.5<H<6.3
0.12<S<0.87
83.74%
YCbCr
133<Cr<173
77<Cb<128
85.02%
基于Kinect的手势识别
 可以拍摄3D信息的摄像机:克服光照、阴影等干扰
 20世纪90年代,TOF(飞行时间法)摄像机:通过计算光的飞行
时间来测量拍摄物体的深度信息
• 方便区分前景和后景,在目标识别和追踪方面有独特优势
• 分辨率低,价格贵
 2010年,微软推出用于Xbox 360的体感外设3D摄像机Kinect:
使用结构光编码技术(Light Coding)获取拍摄图像深度信息
• 价格低,分辨率达像素级
• 使用图像处理器芯片,可以使PC端以低配置实现实时性
基于Kinect的手势识别
 Kinec核心技术
 获取目标深度数据
 具有骨骼跟踪功能
• 目前可以追踪20
个骨骼点,最多
可以定位6个人的
骨骼位置
基于Kinect的手势识别
 除了游戏领域,由于Kinect广泛的易用性和低廉的成本,在计
算机科学、电子工程以及机器人等领域也有广泛应用
基于Kinect的手势识别
RGB摄像头
红外线发射器
CMOS 红外摄像头所
构成的3D 深度感应器
 Kinect工作原理
红外发射器发出近红外激光,
当激光照射到粗糙物体时会形成具有
高度随机性的衍射斑点,称为激光散斑。激光散斑会随着成
像物体的距离不同而变换图案,当激光散斑照射到整个空间
时即对空间进行了标记。红外摄像头则接收空间标记,传递
至Kinect 内部的图像处理器芯片。图像处理器通过分析散斑
图案获得的空间距离生成深度影像,并使用USB2.0 协议传输
至PC 端。
基于Kinect的手势识别
Kinect的深度通过灰度值来进行编码。
一个像素颜色越深,代表这个像素离
摄像头越近。黑色的像素点表示这些
点上的深度信息无法被获取到。
基于Kinect的手势识别
 Kinect摄像头分辨率为640*480像素,每秒可以采集30帧图像,
彩色图像和深度图像理论有效采集范围kinect for Xbox是
0.8~4m,kinect for windows 对0.4~0.8m内也有效
 由于深度信息的加入,除了可以更好的进行手势分割,还可以记录动
态手势在深度上的变化,扩大识别范围
基于Kinect的手势识别
 基于Kinect的手势识别常用方法
 使用Kinect 获取深度图,然后使用微软提供的Kinect
SDK 进行人体骨架识别从而获得手势位置及动作意义
• 必须要在摄像头全身可见的条件下才能较为准确的识别
 根据深度信息过滤提取出手势部分深度图,再将其转
换为平面图,使用2D 手势识别的方式进行识别
• 常用方法
基于Kinect的手势识别流程
 Kinect校准
 原因:Kinect运输过程中,热量和震动导致红外发射器和感
应器之间产生偏差
 Kinect传感器的深度值是由一个对其真实值的仿射变化得到
的
Zmeasured  Ztrue  
 对Kinect进行重新校准的目标是决定参数
和 
 通过Kinect的RGB摄像头,重新校准技术可以决定其摄取到
的特征点的3D坐标,而这些坐标才是真实的坐标值。与此同
时,Kinect产生了这些特征点在IR摄像头下的估计坐标值,
将这两个坐标点集之间的差值最小化, Kinect就能够估计到α
和β的值与RGB和红外摄像头之间的转换关系。
基于Kinect的手势识别
 基于三维视觉的深度分割
 设定深度范围,将该范围内的图像像素提取出来
 与肤色分割相比:不受同色的人脸干扰,但限制了活动
范围,除非手掌正对摄像头,否则易受手臂干扰
 改进:将深度与肤色结合起来
肤色检测
深度分割
二者结合
基于Kinect的手势识别流程
 手势识别流程
静态手势识别
动态手势识别
手势分类和识别过程
基于Kinect的手势识别流程
 手势跟踪
 物体的跟踪可以理解为确定其在视频序列不同帧中相
对位置的动态过程
 常用方法:Camshift跟踪算法
• 当视频序列一帧帧变化时,Camshift利用其自动调节搜
索窗大小和位置的功能,定位被跟踪目标的位置,并利
用已知定位结果来预测下一帧目标位置。如此迭代处理
每帧图像,形成动态跟踪
• 常用颜色作为跟踪特征
• 利用Kinect,可以直接对手掌掌心进行跟踪
基于Kinect的手势识别流程
 根据分类器的不同,目前手势识别的方法有:
 基于模板匹配
 基于人工神经网络ANN
 基于概率统计模型(HMM)
 基于支持向量机SVM
 基于动态时间规划DTW
基于Kinect的手势识别流程
 基于模板匹配
 常用于静态手势识别
 把输入的图像与预先存储的模板进行匹配,并测量比
较其相似度。
 轮廓边缘匹配、弹性图匹配、基于Hausdorff距离匹配
• Bergh M V D 等人:领域间隔最大化法(ANMM)
• 刘玉进等人:引入M+N特征维数的人手成对集合直方图
(PGH)特征值
 简单快速,但准确率不高,可识别数量不多
基于Kinect的手势识别流程
 基于ANN(人工神经网络)
 是一种基于决策理论方法的识别方法,能进行大规模分布式
并行信息处理
 一般由许多具有非线性映射能力的计算单元(神经元)组成,
不同单元之间通过权相连,通过一定训练,能够估算对应某
种模型中决策函数的参数,从而完成一定分类的任务
 可以对未知过程进行拟合,具有一定的学习能力,被大量运
用在静态和动态手势识别中
基于Kinect的手势识别
 误差反向传播的神经网络BPNN
 该神经网络有三层,使用最速下降的学习方法,使网络误差平方和达到最小。
 Murthy G R S等:监督前馈的BP神经网络,对5个不同使用者10种手势进行识别,准
确率达89%
 模糊神经网络FNN
 模糊理论与ANN结合的产物
 Tusor B等:用14个取值介于小、中、大的模糊特征值描述不同的手势,并改变了模
糊神经网络的拓扑结构使之成为闭环的模糊神经网络,使训练时间缩短,且不明显影
响识别率
 复数域神经网络CVNN
 Hafiz A R等人:利用Kinect,对手势进行边缘检测和细化算法建立“手势树模型”,再
利用CVNN分类,效果较好
基于Kinect的手势识别
 基于概率统计模型
 贝叶斯分类器:密度函数的维数和具体表达形式难以确定,需要估
计和假设,结构复杂,配置的参数过多,不适用于复杂手势识别
 隐马尔可夫模型HMM:
• 最简单的马尔可夫过程就是一阶过程,每一个状态的转移只依赖于其之
前的那一个状态。HMM描述一个含有隐含未知参数的马尔可夫过程
• 先训练手势的HMM库,使每一种已知手势对应一个HMM。识别时,将待
识别的手势特征值代入模型库中的各个HMM,对应概率值最大的那个模
型即为该手势
• 较好解决不同手势间时间上的非线性波动问题,提供了时间尺度不变形,
但计算量大,实时性依赖于计算速度
基于Kinect的手势识别
 基于SVM
 通过把特征向量映射到高维空间,使得在原来的样本
空间中非线性可分的问题转化为在特征空间中的线性
可分的问题 ,并通过一个线性超平面实现线性划分
 选择什么样的特征向量是关键
基于Kinect的手势识别
 基于动态时间规划DTW
 动态规划技术的基础上,具有非线性时间归一化效果
的模式匹配算法。
 使用某种指定属性的非线性规整函数对时间轴上的波
动近似建模,通过弯曲其中一个模式的时间轴,使之
和另一个模式达到最大程度的重叠,从而消除两个时
空表示模式之间的时间差别
 步骤简单,计算量少,是HMM的简化
基于Kinect的手势识别
设一个参考模板特征矢量时序序列为 B={b1,b2,…,bi} ,输入的待
识别手势特征矢量的时序序列为A={a1,a2,…,aj} ,其中i≠j。
DTW算法就是要寻找一个最佳的时间规整函数,使待识别手势特征
矢量序列的时间轴j(A)非线性的映射到模板手势的时间轴i(B),使总
的累计失真量最小。
基于Kinect的手势识别
设ai为测试模板中某一帧,bj为参考模板中的一帧,记D(ai,bj)为ai
与bj的累计距离。为了使路径不至于过倾斜,可以约束斜率在0-2的
范围内,如果路径已经通过(ai,bj),则其通过的前一点只可能在下
图三个位置中的一个
计算累积距离的递推公式为:
基于Kinect的手势识别
 算法优化
 对全局路径的限制,减少畸形匹配
• 如将路径的约束斜率设为1/2~2
待测模板的每一帧只需和菱形范围内
的帧进行比较即可
减少存储空间
减小计算量
基于Kinect的手势识别
 算法优化
 设定失真度阈值
• 在待识别索引序列和索引序列库中的某个序列匹配过程
中,一旦计算出的部分失真度超过阈值,立即终止,转
入对下一个索引序列的匹配
• 节约大量计算开销
Hand Gesture Recognition Using Kinect
Software Engineering and Service Science (ICSESS), 2012 IEEE 3rd
International Conference on
被引次数:10
研究背景
 关于Kinect的研究文献,很少涉及到HGR
 可以识别出移动手势,如上移、下移、向前、向后,但没有
识别出指尖
 对指尖进行跟踪,但没有应用到手势识别,而是机器人操控
 可以识别出指尖,但识别种类单一,如指尖操控Angtry Bird
Hand Gesture Recognition Using Kinect
 A novel method for contact-less HGR using
Microsoft Kinect
 detect the presence of gestures
 identify fingers
 recognize the meanings of nine gestures in a predefined Popular Gesture scenario.
Hand Gesture Recognition Using Kinect
 The system of the present work consists of
three main components
 Hand Detection(手的检测)
 Finger Identification(手指识别)
 Gesture Recognition(手势识别)
Hand Gesture Recognition Using Kinect
 Hand Detection
 First step:separate the hands from the background
• 手动设置一个深度阈值zRange:0.5~0.8m,超过这个范
围的像素点在程序中不予考虑
• 在这个范围内,至多可以识别两只手
Hand Detection
 K-均值聚类算法:
 从n个数据对象任意选择 k 个对象作为初始聚类中心;而对于所
剩下其它对象,则根据它们与这些聚类中心的相似度(距离),
分别将它们分配给与其最相似的(聚类中心所代表的)聚类;然
后再计算每个所获新聚类的聚类中心(该聚类中所有对象的均
值);不断重复这一过程直到标准测度函数开始收敛为止。一般
都采用均方差作为标准测度函数
 已知数据集C,将其划分成k个簇C1, C2, …, Ck,每个簇的均值
代表点(聚类中心)为m1, m2, …, mk,则误差平方和准则函数
公式为:
k
E    p  mi
i 1 pCi
2
Hand Detection
 K-均值聚类算法:
 本系统中k设置为2,在zRange范围内随机取2点作为
初始聚类中心
 当均值收敛后,属于每个手的点也就聚合完成了
 当两只手的质心小于一个预定义的值,这两个簇就合
并成了一个
Hand Detection
 K-均值聚类算法
 主要优点:
• 是解决聚类问题的一种经典算法,简单、快速。
• 对处理大数据集,该算法是相对可伸缩和高效率的。因
为它的复杂度是O(n k t ) , 其中, n 是所有对象的数目, k
是簇的数目, t 是迭代的次数。通常k < <n 且t < <n 。
• 当结果簇是密集的,而簇与簇之间区别明显时, 它的效果
较好。
 主要缺点
• 在簇的平均值被定义的情况下才能使用,这对于处理符
号属性的数据不适用。
• 必须事先给出k(要生成的簇的数目),而且对初值敏感,
对于不同的初始值,可能会导致不同结果。
Hand Detection
 采用Graham扫描算法计算两个聚类中的凸包(convex
hulls),即手的最小凸多边形边界
Hand Detection
在所有点中选取y坐标最小的一点H,当作基点。如果存在多
个点的y坐标都为最小值,则选取x坐标最小的一点。坐标相同
的点应排除。然后按照其它各点p和基点构成的向量<H,p>与
x轴的夹角(就是极角)进行排序
以下图为例,基点为H,根据夹角由小至大排序后依次为H,K,
C,D,L,F,G,E,I,B,A,J
Hand Detection
 采用Moore-Neighbor Tracing算法进行轮廓检测
Hand Gesture Recognition Using Kinect
 Finger Identification
 轮廓检测完成后,所形成的轮廓内接圆的圆心即是手
掌掌心,它比两个聚类的质心更加的稳定,因为质心
会随着手指的张开,弯曲发生改变
 掌心用于计算手指的方向
 采用三点定位法(Three-point Alignment Algorithm)确定
指尖
Finger Identification
 Three-point Alignment Algorithm
1. 候选点集C既在凸包上,又在轮廓上
2. 对C中的每一点p0,沿着轮廓集取反
向的两个点p1,p2
3. 计算p1,p2的中点,计算p0到中点的
距离d
4. 如果d大于某个值,证明三点不共线,
记为一个指尖点
Finger Identification
 Finger Identification Algorithm
利用指尖点之间的距离关系来对
指尖进行识别(需要把手指张开
进行)
Finger Identification
 当下一帧显示的图形经过变换,可以与上一帧匹配,
则上一帧中的所有属性可以映射到下一帧中
Gesture Recognition
 一旦所有手指被识别出来,就可以进行手势识别
 通过三层分类器(Three Layers of Classifiers)
 Finger counting classifier
 Finger name collecting
 Vector matching:
• The direction vectors of all extended fingers are
measured, and all pairwise angles between extended
fingers are calculated.
• The meaning of the gesture is now classified according
to these angles
Hand Gesture Recognition Using Kinect
 Results
 4 people are asked to perform each of the 9 gestures
for 100 times: 50 times with the left hand and 50
times with the right hand.
Hand Gesture Recognition Using Kinect
 Results
 if the signer uses two hands to do the same
gestures at the same time, the accuracy is
significantly increased to more than 90% for all
nine gestures.
Hand Gesture Recognition Using Kinect
 Conclusion and Future Work
 利用深度信息将手从背景中分辨出来
 利用K-均值聚类算法将手的像素点收敛成2个聚类
 Granham扫描算法计算凸壳, Moore-Neighbor
Tracing算法检测轮廓
 三点定位算法定位指尖
 利用指尖距离关系识别出每个手指
 利用三层分类器进行手势识别
Hand Gesture Recognition Using Kinect
 Conclusion and Future Work
 用于特殊场景的实时交流:语言和听力有障碍的人群
 可以在黑暗中工作
 有良好的可移植性
 未来发展方向:
• 通过HMM可以识别连续性的手势,可以将词语形成句子
• Kinect新版本的发布,使其更适用于HGR
参考文献
[1] 邓瑞, 周玲玲, 应忍冬. 基于Kinect深度信息的手势提取与识别研
究[J]. 计算机应用研究. 2013, (04)
[2]钱鹤庆. 应用Kinect 与手势识别的增强现实教育辅助系统[D]. 上
海交通大学,2011
[3] 关然, 徐向民, 罗雅愉等. 基于计算机视觉的手势检测识别技术[J].
计算机应用与软件[J]. 2013, 30(1): 155-159
[4] Yi Li. Hand Gesture Recognition Using Kinect[J]. Software
Engineering and Service Science (ICSESS), 2012 IEEE 3rd
International Conference on. p196-p199