Face detection in color images, 彩色图像中的人脸检测
人脸检测在视频监督,人机交互,人脸识别和人脸图像数据库管理等应用领域处于很重要的地位。
论文《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程序:
close all;
clear;
clc; Image_RGB = imread('test.jpg');
Image_YCbCr = rgb2ycbcr(Image_RGB); %得到图片的行数与列数
[row column dim] = size(Image_RGB); for i = : row
for j = : column Y = double(Image_YCbCr(i, j, ));
CbY = double(Image_YCbCr(i, j, ));
CrY = double(Image_YCbCr(i, j, )); if (Y < || Y > )
if (Y < )
%获得Cb,Cr的均值
CbY_Average = + ( - Y) * ( - ) / ( - );%公式()
CrY_Average = - ( - Y) * ( - ) / ( - );%公式() WCbY = + (Y - ) * (46.97 - ) / ( - );%公式()
WCrY = + (Y - ) * (38.76 - ) / ( - );
elseif (Y > )
CbY_Average = + (Y - ) * ( - ) / ( - );
CrY_Average = + (Y - ) * ( - ) / ( - ); WCbY = + ( - Y) * (46.97 - ) / ( - );
WCrY = + ( - Y) * (38.76 - ) / ( - );
end
%求Cb(Kh), Cr(Kh)的均值
CbKh_Anerage = + ( - ) * ( - ) / ( - );
CrKh_Average = + ( - ) * ( - ) / ( - ); Cb = (CbY - CbY_Average) * 46.97 / WCbY + CbKh_Anerage;%公式()
Cr = (CrY - CrY_Average) * 38.76 / WCbY + CrKh_Average; elseif (Y >= && Y <= )
Cb = CbY;%公式()
Cr = CrY;
end
%将Cb,Cr代入椭圆模型
cx=109.38; cy=152.02; ecx=1.60; ecy=2.41;
a=25.39; b=14.03; Theta = 2.53 / pi * ;
m = sin(Theta);
n = cos(Theta); temp = [n, m; -m, n] * [Cb - cx; Cr - cy];
x = temp(, );
y = temp(, );
ellipse = (x - ecx)^ / a^ + (y - ecy)^ / b^; if (ellipse <= )
Image_YCbCr(i, j, :) = ;
else
Image_YCbCr(i, j, :) = ;
end end
end figure;
subplot(); imshow(Image_RGB);title('原图像');
subplot(); imshow(Image_YCbCr);title('处理后图像');
三、运行结果:

Face detection in color images, 彩色图像中的人脸检测的更多相关文章
- Android 中使用 dlib+opencv 实现动态人脸检测
1 概述 完成 Android 相机预览功能以后,在此基础上我使用 dlib 与 opencv 库做了一个关于人脸检测的 demo.该 demo 在相机预览过程中对人脸进行实时检测,并将检测到的人脸用 ...
- 在opencv3中进行图片人脸检测
在opencv中,人脸检测用的是harr或LBP特征,分类算法用的是adaboost算法.这种算法需要提前训练大量的图片,非常耗时,因此opencv已经训练好了,把训练结果存放在一些xml文件里面.在 ...
- python中使用Opencv进行人脸检测
这两天学习了人脸识别,看了学长写的代码,边看边码边理解搞完了一边,再又是自己靠着理解和记忆硬码了一边,感觉还是很生疏,就只能来写个随笔加深一下印象了. 关于人脸识别,首先需要了解的是级联分类器Casc ...
- 实时人脸检测 (Real-Time Face Detection)
源地址:http://blog.sina.com.cn/s/blog_79b67dfe0102uzra.html 最近需要用到人脸检测,于是找了篇引用广泛的论文实现了一下:Robust Real-Ti ...
- 基于图形检测API(shape detection API)的人脸检测
原文:https://paul.kinlan.me/face-detection/ 在 Google 开发者峰会中,谷歌成员 Miguel Casas-Sanchez 跟我说:"嘿 Paul ...
- Dlib库中实现正脸人脸检测的测试代码
Dlib库中提供了正脸人脸检测的接口,这里参考dlib/examples/face_detection_ex.cpp中的代码,通过调用Dlib中的接口,实现正脸人脸检测的测试代码,测试代码如下: #i ...
- 基于TensorFlow Object Detection API进行迁移学习训练自己的人脸检测模型(二)
前言 已完成数据预处理工作,具体参照: 基于TensorFlow Object Detection API进行迁移学习训练自己的人脸检测模型(一) 设置配置文件 新建目录face_faster_rcn ...
- golang中的race检测
golang中的race检测 由于golang中的go是非常方便的,加上函数又非常容易隐藏go. 所以很多时候,当我们写出一个程序的时候,我们并不知道这个程序在并发情况下会不会出现什么问题. 所以在本 ...
- iOS中使用 Reachability 检测网络
iOS中使用 Reachability 检测网络 内容提示:下提供离线模式(Evernote).那么你会使用到Reachability来实现网络检测. 写本文的目的 了解Reachability都 ...
随机推荐
- Ubuntu相关命令
此贴包含自己搭建网站以及自学Ubuntu遇到的相关命令,方便以后查看,故相关帖子整理记录在此! 用户切换 当前用户切换到root用户,只需要执行sudo su即可. root用户切回user用户,只需 ...
- linux下使用FreeRDP 连接 Windows 远程桌面
linux下使用FreeRDP 连接 Windows 远程桌面 简介 FreeRDP 是一款开源的远程桌面系统,支持多种平台, 在 ubuntu 中使用 FreeRDP 可以很方便的登录到 win ...
- 探究JS中的连等赋值问题
一.引子 最近在看别人的博客时无意中看到一个这样的问题 var a = {n: 1}; var b = a; a.x = a = {n:2}; console.log(a.x); //undefine ...
- SPOJ 5152 Brute-force Algorithm EXTREME && HDU 3221 Brute-force Algorithm 快速幂,快速求斐波那契数列,欧拉函数,同余 难度:1
5152. Brute-force Algorithm EXTREME Problem code: BFALG Please click here to download a PDF version ...
- *SCM-MANAGERtomcat寄宿使用
采用的部署方式 TomCat 一个端口下部署多个 Application供不同部门使用 初始部署详参见 SCM-MANAGER 博文 日常使用添加部门操作步骤 从“D:\tomcat\webapps” ...
- Java反射-初步入门
Java反射-初步入门 学反射先了解什么是反射. 百度百科:JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动 ...
- C#项目中怎样创建和使用类和类库
创建一个类库项目在“文件”菜单上,选择“新建项目”. 在“新建项目”对话框的“模板”窗格中,单击“类库”. 在“名称”框中键入 Persons,再单击“确定”. 把“添加新解决方案”勾选掉,选择“添入 ...
- GNU Autotools的使用方法
手工写Makefile是一件很有趣的事情,对于比较大型的项目,如果有工具可以代劳,自然是一件好事.在Linux系统开发环境中,GNU Autotools 无疑就充当了这个重要角色.(在Windows系 ...
- (转)Pig 重写加载函数和存储函数UDF
pig自带的pigstorage不能指定行分隔符,所以自己重写了一个简单的UDF类,可以指定列和行的分隔符,之前研究过的简单的, http://blog.csdn.net/ruishenh/artic ...
- [置顶]
【机器学习PAI实践九】如何通过机器学习实现云端实时心脏状况监测
背景 我们通过之前的案例已经为大家介绍了如何通过常规的体检数据预测心脏病的发生,请见http://blog.csdn.net/buptgshengod/article/details/53609878 ...