Farberkennung mit Kamera auf Relais zum ansteuern einer Kleinsteuerung

  • Guten Abend,

    Die Frage ob es möglich ist, ein Bild zu verarbeiten ist mir beantwortet wurden. Aber die Frage ist, gibt es schon fertige Skripts dafür? Ich bin leider Neueinsteiger und wollte dies erstmal testen, ob es möglich ist dies Fehlerfrei zu machen, und zwar geht es um folgendes:

    Ich habe eine Müllförderung die in mehrere Silos rein läuft, das Material ist das selbe nur werden sie farblich getrennt. Nun müsste ich die Farbe des Materials erkennen, heißt z.B. Grün , Gelb, Blau, Schwarz, usw. und die Zustände dann auf meine Kleinsteuerung übertragen über Relais oder Transistoren. Ich habe nur das Problem das für mich der Pi eine Blackbox ist. Ich habe Ahnung von dem Programmieren von Siemens Kleinsteuerungen, aber das Programmieren von Pis und Co leider nicht. Und ich wollte gerne mal sehen wie zuverlässig es ist und welche Kosten auf mich zukommen. Um dann in die Materie einzutauchen.

    War brauch ich alles?

    Einen PI Bausatz
    Eine Cam
    Ein Übertragungsmittel (Relais, Transistoren)
    was noch?


    Danke

    Timo

  • Farberkennung mit Kamera auf Relais zum ansteuern einer Kleinsteuerung? Schau mal ob du hier fündig wirst!

  • Vergiss die Hardware. Das ist alles irrelevant, solange du die Bilderkennung nicht vernuenftig geloest hast. Und das ist ein notorisch fickliges Thema, an dem man viel feilen muss, und viel programmieren. Da gibt es keine simplen Loesungen, sondern nur eine ganze Reihe von Bausteinen, die man mit Erfahrung und ausprobieren kombinieren muss.

    So ist Bilderkennung zB auch stark Belichtungsabhaengig - wenn deine Anlage nicht im Innenraum ist, musst du mindestens die Kamera vor direkter und moeglichst sogar indirekter Sonneneinstrahlung schuetzen. Und welches Verfahren sich dann am besten eignet zur Klassifikation haengt dann wieder stark von deinen eigentlichen Videodaten ab.

    Ich fand den Kurs auf http://www.pyimagesearch.com/ ganz ansprechend, es gibt auch einiges an kostenlosem Material dort zum ausprobieren, und natuerlich Stackoverflow. Ein bisschen eigener Code zum erkennen einer Wasseruhr ist hier https://github.com/deets/brombeer…zaehler/base.py - und das ist auch das Niveau von Programmierung, welches dich erwartet. Nicht unbedingt in der Form mit objektorientierung, aber die Verwendung der OpenCV auf diesem Niveau ist schon was du brauchst.

  • Hallo Timo,

    vielleicht ist die Pixy CMUcam5 etwas für dich - die kann zumindest 7 verschiedene Farben erkennen und das laut Beschreibung auch unter ungünstigen Lichtverhältnissen. Unter diesem Link findest du die Projektbeschreibung und auch ein Wiki - vielleicht liest du dich da mal ein um zu entscheiden, ob du dein Projekt mit der Lösung umsetzen kannst.

  • Ich bin skeptisch. Das Ding ist definitiv cool für das was es tun soll. Aber die sehr speziellen und knalligen Farben sind extra dafür optimiert. In dem von mir verlinkten Tutorial werden auch solche Probleme behandelt. Dann kann man das ausprobieren.


    Gesendet von iPhone mit Tapatalk

  • Danke für die Antworten, ich werde mir mal den Kurs durchlesen. Die Anlage ist in einer Halle. Das sind 3x3m große Rollen die sich drehen. Die haben eine gute nicht ganz optimale, aber denke eine ausreichende Belichtung. Also ändert sich die Farbe des Objektes vielleicht alle 2-3 Std.

    Einmal editiert, zuletzt von Timodersuchende (14. September 2016 um 11:58)

  • Wenn du kannst, poste mal Bilder (wenn moeglich aus der finalen Perspektive der Kamera) von allen verschiedenen Objekten, die erkannt werden sollen. Das brauchst du eh fuer eigene Experimente. Dann kann man das mal beurteilen. Noch besser kurze Videos, weil auch optische EIgenschaften der Kamera die zB zu Bewegungsunschaerfe fuehren relevant sein koennen.

    Und selbst wenn die Farbe des Objektes sich nur alle paar Stunden aendert, kann das einen Unterschied machen - dein Programm aendert sich ja nicht mit... du musst also sicherstellen, dass du Testdaten auch ueber den gesamten Belichtungsbereich bekommst. Also eben von morgens bis abends, wegen mir einmal pro Stunde. Klingt nach viel Arbeit, ist aber unabdingbar.

    Wenn du mit stehenden Bildern dann eine robuste Erkennung hast, kannst du daran gehen, das ganze in eine reaktive Software umzumodeln.

  • Die Farbe sieht gut aus, die ist schoen unterschiedlich zu allem natuerlichen/dem Kontext. Allerdings ist die Perspektive natuerlich ziemlich wertlos, weil da die ganze Fahne noch dran haengt usw.

    Wenn alle Farben so knallig sind, kann tatsaechlich das Produkt von doing eine Moeglichkeit sein.

  • Die Farbe ist so knallig, die Perspektive ist Nacher auf das Produkt gerichtet und vielleicht 1 Meter weg, also direkt dran. War leider nur das einzige Objekt was ich zeigen kann, weil ich nicht da bin.

    Was bräuchte ich denn dann die Kamera und den Rechner (mit Netzteil) warscheinlich und was was die Signale weiter leitet. Oder noch mehr Sachen, lese mich nachm kaffee da mal ein.

    Einmal editiert, zuletzt von Timodersuchende (14. September 2016 um 15:07)

  • Hallo Timo,

    was brauchst Du noch?

    • Kenntnisse der gängigen Farbmodelle (RGB, HSV)
    • Beschäftigung mit einer Programmiersprache, die so brauchbar ist, dass sie zur Lösung führt (z. B. C / C++, Icon, Lazarus)
    • Aktion: Farberkennung
    • Reaktion: Was passiert in Abhängigkeit der erkannten Farbe?
    • Steuerung irgendeiner Hardware, Schaltung, Logik, Motorik ... Ein Teil davon ist mit dem Raspberry Pi möglich. Einen anderen Teil wirst Du mit dem vorhandenen Industriestandard machen müssen, der von Siemens gesetzt wurde. Das heißt, hier müssen zwei Systeme über eine gemeinsame Schnittstelle kommunizieren lernen, also dann noch
    • Kommunikation zwischen den Systemen

    Icon habe ich deswegen aufgeführt, weil ich eine umfangreiche Anwendung geschrieben habe, deren Kern sich mit Farberkennung, Farben erlernen beschäftigt. Die Anwendung selber ermittelt den Widerstandswert eines photographierten Widerstandes. Das soll irgendwann (nicht mehr dieses Jahr) in eines der kommenden Icon-Tutorials einfließen.


    Wie meine Vorredner schon geschrieben haben: Die Farberkennung ist nicht trivial. Z.B. wo ist der Unterschied zwischen Braun und Schwarz? Hier wird die Schwäche des RGB-Modells ganz schnell deutlich. Oder wie grau darf Weiß sein, um noch als Weiß akzeptiert zu werden? Wie groß muss ein Farbanteil sein, um ihn bei schlechter Beleuchtung noch von Schwarz unterscheiden zu können? Welcher Farbe wird etwas zugeordnet, wenn kein Farbanteil dominiert: Hier hat man die Auswahl zwischen Weiß, Grau und Schwarz.


    All diese Probleme löst das HSV-Farbmodell. Wenn, ja, wenn da nicht ein Fehler im Algorithmus liegen würde, den man allerdings erst feststellt, wenn man ganz tief in die Materie "Farben erlernen" eingestiegen ist.

    Und richtig spannend wird es bei reflektierenden Farben (silber, gold). Diese Farbpigmente bestehen aus reflektierenden und absorbierenden Bestandteilen. Erwicht man beim Farben-Lernen ein Pixel mit einem überwiegend reflektierenden Anteil, dann wirkt das wie ein Lichtblitz (grelles Weiß mit unbedeutenden Farbanteilen). Ein Pixel daneben reflektiert das Pigment einfallendes Licht in eine andere Richtung. Hier kommt der Farbanteil besser durch. Hier muss also zwischen zwei Farbcodes unterschieden werden, um eindeutig weiß, gelb, gold bzw. weiß, grau, silber trennen zu können.

    Und in Deinem Projekt wird es wahrscheinlich auch darum gehen, wie man mit Kratzern umgeht. Kratzer, können die wahre Farbe heller erscheinen lassen, weil nur ein geringer Teil zur Kamera zurückkommt - der größter Anteil wird abgelenkt.
    Der Kratzer kann aber auch mit Schmutz gefüllt sein. Dann wird's Schwarz.

    Also: Wieviel Anteil von z.B. "Nicht-Grün" darf bei einer Probe dabei sein, um noch als "Grün" erkannt zu werden?

    Somit gibt es schon mal eine Erkennnis: Pro Teil reicht keine einmalige Erfassung der Farbe, sondern die über mehrere Erfassungen gemittelte Farbe wird es werden.


    Was mich allerdings wundert... Vor rund 18 - 20 Jahren habe ich recht viele Entsorgungsbetriebe beraten und Fördermittel von EU, Bund und Ländern beschafft, um solche und andere Sachen zu betreiben: Automatisierung, Erhöhung der Sortiertiefe, Erkennung von Farben und Formen, sortenreine Sortierung, ... . Auf zahlreichen Messen wurden seitdem Lösungen vorgestellt, die Kunststoffabfälle nicht nur nach Farben und Formen sondern auch nach Material trennen. Wobei das Material der Form zugeordnet wird (was so aussieht wie ein Shampoo der Firma XY ist aus PP, das einer anderen Firma aus PET etc.). Ich habe mal einen Betrieb besucht, der Tetrapaks schreddert und dann Pappe, Kunststoff und Aluminium zu 98 % sortenrein trennt.

    Eigentlich gibt es das, was Du suchst, schon sehr lange auf dem Markt.

    Beste Grüße

    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

    Einmal editiert, zuletzt von Andreas (16. Oktober 2017 um 00:17)

  • Ok, dann habe ich mich wohl falsch ausgedrückt. die Rollen werden produziert und an anderen Anlagen wieder abgerollt. Da spielt im Endeffekt wie Grün das Grün ist keine Rolle sondern nur das er Grün erkennt. Es geht darum, dass die Rolle abgerollt wird und in der Mitte des Prozesse wird ein teil der Rolle abgeschnitten und wiederverwertet und da ist ein Rohrsystem mit Weichen die über einigen S7 mit Profi Bus laufen. Es geht nur darum, dass erkannt wird welche Farbe die Rolle hat und es der S7 gesagt wird. Und das würde über Relaikontakt geschehen, meinetwegen 4 verschiedenen Eingängen die dann eine Steuerspannung erhalten. Und dementsprechend die Weichen fahren, also ist in dem Fall die Kommunikation zwischen den Anlagen so Realisierbar. Ich werde mich einfach mal ausprobieren und mir Paar Sachen kaufen, ich kann nur gewinn und wenn es an Erfahrung und Ehrgeiz ist.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!