2017-08-22 5 views
0

Je fais l'application AR où j'ai l'orientation et la position de pose de la caméra.Warpping une image de la caméra dans 2D Quad sans opencv

Compte tenu de 4 points dans les coordonnées du monde, comment est-ce que j'embaquerais l'image de la caméra en 2D quad? Donc, étant donné l'image de droite, je voudrais obtenir un quad 2D comme indiqué dans la gauche.

+0

bien vous pouvez soit utiliser une bibliothèque ou vous recherches sur les mathématiques nécessaires et tout mettre en œuvre vous-même. votre question est trop large. – Piglet

+0

Ce que vous pouvez vouloir, c'est * le mappage de texture en perspective *, mais dans le * sens inverse *. Voir [ce lien] (http://www.hugi.scene.org/online/coding/hugi%2025%20-%20coding%20corner%20graphics%20bonz%20texture%20mapping%20part%203.htm) pour un exemple code. – meowgoesthedog

Répondre

1

Paramètres de la matrice de transformation en perspective pourrait être calculée en utilisant le système de 8 équations pour les coordonnées initiales et tordues de points:

x1' = (A * x1 + B * y1 + C)/(G * x1 + H * y1 + 1.0) 
y1' = (D * x1 + E * y1 + F)/(G * x1 + H * y1 + 1.0) 

Vous trouverez la description des mathématiques de transformation en perspective en Paul Heckbert article.

Exemple de mise en œuvre (C++): Antigrain library (fichier agg_trans_perspective.h)

+0

Ceci est la réponse, mon souci maintenant, devrais-je capturer l'image et appliquer les maths ci-dessus sur la texture qui est sauvegardée sur le disque? – andre

+0

Je ne connais pas vos fichiers disque, mais oui, matrice de persp. transformer doit être appliqué à tous les points. Il semble que la feuille grise se trouve au-dessous de la boîte à cigarettes, donc la matrice pour elle devrait différer (un autre plan). – MBo

+0

Désolé pour ne pas préciser, je vais attribuer 4 points pendant que la webcam fonctionne, puis je recadrer cette image, puis l'enregistrer pour faire le disque, puis le charger, appliquer la persp. transformer sur elle? Comment ferais-je cela en OpenGL? devrais-je faire un rendu pour texturer? – andre