一种基于单目视觉的无实体虚拟鼠标方法

文档序号:8380511阅读:359来源:国知局
一种基于单目视觉的无实体虚拟鼠标方法
【技术领域】
[0001]本发明涉及一种基于单目视觉的无实体虚拟鼠标方法,属于计算机图像处理和计算机视觉技术的相关领域。
【背景技术】
[0002]所谓虚拟鼠标,在这里指的就是通过使用计算机视觉的方法来识别出人们的手势输入而模拟出真实鼠标的具体动作。而手势识别技术又使得人们能够使用一些简单的手势动作来进行交互式操作,这种无实体虚拟鼠标使得人们只需要使用自己的手势便可以实现鼠标动作的控制。
[0003]从手势识别的输入方式来看,手势识别可以分为基于数据手套的手势识别方式和基于计算机视觉的手势识别方式两种。而计算机视觉方式下的手势识别又可以分为基于标记特征的手势识别方式和基于自然特征的手势识别方式两种,本发明将使用基于自然特征的手势识别方式来为虚拟鼠标的模拟提供数据输入。J.Davis和M.Shan将戴上指尖具有高亮标记视觉手套的手势作为系统的输入,可识别7种手势;美国MIT媒体实验室的Starner,通过提取左右手质心的运动轨迹、手的形状等特征参数,结合语法规则识别出40个美国手语,正确率达到97% !Microsoft Korea的Hyeon和Kyu Lee,利用基于HMM的阈值模型从单手的运动轨迹识别出9种手势命令,平均识别率达到98.19%。
[0004]基于计算机视觉的手势识别方式根据使用的摄像头数目可以分为单个摄像头和多个摄像头两种类型。如果只使用单个摄像头则无法获取到手势的深度信息,只能获取到手势在二维平面上的投影信息;如果想要获取到手势的深度信息,则需要使用多个摄像头或采用深度摄像头。在现有的手势识别系统或一些实际应用环境中,手势的识别问题在一定程度上依赖着数据手套、特征标记等辅助措施。

【发明内容】

