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/
  • 相关阅读:
    《大话数据结构》第1章 数据结构绪论 1.2 你数据结构怎么学的?
    伍迷七八月新浪微博集锦
    《大话数据结构》第9章 排序 9.7 堆排序(下)
    《大话数据结构》第3章 线性表 3.8.2 单链表的删除
    《大话数据结构》第9章 排序 9.5 直接插入排序
    《大话数据结构》第9章 排序 9.8 归并排序(上)
    《大话数据结构》第2章 算法基础 2.9 算法的时间复杂度
    《大话数据结构》第1章 数据结构绪论 1.1 开场白
    《大话数据结构》第9章 排序 9.1 开场白
    [AWS] Assign a public IP address to an EC2 instance after launched
  • 原文地址:https://www.cnblogs.com/moon1992/p/5016808.html
Copyright © 2011-2022 走看看