2013-04-12 9 views
5

Próbuję wprowadzić odwrotną perspektywę mapowania, aby obliczyć odległość do innego pojazdu na drodze. Wiem, że potrzebuję wygenerować macierz transformacji z punktami źródłowymi i punktami docelowymi przed zastosowaniem funkcji warpPerspective(), ale nie wiem, jak obliczyć punkty docelowe.wygenerować widok z góry drogi przy użyciu metody warpPerspective() opencv

Szukałem na tym forum i innych miejsc, ale nie mogę przekształcić pierwszy obraz do drugiego obrazu:

Image 1 http://shanetuohy.com/fyp/Images/img.png

Image 2 http://shanetuohy.com/fyp/Images/IPMim.png

+0

Co z [tym wątkiem] (http://stackoverflow.com/questions/7838487/executing-cvwarpperspective-for-a-fake-deskewing-on-a-set-of-cvpoint)? – karlphillip

+0

Dołącz kod, który już napisałeś, i wskaż, która jego część powoduje problem. –

+0

Wygląda to trochę jak materiał na poziomie badań.Spróbuj zapoznać się z dokumentami PDF związanymi z tym tematem: [ten] (http://www.eee.nuigalway.ie/Research/car/documents/docualain_issc10.pdf) wydaje się obiecujący, ale nie przeczytałem go, tylko spojrzał na kilka stron. W każdym razie jest to prawdopodobnie rodzaj dokumentów, których powinieneś szukać. – didierc

Odpowiedz

3

cel, który chcesz osiągnąć potrzebne jest jeszcze obliczyć honografię między płaszczyzną uziemienia, jego położenie na obrazie oglądanym przez kamerę i jego pozycję w widoku orła.

Jest to tradycyjnie obsługiwane przez wyodrębnianie funkcji (narożników lub punktów kluczowych) w większości rurociągów Computer Vision, ale jest to niepraktyczne: nie ma w nich funkcji (ani zmieniających się funkcji) na drodze.

Co można zrobić zamiast tego jest obliczenie tych homographies w etapie kalibracji, z następującą procedurą:

  1. umieścić aparat na pojeździe docelowym. Umieść znany prostokątny wzór (zazwyczaj szachownicę) leżący na płaskiej ziemi przed samochodem. Jeśli chcesz metrycznych odległości, to musisz również znać rozmiar wzoru, w przeciwnym razie zmierzysz tylko odległości względne.

  2. Wykonaj zdjęcie wzoru kalibracji za pomocą tej konfiguracji.

  3. Na obrazie wzoru należy go wykryć. Można to zrobić na kilka sposobów: jeśli masz obraz referencyjny wzoru, możesz go wykryć automatycznie lub możesz ręcznie kliknąć 4 zewnętrzne rogi. W ten sposób uzyskasz co najmniej czteropunktową zgodność (1 dla każdego zewnętrznego rogu wzoru). Powiązania punktowe są ustalane pomiędzy punktami obrazu (np. 4 narożnikami) i pozycją odniesienia, która jest albo pozycją tego punktu w obrazie odniesienia wzoru (jeśli oyu go ma), albo pozycją, która ma być dla tego punktu punkt w widoku orła.

  4. Z korespondencji oszacuj homografię H. H to macierz 3x3 (zobacz odniesienie do Computer Vision, online lub podręcznik).

Spowoduje to wyświetlenie transformacji między tym, co kamera widzi, a położeniem odniesienia wzoru kalibracji. Jeśli wziąłeś jako odniesienie widok z przodu równoległego wzoru lub jego pożądanych współrzędnych w widoku orła, masz homografię, której szukasz. Jeśli nie, musisz oszacować drugą homografię i połączyć wyniki.

Należy pamiętać, że ta aplikacja jest rozpatrywana pod numerem Gary Bradski's Learning OpenCV book. Możesz przeczytać więcej na ten temat w książce i znaleźć oryginalny kod online.

+0

Dziękuję chłopaki! wszyscy za szybką odpowiedź. @karlphillip Wyglądałem na kilka takich wątków, ale nie mogę wdrożyć do mojego celu. –

+0

Myślałem o twojej alternatywie wcześniej, po prostu nie chcę jeszcze implementować, bo to oznacza więcej pracy. Wiem, że ta implementacja służy do wykrywania pasów drogowych w czasie rzeczywistym. Pomóżcie mi! muszę znaleźć rozwiązanie mojego problemu. –

Powiązane problemy