Jak wybrać kamery do stereofonicznego systemu wizyjnego?

18

Jestem w trakcie budowy systemu wizyjnego stereo do zastosowania na UGV. System przeznaczony jest dla robota, który zostanie wykorzystany w zawodach, w których robot jest teleoperowany w celu znalezienia stosunkowo małych kolorowych skał na dużym polu zewnętrznym. Rozumiem, jak skalibrować taki system i przetwarzać dane dla systemu wizyjnego stereo. Nie wiem jednak, jak wybrać kamery do takiego systemu. Jakie są najlepsze praktyki wyboru kamer do systemu wizyjnego stereo?

DaemonMaker
źródło

Odpowiedzi:

11

Z czubka głowy wybrałbym następujące kryteria wyboru

  • kolor / czarno-biały - zwykle czarno-biały jest lepszy, ponieważ algorytmy stereo i tak używają tylko jednego kanału
  • linia bazowa - to naprawdę zależy od sceny. Za pomocą linii bazowej kontrolujesz, ile dokładności uzyskujesz wraz z odległością. Szerszy poziom wyjściowy powoduje wyższe wartości dysparytetu, a tym samym mniej hałasu na oszacowaniu odległości. Wyższa linia bazowa oznacza również, że zmniejszysz nakładanie się pola widzenia. Co najważniejsze, im szerszy poziom bazowy, tym trudniejsze dopasowanie między dwoma widokami. Tak więc jakość wyniku spada.
  • migawka - zawsze używaj globalnej migawki do czegokolwiek z wizją komputerową robotów mobilnych
  • rozdzielczość - większość algorytmów stereo jest kosztownie obliczeniowa. I prawdopodobnie nie będziesz potrzebować tylu punktów 3d. W polu bliskim gęstość próbkowania jest zwykle wystarczająca, a błąd w polu dalekim od małej dysproporcji stanowi większy problem niż gęstość próbkowania. 640x480 jest w większości przypadków w porządku. Niektóre układy mają szerszy współczynnik kształtu, co jest korzystne dla nakładania się, ale możesz uzyskać to samo, korzystając z okna podrzędnego swojego układu.
  • cele / pole widzenia - w przypadku mobilnych robotów zewnętrznych wolę szersze pole widzenia niż wąskie cele. Mniej więcej z tych samych powodów, co rozdzielczość. Upewnij się, że twoje cele są sztywne i mają środki do mocowania wszelkich ruchomych części, np. Regulowanej ogniskowej. W większości przypadków stała ogniskowa i tak jest w porządku, ponieważ ogranicza Cię wybór linii bazowej.
  • wyzwalacz - podczas tworzenia własnego zestawu stereo kamery powinny obsługiwać wyzwalacz sprzętowy, najlepiej jeden.
  • framerate - Moim zdaniem najmniej ważna uwaga. Jeśli nie masz dużej mocy obliczeniowej, i tak nie dostaniesz więcej niż 5 Hz. Więc twój algorytm jest znacznie bardziej wąskim gardłem niż chipem lub połączeniem.
  • interfejs - większość kamer jest wyposażona w Firewire / USB2 / USB3 / Ethernet. USB2 jest bezużyteczne, ponieważ zużywa dużo procesora. Firewire jest dobry, jeśli masz port, ale myślę, że obecnie spada na korzyść USB3. Nie miałem jeszcze dużego doświadczenia z USB3. Ethernet jest całkiem fajny, ponieważ w tej chwili istnieje większe prawdopodobieństwo, że znajdziesz systemy wbudowane z GigEthernetem niż USB3.
  • obudowa - możliwie sztywna. Ponowna kalibracja jest irytującą procedurą.
Jakob
źródło
6

Powinieneś zacząć od obliczenia, ile klatek potrzebujesz na sekundę i ile rozdzielczości kamery możesz przetworzyć przy tej liczbie klatek na sekundę. Jeśli to nic innego, zapobiegnie to nadmiernym wydatkom lub zakupowi aparatu, który nie będzie odpowiadał Twoim potrzebom.

