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

MATLAB Discussion :

Diamètre d'un cercle


Sujet :

MATLAB

  1. #1
    Membre régulier Avatar de Décembre
    Inscrit en
    Avril 2010
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 277
    Points : 110
    Points
    110
    Par défaut Diamètre d'un cercle
    Bonjour,

    Est-ce qu'il y a un moyen qui permet de calculer le diamètre d'un cercle sur un plot3 (comme dans la figure jointe)

    merci d'avance
    Images attachées Images attachées  

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Une manière serait d'utiliser l'équation d'un cercle:
    (x-xo)² + (y-yo)² + (z-zo)² = R²
    On obtient dans un premier temps le centre du cercle en calculant le centre de gravité des points:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Centre = sum([x(:) y(:) z(:)])/NbPoints
    Puis il suffit d'appliquer l'équation:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Diametre = 2*sqrt(mean((x-Centre(1)).^2 + (y-Centre(2)).^2 + (z-Centre(3)).^2))

  3. #3
    Membre régulier Avatar de Décembre
    Inscrit en
    Avril 2010
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 277
    Points : 110
    Points
    110
    Par défaut
    Bonsoir et merci pour votre réponse,


    Comme vous pouvez le constater sur la figure il y a des points qui sont loin du cercle, c'est des faux positifs si on veut, alors je me demande s'il y a une fonction telle que regioprops(avec option equivdiameter) qui détecte automatiquement le cercle ?

    J'ai pensé à calculer la distance entre le centre du cercle et les autres points, et mettre un seuil mais je pense que c'est une mauvaise idée alors je cherche mieux.

    Merci encore d'avoir pris la peine de me répondre c'est gentil de votre part

  4. #4
    Invité
    Invité(e)
    Par défaut
    Tu peux peut-être regarder la fonction kmeans...

  5. #5
    Membre éprouvé
    Inscrit en
    Août 2010
    Messages
    1 124
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 1 124
    Points : 1 277
    Points
    1 277
    Par défaut
    Bonjour,

    Le problème de kmeans est qu'elle risque d'exploser ton cercle selon la répartition des tes points. Autant le cluster correspondant au cercle est homogène, autant pénaliser par l'inertie intra-classe des outlyers (ton second cluster, i.e les points hors du cercle) n'est pas pertinent.

    j'imagine plusieurs solutions théoriques (isodensité ou quantile en dimension 2) qui nécessitent l'estimation non paramétrique de la densité et qui seront donc longues et fastidieuses.

    Note que si tu connaissais le centre du cercle, ca serait du gateau. On peut donc imaginer une méthode de détection intuitive qui essaye de le placer au mieux. Je note M le maximum des distances entre 2 points quelconques:
    1/ Tu pars d'un point au hasard C (disons le barycentre de 2 points tirés au hasard dans l'échantillion)
    2/ Tu prend une grille (0:dr:M) et tu calcules le nombre de points situés à une distance au plus r du point C. Le rayon le plus vraisemblable est celui présentant le saut le plus fort entre 2 valeurs consécutives. Cela te donne une valeur R
    3/ Tu restreins l'échantillon aux points R-dr< D(x,C) < R. Tu prends C= leur barycentre et tu recommence l'étape 2.
    4/ Tu itères 1-3 pour plusieurs points initiaux C, et au final tu retiens le couple (C,R) qui place le plus de points dans un plus petit dr.

    C'est clairement pas optimal (entre O(N^2) et O(N^3)), mais si ton échantillon est assez petit, ca devrait te donner une première solution pas trop dure à coder.

    Si ca ne tourne pas assez vite, il faut que tu optimises directement un critère équivalent via une descente de gradient, ou que tu ailles voir du coté de l'apprentissage statistique (classif. évoluée, Support Vecteur Machine, réseau de Neurone etc), il doit bien exister une solution théorique à ton problème.

Discussions similaires

  1. Réponses: 3
    Dernier message: 23/04/2013, 17h58
  2. Modification du diamètre d'un cercle grace a un Scale
    Par darioo2 dans le forum Tkinter
    Réponses: 9
    Dernier message: 13/03/2011, 21h45
  3. Augmenter la diamètre d un cercle
    Par nypahe dans le forum Débuter
    Réponses: 3
    Dernier message: 06/07/2009, 19h07
  4. [VB6] [Graphisme] Arc de cercle dans un picturebox
    Par SpaceFrog dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 04/11/2002, 17h55
  5. savoir si 1 point est a l'intérieur d'un cercle ...
    Par skarladevobsy dans le forum Algorithmes et structures de données
    Réponses: 15
    Dernier message: 23/05/2002, 18h14

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