joi, 25 noiembrie 2010

Corecţia gamma

Corecţia gamma se foloseşte în grafică şi este o chestie care poate fi definită în mai multe feluri. În mod formal, este aplicarea unei funcţii de putere pe luminozitate. În mod intuitiv, este metoda de a creşte sau a scădea luminozitatea aparentă (relativă) a unei imagini.

Ce face corecţia gama?

Hai să ne uităm un pic la forma matematică a poveştii, ca să înţelegem ce se întâmplă de fapt – vom vedea apoi şi de ce trebuie să ne complicăm cu chestia asta în practică. Prin corecţie gama se înţelege aplicarea unei funcţii de forma următoare pe componenta de luminozitate a unei culori (şi prin extensie asupra tuturor culorilor dintr-o imagine):

f(x) = x^\gamma \!

unde x este luminozitatea normalizată (adică variază între 0 şi 1), iar γ este... gama, adică tocmai parametrul pe care îl alegem noi atunci când operăm o corecţie.

Vă daţi seama că, de vreme ce x variază între 0 şi 1, asta înseamnă că rezultatul funcţiei va varia tot între 0 şi 1 indiferent ce valoare alegem pentru γ. Asta înseamnă că orice corecţie gama am aplica, negrul rămâne negru iar albul rămâne alb. De-asta am spus mai sus că din punct de vedere intuitiv corecţia gama influenţează luminozitatea relativă a unei imagini – orice am face, albul nu se întunecă iar negrul nu devine mai spălăcit.

În plus, pentru γ=1 funcţia nu produce nicio schimbare:

f(x) = x^1 = x \!

Deci chestiile interesante au loc numai pentru plaja medie de luminozităţi şi numai atunci când valoarea lui γ este fie supraunitară, fie subunitară. Iar fiindcă x variază între 0 şi 1, cu cât γ e mai mare, cu atât valorile intermediare ale funcţiei vor fi mai mici (şi, evident, viceversa). Cu alte cuvinte, aplicarea unei corecţii gama supraunitare întunecă o imagine, în timp ce o corecţie subunitară o luminează.

De ce avem nevoie de corecţie gama?

Culmea e că avem nevoie de corecţie gama din mai multe motive separate. De fapt, în cea mai mare parte a timpului diversele corecţii se anulează reciproc de la sine. Hai să vedem.

Monitoarele cu tub catodic, atunci şi acum

Bun, acum că ştim ce face corecţia gama, hai să vedem de ce ne trebuie aşa ceva. Deşi astăzi nu mai sunt utilizate în contextul computerelor, gândiţi-vă la un tub catodic, cel care se găseşte în monitoarele CRT. Acesta proiectează electroni dintr-un tun electronic aflat în spatele tubului către suprafaţa frontală interioară a tubului (dinspre ţuguiul din fund către faţa vizibilă a ecranului, prin interiorul tubului catodic). Faţa orientată către observator este acoperită în interior cu o substanţă care emite lumină atunci când e bombardată cu electroni.[1] Ei bine, dacă am corela diferenţa de potenţial aplicată pe catodul din tun cu gradul de luminozitate rezultat am obţine o relaţie neliniară de forma corecţiei gama, unde γ≈2,2 pentru tuburile catodice ale monitoarelor de calculator.[2]

Aşadar, în cazul unui tub catodic, dacă aplicăm tensiune proporţională cu luminozitatea rezultatul va fi o imagine prea întunecată – trebuie să facem cumva să corectăm această neliniaritate specifică tubului catodic. Hai să vedem cum arată funcţia de proporţionalitate dintre tensiune şi luminozitate:[3]

f_{catodic}(x) = x^{2,2} \!

Ce ar trebui să facem pentru a transforma această relaţie neliniară într-una liniară, de forma fcorectat(x)=x? Păi cea mai simplă soluţie ar fi să „hrănim” funcţia fcatodic cu valori compensate de aşa natură încât să obţinem funcţia liniară pe care ne-o dorim:

f_{corectat}(x) = f_{catodic}(x^\delta) = (x^\delta)^{2,2} = x^{\delta \cdot 2,2} \!

Dar de vreme ce dorim să obţinem fcorectat=x înseamnă că

\delta \cdot 2,2 = 1, deci
\delta = \frac{1}{2,2} = 0,45

Niciun comentariu: