Toujours problème de perspective :-(
Bonjour,
je possède une image d'une grille plate (sur feuille) prise en photo. Seulement le plan de l'objectif n'étant pas forcément parallèle au plan de la feuille, j'aimerais pouvoir reconstruire la grille plate (telle que sur la feuille) à partir de l'image déformée par la perspective.
J'ai déjà posé la question auparavant, avec des réponses assez bien documentées, mais assez complexe, surtout vu le temps qui me reste à disposition.
J'admets que je peux connaître le couple (p,p'), p étant le point sur mon image déformée et p' celui correspondant sur la feuille. Est-il possible grâce à plusieurs couples de points appariés, de retrouver la matrice de transformation correspondante ?
En simplifiant (même si cela est pas possible, c'est juste pour que vous compreniez mon besoin), quelque chose comme ça :
Code:
1 2 3 4
|
p' = p*MatriceTransf;
MatriceTransf = p'/p; |
Sinon, grâce aux informations que me donne la perspective (point de fuite, angle,...) puis-je trouver dans un premier temps la position de l'appareil photo, et grâce à ça pouvoir retrouver les coordonnées 3D des points de ma grille (où y sera tjrs 0).
Merci de m'avoir lu jusque là et n'hésitez pas si vous avez des idées, des liens voire même des solutions.
Re: Toujours problème de perspective :-(
Citation:
Envoyé par gmonta
J'admets que je peux connaître le couple (p,p'), p étant le point sur mon image déformée et p' celui correspondant sur la feuille. Est-il possible grâce à plusieurs couples de points appariés, de retrouver la matrice de transformation correspondante ?
Sinon, grâce aux informations que me donne la perspective (point de fuite, angle,...) puis-je trouver dans un premier temps la position de l'appareil photo, et grâce à ça pouvoir retrouver les coordonnées 3D des points de ma grille (où y sera tjrs 0).
Merci de m'avoir lu jusque là et n'hésitez pas si vous avez des idées, des liens voire même des solutions.
De solutions, je n'en ai point, désolé !
Cependant, j'ai quelques remarques à faire.
Tout d'abord, je conteste que la transformation soit affine ! C'est tout à fait impossible. L'image prise par un appareil photo est une projection conique. Or si une transformation affine transforme un vecteur de l'espace AB en un vecteur sur l'image ab, elle transformera un vecteur de l'espace CD égal à AB en un vecteur de la photo cd qui sera égal à ab. Il est clair que ce n'est pas le cas pour une projection conique ! Les objets qui sont loin sont petits, ceux qui sont près sont gros : cela suffit à montrer qu'il ne s'agit pas d'une transformation affine.
En deuxième lieu, il est clair que puisqu'il s'agit d'une projection, si un point de l'espace n'a qu'une seule projection sur la photo, un point de la photo correspond au contraire à une infinité de points différents de l'espace : la transformation qui à tout point de l'espace à trois dimension associe son image dans la photo ne peut donc être inversible.
Cela dit, j'ai un résultat à te soumettre. Il se trouve que j'ai un peu étudié le problème pour réaliser des dessins en perspective conique à la main dans mon jeune temps (était-ce avant la guerre ou après ? Je suis sûr qu'il n'y avait pas de PC à cette époque !!!).
Si tu trouves trois points de fuite sur ta photo, correspondant à trois directions orthogonales de l'espace (avec les traits de la grille, tu devrais en trouver deux facilement, pour le troisième, c'est loin d'être évident !) - je les appelle X,Y et Z - alors le centre C de la projection (la position dans l'espace de l'appareil photo) est le point tel que CX est orthogonal à CY, chacun des deux vecteurs étant à son tour orthogonal à CZ. Le point C a pour projection orthogonale sur le papier le point qui est l'orthocentre (intersection des trois hauteurs) du triangle XYZ de ta photo. Une fois que tu as le point C, tu peux modéliser la transformation directe : celle qui a tout point de l'espace fait correspondre un point de la photo. Par contre pour opérer la transformation inverse, il faut trouver un moyen de trouver l'information manquante sans laquelle une infinité de points de l'espace correspondent à un point de ta photo : ça je ne sais pas comment faire !
C'est pourquoi j'ai dit au début, que je n'avais pas la solution !