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 :

Centre de gravité d'un nuage de points en 3D


Sujet :

MATLAB

  1. #1
    Membre à l'essai
    Inscrit en
    Septembre 2007
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 4
    Par défaut Centre de gravité d'un nuage de points en 3D
    Bonjour,

    Je suis intéressé par les formules dont Dut parles ici : Déterminer le centre de gravité d'une région d'intérêt (ROI) sur une image

    Mon souhait est de calculer le centre de gravité d'un nuage de points en 3D.
    Si tu peux m'apporter des précisions (assez précises d'ailleurs...), je t'en serais reconnaissant.

    Merci d'avance.

  2. #2
    Membre émérite
    Avatar de Kangourou
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    579
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 579
    Par défaut
    salut,

    pour le centre de gravite des points, c'est pas trop dur, tu fais la moyenne sur chaque coordonnée, et tu as le barycentre de tes points.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    points = rand(100, 3);
    xc = mean(points(:,1));
    yc = mean(points(:,2));
    zc = mean(points(:,3));
    centre = [xc yc zc];
    maintenant ton probleme est peut-etre plus complique ?

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 5
    Par défaut Attention quand même
    Le calcul de la moyenne des coordonnées donnera un centre de gravité lié à un ensemble discret de points, c'est à dire du vide partout, et un poid de 1 sur les points. En gros, si vous prenez un segment, constitué que de 2 points, aux extrémités, le cdg sera ma moyenne des coordonnées. Mais si il est décrit par plusieurs points, et que vous cherchez le centre de gravité du segment = milieu constitué d'une infinité de points, cela ne sera pas correct si la densité linéique de point le décrivant est non homogène.

    Par exemple, j'ai un baton décrit par un point à chaque extrémité, et je connais un point à droite proche de son extrémité, si vous faites la moyenne des coordonnées des 3 points, le point trouvé sera du côté ou il y a les 2 points !

    Pour conclure, si c'est le cdg des quelques points que vous cherchez, prenez la moyenne des coordonnées (sela suppose que chaque point a la même "masse"). Mais si vous cherchez le cdg d'un milieu continu, décrit par un ensemble de points connus, mais où il doit y avoir de la matière entre ces points, alors surtout ne pas prendre la moyenne. Le résultat ne sera pas exact, sauf si par chance les points que vous avez sont distribués uniformément, d'une manière organisée (dans le cas du baton, si il y a un point au milieu (sur le cdg), un point à chaque extrémité, et des points autre part de sorte qu'ils soient distribués symétriquement par rapport au centre du bâton, alors ca marche, certes)

    Mais dans le cas de la question posée, sur le calcul du cdg d'ine image, c'est faux de calculer la moyenne des coordonnées des points... Mais une méthode serait de mettre beaucoup de points, bien répartis uniforméments, alors on se rapprocherait de la solution, sans qu'elle soit exacte. Sinon, chercher sur internet !

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 5
    Par défaut Centre de gravité d'un milieu continu 2D décrit par un maillage tétraédrique
    Il suffit pour ce faire de calculer pour chaque triangle du maillage, la "masse" de celui ci en son centre de gravité, qui lui est connu. Ensuite, utilser les formules de barycentre sur un ensemble de points discrets, comme décrit précédemment, mais la attention avec des poids différents (aires des triangles).
    Si vous avez une liste de coorconnées de N noeuds nommée XY_Noeud, de taille N lignes 2 colonnes (x et y) et une liste de M numéros de noeuds des triangles nommée Tri (3 colonnes, pour chaque triangle du maillage, chaque colonne est le numéro de noeud d'un des 3 sommets).

    Alors sous matlab, voici le code utilisable:

    appel de la fonction: B_calcul_cdg(XY_Noeud,Tri)

    Création de la fonction:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    function [ CDG ] = B_calcul_cdg( XY_Noeud_func ,  Tri_func )
        Poids_Tot = 0;
        Somme = 0;
        for i_func = 1:size(Tri_func,1)
            Noeud_1 = Tri_func(i_func,1);
            Noeud_2 = Tri_func(i_func,2);
            Noeud_3 = Tri_func(i_func,3);
            X_1 = XY_Noeud_func(Noeud_1,1);
            Y_1 = XY_Noeud_func(Noeud_1,2);
            X_2 = XY_Noeud_func(Noeud_2,1);
            Y_2 = XY_Noeud_func(Noeud_2,2);
            X_3 = XY_Noeud_func(Noeud_3,1);
            Y_3 = XY_Noeud_func(Noeud_3,2);
            Pt_1 = [X_1;Y_1];
            Pt_2 = [X_2;Y_2];
            Pt_3 = [X_3;Y_3];
            CDG_Tri = (Pt_1 + Pt_2 + Pt_3) / 3;
            Vect_1 = Pt_2 - Pt_1;
            Vect_2 = Pt_3 - Pt_1;
            Aire_Tri = abs((Vect_1(1)*Vect_2(2)-Vect_1(2)*Vect_2(1))/2);
            Somme = Somme + Aire_Tri*CDG_Tri;
            Poids_Tot = Poids_Tot + Aire_Tri;
        end
        CDG = Somme/Poids_Tot;
        clear Noeud_1 Noeud_2 Noeud_3 X_1 Y_1 X_2 Y_2 X_3 Y_3 Pt_1 Pt_2 Pt_3
        clear CDG_Tri Vect_1 Vect_2 Poids_Tot Somme
    end
    A plus

  5. #5
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 317
    Par défaut
    La question initiale est :
    Citation Envoyé par Tresmarcos Voir le message
    calculer le centre de gravité d'un nuage de points en 3D.
    La réponse de Kangourou est donc la bonne.

    Il n'est mentionné nul part que le nuage de point est ordonné ni qu'il est pondéré par des poids différents sur chaque point.

    Maintenant, si effectivement le nuage de points correspond à un objet physique (donc ordonné et pondéré), alors la solution n'est pas la bonne... mais c'est (était ?) à Tresmarcos de nous en dire plus à ce sujet.

    Enfin, la solution que tu donnes en dernier suppose d'avoior un nuage ordonné (ici par une triangulation)

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 5
    Par défaut D'accord
    Coucou
    Je suis d'accord avec toi, j'ai supposé que le fait de partir d'une image voulait dire que c'était un objet réel.
    Ensuite, le nuage n'a pas a être ordonné au sens de la position des points du maillage, il suffit (et il faut par contre) créer les triangles, là c'est claire que si ce n'est pas fait, il y a un petit travail.
    Mais on obtient alors le CDG physique de l'objet matériel représenté par des points sur une image.
    Merci pour ta réponse.
    A bientôt

Discussions similaires

  1. Réponses: 2
    Dernier message: 20/06/2012, 12h00
  2. Equation d une sphere a partir d un nuage de points
    Par MDiabolo dans le forum Algorithmes et structures de données
    Réponses: 27
    Dernier message: 05/05/2006, 16h40
  3. nuages de points sont-ils dans une zone??
    Par smedini dans le forum Algorithmes et structures de données
    Réponses: 26
    Dernier message: 21/02/2006, 11h01
  4. interpolation couleur entre nuage de points
    Par soubre dans le forum OpenGL
    Réponses: 2
    Dernier message: 02/07/2005, 15h52
  5. Rotation d'un rectangle autour du centre de gravité
    Par bucheron dans le forum Algorithmes et structures de données
    Réponses: 13
    Dernier message: 22/06/2004, 11h01

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