kaiyun官方注册
您所在的位置: 首页> 嵌入式技术> 设计应用> 基于颜色识别的手指多点跟踪人机交互系统
基于颜色识别的手指多点跟踪人机交互系统
来源:微型机与应用2012年第1期
王鹏程,官洪运,许文杰,邬晓琳
(东华大学 信息学院,上海 201620)
摘要:基于英特尔凌动处理器的嵌入式平台和Windows操作系统,以OpenCV2.0库为图形识别处理基础,运用颜色识别、肤色识别、手指动作识别等非接触式实现跟踪技术,构建了一个基于手指动作识别的多点人机交互系统。该系统能够跟踪双手共四个手指的动作,实现图片的多点“触控”、画图、PDF文件浏览功能。
Abstract:
Key words :

摘 要:基于英特尔凌动处理器的嵌入式平台和Windows操作系统,以OpenCV2.0库为图形识别处理基础,运用颜色识别、肤色识别、手指动作识别等非接触式实现跟踪技术,构建了一个基于手指动作识别的多点人机交互系统。该系统能够跟踪双手共四个手指的动作,实现图片的多点“触控”、画图、PDF文件浏览功能。
关键词:多点跟踪;颜色识别;OpenCV;人机交互

 随着计算机视觉技术的发展以及人们对新的交互手段的需求,基于计算机视觉的交互系统也逐渐发展起来。传统的交互方式如鼠标、键盘、手柄等在某些特殊领域己经无法发挥便利的作用。本系统将计算机视觉技术做新的应用,带来了人机交互的便利,实现如画图、图片浏览等功能,将电视棒连接到处理器后还可实现对网络电视的频道切换和音量控制。本系统是基于颜色识别的多点跟踪识别系统,可以通过识别手部的动作(如拉伸、靠近等动作)实现对计算机及与其连接设备的控制功能,让用户完全摆脱对遥控器和鼠标的依赖,实现更加便捷、人性化的人机交互。
 传统的人机交互方式在使用过程中确定性比较强,比如按下键盘的按钮或者点击鼠标的左右键,计算机都己将此关联到一定的系统事件中。
而基于颜色识别的手指多点跟踪交互方式表达的意义丰富。如带上颜色标记的指套后,通过不同手势、位置、方向等可以组合出多种信息,更能符合人的操作习惯。整个交互的流程为:先通过摄像头拍摄手势图像视频流,然后从图像中根据特定算法提取出手指的颜色和识别点以及位置信息,之后把这些信息点进行相应分类取舍,接着基于Windows API将这些提取出的信息点根据需求驱动相应的系统动作。
1 常用的色彩模型及转换
1.1 常用的色彩模型

 本系统涉及到的色彩空间有:
 (1)RGB颜色模型
 RGB彩色系统为一直角坐标系统,其中的三个基量是选择可见光中的三原色光,为使色光定义能够统一,CIE定出三原色的波长为红(700 nm)、绿(546.1 nm)和蓝(435.8 nm)。通常不直接处理RGB彩色影像,例如欲从一个彩色影像中找出物体的边缘,如果分别对R、G和B以边缘强化处理,如此得到的为一个别成份的边缘而非物体的真正边缘。直接处理RGB影像的情况只有在每个成份改变的情形都一样时,才不会造成颜色失真。
 (2)HSV颜色模型
 HSV色彩属性模式是根据色彩的三个基本属性:色相、饱和度和亮度来确定颜色的一种方法。
色相(H)是色彩的基本属性,就是平常所说的颜色名称,如红色、黄色等,依照在标准色轮上的位置,取0~360°的数值(也有用100%的方法确定的)。饱和度(S)是指色彩的纯度,越高色彩越纯,低则逐渐变灰,取0~100%的数值。明度(V)也叫“亮度”,取0~100%。这种模式是1978年由AlvyRaysmith创立的,它是三原色光模式的一种非线性变换。
1.2 颜色模型转换
 研究表明,虽然不同人的肤色相差很大,但通常不同人的肤色相差主要是亮度,而在色度上的差异并不大。因此需要把图像中表达颜色的色度与亮度分开。通常是将获取的图像中所用的R、G、B三原色的颜色分量所表达的色彩空间转换为HSV色彩空间,转换后就可以对人体肤色的色度进行一个闭值分割来达到肤色分割的目的。
 (1)肤色模型
 参考文献[1]结合了HSV颜色空间和RGB空间构造出混合肤色模型,该论文首先分析了肤色在H-S平面的聚类情况。并通过大量肤色样本,发现肤色像素在H-S平面上表现出的明显聚类,表明人体肤色的RGB图像转换到HSV色彩空间后H与S分量的关系。并且随光照强度不同,V的取值范围应较大,否则会忽略某些肤色像素点,同时也会引入误差。
 (2)CamShift颜色跟踪算法及其改进
