Techniken der Farbsegmentierung

Zum Vortrag im Rahmen des RoboCup-Projektseminars
der Technischen Fakultät der Universität Bielefeld
im Sommersemester 2000

von Kai Hübner


Grundlagen der Segmentierung

Ziel:

Durch Zusammenfassen gleichfarbiger Flächen eines Bildes sollen Objekte
erkannt und ihre Positionen im Bild  ermittelt werden können.

Schwellwertbildung in Grauwertbildern

Als einfachste Technik der Segmentierung gilt die Schwellwertbildung (thresholding). Diese wird besonders in Grauwertbildern sehr häufig benutzt.
Bei der Schwellwertbildung werden ein oder mehrere Schwellwerte Sn festgelegt, die das Grauwertspektrum von 0 (=schwarz) bis 255 (=weiß) in n+1 Gebiete zerteilen. Für jedes dieser Gebiete wird dann ein Grauwert als Repräsentant dieses Gebietes festgelegt. Abhängig davon, in welchem Teilgebiet des Spektrums ein Bildpixel nun liegt, übernimmt er den Grauwert des jeweiligen Repräsentanten.
Hier ein Beispiel mit einem Schwellwert S1=128 und den Repräsentanten 0 und 255.
 

Um das Bild optimal zu segmentieren, benötigt man mehrere Schwellwerte. Ein Verfahren zum Auffinden der optimalen Schwellwerte zur Segmentierung eines Grauwertbildes liefert die Betrachtung des zugehörigen Histogramms.
 
 

Histogramme

In Histogrammen wird die Helligkeitsverteilung in einem Grauwertbild anschaulich dargestellt. Jedem Helligkeitswert i wird die Anzahl der im Bild vorkommenden Pixel (x,y) mit diesem Helligkeitswert durch H(i) zugeordnet:
(I(x,y) = Intensität / Grauwert von Pixel (x,y))
Grauwertbild Histogramm H(i)

Die Minima von H(i) entsprechen den optimalen Schwellwerten.
Hier z.B. für S1 = 95 und S2 = 125 (nicht optimal):

0 < I(x,y) <= 95 95 < I(x,y) <= 125 125 < I(x,y) <= 255

Man erkennt die Probleme der Schwellwertbildung in Grauwertbildern: Nur wenn man voraussetzen kann, daß sich die Grauwerte im Bild stark voneinander unterscheiden, ist das Ergebnis zufriedenstellend.
 
 

Warum Farbe ?

 
Ohne Farbe... Mit Farbe...
...ist alles nur grau ...ist viel mehr Information vorhanden 
...können sich Objekte gleicher Helligkeit zu einem Segmentierungsobjekt verbinden ...können sich nur Objekte gleicher Farbe zu einem Segmentierungsobjekt verbinden
...kann man daher nur selten gut segmentieren ...kann man daher viel besser segmentieren

Eine Schwellwertbildung im gebräuchlichen RGB-Farbraum bringt allerdings mehrere Nachteile mit sich:

- Die Schwellwertbildung wird über alle Farbkanäle (R,G,B) benötigt, somit auch hoher Aufwand zum Auffinden optimaler Schwellwerte
- Schatten verderben die Segmentierung
- Im RGB gibt es keine Möglichkeit, farbähnliche (aber unterschiedlich helle, z.B. durch Schatteneinfall entstandene) Flächen einfach zusammenzufassen
- Diese Möglichkeit bieten andere Farbräume

Wichtige Farbräume

Der HSV-Farbraum

Im HSV-Farbraum wird jede Farbe beurteilt nach:
 
Farbton (Hue) Der Farbton wird durch den Farbwinkel (0° = rot, 120° = grün, 240° = blau) angegeben.
Sättigung (Saturation) Die Sättigung gibt an, wie stark der jeweilige Farbton ausgeprägt ist.
Helligkeit (Value) Gibt die Helligkeit an. Je niedriger der V-Wert (je dunkler also die Farbe), desto weniger Sättigung kann noch erreicht werden. Dadurch entsteht die typische Zylinderform des HSV-Farbraums.

Der YUV-Farbraum

Im YUV-Farbraum wird jede Farbe beurteilt nach:
 
Helligkeit (Y) Luminanzanteil, Helligkeit
Cyan-Rot-Balance  (U) erster Chrominanzanteil, Farbanteil zwischen Cyan und Rot
Gelb-Blau-Balance (V) zweiter Chrominanzanteil, Farbanteil zwischen Gelb und Blau

Den YUV-Farbwert kann man durch eine einfache Matrizentransformation aus den RGB-Farbwerten errechnen:
 

Y = 0.299 0.587 0.114 * R
U -0.1687 -0.3313 0.5 G
V 0.5 -0.4187 -0.0813 B

Der YUV-Farbraum ist also eine lineare Abbildung des RGB-Farbraums mit folgenden Eigenschaften:

- Die Berechnungsmatrix wurde dem menschlichen Empfinden nach aufgestellt. So ist z.B. für die Berechnung des Helligkeitswertes Y der Grünwert mit einem Faktor von 0.587 am bedeutendsten, da für das menschliche Auge ein satter Grünton heller wirkt als Rot (Faktor 0.299) oder Blau (Faktor 0.114). 
- Bei einem Wertebereich von [0,255] für die RGB-Werte besitzt Y einen Wertebereich von [0,255]. U und V besitzen jeweils einen Wertebereich von [-127,127].
- Sind alle RGB-Werte gleich x, ergibt sich für YUV ein Farbwert von [x,0,0]. Alle Grauwerte von Schwarz bis Weiß liegen somit exakt auf der Y-Achse.
- Durch die weitaus größere Empfindlichkeit des menschlichen Auges für Helligkeitsabstufungen als für Farbabstufungen wird in der Praxis das Y-Signal wie RGB mit 8 Bit codiert, U- und V-Signal können jedoch ohne sichtbare Verluste z.B. mit nur 6 Bit codiert werden. Aufgrund dieses Vorteils findet der YUV-Farbraum in der gesamten Videoübertragungstechnik Anwendung.
- Verwandt mit dem YUV ist der YIQ-Farbraum. Hierbei stehen I und Q für die Chrominanzanteile I = Cyan-Orange-Balance und Q = Magenta-Grün-Balance.
Y = 128 U = 0 V = 0 Draufsicht

YUV-Zerlegung

Jedes Farbbild kann dann in die drei Kanäle (Y,U,V) zerlegt werden. Zur Veranschaulichung wurden die Y-, U- und V-Werte jeweils auf Grauwerte abgebildet:
 
Y-Kanal U-Kanal V-Kanal

Für eine Segmentierung bietet sich hier besonders der V-Kanal an, da die vorhandenen Grauwerte deutlich verschiedener sind als im Y- oder U-Kanal. Man geht also genau so wie bei der Schwellwertbildung in Grauwertbildern vor. Zuerst das Histogramm für die V-Werte erstellen:

Grauwertbild Histogramm H(i)

Und anschließend Minima des Histogramms als optimale Schwellwerte annehmen:

0 < V(x,y) <= 100 100 < V(x,y) <= 150 150 < V(x,y) <= 190 190 < V(x,y) <= 255


Angewandte Techniken

Pre-Clustering der Chrominanzebene (nach Christian Scheering)

 
Idee: Vorab-Aufteilung des Farbraumes in Gebiete (Cluster), die das menschliche Auge als "konstante Farbe" erkennt.
Vorgehen:
- Aufteilung des HSV-Farbraumes in beliebig viele Cluster und eine achromatische Region. Die Einteilung in Cluster kann über Farbwinkel-, Sättigungs- und Helligkeitsabstufungen geschehen, die Clusterung wird nach der Anzahl dieser Abstufungen benannt (z.B. 12-5-1-Clusterung bei 12 H-, 5 S- und 1 V-Abstufung). Die achromatische Region beinhaltet alle "nichtfarbigen" Farbpunkte des Farbraumes, also alle Farbpunkte, die nahe an der Helligkeitsachse V liegen. 
- Für jeden Cluster wird ein Farbpunkt als Prototyp festgelegt, der alle Farbpunkte des Clusters repräsentieren soll.
- Jedem Farbpunkt im HSV-Farbraum wird sein nächstgelegener Prototyp zugeordnet, indem eine Lookup-Tabelle mit Hilfe der Transformation HSV zu RGB zu YUV erstellt wird. Dadurch erfolgt die Abbildung der Cluster in den YUV-Farbraum, so daß nun für jeden YUV-Wert der zugehörige Prototyp in der Tabelle vorliegt. 
- Hat man die Tabelle einmal für die gewünschten Clusterabstufungen erstellt, kann man sie zur Konvertierung beliebig vieler Bilder verwenden. Dabei wird für jeden Bildpunkt der seiner Farbe entsprechende Prototyp aus der Tabelle eingesetzt. 
Beispiele (Clusterungen ohne achromatische Region):
 
