📄 demogo.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 + -