Hallo,
hat jemand eine Ahnung, wie man die "Dominanten" Farben eines Bildes
bestimmen kann?
Ich hab es über ein HSV-Histogramm versucht, das Ergebnis war aber nicht
besonders. Das Problem ist, dass es da zig Sonderfälle gibt, wie
Graustufen, Schwarz oder Weiß. Wann ist eine Farbe farbig und nicht
schwarz, oder nicht weiß usw ...
Weitere Probleme ist z.B. die Lichttemperatur, die wohl mit einem
automatischen Weißabgleich irgendwie kompensiert werden müsste.
Kennt jemand zufällig eine Library, ein Paper, ein Applet oder
irgendwas, wo sich da schonmal jemand an soetwas versucht hat?
Ich hab schon eine Zeit gesucht, aber nichts brauchbares gefunden,
leider ...
Grüße,
Markus
Markus schrieb:> hat jemand eine Ahnung, wie man die "Dominanten" Farben eines Bildes> bestimmen kann?>> Ich hab es über ein HSV-Histogramm versucht, das Ergebnis war aber nicht> besonders. Das Problem ist, dass es da zig Sonderfälle gibt, wie> Graustufen, Schwarz oder Weiß. Wann ist eine Farbe farbig und nicht> schwarz, oder nicht weiß usw ...>> Weitere Probleme ist z.B. die Lichttemperatur, die wohl mit einem> automatischen Weißabgleich irgendwie kompensiert werden müsste.>> Kennt jemand zufällig eine Library, ein Paper, ein Applet oder> irgendwas, wo sich da schonmal jemand an soetwas versucht hat?>> Ich hab schon eine Zeit gesucht, aber nichts brauchbares gefunden,> leider ...
Gleich vorweg, ich kenne kein Paper.
Aber ich versteh jetzt ehrlich gesagt nicht, inwiefern da jetzt die zig
Sonderfälle groß ein Problem sein sollen.
Mittels HSV hast du ja im S die Farbsättigung. D.h. alle Pixel, deren
Farbsättigung nicht über einem Grenzwert liegt (keine Ahnung, 25%
erscheint mir aus dem Bauch heraus angemessen), nehmen an der Auswertung
nicht teil.
Und für den Rest: Statistik führen wieviele Pixel jeweils denselben Hue
Wert haben, bzw. sowas wie Hue-Boxen einführen (aus dem Bauch: alle 10°)
und alle übrigen Pixel in der richtigen Box zählen. Die Box, und damit
der entsprechende Hue Wert, mit den meisten Pixel gewinnt dann das
Rennen.
So würde ich das versuchen.
Ich habs aber nicht getestet kann daher nicht sagen, wie gut das
funktioniert.
HLS ist eventuell besser geeignet als HSV
Rufus Τ. Firefly schrieb:> Definiere Dominante Farbe. Inwiefern unterscheidet sich die vom> Mittelwert über alle Pixel?
Nicht wirklich. Der Mittelwert über das angehängt Bild wär sicher nicht
blau.
Ich hab das HSV-Histogramm des Bildes auch gleich noch angehängt.
Es ist eigentlich überraschend, weil ich als Mensch hätte gesagt, dass
das Bild als Dominante Farbe vor allem Blau enthält.
Gimp mit HSV-Histogramm sieht das aber anders. Liegt wohl an der
Farbtemperatur.
Markus schrieb:> Gimp mit HSV-Histogramm sieht das aber anders. Liegt wohl an der> Farbtemperatur.
?
Das ist allerdings eigenartig.
Wo kommen denn da die ganzen rot und gelb Anteile im Spektrum her?
-> hast du alles unterdrückt, was in der Farbsättigung nahe bei schwarz
oder weiß liegt?
Karl heinz Buchegger schrieb:> Wo kommen denn da die ganzen rot und gelb Anteile im Spektrum her?
Ich schätze, das Bild ist bei gelblicher Zimmerbeleuchtung aufgenommen
worden, d.h. man müsste vorher wahrscheinlich noch einen Weißabgleich
irgendwie machen.
> -> hast du alles unterdrückt, was in der Farbsättigung nahe bei schwarz> oder weiß liegt?
Ich weiß nicht, wie Gimp das macht. Bei meinen Tests hab ich alles
unterdrückt, was graustufig oder sehr hell oder sehr dunkel ist. Groß
anders hat es aber nicht ausgesehen.
Markus schrieb:>> -> hast du alles unterdrückt, was in der Farbsättigung nahe bei schwarz>> oder weiß liegt?>> Ich weiß nicht, wie Gimp das macht. Bei meinen Tests hab ich alles> unterdrückt, was graustufig oder sehr hell oder sehr dunkel ist. Groß> anders hat es aber nicht ausgesehen.
Na ja.
Du musst ja 3 Spektren haben.
Eines für Hue
Eines für Saturation
Eines für Value
Einfach nur das Hue Spektrum zu betrachten bringt dich nicht weiter, das
ist schon klar. Das Hue Spektrum ist erst dann interessant, wenn du alle
die Unbunten Pixel eliminimiert hast. Die siehst du aber im Hue nicht,
dazu brauchst du das Saturation und Value Spektrum.
(Ach so, das ist ein Bild als Ganzes. Ich dachte das Spektrum stammt vom
Bild welches auf dem Laptopmonitor zu sehen ist und dort gibt es ja nur
Blau, schwarz und weiß :-)
Markus schrieb:> Es ist eigentlich überraschend, weil ich als Mensch hätte gesagt, dass> das Bild als Dominante Farbe vor allem Blau enthält.
Eventuell liegt es aber auch daran, das wir die Intensität von Farben
nicht gleich stark wahrnehmen
Ich finde, das Bild wirkt recht gelblich - der Tisch, der Hintergrund
(Tür?), auch die Oberfläche des Notebooks. Entweder weil das Ganze bei
Glühbirenlicht aufgenommen wurde, oder weil das helle Blau auf dem
Display den Weißabgleich der Kamera irritiert hat.
Das Blau wirkt hier vor allem deshalb subjektiv so dominant, weil es
gegenüber dem Rest des Bildes stark raussticht.
Die Frage ist, was du jetzt eigentlich genau willst. Den
Durchschnittsfarbwert oder die Farbe, die dem Betrachter subjektiv am
meisten auffällt?
Rolf Magnus schrieb:> Die Frage ist, was du jetzt eigentlich genau willst. Den> Durchschnittsfarbwert oder die Farbe, die dem Betrachter subjektiv am> meisten auffällt?
Auf jeden Fall die Farbe, die dem Betrachter am meisten auffällt.
Ich müsste vlt mal ein Farb-Histogram erstellen und das mit der
Farbempfindlichkeit des menschlichen Auges gewichten. Wär interessant,
was dann rauskommen würde ...
Was ich mir auch gedacht habe wäre die Quantisierung der Farben. Früher
zu 8Bit-Palette-Zeiten und Gif musste man RGB doch in eine optimierte
Palette umrechnen. Wenn ich ein Bild auf z.B. 16 Farben quantisiere, hab
ich vlt schon das, was ich brauche.
Markus schrieb:> Rolf Magnus schrieb:>> Die Frage ist, was du jetzt eigentlich genau willst. Den>> Durchschnittsfarbwert oder die Farbe, die dem Betrachter subjektiv am>> meisten auffällt?>> Auf jeden Fall die Farbe, die dem Betrachter am meisten auffällt.>> Ich müsste vlt mal ein Farb-Histogram erstellen und das mit der> Farbempfindlichkeit des menschlichen Auges gewichten. Wär interessant,> was dann rauskommen würde ...
Ich glaube aber nicht so sehr, daß das hier das Problem ist. Ich denke
eher, daß das Blaue hier besonders auffällt, weil es eine hohe
Farbsättigung hat, weil es relativ mittig ist, sich farblich stark vom
Hintergrund abhebt und weil es eine große quasi einfarbige Fläche am
Stück ist. Da kann man sich bestimmt beliebig komplexe Regeln einfallen
lassen, die da im Gehirn ablaufen, und es gibt bestimmt auch schon
jemanden, der das getan hat. ;-)
Interessant wäre vielleicht mal, was rauskommt, wenn man die Pixel
einfach nach ihrer Farbsättigung gewichtet. Also im H-Histogramm für
jeden Pixel bei seiner Farbe nicht 1, sondern seinen S-Wert
draufzuaddieren.
> Was ich mir auch gedacht habe wäre die Quantisierung der Farben. Früher> zu 8Bit-Palette-Zeiten und Gif musste man RGB doch in eine optimierte> Palette umrechnen. Wenn ich ein Bild auf z.B. 16 Farben quantisiere, hab> ich vlt schon das, was ich brauche.
Naja, im Prinzip ist das rückwärts gedacht. Wenn man ein Bild auf 16
Farben reduziert, braucht man einen Algorithmus, der das möglichst "gut"
macht, also die wichtigsten Farben beibehält. Du willst den jetzt
nutzen, um die die wichtigste Farbe zu ermitteln. Da hängt's natürlich
vom verwendeten Algorithmus ab, wie gut das klappt.
Aus welchem Farbraum stammen die Bilder?
Enthalten sie ein Farbprofil?
Da steht üblicherweise der Weisspunkt drin. Bei Bildern ohne Profil
würde ich von sRGB ausgehen, stimmt meistens, ich glaube da liegt der
Weisspunkt bei D65. Ich würde also das Histogramm nicht in HSB machen,
sondern in LAB, relativ farbmetrisch (d.h. unter Berücksichtigung des
Weisspunktes) ...
Frank