随着计算机软硬件、人工智能技术的快速发展, 传统基于鼠标、键盘等人机交互技术已无法满足当今人们的生产生活需求, 最近几年来新型人机交互方式的研究变得异常活跃, 这包括人脸识别、人体运动分析、手势识别等.其中手势识别是一种自然直观的人机交流方式, 成为了新型人机交互方式中的一项关键技术.[1-2]
基于视觉的手势跟踪与识别一般分为两个过程, 即手部分割及手势识别, 其中手势分割是最基础部分, 将直接影响后续的手势跟踪、手势特征提取以及手势识别的结果[3-4].为了降低手势分割的难度和计算复杂度, 不少研究人员采用对手势图像加上种种限制的方法, 如简化背景、戴特殊颜色的手套等')[5], 但这不利于自然的人机交互.本文研究的重点是在室内复杂环境条件下实现手部的实时分割和跟踪.
在手势分割的研究中, 近年来国内外研究人员提出了多种方法, 主要包括约束限制法、深度信息法、肤色分割法及图像差分法等[6-7].文献[8]设计了一种色块手套, 通过对手套上的不同色块的识别进行分割和跟踪, 得到手指和手掌的位置及方向信息, 但需要外加限制且实时性还有待提高;文献[9]使用Kinect提供的深度信息产生一个手部运动轨迹识别系统, 并应用在一个媒体播放程序中, 但使用场地受到一定的限制, 不能有遮挡物;在文献[10]中, 采用RGB和YCbCr空间进行阈值分割, 然后利用多种形态学操作进行处理, 再结合单高斯背景模型对手势进行分割, 但应对大面积的类肤色干扰效果仍然不好, 而且实时性不高;在文献[11]中, 利用相邻帧间差分法与肤色模型相结合对动态手势区域进行标定, 而当视频中相邻两帧运动量较小时, 该方法并不能有效地对动态手势区域进行标定.
现有的手势分割和识别系统中, 处理速度一般不超过20帧/s, 为了在复杂背景下实现手势高速且精确的分割, 本文提出了一种基于肤色集、运动集、模糊手势集的手势分割及跟踪算法, 并采用FPGA实现.实验结果表明, 该方法具有良好的手势分割和跟踪效果, 实时性高, 处理速度能达到100帧/s.
1 手势分割及跟踪算法本文通过颜色空间建立一个肤色集, 通过视频流空间建立一个运动集, 并在这两个集合的基础上得到一个模糊手势集, 对模糊手势集进行形态学处理后选定阈值进行手势的分割, 其中加入了跟踪算法和背景更新, 能在复杂背景下进行动态和静态手势的分割和跟踪.整个算法中的3个集合并行同步处理, 每个集合在图像采集过程中可同步处理, 极大地加快了处理速度.
1.1 肤色集肤色是人体表面最为显著的特征之一, 是人脸部及手部区别于其他部分的重要特征, 所以常将人体的肤色信息应用于人脸检测、手势识别等研究中.在计算机视觉中, 色彩空间主要有RGB, HSV, YIQ, YCbCr等, 为了减少肤色受亮度信息的影响, 通常先将颜色空间从RGB颜色空间转换到亮度与色度分离的颜色空间, 本文采用的是HSV颜色空间, 其中色调H用来区分肤色.
本文将每个像素点隶属于肤色的程度的集合定义为肤色集, 用H标记, 得
$~H=\left\{ \begin{align} & 1,{{h}_{2}}<h\left( x,y \right)<{{h}_{3}}; \\ & \frac{h\left( x,y \right)-{{h}_{1}}}{{{h}_{2}}-{{h}_{1}}},{{h}_{1}}\le h\left( x,\rm{ }y \right)\le {{h}_{2}}; \\ & \frac{{{h}_{4}}-h\left( x,y \right)}{\rm{ }{{\mathit{h}}_{4}}-{{\mathit{h}}_{3}}},{{h}_{3}}\le h\left( x,y \right)\le {{h}_{4}}; \\ & 0,h\left( x,y \right)<{{h}_{1}},h\left( x,y \right)>{{h}_{4}}. \\ \end{align} \right.\rm{ }$ | (1) |
其中h (x, y)表示当前像素点的色调值, 而h1, h2, h3, h4是阈值.
1.2 运动集运动目标检测的关键是将变化的运动区域从视频图像序列的背景图像中提取出来, 本文将当前帧中各像素点不属于背景图的程度的集合定义为运动集, 用M标记, 当前图像中某个像素点与背景图中对应像素点的颜色值差别越大, 该像素点属于M的隶属度就越大, 如式(2) 所示.
$M = \left\{ \begin{array}{l} 0,m\left( {x,y} \right) \le {m_1};\\ \frac{{m\left( {x,y} \right) - {m_1}}}{{{m_2} - {m_1}}},{m_1}<m\left( {x,y} \right)<{m_2};\\ 1,m\left( {x,y} \right) \ge {m_2}. \end{array} \right.$ | (2) |
其中m (x, y)为当前图像和背景图像像素点的RGB颜色差的平方和, m1和m2是阈值.背景图像是指从视频序列中除去要分割的人手后剩下的背景组成的一幅完整的图像, 只要在算法开始时摇动一下手, 使系统捕捉到手, 然后即使手静止不动, M集合也可以跟踪到它而不会丢失.
1.3 模糊手势集模糊手势集是描述当前帧中各像素点属于人手区域的程度, 简记为G.它是由H和M集通过模糊运算得到, 计算公式为
$G = \alpha M + \beta H + \omega \left( {M \cap H} \right),{\rm{ }}\alpha + \beta + \omega = 1.$ | (3) |
其中α、β、ω为正系数, M ∩ H表示M、H的交集, 即取两者之间取小者.
由式(3) 得到的模糊手势集含有很多噪声, 需要对图像进行滤波处理才能得到清晰的人手区域.本文采用数字形态学中的运算进行滤波, 其中主要包含腐蚀和膨胀两个过程.经过滤波处理后可以精确地描述出人手区域, 最后通过选定阈值得到一个清晰的手势集.
2 算法硬件实现图 1为系统的结构框架图, 主要包括摄像头配置')[12]、数据采集和处理、SDRAM和VGA控制器, 核心算法在数据采集和处理模块中实现.图 2为算法硬件实现的整体流程框图, 整个流程大致可分为手势集的获取和背景更新两个主要阶段.在实现中采用了并行展开的流水结构, 图像数据传输过程中实时处理')[13], 并利用时序调整模块保证各个操作时序的正确性.能在下一帧图像数据到来之前完成所有操作, 真正做到实时处理.
![]() |
图 1 系统结构框架图 Figure 1 Block diagram of overall system |
![]() |
图 2 分割算法流程图 Figure 2 Work flow of gesture segmentation |
摄像头采集到的图像一般会有一些噪声, 这容易对后续手势分割造成噪声, 要经过滤波去除干扰.传统的软件算法在实现滤波操作时, 需要先把输入和输出图像都缓存到帧缓存中去, 对于每个输出像素, 算法获取输入图像对应窗口的像素并用滤波函数计算来取得输出值.由于每个输出都需要读取对应窗口的输入像素, 势必占用极大的内存带宽, 并且处理性能受到内存带宽限制.本文使用流水处理的方法, 实现滤波算法的加速计算, 算法结构如图 3所示.
![]() |
图 3 中值滤波结构图 Figure 3 Block diagram of median filter |
常用的滤波有均值滤波、中值滤波、高斯滤波、Gabor滤波等, 考虑到算法的固有优缺点和FPGA的特点, 系统使用中值滤波')[14].中值滤波的基本原理是把数字图像中一点的值用该点的邻域中各点值的中值代替, 设计中采用一个三位数的排序模块进行并行处理, 如图 4所示, 采用面积换速度的思想, 整个中值滤波函数处理过程仅需延时3个时钟周期.
![]() |
图 4 中值滤波函数实现示意图 Figure 4 Median filter function diagram |
模糊手势集是通过肤色集H和运动集M计算得出的, 如式(3) 所示, 为了节省资源和提高速度, 设计中α、β、ω分别取0.25、0.25、0.5, 这样通过移位操作就能实现, 并取得了较好的效果.获取H集需要将RGB转换为HSV, 此过程需要乘除法运算, 为了提高运算速度, 设计中采用FPGA内部IP核乘法器和除法器, 并构建流水线处理.在M集计算中通过场同步信号和像素时钟调用背景图像, 实时计算出当前图像和背景图像RGB颜色差的平方和. H集和M集的获取是同步平行处理的.
2.3 膨胀与腐蚀图像的腐蚀操作能够轻易地滤除面积小于窗口的孤立噪点而不影响图像本身的清晰度, 经过腐蚀后目标图像会变小, 需要膨胀操作来补偿腐蚀的影响.膨胀和腐蚀算法工作流程类似于中值滤波, 如图 3所示, 经过行缓冲的像素数据依次进入窗口, 通过对窗口内所有像素取最小值来实现腐蚀, 取最大值来实现膨胀.
2.4 手势跟踪及背景更新选定阈值对图像二值化后可得到一个清晰手势集, 但还是存在一些干扰, 这容易导致包围盒的坐标出错.设计中包围矩形的X轴和Y轴跟随像素值从原点向下和向右移动, 当有超过连续n个有效像素值时才确认为包围盒的起点, 从而确定最大和最小坐标, 其中n的取值由上一帧图像的包围盒大小决定, 这种方法能精准地对分割后的手势进行包围操作, 包围盒确定后能对下一帧图片中的干扰像素点进行滤除.
在包围盒确定后可对背景进行更新, 即用当前图像中除手势区域外的像素点代替背景图像素点.但在手势集实现过程中会出现延时, 这导致手势集和原始图像时序上的不一致, 因此需要对时序进行调整, 设计中采用IP核的移位寄存器对原始图像数据进行缓存, 从而可以在确定手势集范围后对背景进行更新.
2.5 SDRAM控制器本设计采用两个SDRAM存储芯片, 一个用于背景图片的存储和更新, 另一个用于VGA接口的显示.用FPGA设计的SDRAM控制器的结构如图 5所示, 其中系统控制接口模块主要包含读写控制逻辑和FIFO缓存器, 而SDRAM接口模块是SDRAM底层的时序驱动')[15].当原始图像数据不是手势区域时, 则将数据存储到SDRAM中, 进行背景的更新, 反之则不存储.在计算运动集时通过读取SDRAM命令则可以将背景图像数据读出.
![]() |
图 5 SDRAM控制器结构图 Figure 5 Structure block diagram of SDRAM controller |
目前算法设计实现640×480像素分辨率视频图像处理, 系统设定的时钟频率是100MHz, 处理速度约为100帧/s.算法实现平台为Altera-EP2C35F484C8芯片, 表 1列出了Quartus Ⅱ 11.0综合产生的硬件资源占用情况, 分别以逻辑单元、引脚和片内存储单元消耗的绝对数量和相对百分比进行说明.
![]() |
表 1 FPGA芯片的硬件资源消耗 Table 1 Hardware resource consumption of FPGA chip |
表 2为算法在不同平台和不同分辨率下进行验证的性能对比, 其中PC端的CPU是酷睿I5, 内存为4G, 软件平台是OpenCV2.4.4和VS2010, 在640×480分辨率下的处理速度为10帧/s, 而在相同分辨率下FPGA的处理速度高达100帧/s, 且分割和跟踪的效果是一致的.在1280×800分辨率下硬件平台的处理速度也能达到30帧/s.
![]() |
表 2 算法软硬件实现性能对比 Table 2 Performance contrast of software and hardware |
本文的手势分割和跟踪算法实现的结果如图 6所示, 在图 6(a)中有脸部和背景等近肤色干扰, 肤色集(b)中将所有近肤色的物体都识别出来, 将肤色集(b)和运动集(c)进行模糊运算就可得到模糊手势集(d).在模糊手势集中还存在不少干扰, 加上跟踪算法和形态学处理后就可得到清晰手势集(e).算法中对背景实时更新, 在背景改变或光线改变时也依然能准确地分割手势.
![]() |
图 6 手势分割和跟踪结果 Figure 6 Gesture segmentation and tracking results |
本文提出了一种基于肤色集、运动集、模糊手势集的手势分割及跟踪算法, 并采用FPGA硬件实现, 提高了处理速度, 能在复杂背景下对手势进行准确的分割和跟踪.分割算法中加入背景更新和手势跟踪, 能较好地消除环境因素的干扰, 采用模糊运算得到手势集, 提高了分割准确度.设计中结合FPGA的特点, 充分利用流水线结构和并行执行的思想, 减少运算量和存储器的使用, 降低了资源的使用量, 提高运算速度.实验结果表明, 该分割算法在精确性、实时性、鲁棒性方面均有较好的表现, 有效地解决了传统方法中复杂背景环境光照变化等问题, 在100MHz工作频率下, 能实现640×480彩色图像100帧/s的手势分割和跟踪.
[1] | 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. |
[2] | JUAN P W, MATHIAS K, HELMAN S. et. al. Vision-based hand-gesture applications[J]. Communications of the ACM, 2011, 54(2): 60-71. DOI: 10.1145/1897816. |
[3] |
汤勇, 顾宏斌, 周来. 交互系统中实时手势分割及指尖检测方法[J].
光电工程, 2010, 37(7): 145-150.
TANG Y, GU H B, ZHOU L. Real-time hand segmentation and fingertip detection for interaction[J]. Opto-Electronic Engineering, 2010, 37(7): 145-150. |
[4] | HOLTE M B, MOESLUND T B, FIHL P. View-invariant gesture recognition using 3D optical flow and harmonic motion context[J]. Computer Vision and Image Understanding, 2010, 114(12): 1353-1361. DOI: 10.1016/j.cviu.2010.07.012. |
[5] | VICENTE A P, FAISAL A A. Calibration of kinematic body sensor networks: Kinect-based gauging of data gloves "in the wild"[C]//Body Sensor Networks (BSN), 2013 IEEE International Conference on. USA, MA, Cambridge: IEEE, 2013: 1-6. |
[6] |
刘鑫辰, 傅慧源, 马华东. 基于RGB-D摄像头的实时手指跟踪与手势识别[J].
计算机科学, 2014, 41(10): 50-53.
LIU X C, FU H Y, MA H D. Real-time fingertip tracking and gesture recognition using RGB-D camera[J]. Computer Science, 2014, 41(10): 50-53. DOI: 10.11896/j.issn.1002-137X.2014.10.011. |
[7] |
曹昕燕, 赵继印, 李敏. 基于肤色和运动检测技术的单目视觉手势分割[J].
湖南大学学报(自然科学版), 2011, 38(1): 78-83.
CAO X Y, ZHAO J Y, LI M. Monocular vision gesture segmentation based on skin color and motion detection[J]. Journal of Hunan University(Natural Sciences Edition), 2011, 38(1): 78-83. |
[8] | ROBERT Y W, JOVAN P. Real-time hand-tracking with a color glove[J]. ACM Transactions on Graphics (TOG), 2009, 28(3): 341-352. |
[9] | YANG C, JANG Y, BEH J, et al. Gesture recognition using depth-based hand tracking for contactless controller application[C]//Consumer Electronics (ICCE), 2012 IEEE International Conference on. Las Vegas, NV: IEEE, 2012: 297-298. |
[10] |
王先军, 白国振, 杨勇明. 复杂背景下BP神经网络的手势识别方法[J].
计算机应用与软件, 2013, 30(3): 247-249.
WANG X J, BAI G Z, YANG Y M. Hand gesture recognition based on BP neural network in complex background[J]. Computer Applications and Software, 2013, 30(3): 247-249. |
[11] |
于华平, 艾矫燕. 基于肤色动态手势区域的标定[J].
计算技术与自动化, 2010, 29(2): 86-88.
YU H P, AI J Y. Dynamic hand gesture region Marking algorithm based on the sink color[J]. Computing Technology and Automation, 2010, 29(2): 86-88. |
[12] |
应小军, 李瑜煜. 基于FPGA的CMOS图像传感器驱动电路设计[J].
广东工业大学学报, 2015, 32(1): 71-74.
YING X J, LI Y Y. Design of drive circuit of CMOS image sensor based on FPGA[J]. Journal of Guangdong University of Technology, 2015, 32(1): 71-74. |
[13] |
李杏华, 刘宁, 张晶. 基于FPGA的图像实时处理系统的设计[J].
半导体光电, 2014, 35(3): 563-566.
LI X H, LIU N, ZHANG J. Design of image acquisition and processing system based on FPGA[J]. Semiconductor Optoelectronics, 2014, 35(3): 563-566. |
[14] |
刘强, 潘明, 李永伟. 基于FPGA的汽车单目测距系统设计[J].
液晶与显示, 2014, 29(3): 422-428.
LIU Q, PAN M, LI Y W. Design of vehicle monocular ranging system based on FPGA[J]. Chinese Journal of Liquid Crystals and Displays, 2014, 29(3): 422-428. |
[15] |
刘紫燕, 冯亮, 祁佳. 一种基于FPGA的实时视频跟踪系统硬件平台设计[J].
传感器与微系统, 2014, 33(7): 98-101.
LIU Z Y, FENG L, QI J. Design of a FPGA-based hardware platform of real-time video tracking system[J]. Transducer and Microsystem Technologies, 2014, 33(7): 98-101. |