Poza tym istnieje wiele funkcji, które sprawiają, że wybór jest trudniejszy / interesujący. Różne kamery (zwłaszcza kamery sieciowe, takie jak Axis) pozwalają zmieniać jakość obrazu lub określać maksymalną przepływność strumienia obrazu. Niektóre aparaty dają również wybór czasu otwarcia migawki, co pozwala faworyzować stały czas ekspozycji lub stałe średnie oświetlenie na zdjęciu. Niektóre aparaty są bardziej czułe niż inne (ostatni raz pracowałem z tym w 2009 roku i zauważyliśmy, że PS3 Eye działało naprawdę dobrze w warunkach słabego oświetlenia).

Prawdopodobnie najlepszą rzeczą, jaką możesz zrobić, to uruchomić algorytmy przetwarzania obrazu na kilku statycznych obrazach wykonanych za pomocą lustrzanki cyfrowej, a następnie spróbować zmniejszyć rozmiar i jakość ramki, aby zobaczyć, gdzie zaczyna się rozkład.

Ian
źródło
6

Kilka rzeczy, na które powinieneś zwrócić uwagę:

  • Migawka globalna zasadniczo oznacza, że ​​wszystkie piksele są rejestrowane w tym samym czasie, w przeciwieństwie do rolety, w której są rejestrowane sekwencyjnie w trybie skanowania liniowego. Ponieważ twój UGV będzie się poruszał i wykonywał algorytmy stereo na przechwytywanych zdjęciach, może być ważne, aby unikać aberracji pojawiających się podczas ruchu aparatu, takich jak te widoczne na poniższych zdjęciach (zrobione z Wikipedii ):

Poruszający się samochód zrobiony telefonem z aparatem CMOS wykazuje przekrzywienie Zdjęcie wykazujące częściową ekspozycję.  Zmieniły się warunki oświetlenia między ekspozycją górnej i dolnej części zdjęcia. Strzał śmigła turbośmigłowego

  • Synchronizacja kamery w sprzęcie jest osiągalna przez niektóre kamery, zwłaszcza kamery FireWire AFAIK. To może znacznie poprawić wyniki stereo, gdy rzeczy się poruszają.

  • Montaż powinien odbywać się w taki sposób, aby zmiany parametrów zewnętrznych (względna pozycja między kamerami) dla pary stereo raczej nie uległy zmianie po kalibracji. Na twoim urządzeniu może to być ważniejsze, ponieważ UGV może napotkać nierówny teren na zewnątrz i rzeczy będą wibrować.

  • Dedykowany sprzęt stereo umożliwia uzyskanie różnicowych obrazów bezpośrednio na wyjściu systemu wizyjnego stereo, co zmniejsza obciążenie wbudowanego komputera. Jest również zwykle szybszy niż uruchamianie tych samych algorytmów w oprogramowaniu.

Jak zwykle, im więcej jesteś skłonny zapłacić, tym lepsze wyniki. Szczerze mówiąc, jeśli jesteś w stanie kupić pełnowymiarową kamerę stereo, taką jak Bumblebee2 , właśnie to zrobiłbym. W przeciwnym razie, jeśli jesteś po tańszej stronie, po prostu wybrałbym Kinect : jest mało prawdopodobne, że będziesz w stanie uzyskać system, który przewyższa go za tę samą cenę.

georgebrindeiro
źródło
Pytanie dotyczyło systemu zewnętrznego. To skutecznie wyklucza Kinect. Odkryliśmy również, że algorytmy dostarczane przez Bumblebee są dalekie od optymalnych.
Jakob
Jestem z tobą w sprawie Kinect, ale czy algorytmów stereo dostarczanych z Bumblebee nie można zastąpić własnym kodem? Największą zaletą, na którą zwracałem uwagę, był faktyczny sprzęt, a nie dołączone do niego oprogramowanie.
georgebrindeiro
Tak, to prawda. Możesz używać go tak, jak dwóch zwykłych kamer, i ma tę zaletę, że ma sztywną obudowę.
Jakob
nie tylko to, ale globalna migawka, dobre obiektywy i inne gadżety
georgebrindeiro
4

To ciekawy temat i za pierwszym razem nie jest łatwo go znaleźć. Z doświadczenia z tym, oto najważniejsze rzeczy.

  • Synchronizacja . Aparat musi być w 100% zsynchronizowany. Załóżmy na przykład, że UGV jedzie z niewielką prędkością 36 km / h (10 m / s) i rejestruje klatki z prędkością 30 klatek na sekundę. Oznacza to, że w każdej klatce pojazd UGV zajmowałby 3 metry. Powiedzmy teraz, że synchronizacja jest wyłączona o 1 ms, jedna z kamer wyłączy się o ~ 0,3 m, co jest złe [tuż nad moją głową]. Problemy z synchronizacją są bardzo trudne do wykrycia.

  • δZ=Z2)bfaδreδZbfaδZδreδre1/2)δre

  • Pokrywają się . Chcesz nakładać się między kamerami, aby uzyskać stereo. Dlatego musisz wybrać kombinację ogniskowej obiektywu (pola widzenia) i linii bazowej, aby uzyskać wystarczające pokrycie dla aplikacji. Zasadniczo trygonometria działa na płycie lub szybki skrypt matlab / python.

W przypadku pojazdów ciężarowych istnieją dwa zastosowania stereo.

  1. Nawigacja i ocena pozycji W tym przypadku najprawdopodobniej potrzebujesz dużej wartości bazowej + długiej ogniskowej. Pozwala to stereo lepiej widzieć i rozpoznawać głębię i większy zasięg.

  2. Wykrywanie i unikanie przeszkód Prawdopodobnie będziesz potrzebować krótszej linii bazowej i szerszego obiektywu (mniejsza ogniskowa), abyś mógł skupić się na rzeczach bardzo blisko ciebie.

Niektóre UGV mogą mieć zarówno konfiguracje stereo, duże podstawowe pole wąskiego pola widzenia do nawigacji, jak i jedno lub dwa do unikania przeszkód.

Uważaj, co kupujesz. Niektóre firmy oferują już wbudowane konfiguracje stereo. Są one świetne pod względem niezawodności, nie tracą łatwo kalibracji i zawsze są zsynchronizowane. Problem polega na tym, że dostępne na rynku mają niewielką wartość bazową. Jeśli chcesz zbudować własny. Zgaduję, że to skończysz, upewnij się, że kamera jest zsynchronizowana . Firewire jest do tego świetny, dwie kamery na tej samej magistrali będą zsynchronizowane z dokładnością 125 mikrosekund po wyjęciu z pudełka! Kamery USB i Gige są bolesne w synchronizacji. Po złożeniu wszystkiego chcesz mieć pewność, że soczewki w ogóle się nie poruszą, a linia podstawowa jest sztywna, bardzo sztywna do zastosowania.

Zachowaj także ostrożność przy wyborze obiektywu. Nie wszystkie obiektywy działają ze wszystkimi aparatami. Obiektywy też mają rozdzielczość. To kolejny temat, oto krótki artykuł na temat tego http://www.qualitymag.com/articles/90642-qa--selecting-lenses-for-machine-vision-systems

bendervader
źródło
4
Twoje obliczenia synchronizacji są nieprawidłowe. 30 kl./s przy 10 m / s daje odległość 33 cm (nie 3 m) na ramkę. Również 1ms przy tej prędkości oznacza odległość 1 cm (niezależnie od FPS). Tak więc synchronizacja na poziomie ms jest naprawdę super rezultatem dla takich prędkości!
Kozuch,