Wie wählt man Kameras für ein Stereo-Vision-System aus?

18

Ich bin dabei, ein Stereo-Vision-System für ein UGV zu bauen. Das System ist für einen Roboter vorgesehen, der in einem Wettbewerb eingesetzt wird, bei dem der Roboter teleoperiert wird, um relativ kleine farbige Steine ​​auf einem großen Außenfeld zu finden. Ich verstehe, wie man ein solches System kalibriert und die Daten für ein Stereo-Vision-System verarbeitet. Ich weiß jedoch nicht, wie man Kameras für ein solches System auswählt. Was sind die Best Practices für die Auswahl von Kameras für ein Stereo-Vision-System?

DaemonMaker
quelle

Antworten:

11

Aus dem Kopf würde ich nach den folgenden Auswahlkriterien gehen

  • Farbe / Schwarzweiß - normalerweise ist Schwarzweiß besser, da die Stereo-Algorithmen sowieso nur einen Kanal verwenden
  • Grundlinie - das hängt wirklich von der Szene ab. Mit der Basislinie steuern Sie, wie viel Genauigkeit Sie mit der Entfernung erhalten. Eine breitere Basislinie führt zu höheren Disparitätswerten und damit zu weniger Rauschen bei der Entfernungsschätzung. Eine höhere Basislinie bedeutet auch, dass Sie eine geringere Überlappung zwischen Ihrem Sichtfeld erhalten. Am wichtigsten ist jedoch, dass je breiter die Grundlinie, desto schwieriger die Übereinstimmung zwischen den beiden Ansichten ist. So sinkt die Qualität des Ergebnisses.
  • Auslöser - Verwenden Sie immer einen globalen Auslöser für alles, was mit Computer Vision auf mobilen Robotern arbeitet
  • Auflösung - Die meisten Stereo-Algorithmen sind rechenintensiv. Und Sie werden wahrscheinlich nicht so viele 3D-Punkte benötigen. Im Nahfeld ist die Abtastdichte normalerweise ausreichend, und das Fernfeld, in dem Ihr Fehler aufgrund der geringen Disparität auftritt, ist eher ein Problem als die Abtastdichte. 640x480 ist in den meisten Fällen in Ordnung. Einige Chips haben ein breiteres Seitenverhältnis, was sich günstig auf die Überlappung auswirkt, aber Sie können dasselbe erzielen, wenn Sie ein Unterfenster Ihres Chips verwenden.
  • ziele / sichtfeld - für mobile außenroboter bevorzuge ich ein weites sichtfeld gegenüber engen zielen. Mehr oder weniger aus den gleichen Gründen wie die Auflösung. Stellen Sie sicher, dass Ihre Objektive starr sind und die Möglichkeit haben, bewegliche Teile wie z. B. die einstellbare Brennweite zu fixieren. In den meisten Fällen ist eine feste Brennweite ohnehin in Ordnung, da Sie durch die Auswahl Ihrer Grundlinie eingeschränkt sind.
  • Trigger - Wenn Sie Ihr eigenes Stereo-Rig erstellen, sollten Ihre Kameras den Hardware-Trigger unterstützen und im Idealfall sollte einer den anderen triggern.
  • Framerate - Meiner Meinung nach die am wenigsten wichtige Überlegung. Wenn Sie nicht viel Rechenleistung haben, werden Sie sowieso nicht viel mehr als 5 Hz erhalten. Ihr Algorithmus ist also eher der Engpass als der Chip oder die Verbindung.
  • Schnittstelle - Die meisten Kameras sind mit Firewire / USB2 / USB3 / Ethernet ausgestattet. USB2 ist nutzlos, da es viel CPU verbraucht. Firewire ist gut, wenn Sie einen Anschluss haben, aber ich denke, es scheint in diesen Tagen zugunsten von USB3 zu sinken. Habe noch nicht viel Erfahrung mit USB3. Ethernet ist ganz nett, weil Sie im Moment eher eingebettete Systeme mit GigEthernet als mit USB3 finden.
  • Gehäuse - so starr wie möglich. Neukalibrierung ist ein ärgerlicher Vorgang.
Jakob
quelle
6

