2012-12-21 12 views
6

Ich habe zwei Farbwerte in HSI (Farbton Sättigung und Intensität) und ich möchte eine Zahl, die den visuellen Unterschied zwischen den beiden Farben darstellt. Farbton ist eine Zahl zwischen 0 und 360 inklusive. Sättigung ist 0 bis 1 und Intensität ist 0 bis 1.Berechnen Sie den scheinbaren Unterschied in der Farbe zwischen zwei HSI-Farbwerten

Betrachten wir zum Beispiel Rot und Blau bei Sättigung von 100% und Intensität von 100%. At this website is a way to display the color by entering in the following text.

rot ist: hsv 0, 100%, 100%

blau ist: hsv 240, 100%, 100%

enter image description here

Offensichtlich sind diese zwei sehr unterschiedlichen Farben und so könnte ich auf einfache Weise versuchen, den Unterschied zwischen Farben zu berechnen, indem ich die Farbtonkomponente verwende und die absolute Differenz im Farbton, die 120 (360-240) wäre, berechnen würde, da 360 auch gleich 0 im Farbton ist.

Das Problem entsteht, wenn die Sättigung oder Intensität sehr dunkel oder hell ist, ein sehr dunkles Rot und Blau betrachten.

dunkelrot ist: hsv 0, 100%, 20%

dunkelblau ist: hsv 240, 100% 20%

enter image description here

Offensichtlich ist der optische Unterschied zwischen diesen beiden Farben ist weniger als die leuchtend roten und blauen Farben, wie ein Mensch sagen würde, wenn er gebeten würde, die Unterschiede zu vergleichen. Was ich damit meine, frage einen Freund "Welches Farbpaar ist am meisten anders?" sie werden wahrscheinlich das oberste leuchtend rote Blau sagen.

Ich versuche den Unterschied zwischen zwei Farben zu berechnen, wie ein Mensch es bemerken würde. Wenn ein Mensch zwei Farben a und b, dann zwei Farben c und d betrachtet, kann er erkennen, welche am meisten verschieden sind. Erstens, wenn die Farben hell sind (aber nicht zu hell), dann ist der Unterschied farblich bedingt. Wenn die Farben zu hell wie weiß oder zu dunkel wie schwarz oder zu grau sind, sind die Unterschiede geringer.

Es sollte möglich sein, eine Funktion diff zu haben, wobei x = diff (a, b) und y = diff (c, d) ergibt x und y, und ich kann x und y verwenden, um die Unterschiede zu vergleichen verschiedenste Farbe oder am wenigsten unterschiedliche Farbe.

+0

Ich bezweifle, gibt es eine genaue Antwort auf Dies. Sie können RGB-Farbraum versuchen, scheint es einfacher zu unterscheiden. – xiaoyi

+0

Ich habe einige Google-Suche und fand einen Farbdifferenz-Algorithmus http://www.emanueleferonato.com/2009/09/08/color-difference-algorithm-part-2/, Es gibt auch einen Wikipedia-Artikel über diese Farbdifferenz http : //en.wikipedia.org/wiki/Color_difference es muss viele Möglichkeiten geben, dies auszuarbeiten – Phil

+1

Ich habe einen professionellen Hintergrund mit Drucken/Proofing und die traditionelle Art, Farbunterschiede zu berechnen gibt es Delta E. Sie finden einen Wikipedia-Artikel hier: http://en.wikipedia.org/wiki/Color_difference –

Antwort

2

Die WCAG2.0 und 1,0 Richtlinien sowohl Bezug auf unterschiedliche Gleichungen auf die Wahrnehmung von Farbdifferenz machen:

  1. Kontrastverhältnis (http: //www.w3.org/TR/2008/REC-WCAG20 -20081211/overview.html # kontrast ratiodef)

  2. brigtness Differenz und 3. Farbdifferenz (http://www.w3.org/TR/AERT#color-contrast).

habe ich versucht, die Delta-e-Methode (http: //colormine.org/delta-e-calculator/), aber es ist quasimetric so die Differenzmessung in Abhängigkeit von der Reihenfolge der beiden Farben passieren ändern können. Wenn Sie in Ihrem Beispiel erwarten, dass diff (a, b) immer gleich diff (b, a) ist, dann ist dies nicht das, was Sie wollen (unter diesem Namen können verschiedene Algorithmen existieren, die nicht quasimetrisch sind, aber ich habe nicht nachgeschaut) vorbei an dieser Stelle).

Ich denke, dass die Farbdifferenz Metrik am ehesten meinen Erwartungen von Farbdifferenzmessungen entspricht. Für Ihr Beispiel wird es, dass diff ergeben (a, b)> diff (c, d)

Sie können es selbst testen das Tool auf dieser Website mit: http://www.dasplankton.de/ContrastA/

1

Die allgemeine Antwort scheint, was David van Driessche, sagte zu sein, finden Sie hier einige Java-Code I Delta E. zu verwenden: https://github.com/kennyliou/GAI

Dies ist eine Antwort auf die Frage ist, die beste Antwort nicht sein kann.

+0

Ich denke nicht, dass es tatsächlich eine schlechte Antwort ist, da Sie versuchen, die menschliche Wahrnehmung zu berechnen, und genau das passiert auch in einem Proofing-Workflow. Wenn Sie einen Beweis erstellen, versuchen Sie, etwas zu machen, das dem beabsichtigten Endprodukt ähnlich sieht. Und "das Gleiche" wird von Menschen beurteilt und theoretisch unter Verwendung dieses Delta E-Werts gemessen (oder approximiert). –

+0

Je nachdem, was Sie gerade tun, achten Sie auf die Sehbedingungen. Menschen sehen Farben bei unterschiedlichen Lichtverhältnissen sehr unterschiedlich (zB Sonnenlicht oder Leuchtstofflampen). Lichtverhältnisse können die menschliche Farbwahrnehmung (und damit wahrgenommene Farbunterschiede) sehr stark verändern. Bis zu dem Punkt, wo einige Farben unter einer Lichtbedingung gleich aussehen und unter einer anderen Lichtbedingung anders aussehen (bei Interesse nach "Metamerie" suchen). –

Verwandte Themen