基于多摄像头的手势识别_第1页
基于多摄像头的手势识别_第2页
基于多摄像头的手势识别_第3页
基于多摄像头的手势识别_第4页
基于多摄像头的手势识别_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于多摄像头的手势识别技术研究研究背景2手势识别概述2手势识别的概念2手势识别流程3手势建模4手势检测与跟踪4手势特征提取5静态手势特征5动态手势特征7手势识别8静态手势识别8动态手势识别9基于多摄像头的手势识别12G-Sense系统的手势词汇设计13G--Sense手势识别应用13G-Sense应用背景下的手势设计14动态手势的定义15Sense手势识别系统设计与实现15G-Sense系统框架与功能16G-Sense系统的详细设计17研究背景随着计算机硬件与软件技术的发展,人机交互技术由传统的鼠标键盘时代发展到了以语音输入、动作识别等技术为代表的自然交互时代n1。特别是视觉计算技术的发展,使计算机获得了初步视觉感知的能力,能“看懂”用户的动作。其中手势识别作为一种直观的、自然的输入方式,把人们从传统接触性的输入装置中解放出来,可以以一种更自然的方式与计算机交互,使计算机界面变得更加易‘引。手势主要分为静态手势和动态手势两种,动态手势可以看作是连续的静态手势序列。动态手势具有丰富和直观的表达能力,与静态手势结合在一起,能创造出更丰富的语义。利用动态手势识别构建新型的交互界面,是新一代的人机交互界面对输入方式自然性的要求,可以弥补传统交互方式的不足。基于视觉和手势识别研究正处于蓬勃发展的阶段,仍存着的许多值得研究的问题。研究基于视觉的动态手势识别对于构建更加好友的人机交互界面很有意义。本文研究的是基于多摄像头的动态手势识别方法,利用两个正交放置的摄像头来获取动态手势的三维运动信息,以支持三维动作的识别。它是基于两个应用背景的应用研究:其中一个是利用手势控制的照片浏览,另一个是三维动作感应的拳击小游戏。作为一个应用研究,在研究的过程中需要解决手势检测、动态手势跟踪中的于脸遮挡、多摄像头协同工作和手势特征提取、动态手势识别等一系问题。手势识别概述手势识别的概念手势是姿势的一个子集,姿势这个概念没有精确的定义。一般认为,手势概念经过人的于转化为的于势动作,观察者看到的是于势动作的图像雎1。手势的产生过程如图2-1所示。图2-1手势的产生过程手势识别的过程则找一个从图像V到概念动作G的变换而,如图2-2所示。图2-2手势识别的过程手势识别流程手势识别流程包手势图像获取、手势分割、手势特征提取、手势识别四大部分嘲,如图2-3所示。图2-3手势识别流程手势建模在手势识别框架中,手势模型是一个最基本的部分。根据不同的应用背景,于势识别采用的模型会有不同,而对于不同的手势模型,采用的手势检测与跟踪算法、特征提取、识别技术也会有差别。手势建模主要分为基于表观的手势模型与基于三维的于势模型。基于表观的手势建模是一种二维建模,从二维平面观察得到的平面图像信息描述于的特征。基于表观的手势模型主要包括基于颜色的模型与基于轮廓的模型两种。基于颜色的手势模型是把手势图像看作像素颜色的集合,通过提取手部的颜色的特征来描述手势。基于颜色的手势模型的常用特征是颜色直方图。基于轮廓的手势模型是把手看作一个轮廓,通过提取手部图像中手的轮廓的几何特征来描述手势。手势检测与跟踪手势检测与跟踪是手势识别处理流程中最前端的处理部分,它处理从摄像头获取到手势图像(序列>,从中检测和分割手势对象。如果是动态手势识别,还要对手进行跟踪。基于运动信息的方法:基于运动信息的方法是假设在视频中只有手是运动物体。其中一种方法是背景减法。它要求背景静止不变,把视频中的每帧与背景相减,背景相同的部分变为零,不同的部分就认为是运动的物体,即手。R0))=4(甚y)-4式工,y)另一种方法是差帧法,通过当前帧与前一帧(前若干帧>相减,检测出两帧之间的差异来确定手部运动的起始区域。但是一般相邻帧之间的手势运动幅度不大,差帧法只能检测出运动的轮廓,一般要以比较低的帧采样率或者隔若干帧做减法才能正确检测与分割运动的手部。平居用=[Gy)-%(x,y)手势特征提取手势特征的提取是与手势模型密切相关的,不同的手势模型会有不同有于势特征。例如基于模型的手势模型有手的每个关节的状态特征,基于表观模型的手势特征是轮廓特征、位置特征等。静态手势识别和动态于势识别的特征也不同,静态手势的特征只是描述的手的静态信息,例如轮廓、面积等。动态手势特征是连续的静态特征序列。静态手势特征常用的静态手势特征有轮廓、位置、面积、手指分布等。手的轮廓特征可以连续的点来表示。通过边缘检测算法,把图像区域的边缘检测出来,经过进行平滑和多边形拟合算法处理,得到多边形的顶点的序列。在提取于的轮廓比较困难的情况下,或者为了提高计算效率,也可以通过计算轮廓的特征作为手势特征。例如A.Wilkowski通过以手部图像的外包矩形的边为坐标轴进行投影计算得到轮廓的直方图作为手的轮廓的特征,如图5-1所示。图5-1手的轮廓特征手的位置特征是指手掌的质心位置,质心位置可以按公式5-1、公式5-2、公式5-3、公式5-4计算。手的面积特征通过计算手的轮廓的多边形面积即可。对于二维图像,质心是通过计算零阶距和x、Y的一阶距得到的。假设二值化之后的图像为I(x,丫>,质心(乂。,Yc>的计算公式如下:5-15-2__I5-3j,j5-4于指特征的提取是一个关键的技术。经典的手指提取方法是利用手指距离手掌中心最远这个规律,把于的轮廓点的坐标转换成为以手掌中心位置为原点的极坐标系,然后分析轮廓曲线中的局部最大值(如图5-2所示>,最后通过映射规则把点的位置映射为手指。

图5-2轮廓曲线到极坐标的转换图5-3局部极值法定位手指5.2动态手势特征在动态于势中,因为于在空间和时间两个维度是都会发生变化,所以动态手势特征包含于的位置变化和于的形状变化。手的位置变化可以通过计算手势的当前位置与上一个位置之间和位置偏移量得到。假设手的运动前后位置为(」>和(|—>,则可以计算出运动方向的角度」,最后把」进行量化得到对应的方向编码。图:5-3手势运动方向编码通过计算于势运动轨迹相邻点之间位移,得到运动的方向编码,组成手势运动向量特征。手的形状变化也是一种动态手势特征,这种特征可以简单地由一系列静态手势特征组成。在有些于势识别研究中,同时考虑手的位置与形状两种变化,同时计算上面的两种特征。6手势识别6.1静态手势识别静态手势识别的方法有很多,例如基于规则的方法、模板匹配的方法、基于机器学习的方法等。基于规则的识别方法基于规则的识别方法是最简单的一种识别方法。它是手工地为手势之间建立关系,定义识别规则睁引。对于输入的手势特征,按照这些规则判别即可。基于规则的方法效率很高,缺点是这些规则需要预先硬编码在规则库中。基于模板匹配的方法基于模板匹配的方法是采集静态手势作为样本,提取特征作为模板特征库。在识别时把输入的手势特征与模板库的模板进行匹配。其中比较经典的使用弹性图匹配(ElasticGraphMatching〉方法。在基于模板的识别方法中比较重要的是定义特征的距离函数。距离函数需要根据特征的特点来选取的。张国良、吴江琴、高文等人采用改进的Hausdorff距离来进行手势识别。Hausdorff距离是用来度量两个集合之间的相似度,它的数学定义如下:A和B是两个集合,元素个数分别是n和m。4=凡}8=也也,…4}B)=max(M4B),h(B,A})航4,3)=maxmin||a-5||口dMBrmaxmin||力-口||加e3a^A其中「表示元素a和b的距离。基于机器学习的方法静态手势识别中,基于机器学习的识别方法比较常用的是人工神经网络(ANN,ArtificialNeuralNetwork〉、支持向量机(SVM,SupportVectorMachine〉等。在提取到于势特征之后,直接或者降维之后使用分类器进行分类。基于机器学习的方法需要预先使用学习样本来训练分类器。6.2动态手势识别动态手势是具有时间和空间变化,手势特征量化编码之后成为时间上的符号序列。目前有许多方法可以对时间序列数据进行分类。直方图(Histogram〉图像处理领域最基本的直方图技术在某些情况下用于动态手势识别是非常有效的。直方图能反映手势序列的整体特征。虽然它丢失了序列的时间特征,但是在一些手势种类少而且运动轨迹区别明显的手势识别应用,不失为一种好选择,它的识别处理效率很高。例如H.Jet和J.Kim使用直方图对于势运动方向向量进行统计,识别音乐指挥中的四种手势。动态时间规整(DTlr,DynamicTimeWarping>经典方法动态时间规整(DTW,Dynamic TimeWarping>在语音识别领域应用得很成功。DTW本质上是一种动态规划算法。手势识别与语音识别有许多相似之处,也可以使用DTW算法进行动态手势识别。有限状态机(FSM,FiniteStateMachine〉有限状态机(FSM,Finite StateMachine,可以用于动态手势识别。有限状态机非常适合处理有语言。动态手势也是一种语言,在为它定义文法之后,有限状态机将是一个有力的处理工具。例如P.YHong与M.Turk利用有限状态机实现了一个实时的动态手势识别系统瞳引。隐马尔可夫模型(删,HiddenMarkovModel,隐马尔可夫模型洲是从马尔可夫(Markov,链的基础上发展的。马尔可夫链是一个随机过程,而HMM是一个双重随机的过程,其中的状态转移和观察符号都是随机过程。马尔可夫链中观察值与状态是一一对应的,HMM中状态转移与观察值不是对应的,不能直接观察到状态转移,因此称为隐马尔可犬模型。HMM是一种概率统计模型,对序列的长短变化适应性比较好,适用于动态时间序列数据的识别。HMME经在语音识别领域取得了很大的成功,在手势识别也得到成功的应用。在现有的动态手势识别研究中,HMM的应用最多。HMM分为全连接型、左右型、带限制的左右型三类,如图2-4所示。左右型与全连接形的区别是它在转移概率矩阵增加了一个约束,每个状态只能转移到自己或者它后面的状态。带限制的左右型HMM是限制每个状态只能转移到自身或者它的下一个状态。在语音识别和手势识别中,通常是使用带限制的左右型洲。(c)带限制的左右型(c)带限制的左右型HMM的定义HMM是一个三元组名=(|—>。(1>状态的集合S={厂..,」>,其中N为状态数,用仍表示t时刻的状态。状态之间的转移是根据转移概率矩阵A决定的。(2>观察符号的集合O={厂...,」>,其中M是集中的符号数量。每个状态输出O是根据观察概率矩阵B决定的。(3>状态转移概率分布矩阵(3>状态转移概率分布矩阵八二」,其中,表示从」转移到」的概率。(4>观察概率矩阵B= ,示状态」观察到」的概率。(5>初始状态概率分布 ।到」的概率。(4>观察概率矩阵B= ,示状态」观察到」的概率。(5>初始状态概率分布 ।,HMM从一个初始状态开始,I,表示初始状态为」的概率。每个状态根据观察概率矩阵,输出一个观察符号,然后根据状态转移矩阵,转移到新的状态。一个具有N个状态数的HMM在一共有」种不同的长度为T状态转移序列,它的状态空间很大的。HMM具有较强的学习能力。7基于终止:<i<N头的手势识别较强的学习能力。7基于终止:<i<N头的手势识别先是手势词汇设计,介绍了在本文研究应用背景下的静态和动态手势设计。然后是介绍一种基于采样的肤色模型参数初始化方法,通过对采集于部图像样本,自动初始化手部肤色模型、手部面积和脸部面积参数。在手势跟踪部分,描述了本文提出的基于质心估计手脸遮挡下的手势跟踪方法。在手势特征提取部分,使用经典的基于轮廓的手指特征提取方法,并且提取运动向量作为动态手势特征。最后是手势识别部分,静态手势识别采用了基于正交摄像头协作的手势识别策略,动态手势识别则使用一种结合两套独立的隐马尔可夫模型的方法。本文手势识别的整体流程图如图7-1所示。

采样N结束 》--YYN解释手势动作手势运动向量计算统计手部图像的信HMM动态手势识别计算手和脸的信息标定手和脸图像二值化轮廓提取手指定位采样N结束 》--YYN解释手势动作手势运动向量计算统计手部图像的信HMM动态手势识别计算手和脸的信息标定手和脸图像二值化轮廓提取手指定位静态手势识视频获取图7-1手势识别整体流程G-Sense系统的手势词汇设计手势设计是属于交互设计问题。交互手势的设计主要有四条基本原则,分别是唯一性、自然性、易用性和简单性。手势根据具体应用场景而设计的,不同应用场景对于势要求差别很大。譬如有些需要的是二维平面的手势动作,有些需要的是三维空间中的于势动作(如三维虚拟现实、三维动作游戏等>。静态手势和动态于势也有各自适用的应用场景。G--Sense手势识别应用本文研究的基于多摄像头的手势识别系统(G-Sense>是一个使用两个摄像头作为传感器,从两个视角实时捕捉用户的手势动作视频,作为手势识别系统的输入。在对捕获到的于势进行实时的检测和跟踪、手势特征提取之后,经过手势识别部分的识别得到手势信息,最后把这些手势信息映射为具体应用中的命令,充当着一种输入设备的角色。本文的基于两个应用情景来研究手势识别系统,分别是照片浏览与拳击小游戏。在照片浏览应用中,通过三维手势作为输入,实现常见的浏览操作功能,例如“放大照片"、“缩小照片"、“上一张照片”、“下一张照片”、“第一张照片”、“最后一张照片”、“照片顺时针旋转90度”、“照片逆时针旋转90度”等。在照片浏览应用中,加入了两个有趣的动作:由后往前伸于的动作,把照片“推”远,缩小照片;由前往后缩予的动作,把照片“拉"回来,放大照片。在拳击游戏应用中,有3种标准的三维拳击动作,包括“左勾拳”、“右勾拳”、“平直拳”。G-Sense应用背景下的手势设计本文研究的手势识别系统有两个功能模式,一个定位模式,另一个是命令控制模式。本文包含4种静态于势,11种动态手势。静态手势的定义图7-2是本文定义的4种静态手势。其他静态手势被看作无含义的手势。(a)竖起食指,表示定位模式(b)握拳,表示命令模式(c)伸出拇指与雷指,表示鼠标左键(d)五,指张开.表示鼠标右键(a)竖起食指,表示定位模式(b)握拳,表示命令模式(c)伸出拇指与雷指,表示鼠标左键(d)五,指张开.表示鼠标右键图7-24种手的静态模式7.3动态手势的定义表7-1动态手势的定义手势序号动作描述动作意义1从左往右,从右返回左.后一张照片2从右往左,从左返回右.前一张照片3顺时针向上面正立三角形最后一张照片4逆时针向上画正立三角形最前一张照片5顺时针向下画圆形照片顺时针旋转90度6逆时针向下画圆形照片逆时针旋转90度7向正前方伸手,挥向右联方,返回缩小照片8向右刖方伸手,挥至正前方,返回放大照片9向正前方伸手平直拳10从左F后方往右上前方挥手左勾拳11从右下后方往左上前方挥手右勾拳85©加6手势识别系统设计与实现基于特定的应用背景,本文为了验证提出的手势识别方法的有效性,实现了一个手势识别系统G-Sense。G-Sense是一个具有手势识别功能的实时人机交互界面软件,可以看作是一种支持手势动作的输入设备。它提供光标定位与手势动作识别两种功能。G-Sense系统框架与功能G-Sense于势识别系统从两个摄头中捕捉用户的手势动作视频,经过手势检测与跟踪、于势特征提取、基于HMM的手势识别等处理流程,把用户的手势动作映射到具体的操作指令。它的系统框架图如图所示。图8-1G-Sense手势识别系统图8-2G-Sense手势识别系统组成系统的输入是两个摄像头的手势视频,输出是识别出的手势位置和手势命令,如图所示。其中的手势位置是用于转化为系统光标位置,手势动作映射为应用软件的键盘快捷键。通过把手势输入转化为系统的标准设备的输入,这种映射处理的优点是可以直接兼容现有的第三方应用软件。G-Sense系统使用两个普通的摄像头,型号为Unify(环宇飞扬>3900+。摄像头的视频质量越好噪声越少,处理就会变得越精确。专业摄像头的成像质量远超过本文使用的这种普通的摄像头。本文的研究从的实用性角度考虑.采用普通的摄像头进行实验。因为硬件设备的限制,处理难度会增加。图8-3是在G-Sense手势识别系统的硬件装置图。系统使用了两个摄像头,其中一个安装在前方屏幕上方,从前方观察手势动作.另一个安装在底部,从下方观察手势动作。底部摄像头可以根据具体环境条件,选择安装在顶部。用户站立在屏幕前方,正对前置摄像头与底置摄像头,与前置摄像头距离大约1.5M。底部摄像头位置调整为用户的手伸出时的位置的下方即可。图8-3基于取摄像头的G-Sense手势识别系统碗件装置G-Sense系统的详细设计编程实现环境因为实时的动态手势识别对处理效率要求高.所以本文的G-Sense系统选用C++进行编程实现,界面部分使用MFC。摄像头视频的实时采集采用了口证亦卜的。DirectShow是微软DirectX开发工具中的一部分,合适于视频编程处理。图像处理部分使用了视觉计算中开源的OpenCV库(openCV0>,主要是使用了它的图像数据结构和一些常用见的图像函数,例如读写图像、高斯平滑、图像阈值二值化、查找轮廓等。系统结构因为予势识别处理具有典型的“管道一过滤器”型(Pipes andFilters,体系结构风格,因此在实现把手势检测跟踪、手势特征提取、静态予势识别、动态手势识别等处理过程封装成类,把前一阶段的处理输出当作后面的处理阶段的输入。最后在得到于势识别的结果之后,把手势信息映射为相应鼠标和键盘事件。实时视频处理为了进行实时的视频捕获,在编程实现中不能使用MFC中的OnTimer事件进行处理,因为它的计时精度是有几十毫秒。系统中使用MFC中的媒体计时器,以获得1毫秒的计时精度,以支持根据用户自定义的视频帧速率进行捕获。在初始化计时器时,为其指定回调函数。在回调函数中,不直进行视频处理,而向主窗口发送一条自定义消息,在消息响应函数实现对视频的捕获和手势识别处理。因为如果在回调函数中直接处理,如果在系统繁忙的时候,会有大量的函数调用无法及时完成而导致栈溢出。手部图像采样功能本文通过于部图像采样手部采样对肤色模型参数、手部和脸部面积参数初始化,以提高系统的适应性。系统默认是使用常用的肤色参数默认值。在默认的肤色参数不适用的时候,用户可以启用肤色采样校正功能,以使手势检测和跟踪正常工作。采样过程的设计如下:系统会在相应的摄像头画面中显示一个矩形框,用户只需要把手移动到该矩形框,使它完全位于手掌的范围内。采样使用了延时开始的策略。用户可以设定延迟采样开始的时间(默认3秒之后>。当用户按下了采样按钮之后,一个红色的矩形框闪烁出现在摄像头视频预览框中,表示处于准备采样阶段,到了采样开始时间之后,矩形框变为绿色,表示正在采集图像样本,最后矩形框消失,表示采样过程完成,。在得到采样图像之后,对图像进行统计,自动设置肤色模型的参数。附录:1.程序重要部分代码我们先来明确一些概念,首先, 的事件处理机制是基于 监听器)来实现的,比我们今天所说的触摸屏相关的事件,就是通过 L其次,所有的子类都可以通过 、 等方法来添加对某一类事件的监听器。第三, 一般会以 接口)的方式来提供,其中包含一个或多个 抽象)方法,我们需要实现这些方法来完成 、等等的操作。这样,当我们给某个 设置了事件,并实现Y其中的抽象方法以后,程序便可以在特定的事件被 到该 的时候,通过 函数给予适当的响应。看一个简单的例子,就用最简单的 来说明事实上和 中生成的 没有什么区别)。我们给 的实例设定Y一个 ,因为 类实现Y接口,所以简单的给一个 作为参数即可。 方法则是实现Y中的抽象方法,我们只要在这里添加逻辑代码即可在用户触摸屏幕时做出响应,就像我们这里所做的——打出一个提示信息。这里,我们可以通过 的 方法来获取 事件的类型,包括和 ° 是指按下触摸屏, 是指按下触摸屏后移动受力点, 则是指松开触摸屏,不会由用户直接触发所以不在今天的讨论范围,请参考)。借助对于用户不同操作的判断,结合、 、和 等方法来获取坐标后,我们可以实现诸如拖动某一个按钮,拖动滚动条等功能。待机可以看看 类的文档,另外也可以看考操作的时候,如何识别

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论