文档章节

肤色检测算法 - 基于不同颜色空间简单区域划分的皮肤检测算法

abcijkxyz
 abcijkxyz
发布于 2016/11/22 16:41
字数 676
阅读 34
收藏 0

       由于能力有限,算法层面的东西自己去创新的很少,很多都是从现有的论文中学习,然后实践的。

      本文涉及的很多算法,在网络上也有不少同类型的文章,但是肯定的一点就是,很多都是不配代码的,或者所附带的代码都是象征性的,速度慢,不优雅,不具有实用价值,本文努力解决这些问题。

      文中各算法出现的顺序并不代表算法的优越性,仅仅是作者随机排布的而已。

      2、基于RGB颜色空间的简单阈值肤色识别

       在human skin color clustering for face detection一文中提出如下简单的判别算式:

      R>95 And G>40 And B>20 And R>G And R>B And Max(R,G,B)-Min(R,G,B)>15 And Abs(R-G)>15 

    算法非常之简单,同样主要把复杂的判断条件放到后面去判断,能有效的降低程序的执行时间,参考代码:

 

for (Y = 0; Y < Height; Y++)
{
    Pointer = Scan0 + Y * Stride;
    SkinP = SkinScan0 + Y * SkinStride;
    for (X = 0; X < Width; X++)
    {
        Blue = *Pointer; Green = *(Pointer + 1); Red = *(Pointer + 2);
        if (Red > 95 && Green > 40 && Blue > 20 && Red > Blue && Red > Green && Math.Abs(Red - Green) > 15)
        {
            if (Blue >= Green)     
            {
                Max = Blue;
                Min = Green;
            }
            else
            {
                Max = Green;
                Min = Blue;
            }
            if (Red > Max)
                Max = Red;
            else if (Red < Min)
                Min = Red;
            if (Max - Min > 15) *SkinP = 255;
        }
        Pointer += 3;
        SkinP++;
    }

  算法效果:

              

        原图                     识别结果图                                                   原图                识别结果图

     由上述结果似乎该算法得到了过多的皮肤区域,然后就是算法更喜欢美女一些(^_^)。

     3、基于YCbCr颜色空间的简单阈值肤色识别

  该算法则更为简单,将图像转换到YCbCr颜色空间,然后按下述计算式判断是否属于皮肤区域:

    (Cb > 77 And Cb < 127)  And (Cr > 133 And Cr < 173)

      关于RGB和YCbCr颜色空间的转换的优化算法,可参考本博客相关文章。

      由于当初写这方面的时候没有注明该算法的出处,现在也没从提起了。

      代码参考:

for (Y = 0; Y < Height; Y++)
{
    Pointer = Scan0 + Y * Stride;
    SkinP = SkinScan0 + Y * SkinStride;
    for (X = 0; X < Width; X++)
    {
        Blue = *Pointer; Green = *(Pointer + 1); Red = *(Pointer + 2);
        Cb = (-176933 * Red - 347355 * Green + 524288 * Blue + 134217728) >> 20;
        if (Cb > 77 && Cb < 127)
        {
            Cr = (524288 * Red - 439026 * Green - 85262 * Blue + 134217728) >> 20;
            if (Cr > 133 && Cr < 173) *SkinP = 255;
        }
        Pointer += 3;
        SkinP++;
    }
}

 

     

 

               

              原图                         识别结果图                                                   原图                识别结果图

     误判的区域还是很大的。

     还有一种是基于YUV颜色空间进行的肤色识别,似乎也不太准确,可参考http://www.doc88.com/p-97381067005.html

 

***************************作者: laviewpbt   时间: 2013.8.17   联系QQ:  33184777  转载请保留本行信息*************************

 

 

 

 

本文转载自:http://www.cnblogs.com/Imageshop/p/3265353.html

共有 人打赏支持
abcijkxyz
粉丝 63
博文 6196
码字总数 1876
作品 0
深圳
项目经理
人脸识别系列之人脸检测--训练基于肤色特征的检测

前言: 基于特征的方法是利用人脸的先验知识导出的规则进行人脸检测。 一般来说,常用的特征包括人脸和人脸器官典型的边缘和形状特征(如人脸轮廓、虹膜轮廓、嘴唇轮廓等)、纹理特征(纹理是...

ittazp
08/16
0
0
Win8 Metro(C#)数字图像处理--2.35图像肤色检测算法

原文:Win8 Metro(C#)数字图像处理--2.35图像肤色检测算法  [函数名称] 肤色检测函数SkinDetectProcess(WriteableBitmap src) [算法说明] 这个算法是一篇学术论文算法的实现,论文名字为“...

杰克.陈
03/13
0
0
广州颜鉴信息科技--即将亮相移动美妆开发包

1引言 古人曰,女为悦己者容。在化妆技术日益成熟的今天,化妆的目的已经不仅于此,社会的文明程度越高,化妆就越显示出其必要性。化妆是人们为了适应实用,场合、环境、 礼仪和特定的情景需...

colorreco
2016/09/29
0
0
基于 OpenCv 和 Python 的手指识别及追踪

雷锋网(公众号:雷锋网)按:本文为 AI 研习社编译的技术博客,原标题 Finger Detection and Tracking using OpenCV and Python,作者为Jason Brownlee。 翻译 | 余杭 Lamaric 校对 | 吴晓曼 ...

雷锋字幕组
08/17
0
0
OpenCV 自带例程总结

parter 1: No1. adaptiveskindetector.cpp 利用HSV空间的色调信息的皮肤检测,背景不能有太多与肤色相似的颜色。效果不是特别好。 No2. bagofwordsclassification.cpp 好大一串……目前还看不...

moki_oschina
2016/04/06
666
0

没有更多内容

加载失败,请刷新页面

加载更多

关于编程,你的练习是不是有效的?

最近由于工作及Solution项目的影响,我在重新学习DDD和领域建模的一些知识。然后,我突然就想到了这个问题,以及我是怎么做的? 对于我来说,提升技能的项目会有四种: 纯兴趣驱动的项目。即...

问题终结者
17分钟前
0
0
打开eclipse出现an error has occurred see the log file

解决方法: 1,打开eclipse安装目录下的eclipse.ini文件; 2,打开的文本文件最后添加一行 --add-modules=ALL-SYSTEM 3,保存重新打开Eclipse。...

任梁荣
昨天
4
0
搞定Northwind示例数据库,无论哪个版本的SQLServer都受用

Northwind数据库 从这里可以找到突破口: http://social.msdn.microsoft.com/Forums/zh-CN/Vsexpressvb/thread/8490a1c6-9018-40c9-aafb-df9f79d29cde 下面是MSDN: http://msdn2.microsoft......

QQZZFT
昨天
1
0
mysql主从同步,安装配置操作

准备 两台mysql服务,我这里准备了如下: 主库:192.168.176.128 从库:192.168.176.131 如何在Linux上安装mysql服务,请看https://blog.csdn.net/qq_18860653/article/details/80250499 操作...

小致dad
昨天
4
0
Redis的“死键”问题

大规模的数据库存储系统中,数据的生命周期管理是很有必要的;从业务角度发现过期数据,数据归档和数据碎片整理等。以MySQL为例,1个运行很久的TB级MySQL实例中,极有可能数百GB的数据,对业...

IT--小哥
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部