oui, donne nous ce que tu as fais, et dis nous où tu bloque précisement.
youir
Auteur
bon voici le script que j'ai fais mais ne donne pas de resultats si vous pouvez m'aider :
function y= fime(ima)
aa=ima;
ima=double(ima);
[m,n]=size(ima);
y=zeros(size(ima));
mm=[1 1 1 1 1 1 1 1 1];
mask=[0 0 0 0 1 0 0 0 0];
for i=4: (m-3)
for j=4: (n-3)
for k=1:3
for l=1:3
mm(k+l-1)=ima(k,l);
end
end
for u=1:8
if(mm(u)<mm(u+1))
pp=mm(u+1);
mm(u+1)=mm(u);
mm(u)=pp;
end
end
ima(i,j)=(mm*mask');
end
end
y=uint8(ima);
imshow(aa),figure,imshow(y)
Char Snipeur
Contributeur
hum... pas trè-s clair ton code.
Je te propose (sans tester) ça :
for i=4: (m-3)
for j=4: (n-3)
for k=1:3
for l=1:3
mm(k+3*(l-1))=ima(i+k,j+l);
end
end
%% à ce niveau là, tu a mis dans 'mm' les 9 valeurs de l'image sur lesquelles tu veux appliqué le script
%% Maintenant on passe à l'algo cherchant la valeur à retenir
for u=1:9
if(sum(mm(u)<mm) == sum(mm(u)>mm) )
pp=mm(u); %% tu prends la valeur qui a autant de nombre plus grand que de nombre plus petit qu'elle dans mm (c'est ma definition de filtre median)
%% Il reste un problème de bord si tu as deux valeurs égalent candidate dans mm
end
end
%% maintenant tu met la valeur obtenu par le filtre dans une variable temporaire (sinon tu va la réutilisé dans le passage suivant
ima2(i,j)=pp;
end
youir
Auteur
merci beaucoup Char Snipeur ça marche trés bien et testé sur matlab et donne de bon resultats ;)
+++
hayet
j'ai un problème pour écrire une fonction matlab( et non pas de bloc simulink) sous simulink permettant d'appliqué un filtre médian sur une image,s'ils vous plait quelqu'un m'aider