基于MATLAB设计和实现战术手势识别功能
摘 要
手势识别技术是人们生活中常见的图像处理技术,也是热门的研究领域之一。手势识别可用于人们生活中的各种场景,如电视信息交互,只有手势才能控制电视;在许多领域VR在游戏中,使用手势可以完成各种游戏动作。总之,随着图像处理的快速发展,手势识别技术越来越成熟,识别率和识别速度也逐渐提高。我相信在不久的将来,手势识别技术将发挥更大的作用。
为了方便官兵在训练中加强对手语的记忆掌握,根据不同的战术背景和不同的手语需求,本文开发了基于手势识别算法的研究MATLAB战术手势识别功能。针对手势识别的实现,本文中首先研究了图像的预处理技术,通过对采集的战术手势图像的预处理,为后续的战术手势图像处理打下基础。然后研究手势图像的分割算法,主要分析手势图像的连接域,从而从背景中分割手势图像。然后提取分割的战术手势图像,使用手势图像Hu图像的特征是不变矩和空间几何特征。最后利用BP神经网络训练图像特征,最终识别结果。基于高效准确的算法开发MATLAB的GUI界面,用户互动良好,界面美观,具有一定的实用价值。
关键词:MATLAB;图像处理;手势识别;GUI
目 录
摘 要 I
ABSTRACT III
目 录 V
图 目 录 IX
表 目 录 XI
第一章 绪 论 1
1.1 选题背景及研究意义 1
1.2 国内外研究现状 2
1.3 本文的研究内容 3
1.4 本文研究了组织结构 4
第二章 相关概念和技术 5
2.1 MATLAB语言相关概念 5
2.2 图像处理的相关原理 6
2.2.1 图像处理的基本概念 6
2.2.2 图像识别的基本方法 7
2.3 图像处理的基本方法 8
2.3.1 图像颜色空间转换 8
2.3.2 图像二值化法 8
2.3.3 图像形态学操作 9
2.4 图像分割基本方法 10
2.4.1 常用的图像分割法 10
2.4.2 基于二值化图像的连通域分析 11
2.5 手势图像识别相关原理 12
2.5.1 手势识别基本概念 12
2.6 人工神经网络的基本原理 13
2.6.1 基于BP神经网络图像识别 15
2.7 图形用户界面GUI相关原理 16
2.8 本章小结 16
第三章 基本框架和功能设计 17
3.1 需求分析 17
3.2 可行性分析 18
3.2.1 技术可行性 18
3.2.2 经济可行性 18
3.2.3 操作可行性 18
3.3 战术手势识别功能的基本框架和功能设计 19
3.3.1 战术手势识别框架设计 19
3.3.2 战术手势识别功能设计 22
3.4 GUI界面基本框架和功能设计 22
3.4.1 GUI界面框架设计用户使用界面框架 22
3.4.2 GUI界面功能设计用户使用 24
3.5 本章小结 25
第四章 实现图像处理和手势识别 27
4.1 战术手语的编成和设计 27
4.2 预处理手势图像 30
4.2.1 手势图像颜色空间转换 30
4.2.2 图像二值化 31
4.2.3 形态学操作 32
4.2 图像分割 32
4.2.1 基于连通域的手势图像分割 33
4.3 提取图像特征 34
4.3.1 几何不变矩-Hu矩 35
4.3.2 空间几何特征 36
4.4 BP神经网络训练 36
4.5 本章小结 38
第五章 GUI实现用户界面 39
5.1 GUI设计相关参数和函数 39
5.2 创建GUI图形用户界面 43
5.2.1 GUI创建图形用户界面 44
5.3 设计和实现战术手势识别用户界面 48
5.3.1 构建用户识别界面 48
5.4 本章小结 56
第六章 测试和分析战术手势识别功能 59
6.1 测试和分析系统 59
6.2 战术手势识别功能测试 59
6.2.1 战术手势识别功能测试(1) 59
6.2.2 战术手势识别功能测试(2) 67
6.3 测试结果分析 76
6.4 本章小结 76
第七章 总结与展望 79
7.1 总结 79
7.2 展望 79
致 谢 81
附 录 83
附录一 完整的功能设计和实现代码 83
附录二 手势图像训练代码 88
附录三 手势图像处理代码 90
参考文献 95
个人简历简历及研究成果 97
图 目 录
图2-1 连通域示意图 11
图2-2 生物神经元结构 13
图2-3 神经元模型结构 14
图2-4 单层神经网络图 15
图3-1 战术手势识别整体框架 19
图3-2 战术手势识别简化后框架 20
图3-3 MATLAB神经网络 21
图3-4 MATLAB神经网络(翻译后) 21
图3-4 MATLAB神经网络框图 22
图3-5 GUI界面框架由用户使用 23
图4-1 HSV处理后的手势图像 30
图4-2 手势图像二值化后 31
图4-3 形态学操作后的手势图像 32
图4-4 连通域示意图 33
图4-5 手势分割图像 34
图4-6 图像的几何特征 36
图4-8 神经网络训练结果 37
图5-1 新建GUIDE文件选择界面 44
图5-2 GUI主窗口 45
图5-3 GUI基础设计过程 45
图5-4 GUI基本设计属性 46
图5-5 GUI基础设计代码1 46
图5-6 GUI基础设计代码2 47
图5-7 处理结果图 47
图5-8 初步构建用户界面 49
图5-9 初步构建用户使用界面显示 49
图5-10 战术手势识别系统用户使用界面 50
图5-11 读取视频按钮回调函数 51
图5-12 打开图片回调函数 51
图5-13 选择视频文件对话框 52
图5-14 读取手势视频后的结果 54
图5-15 成功输入视频识别 54
图6-1 第一组测试视频 60
图6-2 第二组测试结果 60
图6-3 第三组测试结果 61
图6-4 第四组测试结果 61
图6-5 第五组测试结果(mp4) 62
图6-6 第五组测试结果(avi) 62
图6-7 第五组视频属性对比 63
图6-8 第五组分割后图像属性对比 64
图6-9 第六组测试结果 65
图6-10 断点运行后的结果 66
图6-11 第二次训练结果 66
图6-12 第六组修正后的训练结果 67
图6-13 排列组合结果 67
图6-14 100组测试视频 68
图6-15 100组测试音频(截取部分) 68
图6-16 测试时间分布图有效测试数组(97组) 74
表 目 录
表4-1 战术手语表 27
表4-2 战术手语编成表 29
表5-1 GUI函数属性表 40
表6-1 第一组数组测试结果(1-20) 69
表6-2 第二组数组测试结果(21-40) 70
表6-3 第三组数组测试结果(41-60) 71
表6-4 第四组数组测试结果(61-80) 72
表6-5 第五组数组测试结果(81-100) 73
第一章 绪 论
1.1 选题背景及研究意义
随着现代技术的发展,各种无线、有线通信联络方式飞速发展,有效保障了分队行动中的良好通信联络。但是,战场环境的多变导致依靠无线电波等技术的通信联络具有较高的不确定性,其受地形、天气等要素的影响较多,同时也易遭到敌方势力的电子对抗打击从而降低甚至破坏我方通信联络效能。故此,作为分队行动中的战术手势通信不可或缺。
战术手势识别主要是以战术手势几何特征检验为前提,是通过探究对应的手势图像几何形状轮廓,结合相关特性来判断战术手势所蕴含的意义。就好比人在对另外一个战术手势进行识别的时候,往往需要访问自己大脑里面的记忆库,对相应的特征进行比对之后,如果与相关记忆库识别比对成功,就能够识别出战术手势的含义,如果该对象的特征无法被匹配,那么说明无法识别。
在民用领域中,识别人手部动作并给予相应反馈的手势识别研究,应用前景及潜藏的经济价值不可估量。如果能将该技术运用在军事方面,可以有效的提升部队现代化水平,提高部队对于信息的反应和处理能力,进而进一步提升单兵作战能力,减少物资和人员的消耗,全面提升战斗力。对于武警部队而言,分队战术手势识别技术可以广泛的被应用在反恐作战、防卫作战、处突维稳、日常执勤、看押看守等各个方面,分队战术手势识别的研究处于模式识别、图像处理、机器学习和计算机语言等多学科领域交叉地带,综合性很强。战术手势研究典型的应用领域有:智能控制、运动分析、虚拟现实等。通过战术手势识别技术的发展,可以实现人机通过手势变换进行交互,通过手势直接无线控制PC等电子产品;在文体活动中,手势识别也大放异彩,通过运动分析及手势分析可以极大地提高运动与舞蹈训练水平;手势分析同样可以帮助视频会议达到更好的效果,降低人物动画制作成本,或者帮助世界上不同区域的人利用互联网组成一个线上工作团队。
围绕武警部队在各类战斗、任务中的战术手势的重要性,每一名战斗在一线官兵都应该对战斗中所使用的战术手语非常熟悉,以真正达到传递信息、通信联络的作用。而常用的、熟悉的战术手语已经不具备较好的保密性和安全性,所以每一场战斗或者任务都应该将新编战术手语作为一项重要的准备工作来完成。那么设计规定好战术手语后,提高官兵的记忆效率,确保战斗或者执行任务过程中战术手语的有效正确运用便至关重要。选题即围绕战术手势的识别功能,以MATLAB为基础展开研究和设计。为便于官兵在训练中加强对手语的记忆掌握,根据不同的战术背景不同的手语需要,针对特战小队在实际任务中可以运用到的手语联络方式进行设计研究,通过自拟暗语进行训练测试,完成了基于MATLAB的战术手语的识别功能的设计与实现。
1.2 国内外研究现状
手势识别的研究起步于20世纪末,由于计算机技术的发展,特别是近年来虚拟现实技术的发展,手势识别的研究也到达一个新的高度。熵分析法是韩国的李金石、李振恩等人通过从背景复杂的视频数据中分割出人的手势形状,然后计算手型的质心到轮廓边界的距离从而识别手势的方法,该方法具有较好的识别率,在对6个实验样本的测试中,结果显示其正确识别率近乎百分百。印度人米娜克氏在基于视觉手势识别的基础上进一步研究,提出一种基于结构特征的手势识别算法。该算法包括去除背景、方向检测。手指检测以及手指的数量进行检测,最终确定手势。于成龙等采用基于视觉的组合特征进行手势识别,通过手掌的大小长度、质心、长宽比等人手的属性值结合使用,使得识别率得到极大提升。
对于手势识别的研究不仅仅限于大学或者是研究院等机构,众多的大型公司机构也纷纷加入到手势识别研究以及应用的行列。在多伦多2014年举行的“计算机人机互动大会”上,微软向世界展示了一款运动传感键盘,该键盘实现了对用户悬空手势进行的识别。该款键盘被命名为Type-Hover-Swipe键盘,它集成了64个传感器,每个传感器位于键盘的格子中间。当用户将手指悬停在键盘上方时,键盘会根据用户手指的运动进行识别,这样就可以实现用户以一种舒服的姿势进行手势操作。而Xbox则是微软比较成熟的商业化手势甚至是身体的识别。作为芯片生产巨头,Intel公司也积极参与到手势识别的大军中来。其中开源的图像处理OpenCV类库以及Realsense设备都是他们在此领域的研究成果。
国内高校及研究院对于手势识别也有着许多成就,哈尔滨工业大学的吴江琴、高文等人通过ANN与HMM的混合方法的手语训练识别方法,增加了识别方法的分类特征,同时使得模型的估计参数大幅减少,提高了效率。在实际运用中,使用ANN-HMM混合方法的中国手语识别系统中,孤立词语的识别率为90%,简单语句的识别率为92%。另外,天津大学的研究人员通过对操作者的体态动作图像信息进行处理使其能够控制机器人的运动、答复等状态。清华大学的研究人员将识别率较高的手势类型(例如数字手语)作为人机交互的信号,并将其应用于电脑游戏中,取得了成功。
1.3 本文研究内容
为提升提高官兵的记忆效率,确保战斗或者执行任务过程中战术手语的有效正确运用,最终使武警作战分队在执行任务过程中达到相互协同、信息交流及作战分队与指挥部的实时信息交互,确保各种条件下的精确稳定的信息传递,提高指挥部对作战的整体把握,保证任务圆满完成,针对武警作战分队在实际执行任务中的手势口令进行交流,立足于高保密性,高反馈性以及高实用性,研究设计和实现了基于MATLAB的作战手语战术手势识别功能,以实现手语向文字、语音结果的转化。本文着重介绍了MATLAB图像处理和手势识别的相关原理,设计的研究和实现,GUI用户使用界面的设计和实现,测试实验结果和结果分析四个方面。
(1)深入研究了MATLAB图像处理和手势识别的相关原理,介绍了计算机图像的基本概念以及MATLAB在图像处理方面的基本原理,阐述了MATLAB图像处理的几种基本方法,为设计的研究和实现提供了理论基础。
(2)设计实现了基于MATLAB的战术手势图像的处理和识别,并对本文中测试的十个手势图像及其结合语句赋予意义,通过图像处理基本方法对获取的手势图像进行处理,而后对结果进行匹配识别并进行语音播放,基本实现了预期设计目的。
(3)针对用户使用实际需求,利用MATLAB的GUI相关功能,设计实现了用户使用界面,对整个设计进行整理组合,达到了精简、便于使用的目的。
(4)进行了战术手势口令识别的相关测试。对图像以及设计使用环境进行了详细介绍,对设计整体进行测试,对设计的不足以及改进空间进行了深入分析。
1.4 本文研究组织结构
本文重点在MATLAB环境下研究和设计实现图像的处理和手势识别、并结合MATLAB本身具备的功能设计实现了用户使用平台。在研究过程中,着重实现用户可以进行自编暗语并进行识别测试,并且便于操作使用的战术手势识别功能,对识别结果进行文字以及语音形式的转化。
第一章,介绍了论文中运用到的主要技术的研究背景和本文研究设计的意义,通过阅读大量文献进行归纳总结,并对本文预期目的和将要进行的工作做简要介绍。
第二章,主要研究了需要用到的相关概念和技术,MATLAB语言相关概念、图像处理相关概念方法、手势识别相关概念方法和GUI相关原理等知识。
第三章,首先从功能需求介绍了基于MATLAB的战术手势识别功能的设计目标,给出了战术手势识别功能的的基本框架设计,并对图像处理和手势识别基本流程,GUI用户界面的构建目标进行了介绍。
第四章,在对系统的功能需求、框架、流程等进行研究后,在本章对作战手势进行简易化并设计出以数字型手语为基准的战术手势,并对其图像处理以及手势识别的实现进行详细介绍。
第五章,在对GUI用户使用界面的预期效果进行研究后,在本章对GUI设计的方法、流程等基础知识进行分析研究,并对最终完成GUI用户使用界面的设计与实现进行介绍。
第六章战术手势识别功能的测试分析。对本文设计与实现的战术手势识别功能进行了测试,对测试结果进行分析,对设计的不足以及有待改进的地方进行进一步阐述。
第七章,总结论文在写作和功能的设计实现方面完成的主要工作,针对论文的写作和功能的设计实现方面出现的问题进行列举,给出改进意见,并对设计进行展望。
在文章的最后将本论文中所用到、借鉴的参考文献进行了罗列。
第二章 相关概念和技术
本章主要对实现基于MATLAB的战术手势识别功能所使用的编程平台、基本原理、基本方法等进行介绍。此功能设计以MATLAB为平台,应用了图像处理、神经网络手势识别,同时为了满足用户的实际使用需要,以GUI为基础搭建了用户使用界面。为了使读者更容易理解本设计的实现过程和原理,本章将会对上述提到的相关软件和技术进行介绍。
2.1 MATLAB语言相关概念
2.2 图像处理相关原理
通过对MATLAB语言基本概念的了解,下面将结合本文设计所使用图像处理、手势识别以及GUI用户使用界面的相关概念进行介绍。
2.2.1 图像处理基本概念
2.3 图像处理基本方法
2.4 图像分割基本方法
2.5 手势图像识别相关原理
通过对图像处理的研究分析,在采取手势图像特征提取的基础上,结合设计的需要以BP神经网络作为手势图像识别的方法,本节即对手势识别基本概念和基于BP神经网络的图像识别进行详细介绍。
2.5.1 手势识别基本概念
手势识别(Gesture Recognition)指通过跟踪人类手势、识别并其转换为语义上有意义的命令的过程。手势图像识别的总体目标是通过计算机对获取的手的位置、姿势或形态等信息进行处理识别,并得出语义的解释或执行相应的操作。手势图像识别技术性并不是很强,其难点和重点主要是对大量数据信息的训练和处理。
手势的完成是一个动态的过程,这个过程包括了手指弯曲引起的手的形状和手在空间中的位置和方位的变化两个方面,在实际识别过程中,根据手势的时间特征,可以将手势分为静态手势和动态手势两种。相对而言,对于静态手势的识别,可以将其视为静态图像,将时间特征设定为统一值,对手势的空间特征进行研究,而动态手势则需要将时间和空间两个要素同时参考,以随时间变化的空间特征为属性对手势进行描述。静态手势的研究,可以利用手的关节、指间等特征值进行表示,而动态手势的研究则需要取一段时间内手的各种空间特征的测量序列值进行表示。同时,由于人手具有的自由度较多,运动较为复杂,导致相同的手势动作在不同的人操作时会呈现不同的运动,从而导致特征值的差别。
为了检测手的姿势或形态,可以使用通用分类器或模板匹配器进行识别。当对视频进行手势识别时,由于视频中手势含有轨迹,使其被赋予时间特征,那么就需要相应的技术诸如隐藏马尔可夫模型(HMM)等进行该特征的处理,从而使得动态的手势识别最终转化为静态的手势识别。
目前,作为比较流行的手势识别技术有模板匹配法、特征提取和BP神经网络算法。模板匹配法:作为最接近人本身对事物的识别的方法,模型匹配法是将传感器输入的原始数据与预先存储的模板进行匹配,通过测量两者之间的相似度来完成识别,相应的,模型匹配法需要大量的基础数据作为匹配对象来确保识别率,所以受到噪声、光照等复杂环境影响较大,并且识别速度慢。但是,模板匹配法具有简单、易掌握,普及程度高的优点。特征提取:指通过对输入数据的特征进行提取,并分析转化形成具有实际含义的特征属性,从而形成训练数据库,在对手势图像进行识别时,以训练数据库的特征为基础进行识别。特征提取方法缩小了基础数据的需求量,但依旧容易受到噪声、光照等复杂环境的影响,识别速度较慢。BP神经网络是一种前向传播的多层网络,BP神经网络算法是一种按误差逆传播算法训练的多层前馈网络。它的学习规则是使用最速下降法,通过反向传播来调整网络的权值和阈值,使得网络的误差平方和最小。
本文中结合运用了特征提取法和BP神经网络算法进行战术手势图像的识别,基本实现了较高的识别率同时识别速度较快。
2.6 人工神经网络基本原理
针对人工神经网络有一个经典的定义:“神经网络是由具有适应性的简单单元组成的广泛并行互连网络,它的组织能够模拟生物神经系统对真实世界物体所做出的交互反应”
神经元模型是模拟生物神经元结构而被设计出来的。典型的神经元结构如下图所示:

