时间:2024-05-04
刘长征,宁 爽
(哈尔滨理工大学 计算机科学与技术学院,哈尔滨 150080)
基于视觉的手指控制系统依靠摄像头捕捉含有手指的视频序列,采用计算机检测并识别用户动作,进而明确用户的动作指令来实现控制交互.近几年关于指尖检测这一课题的研究已取得诸多成果:陈艳艳等人利用手的形状将手掌部分祛除,结合手心与手指的相对距离确定指尖[1].邓瑞等人运用支持向量机(Support Vector Machine,SVM)实现特征提取训练[2].Feng等人基于K均值聚类利用深度图像提取手部范围,利用该区域内的点与其它聚类点中心的距离来判断指尖位置[3].袁方剑等人使用Kinect体感器得到图像的深度信息,在Open NI分析系统下得到掌心坐标,随后根据最近邻算法得到手部区域,对经典Graham Scan运用射线求交法改进来获得手边缘的凸包点集合,将轮廓分析法应用于凸包点来确定指尖位置[4].Farooqa等人提出“曲率周长”法检测指尖,该方法是对K-曲率法的改进,具有一定的旋转不变性[5].
对于文献[1]中的方法,因为手部存在一定的自遮挡率以及不同用户手部大小有略大改变,选取某个特殊比例值祛除手掌的指尖检测方法并未取得理想效果.文献[2]中的方法仅能对训练过的特定手势予以分类,未对指尖予以定位.文献[3]方法仅用来获得单指尖坐标,且聚类效果有一定随机性.文献[4]中的方法在手腕发生偏转时易令得到的手轮廓产生尖角,不易去除,且深度图像的获得具有一定的不便性.文献[5]中方法的参数设置复杂,运算速度慢.
为了完成开发一个人机交互系统的最终目标,本文提出了一个简单、高效、稳定、准确的运动指尖检测方法.我们专注于在顶部装有单目彩色摄像头的计算机上,承认检测过程以自我为中心的视频中手会出现快速移动和任意变形的问题.视频流输入后,首先利用融合了邻域像素连接权的自适应混合高斯模型来分割出运动区域;然后提出一种带权重的颜色计算模型对候选区域进行去阴影处理,进而得到手部区域与轮廓;最后利用指尖的圆特性对原有的重心距离算法加以改进,从而对指尖加以检测.实现了复杂背景下的动态多指尖实时检测,且检测效果不受手指并拢、旋转、弯曲、与镜头距离远近、光照变化等的限制.
Stauffer首先提出一种源于聚类模型的混合高斯背景建模(Gaussian Mixture Model,GMM)[6].认为每个像素点在一段连续视频帧中的像素值是一个随时间改变的随机过程,于是定义图像中点(x0,y0)的像素值序列为{X1,X2,…,Xt}={I(x0,y0,i):1≤i≤t},I(x0,y0,i)表示视频包含的图像序列,Xi表示点(x0,y0)在i时刻的像素值.对于任意点通过混合高斯模型描述其概率分布变化为:
(1)
(2)
|Xt-μ|≤δσ
(3)
(4)
其中M、N为视频帧的长和宽,在模型中选取前Bt个成分当做该点处的背景分布,时变参数Bt根据权重ωi,t决定:
(5)
重心距离法检测指尖是依据手轮廓重心与轮廓点间欧式距离判断指尖位置[8].首先,轮廓提取后能够获得手部区域的轮廓图形及相应轮廓像素点序列矩阵,计算出轮廓的重心;然后,得到每个轮廓像素点与其重心的距离;最后,通过距离值判断当前点是否为候选指尖.
2.2.1 确定轮廓重心
给定二维连续函数f(x,y),其(j+k)阶矩Mjk为:
(6)
对于一帧二值图像I(x,y),它的(p+q)阶矩Mpq为:
(7)
M是不同p,q时图像的矩,p,q=0,1,2,…,i,j是图像中像素点坐标(i,j=0,1,2,…,N-1),N是图像中点的个数.手部轮廓重心可通过计算轮廓的0阶矩与1阶矩获得,I(x,y)是被描述区域,图像0阶矩为:
(8)
1阶矩为:
(9)
由0阶矩和1阶矩得到手部轮廓的重心为:
(10)
2.2.2 轮廓点与重心的距离
(11)
图1 轮廓点与重心的距离Fig.1 Distance between contour point and center of gravity
从图1看出,检测出的候选点中包含假点.假点一般出现在图像边界处,因为在图像边界处同样会检测到距离峰值,需要进一步对假点进行过滤,过滤方法及具体实现将在3.3节和5.3节中具体阐述.
从2.1节可以看出原有模型只考虑单独点在时间上的变化而忽略点空间存在的联系.为此对原有的自适应混合高斯模型加以改进,提出将邻域像素连接权融合在自适应混合高斯中的新模型,从而达到时间与空间相结合来分割运动区域的目的.
3.1.1 邻域像素连接权与自适应混合高斯模型融合
(12)
设p(k,Xn,t)是第t时刻的像素值Xt的邻域点Xn,t为第k类的概率,|Nt|是以Xt为中心点的矩形窗口内邻接点数量,规定第t时刻Xt的连接权函数为:
(13)
规定t时刻Xt的邻接像素为第k类的概率是:
(14)
满足归一性.
3.1.2 自适应背景更新
针对视频流中待识别帧,获得该点像素值Xt+1.初始化时,令所有点的分布数为K=1,权值是1,均值是输入序列起始帧的像素值,协方差值应相对略大.对每个待检测点与此点已存的K个高斯分布匹配验证,若符合公式(15),既说明此待检测点属于该分布.
|Xt+1-μi,t|≤δσi,t
(15)
从前到后依次验证第k个高斯分布,如果有m(m>0)个分布与该像素点匹配,则利用公式(16)更新这m个分布的参数.
(16)
α为学习速率,ηi为分布参数的更新速率.对α采用Lee提出的自动更新法,根据统计后的分布有效次数ck得到最佳α值[9].即:
(17)
针对不符合(15)的高斯分布,不改变其协方差与均值,更新其权值为:
ωi,t+1=(1-α)ωi,t
(18)
当光照射在运动体上时会出现阴影,考虑到阴影跟随手的运动而移动,从而被当做运动前景检测出来.使得前景检测精确度下降、多检测目标间产生粘连、检测速度缓慢.因此阴影的检测与去除这一细节处理十分必要.根据颜色特征来检测阴影应用最广泛,主要包括:根据阴影的光学特性,结合图像纹理特征以及借助色度、饱和度、亮度的颜色信息.基于色度、饱和度和亮度的阴影去除法的原理为:对比待检测图像的前景像素点和与其对应的背景像素点,若色度与亮度分量的差异均位于一定阈值内,此点即被判定为阴影,否则为运动目标.本文提出一种带权的颜色计算模型来去除阴影,这一算法采用自定义的色彩差异作为阴影检测的衡量标准,能够快速地检测阴影.
如果能描述目标与背景、阴影与背景之间的差别,就能够检测出阴影.因此,图像的YCbCr空间表示更适于阴影去除,且利用背景建模时点的像素值信息来去除阴影,充分利用已获取的数据,减少算法的运算时间.设图像中带有阴影的目标像素点Cur表示为向量Cur(Cx,Cy,Cz),图像中背景像素点Back表示为向量Back(Bx,By,Bz),其中的3个元素分别为Cb分量、Y分量和Cr分量.将Cur与Back之间的夹角作为衡量色彩差异的标准,α表示向量Cur(Cx,Cy,Cz)与Back(Bx,By,Bz)之间的夹角:
(19)
即角度越大差异也就越大,在获取阴影过程中,3个分量起的作用具有差异性,阴影的亮度信息和背景的亮度信息相比没有太大改变,为避免亮度信息的干扰,使用τ减小亮度分量Y的权重,增大Cb和Cr的权重,如公式(20):
(20)
其中,β=1-τ/2,根据公式(20)计算出目标的每一像素点相对于背景的α值,如果α值小于阈值T,则该像素点是阴影,否则属于目标.
对比每次得到的指尖点与非指尖点可以发现,非指尖点与其对应圆的平均误差相对较大,因为指尖处的弯曲度更大,更接近圆.从指尖点的圆特性出发,过滤掉之前检测结果中的假点.
若二值图像I内任意轮廓点I(x,y)是以(a,b)为圆心、r为半径的圆上的点,满足:
(x-a)2+(y-b)2=r2
(21)
各个轮廓点I(x,y)映射为(a,b,r)空间内的一个二次曲面.将公式(21)写成参数形式:
a=x-rcosθ,b=y-rsinθ
(22)
图2 对候选点做圆Fig.2 Dothecircletothecandidatepoint图3 候选圆与轮廓像素点的接近程度Fig.3 Closenessofcandidatecircleandcontourpixel
其中,
(23)
(24)
(25)
指尖检测的整体实验流程用图4表示,主要操作步骤如下:
1)进行图像预处理,将邻域像素连接权融合在自适应混合高斯模型中来提取运动区域;
2)对提取的区域进行阴影检测,去除阴影,然后进行去噪和形态学闭运算,得到手部区域,进而得到手部轮廓;
3)采取重心距离法得到候选指尖位置;
4)根据指尖处的圆弧特性继续对候选点进行滤除假点处理,得到指尖点.
本实验采用的硬件平台处理器为Pentiu-m(R)Dual-Core CPU E6500@2.93GHz 2.94GHz,2GB内存.软件平台为Windows 7操作系统,采用C++和OpenCV在VS2010编译环境下进行算法设计.
为完成5.3节的实验,采用普通彩色单目USB摄像头,在背景变化及光照变化等不同条件下获取包含不同人的不同角度和不同镜头距离的手部视频流作为输入数据进行实验.视频帧为分辨率1024*768的高清图像,视频的播放速率为30fpS,共包含700帧.
本节实验采用M.B.Holte和M.Stoerring的手部视频序列数据集,这其中包含了复杂多变的背景及混合光照变化等干扰因素,目的在于测试分割算法在不同环境下的有效性.首先将图像转换到YCbCr颜色空间下,该色彩空间有着很好的聚类性,且聚类区域不随亮度的变化而变化;采用中值滤波去噪,能够有效除去图像中的细小噪声点,并保护图像轮廓完整性;然后利用融合了邻域像素连接权的自适应混合高斯模型实现对运动区域的提取,设定模型中的初始值为Kmax=3,α=0.01,σ=6,δ=2.5,μi为Xi,0的均方差;随后使用3.2节中提出的算法对运动区域进行阴影快速滤除,得到手部区域,其中τ=0.3,T=4;最后对提取出的手部采取中值滤波来去除过滤阴影时产生的噪声,同时进行形态学闭运算,去除手边缘轮廓上的锯齿和手部区域空洞,使边缘平滑[10].将本文前景提取方法与自适应GMM算法以及其它前景分割算法[11]进行对比实验,表1和表2列出本文算法的准确率(Precision)、召回率(Recall)和F值(F-measure),并和文献[7]、[11]的提取算法分别进行对比.准确率等于算法准确分割的运动目标像素数除以算法分割出的运动目标像素数;召回率为算法准确分割的运动物体像素数除以人工预先提取出并标注的运动物体像素数;F值=2*Precision*Recall/(Precision+Recall).
表1 本文方法与文献[7]的对比实验结果
Table 1 Experimental results of this method are compared with literature [7]
环 境文献[7]本文算法准确率召回率F值准确率召回率F值正常0.8530.8160.8340.9820.9800.981光照突变0.7390.7110.7250.9740.9700.972静止变运动0.6980.6880.6930.9630.9580.960
表2 本文方法与文献[11]的对比实验结果
Table 2 Experimental results of this method are compared with literature [11]
环 境文献[11]本文算法准确率召回率F值准确率召回率F值正常0.9460.9270.9360.9820.9800.981光照突变0.9250.8870.9060.9740.9700.972静止变运动0.8940.8300.8610.9630.9580.960
图5 阴影去除的效果Fig.5 Effectofshadowremoval图6 两种算法的平均F值对比Fig.6 ComparisonoftheaverageFvaluesofthetwoalgorithms
从表1和表2看出,本文算法相较于其它前景提取方法在准确率和召回率上有了较大提高,能够应对光照和背景环境变化,满足分割要求.召回率的提高,是由于本文利用邻域像素连接权对原有自适应GMM算法予以改进,一定程度上避免了空洞与轮廓锯齿等错误的产生.准确率的提高则由于去阴影算法的加入,去除了阴影带来的误检.过程中为无监督学习,因而算法拥有较强的可移植性与应用性.图5为阴影去除效果,表明3.2节中设计的算法有效地去除了阴影.图6为本文方法与文献[7]和[11]中方法在相同数据集下的平均F值对比,反应了算法的总体平均前景分割水平,图中选取了数据集中第151帧至200帧作为展示.归纳各种环境信息,本文方法的分割准确率有所提升.
本节实验目的在于获得改进后的指尖检测算法的准确率, 采用sebastien marcel的手势数据库(Hand Posture and Gesture Datasets), 此数据库的背景固定单一, 认为是理想背景状态下的手势图像序列, 故可以忽略前景分割效果对本节实验的影响, 直接测试3.3节改进方法.利用3.1节和3.2节的方法得到手部图像后, 将其转换为二值图像, 得到图像轮廓点坐标, 利用2.2节的重心距离算法检测出候选点, 然后利用3.3节方法对其改进, 该方法仅将候选指尖点所在边缘与其对应候选圆进行误差检测, 因而算法简单快速.
表3 不同检测方法的准确率对比
Table 3 Comparison of different detection methods
指尖个数相对位置法K余弦法曲率法本文方法190.82%89.53%89.03%97.35%291.59%86.56%87.57%97.94%388.45%91.04%93.05%97.65%489.36%84.07%85.05%98.76%592.63%89.04%91.02%98.93%
由图1分析结果中的假点可知其出现在手腕边界处,且位于手部轮廓重心的下方,考虑利用重心距离算法得到候选点后直接利用重心与假点的位置关系这一先验知识来去除干扰点,将这一方法命名为“相对位置法”.但“相对位置法”的弊端在于手的角度变化可能会使得某些指尖点位于重心下方,尤其是母指指尖经常由于角度及张开度的问题而位于重心下方,会造成指尖点检测不全的问题.将“相对位置法”与3.3节的改进算法进行实验对比,同时与其它常用的指尖检测算法[12-14]对比,结果为表3内容.
为了验证本文方法从实验数据采集到识别出指尖点的整体过程是否满足实时性并得到算法整体的准确率.采用5.1节获取的视频作为输入数据, 对其利用5.2节和5.3节的步骤进行处理, 实验效果如图7所示.图7中选取视频中第106、 526、 95、 302、 274、 90、 204、 429、 348帧作为效果展示.图7中每组图的首行是原始图像, 第二行是前景分割结果, 第三行显示指尖粗检测结果, 第四行显示假点滤除的结果.从图7各组第三行看出, 正常伸出的手指均可准确检测为指尖点, 同时出现干扰点.图7中(a)、 (b)、 (c)的第四行为本节实验的最终效果, 需要检测的指尖均得到正确检测的同时去除了非指尖点.
最终,统计出本文提出的方法对本节采集数据集的整体实验的平均准确率为97.26%,具有有效性,且处理速度较快,每帧图像实验整体过程平均耗时为23.43ms,满足实时性.整体过程建立在带有彩色单目摄像头的PC机条件下,具备简单方便的特点,有实际应用意义.与其他文献中方法的整体实验的平均准确率以及平均处理时间的对比数据如表4所示.
图7 检测过程及效果图Fig.7 Test process and results
表4 整体实验准确率对比结果
Table 4 Comparison of the accuracy of the whole experiment
类 别文献[12]文献[13]文献[14]本文改进方法平均准确率87.63%91.55%89.02%97.26%平均处理时间28.27ms31.22ms30.01ms23.43ms
前景分割中融合了邻域像素连接权的自适应混合高斯背景建模和针对阴影误检这一问题提出一种带权色彩差异的阴影检测算法,达到了背景、光照变化等情形下得到手部区域的目的,增加了模型的准确性和实用性,为准确的检测指尖提供条件.在检测指尖时采用改进后的重心距离算法,摆脱了因手旋转变化而引起的误检问题,且不受人手与镜头距离远近的束缚.算法运行速度快且准确,符合实时性与稳定性原则.但还是有改进的地方,比如:当指尖存在遮挡时指尖检测算法会受到很大影响,这也是所有基于轮廓分析方法检测指尖的一个共有问题,考虑置双摄像机的方式可以解决此问题.
[1] Chen Yan-yan,Chen Xiao-qin.Gesture recognition based on Kinect and its application in virtual assembly technology [J].Electronic Design Engineering,2013,21(10):4-7.
[2] Deng Rui,Zhou Ling-ling,Ying Ren-dong.Gesture extraction and recognition research based on Kinect depth data [J].Application Research of Computers,2013,30(4):1263-1265.
[3] Feng Zi-yong,Xu Shao-jie,Zhang Xin,et al.Real-time fingertip tracking and detection using Kinect depth sensor for a new writing-in-the air system [C].International Conference on Internet Multimedia Computing and Service,Association for Computing Machinery(ACM),2012:70-74.
[4] Yuan Fang-jian,Wang Yi-xuan,Wang Yi-gang,et al.Fingertip detection and gesture identification based on Kinect depth image [J].Electronic Science and Technology,2014,27(8):6-10.
[5] Farooq,Javeria,Muhaddisa Barat Ali.Real time hand gesture recognition for computer interaction[C].International Conference on Robotics and Emerging Allied Technologies in Engineering,IEEE,2014:73-77.
[6] Chris Stauffer,Grimson W E L.Adaptive background mixture models for real time tracking [C].Proceedings of IEEE International Conference on Computer Vision and Pattern Recognition.IEEE Xplore,1999:46-252.
[7] Zhang Yong,Liu Qiao-ling.Moving target detection method based on adaptive threshold [J].Computer Engineering and Applications,2014,50(12):166-168.
[8] Bhuyan M K,Neog D R,Kar M K.Fingertip detection for hand pose recognition [J].International Journal on Computer Science & Engineering,2012,4(3):501-506.
[9] Dar-Shyang Lee.Effective gaussian mixture learning for video background subtraction [J].IEEE Transactions on Pattern Analysis & Machine Intelligence,2005,27(5):827-832.
[10] Deng Cai-xia,Yin Yin,Ma Wei-feng,et al.Edge detection based on improved LOG operator and wavelet transform [J].Journal of Harbin University of Science and Technology,2012,17(5):87-90.
[11] Liu Jian,Liu Ya-nan,Gao En-yang,et al.Human detection method based on foreground segmentation [J].Journal of Chinese Computer Systems,2014,35(3):654-658.
[12] Xu Yi-chun,Shen Hang-yu,Chen Lian,et al.Robust system framework and improvement of algorithms in fingertips detection[J].Computer Engineering and Applications,2013,49(15):195-200.
[13] Raheja J L,Mishra A,Chaudhary A.Indian sign language recognition using SVM[J].Pattern Recognition and Image Analysis,2016,26(2):434-441.
[14] Li Bo-nan,Lin Fan.Fingertip detection method based on curvature [J].Journal of Nanjing University of Aeronautics & Astronautics,2012,44(4):587-591.
附中文参考文献:
[1] 陈艳艳,陈小芹.基于Kinect的手势识别及在虚拟装配技术中的应用[J].电子设计工程,2013,21(10):4-7.
[2] 邓 瑞,周玲玲,应忍冬.基于Kinect深度信息的手势提取与识别研究[J].计算机应用研究,2013,30(4):1263-1265.
[4] 袁方剑,王毅轩,王毅刚,等.基于Kinect深度图像的指尖识别及手势判定[J].电子科技,2014,27(8):6-10.
[7] 张 永,刘巧玲.基于自适应阈值的运动目标检测方法[J].计算机工程与应用,2014,50(12):166-168.
[10] 邓彩霞,阴 茵,马伟凤,等.改进的LOG算子与小波变换融合的边缘检测方法[J].哈尔滨理工大学学报,2012,17(5):87-90.
[11] 刘 剑,刘亚楠,高恩阳,等.基于前景分割的行人检测方法[J].小型微型计算机系统,2014,35(3):654-658.
[12] 徐义春,沈沆瑜,陈 炼,等.鲁棒性指尖检测框架及其算法改进与分析[J].计算机工程与应用,2013,49(15):195-200.
[14] 李博男,林 凡.基于曲率的指尖检测方法[J].南京航空航天大学学报,2012,44(4):587-591.
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!