Target Tracking: Unterschied zwischen den Versionen
Zeile 26: | Zeile 26: | ||
=== Objekterkennung (roter Ballon vor weißem Hintergrund) === | === Objekterkennung (roter Ballon vor weißem Hintergrund) === | ||
Um ein rotes Objekt in einem Live Videobild aus einem weißen Hintergrund zu selektieren müssen folgende Schritte durchgeführt werden: | Um ein rotes Objekt in einem Live Videobild aus einem weißen Hintergrund zu selektieren müssen folgende Schritte durchgeführt werden: | ||
# Im ersten Schritt muss jedes Frame aus dem rgb-Bild einzelt ausgelesen werden. <br /> [[Bild:Rak r2b1.jpg|100px |Schritt 1]] | # Im ersten Schritt muss jedes Frame aus dem rgb-Bild einzelt ausgelesen werden. <br /> [[Bild:Rak r2b1.jpg|100px |Schritt 1| ]]<br /> Quelle: http://arindambose.com/blog/?p=72 | ||
# Der zweite Schritte besteht darin sich nur den roten Teil des RGB-Bildes zu holen. <br /> [[Bild:Rak r2b5.jpg|100px |Schritt 2]] | # Der zweite Schritte besteht darin sich nur den roten Teil des RGB-Bildes zu holen. <br /> [[Bild:Rak r2b5.jpg|100px |Schritt 2]]<br /> Quelle: http://arindambose.com/blog/?p=72 | ||
# Darauf in wird das Bild aus dem rgb-Farbraum in ein Graustufenbild umgewandelt. <br /> [[Bild:Rak r2b2.jpg|100px |Schritt 3]] | # Darauf in wird das Bild aus dem rgb-Farbraum in ein Graustufenbild umgewandelt. <br /> [[Bild:Rak r2b2.jpg|100px |Schritt 3]]<br /> Quelle: http://arindambose.com/blog/?p=72 | ||
# Nun wird der rote Teil des RGB-Bildes vom Graubild subtrahiert. <br /> [[Bild:Rak r2b3.jpg|100px |Schritt 4]] | # Nun wird der rote Teil des RGB-Bildes vom Graubild subtrahiert. <br /> [[Bild:Rak r2b3.jpg|100px |Schritt 4]]<br /> Quelle: http://arindambose.com/blog/?p=72 | ||
# Auf das Graubild wird ein Median Filter eingesetzt um störende Verrauschungen zu entfernen. <br /> [[Bild:Rak r2b4.jpg|100px |Schritt 5]] | # Auf das Graubild wird ein Median Filter eingesetzt um störende Verrauschungen zu entfernen. <br /> [[Bild:Rak r2b4.jpg|100px |Schritt 5]]<br /> Quelle: http://arindambose.com/blog/?p=72 | ||
# Das gefilterte Bild wird nun in ein Binärbild umgewandelt. Die roten Objekte werden hierfür weiß gemacht der Rest wird schwarz. <br /> [[Bild:Rak r2b6.jpg|100px |Schritt 6]] | # Das gefilterte Bild wird nun in ein Binärbild umgewandelt. Die roten Objekte werden hierfür weiß gemacht der Rest wird schwarz. <br /> [[Bild:Rak r2b6.jpg|100px |Schritt 6]]<br /> Quelle: http://arindambose.com/blog/?p=72 | ||
<br /> | <br /> |
Version vom 19. Juni 2014, 18:50 Uhr
Autor: Martin Berysztak
Betreuer: Prof. Schneider
Ziel
Ein roter Luftballon soll in Bewegung vor einem weissen Hintergrund erkannt und vom Raketenwerfer getroffen werden.
Aufgabe
- Erkennen Sie den Luftballon vor seinem Hintergrund mit einer Webcam.
- Fokussieren Sie den Raketenwerfer auf den Luftballonschwerpunkt.
- Treffen Sie den Luftballon in einer Flugsequenz mit 3 von 4 Schüssen.
Lösung
Die Lösung der Aufgabenstellung teilt sich in drei Teilschritte:
Ansteuern des Raketenwerfers
Zur Lösung der Aufgabe ist der von getdigital.de vertriebene Raketenwerfer ist zur Lösung der Aufgabe nicht geeignet da so nur eine Ansteuerung über die gegebene Software möglich ist. Für die vorliegenden Lösung wurde ein Raketenwerfer mit einer neuen Ansteuerung über [| Arduino] entwickelt.
Bei Fragen zur Entwicklung der neuen Ansteuerung Jan Kifmann
Objekterkennung (roter Ballon vor weißem Hintergrund)
Um ein rotes Objekt in einem Live Videobild aus einem weißen Hintergrund zu selektieren müssen folgende Schritte durchgeführt werden:
- Im ersten Schritt muss jedes Frame aus dem rgb-Bild einzelt ausgelesen werden.
Quelle: http://arindambose.com/blog/?p=72 - Der zweite Schritte besteht darin sich nur den roten Teil des RGB-Bildes zu holen.
Quelle: http://arindambose.com/blog/?p=72 - Darauf in wird das Bild aus dem rgb-Farbraum in ein Graustufenbild umgewandelt.
Quelle: http://arindambose.com/blog/?p=72 - Nun wird der rote Teil des RGB-Bildes vom Graubild subtrahiert.
Quelle: http://arindambose.com/blog/?p=72 - Auf das Graubild wird ein Median Filter eingesetzt um störende Verrauschungen zu entfernen.
Quelle: http://arindambose.com/blog/?p=72 - Das gefilterte Bild wird nun in ein Binärbild umgewandelt. Die roten Objekte werden hierfür weiß gemacht der Rest wird schwarz.
Quelle: http://arindambose.com/blog/?p=72
Diese Schritte werden im Code während der While-schleife immer wieder für jedes Bild durchgeführt. Anhand dessen kann nun mit Hilfe des BlobAnalysis-Befehls nun die roten Objekte selktiert werden.
Objekt Tracking
Um das Objekt zu verfolgen wird auf die zuvor im vision.BlobAnalysis-Befehl ausgebenen und in der centroid-Variable gespeicherten Mittelwertskoordinaten zugegriffen. Außerdem wird die Tatsache genutzt, dass der Raketenwerfer etwas über dem Mittelpunkt des Kamarabildes schießt. Dieser befindet sich in einem Bereich von:
- X-Richtung: 330-380
- Y-Richtung: 360-290
Dadurch wird die Annahme getroffen, dass wenn das zu treffende Objekt sich in Bildmittelpunktbereich befindet, es getroffen wird. Dies wird erreicht indem anhand von if-Bedingungen und der Centroid Variable geprüft wird ob sich der Mittelpunkt des Objektes sich bereits im Abschussbereich befindet, wenn dies nicht der Fall ist soll der Raketenwerfer sich solange in diese Richtung bewegen.
Befinden sich nun der Mittelpunkt des Objektes oberhalb des Kameramittelpunktes, werden alle Bewegungen des Raketenwerfers eingestellt und das Objekt wird abgeschossen.
Bedienung des Tools
Ausblick
Aufgrund der gegeneben Hardware kann Raketenwerfer schnell bewegene Objekte schlecht treffen.
→ zurück zum Hauptartikel: Digitale Signal- und Bildverarbeitung SoSe2014