随着科技、物联网技术的发展,基于手势识别的各种人工智能产品发展迅速。传统的人机交互产品绝大多数都是通过鼠标键盘、功能按钮实现,智能化程度低,操作较为繁琐。手势识别技术成为了新兴的人机交互方式之一,其原理是通过传感器或者摄像头采集手势的图像,对手势进行分割以及语义分析,从而实现信息的传输,具有便捷、非接触、高效准确的优点,提高了各种交互产品的智能性。
本文基于图像处理算法,针对手势进行图像识别、图片处理、视频帧数分解的手势识别系统的设计与开发。对于图像处理中,对图像预处理部分通过色彩空间换算的方式将手势图像转换成HSV空间,再通过中值滤波的方式进行图像去噪处理。手势分割部分采用灰度阈值法对需要处理的图像进行分割,通过形态学的方法进行处理操作,从而达到对手势图像的处理,即对图像进行分割细化。本次设计的手势识别系统是基于HU不变矩阵的特性以及图像的几个特征来对手势进行识别,使用了BP神经网络的训练模型来对手势含义进行定义。系统搭建方面本文利用Matlab的GUI开发功能,搭建了手势识别系统。经过大量的测试表明,系统稳定且手势的识别效率及准确率较高,具有一定的实用性。
关键词:图像处理;图像分割;BP神经网络;手势识别
第1章 绪论
1.1研究背景、目的及意义
手势识别是图像处理应用方向之一。其主要原理是通过各种各样的传感器设备对人的手势图像先进行采集。采集到手势图像后,在利用图像处理技术进行处理,最后在进行识别。手势识别应用的领域广泛,在安防、控制、游戏、办公等领域都有进行实际应用。比如在体感游戏当中,通过手势识别进行游戏交互,在软件控制当中,利用手势进行软件的各种操作。手势识别的出现替代了原有的复杂人机交互操作,能够远距离快速准确实现信息传输。目前手势识别发展迅速,但是仍然存在很多的瓶颈,比如在复杂的背景中如何快速分割出手势,背景中有与手势相似的区域如何进行区分,人的手型及肤色也会导致手特征变化,对于变化的特征该如何提高算法的鲁棒性。相信随着图像处理技术的不断进步,这些瓶颈都将一一突破,手势识别将会为人们的生活带来更大的便利性[2]。
1.2国内外研究现状
国外由于计算机视觉技术发展较快,对于手势识别的研究起步,很多学者在视觉识别手势方面做了研究,Huu Phat Nguyen等人利用手势图像的方向梯度直方图特征,将特征提取之后输入到CNN以及SVM进行特征的分类,将分类结果用于机器人的控制,包括通过手势控制机器人进行音量调节、动作执行等等[3];Mujahid Abdullah等人利用目前较为火热的深度学习模型YOLOv3进行了手势特征识别,该方式不需要传统图像的预处理、分割等步骤,直接利用深度学习模型提取预先训练好的手势目标,能够从复杂的背景中达到较好的识别效果[4];Win Kay Khaing等人利用手势图像的识别完成了聋哑人手语识别系统的开发,其利用手势特征,通过ANN人工神经网络进行训练,最后利用Matlab开发了GUI系统,系统能够通过摄像头进行手势图像捕捉,并自动翻译手势图像[5]。
国内的计算机技术以及图像处理技术研究相对较晚,且很多核心关键技术都掌握在老外手中,但是随着科研的大力投入以及各个公司的不懈努力,越来越多的优秀图像处理算法得到了应用。我国对于手势图像识别应用的公司大多数都是人工智能公司,其中以百度、商汤、科大讯飞、华为等大厂为代表,这些公司都有成熟的识别算法,并且相关的应用落地较多,方案较为成熟。传统的算法都是离线DLL调用,目前应用较多的方式是这些公司开发自己的识别接口,其他公司通过购买付费的形式进行API接口调用,这种方式可以让开发应用人员不用耗费大量的精力到图像算法当中,而是集中注意力到工程软件应用开发当中,极大时间上提高了开发效率,也一定程度上提高了系统应用的稳定性和准确度,是目前主流的图像处理应用开发方式之一。相信随着科技的进步,越来越多基于手势识别的应用将会得到落地,并且更加的智能化、集成化[6]。
1.3论文的组织结构
本文主要研究了基于图像处理的手势识别算法,并通过 MATLAB 软件开发出了相关的图像处理系统,系统能够将视频分解成一帧帧图像,并读取图像进行识别手势并识别训练模型对手势定义的数字。系统除了可以将视频分解成帧图像进行识别,也可以直接输入图像进行处理和识别。在本次设计的论述中,对本文做了以下的安排:
第一部分的绪论部分主要先对背景进行介绍。从当前的图像处理技术背景下进行简单的介绍,然后在以技术背景、社会背景下阐述本次课题研究的目的和意义进行探讨。同时以当前国内外在手势识别技术、图像处理方面的研究方向、当前的研究现状以及对技术未来的发展趋势进行分析。
第二部分主要是对本次课题的核心技术进行介绍。即是对手势图像的图像预处理算法。在图像预处理中包含了对图像进行去操处理和空间转换处理。
第三部分主要介绍了在图像处理中,所用到的方法。对图像分割技术和图像分割的过程,利用阈值法对手势图像进行分割;
第四部分主要介绍本次课题研究和实现所用的技术进行介绍。介绍在手势识别过程中,对手势图像的特征提取所使用的方法、手势识别所使用的算法。在本次可以研究和实现中,对于手势识别和图像的特征识别是基于HU不变矩阵作为特征,采用BP神经网络进行训练和识别;
第五部分主要介绍了手势识别系统,并对系统的界面及功能进行展示。
第2章 系统可行性分析
图像特征主要有图像的颜色特征、纹理特征、形状特征和空间特征。传统的特征提取方法分为两个类别,分别是基于结构形态的特征提取与基于几何分布的特征提取。
2.1 Canny算子
Canny算子是效果较好的一种图像边缘检测算子。它分为两个阶段,首先对图像进行高斯平滑,然后对平滑之后的图像进行Roberts算子运算。
Canny边缘检测算子主要包括以下四个步骤。
(1)用高斯滤波器对图像进行平滑处理。
(2)用一阶偏导的有限差分来计算梯度的幅值和方向。
(3)对梯度的幅值进行非极大值抑制处理。
(4)用双阈值算法检测和连接图像的边缘
2.2 傅里叶特征算子法
傅里叶描述子是一种图像特征,具体来说,是一个用来描述轮廓的特征参数。其基本思想是用物体边界信息的傅里叶变换作为形状特征,将轮廓特征从空间域变换到频域内,提取频域信息作为图像的特征向量。即用一个向量代表一个轮廓,将轮廓数字化,从而能更好地区分不同的轮廓,进而达到识别物体的目的。
2.3 不变矩
图像的几何不变矩矩特征主要表征了图像区域的几何特征,又称为几何矩, 由于其具有旋转、平移、尺度等特性的不变特征,所以又称其为不变矩。在图像处理中,几何不变矩可以作为一个重要的特征来表示物体,可以据此特征来对图像进行分类等操作。
2.3.1 HU矩
几何矩是由Hu(Visual pattern recognition by moment invariants)在1962年提出的,图像f(x,y)的(p+q)阶几何矩定义为 Mpq =∫∫(x^p)*(y^q)f(x,y)dxdy(p,q = 0,1,……∞)
矩在统计学中被用来反映随机变量的分布情况,推广到力学中,它被用作刻画空间物体的质量分布。同样的道理,如果我们将图像的灰度值看作是一个二维或三维的密度分布函数,那么矩方法即可用于图像分析领域并用作图像特征的提取。最常用的,物体的零阶矩表示了图像的“质量”:
Moo= ∫∫f(x,y )dxdy
一阶矩(M01,M10)用于确定图像质心( Xc,Yc):
Xc = M10/M00;Yc = M01/M00;
若将坐标原点移至 Xc和 Yc处,就得到了对于图像位移不变的中心矩。如Upq =∫∫[(x-Xc)^p]*[(y-Yc)^q]f(x,y)dxdy。
Hu在文中提出了7个几何矩的不变量,这些不变量满足于图像平移、伸缩和旋转不变。如果定义:
Zpq=Upq/(U20 + U02)^(p+q+2),
Hu 的7种矩为:
H1=Z20+Z02;H1=(Z20+Z02)^2+4Z11^2;......
矩是描述图像特征的算子,它在模式识别与图像分析领域中有重要的应用.迄今为止,常见的矩描述子可以分为以下几种:几何矩、正交矩、复数矩和旋转矩.其中几何矩提出的时间最早且形式简单,对它的研究最为充分。几何矩对简单图像有一定的描述能力,他虽然在区分度上不如其他三种矩,但与其他几种算子比较起来,他极其的简单,一般只需用一个数字就可表达。所以,一般我们是用来做大粒度的区分,用来过滤显然不相关的文档。
比如在图形库中,可能有100万幅图,也许只有200幅图是我们想要的。使用一维的几何矩的话,就可以对几何矩进行排序,建立索引,然后选出与目标图的几何矩最近的2000幅图作比较就好了。而对于其他的矩来说,由于一般是多维的关系,一般不好排序,只能顺序查找,自然速度有巨大的差别.所以。虽然几何矩不太能选出最像的,但可以快速排除不像的,提高搜索效率。
几种简单的几何矩:
令平面上点坐标为P(x,y),重心为C(x!,y!),
二阶行距:rowMoment = [∑(x- x!)*(x- x!)]/A
二阶列距:colMoment = [∑(y- y!)*(y- y!)]/A
A为点的个数。
由以上两个信息可以算出图形的圆度:circleDisgree = rowMoment /colMoment .如果图形的circleDisgree 越小于1,则它越趋向于长轴为y方向的椭圆。如果图形的circleDisgree 越大于1,则它越趋向于长轴为x方向的椭圆.如果图形的circleDisgree 越接近于1,则它越趋向于圆。
所以我们可以使用圆度这种几何矩,对其进行索引,实现快速过滤。
2.3.2 ernike矩
在模式识别中,一个重要的问题是对目标的方向性变化也能进行识别。Zernike 矩是一组正交矩,具有旋转不变性的特性,即旋转目标并不改变其模值。由于Zernike 矩可以构造任意高阶矩,所以Zernike 矩的识别效果优于其他方法。
Zernike 提出了一组多项式{ V nm ( x , y) } 。这组多项式在单位圆{ x2 + y2 ≤1} 内是正交的,具有如下形式:
V nm ( x , y) = V nm (ρ,θ) = Rnm (ρ) exp ( jmθ) ,并且满足
∫∫ x^2+y^2 <= 1 [( V nm ( x , y) 的共轭]* V pq ( x , y) d x dy.
= [pi/(n+1)]*δnpδmq .
if(a==b)
δab = 1
else
δab = 0,
n 表示正整数或是0;m是正整数或是负整数它表示满足m的绝对值<=n 而且n-m的绝对值是偶数这两个条件;ρ 表示原点到象素(x,y)的向量的距离;θ 表示向量ρ 跟x 轴之间的夹角(逆时针方向).
对于一幅数字图象,积分用求和代替,即A nm =∑x∑y f(x,y) *[( V nm (ρ,θ) 的共轭],x^2+y^2 <=1
实际计算一幅给定图象的Zernike 矩时,必须将图象的重心移到坐标圆点,将图象象素点映射到单位圆内。由以上可知,使[ V nm (ρ,θ) 的共轭]可提取图象的特征,低频特性由n 值小的[( V nm (ρ,θ) 的共轭]来提取,高频特性由n 值大的来提取。Zernike 矩可以任意构造高价矩, 而高阶矩包含更多的图象信息, 所以Zernike 矩识别效果更好。,Zernike 矩仅仅具有相位的移动。
它的模值保持不变。所以可以将| A nm | 作为目标的旋转不变性特征。因为| A nm | =| A n , - m | ,所以只需计算m ≥0 的情况。
根据归一化之后的中心矩,对旋转、平移、尺度等都不敏感的七个不变矩。下面我们对同一幅图像,分别进行尺度缩小为原始图像的一半、逆时针旋转5度操作以及垂直镜像变换的操作,分别求出原始图像及变换后的各个图像的七阶矩。可以得出,这七阶矩的值对于尺度、旋转及镜像变换不敏感。
2.4 纹理特征提取
常用的提取纹理特征的方法有:灰度差分统计法、灰度共生矩阵、灰度-梯度共生矩阵。
(1)灰度差分统计法
灰度差分统计法的基本原理就是描述纹理图像各个像素及相邻像素值之间的灰度变化情况,设g(x,y)为图像中(x,y)位置的像素值,Ox、Δy分别是x、y方向上的偏移量,则(x,v)与其微小偏移点(x+Δx,v+Δv)的灰度差值为:*
gΔ(x,y) = g(x,y)-g(+Δx,y+Δy)+
ga(x,y)称为灰度差分,设灰度差分所有可能的取值有m级,另(x,y)遍历整个图像,统计出gΔ(x,y)所有取值的个数,由此可以得到gΔ(x,y)的直方图,进而田直方图得到每一个灰度差分值的概率为p(i)。可以定义以下物理量:
(2)灰度共生矩阵
设Pxy为灰度共生矩阵,灰度值的级数为L,利用灰度共生矩阵可以定义以下物理量:
能量:也称为角二阶距,即灰度共生矩阵元素值的平方和,反映了图像灰度分布均匀程度和纹理粗细度,如果共生矩阵的所有值都相等,则能量较小;否则,能量值较大。
(3)灰度-梯度共生矩阵
灰度-梯度共生矩阵纹理分析方法(G-GLCM)就是用灰度和梯度的综合信息提取纹理特征,它考虑了像素灰度与边缘梯度的联合统计分布,其实现过程与灰度共生矩阵相似,设f(xv)为图像中(x.v)位置的像素值,灰度值的级数为L,用梯度算子提取原始图像的梯度图像g(x,y),把g(xy)进行灰度离散化,设灰度级的数目为L.,新的灰度归一化为:
灰度-梯度共生矩阵定义:
H={(x,y)lf(xy)=iG(xy)=j}(然后归一化处理)
2.5 总结
在上述的图像特征提取中,各方案都有各自优点,本次课题研究的手势识别采用HU矩的方法进行手势特征的特征提取。通过HU矩进对手势的特征进行提取、经过处理实现对手势的识别。
第3章 图像的预处理
在图像识别的过程中,要达到预期的识别效果,处理需要对图形进行处理。图像预处理技术在图像处理中最常见的方法。图像预处理技术也是在图像v处理和识别中的第一个必要环节。对于图像预处理技术,其就是通过一系列的图像数据操作,比如灰度化,滤波等技术,对图像的数据进行筛选、校正、增强等等。摄像头拍摄采集的原始图像数据中,除了需要的数据之外,图像中还存在了不需要的干扰信息。这些冗余的信息,需要针对不同的需求和场景,对图像中的多余的干扰信息进行去除。这些冗余数据的存在会干扰后续的图像处理任务。因此需要通过一系列的预处理算法将冗余信息去除,只保留有用信息。本文选择对图像进行色彩空间转换以及滤波去噪处理。
3.1图像色彩空间转换
图像识别算法首先需要进行图像数据的采集,图像都是通过传感器采集而来,大部分的传感器图像编码方式是基于RGB色彩空间,即是由R,G,B通道组成图像,在每个通道中,其灰度值的范围在0-255,将三个通道的值组合起来组成一幅彩色图像。在彩色模型中,最常用的是R、G、B组成的模型。也是最广泛以及最符合人眼感官视觉的色彩模型。RGB色彩模型适用于大多数的图像处理任务,但是也有部分图像处理任务需要将色彩模型进行转换。部分色彩图像分割任务在RGB色彩空间很难进行分割,通常需要将图像转换至其他色彩空间处理[7]。
在本文中,对所需要识别的手势图像转成HSV空间后,再对图像进行处理。对于HSV空间中,H表示图像的色调、S是图像的饱和度、V是图像的曝光度也是图像的明度。基于RGB空间采集的图像很容易收到光照的影响,而在RGB色彩空间,三色模型的中值都是图像的灰度值,且灰度值受环境的光线、图像的光照的影响,拍摄场景亮度较大时,三个通道灰度值都较大,色彩容易失真,丢失其原本色彩属性。而在HSV空间中,目标物体的色彩不会随着光照的改变而改变,物体原本是什么颜色,拍摄出来之后,HSV空间中仍然呈现原始颜色,对于复杂背景及光照环境变化的图像处理任务,HSV模型更优于RGB色彩模型。
本文将手势图像从RGB空间转换至HSV空间,效果如图2-1色彩空间转换前和图3-2色彩空间转换后所示:
图 3-1 色彩空间转换前
图 3-2 色彩空间转换后
3.2图像去噪
摄像头拍摄采集的原始图像数据中,除了需要的数据之外,图像中还存在了不需要的干扰信息。这些冗余的信息,需要针对不同的需求和场景,对图像中的多余的干扰信息进行去除。而最常用的方法是图像去噪处理。通过图像去噪可以将图像中不需要的干扰信息去除。
在图像的传输过程中,图像要经过一系列的编码、压缩过程,也会产生大量的噪声;在图像保存过程中,图像的格式转换,图像尺寸的缩放都会对图像产生影响,造成图像噪声增多,图像质量下降。噪声的存在会降低图像分割精度以及图像识别的准确度,冗余的信息也会提高算法运算的时间,对于实际工程应用造成一定的影响。图像去噪算法可以将图像中的冗余噪声信息去除掉,提高算法的处理准确性,有效地提升程序运行速度,图像去噪过程也会保护目标图像的边缘以及主体部分,在保留有效信息的同时去除冗余信息。
在本次可以研究中,系统设计和实现采用的是以中值滤波来对图像中的冗余信息进行过滤。中值滤波法是图像去噪的方法之一。选择中值滤波方法的原因是,中值滤波法对于椒盐噪声处理,中值滤波法的去噪效率最高。且去噪处理的效果也是十分的明显。
中值滤波首先需要选择一个合适的滤波窗口,滤波窗口的形状以及大小决定了中值滤波的性能和效果,要想取得理想的中值滤波效果,窗口需要根据图像像素大小以及噪声特性进行合理选择。然后选择窗口移动步长以及移动方向,可以对特定方向的图像进行去噪处理,移动步长越短,去噪的效果越细腻,但是耗费的时间越久。选择好窗口之后进行图像的去噪处理,根据移动的步长在图像上移动的滤波窗口来计算滤波窗口中所有像素的值,并对像素值进行从大到小的顺序进行排序,对窗口中排列好的像素值进行中值运算,得到的中值将替代窗口的中心点的像素灰度值。然后依次进行,将图像中所有目标像素点进行循环处理,得到最终的去噪图像。由于目标物体的像素灰度值都是平稳过渡的,而噪声像素点的灰度值通常比周围的灰度值相差很大,通过中值替换操作,可以保证原始目标图像的像素点灰度值变动很小,而噪声点灰度值更加接近目标灰度值,从而达到去除噪声的目的[8]。
本文针对手势图像选择中值滤波进行去噪处理。滤波公式如下:
滤波去噪效果如下所示:
图 3-3 中值滤波去噪图像
第4章 图像的分割
4.1图像灰度阈值分割
图像分割就是将图像的部分内容从原始图像中分离出来形成单独的新图像,分割的对象称为前景目标,其他图像部分成为背景区域,图像分割通常都是根据前景与背景特征之间的差值区分实现。图像分割的方法有很多,常用的有以下三种,第一种是基于颜色的图像分割,根据颜色特征的不同设定相应的值,将不同图像部分区分开来。第二种是基于边缘检测的图像分割,根据边缘检测结果以及梯度变化方向对手势图像进行分割。第三中是基于灰度阈值的图像分割方法,该方法是利用图像内容的灰度值的不同进行区分。在本文中,选择的是第三中图像分割方法,即基于灰度阈值的图像分割方法来对手势识别系统的图像处理进行图像分割。
灰度阈值分割方法的公式如下:
在公式4.1中,f表示待分割的图像,g表示分割之后的图像,T表示灰度的阈值,公式表示对图像进行像素遍历,当某一个像素点的灰度值大于T的时候,新的目标图像相同像素点位置像素值设置为1,反之则设置为0,待分割图像为灰度图像,最终提取到的图像是二值化图像,二值化图像中没有了色彩、灰度信息,但是原始目标的形状、纹理信息仍然存在,目标分类识别、缺陷检测仍然有效,且运算效率更高[9]。
采用阈值法对图像进行分割处理,在H空间阈值选择中,将H阈值选择0.09,S选择0.15,分割效果如下:
图 4-1 图像固定阈值分割
4.3数学形态学处理
手势图像在阈值分割之后,轮廓以及内部的图像部分并不是很精确,需要通过形态学处理进一步的细化。对于形态学处理时,需要选择图像的结构元素,而所构成的元素的大小和形状并不是固定的,说根据实际的需要,选择处理图像的像素大小、孔洞、毛刺的像素大小进行合理选择,结构元素过大会导致图像过处理,过小则达不到图像处理效果。
4.3.1图像的腐蚀
数学形态学腐蚀操作主要用于目标图像轮廓收缩平滑,目标图像之间的连接部分断裂开,图像的毛刺消除以及图像的边界细化等等。腐蚀操作首先需要选择一个适合的结构元素,其形状和大小都需要根据图像来选择和调整,常用的结构元素形状有矩形、菱形、圆形。选择好结构元素之后,将结构元素从图像的左上方,按照一定的方向进行图像搜索,结构元素中心称之为锚点,当锚点移动到目标像素位置时,计算结构元素所覆盖像素点最小值,当最小值为0时,用0替换掉目标像素点位置,当最小值为1时,则原始图像不变。对所有目标像素点进行重复操作,最终得到腐蚀之后的图
像。
图像被结构元素S腐蚀的运算,用集合的方式表示为:
4.3.2图像的膨胀
数学形态学膨胀是腐蚀的反操作,两者的工作原理以及步骤基本相似,处理结构则完全相反。膨胀主要用于图像的边界扩张,图像的孔洞填充,图像断裂区域之间的连接,膨胀的效果会使得原始目标区域变大。形态学膨胀首先都需要进行结构元素的选择,同样需要根据图像进行合理选择。选择好结构元素之后按照约定的方向进行遍历,移动到目标像素点之后,计算覆盖区域内图像的像素最大值,如果像素最大值为1,则用最大值覆盖掉目标像素点像素,挨个遍历图像,完成图像的膨胀操作[10]。
图像 F 被结构元素 S 膨胀的运算用集合的方式表示为:
对手势图像进行形态学操作,处理效果如图 3-2 所示,从结果中可以看出,手势图像的边界更加光滑,毛刺明显减小,沟壑得到了填充,同时指甲部分的孔洞也被填补,整个手势的分割更加的精细
图 4-2 形态学处理
4.4图像连通域分析
连通域分析指的是从图像中提取出像素值紧邻的区域,对区域进行形状、面积以及边界特征提取分析的一个过程。在连通域分析中,首先需要的是,寻找图像的连通域。图像的连通域分为两类,分别是4连通域和8连通域。4连通域值得是图像中某个像素点的上下左右4个连通域,8连通域则是在4连通域基础上增加左上、右上、左下、右下4个评估点。对于二值图像,目标像素点4连通域像素值都为1,则这5个点为一个连通域,目标像素点8连通域像素值都为1,则该区域为8连通域[10]。连通域示意图如下所示:
图4-3 连通域示意图
像素 A 与像素 B 如果位置处于邻接点,则该像素所属区域之间连通,遍历图像,就能得到很多的连通区域,每个连通的区域都属于单个手势图像,分割手势部分即分割出每个连通域即可。手势分割图像如下:
图 4-3 连通域提取图像
第5章 图像特征提取及识别
对图像进行识别最主要的是对图像的特征进行提取,本文采用手势图像的 HU 不变矩以及空间特征作为最终的提取特征。
5.1几何不变矩HU矩
矩的应用十分广泛,矩的概率来自物理学,主要用于表现物体空间分布,例如力矩,扭矩等,后来逐渐被用于其他学科,比如在统计学中,一阶矩表示期望,二阶矩表示方差等等。图像处理中,可以将图像看作是二维矩阵,矩则表示概率分布。几何不变矩-HU 矩是常用的图像特征之一,是非线性特征组合而成的,具有旋转平移伸缩不变性[11]。
假设图像用 f(x,y)表示,则 p+q 阶原点矩Mpq和中心矩μpq可分别用如下公式表示:
这些矩并不能很准确的表示图像的特征,在此基础上,可以构造出 7 个矩不变量用于图像特征描述。具体公式如下:
5.2空间几何特征
空间几何特征是最为直观的图像特征之一,常用于图像的分类、尺寸测量以及图像识别工作,相同目标图像的这些几何特征,都是相同或者近似的,根据几何特征可以准确对图像进行分类。本文选择图像的矩形度、圆形度、离心率作为几何特征,矩形度需要计算目标图像的长宽及面积,圆形度,圆形度需要计算目标图像的周长以及面积。
图 5-1 手势图像几何特征
从目标图像中可以看出,背景区域为黑色,像素值为0,目标部分为白色,像素值为1,对于目标图像的面积计算,即统计图像中白色像素点的个数,目标区域周长的计算,可以先寻找目标图像的边缘,计算边缘像素点的个数即可完成图像周长计算。目标图像的宽和高可以计算图像连通域最左侧点到最右侧点的距离,最下方点到最上方点之间的距离。矩形度通过(W1+W2)*(H1+H2)/S实现,圆形度通过周长平方与面积相除得到。离心率表示的是手势图像的形状,以 O 点作为圆心计算得到[12]。
5.3基于BP神经网络的手势识别方法
在本文所用的BP神经网络是人工神经网络的一种,在神经网络中,可以将网络划分为三次,分别是第一层的输入层、第二层的隐藏层和第三层的输出层。输入层通常是为了提取目标特征值,隐藏层中包含众多节点,隐藏层是BP神经网络最为重要的一层,节点数量根据实际的项目精度和复杂度进行选择,第三层为输出层,通常是分类的类别。BP神经网络的工作原理是将特征利用输入层进行特征输入,通过隐藏层进行训练,计算训练输出值与输出目标值之间的差值,如果不满足训练精度,则调整隐层的节点和权值,反馈之后再次训练,直到目标值与训练值达到目标精度为止[13]。
单层的神经网络图如下:
图 5-2 单层的神经网络图
图中的 P 是输入列变量,b 是相应偏移,a 是网络输出,f 是激活函数,W 是网络权值。当输出结果 a 与期望的结果相差大于设定的训练精度阈值时,此时调整训练的权值和偏移,调整之后重新训练,再次判断输出结果和期望精度,如果不满足再进行反复训练识别直到精度达到要求为止。
神经网络训练如图5-3所示:
图5-3 BP 神经网络训练结果
第6章 手势识别系统开发
6.1 GUI界面设计
本文选择Maltab进行系统开发,Matlab是图像处理的专业软件,其GUI界面功能能够为用于提供可视化界面开发,类似于C#的winform桌面,C++的QT桌面程序,GUI界面软件也是桌面应用系统,具有丰富的人机交互控件。常用的图像处理控件比如坐标轴控件,可以用来显示原始图像和处理结果图像;按钮控件,可以实现功能的点击与命令的下发;文本框控件可以实现界面信息提示以及文字信息展示;下拉框控件可以实现内容的隐藏与展示,节省界面空间;表格控件可以清晰地展示图像处理的数据结果,便于对比。丰富的控件极大程度上提高了软件系统的自动化水准与人机交互水准,使得软件更加符合工程实际应用的需要。
具体的系统开发过程如下:
新建空白GUI界面,此时得到两个文件,一个是.fig类型的文件,主要用于界面的编辑,信息的展示,另一个是.m控件,.m控件主要用于系统的程序编程,是系统的代码文件,新建界面如下:
图 6-1 新建 GUIDE 文件选择界面
点击新建GUI界面按钮之后,程序会自动跳转至GUI编辑界面,编辑界面分为4块,第一块是左侧的控件栏,控件栏里面有很多的控件,需要根据程序开发的需要选择合适的控件;第二块是顶部的菜单栏,菜单栏主要是文件的操作以及界面布局工具,用于调整界面效果;第三块是右侧的界面编辑区域,主要用于界面的编辑;第四块是下方的信息显示界面,用于显示当前点的位置和坐标。GUIDE 编辑界面如下:
图6-2 GUI 编辑界面
新建空白GUI之后,开始进行控件的放置与界面布局美化,在空白处放入坐标轴,用于显示图像,放入按钮用于实现功能,放入文本框用于信息提示以及文字结果的显示,效果如下:
图 6-3 界面设计
鼠标双击控件,即可进入控件的属性编辑界面,属性编辑界面中可以对控件的名称、显示内容、字体大小、背景颜色等信息进行编辑,效果如下:
图 6-4 控件参数编辑界面
右键点击按钮控件,选择callback,界面会自动跳转至后台程序编辑界面,在相应的callback控件下输入相关的代码,即可完成控件的点击事件绑定。
图6-5 函数编辑界面
对各种函数进行编辑后,即可运行程序,最终的程序运行界面如下:
图 6-6 运行效果图
6.2运行结果及分析
在对程序进行调试与修改后,运行程序并且输入图像,进行手势识别,效果如下:
图 6-7 运行结果一
图 6-8 运行结果二
图6-9 运行结果三
视频分解功能中,将带有手势的视频加载入后,点击开始识别,在视频帧数分解过程中,点击识别可对当前分解出的帧图像进行识别。在分解结束后,系统会将视频中的含手势的图片进行保存。视频分解效果如下:
图 6-10 视频分解效果
运行程序,可以看出程序能够读取不同的图像进行显示,点击识别按钮,可以显示图像处理的每一个过程,提取手势的特征并调用神经网络进行识别,最终进行检测结果的展示。通过大量的图像测试,手势识别的准确率较高,并且系统的人机交互功能较好,运行效率较高,符合工程应用的实际需求。
第7章 总结与展望
本课题主要是对手势图像进行分割、特征提取和识别,算法方面采用了图像预处理、图像分割以及特征提取识别算法,系统界面方面采用了Matlab进行GUI界面开发,经过大量图像测试,系统能够读取不同图像进行手势识别。具体的工作内容如下:
1、对图像的构成以及像素相关知识进行了学习,了解了图像的采集、压缩、传输、保存等过程,学习了图像基本操作相关知识。
2、研究了图像预处理过程,本课题主要是利用色彩空间转换方式将原始图像转换至HSV空间,利用中值滤波进行去噪处理;
3、研究了手势图像分割算法,利用不同手势图像在HSV空间具有相同灰度值的特点,利用灰度阈值法实现了手势图像分割,然后通过形态学处理对手势分割效果进行细化,最后基于连通域完成了手势图像的分割定位;
4、研究了手势图像识别算法,程序提取了手势图像的几何空间特征和HU不变矩特征作为BP神经网络的输入,通过参数的调整实现了BP神经网络的训练以及手势图像的分类识别;
5、学习了 Maltab系统界面开发方法,将手势识别算法嵌入至GUI界面当中,实现了良好的人机交互效果,并进行了大量的图像测试。
研究取得上述成果同时,也存在以下不足:
1、手势识别算法的特征值提取不够,只提取了3种空间几何特征,实际应用过程中由于系统的复杂性,3种特征的识别鲁棒性可能会比较低,后续需要根据实际需要提取更多的特征增强系统的稳定性。
2、缺乏大量其他场景的手势图像进行测试,本程序选择的都是单一背景的手势图像进行分割识别,后续需要选择复杂的场景,对手势进行分割识别,验证系统的准确率。
参考文献
[1]任雅祥.基于手势识别的人机交互发展研究[J].计算机工程与设计,2006(07):1201-1204.
[2]肖志勇,秦华标.基于视线跟踪和手势识别的人机交互[J].计算机工程, 2009, 35(015):198-200.
[3] Huu Phat Nguyen and Phung Ngoc Tan and Fortuna L.. Hand Gesture Recognition Algorithm Using SVM and HOG Model for Control of Robotic System[J]. Journal of Robotics, 2021, 2021
[4] Mujahid Abdullah et al. Real-Time Hand Gesture Recognition Based on Deep Learning YOLOv3 Model[J]. Applied Sciences, 2021, 11(9) : 4164-4164.
[5] Win Kay Khaing et al. Performance Analysis on Hand Gesture Recognition Using Artificial Neural Network[J]. Data Research, 2020, 4(5)
[6]郭紫嫣,韩慧妍,何黎刚,韩燮.基于改进的YOLOV4的手势识别算法及其应用[J].中北大学学报(自然科学版),2021,42(03):223-231.
[7]李昌锋,郭生挺,陈文婷.基于静态手势识别的视力检测系统设计[J].科技创新与应用,2021,11(13):83-86.
[8]唐亚若.基于RGB视频流的实时动态手势识别的研究[D].北京邮电大学,2021.DOI:10.26969/d.cnki.gbydu.2021.001608.
[9]王丽红.复杂场景下交通指挥手势识别算法研究与应用[D].长安大学,2020.DOI:10.26976/d.cnki.gchau.2020.001436.
[10]刘波.基于视觉的手势识别与交互研究[D].哈尔滨工程大学,2019.DOI:10.27060/d.cnki.ghbcu.2019.000824.
[11]穆宝良,王利.计算机视觉下的实时手势识别技术及其应用[J].科学技术创新,2019(35):45-46.
[12]涂心琪,兰红.基于Gabor特征的遗传算法实现静态手势识别[J].通信技术,2019,52(10):2395-2400.
[13]孙潇艳.自然场景下手势识别系统的研究与实现[D].黑龙江大学,2020.DOI:10.27123/d.cnki.ghlju.2020.000459.