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

  1. #21
    Membre émérite 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
    Points : 2 273
    Points
    2 273
    Par défaut
    En fait j'essayais d'appliquer ta formule en algèbre vectorielle et aussi de factoriser. Je me demande si c'est possible.
    Mon calcul de base pour le facteur/indice d'un nuage est la norme de la somme de toutes les différences et non la somme de toutes les normes de chaque différence. Je me demandais donc si c'était réductible et factorisable :
    indice = ||(ai - k - bi) + ... + (an - k - bn)||
    où toutes les composantes sont des vecteurs, mais de toute façon je ne sais pas résoudre ça.

  2. #22
    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 084
    Points
    16 084
    Par défaut
    Citation Envoyé par Djakisback Voir le message
    Effectivement pour les symétries cela semble difficile mais pour les rotations il devrait y avoir moyen d'appliquer le même principe que pour le scaling ? en exprimant la rotation et une différence/soustraction ?
    Comme l'a dit magelan, les formules que tu cherches sont celles des Analyses procustéennes.

  3. #23
    Membre émérite 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
    Points : 2 273
    Points
    2 273
    Par défaut
    Un grand merci à tous, je me lance

  4. #24
    Membre émérite 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
    Points : 2 273
    Points
    2 273
    Par défaut
    Merci à tous, j'ai implémenté la rotation et ça semble bien fonctionner

    J'aurais une petite question, est-ce que les gens qui ont parlé d'analyse procustéenne connaissait déjà le sujet ? Car j'avais pas mal cherché mais pour arriver là-dessus en cherchant sur le net ça semble assez compliqué.

  5. #25
    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 084
    Points
    16 084
    Par défaut
    Citation Envoyé par Djakisback Voir le message
    J'aurais une petite question, est-ce que les gens qui ont parlé d'analyse procustéenne connaissait déjà le sujet ? Car j'avais pas mal cherché mais pour arriver là-dessus en cherchant sur le net ça semble assez compliqué.
    Je pense qu'il suffit de taper "2D Shape Alignment" dans un moteur de recherche pour avoir la réponse dans les premières pages.

  6. #26
    Membre émérite 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
    Points : 2 273
    Points
    2 273
    Par défaut
    Merci, effectivement je ne considérais pas mon nuage de points comme une figure géométrique.

    Sinon si ça peut servir à d'autres la formule de rotation de wikipedia : http://en.wikipedia.org/wiki/Procrus...lysis#Rotation retourne l'angle en radians dans le sens anti-horaire et les quadrans sont un peu particuliers : 0PI, PI/2, 0PI, PI/2 mais inutile de recalculer les cos et sin pour connaître le quadran ou signe, on peut utiliser les signes des numérateurs et dénominateurs de la fraction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    if(denominator != 0)	{
    			alpha = Math.atan(numerator / denominator);
    			// Quadrans 2 et 3
    			if(denominator < 0)	{
    				alpha += Math.PI;
    			}
    			// Quadrans 4
    			else if(numerator < 0)	{
    				alpha += Math.PI * 2;
    			}
    			alpha = Math.toDegrees(alpha);
    		}

  7. #27
    Membre émérite 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
    Points : 2 273
    Points
    2 273
    Par défaut
    Salut,
    j'ai encore un léger souci sur cet algo et je me demandais si je pouvais le résoudre avec les formules procustéennes.
    La rotation fonctionne très bien mais avant la rotation je voudrais pouvoir effectuer des symétries sur différents axes, car la rotation seule ne donne pas un résultat optimum.
    Est-ce que quelqu'un pourrait me confirmer que je ne peux pas utiliser la formule du scaling présentée ici : http://en.wikipedia.org/wiki/Procrus...niform_scaling ?
    Je pense que cette formule ne permet pas d'effectuer un scaling négatif, étant donné que l'on applique le scaling de cette manière (x/s, y/s). x ou y ne peuvent donc pas changer de signe, c'est bien cela ? Et de toute façon vu qu'il s'agit d'un scaling uniforme cela ne m'arrange pas pour les symétries.
    Je me demande si je pourrais m'inspirer de cette formule pour en obtenir une permettant d'avoir un coefficient de scaling sur chaque axe et qu'il puisse être négatif.

    La méthode que j'utilise actuellement est de parcourir tous les points des 2 nuages et de les comparer 2 à 2 pour savoir si un point d'un nuage 1 est inversé par rapport à son "image" dans le nuage 2.
    Concrètement si x du point 1 est < 0 et que x du point 2 est > 0 (ou réciproquement), alors il y a inversion.
    Je compte le nombre d'inversions sur x et le nombre d'inversions sur y. Si le nombre d'inversions sur x ou sur y et supérieur à la moitié du nombre de points, je décide qu'il faut inverser tous les points du nuage sur cet axe.
    Mais j'ai parfois des résultats étranges et je me demande si cette méthode est très bonne. Auriez-vous un avis sur la question ?

    Savez-vous s'il y a des moyens plus simples ou plus efficace pour effectuer cela ?
    Merci d'avance je continue mes recherches.

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