Farben/Farberkennung in Robo Pro Coding und Python (Bilder, Kamerabilder...)

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
Benutzeravatar
fishfriend
Beiträge: 1825
Registriert: 26 Nov 2010, 11:45

Farben/Farberkennung in Robo Pro Coding und Python (Bilder, Kamerabilder...)

Beitrag von fishfriend » 18 Apr 2024, 12:38

Hallo...
1. Sache:
Ich habe mal eine Frage zu den Farben/ Farberkennung in Robo Pro Coding und Python.
Im Beispielprogramm zum AddOn Ki, gibt es folgenden Programmausschnitt:
Python Code in Robo Pro einfügen Beispiel Addon Ki.png
Python Code in Robo Pro einfügen Beispiel Addon Ki.png (141.66 KiB) 251 mal betrachtet
Da geht es um die Umwandlung des aufgenommenen Bildes in die color[0] = Farbe und color[2] = Farbsättigung (BTW color[1] = Farbhelligkeit)

Python-Code:

Code: Alles auswählen

#get color from frame
color = (np.mean(frame[ 80:120,  100:240], axis=(0, 1)))
color = cv2.cvtColor(np.uint8([[[color[0],color[1],color[2]]]]),cv2.COLOR_BGR2HLS)[0][0]
hue = color[0] # range 0-180
sat = color[2] # range 0-255
Hier mal der "mein" HSV(HLS)-Farbraum:
HSV(HLS)-Farben.png
HSV(HLS)-Farben.png (79.53 KiB) 251 mal betrachtet
Beim Befehl...
color = cv2.cvtColor(np.uint8([[[color[0],color[1],color[2]]]]),cv2.COLOR_BGR2HLS)[0][0]
hue = color[0] # range 0-180
...wird von einem RGB-Bild in die HLSWerte umgewandelt.
Frage:
Warum ist der Bereich aber nur 0-180°?
OK, RGB selbst geht nur bis 180°. Danach sind es Mischfarben, von RGB aus gesehen - denke ich.
Zumindes bei den Erklärungen zu Python bzw. zu Open CV, geht hue bis 255, wobei es schon bei HLS bist 360 gehen sollte.
Wird dann z.B. Magenta (300°) in eher Rot 0° und Blau (240°) in Cyan 180° umgewandelt?

2. Sache (Beispielprogramm zum AddOn Ki):
Hier der Programmausschnitt der Farbauswertung vom AddOn Ki.
Farbauswertung AddOn KI.png
Farbauswertung AddOn KI.png (77.79 KiB) 251 mal betrachtet
Im ersten Teil ist hue >= 85° und < 130°. Somit ist es "Grün" und color wird = 3 gesetzt.
Im zweiten Teil ist hue zwischen 130° und 180° und somit "Blau" -oder- hue ist zwischen 0° und 15° und somit "Rot" und color wird = 2 gesetzt.
Im dritten Teil wird der Rest, also 15° bis 85° = "gelb", auf color = 1 gesetzt.

Aber...
in der Auswertung
Farbauswertung AddOn KI Auswerten.png
Farbauswertung AddOn KI Auswerten.png (133.15 KiB) 251 mal betrachtet
wird als erstes BOHO (Bohrloch) und color=1 (gelb) ausgewertet. Im Modell ist das der weiße Baustein mit einem Bohrloch.
Somit scheint es, dass gelbfür weiß genommen wird. num wird =1 gesetzt

In der zweiten Abfrage ist es MIPO2, also zwei Fräsungen und Color 2 = Blau oder Rot.
Da im Modell nur weiße und blaue Bausteine sind, ist es halt nur der blaue, der ausgegeben wird. num wird =2 gesetzt

In der dritten Abfrage ist es BOHOMIPO2, also Bohrloch mit zwei Fräsungen und Color 3 = grün. num wird =3 gesetzt
Die ersten drei sind Passed.

Warum auch immer, gibt es eine num=4 für den Rest und die sind Failed.
In der Sortierung dann:
Farbauswertung AddOn KI Sortieren.png
Farbauswertung AddOn KI Sortieren.png (141.22 KiB) 251 mal betrachtet
Hier wird num=1 (gelb (weiß) mit Loch)
und
num=3 (----grün----, Bohrloch mit zwei Fräsungen) ausgewertet. <---- grün? Warum nicht Blau/Rot????

Hab ich da einen Denkfehler oder ist das Farbschema falsch?
Mit freundlichen Grüßen
Holger
ft Riesenräder PDF: ftcommunity.de/knowhow/bauanleitungen
TX-Light: Arduino und ftduino mit RoboPro

Benutzeravatar
fishfriend
Beiträge: 1825
Registriert: 26 Nov 2010, 11:45

Re: Farben/Farberkennung in Robo Pro Coding und Python (Bilder, Kamerabilder...)

Beitrag von fishfriend » 24 Apr 2024, 19:49

Hallo...
Ok, ich hab mal das Programm vom AddOn Ki Ai umgeschrieben und mir die Farbwerte HUE und Sättigungswerte SAT mitausgeben lassen.
Werte sind Fremdlicht-Abhängig !!

Dabei ist folgendes raus gekommen:
Farbe.......HUE.........SAT........Bemerkung
Blau........102-120.....55-80.....ft-Holzkörper sind dunkler als das normale ft-Blau
Rot........ 4-30.........60-80.....ft_Holzkörper sind heller als das normale ft-Rot (SAT auch 0-15)
Grün........60...........36-44.....Rad von beiden Seiten
Gelb........27-29........42-66.....Eigener 3D Druck mit einer Art "Sonnengelb"/fast ft-Gelb
Dunkelrot..0-4...........42-52.....(176 Ausreißer?)
Weiß........0-20..........1-4.......Mit Aufkleber HUE 135
Zumindest sind das schon mal Werte mit denen man anfangen kann.
Mit freundlichen Grüßen
Holger
ft Riesenräder PDF: ftcommunity.de/knowhow/bauanleitungen
TX-Light: Arduino und ftduino mit RoboPro

Benutzeravatar
fishfriend
Beiträge: 1825
Registriert: 26 Nov 2010, 11:45

Re: Farben/Farberkennung in Robo Pro Coding und Python (Bilder, Kamerabilder...)

Beitrag von fishfriend » 24 Apr 2024, 21:06

Hallo...
Tja, und da waren sie wieder, die so kleinen Problemchen...
Also, es gibt da noch ein Programm von fischertechnik "Camera_Color_Decoder".
Das Programm gibt auf dem Display Color, HUE und den WInkel aus
und es ergeben sich komplett andere Werte.

Das liegt an der Art und Weise wie die Werte erzeugt werden.
Beim AddOn KI Ai wird es über OpenCV gemacht.
Beim "Camera_Color_Decoder" geht es über die Kamerafunktion und dem Block "Hole Farbe... als RGB".
Und beides funktioniert anders und mit natürlich anderen Werten.
Ich werde das Ganze noch mal überarbeiten....
Mit freundlichen Grüßen
Holger
ft Riesenräder PDF: ftcommunity.de/knowhow/bauanleitungen
TX-Light: Arduino und ftduino mit RoboPro

Antworten