Daten

Speisekarten-Analyse

18. Dezember

Daten aus Restaurant-Menus zu extrahieren ist gar nicht so einfach. Das Format «PDF» stellt sich gerne quer.

Weiterlesen
Speisekarte eines Restaurants
Daten

Fotos nutzen

24. August

Data Mining mit dem Smartphone: Ihr Fotoarchiv kann eine reichhaltige Datenquelle sein. Nutzen Sie es!

Weiterlesen
teaser image 1

Die neuesten Beiträge

Die Geometrie der Farben

Farben als Vektoren

Die verbreitete Codierung von Farben als Hex-Zahlen beruht auf dem RGB-Farbmodell und ist 1 zu 1 in RGB übersetzbar:   Cyan: #00FFFF - rgb(0,255,255)  .

Wer seine Schulmathematik noch nicht völlig vergessen hat, erkennt unschwer, dass es sich bei dem Klammerausdruck um einen Vektor handelt; seine Komponenten sind r (rot), g (grün) und b (blau). Der Wertebereich ersteckt sich bei jeder Komponente von 0 bis 255, so dass in diesem Modell 16'777'216 (~16.8 Millionen) Farbwerte unterschieden werden können.

Farben können als Vektoren dargestellt werden
Grafik: Jeder Farbwert kann als Vektor im Farbraum betrachtet werden

Geometrisch können wir einzelne Farbwerte als Punkte im Inneren oder an der Oberfläche eines Würfels mit der Kantenlänge 256 verorten. Die Eckpunkte des Würfels bilden die Farbwerte Schwarz, Weiss, Rot, Grün, Blau, Gelb, Magenta und Cyan. Alle Graustufen liegen auf der Geraden, die von Schwarz (rgb(0,0,0)) nach Weiss (rgb(255,255,255)) führt.

Mit Farben rechnen

Wenn Farben Vektoren sind, dann können wir sie auch zu Berechnungen heranziehen. Komponentenweise addiert ergibt midnight blue #191970 plus forest green #228B22 etwas wie Cyan: #3BA492. Das funktioniert allerdings nur solange, wie die jeweilige Summe der Komponenten unter 256 bleibt. Es ist also keine nützliche Anwendung der Vektorrechnung.

Anders sieht es aus, wenn wir herausfinden wollen, wie wir eine bestimmte Farbe benennen sollen. Es gibt keine 16.8 Millionen Farbbezeichnungen, und so gruppieren wir Farbwerte am besten um diejenigen, die tatsächlich einen Namen haben. Dafür berechnen wir zu einem gegeben Farbwert die kartesische Distanz zu den benannten Farben und wählen diejenige aus, bei der diese Distanz am kürzesten ist.

So finden wir für den namenlosen Farbwert #F0C0C0 als nächstgelegenen benannten Wert light coral #F08080. Diese Art der Berechnung wird verwendet, um beispielsweise die dominanten Farben eines Bildes zu identifizieren und zum errechneten Farbwert auch einen Namen zuzufügen.

Aus dem bekannten van Gogh-Gemälde «Cabanes blanches aux Saintes-Maries» (1888; ausgestellt im Kunsthaus Zürich) lassen sich folgende dominante Farbwerte extrahieren (NNC = «Nearest Named Color»):

Hex #31492d rgb(49,73,45)
NNC: (47,79,47 - Dark Green)
Hex #a2630e rgb(162,99,14)
NNC: (139,101,8 - DarkGoldenrod4)
Hex #0d4a7c rgb(13,74,124)
NNC: (16,78,139 - DodgerBlue4)
Hex #0c76bb rgb(12,118,187)
NNC: (24,116,205 - DodgerBlue3)
Hex #ccd0be rgb(204,208,190)
NNC: (205,205,193 - ivory3)

Die Ermittlung der dominanten Farben in einem Bild erfolgt normalerweise mit einem Clustering-Algorithmus, ist also aufwändiger als das Finden des nächstgelegen Farbnamens.

Die dominanten Farben können bei grösseren Bildbeständen dazu herangezogen werden, Bilder in Gruppen einzuteilen und so Bilder mit ähnlichen Eigenschaften zusammenzuführen. Eine der frühesten Anwendung dieser Methode war das Auffinden von Nacktfotos beim Upload auf Online-Plattformen. Als Kriterium diente dabei das gehäufte Auftreten von Hautfarben in einem Bild.

Farbpaletten

Eine häufig verwendete praktische Anwendung des Farben-Clustering ist die Palettenextraktion: aus einem Bild werden diejenigen Farbwerte extrahiert, die am häufigsten vorkommen. Dabei können die einzelnen Farbwerte ungruppiert bleiben, was jedoch zu langen, unübersichtlichen Listen führen kann. Beim Clustering hingegegen wird das Ergebnis auf eine überschaubare Zahl reduziert. Das kann über mehrere Stufen erfolgen: Zunächst gruppieren wir die im Bild gefundenen Farbwerte um die Farben, die einen Namen haben, und schliesslich gruppieren wir diese nach "warme Farben" - "kühle Farben" oder "satte Farben" - "blasse Farben" oder auch nach "Rottöne" - "Blautöne" - "Grüntöne" ...

Es gibt neben RGB noch verschiedene andere Farbräume, etwa CMYK für den Druck von Farbe auf Papier. Im Zusammenhang mit der Palettenextraktion besonders interessant ist HSL (Hue Saturation Lightness). In HSL werden der Farbton als Winkel, die Sättigung und die Helligkeit hingegen als Prozent des Maximalwerts angegeben. Es ist möglich RGB in HSL umzurechnen. So erhält man etwa aus dem RGB-Hex-Wert #A2630E hsl(34, 84%, 35%). Das Schöne an HSL ist, dass man nun ganz leicht die Komplementärfarbe zu einem Farbwert finden kann: man addiert zum Farbton einfach den Winkel 180°. So wird aus hsl(34, 84%, 35%) 🠚 hsl(214, 84%, 35%) und das entspricht Hex #0E4FA4.

Durch zweimalige Addition des Winkels 120° erhält man eine Farbtriade: #0D4A7C hsl(207, 81%, 27%) 🠚 #7C0D4A hsl(327, 81%, 27%) 🠚 #4A7C0D hsl(87, 81%, 27%). Auf diese Weise kann man ganze Farbpaletten transformieren.