Sie sollten zunächst berechnen, wie viele Bilder pro Sekunde Sie benötigen und wie viel Kameraauflösung Sie mit dieser Bildrate verarbeiten können. Wenn nichts anderes, hindert Sie dies daran, zu viel auszugeben oder eine Kamera zu kaufen, die nicht Ihren Bedürfnissen entspricht.

Darüber hinaus gibt es eine Vielzahl von Funktionen, die die Auswahl erschweren / interessanter machen. Mit verschiedenen Kameras (insbesondere Netzwerkkameras wie Axis) können Sie die Bildqualität ändern oder eine maximale Bitrate für den Bildstrom festlegen. Bei einigen Kameras können Sie auch die Verschlusszeit festlegen, sodass Sie eine konstante Belichtungszeit oder eine konstante durchschnittliche Beleuchtung im Bild bevorzugen. Einige Kameras sind empfindlicher als andere (das letzte Mal habe ich 2009 damit gearbeitet, und wir haben festgestellt, dass das PS3 Eye bei schlechten Lichtverhältnissen wirklich gut funktioniert hat).

Das Beste, was Sie tun können, ist wahrscheinlich, Ihre Bildverarbeitungsalgorithmen auf ein paar statischen Bildern auszuführen, die Sie mit einer DSLR aufnehmen, und dann zu versuchen, die Bildgröße und -qualität zu reduzieren, um festzustellen, wo Probleme auftreten.

Ian
quelle
6

Ein paar Dinge, nach denen Sie Ausschau halten sollten:

  • Globaler Shutter bedeutet im Grunde, dass alle Pixel zur gleichen Zeit erfasst werden, im Gegensatz zum Rolling Shutter, bei dem sie zeilenweise nacheinander erfasst werden. Da sich Ihr UGV über die von Ihnen aufgenommenen Bilder bewegt und Stereo- Algorithmen ausführt, ist es möglicherweise wichtig, dass Sie Fehler vermeiden, die bei Kamerabewegungen auftreten, z. B. die in den folgenden Bildern (aus Wikipedia ) gezeigten :

Das bewegliche Auto, das mit CMOS-Kamerahandy genommen wird, zeigt Neigung Ein Foto mit Teilbelichtung.  Die Lichtverhältnisse änderten sich zwischen der Belichtung des oberen und unteren Teils des Fotos. Ein Schuss eines Turboprop-Propellers

  • Die Kamerasynchronisation in Hardware ist für einige Kameras möglich, insbesondere für Firewire-Kameras AFAIK. Das kann die Ergebnisse für Stereo erheblich verbessern, wenn sich die Dinge bewegen.

  • Die Montage sollte so erfolgen, dass sich Änderungen der äußeren Parameter (der relativen Position zwischen den Kameras) für das Stereopaar nach der Kalibrierung wahrscheinlich nicht ändern. In Ihrem Rig ist dies möglicherweise wichtiger, da das UGV im Freien unebenem Gelände ausgesetzt sein kann und die Dinge vibrieren.

  • Spezielle Stereo-Hardware ermöglicht die direkte Erfassung von Disparitätsbildern als Ausgabe Ihres Stereo-Vision-Systems, wodurch Ihr Embedded-Computing entlastet wird. Es ist in der Regel auch viel schneller als die Ausführung der gleichen Algorithmen in Software.

Je mehr Sie bereit sind zu zahlen, desto besser sind die Ergebnisse. Um ehrlich zu sein, wenn Sie eine vollwertige Stereokamera wie die Bumblebee2 kaufen können, würde ich das tun. Wenn Sie auf der billigeren Seite sind, würde ich mich einfach für einen Kinect entscheiden : Es ist unwahrscheinlich, dass Sie ein System erhalten, das die Leistung zum gleichen Preis übertrifft.

Georgebrindeiro
quelle
Die Frage war für ein Outdoor-System. Dies schließt den Kinect effektiv aus. Auch die Algorithmen, die mit der Hummel kommen, sind alles andere als optimal, fanden wir.
Jakob
Ich bin mit Ihnen in Bezug auf den Kinect-Kommentar, aber können die mit der Bumblebee gelieferten Stereo-Algorithmen nicht durch Ihren eigenen Code ersetzt werden? Der größte Vorteil, auf den ich hingewiesen habe, lag in der tatsächlichen Hardware und nicht in der mitgelieferten Software.
Georgebrindeiro
ja, das ist wahr. Sie können es wie zwei normale Kameras verwenden und es hat den Vorteil eines starren Gehäuses.
Jakob
nicht nur das, sondern Global Shutter, gute Objektive und andere Leckereien
Georgebrindeiro
4

