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 :

Equation d une sphere a partir d un nuage de points


Sujet :

Algorithmes et structures de données

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 46
    Points : 25
    Points
    25
    Par défaut Equation d une sphere a partir d un nuage de points
    Bonjour,

    Voila je n arrive pas a trouver d informations sur les differents algorithmes existants pour calculer l equation d une sphere a partir d un nuage de points.

    Je pense que cela est un probleme connu donc j aimerai faire appel a vos connaissances pour trouver des liens et de la litterature.

    Merci d avance pour votre aide.

  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,

    ta question est plutot imprécise dans le sens où :
    1 - Est ce que t uveux l'équation de la sphère qui englobe ton nuage de points ?
    2 - Est ce que tu veux l'équation de la sphère passant par trois points ?

    L'équation d'une sphère est de la forme :
    (X-Xc)^2 + (Y-Yc)^2 = R^2

    Sinon la solution des deux est de toute façon tres simple.
    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
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 46
    Points : 25
    Points
    25
    Par défaut
    Bonjour, merci pour ta reponse.

    Oui j ai ete imprecis. En fait j ai a ma disposition une liste de points (tous senses etre equidistants du centre de la sphere a + ou - les erreurs de mesure). Mon probleme est de trouver le centre de cette sphere.

    En ce moment j utilise un algorithme (que je n ai pas programme) derive de DownHill simplex mais il ne me donne des resultats mediocres.

    Une des contraintes entre autres est que l echantillonement des points ne peut pas se faire sur "l ensemble de la surface de la sphere" mais plutot seulement dans une liberte de mouvement d environ 30°.
    Est- ce clair ?

  4. #4
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Tu as donc une fonction de coût à minimiser, les paramètres étant le centre de la sphère et son rayon. Tu peux utiliser d'autres algos plus classiques qui convergent directement si tu utilises une fonction de coût quadratique tel Newton, ...

  5. #5
    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,

    la première partie est claire, mais pas la deuxième (mais j'avoue tourner un peu au ralenti).

    Par contre, tu parles de sphère, et non de cercle, donc le fait d'etre en 3D rendra les choses un peu plus compliqué.

    En tout cas :
    En fait j ai a ma disposition une liste de points (tous senses etre equidistants du centre de la sphere a + ou - les erreurs de mesure).
    Si c'est le cas, il est facile de trouver le centre : en faisant le barycentre des points. Puis pour le rayon, soit tu prends le rayon moyen, ce qui peut etre plutot bon, soit tu fais une sorte d'histogramme des distances entre les points et le barycentre, ce qui raffinera ta solution en tenant compte des erreurs de mesure.

    La meilleure solution, si tu as vraiment des erreurs de mesures est de faire une transformée de Hough : tu prends au hasard quatre points parmis ta liste et tu calcules le centre de la sphère passant par ces quatres points. Tu réitère cette méthode un grand nombre de fois et tu prend comme résultat, le centre qui est trouvé le plus souvent.
    Le souci sera alors de trouver le centre à partir de quatre points. Ca je sais tres bien le faire en 2D, mais pas en 3D
    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.

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 46
    Points : 25
    Points
    25
    Par défaut
    Bon je vais deja chercher des infos sur ce sujet.

    Je vais essayer de formuler differemment:
    je ne peux pas decrire toutes la sphere a travers mon mouvement. Du coup le nuage de points ne represente qu un pourcentage de la sphere. Pour faire l analogie 2D, c est un peux si tu devais trouver le centre du cercle, et le rayon a partir des points places sur un arc de 30° ( et non 360°). Est ce plus clair ?

  7. #7
    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
    Oui, c'est tres clair et tres faisable en 2D.

    La solution reste la meme en 3D, mais je ne sais pas comment trouver le centre d'une sphère passant par quatre points.
    dsl
    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.

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 46
    Points : 25
    Points
    25
    Par défaut
    As tu des liens expliquant ceci pour un cercle. Ca me ferait de bonnes bases deja.

    Mais du coup l algorithme du simplex ne te semble pas adapte ici ?

    Car je n ai pas precise, actuellement avec l algorithme utilise ca marche mais c est tres tres sensible. Du coup des fois, il me retourne des valeurs aberrantes ( du genre un centre en dehors de la sphere)...

  9. #9
    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,

    effectivement, je ne vois pas bien ce que le simplex ferait ici.

    Pour la 2D, je n'ai pas de doc, cela est assez évident :
    - Tu prends trois points se situant sur le cercle.
    - Tu calcules le centre du cercle passant par ces trois points. pour cela tu calcules l'intersection des médiatrices des segments formés par les trois points. Ce qui mathématiquement est simple.
    - Si tu as un taux d'erreur sur la position des points, tu réitère cela en prenant plusieurs séries de trois points et tu regardes quel est le centre qui apparait le plus souvent.

    Mais pour la 3D, l'intersection des normales au plan formé par trois points de marche pas.
    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.

  10. #10
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Dans le cas de points bruités et de plus de 4 points de manière générale, tu fais :
    - poser des paramètres arbitraires - genre centre (0,0,0) rayon 1 -
    - tu calcules l'erreur de reconstruction : norme(point - centre) - rayon
    - tu minimises cette erreur avec un algorithme simple style descente de gradient, Newton ou quasi-Newton.

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 46
    Points : 25
    Points
    25
    Par défaut
    Merci pour toutes ces infos,

    je vais continuer a potasser ca ce soir.

    Selon vous a quoi peu etre du un resultat aberrant dans l utilisation de l agorithme de la descente du simplexe ? Des fois ca marche, des fois ca marche pas et je me retrouve avec un centre et un rayon de sphere ne coincident pas du tout avec les points echantillones.

  12. #12
    Expert éminent sénior
    Avatar de Guigui_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2002
    Messages : 1 864
    Points : 10 067
    Points
    10 067
    Par défaut
    Je ne sais pas si je dis une bêtise, mais je pense que tu as aussi la possibilité de résoudre un système d'équation linéaire:
    C'est ce que j'utilise pour trouver l'équation d'une ellipse (en fait d'une conique) à partir d'un nuage de point. J'avais parfois le souci qu'il me trouvait plutôt une parabole ou une hyperbole ( car parfois il me manquait des points dans certaines régions). Je ne sais pas si pour une sphère/cercle il peut y avoir des soucis du même genre.
    En tout cas, il faudrait partir d'un équation linéaire du type
    x^2+y^2+z^2-2ax-2by-2cz+d = 0 (=> 4 inconnues a,b,c,d, (a,b,c) étant le centre de la sphère et d =a^2+b^2+c^2-r^2, ce qui permet ensuite de trouver le rayon) et autant d'équations que tu as de points dans ton nuage (par contre, est-ce qu'on trouve toujours une équation de sphère ?)
    http://www.developpez.net/forums/vie...110&highlight=

  13. #13
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Ton équation, c'est une équation de sphère, clairement il y a autant de paramètres que dans ma proposition
    D'ailleurs, si tu écris toutes les équations, tu verras que tu as un problème linéaire. La solution que j'ai proposé avec un optimiseur de Newton te trouve en 1 itération l'optimum de ce problème.

  14. #14
    Membre éclairé
    Inscrit en
    Juin 2005
    Messages
    644
    Détails du profil
    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2005
    Messages : 644
    Points : 754
    Points
    754
    Par défaut
    pour ce type de problème un moindre carré est tout indiqué

  15. #15
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Bonjour,

    Que penseriez vous d'une approche en 2 étapes ?

    Etape 1 :
    - on grouper les points par groupe de 4,
    - on cherche les centres des sphéres définies par chaque groupe,
    - on détermine le barycentre des centres ainsi obtenus, ce qui donne un centre prrovisoire.

    Etape 2 :
    - on élimine les points "aberrants" (situés à une distance anormale du centre provisoire),
    - on refait l'étape 1 pour trouver le centre définitif.
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  16. #16
    Membre averti Avatar de Rafy
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    415
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 415
    Points : 417
    Points
    417
    Par défaut
    Si c'est le cas, il est facile de trouver le centre : en faisant le barycentre des points.
    hum ça c'est pas vrai...
    Si tous les points sont par exemple compris dans une hemisphere, alors le barycentre des points ne donnera pas le centre....
    Première grosse démo en construction :
    http://bitbucket.org/rafy/exo2/

  17. #17
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Non, trop long. Les moindres carrés peuvent converger tout de suite avec une fonction quadratique telle que celle-ci !

  18. #18
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 46
    Points : 25
    Points
    25
    Par défaut
    Merci pour toutes ces idees... je suis en train de bosser dessus.

    Je me demande toujours pourquoi ca ne marche pas des fois avec le simplexe: pensez vous que cela peut etre du au point de depart ?

  19. #19
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Au fait, c'est quel simplexe que tu utilises ? Celui qu'on appelle aussi polytope : on prend un barycentre des meilleurs points, on regarde si c'est meilleur, ... et on le garde ?
    Normalement, il devrait converger. Si ce n'est pas le cas, c'est qu'il est pris dans un minimum local - peu probable vu la tête de la fonction de coût - ou que tu as mal défini ta fonction de coût.

  20. #20
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    940
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 940
    Points : 1 817
    Points
    1 817
    Par défaut
    Les forts en maths pourraient peut-être résoudre ce problème de cette façon.

    Si on a deux points distincts de la sphere, le centre est forcément sur le plan médiant du segment ayant ces deux points pour extrémité.

    Si on a un deuxième segment, on a deux plans, dont l'intersection est une droite où se trouve le centre.

    Un troisième segment donnerait un troisième plan, dont l'intersection avec la droite donne le centre.

    Attention aux cas particuliers! Par exemple si les trois segments sont les cotés d'un triangle, les trois plans se coupent en une même droite.

    Reste à poser les équations des plans à partir des positions des points, en déduire celles des intersections, mettre en place un test pour vérifier que l'on est pas dans un cas particulier.

    Je suis personnellement bien trop fainéant.

Discussions similaires

  1. Approximation d'une droite 3D à partir d'un nuage de points 3D
    Par appouch dans le forum Mathématiques
    Réponses: 2
    Dernier message: 28/09/2009, 14h12
  2. Réponses: 1
    Dernier message: 29/07/2009, 21h23
  3. Réponses: 0
    Dernier message: 27/11/2008, 12h05
  4. affichage d'une courbe a partir d'un tableau de point
    Par topzozo dans le forum Tkinter
    Réponses: 2
    Dernier message: 30/05/2007, 12h19
  5. Dessiner une courbe à partir d'un nuage de points
    Par Bil-Prog dans le forum Windows Mobile
    Réponses: 2
    Dernier message: 26/01/2007, 03h06

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