CamShift算法(即“Continuously Apative Mean-Shift”算法)基本思想是将视频图像的所有帧作MeanShift运算,并将上一帧的结果作为搜索窗的初始值,如此迭代下去实现对目标的跟踪。
 (3)肤色模型+CamShift跟踪
 CamShift算法简单,跟踪实时效果较好,在简单背景下完全胜任跟踪识别要求,缺点是复杂背景图对识别精度有一定的干扰,导致跟踪不稳定。结合肤色识别和CamShift颜色跟踪算法,在每帧同时得到CamShift颜色跟踪窗口以及肤色二值图像,在颜色跟踪窗口中包含一定数量肤色二值像素时才认为是有效目标。
 合成的方案具有较好的识别跟踪效果,使用改进的CamShift算法,即便出现跟踪丢失现象,也会在数帧内再次跟踪上目标颜色,因此采用此方案为系统的实施方案。
2 系统功能与指标
 系统通过对4个指套颜色的识别与跟踪,可以在Windows操作系统中实现[2]如鼠标移动、点击、文档翻页和多点放大缩小。为了方便操作,一般左右手食指和拇指各戴一个指套,右手手指的移动作为鼠标移动和单击消息,用右手食指和拇指的“捏”的动作实现单击操作,而“捏住”并移动手指可以实现拖动操作。左手作为多点触控消息,在左右手的食指拇指同时“捏住”后,通过两手的远离拉开和靠近缩回实现“多点触控”。
3 实现原理
3.1 OpenCV基础

 OpenCV(全称是Open Source Computer Vision Library)[3]作为一个基本的计算机视觉、图像处理和模式识别的开源项目,可以直接应用于很多领域,作为二次开发的理想工具。
3.2 肤色模型
 先将原图像RGB色彩空间转换到HSV空间,然后判断像素点是否在肤色模型HSV取值中,若在范围内,则该像素点置”1”(255),即置为白色,否则设置为”0”(黑色)。再进行相应形态学处理以及轮廓提取便可得到肤色二值图像,进行深度信息提取。
3.3 CamShift颜色跟踪算法
 CamShift算法是MeanShift的修改算法,克服了MeanShift不适合实时跟踪的缺点。
 CamShift算法基本实现流程如下:
 (1)Back Projection背景投影计算
 计算Back Projection的步骤如下:
 ①根据目标颜色图像计算被跟踪目标的色彩直方图。
 根据如图1的目标颜色计算出如图2的直方图。


 利用背景投影图计算质心即跟踪窗口进行颜色跟踪。
 ②根据获得的色彩直方图将原始图像转化成色彩概率分布图像,这个过程称为Back Projection。
 (2)MeanShift重心计算
 MeanShift算法是一种一组数据的密度分布中寻找局部极值的稳定的方法。若分布是连续的,处理过程比较容易,这种情况下本质上只需对密度的直方分布图应用爬山算法即可。然而,对于离散的数据集,这个问题某种程度上是比较麻烦的。
 MeanShift算法步骤如下:
 ①选择搜索窗口。
 ·窗口的初始位置;
 ·窗口的类型(均匀、多项式、指数或者高斯类型);
 ·窗口的形状(对称的或歪斜的,可能旋转的,圆形或巨型);
 ·窗口的大小(超出窗口大小则被删除)。
 ②计算窗口(可能带权值的)的重心。
 ③将窗口中心设置在计算出的重心处。
 ④返回第②步,直到窗口的位置不再变化(通常会)。
 (3)CamShift算法
 将MeanShift算法扩展到连续图像序列,就形成了CamShift算法。它的基本思想是视频图像的所有帧作MeanShift运算,并将上一帧的结果作为下一帧MeanShift算法的Search Window的初始值,如此迭代下去,就可以实现对目标的跟踪。整个算法的具体步骤分5步:
 ①将整个图像设为搜寻区域。
 ②初始化Search Window的大小和位置。
 ③计算Search Window内的彩色概率分布,此区域的大小比Search Window要稍微大一点。
 ④运行MeanShift,获得Search Window新的位置和大小。
 ⑤在下一帧视频图像中,用③获得的值初始化Search Window的位置和大小。跳转到③继续运行。
 在OpenCV中,有实现CamShift算法的函数cvCamShift,使用较方便。
