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 :)

questionAnswers(2)

yourAnswerToTheQuestion