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 :

Localisation d'objets au sein d'une image


Sujet :

Traitement d'images

  1. #1
    Membre à l'essai
    Inscrit en
    Décembre 2007
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 47
    Points : 24
    Points
    24
    Par défaut Localisation d'objets au sein d'une image
    Bonjour,

    Je réalise un projet dont le but est de localiser des objets au sein d'une image.
    Il s'agit d'image en noir et blanc (pas de video donc pas de motion tracking).

    Je me demandais donc quels étaient les filtres/méthodes optimales pour réaliser une détection d'objet.

    Par exemple pour une détection de contour, de tout ce que j'ai pu voir, Canny semble le plus aboutis. (est ce vraiment le cas ?)
    (le contexte des images traitées étant diverses, il est important de voir le plus large possible)

    De même, une fonction de binarisation très intéressante est celle que l'on peut trouver dans OpenCV (cvAdaptiveThreshold) qui s'adapte aux différentes zone de l'images. (cf: http://img708.yfrog.com/img708/2788/nouvelleimage.png) . Elle est donc adapté à des images contrastée de manière hétérogène.

    Je me demandais donc quelles étaient les meilleurs techniques/algorithmes générales pour le traitement d'image à ce jour pour :
    - binarisation : cvAdaptiveThreshold de OpenCV ?
    - mise en évidence de contour : canny ?
    - segmentation en région : ?
    - filtrage : Gaussien ?

    Par exemple pouvez vous m'indiquer des nom de méthodes/d'algorithme que je pourrais aller étudier et qui répondent à des cas assez généraux.

    Une particularité de l'objet à trouver est que sa densité de contour est très importante. Y aurait t il un algorithme existant sur lequel je pourrais me baser pour trouver les zones à forte densité de contour ?

    Par avance merci pour vos pistes de réflections.

  2. #2
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 084
    Points
    16 084
    Par défaut
    Citation Envoyé par rastakouair Voir le message
    Par exemple pour une détection de contour, de tout ce que j'ai pu voir, Canny semble le plus aboutis. (est ce vraiment le cas ?)
    De ceux que je connais, c'est le plus "robuste".

    Une particularité de l'objet à trouver est que sa densité de contour est très importante. Y aurait t il un algorithme existant sur lequel je pourrais me baser pour trouver les zones à forte densité de contour ?
    "densité de contour" ? heu... je ne vois pas trop ce que c'est.

  3. #3
    Membre chevronné
    Avatar de kmaniche
    Inscrit en
    Janvier 2006
    Messages
    1 717
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 717
    Points : 1 884
    Points
    1 884
    Par défaut
    Après avoir fais l'étude de l'état de l'art en traitement d'image (analyse d'image précisément), tu t'apperçevras qu'il n'existe pas une méthode générale que ce soit pour la segmentation ou même pour la binarisation (mot technique : seuillage), mais des méthodes qui peuvent être appliquées à un type d'images et pas pour un autre.

    Si tu veux programmer une méthode de seuillage automatique de l'image, tu peux utiliser l'étude de l'histogramme, ou bien la méthode d'Otsu (disponible sur le net, et sur Matlab graythresh.

    Ton image source, elle n'est pas en noire et blanc, mais en niveaux de gris.

    Une fois ton image transformée en une image noire et blanc, là tu n'as pas vraiment besoin de faire une segmentation en contours par le filtre de Canny, mais plutôt faire une extraction des bords des objets, notemment simple à programmer.

    De même pour la segmentation en région, ton image est déjà segmentée si tu commence par une étape de seuillage, si tu cherche à extraire les régions, remplace la segmentation en région par un étiquetage en composantes connexes des objets contenus dans l'image.

    Il faudra choisir, soit faire une segmentation en contours ou une segmentation en région. Sauf si tu cherche à faire une fusion (coopération) entre les deux segmentations.

    Pareil pour le filtrage Gaussien.

    A mon avis, la méthodologie à suivre est la suivante : par exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    1. Prétraitement
      a. filtrage
      b. amélioration de contraste
    2. Segmentation
      a. contours
      b. régions
    3. Binarisation
    4. Étiquetage.
    5. Extraction des objets.

  4. #4
    Membre à l'essai
    Inscrit en
    Décembre 2007
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 47
    Points : 24
    Points
    24
    Par défaut
    Merci pour vos réponses,

    @pseudocode
    une densité de contour importante, cela veut dire que après une convolution type Prewitt/Roberts/Canny on observe de nombreux contours. En fait il y a beaucoup d'alternances noir/blanc (un peu comme un code barre).

    @kmaniche
    En effet c'est une image en niveau de gris (c'est bien ce que je voulais dire, mais c'est mieux d'être précis )
    Je comprends bien qu'il n'existe pas une méthode générale, mais je cherche ici à me renseigner sur les algorithmes les plus poussés...(ex: apparemment Canny
    pour la détection de contour)

    Voici ce que j'ai pu comprendre de la méthodologie à prendre en compte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    
    I. Prétraitement
      [et/ou] 1. filtrage
      [et/ou] 2. amélioration de contraste
    II. [puis]Traitement
      [ou]1. Reconnaissance de forme par apprentissage et statistiques (Haar-like...)
      [ou]2. Segmentation de contours (Prewitt/Canny/Roberts...)  
            a. Extraction des objets
      [ou]3. Segmentation régions
            a. Extraction des objets
      [ou]4. Seuillage
            [ou]a. Étiquetage
            [ou]b. Extraction des bords des objets
    Dans ton schéma je n'ai pas trop compris pourquoi une 3. binarisation pouvait venir après une 2. Segmentation en contour/région....est ce vraiment utile ?

  5. #5
    Membre chevronné
    Avatar de kmaniche
    Inscrit en
    Janvier 2006
    Messages
    1 717
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 717
    Points : 1 884
    Points
    1 884
    Par défaut
    Pour te répondre, je te pose une question suivante :
    Quel est l'intérêt de la segmentation si tu l'as fais précéder par une étape de seuillage (binarisation) ?


    >> D'ailleurs, il ne faut pas trop se compliquer la vie :

    Du moment où tu effectue un seuillage, tu n'a plus besoin de la segmentation, il suffit que tu développes un programme pour faire :

    1. La détection des bords des objets => si tu cherche les contours.
    2. Un étiquetage => si tu cherche les régions.

  6. #6
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 084
    Points
    16 084
    Par défaut
    Pour faire de la localisation, il faut déjà faire de la reconnaissance et donc calculer des descripteurs.

    Si tu veux absolument utiliser les contours pour faire la reconnaissance, regarde du coté des calculs de descripteurs de forme (MSGPR, fourier, ...) si chères à Toto13.

  7. #7
    Membre à l'essai
    Inscrit en
    Décembre 2007
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 47
    Points : 24
    Points
    24
    Par défaut
    Je viens de découvrir le détecteur de Harris.
    Très intéressant dans mon cas.
    Peut-être en connaissez vous d'autres?

  8. #8
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 084
    Points
    16 084
    Par défaut
    Citation Envoyé par rastakouair Voir le message
    Je viens de découvrir le détecteur de Harris.
    Très intéressant dans mon cas.
    Peut-être en connaissez vous d'autres?
    des détecteurs de coin ? SUSAN, FAST, ...

    [ame]http://en.wikipedia.org/wiki/Corner_detection[/ame]

Discussions similaires

  1. localisation d'objet dans une image
    Par soforan dans le forum Images
    Réponses: 2
    Dernier message: 12/08/2011, 18h38
  2. Tri par attribut d'objet au sein d'une liste
    Par SulfaTueuR dans le forum C#
    Réponses: 4
    Dernier message: 11/11/2010, 00h52
  3. Mesure de symétrie au sein d'une image
    Par deckard_fawkes dans le forum ImageJ
    Réponses: 1
    Dernier message: 04/05/2010, 16h11
  4. Localisation d'"objets" dans une image
    Par ammar_diabolo dans le forum OpenCV
    Réponses: 4
    Dernier message: 07/04/2008, 09h36
  5. Réponses: 3
    Dernier message: 04/04/2007, 08h07

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