Representació per subpíxels

De Viquipèdia
Dreceres ràpides: navegació, cerca
Un dels patrons de subpíxels utilitzats en les pantalles LCD.

La renderització per subpíxels és una tècnica que aprofita el fet que els monitors LCD utilitzen tres subpíxels (vermell, verd i blau) per a la creació del color d'un píxel. D'aquesta manera, s'aconsegueix augmentar la definició aparent de la pantalla. Aquesta característica, és utilitzada, sobretot, en la renderització de la tipografia digital i en general, allà on es necessiti renderitzar una alta freqüència espacial (canvi brusc de color).

Rerefons[modifica | modifica el codi]

Macro d'una pantalla LCD

En una pantalla LCD, un sol píxel (unitat mínima que forma una imatge gràfica), està format, normalment, de tres subpíxels corresponents als colors primaris vermell, verd i blau (ja sigui en aquest ordre o al revés). Gràcies a la síntesi que realitza el nostre sistema visual, percebem la suma d'aquests tres primaris com a un sol color.

Així doncs, la formació de gràfics en un monitor sorgeix de la suma dels píxels encesos, cadascun amb el color que li pertoca. Aquesta manera de funcionar, però, crea problemes en certs moments. Un dels més clars és la representació d'una línia diagonal negra sobre un fons blanc, que al no respectar cap de les direccions de la graella de píxels (vertical o horitzontal), es mostra com una línia més o menys dentada (fenomen popularment conegut com a pixelització).

Una de les solucions proposades per aquest tipus de problema és l'aplicació d'algun mètode anti-aliàsing, fent creure a l'ull humà que està veient una imatge a una definició més alta. Així, la línia diagonal estaria envoltada de píxels o punts grisos, de diferents intensitats, que farien la transició entre el blanc i el negre d'una manera menys brusca.

Per tant, tant els mètodes d'anti-aliàsing com de renderització basada en subpíxels, o una combinació d'ambdós, l'objectiu és la suavització sobretot dels contorns i en especial de les fonts mostrades en pantalla.

Funcionament[modifica | modifica el codi]

W negra sobre fons blanc. En aquesta imatge es pot apreciar com es mostra el caràcter amb píxels sencers.
En aquesta altra, s'ha utilitzat la renderització per subpíxels.

La variació dels colors d'un subpíxel, poden fer variar tant la intensitat com el color del píxel del qual forma part. La renderització per subpíxels, bàsicament, permet fer els càlculs vectorials per dibuixar la tipografia fins al nivell del subpíxel (els components vermell, verd i blau del punt).

D'aquesta manera, s'encenen o s'apaguen els subpíxels adjacents als punts necessaris, amb una precisió tres vegades més alta que si treballéssim amb píxels sencers. Aquest funcionament, permet triplicar la definició horitzontal d'una pantalla LCD.

Finalment, el sistema visual humà coopera en aquesta operació, ja que tendeix a entendre els subpíxels com a part dels píxels adjacents.

Representació per subpíxels
Exemple del funcionament de la renderització per subpíxels. En aquest cas, podem veure com la qualitat de representació del caràcter, augmenta d'esquerra a dreta:
  1. Representació sense renderització per subpíxels ni anti-aliàsing (píxels sencers).
  2. Renderització per subpíxels sense anti-aliàsing.
  3. Només anti-aliàsing.
  4. Renderització per subpíxels amb anti-aliàsing.

Podem veure com la combinació de la renderització per subpíxels i l'anti-aliàsing obté el resultat més òptim.

Limitacions[modifica | modifica el codi]

Dependència de l'ordre dels píxels[modifica | modifica el codi]

Les pantalles LCD poden tenir ordenats els seus píxels R-G-B o B-G-R, així doncs, la renderització per subpíxels es tracta d'una tècnica molt lligada a la tecnologia usada per la construcció de cada tipus de pantalla. D'aquesta manera, al existir diferents tipus de construcció de pantalles LCD (diferent ordenació dels píxels, diferents patrons, etc.) fa que els algorismes de renderització per subpíxels s'hagin de refer per cada cas.

Cal, doncs, que l'usuari (o el sistema operatiu), conegui les característiques de la pantalla LCD i pugui configurar correctament els paràmetres del motor de renderització.

Incompatible amb pantalles CRT[modifica | modifica el codi]

Les pantalles de tub de raigs catòdics utilitzen una tecnologia completament diferent a les pantalles LCD. És per aquesta raó que els algorismes de renderització no els hi són útils. En les pantalles CRT, l'estat d'un píxel no és completament independent, sinó que depèn dels píxels adjacents. Cal conèixer amb molta precisió el comportament dels feixos d'electrons i la naturalesa dels fòsfors per tal d'implementar una bona renderització per subpíxels.

Tot i així, s'ha comprovat com alguns algorismes de renderització per subpíxels funcionen per la millora de visualització en pantalles CRT, a causa del fet que també s'hi inclou aspectes d'anti-aliàsing.

Només apaïsat[modifica | modifica el codi]

El portàtil del projecte OLPC en funció de llibre electrònic.

Degut a la distribució dels subpíxels en les pantalles LCD, la renderització basada en subpíxels, només funciona millorant la definició horitzontal de les pantalles. Si la pantalla és concebuda per utilitzar-la majoritàriament en vertical, cal que es fabriqui expressament amb la distribució dels subpíxels de forma vertical (com per exemple en els llibres electrònics).

Història[modifica | modifica el codi]

Inicialment desenvolupat per IBM Corp., l'any 1988, els seus enginyers van reduir l'aliàsing cromàtic amb un filtre que representa els valors d'un grup de píxels com una mitjana ponderada. Tot i així, la renderització per subpíxels no va ser utilitzada pel gran públic fins al 1998 amb la tecnologia ClearType™, de Microsoft i implementat al sistema operatiu Windows 98.

Cal dir que, Steve Wozniak, dissenyador d'Apple, reclama que l'any 1976 ja es va desenvolupar la primera tecnologia per la renderització per subpíxels. L'ordinador Apple II suportava una forma primitiva de renderització per subpíxels al seu mode d'"alta resolució" (280x192 píxels). Utilitzava una característica del senyal de color NTSC que per coincidència és molt semblant al que s'usa avui en dia en els monitors LCD amb RGB. Tot i així, aquest mètode pot arribar a ser vist més com una limitació de la manera en què la màquina genera el color, que no pas una tècnica intencionadament explotada pels programadors per incrementar la definició horitzontal.

Diferències entre sistemes operatius[modifica | modifica el codi]

Normalment, la implementació dels algorismes de renderització per subpíxels es duen a terme a nivell de sistema operatiu. D'aquesta manera, totes les aplicacions que hi ha per sobre se'n poden proveir. Aquest fet provoca que cada sistema operatiu realitzi una implementació lleugerament diferent a la resta, segons la manera d'entendre la idea de renderització per subpíxels i els seus objectius.

És a dir, l'empresa o comunitat que hi ha darrere de cada SO té una filosofia diferent, sobretot pel que fa a la renderització de fonts, i l'aplica a la seva manera, obtenint resultats diferents en cada cas.

Windows[modifica | modifica el codi]

Tots els sistemes operatius Windows de Microsoft utilitzen la tecnologia ClearType des del Windows 98, però no va ser fins al Windows Vista en què s'activa per defecte. Es diu que aquesta implementació sobreposa la intel·ligibilitat de la tipografia, per sobre del respecte al seu disseny. Bàsicament, el que fa és adaptar millor els caràcters a la graella existent de píxels.

MacOS[modifica | modifica el codi]

Apple defensa la preservació del disseny de la tipografia, encara que això aporti un punt menys d'intel·ligibilitat, compromesa sobretot amb lletres molt petites. D'aquesta manera el MacOS s'ha popularitzat més entre els dissenyadors gràfics.

GNU/Linux[modifica | modifica el codi]

Els sistemes GNU/Linux disposen de les llibreries FreeType i Caire per a la renderització per subpíxels, ambdues sota llicències lliures. Aquest fet permet que no s'imposi una filosofia de renderització concreta i que cada distribució i fins i tot, cada usuari, pugui disposar d'un algorisme lleugerament diferent, i adaptat a les seves necessitats.

Vegeu també[modifica | modifica el codi]

Enllaços externs[modifica | modifica el codi]