原文:Win8 Metro(C#)数字图像处理--2.35图像肤色检测算法



[函数名称]

肤色检测函数SkinDetectProcess(WriteableBitmap src)

[算法说明]

这个算法是一篇学术论文算法的实现,论文名字为“基于韧脸检测和颜色分析的红眼自动消除”(作者金秋明,王朔中),主要是采集并统计肤色像素,得到肤色像素在RGB颜色空间中的分布范围,以此作为像素是否为肤色像素的判断标准及约束条件。具体内容大家可以在网络中搜索,由统计结果得到的肤色范围如下公式2-(45),2-(46)所示:

<strong><span style="font-size:14px;">[函数代码]</span></strong>/// <summary>/// Skin detection./// </summary>/// <param name="src">The source image.</param>/// <returns></returns>public static WriteableBitmap SkinDetectProcess(WriteableBitmap src)36肤色检测 {if (src != null){int w = src.PixelWidth;int h = src.PixelHeight;WriteableBitmap srcImage = new WriteableBitmap(w, h);byte[] temp = src.PixelBuffer.ToArray();byte[] tempMask = (byte[])temp.Clone();int R, G, B, S;double r, g, b;for (int i = 0; i < temp.Length; i += 4){B = tempMask[i];G = tempMask[i + 1];R = tempMask[i + 2];S = R + G + B;r = (double)R / (double)(R + G + B + 1.0);g = (double)G / (double)(R + G + B + 1.0);b = (double)B / (double)(R + G + B + 1.0);if (S != 0){if ((r > (double)(95.0 / (double)S)) && (r < 1 - (double)(90.0 / (double)S)) && (g > (double)(50.0 / (double)S)) && ((r - g) > (double)(30.0 / (double)S)) && (r - g < 0.2)){temp[i] = (byte)B;temp[i+1] = (byte)G;temp[i+2] = (byte)R;}else{temp[i] = 0;temp[i + 1] = 0;temp[i + 2] = 0;}}else{temp[i] = 0;temp[i + 1] = 0;temp[i + 2] = 0;}}Stream sTemp = srcImage.PixelBuffer.AsStream();sTemp.Seek(0, SeekOrigin.Begin);sTemp.Write(temp, 0, w * 4 * h);return srcImage;}else{return null;}}

Win8 Metro(C#)数字图像处理--2.35图像肤色检测算法相关推荐

  1. Win8 Metro(C#)数字图像处理--2.52图像K均值聚类

    原文:Win8 Metro(C#)数字图像处理--2.52图像K均值聚类  [函数名称] 图像KMeans聚类      KMeansCluster(WriteableBitmap src,int ...

  2. Win8 Metro(C#)数字图像处理--3.3图像直方图计算

    原文:Win8 Metro(C#)数字图像处理--3.3图像直方图计算 /// <summary>/// Get the array of histrgram./// </summa ...

  3. Win8 Metro(C#)数字图像处理--2.40二值图像轮廓提取算法

    Win8 Metro(C#)数字图像处理--2.40二值图像轮廓提取算法 原文:Win8 Metro(C#)数字图像处理--2.40二值图像轮廓提取算法  [函数名称] 二值图像轮廓提取      ...

  4. Win8 Metro(C#)数字图像处理--2.50图像运动模糊

    原文:Win8 Metro(C#)数字图像处理--2.50图像运动模糊  [函数名称] 图像运动模糊算法    MotionblurProcess(WriteableBitmap src,int  ...

  5. Win8 Metro(C#)数字图像处理--2.60部分彩色保留算法

    原文:Win8 Metro(C#)数字图像处理--2.60部分彩色保留算法  [函数名称] 部分彩色保留函数       WriteableBitmap PartialcolorProcess(W ...

  6. Win8 Metro(C#)数字图像处理--4图像颜色空间描述

    原文:Win8 Metro(C#)数字图像处理--4图像颜色空间描述  图像颜色空间是图像颜色集合的数学表示,本小节将针对几种常见颜色空间做个简单介绍. /// <summary>// ...

  7. Win8 Metro(C#)数字图像处理--2.69中点滤波器

    原文:Win8 Metro(C#)数字图像处理--2.69中点滤波器 [函数代码] <strong> /// <summary>/// Mid-point filter./// ...

  8. Win8 Metro(C#)数字图像处理--2.66FloodFill算法

    原文:Win8 Metro(C#)数字图像处理--2.66FloodFill算法  [函数名称] 洪水填充算法函数 WriteableBitmap FloodfillProcess(Writeab ...

  9. Win8 Metro(C#)数字图像处理--2.39二值图像投影

    原文:Win8 Metro(C#)数字图像处理--2.39二值图像投影  [函数名称] 二值图像投影         ImageProjection(WriteableBitmap src) [算 ...

最新文章

  1. redis持久化 mysql_Redis 如何保持和MySQL数据一致
  2. 高清的GIF表情包如何制作
  3. P1829 [国家集训队]Crash的数字表格(推了好久的mobius反演)
  4. C#控制台程序,发送邮件,可带附件
  5. HTML5链接tcpUDP,UDP/TCP协议 网络调试工具源码(C#)
  6. html css子标签,HTML+CSS系列:CSS选择器(标签、ID、类、通配符、后代、子元素、并集、伪类)...
  7. 人人都可以创造自己的AI:深度学习的6大应用及3大成熟领域
  8. python如何并发上千个get_Python拓展21(python3X之百万并发借鉴)
  9. linux 新增文件夹记录_linux文件系统(基础概念)
  10. golang 中io包用法(一)
  11. 简析运维监控系统及Open-Falcon
  12. 和nptf螺纹一样吗_常用数控加工计算公式和最全螺纹标准
  13. 陈年老调-log4j(分环境配置+动态修改)
  14. 经典论文阅读笔记——VIT、Swin Transformer、MAE、CILP
  15. 办理icp许可证对经营范围还有要求吗
  16. css信号强度显示,纯css实现wifi信号图标及强弱/链接/加密状态
  17. 6-3 BMI计算(类与对象) (10分)
  18. 洛谷题单1-7 搜索题解
  19. LS1028修改调试串口
  20. 基于jquery拆分姓名的方法[纯javascript版]

热门文章

  1. python3 全局变量 局部变量_python3 函数传参练习 全局变量与局部变量 的理解
  2. python legb_理解 Python 的 LEGB.
  3. iris数据_MAT之ELM:ELM实现鸢尾花(iris数据集)种类测试集预测识别正确率(better)结果对比...
  4. ogg源端mysql添加trandata_OGG_GoldenGate日常维护(案例)
  5. java httpclient教程_HttpClient4.5.2 HTTP协议的请求和执行
  6. Mysql连接显示1130_***远程连接MYSQL提示1130 - Host is not allowed to connect to this MySQL server...
  7. 寻找唯一特等奖java,大工斩获唯一特等奖!这次,请为我工老师疯狂打call!
  8. 当前时间转换的秒数_C++ 日期 amp; 时间
  9. 深度学习tensorflow变量op
  10. java 抽象类和接口有什么区别