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

Traitement d'images Discussion :

Projection d'un ensemble des points 3D sur un Plan 2D


Sujet :

Traitement d'images

  1. #1
    Membre éclairé
    Inscrit en
    Juin 2007
    Messages
    453
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 453
    Par défaut Projection d'un ensemble des points 3D sur un Plan 2D
    Bonjour,
    S'il vous plaît j'ai un ensemble des points 3d (ayant les coordonnées (x,y,z)).
    Je dois projeter ces ensembles des points sur un plan qui sera définie à partir d'un normal.
    En faite j'ai comme données le normal de ce plan, à partir de ce normal je doit tout d'abord déterminer le plan qui lui associe et qui passe par le point départ de ce plan puis faire projeter un ensemble de points 3D sur ce plan.
    Je travaille sur matlab.
    Toute information sera le bien venue et merci d'avance

  2. #2
    Membre expérimenté
    Inscrit en
    Mars 2008
    Messages
    209
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 209
    Par défaut
    c'est simple : la projection est orthogonale il suffit de résoudre le système pour lequel OM est parallèle à N où N est le vecteur normale et est le point en question de coordonnées ( X0, Y0,Z0)... et M est un point du plan de normale N
    ps : désolé j'ai dis quelques bêtises ... mais pour te dire un plan nécessite une normale et un point !!!

  3. #3
    Membre éclairé
    Inscrit en
    Juin 2007
    Messages
    453
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 453
    Par défaut
    Citation Envoyé par benDelphic Voir le message
    c'est simple : la projection est orthogonale il suffit de résoudre le système pour lequel OM est orthogonal à N où N est le vecteur normale et est le point en question de coordonnées ( X0, Y0,Z0)... et M est un point du plan de normale N
    le produit vectoriel doit etre nul ( orthogonal )
    Pouvez-vous éclaircir encore plus, je suis encore novice dans ce domaine.


    Merci d'avance.

  4. #4
    Membre expérimenté
    Inscrit en
    Mars 2008
    Messages
    209
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 209
    Par défaut
    le point O( X0,Y0,Z0) est le point à projeter
    le vecteur N s'écris (n0,n1,n3); soit le point M le point obtenu par projection orthogonale de O sur un plan de normale N . le vecteur OM est ( X-x0,Y-Y0,Z-Z0) ... et d'après la définition OM parallèle à N ie OM = k N

  5. #5
    Membre éclairé
    Inscrit en
    Juin 2007
    Messages
    453
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 453
    Par défaut
    il semble que t'a pas compris le problème:
    Tout d'abord comment je peux déterminer le plan à partir d'un normal et un point ?

    Puis comment faire la projection des points 3d dans l'espace sur ce plan ?

    J'espère que c'est plus clair maintenant

  6. #6
    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 : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Citation Envoyé par fraisa1985 Voir le message
    Tout d'abord comment je peux déterminer le plan à partir d'un normal et un point ?
    Voila, c'est fait. Un vecteur normal N et un point de passage A déterminent totalement un plan.

    Mais je suppose que tu cherches l'équation cartésienne du plan.

    Vecteur normal : N (n1,n2,n3)
    Point de passage : A (a1,a2,a3)
    Equation du plan : n1.x + n2.y + n3.z - (n1.a1 + n2.a2 + n3.a3) =0

    Puis comment faire la projection des points 3d dans l'espace sur ce plan ?
    La solution proposée par benDelphic fonctionne, bien que je préfère passer par les matrices de projection.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  7. #7
    Membre éclairé
    Inscrit en
    Juin 2007
    Messages
    453
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 453
    Par défaut
    Citation Envoyé par pseudocode Voir le message
    Voila, c'est fait. Un vecteur normal N et un point de passage A déterminent totalement un plan.

    Mais je suppose que tu cherches l'équation cartésienne du plan.

    Vecteur normal : N (n1,n2,n3)
    Point de passage : A (a1,a2,a3)
    Equation du plan : n1.x + n2.y + n3.z - (n1.a1 + n2.a2 + n3.a3) =0



    La solution proposée par benDelphic fonctionne, bien que je préfère passer par les matrices de projection.
    Je vous remercie pour votre réponse, mais comment passer par les matrices de projection ?
    Merci d'avance
    Je suis désolé pour la duplication

  8. #8
    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 : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Citation Envoyé par fraisa1985 Voir le message
    Je vous remercie pour votre réponse, mais comment passer par les matrices de projection ?
    Hum... c'est difficile de résumer ça en quelques lignes. Pour faire simple, commence par passer par les projections vectorielles:

    Admettons un plan est défini par un point A et un vecteur normal N.
    Soit (U,V,N) une base ortho (donc U et V sont dans le plan).

    Soit un point P quelconque. Si on écrit le vecteur AP sur cette base, on obtient

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ->      ->     ->     ->
    AP = c1.U + c2.V + c3.N
    Pour trouver le projeté ortho de ce vecteur sur le plan, il suffit d'annuler la composante sur N, ce qui nous laisse effectivement avec les 2 composantes sur U,V qui sont dans le plan.

    P' le projeté de P sur le plan est donc tel que :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ->               ->         ->     ->     ->      ->
    AP' = projection(AP)  =  c1.U + c2.V   =  AP - c3.N
    Reste a calculer c3, ce qui se fait facilement par le produit scalaire :

    c3 = <AP,N> / <N,N> = <AP,N> / norme²(N)

    Et voila:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ->    ->      -> ->              -> 
    AP' = AP - ( <AP,N> / norme²(N)).N
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  9. #9
    Membre éclairé
    Inscrit en
    Juin 2007
    Messages
    453
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 453
    Par défaut
    Citation Envoyé par pseudocode Voir le message
    Hum... c'est difficile de résumer ça en quelques lignes. Pour faire simple, commence par passer par les projections vectorielles:

    Admettons un plan est défini par un point A et un vecteur normal N.
    Soit (U,V,N) une base ortho (donc U et V sont dans le plan).

    Soit un point P quelconque. Si on écrit le vecteur AP sur cette base, on obtient

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ->      ->     ->     ->
    AP = c1.U + c2.V + c3.N
    Pour trouver le projeté ortho de ce vecteur sur le plan, il suffit d'annuler la composante sur N, ce qui nous laisse effectivement avec les 2 composantes sur U,V qui sont dans le plan.

    P' le projeté de P sur le plan est donc tel que :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ->               ->         ->     ->     ->      ->
    AP' = projection(AP)  =  c1.U + c2.V   =  AP - c3.N
    Reste a calculer c3, ce qui se fait facilement par le produit scalaire :

    c3 = <AP,N> / <N,N> = <AP,N> / norme²(N)

    Et voila:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ->    ->      -> ->              -> 
    AP' = AP - ( <AP,N> / norme²(N)).N
    Je vous remerie infinement pour votre réponse.
    Juste un petit question s'il vous plaît, <AP,N> c'est le norme ou quoi exactement ?
    et comment vous avez déduit le calcul de c3 s'il vous plaît ?

  10. #10
    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 : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Citation Envoyé par fraisa1985 Voir le message
    Je vous remerie infinement pour votre réponse.
    Juste un petit question s'il vous plaît, <AP,N> c'est le norme ou quoi exactement ?
    et comment vous avez déduit le calcul de c3 s'il vous plaît ?
    <T,S> c'est le produit scalaire des deux vecteurs T et S. Le calcul de c3 vient d'une propriété du produit scalaire : le résultat est le produit de la norme de l'un par la distance algébrique de la projection du second.

    Enfin bon, l'essentiel c'est que ca marche.

    A partir de la formule donnée ci-avant, on peut faire intervenir le point O (0,0,0) dans les vecteurs AP = AO+OP et AP' = AO+OP'.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    -> ->    -> ->      -> -> ->              -> 
    AO+OP' = AP+OP - ( <AO+OP,N> / norme²(N)).N
     
    ->    ->      -> ->    -> ->                ->
    OP' = OP - ((<AO,N> + <OP,N>) / norme²(N)) .N
    Ce qui nous permet d'avoir directement les coordonées de P (car le vecteur OP à les memes coordonnées que le point P).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    P' = P - ((<AO,N> + <OP,N>) / norme²(N)) .N
    et en reprenant les conventions de nommage du post #6 et P(p1,p2,p3):

    <AO,N> = n1.(-a1) + n2.(-a2) + n3.(-a3)
    <OP,N> = n1.p1 + n2.p2 + n3.p3
    norme²(N) = a1² + a2² + a3²

    Si tu développes les formules pour les 3 composantes de P', tu arrives a une formulation sympathique de l'operateur de projection sous forme matricielle. C'est ce dont je parlais dans mon 1er post.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  11. #11
    Membre éclairé
    Inscrit en
    Juin 2007
    Messages
    453
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 453
    Par défaut
    Mercie beaucoup, mais franchement j'ai pas encore compris comment vous avez déduit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    c3 = <AP,N> / <N,N> = <AP,N> / norme²(N)
    Je suis encore novice, don s'il vous plaît essai de me faire comprendre pas par pas .
    Merci d'avance

  12. #12
    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 : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Citation Envoyé par fraisa1985 Voir le message
    Mercie beaucoup, mais franchement j'ai pas encore compris comment vous avez déduit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    c3 = <AP,N> / <N,N> = <AP,N> / norme²(N)
    Oh. Ca c'est tout simple.

    Comme on a posé que le vecteur AP = c1.U + c2.V + c3.N, alors :

    <AP , N> = <c1.U + c2.V + c3.N , N>

    Avec les propriétés du produit scalaire on obtient :

    <AP , N> = c1.<U,N> + c2.<V,N> + c3.<N,N>

    Or, comme U,V,N sont orthogonaux entre eux, on a <U,N>=0 et <V,N>=0. Et donc :

    <AP , N> = c3.<N,N>

    d'où:

    c3 = <AP , N> / <N,N>
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 24
    Par défaut
    Par curiosité, pour quelle raison à tu besoin de projeter des points 3D sur un plan ?
    Je me demande car j'avais besoin de faire exactement l'inverse le plan 2D étant une image.

    Si tu ne peux pas le dire c'est pas grave, j'irai voir ailleurs si j'y suis.

  14. #14
    Membre éclairé
    Inscrit en
    Juin 2007
    Messages
    453
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 453
    Par défaut
    Citation Envoyé par Froooom Voir le message
    Par curiosité, pour quelle raison à tu besoin de projeter des points 3D sur un plan ?
    Je me demande car j'avais besoin de faire exactement l'inverse le plan 2D étant une image.

    Si tu ne peux pas le dire c'est pas grave, j'irai voir ailleurs si j'y suis.
    Non sans aucun problème, en faîte le but de ce forum est partagé des idées... pour le mieux de tous.
    En faîte je ne trouve pas une méthode de comparaison des courbes 3d qui sera invariant par rapport aux points de départs... C'est pour cela j'été obligé de le projeté en 2D pour que je puisse utiliser la méthode de descripteur de Fourier.

Discussions similaires

  1. Concave Hull sur des points placés sur une grille
    Par nicolas_vp dans le forum Traitement d'images
    Réponses: 2
    Dernier message: 05/10/2012, 16h43
  2. [Débutant] détecter des points particuliers sur une image en couleur
    Par neophyte66 dans le forum Images
    Réponses: 1
    Dernier message: 04/10/2012, 15h44
  3. projection de points 3D sur un plan
    Par laurencew dans le forum Développement 2D, 3D et Jeux
    Réponses: 10
    Dernier message: 01/02/2012, 17h12
  4. affiher des points dynamiques sur une interface
    Par freddy000 dans le forum NetBeans
    Réponses: 0
    Dernier message: 19/11/2010, 11h04
  5. Récupérer l'ensemble des points d'une droite
    Par Psycho_Kwak dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 18/01/2006, 11h42

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