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 :

Algorithme de labélisation résultats inconhérents


Sujet :

Traitement d'images

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 197
    Points : 89
    Points
    89
    Par défaut Algorithme de labélisation résultats inconhérents
    Bonjour,
    Je fait une étude sur les différents algorithme d'étiquetage temps réel.
    J'en ai trouvé que deux convenables: Algorithme de difusion et Union-Find.

    Je travail sur une image binaire ou la valeur 1 est considéré comme délimeteurs ces pixels ne sont pas traité, j'ai choisit 4-conexcité.

    J'ai réalisé plusieurs implémentations des deux algorithmes.
    Celle donnant les meilleurs résultats sont l'algorithme de difusion optimisé par traitement de ligne intégrant la seconde optimisation visant à ajouter dans la pile uniquement les extrémités des lignes.(voir le sujet sur wikipedia http://fr.wikipedia.org/wiki/Algorit..._par_diffusion )
    Le deuxième est le Union find classique disponible sur ce site grace à Pseudo-code.

    Et bien bizarrement Union find est plus lent que la difusion par ligne. Pour une image de 480*320 j'ai 80ms en moyenne pour la difusion et 130 ms pour union find.
    Je pensais que Union find était le meilleur.

    Du coup sa m'énerve car je ne trouve pas sur le net d'étude comparative ou un site expliquant clairement quel est la meilleur méthode, de plus je ne sais pas quel méthode est utilisé dans l'opérateur de labeling sur openCV.

    Trois remarque importante.

    - Je travail en AS3, et j'ai l'impression que l'utilisation des tableaux semble ralentir gravement mes algorithmes orienté sur les listes. je vai essayé de remplacer le tableau de type Array par un bitmap mais c'est pas gagné.

    - Je n'ai pas recopié exactement la méthode de Pseudo-code, mes listes sont des structures comprenant deux tableaux le premier tableau contient les cordonnées des points d'une classe et le deuxième tableau contient les liens entre les classe et les structures, ce qui me permet d'évité les root(root(root)) l'ors de la concaténation. De plus je me suis rendu compte que l'or de la concaténation la plus petite taille de ce tableau de correspondance entre les deux classes faisait généralement une taille de 1 (98% des cas) je ne peut donc pas perdre de temps de ce coté.

    - La troisième remarque est que la deuxième passe de l'algorithme de Union-find fait généralement la moitié en temps de l'algorithme de difusion, je ne voit donc pas comment si ce n'est en l'égalent, Union-find pourrais être plus rapide. Ce qui confirme les faiblesses de l'utilisation de tableau en AS3.


    Cordialement,
    Christophe

  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 081
    Points
    16 081
    Par défaut
    L'algo Union-Find utilise un tableau statique, alors que l'algo FIFO utilise des piles dynamiques.

    L'accès à un tableau est généralement plus performant que la gestion d'une pile. Cela dit, il se peut que dans ton langage ca soit l'inverse. Ca parait tout de même curieux.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 197
    Points : 89
    Points
    89
    Par défaut
    Bonjour,
    ok en faite c'était une erreur de ma faute. J'ai fait erreur dans l'algorithme union-find.

    Du coup effectivement UnionFind est meilleur, mais la différence est légere sur les images de petite taille, par contre l'écart est bien visible sur des grande taille 1080p. L'écart type des résultats et plus important sur union-find j'en déduit qu'il est sensible à la forme et au nombre de classe

    Au niveau de documentation je ne trouve toujours rien, à par cette article sur wikipedia qui donne quelque référence http://en.wikipedia.org/wiki/Connect...onent_labeling


    Merci

Discussions similaires

  1. Réponses: 7
    Dernier message: 05/02/2016, 16h24
  2. Réponses: 1
    Dernier message: 04/11/2011, 11h30
  3. Réponses: 0
    Dernier message: 04/11/2011, 10h58
  4. Algorithme pour résultat d'autocomplétion depuis 3 clés
    Par anemone-clown dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 14/11/2010, 20h39
  5. Algorithme de Prim qui n'entraîne pas le bon résultat
    Par Invité dans le forum Général Java
    Réponses: 2
    Dernier message: 31/03/2009, 17h05

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