• 大小: 153KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-18
  • 语言: Matlab
  • 标签: tag  

资源简介

生物识别是一种根据人体自身的生理特征(如指纹、脸像、虹膜等)和行为特征(如笔迹、声音、步态等)来识别身份的技术。近年来,随着模式识别、图像处理和信息传感等技术的不断发展,生物识别显示出更为广阔的应用前景。众所周知,其他的生物测定方法如指纹、声音和虹膜等,由于要求被测定者的主动配合参与,才能达到识别的目的,而人脸识别却不受这种限制,因此人脸识别正在成为当前人们关注和投入较大研究力量的重点。 学习目标: (1)学习和掌握MATLAB人脸检测算法; (2)学习和掌握MATLAB编程实现人脸图像分割; (3)学习和掌握不同颜色空间下的人脸图像分割等

资源截图

代码片段和文件信息

function [hsv] = rgb2hsv(rgb)
%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);
     
     if isa(r ‘uint8‘)     % 图像数据类型uint8
        r = double(r) / 255; 
     elseif isa(r ‘uint16‘)  % 是否为uint16
        r = double(r) / 65535;
     end
  case 3  % 输入为RGB三通道数据
     validateattributes(r {‘uint8‘ ‘uint16‘ ‘double‘ ‘single‘} {‘real‘} mfilename ‘R‘ 1);
     validateattributes(g {‘uint8‘ ‘uint16‘ ‘double‘ ‘single‘} {‘real‘} mfilename ‘G‘ 2);
     validateattributes(b {‘uint8‘ ‘uint16‘ ‘double‘ ‘single‘} {‘real‘} mfilename ‘B‘ 3);

     if isa(r ‘uint8‘) 
        r = double(r) / 255; 
     elseif isa(r ‘uint16‘)
        r = double(r) / 65535;
     end
     
     if isa(g ‘uint8‘) 
        g = double(g) / 255; 
     elseif isa(g ‘uint16‘)
        g = double(g) / 65535;
     end
     
     if isa(b ‘uint8‘) 
        b = double(b) / 255; 
     elseif isa(b ‘uint16‘)
        b = double(b) / 65535;
     end
     
  otherwise
      error(message(‘输入变量错误‘));
end
  
threeD = (ndims(r)==3); % 判断r是否是三通道的数据

if threeD %如果是的,分成RGB三通道数据
  g = r(::2); b = r(::3); r = r(::1);
  siz = size(r);
  r = r(:); g = g(:); b = b(:); % 化成一列
elseif nargin==1
  g = r(:2); b = r(:3); r = r(:1);
  siz = size(r);
else
  if ~isequal(size(r)size(g)size(b)) 
    error(message(‘RGB三通道数据维数不相同‘));
  end
  siz = size(r);
  r = r(:); g = g(:); b = b(:);
end
% 色度(H)和饱和度(S)、亮度(V)
v = max(max(rg)b);           % 最大值
h = zeros(size(v) ‘like‘ r); % 色度
s = (v - min(min(rg)b));     % 饱和度
% 公式
z = ~s;
s(~s) = 1;
k = find(r == v);  % r通道
h(k) = (g(k) - b(k))./s(k);
k = find(g == v);  % g通道
h(k) = 2 + (b(k) - r(k))./s(k);
k = find(b == v);  % b通道
h(k) = 4 + (r(k) - g(k))./s(k);
h = h/6;
k = find(h < 0);
h(k) = h(k) + 1;
h(z) = 0;

tmp = s./v;
tmp(z) = 0;
k = find(v);
s(k) = tmp(k);
s(~v) = 0;

if nargout<=1  % 输出小于等于1个变量
  if (threeD || nargin==3)
    h = reshape(hsiz);  % 变为二维矩阵
    s = reshape(ssiz);
    v = reshape(vsiz);
    h=cat(3hsv);
  else
    h=[h s v];
  end
else
  h = reshape(hsiz);
  s = reshape(ssiz);
  v = reshape(vsiz);
end

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      45576  2018-06-29 12:59  第16章\1.jpg

     文件       2488  2018-06-29 12:59  第16章\rgb2hsv.m

     文件       1726  2018-06-29 12:59  第16章\rgb2ycrcb.m

     文件        223  2018-06-29 12:59  第16章\waitopen.m

     文件      65116  2018-06-29 12:59  第16章\xbb.jpg

     文件      40740  2018-06-29 12:59  第16章\xbb2.jpg

     文件        300  2018-06-29 12:59  第16章\ysw16_1.m

     文件        296  2018-06-29 12:59  第16章\ysw16_2.m

     文件        962  2018-06-29 12:59  第16章\ysw16_3.m

     文件        825  2018-06-29 12:59  第16章\ysw16_4.m

     文件       1540  2018-06-29 12:59  第16章\ysw16_5.m

     文件        995  2018-06-29 12:59  第16章\ysw16_6.m

     文件       1690  2018-06-29 12:59  第16章\ysw16_7.m

     目录          0  2018-08-20 17:45  第16章

----------- ---------  ---------- -----  ----

               162477                    14


评论

共有 条评论