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 :

Criteres de "merge" entre 2 regions


Sujet :

Traitement d'images

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 164
    Par défaut Criteres de "merge" entre 2 regions
    Bonjour,

    je reprend la suite de mon post précédent : http://www.developpez.net/forums/sho...d.php?t=374304

    dans l'exemple que j'avais mis le watershed suffisait amplement mais sur les autres images, j'ai beaucoup trop de segmentations (il me coupe des cellules en 2 3 4 meme plus)

    Il me faut trouver des conditions pour la partie "merge" de mon algorithme (split and merge). Pour le moment je regarde juste l'intensité moyenne (entre 2 regions) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if((shape.getIntensity() >= (aShape.getIntensity()-threshold)) && (shape.getIntensity() <= (aShape.getIntensity()+threshold))) return true;
    Il me faudrait trouver des criteres de merge plus précis, mon tuteur m'a donné quelques pistes : la taille moyenne d'une cellule, utiliser le gradient la ou les cellules se touchent ...

    Est ce que vous connaissez d'autres criteres que je pourrai utiliser pour fusionner 2 régions tout en arrivant a séparer des cellules qui se touchent sur mon image !

    Quelques exemples d'images :





    Merci

  2. #2
    Expert confirmé

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    oui..

    j'ai fait quelque chose de similaire pour la détection de cellules orageuses à partir de l'observation d'éclairs..

    Il y a un paramètre à connaître (ou à déterminer) : la limite de séparation entre 2 points pour qu'ils n'appartiennent pas à la même cellule.

    Et ensuite c'est un bête .. regroupement.. (je ne me souviens plus du nom exact du principe de l'algo).

    Mais en gros cela revient à calculer les distances entre tous les points, et grouper comme "une cellule" tous les points dont la distance est inférieure à la limite...

    J'ai l'algo quelque part en C, mais avec le principe tu devrais pouvoir t'en sortir facilement..

    NOTE : il y a même une manière d'optimiser qui fait que de O(N^2) on passe à O(5*N)...

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 164
    Par défaut
    J'ai pas trop compris le principe... tu pourrais m'expliquer un peu plus en détails

  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
    Une autre methode simple et pas chere:

    Tracer une droite qui relient 2 regions voisines et construire la courbe des valeurs rencontrées le long de cette droite.

    - Si les 2 regions appartiennent a 2 cellules differentes, il va y avoir une discontinuité de la courbe a la frontiere.

    - Si les 2 regions appartiennent a la meme cellule, la courbe devrait etre uniforme a la frontiere.


    NB1: La "forme" que prend la discontinuité depend des valeurs choisies (intensité, gradient, entropie, ...).

    NB2: C'est mieux de tracer plusieurs droites.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  5. #5
    Expert confirmé

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Bon je te donne le principe :

    (je me rappelle le nom de l'algo : clusterisation)

    Agglomérer (avec un indicateur) tous les points séparés par moins que la distance minimum.


    Exemple avec des points isolés :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Calculer les distances des points 2 à 2. 
    Prendre le premier le plus à gauche. Lui affecter numéro cellule 1
    trouver le point le plus proche
    si d > dmin
       ce point appartient à une nouvelle cellule
    sinon
       ce point appartient à la même cellule
    itérer
    Et il y a bien sûr des moyens d'accélérer...

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 164
    Par défaut
    "Tracer une droite qui relient 2 regions voisines et construire la courbe des valeurs rencontrées le long de cette droite."

    le probleme c'est que a l'intersection de 2 cellules et sur le contour des cellules, le split va jusqu'au pixel donc forcement il va y avoir une différence d'intensité entre les 2 pixels !

  7. #7
    Expert confirmé

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    je peux fournir l'algo (en C).

    Mais il faudrait sans doute le re-travailler un peu (sans doute très peu) pour mes images, car là c'était pour des points isolés avec coordonnées réelles..

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 164
    Par défaut
    Merci pour vos réponses, je vais continuer à chercher !

    souviron34 ton algo m'interesse mais honnetement j'ai pas pigé le principe

  9. #9
    Expert confirmé

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    je pourrais t'envoyer la doc si tu me donnes email par MP (j'ai pas assez de place pour télécharger ici).

    En gros, c'est :

    Problématique :

    • des points irrégulièrement répartis dans l'espace
    • Comment les regrouper pour former des "clusters" de points (tes cellules)



    Solution :

    • Définir une distance limite de séparation entre 2 cellules
    • Regrouper les points dont la distance à un autre est inférieure à cette limite comme appartenant à une même cellule.

Discussions similaires

  1. Difference entre [Simple quote] & [Double quote]
    Par Invité dans le forum SQL
    Réponses: 3
    Dernier message: 24/07/2013, 12h24

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