2017-07-25 10 views
0

J'ai une caméra sténopé fixe. Je vise un panneau plat et prends une image. Je incline le panneau plat vers le haut et prends une image. Y at-il un moyen de convertir les pixels en coordonnées du monde réel, en se débarrassant de la distorsion trapézoïdale? Quelle matrice est-ce.Effet Keystone

J'ai essayé d'aller des coordonnées réelles aux pixels en utilisant https://www.mathworks.com/help/vision/ref/cameramatrix.html mais il ne renvoie pas une forme trapézoïdale mais un parallélogramme. Est-ce que mon image d'étalonnage chargée doit être directement au-dessus de l'échiquier ou quoi? Cependant, j'ai besoin de convertir des pixels au monde réel, donc y at-il un moyen d'inverser cette matrice de caméra 4x3 si c'est une méthode valide?

Merci.

+0

Cela ressemble à cela pourrait vous aider. https://stackoverflow.com/questions/14514357/converting-a-2d-image-point-to-a-3d-world-point?rq=1 – Moano

Répondre

0

Vous demandez des choses supplémentaires: la suppression de la clé de voûte ne nécessite pas de connaître l'emplacement du panneau 3D dans le monde. Vous avez seulement besoin de la matrice d'homographie 3x3 pour mapper la version "keystoned" du panneau sur celle "plate".

Vous pouvez calculer l'homographie avec un minimum de 4 correspondances de pixels entre les deux images. Dans OpenCV vous utilisez "findHomographyMat" à cet effet.

+0

Merci, mais si mon panneau fléchit, ça ne marcherait pas exactement . J'aurais besoin d'un objet rigide pour obtenir une matrice d'homographie correcte. Je pense que la conversion aux coordonnées du monde par un facteur d'échelle serait la meilleure. Juste comprendre comment maintenant si c'est possible du tout – Moano