mikrocontroller.net

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


Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Definiere Dominante Farbe. Inwiefern unterscheidet sich die vom 
Mittelwert über alle Pixel?

Autor: Markus (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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.

Autor: David ... (volatile)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ...

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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ß :-)

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Warum ausgerechnet ein HSV-Histogramm und nicht ein RGB-Histogramm?

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Rolf Magnus (rmagnus)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Rolf Magnus (rmagnus)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.