1
Daniele Marini
Modelli del colore3
2
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.
3
Confrontare i coloriPiccoli spostamenti nello spazio RGB o XYZ dannoluogo a grandi spostamenti percettivi:
Diagramma di Wrightdella distanza percettiva
4
Ellissi di MacAdam
Spazio CIE
5
Ellissi di MacAdam
spazio percettivo lineare
6
Spazio CIE Lu*v*
7
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*
8
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
9
Spazio CIE La*b*
L*: LIGHTNESS
L* =116YYn
⎛
⎝ ⎜ ⎜
⎞
⎠ ⎟ ⎟
1/3
−16 seY
Yn
> 0.008856
L* =903.3YYn
⎛
⎝ ⎜ ⎜
⎞
⎠ ⎟ ⎟ altrimenti
L* trasforma la quantità fotometrica Y (luminanza) in una scala che è percettivamente uniforme in luminosità
10
a* e b*: a* =500XXn
⎛
⎝ ⎜ ⎜
⎞
⎠ ⎟ ⎟
1/ 3
−YYn
⎛
⎝ ⎜ ⎜
⎞
⎠ ⎟ ⎟
1/3⎡
⎣
⎢ ⎢
⎤
⎦
⎥ ⎥
b* =200YYn
⎛
⎝ ⎜ ⎜
⎞
⎠ ⎟ ⎟
1/ 3
−ZZn
⎛
⎝ ⎜ ⎜
⎞
⎠ ⎟ ⎟
1/3⎡
⎣
⎢ ⎢
⎤
⎦
⎥ ⎥
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
11
Distanza cromatica
Distanza euclidea in uno spazio colore percettivamenteuniforme
Distanza cromatica utile per trovare “colori corrispondenti”e risolvere “costanza cromatica”
12
E94 (CIE La*b*)
222
94
**** ⎟⎟
⎠
⎞⎜⎜⎝
⎛
⋅
+⎟⎟⎠
⎞⎜⎜⎝
⎛
⋅
+⎟⎟⎠
⎞⎜⎜⎝
⎛
⋅
=HH
ab
CC
ab
LL SkH
SkC
SkL
E
22 *** baC ab += ⎟⎠
⎞⎜⎝
⎛=a
barcH tan
1=LS abC CS *0045.01 ⋅+= abH CS *0015.01 ⋅+=
1=== HCL kkk
13
Interpolazione coloriin diversi spazi
RGB
XYZ
CIELUV
14
Gamma dei colori - gamut
15
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 unasoluzione
16
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
17
Spazio Y uvdetto 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.299 0.587 0.114 0.596 -0.274 -0.322 0.212 -0.523 0.311
18
Spazio A c1c2 - spazio acromatico
Da XYZ ad Ac1c2 si usa la matrice:
-0.0177 1.0090 0.0073 -1.5370 1.0821 0.32090.1946 -0.2045 0.5264
Orienta il sistema di riferimento secondo l’asse di massima varianza; approssima lo spazio della sensibilità retinica.
19
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))
20
Spazio HLS
21
Da RGB a HLSmax=massimo tra R, G e B; min=minimo tra R, G e B
L=(max+min)/2se max=min allora S=0 e H non ha sensose L<=0.5 allora S=(max-min)/(max+min)altrimenti S=(max-min)/(2-max-min)
delta=max-minse R=max allora H=(G-B)/deltase G=max allora H=2+(B-R)/deltase B=max allora H=4+(R-G)/delta
H=H*60se H<0 allora H=H+360
(output range: H=(0,360), L=(0,1), S=(0,1))
22
Spazio HSV
23
Da RGB a HSVmax=massimo tra R, G e B; min=minimo tra R, G e B
V=max
S=(max-min)/maxse S=0 allora H non ha sensoaltrimenti delta=max-minse R=max allora H=(G-B)/deltase G=max allora H=2+(B-R)/deltase B=max allora H=4+(R-G)/delta
H=H*60se H<0 allora H=H+360
(output range: H=(0,360), S=(0,1), V=(0,1))