徐义春,沈沆瑜,陈 炼,周敦广
三峡大学 计算机与信息学院,湖北 宜昌 443002
鲁棒性指尖检测框架及其算法改进与分析
徐义春,沈沆瑜,陈 炼,周敦广
三峡大学 计算机与信息学院,湖北 宜昌 443002
XU Yichun,SHEN Hangyu,CHEN Lian,et al.Robust system framework and improvement of algorithms in fingertips detection.Computer Engineering and Applications,2013,49(15):195-200.
在人机交互的发展历程中,键盘和鼠标的发明把人类带到一个图形用户接口的时代,这些设备在人机交互方面的贡献是显而易见的。如今,触屏技术在人际交互方面已经给用户带来很大的便利,但仍很难进行高度自由的输入,在交互的自然性、直观性和灵活性等方面还很欠缺。因而,非接触式的人机交互方式——手势识别成为近年来的研究热点,作为手势识别关键技术的指尖检测算法也吸引了众多研究人员的目光。
目前,大量文献都是用模板匹配、支持向量机、神经网络或隐马尔可夫模型[1-4]等方法来进行手势识别,而忽视了利用指尖信息进行识别带来的好处。虽然,指尖个数只有0~5这六种情况,但是如果将这些手指组合成两位数来进行识别则会有36种手势,由此可见,利用指尖信息进行手势识别可以满足需要大量手势的应用,如手势遥控电视或电脑等。同时,利用指尖信息进行手势识别方便易行,不需要搜集样本图片进行训练,直接对得到的图片进行检测就能对相关手势做出响应。
手指的非刚性特点,使得手区域变化万千,形态各不相同,因而使徒手指尖检测成为计算机视觉领域内一项具有挑战性的工作。另外,手指运动时带来的畸变也给检测带来了困难。早期的一些工作通过对手指做标记或佩带特殊的手套[5-7]来降低指尖检测的难度,也采用红外摄像头[8]或多个摄像头[9]来提高指尖检测的鲁棒性。尽管定位结果比较准确,但使用不便,设备成本偏高。目前,极坐标、模板匹配和边缘曲率分析[10]的方法已经用于检测手指或指尖,并在特定情况下取得较好的效果,但是这些方法对噪声、手指方向、目标尺度大小等条件比较敏感,难以满足检测指尖时手势输入的自由性和实时性。
针对现有系统的弱点,本文提出了一个鲁棒性的指尖检测框架,采用背景建模和肤色检测相结合的方法,以获得较高质量的手部区域。采用改进了的指尖检测算法,使其具有自适应性。最后对误检指尖进行滤除,进一步提高检测精度。
本文改进的自适应指尖检测算法,不仅具有一定的容噪能力,而且还能自动适应手指方向和目标尺寸大小的改变,从而提高算法的鲁棒性和实用性。此外,本文提出的自适应算法与其他手势识别方法相比,不仅可以应用于静态手势识别,还可以应用于动态手势识别。在该算法的基础上加入跟踪算法即可实现用手指控制电脑,将检测到的指尖数进行组合即可充当电视机遥控器或空调遥控器等。总之,自适应指尖检测算法在遥控电视、手控电脑等智能家居方面有广阔的应用前景,同时,也有利于手势识别方向的进一步发展。
自适应指尖检测算法的总体流程框图如图1所示。利用运动和肤色信息相结合的方法提取出目标手区域,并进行预处理,即可提取出目标边缘点。然后,用融入排漏算法的自适应指尖检测算法检测出候选指尖并用凹凸性信息排除指谷点。最后运用排除误检指尖算法对检测出的候选指尖进行筛选,提高指尖检测率。
图1 指尖检测算法总体流程图
2.1 手区域检测
人的肤色信息很容易检测,但是通过用肤色色彩范围来提取肤色区域却很困难,因为在视频或图片中肤色会随设备和环境的不同而变化,故本文采用混合高斯模型(GMM)和肤色信息[11]相结合的方法来提取目标手区域。采用这种方法不仅可以正确检测出手区域,还可以滤除类肤色静态目标,而且简单易行。
采用GMM提取出帧图片中的运动信息(如图2(b)所示)后,再通过式(1)提取出运动区域内的肤色信息,即可得到目标手区域(如图2(c)所示)。
式中,Rt(x,y)、Gt(x,y)、Bt(x,y)分别表示第t帧图像的红、绿、蓝分量的对应像素值,τ是门限值。
图2 手区域检测及轮廓提取
为了减小噪声对检测结果的影响,本文还采用了中值滤波和贴标签等预处理方法来进行滤噪处理。图2(d)显示了经过预处理后的手区域图像,图中目标区域中心的灰色点是由式(2)计算出来的质心。
式中,xm、ym表示质心在图像中的坐标,S表示目标连通域,Ns表示连通域内的像素总个数。
2.2 轮廓提取
边缘检测与轮廓提取相比,前者是并行处理技术,检测出来的边缘往往不是封闭的,而且要加入其他的算法才能将得到的边缘点按指定的顺序存储;而轮廓提取是一种串行的检测技术,它不仅可以提取出目标的边缘,还可以将这些边缘点按指定的顺序存储起来,方便后续指尖检测算法的实行。
图像中的任一点总有8个点和它相邻,即8邻域点,若当前点p(x,y)是一个边缘点,则下一个边缘点一定在点p(x,y)的八邻域内。一旦找到目标区域的一个边缘参考点,则可用轮廓检测算法中的八邻域搜索法[12]搜索目标的所有边缘点并按指定顺序(顺时针或逆时针方向)存储起来,如式(3)所示。提取出的轮廓如图2(e)所示。
式中,pi表示第i个边缘点,(xi,yi)表示pi在图像中的坐标位置,N是所有边缘点总数。
自适应指尖检测算法的详细流程图如图3所示。该算法主要由融入排漏(排除漏检指尖)算法的改进k-余弦算法、凹凸性检测和误检指尖滤除等算法组成。
3.1 k-余弦计算
如图2(e)所示,若在每个手指指尖位置的左右两边沿边缘找离指尖k个像素的点,则指尖与这两个点的连线就会形成一个较小的夹角,而手区域其他边缘点(除指尖和指谷点外)则没有此特征。因此,指尖检测算法可转化为寻找最优的k值,且k值对应的边缘点越靠近指谷点,形成的夹角越小,则检测指尖效果越好。
如式(3)所示,假设pi(xi,yi)是指尖点,则距该指尖点k个像素的左、右边缘点分别为pi-k(xi-k,yi-k)和pi+k(xi+k,yi+k),则pi与pi-k和pi+k组成的k向量如式(4)所示:
图3 自适应指尖检测算法详细流程图
而ai,i-k和ai,i+k两向量组成夹角的k-余弦的计算公式如式(5)所示。
由式(5)可知,k-余弦的值主要受向量ai,i-k和ai,i+k中k值的影响,当k值过小或过大时,计算出的k-余弦值均会因太小而被漏检。所以,在不同尺寸大小的目标手区域中自适应地找出最优k值才是算法的关键所在。
为了找出最优k值,文献[10]提出了一种尺度不变的指尖检测算法,即弧和弦的差值在误差允许范围内找出最大的k值。弧弦距离差由式(6)来计算:
弧弦距离差最大允许误差可以是一个常量β,但是为了尺度不变地找出最优k值,文献[10]用β||t来充当弧弦距离差的误差阈值。虽然该算法能找到最优k值,但是当手区域大小不一时,该算法就会失去其效用。
为了克服文献[10]中存在的问题,本文提出了一种尺度不变且自适应手区域大小变化的指尖检测算法。但此处的尺度不变与文献[10]中的尺度不变不一样,这里的尺度不变不仅|t|是时变的,β值也会随目标大小而变化。而且β值与手掌宽度成正比,与图像宽度成反比,即β=λθ,式中λ是可调因子,θ是手掌宽度与图像宽度的比值。所谓手掌宽度则是指目标轮廓垂直和水平方向最大长度中的较小值。时变||t值由式(7)来确定:
式中N是边缘点总个数,arci,t和chordi,t分别表示第i个边缘点与第t个边缘点之间的弧长和弦长,其计算公式分别如式(8)和式(9)所示:
式(8)中xk±1中的符号分别表示第i个边缘点左右两边边缘点的横坐标(边缘点按逆时针方向存储)。本文求取可变值方法与文献[10]的不同之处在于文献[10]中计算||t值方法对β值的变化过于敏感,不便调整,而本文采用如式(7)求弧弦长度差来确定||t(即k-余弦的k值)值的方法却能克服这一缺陷。
为了降低检测结果中的漏检率,本文在该算法中还加入了排漏算法。由于造成指尖漏检的主要原因是获取的图片中指尖过平或噪声太大,因而要降低漏检率,就需在计算arci,t和chordi,t之前略过这些较平边缘区域,即在式(3)中找到与指尖点pi前后相距k个像素值的其他两个边缘点pi-k和pi+k,然后在此基础上再计算arci,t和chordi,t值,并将所有满足条件的边缘点作为候选指尖点。
3.2 凹凸性判别
用融入排漏算法的指尖检测算法找出所有候选指尖点后,先用类似聚类的方法集中每个手指的候选指尖点,然后再取各个集合的中间值,即可得到所需的目标点。但是,这些目标点中并不全都是指尖点,还有一些需要剔除的指谷点。
如图2(d)所示,相对手区域质心来说,指尖点都是凸出来的,而指谷点都是凹进去的,故可利用凹凸性来滤除指谷点。凹凸性判别公式如式(10)所示:式中,di表示第i个边缘点到质心的欧氏距离,s值是随手区域尺度大小变化的。
3.3 滤除误检指尖
由于运动的手与图像边缘或非肤色区域会形成一定角度,当这个角度足够小时,就会造成误检。为了尽可能避免此情况对检测结果的影响,本文在原有算法基础上还加入了滤除误检指尖算法。
如图3所示,滤除误检指尖模块中的指宽是指在确定指尖位置后,沿边缘寻找到的距离指尖点 ±n个像素的两点间的欧式距离;而这两点的中点与指尖点构成的向量则是指向;指长则是指沿边缘离指尖 ±ni(i=0,1,…,N)个像素的两点间欧式距离与指宽相近的个数。
由于指宽、指长信息滤除误检只对指尖数较少时才有较好效果,对于指尖数较多(多于两个)且大拇指包含其中时,指宽、指长信息排误算法不仅不能较好地滤除误检指尖,还会滤除正确检测的指尖。而用指向信息排除误检,只对指尖数较多时才具有较好的排误效果,当指尖数较少(少于三个)时则无法实施或效果不佳。针对这两种算法的利弊,本文将这两种方法相结合,当指尖数较少且不能应用指向算法时,应用指宽、指长信息滤除误检指尖;若能应用指向算法,则先用指宽、指长信息排误,但是指宽、指长限制条件适当放宽,然后再用指向进行排误。
4.1 实验结果
本文提出的算法在Visual C++平台实现,并在因特尔处理器的笔记本上进行测试(CoreΤMi3,2.53 GHz)。图片是通过分辨率为320×240的罗技摄像头获取,获取的图片中手区域尺寸大小不一、角度各不相同,且部分还有手臂干扰,如图4所示。获取的图片共有12 701幅,其中0指尖图片有2 618幅,1个指尖图片有2 009幅,2个指尖图片有2 161幅,3个指尖图片有2 053幅,4个指尖图片有2 071幅,5个指尖图片有1 789幅。图中的所有目标均是通过运动信息和肤色信息共同提取出来的。
图4 部分指尖检测测试图
表1 指尖数检测结果比较
表2 加入本文提出的排误算法后指尖数检测结果比较
表1是文献[10]算法、文献[11]算法和本文自适应算法(均未加入排误算法)在相同的图片库下进行指尖检测的结果数据。表2是在文献[10]、文献[11]和本文提出的自适应算法中融入排误算法的指尖检测结果数据。表1、表2中的数据均表示指尖被正确检测、漏检或误检的图片数及其对应的正检率、漏检率和误检率。
如表1所示,文献[10]、文献[11]和本文提出的自适应算法对12 701幅测试图片的指尖正检率(正确检测率)分别为70.39%、72.81%和74.51%,误检率分别为22.89%、15.01%和19.46%,漏检率分别为6.72%、12.18%和6.15%。从这些数据中可以看出,本文自适应算法的指尖检测率比文献[10]高主要是因为降低了误检率,而对于文献[11]来说,则主要是因为降低了漏检率,而本文提出的自适应算法漏检率最低,正是本文自适应算法的优势所在。
如表2所示,当指尖个数为0和1时,用指宽、指长信息进行排误;当指尖个数是两个或两个以上时,先用指宽、指长信息排误,再用指向信息来进行排误,但是考虑到大拇指和小拇指的影响,指宽、指长条件适当放宽。利用上述算法进行排误后,文献[10]、文献[11]和本文提出的自适应算法对12 701幅测试图片的指尖正检率分别为86.80%、82.96%和91.65%,误检率分别为4.38%、3.25%和5.05%,漏检率分别为8.82%、13.79%和3.30%。将这些数据与表1中对应数据相比可知,融入排误算法后,文献[10]、文献[11]和本文提出的自适应算法误检率均大大降低,下降幅度分别为18.51%、10.45%和14.29%,而对应的漏检率下降幅度分别为-2.1%、1.58%和2.85%。融入排误算法后,文献[10]的漏检率升高是因为部分正检指尖因排误算法被漏检,而文献[11]和本文自适应算法漏检率下降是因为融入排误算法后k-余弦门限值可适当降低(均降至0.5),故漏检率有所下降。本文自适应算法融入排误算法后,正检率比文献[10]和文献[11]分别高4.85%和6.81%是因为本文提出的自适应算法本身就具有一定的排误和排漏功能,利用本文提出的自适应算法进行排漏后,再用本文的排误算法进行排误,可以在降低漏检的同时大幅降低误检,故本文自适应算法融入排误算法后,可以大幅度降低漏检和误检,从而提高指尖的正检率。
如表2所示,应用滤除误检指尖算法后,正检率大幅提升。但是,当指尖数为2时文献[10]、文献[11]和本文的自适应算法的正检率分别只有83.76%、84.17%和88.15%,相对同种算法其他指尖个数来说指尖正检率较低,这是因为当指尖个数为2且存在误检时,正确指尖与误检指尖方向互成角度大致相同,同时,指宽、指长条件又适当放宽,故误检指尖难以排除。不过整体而言,本文提出的融入排误算法的自适应指尖检测算法正检率之所以最高是自适应算法的排漏效果和排误算法的排误效果共同作用的结果。
4.2 结果分析
如图5所示,(a)是测试原图,从左至右目标手区域掌宽分别为46、74、87、119、131和168个像素(掌宽计算在3.1节已介绍)。(b)~(d)分别为用文献[10]、文献[11]和本文自适应算法(均未加入排误算法)对(a)进行检测的效果图。如图5所示,用文献[10]算法对掌宽为46、74、119和131的原图进行指尖检测时,有漏检;用文献[11]算法对掌宽为74和168的原图进行检测时,有漏检;但是,用文献[10]、文献[11]和本文自适应算法对掌宽为87的原图进行检测时,均能正确检测出指尖。文献[10]和文献[11]算法之所以会出现漏检,是因为漏检指尖对应的k-余弦阈值过高所致,若降低该门限值,虽能解决此处的漏检问题,但会增加其他图片指尖检测的误检而使得最终的指尖正检率有所下降。而漏检指尖对应的k-余弦阈值之所以会过高是因为文献[10]采用的基于尺度不变的可变k-余弦指尖检测方法和文献[11]采用的固定k值的k-余弦指尖检测方法,都是针对目标尺寸相差不大的图片进行的。若带入实验所得最佳参数对目标尺寸多样化的图片进行检测,只对部分尺寸大小目标的检测结果较好,而对其他尺寸目标的检测均会出现漏检或误检,难以兼顾不同尺寸大小目标的指尖检测,图5就很好地说明了这一点。
图5 文献[10]、文献[11]方法与自适应方法对比图
在实际应用中,当输入手势时,有时会因手区域被图像边缘所截而造成误检,但此误检可以通过排除图像边缘点滤除。而手区域被非肤色所截造成的误检则只能通过滤除误检算法来排除,本文提出的排误算法效果图如图6所示。本文提出的滤除误检算法之所以可以得到较好的效果,是因为图6(a)(b)中误检指尖方向与其他五个指尖方向之间的夹角较大,而正确五个指尖方向之间的夹角相对较小,故可以很好地排除误检指尖。
图6 本文算法的排误效果图
由于本文的指尖检测算法融入了自适应算法、排漏算法和滤除误检指尖算法,故本文算法与文献[10]和文献[11]的指尖检测算法相比,总的检测率分别有21.26%和18.84%的提升。即使如此,本文算法在较大噪声的影响下仍存在漏检和误检,故本文算法仍需进一步改善。
针对不同尺寸目标手区域,本文提出了一种自适应的指尖检测算法。首先通过高斯混合模型检测出运动区域,并根据肤色信息从运动区域中提取出目标手区域;然后应用融入排漏算法的自适应k-余弦算法找到候选指尖点,并利用凹凸性和滤除误检指尖算法对提取出的候选指尖点进行进一步的筛选。实验结果表明,该算法不仅不受手区域尺寸大小的影响,而且对手区域边缘具有一定的容噪能力,因此指尖的检测率可高达91.65%。但是,由于该算法受噪声影响仍存在漏检和误检且指向有所偏移,故本文算法有待进一步的研究与改善。
[1]张秋余,王道东,张墨逸,等.基于特征包支持向量机的手势识别[J].计算机应用,2012,32(12):3392-3396.
[2]谭昶,肖南峰.基于改进RCE和RBF神经网络的静态手势识别[J].计算机工程与应用,2011,47(7):172-176.
[3]尚小晶,田彦涛,李阳,等.基于改进概率神经网络的手势动作识别[J].吉林大学学报:信息科学版,2010,28(5):459-466.
[4]于美娟,马希荣.基于HMM方法的动态手势识别技术的改进[J].计算机科学,2011,38(1):251-252.
[5]Hillebrand G,Zuerl K.Finger tracking for virtual agents[C]// 7th International Conference,IVA 2007,Paris,France,2007:417-419.
[6]Hillebrand G,Bauer M,Achatz K,et al.Inverse kinematic infrared optical finger tracking[C]//9th International Conference on Humans and Computers(HC 2006),Aizu,Japan,2006.
[7]Wang R Y,Popovic J.Real-time hand-tracking with a color glove[C]//ACM SIGGRAPH Conference 2009,New Orleans,LA,2009.
[8]Sato Y,Kobayashi Y,Koike H.Fast tracking of hands and fingertips in infrared images for augmented desk interface[C]// Proceedings of the 4th IEEE International Conference on Automatic Face and Gesture Recognition.Grenoble,France:IEEE Computer Society,2000:462-467.
[9]Belaroussi R,Milgram M.A real time fingers detection by symmetry transform using a two cameras system[C]//4th International Symposium,ISVC 2008,Las Vegas,NV,USA,2008:703-712.
[10]Lee D,Lee S G.Vision-based finger action recognition by angle detection and contour analysis[J].EΤRI Journal,2011,33(3):415-422.
[11]Lee Y J,Lee D H.Research on detecting face and hands for motion-based game using Web camera[C]//2008 International Conference on Security Τechnology.Hainan,China:IEEE Computer Society,2008.
[12]于洋.基于手形特征的静态手区域识别[D].天津:河北工业大学,2007.
XU Yichun,SHEN Hangyu,CHEN Lian,ZHOU Dunguang
College of Computer and Information,China Τhree Gorges University,Yichang,Hubei 443002,China
A robust system framework of fingertips detection is proposed to deal with missing detections,false detections,and sensitivity to the hand area size.After detection of the hand area based on motion information and skin color,fingertips are detected by an adaptive fingertips detection algorithm which can avoid missing detections.Τhen the parameters such as finger width,finger length,finger orientation,and palm width are used to filter the false detections.Τhe experimental results show that the proposed adaptive fingertips detection algorithm has high detection rate and good robustness compared with the existing fixed and variablek-cosine algorithms.
fingertips detection;scale invariant angle detection;contour extraction;adaptive;k-cosine
针对目前指尖检测中存在漏检、误检且易受手区域尺寸大小影响等缺陷,提出了一种加强检测性能的指尖检测框架,对算法自适应性进行了针对性的改进。在利用运动信息和肤色信息提取出手区域的基础上,用包含排漏算法的自适应指尖检测算法检测出指尖,通过提取每个指尖对应的指宽、指长、指向以及手掌宽度信息对检测到的指尖进行筛选,排除误检的指尖,分别与固定k-余弦算法和可变k-余弦算法进行比较,实验结果表明提出的自适应指尖检测算法检测率高、鲁棒性好。
指尖检测;尺度不变角度检测;轮廓提取;自适应;k-余弦
A
ΤP391.41
10.3778/j.issn.1002-8331.1303-0452
国家自然科学基金(No.61272237,No.61102155);湖北省自然科学基金(No.2011CBD180);三峡大学研究生科研创新基金(No.2012CX045)。
徐义春(1970—),男,博士,副教授,主要研究方向:计算智能及机器视觉;沈沆瑜(1989—),男,硕士研究生在读,主要研究方向:计算机视觉。E-mail:shenhangyu@gmail.com
2013-03-28
2013-05-21
1002-8331(2013)15-0195-06