Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2528 connectés 

  FORUM HardWare.fr
  Programmation
  Divers

  [matlab] PB laplacien Canny

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[matlab] PB laplacien Canny

n°2140151
takout
Posté le 02-05-2012 à 19:37:15  profilanswer
 

Bonjour à tous,
 
Je suis entrain de tester l'algorithme de Canny pour détecter des contours dans une image. Mon souci c'est que je ne comprends pas pourquoi lorsque j'affiche l'image du laplacien mes contours n'apparaissent pas en noir et les zones uniformes en blanc. Normalement les contours sont les zéros du laplacien, je ne vois pas mon erreur pourtant mon gradient semble juste. Je n'arrive pas à obtenir les contours à l'aide du laplacien. Ai-je fais une erreur de programmation.
Pouvez vous m'aidez svp ?
 

Code :
  1. close all
  2. clear
  3. %%%recuperation de l'image
  4. I=imread('image/lena.jpg');   
  5. I=rgb2gray(I);
  6. I=double(I)/255.0;
  7. figure,imshow(I,'notruesize'),title('image originale');
  8. figure,imshow(edge(I,'canny')),title('image contour matlab');
  9. %%%%%%%%%%%%%%%%%%% filtre de Canny%%%%%%%%%%%%%%%%%%%%%
  10. % creation du filtre
  11. n=3; %taille du filtre pour le calcul du gradient n=2*tailleFenetre +1
  12. n1=5; % taille du filtre pour le laplacien du gradient
  13. tailleFenetre=(n-1)/2;
  14. tailleFenetre1=(n1-1)/2;
  15. sigma2=(n/(2*3))^2; % Nota bene : rayon=3*sigma (gaussienne)
  16. %% calul du gradient
  17. h_canny=zeros(n,n); % filtre horizontal pour le grandient en x
  18. for i1=-tailleFenetre:tailleFenetre
  19. for j1=-tailleFenetre:tailleFenetre
  20.    h_canny(tailleFenetre+i1 +1,tailleFenetre+j1+1)=(-i1/sigma2)*exp(-(i1*i1 +j1*j1)/2*sigma2);
  21. end
  22. end
  23. v_canny=zeros(n,n);% filtre vertical pour le gradient en y
  24. for i1=-tailleFenetre:tailleFenetre
  25. for j1=-tailleFenetre:tailleFenetre
  26.    v_canny(tailleFenetre+i1 +1,tailleFenetre+j1+1)=(-j1/sigma2)*exp(-(i1*i1 +j1*j1)/2*sigma2);
  27. end
  28. end
  29. %% laplacien (derivee seconde)
  30. sigma2=(n1/(2*3))^2; % Nota bene : rayon=3*sigma
  31. sigma4=sigma2*sigma2;
  32. h2_canny=zeros(n1,n1); %filtre horizontal pour le laplacien en x
  33. for i1=-tailleFenetre1:tailleFenetre1
  34. for j1=-tailleFenetre1:tailleFenetre1
  35.    h2_canny(tailleFenetre1+i1 +1,tailleFenetre1+j1+1)=((i1*i1 - sigma2)/sigma4)*exp(-(i1*i1+j1*j1)/2*sigma2);
  36. end
  37. end
  38. v2_canny=zeros(n1,n1); %filtre vertical pour le laplacien en y
  39. for i1=-tailleFenetre1:tailleFenetre1
  40. for j1=-tailleFenetre1:tailleFenetre1
  41.    v2_canny(tailleFenetre1+i1 +1,tailleFenetre1+j1+1)=((j1*j1 - sigma2)/sigma4)*exp(-(i1*i1+j1*j1)/2*sigma2);
  42. end
  43. end
  44. v2_canny(tailleFenetre1+1,tailleFenetre1+1)=0 % modification de l'element central pour que la somme des termes de la matrice soit nulle
  45. v2_canny(tailleFenetre1+1,tailleFenetre1+1)=-sum(sum((v2_canny)));
  46. h2_canny(tailleFenetre1+1,tailleFenetre1+1)=0
  47. h2_canny(tailleFenetre1+1,tailleFenetre1+1)=-sum(sum(h2_canny));
  48. %%%%%%%%%%%%%%%% calcul de la norme du gradient
  49. gradH=filter2(h_canny,I);
  50. gradV=filter2(v_canny,I);
  51. grad=sqrt(gradH.*gradH + gradV.*gradV);
  52. %grad=abs(gradH)+abs(gradV);
  53. figure,imshow(grad,[min(min(grad)) max(max(grad))],'notruesize'),title('norme gradien');
  54. %%%%%%%%%%%%%%%%%%%%%%%%%%%% calcul du laplacien %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  55. IlaplacienH=filter2(h2_canny,I);
  56. IlaplacienV=filter2(v2_canny,I);
  57. Ilaplacien=IlaplacienH+IlaplacienV ;
  58. figure,imshow(abs(Ilaplacien),[min(min(abs(Ilaplacien))) max(max(abs(Ilaplacien)))],'notruesize');
  59. contourLaplacien=(abs(Ilaplacien)<0.2);
  60. figure,imshow(contourLaplacien);

mood
Publicité
Posté le 02-05-2012 à 19:37:15  profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Divers

  [matlab] PB laplacien Canny

 

Sujets relatifs
matlabFree Hosting Manager PB
Javascript : Pb sur évenement et function[CSS3] Pb de remonté menu animé
Pb affichage Firefow et Safari[Résolu] Pb accès base oracle
acquisition image sous matlab[Résolu] Pb de tri sur un varchar (Mysql)
crible d'Eratosthène 'Matlab'PB export dans MySQL
Plus de sujets relatifs à : [matlab] PB laplacien Canny


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR