2010-04-26 14 views
3

Imaginez une photo, avec le visage d'un bâtiment balisé. Il est donné que le visage du bâtiment est un rectangle, avec des angles de 90 degrés. Cependant, parce que c'est une photo, la perspective sera impliquée et les bords parallèles du visage convergeront sur l'horizon.Calcul d'angles 2D pour des objets 3D en perspective

Avec un tel rectangle, comment calculer l'angle en 2D des vecteurs des arêtes d'une face qui lui est perpendiculaire?

Dans l'image ci-dessous, le bleu est le visage marqué sur la photo, et je me demande comment calculer le vecteur 2D des lignes rouges de l'autre face:

example http://img689.imageshack.us/img689/2060/leslievillestarbuckscor.jpg

Donc, si vous ignorez l'image pendant un moment, et concentrez-vous sur les lignes, y a-t-il assez d'informations dans l'un des contours du visage - les angles intérieurs et autres - pour connaître le chemin du visage de l'autre côté du coin? Quelle serait la formule?

example http://i41.tinypic.com/zvvgqc.jpg

Nous savons que les deux sont des rectangles - qui est que chaque coin est un angle droit - et qu'ils sont à angle droit par rapport à l'autre. Alors, comment déterminez-vous le vecteur du deuxième visage en utilisant seulement la connaissance de la position du premier?

+0

Avez-vous déjà trouvé les bords rouges? – mmr

+0

Avec la connaissance que le visage bleu est un rectangle, vous avez probablement assez d'informations pour retraverser du visage bleu -> objet bleu 3d + caméra -> objet rouge 3 + caméra -> lignes rouges. – Amber

Répondre

0

C'est assez facile, vous devez utiliser de base 2 point de vue règles.

Tout d'abord vous avez besoin de 2 points de fuite, un à gauche et un à droite de votre objet. Ils resteront tous deux sur la même ligne d'horizon.

alt text http://img62.imageshack.us/img62/9669/perspectiveh.png

Après avoir placé l'horizon (qui choisit le heigh de vue) et les points de fuite (les positions des points changeront le champ de vision), vous pouvez facilement calculer où vos lignes vont (bien sûr, vous avez besoin être capable de calculer la ligne qui croise deux points: je pense que vous pouvez le faire)

0

Honnêtement, ce que je ferais est un Hough Transform sur l'image et de déterminer un moyen d'identifier les lignes rouges de l'image. Pour trouver les lignes rouges, je trouverais toutes les lignes dans la transformation qui touchent vos bleues. La bonne chose à propos de la transformation est que vous obtenez des informations d'angle gratuitement. Puisque vous savez que vous regardez des lignes, vous pouvez également faire un Radon Transform et rechercher des pics à des angles particuliers; c'est essentiellement la même chose.

Matlab a quelques fonctionnalités intéressantes pour ce genre de travail.

+0

Hough est une approche intéressante que je connais bien, mais je suis à la recherche d'une approche mathématique pour m'informer des lignes Hough à faire confiance. – Will

+0

Est-ce que l'intersection de coins est une bonne métrique de confiance? Trouver les coins de votre région marquée par le bleu devrait être faisable, particulièrement si le marquage est garanti pour avoir quatre tels coins. Alors les lignes qui pourraient s'étendre à travers ce point de coin pourraient être des candidats, et peut-être choisir le plus proche comme réponse. – mmr

+0

L'idée que je peux éliminer les points bruyants en recherchant des lignes candidates qui correspondent à une projection en perspective d'une forme candidate; cela signifie que je dois avoir le forumla pour la projection ... – Will

Questions connexes