3.4 合成方案:肤色模型+改进CamShift跟踪
 结合肤色识别和CamShift颜色跟踪算法,在每帧同时得到CamShift颜色跟踪窗口以及肤色二值图像,在颜色跟踪窗口中包含一定数量肤色二值像素时才认为是有效目标。如图3所示,系统分别识别出了肤色和目标色红色,并确认出介于肤色之间的红色位置才是目标位置。


综合肤色模型和CamShift颜色跟踪算法,可以在较复杂背景下实现目标颜色跟踪。
4 系统硬件组成
 系统硬件组成包括:核心控制系统、视频采集系统、USB接口的电视棒、天线、视频音频输出模块,系统硬件构成如图4所示。


5 系统软件流程
  整个软件系统分为三种状态:移动状态、单点状态、多点状态。通过设置两个标志位flag来判断所处状态。只有进入单机状态后才能进入多点状态,而一旦退出多点状态将进入移动状态(如图5)。在图形界面上,本系统用VS2005的MFC框架,基于Dialog的结构,编写了友好的人机交互界面[4]。

如下代码介绍了如何在获取的视频信号中识别红色指套,其他颜色的指套采用相同的方法可进行识别,由识别到的手指位置对Whindows鼠标消息进行响应,从而对系统进行控制[5]。
 (1)构建搜索目标色的数据结构
 histRed=cvCreateHist(1,&hdims,CV_HIST_ARRAY,
 &hranges,1); //分配直方图
 imgRed=cvLoadImage("red.jpg");//读取四色基图
 cvCvtColor(image,hsv,CV_BGR2HSV);
 //彩色空间转换 BGR to HSV
 cvScalar(180,256,MAX(_vmin,_vmax),0),mask);
//得到二值的MASK
 cvSplit(hsv,hue,0,0,0); //只提取HUE分量
 (2)CAMSHIFT算法及形态学滤波
 cvCalcBackProject(&hue,backproject,histRed);
 //使用back project方法
 cvAnd(backproject, mask, backproject,0);
 cvMorphologyEx(backproject,backproject,0,0,CV_MOP_ OPEN,1);
 cvMorphologyEx(backproject,backproject,0,0,CV_MOP_ CLOSE,1);
 cvCamShift(backproject, track_windowRed,
 cvTermCriteria(CV_TERMCRIT_EPS | CV_TERMCRIT_ITER,10,2),
 &track_compRed, &track_boxRed );
 本系统最大的特色在于用双手手指更形象的操作代替原来鼠标单一的左右键点击,并能完成部分鼠标单击无法完成的多点触控功能[6]。本系统使用OpenCV技术,通过对颜色的识别跟踪,实现了新型的输入方式,让电脑能够读懂人的动作。本系统的另一个特色是可以和电视棒、网络视频软件结合起来。多少年来,电视机的操作设备一直是遥控器,用户每次要对电视操作时都要找遥控器,费时费力,随着科学技术的发展,这种方式显得过于落后,本系统创新性的将基于颜色的手部动作识别和电视操作结合在一起,符合智能家居的概念,使得操作更加人性化。在实际测试过程中,本系统稳定运行,并且效果良好。
参考文献
[1] 黄菁.基于单目视觉的触摸屏技术研究[D].杭州:浙江工商大学,2009.
[2] RICHTER J, NASARRE C.Windows核心编程[M].北京:清华大学出版社,2009.
[3] BRADSKI G, KAEBLER A. Learning OpenCV[M].北京:清华大学出版社,2009.
[4] PROSISE J. Programing Windows with MFC Windows[M]. Microsoft Press, 2007.05.01.
[5] 郭世龙.基于Camshift算法的移动机器人视觉跟踪系统[D].武汉:华中科技大学,2008.
[6] 齐婷.基于视觉的多点触摸基本技术实现方法[D].昆明:昆明理工大学,2009.

此内容为AET网站原创,未经授权禁止转载。
Baidu
map