JPEG
Aquest article tracta sobre l'estàndard. Vegeu-ne altres significats a «Joint Photographic Experts Group». |
JPEG (acrònim de Joint Photographic Experts Group) és un algorisme dissenyat per a comprimir imatges estacionàries amb 24 bits de profunditat o en escala de grisos.
Una fotografia d'una flor comprimida successivament amb més ràtio de compressió d'esquerra a dreta. | |
Tipus | Format d'imatge amb pèrdua |
---|---|
Extensió | .jpg, .jpeg, .jpe .jif, .jfif, .jfi (containers) |
MIME | image/jpeg |
Codi de tipus | JPEG |
Uniform Type Identifier | public.jpeg |
Magic number | ff d8 |
Desenvolupador | Joint Photographic Experts Group |
Més informació | |
Stack Exchange | Etiqueta |
Lloc web | jpeg.org… |
El 1982 es va iniciar el grup JPEG al que s'uneix el SGVII el 1986. La primera versió de l'estàndard va ésser aprovada el 1991.
El JPEG només tracta imatges fixes, però existeix un estàndard relacionat anomenat MPEG per a vídeo. De vegades hom l'anomena incorrectament JPG a causa de l'extensió que té en sistemes operatius que només accepten tres lletres d'extensió.
A banda de ser un mètode de compressió, també és considerat un format de fitxer. JPEG/EXif és el format d'imatge més comú, utilitzat per les càmeres fotogràfiques digitals i altres dispositius de captura d'imatge, juntament amb JPF/JFIF, un altre format per l'emmagatzement i la transmissió d'imatges fotogràfiques en la World Wide Web. Aquestes variacions de formats sovint no es distingeixen i s'anomenen "JPEG". Els fitxers d'aquest tipus s'anomenen amb l'extensió .jpg.
Compressió del JPEG
El format JPEG utilitza habitualment un algorisme de compressió amb pèrdua per reduir la mida dels arxius d'imatges. Això vol dir que al descomprimir o visualitzar la imatge no s'obté exactament la mateixa imatge d'abans de la compressió. Existeixen tres variants del JPEG que comprimeixen la imatge sense pèrdua de dades: JPEG 2000, JPEG-LS i Lossless JPEG.
L'algorisme de compressió JPEG es basa en dos fenòmens visuals de l'ull humà: un és el fet que és molt més sensible al canvi de luminància que al de crominància; és a dir, que capta més bé els canvis de brillantor que els de color; l'altre és el fet que l'ull nota més fàcilment els petits canvis de brillantor en zones homogènies que en zones on la variació és gran (per exemple, en els extrems dels objectes).
Una de les característiques del JPEG és la flexibilitat a l'hora d'ajustar el grau de compressió. Un grau de compressió molt alt generarà un arxiu de mida petita amb una pèrdua significativa en la qualitat; en canvi, un grau de compressió molt baix generarà una qualitat d'imatge molt semblant a la original, però amb un arxiu de mida més gran.
La pèrdua de qualitat quan es fan compressions succesives és acumulativa. Això significa que si es comprimeix una imatge i es descomprimeix, es perdrà qualitat, però si es torna a comprimir una imatge ja comprimida s'obtindrà una pèrdua encara més gran. Cada compressió suposarà una pèrdua de qualitat addicional. La compressió amb pèrdua no és recomanable en imatges o gràfics amb textos o línies molt definits, però ho és per arxius que tinguin àrees grans de colors sòlids.
Objectius del JPEG
- Aconseguir taxes de compressió i qualitat d'imatge situades a prop dels límits de la tecnologia actual.
- Els mètodes han d'ésser útils per comprimir imatges tant a nivell de grisos com de color o multi-resolutives. Així com independents de la mida de les imatges.
- La implementació dels mètodes ha de ser possible mitjançant aplicacions de programari en qualsevol plataforma. També el desenvolupament de circuits integrats que implementin la codificació ha d'ésser possible.
Codificació
Moltes opcions del JPEG estàndard s'utilitzen poc. Això és una breu descripció d'un dels molts mètodes per comprimir imatges quan s'apliquen a una imatge d'entrada amb 24 bits per píxel (vuit per cada vermell, verd i blau, o també anomenat "8 bits per canal".) Aquesta opció en particular és un mètode de compressió amb pèrdua.
Transformació de l'espai de color
Es comença convertint la imatge des del seu model de color RGB a un altre anomenat YUV o YCbCr. Aquest espai de color és similar al que utilitzen els sistemes de color per televisió PAL i NTSC, però és molt més semblant al sistema de televisió MAC (Multiplexed Analogue Components)
Aquest espai de color (YUV) té tres components:
- El component Y, o luminància (informació de brillantor; és a dir, la imatge en escala de grisos.
- Els components U o Cb i V o Cr, respectivament diferència del blau (relativitza la imatge entre blau i vermell) i diferència del vermell (relativitza la imatge entre verd i vermell); ambdues senyals conegudes com a crominància (informació de color).
Les equacions que realitzen aquest canvi de base de RGB a YUV son les següents:
Y = 0,257 * R + 0,504 * G + 0,098 * B + 16 Cb = U = -0,148 * R - 0,291 * G + 0,439 * B + 128 Cr = V = 0,439 * R - 0,368 * G - 0,071 * B + 128
Les equacions pel canvi invers són les següents:
B = 1,164 * (Y - 16) + 2,018 * (U - 128) G = 1,164 * (Y - 16) - 0,813 * (V - 128) - 0,391 * (U - 128) R = 1,164 * (Y - 16) + 1,596 * (V - 128)
Si s'analitzen les primeres equacions es pot veure que els tres components agafen com a valor mínim el 16. El canal de luminància (canal Y) té com a valor màxim el 235 i els canals de crominància el 240. Tots aquests valors caben en un byte arrodonint al nombre enter més pròxim. Durant aquesta fase no hi ha pèrdua significativa d'informació, tot i que l'arrodoniment introdueix un petit marge d'error imperceptible per l'ull humà.
Submostreig
Una opció que es pot aplicar a l'hora de guardar la imatge és reduir la informació del color respecte a la de la brillantor (degut al fenomen visual en l'ull humà comentat anteriorment). Hi ha diferents mètodes: si aquest pas no s'aplica, la imatge segueix en el seu espai de color YUV (aquest submostreig s'entén com a 4:4:4) i no hi ha pèrdues. La informació cromàtica es pot reduir a la meitat, 4:2:2 (reduir en un factor de 2 en direcció horitzontal); d'aquesta manera, el color té la meitat de la resolució (en horitzontal) i la brillantor segueix intacta. Un altre mètode molt utilitzat és reduir el color a la quarta part, 4:2:0, així el color es redueix en un factor de 2 en horitzontal i vertical. Si la imatge estava en una escala de grisos, es pot eliminar per complet la informació de color, quedant com a 4:0:0.
Alguns programes que permeten guardar imatges en JPEG anomenen aquests mètodes amb 1x1, 1x1, 1x1 per YUV 4:4:4 (l'opció per no perdre color); 2x1, 1x2, 1x1 per YUV 4:2:2 i 2x2, 1x1, 1x1 per YUV 4:2:0.
Transformació discreta del cosinus (DCT)
Cada component de la imatge es divideix en blocs petits de 8x8 píxels que es processen de manera gairebé independent, fent que disminueixi notablement el temps de càlcul. D'això resulta la típica formació quadriculada, que es torna visible en les imatges guardades amb una compressió alta. Si la imatge ha passat per un submostreig del color, els colors queden en la imatge final en blocs de 8x16 i 16x16 píxels (segons si és 4:2:2 o 4:2:0).
Després, cada bloc petit es converteix al domini de la freqüència a través de la transformació discreta del cosinus o DCT.
Un exemple d'un d'aquests blocs petits de 8x8 inicial és aquest:
El pas següent és restar 128 perquè quedin nombres entorn al 0, -128 i 127.
Es procedeix a la transformació per DCT de la matriu i l'arrodoniment de cada element al nombre enter més pròxim.
L'element més gran de tota la matriu apareix al cantó superior esquerra, aquest és el coeficient DC.
Quantificació digital
Article principal: Quantificació digital
L'ull humà és molt bo detectant canvis petits de brillantor en àrees relativament grans, però no ho és quan la brillantor canvia ràpidament en àrees petites (variació d'alta freqüència). Degut a aquesta condició, es poden eliminar les altes freqüències sense una gran pèrdua de qualitat visual. Això es fa dividint cada component en el domini de la freqüència per una constant per aquell component i arrodonint-lo al seu nombre enter més pròxim. Aquest és el procés en el que es perd la major part de la informació (i qualitat) quan una imatge és processada per aquest algoritme. El resultat d'això és que els components de les altes freqüències tendeixen a igualar-se a zero, mentre que molts d'altres es converteixen en nombres positius i negatius petits.
Una matriu de quantificació típica és la matriu de Losheller, que s'utilitza opcionalment en l'estàndard JPEG.
Dividint cada coeficient de la matriu de la imatge transformada entre cada coeficient de la matriu de quantificació, s'obté aquesta matriu, ja quantificada:
Per exemple, quantificant el primer element, el coeficient DC, seria així:
Codificació entròpica
La codificació entròpica és una manera especial de compressió sense pèrdua de dades. Consisteix en agafar els elements de la matriu seguint una forma de zig-zag, posant grups amb freqüències similars junts i insertant zeros de codificació i utilitzant la codificació Huffman pel que queda. També es pot utilitzar la codificació aritmètica, superior a la de Huffman, tot i que s'utilitza poc perquè esta coberta per patents; aquesta compressió produeix arxius un 5% menors, però tarda més temps a codificar i descodificar. Aquest petit guany es pot fer servir també en aplicar un menor grau de compressió a la imatge per obtenir més qualitat a una mida semblant.
En la matriu anterior, la seqüència en zig-zag és aquesta:
−26, −3, 0, −3, −2, −6, 2, −4, 1 −4, 1, 1, 5, 1, 2, −1, 1, −1, 2, 0, 0, 0, 0, 0, −1, −1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
El JPEG té un codi Huffman per tallar la cadena anterior en el punt en que la resta de coeficients siguin zeros. D'aquesta manera, s'estalvia espai:
−26, −3, 0, −3, −2, −6, 2, −4, 1 −4, 1, 1, 5, 1, 2, −1, 1, −1, 2, 0, 0, 0, 0, 0, −1, −1, EOB
Soroll per la compressió
Article principal: Soroll de quantificació
El resultat després de la compressió pot variar en funció de l'agressivitat dels divisors de la matriu en la quantització: com més valor tinguin els divisors, més coeficients es convertiran en zeros i més es comprimirà la imatge. Però les compressions més grans produeixen soroll en la imatge, empitjorant-ne la qualitat. Una imatge amb una compressió forta (1%-15%) pot tenir una mida d'arxiu petita, però tindrà tantes imperfeccions que no serà interessant; en canvi, una imatge amb una compressió molt baixa (98%-100%) produirà una imatge de qualitat alta però tindrà una mida molt gran.
La majoria de personas que naveguen per Internet estan familiaritzades amb aquestes imperfeccions, que són el resultat d'una bona compressió. Per evitar-les, s'ha de reduir el nivell de compressió o aplicar compressió sense pèrdua, produint arxius més grans.
Descodificació
El procés de descodificació és similar al que hem vist fins ara, però de manera inersa. En aquest cas, al haver perdut informació, els valors finals no coincidiran amb els inicials.
S'agafa la informació de la matriu, es descodifica i es posa cada valor a la seva casella. Després es multiplica cadascun dels valors pel valor corresponent de la matriu de quantització utilitzada; molts valors són zeros i, per tant, només es recuperen (i de manera aproximada) els valors de l'extrem superior esquerra.
Després es desfà la transformació DCT:
I finalment es suma 128 a cada entrada:
Per comparar les diferències entre el bloc original i el comprimit, es troba la diferència entre ambdues matrius. La mitjana dels seus valors absoluts dóna una idea de la qualitat que s'ha perdut: