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 :

Détection des concavités avec un Gvf Snake


Sujet :

Traitement d'images

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2010
    Messages
    145
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 145
    Par défaut Détection des concavités avec un Gvf Snake
    Bonjour tout le monde. voici mon probleme:
    j'ai programme un contour actif classique avec comme energie externe un champs de flux de gradient, pour pouvoir bien detecter les zones concaves..
    sauf que, on le testant sur l'image de la feuille de trefle du tutoriel de developpez suivant:http://khayyam.developpez.com/articl...ntours-actifs/
    j'obtiens le resultat suivant:



    ps:dans mon algorithme j'ajoute(resp supprime) a chaque iteration des noeuds si la distance entre eux est superieur(resp inferieur), a un certain seuil.
    et j'ai essaye de changer les parametres de l'energie de courbure, de continuite ca donne rien, pourtant l'image pretraite est bien seuillee et non bruitee.

  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 : 52
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Citation Envoyé par MSN9149 Voir le message
    ps:dans mon algorithme j'ajoute(resp supprime) a chaque iteration des noeuds si la distance entre eux est superieur(resp inferieur), a un certain seuil.
    Faire cela à chaque itération, ca peut poser des problèmes dans les goulets d'étranglement comme c'est le cas ici.

    Il vaut mieux laisser les points du Snake évoluer sans cette contrainte pendant plusieurs itérations (10-20), puis faire la phase d'ajout/suppression.

    Le mieux étant de recalculer la position "idéale" des points sur le contour du Snake. Ca permet non seulement d'avoir le nombre idéal de points, mais aussi de tous les espacer uniformément.

    et j'ai essaye de changer les parametres de l'energie de courbure, de continuite ca donne rien, pourtant l'image pretraite est bien seuillee et non bruitee.
    Normalement ca devrait converger sans problèmes avec simplement une énergie d'attraction et une énergie de courbure.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  3. #3
    Membre confirmé
    Inscrit en
    Décembre 2010
    Messages
    145
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 145
    Par défaut
    Citation Envoyé par pseudocode Voir le message
    Faire cela à chaque itération, ca peut poser des problèmes dans les goulets d'étranglement comme c'est le cas ici.

    Il vaut mieux laisser les points du Snake évoluer sans cette contrainte pendant plusieurs itérations (10-20), puis faire la phase d'ajout/suppression.
    je vais essayer de faire ce que tu dis, meme si je converge generalement en 40 iterations donc il va ajouter/suppr 4 fois a peu pres.

    Citation Envoyé par pseudocode Voir le message
    Le mieux étant de recalculer la position "idéale" des points sur le contour du Snake. Ca permet non seulement d'avoir le nombre idéal de points, mais aussi de tous les espacer uniformément.
    je comprends pas vraiment ce que tu veux dire par recalculer la position ideale?

  4. #4
    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 : 52
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Citation Envoyé par MSN9149 Voir le message
    je comprends pas vraiment ce que tu veux dire par recalculer la position ideale?
    Plutot que de s'occuper seulement des points problématiques (trop près/éloignés), on recalcule la position de TOUS les points.

    Voila comme je procède personnellement pour le recalcule (cf la méthode rebuild de la contribution).

    Au départ, on a un Snake est composé d'une suite de M points {P1, P2, ... ,Pm}.
    - On calcule la longueur du Snake = clength.
    - On divise cette longueur par l'espacement moyen voulu "space", ce qui nous donne le nouveau nombre de points dans le Snake = clength/space = N.
    - On crée donc un nouveau Snake composé de N points {Q1, Q2, ..., Qn}. Chaque point Qi est calculé en interpolant les coordonnées des points correspondants dans le snake de départ.

    J'ai utilisé une représentation paramétrique du snake pour simplifier le calcul : Snake(t), avec t variant entre 0 et clength.

    Snake 
    original    P1--P2----P3---------P4-------P5----P6-- .... ----Pm
    
    
    paramètre   |-----------|-----------|------------|-- .... ----|
                0         space      2*space       3*space        clength
    
    Snake
    recalculé   Q1----------Q2----------Q3----------Q4-- .... ----Qn
    
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  5. #5
    Membre confirmé
    Inscrit en
    Décembre 2010
    Messages
    145
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 145
    Par défaut
    donc si j'ai bien compris ce traitement, tu le fais a chaque iteration?
    dans ce cas est ce qu'on a besoin d'ajouter/supprimer les points qui sont trop loin ou trop pres?

    Autres questions: c'est quoi l'espacement voulu(comment il est calcule)?
    et comment on calcule les Qi par interpolation des Pi?

    ps: j'ai lu la fonction build de ta contribution, je comprends toujours pas a quoi sert l'interpolation cubique dans ce cas

    merci!

  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 : 52
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Citation Envoyé par MSN9149 Voir le message
    donc si j'ai bien compris ce traitement, tu le fais a chaque iteration?
    Non, toutes les 10-20 iterations.

    dans ce cas est ce qu'on a besoin d'ajouter/supprimer les points qui sont trop loin ou trop pres?
    Non, effectivement.

    Autres questions: c'est quoi l'espacement voulu(comment il est calcule)?
    Ca peut être est un nombre fixe, totalement empirique (genre 4 ou 8 pixels).

    et comment on calcule les Qi par interpolation des Pi?

    ps: j'ai lu la fonction build de ta contribution, je comprends toujours pas a quoi sert l'interpolation cubique dans ce cas
    Comme je l'ai dit, l'idée c'est de représenter le snake sous forme d'une courbe paramétrique. Le paramètre étant ici la "distance" depuis le point de départ. C'est plus pratique pour interpoler que le simple "index" dans une liste.

    L'interpolation cubique c'est simplement pour avoir des points plus joliment placés (ca fait une courbe plus naturelle).
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

Discussions similaires

  1. Détection des points d'intérêts avec OpenCV
    Par daoudasylla dans le forum Bibliothèques, systèmes et outils
    Réponses: 2
    Dernier message: 17/04/2015, 20h17
  2. Overlay avec détection des gestes sur Android 4.x
    Par Ricoxor dans le forum Android
    Réponses: 0
    Dernier message: 05/06/2014, 11h16
  3. Détection des coordonnées de la souris avec OpenGL
    Par choko83 dans le forum OpenGL
    Réponses: 5
    Dernier message: 17/03/2009, 10h03
  4. [CR] Est il possible de créer des univers avec Seagate Info?
    Par Frank dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 27/06/2002, 15h22

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