⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 demogo.m

📁 It is for Face Recognition
💻 M
字号:
%function []=demoGo(testImg, nTest, knownPoses)
function []=demoGo(testImg, nTest, knownPoses)
fprintf('\n Multi-model face recognition demo, local=N, ver 9.21.04...');
nFace = nTest;

%const
K1=16; K2=12; K3=20;
knownPoses = [1:8, 4, 6]; 

% 1) upper face: 18x16
side1 = 0.4; top1= 0.8; low1 = 0.8; fw1=18; fh1=16; K1=16;
T1  = load('pcaUpperFaceS04T08L08W18H16.dat');
mf1 = load('mfUpperFaceS04T08L08W18H16.dat');

% 2) lower face: 18x12
side2 = 0.1; top2= -0.6; low2 = 1.4; fw2=18; fh2=12; K2=12;
T2  = load('pcaLowerFaceS01T-06L14W18H12.dat');
mf2 = load('mfLowerFaceS01T-06L14W18H12.dat');

% 3) full face: 21x28
side3 = 0.4; top3= 1.0; low3 = 1.4; fw3=21; fh3=28; K3=20;
T3  = load('pcaFullFaceModel4.dat');
mf3 = load('mfFullFaceSModel4.dat');
%%%%%%%%%%%%%%%%%%%%%%%%%%%
% load ATT face data
%%%%%%%%%%%%%%%%%%%%%%%%%%%
% load face recog local models
% 18x16 upper face, 16-d
Fm1 = load('prjATTUpperFaceS04T08L08W18H16K16.dat');
%  18x12 lower face, 12-d
Fm2 = load('prjATTLowerFaceS01T-06L14W18H12K12.dat');
% 21x28 full face,  20-d
Fm3 = load('prjATTFullFaceModel4.dat');    

%%%%%%%%%%%%%%%%%%%%%%%%%%%
% add MRL face data
% 41 - alfonso: demo/prjXAlfonso.dat
% 42 - cuneyt: demo/prjXCuneyt.dat
% 43 - jianjun: demo/prjXFang.dat
%%%%%%%%%%%%%%%%%%%%%%%%%%%
% add to face models
% fang
k0=400;
prj1 = load('demo/prj1Fang2.dat');prj2 = load('demo/prj2Fang2.dat');
prj3 = load('demo/prj3Fang2.dat');
Fm1(:,k0+1:k0+10)=prj1(1:K1,knownPoses);
Fm2(:,k0+1:k0+10)=prj2(1:K2,knownPoses);
Fm3(:,k0+1:k0+10)=prj3(1:K3,knownPoses);

% cuneyt
k0=410;
prj1 = load('demo/prj1Cuneyt2.dat');prj2 = load('demo/prj2Cuneyt2.dat');
prj3 = load('demo/prj3Cuneyt2.dat');
Fm1(:,k0+1:k0+10)=prj1(1:K1,knownPoses);
Fm2(:,k0+1:k0+10)=prj2(1:K2,knownPoses);
Fm3(:,k0+1:k0+10)=prj3(1:K3,knownPoses);

% alfonso
k0=420;
prj1 = load('demo/prj1Alfonso2.dat');prj2 = load('demo/prj2Alfonso2.dat');
prj3 = load('demo/prj3Alfonso2.dat');
Fm1(:,k0+1:k0+10)=prj1(1:K1,knownPoses);
Fm2(:,k0+1:k0+10)=prj2(1:K2,knownPoses);
Fm3(:,k0+1:k0+10)=prj3(1:K3,knownPoses);

img = imread(testImg, 'jpg'); 

% const
wt1=ones(16);R1=640; wt2=ones(12);R2=600; wt3=ones(20);R3=1000;
K1=16; K2=12; K3=20;

for k=1:nFace    
    % crop face for one person
    eyes = getEyeLocation(img, 1);
    x1=projFace(img, eyes, T1, mf1, side1, top1, low1, fw1, fh1);
    xPrj1 = x1(1:K1);
    x2=projFace(img, eyes, T2, mf2, side2, top2, low2, fw2, fh2);
    xPrj2 = x2(1:K2);
    x3=projFace(img, eyes, T3, mf3, side3, top3, low3, fw3, fh3);
    xPrj3 = x3(1:K3);
    
    %hold on; cropimg=imread('cropFaceSave.jpg');    imshow(cropimg, [0. 255]);

    % recognition
    ids=4:43; poses=1:10;
    [recId, recIds, modelErrs]=demoMultiModelFaceRecognition(Fm1, Fm2, Fm3, ids, poses, xPrj1, xPrj2, xPrj3);
    str = sprintf('%s recId=%d Ids=[%d %d %d] Err=[%1.3f, %1.3f, %1.3f]', '\fontsize{14}', recId, recIds, modelErrs);
    xlabel(str);
    % show recog result
    if recId == 41
        recStr=sprintf('%s Jianjun !', '\fontsize{14}');
    elseif recId == 42
        recStr=sprintf('%s Cuneyt !',  '\fontsize{14}');
    elseif recId == 43
        recStr=sprintf('%s Alfonso !', '\fontsize{14}');
    else
        recStr=sprintf('%s Oops :( !', '\fontsize{14}');
    end
    title(recStr);    
    %input('\n press any key to continue...');
    ginput(1);
end % for k


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -