代码之家  ›  专栏  ›  技术社区  ›  mmcdole

手势识别是如何工作的?

  •  18
  • mmcdole  · 技术社区  · 16 年前

    我创造了一些复古反射手套和红外发光二极管阵列,再加上一个Wii遥控器。Wii遥控器进行内部斑点检测,跟踪4点红外线,并通过蓝牙加密狗将这些信息传输到我的电脑上。

    这是基于 Johnny Chung Lee's Wii Research . 我的精确设置和荷兰的研究生完全一样 here

    alt text alt text alt text

    荷兰学生已经从他们基本的按键识别中获得了很多功能。如果可以的话,我想更进一步,并实现一些其他的手势。

    手势识别通常是如何实现的?除了任何琐碎的事情,我如何编写软件来识别和识别各种各样的手势:各种刷卡、循环运动、字母追踪等等。

    6 回复  |  直到 6 年前
        1
  •  11
  •   dustyburwell    16 年前

    手势识别,正如我所看到的,通常是用机器学习技术实现的,类似于图像识别软件。 Here's a cool project on codeproject about doing mouse gesture recognition in c# . 我相信这些概念是非常相似的,因为你可以把问题简化到二维空间。如果你能用这个做点什么,我很想看看。伟大的项目想法!

        2
  •  8
  •   MarkusQ    16 年前

    一种方法是将其视为压缩/识别问题。基本上,你需要获取一大堆数据,扔掉大部分数据,然后对剩下的数据进行分类。如果我是从零开始这样做的话,我可能会按照以下步骤进行:

    • 取开始帧中四个点的重心,保存它,然后从所有帧中的所有位置中减去它。
    • 保存最后一帧的绝对CofG
    • 星座变形的一系列给你捏,等等。

    看过你的照片后(2分) 每只手上 ,不是一对一的四分我将以上修改如下:

    • 对pairs进行CofG计算,注意:
      • 如果有四个可见点,则选择成对点来最小化空气内距离的乘积
      • 如果有三个点可见,最接近的两个是一对,另一个是另一个
    • 不是星座,而是一个由距离/方向对组成的嵌套结构(即,两手之间有一个D/O,每只手有一个D/O)。
    • 如果你想变得可爱,可以用一些DSL来识别模式,然后写下以下内容:

      fire when
          in frame.final: rectangle(points) 
        and
          over frames.final(5): points.all (p => p.jerk)
      

      fire when
          over frames.final(3): hands.all (h => h.click)
      
        3
  •  1
  •   Elijah Glover    16 年前

    如果有人感兴趣的话,这是一段关于这类技术的视频?

    Pattie Maes demos the Sixth Sense - TED 2009

        4
  •  0
  •   Sin Sin    16 年前

    Markov Chains Hidden Markov Models 做手势识别。

    也许在计算机科学的这方面有多一点背景的人可以进一步阐明它并提供更多的细节。

        5
  •  0
  •   Ignacio Vazquez-Abrams    16 年前

        6
  •  0
  •   mmcdole    16 年前

    呃。。在过去的一年左右,我一直致力于手势识别,但我不想说太多,因为我正试图为我的技术申请专利:)但是。。。我们在适应性增强方面有一些运气,尽管你所做的看起来根本不同。你只有4点数据要处理,所以我认为你不需要“减少”任何东西。

    我要研究的是像Flash这样的程序如何将徒手画的圆变成实际的圆。似乎你可以跟踪点持续一秒钟,然后以某种方式“平滑”路径,然后你就可以通过硬编码的方式逃脱惩罚(如果你让它们足够简单的话)。否则,是的,你会想使用一个学习算法。神经网络可能会起作用。。。我不知道。只是抛出一些想法:)也许看看如何 OCR Hough transforms . 在我看来,这是一个识别形状的问题,而不是识别手势的问题。

    推荐文章