Een JPEG-bestand, formeel bekend als een JPEG/JFIF-bestand (Joint Photographic Experts Group/JPEG File Interchange Format), is gestructureerd als een reeks gegevenssegmenten, elk beginnend met een markering. Deze markeringen identificeren het type en de functie van de gegevens van het segment. Hier volgt een overzicht van de belangrijkste componenten:
1. Begin van afbeelding (SOI): De allereerste markering, `FF D8`, geeft het begin van het JPEG-bestand aan. Het is alsof je zegt:"Dit is een JPEG-afbeelding, let op!"
2. App-markeringen (APPn): Toepassingsspecifieke markeringen, aangegeven met `FF E0` tot `FF EF`. Deze bevatten vaak metadata, zoals:
* JFIF (JPEG File Interchange Format): Dit segment bevat informatie over de resolutie van de afbeelding, de kleurruimte (meestal YCbCr) en andere essentiële parameters. Het is cruciaal voor een goede weergave.
* Exif (uitwisselbaar afbeeldingsbestandsformaat): Deze bevat metadata zoals camera-instellingen, datum/tijd, GPS-locatie etc. Vaak uitgebreider dan JFIF.
* Andere metagegevens: Andere toepassingen kunnen hun eigen metagegevenssegmenten toevoegen.
3. Kwantiseringstabel(len) (DQT): Deze segmenten ("FF DB") definiëren de kwantiseringstabellen die worden gebruikt voor compressie met verlies. Deze tabellen bepalen hoeveel details tijdens de compressie worden weggegooid. Er kunnen verschillende tabellen worden gedefinieerd voor luminantie (helderheid) en chrominantie (kleur).
4. Huffman-tabel(len) (DHT): Deze segmenten (`FF C4`) definiëren de Huffman-coderingstabellen die worden gebruikt voor entropiecodering. Deze tabellen bepalen hoe vaak voorkomende gegevens worden weergegeven met kortere codes, waardoor de compressie-efficiëntie wordt verbeterd.
5. Begin van frame (SOF): Deze markering (`FF C0`, `FF C1`, `FF C2`) specificeert de basiseigenschappen van de afbeelding:
* Afbeeldingsgegevensformaat: Basislijn DCT, Progressieve DCT, enz.
* Samplingfactoren: Hoeveel pixels er worden bemonsterd voor elke kleurcomponent (bijvoorbeeld 4:2:0, 4:2:2, 4:4:4). Dit heeft invloed op de resolutie van kleurinformatie.
* Aantal componenten: Meestal 3 (Y, Cb, Cr voor kleurenafbeeldingen), maar kan 1 zijn (grijswaarden).
* Afmetingen afbeelding: Hoogte en breedte in pixels.
6. Scankoptekst (SOS): De 'FF DA'-markering geeft het begin van de gecomprimeerde beeldgegevens aan. Het specificeert welke componenten worden gescand en hoe.
7. Gecomprimeerde afbeeldingsgegevens: Dit is waar de daadwerkelijke beeldgegevens zich bevinden, gecodeerd met behulp van Discrete Cosine Transform (DCT), kwantisering en Huffman-codering (of rekenkundige codering). Dit is het grootste deel van het bestand.
8. Einde van afbeelding (EOI): De laatste markering, `FF D9`, geeft het einde van het JPEG-bestand aan.
Samengevat: Een JPEG-bestand is niet zomaar een onbewerkte afbeeldingsdump. Het is een zorgvuldig gestructureerde container met metadata en gecomprimeerde afbeeldingsgegevens. Het compressieproces omvat verschillende fasen:
1. Kleurconversie (indien van toepassing): RGB wordt doorgaans omgezet naar YCbCr.
2. Discrete cosinustransformatie (DCT): Transformeert beeldblokken in frequentiecoëfficiënten.
3. Kwantisering: Vermindert de precisie van de DCT-coëfficiënten, waardoor compressie met verlies wordt geïntroduceerd.
4. Entropiecodering (Huffman of rekenkunde): Comprimeert de gekwantiseerde coëfficiënten verder door kortere codes toe te wijzen aan frequentere waarden.
De exacte structuur en inhoud van een JPEG-bestand kan variëren, afhankelijk van de instellingen die tijdens de compressie worden gebruikt en de aanwezigheid van optionele metagegevens. Maar de basismarkers en hun volgorde blijven consistent. |