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

Traitement d'images Discussion :

Extraction de contours dans une image


Sujet :

Traitement d'images

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 106
    Points : 110
    Points
    110
    Par défaut Extraction de contours dans une image
    Bonjour la communauté

    je cherche à extraire des contours dans une image. Pour ce faire je fais un seuillage, puis un filtrage médian et ensuite une détection des bords. Seulement dans mon seuillage, il y a des parties moins énergétique de la forme que je cherche à extraire; j'obtiens alors un contour morcelé. J'aurais voulu savoir comment je pourrais lisser ces contours pour obtenir un seul bloc. ci joint les images avant et après traitement.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    BW      = im2bw(EVNMT);         % matrice de 1 et de zeros
    IM      = medfilt2(BW,[5 5]);   % filtrage médian
    ED      = edge(IM,'sobel');     % recherche des bords
    Merci d'avance;
    Images attachées Images attachées   

  2. #2
    Membre régulier Avatar de Décembre
    Inscrit en
    Avril 2010
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 277
    Points : 110
    Points
    110
    Par défaut
    Salut,

    D'après tes images je ne pense pas que tu aies choisi la meilleure méthode de segmentation, alors le conseil que je te donne est de revoir ton algorithme de segmentation avant de penser au lissage des contours que tu pourrais faire avec les opérateurs de morphologie mathématique.

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 106
    Points : 110
    Points
    110
    Par défaut
    Salut,

    En réalité, mes données initiales ne sont pas des images. Je calcule le spectrogramme sur un signal et ensuite je fais une détection des événements énergétiques en mettant un seuil adaptatif. De ce fait ma matrice de sortie est constituée de 0 et de 1. Cependant pour être efficace je fixe mon seuil assez haut, ce qui supprime les parties faiblement énergétiques de mes événements. Mon objectif est de faire un masque à partir de la matrice de détection puis de filtrer à nouveau mon spectrogramme, d’où l'interêt de lisser les contours sur la figure. Cela est-il possible?

  4. #4
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Bonjour,

    j'ai du mal à voir ce que tu cherches à obtenir : un contour fermé? Si oui, lequel? car il en manque une bonne partie, même dans ton image initiale, non?

  5. #5
    Membre régulier
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 106
    Points : 110
    Points
    110
    Par défaut
    Salut,
    Oui, c'est ça, un contour fermé sur les parties rouges (les plus énergétiques) de mon image originale. Cette image correspond à la représentation temps fréquence d'un signal et je souhaite obtenir l'énergie des événements contenus dans ce signal (les partie rouges) .

    En effet, j'ai un algorithme de traitement du signal qui me permet d'avoir des détections de ces parties (sur mon image originale), ce qui me conduit à une matrice binaire. Seulement celle-ci est parfois discontinue là ou elle ne devrait pas l'être (ci-joint la matrice binaire). A partir cette matrice binaire, je souhaite avoir des contours fermés qui me permette de filtrer mon spectrogramme (l'image originale) .

    Effectivement c'est juste une partie de l'image que j'ai postée, je compte après faire une analyse glissante sur une base conséquente.

    Merci
    Images attachées Images attachées  

  6. #6
    Membre régulier Avatar de Décembre
    Inscrit en
    Avril 2010
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 277
    Points : 110
    Points
    110
    Par défaut
    Pour la fermeture de tes contours (fermeture des gros trous) je te propose d'utiliser l'enveloppe convexe.

  7. #7
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Points : 9 860
    Points
    9 860
    Par défaut
    Citation Envoyé par Décembre Voir le message
    Pour la fermeture de tes contours (fermeture des gros trous) je te propose d'utiliser l'enveloppe convexe.
    A condition qu'il ait une idée de chacune des composantes au préalable et que les formes soient convexes (ce n'est pas le cas ici).

    Citation Envoyé par Décembre Voir le message
    lissage des contours que tu pourrais faire avec les opérateurs de morphologie mathématique.
    ± 1
    Une fermeture permettrait d'homogénéiser tes formes et une ouverture de supprimer toutes celles qui sont trop petites.
    C'est en tout cas une bonne solution.

    Tu peux également utiliser une filtre alterné séquentiel afin bien homogénéiser chaque zone.
    D'ailleurs, tu pourrais travailler directement dans le canal rouge.

  8. #8
    Membre régulier
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 106
    Points : 110
    Points
    110
    Par défaut
    Merci à tous,

    J'ai essayé les différentes méthodes proposés. L'enveloppe convexe me donne des blocs mais pas continus comme je le souhaite.

    Effectivement je n'ai pas d'idée de ce que je rencontrerai par avance, et travailler sur l’image originale ne conduit pas au résultat souhaité (à cause de la ligne continue basses fréquences).

    J'obtiens un meilleur résultat en comblant d'abord les trous dans le voisinage des pixels énergétiques et ensuite un filtre alterné séquentiel d'ordre 1.

    Encore merci.

  9. #9
    Membre éclairé
    Avatar de Kangourou
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    579
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 579
    Points : 859
    Points
    859
    Par défaut
    Salut,

    Citation Envoyé par vbbarent Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    BW      = im2bw(EVNMT);         % matrice de 1 et de zeros
    IM      = medfilt2(BW,[5 5]);   % filtrage médian
    ED      = edge(IM,'sobel');     % recherche des bords
    heu, en général on commence par filtrer, PUIS on seuille... On peut éventuellement rajouter des post-traitements, mais peut-etre qu'en inversant les 2 opérations ça aiderait ?

    A+

  10. #10
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Points : 9 860
    Points
    9 860
    Par défaut
    Citation Envoyé par vbbarent Voir le message
    J'obtiens un meilleur résultat en comblant d'abord les trous dans le voisinage des pixels énergétiques et ensuite un filtre alterné séquentiel d'ordre 1.
    EN ce cas cela s'appelle une ouverture ou une fermeture.
    Il est souvent utile d'aller au delà pour bien homogénéiser tes zones.

  11. #11
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 923
    Points
    17 923
    Billets dans le blog
    2
    Par défaut
    B'jour à tous (oui, j'ai été absent quelques temps !!)

    Citation Envoyé par vbbarent Voir le message
    Salut,
    Oui, c'est ça, un contour fermé sur les parties rouges (les plus énergétiques) de mon image originale. Cette image correspond à la représentation temps fréquence d'un signal et je souhaite obtenir l'énergie des événements contenus dans ce signal (les partie rouges) .
    Si je comprend ton problème, il ne me semble pas que la représentation sous forme d'une image soit la plus adaptée...

    Tu as un diagramme t,f d'un signal, soit un ensemble de courbes f(t)

    Ne crois-tu pas qu'une approche plus simple serait d'identifier pour chacune des courbes les événements demandés ??

    Ou alors je n'ai rien compris..

    Mais je pense que l'on pourrait beaucoup mieux t'aider avec les courbes originales.. En effet, tu parles "d'image originale" dans un post, mais de l'autre côté ici tu parles d'un signal....

    Pourrais-t-on avoir ton VRAI point de départ ??

Discussions similaires

  1. Détection de rectangles dans une image de contours (image binaire)
    Par Chatbour dans le forum Traitement d'images
    Réponses: 9
    Dernier message: 09/06/2010, 16h06
  2. Renforcer les contours dans une image
    Par Chatbour dans le forum Traitement d'images
    Réponses: 2
    Dernier message: 27/04/2009, 14h00
  3. Réponses: 4
    Dernier message: 15/03/2008, 11h13
  4. Extraction d'un message dans une image (tatouage)
    Par roma1 dans le forum Images
    Réponses: 1
    Dernier message: 18/02/2008, 17h48
  5. vc++(6)+extraction des données dans une image(.tif)
    Par spootnic22 dans le forum Visual C++
    Réponses: 1
    Dernier message: 22/11/2006, 16h14

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