当前位置: 首页 > 专利查询>济南大学专利>正文

一种基于视频输入的获取隔空手势轨迹的方法技术

技术编号:11988238 阅读:101 留言:0更新日期:2015-09-02 17:10
本发明专利技术提供了一种基于视频输入的获取隔空手势轨迹的方法,属于计算机人机交互界面领域。所述方法包括:(1)输入总帧数m,用摄像头捕获n帧图像的数字序列,并且放到n帧摄像头捕获的图像数据pBG Buffer[n]中;(2)获取对应手势运动轨迹的白点的坐标集合白点数;(3)获取每一帧手势的坐标值X,Y;(4)判断帧数n>=m,如果是,则根据(2)利用B样条画出轨迹,然后转入步骤(5);否则,返回到(1)继续执行;(5)结束。

【技术实现步骤摘要】
一种基于视频输入的获取隔空手势轨迹的方法
本专利技术属于计算机人机交互界面领域,具体涉及一种基于视频输入的获取隔空手势轨迹的方法。
技术介绍
在像平面上,每帧手势有一个重心位置,当手运动时,各帧手势重心位置形成一个轨迹,该轨迹就是手势轨迹。目前获取手势轨迹主要方法是采用卡尔曼滤波器或粒子滤波器等跟踪器跟踪每帧手势重心位置,进而得到手势轨迹。该方法存在的主要问题是:它们需要逐帧处理,所以速度慢,延迟严重,影响手势轨迹的实用性。
技术实现思路
本专利技术的目的在于解决上述现有技术中存在的难题,提供一种基于视频输入的获取隔空手势轨迹的方法,利用摄像头输入用户手势,获取手势重心位置在像平面上形成的二维轨迹。本专利技术是通过以下技术方案实现的:一种基于视频输入的获取隔空手势轨迹的方法,包括:(1)输入总帧数m,用摄像头捕获n帧图像的数字序列,并且放到n帧摄像头捕获的图像数据pBG_Buffer[n]中;(2)获取对应手势运动轨迹的白点的坐标集合白点数;(3)获取每一帧手势的坐标值X,Y;(4)判断帧数n>=m,当捕获帧数m的值与总帧数相等时,满足n>=m,此时则根据(2)利用B样条画出轨迹,然后转入步骤(5);否则,返回到(1)继续执行,重新捕获n帧图像并累计总帧数;(5)结束;所述步骤(2)是这样实现的:(21)获取n帧中首帧图像的灰度信息,设为Gray1(i)(j);(22)获取其他n-1帧图像的灰度信息,设为Gray(i)(j),并判断fabs(Gray(i)(j)-Gray1(i)(j))<阈值是否成立;(23)如果fabs(Gray(i)(j)-Gray1(i)(j))<阈值则Gray(i)(j)=0,否则Gray(i)(j)保持不变;(24)ZongGray(i)(j)=ZongGray(i)(j)+Gray(i)(j),ZongGray(i)(j)记录叠加后图像对应的各个像素的灰度值;(25)判断n帧是否执行完毕,如果否,则返回步骤(22),如果是,则判断ZongGray(i)(j)>255是否成立,若是,则ZongGray(i)(j)=255,否则ZongGray(i)(j)=0;(26)根据ZongGray(i)(j)的信息生成灰度图;(27)对所述灰度图进行膨胀;(28)对灰度图进行细化;(29)获取细化后生成白点的坐标X,Y值,并统计细化后的轨迹的白点的坐标X,Y值,并记下这n帧的白点数,然后进行B样条拟合。B样条拟合是通过计算机图形学技术实现的,通过B样条进行拟合可以使隔空手势运动轨迹平滑。所述步骤(26)是这样实现的:(A1)输入图像叠加处理完后的各个像素点的灰度值,定义位图文件头、位图信息头和调色板和位图数据信息;(A2)新建由灰度值对应的灰度图;(A3)依次对位图文件头、位图信息头和调色板进行赋值;(A4)依次判断图像的灰度值,最后置成二值化,即若灰度值是0则为0,否则是255;(A5)将经过(A4)处理后的各个像素点的灰度值写入到(A2)所建的灰度图中。所述步骤(27)是这样实现的:(B1)输入指向图像序列的指针,宽,高,一行所占的字节数获得图像的首地址和图像的高和宽;(B2)开辟一块内存缓冲区;(B3)定义一个一维数组:intB[9]={1,0,1,0,0,0,1,0,1};(B4)为防越界,不处理最左边、最右边、最上边和最下边四边的像素,从第2行第2列开始,将指向的目标图像的像素的值赋值给目标点像素点,检查这个像素点,利用结构元素数组判断该像素点的前一点、后一点、上一点、下一点这四点中是否有相交点,如果有,则将检查的像素点的灰度值赋值为0,否则保持不变,或者定义不同形状的结构元素来进行膨胀,即检查结构元素中为1所对应的像素点是否与物体相交不为空,如果是,则保留该点,否则置为255;(B5)循环步骤(B4),直到处理完原图的全部像素点;(B6)将经过(B5)处理后的结果暂存在内存缓冲区中;(B7)将结果从内存缓冲区复制到原图的数据区。所述(28)是这样实现的:(C1)输入指向图像序列的指针pImageBuffer,获取图像的首地址及图像的高和宽、5×5相邻区域像素值S模板;(C2)开辟一块内存缓冲区,并初始化为0;(C3)如果当前像素值小于255则跳过该像素;(C4)如果当前像素为255,则是手势轨迹,则定义一个5×5的结构元素,计算5×5的结构元素中各个位置上的值,为防越界,不处理外围的2行、2列像素,从第3行第3列开始判断,将S模板中心覆盖在待判断的像素上,如果S模板所覆盖的位置下,像素小于255,则为背景,则将S模板同样的位置置为1,否则置成0;(C5)依次判断S模板点是否同时满足4个判断条件,如果满足以上4个条件,则删除该点,否则保留像素点,并置该点的像素值为255,直至所有的像素点处理完一遍;(C6)循环执行(C5)直至没有需要删除的点为止;(C7)将结果保存到内存缓存区(C8)将结果由内存缓冲区复制到原图的数据区。所述步骤(C5)中的4个判断条件为:条件1:2<=N(S[2][2])<=6;条件2:T(S[2][2])=1;条件3:S[1][2]*S[2][1]*S[2][3]=0同时T(S[1][2])!=1;条件4:S[1][2]*S[2][1]*S[3][2]=0同时T(S[2][1])!=1;其中,N(S[2][2])表示以S[2][2]为中心的3×3领域内目标像素的个数;取其中的3×3领域以S[2][2]为中心点,则T(S[2][2])表示序列S[2][2]周围8领域元素首尾相接形成序列中从0到1的变化次数,其它依此类推。所述步骤(29)中的获取细化后生成白点的坐标X,Y值是这样实现的:(D1)输入指向细化后图像的指针pImageBuffer,根据当前图像的指针对图像的每行每列进行扫描操作;(D2)如果扫描到的像素值是255,则记录下该点的像素坐标,并且将白点数加一;(D3)依次执行(D2)的操作,直到所有的像素值都扫描完为止;(D4)输出当前图像的白点的个数。所述步骤(29)中进行B样条拟合是这样实现的:(E1)首先使得端点处的导数和端点的两个控制点的连线平行,根据白点的坐标来更新第一个点和最后一个点的坐标X,Y,间隔取t=1.0/1000;(E2)每两个点进行均等插值,根据三次B样条的基函数的公式来计算基函数a,b,c,d;(E3)利用给定的白点的坐标X,Y和基函数,根据B样条插值曲线的公式分别计算出插值点的坐标X,Y,其中用到了三次B样条曲线的公式,利用上面的公式,取n=3,则有三次B样条曲线的基函数如下:(E4)将计算出的X,Y值进行连线;(E5)如果所有的白点都遍历完成,则结束,否则返回步骤(E2)。所述步骤(3)是这样实现的:(F1)输入帧数n,n帧图像序列,获取n帧中首帧图像的灰度信息,设为Gray1(i)(j);(F2)获取其他n-1帧图像的灰度信息,设为Gray(i)(j),并判断fabs(Gray(i)(j)-Gray1(i)(j))<阈值是否成立;(F3)如果fabs(Gray(i)(j)-Gray1(i)(j))<阈值,则Gray(i)(j)=0,否则Gray(i)(j)保持不变;本文档来自技高网...
一种基于视频输入的获取隔空手势轨迹的方法

【技术保护点】
一种基于视频输入的获取隔空手势轨迹的方法,其特征在于:所述方法包括:(1)输入总帧数m,用摄像头捕获n帧图像的数字序列,并且放到n帧摄像头捕获的图像数据pBG_Buffer[n]中;(2)获取对应手势运动轨迹的白点的坐标集合白点数;(3)获取每一帧手势的坐标值X,Y;(4)判断帧数n>=m,如果是,则根据(2)利用B样条画出轨迹,然后转入步骤(5);否则,返回到(1)继续执行;(5)结束。

【技术特征摘要】
1.一种基于视频输入的获取隔空手势轨迹的方法,其特征在于:所述方法包括:(1)输入总帧数m,用摄像头捕获n帧图像的数字序列,并且放到n帧摄像头捕获的图像数据pBG_Buffer[n]中;(2)获取对应手势运动轨迹的白点的坐标集合白点数;(3)获取每一帧手势的坐标值X,Y;(4)判断帧数n>=m,如果是,即捕获帧数m的值与总帧数相等,则根据(2)利用B样条画出轨迹,然后转入步骤(5);否则,返回到(1)继续执行,重新捕获n帧图像并累计总帧数;(5)结束;所述步骤(2)是这样实现的:(21)获取n帧中首帧图像的灰度信息,设为Gray1(i)(j);(22)获取其他n-1帧图像的灰度信息,设为Gray(i)(j),并判断fabs(Gray(i)(j)-Gray1(i)(j))<阈值是否成立;(23)如果fabs(Gray(i)(j)-Gray1(i)(j))<阈值则Gray(i)(j)=0,否则Gray(i)(j)保持不变;(24)ZongGray(i)(j)=ZongGray(i)(j)+Gray(i)(j),ZongGray(i)(j)记录叠加后图像对应的各个像素的灰度值;(25)判断n帧是否执行完毕,如果否,则返回步骤(22),如果是,则判断ZongGray(i)(j)>255是否成立,若是,则ZongGray(i)(j)=255,否则ZongGray(i)(j)=0;(26)根据ZongGray(i)(j)的信息生成灰度图;(27)对所述灰度图进行膨胀;(28)对灰度图进行细化;(29)获取细化后生成白点的坐标X,Y值,并统计细化后的轨迹的白点的坐标X,Y值,并记下这n帧的白点数,然后进行B样条拟合。2.根据权利要求1所述的基于视频输入的获取隔空手势轨迹的方法,其特征在于:所述步骤(26)是这样实现的:(A1)输入图像叠加处理完后的各个像素点的灰度值,定义位图文件头、位图信息头和调色板和位图数据信息;(A2)新建由灰度值对应的灰度图;(A3)依次对位图文件头、位图信息头和调色板进行赋值;(A4)依次判断图像的灰度值,最后置成二值化,即若灰度值是0则为0,否则是255;(A5)将经过(A4)处理后的各个像素点的灰度值写入到(A2)所建的灰度图中。3.根据权利要求2所述的基于视频输入的获取隔空手势轨迹的方法,其特征在于:所述步骤(27)是这样实现的:(B1)输入指向图像序列的指针,宽,高,一行所占的字节数获得图像的首地址和图像的高和宽;(B2)开辟一块内存缓冲区;(B3)定义一个一维数组:intB[9]={1,0,1,0,0,0,1,0,1};(B4)为防越界,不处理最左边、最右边、最上边和最下边四边的像素,从第2行第2列开始,将指向的目标图像的像素的值赋值给目标点像素点,检查这个像素点,利用结构元素数组判断该像素点的前一点、后一点、上一点、下一点这四点中是否有相交点,如果有,则将检查的像素点的灰度值赋值为0,否则保持不变,或者定义不同形状的结构元素来进行膨胀,即检查结构元素中为1所对应的像素点是否与物体相交不为空,如果是,则保留该点,否则置为255;(B5)循环步骤(B4),直到处理完原图的全部像素点;(B6)将经过(B5)处理后的结果暂存在内存缓冲区中;(B7)将结果从内存缓冲区复制到原图的数据区。4.根据权利要求3所述的基于视频输入的获取隔空手势轨迹的方法,其特征在于:所述(28)是这样实现的:(C1)输入指向图像序列的指针pImageBuffer,获取图像的首地址及图像的高和宽、5×5相邻区域像素值S模板;(C2)开辟一块内存缓冲区,并初始化为0;(C3)如果当前像素值小于255则跳过该像素;(C4)如果当前像素为255,则是手势轨迹,则定义一个5×5的结构元素,计算5×5的结构元素中各个位置上的值,为防越界,不处理外围的2行、2列像素,从第3行第3列开始判断,将S模板中心覆盖在待判断的像素上,如果S模板所覆盖的位置下,像素小于255,则为背景,...

【专利技术属性】
技术研发人员:冯志全冯仕昌
申请(专利权)人:济南大学
类型:发明
国别省市:山东;37

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1