图2-2 生物神经元结构
神经元大致可以分为树突、突触、细胞体和轴突。树突为神经元的输入通道,其功能是将其它神经元的动作电位传递至细胞体。其它神经元的动作电位借由位于树突分支上的多个突触传递至树突上。神经细胞可以视为有两种状态的机器,激活时为“是”,不激活时为“否”。神经细胞的状态取决于从其他神经细胞接收到的信号量,以及突触的性质(抑制或加强)。当信号量超过某个阈值时,细胞体就会被激活,产生电脉冲。电脉冲沿着轴突并通过突触传递到其它神经元。
同理,我们的神经元模型就是为了模拟上述过程,典型的神经元模型如图2-3所示。
图2-3 神经元模型结构
这个模型中,每个神经元都接受来自其它神经元的输入信号,每个信号都通过一个带有权重的连接传递,神经元把这些信号加起来得到一个总输入值,然后将总输入值与神经元的阈值进行对比(模拟阈值电位),然后通过一个“激活函数”处理得到最终的输出(模拟细胞的激活),这个输出又会作为之后神经元的输入一层一层传递下去。
为了更好的理解人工神经网络是如何作用的,这里以最小二乘法线性回归问题进行类比,在求解数据拟合直线的时候,我们是采用某种方法让预测值和实际值的“偏差”尽可能小。同理,BP神经网络也做了类似的事情,即通过让“偏差”尽可能小,使得神经网络模型尽可能好地拟合数据集。
2.6.1 基于BP神经网络的图像识别
BP网络是一种前向型的神经网络,参数前向传递,而误差则是反向传递,神经网络通常由三层组成,输入层,隐含层和输出层,其基本思想就是输入层输入需要训练的图像特征,经过隐层节点的训练得到输出层的结果,计算输出层结果与预期期望值的差值,如果差值在误差范围内,则训练结束,如果差值不在误差范围内,则反向传递误差,继续训练,训练过程中不断地调整隐层节点的权值和阈值,直到输出层的结果达到预想的期望值。单层的神经网络图如下:
图2-4 单层的神经网络图
图中的P是输入列变量,b是相应偏移,a是网络输出,f是激活函数,W是网络权值。当输出结果a与期望值不相符的时候,误差沿着隐藏层进行反向传播,并将误差按照权重进行分配,使得每一个隐藏层都承担一定的误差,通过调整参数,权值优化,达到输出误差最小的目的。
神经网络图像识别技术是一种比较新型的图像识别技术,是将神经网络算法与传统的图像识别方法相融合,实现了更高效率的识别的图像识别方法。神经网络指人类通过对人体和动物的神经网络进行研究后,模仿其神经网络的构造和功能,人工生成的神经网络。在神经网络图像识别技术中,最经典的神经网络图像识别模型是遗传算法与BP神经网络算法相融合,应用面非常广。
BP网络是一种前向型的神经网络,参数前向传递,而误差则是反向传递,神经网络通常由三层组成,输入层,隐含层和输出层,其基本思想就是输入层输入需要训练的图像特征,经过隐层节点的训练得到输出层的结果,计算输出层结果与预期期望值的差值,如果差值在误差范围内,则训练结束,如果差值不在误差范围内,则反向传递误差,继续训练,训练过程中不断地调整隐层节点的权值和阈值,直到输出层的结果达到预想的期望值。
2.7 图形用户界面GUI相关原理
图像处理平台是为了实现将多个单独的图像处理算法集成在一个平台中,方便用户进行操作和使用,在MATLAB中通常使用GUI来实现图像处理平台的搭建。图形用户界面(graphical user interfaces,GUI)是MATLAB软件中的一个重要模块,具有窗口、图标、菜单和文本说明等多个图形对象,由菜单控件、按钮控件、坐标轴控件、滚动条控件、面板控件等对象控件构成,是采用图形方式显示的用户操作界面。GUI的设计可以实现图像处理过程的交互和可视化,提高了图像处理算法的综合效率,具有开发周期短、操作方便、界面友好的特点,有利于更方便快捷地控制仿真程序。搭建MATLAB GUI进行图像处理,可以充分发挥MATLAB在图形可视化方面的优势,为用户使用提供便利。
通过MATLAB GUI进行战术手势识别功能用户使用界面的设计,提供了较好的功能展现形式,使得编程工作量降低,开发效率提高。在GUI中进行图形用户界面设计的基本步骤如下:
(1)确定设计需求,根据需求目标和任务需要,绘制和设计基本框图;
(2)确定设计中需要的各个控件的布局并完成控件位置的设置;
(3)设置各个控件的属性,尤其设置唯一标识值Tag属性以实现对控件的控制;
(4)进入各个控件的回调函数,编写实现回调函数相关功能的代码;
(5)运行guide进行测试,并修改程序。
2.8 本章小结
本章首先介绍了MATLAB语言的相关概念,之后对MATLAB的图像处理和手势识别的基本概念和方法进行了阐述。并根据本文实际需要,针对基于神经网络的手势图像识别进行进一步阐述。这些概念和基础为实现基于MATLAB的战术手势识别功能的设计与实现提供了良好的基础。
第三章 基本框架与功能设计
本章主要完成了对基于MATLAB的战术手势识别功能的需求分析以及基本框架的设计。通过对整个功能实现的流程的分析,结合MATLAB本身性能和优势,,对功能实现应该具备的性能展开需求分析,阐述关键技术、操难度作以及可行性,而后依据需求分析对对系统的细分功能模块进行设计并搭建基本框架,为后期功能设计与实现打下基础。
3.1 需求分析
基于MATLAB的战术手势识别功能的设计实现能很好的提高基层官兵在训练中对手语学习的记忆和掌握。根据不同的战术背景不同的手语需要,结合特战小队在实际任务中可以运用到的手语联络方式进行设计研究,从而建立的手语库能够更好的涵盖实战的各个方面,提高训练的全面性。同时,为训练成果的检验提供了一种更为智能化的方式。
根据基层现状可知,官兵日常训练任务较重,时间安排较满,官兵日常需要背记的条令条例等固化知识较多,思维活跃受到了较大限制,使得官兵在对多变、复杂的手语进行训练记忆时,往往没有较好的效果。故此如何提高训练的质量和效益成为一个关键性问题。而在记忆学中,图像放映式记忆效果显著,通过类似播放电影的方式对手语记忆进行训练,能极大的提高训练的效果,同时,其富有的生动性、形象性能够激发官兵学习热情,促使学习过程中精力更为集中,进一步的提高训练的质量。
基于这些问题,建立一个战术手势识别功能平台是相当有必要的。通过利用MATLAB的各种功能组合设计出一个具备手势识别功能和具有用户使用界面的一个平台,应用于官兵在训练中对手语的记忆,能很好的提高训练的效果和质量,大大降低训练的时间,从而减轻基层官兵的压力。同时也为管理者对所属人员训练情况进行考核提高了平台和条件。
3.3 战术手势识别功能基本框架与功能设计
基于MATLAB的战术手势识别功能需要具备图像处理和手势识别两大模块的功能,预期实现的功能包括手势视频的读取分割、手势图像的处理识别以及GUI的用户使用界面这三个部分。
3.3.1 战术手势识别框架设计
在对MATLAB的基本操作、原理进行深入学习后,立足于MATLAB高效便捷的特点,使用MATLAB神经网络库以及GUI用户界面做支撑,研究设计了基于MATLAB的图像处理和手势识别功能,该设计总体可以分为手势视频分解、手势图像处理与识别、GUI用户使用界面三个部分,其总体框架如图3-1所示。
图3-1 战术手势识别总体框架
在图3-1中,将基于MATLAB的战术手势识别功能的实现的完整流程进行展示,通过框图的设计,将整个设计划分为手势视频分解、手势图像处理与识别、GUI用户使用界面三个部分的内容,在本小节将针对手势视频分解、手势图像处理与识别进行详细介绍。
(1)手势视频分解
战术手势的识别的设计与实现围绕贴近实战、便于直观的输入和输出,在手势图像处理识别的基础上,增加了手势视频分解的功能,用于将实际运用的连贯的手势动作输入后得到对应的事先规定好的文字结果,从而最终达到战术手势识别的基本功能。
(2)手势图像处理与识别
MATLAB的图像处理与识别是战术手势识别的设计与实现的主要部分,根据设计目标和功能需求,研究了MATLAB灰度图像处理、图像的二值化处理、高斯滤波处理等等图像处理方法,通过综合分析和实际测试运用,最终确定以图像分割和特征提取作为本文的基本图像处理方法。
神经网络识别方法是一种比较新型的图像识别技术,是在传统的图像识别方法和基础上融合神经网络算法的一种图像识别方法。当录入图像时,利用MATLAB的定位模块提取手势的信息,并对处理后手势图片进行训练,测试时根据录入图片的手指的弯曲、伸直等等信息进行识别,并显示最终的结果。
通过调用MATLAB的神经网络,可以最大限度的简化识别流程,从而初步达到预期效果如图3-2所示。
图3-2 战术手势识别简化后框架
在图3-2的战术手势识别简化后框架中,将整个基于MATLAB的战术手势识别功能的手势图像处理识别过程划分为四个部分,第一列为图像的导入,也就是视频图像经过分割处理后的三个手势图像,将他们分别进行第二列中的处理和识别过程。第二列中,对于手势图像的处理识别过程进行了深层解析,将其划分为图像处理、特征提取、神经网络三个部分,并且,三个部分有着严格的先后顺序,一环扣一环最终实现手势图像的处理和识别过程。第三列是每单个手势图像分别经过处理识别之后产生的结果,在MATLAB的运算过程中,每个图像的识别结果以一个对应的数字的形式存在,以便于进行下一步的运算,并且,在实际设计实现过程中,对单个图像的数字结果进行了忽略,着重以三个数字为一组的语句作为结果呈现,并最终在GUI用户使用界面上,以一个整体的文字、语音结果对用户进行展示。
MATLAB中所调用的BP神经网络库的基本属性和相关内容如图3-3所示:
图3-3 MATLAB神经网络
下图为通过软件进行翻译后的图片:
图3-4 MATLAB神经网络(翻译后)
通过对图3-3、3-4可以知道,MATLAB神经网络库的相关内容和基本属性,在MATLAB中,神经网络是利用两层前馈神经网络来求解输入和输出的问题。它的基本原理是通过神经拟合来帮助选择数据、创建和训练网络,并使用均方误差和回归分析来评估性能。
它的基本构图如下:
图3-4 MATLAB神经网络框图
3.3.2 战术手势识别功能设计
针对战术手语的多变性、短时效性,根据不同地域、类型部队的实际运用习惯,采用神经网络算法实现的手势识别,能够实现自编手势的便捷录入和新结果的便捷输出,达到简便实用、高效的预期效果。
以上即为整个设计过程中手势视频分解、手势图像处理与识别的介绍,下面将对整个设计的第三个部分GUI用户使用界面基本框架与功能的设计进行介绍。
3.4 GUI用户使用界面基本框架与功能设计
GUI用户界面的搭建能够使设计更加贴近用户的使用和操作,通过在GUI界面中设计各个功能控件,来达到对整个功能设计的整合和提升。
3.4.1 GUI用户使用界面框架设计
GUI用户使用界面包括视频录入并播放模块、分解手势图像展示模块、识别结果文字呈现模块、识别结果音频呈现模块以及重置模块。在兼顾GUI用户使用界面的美观和各个模块的功能实现两个方面的情况下,初步排版并设计了GUI的用户使用界面如图3-5所示。
图3-5 GUI用户使用界面框架
在GUI用户使用界面框架设计中,Axes作为一个展示控件,在GUI界面中为轴,能够根据设计的需要或者导入的文件不同展示对应的图表、线性图、图像、视频等,在使用方面较为简便,能够清楚得将对象呈现给用户。经过对市面上各大软件的界面进行分析研究,结合人们对用户使用界面的喜好,采取如图3-5所示的设计理念。以较大面积的Axes轴作为视频文件的展示区(图中为Axes1),使得整个视频在播放的时候,更为清晰、引人注目,该效果能有效加强人的印象。再以较小面积的Axes轴作为视频文件分割后产生的三个手势图像的展示区(图中为Axes2、Axes3、Axes4),考虑到本文功能实现的目的为提高提升提高官兵的记忆效率,确保战斗或者执行任务过程中战术手语的有效正确运用,故此将手势视频分割后形成的三个分图像进行展示,以此来加强记忆,同时便于发现错误的环节从而进行针对性整改。
同样的,根据人视觉美学的需要,结合人们对用户使用界面的喜好,在GUI用户使用界面框架设计中,将用户进行点击、操作的按钮设计为圆形。但在实际设计过程中发现,GUI本身设定中的按钮形状为矩形,通过研究发现,将GUI按钮形状调整为圆形的过程具有一定难度,并且需要较大的工作量和繁琐的逻辑考虑,所以,在考虑实用性以及实际情况后,在实际设计中,按钮形状按照GUI本身设定不予更改。
在结果呈现模块上,根据实际情况,通过最基础的文本框样式进行文字结果的呈现,同时,在文字结果呈现后,其结果对应的音频自动进行播放,通过这种方式实现手势识别结果的视觉、听觉冲击,有效加强官兵使用过程中的记忆,同时,考虑到界面的整洁和操作的便利性,针对音频的播放采取自动播放的模式。
3.4.2 GUI用户使用界面功能设计
根据战术手势识别的功能需要,在建立美观简洁的GUI用户界面的基础上,实现战术手势视频的录入、自动分割功能,并对识别结果进行文字呈现和语音呈现。同时,设计重置按钮,使得用户在一轮使用后能够将程序归位。结合整体GUI用户使用界面的功能设计,将其分为视频录入并播放模块、分解手势图像展示模块、识别结果文字呈现模块、识别结果音频呈现模块以及重置模块。
(1)视频录入并播放模块
视频和图像的呈现模块,主要功能为手势视频的录入并进行播放,主要设计条件为GUI界面中控件的设置,通过对GUI中轴(Axes)的设计以及按钮控件callback的回调函数编写,从而实现整个手势视频的读取、录入、播放。
同时,在视频录入并播放模块中,通过MATLAB的运行和计算,对录入的手势视频进行处理,将每一段手势视频划分为帧数,每隔一定帧数进行一次图像保存,获取完成后将所有图像分为三段,再在每一段中取中位数,最终获得手势视频分割后得到的手势图像并在分解手势图像展示模块中进行呈现。
(2)分解手势图像展示模块
基于MATLAB的战术手势识别功能的设计目的为提高提升提高官兵的记忆效率,确保战斗或者执行任务过程中战术手语的有效正确运用。基于这个考虑,将手势视频分割后形成的三个分图像进行展示,以此来加强记忆,同时便于发现错误的环节从而进行针对性整改。
分解手势图像展示模块的主要设计条件与视频录入并播放模块相同,通过对GUI中轴(Axes)的设计,对手势视频分割后产生的三个图像自动进行获取并按顺序展示在对应的Axes轴中。不同的是,在分解手势图像展示模块中需要完成对三个手势图像的处理和识别过程,在获取相应的手势图像后,MATLAB按照既定的算法和方法,对获取的三个手势图像进行处理和识别,通过图像的处理和BP神经网络的识别,得到基本的数组识别结果,再与编成的战术手语库进行匹配,最终得到整个手势视频的识别结果,并将结果于识别结果文字呈现模块中呈现。
(3)识别结果文字呈现模块
识别结果文字呈现模块,主要功能为手势视频处理识别结果的文字结果呈现。在GUI设计界面中,将手势视频经处理识别后产生的数组结果与定义好的文字结果进行匹配,而后将对应的文字结果于设置好的文本展示位置进行呈现。该功能主要设计条件为数组的一一对应和匹配,通过对MATLAB代码中,各个组合进行定义并赋予意义,最终实现手势视频识别结果的匹配。
(4)识别结果音频呈现模块
识别结果音频呈现模块,主要功能为通过识别结果文字呈现模块得到手势视频对应的文字结果后,依据文字结果匹配对应的音频文件并自动播放。
(5)重置模块
重置模块的主要功能为清空当前设计页码的所有数据,复原整个手势识别用户使用界面,用户即可按照同样的顺序读取新的视频进行新一轮的处理和识别过程。
3.5 本章小结
本章首先描述了本文设计的基于MATLAB的战术手势识别功能需要达到的目标和实现的功能,详细介绍了该设计的总体框架和总体功能,最后给出了该设计的功能模块设计,并对所有功能模块的设计流程进行了图文阐述。
第四章 图像处理和手势识别的实现
手势识别是基于图像处理实现,本章节主要介绍相关的手势图像处理识别算法,主要包括图像的预处理部分,图像分割部分以及手势识别部分。图像预处理是算法的前置环节,能够为后续图像算法提供高质量图像,图像分割是将对象从背景中分离出来,便于后续手势图像识别。对于手势图像识别采用BP神经网络的方式,提取手势图像特征,利用HU-不变矩特性,输入神经网络进行训练,达到识别的效果。
4.1 战术手语的编成和设计
根据人手五指的分指和弯曲度特征,同时借鉴我们日常生活中惯用的手指语言表示方法,在现有数字手语1、2、3、4、5、6、7、8、9、0的基础上,针对各个手势的动作进行重新赋值,并根据实战中常用的、必要的指挥类口令,赋予每个手势特定的定义,从而得到一组自编战术手语,具体见表4-1:
表4-1 战术手语表
手势图片 | 对应数字结果 | 对应文字结果 |
1 | 前方 | |
2 | 发现 | |
3 | 散开 | |
4 | 搜索 | |
5 | 趴下 | |
6 | 两侧进攻 | |
7 | 弱火力点 | |
8 | 强火力点 | |
9 | 敌人已消灭 | |
10 | 集合 |
以武警部队特战中队为例,在针对暴恐分子的捕歼战斗中,每个战斗小组根据任务划分的不同,通常处于不同的执行区域,并且,由于各组接受任务的明确性,在实际作战中,即便各组之间位置临近,往往也需要运用手语进行下一步行动的联络和指挥,在实际作战中,往往采用三个以上的连贯手势动作组成的手语来表达一个行动命令,尤其体现在明确进攻战法、躲避敌人攻击等高度紧张情况下。根据以上情况,结合表4-1中编成的单个战术手语表,以每三个手势为一个组合进行编成,并对构成的三个手势对应的意思进行组合,从而得到了对应的文字结果,如下表所示:
表4-2 战术手语编成表
手势图片 | 对应数字结果 | 对应文字结果 |
1 2 3 | 前方发现敌人,所有人散开 | |
1 7 6 | 前方敌人弱火力点,进行两侧进攻 | |
2 8 5 | 发现敌人重火力点,迅速趴下 | |
9 1 4 | 敌人已消灭,前方展开搜索 | |
4 2 8 | 报告!搜索发现强火力点 | |
1 8 9 | 报告!前方强火力点已消灭 |
为便于研究测试,按照中文中主语、谓语、宾语、动词的组合要求和基本模式,本文将表4-1中编成的十个单独的战术手势,以每三个手势为一个组合编成了六组战术手语,并根据每组手语的单个手势意思赋予其实际意义。在实际使用过程中,根据表4-1中编成的单个战术手语或者重新建立一个新的单个战术手语表,而后再按照新的规则以三个一组、四个一组等等模式进行组合并赋予意义,都可以形成新的战术手语组合。通过这样的战术手语建立形式,能够极大程度的提高作战中手语联络的安全性以及迷惑性,从而有效为作战联络服务。
4.2 手势图像预处理
手势识别属于数字图像处理过程,在数字图像处理过程中,大部分的图像都来源于现场摄像机拍摄采集,由于摄像机性能的千差万别以及现场环境的不同,得到的图像往往都不是最高质量的图像,大多数图像都存在噪声,光照等环境因素的干扰。所以通常都需要进行图像的预处理过程,去除图像中主体目标之外的干扰因素,降低图像的像素大小,减小图像的数据量,从而很大程度上简化系统预算过程,优化处理速度,提升图像处理的准确性。
4.2.1 手势图像颜色空间转换
图像的表示方法有很多种方式,目前常见的图像色彩表示模式有RGB模式,CMKY模式,HSV图像模式,位图,灰度图等模式,不同的场景所采用的图像表示模式不尽相同。HSV表示图像的色调,饱和度,明度,基于人类对于颜色的感知情况而建立的模型,是十分重要的一种颜色表示模型。本设计中采用HSV颜色模型进行颜色空间转换处理。通过HSV处理后的手势图像如下所示:
图4-1 HSV处理后的手势图像
Matlab中将RGB图像转换成HSV图像是通过rgb2hsv函数完成,由图像可以看出,RGB模型虽然是常用的图像表示模型,但是RGB模型反应的是物体真实存在的状态,也方便计算机处理,但是对于人来说并不是很直观,HSV模型则很直观的反应出图像的颜色,饱和度以及亮度信息。经过HSV转换的图像,背景部分和手掌部分区分明显,只需要在下一步中设置好合适的图像分割阈值,就能将手势图像从背景中区分开来。
4.2.2 图像二值化
本文针对手势图像背景较为单一的情况,在HSV空间选择固定的阈值进行图像二值化,二值化结果如下:
图4-2 二值化后手势图像
经过多次调节参数后,选择了合适的阈值(0.09<hsv<015)进行二值化,二值化后的图像手掌部分为白色,值为1,背景部分为黑色,用0表示,二值化后的图像手势部分和背景部分过渡十分明显,从1到0或者是从0到1的部分都是手势的边缘,而全部都是0的图像部分就是图像的背景,全部为1的部分就是手势部分。这一点可以作为后续的手势图像分割的依据。
4.2.3 形态学操作
图像二值化后,手势图像与背景图像区分较为明显,背景部分为黑色,手势部分为白色,但是由于阈值选择问题以及图像主题与背景连接较为紧密,导致部分图像存在孔洞以及图像边缘不够平滑,采取形态学操作能够填充图像的孔洞以及平滑手势边缘,去除边缘毛刺。
经过形态学操作的手势图像处理结果如下,通过结果可以看出,原来手势图像的孔洞部分得到了很好的填充。
图4-3 形态学操作后的手势图像
经过形态学操作后的图像,整体手势图像变得完整,原二值化图像中,手指甲部分由于阈值不一样的原因,部分指甲部分分割不全,导致存在孔洞的现象,经过形态学操作,填充了图像的孔洞,平滑了图像边缘,为后续的图像分割以及特征提取提供了高质量的图像。
4.2 图像分割
图像分割也是图像处理任务中常用的一种方法,该方法主要目的是将采集的图像进行前景和背景的分离,分割出的前景部分也就是手势部分用于后续的特征提取过程。图像分割的方法也有很多,近年来随着图像处理以及深度学习的快速发展,很多热门学科诸如神经网络,深度学习等都被用作图像分割处理,大大提高了图像分割的准确率。
4.2.1 基于连通域的手势图像分割
在进行图像预处理后,原本复杂的图像变得简单,也滤除了很多的其他干扰因素,此时需要进行图像分割操作,将手势图像从原始图像中分割出来,便于后续的特征提取操作。
从二值化的图像可以看出,手势图像与背景界线较为明显,且手势图像内部没有孔洞,图像较为纯净,因此本系统采用基于连通域的图像分割法分割手势区域。
连通域的分析是基于二值图像的,即提取二值图像中的连通区域,对每个独立连通域的分析,就能进一步得到该区域的面积,质心,轮廓等参数。在图像处理中,最小的图像处理单位是图像像素,即构成图像的每个独立区域,不同的像素按照位置关系可以分为4邻接和8邻接,4邻接是指单个像素的上下左右四个位置,8邻接除了这4个位置之外,还有包含对角线的位置。如下图所示,图像左边为4邻接点,右边为8邻接点。
图4-4 连通域示意图
像素A与像素B如果位置处于邻接点,则该像素所属区域之间连通,遍历图像,就能得到很多的连通区域,由于之前的二值化图像得到的图像较为纯净,所以选择连通域中的最大值,就能得到手势分割图像,分割图像如下:
图4-5 手势分割图像
由图像可以看出,手势部分是一个整体,这得益于上一步的图像形态学操作过程,使得手势图像中间没有断开或者断裂的部分,如果存在断裂部分的话,则图像分割时会将手势图像分割成为多个部分,完整的手势图像,整个手势部分都是一个连通域,手势中的每个像素不论是八连通区域还是四连通区域,都能找到其他的手势部分,对图像进行遍历,判断连通域,就能够从背景中将手势图像分割出来。
4.3 图像特征提取
图像特征提取是描述图像区域的有效方法,不同的图像包含着不同的特征,常见的特征有颜色特征,纹理特征,几何特征等等,这些特征又能进一步细分,有的图像特征描述的是图像的整体特征,有的描述的图像局部特征,要根据不同的图像处理任务选择合适的图像特征。本文采用几何不变矩-Hu矩以及空间几何特征作为手势图像的特征。
4.3.1 几何不变矩-Hu矩
矩的应用十分广泛,矩的概率来自物理学,主要用于表现物体空间分布,譬如力矩,扭矩等,后来逐渐被用于其他学科,比如在统计学中,一阶矩表示期望,二阶矩表示方差等等。图像处理中,可以将图像看作是二维矩阵,矩则表示概率分布。几何不变矩-Hu矩是常用的图像特征之一,是非线性特征组合而成的,具有旋转平移伸缩不变性。
假设图像用f(x,y)表示,则p+q阶原点矩和中心矩可分别用如下公式表示:
p+q阶原点矩表达式如式4-1所示:
(4-1)
中心矩表达式如式4-2所示:
(4-2)
以上两个矩并不能很准确的表示图像的特征,所以在此基础上,可以构造出7个矩的不变量用于图像的特征描述。
具体公式如下:
(4-3)
(4-4)
(4-5)
(4-6)
(4-7)
(4-8)
(4-9)
通过以上公式构造出7个矩的不变量,从而对图像的几何特征进行初步的描述。在完成图像识别的过程中,空间几何特征也是较为直观的一种方式,下面就空间集合特征进行详细描述。
4.3.2 空间几何特征
空间几何特征是描述图像特征的方式之一,也是较为直观的一种方式。常见的几何特征有图像的面积,图像的周长,图像的轮廓,图像的中心等等。本文选取手势图像的矩形度,圆形度,偏心率作为图像的几何特征。
图4-6 图像的几何特征
如图所示,手势图像的面积即白色部分表示的区域,手势图像经过二值化和形态学操作后,与背景图像明显分离,只需要对图像进行扫描,计算白色区域的面积即可得到手势图像的面积。手势图像的周长指的是图像中白色部分轮廓的周长,通过连通域计算可以得到该长度。图像的黑色部分轮廓即为图像的最小外接矩形,矩形度可以通过(H1+H2)/(W1+W2)得到,矩形度体现了一个图像的对其外接矩形的充实程度,通过这个特征参数可以分离图像方形部分。圆形度通过手势面积乘上4π除以周长的平方得到,这个参数描述的是手势图像与圆形图像的相似程度。离心率表示的是手势图像的形状,以O点作为圆心计算得到。
通过得到的几何特征与不变矩-Hu矩特征结合起来,即得到了手势图像的形状特征。
4.4 BP神经网络训练
BP神经网络的训练过程如下:
(1)神经网络初始化。根据训练图像任务的要求,选择合适的神经网络输入层的个数,隐层的权值和阈值以及输出层的个数,合理的参数往往能达到不错的训练效果。本文针对10个手势图像进行训练,每个手势图像有10个特征值,包括7个Hu矩特征,3个空间特征(矩形度,圆形度,偏心率),所以本神经网络的输入层为10,代表10个特征值,隐层节点为1,输出层神经元个数为10,代表10个阿拉伯数字。
(2)特征输入与输出。将图像特征输入神经网络进行训练,经过隐层后输出训练结果。
(3)误差计算。计算网络的输出层与期望值之间的差值。
(4)权值和阈值更新。将误差反向传递,根据误差调整隐层的权值和阈值。
(5)结束条件判断。训练结束与否取决于误差值是满足条件,若满足,则结束训练,若不满足,则重复第二步的操作。
经过以上步骤的训练,手势识别神经网络的训练结果如下:
图4-8 神经网络训练结果
由训练结果可以看出,训练网络的input有10个变量的输入,output部分有10个变量的输出,中间有一个隐藏层,网络训练方式采用的是学习率自适应的梯度下降BP算法,BP神经网络能够根据训练结果自动调整步长以及权值;中间的progress显示了每次训练的进度,图像经过了37轮的训练,validation check为泛化能力检查,由训练结果可以看出,神经网络连续6次训练误差不降反升,满足了训练结束的调节,所以训练结束。
4.5 本章小结
本章通过结合需求分析和设计说明,详细介绍了本文中图像处理和手势识别的基本流程,依次对战术手语的编成和设计、图像预处理、图像分割、图像特征处理、BP神经网络识别进行详细的设计与实验情况的介绍,并给出了实现的相关算法和界面截图。
第五章 GUI用户使用界面的实现
本章根据设计的需要,在实现图像处理和手势识别的基础上,实现对GUI用户使用界面的设计,着重介绍MATLAB环境下的GUI设计相关属性和技术。通过对GUI的基本功能的使用介绍和演示,使用户对GUI的搭建基础有进一步的了解。最后根据前文提出的设计需要,对基于MATLAB的战术手势识别功能的用户使用界面进行设计实现,并给出核心代码和流程图。
5.1 GUI设计相关参数和函数
图形用户界面(graphical user interfaces,GUI)是MATLAB软件中的一个重要模块,具有窗口、图标、菜单和文本说明等多个图形对象,由菜单控件、按钮控件、坐标轴控件、滚动条控件、面板控件等对象控件构成,是采用图形方式显示的用户操作界面。完成GUI界面的对象设定和界面设计后,会自动生成一个包含所有对象属性值的fig文件和包含函数代码的m文件。在m文件中,包含了GUI的主函数、Opening函数、Callback函数以及Output函数等,通过对这些函数的编写,可以实现不同的功能需要。
在GUI中,所有的对象都有对应的基本函数和属性来对它们的特征进行定义,正是通过对这些基本函数和属性的设定,从而实现了GUI界面中各类控件、图像、轴的展现方式。尽管较多的一般属性是所有的对象都具备的,不具有特殊性,但与每一种对象类型(比如坐标轴,线,曲面)相关的属性和函数都是独一无二的。对象属性可包括诸如对象的位置、颜色、类型、父对象、子对象及其它内容。每一个不同对象都有和它相关的函数和属性,可以通过单独的改变这些函数和属性而不影响同类型的其他对象。
下面对GUI中常用的基本函数属性进行列举介绍:
表5-1 GUI函数属性表
函数 |