Problem: Farberkennung mit TXT und Kamera

Alles rund um TX(T) und RoboPro, mit ft-Hard- und Software
Computing using original ft hard- and software
Forumsregeln
Bitte beachte die Forumsregeln!
Antworten
moonflower
Beiträge: 8
Registriert: 18 Dez 2014, 15:30

Problem: Farberkennung mit TXT und Kamera

Beitrag von moonflower » 31 Dez 2014, 00:26

Hallo zusammen,

mein Sohn hat zu Weihnachten das TXT-Discovery Set geschenkt bekommen. Heute haben wir mal ausgiebig zusammen gebaut und herausgekommen ist eine Legostein-Sortieranlage. Sie soll 3 unterschiedliche Steinfarben erkennen und entsprechend sortieren. Nun sitze ich seit Stunden an der Programmierung und beiße mir die Zähne aus, die Farben zu unterscheiden. Egal, welche Farbe an Steinen ich scanne, es sind kaum Unterschiede feststellbar. Um der Sache auf den Grund zu gehen habe ich mal eine Testreihe angefertigt (siehe Excel-Datei unter). Mit den derzeitigen Ergebnissen ist nicht mal eine UNterscheidunng in rot oder grün möglich, geschweige denn in feineren Nuancen.

Ich hatte vor, zum Programmstart zunächst 3 unterschiedliche Steinfarben kalibrieren zu lassen und diese zu speichern. Das gelingt mir soweit auch ganz gut. Leider sind die Werte völlig unbrauchbar. Um Ausreißer zu vermeiden, scanne ich bei der Kalibrierung den Stein 5 mal im Abstand von 1 Sekunde und bilde den Mittelwert. Hilft aber alles nichts.

Hat noch jemand diese Beobachtung gemacht und / oder hat eine Idee, wie das in den Griff zu bekommen wäre?

Mir ist allerdings aufgefallen, dass in der Live-Anzeige im Kamerafenster nicht der blaue, sondern der rote Wert deutlich höher ist. Außerdem stimmen dort die Helligkeitswerte etwas besser. Das kann doch eigentlich nicht sein, dass es da einen so eklatanten Unterschied zwischen der Ansicht im Kamerafenster und den mit dem Farbsesnsor im Programm gemessenen Werten gibt.

Vielleicht kann sich nach Neujahr ja auch mal jemand von FT dazu melden. Ich denke, die Unterscheidung von Farben sollte schon möglich sein.

Hier der Link zur Excel-Tabelle der Testreihe mit zusätzlichen Angaben zum Aufbau und zur Beleuchtung:
https://onedrive.live.com/redir?resid=E ... file%2cxls

Und hier ein Foto des aktuellen Baufortschritts:
https://onedrive.live.com/redir?resid=E ... hoto%2cJPG

Wäre toll, wenn jemand hier einen Lösungsansatz hätte.

Viele Grüße
Martin

hamlet
Beiträge: 332
Registriert: 12 Jan 2011, 21:41

Re: Problem: Farberkennung mit TXT und Kamera

Beitrag von hamlet » 31 Dez 2014, 11:59

Hallo Martin,
Ich habe nur kurz mit der TXT-Cam bei einem Freund meiner Tochter gespielt, habe aber eine ähnliche Beobachtung gemacht: Habe ein ca. 50x50 Pixel Blau-Sensor-Feld in die Mitte des Bildes gesetzt und bei Funzel-Beleuchtung abwechselnd auf eine matt-quietsch-blaue Plastikverpackung und das beige-farbene Parkett gerichtet. Ergebnis: Kein signifikanter Unterschied der im Sensorfeld angezeigten Werte. Sie lagen immer um die 40. Ich dachte, dass ich etwas falsch gemacht hätte. Aber Deine Werte bestätigen meine Beobachtung.

Falls die Farb-Sensorfelder lediglich die entsprechenden RGB-Mittelwerte aller Pixel ausgeben, was ich vermute, wird eine brauchbare Farberkennung damit schwierig zu realisieren sein. Vermutlich hast Du Recht, dass die Automatik für Belichtung und Weißabgleich Dir einen Strich durch die Rechnung macht. Auch könnten Glanzlichter und abgesoffene Schattenbereiche die Mittelwerte versauen.

