JPEG

In de informatica is het JPEG-bestandsformaat een bestandsformaat dat wordt gebruikt om digitale beelden te comprimeren. De mate van compressie kan worden gewijzigd. Als een beeld van hoge kwaliteit is, zal het een grote hoeveelheid opslagruimte innemen. Als het van lage kwaliteit is, zal het een kleine hoeveelheid opslagruimte innemen. Het JPEG-bestandsformaat wordt vaak gebruikt op het World Wide Web. Het woord JPEG is een afkorting van de Joint Photographic Experts Group, die het formaat heeft gecreëerd. JPEG-bestandsextensies zijn .jpg, .jpeg, .jpe en andere.

Een foto van een wilde kat met van links naar rechts afnemende compressie
Een foto van een wilde kat met van links naar rechts afnemende compressie

Hoe het werkt

YPbPr

Het eerste opvallende aan JPEG-compressie is de manier waarop de kleur van elke pixel wordt opgeslagen. Elke pixel van het beeld krijgt 3 bytes toegewezen om zijn kleur te definiëren. Alle drie bytes kunnen een waarde hebben van 0 tot 255 en elke mogelijke combinatie van de drie bytes staat voor een andere kleur. In de meeste bestandsformaten wordt het RGB-formaat gebruikt om de kleur te definiëren. RGB staat voor Rood Groen Blauw. Het wordt zo genoemd omdat de eerste van de drie bytes u vertelt hoeveel rood er in de kleur van de pixel zit. De tweede byte geeft aan hoeveel groen er in de kleur zit en de derde byte hoeveel blauw. Hoe hoger de waarde van de eerste byte, hoe roder de pixel.

JPEG gebruikt ook drie bytes voor elke pixel, maar het gebruikt het YPbPr (ook bekend als YCbCr) formaat. Hier vertelt de eerste byte ons hoe helder de pixel is. De tweede byte vertelt ons hoe blauw de pixel is. De derde byte vertelt ons hoe rood de pixel is. Met dit kleurformaat wordt de helderheid apart van de kleur opgeslagen. Dit is nuttig, omdat we een beeld gaan comprimeren. Omdat het menselijk oog beter helderheid ziet dan kleur, kunnen we een grotere compressie toepassen op de kleurbytes (de Pb-byte en de Pr-byte). Omdat we helderheid beter zien, gebruiken we minder compressie op de Y-byte, zodat het beeld er na compressie beter uitziet.

Omdat beelden meestal in RGB-formaat worden opgeslagen, bestaat de eerste stap van JPEG-compressie er meestal in het RGB-formaat correct om te zetten in het YPbPr-formaat.

Discrete Cosinus Transformatie

JPEG gebruikt cosinusfuncties om een beeld weer te geven. Daarom gaan we een beetje praten over cosinus functies. Dit is hoe een cosinus functie er uit zou kunnen zien:

Om de cosinusfunctie de kleur van een pixel te laten weergeven, zeggen we dat hoe hoger de waarde van de cosinusfunctie, hoe lichter de pixel. Als we een reeks pixels hadden die helder-donker-helder waren, zouden we de bovenstaande functie kunnen gebruiken om ze te definiëren.

De functie kan ook een hogere frequentie hebben. Zoals dit:

Maar hier wordt het interessant. We kunnen ook verschillende functies maken door het gemiddelde te nemen van verschillende cosinusfuncties. Hier is hoe het eruit zou zien als we het gemiddelde namen van de twee bovenstaande functies:

In JPEG wordt DCT toegepast op blokken van 8 × 8 pixels.

Kwantificering

Tot nu toe is er geen informatie verloren gegaan bij het comprimeren van het beeld. In deze stap filteren we informatie uit het beeld. Daarom is dit de stap die de kwaliteit van het beeld verlaagt. Voor elk blok van 8 × 8 pixels worden de cosinusfuncties met hoge frequenties op 0 gezet. Dit betekent dat deze geen invloed meer kunnen hebben op hoe de afbeelding eruit ziet wanneer je hem decomprimeert.

Veel waarden zullen nu 0 zijn, wat betekent dat dit heel gemakkelijk kan worden gecomprimeerd. Dit wordt gedaan met behulp van Huffman-codering. Huffman codering is de laatste stap van JPEG compressie. Het is ook de enige stap waarin de gegevens werkelijk worden gecomprimeerd.

cos(x)
cos(x)

cos(2x)
cos(2x)

(cos(x) + cos(2x)) / 2
(cos(x) + cos(2x)) / 2


AlegsaOnline.com - 2020 / 2021 - License CC3