Das ist ein interessantes Thema, und es ist nicht sehr einfach, es gleich beim ersten Versuch richtig zu machen. Aus Erfahrung sind hier die wichtigsten Dinge.

  • Synchronisation . Die Kamera muss zu 100% synchronisiert sein. Angenommen, das UGV fährt mit einer bescheidenen Geschwindigkeit von 36 km / h (10 m / s) und zeichnet Bilder mit 30 Bildern pro Sekunde auf. Das heißt, bei jedem Frame würde das UGV 3 m zurücklegen. Nehmen wir an, Ihre Synchronisierung ist um 1 ms unterbrochen, eine der Kameras ist um ~ 0,3 m unterbrochen, was schlecht ist [direkt über meinem Kopf]. Synchronisierungsprobleme sind sehr schwer zu erkennen.

  • δZ=Z2BfδdδZBfδZδdδd1/2δd

  • Überlappung . Sie möchten eine Überlappung zwischen den Kameras haben, um Stereo zu erhalten. Daher müssen Sie eine Kombination aus Objektivbrennweite (Sichtfeld) und Grundlinie auswählen, damit Sie genügend Überlappung für die Anwendung haben. Grundsätzlich funktioniert die Trigonometrie auf dem Board oder mit einem schnellen Matlab / Python-Skript.

Für UGVs gibt es zwei Verwendungszwecke für Stereo.

  1. Navigation und Posenschätzung In diesem Fall benötigen Sie höchstwahrscheinlich eine große Grundlinie und eine lange Brennweite. Dadurch kann die Stereoanlage die Tiefe besser sehen und auflösen und eine größere Reichweite erzielen.

  2. Hinderniserkennung und -vermeidung Möglicherweise benötigen Sie eine kürzere Grundlinie und ein breiteres Objektiv (kleinere Brennweite), damit Sie sich auf Dinge konzentrieren können, die sich ganz in Ihrer Nähe befinden.

Einige UGVs verfügen möglicherweise über beide Stereo-Konfigurationen, das große enge Sichtfeld für die Navigation und ein oder zwei weitere zur Vermeidung von Hindernissen.

Sei sehr vorsichtig, was du kaufst. Einige Firmen bieten bereits gebaute Stereo-Setups an. Diese sind von der Robustheit her großartig, verlieren die Kalibrierung nicht leicht und sind immer synchron. Das Problem ist, dass die im Handel erhältlichen eine kleine Grundlinie haben. Wenn Sie Ihre eigenen bauen möchten. Ich nehme an , dass Sie dies am Ende tun werden, stellen Sie sicher, dass die Kamera synchronisiert werden kann . Firewire eignet sich hervorragend dafür. Zwei Kameras auf demselben Bus werden sofort mit einer Genauigkeit von 125 Mikrosekunden synchronisiert. USB- und Gige-Cams lassen sich nur schwer synchronisieren. Wenn Sie alles zusammenfügen, möchten Sie sicherstellen, dass sich die Linsen überhaupt nicht bewegen, und die Grundlinie ist starr, sehr starr für die Anwendung.

Seien Sie auch bei der Objektivauswahl vorsichtig. Nicht alle Objektive funktionieren mit allen Kameras. Objektive haben auch eine Auflösung. Dies ist ein weiteres Thema. Hier ist ein kurzer Artikel zu diesem Thema: http://www.qualitymag.com/articles/90642-qa--selecting-lenses-for-machine-vision-systems

bendervader
quelle
4
Ihre Synchronisationsberechnung ist falsch. 30 FPS bei 10 m / s ergeben einen Abstand von 33 cm (nicht 3 m) pro Bild. 1 ms bei dieser Geschwindigkeit bedeutet auch eine Entfernung von 1 cm (unabhängig von der FPS). Die Synchronisation auf ms-Ebene ist also ein hervorragendes Ergebnis für solche Geschwindigkeiten!
Kozuch