Evaluations de distances après géométrie projective

Réponses à toutes vos questions après le Bac (Fac, Prépa, etc.)
toussa
Messages: 3
Enregistré le: 21 Nov 2011, 11:09

Evaluations de distances après géométrie projective

par toussa » 21 Nov 2011, 11:17

Bonjour,

J' aimerai à terme faire un outil informatique permettant de connaitre la hauteur (approximative) de bâtiments à partir d'une image mais pour le moment j' ai quelques problèmes au niveau mathématiques.

Voici l'image qui me servira d'aide pour vous expliquer mon problème:
Image

Je souhaite qu' à partir de cette image, et en renseignant quelques informations, exprimer la hauteur du bâtiment AD ou BC] (par rapport à la longueur AB par exemple, puisqu' il n' y a pas d' unités. Donc un ratio du style AB/CB)

La personne devra cliquer pour définir la zone de la façade du bâtiment (points A, B, C et D).

Donc voila, le but étant de savoir ce ratio sans connaitre d'informations sur la position de "l' oeil", sa focale ou autre...
Si le système manque d'informations, la personne pourra en rajouter par exemple en rajoutant à la main d'autres points (E et F) tels que (EB) perpendiculaire à (AB) et (BC) et idem pour F. Ce n'est qu'un exemple sur les informations qu'un "humain" pourrait apporter.

A la fin, en estimant la longueur de la base du bâtiment AB, et en définissant des points qui rajoutent de l'information, le programme lui donnera la hauteur approximative.

Là, sur la photo par exemple, on peut en déduire:
(DC) // (AB) // (EF)
(AB) perpendiculaire à (BC), (BE), (AD), (AF)
on connait la longueur (réelle) AB (qu' on fixera par exemple).
Et bien sûr, on connait les longueurs en pixels, et les angles sur l'image.

Intuitivement, je pense qu' il y a assez d'informations pour retrouver ce ratio, et même que les points E et F ne sont pas forcément nécessaires. Mais s'il en manque, lesquelles? et existe-t-il un moyen de les renseigner à partir de la photo? (sans focale, etc..)

J'ai essayé de partir de la projection perspective et essayer de retrouver la matrice de projection mais je ne m'en sors pas trop... Mais je me dis que c'est juste la distance réelle entre les points B et C en 3D, et non retranscrire tous les points 2D en 3D (sans la notion de profondeur bien sûr), donc connaitre entièrement la matrice de projection n'est peut être pas nécessaire...

Merci beaucoup pour votre aide! :lol3:



Dlzlogic
Membre Transcendant
Messages: 5273
Enregistré le: 14 Avr 2009, 13:39

par Dlzlogic » 21 Nov 2011, 13:06

Bonjour,
Si j'ai bien compris, le document d'origine est une photographie. Une photographie répond à des lois de perspective. Avant toute chose, il faut redresser la photo. Avec une seule photographie, il faut que l'objet photographié soit plan, par exemple une façade de bâtiment.
Ensuite, pour obtenir une distance, il faux ce qu'on appelle la mise à l'échelle, ça veut dire, en gros, quelle distance représente un pixel en hauteur et en largeur.
Il est bien évident que votre image ne devra pas avoir été "trafiquée" avec des outils de traitement d'image.
Petite question : dans quel contexte vous voulez faire ce développement informatique, loisir, universitaire, professionnel?

toussa
Messages: 3
Enregistré le: 21 Nov 2011, 11:09

par toussa » 21 Nov 2011, 16:33

Bonjour Dlzlogic,
Oui, c' est bien de photographies qu' il s'agit, non traitées (venant directement d' un même appareil photo).

Redresser l' image ne ferait-il pas perdre d'informations pour retrouver les distances? Cela changerait les angles et distances (en pixels) sur l' image et il serait donc plus difficile(impossible?) de retrouver le rapport des distances réelles, non?

Sinon je compte simplifier le problème à un facteur d'échelle près, pour éviter certains calculs et connaissances requises comme la focale par exemple, ou autre. Ce que je cherche surtout c'est de connaitre le rapport entre la vraie hauteur du bâtiment et la vraie longueur, peu importe l’ échelle.

Voilà mon cheminement pour le moment:
C'est une projection perspective suivie d'une transformation caméra/image.
En coordonnées homogènes et sous forme matricielle, on a:

(u,v,s) = K*P*(x,y,z,s) avec:
K la matrice homogène de la transformation caméra/image,
P la matrice de projection perspective,
u et v les coordonnées images du point (x,y,z) en 3D.

