Użyj podstawowej macierzy do obliczenia tłumaczenia współrzędnych przy użyciu OpenCV
Próbuję obliczyć współrzędne współrzędnych kilku punktów między dwoma obrazami. Mam grupę punktów, których korespondencje są znane, używam ich z OpenCVfindFundamentalMatrix()
w celu znalezienia podstawowej macierzy. Sprawdziłem tox^T * F * x' = (0)
dla każdego punktu, a wynik jest zawsze właściwy lub bardzo bliski.
Chodzi o to, że teraz chciałbym użyć współrzędnych punktu na pierwszym obrazie (y
) i macierz podstawowa (F
) w celu znalezienia współrzędnych punktu na drugim obrazie (y'
). Najpierw pomyślałem o zwykłym użyciu powyższego równania, ale podałem tylkoz
zy'
punkt, może byćnieskończoność rozwiązań.
Jak inaczej mogę użyć podstawowej macierzy do obliczenia tłumaczeń?
Aby być bardziej zrozumiałym: znając podstawową macierz „łączącą” dwie projekcje, jak mogę jej użyć do przetłumaczenia współrzędnych dowolnego znanego punktu(a, b, 1)
od pierwszej projekcji do drugiej projekcji?
Biorąc pod uwagę, że wiemya
, b
iF
w tym równaniu: (a ', b ”, 1)T * F * (a, b, 1) = (0)
Jako przykład zrobiłem prosty rysunek:http://i.imgur.com/drNr2.jpg . Chodzi o znalezienie współrzędnych czerwonej kropki(xq, yq)
w rzucie 2, biorąc pod uwagę, że znamy jego współrzędne w rzucie 1 i wszystkie pozostałe punkty w obu rzutach (a niektóre inne jako algorytm znajdowania podstawowej macierzy faktycznie wymagają co najmniej 8 punktów)
Kolejna precyzja: w moim przykładzie znane punkty są współpłaszczyznowe, ale badany punkt niekoniecznie będzie.
Mam nadzieję, że to sprawiło, że mój problem stał się wyraźniejszy :)