[0005]本发明的目的在于提供一种基于单目视觉的无实体虚拟鼠标方法,其能够利用手势准确地对鼠标动作进行模拟,将对非特殊环境下的裸手进行手势识别,从而使在不需要其他的辅助设备的情况下,仅通过单个摄像头获取的二维平面上的投影信息即可识别手势动作。
[0006]本发明的技术方案是这样实现的:一种基于单目视觉的无实体虚拟鼠标方法,由计算机,单目摄像头,手势输入,手势输入的有效区域组成;其中计算机和单目摄像头通过数据传输线进行连接;在计算机和单目摄像头已通过数据传输线进行连接并且能够正常工作的前提下,其特征在于虚拟鼠标的模拟步骤如下:
步骤1、在手势输入的有效区域内,手势输入通过单目摄像头将手势图像传送给计算机,以便对手势输入的手势图像进行识别,本发明可识别五种鼠标手势,每种手势依据指尖点的个数来进行区分和判定;
步骤2、将手势图像中每一个像素点RGB色彩空间的分量值转换到YCrCb色彩空间,RGB色彩空间到YCrCb色彩空间的转换公式为:
Y= 0.299 * R + 0.587 * G + 0.114 * BCr = -0.147 * R - 0.289 * G + 0.436 * BCb = 0.615 * R - 0.515 * G - 0.100 * B
其中,R、G、B分别表示RGB色彩空间中红色通道、绿色通道和蓝色通道分量的取值,Y、Cr、Cb分别表示YCrCb色彩空间中各通道分量的取值;
步骤3、在YCrCb色彩空间中,设定[(Cr + Cb)/2]参量的取值范围为[a。a2]和(Cr-Cb)参量的取值范围为[b1; b2],然后根据[(Cr + Cb)/2]和(Cr - Cb)参量的取值范围来确定手势图像中各像素点是否为肤色,如果手势图像中某一像素点的[(Crp + Cbp)/2]和(Crp - Cbp)的取值均在[(Cr + Cb)/2]和(Cr - Cb)参量的取值范围内,则该像素点为肤色并将其颜色设置为白色,否则不是肤色并将其颜色设置为黑色,从而得到二值化后的肤色提取图像;
步骤4、通过使用freeman链码搜索算法对二值化肤色提取图像中的所有离散像素点进行轮廓搜寻,在对所有离散像素点进行轮廓搜寻时对每一个像素点进行八邻域的边缘试探识别;设定边缘的跟踪方向为顺时针方向,某一像素点八邻域内的所有像素点均为白色则不是边缘像素点,否则该像素点为边缘像素点并将该轮廓边缘点标记为“未搜寻”,并且每一个边缘像素点的链码判定方向顺序为:左上、上、右上、右、右下、下、左下、左;
步骤5、按照从上到下、从左到右的方向对所有边缘像素点进行轮廓边缘的搜寻,设搜寻到的第一个标记为“未搜寻”的轮廓边缘点01为该边缘轮廓的起始点,然后按照链码判定方向的顺序对轮廓边缘点O1的后继轮廓边缘点进行搜寻,一旦搜寻出轮廓边缘点并且该轮廓边缘点的标记为“未标记”,则将该轮廓边缘点P11作为轮廓边缘点ο工的后继轮廓边缘点并将该边缘轮廓点标记为“已搜寻”,依次类推搜寻出P11的后继轮廓边缘点P Λ…、ρΛ1的后继轮廓边缘点ρΛ直至轮廓边缘点P111与轮廓边缘点O工重合为止,并将边缘轮廓点P广标记为“已搜寻”,从而得到一个完整的边缘轮廓e1;
步骤6、按照步骤5中的搜寻方式对其他标记为“未搜寻”的轮廓边缘点进行搜寻,最后搜寻得到所有的边缘轮廓e1、e2、->effl;
步骤7、设定freeman链码长度的取值范围为[C1, C2],在搜寻得到的所有边缘轮廓e:、e2>…、em*,如果边缘轮廓e i的链码长度在freeman链码长度的取值范围之内,贝U认为该边缘轮廓ei是手势的边缘轮廓f,否则不是手势的边缘轮廓;
步骤8、设边缘轮廓点的步长为[S1, S2]范围内的整数S,对于每一个步长S来说,边缘轮廓f上的某一边缘轮廓点为K,则边缘轮廓点K的前导第S个边缘轮廓点为K1、边缘轮廓点K的后继第S个边缘轮廓点为K2,从而得到边缘轮廓点K在步长S下的曲率ks为向量KK1与向量KK 2夹角的余弦值,最后得到边缘轮廓点K的曲率为k cos, k_是曲率k 3中的最大值,并记录边缘轮廓点K步长S的大小;
步骤9、设指尖边缘轮廓点的曲率阈值为r,如果边缘轮廓点K的曲率在指尖边缘轮廓点的曲率阈值范围内则将该边缘轮廓点添加到指尖点集合V中,并将K点向后移动D个像素,D取值范围为[30,50];否则继续执行下一个边缘轮廓点曲率的判定;
步骤10、在指尖点集合V中,从第一个指尖点G开始,可知该边缘轮廓点G的前导第S个边缘轮廓点为G1、边缘轮廓点G的后继第S个边缘轮廓点为G2,将边缘轮廓点G1和边缘轮廓点G2连接起来形成直线G ^2,如果直线G1G2上任一像素点在二值化的肤色提取图像中的颜色为白色,则继续进行下一个指尖点的判定;
步骤11、设定手指的最小长度为U,如果直线G1G2上任一像素点在二值化的肤色提取图像中的颜色为白色,同时边缘轮廓点G的前一个指尖点与边缘轮廓点G之间的距离大于手指长度U,则将该边缘轮廓点G之前的所有指尖点的横坐标均值和纵坐标均值作为一个指尖点添加到指尖点集合H中,并且将边缘轮廓点G和其之前的所有指尖点从指尖点集合V中去除;
步骤12、根据指尖点集合H,便可得到指尖点的个数Hand。以及各指尖点的横坐标值、纵坐标值;
步骤13、根据指尖点的个数Hand。以及各指尖点的横坐标值、纵坐标值便可以对鼠标的动作进行模拟:
(a)如果指尖点的个数Hand。为1,则模拟鼠标的自由移动动作,鼠标自由移动的水平方向距离和竖直方向距离则根据当前帧指尖点位置与上一帧指尖点位置的差值来确定;
(b)如果指尖点的个数Ha
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1