2012-05-24 14 views
6

OpenCV zawiera wiele wsparcia dla rekonstrukcji 3D z kamer stereo. W moim przypadku mam dwie kamery i chcę poznać współrzędne 3D jakiegoś punktu.Rekonstrukcja punktu 3D z dwóch punktów 2D?

co mam:

  1. pikseli współrzędne punktu na obu obrazach
  2. znane wewnętrzna i zewnętrzna kamera parametry

Co chcę uzyskać: Współrzędne tego punktu w 3D

Odpowiedz

1

Nie wiem, czy opencv ma do tego konstrukcję. Wiem jednak, że możesz użyć prawa sinusoidalnego dla kąta bocznego, aby skonstruować odległość liniową poziomo-równolegle do kamer, używając wewnętrznych kątów punktu-> kamery-> innej kamery jako punktów odniesienia.

Po uzyskaniu odległości można obliczyć położenie pionowe za pomocą tej samej konstrukcji: gdzie kąt jest liczony od martwego punktu do odległości w stosunku do kamery, odległość do obiekt znaleziony w pierwszym kroku i możesz użyć 90 stopni jako kąta pomiędzy tym wyimaginowanym punktem (powyżej obiektu poziomego do kamery) a obiektem.

3

Odpowiedziałem na to samo pytanie w tym innym post.

Jeśli posiadasz parametry zewnętrzne, masz pozę kamery. Z ujęciem aparatu i punktem 2D można poprowadzić punkty 3D (dla każdej kamery powinien być taki sam wynik, jeśli punkty 2D i elementy zewnętrzne są poprawne). Musisz tylko przekonwertować pozę na homografię. Wyjaśniam to w poście, które łączyłem.

Powodzenia!

+0

Twoja odpowiedź dotyczy innego przypadku niż to, o ile zrozumiałem. – Mehdi

1

Kiedy nie masz doświadczenia w triangulacji punktów z dwóch widoków, powinieneś przeczytać książkę: Hartley and Zisserman's book. W niniejszej książce opisano metodę liniowej triangulacji, która jest bardzo łatwa do zrealizowania, z uwzględnieniem zależności punktu 2D, położenia kamery i kalibracji kamery.

Przykładowy kod tej metody podano here. Opiera się na książce wspomnianej powyżej.

Niemniej jednak istnieją bardzo ważne warunki, które muszą zostać spełnione. Po pierwsze, zmierzone korekty punktów muszą być poprawne w odniesieniu do ograniczenia epipolarnego x*E*x' = 0. Po drugie, kąt między promieniami powinien być większy niż kilka stopni, np. 2 stopnie.

Powiązane problemy