Advertisement
Guest User

ayy

a guest
Oct 17th, 2019
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 1.00 KB | None | 0 0
  1. function [Match] = recognise(UnknownFace,Crop)
  2. % 2 reshape to vectors and append to matrix
  3. for i=1:size(Crop,3),
  4.     X(:,i)=reshape(Crop(:,:,i),[10000 1]);
  5. end
  6.  
  7. % 3 calculate average face
  8.  
  9. averageFace=mean(X')';
  10.  
  11. % 4 mean subtract average face
  12. A=double(X)-repmat(averageFace,[1 size(X,2)]);  
  13.  
  14. % 5 compute Eigenfaces
  15. EigNumber=20; % try different numbers of dimensions
  16. % [U,S,V]=svd(A);
  17. [U,S,V]=svds(A,EigNumber);
  18.  
  19. % 6 project all known faces to low dimensional face space
  20. LTFaces=(U(:,1:EigNumber)')*(double(X)-repmat(averageFace,[1  size(X,2)]));
  21.  
  22. % 7 recognise unknown face
  23.  
  24. % project to low dimensions
  25. LUnknownFace=U(:,1:EigNumber)'*(double(reshape(UnknownFace,[10000 1]))-averageFace);
  26.  
  27. % calculate distances to known faces
  28. EuclideanDist=sqrt(sum((LTFaces-repmat(LUnknownFace,[1 size(Crop,3)])).^2));
  29.  
  30. % find closest matching known face
  31. [match_score, match]=min(EuclideanDist);
  32.  
  33. % display known face
  34. imagesc(reshape(X(:,match),[100 100]));
  35. Match = reshape(X(:,match),[100 100]);
  36.  
  37. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement