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 :

Estimation de l'orientation d'un carré par rapport à la caméra


Sujet :

Traitement d'images

  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Juillet 2002
    Messages
    705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 705
    Points : 393
    Points
    393
    Par défaut Estimation de l'orientation d'un carré par rapport à la caméra
    Bonjour,

    en math j'ai un niveau lycée ce qui fait que j'ai du mal à comprendre les histoires de matrice dans ce genre de problématique.

    J'arrive à détecter les bords d'un carré avec ma webcam. J'essai de trouver l'orientation du carré à partir des coordonnées des 4 sommets.

    Je suis dans le cas d'une projection perspective.

    J'essai d'utiliser les points de fuites.

    Pour un carré de sommets A B C D, je calcul pour deux cotés parallèles (eg [AB] et [DC]) les plans OAB et ODC avec O le centre du repèce de la caméra.

    Pour OAB j'obtiens le vecteur normal Noab; puis de même pour ODC Nodc.

    Est-ce qu'il est juste de dire que la direction du point de fuite c'est le produit vectorie de Noab ^ Nodc.

    Je fais mes calculs et ma représentation 3D avec ThreeJS. J'ai un résultat très approximatif. du coup j'ai des doutes sur ma logique.

  2. #2
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 057
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 057
    Points : 9 397
    Points
    9 397
    Par défaut
    Est-ce qu'il est juste de dire que la direction du point de fuite c'est le produit vectoriel de Noab ^ Nodc.

    Question 1 : c'est quoi le point de fuite ? C'est le point où les droites AB et CD se rejoignent ?
    Remarque 2 : Si j'ai une direction D trouvée par un certain calcul, et un point P donné, oui, le point P est dans la direction D, toujours. Il suffit de choisir un point de départ bien choisi pour que en partant dans la direction D, on arrive à ce point P.
    Autrement dit : ta question est bizarrement formulée.

    On a le plan OAB, le plan OCD. Ils se croisent en formant une droite D', parallèle au plan du carré ABCD.
    Tu as tes 2 vecteurs normaux aux 2 plans,
    Tu as ton produit vectoriel, qui donne un autre vecteur.
    Et la droite D' est bien parallèle à ce vecteur.

    Donc oui, le point de fuite est sur la droite partant de O et parallèle à ton produit vectoriel.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  3. #3
    Membre émérite

    Homme Profil pro
    Formation: Chimie et Physique (structure de la matière)
    Inscrit en
    Décembre 2010
    Messages
    1 333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 77
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Formation: Chimie et Physique (structure de la matière)
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 333
    Points : 2 570
    Points
    2 570
    Billets dans le blog
    9
    Par défaut Estimation de l'orientation d'un carré par rapport à la caméra
    Bonjour,

    Il s'agit d'un problème difficile que tu rends insoluble pour deux raisons rédhibitoires:

    1°) Tu ne fais aucune distinction entre l'objet géométrique - le carré (A0B0C0D0), dont le centre (O0) est supposé fixe - et son image (ABCD) située dans le plan focal image de l'objectif, orienté par le repère (xOy), l'origine (O) correspondant au foyer principal image (ordinairement noté F') de l'objectif.
    La figure image n'est pas un carré, car tu précise bien qu'il s'agit d'une projection en perspective, et tu évoques la présence de points de fuite.
    Nom : Points de fuite.png
Affichages : 62
Taille : 9,9 Ko

    2°) Tu ne donnes aucune indication concernant les repères employés, indispensables à la définition des positions des points.
    L'orientation spatiale de l'objet pouvant être modifiée par rotation, il faut utiliser un repère fixe orthonormé (O0x0y0z0) dont le troisième axe (z'0z0) correspond à l'axe optique de l'objectif; sur cet axe se trouve le centre optique (K) - on suppose pour simplifier l'objectif de la caméra assimilable à une lentille mince.
    Nom : Repères.png
Affichages : 67
Taille : 12,3 Ko
    Il intervient un repère secondaire (Oxyz) se déduisant simplement du précédent par une translation de vecteur (O0O); les axes ((z'0z0) et (z'z)) restent confondus, et l'origine (O) est l'image de (O0).

    La transformation envisagée est une projection centrale de centre (K), qui donne lieu à des calculs très lourds; les sommets du carré ne restent pas dans le plan initial (x0O0y0) normal à l'axe optique, de sorte qu'il faut faire intervenir la profondeur (L = O0K): la transformation ne conserve ni le parallélisme des segments ni les rapports de longueur, mais seulement l'alignement des points.

    Tout se simplifie radicalement lorsque la caméra s'éloigne à l'infini (L >> KO , focale de l'objectif): l'image devient alors un parallélogramme (AB = CD , BC = DA) dont les diagonales se coupent en leur milieu (OA = OC , OB = OD); les cotes des points objets devenant négligeables (|(z0| << D), la transformation se réduit à une projection orthogonale sur le plan focal (xOy), suivie d'une homothétie de rapport r = KO/O0K; on peut laisser tomber cette dernière dans la mesure où l'image est représentée à une échelle arbitraire.


    Le français, notre affaire à tous
    Grand Dictionnaire Terminologique

  4. #4
    Membre émérite

    Homme Profil pro
    Formation: Chimie et Physique (structure de la matière)
    Inscrit en
    Décembre 2010
    Messages
    1 333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 77
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Formation: Chimie et Physique (structure de la matière)
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 333
    Points : 2 570
    Points
    2 570
    Billets dans le blog
    9
    Par défaut Estimation de l'orientation d'un carré par rapport à la caméra
    En ce qui concerne la rotation du carré autour de son centre, l'orientation spatiale de la figure est caractérisée par deux vecteurs:
    a) le vecteur position de l'un des sommets, par ex. le premier: rA0 = OA0 ;
    b) le vecteur unitaire normal au carré N = (1/║p║).p
    exprimé à partir de l'un des 4 produits vectoriels: p = O0A0×O0B0 = O0B0×O0C0 = O0C0×O0D0 = O0D0×O0A0 .

    La rotation de l'objet autour de son centre (O0) résulte de la composition de 3 mouvements élémentaires:
    - le basculement de la normale (N) par rapport à sa direction initiale (z'0z0) (nutation, d'angle θ );
    - la rotation de (N) autour de (z'0z0) (précession, d'angle ψ);
    - la rotation du carré autour de (N) (rotation propre, d'angle φ).
    Il faut donc faire intervenir les angles d'Euler; le recours aux matrices simplifie le formalisme des changements de repère, mais ne constitue pas un obstacle incontournable dans le cas de ton projet de programmation ... Tu risques cependant d'être conduit à des calculs assez lourds - mais il ne faut pas renoncer.

    Les articles traitant des angles d'Euler abondent sur la Toile; l'essentiel est d'en trouver la présentation la plus abordable.

    Dans le cas simple d'une caméra très éloignée (L >> KO), les images (A, B, C, D) des 4 sommets se déplacent sur une ellipse de centre (O), d'inclinaison et d'excentricité variables.

    https://fr.wikipedia.org/wiki/Angles_d%27Euler
    https://phyanim.sciences.univ-nantes...que/euler1.php
    https://mathworld.wolfram.com/EulerAngles.html
    https://jeux.developpez.com/faq/math...formations#Q45

    PS: Le maintien de la notation, greffée sur ce qui était initialement écrit, me paraît intenable dans la mesure où il faut distinguer tout point objet de son image, mais aussi de ses nombreuses positions successives (les rotations en produisent trois !).
    Je crois qu'il vaut mieux noter:
    # (ABCD) le carré initial dans une position quelconque,
    # (A0, A1, A2, ... etc) les positions successives des sommets après chaque rotation,
    # (EFGH) l'image correspondante.


    Le français, notre affaire à tous
    Grand Dictionnaire Terminologique

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Juillet 2002
    Messages
    705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 705
    Points : 393
    Points
    393
    Par défaut
    Bonjour,

    je vous remercie d'avoir pris le temps de répondre à ma question.

    Je ne m'attendais pas à des réponses aussi élaborée.

    Effectivement ma question était pauvre en formalisme.

    J'arrive bien à calculer les angles d'Euler relatif à la Caméra pour mon objet.

    Mon nouveau problème est que la reconnaissance des coins du carré avec la Webcam a une incertitude de 1 ou 2 pixels, à chaque
    prise d'image, même si la Webcam ne bouge pas. Lorsqu'on calcul l'orientation du carré à l'aide des coins du carré (en utilisant les points de fuite), l'incertitude fait qu'on a l'impression que le carré "vibre sur ses axes".
    Pour résoudre ce problème j'essai d'implémenter un filtre de Kalman sur les angles d'Euler. Voir prochain thread. Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Position écran par rapport à la caméra en opengl 3D
    Par AlfredKr dans le forum OpenGL
    Réponses: 3
    Dernier message: 14/03/2018, 12h02
  2. Déplacer un objet par rapport à sa caméra
    Par Alays dans le forum OpenGL
    Réponses: 4
    Dernier message: 21/01/2013, 21h34
  3. Desaxé le centre du manipulateur par rapport à la caméra
    Par Y-not dans le forum OpenSceneGraph
    Réponses: 2
    Dernier message: 11/05/2012, 10h01
  4. remplacement carré par ; dans un fichier excel crée par une macro
    Par om51ft dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 22/11/2007, 16h00
  5. calcul de la racine carrée par la méthode de Newton
    Par annoussa dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 02/11/2006, 11h10

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