基于深度图像和稀疏表示的多手势识别算法
沈先耿+谭志国+周歌+朱海刚
摘 要: 针对复杂环境下多目标手势区域分割难度较大、识别率较低的问题,提出一种基于深度图像和稀疏表示的多手势识别算法。该算法采用肤色和深度图像分割相结合的方式对图像中出现的多手势进行精确分割,再对分割后的手势图像进行归一化处理,最后通过稀疏表示的方法实现手势识别。实验结果表明,该算法识别率较高、鲁棒性较好,具有良好的识别性能。
关键词: 深度图像; 稀疏表示; 多目标手势; 手势分割; 手势识别
中图分类号: TN911.73?34; TP391.4 文献标识码: A 文章编号: 1004?373X(2017)13?0044?04
Abstract: Since it is difficult to segment the multi?target gesture region in complex environment, and its recognition rate is low, a multi?gesture recognition algorithm based on depth image and sparse representation is proposed. The method combining skin color with depth image segmentation is adopted in the algorithm to segment the multi?objective gesture appeared in the image accurately. The normalization processing was performed for the segmented gesture image. The sparse representation method is used to recognize the gesture. The experimental results show that the algorithm has high recognition rate, strong robustness and superior recognition performance.
Keywords: depth image; sparse representation; multi?objective gesture; gesture segmentation; gesture recognition
0 引 言
目前,基于视觉的手势识别[1]成为新一代人机交互的关键技术,其中复杂背景下的手势识别是目前研究的热点和难点。复杂背景下的手势识别一般采用肤色模型进行手势区域的分割,通过这种方法可以有效地区分出肤色和非肤色区域。但是该方法采集到的图像一般都含有脸部和肢体的肤色区域,部分图像还含有与肤色相近的背景颜色区域,这些都对手势区域的提取与识别产生了较大影响。为了解决这个问题,文献[2]提出一种基于深度图像的手势识别算法,但该算法只研究了单个手势的识别问题,并且只识别了9种基本手势。为此,本文提出一种基于深度图像和稀疏表示的手势识别算法,该算法利用肤色模型和深度图像信息提取手势特征区域的表现特征,而后利用稀疏表示的方法对多种手势进行分类识别。
1 多目标手势区域的检测与分割
首先利用Kinect采集目标手势的RGB图像和深度图像,而后利用YCbCr色彩空间对采集的图像进行肤色检测。本文采用YCbCr色彩空间中的蓝色分量(Cb)和红色分量(Cr),舍弃亮度分量(Y),从而减少光照对肤色分割的影响。文献[3]指出肤色分割时在Cb?Cr空间应采用固定阈值进行肤色检测,其取值范围在像素区间内满足:。
通过阈值分割,可以得到多目标手势的肤色分割图像,如图1~图3所示。
由于在人机交互过程中,人体的手势动作往往都置于身体之前,通过检测手势区域与背景区域的不同深度值可以分割出手势。一般人体采用单手做手势,另一只手自然下垂或者离身体较近。通过深度图像分割,能够忽略贴近身体的手部区域,并将身体前侧手势区域分割出来。由文献[4]可知,正常人体的手掌面积大小约为100 cm2,因此在深度图像中,手势区域的像素较少。
本文采用深度直方图来寻找手势区域与复杂背景的分割阈值。原图的深度图像与深度直方图如图4和图5所示。
由文献[5]可知,手势区域部位往往离摄像头的距离较近,且手势面积相对于背景区域面积较小,因此从深度值由小到大寻找像素点变化,将极小深度值和其旁边的次小深度值作为分割阈值。由图5可知,两手势区域大约在深度值1 000~1 300和1 800~2 000的范围内。对图4的深度图像分别进行分割,分割后的手势图像如图6和图7所示。
由于深度图像中存在噪点和部分未分割区域灰度值为0的黑色,根据经验,通过分割灰度值在5~250范围内的图像并进行二值化处理,得到的手势图像如图8所示。
将两手势的分割图像与肤色分割图像进行运算,图像中均为白点的区域判定为白点,其余区域判定为黑点,对得到的手势图像进行腐蚀,去掉图像中的噪点,得到手势图像如图9所示。
2 手势归一化
由于多目标手势距离摄像头的距离不同,采集到的样本图像与手势库中的手势图像大小不一致,因此需要对图9得到的手势分割图像进行归一化处理。
(1) 首先通过形态学中的腐蚀操作来获取手势区域的中心点。手势区域中面积最大的部分为手掌区域,并且像素点最为集中,因此可以通过进行连续性的腐蚀操作[6]来消除手势区域的边界点,使得手势区域逐渐缩小,最终得到两手势区域的中心点和如图10所示。
(2) 计算两手势区域中心点到手势边缘区域的最大值和对手势区域进行正方形分割,分割的正方形区域中心为两手势区域的中心点,正方形的边长分别为和。假设手势数据库中已归一化的手势样本图像边长为计算两手势样本的缩放系数和对两手势图像进行缩放,得到的归一化手势图像如图11所示。
3 稀疏表示分类
本文采用稀疏表示进行手势的分类识别,该方法具有良好的鲁棒性[7]。该方法的基本思想是将所有的手势样本图像构建成一个冗余字典,通过寻找待识别的手势图像样本在冗余字典中的稀疏表示,将手势识别问题转换为稀疏表示问题,并运用压缩感知理论的方法进行求解,得到手势样本的所属类别。
假设是一个由手势图像得到的维向量,字典是一个由类训练样本,每类训练样本中含有个维手势向量构成的手势字典,表示为:
式中:表示第类手势图像中的第个训练样本,因此向量就可以用字典中的元素进行线性表示,可得:
式中:为的表示系数。
若字典中的原子能够张成维欧式距离空间那么字典就是完备的。当时,如果中的原子是线性相关的,那么就是冗余的。假如集合同时满足完备和冗余的条件,那么集合就是超完备的。
一般采用范数表示这种稀疏性,满足以下表达式:
式中:是由组成的向量,表示中非零系数的个数。
由于公式是一个NP难问题,无法直接进行求解,文献[8]证明该公式的范数与范数是等价的,因此可以将范数转变成最小化范数问题,即:
通过基追踪算法求解公式的范数解,得到待测手势样本的稀疏表示系数再计算每类训练样本的重构图像与待测样本的残差:
通常情况下,在待测样本的稀疏表示系数中,除了其所属类别的系数为非零外,其余系数均为零。因此,通过寻找待测样本与每类训练样本重构图像间残差的最小值就可以判定待测手势样本的所属类别为残差最小值对应的所属类别。
4 算法仿真及结果分析
由于目前还没有深度手势图像数据库,因此本文采用Thomas Moeslund手势数据库作为本文的实验数据库。该手势数据库中含有25个基本手势,其中19种手势含有100张样本图像,5种手势含有40张样本图像,1种手势含有60张样本图像,图像大小为。通过对Thomas Moeslund手势数据库中的样本图像进行灰度阈值分割和手势归一化,得到二值化的手势样本数据库,图像大小为,如图12所示。
本次实验选取手势样本数据库中的19种手势,每种手势选取100张图像作为训练样本。通过Kinect获取19种手势待测样本的深度图像及其对应的RGB图像,每种手势各采集50张深度图像及其对应的RGB图像。而后随机选取10种手势进行实验,每种手势分别进行50次,共计500次测试。为了增加实验对比性,本次实验加入支持向量机的方法(SVM)进行了相同的测试,实验结果如表1所示。
从两种算法的识别率中可以看出,4种手势的识别率为100%,4种手势的识别率为98%,2种手势的识别率在98%以下。由于非特定人物对手势的表达有所差异,因此会造成手势识别过程中产生错误。但从整体上看,手势的平均识别率为98.2%,而支持向量机的平均识别率为88.8%,证明了本文算法的有效性。
从两种算法的运行时间中可以看出,本文算法的平均运行时间为0.032 4 s,由于前期需要对待测样本的深度图像和RGB图像进行手势分割和归一化,因而延长了算法的运行时间。但后期采用稀疏表示进行分类识别时,采用的是手势分割图像,图像大小为148×148。与原图相比,较大幅度地减小了需要处理的样本数据量,在一定程度上减少了算法的运行时间和对系统硬件的需求。经典的SVM算法的平均运行时间为0.053 2 s,本文算法的运行时间为SVM算法的60.9%,证明了本文算法的实时性。
5 结 语
本文根据复杂背景下的多目标手势识别存在的难点,综合利用人的肤色信息和深度图像信息进行手势分割,解决了多目标手势在复杂背景下的手势分割难度较大的问题,而后利用归一化后的训练样本图像构造冗余字典,采用稀疏表示的方法进行分类识别,提升了本文算法的运行效率。通过仿真实验可以看出,本文算法的识别率较高,实时性较好,对系统的硬件需求较低,具有良好的识别性能。
参考文献
[1] 陈皓,路海明.基于深度图像的手势识别综述[J].内蒙古大学学报,2014,45(1):105?111.
[2] 曹雏清,李瑞峰,赵立军.基于深度图像技术的手势识别方法[J].计算机工程,2012,38(8):16?21.
[3] 张勤.基于稀疏表示的手势识别研究[D].西安:西北大学,2013.
[4] 皮志明.结合深度信息的图像分割算法研究[D].合肥:中国科学技术大学,2013.
[5] 王松林.基于Kinect的手勢识别与机器人控制技术研究[D].北京:北京交通大学,2014.
[6] 蓝章礼,李益才.数字图像处理与图像通信[M].北京:清华大学出版社,2009.
[7] WRIGHT J, GANESH A, YANG A, et al. Robust face recognition via sparse representation [J]. IEEE transactions on pattern analysis and machine intelligence, 2009, 31(2): 210?227.
[8] 谢志鹏.迭代式正交匹配追踪及稀疏解[J].微电子学与计算机,2009,26(10):53?56.
摘 要: 针对复杂环境下多目标手势区域分割难度较大、识别率较低的问题,提出一种基于深度图像和稀疏表示的多手势识别算法。该算法采用肤色和深度图像分割相结合的方式对图像中出现的多手势进行精确分割,再对分割后的手势图像进行归一化处理,最后通过稀疏表示的方法实现手势识别。实验结果表明,该算法识别率较高、鲁棒性较好,具有良好的识别性能。
关键词: 深度图像; 稀疏表示; 多目标手势; 手势分割; 手势识别
中图分类号: TN911.73?34; TP391.4 文献标识码: A 文章编号: 1004?373X(2017)13?0044?04
Abstract: Since it is difficult to segment the multi?target gesture region in complex environment, and its recognition rate is low, a multi?gesture recognition algorithm based on depth image and sparse representation is proposed. The method combining skin color with depth image segmentation is adopted in the algorithm to segment the multi?objective gesture appeared in the image accurately. The normalization processing was performed for the segmented gesture image. The sparse representation method is used to recognize the gesture. The experimental results show that the algorithm has high recognition rate, strong robustness and superior recognition performance.
Keywords: depth image; sparse representation; multi?objective gesture; gesture segmentation; gesture recognition
0 引 言
目前,基于视觉的手势识别[1]成为新一代人机交互的关键技术,其中复杂背景下的手势识别是目前研究的热点和难点。复杂背景下的手势识别一般采用肤色模型进行手势区域的分割,通过这种方法可以有效地区分出肤色和非肤色区域。但是该方法采集到的图像一般都含有脸部和肢体的肤色区域,部分图像还含有与肤色相近的背景颜色区域,这些都对手势区域的提取与识别产生了较大影响。为了解决这个问题,文献[2]提出一种基于深度图像的手势识别算法,但该算法只研究了单个手势的识别问题,并且只识别了9种基本手势。为此,本文提出一种基于深度图像和稀疏表示的手势识别算法,该算法利用肤色模型和深度图像信息提取手势特征区域的表现特征,而后利用稀疏表示的方法对多种手势进行分类识别。
1 多目标手势区域的检测与分割
首先利用Kinect采集目标手势的RGB图像和深度图像,而后利用YCbCr色彩空间对采集的图像进行肤色检测。本文采用YCbCr色彩空间中的蓝色分量(Cb)和红色分量(Cr),舍弃亮度分量(Y),从而减少光照对肤色分割的影响。文献[3]指出肤色分割时在Cb?Cr空间应采用固定阈值进行肤色检测,其取值范围在像素区间内满足:。
通过阈值分割,可以得到多目标手势的肤色分割图像,如图1~图3所示。
由于在人机交互过程中,人体的手势动作往往都置于身体之前,通过检测手势区域与背景区域的不同深度值可以分割出手势。一般人体采用单手做手势,另一只手自然下垂或者离身体较近。通过深度图像分割,能够忽略贴近身体的手部区域,并将身体前侧手势区域分割出来。由文献[4]可知,正常人体的手掌面积大小约为100 cm2,因此在深度图像中,手势区域的像素较少。
本文采用深度直方图来寻找手势区域与复杂背景的分割阈值。原图的深度图像与深度直方图如图4和图5所示。
由文献[5]可知,手势区域部位往往离摄像头的距离较近,且手势面积相对于背景区域面积较小,因此从深度值由小到大寻找像素点变化,将极小深度值和其旁边的次小深度值作为分割阈值。由图5可知,两手势区域大约在深度值1 000~1 300和1 800~2 000的范围内。对图4的深度图像分别进行分割,分割后的手势图像如图6和图7所示。
由于深度图像中存在噪点和部分未分割区域灰度值为0的黑色,根据经验,通过分割灰度值在5~250范围内的图像并进行二值化处理,得到的手势图像如图8所示。
将两手势的分割图像与肤色分割图像进行运算,图像中均为白点的区域判定为白点,其余区域判定为黑点,对得到的手势图像进行腐蚀,去掉图像中的噪点,得到手势图像如图9所示。
2 手势归一化
由于多目标手势距离摄像头的距离不同,采集到的样本图像与手势库中的手势图像大小不一致,因此需要对图9得到的手势分割图像进行归一化处理。
(1) 首先通过形态学中的腐蚀操作来获取手势区域的中心点。手势区域中面积最大的部分为手掌区域,并且像素点最为集中,因此可以通过进行连续性的腐蚀操作[6]来消除手势区域的边界点,使得手势区域逐渐缩小,最终得到两手势区域的中心点和如图10所示。
(2) 计算两手势区域中心点到手势边缘区域的最大值和对手势区域进行正方形分割,分割的正方形区域中心为两手势区域的中心点,正方形的边长分别为和。假设手势数据库中已归一化的手势样本图像边长为计算两手势样本的缩放系数和对两手势图像进行缩放,得到的归一化手势图像如图11所示。
3 稀疏表示分类
本文采用稀疏表示进行手势的分类识别,该方法具有良好的鲁棒性[7]。该方法的基本思想是将所有的手势样本图像构建成一个冗余字典,通过寻找待识别的手势图像样本在冗余字典中的稀疏表示,将手势识别问题转换为稀疏表示问题,并运用压缩感知理论的方法进行求解,得到手势样本的所属类别。
假设是一个由手势图像得到的维向量,字典是一个由类训练样本,每类训练样本中含有个维手势向量构成的手势字典,表示为:
式中:表示第类手势图像中的第个训练样本,因此向量就可以用字典中的元素进行线性表示,可得:
式中:为的表示系数。
若字典中的原子能够张成维欧式距离空间那么字典就是完备的。当时,如果中的原子是线性相关的,那么就是冗余的。假如集合同时满足完备和冗余的条件,那么集合就是超完备的。
一般采用范数表示这种稀疏性,满足以下表达式:
式中:是由组成的向量,表示中非零系数的个数。
由于公式是一个NP难问题,无法直接进行求解,文献[8]证明该公式的范数与范数是等价的,因此可以将范数转变成最小化范数问题,即:
通过基追踪算法求解公式的范数解,得到待测手势样本的稀疏表示系数再计算每类训练样本的重构图像与待测样本的残差:
通常情况下,在待测样本的稀疏表示系数中,除了其所属类别的系数为非零外,其余系数均为零。因此,通过寻找待测样本与每类训练样本重构图像间残差的最小值就可以判定待测手势样本的所属类别为残差最小值对应的所属类别。
4 算法仿真及结果分析
由于目前还没有深度手势图像数据库,因此本文采用Thomas Moeslund手势数据库作为本文的实验数据库。该手势数据库中含有25个基本手势,其中19种手势含有100张样本图像,5种手势含有40张样本图像,1种手势含有60张样本图像,图像大小为。通过对Thomas Moeslund手势数据库中的样本图像进行灰度阈值分割和手势归一化,得到二值化的手势样本数据库,图像大小为,如图12所示。
本次实验选取手势样本数据库中的19种手势,每种手势选取100张图像作为训练样本。通过Kinect获取19种手势待测样本的深度图像及其对应的RGB图像,每种手势各采集50张深度图像及其对应的RGB图像。而后随机选取10种手势进行实验,每种手势分别进行50次,共计500次测试。为了增加实验对比性,本次实验加入支持向量机的方法(SVM)进行了相同的测试,实验结果如表1所示。
从两种算法的识别率中可以看出,4种手势的识别率为100%,4种手势的识别率为98%,2种手势的识别率在98%以下。由于非特定人物对手势的表达有所差异,因此会造成手势识别过程中产生错误。但从整体上看,手势的平均识别率为98.2%,而支持向量机的平均识别率为88.8%,证明了本文算法的有效性。
从两种算法的运行时间中可以看出,本文算法的平均运行时间为0.032 4 s,由于前期需要对待测样本的深度图像和RGB图像进行手势分割和归一化,因而延长了算法的运行时间。但后期采用稀疏表示进行分类识别时,采用的是手势分割图像,图像大小为148×148。与原图相比,较大幅度地减小了需要处理的样本数据量,在一定程度上减少了算法的运行时间和对系统硬件的需求。经典的SVM算法的平均运行时间为0.053 2 s,本文算法的运行时间为SVM算法的60.9%,证明了本文算法的实时性。
5 结 语
本文根据复杂背景下的多目标手势识别存在的难点,综合利用人的肤色信息和深度图像信息进行手势分割,解决了多目标手势在复杂背景下的手势分割难度较大的问题,而后利用归一化后的训练样本图像构造冗余字典,采用稀疏表示的方法进行分类识别,提升了本文算法的运行效率。通过仿真实验可以看出,本文算法的识别率较高,实时性较好,对系统的硬件需求较低,具有良好的识别性能。
参考文献
[1] 陈皓,路海明.基于深度图像的手势识别综述[J].内蒙古大学学报,2014,45(1):105?111.
[2] 曹雏清,李瑞峰,赵立军.基于深度图像技术的手势识别方法[J].计算机工程,2012,38(8):16?21.
[3] 张勤.基于稀疏表示的手势识别研究[D].西安:西北大学,2013.
[4] 皮志明.结合深度信息的图像分割算法研究[D].合肥:中国科学技术大学,2013.
[5] 王松林.基于Kinect的手勢识别与机器人控制技术研究[D].北京:北京交通大学,2014.
[6] 蓝章礼,李益才.数字图像处理与图像通信[M].北京:清华大学出版社,2009.
[7] WRIGHT J, GANESH A, YANG A, et al. Robust face recognition via sparse representation [J]. IEEE transactions on pattern analysis and machine intelligence, 2009, 31(2): 210?227.
[8] 谢志鹏.迭代式正交匹配追踪及稀疏解[J].微电子学与计算机,2009,26(10):53?56.