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

OpenCV Discussion :

Segmenter une image


Sujet :

OpenCV

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 58
    Par défaut Segmenter une image
    Bonjour à tous!
    J'affiche l'histogramme de mon image qui est composée d'un fond blanc et d'un disque rouge. Un peu comme le drapeau du Japon d'ailleurs...

    Bref, mon histogramme des niveaux de gris sur 8 bits me donne 2 composantes, une blanche très grande et une rouge beaucoup plus petite. J'aimerais couper cette composante blanche de l'histogramme et ne garder que la rouge.
    J'ai essayé avec la fonction cvThreshold en imposant un seuil inférieur à la composante blanche mais sans succès.
    Avez vous une autre idée??

    En vous remerciant par avance.

  2. #2
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2011
    Messages : 84
    Par défaut
    Salut,

    Citation Envoyé par romain_t Voir le message
    Bref, mon histogramme des niveaux de gris sur 8 bits me donne 2 composantes, une blanche très grande et une rouge beaucoup plus petite.
    Si tu travail avec les niveaux de gris, ça m’étonnerais que tu est une composante rouge!

    Si tu travail avec une image a niveaux de gris et donc tu as le fond qui est blanc et ton disque une certaine valeur (si c'etait la meme valeur de rouge pour chaque pixel du disque au depart) il faut que tu gardes les pixels < seuil

    donc avec cvThreshold il faut tuiliser le flag thresholdType=CV_THRESH_BINARY_INV:
    dst(x,y) = 0, if src(x,y)>threshold
    maxValue, otherwise

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 58
    Par défaut
    Je me suis mal exprimé, je sais qu'en niveau de gris, on ne peut pas avoir de rouge...
    Mais c'est la représentation du rouge à un certain niveau de gris sur l'histogramme que je voulais garder. Donc j'ai trouvé la fonction thresholdHist() mais elle ne permet pas de découper une bande. Elle permet de supprimer les composantes de l'histogramme en dessous d'un seuil. Or je veux isoler une bande...

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 58
    Par défaut
    La solution que je croyais avoir trouvée était d'inverser l'image. Mon image étant codée sur 8 bits, mon histogramme était alors composé d'une composante à 0 (la blanche inversée) et d'une composante rouge inversée vers les 200 je suppose. Mais en utilisant la fonction thresholdHist(histogramme,100), il me coupe encore et toujours la composante rouge, alors qu'il devrait couper la blanche étant inférieure à 100.

  5. #5
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2011
    Messages : 84
    Par défaut
    Il y a un truc que je pige pas dans ce que tu veux faire.
    Si tu as inversé ton image et que tu as un histogramme avec deux composantes (0 pour le fond et disons 200 pour le rouge).
    Tu as donc déja une image binaire et ton cercle est déja extrait donc le threshold ne sert a rien??

    Ou alors j'ai mal compris et tu as plusieurs composantes pour ton disque rouge dont une principale et tu veux la garder.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 58
    Par défaut
    En fait, cette image est une simple représentation de photographies successives que je veux prendre et dont je veux observer l'évolution. La partie à observer est l'évolution du corps rouge. Si je venais à avoir un disque rouge plus gros, j'aurais une augmentation du pic du niveau de gris correspondant au rouge et une baisse du pic de celui correspondant au blanc. Le problème c'est que ce pic de blanc est énorme car il correspond au fond de l'image. Et je veux détecter une évolution par rapport au maximum de l'histogramme. C'est pour cela que je veux isoler mon pic blanc en fait..

Discussions similaires

  1. [AIR] segmenter une image en bloc
    Par shagun dans le forum Flex
    Réponses: 0
    Dernier message: 19/01/2012, 09h00
  2. Idée pour mieux segmenter une image riche en structures?
    Par mickeynad dans le forum Traitement d'images
    Réponses: 19
    Dernier message: 29/07/2011, 20h00
  3. utilisation de la LPE pour segmenter une image couleur
    Par sikarce dans le forum Traitement d'images
    Réponses: 6
    Dernier message: 16/06/2011, 00h23
  4. fonction pour segmenter une image de visage (niveau de gris)
    Par masterinfo dans le forum Traitement d'images
    Réponses: 3
    Dernier message: 05/06/2009, 17h13
  5. Segmenter une image par une gaussienne 2d
    Par RASS15 dans le forum Images
    Réponses: 1
    Dernier message: 12/12/2006, 10h44

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