Recognition.m
上传用户:netsea168
上传日期:2015-08-07
资源大小:617k
文件大小:2k
源码类别:

图形图象

开发平台:

Matlab

  1. function OutputName = Recognition(TestImage, m, A, Eigenfaces)
  2. % Recognizing step....
  3. %
  4. % Description: This function compares two faces by projecting the images into facespace and 
  5. % measuring the Euclidean distance between them.
  6. %
  7. % Argument:      TestImage              - Path of the input test image
  8. %
  9. %                m                      - (M*Nx1) Mean of the training
  10. %                                         database, which is output of 'EigenfaceCore' function.
  11. %
  12. %                Eigenfaces             - (M*Nx(P-1)) Eigen vectors of the
  13. %                                         covariance matrix of the training
  14. %                                         database, which is output of 'EigenfaceCore' function.
  15. %
  16. %                A                      - (M*NxP) Matrix of centered image
  17. %                                         vectors, which is output of 'EigenfaceCore' function.
  18. % Returns:       OutputName             - Name of the recognized image in the training database.
  19. %
  20. % See also: RESHAPE, STRCAT
  21. % Original version by Amir Hossein Omidvarnia, October 2007
  22. %                     Email: aomidvar@ece.ut.ac.ir                  
  23. %%%%%%%%%%%%%%%%%%%%%%%% Projecting centered image vectors into facespace
  24. % All centered images are projected into facespace by multiplying in
  25. % Eigenface basis's. Projected vector of each face will be its corresponding
  26. % feature vector.
  27. ProjectedImages = [];
  28. Train_Number = size(Eigenfaces,2);
  29. for i = 1 : Train_Number
  30.     temp = Eigenfaces'*A(:,i); % Projection of centered images into facespace
  31.     ProjectedImages = [ProjectedImages temp]; 
  32. end
  33. %%%%%%%%%%%%%%%%%%%%%%%% Extracting the PCA features from test image
  34. InputImage = imread(TestImage);
  35. temp = InputImage(:,:,1);
  36. [irow icol] = size(temp);
  37. InImage = reshape(temp',irow*icol,1);
  38. Difference = double(InImage)-m; % Centered test image
  39. ProjectedTestImage = Eigenfaces'*Difference; % Test image feature vector
  40. %%%%%%%%%%%%%%%%%%%%%%%% Calculating Euclidean distances 
  41. % Euclidean distances between the projected test image and the projection
  42. % of all centered training images are calculated. Test image is
  43. % supposed to have minimum distance with its corresponding image in the
  44. % training database.
  45. Euc_dist = [];
  46. for i = 1 : Train_Number
  47.     q = ProjectedImages(:,i);
  48.     temp = ( norm( ProjectedTestImage - q ) )^2;
  49.     Euc_dist = [Euc_dist temp];
  50. end
  51. [Euc_dist_min , Recognized_index] = min(Euc_dist);
  52. OutputName = strcat(int2str(Recognized_index),'.jpg');