1) Y = 128 Ebene
Original 12-1-1 Clusterung 12-5-1 Clusterung 12-5-1 Clusterung für gesamten YUV (Draufsicht)
.
2) Hamburger-Bild
Original 12-1-1 Clusterung 12-5-1 Clusterung 12-5-4 Clusterung 
.
2) Roboter-Bild
Original 12-1-1 Clusterung 12-5-1 Clusterung 4-1-1 Clusterung 

Wie man sieht hängt die günstigste Clusterung vom zu segmentierenden Bild ab. Beim vielfarbigen Hamburger-Bild bietet erst eine 12-5-4 Clusterung (240 Cluster) ein einigermaßen annehmbares Ergebnis. Beim Beispiel Roboterbild hingegen, wo auch nur vier verschiedene Farben auftreten, reicht eine 4-1-1 Clusterung (nur 4 Cluster).
 
Nachteile:
- Ist die Clusterung zu fein und die Farbpunkte eines Objektes liegen auf einer Clustergrenze, so werden die verschiedenen Farbpunkte in verschiedene Cluster und somit verschiedenen Prototypfarben zugeordnet. Dies sieht man im Beispiel des Hamburger-Bildes. 
- Ist die Clusterung zu grob und Farbpunkte verschiedener Objekte fallen in einen Cluster, so wird allen Objektpunkten auch dieselbe Prototypfarbe zugeordnet. Beim Roboterbild reicht die 4-1-1 Clusterung nur aufgrund der Verschiedenfarbigkeit von Robotern, Ball und Hintergrund aus. 

 
 
 

Rotation der Chrominanzebene (nach Torsten Scherer)

 
Idee: Segmentierung durch Auffinden bildspezifischer "Farbrichtungen"
.
Vorgehen:
- Analyse des Urbildes und Kennzeichnung der gefundenen Farbpunkte im YUV-Farbraum 
- Durch Vernachlässigung der Helligkeitskomponente Y entstehen durch Winkel festgelegte "Farbrichtungen" in der 2-dimensionalen UV-Ebene
- Für jede gefundene Farbrichtung wird die UV-Ebene um den zugehörigen Winkel gedreht, so daß die Farbrichtung mit der neuen x-Achse übereinstimmt. Alle Bildpunkte mit geringem y-Wert und mittlerem bis hohem x-Wert (kleine x-Werte liegen in achromatischer Region), stellen also ein segmentiertes Objekt dar. 
Markierung der UV-Werte der Bildpunkte in der UV-Ebene
Rotation um 60° Rotation um 205° Rotation um 260°
Nur Betrachtung aller Werte mit kleinem y- und mittlerem bis hohem x-Wert.

Die UV-Werte des dunkelgrünen Hintergrundes sind nicht satt genug und folglich in die achromatische Region um den Nullpunkt gefallen. Die drei satten Farben gelb (Ball), rot und blau (Roboter) dagegen konnten ihre "Farbrichtungen" in der UV-Ebene gut ausprägen und waren somit auch gut zu segmentieren.


RoboCup

Allgemeines

Generell gilt: Je allgemeiner der Segmentierungsalgorithmus funktionieren soll, desto mehr Umstände, wie z.B. der Lichteinfall, müssen beachtet werden. Andererseits kann bereits bekanntes Vorwissen den Segmentierungsalgorithmus vereinfachen und beschleunigen.

Beim RoboCup besteht die Aufgabe darin, die Positionen von Ball und Robotern im Bild der Overhead-Kamera durch Segmentierung zu gewinnen. Die Berechnung der echten Positionen im Raum erfolgt später mit Hilfe der Kamera-Kalibrierung. Wir haben hier also die Möglichkeit, das Vorwissen für den Segmentierungsalgorithmus durch deutliche farbliche Kennzeichnung der Objekte selbst zu bestimmen und ihn somit zu beschleunigen.

Wenn alle Objekte optimal gekennzeichnet sind, ist nur noch ein einfacher Algorithmus nötig, der die UV-Werte jedes Bildpixels mit denen der Objekte vergleicht.
 
 

Stand vom 06.08.2000

Die Objekte sind verschiedene farbliche gekennzeichnet:
 
Spielfeld Grün, fällt in den achromatischen Bereich und wird daher nicht beachtet
Ball Knall-Orange (Original RoboCup-Ball)
Roboter Bisher Gelb, Violett, Dunkelblau und Hellblau, wir experimentieren aber noch mit günstigeren Farbmarkierungen
Plättchen zur Orientierungserkennung Rot, die kleinen Plättchen werden an einem Ende der Roboter-Markierungen befestigt, um die Orientierung festzustellen

Die Segmentierungsmethode "Rotation der Chrominanzebene" nach Torsten Scherer wird verwendet. Dabei werden die Farbwinkel der Objekte zur Zeit noch per Hand vorgegeben, als Hilfe hierfür können zwei Arten von Histogrammen erstellt werden:
 

2D-Histogramm Im 2D-Histogramm wird der Farbwinkel auf die x-Achse aufgetragen. Auf die y-Achse wird die Zahl der Bildpunkte aufgetragen, die in etwa in diesem Winkel liegen.
3D-Histogramm Das 3D-Diagramm zeigt die Verteilung der Punkte in der UV-Ebene. Die relative Anzahl der Bildpunkte mit Farbwerten (u,v) wird durch die Intensität des Punktes in der UV-Ebene dargestellt.

Eventuell sollen die Farbwinkel in Zukunft beim Programmstart einmalig automatisch bestimmt werden. Hinzu kommt eine achromatische Region um den Ursprung der UV-Ebene, die das Grün des Spielfeldes einschließt.
Das Suchen geschieht jeweils durch Vergleich der gefundenen Pixel im UV-Raum mit dem Farbwinkel des zu suchenden Objekts. Der Algorithmus arbeitet für jedes Objekt in zwei Phasen:
 

Fenster-Modus Grundsätzlich wird jedes Objekt in einem Fenster fester Größe um die alte Objektposition gesucht, bei Betrachtung der Maximalgeschwindigkeiten von Roboter und Ball funktioniert dies auch sehr gut. 
Die roten Orientierungsplättchen werden immer nur in diesem Fenster gesucht.
Im Fenster wird jeder Pixel beachtet.
Gesamtbild-Modus Wird das Objekt im Fenster-Modus nicht gefunden, so wird das gesamte Bild durchsucht. Dabei wird das Gesamtbild mit einer größeren Schrittweite von mehreren Pixeln abgerastert, um den Algorithmus zu beschleunigen. 

Mit diesem Algorithmus und gut auf die verwendeten Objektmarkierungen angepaßten Farbwinkeln wird derzeit eine Bildrate von ca. 10 Bilder / Sekunde erreicht.

06.08.2000
 
 

Stand vom 15.11.2000

Das Programm läuft jetzt nach einer SEHR GRÜNDLICHEN Überarbeitung ganz gut. Ich kann somit auch die 10 Bilder/Sekunde aktualisieren. Unter guten Umständen bekommen wir jetzt bis zu 17 Bilder/Sekunde rein (wenn alle Objekte gefunden und in Fenstern gesucht werden können; außerdem abhängig von der Fenstergröße).
Wesentliche Neuerung ist das automatische Farberkennungssystem, mit dem automatisch die fünf dominierenden Farben aus dem Bild gesucht werden können.
Dieses baut auf dem 3D-Histogramm auf, wo es die fünf größten Cluster findet und dort die Farbprototypen setzt. Das 3D-Histogramm wird zu diesem Zweck nur als Binärbild dargestellt (kein Punkt mit UV-Wert x = schwarz; mindestens ein Punkt mit UV-Wert x = weiß).

Außerdem gibt es jetzt auch ein paar Screenshots zu sehen:


Bild 1: Linux-Oberfläche

Zu Anfang sieht das Urprungsbild so aus (ja, es sind noch keine echten Roboter zu sehen, aber uns steht auch erst ein Prototyp zur Verfügung ... außerdem geht es hier ja erstmal nur um die Bildverarbeitung):


Bild 2.1: Original-Kamerabild

Die Programmoberfäche dazu:


Bild 2.2: Programmoberfäche A

Hier können einige Sachen aktiviert werden:
 

Farbformat Aktuelles Farbformat; das einzige für uns wichtige ist der YUV-Planer
Anwenden Hierdurch wird das ausgewählte Farbformat erst angewendet
Speichern Speichern ? Funktioniert (noch?) nicht
2D-Histogramm Ein echtes Histogramm (2D) (siehe oben); wird nicht mehr gebraucht
3D-Histogramm 3D-Histogramm (siehe oben); wichtig für automatische Farberkennung
Farben-Init Automatische Farberkennung starten; nur einmal (bei Initialisierung) nötig
FPS Bilder / Sekunde

Ist der YUV-Planer aktiviert und die automatische Farberkennung einmal durchlaufen worden, sieht das ganze dann so aus:


Bild 3.1: Bild mit gefundenen Objekten

Alle fünf Objekte und die vier Orientierungen sind gefunden. Die Programmoberfläche dazu:


Bild 3.2: Programmoberfläche B

Die Schieberegler dienen dazu:
 