seulement, à partir d' ici je n' arrive pas à passer à l' étape suivante qui me permettrai de calculer la hauteur :triste:
Si j' inverse la transformation, donc si (K*P) est inversible:
(x,y,z,s) = inv(K*P) *(u,v,s).

Avec une seule image (= un seul point de vue) je perd l' information de profondeur mais de toute façon, étant donné que je veux juste une distance, je n' en ai pas vraiment besoin, si ?
Et si je pars bien dans la bonne direction, les points et les angles extrapolés à partir de la photographie me permettront normalement de trouver la transformation (K*P) il me semble!?!

Le script que j' aimerai faire entre dans le cadre de mon stage de fin d'études, mais si je tiens tant à trouver une réponse c'est surtout que je trouve le problème très intéressant et je suis frustré de ne pas y arriver ^^
Merci de ton aide :lol3:

Dlzlogic
Membre Transcendant
Messages: 5273
Enregistré le: 14 Avr 2009, 13:39

par Dlzlogic » 21 Nov 2011, 17:01

La transformation perspective est assez difficile à calculer, pourtant c'est absolument indispensable.
Le fait de redresser l'image ou pas ne change rien à la précision ou la perte d'information, puisque on reste au niveau numérique, rien n'oblige à la regarder, mais c'est tout de même plus intéressant.
J'ai fait un logiciel qui réalise ces opérations, avec toute la rigueur mathématique voulue. C'était il y a un peu plus de 10 ans, alors, il faudrait que je me rafraichisse la mémoire.
Il faut bien se dire que l'évaluation d'une distance ne peut se faire qu'avec une mise à l'échelle en hauteur et en largeur.
Il n'est pas possible de réaliser cette "mise à l'échelle" s'il n'y a qu'une seule photographie et si on n'a pas de moyen de comparaison. Par contre avec 2 photographies d'un même objet, si on connait la distance entre les deux prises de vue (je simplifie) il est possible d'avoir des distances réelles.
Je veux bien que vous utilisiez le calcul matriciel, mais je ne vous suivrai pas sur ce terrain. La partie difficile consiste à établir la formule, le calcul matriciel n'apporte rien, en tout cas à mon avis.
Quand on rentrera dans les détails, je pense que des échanges par mail seront préférables, libre à vous ensuite de donner un résumé des résultats.

toussa
Messages: 3
Enregistré le: 21 Nov 2011, 11:09

par toussa » 22 Nov 2011, 11:13

Très bien pour le redressement, voici ce que l' image donne une fois redressé (fait à la main): Image

Pour le calcul matriciel, je n' ai pas de préférences du tout, j' étais juste partie sur cette voie là (à partir d' un livre), mais ravi d'apprendre qu' il y a une meilleure façon!

Par contre, après réflexion, je ne vois pas du tout ce que vous entendez par "mise à l' échelle", ou alors il me manque une notion très importante :hein:. Pouvez-vous me dire ce que vous entendez par là ?
Pour la photographie, on peut supposer que les pixels sont carrés, et qu' il n' y a donc pas de distorsions d'échelle à ce niveau là.

Sinon, je comprends qu' avec deux photographies et en connaissant les positions/orientations des deux caméras, il serait beaucoup plus facile d'évaluer les distances réelles (et même reconstruire en 3D, j' ai déjà dû faire de la stéréographie dans mes cours).
Cependant je pensais qu' on pouvait se passer de cette deuxième image pour plusieurs raisons:

  • On ne veut pas la distance réelle (en mètres ou autre) mais juste un ratio ( c'est pour ça que je ne comprend pas non plus l' histoire de mise à l'échelle. Il faut juste que l'échelle soit la même!?!)
  • En rajoutant des informations sur l' image qui nous permet de faire des relations entre le modèle 3D et la projection il serait possible d' avoir un lien qui permettrai de se passer de cette deuxième image.
    Sur l' image, on peut renseigner beaucoup de choses comme le plan du sol et le plan perpendiculaire de la façade du bâtiment, le rectangle de la façade qui devient un parallélogramme sur l' image, des informations sur les angles à 90° qui se transforme en des angles différents sur l' image, etc...
    On pourrait donner aussi une estimation de la distance AB (base du bâtiment) ou tout autre information qu' on pourrait tirer de l' image.
J' ai limite l' impression (fausse d' après ce que je crois comprendre) que c'est réalisable de façon géométrique (en pensant en 3D), ou sinon je pense que c'est au moins réalisable, même si ça peut paraître dur.

PS: quand je dis "on", c'est un "on" impersonnel, je suis tout seul :soupir:
et d'accord avec vous pour le mail, je vous l' envoi par MP.
Encore merci pour votre aide !

 

Retourner vers ✯✎ Supérieur

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 37 invités

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite