Forum: PC-Programmierung "Dominante" Farbe von Bildern bestimmen


von Markus (Gast)


Lesenswert?

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

von Karl H. (kbuchegg)


Lesenswert?

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

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Definiere Dominante Farbe. Inwiefern unterscheidet sich die vom 
Mittelwert über alle Pixel?

von Markus (Gast)


Angehängte Dateien:

Lesenswert?

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.

von David .. (volatile)


Lesenswert?


von Karl H. (kbuchegg)


Lesenswert?

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?

von Markus (Gast)


Lesenswert?

David ... schrieb:
> http://labs.ideeinc.com/multicolr/ vl hilft das?

Wow, das ist beeindruckend!

Genau sowas würde ich suchen. Sieht nur leider so aus, dass die halt 
richtig Geld damit verdienen möchten ...

von Markus (Gast)


Lesenswert?

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.

von Karl H. (kbuchegg)


Lesenswert?

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ß :-)

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Warum ausgerechnet ein HSV-Histogramm und nicht ein RGB-Histogramm?

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

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

von Rolf M. (rmagnus)


Lesenswert?

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?

von Markus (Gast)


Lesenswert?

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.

von Rolf M. (rmagnus)


Lesenswert?

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.

von Frank (Gast)


Lesenswert?

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

von Frank (Gast)


Lesenswert?


Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.