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

论文《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, 彩色图像中的人脸检测的更多相关文章

  1. Android 中使用 dlib+opencv 实现动态人脸检测

    1 概述 完成 Android 相机预览功能以后,在此基础上我使用 dlib 与 opencv 库做了一个关于人脸检测的 demo.该 demo 在相机预览过程中对人脸进行实时检测,并将检测到的人脸用 ...

  2. 在opencv3中进行图片人脸检测

    在opencv中,人脸检测用的是harr或LBP特征,分类算法用的是adaboost算法.这种算法需要提前训练大量的图片,非常耗时,因此opencv已经训练好了,把训练结果存放在一些xml文件里面.在 ...

  3. python中使用Opencv进行人脸检测

    这两天学习了人脸识别,看了学长写的代码,边看边码边理解搞完了一边,再又是自己靠着理解和记忆硬码了一边,感觉还是很生疏,就只能来写个随笔加深一下印象了. 关于人脸识别,首先需要了解的是级联分类器Casc ...

  4. 实时人脸检测 (Real-Time Face Detection)

    源地址:http://blog.sina.com.cn/s/blog_79b67dfe0102uzra.html 最近需要用到人脸检测,于是找了篇引用广泛的论文实现了一下:Robust Real-Ti ...

  5. 基于图形检测API(shape detection API)的人脸检测

    原文:https://paul.kinlan.me/face-detection/ 在 Google 开发者峰会中,谷歌成员 Miguel Casas-Sanchez 跟我说:"嘿 Paul ...

  6. Dlib库中实现正脸人脸检测的测试代码

    Dlib库中提供了正脸人脸检测的接口,这里参考dlib/examples/face_detection_ex.cpp中的代码,通过调用Dlib中的接口,实现正脸人脸检测的测试代码,测试代码如下: #i ...

  7. 基于TensorFlow Object Detection API进行迁移学习训练自己的人脸检测模型(二)

    前言 已完成数据预处理工作,具体参照: 基于TensorFlow Object Detection API进行迁移学习训练自己的人脸检测模型(一) 设置配置文件 新建目录face_faster_rcn ...

  8. golang中的race检测

    golang中的race检测 由于golang中的go是非常方便的,加上函数又非常容易隐藏go. 所以很多时候,当我们写出一个程序的时候,我们并不知道这个程序在并发情况下会不会出现什么问题. 所以在本 ...

  9. iOS中使用 Reachability 检测网络

    iOS中使用 Reachability 检测网络 内容提示:下提供离线模式(Evernote).那么你会使用到Reachability来实现网络检测.   写本文的目的 了解Reachability都 ...

随机推荐

  1. Centos7 Erlang Solutions 安装

    https://www.erlang-solutions.com/resources/download.html Installation using repository 1. Adding rep ...

  2. CentOS上部署Django+Nginx+Uwsgi环境

    在CentOS上部署Django+Nginx+Uwsgi环境 奇谭  2016-09-01 评论  Linux  python django nginx uwsgi VirtualEnv的作用:创建隔 ...

  3. (转)一行代码解决各种IE兼容问题,IE6,IE7,IE8,IE9,IE10

    原文链接 http://blog.csdn.net/h5_queenstyle12/article/details/50424862 百度源代码如下 <!Doctype html> < ...

  4. C++进阶2. typedef用法

    C++ 中的typedef用法 20131011 Typedef在C++中是一个关键字,他的用法有多重,但是自己又说不全面,所以整理一下: 1.用类型的别名 typedef char* PChar; ...

  5. centos静默安装oracle12c

    配置系统和安装所需软件包 关闭selinux 临时关闭(不用重启) [root@SVR-3-125 ~]# setenforce 0 修改配置文件(需要重启):  将SELINUX=enforcing ...

  6. Markdown_01_基础语法

    目录 概览 一.区块元素{#BlockElement} 1.段落和换行 2.标题 2.区块引用 2.1 在每行的最前面加上 > 2.2 只在整个段落的第一行最前面加上> 2.3 区块引用可 ...

  7. *SCM-MANAGER独立部署方式

    从官网获取最新版本 scm-manager 独立安装包 https://www.scm-manager.org/download/ 解压 为合适的路径 修改 services.bat 文件服务相关信息 ...

  8. Centos下找不到eth0设备的解决方法

    问题描述: ifconfig命令无法找到eth0设备,且/etc/sysconfig/network-scripts/中只有ifcfg-lo文件,而没有ifcfg-eth0. 临时解决方法一: 使用命 ...

  9. c# 自定义排序类(冒泡、选择、插入、希尔、快速、归并、堆排序等)

    using System; using System.Text; namespace HuaTong.General.Utility { /// <summary> /// 自定义排序类 ...

  10. spinlock变量没有初始化

    http://blog.csdn.net/longwang155069/article/details/52224284