Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function [Match] = recognise(UnknownFace,Crop)
- % 2 reshape to vectors and append to matrix
- for i=1:size(Crop,3),
- X(:,i)=reshape(Crop(:,:,i),[10000 1]);
- end
- % 3 calculate average face
- averageFace=mean(X')';
- % 4 mean subtract average face
- A=double(X)-repmat(averageFace,[1 size(X,2)]);
- % 5 compute Eigenfaces
- EigNumber=20; % try different numbers of dimensions
- % [U,S,V]=svd(A);
- [U,S,V]=svds(A,EigNumber);
- % 6 project all known faces to low dimensional face space
- LTFaces=(U(:,1:EigNumber)')*(double(X)-repmat(averageFace,[1 size(X,2)]));
- % 7 recognise unknown face
- % project to low dimensions
- LUnknownFace=U(:,1:EigNumber)'*(double(reshape(UnknownFace,[10000 1]))-averageFace);
- % calculate distances to known faces
- EuclideanDist=sqrt(sum((LTFaces-repmat(LUnknownFace,[1 size(Crop,3)])).^2));
- % find closest matching known face
- [match_score, match]=min(EuclideanDist);
- % display known face
- imagesc(reshape(X(:,match),[100 100]));
- Match = reshape(X(:,match),[100 100]);
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement