Entwicklung einer kamerabasierten Legoteil Zählmaschine: Unterschied zwischen den Versionen
(10 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
Zeile 29: | Zeile 29: | ||
# Test und wiss. Dokumentation der Ergebnisse | # Test und wiss. Dokumentation der Ergebnisse | ||
==Objekterkennung mit Matlab== | |||
In folgenden Kapiteln werden grundlegende Themen zur Klassifizierung von Legoteilen behandelt. Zum einen wird ein möglicher Hardwareaufbau gezeigt und zum anderen werden Programmabschnitte der Software beschrieben. | |||
===Beschreibung der Hardwarekomponenten=== | |||
[[Datei:MaschineHardware.jpg|350px|thumb|right|Geplanter Hardwareaufbau]] | |||
Die LEGO-Bauteile stammen aus EV3- und NXT-Basis- und Ergänzungssets und werden in eine Kunststoffkiste umgefüllt. Diese Kiste wird in eine Vorrichtung gestellt, die gekippt werden kann. Durch zunächst leichtes Kippen legen sich die ersten Teile an eine 90 Grad zur offenen Kiste befindlichen Wand, die aus Vorder- und Rückwand besteht, wobei sich Letztere dicht vor einem Förderband befindet. Die mit der Kiste bewegliche Vorderwand fördert mit ihrer Vorderkante vereinzelte LEGO-Teile auf das Förderband. Sowohl die Wände als auch das Förderband haben seitliche Begrenzungen, so dass die Bauteile nicht aus der Maschine fallen können; diese Begrenzungen können außerdem durch Verengen zum weiteren Vereinzeln genutzt werden. | |||
Sollte sich dieses Verfahren als nicht erfolgreich erweisen, wäre alternativ eine Vorsortierung durch Sieben denkbar; d. h. aus der Kiste gelangen die Teile in eine Schüttelvorrichtung, welche die Teile durch zunächst feine, später gröbere Löcher auf das o. g. Förderband fallen lässt. | |||
Das Kamerasystem besteht aus einer handelsüblichen Webcam mit einer Auflösung von 1920x1080 Pixeln und einer Ringbeleuchtung. Die Pixelanzahl kann noch verringert werden, damit ein geringeres Datenvolumen im Programm verarbeitet werden muss. Die Kamera wird in einer zur Seite und nach oben lichtdichten, aber innen beleuchteten Box über dem Förderband installiert. Diese Box dient zur Herstellung immer identischer Lichtverhältnisse in der Box, damit die von der Kamera aufgenommenen Bilder qualitativ konstant sind und die Maschine unabhängig von wechselnden äußeren Lichtverhältnissen (Sonne, Dunkelheit) zuverlässig arbeiten kann. | |||
===Farbanalyse=== | |||
[[Datei:P24.jpg|350px|thumb|right|Binärbild zum weißen Farbbereich]] | |||
Im ersten Schritt in der Software wird die Farbe analysiert. Jede zu berücksichtigende Farbe bekommt eine Matrix in der eine 1 an einem Bildpunkt gesetzt wird , wenn sich an diesem Punkt die Farbe befindet und eine 0, wenn dies nicht der Fall ist. Für die Farbe "Weiß" ensteht das Binärbild das rechts zu sehen ist. | |||
===Flood-Filling=== | |||
[[Datei:P34.jpg|350px|thumb|right|Ergebnis nach dem Flood-Filling]] | |||
Im nächsten Schritt werden Regionen gefunden und gefüllt in jedem Binärbild zu den einzelnen Farben. Dazu wird durch den Flood-Filling-Alghorithmus zusammenhängende Bereiche erkannt. Wodurch das rechts liegende Bild entsteht. | |||
===Moore-Neighbour-Tracing-Alghorithmus=== | |||
[[Datei:MooreN.jpg|350px|thumb|right|Der Weg des Bugs]] | |||
Der Grundlegende Ablauf dieses Verfahrens geht nach folgendem Schema vor: | |||
Als Beispiel dient uns ein Marienkäfer, dessen Weg in der rechten Abbildung zu sehen ist. Der erste Schritt ist auf dem Bild nach dem ersten schwarzen Pixel ( in der Abbildung ist dieser rosa ) zu suchen. In diesem Beispiel wurde in der linken unteren Ecke angefangen den ersten Pixel zu untersuchen, ob dieser schwarz ist. Darauf wird der darüber liegende untersucht. Dies wird so lange fortgeführt bis die linke obere Ecke erreicht ist und darauf folgt die gleiche Prozedur von dem rechten Pixel des Startpixels aus. Dort ist dann in der dritten Zeile ein schwarzer Pixel gefunden worden, worauf nun der zweite Schritt des Alghorithmus beginnt. In diesem zweiten Schritt wird der nächste Punkt des Objektes gesucht. Der Marienkäfer wandert also einen Schritt zurück, aus der Richtung wo er hergekommen ist und geht nun die Nachbarpixel des Startpixels P0 im Uhrzeigersinn ab. Die blaue Linie beschreibt diesen Weg. Wenn der Käfer auf einen schwarzen Pixel stößt ist dies der neue Startpixel P und der zweite Schritt des Alghorithmus wird wiederholt. Dieser Schritt wiederholt sich so oft, bis wieder der erste Startpixel erreicht ist. Nun werden in einem dritten Schritt alle analysierten schwarzen Pixel gesichert. Von dem ersten Startpixel P0 aus können nun weitere Objekte gesucht werden, indem der erkannte Umriss sowie dessen enthaltene Pixel weiß im Bild eingezeichnet werden und wieder mit dem ersten Schritt von P0 aus begonnen wird. | |||
===Ausgabe einer Ist-Liste=== | |||
Für jedes Objekt hat man nun eine Matrix und deren Länge x(=Umfangslänge). Jetzt wird jede Umfangslänge eines Objektes in Kombination mit dessen Farbe in der Datenbank gesucht und nachdem alle Teile abgeglichen wurden, werden die Seriennummern der Teile in einer Excel-Tabelle ausgegeben. | |||
===Ergebnis=== | |||
Die Software ist nunmehr dazu in der Lage, mit einer Fehlerrate von null Prozent ein Teil in 0,73 Sekunden zu erkennen. Diese Zahlen kommen durch zwei Testdurchläufe mit einmal neun und einmal sieben Legoteilen unter der Linse und dem Einsatz des Prozessors Xeon E3-1231 v3 von Intel zustande. | |||
Als Ergebnis kann festgehalten werden, dass die Bildverarbeitungssoftware für des "`Lego Mindstorm Education NXT Base Set (9797)"' mit 431 Teilen abzüglich der Elektronikbauteile nur 5 Minuten und 16 Sekunden für die Berechnung in Anspruch nehmen wird. Bei einer Abdunklung und Schaffung einer gleichmäßigen Beleuchtung, wie in der "`Beschreibung der Hardwarekomponenten"' dargestellt, ist mit keinen Fehlern zu rechnen. | |||
<!-- | |||
== Anforderung == | == Anforderung == | ||
Besuch der Veranstaltung [[Praxisseminar]] | Besuch der Veranstaltung [[Praxisseminar]] | ||
--> | |||
== Empfohlene Zusatzkurse == | == Empfohlene Zusatzkurse == | ||
*[[Matlab/Simulink]] | *[[Matlab/Simulink]] | ||
*[[Bild-_und_Signalverarbeitung Bild- und Signalverarbeitung]] | *[[Bild-_und_Signalverarbeitung|Bild- und Signalverarbeitung]] | ||
<!-- | |||
== Zielsetzung zum: == | |||
21.05.2014 | |||
#Aufbauen einer Datenbank | |||
#Programmteil schreiben der die Datenbank einbindet | |||
#Farberkennung verbessern | |||
--> | |||
== Literatur == | == Literatur == | ||
*[http://extras.springer.com/2011/978-3-642-13096-0 '''Demant''', C.; '''Streicher-Abel''', B.; '''Springhoff''', A.: ''Industrielle Bildverarbeitung.'' Heidelberg: Springer, 3. Auflage 2011. ISBN 978-3-642-13096-0] | *[http://extras.springer.com/2011/978-3-642-13096-0 '''Demant''', C.; '''Streicher-Abel''', B.; '''Springhoff''', A.: ''Industrielle Bildverarbeitung.'' Heidelberg: Springer, 3. Auflage 2011. ISBN 978-3-642-13096-0] |
Aktuelle Version vom 20. Januar 2015, 22:52 Uhr
Autor: Michael Deitel
Betreuer: Prof. Schneider
Art: Projektarbeit
Thema
Jedes Semester mühen sich die Studierenden mit dem Zählen der Legoteile beim Ausleihen und der Rückgabe. In dieser studentischen Arbeit gilt es eine Maschine zu entwickeln, die Legoteile vereinzelt und diese automatisch zählt.
Ziel
Digitales Zählen aller Legoteile in unter 10 Minuten und Ausgabe eine Soll-Ist Liste.
Aufgabenstellung
- Erkennen Sie die Bauteile eines EV3 und NXT Basis- und Ergänzungssets mithilfe einer Kamera (Webcam).
- Bildverarbeitung mit Matlab
- Die Form der Bauteile muss visuell erkannt und gezählt werden.
- Als Ausgabeformat ist eine Soll-Ist-Liste zu erstellen, auf der Fehlteile mit Bestellnummer zur Nachbestellung aufgelistet werden.
- Optimierung der Algorithmen auf Echtzeitfähigkeit.
- Die Fehlerrate soll bei 0% liegen.
- Test und wiss. Dokumentation der Ergebnisse
Objekterkennung mit Matlab
In folgenden Kapiteln werden grundlegende Themen zur Klassifizierung von Legoteilen behandelt. Zum einen wird ein möglicher Hardwareaufbau gezeigt und zum anderen werden Programmabschnitte der Software beschrieben.
Beschreibung der Hardwarekomponenten
Die LEGO-Bauteile stammen aus EV3- und NXT-Basis- und Ergänzungssets und werden in eine Kunststoffkiste umgefüllt. Diese Kiste wird in eine Vorrichtung gestellt, die gekippt werden kann. Durch zunächst leichtes Kippen legen sich die ersten Teile an eine 90 Grad zur offenen Kiste befindlichen Wand, die aus Vorder- und Rückwand besteht, wobei sich Letztere dicht vor einem Förderband befindet. Die mit der Kiste bewegliche Vorderwand fördert mit ihrer Vorderkante vereinzelte LEGO-Teile auf das Förderband. Sowohl die Wände als auch das Förderband haben seitliche Begrenzungen, so dass die Bauteile nicht aus der Maschine fallen können; diese Begrenzungen können außerdem durch Verengen zum weiteren Vereinzeln genutzt werden. Sollte sich dieses Verfahren als nicht erfolgreich erweisen, wäre alternativ eine Vorsortierung durch Sieben denkbar; d. h. aus der Kiste gelangen die Teile in eine Schüttelvorrichtung, welche die Teile durch zunächst feine, später gröbere Löcher auf das o. g. Förderband fallen lässt. Das Kamerasystem besteht aus einer handelsüblichen Webcam mit einer Auflösung von 1920x1080 Pixeln und einer Ringbeleuchtung. Die Pixelanzahl kann noch verringert werden, damit ein geringeres Datenvolumen im Programm verarbeitet werden muss. Die Kamera wird in einer zur Seite und nach oben lichtdichten, aber innen beleuchteten Box über dem Förderband installiert. Diese Box dient zur Herstellung immer identischer Lichtverhältnisse in der Box, damit die von der Kamera aufgenommenen Bilder qualitativ konstant sind und die Maschine unabhängig von wechselnden äußeren Lichtverhältnissen (Sonne, Dunkelheit) zuverlässig arbeiten kann.
Farbanalyse
Im ersten Schritt in der Software wird die Farbe analysiert. Jede zu berücksichtigende Farbe bekommt eine Matrix in der eine 1 an einem Bildpunkt gesetzt wird , wenn sich an diesem Punkt die Farbe befindet und eine 0, wenn dies nicht der Fall ist. Für die Farbe "Weiß" ensteht das Binärbild das rechts zu sehen ist.
Flood-Filling
Im nächsten Schritt werden Regionen gefunden und gefüllt in jedem Binärbild zu den einzelnen Farben. Dazu wird durch den Flood-Filling-Alghorithmus zusammenhängende Bereiche erkannt. Wodurch das rechts liegende Bild entsteht.
Moore-Neighbour-Tracing-Alghorithmus
Der Grundlegende Ablauf dieses Verfahrens geht nach folgendem Schema vor: Als Beispiel dient uns ein Marienkäfer, dessen Weg in der rechten Abbildung zu sehen ist. Der erste Schritt ist auf dem Bild nach dem ersten schwarzen Pixel ( in der Abbildung ist dieser rosa ) zu suchen. In diesem Beispiel wurde in der linken unteren Ecke angefangen den ersten Pixel zu untersuchen, ob dieser schwarz ist. Darauf wird der darüber liegende untersucht. Dies wird so lange fortgeführt bis die linke obere Ecke erreicht ist und darauf folgt die gleiche Prozedur von dem rechten Pixel des Startpixels aus. Dort ist dann in der dritten Zeile ein schwarzer Pixel gefunden worden, worauf nun der zweite Schritt des Alghorithmus beginnt. In diesem zweiten Schritt wird der nächste Punkt des Objektes gesucht. Der Marienkäfer wandert also einen Schritt zurück, aus der Richtung wo er hergekommen ist und geht nun die Nachbarpixel des Startpixels P0 im Uhrzeigersinn ab. Die blaue Linie beschreibt diesen Weg. Wenn der Käfer auf einen schwarzen Pixel stößt ist dies der neue Startpixel P und der zweite Schritt des Alghorithmus wird wiederholt. Dieser Schritt wiederholt sich so oft, bis wieder der erste Startpixel erreicht ist. Nun werden in einem dritten Schritt alle analysierten schwarzen Pixel gesichert. Von dem ersten Startpixel P0 aus können nun weitere Objekte gesucht werden, indem der erkannte Umriss sowie dessen enthaltene Pixel weiß im Bild eingezeichnet werden und wieder mit dem ersten Schritt von P0 aus begonnen wird.
Ausgabe einer Ist-Liste
Für jedes Objekt hat man nun eine Matrix und deren Länge x(=Umfangslänge). Jetzt wird jede Umfangslänge eines Objektes in Kombination mit dessen Farbe in der Datenbank gesucht und nachdem alle Teile abgeglichen wurden, werden die Seriennummern der Teile in einer Excel-Tabelle ausgegeben.
Ergebnis
Die Software ist nunmehr dazu in der Lage, mit einer Fehlerrate von null Prozent ein Teil in 0,73 Sekunden zu erkennen. Diese Zahlen kommen durch zwei Testdurchläufe mit einmal neun und einmal sieben Legoteilen unter der Linse und dem Einsatz des Prozessors Xeon E3-1231 v3 von Intel zustande. Als Ergebnis kann festgehalten werden, dass die Bildverarbeitungssoftware für des "`Lego Mindstorm Education NXT Base Set (9797)"' mit 431 Teilen abzüglich der Elektronikbauteile nur 5 Minuten und 16 Sekunden für die Berechnung in Anspruch nehmen wird. Bei einer Abdunklung und Schaffung einer gleichmäßigen Beleuchtung, wie in der "`Beschreibung der Hardwarekomponenten"' dargestellt, ist mit keinen Fehlern zu rechnen.
Empfohlene Zusatzkurse
Literatur
- Demant, C.; Streicher-Abel, B.; Springhoff, A.: Industrielle Bildverarbeitung. Heidelberg: Springer, 3. Auflage 2011. ISBN 978-3-642-13096-0
- Hesse, S.; Schnell, G.: Sensoren für die Prozess- und Fabrikautomation. Wiesbaden: Vieweg+Teubner Verlag, 5. Auflage, 2011. ISBN 978-3-8348-0895-0
- Beyerer, J.; Puente León, F., Frese, C.: Automatische Sichtprüfung. Heidelberg: Springer, 2012. ISBN 978-3-642-23965-6
- Steinmeier, J.: Bildanalyse. Heidelberg: Springer, 2008. ISBN 978-3-540-79742-5
- Tönnies, K. D.: Grundlagen der Bildverarbeitung. München: Pearson Studium 2005. ISBN 3-8273-7155-4
Weblinks
- BrickIt - Dynaway Sorting Plant
- LEGO Axle Sorter AS-L40A
- LEGO Mindstorms NXT Vision Guided Brick Sorter ver1
- Realtime LEGO Brick Image Retrieval
- MATLAB and Octave Functions for Computer Vision and Image Processing
Siehe auch
→ zurück zum Hauptartikel: Studentische Arbeiten