• 大小: 11.61MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-07-29
  • 语言: Matlab
  • 标签: CLBP  人脸识别  

资源简介

matlab程序,包含了基本LBP,旋转不变LBP,均匀LBP ,旋转不变均匀LBP,CLBP等的LBP算子提取和分类,基于AR的人脸库,还有附加的一个说明文档以及自己测试的一些结果分析。

资源截图

代码片段和文件信息

function [CLBP_SCLBP_MCLBP_C] = clbp(varargin) 
error(nargchk(15nargin));

image=varargin{1};
d_image=double(image);

if nargin==1
    spoints=[-1 -1; -1 0; -1 1; 0 -1; -0 1; 1 -1; 1 0; 1 1];
    neighbors=8;
    mapping=0;
    mode=‘h‘;
end

if (nargin == 2) && (length(varargin{2}) == 1)
    error(‘Input arguments‘);
end

if (nargin > 2) && (length(varargin{2}) == 1)
    radius=varargin{2};
    neighbors=varargin{3};
    
    spoints=zeros(neighbors2);

    % Angle step.
    a = 2*pi/neighbors;
    
    for i = 1:neighbors
        spoints(i1) = -radius*sin((i-1)*a);
        spoints(i2) = radius*cos((i-1)*a);
    end
    
    if(nargin >= 4)
        mapping=varargin{4};
        if(isstruct(mapping) && mapping.samples ~= neighbors)
            error(‘Incompatible mapping‘);
        end
    else
        mapping=0;
    end
    
    if(nargin >= 5)
        mode=varargin{5};
    else
        mode=‘h‘;
    end
end

if (nargin > 1) && (length(varargin{2}) > 1)
    spoints=varargin{2};
    neighbors=size(spoints1);
    
    if(nargin >= 3)
        mapping=varargin{3};
        if(isstruct(mapping) && mapping.samples ~= neighbors)
            error(‘Incompatible mapping‘);
        end
    else
        mapping=0;
    end
    
    if(nargin >= 4)
        mode=varargin{4};
    else
        mode=‘h‘;
    end   
end

[ysize xsize] = size(image);



miny=min(spoints(:1));
maxy=max(spoints(:1));
minx=min(spoints(:2));
maxx=max(spoints(:2));

bsizey=ceil(max(maxy0))-floor(min(miny0))+1;
bsizex=ceil(max(maxx0))-floor(min(minx0))+1;


origy=1-floor(min(miny0));
origx=1-floor(min(minx0));


if(xsize < bsizex || ysize < bsizey)
  error(‘Too small input image. Should be at least (2*radius+1) x (2*radius+1)‘);
end

;
dx = xsize - bsizex;
dy = ysize - bsizey;


C = image(origy:origy+dyorigx:origx+dx);
d_C = double(C);

bins = 2^neighbors;


CLBP_S=zeros(dy+1dx+1);
CLBP_M=zeros(dy+1dx+1);
CLBP_C=zeros(dy+1dx+1);



for i = 1:neighbors
  y = spoints(i1)+origy;
  x = spoints(i2)+origx;
 
  fy = floor(y); cy = ceil(y); ry = round(y);
  fx = floor(x); cx = ceil(x); rx = round(x);

  if (abs(x - rx) < 1e-6) && (abs(y - ry) < 1e-6)
    N = image(ry:ry+dyrx:rx+dx);
    D{i} = N >= C;   
    Diff{i} = abs(N-C);
    MeanDiff(i) = mean(mean(Diff{i}));
  else
    ty = y - fy;
    tx = x - fx;

    w1 = (1 - tx) * (1 - ty);
    w2 =      tx  * (1 - ty);
    w3 = (1 - tx) *      ty ;
    w4 =      tx  *      ty ;
    N = w1*d_image(fy:fy+dyfx:fx+dx) + w2*d_image(fy:fy+dycx:cx+dx) + ...
        w3*d_image(cy:cy+dyfx:fx+dx) + w4*d_image(cy:cy+dycx:cx+dx);
    D{i} = N >= d_C; 
    Diff{i} = abs(N-d_C);
    MeanDiff(i) = mean(mean(Diff{i}));
  end  
end
DiffThreshold = mean(MeanDiff);
for i=1:neighbors
  v = 2^(i-1);
  CLBP_S = CLBP_S + v*D{i};
  CLBP_M = CLBP_M + v*(Diff{i}>=DiffThreshold);
end
CLBP_C = d_C>=mean(d_image(:

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

     文件    6075359  2011-10-01 15:40  程序\ar_1.mat

     文件    6075322  2013-04-09 22:10  程序\ar_2.mat

     文件        519  2011-10-01 15:40  程序\AR_label.mat

     文件       3578  2013-04-13 12:04  程序\clbp.m

     文件       3311  2013-04-13 09:13  程序\clbp_m.m

     文件       3311  2013-04-13 10:33  程序\clbp_s.m

     文件       3684  2013-04-13 09:13  程序\clbp_s_m.m

     文件        539  2013-04-12 09:53  程序\gaosi.m

     文件       1754  2013-04-13 12:01  程序\getmapping.m

     文件       3215  2013-04-13 12:02  程序\lbp.m

     文件       3014  2013-04-13 12:46  程序\lbp_1.m

     文件        382  2013-04-12 10:27  程序\reshape_1.m

     文件        304  2013-04-12 13:49  程序\reshape_2.m

     文件      12822  2013-04-13 12:52  result.docx

     目录          0  2013-04-13 12:54  程序

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

             12187114                    15


评论

共有 条评论