Suchbereich
Glättungsfaktor 1 und 2
Das Ausgangsbild des YUV-3D-Histogramms enthält im Ausgangszustand nicht nur die Cluster, sondern auch einiges an Rauschen. Dies muß (den äußeren Umständen entsprechend, wie z.B. Lichteinfall) herausgefiltert werden. Dazu wird eine einfache Boxfiltermaske benutzt und das Ergebnis anschließend mit einem Schwellwert verglichen.
Die Größe der Maske wird durch den Suchbereich angegeben: Ein Suchbereich von n entspricht einer (2*n+1) x (2*n+1) - Matrix, die mit Einsen aufgefüllt ist. Im Prinzip wird also nur bestimmt, wieviele Punkte im Umfeld U des aktuellen Pixels zu finden sind.
Der erste Glättungsfaktor besagt: Wenn weniger als X % in der Umgebungs U weiß sind, dann streiche den Pixel weg. Dadurch wird das Rauschen unterdrückt.
Der zweite Glättungsfaktor besagt: Wenn mehr als X % in der Umgebungs U weiß sind, dann streiche den Pixel weg. Dies war mal dazu gedacht, die sehr große achromatische Region wegzufressen. Hierfür haben wir aber neuerdings einen kleinen rekursiven "Fressalgorithmus" eingebaut, der vom Ursprung der UV-Ebene alle weißen Pixel wegfrißt. 
Standard für Glättungsfaktor 2 = 100 %. 
Fenstergröße Seitenlänge der Suchfenster für die Objekte.
Achromatische Region War ebenfalls mal dazu gedacht, die achromatische Region auszublenden, indem alle Pixel mit Abstand < X zum Urpsprung der UV-Ebene weggestrichen wurden. Hat sich aber ebenfalls dank unseres rekusiven Fressers erledigt.
Standard: UNBEDINGT 0, wenn der Freßalgorithmus zur Anwendung kommen soll, da dieser sich vom Ursprung aus nach außen durchfrißt. Bei einem X > 0 ist der Ursprung schwarz, d.h. es gibt nicht zu fressen :(.
Delta-Winkel Gibt bei der Farbwinkelfestlegung  an, wie weit ein gefundener Pixel von einem bereits vorhandenen Farbwinkel abweichen darf, um noch zu diesem gerechnet zu werden. Ist der Winkel zwischen allen bereits gefundenen Farbwinkeln und dem aktuellen Pixel > X, wird hier ein neuer Farbwinkel angelegt. 
Orientierungs-Intensität Da die Qualität der Orientierungsserkennung von äußeren Gegebenheiten abhängt, kann hier angegebenen werden, ab welchen Y-Wert (Helligkeit) ein Pixel zum Orientierungsplättchen gezählt wird. Da die Plättchen weiß sind, sind Werte von 220-250 meist ganz gut (Feinabstimmung).
Farben-Init Automatische Farberkennung starten; nur einmal (bei Initialisierung) nötig
Farbslider (rechts) Hier werden die gefundenen Farbcluster aus der UV-Ebene farblich dargestellt. Dies ist meist nicht exakt dieselbe Farbe wie im Bild, was darauf zurückzuführen ist, daß durch die Projektion auf die UV-Ebene Information über die Farbhelligkeit (Y-Wert) verloren gegangen ist. Anhand der Slider kann man den Farben die Roboter-IDs zuordnen.
Im fünften Kästchen ist die Ballfarbe. Der Ball wird anhand einprogrammierter Farbparameter (grell-orange) aus den gefundenen Farbclustern ausgewählt.

Alles ein bißchen schlecht zu erklären, ohne eine Anwendung gesehen zu haben. Also hier das 3D-Histogramm zur obigen Szene mit obigen Parametern:


Bild 4: 3D-Histogramm

Ein Blick auf die UV-Ebene: Die weißen Flächen sind die nach geeigneter Glättung übriggebliebenen Cluster. Graue Flächen stellen die aufgrund des ersten Glättungsfaktors weggestrichenen Punkte (Entfernung von Rauschen). Die schwarze Fläche im inneren ist unserem kleinen Fressalgorithmus zu verdanken (Hintergrundgrün wird herausgefiltert). Daraufhin werden die Cluster gesucht. Clusterprototypen werden durch Polarkoordinaten (Radius und Betrag) charakterisiert. Im Originalbild gefundene Pixel, die von einem der Prototypen nur sehr gering abweichen, werden dann zum jeweiligen Objekt zur weiteren Schwerpunktbestimmung genutzt.

So. Ich hoffe, ich habe den derzeitigen Stand der Bildverarbeitung erstmal angemessen dargelegt. Sollte ich irgendwas vergessen haben oder solltet ihr irgendwelche Fragen haben sprecht mich einfach an oder mailt mir.

15.11.2000


Literatur & Links

Literatur zum Vortrag:
 
Horn "Robot Vision",
Kapitel 5: "Regions & Image Segmentation"
Christian Scheering,
Alois Knoll
"Fast Colour Image Segmentation Using A Pre-Clustered Chromaticity-Plane"
Henryk Palus "Nutzung des Wissens über die Farbe des Bildhintergrundes zur Segmentierung von Farbbildern"
Christian Scheering "Domain-Knowledge Incorporation For Fast Colour Image Segmentation Using A Pre-Clustered Chromaticity-Plane"
K.S. Fu,
R.C. Gonzalez,
C.S.G. Lee
"ROBOTICS  Control, Sensing, Vision And Intelligence",
Kapitel 8.2: "Segmentation" 

Links zum Vortrag:
 

http://www.techfak.uni-bielefeld.de/techfak/ags/ti/personen/pcscheer/home_pcscheer.html
Verschiedene Artikel von Christian Scheering zum downloaden
http://www.fh-trier.de/~soldoa/VideoRZ/Glossar.html
Lexikon 
http://chemsrv0.pph.univie.ac.at/SUPPORT/Lexicon/yl.htm
Lexikon
http://videox.net/lexikon.html
Lexikon
http://www.uni-paderborn.de/fachbereich/AG/agdomik/extern/computergrafik/cg_skript/html/node141.htm
YUV-Beschreibung
http://www.cs.sfu.ca/undergrad/CourseMaterials/CMPT365/material/notes/Chap3/Chap3.3/Chap3.3.html
Ausführliche Grundlagen von Farbe und Video
http://www.prz.tu-berlin.de/docs/Publications/TUB-PRZ-W-1243/diplomto.html
http://www.brandenburg-gmbh.de/brandenburg-gmbh/lightcolor_de.html
Links und 3D-Modelle von Farbräumen

andere Links von Thomas Hofmann