《2022年计算机视觉的手势跟踪与识别技术的分析研究》由会员分享,可在线阅读,更多相关《2022年计算机视觉的手势跟踪与识别技术的分析研究(29页珍藏版)》请在金锄头文库上搜索。
1、基于计算机视觉的手势跟踪与识别技术的研究1 绪论 2 1 1手势识别研究的意义2 1 2手势识别国内外研究现状2 1.3基于视觉的手势跟踪与识别流程图3 2 基于计算机视觉的手势识别基础理论3 2 1模式识别概述3 22基于计算机视觉的手势跟踪理论4 2 3基于计算机视觉的手势识别理论5 231神经网络算法 5 232基于模板匹配的算法6 233统计分析算法 7 234隐马尔可夫模型(HMM7 2 4基于计算机视觉的手势跟踪与识别系统8 3 手势图像预处理及特征提取8 3 1手势图像预处理8 311图像平滑 9 31 .2图像色彩空间转换10 31 .3图像二值化 11 3.1 .4图像形态学
2、处理12 3 2手势图像特征提取13 4 手势跟踪算法研究13 4 1 Kalman跟踪算法 13 4 2 Camshift 跟踪算法 15 421颜色概率模型 15 5 基于计算机视觉的手势跟踪与识别算法实验16 5 2手势图像预处理及特征提取实验结果17 521手势图像获取及手势样本库的建立17 52 .2手势图像的预处理19 5 2手势跟踪实验结果及分析20 5 3实时手势识别实验结果及分析21 531手势识别系统流程21 5.4 手势跟踪与识别在人机交互中的应用21 6 总结与展望 23 7 附录: 24 7.1 程序重要部分代码24 7.2 手势识别的视频27 7.3 国内外生产手势
3、识别软件的厂家28 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 1 页,共 29 页1 绪论11 手势识别研究的意义在人机交互的发展过程中先后出现了基于文本方式的键盘、基于图形方式的鼠标等交互接,然而从某种程度上说,这些机械设备在人机交互方面是不方便和不和谐的。它把机器作为人机交互的中心,在人机交互时人需要去适应机器的输入输出设备,对机器没有主动控制的能力。随着计算机科学的快速发展,研究符合人类交流习惯的人机交互技术成为国内外关注的热点,这些研究包括人脸识别、面部表情识别、头部运动跟踪、眼睛识别、手势识别以及人体姿势识别等。总体来说,人机交互的
4、研究已经从以计算机为中心转移到以人为中心,大大提高了人机交互的效率。手势作为人类最自然的表达方式之一,在日常生活中得到了广泛的应用。手势生动、形象、直观,而且蕴涵着丰富的信息,是人与人沟通的重要媒介。目前基于手势的交互已经成为人机交互的重要内容。手势识别的应用前景十分广阔:(1对于聋哑人而言,特别是文化程度比较低的聋哑人,使用手语和正常人交流更加方便和高效。手语是用手势表示意思的语言,对不熟悉手语的普通人来说,理解手语是非常困难的。如果有一套可以翻译手语的系统,则将大大方便聋哑人与正常人之间的交流;(2利用手势对虚拟现实中的智能设备进行控制。比如在虚拟场景内利用手势实现虚拟钢琴的演奏,又如用机
5、器人的虚拟手抓取物体等; (3研究人类对于视觉语言的理解规律,提高计算机对人类语言的理解能力;(4手势交互是虚拟现实中多通道接口的重要组成部分之一。12 手势识别国内外研究现状根据外围设备采集手势图像方式的不同可以把手势识别分为两种:基于数据手套的手势识别和基于视觉的手势识别。基于数据手套的手势识别是通过数据手套和位置跟踪来测量手势运动的轨迹和时序信息,其优点是系统的识别率高,缺点是输入设备昂贵,并且要求打手势的人穿戴复杂的数据手套,给人带来很多不便,因此这种方式不能成为未来发展的趋势。基于视觉的手势识别是计算机通过对摄像头拍摄的手势图像进行分析和处理提取出手的位置及形状。这种方法在实现时无需
6、购买昂贵的设备,仅需要廉价的摄像头和低端处理能力的PC机即可。并且在操作时更加自然、方便,符合以人为本和自由性的要求,是手势识别未来发展的趋势。但是这种方法的识别效率比基于数据手套的手势识别低,而且能够识别的手势种类受到很大的限制,是目前亟待解决的问题。国外很早就开始了对手势识别的研究工作。Huang创建的手语识别系统使用3D神经网络的方法识别了15个不同的手势。Stamert51等人使用隐马尔可夫模型(HMM 对输入视频序列中的美国手势中带有词性的40个词汇随机组成的句子进行了识别,其中HMM 参数的估计采用的是 EM算法。系统对分离单词的识别和由5个单词组成的句子(句子的结构限定为代词+动
7、词 +名词 +形容词 +代词 的识别分别进行了测试,识别正确率达90。 Zhu6 使用主成分分析方法创建统计结构,从而识别活跃对象的形状,即模型化系统和弹性对象的识别。Vogler和MetaxastTl 开发的手语理解系统通过固定在人身上的物理传感器和一个能够对手臂进行精确定位的摄像机来获取手臂位置信息。系统采用独立的语言模型对包括53个单词的精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 2 页,共 29 页手语集进行了测试,识别率也达到90。我国对手势识别的研究起步较晚,但近年来也取得了显著的成果。例如文献f81中使用神经网络方法和Hough变
8、换对中国手语中的20种手势进行识别。在文献91q丁采用基于表观的手势模型,提取八个手势特征组成特征向量,采用二次分类 (粗分类和细分类的方法对 10个常用的静态手势进行识别。张秋余、姚开博等采用矩形特征描述手势,用改进的AdaBoost算法训练分类器,在复杂背景下对手势的跟踪与识别取得了不错的效果。中科院的单彩峰提出了结合均值漂移的粒子滤波(The Mean Shift Embedded Particle Filter ,MSEPF,通过在时序模板中引入时空轨迹,提出了时序模板轨迹概念,将跟踪得到的手势运动轨迹压缩到单幅图像中,实现了对预先定义的动态手势的识别。山东大学的徐立群等提出了一种基于
9、颜色概率模型并融合运动信息进行手势跟踪的新方法。利用肤色概率查找表将图像序列转换为肤色概率分布图,用运动信息和肤色概率分布对搜索窗口进行初始化,然后对肤色概率分布图进行迭代运算,得到手势的位置和大小,从而实现了对六种孤立手势的识别。1.3 基于视觉的手势跟踪与识别流程图本课题的主要内容是研究基于计算机视觉的手势跟踪与识别。首先对手势跟踪与识别各个阶段的算法进行了分析,提出基于Hu矩特征和 “ 一对多 径向基核函数支持向量机相结合的手势识别算法,并在Microsoft Visual C+60开发环境下,借助OpenCV开源库,实现了对从摄像头输入的10个常用手势的识别,以验证提出算法的可行性,并
10、以此为基础建立了一个简单的手势交互系统。基于视觉的手势跟踪与识别流程图见图1-1。图1-1 基于视觉的手势跟踪与识别流程图2 基于计算机视觉的手势识别基础理论在人与人的交际过程中,经常会用到手势,手势的语义强大并且直观,可以很好地表达思想,与自然语言形成互补。所以近些年来,手势识别的研究得到了很大的关注和发展。本章主要介绍基于视觉的手势识别的一些基础理论。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 3 页,共 29 页21 模式识别概述模式识别诞生于20世纪 20年代,随着 40年代计算机的出现,50年代人工智能的兴起,模式识别在 60年代初迅
11、速发展成-f学科 1131。它所研究的理论和方法在很多科学和技术领域中得到了广泛的重视,推动了人工智能的发展,扩大了计算机应用的可能性。几十年来,模式识别研究取得了大量的成果,在很多方面都得到了广泛的应用。但是,由于模式识别涉及到很多复杂的问题,现有的理论和方法对于解决这些问题还有很多不足之处。通常,我们把通过对具体的个别事物进行观测所得到的具有时间和空间分布的信息称为模式,把各模式所属的类别称为模式类。模式识别是对表征事物或者现象的各种形式的信息进行分析和处理,来实现对事物或现象进行描述、辨认、分类和解释,是信息科学和人工智能的重要组成部分。人们为了掌握客观事物,就将事物按照相似度组成类别。
12、模式识别的作用和目的就在于面对某一具体事物时将其J下确的归入某一类别。有两种基本的模式识别方法,即统计模式识别方法和结构模式识别方法。与此相应的模式识别系统都由两个过程组成,即设计与实现。设计是指用一定数量的样本(叫做训练集或学习集 进行分类器的设计。实现是指用所设计的分类器对待识别的样本进行分类决策。基于统计方法的模式识别主要由4个部分组成:数据获取、预处理、特征提取和选择、分类决策,如图 2-1所示。图2-1 模式识别系统的基本构成1数据获取为了使计算机能够对各种现象进行分类识别,要用计算机可以运算的符号来表示所研究的对象。通常输入对象的信息有一维波形、物理参量和逻辑值、二维图像3种类型,
13、通过测量、采样和量化,可以用矩阵或向量表示二维图像或一维波形。这就是数据获取的过程。2预处理预处理的目的是去除噪声,加强有用的信息,并对输入测量仪器或其他因素所造成的退化现象进行复原。3特征提取由图像或波形所获得的数据量是相当大的。例如,一个文字图像可以有几千个数据,一个心电图波形也可能有几千个数据。为了有效地实现分类识别,就要对原始数据进行变换,得到最能反映分类本质的特征。这就是特征提取和选择的过程。一般我们把原始数据组成的空间叫测量空间,把分类识别赖以进行的空间叫做特征空间,通过变换,可把在维数较高的测量空间中表示的模式变为在维数较低的特征空间中表示的模式。4分类决策分类决策就是在特征空间
14、中用统计方法把被识别对象归为某一类别。基本做法是在样本训练集基础上确定某个判决规则,使按这种判决规则对被识别对象进行分类所造成的错精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 4 页,共 29 页误识别率最小或引起的损失最小。22基于计算机视觉的手势跟踪理论手势分割与跟踪是手势识别的基础,其好坏将影响识别率的大小。手势分割的方法大体分为三种:基于运动信息的、基于运动模板的和基于颜色信息的。基于运动信息的手势分割是通过对前后两帧图像做差分运算来检测手势的,当手势运动时则图像发生变化。运动估计的依据是图像强度发生变化,用图像序列中相邻图像的差来表示强
15、度的变化。图像差运算非常简单,这是由于在图像差运算中仅仅涉及到了像素强度的相减。在实际的手势识别系统中,摄像机的位置是固定的,对手势序列中相邻两帧图像做差分运算便能有效地保留运动的部分(即手势 ,滤除图像中保持不变的背景区域。基于运动模板的手势分割是用模板匹配方法寻找运动的手势,一般把二维可变形模板作为插值节点去近似物体轮廓。模板由平均点集合、点可变性参数和外部变形构成,平均点集合描述的是某一组形状的平均形状,点可变性参数描述的是可变形模板的全局运动。通常用基于可变形模板的人手模型来跟踪人手。二维模板实现简单,但对手的姿念有一定限制。三维模板则不受手的姿态的限制,但其参数过多使得实现困难。基于
16、颜色信息的分割在图像分割中占有重要地位。颜色分割与其他两种方法相比,具有高效性和鲁棒性等特点,得到了广泛的应用。但是在复杂背景的情况下或者光照变化快时,基于颜色的分割效果不好,为了解决这个问题,目前众多研究者尝试利用融合多种信息的技术进行手势分割。国内外对手势跟踪的研究很多,例如利用粒子滤波(Particle Filter 对手势跟踪获得了较好的效果。Camshift 巧J(ContinuouslyAdaptive Mean Shift 是一种基于颜色概率模型的跟踪算法,它是Mean Shift算法的改进与扩展,可以处理动态变化的分布。当视频序列一帧一帧变化时,Camshift能够自动调节搜索
17、窗的大小和位置,定位被跟踪目标的中心和大小,并且用当前帧定位的结果来预测下一帧图像中目标的中心和大小,每帧图像都这样处理,就形成了连续的跟踪。23 基于计算机视觉的手势识别理论基于视觉的手势识别可以分为基于单目视觉的手势识别和基于多目视觉的手势识别。基于单目视觉的手势识别就是通过单个摄像机来采集手势图像,从而建立平面手势模型。这种方法处理的数据量较小,识别速度快,但是对于用户手势的输入限制较大。基于多目视觉的手势识别是通过两个或两个以上的摄像机来采集图像,建立的是立体模型。这种方法对于用户手势的输入限制较小,可以实现更加自然的人机交互,但由于立体模型的复杂性,需要处理大量的数据,识别时间长,无
18、法实现实时的识别。基于视觉的手势识别算法可分为神经网络算法、模板匹配,统计分析算法、和隐马尔可夫模型 (Hidden Markov Model HMM等。231神经网络算法对人工神经网络的研究早在20世纪 40年代就已经开始了。有人以包含0-1和1-0变化的随机模型作为模型化神经系统的基础。到了50年代中期和 60年代初期,人们已设计出称为感知机 (perceptrons的学习机器,引起了模式识别理论界人士的重视。80年代中期精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 5 页,共 29 页提出的对多层感知机的新训练算法(称为以反扩散学习的广义德
19、尔塔(Delta规则 是非常有效的。广义德尔塔规则在许多实际问题中得到了成功的应用,使得多层感知机类机器成为目自玎使用神经网络的主要模型之一。神经网络是指利用工程技术手段模拟人脑神经网络的结构和功能的一种技术,其目的是使机器具有人脑那样的感知、学习和推理功能。神经网络方法在手势识别领域得到了广泛的使用。它对信息处理具有自组织、自学习等特点,有较强的抗干扰能力。它是由许多具有非线性映射能力的神经元组成的一种大规模并行处理网络,神经元之间通过权相连。文献 16qb MYeasin采用了 TDNN(TimeDelay Neutral Network 时延神经网络 的手势识别技术。BP神经网络模型实现
20、了多层网络学习的设想。它是一种单向传播的多层前向神经网络,除输入输出节点外还有一层或多层隐层节点,同层节点之I、日 J没有耦合,输入信号从输入层节点依次传过各层节点,最后到达输出层节点。每一层节点的输出只影响下一层节点的输出。 BP神经网络结构分三层:输入层、隐含层和输出层。图2-2是一个三层前馈神经网络模型,输入层、中间隐含层和输出层的神经元个数分别为5、50和9。图2-2 三层前馈神经网络模型BP网络学习是典型的有导师学习。训练集包含M个样本,对第P个训练样本 (P=1,2,M,单元的实际输出为郇,它的第i个输入 (也即第 i个神经元的输入为,则: (2-1 BP算法中大多选用S型函数作为
21、输出函数,即: (2-2 232基于模板匹配的算法模板匹配算法就是将输入的原始数据与预先存储的模板进行匹配,通过测量两个模板之间的相似度进行识别。模板匹配的方法多用于静态手势识别中,如Cui Yuntao通过计算模板的相关系数来进行预测匹配。文献f181中张良国、吴江琴、高文等人精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 6 页,共 29 页首先改进了 Hausdorff 距离,接下来通过比较预处理后的输入图像的Hausdorff距离和标准模板库中各种图像的Hausdorff距离进行判断。Hausdorff距离是描述两组点集之间相似程度的一种量
22、度,它是两个点集之间距离的一种定义形式【 191:假设有两组集合A=,B=,则这两个点集之上的Hausdorff 距离定义为: (2-3 (2-4 (2-5 是点集 A和点集 B间的距离范式这里,式 (2-3称为双向 Hausdorff 距离,是 Hausdorff距离的最基本形式;式(2-4(2-5中的 h(A,B和h(B,A 分别称为从 A集合到 B集合和从 B集合到 A集合的单向 Hausdorff距离。即 h(A, B实际上首先对点集A中的每个点到距离此点最近的B集中点 b,之间的距离进行排序,然后取该距离中的最大值作为h(A ,B 的值, h(B,A 同理可得。由式 (2-3知,双向
23、 Hausdorff距离 H(A, B是单向距离 h(A,B和h(B,A两者中的较大者,它度量了两个点集之间的最大不匹配程度。233统计分析算法统计分类算法是在模式识别发展的过程中建立的经典方法,它用概率统计模型得到各类别的特征向量分布,以达到分类的目的。统计分类算法是一种监督学习的模式识别方法。如何将分类器设计得更有效,识别率更高,是需要重点解决的问题。当几个类别的样本在特征空间的分布符合一定的拓扑结构,并且我们知道各个类别的概率分布函数时,我们就可以利用统计分类方法进行模式识别。常用的统计分类方法有很多,例如 byproduct”方法、决策树和决策表方法等。模式的统计分类方法,又称为决策理
24、论识别方法,它是将各模式类别看成是用某个随机向量实现的集合。属于同一类别的各个模式之间的差异,有些是由环境噪声和传感器的因素引起的,有些是模式本身所具有的随机性质引起的。在通常情况下,不同类别的两个模式之间的距离要大于同一类别的两个模式之间的距离,这样就可以将特征空间准确的划分为几个区域,其中各个区域同各个类别是一一对应的。若不满足上述条件,则对每个特征向量估计其属于某一类的概率,概率值最大的类就是该点所属的类别。统计分类方法常用的分类器主要有贝叶斯分类器、线性判别函数、树分类器、最小距离分类、近邻法分类、聚类分析等。234隐马尔可夫模型 (HMM在给定前一个状态的情况下,随机变量序列的下一个
25、状态的出现是条件独立的。每一精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 7 页,共 29 页个时刻的随机变量有一个度量值,这个度量值的分布与该时刻的状态有关。这样的模型称为隐马尔可夫模型(HMM 。隐马尔可夫模型是在Markov链的基础之上发展起来的。实际问题比马尔可夫链所描述的更为复杂,观察到的事件并不是与状态一一对应的,而是通过一组概率分布相联系的。它是一个双重随机过程:一是描述状态转移的马尔可夫链是基本随机过程;另一个是描述状态和观察值之间的统计对应关系是随机过程。基于以上原因观察者只能看到观察值不能直接看到状态,即让观察者通过一个随机过
26、程去感知状态的情况,所以称之为 “ 隐” Markov 模型。如图 2-3为隐马尔可夫模型组成的示意图。HMM 作为信号的一种统计模型,已经在语音信号处理领域得到了广泛应用,近年来很多研究者也将HMM 用于手语识别领域。但是应用于手势识别时有很多约束。首先,动态手势信号不满足马尔可夫性质,也就是说随机向量当前的状态只与前一状态有关;其次,仅用隐马尔可夫模型对手势建模远远不够,会导致隐马尔可夫模型将许多信号作为噪声处理。图2-3:隐马尔可夫模型组成24 基于计算机视觉的手势跟踪与识别系统计算机视觉研究就是计算机通过对一幅或多幅图像进行分析,从中获取三维世界的运动信息或者集合特征,例如物体的位置、
27、形状、姿态运动等信息,接下来对这些信息进行分析、处理,以达到认识三维世界的目的。计算机视觉作为一门新兴的学科,正在受到越来越多的关注。视觉运动分析方法因具有适用范围广、抗电子干扰能力强、测量精度高和保密性好等优点,在军事、导航、机器人技术、气象分析、医疗诊断、交通管制、安全防范等领域得到了广泛的应用。手势作为人类最自然的表达方式之一,在日常生活中得到了广泛的应用。同时,手势具有适应性强、形象生动及简便易行等特点,比较适合在非特定环境下对机器人的控制。通常一个完整的手势跟踪与识别系统,分为以下几个部分:(1手势的检测与跟踪:手势的检测与跟踪是手势识别的基础,其好坏将影响识别率的大小。手势分割的方
28、法大体分为三种:基于运动信息的、基于运动模板的和基于颜色信息的。国内外对手势跟踪也做了大量研究,常用的有卡尔曼滤波(Kalmall Filter 、粒子滤波 (Particle Filter 等跟踪方法。(2静态手势识别:静态手势识别是指对于静态图片中手的形状和手的姿势进行识别。国内外对静态手势识别做了大量研究。例如文献f81中提出了一种使用神经网络方法和Hough变换对中国手语中的20种手势进行识别。在文献91中采用基于表观的手势模型,提取八个手势特征组成特征向量,采用二次分类(粗分类和细分类的方法对 10个常用的静态手势进行识别。 (3动态手势识别:动态手势识别是对连续的手势序列进行实时的
29、跟踪,通过对跟踪到的手势运动的时空轨迹(spatialtemporal trajectory 或手势状态轨迹(state trajectory 进行处理,以识别摆手等动态手势。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 8 页,共 29 页3 手势图像预处理及特征提取手势图像的预处理和特征提取是下一步要进行的手势跟踪与识别的前提,其质量的好坏既关系到手势的识别率,又关系到所建立的人机交互系统的整体性能。本章针对图像采集时所遇到的光照变化、旋转、平移等不确定因素,对手势图像的预处理和特征提取进行了分析。31 手势图像预处理在手势图像的预处理阶段,
30、为了得到理想的分割效果,本文对采集到的手势图像采用了图像平滑、色彩空间转换、图像二值化以及形态学处理等算法以得到准确的手势二值化图像。311图像平滑图像平滑的目的是为了消除噪声。图像噪声的来源有三种:一是在光电、电磁转换过程中引入的人为噪声;二是大气层电(磁暴、闪电、电压、浪涌等引起的强脉冲性冲激噪声;三是自然起伏性噪声,由物理量的不连续性或粒子性引起,这类噪声又可分为热噪声、散粒噪声等。消除噪声的方法又可以分为空间域方法或频率域方法,亦可以分为全局处理方法或局部处理方法等。1邻域平均法邻域平均法 I刎是简单的空域处理方法。这种方法的基本思想是用几个像素灰度的平均值来代替每个像素的灰度。假定有
31、一幅NXN 个像素的图像,平滑处理后得到一幅图像。由下式决定: 说明,平滑后的图像中每个像素的灰度值,均由似一邻域中包含的像素灰度值的平均值来决定。2中值滤波法中值滤波【 211是一种非线性滤波,由于它在实际运算过程中并不需要图像的统计特性,所以比较方便。中值滤波首先是被应用到一维信号处理技术中,后来被二维图像信号处理技术所引用。在一定的条件下,它可以克服线性滤波器所带来的图像细节模糊,而且对滤除脉冲干扰及图像扫描噪声最为有效。但是对一些细节,特别是点、线、尖顶细节多的图像不宜采用中值滤波的方法。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 9
32、页,共 29 页3频域平滑技术图像的平滑既能够在空域中进行,又能够在频域中进行。频域平滑技术是一维信号低通滤波器在二维图像中的推广。对于一幅图像,它的边缘、跳跃部分以及噪声都代表图像的高频分量,而大面积的背景区和变化缓慢的部分则代表图像的低频分量,用频域低通滤波器除去其高频分量就能去掉噪声,从而使图像得到平滑。滤波器的数学表达式为: 理想低通滤波器一个理想低通滤波器的传递函数为: 3-3)其中 D。为截止频率,是点 在 D。处由 1突变到 0,这种理想的 H(u, v ,D对应的冲激响应h(u, v在空域中表现为同心环的形式,并且此同心环数与D。成反比, D。小,同心环数越多,模糊程度越厉害。
33、正是由于理想低通滤波存在“ 振铃 现象,其平滑效果才下降。(2巴特沃斯滤波器一个巴特沃斯滤波器的传递函数为:(3-4 其中 D。为截止频率,当D(u,v=D 。时, H(u,v降为最大值的 1/2。, n为阶数,取正整数,阶数刀控制曲线的形状。由于转移特性曲线较为平滑,没有振铃效应,故图像的模糊将减少。(3指数型滤波器一个指数形滤波器的传递函数为: (3-5 其中 Do为截止频率,n为阶数,当 D(u, v=D 。时, H(u,v降为最大值的le。用指数形滤波器滤波后的图像比用巴特沃斯滤波器滤波后的图像模糊一些,但没有振铃效应。图3-1(a(b(c(d 分别是原图像、加椒盐噪声的图像、中值滤波
34、效果图以及3 3邻域滤波效果图。可见,用中值滤波的方法进行图像的平滑处理效果比较理想,因此本文在手势预处理中采用中值滤波法对图像进行平滑。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 10 页,共 29 页图3-1 图像平滑效果31 .2图像色彩空间转换计算机色彩理论认为,一种颜色在计算机中有多种不同的表达方式,从而形成了各种不同的色彩空间。事实上,各种色彩空间只不过是颜色在计算机内不同的表达形式而已,每一种色彩空自J都有它各自的应用领域、产生背景等。下面我们分析几种常用的色彩空间:1HSI模式HSI模式的定义是以人眼对色彩的观察为依据的,在HS
35、I模式中,每种颜色都用色度、饱和度、亮度三个特征来表示。色度H与波长有关,例如,不同波长的可见光具有不同的颜色。波长不同的光以不同比例混合能够形成各种各样的颜色。饱和度S指颜色的强度,表示在色调中灰色成分所占的比例,用0一 100(纯色 表示。亮度 I表示颜色的相对明暗程度,通常用 0(黑一100(白 来度量。将RGB转换为 HSI所用的变换为: (3-6 其中: (3-7 31 .3图像二值化图像的二值化就是指把多灰度级的图像变成只有两个灰度级的图像。把其中感兴趣的目标像素作为前景像素,其余部分作为背景像素。设图像的灰度值范围在a,b,二值化的闽值设为t(,则图像一值化的一般表达式为: (3
36、-8 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 11 页,共 29 页得到的就是二值图像,阈值t不同,得到的二值图像也是不同的。因此要达到理想的分割效果,选择合适的闽值t是至关重要的。图像二值化方法大致分为三种:整体闽值二值化、局部闽值二值化以及动态闽值二值化。仅由像素点的灰度值确定阈值的方法称为整体阈值选择法。由像素点的灰度值和像素周围点局部灰度特性确定阈值的方法称为局部闽值选择法。当闽值选择不仅取决于该像素阈值以及其周围各像素的灰度值,而且还与该像素坐标位置有关时,称之为动态闽值选择法。1模式法模式法是指当扶度直方图具有双峰性的时候,目标
37、物体和背景的扶度分别在两个山峰的附近,则将山谷的中心点作为模式法的闽值。但是,实际得到的灰度直方图不平杆,存在由于小的凹凸而产生的局部极小值,这样给自动判断造成诸多不便。针对这种情况,可以先对放度直方图进行平滑处理,再确定闽值。这样做会产生一些噪声,但对判断结果的影响不大。2动态阈值法当光照不均匀时,用确定闽值二值化方法分割效果不理想。在这种情况下,我们可以用动志闽值法解决。把图像分成若干个予区域,对每一个子区域计算其灰度直方图。如果在子区域中同时存在背景和目标物体,那么其获度直方图呈双峰,这时可再用模式法等进行二值化处理。这种情况下,每个子区域一般都不相同,这种二值化方法称为可变阐值法。3最
38、大类间方差法最大类间方差法是通过使两组像素的组内方差最小来确定阈值的方法。首先定义直方图函数为概率函数P,其中表示灰度值 0,I的直方图概率,其中 RxC是图像的空间区域。如果灰度直方图是双模式的,则通过灰度直方图求闽值就是确定最佳阐值t,利用阙值 t把两种模式分开。根据阈值 t,可以确定灰度值小于或者等于t的像素集的方差以及灰度值大于t的像素值的方差。晟大类间方差法的最佳阈值是使组内方差的加权和最小的阈值,其中权分别代表各组概率。组内均衡性的测度是方差,则均衡性高的具有较低的方差,均衡性低的具有较高的方差。本文用晟大类间方差法(Otsu对手势图像做二值化处理。图3-3所示, (a(b(c 分
39、别是 Y通道图像、 cb通道图像以及。通道图像的二值化效果图。Y通道二值化图像也就是直接荻度化的效果,与西通道以及cr通道的二值化图像相比,分割效果不佳,因此,本文采用虽大类问方差法对手势。通道图像进行二值化处理。图3-3Y通道、 cb通道和 cr通道二值化图像精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 12 页,共 29 页3.1 .4图像形态学处理由于噪声的影响,使手势图像的分割效果不太理想。我们再采用形态学处理方法获得比较理想的手势分割效果。形态学处理的基本运算有膨胀、腐蚀、开运算和闭运算。(1膨胀:用结构元S对二值图像进行膨胀运算表示为
40、BS,定义如下: BS (3-9 用结构元 S扫描整幅图像。初始化输出图像的像素值为0,一旦结构元S的原点遇 N-值图像 B中值为 1的像素时,结构元整体形状就与输出图像进行逻辑“ 或” 运算。(2腐蚀:用结构元S对二值图像曰进行腐蚀运算表示为BS,定义如下:BS= (3-10 腐蚀运算也是用结构元扫描整幅图像。针对二值图像上的每一个像素点,如果结构元上每一个值为 1的像素都覆盖着二值图像上一个值为1的像素,则将二值图像B上与结构元原点对应的像素与输出图像对应点进行逻辑“ 或运算。(3闭运算:用结构元S对二值图像曰进行的闭运算表示为B S,定义:B s=(BSS (3-11 先膨胀后腐蚀的过程
41、就称为闭运算。闭运算能够填充物体内细小空洞,连接邻近物体以及平滑边界。(4开运算:用结构元S对二值图像 B进行的开运算表示为B。S,定义: B。S=(BSS (3-12 先腐蚀后膨胀的过程称为开运算。开运算具有消除细小物体,在纤细处分离物体和平滑较大物体边界的作用。本文利用 Otsu分割方法得到的图像还存在噪声,如图3-4(a所示,二值化后的手势图手指区域分割并不完全,这会导致后续特征值的计算产生一定的偏差从而影响最终的手势识别结果,所以我们把分割得到的图像先进行膨胀运算,如图3-4(b 所示,去掉分割不理想导致的小的“ 孔洞 ” ;再进行腐蚀运算得到图像3-4(c 。图3-4 手势图像形态学
42、处理效果图32 手势图像特征提取图像识别是根据图像特征进行的,显然这些特征的选择非常重要,它严重影响到图像识别分类器的设计、特性及识别结果的准确性。如果特征选择错误,就不能准确分类,甚至无法分类。所以特征选择是图像识别的一个关键问题。因为实际问题中很难找到那些最关键的特征,或者某些图像的特征会随着环境的变化而变化,这就使得特征的选择和提取更加复杂化。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 13 页,共 29 页如何从众多特征中找出那些最有效最关键的特征是特征选择和提取的基本任务。当样本数量不是很多时,需要用很多特征进行分类器的设计,而从计算
43、复杂度和分类器的性能来看都是不合适的。根据待识别图像的特征,通过计算产生原始特征,称为特征形成。原始特征的量很大,或者说图像样本是处在一个高维空间中,通过映射降低维数,用低维空间来表示样本,即特征提取。而映射后得到的特征是原始特征的一种组合。特征提取在广义上是指一种变换。从一组特征中挑选出一些最有效的特征以达到降低特征空间维数的目的,叫特征的选择。良好的特征应具有可靠性、可区别性、数量少以及独立性等特点。在描述图像时,可以针对图像的特点采取多种不同的描述方法。每一种描述方法都有其优点、缺点,且不存在通用的方法或者最优方法。4 手势跟踪算法研究视频序列中运动物体的跟踪是计算机视觉中的一个重要研究
44、课题。物体的跟踪可以理解为确定其在视频序列不同帧中相对位置的动态过程。视频是由一系列时间上连续的图像组成,它们具有逻辑上的相对次序关系。视频序列提供了比单帧图像更丰富的目标信息,我们通过对其进行分析能够更好地研究运动物体的跟踪过程。41 Kalman跟踪算法卡尔曼滤波是在分析已提取信号相关信息的基础上通过特定算法估计出所需信号。其中已提取的信号是由白噪声引起的随机响应,并且系统的状态转换方程和测量方程已知,其中状态转换方程描述的是激励源与响应之间的状态传递结构,而测量方程则表示量测量与被估计量之间的函数关系。在估计过程中,我们利用系统状态方程、量测方程、白噪声激励的统计特性、测量误差的统计特性
45、这些已知信息来最终来估计出所需的信号。由于卡尔曼滤波是综合时域内的信息来设计整个滤波系统,且适用于多维的情况,因而卡尔曼滤波的应用范围主要在机器人控制、导航、传感器数据融合等方面,近年来更被应用于图像处理特别在图像分割、图像边缘检测以及视频序列中的人脸识别等方面。下面介绍卡尔曼滤波的基本原理:以下是卡尔曼滤波器核心的5 个式子。X(k|k-1=A X(k-1|k-1+B U(k (4-1 P(k|k-1=A P(k-1|k-1 A+Q (4-2 X(k|k= X(k|k-1+Kg(k (Z(k-H X(k|k-1 (4-3 Kg(k= P(k|k-1 H / (H P(k|k-1 H + R
46、(4-4 P(k|k= H) P(k|k-1 (4-5 下面我们详细介绍卡尔曼滤波的过程。首先,我们要引入一个离散控制过程的系统。该系统可用一个线性随机微分方程来描述:X(k=A X(k-1+B U(k+W(k(4-6 再加上系统的测量值:Z(k=H X(k+V(k(4-7 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 14 页,共 29 页上两式子中,X(k是 k 时刻的系统状态,U(k是 k 时刻对系统的控制量。A和 B是系统参数,对于多模型系统,他们为矩阵。Z(k 是 k 时刻的测量值,H是测量系统的参数,对于多测量系统,H为矩阵。 W(k
47、和 V(k分别表示过程和测量的噪声。他们被假设成高斯白噪声 (White Gaussian Noise,他们的covariance分别是 Q,R,卡尔曼滤波器是最优的信息处理器。下面我们来用他们结合他们的covariances来估算系统的最优化输出。首先我们要利用系统的过程模型,来预测下一状态的系统。假设现在的系统状态是k,根据系统的模型,可以基于系统的上一状态而预测出现在状态:X(k|k-1=A X(k-1|k-1+B U(k (4-8 式(1中, X(k|k-1 是利用上一状态预测的结果,X(k-1|k-1是上一状态最优的结果,U(k为现在状态的控制量,如果没有控制量,它可以为0。到现在为
48、止,我们的系统结果已经更新了,可是,对应于X(k|k-1 的 covariance还没更新。我们用P表示 covariance:P(k|k-1=A P(k-1|k-1 A+Q (4-9 式(2中, P(k|k-1 是 X(k|k-1 对应的 covariance,P(k-1|k-1是 X(k-1|k-1对应的covariance ,A表示 A的转置矩阵, Q是系统过程的covariance。式子 1,2 就是卡尔曼滤波器 5 个公式当中的前两个,也就是对系统的预测。现在我们有了现在状态的预测结果,然后我们再收集现在状态的测量值。结合预测值和测量值,我们可以得到现在状态(k 的最优化估算值X(k
49、|k :X(k|k= X(k|k-1+Kg(k (Z(k-H X(k|k-1(4-10 其中 Kg为卡尔曼增益(Kalman Gain :Kg(k= P(k|k-1 H / (H P(k|k-1 H + R (4-11 到现在为止,我们已经得到了k 状态下最优的估算值X(k|k 。但是为了要另卡尔曼滤波器不断的运行下去直到系统过程结束,我们还要更新k 状态下 X(k|k 的 covariance :P(k|k= H) P(k|k-1 (4-12 其中 I 为 1 的矩阵,对于单模型单测量,I=1 。当系统进入k+1 状态时, P(k|k 就是式子(2 的 P(k-1|k-1。这样,算法就可以自
50、回归的运算下去。卡尔曼滤波器的原理基本描述了,式子1,2, 3,4 和 5 就是他的5 个基本公式。根据这5个公式,可以很容易的实现计算机的程序。42 Camshift跟踪算法Camshift(Continuously Adaptive Mean Shit是连续的自适应的Mean Shift算法,它是对 Mean Shift算法的改进与扩展,可以处理跟踪目标动态变化的情况。当视频序列一帧一帧变化时,Camshift利用其自动调节搜索窗的大小和位置的功能,定位被跟踪目标的位置,并且用当前已知定位的结果来预测下一帧中目标的位置,这样迭代的处理每帧图像,就形成了动态的跟踪。精选学习资料 - - -
51、- - - - - - 名师归纳总结 - - - - - - -第 15 页,共 29 页421颜色概率模型为了使用 Camshift算法实现物体的跟踪,我们选取目标物体的颜色来作为跟踪特征,需要通过颜色概率模型(Color Probability ModelCP 把每帧图像转化为颜色概率分布图。由于本文是手势跟踪,因此这里的颜色就是肤色。计算机图像处理中常用的色彩空间有 RGB , YIQ,YUv,HSV ,HSV等,由于肤色对HSV(色调、色饱和度、亮度色彩空间的H分量很敏感,所以用H分量的直方图建立肤色概率模型。HSV与 RGB转换的公式如下: 4-13) 4-14) 是单色背景下的手势
52、图像,图(b 是 H通道图像,在图(b中,人手部和背景之间的轮廓很不清晰,我们采用形态学方法对m 图像增强得到 (c 图像。对比 (b(c 图可见,形态学处理后的目标图像得到了很好的增强。然后,根据获得的色彩直方图将原始图像反向投影成色彩概率分布图像,如图(e。在反向投影前,目标图像中的每一个象素的值描述的是在这一点的颜色信息,而投影后,图像中每一个象素的值就变成了这个颜色信息出现在此处的可能性的一种离散化的度量。图(d 是形态学处理后的H通道图像直方图。彩色概率分布的Open CV算法实现如下:(1首先通过摄像头捕获手势图像,将彩色空间转化为HSV空间,并且得到其中的H分量:(2计算 H分量
53、的直方图,即1 维直方图:精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 16 页,共 29 页图 4-1 反向投影的输入输出图像在这罩需要考虑H 分量的取值范围的问题,H 分量的取值范围是fo ,360,这个取值范围的值不能用一个bm来表不,为了能用个byte 表示,需要将H 值做适当的量化处理,在这里我们将H分量的范围量化到0,2551。(3根据获得的色彩直方图将原始图像转化成色彩概率分布图像,这个过程就被称作”BackProjection”。计算BackProject ,result即为所要的结果( 二维彩色概率分布图。5 基于计算机视觉的手
54、势跟踪与识别算法实验51 系统的软硬件环境及功能1系统环境(1软件环境:操作系统Windows XP 编程环境使用MicrosoftVisual C+60 开发,同时借助OpenCVt561T 腓。 (2 硬件环境:CPU Pentium(RD 主频 2 80G 内存 512M 摄像头多彩BV-39 摄像头其中 BV-39 型摄像头技术规格如下Sensor 型式:新一代高速CMOS 传感器分辨率:真640*480( 无差值 接口: USBl1 热插拔速度: 320 丰 240 15 35fps ;640 幸 480 5 15fps 信噪比:优于48dB 动态范围:优于72dB 视角: 4560
55、 度精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 17 页,共 29 页成像距离: 3cm无限远 ( 常规 , 支持格式: VFW ,DirectShow 2系统功能本文主要研究基于计算机视觉的手势跟踪与识别。首先从输入的视频流中捕获手势图像,对图像进行预处理和特征提取,得到理想的手势分割效果,并选用矩特征组作为手势图像的特征向量。手势跟踪是手势识别的基础,它的好坏直接影响识别率的大小。本文采用 CamShift 算法对手势实时跟踪,在单色背景下取得了良好的跟踪效果。接下来我们对自定义的 10 个数字手势的识别进行了仿真实验,以验证将基于Flu
56、矩特征和“一对多径向基核函数SVM 相结合的算法应用到手势识别的可行性。最后,本文基于VC+6 0 平台开发了一个简单的手势交互系统咄rd 数字录入系统,将手势识别用于人机交互,实现了对Word软件的操作。基于计算机视觉的手势跟踪与识别流程图如图5-1 所示。图 5-1 基于计算机视觉的手势跟踪与识别系统流程图52 手势图像预处理及特征提取实验结果521手势图像获取及手势样本库的建立以下是基于OpenCV 接口函数读取视频的主要代码。建立一个良好的样本库对于统计识别是非常重要的。对摄像头获取的手势图像进行分割得到的黑白手势图像组成样本库。具体来说,首先进行样本的采集。本文在采集手势样本时限制拍
57、摄背景为单色背景,但允许光照强度发生变化,将拍摄的手势图片统一归一化为 200X240 像素大小。然后逐个样本检查,去掉不理想的样本,比如采集样本时候手仅有精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 18 页,共 29 页部分在摄像头视野内,或者分割不理想的情况。为方便后续对样本进行特征提取,把选中的合格样本按一定规律批量命名后保存到相应文件夹。本文对0-9 的 10 个数字手势进行识别,如图5-2 、5-3 所示,其中图52 是从摄像头采集的RGB彩色图像,图5-3 是对应的分割图片,也就是要保存的手势样本。图 5-2 2 采集的数字手势RG
58、B图像图 5-3 分割得到的数字手势示意图52 .2手势图像的预处理本文将手势图像从RGB空间变换到YCbCr 空间 ( 色彩窄间转换的效果图请参见图32,利用YCbCr 色彩空间亮度和色度分离的特性,在一定程度上克服了光照的干扰,然后用最大类间方差法otsu ;对 Cb 和 cr 通道的图像进行二值化处理。实验结果表明,与Y通道相比, cb 和 Cr 色差通道具有更好的分割效果。( 手势图像的Y 通道、 cb 通道和cr 通道二值化效果图请参见圈3-3 。最大类问方差法的具体流程如下:(1计算归一化直方图h(i ;(2计算灰度均值(3计算直方图零阶累积矩和一阶累积矩用 Otsu 算法对图像做
59、二值化处理的主要代码如下所示:精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 19 页,共 29 页但是用Otsu 法得到的手势分割图像还存在一定的噪声,所以考虑运用形态学的开运算,先膨胀后腐蚀,从而得到较理想的分割效果( 手势图像的形态学处理效果请参见图34。为了对手的区域进行更好的特征提取,文中使用灰度投影法来获取准确的手势区域。具体方式是对经过预处理的二值图像,分别在垂直方向和水平方向采用灰度投影法,从而得到手势在X方向和 Y 方向的坐标范围( 姐一 x2,(y1 一 y2。如图 5-4 所示, (a 是从实时视频中截取的手的RGB图像, (
60、b为 (a对应的二值化图像,(c为通过灰度投影确定的准确的手区域。图 5-4 采用灰度授彩法荻取手所在准确的手区域52 手势跟踪实验结果及分析1 手势跟踪系统流程精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 20 页,共 29 页图 5-5 Camshift算法流程图2 手势跟踪实验图 5-6 手势跟踪结果我们将 CamShift 算法用于手势的实时跟踪,本实验是在Vc+和 OpenCV的环境下,利用 USB 接 u 的摄像头采集图像,实验结果见图6-8 ,图中椭圆内部是待跟踪的手势。用Camshift算法对具有特定颜色的甘标进行跟踪,无需计算每
61、帧图像一k 所有像素点的颜色概率分布,只需求出比当dU 搜索窗大一砦的区域内的所有像素点的颜色概率分布,这样就大大减少了计算最。实验结果表明,CamShift跟踪算法对系统资源要求不高,实时性较好,在实际的交互场景中表现了较强的鲁棒性。53 实时手势识别实验结果及分析531手势识别系统流程在识别手势时首先创建手势库,对图像预处理和特征提取,得到理想的手势分割效果图,并选用矩特征组作为手势图像的特征向量。接下来用支持向量机算法对手势图像进行分类识别,对几种常见的支持向量机多值分类算法、基于后验概率的多分类算法以及几种传统的分类方法应用于手势识别的结果做了对比。精选学习资料 - - - - - -
62、 - - - 名师归纳总结 - - - - - - -第 21 页,共 29 页手势识别流程图见图5-7。图 5-7 手势识别系统流程图5.4 手势跟踪与识别在人机交互中的应用为了验证论文中的手势跟踪、识别算法,本文基于VC+6 0 平台编写了一个简单的Word 数字录入程序,将手势识别应用于人机交互中,实现了从摄像头输入手势对Word 文件的操作。首先新建一个MFC AppWmard(EXEI 程,通过在VIEW菜单选Class Wizard,在 Automation选项中选Add Class ,然后选择From aType Library,添加Microsoft Of:fice offic
63、ell文件夹下的MSWORD OLB后即完成设置。本文利用预定义的数字手势0,-9实现了对Word 的操作,我们在程序中定义:在word文件打开之前,数字手势1 表示单击鼠标左键,数字手势2 表示单击鼠标右键,数字手势5 表示双击鼠标左键,从而实现手势对鼠标的简单控制;当Word 文件打开以后数字手势1、2、5 的鼠标单击或双击事件不再有效,此时数字手势1-9 表示向 Word 文档输入数字19,即通过手势识别结果向Word 文档中自动写入相应手势所对应的数字。而定义数字手势 O始终是关闭Word文件的手势,所以本系统不能输入数字O。详细的数字手势与它所代表的人机交互功能的对照表如表 5-2
64、所示。表 5-2 数字手势与它所代表的人机交互功能的对照表如图 5-8 所示,是Word 数字录入系统的交互界面。点击“启动视频输入 按钮,系统就开始通过USB摄像头捕捉手势并进行识别,进而实现对Word 的简单操作。该手势交互系统的功能如下:打开 Word 文件的功能:首先利用跟踪模块得到的相对位置信息来模拟鼠标移动事件,让鼠标移动到桌面的Word快捷方式,然后利用数字手势5 的识别结果模拟鼠标双击事件来打开 Wbrd 文件,如图5-9(a 所示;保存文件和关闭文件的功能:在完成数字录入以后,使用手势0 来关闭 Word文件。在关闭 Word时弹出“是否保存对文档1 的更改”的对话框,此时通
65、过编程实现录入数字的功精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 22 页,共 29 页能停止而数字手势1、 2、5 的鼠标单击或双击功能再次被激活,然后结合鼠标移动( 对应手势跟踪 和鼠标左键单击( 对应数字手势对应的按钮 ( 在图 6-10(d6PXC 应“是09”按钮,在图 5-9(e 中 XC 应“保存”按钮,来实现保存( 这里仅用手势识别还不能在保存文件时任意写入文件名,如图 5-9(d(e 所示;图 5-9 手势交互控控制word 示意图6 总结与展望基于手势识别的人机交互是当前智能人机交互的一个重要的研究课题。由于基于视觉的手势识
66、别是利用摄像机采集手势信息,无需购买昂贵的设备,再者它在操作时更加自然、方便,符合以人为本和自由性的要求,因此对这一问题的研究有着重要的理论价值和应用前景。本文在Microsoft Visual C+60 开发环境下,借助OpcnCV开源库,对基于计算机视觉的手势跟踪与识别各个阶段的算法进行了研究与验证,具体内容总结如下:1在手势图像预处理阶段,为降低光照对手势分割的干扰,选取YCbCr色彩空间,利用其色度和亮度分离的特性,用最大类间方差算法进行分割,再用形态学方法降噪,仿真实验表明,在变化光照的情况下,本阶段算法的手势分割效果良好。2在手势图像特征提取阶段,根据识别对象是手势这一特点,提取几
67、何矩作为待识别手势的特征并进行算法有效性的验证,实验结果表明矩特征的旋转、平移、尺度不变性较好的解决了手势采集时产生的旋转、尺度等不确定性问题。3在支持向量机多分类方面,分别验证了“一对多、“一对一和决策有向无环图脚 等多分类算法在手势识别中的分类性能,并进一步研究了SVM的 参数优化问题,实验结果表明“一对多径向基核函数的SVM算法极大提高了手势识别的准确率。同时针对同精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 23 页,共 29 页一手势样本属于多个类的错分情况,本文提出将基于后验概率的SVM多分类算法用于手势识别,以概率作为手势分类的输出
68、,在一定程度上减少了误判发生,最终测试样本集的识别率达到989。4在跟踪阶段,针对待跟踪目标是手势以及要保证系统运行的实时性这两个关键因素,本文选择了以色彩信息为特征的Camshift算法用于交互场景的手势跟踪,此算法对系统资源要求不高,在仿真实验中表现出较好的实时性和鲁棒性。5最后,本文基于VC+6 0 平台开发了一个简单的Word数字录入系统,将手势识别应用于人机交互中,实现了从摄像头输入手势对Word文档的操作。本文的创新点:一是提出将基于Hu 矩特征和“一对多径向基核函数支持向量机相结合的算法应用到手势识别,并对该算法进行了仿真实验,取得了比较理想的识别效果;二是针对一个手势样本同时属
69、于多个类的错分情况,提出将基于后验概率的多类分类算法用于手势识别,进步提高了识别率。本文的研究还有需要改进和进一步深入的地方。在实时的手势跟踪和识别中我们还需要增加能够识别的手势的种类,并进一步提高识别的速度和准确性。基于计算机视觉的手势研究有着重要的理论价值和应用前景,因此我们相信手势识别的研究将会得到更多的关注和发展。7 附录:7.1 程序重要部分代码我们先来明确一些概念,首先,Android的事件处理机制是基于Listener、 setOnKeyListener(等方法来添加对某一类事件的监听器。第三,Listener一般会以Interface接口)的方式来提供,其中包含一个或多个abs
70、tract 、onKey(等等的操作。这样,当我们给某个view 设 置了事件Listener,并实现了其中的抽象方法以后,程序便可以在特定的事件被dispatch到该 view 的时候,通过callbakc函数给予适当的响应。看一个简单的例子,就用最简单的TextView 来说明 05. super.onCreate(savedInstanceState。06. setContentView(R.layout.main。07. 08. / init TextView 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 24 页,共 29 页09. T
71、extView tv = (TextView findViewById(R.id.page。10. / set OnTouchListener on TextView 11. tv.setOnTouchListener(this。12. / show some text 13. tv.setText(R.string.text。14. 15. 16. Override 17. public boolean onTouch(View v, MotionEvent event 18. Toast.makeText(this, onTouch, Toast.LENGTH_SHORT.show(。19
72、. return false。20. 我们给 TextView 的实例 tv 设定了一个onTouchListener,因为 GestureTest类实现了OnTouchListener 接口,所以简单的给一个this作为参数即可。onTouch 方法则是实现了OnTouchListener中的抽象方法,我们只要在这里添加逻辑代码即可在用户触摸屏幕时做出响应,就像我们这里所做的打出一个提示信息。这里,我们可以通过MotionEvent的 getAction(方法来获取Touch 事件的类型,包括ACTION_DOWN, ACTION_MOVE, ACTION_UP, 和 ACTION_CANC
73、EL。 ACTION_DOWN是指按下触摸屏, ACTION_MOVE是指按下触摸屏后移动受力点,ACTION_UP 则是指松开触摸屏,ACTION_CANCEL 不会由用户直接触发)。借助对于用户不同操作的判断,结合 getRawX(、getRawY(、getX( 和 getY( 等方法来获取坐标后,我们可以实现诸如拖动某一个按钮,拖动滚动条等功能。待机可以看看MotionEvent类的文档,另外也可以看考TouchPaint例子。回到今天所要说的重点,当我们捕捉到Touch 操作的时候,如何识别出用户的Gesture ?这里我们需要GestureDetector.OnGestureList
74、ener接口的帮助,于是我们的GestureTest类就变成了这个样子。1.public class GestureTest extends Activity implements OnTouchListener, 2. OnGestureListener 3. 4. 随后,在onTouch(方法中,我们调用GestureDetector的 onTouchEvent( 方法,将捕捉到的 MotionEvent交给 GestureDetector 来分析是否有合适的callback函数来处理用户的手势。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第
75、25 页,共 29 页1.Override 2. public boolean onTouch(View v, MotionEvent event 3. / OnGestureListener will analyzes the given motion event 4. return mGestureDetector.onTouchEvent(event。5. 接下来,我们实现了以下6 个抽象方法,其中最有用的当然是onFling(、onScroll(和onLongPress( 了。我已经把每一个方法代表的手势的意思写在了注释里,大家看一下就明白了。01./ 用户轻触触摸屏,由1 个 Mot
76、ionEvent ACTION_DOWN触发02. Override 03. public boolean onDown(MotionEvent e 04. / TODO Auto-generated method stub 05. Toast.makeText(this, onDown, Toast.LENGTH_SHORT.show(。06. return false。07. 08. 09. / 用户轻触触摸屏,尚未松开或拖动,由一个1 个 MotionEvent ACTION_DOWN触发10. / 注意和 onDown(的区别,强调的是没有松开或者拖动的状态11. Override 1
77、2. public void onShowPress(MotionEvent e 13. / TODO Auto-generated method stub 14. 15. 16. / 用户 19. / TODO Auto-generated method stub 20. return false。21. 22. 23. / 用户按下触摸屏、快速移动后松开,由1 个 MotionEvent ACTION_DOWN, 多个 ACTION_MOVE, 1 个 ACTION_UP 触发24. Override 25. public boolean onFling(MotionEvent e1, M
78、otionEvent e2, float velocityX, 26. float velocityY 27. / TODO Auto-generated method stub 28. return false。29. 30. 31. / 用户长按触摸屏,由多个MotionEvent ACTION_DOWN触发32. Override 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 26 页,共 29 页33. public void onLongPress(MotionEvent e 34. / TODO Auto-generated meth
79、od stub 35. 36. 37. 38. / 用户按下触摸屏,并拖动,由1个 MotionEvent ACTION_DOWN, 多个ACTION_MOVE触发39. Override 40. public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, 41. float distanceY 42. / TODO Auto-generated method stub 43. return false。44. 我们来试着做一个onFling(事件的处理吧,onFling(方法中每一个参数的意义我写在注释中了
80、,需要注意的是Fling事件的处理代码中,除了第一个触发Fling的 ACTION_DOWN和最后一个ACTION_MOVE 中包含的坐标等信息外,我们还可以根据用户在X轴或者 Y轴上的 移动速度作为条件。比如下面的代码中我们就在用户移动超过100 个像素,且X轴上每秒的移动速度大于200 像素时才进行处理。01.Override 02.public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, 03. float velocityY 04. / 参数解释:05. / e1:第 1 个 ACTION_DOWN
81、MotionEvent 06. / e2:最后一个ACTION_MOVE MotionEvent 07. / velocityX:X轴上的移动速度,像素/ 秒08. / velocityY:Y轴上的移动速度,像素/ 秒09. 10. / 触发条件:11. / X轴的坐标位移大于FLING_MIN_DISTANCE,且移动速度大于FLING_MIN_VELOCITY 个像素 / 秒12. 13. if (e1.getX( - e2.getX( FLING_MIN_DISTANCE 14. & Math.abs(velocityX FLING_MIN_VELOCITY 15. / Fling le
82、ft 16. Toast.makeText(this, Fling Left, Toast.LENGTH_SHORT.show( 。17. else if (e2.getX( - e1.getX( FLING_MIN_DISTANCE 18. & Math.abs(velocityX FLING_MIN_VELOCITY 19. / Fling right 20. Toast.makeText(this, Fling Right, Toast.LENGTH_SHORT.show( 。21. 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 27 页,
83、共 29 页22. 23. return false。24. 问题是,这个时候如果我们尝试去运行程序,你会发现我们根本得不到想要的结果,跟踪代码的执行的会发现onFling(事件一直就没有被捕捉到。这正是一开始困扰我的问题,这到底是为什么呢?我在讨论组的Gesture detection这个帖子里找到了答案,即我们需要在onCreate 中tv.setOnTouchListener(this。之后添加如下一句代码。1.tv.setLongClickable(true。只有这样, view 才能够处理不同于Tap轻触)的hold 即 ACTION_MOVE,或者多个ACTION_DOWN),我们
84、同样可以通过layout定义中的android:longClickable来做到这一点。7.2 手势识别的视频http:/ http:/ http:/ http:/ http:/ http:/ http:/ :此网站介绍了智能交警手势识别系统,网上查找数据表明,大多数人对交警手势语言不是很清楚,我的想法是在电动汽车上能够再加上智能交警手势识别系统就更好了。http:/ :基于视觉的手势自动识别系统研究与应用,手势遥控小车演示http:/ http:/ http:/ 以上是我挑选的能较好的诠释我们技术的视频,希望查看更多的手势识别视频,请点击链接http:/ 7.3 国内外生产手势识别软件的厂家精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 28 页,共 29 页全球首款手势控制电脑亮相美国CES2018:http:/ 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 29 页,共 29 页