Eine Farberkennung im RGB-Farbraum ist wohl prinzipiell schwierig. Andere Produkte, z.B. die hier im Forum diskutierte PixyCam, arbeiten daher im HSV-Farbraum (http://de.wikipedia.org/wiki/HSV-Farbraum). Siehe Anhang.

Du könntest es mit einer gleichzeitigen (gleiche automatische Belichtung und Weißabgleich) Referenzmessung mit einem farbneutralen Objekt versuchen. Gibt's matt-graue Legosteine?
  • Für eine möglichst gleichmäßige und diffuse Beleuchtung sorgen um weiße Glanzlichter zu vermeiden: Deckenbeleuchtung, deine Halogenlampe auf eine weiße Wand gerichtet, oder ft-Lämpchen mit weißem Papier als Diffusor und möglichst großem Abstand. Die ft-Kamera scheint ja sehr lichtstark zu sein.
  • Matte Oberflächen der Testobjekte könnten auch helfen. ... Jetzt aber nicht alle Legosteine mit Schmirgelpapier bearbeiten (-;
  • Die von elektrolutz vorgeschlagene farbneutrale Schablone könnte Wunder wirken. Die könnte auch Deine Referenzwerte liefern.
  • Für das zu bestimmende Objekt und das Referenzfeld Farbsensorfelder aller drei RGB-Farben übereinander legen (wenn's geht, sonst nebeneinander)
  • Die RGB-Werte des Objektes auf die Referenzmessung normieren: Objektwert/Referenzwert
  • Mit den normierten Werten ist dann hoffentlich eine Farberkennung möglich. Evtl. aus den normierten RGB-Werten einen einzelnen Farbwert (Hue) errechnen.
Viel Glück,
Helmut

Anhang:
Ein Auszug aus der PixyCam Doku: http://www.cmucam.org/projects/cmucam5/ ... Background
"Pixy uses a hue-based color filtering algorithm to detect objects. Most of us are familiar with RGB (red, green, and blue) to represent colors. Pixy calculates the hue and saturation of each RGB pixel from the image sensor and uses these as the primary filtering parameters. The hue of an object remains largely unchanged with changes in lighting and exposure. Changes in lighting and exposure can have a frustrating effect on color filtering algorithms, causing them to break. Pixy’s filtering algorithm is robust when it comes to lighting and exposure changes and significantly better than previous versions of the CMUcam."
... Naja, da bei Deinen Messungen Blau-Werte immer prominent sind, hilft eine Umrechnung in den HSV-Farbraum auch nichts.
Ein einfacher Farbsensor-Algorithmus könnte folgendermaßen aussehen:
  • Alle Pixel des Sensorfeldes in den HSV-Farbraum (http://de.wikipedia.org/wiki/HSV-Farbraum) umrechnen.
  • Die zu hellen und zu dunklen Pixel, die unsichere Hue-Werte liefern, anhand des Value-Wertes verwerfen.
  • Eine Häufigkeitsverteilung (Histogramm) der Hue-(Farb)-Werte erstellen, wobei die einzelnen Pixel mit ihrer Farbsättigung gewichtet eingetragen werden.
  • Gibt's in dem Histogramm nur bei einem Hue-Wert ein prominentes Maximum, hat man eine Farbe erkannt und gibt den Mittelwert oder den Median der Verteilung als detektierten Hue-Wert aus.
Vielleicht ist ja in späteren RoboPro/TXT-Firmware-Versionen eine bessere Farberkennung realisiert.
Zuletzt geändert von hamlet am 31 Dez 2014, 13:53, insgesamt 6-mal geändert.

DirkW
Moderator
Beiträge: 550
Registriert: 10 Nov 2014, 16:16

Re: Problem: Farberkennung mit TXT und Kamera

Beitrag von DirkW » 31 Dez 2014, 12:07

Hallo Martin

ich habe mir deine Excel Tabelle angesehen. Die Werte die du dort stehen hast, zeigen das
die Kameraerkennung nicht richtig eingestellt ist.

Wenn du ein rotes Objekt vor der Kamera stehen hast, so muss bei den RGB-Werten der Rotanteil am höchsten sein.
Das ist in deiner Tabelle nicht der Fall. Bei dem grünen Objekten der Grünanteil am höchsten etc.

Auf deinem Bild ist die Kamera zu nah vor dem zu erkennenden Objekt. Versuche es einmal mit mehr Abstand, so 5 cm.
Normaler Lichteinfall sollte bei der Erkennung ausreichen.

Hier noch ein Tipp:
Schalte die Stromversorgung vom TXT und der Kamera ein. Öffne dein RoboPro Programm und gehe auf den
Registerreiter "Kamera". Jetzt setze das Häkchen "Kamera einschalten". Das Objekt sollte jetzt genau im Farbsensorfeld liegen.
Jetzt liest du die RGB-Werte aus.

Du kannst dir auch das Unterprogramm "Rot" vom "Hinderniserkenner 1" ansehen. Dort siehst du wie die Farberkennung funktioniert.
Es werden im Beispiel von der Hauptfarbe des Objekts (rot) die anderen Farben abgezogen und mit einem festen Wert verglichen.
Mit dem Unterprogramm kannst du etwas experimentieren. Am besten du baust dir hier ein paar Variablen ein.

Viele Grüße
Dirk

DirkW
Moderator
Beiträge: 550
Registriert: 10 Nov 2014, 16:16

Re: Problem: Farberkennung mit TXT und Kamera

Beitrag von DirkW » 31 Dez 2014, 12:33

Hallo Helmut,

die Pixy Camera hat nichts mit der neuen TXT Kamera zu tun. ;)
siehe auch ft:pedia 4/2014

http://ftcommunity.de/ftpedia_ausgaben/ ... 2014-4.pdf

Die Pixy Kamera ist eine Open Source Kamera mit Mikrocontroller und wird über
I2C beim Robo TX angesteuert. Sie funktioniert derzeit nur am Robo TX.

Korrektur:
Die TXT Kamera ist ein USB Kamera ohne Mikrocontroller und nur für den Robo TXT.
Die TXT Kamera ist ein USB Kamera ohne Mikrocontroller und für den Robo TXT. Sie funktioniert auch
als PC Kamera für den Robo TX
. (elektrolutz hat Recht) :)


Viele Grüße
Dirk
Zuletzt geändert von DirkW am 31 Dez 2014, 15:05, insgesamt 1-mal geändert.

funmca
Beiträge: 102
Registriert: 03 Jan 2013, 18:54
Wohnort: Hannover
Kontaktdaten:

Re: Problem: Farberkennung mit TXT und Kamera

Beitrag von funmca » 31 Dez 2014, 12:41

Der TXT ist doch ein Linux Rechner, ein kleiner. Laufen denn da nicht die Open CV / Simple CV Bibliotheken? Hätte ich gedacht, da ist die stabilere HSV Auswertung ein einfacher Befehl, im Bauch sozusagen.
;-)

moonflower
Beiträge: 8
Registriert: 18 Dez 2014, 15:30

Re: Problem: Farberkennung mit TXT und Kamera

Beitrag von moonflower » 31 Dez 2014, 12:50

Hallo und Danke für die sehr ausführlichen Beiträge.

Ich habe heute leider nicht die Zeit, mich damit zu befassen. Einige Dinge wie weiße Maske und Kalibrierung mit Foto-Graukarte hatte ich schon probiert. Aber ohne Erfolg. Werde angeregt durch Eure Beiträge noch einiges ausprobieren. Aber leider erst in den kommenden Tagen.

Melde mich dazu also nochmal ;-)

Viele Grüße und einen guten Rutsch
Martin

hamlet
Beiträge: 332
Registriert: 12 Jan 2011, 21:41

Re: Problem: Farberkennung mit TXT und Kamera

Beitrag von hamlet » 31 Dez 2014, 12:56

Hallo Dirk,
Ich habe das Zitat aus der PixiCam-Doku eingefügt, um zu verdeutlichen, dass eine Farberkennung im RGB-Farbraum bei wechselnden Beleuchtungssituationen bzw. fließendem Weißabgleich problematisch ist. Andrere Produkte, z.B. die PixiCam, arbeiten deshalb im HSV-Farbraum.
An dieser Stelle ist der Verweis wohl eher irreführend. Danke für den Hinweis. Werde mein Posting entsprechend umstellen.
Beste Grüße,
Helmut

vleeuwen
Beiträge: 1567
Registriert: 31 Okt 2010, 22:23
Wohnort: Enschede (NL)
Kontaktdaten:

Re: Problem: Farberkennung mit TXT und Kamera

Beitrag von vleeuwen » 01 Jan 2015, 15:30

I tried a different USB Camera connected to the TXT, this without problem.
The virtual image sensors operates on the images itself and not on the camera type.
However the quality of these images is determinate by the camera.

moonflower
Beiträge: 8
Registriert: 18 Dez 2014, 15:30

Re: Problem: Farberkennung mit TXT und Kamera

Beitrag von moonflower » 03 Jan 2015, 11:41

Hallo zusammen,

Zunächst nochmals vielen Dank für die zahlreichen und sehr ausführlichen Antworten zu meinem Problem.

Es hat sich nun herausgestellt, dass eingegossen Teil meines Problems an einem Fehler in meiner Durschnittsberechnung in der Robopro Software lag. Ich habe mit der Zuweisung der Variablen wohl doch etwas falsch gemacht. Bin wie gesagt Anfänger mit Robopro.

Ich habe aber mal einen Testaufbau hergestellt:
Kamera mit ca. 15 cm Abstand auf ein zunächst weißes Blatt Papier gerichtet. In die Mitte mit etwas Abstand vier unterschiedlich Farbige Legosteine. Eine Sensorfläche über das gesamte Bild gelegt, um die mittlere Helligkeit und Farbverteilung beurteilen zu können. Jeweils ein kleines Sensorfeld je Legostein.

Wie zu erwarten war, regelt die Kamera das weiße Blatt Papier auf eine mittlere Helligkeit von 50 %. Es wirkt also mittelgrau. Der weiße Legostein hebt sich mit seinen Helligkeitswerten damit kaum vom Papier. Alle andersfarbigen Legosteine haben Werte von unter 50%.

Nun habe ich als Untergrund eine Typische Graukarte aus dem Fotobereich verwendet. Diese benutze ich normalerweise, um sie in Testaufnahmen zu platzieren und später den Weißabgleich perfekt einstellen zu können.

Mit dieser Graukarte als Hintergrund regelt die Kamera die mittlere Helligkeit wieder auf 50%. Was in diesem Fall natürlich bewirkt, dass der weiße Legostein RGB Werte von 97-99 % hat und alle weiteren Steine auch deutlich höhere und damit besser zu differenzierende Werte aufweisen.

Ein möglichst neutraler, mittelgrauer Hintergrund ist somit perfekt, um Farben möglichst genau unterscheiden zu können. Er sollte einen so großen Teil der Fläche einnehmen, dass die Kamera ihn zum Weißabgleich und zur Helligkeitseinstellung verwenden kann.

Es fällt auf, dass sowohl bei Halogenlicht, als auch bei Verwendung der FT LEDs der Rotanteil Leuchten erhöht ist (bei den LED wundert mit das etwas, da normalerweise blau einen Peak hat). Perfekt ist diffuses Tageslicht.

Sorry, dass mein erstes Posting überwiegend auf einem Fehler meinerseits zurückzuführen ist. Dennoch könnte dieser Thread ja auch anderen möglicherweise hilfreich sein.

Viele Grüße
Martin

vleeuwen
Beiträge: 1567
Registriert: 31 Okt 2010, 22:23
Wohnort: Enschede (NL)
Kontaktdaten:

Re: Problem: Farberkennung mit TXT und Kamera

Beitrag von vleeuwen » 03 Jan 2015, 12:47

I think it is very good to write down the problems and reasonings; including the mistakes.
We will learn more from the process which leads to a good solution than only from the good solution itself.

This is one of the great mistakes in learning material, only writing down the right solution and not the process that could lead to a good result.

moonflower
Beiträge: 8
Registriert: 18 Dez 2014, 15:30

Re: Problem: Farberkennung mit TXT und Kamera

Beitrag von moonflower » 04 Jan 2015, 22:16

Hallo zusammen,

Ich bin dem Thread wohl noch den Beweis schuldig, dass es funktioniert. Hier ein Video der fertigen Sortieranlage. http://youtu.be/HwuwwX7UA44

Das graue Kärtchen unterhalb der Kamera sorgt für einen "ordentlichen" Weißabgleich.

Es klappt erstaunlich gut, auch mit verschiedensten Farben von Legosteinen. Es reicht normales Zimmerlicht. Zusätzliche FT -Lampen sind eher hinderlich.

Vielen Dank noch mal für die tolle Unterstützung.

Viele Grüße
Martin

hamlet
Beiträge: 332
Registriert: 12 Jan 2011, 21:41

Re: Problem: Farberkennung mit TXT und Kamera

Beitrag von hamlet » 05 Jan 2015, 17:37

Hallo Martin,
schickes Modell!
Inbesondere der Auswurfmechanismus gefällt mir.
Und die Kamera unterscheidet sicher gelb und orange.
Beste Grüße,
Helmut

moonflower
Beiträge: 8
Registriert: 18 Dez 2014, 15:30

Re: Problem: Farberkennung mit TXT und Kamera

Beitrag von moonflower » 06 Jan 2015, 07:31

Hallo Helmut,

Ja, ich war selbst überrascht, dass sogar Orange und Gelb bei wirklich dürftigem Allgemeinlicht noch so treffsicher unterschieden werden. Deswegen hatte ich für das Video auch speziell diese Farben ausgewählt.

War ein weihnachtliches "Gemeinschaftsprojekt" mit meinem knapp 10-Jährigen Sohn. Er hat den Transportwagen und Teile des Zuführungsturmes gebaut. Naja und ich habe mir dann ein paar Abende mit RoboPro gegönnt ;-)

Viele Grüße
Martin

Grau
Beiträge: 115
Registriert: 03 Jan 2015, 17:21

Re: Problem: Farberkennung mit TXT und Kamera

Beitrag von Grau » 17 Jan 2015, 12:49

Hallo moonflower,
ich habe versucht diene Farberkennung nachzustellen.
Leider geligt es mir nicht, andere Farben als Rot sauber zu erkennen.
Kannst du vieleicht dein Programm posten?
Kann deien Farberkennung Blau und Grün unterscheiden?
Gruß Grau

Antworten