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 :

Clustering de points dans une image


Sujet :

Traitement d'images

  1. #1
    Futur Membre du Club
    Inscrit en
    Août 2008
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 7
    Points : 8
    Points
    8
    Par défaut Clustering de points dans une image
    bonjour à tous

    je veux faire une clusterisation de points en se basant sur leur intensité lumineuse.

    je sais qu'il y a un réseaux de neurones capable de faire ça mais j'en connais pas les astuces.

    si vous êtes expert ou experte dans ce sujet ; merci de me filer un coup de main.

    ciao

  2. #2
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Points : 9 860
    Points
    9 860
    Par défaut
    Bonjour,

    le clustering par réseaux de neurones s'appelle : les cartes de Kohonen.
    Tu trouveras cela dans certaines bibliothèques.

    Sinon en beaucoup moins compliqué, tu as les centres mobiles, K-means, nuées dynamiques, classification ascendante hiérarchique, ... Les trois premiers étant de la même famille.

    Connais tu à l'avance le nombre de classe que tu souhaites trouver ?
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

  3. #3
    Membre éclairé
    Avatar de mamelouk
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    867
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2005
    Messages : 867
    Points : 810
    Points
    810
    Par défaut
    hello,

    je profite de ce sujet pour demander quels sont les algos de clustering qui existent lorsqu'on ne connait pas à l'avance le nombre de cluster que l'on veut.

    (dans mon cas je ne travaille pas avec une image)

    merci

    Débugger du code est deux fois plus dur que d'en écrire.
    Donc, si vous écrivez votre code aussi intelligemment que vous le pouvez, vous n'etes, par définition, pas assez intelligent pour le débugger.

  4. #4
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Points : 9 860
    Points
    9 860
    Par défaut
    Bonjour,

    oulala...

    c'est un problème complexe qui est toujours d'actualité en recherche
    Je sais que certaines version des cartes de kohonen peuvent déterminer automatiquement un nombre de classe (apprentissage non supervisé).

    Sinon on a plutôt tendance à faire plusieurs clusterings et on évalue le résultat de chacun (critère dépendant du problème).
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

  5. #5
    Membre éclairé
    Avatar de mamelouk
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    867
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2005
    Messages : 867
    Points : 810
    Points
    810
    Par défaut
    ok merci

    si ca reste compliqué, je passe. Je vais faire un simple grid clustering (en divisant ma zone en 100 case et un seuil sur chaque case), ca devrais etre assez rapide et satisfaisant

    Débugger du code est deux fois plus dur que d'en écrire.
    Donc, si vous écrivez votre code aussi intelligemment que vous le pouvez, vous n'etes, par définition, pas assez intelligent pour le débugger.

  6. #6
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Points : 9 860
    Points
    9 860
    Par défaut
    Tu peux très bien faire une méthode simple et tester les seuils (deuxième proposition).
    Quel est ton problème exactement ?
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

  7. #7
    Membre éclairé
    Avatar de mamelouk
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    867
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2005
    Messages : 867
    Points : 810
    Points
    810
    Par défaut
    mon problème c'est une map google avec plusieurs centaines (voir plusieurs milliers) de marqueurs, avec des concentration des points sur les villes

    a ton avis qu'est ce que je pourrais trouver comme critère si j'applique des algos non supervisés? en pratique le nombre de villes dépend du niveau de zoom

    Débugger du code est deux fois plus dur que d'en écrire.
    Donc, si vous écrivez votre code aussi intelligemment que vous le pouvez, vous n'etes, par définition, pas assez intelligent pour le débugger.

  8. #8
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Points : 9 860
    Points
    9 860
    Par défaut
    Et je suppose que tu veux trouver le nombre de villes... :s
    Le problème de la résolution n'en est pas vraiment un...

    Je tenterai de faire un K-Means (ou autre) en faisant varier le nombre de classes (clusters) et en regardant le critère d'erreur intra-classe. Mais ce dernier sera minimal lorsque que tu donneras autant de clusters que de marqueurs sur ta carte , donc il faut contrebalancer avec une autre énergie... par exemple le nombre de clusters lui même (mais il faut le normer par rapport à l'erreur intra-classe).

    Sinon une bonne solution serait de procéder par itération :
    - tu choisis plusieurs nombres de clusters différents (mais très grand, porche du nombre de marqueurs) et tu effectues les clusterisations.
    - tu calcules les formes fortes.
    - tu regroupes certains marqueurs ensemble en fonction de ces formes fortes, ce qui permettra après quelques itérations de regrouper les marqueurs d'une même ville.
    - tu t'arrêtes lorsque tu atteints une certaines stabilité.
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

  9. #9
    Membre éclairé
    Avatar de mamelouk
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    867
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2005
    Messages : 867
    Points : 810
    Points
    810
    Par défaut
    critère d'erreur intra-classe.. ?

    je veut bien que tu m'expliques, mais étant donné que je veut pas y passer la moitié du projet je vais rester sur mon grid clustering

    Débugger du code est deux fois plus dur que d'en écrire.
    Donc, si vous écrivez votre code aussi intelligemment que vous le pouvez, vous n'etes, par définition, pas assez intelligent pour le débugger.

  10. #10
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Points : 9 860
    Points
    9 860
    Par défaut
    L'erreur intra-classe c'est très simple

    Erreur intra-classe <=> C'est la somme des distances entre chaque élément et le barycentre du cluster auquel il appartient.

    Tu as une petit exemple de comment la calculer dans le code que j'ai donné pour les centres mobiles/K-Means.
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

  11. #11
    Membre actif

    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2008
    Messages
    170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2008
    Messages : 170
    Points : 202
    Points
    202
    Par défaut
    Une autre approche pour trouver une estimation du nombres de classes dans un ensemble de données, est d'en faire une analyse spectrale.
    Tu définis une distance entre les points que tu veux clusteriser, puis tu calcules la matrice de distance. Ensuite, l'étude des valeurs singulières (SVD) de cette matrice peut te renseigner sur le nombre de classe dans tes données. Tu classe des valeurs singulières par ordre décroissant, et si un nombre de classe remarquable existe, tu le verras par un décrochage des valeurs singulière (à savoir que tout à coup leur valeurs chutes). Si c'est moins évident, tu peut prendre le parti de faire un seuil sur les valeurs sigulières, qui te déterminera le nombre de classes.
    Une telle méthodes permet ensuite de se servir des vecteurs singuliés correspondant aux valeurs singulières retenues (les plus grande) comme centre d'initialisation de tes classes dans le clustering de la matrice de distance. (on peut appliquer un k-means à la matrice de distance)
    Il y a tous les outils qu'il faut dans matlab pour faire ca. (svd() ou svds())

    PS: le probleme de cette méthode est le calcul de la matrice de distance si la quantité de données est trop importante, car l'encombrement mémoire explose. Mais il existe des solutions...

  12. #12
    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
    J'en profite pour glisser ici un de mes algos préférés pour le Clustering : le Mean Shift
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 95
    Points : 62
    Points
    62
    Par défaut
    Bonjour, je me permets d'ajouter une question en lien avec l'algo des kmeans. Quelqu'un connait-il un moyen d'obtenir les seuils en fonction des centres des clusters. J'utilise kmeans pour segmenter une image présentant un histogramme tri-modal.

    Merci d'avance

  14. #14
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Points : 9 860
    Points
    9 860
    Par défaut
    Citation Envoyé par Pg043 Voir le message
    Quelqu'un connait-il un moyen d'obtenir les seuils en fonction des centres des clusters.
    De quels seuils parles tu exactement ?
    Peut on avoir une image ?
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 95
    Points : 62
    Points
    62
    Par défaut
    Citation Envoyé par ToTo13 Voir le message
    De quels seuils parles tu exactement ?
    Peut on avoir une image ?
    J'utilise sous matlab la fonction kmeans. Cette dernier effectue une segmentation de n classes sur l'image (en vecteur) que je lui passe en paramètre et retourne l'image (en vecteur) segmentée ainsi que les centres des clusters.

    Moi je voudrais à partir de ces centres de clusters trouver les valeurs des seuils de segmentation pour mesurer l' "accuracy" de cette méthode...

    Des idées ?

    Merci

  16. #16
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Points : 9 860
    Points
    9 860
    Par défaut
    Bonjour,

    on ne peut pas parler de seuil avec les k-means.
    Tu lui passes les couleurs de tous les pixels et les k-means regroupent tous les pixels en N classes.
    Ensuite, à la place de chaque pixels, tu mets le numéro du cluster correspondant.
    Là, c'est ce qui est fait lors d'une segmentation par k-means.

    Mais pour ce qui est de ton problème. Si tu es en niveaux de gris, pour un cluster donné, il te suffit de trouver le pixel ayant la valeur minimum et le pixel ayant la valeur maximum. Ainsi tu obtiendras les deux seuils d'appartenance à un cluster dont tu parles (si j'ai compris ton problème).
    Mais sur des images couleurs, cela est plus complexe car il est lié à l'espace de représentation. Tu ne pourras pas déterminer des seuils du type : RougeMin, RougeMax, BleuMin, BleuMax, VertMin, VertMax. Si tu fais ce genre de calcul, tu auras sans doute des résultats erronés.
    En revanche, tu peux calculer le diagramme de Voronoi en fonction des barycentres pour avoir les limites de chaque cluster.
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

Discussions similaires

  1. Extraire coordonnées entre deux points dans une image
    Par Pg043 dans le forum Traitement d'images
    Réponses: 4
    Dernier message: 16/01/2009, 09h35
  2. Clustering de points dans une image
    Par lgomez dans le forum OpenCV
    Réponses: 8
    Dernier message: 19/09/2008, 16h32
  3. Clusturing de points dans une image
    Par faroukus dans le forum Traitement d'images
    Réponses: 0
    Dernier message: 28/08/2008, 15h05
  4. recherche de points dans une image
    Par Clemsouille dans le forum Images
    Réponses: 4
    Dernier message: 26/05/2008, 14h38
  5. le pixel noir le plus proche d'un point dans une image
    Par tlemcenvisit dans le forum Algorithmes et structures de données
    Réponses: 15
    Dernier message: 28/03/2006, 08h44

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