0

J'écris un programme. J'ai, disons, une grille de points sur un morceau de papier. Je fixe une extrémité et plie le papier vers l'écran, me donnant une forme trapézoïdale du point de vue de la caméra. J'ai la coordonnée (x, y) de la caméra de chaque point. Y a-t-il un moyen simple de changer ces (x, y) en vraie vie (x, y) qui devrait me donner un rectangle? J'ai l'appareil photo/réel (x, y) de la feuille de papier d'origine pré-plier si cela aide. J'ai regardé 3D Camera coordinates to world coordinates (change of basis?) et Transforming screen coordinates from security camera to real world coordinates.Convertir une grille de points dans le plan XY des coordonnées de la caméra vers les coordonnées du monde réel

+0

Plus d'informations sur la langue, la mise en œuvre et les problèmes que vous avez rencontrés seraient utiles. – BogdanC

Répondre

1

Recherchez "homographie". La transformation d'un plan dans l'espace 3D à son image capturée par une caméra à sténopé idéale est une homographie. Il peut être représenté comme une matrice de 3x3 H qui transforme les coordonnées 3D X de points dans le monde à leur image homogène correspondant coordonnées x:

x = H * X 

où X est un vecteur 3x1 des coordonnées des points du monde, et x = [u, v, w]^T est le point de l'image en coordonnées homogènes. Avec un minimum de 4 correspondances entre les points du monde et de l'image (par exemple, les coins d'un rectangle), vous pouvez estimer les paramètres de la matrice H. Pour plus de détails, recherchez "Algorithme DLT". Dans OpenCV, la routine à utiliser est findHomography.