Projekt 45: Simulink Bildverarbeitung: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Zeile 103: Zeile 103:


Die Vorverarbeitung befasst sich im Wesentlichen damit, die Bilddaten in das richtige Format zu bringen. Von der Kamera werden Bilder im RGB-Format mit einer Auflösung von 320x240 Pixeln empfangen. Eine geringe Auflösung steigert hierbei die Anzahl der Frames die pro Zeiteinheit verarbeitet werden können und wirkt sich somit positiv auf die Echtzeitfähigkeit aus. Um noch mehr Rechenzeit zu sparen, werden im ersten Schritt die drei Farbkanäle zu einem im Graubild-Format zusammengefasst. Dieser dient jedoch nur als Zwischenschritt, um daraus ein Schwarz-Weiß-Bild zu erzeugen. Das Hintergrundbild, das mit Hilfe der oben genannten Funktion erzeugt wurde, liegt ebenfalls in diesem Format vor. Daher kann im Schritt ein Vergleich des aktuellen Bildes mit dem Hintergrund stattfinden. Dies geschieht über eine einfache XOR-Verknüpfung jedes Pixels mit dem entsprechenden Bildelement aus dem Hintergrundbild. Bereiche, ohne Personen sind in beiden Bildern gleich, sodass diese Regionen schwarz im Ergebnis werden. Nur dort wo Personen den Hintergrund überdecken, sind diese als weiße Umrisse sichtbar. Abbildung 4 zeigt ein Zwischenergebnis, nachdem die Vorverarbeitung abgeschlossen wurde.
Die Vorverarbeitung befasst sich im Wesentlichen damit, die Bilddaten in das richtige Format zu bringen. Von der Kamera werden Bilder im RGB-Format mit einer Auflösung von 320x240 Pixeln empfangen. Eine geringe Auflösung steigert hierbei die Anzahl der Frames die pro Zeiteinheit verarbeitet werden können und wirkt sich somit positiv auf die Echtzeitfähigkeit aus. Um noch mehr Rechenzeit zu sparen, werden im ersten Schritt die drei Farbkanäle zu einem im Graubild-Format zusammengefasst. Dieser dient jedoch nur als Zwischenschritt, um daraus ein Schwarz-Weiß-Bild zu erzeugen. Das Hintergrundbild, das mit Hilfe der oben genannten Funktion erzeugt wurde, liegt ebenfalls in diesem Format vor. Daher kann im Schritt ein Vergleich des aktuellen Bildes mit dem Hintergrund stattfinden. Dies geschieht über eine einfache XOR-Verknüpfung jedes Pixels mit dem entsprechenden Bildelement aus dem Hintergrundbild. Bereiche, ohne Personen sind in beiden Bildern gleich, sodass diese Regionen schwarz im Ergebnis werden. Nur dort wo Personen den Hintergrund überdecken, sind diese als weiße Umrisse sichtbar. Abbildung 4 zeigt ein Zwischenergebnis, nachdem die Vorverarbeitung abgeschlossen wurde.
[[Datei:Simulink_BV_Vorverarbeitung.png|600|thumb|center|Abb.4: Zwischenergebnis nach der Vorverarbeitung]]
[[Datei:Simulink_BV_Vorverarbeitung.png|700|thumb|center|Abb.4: Zwischenergebnis nach der Vorverarbeitung]]


==Fazit==
==Fazit==

Version vom 27. Januar 2016, 20:58 Uhr

Autoren: Asaad Al-Suleihi, Tim Salinski
Betreuer: Prof. Schneider
→ zurück zum Hauptartikel: Angewandte Elektrotechnik (WS 15/16)

Aufgabe

Simulink Bildverarbeitung mit einem Raspberry Pi 2

Abb.1: Vorlage für diese Aufgabe - PKW zählen mit Simulink


Erwartungen an die Projektlösung

  • Lesen Sie den Mathworks Artikel
  • Planen Sie den Aufbau
  • Beschaffen Sie die Bauteile
  • Realisierung des Aufbaus
  • Zählen Sie in Echtzeit, die Personen, die an der Kamera verübergehen
  • Machen ein spektakuläres Video, welches die Funktion visualisiert
  • Test und wiss. Dokumentation
  • Live Vorführung während der Abschlusspräsentation


Schwierigkeitsgrad

Anspruchsvoll (***)


Einleitung

Diese Aufgabe wurde im Rahmen der Lehrveranstaltung "Angewandte Elektrotechnik" im Masterstudiengang "Business & Systems Engineering" vergeben und bearbeitet. Dieser Wiki-Artikel stellt das Vorgehen dar und zeigt den Lösungsweg auf. Dabei wird darauf eingegangen welche Hard- und Software benötigt wird, wie der Algorithmus zur Bildverarbeitung funktioniert und welche Möglichkeiten zur Verbesserung oder Weiterentwicklung bestehen.


Aufgabenstellung

Die Aufgabe bestand im Wesentlichen darin mit Hilfe von Simulink einen Algorithmus zur Bildverarbeitung zu entwickeln mit dem es möglich ist Personen im Bild zu finden und zu zählen. Dieses Programm sollte dabei auf einer Zielhardware,in diesem Fall ein Raspberry Pi 2, ausgeführt werden können. Die zu verarbeitenden Videodaten stammen von einer Kamera, die per USB-Verbindung an den Pi angeschlossen wird. Auf diese Weise können Live-Bilder in Echtzeit verarbeitet werden. Der mit dem Pi verbundene PC dient lediglich zur Darstellung der Ergebnisse.

Als Vorlage[1] für diese Aufgabe wurde ein Projekt von MathWorks verwendet. Wie in Abbildung 2 zu erkennen ist, war dabei das Ziel Fahrzeuge auf einer Straße zu erkennen und so Aussagen über das Verkehrsaufkommen machen zu können.

Abb.2: Ergebnis des Vorlageprojektes - Gefundene PKW werden im Bild markiert

Bei der Entwicklung der Software für dieses Projekt wurde sich zu Nutze gemacht, dass die Fahrzeuge auf der beobachteten Straße sich mit der vorgeschriebenen Geschwindigkeit bewegen. Unter dieser Vorraussetzung konnte ein Zeitintervall bestimmt werden, das ein Fahrzeug benötigt, um vollständig durch das Bild zu fahren. Bei langsamen PKW bestand die Möglichkeit diese doppelt zu zählen, weil die Fahrzeuge nicht getrackt wurden und in einem fixen Intervall von 15 Sekunden Daten ausgewertet wurden. Außerdem konnten Autos, die z.B. durch Stau zum Stillstand gekommen sind, Teil des Hintergrundes werden, wodurch beim Wiederlosfahren diese Fahrzeuge als neue Objekte behandelt wurden.

Ziel des Personen-Zählers ist es, dass Personen, die in mehr als nur einem Bild zu sehen sind, nicht mehrfach gezählt werden. Der Algorithmus funktioniert also unabgängig von Geschwindigkeit mit der sich jemand durch das Bild bewegt. Darüber hinaus soll es möglich sein im Bild stehenzubleiben ohne, dass es dadurch zu Fehlern am Zählerstand kommt.


Benötigtes Material

Neben ein Entwicklungsrechner mit MATLAB/Simulink wird folgendes benötigt:

  • Raspberry Pi 2
  • MicroUSB-Netzteil 5V und mindestens 1A
  • MicroSD-Speicherkarte mit mindestens 4GB Speicherplatz
  • CAT-5 Netzwerkleitung zur direkten Kommunikation mit dem Raspberry Pi. Alternativ kann das Raspberry Pi an einem Netzwerk angebunden werden, an dem der Entwicklungsrechner auch hängt.
  • Webcam mit V4L2-Unterstützung, z.B. Logitec C310
  • Optional ist ein HDMI-Kabel, falls man das Programm auf dem Raspberry Pi als Stand-Alone ohne Rückkopplung an dem Entwicklungsrechner betreibt bzw. die Video-Ausgabe direkt aus dem Raspberry Pi abzweigt.

Vorgehen

Verbindung zum Raspberry Pi 2 aufbauen

Support Package für Raspberry 2 installieren und konfigurieren

Einfügen von Hardware Support Packages unter MATLAB
Auswahl des Hardware Support Package für Raspberry Pi


Damit Simulinkmodelle für den Raspberry Pi kompiliert und auf der Hardware aufspielt werden können wird eine zusätzliche Toolkette - ein Hardware Support Package - benötigt. Um den Support Package für den Raspberry Pi zu installieren wählt man in MATLAB auf der Home-Oberfläche die Option Get Hardware Support Package. Im folgenden Fenster wählt man die Installationsquelle Internet. Aus der Übersicht aller verfügbaren Paketen wird das Paket:

Raspberry Pi

ausgewählt. Nach der Installation kann die Einrichtung des Raspberry Pi vorgenommen werden.

Support Package für Kamera installieren

Bildverarbeitung

Die Bildverarbeitung erfolgt mit Simulink in mehreren Phasen. Bevor das Modell gestartet wird, muss der Modus festgelegt werden, der ausgeführt werden soll. Das geschieht mit Hilfe der Funktion "StarteBildverarbeitung.m". Es lässt sich dabei zwischen der Online-Version, die die Live-Kamerabilder verwendet, und der Offline Variante, die ein aufgenommenes Video nutzt, wählen. Außerdem wird in dieser Funktion das Hintergrundbild bestimmt, das später dazu dient Personen zu entdecken, die sich von diesem abheben. Alle weiteren Schritte sind im Programmablaufplan aufgelistet, der in Abbildung 3 zu sehen ist. Im Folgenden wird jede der aufgeführten Phasen kurz erläutert.

Abb.3: Zusammengefasster PAP mit den wesentlichen Abschnitten der Bildverarbeitung

Vorverarbeitung

Die Vorverarbeitung befasst sich im Wesentlichen damit, die Bilddaten in das richtige Format zu bringen. Von der Kamera werden Bilder im RGB-Format mit einer Auflösung von 320x240 Pixeln empfangen. Eine geringe Auflösung steigert hierbei die Anzahl der Frames die pro Zeiteinheit verarbeitet werden können und wirkt sich somit positiv auf die Echtzeitfähigkeit aus. Um noch mehr Rechenzeit zu sparen, werden im ersten Schritt die drei Farbkanäle zu einem im Graubild-Format zusammengefasst. Dieser dient jedoch nur als Zwischenschritt, um daraus ein Schwarz-Weiß-Bild zu erzeugen. Das Hintergrundbild, das mit Hilfe der oben genannten Funktion erzeugt wurde, liegt ebenfalls in diesem Format vor. Daher kann im Schritt ein Vergleich des aktuellen Bildes mit dem Hintergrund stattfinden. Dies geschieht über eine einfache XOR-Verknüpfung jedes Pixels mit dem entsprechenden Bildelement aus dem Hintergrundbild. Bereiche, ohne Personen sind in beiden Bildern gleich, sodass diese Regionen schwarz im Ergebnis werden. Nur dort wo Personen den Hintergrund überdecken, sind diese als weiße Umrisse sichtbar. Abbildung 4 zeigt ein Zwischenergebnis, nachdem die Vorverarbeitung abgeschlossen wurde.

Abb.4: Zwischenergebnis nach der Vorverarbeitung

Fazit

Youtube-Video

Quellen

  1. [1]Vorlage MathWorks. Website von MathWorks. Abgerufen am 02. Januar 2016.



→ zurück zum Hauptartikel: Angewandte Elektrotechnik (WS 15/16)