Mam skalibrowaną kamerę i posiadam wewnętrzne parametry. Mam również parametry zewnętrzne względem punktu (pochodzenie świata) na płaskiej powierzchni w świecie rzeczywistym. Ten punkt ustawiłem jako początek współrzędnych świata rzeczywistego [0,0,0] z normalną równą [0,0,1].
Na podstawie tych parametrów zewnętrznych mogę obliczyć pozycję i obrót kamery we współrzędnych 3d płaszczyzny świata, używając tego tutaj: http://en.wikipedia.org/wiki/Camera_resectioning
Teraz mam drugi punkt, w którym wyodrębniłem współrzędne obrazu dla [x, y]. Jak teraz uzyskać pozycję 3D tego punktu w światowym układzie współrzędnych?
Myślę, że intuicja polega na tym, że muszę prześledzić promień, który przechodzi od optycznego środka kamery (dla której mam teraz pozycję 3D, jak opisano powyżej), przez płaszczyznę obrazu [x, y] kamery, a następnie przez mój samolot z prawdziwego świata, który zdefiniowałem na górze.
Teraz mogę przeciąć promień 3d współrzędnej świata z płaszczyzną, którą znam normalnie, i wskazać na tej płaszczyźnie. Nie rozumiem, jak ustalam pozycję i kierunek 3D, kiedy opuszcza płaszczyznę obrazu przez piksel. To dezorientacja mnie przez różne układy współrzędnych.
źródło
Odpowiedzi:
Jeśli masz elementy zewnętrzne, jest to bardzo łatwe. Posiadanie elementów zewnętrznych jest tym samym, co posiadanie „pozy kamery” i to samo, co posiadanie homografii. Sprawdź ten post w stackoverflow.
Masz elementy zewnętrzne, zwane także pozycjami kamery, co jest określane jako tłumaczenie i obrót:
Można uzyskać Homography od Stanowią w ten sposób:
Następnie możesz rzutować punkty 2D na odpowiadające im punkty 3D, mnożąc homografię przez punkty:
źródło
Masz dwie opcje, użyj projekcji wstecznej lub projekcji między dwiema płaszczyznami (homografia).
W przypadku projekcji wstecznej pobierasz pseudo odwrotność matrycy kamery i mnożisz wynik przez jednorodną prezentację punktu obrazu:P
Teraz masz linię 3D, która porusza koryta centrum kamera i punkcie X . Jeśli chcesz, możesz przekonwertować to na łatwiejsze w obsłudze. Na przykład z jednym wektorem punktu i kierunku (pamiętaj, aby znormalizować współrzędne jednorodne V = ω [ X Y Z 1 ] T tak, aby współczynnik skali ω = 1 przed faktycznymi obliczeniami):C X V=ω[XYZ1]T ω=1
Jeśli masz płaszczyznę , możesz rozwiązać równanie L ( t ) = Π dla t .Π=[π1π2π3π4]T,π1X+π2Y+π3Z+π4=0 L(t)=Π t
Jeśli zdecydujesz się na użycie homografii, musisz obliczyć macierz homografii H , która jest zdefiniowana jako rzut między płaszczyzną obrazu i płaszczyzną czujnika kamery:3×3 H
źródło
Nie możesz znać pozycji 3D drugiego punktu. Może to być dowolny punkt na promieniu od środka kamery do nieskończoności.
Możesz wykonać następujące czynności:
źródło