Com funciona la compressió JPEG
Una explicació senzilla dels passos darrere d'una compressió d'imatge eficient
24. January 2025 per Bianca Palmer
T'has preguntat mai com és que el teu telèfon o càmera pot fer una foto i, al cap de pocs moments, aquesta es guarda com a JPEG, més petita, més ràpida i amb un aspecte encara nítid? Doncs, al darrere hi ha un procés impressionant que redueix fitxers d'imatge enormes a una fracció de la seva mida original mentre manté una gran qualitat. Però com funciona realment? Avui ens endinsem en tots els detalls de la La compressió JPEG, desglossant cada pas amb paraules senzilles perquè puguis entendre bé aquest procés de compressió d'imatges tan efectiu.
Què és JPEG?
JPEG (acrònim de Joint Photographic Experts Group) és un dels formats d'imatge més habituals. És l'opció més utilitzada per emmagatzemar fotos digitals. El veritable punt fort del JPEG és la seva capacitat per comprimir fitxers d'imatge, fent-los molt més petits sense una pèrdua de qualitat apreciable.
Per fer-te'n una idea, una imatge d'alta qualitat sense comprimir pot ocupar fins a 46 MB. Després de comprimir-la en JPEG, la mateixa imatge pot reduir-se fins a només 4,1 MB. Però com ho fa mantenint la nitidesa de la imatge?
La resposta és en el compression process, procés de compressió, que aprofita la manera com funcionen els nostres ulls i elimina dades innecessàries.
Què fa el JPEG?
En termes senzills, JPEG funciona analitzant la imatge i eliminant elements que els nostres ulls no poden percebre fàcilment. Quan comprimeixes una imatge amb JPEG, pots controlar quanta compressió s'hi aplica. Ajustant el paràmetre de "qualitat", pots decidir quantes dades vols estalviar. A mesura que la qualitat baixa del 100% al 0%, també disminueix la mida del fitxer proporcionalment.
Com més comprimeixes, la resolució de la imatge es manté igual, però és possible que comencis a veure alguns defectes o "artifacts" que apareixen. Aquests defectes semblen petits quadrats, però sovint són difícils de veure si no fas zoom. L'objectiu del JPEG és fer el fitxer tan petit com sigui possible sense que la imatge es vegi malament a l'ull humà.
Els passos de la compressió JPEG
La compressió JPEG La compressió JPEG no és un sol truc màgic, sinó una sèrie de passos intel·ligents dissenyats per reduir la mida de la imatge. Repassarem els cinc passos clau que fan que JPEG sigui tan eficient.
Pas 1: Conversió de l'espai de color
Les imatges estan formades per píxels, i cada píxel té components vermell, verd i blau (RGB) que es combinen per crear els colors. JPEG comença convertint aquests valors RGB en un espai de color diferent:
- Luminància (Brillantor): Representa la brillantor o claredat d'un píxel i és important per definir el contrast general de la imatge.
- Crominància (Color): Representa la informació de color, incloent-hi tant el to com la saturació.
Aquesta conversió aprofita el fet que l'ull humà és més sensible a la brillantor (luminància) que al color (crominància). En separar la brillantor del color, JPEG permet reduir dades de forma selectiva en passos posteriors i mantenir intactes els detalls visuals més importants.
Tot i que en aquest pas no es perd cap dada, prepara el terreny per a una compressió eficient.
Pas 2: Reducció de la crominància / Chroma Subsampling
Chroma Subsampling és un és una tècnica que s'aplica després de la conversió de l'espai de color. Recordes que dèiem que els nostres ulls no són gaire bons per percebre els colors (crominància) en comparació amb la brillantor (luminància)?
Doncs JPEG s'aprofita d'aquest fet reduint la quantitat de dades de color. Redueix les imatges de crominància blava i vermella fent-ne una mitjana en blocs de quatre píxels. Això fa que les dades de color siguin molt més petites mentre es manté la luminància (brillantor) inalterada. En aquest punt, la imatge ja està comprimida aproximadament a la meitat!
Pas 3: Transformada discreta del cosinus (DCT)
La Transformada discreta del cosinus (DCT) és una tècnica matemàtica que s'utilitza per convertir les dades de la imatge del domini espacial (on la imatge es representa com una graella de píxels) al domini de freqüències. Aquest procés ajuda a identificar quines parts de la imatge contenen la informació visual més important i quines parts es poden descartades.
La DCT divide la imatge en blocs de 8x8 i converteix cada bloc en una col·lecció de valors de freqüència. Les freqüències més altes que representen canvis ràpids en els valors dels píxels, com vores o soroll, sovint són menys perceptibles per a l’ull humà i es poden simplificar o eliminar.
Pas 4: Quantificació
Un cop aplicada la DCT, les dades de freqüència resultants passen per un procés de quantificació. En aquest pas, el rang de valors de freqüència es redueix dividint-los per un conjunt de constants anomenat taula de quantificació. El procés bàsicament arrodoneix els valors de freqüència per simplificar-los.
Els valors de freqüència més alts es quantifiquen amb més intensitat, cosa que significa que perden més precisió perquè són menys importants per a la qualitat general de la imatge. Aquest quart pas redueix la quantitat de dades necessàries per representar la imatge, fent que el fitxer sigui més petit. Tot i això, una quantificació excessiva pot provocar artefactes visibles, com blocs o desenfocament, sobretot amb nivells de compressió alts.
Pas 5: Codificació Run Length i Huffman
Després de la quantificació, les dades encara no són prou compactes per a un emmagatzematge eficient. Aquí és on entren en joc la codificació Run Length (RLE) i codificació Huffman per fer la seva part.
Primer, s’utilitza RLE per simplificar seqüències llargues de dades repetitives (com zeros) emmagatzemant el recompte de repeticions en lloc de cada valor individual. Després s’aplica la codificació Huffman, una tècnica que substitueix els valors que apareixen amb més freqüència per codis de bits més curts, fent el fitxer encara més petit.
These two mètodes de codificació treballen conjuntament per reduir dràsticament la mida del fitxer sense sacrificar gaire la qualitat de la imatge!
Notes addicionals
Tot i que JPEG és un format molt eficient, hi ha alguns aspectes importants a tenir en compte:
- Nivell de compressió: JPEG permet als usuaris seleccionar el nivell de compressió, però una compressió més alta redueix la mida del fitxer i pot introduir artefactes visibles com vores borroses o pixelació. Això és el resultat d’uns valors massa alts a la taula de quantificació, que generen més zeros i fan el fitxer més petit, però a costa de la qualitat de la imatge.
- Pèrdua de dades d’alta freqüència: la quantificació redueix la precisió de les dades d’alta freqüència (detalls com vores nítides), per això JPEG és ideal per a textures suaus però pot tenir problemes amb línies marcades i gràfics vectorials.
- No és ideal per a gràfics vectorials: JPEG no és l’opció més adequada per comprimir gràfics vectorials, ja que pot provocar artefactes visibles als contorns de les formes o línies.
Malgrat aquestes limitacions, JPEG continua sent el format d’imatge més popular, en part perquè és antic, ben entès i lliure de regalies. Tot i això, formats nous com WebP o HEIF ofereixen taxes de compressió encara millors sense comprometre la qualitat, cosa que els fa alternatives interessants en determinats contextos.
Per acabar
L’algoritme de compressió JPEG és un assoliment remarcable en la gestió de dades d’imatge. En dividir les imatges en blocs més petits, aplicar diverses transformacions matemàtiques i utilitzar tècniques de codificació eficients com Run Length i Huffman, permet desar imatges d’alta qualitat en fitxers molt més petits.
Tot i que JPEG té algunes limitacions, especialment amb nivells de compressió alts o amb gràfics vectorials, el seu ús estès i la seva capacitat d’oferir bons resultats en imatges fotogràfiques el converteixen en un estàndard durador.