一、简介
现代信息社会对于身份鉴别的准确性、安全性与实用性提出了更高的要求,传统的身份识别方法已经不能满足这种要求,而人体丰富的生理和行为特征为此提供了一个可靠的解决方案,因而引起了国际学术界和企业界的广泛关注。生物识别是一种根据人体自身的生理特征(如指纹、脸像、虹膜等)和行为特征(如笔迹、声音、步态等)来识别身份的技术。近年来,随着模式识别、图像处理和信息传感等技术的不断发展,生物识别显示出更为广阔的应用前景。众所周知,其他的生物测定方法如指纹、声音和虹膜等,由于要求被测定者的主动配合参与,才能达到识别的目的,而人脸识别却不受这种限制,因此人脸识别正在成为当前人们关注和投入较大研究力量的重点。
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