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

论文《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('处理后图像');

三、运行结果:

最新文章

  1. Web API与OAuth:既生access token,何生refresh token
  2. 助手系列之连接mysql数据库
  3. java数组的增删改查
  4. ERP联系记录管理(十七)
  5. ICANN认证企业列表
  6. 在jsp中选中checkbox后 将该记录的多个数据获取,然后传到Action类中进行后台处理 双主键情况下 *.hbm.xml中的写法
  7. Android黑科技,读取用户短信+修改系统短信数据库
  8. 【Deep Learning】genCNN: A Convolutional Architecture for Word Sequence Prediction
  9. 贪心:字典树openjudge1799-最短前缀
  10. 【Linux】添加sudo用户、sudo用戶組
  11. Java加载资源文件的两种方法
  12. 【python3基础】相对路径,‘/’,‘./’,‘../’
  13. RPA答疑
  14. 【2018.04.19 ROS机器人操作系统】机器人控制:运动规划、路径规划及轨迹规划简介之一
  15. Codeforces 359E Neatness
  16. 开源的mqtt服务器
  17. java 类方法和实例方法 以及 类变量和实例变量 各种区别
  18. 对比各节点host 与 标准节点host差异脚本
  19. appium+python自动化43-微信公众号webview操作
  20. laravel配置路由出现404

热门文章

  1. IOS-程序员和设计师必备的20个CSS工具
  2. tomcat安装图文教程
  3. poj3656
  4. Node.js 全栈开发(二)——ES 201x 新语法的使用之基础篇
  5. sql中exists,Intersect ,union 与union All的用法
  6. js 倒计时 时间戳
  7. echarts-detail---饼图
  8. Kotlin Reference (三) Coding Conventions
  9. iOS开发之如何应对苹果app的ipv6时代?
  10. Linux 大文件的分割与合并