Newsgroup: it.comp.grafica
Titolo: come riprodurre il blu-windows

Volevo settare un desktop Linux in modo che apparisse come sfondo lo
stesso colore blu di default in Windows. Allora ho controllato su Windows,
e le caratteristiche di questo colore sono:
R,G,B = 0,0,128
tonalita', saturazione, luminosita' = 160,240,60
quando provo a settare gli stessi parametri sul sistema Linux, se uso quei
valori di RGB allora gli alti tre parametri si settano in automatico a:
tonalita', saturazione, luminosita' = 240,100,50
RISULTATO: un blu visibilmente differente rispetto a quello che volevo
e se invece provo a settare questi tre ai valori che voglio, i valori di
RGB si settano in automatico su:
R,G,B = 0,128,85
RISULTATO: un verde pisello
Non sono un esperto di grafica, qualcuno mi spiegherebbe cosa sta
succedendo? 
Grazie, Gianni.
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 succedendo? 
Niente di strano.
'R' 'g' e 'b' esprimono numericamente le intensità di tre componenti
colore, ovvero dei tre colori 'base' dalla cui miscelazione si ottengono
in un "sistema colore" - per la precisione il sistema rgb additivo -
altri colori che nel loro insieme compongono il cosidetto gamut del
sistema colore (fuori dal gamut si trovano invece i colori che non
possono essere riprodotti da quel sistema).
In teoria, rgb può essere visto come un insieme di definizioni e di
regole in base alle quali si abbina un determinato colore ad ogni
possibile formula [r, g, b], dove 'r' 'g' e 'b' variano da zero a un
massimo (in genere questo massimo è il valore 255).
Sempre restando nella teoria, il punto è che queste definizioni e regole
non sono esaustive. Sottolineo che l'approssimazione è già insita nel
modello; non deriva quindi da problemi applicativi (che pure esistono).
La prima di queste approssimazioni è che 'r' sta per rosso, 'g' per
verde e 'b' per blu: queste sono solo definizioni generiche dei colori
base e tale indeterminazione si propaga a tutti i colori da essi
derivati per miscelazione.
L'approssimazione è poi resa più grossolana dal fatto che non è definito
neppure il modo con cui l'intensità di un colore base aumenta dal minimo
al massimo all'aumentare del corrispondente valore numerico. Ci si
potrebbe ad esempio aspettare che metà del valore massimo per il numero
'r' corrisponda a metà della massima intensità di colore per la
componente colore 'r' ma non è così e ancora una volta la ragione sta
nel modello, non nelle limitazioni delle apparecchiature che lo
utilizzano.
Un colore rgb, dunque, è definito dalla sua formula (r, g, b) *solo in
modo approssimativo*.
Passando alla pratica, la conseguenza di questa indeterminazione è
proprio il fatto che inviando una determinata formula rgb, diciamo [0,
0, 128], a due distinti dispositivi additivi rgb (ovvero dispositivi che
riproducono i colori mescolando rosso verde e blu secondo il modello rgb
additivo) questi producono due colori diversi. Ipotizzando infatti che
entrambi i dispositivi accettino intensità da 0 a 255, la formula
richiede che essi usino solo il blu ad una intensità intermedia, ma
quale sia questo blu e quale la frazione di intensità massima che
corrisponde al valore 128 dipende da come il dispositivo è costruito e
impostato.
Prendendo ad esempio due monitor, i colori dei fosfori sono diversi e
diversa è pure la loro intensità luminosa massima sicché sono diversi i
colori base rosso verde e blu visualizzati quando i monitor ricevono in
ingresso i massimi valori numerici.
Sono poi diverse le gamme, ovvero le curve con cui le luminosità dei tre
fosfori di ogni monitor crescono da zero al loro valore massimo quando
si fa variare nello stesso modo il rispettivo valore numerico in input:
un valore 128 per il blu non produrrà quindi la stessa intensità
luminosa, e dunque neppure lo stesso colore, su due monitor che
utilizzino lo stesso fosforo blu, esibiscano la medesima intensità
luminosa massima ma non abbiamo una 'risposta' identica in termini di
gamma (e in genere neppure due monitor dello stesso modello sono
identici sotto questo aspetto).
Il problema è molto importante applicativamente perché le differenze tra
modelli di produttori diversi così come tra modelli dello stesso
produttore (e, se si cerca una precisione di livello professionale,
anche tra apparecchi del medesimo modello) sono tutt'altro che
trascurabili.
La situazione è poi aggravata dal fatto che i dispositivi cambiano nel
tempo la loro risposta a una determinata formula colore, in altri
termini invecchiano. Questo aspetto è particolarmente importante nel
caso dei monitor, per i quali, tra l'altro, i tre diversi fosfori
invecchiano con velocità diverse provocando non solo una diminuzione di
luminosità e di contrasto ma anche una variazione di tonalità.
Le formule rgb vanno dunque viste come un dialetto specifico ad ogni
singolo apparecchio: esse forniscono un'idea del colore riprodotto (ad
esempio su qualsiasi dispositivo la formula [255, 255, 0] produce senza
dubbio un giallo, [0, 0, 0] un nero e [255, 255, 255] un bianco) ma non
lo descrivono in modo preciso. Il colore è ovviamente qualcosa di ben
definito quando lo osserviamo, ma non possiamo individuarlo con
precisione se ci viene solo sottoposta la formula rgb che gli
corrisponde su quell'apparecchio, e neppure può farlo il nostro
software. Ci servono dunque informazioni aggiuntive che per ogni
dispositivo spieghino in modo più preciso il suo comportamento.
Per mettere a disposizione l'informazione che manca si è tentato di
introdurre, senza molto successo, la "gestione del colore", che consiste
in un insieme di componenti software e di procedure capaci, a livello di
sistema operativo, di calibrare e caratterizzare colorimetricamente le
periferiche ovvero di chiarire tramite la costruzione di banali tabelle
di conversione - che prendono il nome di "profili colore" - cosa viene
prodotto in output per ogni formula inviata in input. Vediamo come.
La gestione colore, a differenza dei modelli tradizionali, considera più
realisticamente le formule colore (rgb, cmyk, cCmMykK, cmykog, cmyrgbk)
come modelli di massima e non come specifiche precise del colore.
Restando nell'ambito dei monitor, per ogni apparecchio la gestione
colore si prefigge come scopo la preventiva regolazione del dispositivo
in termini di parametri come luminosità, contrasto e temperatura del
colore su valori idonei all'uso cui è destinato (questa fase si chiama
"calibrazione"), seguita dalla costruzione *per quello specifico
apparecchio* della tabella di corrispondenza di cui sopra, in base alla
quale le formule rgb vengono abbinate ognuna al colore che le
corrisponde (questa seconda fase è la "profilazione").
Visto che il software lavora solo con numeri e non con le sensazioni
visive che utilizziamo noi essere umani, occorre rappresentare il colore
corrispondente ad una formula rgb tramite un'altra formula. Sembrerebbe
dunque di doversi mordere la coda ma non è così perché sono stati
trovati modelli matematici sufficientemente precisi che permettono di
esprimere con una terna di numeri qualsiasi colore visibile (la
corrispondenza è ovviamente biunivoca). Uno di questi modelli è quello
Lab che utilizza le componenti 'L', 'a' e 'b' e quindi formule colore
del tipo [L, a, b].
A questo punto è fondamentale capire la differenza tra una formula rgb e
una formula Lab.
La prima mi dice quali intensità di rosso, verde e blu chiedo di
utilizzare ad un determinato dispositivo: quale colore la formula
produca dipende, come spiegato sopra, dalle caratteristiche del
dispositivo.
La formula Lab, invece, mi dice cosa l'occhio pensa di quel colore.
Come? Ogni colore produce in noi una sensazione a lui e solo a lui
corrispondente, sicché se si riesce ad abbinare ad ogni sensazione una
formula matematica si può pensare, per la proprietà transitiva
dell'uguaglianza, di avere abbinato, in modo altrettanto preciso e
biunivoco, la formula al colore.
Questa corrispondenza biunivoca tra un colore e una formula matematica è
proprio ciò che risulta impossibile realizzare tramite i modelli
tradizionali come rgb e che è invece alla portata dei nuovi modelli come
Lab.
Nel profilo colore di un dispositivo rgb a ogni formula [r, g, b] viene
abbinata la formula Lab [L, a, b] che corrisponde al colore prodotto dal
dispositivo quando l'input è quella formula determinata formula rgb:
sempre per la proprietà transitiva, ciò equivale ad abbinare alla
formula rgb il colore.
Questo abbinamento conferisce dunque alla formula rgb un valore preciso
dal punto di vista colorimetrico, ovvero in termini di percezione
visiva. Sul mac dal quale scrivo, per esempio, ho in Photoshop un
profilo di monitor "Diamond Pro 2060 Color 2 6500K" per il quale il
corrispettivo della formula rgb [0, 0, 128] è la formula Lab [18, 42,
-68]; se chiedo a Photoshop di dirmi quale formula rgb serve per
visualizzare il medesimo colore [18, 42, -68] su un monitor descritto
dal profilo colore "Diamond Pro 2060 Color 3 5000K" che si riferisce
allo stesso modello impostato però ad una temperatura di soli 5000
Kelvin (e quindi con il cannone del blu che lavora ad intensità
inferiore) la formula diventa [34, 0, 132] dove la ricetta rgb è
cambiata per compensare la ridotta efficacia dei fosfori blu (che
lavorano un po' di più e sono sopratutto aiutati dai fosfori rossi nel
controbilanciare la dominante giallognola tipica di questa temperatura).
Forse il tuo problema del blu del desktop non si può annoverare tra
quelli per cui vale la pena di cimentarsi con la gestione colore, ma se
lo utilizziamo come esempio possiamo vedere come lo schema appena
descritto torna utile nella pratica.
Infatti, se è di per sé poco importante 'mappare' un dato colore alla
formula rgb che gli corrisponde su un determinato dispositivo, quando si
prendono in considerazione due dispositivi e i rispettivi profili colore
la cosa si fa interessante. Nella fattispecie, per ottenere la formula
[r2, g2, b2] che fa visualizzare al secondo monitor il colore che viene
visualizzato sul primo monitor dalla formula [r1, g1, b1] ti è
sufficiente trovare nel profilo del primo monitor il corrispettivo Lab
di quest'ultima formula e scorrere poi la tabella del profilo del
secondo monitor trovando quale formula rgb corrisponde a quella stessa
terna Lab. Questo è quello che fa il software quando converte tra due
profili, in particolare quando visualizza fedelmente il colore.
Naturalmente nella pratica le cose sono più complicate: per esempio, non
potendo costruire profili enormi, solo alcune formule rgb vengono
mappate in un determinato profilo, mentre tutte le altre vengono gestite
tramite trucchi matematici (fondamentalmente interpolazione); inoltre il
gamut non è lo stesso per tutti i monitor sicché, specie in
corrispondenza dei suoi confini (ovvero per i colori estremi), può darsi
che un equivalente esatto non esista (se, per esempio, il secondo
monitor ha luminosità inferiore al primo oppure utilizza un fosforo dal
colore meno saturo, oppure il colore del fosforo è semplicemente diverso
- magari un rosso più caldo - oppure ancora il dispositivo è decaduto a
causa dell'invecchiamento, il massimo rosso visualizzato sul primo
monitor e corrispondente alla *sua* formula rgb [255, 0 0] non può
essere gestito dal secondo monitor per il quale quel rosso risulta
"fuori gamut"). Ricorrendo ad un paragone demenzial-culinario, se i miei
ingredienti sono zucchero di canna, farina e uova, non posso pensare di
riprodurre il sapore [255, 0, 0] che ottengo quando gli ingredienti sono
la stessa farina e le stesse uova abbinate però allo zucchero raffinato,
e uso tutto lo zucchero che ho a disposizione: questo perché lo zucchero
di canna è meno dolcificante di quello raffinato (o almeno così mi
dicono).
Btw, in linea di principio la gestione colore prende in considerazione
anche altri aspetti, meno software, quali le caratteristiche di
illuminazione (intensità e temperatura della sorgente) dell'ambiente in
cui il dispositivo viene utilizzato e richiede il controllo di dettagli
quali il colore della maglietta che indossi (e che si specchia nello
schermo).
giordano
PS
Una curiosità: li hai consultati gli archivi di it.comp.grafica prima di
porre questa domanda? Non mi ricordo cosa contengono al riguardo...

 porre questa domanda? Non mi ricordo cosa contengono al riguardo...
