Répondre à la discussion
Affichage des résultats 1 à 7 sur 7

erosion en Matlab



  1. #1
    Dismay_

    Question erosion en Matlab


    ------

    Salut à tous!
    Voilà, alors je suis débutant en matlab et là j'ai un projet en traitement d'images où je dois effectuer divers effets comme l'érosion par exemple.

    Je voudrais utiliser l'algorithme suivant :


    Pour tous les pixels (x, y) de image_1 Faire :
    Code:
    Début
    Tab1(x, y) = Faux
    Tab2(x, y) = Faux
    Si image_1 >0 Alors Tab1(x, y) = VRAI
    Fin
    
    Pour tous les pixels (x, y) Faire
    Début
    Si Tab1(x-1, y-1) est VRAI
    ET Tab1(x-1, y)
    ET Tab1(x-1, y+1)
    ET Tab1(x+1, y-1)
    ET Tab1(x+1, y)
    ET Tab1(x+1, y+1)
    Alors Tab2(x, y) = Tab1(x, y)
    Sinon Tab2(x, y) = FAUX
    Fin
    
    Pour tous les pixels (x, y) Faire
    Début
    Si Tab2(x, y) est VRAI alors image_1 = 255
    Sinon image_1 = 0
    Fin

    Seulement voilà, je n'arrive pas à le traduire en matlab, je patauge complètement. Donc si vous pouviez m'y aider, ça serait sympa...

    Merci d'avance

    -----
    Dernière modification par yoda1234 ; 26/05/2008 à 21h18.

  2. #2
    Dismay_

    Re : erosion en Matlab

    un petit up!

  3. #3
    pat7111

    Re : erosion en Matlab

    Citation Envoyé par Dismay_ Voir le message
    un petit up!
    C'est fou comme ca peut me decourager de me creuser pour essayer de repondre...
    Plutôt appliquer son intelligence à des conneries que sa connerie à des choses intelligentes...

  4. #4
    Dismay_

    Re : erosion en Matlab

    Dans ce cas je retire ^^

  5. A voir en vidéo sur Futura
  6. #5
    Dismay_

    Re : erosion en Matlab

    Bon alors j'arrête pas d'essayer mais ça donne pas grand chose, donc je mets le code le moins pourri que j'ai pondu.

    Code:
    >> for I=1:i
          for J=1:j
              t1=0;
              t2=0;
              if IBinaire>0 
                 t1=1;
              end
              if t1=1 & t1(i-1,j) & t1(i-1,j+1) & t1(i+1,j-1) & t1(i+1,j) & t1(i+1,j+1)
                 t2=t1;
              else 
                 t2=0;
              end
              if  t2=1
                  IBinaire=255;
              else
                  IBinaire=0;
              end
          end
       end

    Voilà ça vaut ce que ça vaut.... l'image à été binarisée au préalable

    Please help ^^
    Merci d'avance

    Bonne soirée
    Dernière modification par yoda1234 ; 26/05/2008 à 21h17.

  7. #6
    Dismay_

    Re : erosion en Matlab

    J'ai réussi à me débarasser de pas mal d'erreurs mais maintenant je n'arrive pas à récupérer l'image ayant subie l'opération binarisation + erosion

    Le code est le suivant:
    Code:
    Im=imread('\\iutb-cpt\profetu$\l.lorinquer\Bureau\Projet_info\image.jpg');
    seuil=128;
    IBinaire = Im > seuil;
    image(IBinaire);
    [t1,t2,I,J]=size(IBinaire);
    for i=1:I
           for j=1:J
               t1(i,j)=false;
               t2(i,j)=false;
                  	if (IBinaire > 0)
                    	t1(i,j)=true;
                    else
                        t1(i,j)=false;
                 	 end
                  		if ((t1==true) & (t1(i-1,j-1))  & (t1(i-1,j)) & (t1(i-1,j+1)) & (t1(i+1,j-1)) & (t1(i+1,j)) & (t1(i+1,j+1)))
                           t2(i,j)=t1(i,j);
                        else
                            t2(i,j)=false;
                        end
                  			if (t2(i,j)==true);
                                IBinaire=255;
                            else
                                IBinaire=0;
                  			end
           end
    end
    Dernière modification par yoda1234 ; 26/05/2008 à 21h17.

  8. #7
    Dismay_

    Re : erosion en Matlab

    Up !!!!

    On m'a conseillé une autre méthode :


    Code:
    [Limg,Cimg,Bimg] = size(in)
    Limg corespond au nb de ligne
    Cimg pour les colones
    Bimg pour les bande (cas pour une image couleur en rgb, mais inutile dans ton cas vu que ta source est binaire)

    Ensuite je cree un matrice (ou un tableau) au meme dimensions que l'image original.
    Code:
    out=zeros(Limg,Cimg)
    Puis je dois parcourir toute l'image, j'utilise donc une double boucle for pour parcourir mon image.

    pour chaque point j'effectue la meme operation c'est a dire :

    je cree un vecteur contenant tous les voisins du point a dilater/eroder (i et j sont le coordonées du point)

    Code:
    temp(1)=in(i-1,j-1);
              temp(2)=in(i,j-1);
              temp(3)=in(i+1,j-1);
              temp(4)=in(i-1,j);
              temp(5)=in(i,j);
              temp(6)=in(i+1,j);
              temp(7)=in(i-1,j+1);
              temp(8)=in(i,j+1);
              temp(9)=in(i+1,j+1);
    ensuite je prend le maxi ou le mini de ce vecteur suivant si je veux eroder ou dilater

    Code:
    out(i,j)=max(max(temp));
    Et je replace tous ca dans ma matrice finale (out) que j'ai cree auparavent.


    Je ne vois pas à quoi correspondent "in" et "out" ainsi que "temp". D'autre part, mon principal problème serait d'appliquer ce code à mon image, les essais que j'ai effectué n'ont pas vraiment fonctionnés...

    si je teste, la première erreur est que je ne peux visiblement pas déclarer une fonction dans un fichier.M, l'autre est aussi liée à la déclaration de fonctions :" ??? Strings passed to EVAL cannot contain function declarations."

Discussions similaires

  1. erosion, altération?
    Par baobabe dans le forum TPE / TIPE et autres travaux
    Réponses: 4
    Dernier message: 24/05/2017, 20h59
  2. érosion/altération
    Par clémence62 dans le forum Géologie et Catastrophes naturelles
    Réponses: 7
    Dernier message: 10/11/2007, 18h26
  3. Érosion de la chaine d'Alsace ?
    Par Alain28 dans le forum Géologie et Catastrophes naturelles
    Réponses: 16
    Dernier message: 29/03/2007, 10h14
  4. Les Alpes, soulevement ou érosion ?
    Par Alain28 dans le forum Géologie et Catastrophes naturelles
    Réponses: 6
    Dernier message: 11/09/2006, 12h41
  5. Érosion par la rosée ?
    Par fritz dans le forum Géologie et Catastrophes naturelles
    Réponses: 2
    Dernier message: 16/01/2004, 20h54
Découvrez nos comparatifs produits sur l'informatique et les technologies.