手部实时追踪
Posted
技术标签:
【中文标题】手部实时追踪【英文标题】:Real time tracking of hand 【发布时间】:2013-07-18 11:18:50 【问题描述】:我正在尝试使用 opencv 实时检测和跟踪手。我认为 haar 级联分类器会产生一个公平的结果。分别用 10k 和 20k 的正负图像进行训练后,我得到了一个分类器 xml 文件。不幸的是,它只能在某些位置检测手,证明它只对刚性物体最有效。所以我现在正在考虑采用另一种可以跟踪手的算法,一旦通过 haar 分类器检测到。
我的问题是,如果我确保 haar 分类器在某个帧、某个位置检测到手,那么哪种方法可以进一步对手进行鲁棒跟踪?
我在网上搜索了一下,了解到我可以去检测手的光流,或者卡尔曼滤波器或粒子滤波器,但也遇到了它们自己的缺点。
另外,如果我加入立体视觉,它会对我有帮助吗,因为我可以在 3d 中重建手。
【问题讨论】:
您可以尝试分层倒角匹配。 【参考方案1】:您对 Haar 特征的结论是正确的——当涉及到非刚性对象时,它们并没有那么有用。
看看以下使用肤色检测手的论文。
-
Interaction between hands and wearable cameras
Markerless inspection of augmented reality objects
还有这篇论文使用 KLT 特征在第一次检测后跟踪手部:
Fast 2D hand tracking with flocks of features and multi-cue integration
我想说立体相机对您的事业没有多大帮助,因为非刚性物体的 3D 重建并不简单,需要大量的创新和开发。但是,如果您想进行 3D 跟踪,可以查看 this page 的手部姿势估计部分的论文。
编辑:也看看this recent paper,它似乎得到了很好的结果。
【讨论】:
第三个链接坏了。 更新了另一个链接。 Citeseer 服务器有时行为不端。 最后一个链接已损坏,即最近的论文链接。【参考方案2】:Zhang 等人的 Real-time Compressive Tracking 在通过其他方法检测到对象后,在跟踪对象方面做得很合理,前提是运动不太快。他们有一个 OpenCV 实现(但需要一些工作才能重用)。
【讨论】:
【参考方案3】:research paper 描述了一种通过立体摄像头设置在不戴手套的情况下跟踪手部的方法。
【讨论】:
这似乎适用于无噪音背景。我有嘈杂的背景, 它使用肤色进行分割。该论文的作者还有一家公司,该公司使用 kinect 进行手部追踪。你可能想调查一下。【参考方案4】:堆栈溢出也有类似的问题...
看看我和其他人的回答:https://***.com/a/17375647/1463143
通过避免对可变形实体进行 haar 训练和检测,您肯定可以获得更好的结果。
【讨论】:
我的背景有木头,我不能使用任何皮肤检测算法。 @ria15 试试这个算法,看看它的效果如何。使用简单的前景/背景分离,您可以在前景图像上运行给定的代码。【参考方案5】:如果您想将手部作为单个实体进行跟踪,CamShift 算法通常快速且准确。 OpenCV 文档包含一个很好的、易于理解的演示程序,您可以轻松修改。
但是,如果您需要跟踪手指等,则需要进一步建模。
【讨论】:
我的背景包含木材,因此 camshift 是基于颜色直方图的,它对我没有帮助。 您可能想要使用光流,然后进行某种形状匹配。对于移动的背景,这并不容易,但在某些假设(大小等)下,追踪手的机会更高。以上是关于手部实时追踪的主要内容,如果未能解决你的问题,请参考以下文章
Mediapipe+VSCode+Anaconda 实时检测手部关键点并保存视频