【问题标题】:Skin Color Detection肤色检测
【发布时间】:2011-05-24 06:25:42
【问题描述】:

我正在使用以下算法来检测肤色,但它在不同的光照条件下效果不佳。任何人都可以提供任何建议如何改进它或提出更好的方法

R > 95 AND G > 40 AND B > 20 AND
max{R, G, B} – min{R, G, B} >15 AND
|R – G| > 15 AND
R > G AND R > B
OR
R > 220 AND G > 210 AND B > 170 AND
|R – G| <= 15 AND
R > B AND G > B

http://softexpert.wordpress.com/2007/10/17/skin-color-detection/

干杯

【问题讨论】:

标签: colors computer-vision feature-detection


【解决方案1】:

肤色建模有很多方法,各有优缺点。

根据您的目的选择一个。看看这些调查:

V。 Vezhnevets,V. Sazonov,A. Andreeva。 A survey on pixel-based skin color detection techniques. 过程。图形,2003

P。 Kakumanu、S. Makrogiannis、N. Bourbakis。 A survey of skin-color modeling and detection methods. 模式识别,2007

【讨论】:

  • @AlexanderTroshchenko FTFY,先生。
【解决方案2】:

如果您使用的是 RGB,则会遇到照明(亮度)问题。处理肤色检测的最佳方法是 YCbCr 合成。 Y 表示亮度 Cb,Cr 表示色度。每个都表示为 RGB 颜色的加权表示。但是您只使用 Cb 和 Cr 来识别肤色。 Y 被丢弃,因为您不希望分析中的亮度。所以使用 YCbCr 而不是 RGB。希望我能帮上忙!

【讨论】:

    【解决方案3】:

    请参阅我对鲁棒手部检测here 的回答,其中我推荐了一种使用颜色直方图的方法,该方法仅使用最初来自 Gary Bradski(OpenCV 的创建者)关于面部跟踪的论文的图像的色调和饱和度通道构建。它包括该方法的概述以及有关如何检测皮肤区域的示例代码的链接。

    该方法简单但对噪声和光照变化相当稳健,并且能够检测不同的肤色。不需要机器学习:)。

    【讨论】:

      【解决方案4】:

      我使用色度组件来快速获取图像的肤色区域。

      这并不完美,但如果你想要一种快速而肮脏的方法,那也没关系。

      这篇论文被 Douglas Chai 称为“在可视电话应用中使用肤色图进行人脸分割”。这是一种相当古老的方法(1999 年)。不幸的是,论文本身是收费的,但方法相当简单:

      • 使用 Cb 和 Cr 范围检测具有潜在肤色的区域
      • 清理图像的形态学操作
      • 使用标准差,进一步分离背景(低)和前景(高)
      • 更多形态学操作以进一步清理图像
      • 轮廓重建(平滑曲线)以产生结果

      【讨论】:

        【解决方案5】:

        您给定的算法是简单的基于颜色的阈值。这仅适用于一组非常基本的条件。对于一些图片,它可能会给出非常好的结果,但作为一个通用检测器,它会给出很差的结果。

        您的第一道攻击线应该是切换到对照明不变的不同颜色模型。实际上,您提供的链接明确说明了这一点!例如,恒指。就个人而言,我更喜欢用 L*a*b* 做一些事情,但是从 RGB 转换的实现会更加困难。

        您应该考虑添加一些额外的先验术语,例如,孤立的像素不能是皮肤。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-04-11
          • 2019-12-26
          • 1970-01-01
          • 2011-12-19
          • 1970-01-01
          • 1970-01-01
          • 2012-10-09
          • 1970-01-01
          相关资源
          最近更新 更多