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

论文《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. yum search 不好用时

    用  yum provides */  eg :yum provides */pstack

  2. jquery基础 笔记二

    动态创建元素 关于使用HTML DOM创建元素本文不做详细介绍, 下面举一个简单的例子: //使用Dom标准创建元素 var select = document.createElement(" ...

  3. C# 设计模式巩固 - 简单工厂模式

    前言 设计模式的文章很多.鄙人不才文笔也不咋地.写这篇只为巩固下基础知识,万一不小心帮到了您,是我莫大的荣幸!写的不好欢迎码友指正,废话结束开始进入正题. 介绍 - 简单工厂模式 官方定义:(尴尬~貌 ...

  4. ping命令知识 Ping命令工作原理详解

    在网络应用中,ping网速与IP地址等都是非常常用的命令,但大家知道ping命令的工作原理吗?要知道这其中的奥秘,我们有必要来看看Ping命令的工作过程到底是怎么样的.下面介绍下ping命令的详细知识 ...

  5. jsp页面:js方法里嵌套java代码(是操作数据库的),如果这个js 方法没被调用,当jsp页面被解析的时候,不管这个js方法有没有被调用这段java代码都会被执行?

    jsp页面:js方法里嵌套java代码(是操作数据库的),如果这个js 方法没被调用,当jsp页面被解析的时候,不管这个js方法有没有被调用这段java代码都会被执行? 因为在解析时最新解析的就是JA ...

  6. (三) ffmpeg filter学习-编写自己的filter

    目录 目录 什么是ffmpeg filter 如何使用ffmpeg filter 1 将输入的1920x1080缩小到960x540输出 2 为视频添加logo 3 去掉视频的logo 自己写一个过滤 ...

  7. KAFKA 0.11 RHEL6.5安装

    KAFKA简介 KAFKA是一款分布式消息发布和订阅的系统. 官网:http://kafka.apache.org/ 1.下载KAFKA及JDK KAFKA下载地址: http://kafka.apa ...

  8. tableView 三级展开 嵌入collocationView

    目前有个需求,需要在写一个文件夹结构的类型,tableView分类显示 collocationView 遇到的问题是:tableView cell中嵌套了 collocationView 后,coll ...

  9. vue-one_demo_music

    简单的音乐盒子 利用计算属性(监听数据),解决上一首,下一首,点击切换 <!DOCTYPE html> <html lang="en"> <head& ...

  10. 原生js实现div拖拽+按下鼠标计时

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <style> ...