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
Odpowiedz
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.
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.
O której funkcji MATLAB mówisz? – Jacob
Obliczyłem homografię za pomocą bezpośredniej transformacji liniowej. Zastanawiałem się, jak działa maketform ("projective", homographyMat). Dzięki! –