欢迎来到知嘟嘟! 联系电话:13095918853 卖家免费入驻,海量在线求购! 卖家免费入驻,海量在线求购!
知嘟嘟
我要发布
联系电话:13095918853
知嘟嘟经纪人
收藏
专利号: 2015100730121
申请人: 长春理工大学
专利类型:发明专利
专利状态:已下证
专利领域: 计算;推算;计数
更新日期:2024-02-28
缴费截止日期: 暂无
价格&联系人
年费信息
委托购买

摘要:

权利要求书:

1.一种基于单目视觉的无实体虚拟鼠标方法,由计算机,单目摄像头,手势输入,手势输入的有效区域组成;其中计算机和单目摄像头通过数据传输线进行连接;在计算机和单目摄像头已通过数据传输线进行连接并且能够正常工作的前提下,其特征在于虚拟鼠标的模拟步骤如下:步骤1、在手势输入的有效区域内,手势输入通过单目摄像头将手势图像传送给计算机,以便对手势输入的手势图像进行识别,本发明可识别五种鼠标手势,每种手势依据指尖点的个数来进行区分和判定;

步骤2、将手势图像中每一个像素点RGB色彩空间的分量值转换到YCrCb色彩空间,RGB色彩空间到YCrCb色彩空间的转换公式为:Y = 0.299 * R + 0.587 * G + 0.114 * B

Cr = -0.147 * R - 0.289 * G + 0.436 * B

Cb = 0.615 * R - 0.515 * G - 0.100 * B

其中,R、G、B分别表示RGB色彩空间中红色通道、绿色通道和蓝色通道分量的取值,Y、Cr、Cb分别表示YCrCb色彩空间中各通道分量的取值;

步骤3、在YCrCb色彩空间中,设定[(Cr + Cb)/2]参量的取值范围为[a1, a2]和(Cr - Cb)参量的取值范围为[b1, b2],然后根据[(Cr + Cb)/2]和(Cr - Cb)参量的取值范围来确定手势图像中各像素点是否为肤色,如果手势图像中某一像素点的[(Crp + Cbp)/2]和(Crp - Cbp)的取值均在[(Cr + Cb)/2]和(Cr - Cb)参量的取值范围内,则该像素点为肤色并将其颜色设置为白色,否则不是肤色并将其颜色设置为黑色,从而得到二值化后的肤色提取图像;

步骤4、通过使用freeman链码搜索算法对二值化肤色提取图像中的所有离散像素点进行轮廓搜寻,在对所有离散像素点进行轮廓搜寻时对每一个像素点进行八邻域的边缘试探识别;设定边缘的跟踪方向为顺时针方向,某一像素点八邻域内的所有像素点均为白色则不是边缘像素点,否则该像素点为边缘像素点并将该轮廓边缘点标记为“未搜寻”,并且每一个边缘像素点的链码判定方向顺序为:左上、上、右上、右、右下、下、左下、左;

步骤5、按照从上到下、从左到右的方向对所有边缘像素点进行轮廓边缘的搜寻,设搜寻到的第一个标记为“未搜寻”的轮廓边缘点o1为该边缘轮廓的起始点,然后按照链码判定方向的顺序对轮廓边缘点o1的后继轮廓边缘点进行搜寻,一旦搜寻出轮廓边缘点并且该轮廓边缘点的标记为“未标记”,则将该轮廓边缘点p11作为轮廓边缘点o1的后继轮廓边缘点并将该边缘轮廓点标记为“已搜寻”,依次类推搜寻出p11的后继轮廓边缘点p12、…、p1n-1的后继轮廓边缘点p1n,直至轮廓边缘点p1n与轮廓边缘点o1重合为止,并将边缘轮廓点p1n标记为“已搜寻”,从而得到一个完整的边缘轮廓e1;

步骤6、按照步骤5中的搜寻方式对其他标记为“未搜寻”的轮廓边缘点进行搜寻,最后搜寻得到所有的边缘轮廓e1、e2、…、em;

步骤7、设定freeman链码长度的取值范围为[c1, c2],在搜寻得到的所有边缘轮廓e1、e2、…、em中,如果边缘轮廓ei的链码长度在freeman链码长度的取值范围之内,则认为该边缘轮廓ei是手势的边缘轮廓f,否则不是手势的边缘轮廓;

步骤8、设边缘轮廓点的步长为[S1, S2] 范围内的整数S,对于每一个步长S来说,边缘轮廓f上的某一边缘轮廓点为K,则边缘轮廓点K的前导第S个边缘轮廓点为K1、边缘轮廓点K的后继第S个边缘轮廓点为K2,从而得到边缘轮廓点K在步长S下的曲率ks为向量KK1与向量KK2夹角的余弦值,最后得到边缘轮廓点K的曲率为kcos,kcos是曲率ks中的最大值,并记录边缘轮廓点K步长S的大小;

步骤9、设指尖边缘轮廓点的曲率阈值为r,如果边缘轮廓点K的曲率在指尖边缘轮廓点的曲率阈值范围内则将该边缘轮廓点添加到指尖点集合V中,并将K点向后移动D个像素,D取值范围为[30,50];否则继续执行下一个边缘轮廓点曲率的判定;

步骤10、在指尖点集合V中,从第一个指尖点G开始,可知该边缘轮廓点G的前导第S个边缘轮廓点为G1、边缘轮廓点G的后继第S个边缘轮廓点为G2,将边缘轮廓点G1和边缘轮廓点G2连接起来形成直线G1G2,如果直线G1G2上任一像素点在二值化的肤色提取图像中的颜色为白色,则继续进行下一个指尖点的判定;

步骤11、设定手指的最小长度为U,如果直线G1G2上任一像素点在二值化的肤色提取图像中的颜色为白色,同时边缘轮廓点G的前一个指尖点与边缘轮廓点G之间的距离大于手指长度U,则将该边缘轮廓点G之前的所有指尖点的横坐标均值和纵坐标均值作为一个指尖点添加到指尖点集合H中,并且将边缘轮廓点G和其之前的所有指尖点从指尖点集合V中去除;

步骤12、根据指尖点集合H,便可得到指尖点的个数Handc以及各指尖点的横坐标值、纵坐标值;

步骤13、根据指尖点的个数Handc以及各指尖点的横坐标值、纵坐标值便可以对鼠标的动作进行模拟:

(a)如果指尖点的个数Handc为1,则模拟鼠标的自由移动动作,鼠标自由移动的水平方向距离和竖直方向距离则根据当前帧指尖点位置与上一帧指尖点位置的差值来确定;

(b)如果指尖点的个数Handc为2,则模拟鼠标的左键单击动作;

(c)如果指尖点的个数Handc为3,则模拟鼠标的右键单击动作;

(d)如果指尖点的个数Handc为4,则模拟鼠标中键滚轮的滚动动作,鼠标中键滚轮的滚动值则根据当前帧第一个指尖点位置与上一帧第一个指尖点位置的差值来确定;

(e)如果指尖点的个数Handc为5,则模拟鼠标按住左键进行拖动的动作,按住鼠标左键进行拖动的距离则根据当前帧第一个指尖点位置与上一帧第一个指尖点位置的差值来确定;

步骤14、返回至步骤1,执行下一次的鼠标动作识别。