文档章节

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

abcijkxyz
 abcijkxyz
发布于 2016/11/22 16:41
字数 676
阅读 26
收藏 0
点赞 0
评论 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
粉丝 60
博文 6195
码字总数 1876
作品 0
深圳
项目经理
Win8 Metro(C#)数字图像处理--2.35图像肤色检测算法

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

杰克.陈 ⋅ 03/13 ⋅ 0

广州颜鉴信息科技--即将亮相移动美妆开发包

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

colorreco ⋅ 2016/09/29 ⋅ 0

OpenCV 自带例程总结

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

moki_oschina ⋅ 2016/04/06 ⋅ 0

自己做的一个肤色检测模型

肤色检测 在人像美化中,肤色检测有助于防止磨掉头发、胡子等需要保持细节的部分,也可以使美白算法仅作用于皮肤,不对人像周边环境产生影响。 网上找了一下肤色检测模型,效果都太差,换了一...

jxt1234 ⋅ 2015/10/15 ⋅ 0

妹纸们的最爱 - 拓幻科技美颜SDK算法

现在各大手机制造商都在主推美颜效果,各种前后2000万像素,照亮你的美,各种逆光也清晰。其实这些看似神秘的美颜效果,除了依赖于手机像素之外,更重要的是攻城狮们对于美颜算法的构造。除了...

tillusory ⋅ 01/31 ⋅ 0

揭秘美图影像实验室MTlab:发布AI测肤、产品围绕AI让你更美

  1亿124万,2300万。   在数据价值贵如石油的当下,放到哪都是一个非常庞大、诱人、可望不可及的资源。而这正是美图刚上线不久的两款AI产品成绩单。      美图秀秀上AI绘画机器人A...

遇见人工智能 ⋅ 2017/12/24 ⋅ 0

基于 OpenCV 的裸体检测

AI(人工智能)被用来处理一些奇怪的任务。算法网站Algorithmia搞出了一个“裸体检测器”,当然这不是能通过图灵测试的超级AI,也不是《终结者》中“天网”级别的机器人。 据称,原理如下:首...

oschina ⋅ 2015/06/30 ⋅ 21

零基础入门:对象检测及其算法指南

图像分类是拍摄一张图像并对其中的对象进行预测。例如:当我们构建一个猫狗分类器时,我们拍摄了猫或狗的图像,并预测它们属于哪个类别。 如果猫和狗都出现在同一张图像中,你会怎样做呢? ...

【方向】 ⋅ 01/23 ⋅ 0

传统人脸检测识别的简述总结及现今流行框架

因为最近人脸检测与识别火热的进行着,本平台想进一步详细介绍关于人脸领域的相关知识与分析,让更多人的有进一步深入的熟知! 之后我会不断更新最新的人脸检测识别相关知识,希望有兴趣和该...

EdisonGzq ⋅ 2017/06/03 ⋅ 0

RCNN学习笔记(0):rcnn简介

reference link: http://blog.csdn.net/shenxiaolu1984/article/details/51066975 Region CNN(RCNN)可以说是利用深度学习进行目标检测的开山之作。作者Ross Girshick多次在PASCAL VOC的目标检...

u011534057 ⋅ 2016/04/25 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Kubeflow实战系列:利用TFJob导出分布式TensorFlow模型

介绍 本系列将介绍如何在阿里云容器服务上运行Kubeflow, 本文介绍如何使用TfJob导出分布式模型训练模型。 第一篇:阿里云上使用JupyterHub 第二篇:阿里云上小试TFJob 第三篇:利用TFJob运行...

全部原谅 ⋅ 19分钟前 ⋅ 0

007. 深入JVM学习—老年代

老年代空间的主要目的是用于存储由Eden发送来的对象,一般在经历好几次“Minor GC”还会保存下来的对象,才会被复制到老年代,这样就可以存放更多的对象,同时在老年代中执行GC的次数也相对较...

影狼 ⋅ 20分钟前 ⋅ 0

常见的一些C#开源框架或者开源项目

原:https://blog.csdn.net/qq_27825451/article/details/70666044 Json.NET http://json.codeplex.com/ Json.Net 是一个读写Json效率比较高的.Net框架.Json.Net 使得在.Net环境下使用Json更......

whoisliang ⋅ 21分钟前 ⋅ 0

设计模式基本原理

刚开始接触编程这行的时候看过设计模式,当时感觉学这些模式没有太大的用处,当时也看不太懂。但是随着慢慢接触这一行,经过一段时间的编程以后,再回过头来看设计模式,发现设计模式的确是太...

王子城 ⋅ 24分钟前 ⋅ 0

阿里云全面支持IPv6!一文揽尽4位大咖精彩演讲

摘要: 自从去年11月以来,阿里巴巴高度重视数据中心的网络改造、云产品改造、应用及网络改造等多个维度,经过半年以来的建设,阿里云已经完成了域名解析等关键产品的分析,现在阿里云已经完...

传授知识的天使 ⋅ 35分钟前 ⋅ 0

windows Android sdk 配置

1、下载Android SDK,点击安装,直接默认路径即可! 下载地址:http://developer.android.com/sdk/index.html 2、默认路径安装后,安装完成,开始配置环境变量。 3、打开计算机属性——高级系...

阿豪boy ⋅ 38分钟前 ⋅ 0

bash shell script 简明教程

User <--> bash <--> kernel shell is not kernel or part of kernel various shells: tcsh, csh, bash, ksh find the using shell: echo $SHELL find all the shells: cat /etc/shells what......

mskk ⋅ 40分钟前 ⋅ 0

Service Mesh简史

William Morgan Service Mesh是一个相当新的概念,讲它的“历史”似乎有些勉强。就目前而言,Service Mesh已经在部分企业生产环境中运行了超过18个月,它的源头可以追溯到2010年前后互联网公...

好雨云帮 ⋅ 40分钟前 ⋅ 0

10个免费的服务器监控工具

监控你的WEB服务器或者WEB主机运行是否正常与健康是非常重要的。你要确保用户始终可以打开你的网站并且网速不慢。服务器监控工具允许你收集和分析有关你的Web服务器的数据。 有许多非常好的服...

李朝强 ⋅ 52分钟前 ⋅ 0

压缩工具之zip-tar

zip 支持目录压缩。使用yum安装zip包,使用yum安装unzip包 zip 1.txt.zip 1.txt #将1.txt文件压缩,新生成的压缩文件为1.txt.zip,原文件保留 zip -r 123.zip 123/ #-r对目录操作。将123/目录...

ZHENG-JY ⋅ 53分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部