【问题标题】:Finding the Bounding area of hand找到手的边界区域
【发布时间】:2012-10-07 12:07:33
【问题描述】:

我有使用this 链接检测到的手的图像。它使用 HSV 颜色空间进行手部检测。

现在我面临一个问题:我需要获得足够的封闭区域/绘制边界线以确定手部区域,然后填充封闭区域并从原始区域中减去它以移除手部。

到目前为止,我一直在尝试模糊图像以减少噪点、扩大图像、关闭孔等,这似乎是过量的。我已经尝试过轮廓,这似乎是迄今为止最好的方法。我试图获得凸包(最大),在使用不同的阈值进行测试后,我得到了以下结果。

如果船体拉直,可以用拇指看到不准确之处。它必须是弯曲的。我试图找出手的位置,以便确定手所覆盖的区域。将减去它以从原始图像中移除手。这就是我想要达到的目标。

有没有更好的方法来解决这个问题?

非常感谢您的意见建议。

原始和检测如下

【问题讨论】:

  • 所以你想识别手部区域而不是凸包给出的区域。我说的对吗?
  • 我会说,手覆盖的图像部分

标签: opencv image-processing computer-vision detection


【解决方案1】:

考虑使用alpha hull代替凸包,它可以通过允许凹面更好地遵循形状的轮廓。

这个网站对 alpha 形状有一个很好的总结:François Bélair 的“你一直想知道但害怕问的关于 Alpha 形状的一切”。

http://cgm.cs.mcgill.ca/~godfried/teaching/projects97/belair/alpha.html

正如 David 在他的帖子中提到的,考虑使用 HSV(或 HSI)颜色空间而不是 RGB 或灰度进行阈值处理。如果您可以允许更长的处理时间,您可以使用诸如 Mean Shift 之类的算法来分割像您这样复杂的图像。 OpenCV 有一个 Mean Shift 的实现,Learning OpenCV 一书提供了该算法的简明描述。

Image Segmentation using Mean Shift explained

无论如何,标准二值化阈值似乎没有多大帮助。考虑使用动态阈值;据我回忆,OpenCV 中的轮廓至少实现了局部/动态阈值。

【讨论】:

  • 我正在使用 HSV 空间来检测手
  • 这似乎正是我想要的。我将不得不看看它是否也在 OpenCV 中
  • 你能获得更清晰的焦点吗?您可以使用漫射照明(“阴天”照明)来减少阴影,或使用倾斜照明来创建鲜明、一致的阴影吗?你能不能改变背景颜色,因为它会破坏一些边缘的对比度?暗像素是一个问题,但所有暗像素都与手及其阴影相关联。这可能会破坏基于直方图的二值化。考虑将通道强度小于 20(或其他)的每个像素重新映射到值高于阈值的最接近的颜色。考虑只使用一两个 HSV 渠道。
  • 目前我无能为力。但我肯定会发布更清晰的图像。我一定会尝试你的建议。
【解决方案2】:

假设您要识别手部区域而不是凸包给出的区域并且应用程序的背景至少是相同的颜色,如果可能的话,我会应用 hsv-threshold 来识别背景而不是手部。或者,如果光分布不一致,则可能是自适应阈值。我相信这是许多应用程序所做的

如果背景不能固定,分割不是一个容易解决的问题,你应该注意阴影和掌纹。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-18
    • 1970-01-01
    • 1970-01-01
    • 2015-11-21
    • 2012-09-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多