IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

[C++] Traitement d'images bitmap, croissance de région


Sujet :

Algorithmes et structures de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2005
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 25
    Par défaut [C++] Traitement d'images bitmap, croissance de région
    salut tout le monde,
    J'ai besoin d'aide sur la croissance de région en visual C++, en fait j'ai une image bitmap et je veut éliminer son arrière plan, j'ai essayer la détection de contour mais sans résultat.
    Si posssible je veut une source.
    Merci d'avance.

  2. #2
    Membre chevronné
    Profil pro
    Enseignant
    Inscrit en
    Avril 2004
    Messages
    440
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2004
    Messages : 440
    Par défaut
    Salut !
    Tu pourrais être plus précis ? Tu veux faire de la segmentation (cad isoler un objet du reste) ? Le fond est uniforme ? quel est l'objet à segmenter ?
    Il n'y a pas que la croissance région qui permette de faire ça (loin de là d'ailleurs)...

    A+

  3. #3
    Membre averti
    Inscrit en
    Avril 2005
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 25
    Par défaut
    voila,j'ai des images médicales (plus précisément échographique), les images ont un arrière plan noir,je veut éliminer cet arrière plan sans modifier le reste de l'image (le noyau de l'imge ou la zone d'interrêt).

  4. #4
    Membre émérite
    Avatar de parp1
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    829
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Mai 2005
    Messages : 829
    Par défaut
    Ce que je te propose est de segmenter a une valeur juste au dessus de la valeur noire .
    Tu a donc une image en binaire,il faut que ton fond est pour valeur zero,si ce n'est pas le cas tu fais une inversion de ton image segmentée.
    Ensuite tu execute un border kill,elimination des objets touchant les bords.
    Tu recupere ainsi juste la partie t'interssant ( jai pas presicer il ne faut pas que le foetus si s'en est un touche le bord de l'ecran)
    une fois ce ci fait il te reste a executer l'operatueru logique "ET" entre les deux images.

    Quesque tu veut faire de ton fond? le supprimer, le mettre en blanc?
    Il faudrait savoir quel couleurs sont presentes sur l'image etc etc.

    Il me faudrait plus d'info concernant l'image .
    [SIZE="2"]Dis moi qui tu suis, je te dirais qui je Hais!
    Heureux est l'étudiant, qui comme la rivière suit son cours sans sortir de son lit

    Mon premier Tutoriel


    A 80% des cas je résouts mon problème en rédigeant une nouvelle discussion, du coup je ne poste que 20% de mes problèmes...

  5. #5
    Membre chevronné
    Profil pro
    Enseignant
    Inscrit en
    Avril 2004
    Messages
    440
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2004
    Messages : 440
    Par défaut
    Tout d'abord merci à parp1 de réveiller ce sujet que j'avais complètement oublié!

    Ce que je te propose est de segmenter a une valeur juste au dessus de la valeur noire .
    Tu a donc une image en binaire,il faut que ton fond est pour valeur zero,si ce n'est pas le cas tu fais une inversion de ton image segmentée.
    Seul problème : dans une écographie, le fond n'est pas parfaitement noir, il y a beaucoup de bruit -> un simple seuillage ne donnera pas un fond uniforme...

    Peut-être qu'un filtrage (médian ou gaussien) permettront d'effacer le bruit et dans ce cas la méthode de parp1 est bonne.

    Sinon plutôt que de chercher le fond, si j'ai bien compris tu cherches à détecter les contours du foetus... As-tu essayé des opérateurs simples comme celui de Canny ou Sobel ?

    Si ça marche pas, la croissance région peut-être une bonne idée sauf si il y a des trous uù on voit le fond (genre le foetus qui plie les jambes...) -> dans ce cas il faut plusieurs germes et ça peut vite être très galère !

  6. #6
    Membre émérite
    Avatar de parp1
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    829
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Mai 2005
    Messages : 829
    Par défaut
    En effet je pense qu'il y a peut etre une solution:

    On execute un filtre gaussien pour debruité.
    On fait la detection de contour grace a la matric de sobel
    Ce contour servira de frontiere,entre le foetus et le fond.
    On Cré une nouvelle image avec le contour detecté apparent. Je pense qu'on fait apparaitre le contour en blanc.
    Et on reprend la technique que j'ai proposé avant.
    On seuil mais jusqu'a 253 par exemple afin de laisser apparaitre le contour en blanc,on fait alors le borderkill et on execute un operateur logique entre les images ,du foetus seuillé et celle de l'image complete.

    De plus je ne sais pas ce que salem veut fair du fond.... Et il donne pa de news.
    [SIZE="2"]Dis moi qui tu suis, je te dirais qui je Hais!
    Heureux est l'étudiant, qui comme la rivière suit son cours sans sortir de son lit

    Mon premier Tutoriel


    A 80% des cas je résouts mon problème en rédigeant une nouvelle discussion, du coup je ne poste que 20% de mes problèmes...

  7. #7
    Membre émérite
    Avatar de parp1
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    829
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Mai 2005
    Messages : 829
    Par défaut
    Autre chose le technique par croissance de region demande beaucoup de ressource deplus si il y a plusieur germe ..... faut pas etre pressé.

    Mais ceci dit ca marche trés bien
    [SIZE="2"]Dis moi qui tu suis, je te dirais qui je Hais!
    Heureux est l'étudiant, qui comme la rivière suit son cours sans sortir de son lit

    Mon premier Tutoriel


    A 80% des cas je résouts mon problème en rédigeant une nouvelle discussion, du coup je ne poste que 20% de mes problèmes...

  8. #8
    Membre chevronné
    Profil pro
    Enseignant
    Inscrit en
    Avril 2004
    Messages
    440
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2004
    Messages : 440
    Par défaut
    Oui mais tout dépend de ce que l'on veut !
    En général, plus on veut quelque chose de robuste, plus c'est long

  9. #9
    Membre averti
    Inscrit en
    Avril 2005
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 25
    Par défaut
    ok merci de votre aide,
    mathieu_t;tu as raison,l'image comprend beaucoup de bruits,j'ai essayé la détectin de contour de canny et de laplacien(avec Matlab) mais sans résultats

  10. #10
    Membre chevronné
    Profil pro
    Enseignant
    Inscrit en
    Avril 2004
    Messages
    440
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2004
    Messages : 440
    Par défaut
    tu devrais peut-être faire un préfiltrage... Je pense à un filrage médian du fait de la nature des capteurs...
    J'ai l'algo en C++ si tu veux...

    Sinon il me semble qu'avec matlab tu peux règler les paramètres :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    BW = edge(I,'canny',thresh,sigma)
    As tu essayé plusieurs sigma et thresh ?? Pour un fort bruit augmente sigma...

    A+

  11. #11
    Membre averti
    Inscrit en
    Avril 2005
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 25
    Par défaut
    oui j'ai essayé, mais j'ai une un bon bon résultat après 25 essais, et à chaque image ça diffère et c'est pas réguissant à faire

  12. #12
    Membre chevronné
    Profil pro
    Enseignant
    Inscrit en
    Avril 2004
    Messages
    440
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2004
    Messages : 440
    Par défaut
    Salut.

    sinon tu peux laisser matlab tenter de détecter tous seul les paramètres (il fait une estimation du bruit) :
    En ce qui concerne le filtrage médian,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    template <class T>
    void TMedianFilter2D(T *inImg,T *outImg, int wx, int wy, int filtre_wx, int filtre_wy)
    {
      // On initialise à 0 (surtout pour gérer les effets de bords)
     // [EDIT] il faut retirer le & de &outImg 
     memset(outImg,0,wx*wy);
     
      int size_Tab2D = filtre_wx*filtre_wy;
     
      vector<T> Tab2D(size_Tab2D);
     
      for(int x = filtre_wx/2; x < wx - filtre_wx/2; x++)
      for(int y = filtre_wy/2; y < wy - filtre_wy/2; y++)
      {
        int cpt = 0;
        for(int i = x - filtre_wx/2; i <= x + filtre_wx/2; i++)
        for(int j = y - filtre_wy/2; j <= y + filtre_wy/2; j++)
        {
          Tab2D[cpt] = inImg[i + j*wx];
          cpt++;
        }
     
        sort(Tab2D.begin(), Tab2D.end());
        outImg[x + y*wx] = Tab2D[size_Tab2D/2];
      }
     
     Tab2D.clear();
    }

  13. #13
    Membre averti
    Inscrit en
    Avril 2005
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 25
    Par défaut
    Citation Envoyé par mathieu_t
    Salut.

    sinon tu peux laisser matlab tenter de détecter tous seul les paramètres (il fait une estimation du bruit) :
    j'ai essayé ce code mais sans résultat

    En ce qui concerne le filtrage médian,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    template <class T>
    void TMedianFilter2D(T *inImg,T *outImg, int wx, int wy, int filtre_wx, int filtre_wy)
    {
      // On initialise à 0 (surtout pour gérer les effets de bords)
      memset(&outImg,0,wx*wy);
     
      int size_Tab2D = filtre_wx*filtre_wy;
     
      vector<T> Tab2D(size_Tab2D);
     
      for(int x = filtre_wx/2; x < wx - filtre_wx/2; x++)
      for(int y = filtre_wy/2; y < wy - filtre_wy/2; y++)
      {
        int cpt = 0;
        for(int i = x - filtre_wx/2; i <= x + filtre_wx/2; i++)
        for(int j = y - filtre_wy/2; j <= y + filtre_wy/2; j++)
        {
          Tab2D[cpt] = inImg[i + j*wx];
          cpt++;
        }
     
        sort(Tab2D.begin(), Tab2D.end());
        outImg[x + y*wx] = Tab2D[size_Tab2D/2];
      }
     
     Tab2D.clear();
    }
    merci pour la source je vais l'essayer

  14. #14
    Candidat au Club
    Inscrit en
    Mars 2005
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 2
    Par défaut
    bonjour, j ai juste une remarque.
    un canny derich est un detecteur basse sur les hautes frequences dune image (difference de valeur entre deux pixels).
    si vous filtre par un pass bas comme un filtre median vous perdez l' information de base pour canny, car le median attenu la difference de niveau.
    le grand probleme du filtrage : il faut un filtre passe haut qui enleve le bruit. Mais le bruit est dans les hautes frequences...
    si vous trouvez un filtre comme ca appelle moi ...
    sinon essaye un filtre de type poivre et sel ... on sais jamais sa peut peut etre correspondre au besion de l image echographique...
    a+

  15. #15
    Membre chevronné
    Profil pro
    Enseignant
    Inscrit en
    Avril 2004
    Messages
    440
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2004
    Messages : 440
    Par défaut
    Citation Envoyé par gehova
    sinon essaye un filtre de type poivre et sel ... on sais jamais sa peut peut etre correspondre au besion de l image echographique...
    Ah oui ??? Et le filtrage médian c'est quoi sinon un filtrage poivre et sel ????

    Ensuite ce que je disais, c'est que puisque canny ne fonctionne pas tel quel, il faut peut être essayer de faire un préfiltrage avant, on aura certes une moins bonne localisation du contour mais c'est toujours mieux que rien ! Et le filtrage médian élimine effectivement les hautes fréquences mais bien moins qu'un filtrage gaussien par exemple !

Discussions similaires

  1. segmentation d'image par la methode de croissance en région
    Par fleurrouge dans le forum Débuter
    Réponses: 1
    Dernier message: 22/04/2013, 15h49
  2. Segmentation d'images par croissance de régions
    Par BakkariA dans le forum Images
    Réponses: 12
    Dernier message: 15/08/2012, 21h42
  3. aide sur traitement image bitmap
    Par tilily dans le forum C
    Réponses: 10
    Dernier message: 19/02/2010, 19h14
  4. image binaire croissance de régions?
    Par vanessa-s dans le forum Images
    Réponses: 2
    Dernier message: 16/06/2009, 10h47
  5. Réponses: 37
    Dernier message: 28/04/2005, 08h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo