Jump to content

matlab filtre de nagao


Recommended Posts

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');

Link to comment
Share on other 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:

Link to comment
Share on other 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

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...