+ -
当前位置:首页 → 问答吧 → 模式识别

模式识别

时间:2011-12-23

来源:互联网

1. 已知有K个N维向量[x1,x2,…,xK],希望使用PCA方法将N维向量降维为n维(n<N),请在下面用文字和公式写出降维步骤。
2. 有一张大小为100x100像素的人脸图像,希望提取其LBP直方图特征,请在下面用文字和公式写出LBP直方图特征提取过程。(参数为:图像分为7x7=49个小块(blocks),提取uniform patterns,所有non-uniform patterns作为一个pattern。)
4. 请编程调用OpenCV中的物体检测函数,实现人脸检测和人眼检测功能;
(可参考OpenCV例子代码 samples/c/facedetect.cpp;人脸和人眼的分类器分别是data/haarcascades/haarcascade_frontalface_alt.xml;data/haarcascades/haarcascade_eye_tree_eyeglasses.xml )

已实现的功能:
1. …
2. …
请帖程序源代码于下方:

作者: linhao888888   发布时间: 2011-12-23

代码
% 输入一个图像im,输出lbpimage
% lbpimage长和宽分别比im小2个像素
% lbpimage中的像素值表示的是lbp pattern (lbp code)
function lbpimage = lbp(im)

spoints=[-1 -1; -1 0; -1 1; 0 -1; -0 1; 1 -1; 1 0; 1 1];
% 确定输入图像的尺寸
[ysize xsize] = size(image);
neighbors=size(spoints,1);

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

% 块的大小,每个LBP的代码是计算在一个块大小bsizey* bsizex
bsizey=ceil(max(maxy,0))-floor(min(miny,0))+1;
bsizex=ceil(max(maxx,0))-floor(min(minx,0))+1;

% 块中的坐标原点(0,0)
origy=1-floor(min(miny,0));
origx=1-floor(min(minx,0));

% 计算dx和dy
dx = xsize - bsizex;
dy = ysize - bsizey;

% 填入中心像素矩阵C
C = [origy:origy+dy,origy:origy+dy];
C = image(origy:origy+dy,origy:origy+dy,C);
d_C = double(C);

bins = 2^neighbors;

% 初始化结果矩阵
result=zeros(dy+1,dx+1);

%计算LBP像素值
for i = 1:neighbors
  y = spoints(i,1)+origy;
  x = spoints(i,2)+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=[ry:ry+dy,rx:rx+dx];
  N = image(ry:ry+dy,rx:rx+dx,N);
  D = N >= C; 
  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+dy,fx:fx+dx) + w2*d_image(fy:fy+dy,cx:cx+dx) + ...
  w3*d_image(cy:cy+dy,fx:fx+dx) + w4*d_image(cy:cy+dy,cx:cx+dx);
  D = N >= d_C; 
end  

  v = 2^(i-1);
  result = result + v*D;
  lbpimage=result;
end

作者: linhao888888   发布时间: 2011-12-24

你这分明是matlab代码啊

作者: libralibra   发布时间: 2011-12-24