Advertisement
mnacer

Untitled

May 24th, 2016
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 1.76 KB | None | 0 0
  1. % On récupère la photo de la mire
  2. im = imread('Photo.bmp');
  3. % On récupère les coordonnées (mesurées) des points dans la scène (3D)
  4. xyz = importdata('xyz.txt',',');
  5. % On récupère les coordonées des pixels dans l'image
  6. uv = importdata('uv.txt',',');
  7. % colonne A = [u1,v1,u2,v2,...,uN,vN]'
  8. A = reshape(uv',64,1);
  9. % On alloue notre matrice C[64*12] remplie de zéros
  10. C = zeros(64,12);
  11. % On construit la matrices C
  12. for i = 1:20
  13. C(2*i-1,:) = [xyz(i,:) 1 0 0 0 0 -uv(i,1)*xyz(i,1) -uv(i,1)*xyz(i,2) -uv(i,1)*xyz(i,3) -uv(i,1)];
  14. C(2*i,:) = [0 0 0 0 xyz(i,:) 1 -uv(i,2)*xyz(i,1) -uv(i,2)*xyz(i,2) -uv(i,2)*xyz(i,3) -uv(i,2)];
  15. end;
  16. % On calcule Y = C’C
  17. Y = C'*C;
  18. % On calcule les vecteurs propres et les valeurs propres de Y
  19. [eigenVectors, eigenValues] = eig(Y);
  20. % On cherche la plus petite valeur propre non-nulle
  21. minIndex=1;
  22. for i=1:12
  23. eigVal = eigenValues(i,i);
  24. if (eigVal<=eigenValues(minIndex,minIndex) && not(eigVal==0))
  25. minIndex=i;
  26. end;
  27. end;
  28. % On note M le vecteur propre associé à la plus petite valeur propre non
  29. % nulle
  30. M = eigenVectors(:,minIndex);
  31. % On définit les coordonnées d'un point test à prendre dans le fichier xyz.txt
  32. x_test=65;
  33. y_test=160;
  34. z_test=77.5;
  35.  
  36. % On calcul les coordonnées du pixel correspondant en applique notre fonction de projection
  37.  
  38. % creer  script proj12.m est mettre le code commenté suivant dedans :
  39. %   function [u v]=proj12(x,y,z,m)
  40. %       u = (m(1)*x+m(2)*y+m(3)*z+m(4))/(m(9)*x+m(10)*y+m(11)*z+m(12));
  41. %       v = (m(5)*x+m(6)*y+m(7)*z+m(8))/(m(9)*x+m(10)*y+m(11)*z+m(12));
  42. %   end
  43.  
  44. [u_test12 v_test12] = proj12(x_test,y_test,z_test,M);
  45. % On affiche l'image de la mire, les pixels pointés, et la projection
  46. % calculée du point test
  47. image(im);
  48. hold on;
  49. plot(uv(:,1),uv(:,2),'s');
  50. plot(u_test12,v_test12,'md');
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement