【问题标题】:Refining Haar detection细化 Haar 检测
【发布时间】:2012-01-20 09:11:35
【问题描述】:

我正在尝试使用 OpenCV 和 Haar 级联来制作手部检测程序。它工作得很好,但它很生涩。所以我问自己,这是否是 haar 文件太“便宜”的问题,或者是否有办法通过使用轮廓或特征检测(或者可能是其他一些技术)来改进检测。

我想要执行的操作与此面部检测相同,但对于手:Face Detection (see FaceOSC)

非常感谢。

编辑:这是我想做的事情:Hand extraction 似乎他通过轮廓检测执行它,但是如何找到手?

【问题讨论】:

  • “生涩”是什么意思?这是否意味着您可以检测手的帧速率较低,或者检测到的手位置从一帧跳到下一帧?我可以告诉你,如果你想实现类似人脸检测的功能,你将不得不做一些比仅仅使用 Haar 级联更复杂的事情。
  • 看看这个SO。你的目标似乎有点复杂。 Here 是用于视频的纸张,您可以参考。看看吧。
  • @Adam W 谢谢!它是“生涩的”:该程序有时仅在 2 帧上检测到 1 帧。我正在尝试实现跟踪,以便跟踪先前检测到的手,但我没有得到很好的结果。
  • @arkiaz 谢谢,我会读这篇论文。

标签: c++ objective-c opencv object-detection haar-wavelet


【解决方案1】:

The Hand Extraction video,你给的链接,是基于肤色检测和凸包发现。

1) 将图像更改为 YCrCb(或 HSV)。

2) 对图像设置阈值,使手变成白色,而除此之外的一切都变成黑色。

3) 去除噪音

4) 找到手的中心(如果你喜欢的话)。

5) 使用凸包找到最尖锐的点,即指尖。

您可以从这个paper获得完整的详细信息。

无论如何,不​​需要 haar 级联。

【讨论】:

  • 非常感谢!我没有考虑将色彩空间更改为 HSV。这是一个非常有用的提示。但是......你的第4点对我来说有点问题:我怎样才能找到手的中心?通过检测凸面缺陷 ?另一件事:在视频的左侧有一个电脑屏幕。他是如何在不将其保留在图像上的情况下对他的照片进行阈值处理的?
  • 该论文中解释了查找中心。请阅读。
    有电脑屏幕有什么问题?当你对图像进行阈值处理时,你只取那些有你手颜色的,其他的都变黑了。
  • 抱歉,您的评论中没有链接。
  • 我的答案中的论文链接。好的。没问题。 Try here also
【解决方案2】:

很明显,如果基于HAAR分类器的检测结果变成所谓的'jerky',在我看来这意味着检测不稳定并且在检测图像周围跳跃,那么问题在于分类器的质量。

只要有足够的正/负样本,比如说 5k/5k,结果应该已经相当稳健了。根据我的经验,我使用了 700 个正手势样本和 1200 个负样本,结果似乎在某种程度上令人满意。但是在我使用了另一组包含不同特征的8000个正样本和10200个负样本后,结果比前者还要差。

因此,我建议您仔细重置您的训练样本,例如比率、内容特征和颜色。

【讨论】:

  • 您还有用于手部检测的数据集吗?
  • 所有haar训练的图片以及结果XML文件都保存完好,开放供公众使用
  • 你能把你的xml文件的链接发给我吗?
猜你喜欢
  • 2013-03-21
  • 2016-10-26
  • 2013-05-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-19
  • 1970-01-01
  • 2011-11-14
相关资源
最近更新 更多