编程语言
首页 > 编程语言> > 【图像分割】基于 RGB HSV YCbCr Lab颜色空间人脸检测matlab源码

【图像分割】基于 RGB HSV YCbCr Lab颜色空间人脸检测matlab源码

作者:互联网

一、简介

现代信息社会对于身份鉴别的准确性、安全性与实用性提出了更高的要求,传统的身份识别方法已经不能满足这种要求,而人体丰富的生理和行为特征为此提供了一个可靠的解决方案,因而引起了国际学术界和企业界的广泛关注。生物识别是一种根据人体自身的生理特征(如指纹、脸像、虹膜等)和行为特征(如笔迹、声音、步态等)来识别身份的技术。近年来,随着模式识别、图像处理和信息传感等技术的不断发展,生物识别显示出更为广阔的应用前景。众所周知,其他的生物测定方法如指纹、声音和虹膜等,由于要求被测定者的主动配合参与,才能达到识别的目的,而人脸识别却不受这种限制,因此人脸识别正在成为当前人们关注和投入较大研究力量的重点。
Lab色彩空间被设计用来接近人类视觉,它致力于感知均匀性。
在Lab空间中,L表示亮度,a和b表示颜色对立的维度。L值为O时色彩为黑色,L值接近100时为白色;a值表示色彩在红色和绿色之间的位置;b值表示色彩在蓝色和黄色之间的位置。在CIELAB模型中,a值大于0时表示红色,a值小于O时表示绿色,b值大于O时表示黄色。
Lab颜色空间是一种与设备无关的颜色系统,是基于1931年CIE颁布的色彩度量国际标准创建的,是由CIE XYZ通过数学转换得到的均匀色度空间。CIE XYZ空间采用了理想的原色X、Y、Z代替R、G、B,而理想原色的选择是基于RGB颜色空间采用数学方法建立的,其中,X、Y、Z分别描述红原色、绿原色和蓝原色。这三个分量是虚拟的假色彩,并非真色彩。

二、源代码

clc,clear,close all
warning off
feature jit off       % 加速代码执行,提高运行时间
rgb=imread('xbb.jpg');  % 加载图像
% imshow(rgb);
r = rgb(:, :, 1);  % R通道
g = rgb(:, :, 2);  % G通道
b = rgb(:, :, 3);  % B通道
[m,n]=size(r);
cform = makecform('srgb2lab'); % color transformation structure
J = applycform(rgb,cform);     % color space transformation
M=graythresh(J(:,:,3));        % 阈值
BW2=im2bw(J(:,:,3),M);         %二值化
BW2= bwareaopen(BW2, 300);     %剔除小块
% imshow(BW2)
cc=bwconncomp(BW2);            % 连通性检查
s  = regionprops(BW2, {'centroid','area'});  %标记块重心
[~, id] = max([s.Area]);     % 找出最大块的标号
BW2(labelmatrix(cc)~=id)=0;  % 非最大块置为背景
r1=immultiply(r,~BW2);  % 交运算
g1=immultiply(g,~BW2);  % 交运算
b1=immultiply(b,~BW2);  % 交运算
xbb=cat(3,r1,g1,b1);    % 合成3-D
figure;imshow(xbb);     % 显示
%%
for i=1:m
    for j=1:n
      if (r1(i,j)>=145&&r1(i,j)<=255)&&(g1(i,j)>=50&&g1(i,j)<=255)&&(b1(i,j)>=20&&b1(i,j)<=220)%改皮肤色
            r1(i,j)=150;g1(i,j)=250;b1(i,j)=250;
      end
      if (r1(i,j)>=240&&r1(i,j)<=255)&&(g1(i,j)>=240&&g1(i,j)<=255)&&(b1(i,j)>=220&&b1(i,j)<=255)%改背景白色
            r1(i,j)=255;g1(i,j)=0;b1(i,j)=255;
      end
      if (r1(i,j)>=0&&r1(i,j)<=2)&&(g1(i,j)>=0&&g1(i,j)<=2)&&(b1(i,j)>=0&&b1(i,j)<=2)%改背景黑色
            r1(i,j)=200;g1(i,j)=255;b1(i,j)=0;
      end
      if (r1(i,j)>=0&&r1(i,j)<=170)&&(g1(i,j)>=0&&g1(i,j)<=172)&&(b1(i,j)>=0&&b1(i,j)<=180)%改头发黑色
            r1(i,j)=120;g1(i,j)=155;b1(i,j)=255;
      end
    end
end
clc,clear,close all
warning off
im=imread('1.jpg');    % 读图
im_gray=rgb2gray(im);  % 转为灰度图像
R=im(:,:,1);G=im(:,:,2);B=im(:,:,3);
hsv_im=rgb2hsv(R,G,B); % RGB到HSV
subplot(121),subimage(im) % 显示图像
axis off
title('RGB')
subplot(122),subimage(hsv_im)

function [h,s,v] = rgb2hsv(r,g,b)
%RGB2HSV Convert red-green-blue colors to hue-saturation-value.
% 色度(H)和饱和度(S)、亮度(V)
switch nargin
  case 1,  % 输入一个量,即一副RGB图像
     validateattributes(r, {'uint8', 'uint16', 'double', 'single'}, {'real'}, mfilename, 'RGB', 1);
     function ycrcb_im =  rgb2ycrcb(r,g,b)
% RGB颜色空间向YCrCb彩色空间转化
switch nargin
  case 1,  % 输入一个量,即一副RGB图像
     validateattributes(r, {'uint8', 'uint16', 'double', 'single'}, {'real'}, mfilename, 'RGB', 1);

四、备注

完整代码或者代写添加QQ1575304183

往期回顾>>>>>>

【图像聚类】基于FCM和改进的FCM脑部CT图像聚类处理

【图像增强】PSO寻优ACE的图像增强matlab源码

【图像增强】基于区域相似变换函数和蜻蜓算法的灰度图像增强

【图像增强】基于局部对比度增强的CLAHE算法 --直方图增强
【图像重建】图像重建之ASTRA算法matlab源码

【图像评价】基于CCF算法的图像质量评价

【图像隐藏】基于混沌系统的图像加密解密matlab源码含GUI

【图像隐藏】基于DWT+DCT+PBFO改进图像水印隐藏提取matlab源码含GUI

【图像隐藏】基于正交拉丁方置乱之图像隐藏matlab源码

【图像隐藏】基于Laguerre 变换的图像隐藏matlab源码

【图像压缩】基于小波变换的图像压缩matlab源码

标签:BW2,r1,Lab,YCbCr,源码,matlab,&&,图像
来源: https://blog.csdn.net/qq_34763204/article/details/113720009