人脸检测在视频监督,人机交互,人脸识别和人脸图像数据库管理等应用领域处于很重要的地位。

论文《Face detection in color images》中给出一种在YCbCr空间检测人脸的方法, 点击下载论文原版_中文翻译_matlab程序。

本文使用MATLAB实现该论文的肤色检测功能。

一、原理部分:

在论文第8页附录A中给出了色素和皮肤模型的非线性变换的公式:将Cb(Y), Cr(Y)通过公式(5)转换为Cb'(Y), Cr'(Y), 公式(5)的未知量可以通过公式(6), (7), (8)求得。公式中很多给定的常量请查阅原文。

在计算出Cb'(Y), Cr'(Y)之后,代入公式(10), 求得x, y, 在将x, y代入公式(9),判断点(x, y)落在椭圆内部还是外部,落在椭圆内部的点认为是肤色区域,用白色标记。落在椭圆外部的点不是肤色区域,用黑色标记。

二、matlab程序:

 1 close all;
 2 clear;
 3 clc;
 4
 5 Image_RGB = imread('test.jpg');
 6 Image_YCbCr = rgb2ycbcr(Image_RGB);
 7
 8 %得到图片的行数与列数
 9 [row column dim] = size(Image_RGB);
10
11 for i = 1 : row
12     for j = 1 : column
13
14         Y = double(Image_YCbCr(i, j, 1));
15         CbY = double(Image_YCbCr(i, j, 2));
16         CrY = double(Image_YCbCr(i, j, 3));
17
18         if (Y < 125 || Y > 188)
19             if (Y < 125)
20                 %获得Cb,Cr的均值
21                 CbY_Average = 108 + (125 - Y) * (118 - 108) / (125 - 16);%公式(7)
22                 CrY_Average = 154 - (125 - Y) * (154 - 144) / (125 - 16);%公式(8)
23
24                 WCbY = 23 + (Y - 16) * (46.97 - 23) / (125 - 16);%公式(6)
25                 WCrY = 20 + (Y - 16) * (38.76 - 20) / (125 - 16);
26             elseif (Y > 188)
27                 CbY_Average = 108 + (Y - 188) * (118 - 108) / (235 - 188);
28                 CrY_Average = 154 + (Y - 188) * (154 - 132) / (235 - 188);
29
30                 WCbY = 14 + (235 - Y) * (46.97 - 14) / (235 - 188);
31                 WCrY = 10 + (235 - Y) * (38.76 - 10) / (235 - 188);
32             end
33             %求Cb(Kh), Cr(Kh)的均值
34             CbKh_Anerage = 108 + (188 - 188) * (118 - 108) / (235 - 188);
35             CrKh_Average = 154 + (188 - 188) * (154 - 132) / (235 - 188);
36
37             Cb = (CbY - CbY_Average) * 46.97 / WCbY + CbKh_Anerage;%公式(5)
38             Cr = (CrY - CrY_Average) * 38.76 / WCbY + CrKh_Average;
39
40         elseif (Y >= 125 && Y <= 188)
41             Cb = CbY;%公式(5)
42             Cr = CrY;
43         end
44         %将Cb,Cr代入椭圆模型
45         cx=109.38; cy=152.02; ecx=1.60; ecy=2.41;
46         a=25.39; b=14.03;
47
48         Theta = 2.53 / pi * 180;
49         m = sin(Theta);
50         n = cos(Theta);
51
52         temp = [n, m; -m, n] * [Cb - cx; Cr - cy];
53         x = temp(1, 1);
54         y = temp(2, 1);
55         ellipse = (x - ecx)^2 / a^2 + (y - ecy)^2 / b^2;
56
57         if (ellipse <= 1)
58             Image_YCbCr(i, j, :) = 255;
59         else
60             Image_YCbCr(i, j, :) = 0;
61         end
62
63     end
64 end
65
66 figure;
67 subplot(121); imshow(Image_RGB);title('原图像');
68 subplot(122); imshow(Image_YCbCr);title('处理后图像');

三、运行结果:

转载于:https://www.cnblogs.com/moon1992/p/5016808.html

Face detection in color images, 彩色图像中的人脸检测相关推荐

  1. matlab皮肤色号检测,彩色图像中的人脸(肤色)检测

    彩色图像中的人脸(肤色)检测 选了图像工程的课,老师布置了一个小Project,要求用OpenCV或者Matlab实现人脸肤色检测,具体算法参考文献"Face Detection In Co ...

  2. python 人脸检测_借助摄像头在Python中实现人脸检测

    Python部落(www.freelycode.com)组织翻译, 禁止转载 本文作者是Shantnu Tiwari--曾多年在C/C++的魔爪中饱受折磨,直到他发现了Python--使用起来感觉如呼 ...

  3. opencv中的人脸检测案例

    案例:人脸检测 利用OpenCV中自己已经训练好的检测器 1 检测流程 1.读取图片,并转换为灰度图像 2.实例化人脸和眼睛检测的分类器对象 # 实例化级联分类器 face_cas = cv.Casc ...

  4. android 人脸检测 facedec,智能访客系统中的人脸检测及方向判别算法.pdf

    智能访客系统中的人脸检测及方向判别算法,人脸识别算法,人脸检测算法,opencv人脸识别算法,人脸识别算法有哪些,人脸识别pca算法,人脸比对算法,android人脸识别算法,adaboost人脸检测 ...

  5. Android中的人脸检测入门

    原文作者 : Paul Trebilcox-Ruiz 译文出自 : 开发技术前线 www.devtf.cn 转载声明: 本译文已授权开发者头条享有独家转载权,未经允许,不得转载! 译者 : Langl ...

  6. Google Play服务中的人脸检测

    资料来源:Face Detection in Google Play services 从Google Play服务版本7.8开始,提供一套更快更优秀的人脸检测的接口.这套接口在各种角度及各表情的脸部 ...

  7. 如何用OpenCV在Python中实现人脸检测

    选自towardsdatascience 作者:Maël Fabien 机器之心编译 参与:高璇.张倩.淑婷 本教程将介绍如何使用 OpenCV 和 Dlib 在 Python 中创建和运行人脸检测算 ...

  8. 使用UWP人脸检测API在WPF中进行人脸检测

    目录 介绍 先决条件 背景 人脸检测 标记人脸 查看模型 视图 结论 Download repository 介绍 通用Windows平台的Windows.Media.FaceAnalysis名称空间 ...

  9. frame中src怎么设置成一个变量_OpenCV图像人脸检测及视频中的人脸检测(附源码)...

    文章目录 一.数据和知识准备 1. 下载HAAR与LBP数据 2. opencv相关知识 二.python+opencv实现人脸检测 1. 图像单人脸检测 2. 图像多人脸检测 3. 视频中人脸检测 ...

最新文章

  1. 在Windows环境下安装hyperledger和byfn
  2. python3多个变量赋值
  3. X509Certificate2 本地正常,放到线上内部错误
  4. 关于MySQL使用Float存储时的精度问题
  5. SQL SERVER 内存分配及常见内存问题(1)——简介
  6. 基于redis的乐观锁实践
  7. mipi差分信号原理
  8. linux 查看硬盘的uuid_ubuntu16.04 挂载新硬盘
  9. linux 转换格式,linux下常见音频格式之间的转换
  10. css层叠优先级,CSS样式的优先级(层叠)
  11. 环境微生物学试题库(1-10)
  12. window 10 局域网同步时间(解决错误:This scheduler instance is still active but was recovered by another instanc)
  13. 小程序1rpx,边框不完整或线条太粗
  14. 3.1.2随机梯度下降法
  15. 四旋翼飞行器6——光流传感器简介
  16. Springboot毕设项目高校教材征订系统设计与实现ig8t1(java+VUE+Mybatis+Maven+Mysql)
  17. 怎么修改计算机密码界面的背景,怎么修改Win7登录界面背景图片(欢迎界面背景图片)?...
  18. 小混混就没有明天了吗
  19. IPC----pipe的使用
  20. 第七十六篇:车辆安全-车载软件C语言开发指南(MISRA-C)

热门文章

  1. 【Python】| 基于Python实现对比Excel的小工具
  2. 【隐私计算笔谈】MPC系列专题(五):Beaver三元组和BMR协议
  3. 请开启微信或者手机定位服务器,微信在哪里设置定位(微信开启定位功能设置)...
  4. 计算个人所得税(老版)
  5. mysql 开启 thread pool_MySQL線程池(THREAD POOL)的處理
  6. 如何让你的电脑声音增大500%
  7. 英文ppt怎么翻译成中文?教你几种ppt翻译方法
  8. Flutter 实现风车加载动画组件
  9. 如何记录日常收支,将账目导出生成表格保存
  10. 如何通过爱奇艺引流精准粉?