zoukankan      html  css  js  c++  java
  • 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程序:

     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);%公式(722                 CrY_Average = 154 - (125 - Y) * (154 - 144) / (125 - 16);%公式(823                 
    24                 WCbY = 23 + (Y - 16) * (46.97 - 23) / (125 - 16);%公式(625                 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;%公式(538             Cr = (CrY - CrY_Average) * 38.76 / WCbY + CrKh_Average;
    39 
    40         elseif (Y >= 125 && Y <= 188)
    41             Cb = CbY;%公式(542             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('处理后图像');

    三、运行结果:

    http://www.cnblogs.com/moon1992/
  • 相关阅读:
    请求headers处理
    requests模块
    urllib3
    urllib
    百度AI搜索引擎
    CSS层叠样式表--使用
    学习requests_html
    聚合新闻头条
    爬虫工程师的月薪如何?
    Linux日志系统
  • 原文地址:https://www.cnblogs.com/moon1992/p/5016808.html
Copyright © 2011-2022 走看看