2012-12-21 22 views
6

Ho due valori di colore in HSI (Saturazione e Intensità tonalità) e voglio un numero che rappresenti la differenza visiva tra i due colori. La tonalità è un numero compreso tra 0 e 360 ​​inclusi. La saturazione è 0 a 1 e l'intensità è 0 a 1.Calcola la differenza di colore apparente tra due valori di colore HSI

Si considerano ad esempio Rosso e Blu a Saturazione del 100% e Intensità del 100%. At this website is a way to display the color by entering in the following text.

rossa è: hsv 0, 100%, 100%

blu è: hsv 240, 100%, 100%

enter image description here

Chiaramente questi sono due colori molto diversi e quindi un modo semplice per provare a calcolare la differenza tra i colori è usare il componente Hue e calcolare la differenza assoluta in tonalità che sarebbe 120 (360-240) poiché 360 è anche uguale a 0 in tonalità.

Il problema si pone quando la saturazione o Intensità è molto scura o chiara, si consideri un rosso molto scuro e blu.

rosso scuro è: hsv 0, 100%, 20%

blu scuro è: hsv 240, 100% 20%

enter image description here

Ovviamente la differenza visiva tra questi due colori è inferiore ai colori rosso e blu, come direbbe un essere umano se gli viene chiesto di confrontare le differenze. Quello che intendo qui è chiedere ad un amico "Quale coppia di colori è più diversa?" probabilmente diranno il blu rosso brillante in alto.

Sto provando a calcolare la differenza tra due colori che un uomo avrebbe notato. Se un essere umano guardava i due colori aeb, quindi i due colori c e d, poteva notare quali erano i più diversi. Innanzitutto, se i colori sono brillanti (ma non troppo luminosi), la differenza è basata sulla tonalità. Se i colori sono troppo chiari come il bianco o troppo scuri come il nero o il grigio, le differenze sono più piccole.

Dovrebbe essere possibile avere una funzione diff dove x = diff (a, b) ey = diff (c, d) produce x e y, e io posso usare x e y per confrontare le differenze per trovare il colore più diverso o meno diverso colore.

+0

Dubito che ci sia una risposta esatta a Questo. Puoi provare lo spazio colore RGB, sembra sia più facile capire la differenza. – xiaoyi

+0

Ho fatto qualche ricerca su google e ho trovato un algoritmo di differenza colore http://www.emanueleferonato.com/2009/09/08/color-difference-algorithm-part-2/, Inoltre c'è un articolo di Wikipedia su questa differenza di colore http : //en.wikipedia.org/wiki/Color_difference ci devono essere molti modi per risolvere questo problema – Phil

+1

Ho uno sfondo professionale con la stampa/correzione e il modo tradizionale per calcolare le differenze di colore c'è Delta E. Trovi un articolo di Wikipedia qui: http://en.wikipedia.org/wiki/Color_difference –

risposta

2

Il WCAG2.0 e 1,0 orientamenti entrambi fare riferimento a diverse equazioni sulla percezione della differenza di colore:

  1. rapporto di contrasto (http: //www.w3.org/TR/2008/REC-WCAG20 -20081211/overview.html # contrasto-ratiodef)

  2. differenza brigtness e 3. colore differenza (http://www.w3.org/TR/AERT#color-contrast).

Ho provato il metodo Delta-e (http: //colormine.org/delta-e-calculator/), ma è quasimetric così la misura della differenza può cambiare a seconda dell'ordine si passa i due colori. Se nel tuo esempio ti aspetti che diff (a, b) sia sempre uguale a diff (b, a) allora questo non è quello che vuoi (potrebbero esserci algoritmi diversi sotto questo nome che non sono quasimetrici ma non l'ho esaminato passato quel sito).

Penso che la metrica della differenza cromatica sia la più vicina a soddisfare le mie aspettative sulle misurazioni della differenza cromatica. Per il vostro esempio sarà resa che diff (a, b)> diff (c, d)

È possibile verificare fuori per lei con lo strumento su questo sito: http://www.dasplankton.de/ContrastA/

1

La risposta generale sembra essere quello che ha detto David van Driessche, per usare Delta E. Ho trovato un po 'di codice Java qui: https://github.com/kennyliou/GAI

Si tratta di una risposta alla domanda, non può essere la risposta migliore.

+0

In realtà non penso che sia una cattiva risposta, dato che stai cercando di calcolare la percezione umana e questo è anche ciò che accade in un flusso di lavoro di correzione. Quando stai facendo una prova stai cercando di creare qualcosa che assomigli al prodotto finale previsto. E "lo stesso" viene giudicato dagli umani e teoricamente misurato (o approssimato) usando questo valore di Delta E. –

+0

A seconda di cosa stai facendo, attenzione alle condizioni di visione. Gli esseri umani vedono i colori in modo molto diverso in condizioni di illuminazione diverse (ad esempio la luce solare o l'illuminazione a fluorescenza). Le condizioni di illuminazione possono alterare in modo molto significativo la percezione del colore umano (e quindi le differenze di colore percepite). Al punto che alcuni colori possono sembrare uguali in una condizione di illuminazione e diversi in un'altra condizione di illuminazione (cercare "metamerismo" se interessati). –