随着计算机技术等在现实生活中得到广泛应用,人机交互(Human Computer Interaction,HCI)已成为人们生活中的重要组成部分,其中人脸识别[1]、手势识别[2]、指纹识别[3]、虹膜识别[4]等新的交互方式成为研究热点。手势作为人们常用的肢体语言,具有信息量大、形象和直观的特点,成为一种非常方便的基于视觉的人机交互方式[5]。
2010年微软推出了Kinect体感摄像机,它主要由RGB彩色摄像头、红外摄像头和麦克风阵列组成,可以同时获取彩色和深度图像,并且该摄像机与其他深度摄像机相比,价格更低廉,使用更方便,拍摄分辨率最大可达1920×1080。这些特性让Kinect成为新一代数字图像识别领域获取图像的理想工具,人们也开始更多地关注和研究基于深度图像的模式识别。目前,已经有很多基于深度图像的识别方法,其侧重的图像特征也各不相同,如在视觉特征方面,Li等[6]利用深度图像中手势的轮廓以及手指间的夹角信息等实现了对9种手势的识别;Silanon等[7]通过获取手势的运动轨迹来识别字母;曹雏清等[8]根据手指的数目以及掌心到指尖的角度信息进行识别;王松林等[9]通过深度和骨骼信息计算K曲率来检测手指指尖,识别率达到了93%,但是只实现了对简单手势1~5的识别。在变换系数特征方面,Huang等[10]采用Gabor滤波、主成分分析(Principal Component Analysis,PCA)和支持向量机(Support Vector Machine,SVM)实现了在复杂背景下的简单手势识别;文献[11]运用稀疏编码学习的方法同时对彩色图像和深度图像识别,通过加权方式得到最终的识别结果,但是该方法过程复杂、计算量太大。在统计特征方面,文献[12]根据提取不同手势的尺度不变特征转换(Scale Invariant Feature Transform,SIFT)特征对手势进行分类,文献[13]通过提取梯度方向直方图(Histogram of Oriented Gradient,HOG)和局部二值模式(Local Binary Pattern,LBP)[14]特征对静态手势进行识别。虽然上述方法具有可行性,手势识别率也比较理想,但是手势种类相对较少,手势间外轮廓差别较大,根据一些简单的特征如手指个数、手势轮廓等就可以对其进行有效识别。
目前,现有的手势识别方法在手势外轮廓相似的复杂情形下的识别率还不够理想。为了克服这一缺陷,通过观察发现,相似手势的区别主要在于手势中各个手指的位置不同以及弯曲程度有所差异。如何对这些重要特征进行有效准确的提取是本文研究的重点。相对于传统的基于二维彩色图像提取的特征如局部颜色纹理变化特征和SIFT特征等,基于深度图像提取的特征可以从空间描述手势特有的结构信息,并且可以忽略环境中光照变化对手势识别的影响,这对侧重于形状、手指个数和手指位置等特征信息的手势识别具有非常重要的意义。Kinect提供的深度图像包含了手势丰富的三维信息,为了更充分地利用这一优势。不同于前面所述的特征提取方法,本文将曲率作为识别外轮廓相似手势的重要特征。在曲面论中,高斯曲率作为最重要的几何量,可以直观地反映手势的形状结构和几何特征以及曲面的变化情况,具有良好的位移和旋转不变性等优点,其绝对值反映了曲面的弯曲程度和变化规律,这对于挖掘手势内部结构信息具有很大的帮助。鉴于此,本文提出了改进的曲率LBP特征提取算法,通过对手势曲面的变化信息进行特征提取来提高算法的准确性和鲁棒性。
1 相关工作LBP[14]因具有非常好的局部纹理描述特性、编码灵活、良好的多尺度特性和旋转不变性,对光照和周围环境的变化具有一定的鲁棒性,在人脸识别和手势识别等模式识别领域得到了广泛应用并取得了良好的效果。
标准的LBP算子是在一个中心像素点周围3×3的窗口内比较中心像素与周围像素的大小,并将大于或等于中心像素的位置标记为1,否则标记为0,然后按照同一方向进行二值化编码,最后将该八位二进制数按位乘以相应的权值转化为十进制数(见图 1),该数值就代表了该点的局部纹理特征。
LBP加权计算过程定义为:
$LBP\left( {i,{\rm{ }}j} \right) = \sum\limits_{p = 0}^7 {{2^p}s({g_p} - {g_c})} $ | (1) |
$s\left( x \right) = {\rm{ }}\left\{ \begin{array}{l} 1 |x| > 0\\ 0 \end{array} \right.$ | (2) |
其中:gc为中心像素(i,j)的灰度值;gp为邻域像素值。
原始的LBP提出后,研究人员对其不断进行优化和改进,以提高对局部纹理特征描述的准确性,其中一个应用非常广泛且非常重要的变体是均匀模式。均匀模式是指对原来的256维数据重新分类,统计一个二进制序列循环左移一位后的跳变次数,即从0到1或者从1到0的跳变不超过两次的模式为均匀模式,其他模式称为非均匀模式。例如10000000循环左移移位后为00000001,跳变次数为1,所以它是均匀模式;10010000循环左移移位后变为00100001,跳变次数为3,所以它不是一个均匀模式。八位二进制数中共有58种变化属于均匀模式,加上非均匀模式共59种,其中均匀模式占到LBP模式的85%~90%。模式数量从原来的2p减少为p(p-1)+2种,对于3×3窗口而言,均匀模式将特征维数从256维降到59维,特征维数明显减少,减少了高频噪声带来的影响,且具有良好的旋转不变性和稳定性。
随着深度图像在模式识别中发挥的作用越来越大,更多的学者开始关注和研究适用于深度图像的 LBP 算法。文献[15]针对基于原始灰度图像的传统LBP只考虑了差值的符号而忽略了差值大小的缺陷进行了改进,首次提出3D局部二值模式(Three Dimensional LBP,3DLBP),将中心像素与局部像素差值的大小视为重要的信息源。通过统计发现,超过93%的点之间的深度差的绝对值小于7,所以该方法将不大于7的绝对值$|depth|$用三位二进制数(a1,a2,a3)表示,大于7 的绝对值depth都定为7,加上原来的符号位a4,然后对每一层进行均匀LBP编码,最后每个像素点处可形成四个LBP编码值(p1,p2,p3,p4),具体过程如下:
$|depth| = \left\{ \begin{array}{l} |depth|, |depth| \le 7\\ 7, 其他 \end{array} \right.$ | (3) |
$|depth| = {a_1} \times {2^2} + {a_2} \times {2^1} + {a_3} \times {2^0}$ | (4) |
${a_4} = {\rm{ }}\left\{ \begin{array}{l} 1 |depth| \ge 0\\ 0 其他 \end{array} \right.$ | (5) |
但是该方法过于依赖中心像素与周围像素之间的深度差,导致编码稳定性较差;同时特征向量维度太大,对后续分类识别造成极大的困难。
文献[16]针对3DLBP的缺点,提出了基于不同视觉方向的梯度LBP。传统的LBP是从8个方向同时与中心像素作比较,如图 2所示,该方法则从8个方向分别计算深度差。首先使用式(6)将深度差归一化到区间(-8,7)内,与3DLBP不同,这里使用的是深度差depth的真实值。
$depth = \max \left( {\min \left( {{g_p} - {g_c},7,} \right) - 8} \right)$ | (6) |
其中:gc是中心像素;gp为邻域像素值。然后从8个方向计算图像的有导向深度差,得到8个有导向的深度差图像,如图 3所示,因为8个方向是两两对称的,所以主要是在四个方向上计算深度差并对其进行均匀LBP编码。
该方法的优点是从多个角度反映了对三维表面深度差的变化规律,缺点是破坏了图像的整体结构,影响了算法性能的提高。
针对以上算法的缺点,同时更好地发挥深度图像的优势,不再是简单地从点的层次考虑图像特征,本文算法转向从曲面的角度考虑整幅图像的特征,增强对手势三维曲面变化的描述。鉴于以上考虑,本文提出了曲率LBP算法,即将曲率作为区分手势的重要信息源。该算法的具体过程是:首先对深度图像去噪并进行手势分割;接下来通过坐标转换将深度图像转换为三维点云图像;然后运用移动最小二乘法对其进行曲面拟合,计算得到手势图像的高斯曲率;最后运用改进的均匀模式LBP算子对曲率数据进行特征提取形成整幅图像的特征向量。本文实验选用了美国手语(American Sign Language,ASL) Kinect手势数据库中前10个字母作为图像来源,其彩色图像和深度图像如图 4所示。
本文算法的创新之处在于将高斯曲率作为手势特征提取重要的识别信息源,增强了识别外轮廓相似手势的能力,主要流程如图 5所示。
预处理阶段主要包括图像去噪、手势分割和坐标转换三部分。深度图像往往含有空洞等噪声,产生这些噪声的原因主要有测量时环境光照的变化,某些物体材质的红外光反射特性、手的抖动等,这些都会造成深度数据不稳定,导致识别率大幅下降。本文首先采用高斯滤波来对深度图像滤波,从而减少和抑制噪声,减少对后续曲面拟合的影响。
Kinect深度图像是距离图像,可以将其归一化为灰度图像进行显示如图 6(a),并生成原始深度图像的距离直方图如图 6(b)。通过直方图可以看出,手势通常在距离深度摄像头较近的位置,手势和背景的深度值处在不同的区域,因此深度图像分割常用的方法是利用深度阈值实现手势分割,去除图像中的背景信息。式(7)描述了深度图像分割的过程:
$Depth\left( {i,{\rm{ }}j} \right) = {\rm{ }}\left\{ \begin{array}{l} Depth\left( {i,{\rm{ }}j} \right), Depth\left( {i,{\rm{ }}j} \right) \le thr\\ 0, 其他 \end{array} \right.$ | (7) |
其中:Depth(i,j)为在(i,j)点处的深度值(单位为mm);thr为分割手势时设定的阈值,此时阈值可设置为1000。为了更好地实现自动分割,本文采用了改进的基于图像积分图像的Otsu分割方法[17-18],同样得到了很好分割效果,结果如图 6(c)所示。
深度图像提供了手势的深度距离信息,而该深度值是一个相对距离数据,并不是实际距离,为了获得点云数据,需要将图像从深度图像坐标系转换到世界坐标系。假设Kinect深度图像中某像素点P的坐标为(i,j),其深度值为draw,则根据式(8)可求得实际深度值d(单位为cm),然后通过式(9)就可以求得该点在3D空间的坐标(x,y,z)。
$d = K\tan (H{d_{{\rm{raw}}}} + L) - O$ | (8) |
$\left\{ \begin{array}{l} x = \left( {i - \frac{w}{2}} \right) \times \left( {d - 10} \right) \times s \times \frac{w}{h}\\ y = \left( {j - \frac{w}{2}} \right) \times \left( {d - 10} \right) \times s\\ z = d \end{array} \right.$ | (9) |
其中:H=3.51×10-4 rad,K=12.36,L=1.18,O=3.69,s=0.0021,w和h分别为图像的宽和高。
通过上述坐标转换,得到了深度图像的点云数据,部分字母点云图像如图 7所示。
现有的计算深度图像曲率的方法主要分为以下两类,传统的方法是利用微分几何公式直接计算曲率,该方法误差较大。现在常用的计算曲率的方法是移动最小二乘法曲面拟合,该方法能有效地描述物体表面信息,更加准确地计算高斯曲率等。曲面拟合的基函数往往是单项式,只要基函数满足线性无关的条件。本文采用的是移动最小二乘法,使用式(10):
$u\left( x \right) = \sum\limits_{i = 1}^n {{p_i}\left( x \right){a_i}\left( x \right)} = {\rm{ }}{p^T}_i\left( x \right){a_i}\left( x \right){p_i}\left( x \right)$ | (10) |
其中: pi(x)为基函数;n为基函数所含单项式的个数;ai(x)为对应多项式的系数向量。
接下来的工作是求解系数向量ai(x)。定义加权的拟合误差能量函数式(11):
$E\left( x \right) = \sum\limits_{i = 1}^n {w(x - {x_i})} {[{p^T}_i\left( x \right){a_i}\left( x \right) - {u_i}]^2}$ | (11) |
其中:w(x-xi)为能量函数当对深度图像进行曲面拟合后,为了更准确地描述手势三维表面,本文选取了高斯曲率作为手势的重要特征。加权函数本文采用的是高斯型,通过求解其驻点取得唯一的最小值可以求得系数向量。高斯曲率的绝对值比较准确地反映了手势中手指的位置以及弯曲情况,其计算公式为式(12):
$K = \frac{{{u_{xx}}{u_{yy}} - {u^2}_{xy}}}{{{{(1 + {u^2}_x + {u^2}_y)}^2}}}$ | (12) |
其中:ux、uy为一阶微分算子;uxx、uxy、uyy为二阶微分算子。
考虑到手势是一个比较复杂的曲面,很难对手势表面进行整体的曲面拟合,同时为了减小拟合误差,尽量准确地描述手势表面的凹凸特征,在曲面拟合过程中采用局部拟合的方法。取每个中心像素周围5×5的区域,每次对一个区域拟合完后,只计算中心像素位置的曲率,这样可以尽可能保证计算曲率时的准确性。因为在非手势区域拟合没有意义,本文只在手势位置进行曲面拟合,以减少计算量。
2.3 改进的曲率LBP编码将上一步求得的高斯曲率归一化到0~255灰度图像进行显示,如图 8所示。
由图 8可以发现曲率灰度图像突出了曲率变化明显的部位,并且这些部位大部分处在不同位置,这样就形成了每个字母独特的特征信息,可以作为重要的识别信息源。例如,手势字母A和E的轮廓外形非常相似,除大拇指外的四个手指都是并拢向内弯曲,不同之处在于字母A的大拇指在手势边缘,字母E的大拇指在手势中间,如果能对大拇指部位进行准确的特征提取,就可以对它们进行有效识别。图 9比较了字母K的点云图像和拟合后曲率灰度图像的平滑和凹凸两个位置的变化。为了更清晰地比较两个位置的曲面,对点云图像进行了适当旋转,这样可以看到其三维侧面。
从图 9(a)可看出在手臂、手指、手掌部位曲面较平滑,如位置1,而在手指间或者手指弯曲的地方,曲面有明显的起伏,如位置2,这两点在图 9(b)曲率灰度图像中的表现更加明显。图 10 为深度图像和灰度曲率图像分别在这两个位置的像素值。
通过分析发现原始深度图像中位置1处的深度值比较接近,但仍有个别位置的像素值出现波动,在灰度曲率图像中这种波动减少,表 1数据显示该区域拟合后的方差减小,信噪比增大,表明通过曲面拟合计算曲率减小了手势表面微弱起伏带来的影响;原始深度图像在凹凸位置2处的方差较大,在曲率灰度图像中方差有所减小,信噪比也有所增大,但与平滑曲面相比,方差还是明显偏大,这表明曲率灰度图像中平滑和凹凸位置的像素变化对比度还是比较明显,同时减少了冗余信息,有利于后续的特征提取。
通过以上分析可见高斯曲率准确地反映出了手势曲面的起伏变化情况。这些差异可作为区分字母A和字母E、字母B和字母C以及其他字母手势重要的信息源。
在求得手势的曲率后,接下来的工作是对曲率灰度图像进行均匀LBP编码。当前LBP模式中最流行的是均匀模式,它能够有效地对局部曲率变化规律进行特征提取,具有良好旋转不变性和稳定性,而且特征维数小。针对手势曲率灰度图像的特点, 本文对标准的均匀LBP进行了改进并用来对灰度曲率图像进行特征提取。具体改进为在比较中心像素与邻域像素大小时,增加了一个阈值,用式(13)代替原来像素差比较式(2),即像素差绝对值大于1的位置才被置为1,这样可以进一步减少曲面微弱起伏带来的干扰,增强算法编码的稳定性。
$s\left( x \right) = {\rm{ }}\left\{ \begin{array}{l} 1 x > 1\\ 0 其他 \end{array} \right.$ | (13) |
改进的均匀LBP编码步骤为:
1) 将归一化后的手势曲率灰度图像划分为n×n块;
2) 对于每个块中的像素点与相邻的8个点的像素值作比较,并按照同一方向加权计算求得改进的均匀LBP编码值;
3) 计算每个块的直方图并进行归一化处理,这样不仅对LBP特征进行了降维处理,而且在一定范围内减小了手势没有完全对齐对识别的影响;
4) 将所有块的统计直方图连接成为一个维度为59×n×n的向量作为整幅图像的LBP纹理直方图特征向量。
3 实验及结果分析本文采用的数据库是ASL手势数据库,该数据库含有24个字母的彩色和深度图像,由5个志愿者在不同角度、不同距离、不同光照条件下采集得到。本文选取了前10个字母的深度图片,每个人40张,每个字母200张图片,随机选取每个字母的100幅深度图像,共1000幅作为训练集,剩余的1000幅图像作为测试集。同时将3DLBP、梯度LBP和标准均匀LBP作为对比实验算法,以此来验证曲率LBP算法在对复杂手势进行特征提取方面更具有优势。
3.1 参数设置由于该数据库中的图像已经经过裁剪,大小不一,所以本文首先将图像全部归一化为90×90,然后将图像划分为6×6个块,每个块的尺寸大小为15×15,对每幅图像分别进行3DLBP、梯度LBP和曲率LBP特征提取形成该图像的特征向量,最后在分类识别部分,本文采用的是支持向量机SVM分类器。
3.2 结果分析本文通过Matlab 2011b软件编程对Kinect深度图像进行手势识别,对四种形式的LBP分别进行了实验,实验结果如表 2所示。
从表 2中可见,3DLBP借鉴了传统基于灰度图像的LBP编码思想,虽然对手势字母有一定的识别能力,但对相似字母A和E的识别还是不理想。梯度LBP包含了手势在四个方向上的梯度信息,提高了算法分辨手势的能力,识别率有所提高。曲率LBP则包含了更加细致的曲率特征,相对于先前的基于3DLBP和梯度LBP手势识别方法取得了更好的识别效果,平均识别率分别提高了18.5个百分点和13.7个百分点;改进的均匀LBP与标准的均匀LBP相比,识别率提高了7.8个百分点。实验结果表明,曲率LBP在对外轮廓相似手势进行特征提取时更准确,更具有优势。
4 结语本文针对现有算法对深度图像局部内部细微特征描述不准确,表示能力不足,导致在识别外轮廓相似手势时效果不理想的缺点进行了改进,介绍了一种基于曲率的LBP手势识别算法。该方法成功地将高斯曲率引入到手势特征提取过程,从更深层次去挖掘深度图像中包含的曲面特征,增强了对手势三维表面特征的描述。实验分析表明,与3DLBP和梯度LBP算法相比,该算法特征提取更准确,性能更稳定,在ASL Kinect手势数据库上取得了理想的识别结果,平均识别率达到了92.1%。
进一步的研究将主要针对曲面拟合方法进行改进,目的在于提高计算高斯曲率的准确度,从而使得手势识别率进一步提高。
[1] | JIA H, WANG L, SUN Y, et al. Color face recognition based on color space normalization and quaternion matrix representation [C]//ICDH 2012: Proceedings of the 4th International Conference on Digital Home. Piscataway, NJ: IEEE, 2012: 133-137. (0) |
[2] | EROL A, BEBIS G, NICOLESCU M, et al. Vision-based hand pose estimation: a review[J]. Computer Vision and Image Understanding, 2007, 208 ((1/2)) : 52-73. (0) |
[3] | KOUTIDOU M, GRAUWET T, AVHARYA P. Effect of different combined mechanical and thermal treatments on the volatile fingerprint of a mixed tomato-carrot system[J]. Journal of Food Engineering, 2016, 168 : 137-147. doi: 10.1016/j.jfoodeng.2015.07.028 (0) |
[4] | TAKANO H, MURAKAMI M, NAKAMURA K. Iris recognition by rotation spreading neural network [C]//Proceedings of the 2004 IEEE International Conference on Neural Networks. Piscataway, NJ: IEEE, 2004: 2589-2594. (0) |
[5] | WACHS J P, KOLSCH M, STRERN H, et al. Vision-based hand gesture applications[J]. Communications of the ACM, 2011, 54 (2) : 60-71. doi: 10.1145/1897816 (0) |
[6] | LI Y. Hand gesture recognition using Kinect [C]//ICSESS 2012: Proceedings of the 2012 IEEE 3rd International Conference on Software Engineering and Service Science. Piscataway, NJ: IEEE, 2012: 196-199. (0) |
[7] | SILANON K, SUVONVORN N. Hand motion analysis for Thai alphabet recognition using HMM[J]. International Journal of Information and Electronics Engineering, 2011, 1 (1) : 65-71. (0) |
[8] | 曹雏清, 李瑞峰, 赵立军. 基于深度图像技术的手势识别方法[J]. 计算机工程, 2012, 38 (8) : 16-21. ( CAO C Q, LI R F, ZHAO L J. Hand posture recognition method based on depth image technology[J]. Computer Engineering, 2012, 38 (8) : 16-21. ) (0) |
[9] | 王松林, 徐文胜. 基于Kinect深度信息与骨骼信息的手指指尖识别方法[J]. 计算机工程与应用, 2016, 52 (3) : 169-173. ( WANG S L, XU W S. Fingertips recognition based on Kinect depth and skeleton data[J]. Computer Engineering and Applications, 2016, 52 (3) : 169-173. ) (0) |
[10] | HUANG D, HU W, CHANG S. Vision-based hand gesture recognition using PCA+Gabor filters and SVM [C]//Proceedings of the 5th International Conference on Information Hiding and Multimedia Signal Processing. Piscataway, NJ: IEEE, 2009: 1-4. (0) |
[11] | SHAO Z, BIN Y, WEI W. Feature learning based on SAE-PCA network for human gesture recognition in RGBD images[J]. Neurocomputing, 2015, 151 : 565-573. doi: 10.1016/j.neucom.2014.06.086 (0) |
[12] | 韩强. 基于普通摄像头的人体几何尺寸测量系统[D]. 天津:天津大学, 2012: 25-27. ( HAN Q. The human geometrical dimensions measuring system based on ordinary camera[D]. Tianjin: Tianjin University, 2012: 25-27. ) (0) |
[13] | DING Y. Static hand-gesture recognition using HOG and improved LBP features[J]. International Journal of Digital Content Technology and its Applications, 2011, 5 (11) : 236-243. doi: 10.4156/jdcta (0) |
[14] | OJALA T, PIETIKAINEN M, HARWOODD. A comparative study of texture measures with classification based on feature distributions[J]. Pattern Recognition, 1996, 29 (1) : 51-59. doi: 10.1016/0031-3203(95)00067-4 (0) |
[15] | ZHANG K, SONG H, ZHANG L. Active contours driven by local image fitting energy[J]. Pattern Recognition, 2010, 43 (4) : 1199-1206. doi: 10.1016/j.patcog.2009.10.010 (0) |
[16] | 李晓丽, 李小红. 梯度-LBP优化深度图像分析的性别人脸识别[J]. 计算机应用研究, 2014, 31 (11) : 3502-3505. ( LI X L, LI X H. Depth image analysis optimized by gradient-LBP for gender face recognition[J]. Application Research of Computers, 2014, 31 (11) : 3502-3505. ) (0) |
[17] | OTSU N. Threshold selection method from gray-level histogram[J]. IEEE Transactions on Systems, Man and Cybernetics, 1979, 9 (1) : 62-64. doi: 10.1109/TSMC.1979.4310076 (0) |
[18] | 肖超云, 朱兴伟. 基于Ostu准则即图像熵的阈值分割算法[J]. 计算机工程, 2007, 3314 (14) : 188-189. ( XIAO C Y, ZHU X W. Threshold selection algorithm for image segmentation based on Otsu rule and image entropy[J]. Computer Engineering, 2007, 3314 (14) : 188-189. ) (0) |