Industrial and Home Automation WS2011/Aufgabenorientierte Navigation für den Roboter "Spykee"/Test:Cam

Aus Verteilte Systeme - Wiki
Wechseln zu: Navigation, Suche

Test: Objekterkennung per Kamera

Das Testprogramm ihoma-cam2nfs dient dem Erkennen von Objekten. Ein erfasstes Objekt wird in Vektordaten (=Bounding-Box um Objekt) dargestellt. Diese Daten werden per NFS auf einen PC geloggt.

Das zu erkennende Objekt ist dabei ein rotes A4-Blatt. Anhand der Größe und des Bereiches des Kamerabildes, in dem das Objekt erfasst wurde, kann die Position des Spykees relativ zum Zielobjekt ermittelt werden.

Auslesen der Kamera

Von der Kamera wird ein JPEG-Bild ausgelesen. Mit der Bibliothek libjpeg-6b wird dieses in ein eindimensionales RGB-Array (=3 Byte pro Pixel) gewandelt. D.h. dass alle Bildzeilen sequentiell hintereinander liegen.

Objekterkennung

Die Objekterkennung erfolgt in 2 Schritten. Aus dem als RGB-Array vorliegenden Bild wird zunächst ein Binärbild erstellt, in dem jeder rötliche Pixel als TRUE und die restlichen Pixel als FALSE markiert werden.
Im zweiten Schritt wird das Binärbild geparst. Wird ein mit TRUE markiertes Pixel gefunden, werden ähnlich dem Floodfill-Algorithmus benachbarte Pixel rekursiv auf ihren Wert untersucht. Ist dieser Pixel ebenfalls TRUE, wird er als zur selben Fläche gehörend betrachtet. Nach dem Parsen des Binärbildes hat man im optimalen Fall genau eine Fläche erkannt (Zielobjekt). Von dieser Fläche werden der minimale/maximale X- bzw. Y-Wert als Vektordaten gespeichert. Sollten mehrere Flächen in demselben Bild erkannt werden, so wird die mit den meisten TRUE-Pixeln als Zielobjekt genommen.

Beispiel

Messung des realen Abstands

Das Verhältnis des ermittelten Objekts zum Gesamtbild in einer Variablen (proximity) gespeichert und zur Steuerung verwendet. Die ermittelten Werte dieser Variable ergeben folgenden realen Abstand:

proximty Abstand in cm
100 23
70 40
59 50
51 60
45 70
41 80
37 90
34 100
31 110
29 120
25 140
22 160
20 180
18 200
15 250

Downloads