Objekterkennung mit Kamera

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen

Einleitung und Ziel

In diesem Kapitel geht es um die Erkennung von Objekten mit Hilfe der am Fahrzeug verbauten Kamera. Bei der Kamera handelt es sich um das von der Firma VRmagic GmbH vertriebene Modul VRmDC-12 COB. Diese beruht auf einem CMOS-Sensor liefert eine Auflösung von 754 x 480 Pixeln, eine maximale Bildrate von 70 fps und sowohl Farb- als auch Monochrombilder. Der integrierte 600 MHz C64x+ DSP wurde aufgrund der benötigten Einarbeitungszeit in die Linux-Programmierung nicht genutzt. Die Bilder der Kamera wurden via Ethernet-Schnittstelle an den im Fahrzeug verbauten Computer versendet. Die mitgelieferten Bibliotheken erlaubten einen Zugriff auf die Bilder in Visual Studio.

Für die Erarbeitung eines optimalen Algorithmus wurde im ersten Schritt eine Offline-Umgebung in Matlab erstellt. Hier galt es die mit der Kamera aufgenommen Bilder so zu verarbeiten, dass die darauf zu sehenden Objekte erkannt werden. Erst im zweiten Schritt folgte die online Anwendung auf dem Computer des Fahrzeuges.

Autor: Christian Hauke (Diskussion) 14:30, 5. Feb. 2014 (CET)

Objekterkennung in Matlab

In diesem Abschnitt wird die Objekterkennung mit Hilfe von Matlab beschrieben. Es handelt sich um eine Offline-Umgebung die mit aufgenommenen Bildern arbeitet.

Bild einlesen

Im ersten Schritt wird in Matlab das benötigte Bild in den Workspace geladen, wo es dann als Matrix vorliegt:

%Bild einlesen
Bild = imread('Name.png');

Aufgenommenes Bild

Um die Datenmenge zu reduzieren, wird das in Farbe aufgenommene Bild in ein Graustufenbild umgewandelt:

%Umwandlung in Graustufen
Bild_grau = rgb2gray(Bild);

Aufgenommenes Bild Aufgenommenes Bild

Zur späteren Nutzung der Algorithmen müssen die Informationen der Bild-Matrix als Daten vom Typ double vorliegen. Hierzu wird die folgende Umwandlung durchgeführt:

%Umwandeln in double
Bild_grau = double(Bild_grau)


Autor: Christian Hauke (Diskussion) 14:30, 5. Feb. 2014 (CET)

Region of Interest

Aufgrund des weitwinkeligen Sichtbereiches der Kamera wird der für die Objekterkennung relevante Bereich mit einer Region of Interest (ROI) eingeschränkt. Insbesondere der obere Teil des Bildes, sowie der untere Teil auf dem das Fahrzeug zu sehen ist, sind für die Objekterkennung nicht relevant. Somit wurde die ROI auf folgenden Bereich des Bild festgelegt:

  • y-Achse: 100-360
  • x-Achse: 1-500

In Matlab wird dazu die Matrix des Bildes auf den entsprechenden Bereich zugeschnitten:

%ROI
Bild_grau = Bild_grau(100:360,1:500);

Aufgenommenes Bild Aufgenommenes Bild

Vorverarbeitung

Da das auffinden der weißen Objekte mit Hilfe eines Schwellwertes geschehen soll, wurden Überlegungen angestellt, wie die weißen Linien der Fahrspur im Bild auszulöschen sind. Hierzu wurde in Matlab eine Funktion gefunden, die mit einem festgelegten Filterkern das Bild glättet und die Fahrspuren somit nicht mehr vorhanden sind, da diese zu schmal sind. Als Kern wurde ein Quadrat mit 20 Pixeln Kantenlänge gewählt.

%Bild glätten
se = strel('square',20);
Bild_glatt = imopen(Bild_grau,se);

Schwellwertbetrachtung

Labeling

Darstellung der Objekte

Koordinatentransformation

Implementierung in C++