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

Algorithmes et structures de données Discussion :

Redresser des nuages de points


Sujet :

Algorithmes et structures de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Par défaut Redresser des nuages de points
    Bonjour,
    je suis sur un problème intéressant mais j'ai du mal à penser un algo pour le régler.

    Je compare 2 nuages de points A et B en calculant la somme des distances euclidiennes des points pour obtenir un degré de différence (plus la somme est basse, plus les 2 nuages sont similaires).
    (Pour rappel, un nuage de points 2D est simplement un ensemble de points de coordonnées x,y dans un repère orthonormé)

    ex :
    nuage A
    point a (12, 8)
    b(1, 3)

    nuage B
    point a (10, 8)
    b(-10, 2)

    Ce que j'appelle distance euclidienne est en fait la norme de la soustraction des vecteurs, ex : pour comparer A et B je fais la somme des vecteurs soustractions et j'en récupère la norme :
    Somme = ||(Ba - Aa) + (Bb - Ab)||

    (D'ailleurs est-ce c'est bien cela que l'on appelle distance euclidienne ?)

    Le but est de redresser le nuage B en y appliquant des symétries sur l'ensemble de ses points pour qu'il soit le plus proche possible de A : symétries sur x, y et des axes arbitraires de 45° que j'appellerai xy et -xy, .

    J'essaie de trouver un algo optimum pour cela mais je peine un peu.
    Ma première idée est de générer toutes les situations possibles et de comparer tous les nuages états finaux (A vs B, A vs B', A vs B'', etc.). A priori il n'y en a pas beaucoup, sachant que 2 symétries s'annulent.
    Pensez-vous que l'idée soit bonne ?
    Sinon pensez-vous que l'arbre peut se construire au fur et à mesure et que la meilleure solution peut-être trouvée sans parcourir ou créer tout l'arbre (parcours en largeur) ? A priori je dirais que non car une position optimum semble pouvoir passer par une position très mauvaise, les symétries changeant les coordonnées des points de façon absolument radicale.

    Toute piste ou suggestion est donc la bienvenue
    Merci d'avance.

    (J'essaie déjà de faire un algo pour des nuages 2D mais l'algo final gèrera les nuage 3D.)

  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
    de ce que je comprend, ton problème a (comme toute chose de ce type en géométrie), 3 éléments :


    • rotation
    • translation
    • zoom


    Donc, dans l'ordre, ce que je ferais c'est trouver la rotation et l'appliquer
    puis trouver le zoom et l'appliquer

  3. #3
    Membre très actif
    Profil pro
    chercheur
    Inscrit en
    Avril 2004
    Messages
    830
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : chercheur

    Informations forums :
    Inscription : Avril 2004
    Messages : 830
    Par défaut
    Il y a eu un débat sur les nouveaux métiers de l'informatique : Redresseur de nuages aurait mérité d'y figurer.
    Utiliser les différents moments de tes nuages (barycentres, axes principaux,etc.) permettrait de simplifier le pb

  4. #4
    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
    Citation Envoyé par Nebulix Voir le message
    Il y a eu un débat sur les nouveaux métiers de l'informatique : Redresseur de nuages aurait mérité d'y figurer.


    pendant 10 ans j'étais "afficheur de coups de foudre"

  5. #5
    Membre Expert Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Par défaut
    Merci pour les suggestions

    Pour ce qui est des barycentres, je n'ai pas de "recentrage" (ou contre-balancement, je ne connais pas le terme ) à faire sur les nuages car justement la position relative des points en fonction de l'origine est importante à conserver. Pour les axes principaux je ne vois pas ce que tu veux dire.

    Au sujet des rotations je pensais faire cela dans un 2e temps, d'ailleurs à ce sujet je crois que je pourrais décliner ensuite l'algo pour générer des symétries sur un nombre d'axes arbitraires plus important, car il me semble que toutes rotations peut se représenter par une succession de symétries, mais je n'en suis pas sûr.

    Par contre, j'avais effectivement oublié le scaling mais cela ne posera pas de problème, l'algo pour ça est très simple. On arrête de scaler en positif ou négatif dès que le degré de différence augmente.

    Pour l'instant je crois que je vais donc rester sur cette idée de successions de symétries sachant que je ne vois pas trop comment poser des conditions d'arrêts pour ne pas tourner en boucle et revenir sur des états déjà générés. Il faudrait sans doute que je conserve tous les états du nuage B. A la base je ne pensais pas les conserver mais ne conserver que les degrés de différences entre les nuages.

  6. #6
    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
    Citation Envoyé par Djakisback Voir le message
    Pour les axes principaux je ne vois pas ce que tu veux dire.

    il y a deux "axes" privilégiés équivalents à des axes X,Y.. forcément.. quel que soit le nuage de points..

  7. #7
    Membre Expert Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Par défaut
    En fait, les coordonnées des points sont dans un repère orthonormé basique x(1,0), y(0,1) d'origine (0,0) et il me semble que les axes principaux sont simplement x et y.

Discussions similaires

  1. Recalage des nuages de points
    Par thaomta dans le forum Images
    Réponses: 0
    Dernier message: 14/02/2014, 10h18
  2. bibliothèque de génération des graphiques et des nuages de points
    Par georex dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 11/05/2012, 16h38
  3. Réponses: 21
    Dernier message: 29/09/2011, 10h30
  4. Réponses: 1
    Dernier message: 10/05/2007, 15h30
  5. [VBA-E] : Axe des X des Chart / Nuage de point
    Par airbeone dans le forum Access
    Réponses: 3
    Dernier message: 01/09/2006, 19h14

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