Sono abbacinato dalla tua risposta, grazie per il tuo tempo e la cortesia.
Per rispondere a quanto mi chiedi, ho provato a fare una ricerca per
queste specifiche questioni, ma non ho trovato nulla. A questo punto avrei
due domande:
1. Ho capito che mille fattori possono influenzare il colore, e peraltro
gia' diverse cose mi erano note e/o le immaginavo. Pero' quella stessa
"ricetta" l'ho provata su vari schermi di pc con Windows, e tutti davano
lo "stesso" blu-windows ("stesso" significa non identico, ma simile).
Quello stesso pc (case + schermo) aveva prima Windows, e mi dava lo
"stesso" colore degli altri. Quello che ottengo ora con Linux e'
marcatamente diverso. Perche'?
2. Perche' quei valori di tonalita'/saturazione/valore in Windows mi
possono corrispondere al blu-windows, e invece Linux me la associa per
forza ad un verde pisello?
Grazie ancora, 
Gianni


 porre questa domanda? Non mi ricordo cosa contengono al riguardo...
Che io ricordi, non contengono così tanto, così ben scritto e così
chiaro...anzi, non contenevano! ;-]
Un'altro post salvato nel mio archivio, grazie Gio!
P.S. E' proprio caduto in basso ICG... :-P
-- 
Thunor
"Tutti noi discendiamo dall'uomo delle caverne. Quasi tutti.
Alla base del mio albero genealogico c'è l'uomo delle taverne:
a volte socievole, altre volte asociale;
a volte euforico, altre cupo come il cielo prediluvio."
A.G.P. 

 P.S. E' proprio caduto in basso ICG... :-P
Era cosi' terra-terra la mia domanda...? :(
Ciao, Gianni.


 forza ad un verde pisello?
HSB è in genere una rappresentazione alternativa del colore a livello di
interfaccia utente.
Dietro le quinte le formule restano rgb, sicché il problema dovrebbe
ricondursi a ciò che stiamo già discutendo.
giordano

 ricondursi a ciò che stiamo già discutendo.
Questo significa alternativamente una delle due cose:
- o i valori di RGB e di tonalita'/saturazione/luminosita' settati su
windows sono equivalenti, e allora Linux combina pirlate
- o i valori di RGB e di tonalita'/saturazione/luminosita' settati su
windows sono incoerenti, e allora e' Windows a combinare pirlate
Anche in questo caso, alla prima occasione utile chiedero' ad un esperto
di Linux.
Grazie ancora, ciao, 
Gianni.


 Era cosi' terra-terra la mia domanda...? :(
Ma come siete tutti problematici ultimamente: bevetevi un po' di latte e
cacao che la vita torna a sorridervi.  <bleeeeeeah>  ====:)
Credo che Thunor intendesse dire che, a dispetto di quanto si vede
scrivere sul newsgroup stesso, non è vero che qui si discute solo di
cose da poco. Il contrario di quello che temi tu, insomma.  :)
un giordano tristemente analcolico

 un giordano tristemente analcolico
Gio, se passi da ste parti una birra è assicurata :-P


La relazione tra RGB e tinta/saturazione/luminosità non dipende da
gestione del colore o altro ma solo dai numeri RGB. Tuttavia Windows e
Linux usano due diverse relazioni (cioè traducono diversamente da RGB
a tinta/saturazione/luminosità).
Per esempio (ma non solo):
in Windows la tinta è compresa tra 0 e 239, saturazione e luminosità
tra 0 e 240.
in Linux, la tinta è compresa tra 0 e 360, saturazione e luminosità
tra 0 e 100.
Dunque se devi fare confronti tra i due sistemi operativi, usa solo in
RGB e lascia perdere tinta/saturazione/luminosità.
Ciao.
-Mauro