Modelli del colore 3 Daniele Marini
Spazi percettivi Esperimenti effettuati su volontari mostrano che ad uguali variazioni di colore, intese come uguali spostamenti all'interno dello spazio colore XYZ, non corrispondono uguali differenze nella percezione degli stessi. Il nostro sistema visivo è sensibile in modo diverso a seconda delle varie lunghezze d'onda che costituiscono il colore, e alla diversa luminosità del colore stesso. Per avere uno spazio colore percettivamente uniforme, è stato definito lo spazio L*u*v*, che riduce notevolmente questo difetto congenito del modello XYZ.
Confrontare i colori Piccoli spostamenti nello spazio RGB o XYZ danno luogo a grandi spostamenti percettivi: Diagramma di Wright della distanza percettiva
Ellissi di MacAdam Spazio CIE
Ellissi di MacAdam spazio percettivo lineare
Spazio CIE Lu*v*
L'algoritmo di conversione XYZ->L*u*v* (Xn,Yn,Zn)=coordinate dell'illuminante standard scalate con Yn=100 se Y/Yn>0.008856 allora L*=116(Y/Yn)^(1/3)-16 altrimenti L*=903.3(Y/Yn) u*=13L*(4X/(X+15Y+3Z)-4Xn/(Xn+15Yn+3Zn)) v*=13L*(9Y/(X+15Y+3Z)-9Yn/(Xn+15Yn+3Zn)) nb.:L* è la stessa per lo spazio L*a*b*
il solido piú interno é generato da stimoli colore risultanti dalla riflessione (o trasmissione) di energia radiante incidente sopra gli oggetti; l’area piú esterna é generata da stimoli colore monocromatici
Spazio CIE La*b* L*: LIGHTNESS se > 0.008856 altrimenti L* trasforma la quantità fotometrica Y (luminanza) in una scala che è percettivamente uniforme in luminosità
a* e b*: I valori Xn, Yn, Zn sono i valori X, Y, Z di un bianco di riferimento; se uno dei rapporti X/Xn, Y/Yn, Z/Zn è minore o uguale a 0.008856, allora verrà sostituito da: 7.787F + 16/116 dove F è uno tra i rapporti X/Xn, Y/Yn, Z/Zn
Distanza cromatica Distanza euclidea in uno spazio colore percettivamente uniforme Distanza cromatica utile per trovare “colori corrispondenti” e risolvere “costanza cromatica”
DE94 (CIE La*b*)
Interpolazione colori in diversi spazi RGB XYZ CIELUV
Gamma dei colori - gamut
Gamut mapping Trasferire la gamma colori da un dispositivo all’altro - Approccio locale: aggiusta solo i pixel fuori gamma - Approccio globale: analizza tutti i pixel per trovare una soluzione
Metodi locali: scalare tutti i valori RGB uniformemente scalare solo l’intensità lasciando invariata cromaticità ridurre la saturazione lasciando invariata tinta e intensità “clamping” dei valori in [0, 1] scalare i pixel in modo non uniforme anche quelli entro la gamma Metodi globali cerca minimo e massimo nell’immagine e riscala i valori nell’intervallo min-max: (Ci -min)/(max-min) riscala solo i pixel fuori gamma elabora statistica sull’immagine, scegli metodo locale o globale
Spazio Y uv detto anche EBU (European Broadcasting Union), è di fatto lo standard adottato per la codifica delle informazioni colore negli schermi TV Pal/Secam. Y è chiamato “luma”. Per passare da RGB a Yuv si usa la matrice: 0.299 0.587 0.114 -0.147 -0.289 0.436 0.615 -0.515 -0.100 Il sistema NTSC usa Y’i’q’ con la matrice: 0.596 -0.274 -0.322 0.212 -0.523 0.311
Spazio A c1c2 - spazio acromatico Da XYZ ad Ac1c2 si usa la matrice: -0.0177 1.0090 0.0073 -1.5370 1.0821 0.3209 0.1946 -0.2045 0.5264 Orienta il sistema di riferimento secondo l’asse di massima varianza; approssima lo spazio della sensibilità retinica.
L'algoritmo di conversione RGB->HSI I=1/3*(R+G+B) S=1-(3/(R+G+B))*a dove a è il minimo tra R, G e B H=arcos((0.5((R-G)+(R-B)))/((R-G)^2+(R-B)*(G-B))^0.5)) se S=0 allora H non ha senso se (B/I)>(G/I) allora H=360-H è inoltre possibile normalizzare H a (0,1) con H=H/360 (output range: H=(0,1) oppure H=(0,360), S=(0,1), I=(0,1))
Spazio HLS
Da RGB a HLS max=massimo tra R, G e B; min=minimo tra R, G e B L=(max+min)/2 se max=min allora S=0 e H non ha senso se L<=0.5 allora S=(max-min)/(max+min) altrimenti S=(max-min)/(2-max-min) delta=max-min se R=max allora H=(G-B)/delta se G=max allora H=2+(B-R)/delta se B=max allora H=4+(R-G)/delta H=H*60 se H<0 allora H=H+360 (output range: H=(0,360), L=(0,1), S=(0,1))
Spazio HSV
Da RGB a HSV max=massimo tra R, G e B; min=minimo tra R, G e B V=max S=(max-min)/max se S=0 allora H non ha senso altrimenti delta=max-min se R=max allora H=(G-B)/delta se G=max allora H=2+(B-R)/delta se B=max allora H=4+(R-G)/delta H=H*60 se H<0 allora H=H+360 (output range: H=(0,360), S=(0,1), V=(0,1))