Guest User

Untitled

a guest
Oct 22nd, 2017
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.32 KB | None | 0 0
  1. clear all;
  2. close all;
  3. clc;
  4. echo off;
  5.  
  6. nP = 40; % Pocet lidi
  7. nV = 6; % Pocet emoci
  8. nK = nP * nV; % Celkove pocet fotografii
  9. %EMOCE ... 1-smutek,2-prekvapeni,3-obava/strach,4-usmev,5-vztek,6-znechuceni
  10. vysledek = zeros(54, 2);
  11. matice = zeros(6);
  12. %Vytvoreni vektoru
  13. Wp = zeros (4096, nK);
  14. for per = 1 : nP
  15. for ver = 1 : nV
  16. k = (per - 1)*nV + ver;
  17. ret = sprintf('P%d%d.bmp',per, ver);
  18. o = rgb2gray(imread(ret, 'bmp'));
  19. Wp(:, k) = o(:);
  20. end
  21. end
  22. counter = 1;
  23. for a = 1 : 9
  24. for b = 1 : nV
  25.  
  26. %neznamy obrazek
  27. o = double(rgb2gray(imread(sprintf('t%d%d.bmp',a, b), 'bmp')));
  28. wpu = o(:);
  29. ret_vy = str2num(sprintf('%d',b));
  30. vysledek(counter,1) = ret_vy;
  31.  
  32. %subplot(1, 2, 1);
  33. %imshow(imread('t11.bmp', 'bmp'));
  34. %title('NEZNAMY OBRAZ');
  35.  
  36. %striedni vektor
  37. meanWp = mean(Wp');
  38.  
  39. W = zeros (4096, nK);
  40. for i = 1 : nK
  41. W(:, i) = Wp(:, i) - meanWp';
  42. end
  43. wu = wpu - meanWp';
  44.  
  45. % kovarancni matice
  46. C = W'*W; % dimension 9 x 9 -> smaller than 4096 * 4096 - rozmery 9x9 -> mensi nez 4096x4096
  47.  
  48. % EigenSpace - Prostor vlastnich cisel
  49. [Epom, D] = eig(C); % E eigenvectors, D eigenvalues - E vektor vlastnich cisel, D vlastni cisla
  50. E = W * Epom;
  51.  
  52. PI = zeros(nK, nK); %projection of train images - projektce obrazku
  53. for i = 1 : nK
  54. PI(:, i) = E'*W(:,i);
  55. end
  56.  
  57. % recognition - rozpoznavani
  58. PT = E'*wu; %projection of test images - projekce testovanych obrazku
  59.  
  60. Edist = zeros(nK, 1);
  61. for i = 1 : nK
  62. Edist(i) = sum((PT - PI(:, i)).^2);
  63. end
  64.  
  65. [MV , index] = min(Edist);
  66.  
  67. %vysledek
  68. per = floor((index - 1)/nV) + 1; %zaokrouhleni k nejblizsimu integeru smerem k minus nekonecnu
  69. ver = mod(index - 1, nV) + 1;
  70. ret = sprintf('p%d%d.bmp',per, ver);
  71. %subplot(1, 2, 2);
  72. %imshow(imread(ret, 'bmp'));
  73. %title('SHODNY OBRAZ');
  74. ret_vy_test = str2num(sprintf('%d',ver));
  75. vysledek(counter,2) = ret_vy_test;
  76. matice(b,ver) = matice(b,ver) + 1;
  77. counter = counter + 1;
  78. end
  79. end
  80.  
  81. vysledek
  82. matice
Add Comment
Please, Sign In to add comment