2011-09-17 15 views
6

Próbowałem dowiedzieć się, jak zrobić homografię między dwoma płaszczyznami i przekształcić ją w przekształcenie rzutowe. Matlab robi to automatycznie, ale próbowałem dowiedzieć się, w jaki sposób matlab implementuje konwersję.Homografia do transformacji rzutowej

+0

O której funkcji MATLAB mówisz? – Jacob

+0

Obliczyłem homografię za pomocą bezpośredniej transformacji liniowej. Zastanawiałem się, jak działa maketform ("projective", homographyMat). Dzięki! –

Odpowiedz

2

Homografia to rzutowa transformata, która mapuje linie do linii, zachowuje proporcje krzyżowe, ale nie zachowuje równoległości ani innych wielkości podobieństwa (kątów, odległości itp.). Homografię można wyrazić jako homogeniczną macierz 3x3 i obliczoną na wiele (naprawdę, wiele) różnych sposobów w zależności od problemu.

Najbardziej typowym jest określenie 4-punktowych zależności między dwiema płaszczyznami i użycie bezpośredniej transformacji liniowej (DLT). Istnieje również wiele implementacji DLT. Jeśli znasz OpenCV, możesz łatwo uzyskać taką matrycę do homografii używając cv::findHomography (http://docs.opencv.org/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.html?highlight=findhomography#findhomography).

Ogólnie rzecz biorąc, polecam zapoznać się z książką "Wielokrotna geometria widoku" z Hartley & Zisserman, która szczegółowo wyjaśnia koncepcję homografii w kontekście widzenia komputerowego.

3

Możesz zajrzeć do kodu źródłowego w toolbox \ Images \ Images \ maketform.m

Przynajmniej w edytorze można dostać się do tego poprzez wciśnięcie F4 na nazwę funkcji.

Powiązane problemy