资料下载 - 厦门大学数字媒体计算研究中心
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 pCi
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