Aller au contenu

matlab filtre de nagao


Messages recommandés

bonjour,

j'ai un probleme avec le filtre de nagao c'est que je sais pas pourquoi ça fonctionne pas et où est vraiment le problème:

je vous montre le code ,si quelqu'un peut m'aider ça serait cool de sa part merci.

function [img_sortie]=nagao(img)

[rows,cols]=size(img);

img=double(img);

M=zeros(9,9);

image_sortie=zeros(rows,cols);

for i=3:rows-2

for j=3:cols-2

f=img(i-2:i+2,j-2:j+2);

M(:,1)=[f(:,1);f(2:4,2);f(3,3)];

M(:,2)=[f(1,1);f(1:2,2);f(1:3,3);f(1:2,4);f(1,5)];

M(:,3)=[f(2:4,4);f(:,5);f(3,3)];

M(:,4)=[f(5,1);f(4:5,2);f(3:5,3);f(4:5,4);f(5,5)];

M(:,5)=[f(1:3,1);f(1:3,2);f(1:3,3)];

M(:,6)=[f(1:3,3);f(1:3,4);f(1:3,5)];

M(:,7)=[f(3:5,3);f(3:5,4);f(3:5,5)];

M(:,8 )=[f(3:5,1);f(3:5,2);f(3:5,3)];

M(:,9)=[f(2:4,2);f(2:4,3);f(2:4,4)];

sigma=std(M);

[var,ind]=min(sigma);

image_sortie(i,j)=mean(M(:,ind));

end

end

img=uint8(img);

subplot(1,2,1);imshow(img);title('Image originale');

subplot(1,2,2);imshow(image_sortie);title('Image apré filtrage Nagao');

Lien vers le commentaire
Partager sur d’autres sites

bonjour,

j'ai un probleme avec le filtre de nagao c'est que je sais pas pourquoi ça fonctionne pas et où est vraiment le problème:

je vous montre le code ,si quelqu'un peut m'aider ça serait cool de sa part merci.

function [img_sortie]=nagao(img)
[rows,cols]=size(img);
img=double(img);
M=zeros(9,9);
image_sortie=zeros(rows,cols);
for i=3:rows-2
for j=3:cols-2
	f=img(i-2:i+2,j-2:j+2);
	M(:,1)=[f(:,1);f(2:4,2);f(3,3)];
	M(:,2)=[f(1,1);f(1:2,2);f(1:3,3);f(1:2,4);f(1,5)];
	M(:,3)=[f(2:4,4);f(:,5);f(3,3)];
	M(:,4)=[f(5,1);f(4:5,2);f(3:5,3);f(4:5,4);f(5,5)];
	M(:,5)=[f(1:3,1);f(1:3,2);f(1:3,3)];
	M(:,6)=[f(1:3,3);f(1:3,4);f(1:3,5)];
	M(:,7)=[f(3:5,3);f(3:5,4);f(3:5,5)];
	M(:,8 )=[f(3:5,1);f(3:5,2);f(3:5,3)];
	M(:,9)=[f(2:4,2);f(2:4,3);f(2:4,4)];
  sigma=std(M);
  [var,ind]=min(sigma);
  image_sortie(i,j)=mean(M(:,ind));

end
end
img=uint8(img);
subplot(1,2,1);imshow(img);title('Image originale');
subplot(1,2,2);imshow(image_sortie);title('Image apré filtrage Nagao');

jer le remets en

 parce que c'est plus lisible.

D'autre part, tu es sur que le calcul de variance se fait sur la bonne dimension. Je serais toi, j'essayerais std(M, 0, 2) :francais:

Lien vers le commentaire
Partager sur d’autres sites

bonsoir,

merci lorinc pour ta réponse, en faite j'ai un autre problème si vous voulez bien m'aidez,il s'agit de l'érosion et la dilatation, en ce qui concerne l'element structurant par exemple v4=[0 1 0; 1 0 1; 0 1 0] si je veux l'appliquer sur mon image que j'ai binarisé donc elle contient que des niveau de gris entre 0 et 255 ,j'ai declarer une autre image dont les niveau de gris sont 255 toute c=ones(rows,cols)*255; est ce que je considère les 1 de mon element structurant comme 255 et donc c'est le fond et 0 comme objet puis je teste sur les pixels de mon image ou bien je fais ça vous montre le code

function C=erosion(A)
[n,m]=size(A);
C=ones(n,m)*255;
for i=2:n-1
  for j=2:m-1
      if ((A(i,j)== 0)&(A(i-1,j)== 0)& (A(i,j-1)== 0)& (A(i,j+1)==0)&(A(i+1,j)== 0))
        C(i,j)=0;   
     else
        C(i,j)=255; 
    end      
  end
end
subplot(1,3,3);imshow©;title('Image aprés Erosion');

enfin je sais pas si ce code est correct ou pas aidez moi,surtout que mon examen approche, autre chose j'aimerai savoir comment créer mon element structurant v4 via la fonction strel() la syntaxe de cette fonction svp.

merci

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...