Formát výměny souborů JPEG - JPEG File Interchange Format
Souborů JPEG Interchange Format ( JFIF ) je obrazový formát souboru Standardní. Definuje doplňkové specifikace pro formát kontejneru, který obsahuje obrazová data kódovaná algoritmem JPEG . Základní specifikace pro formát kontejneru JPEG jsou definovány v příloze B standardu JPEG, známého jako JPEG Interchange Format (JIF). JFIF staví na JIF, aby vyřešil některá omezení JIF, včetně zbytečné složitosti, registrace ukázky součásti, rozlišení, poměru stran a barevného prostoru . Protože JFIF je doplňkový standard, může být výsledný formát souboru označován jako „JPEG/JFIF“.
JFIF je vzájemně nekompatibilní s novějším formátem výměnného obrazového souboru (Exif).
Účel
JFIF definuje řadu podrobností, které jsou ve standardu JPEG část 1 ( ISO / IEC 10918-1, doporučení ITU-T T.81.) Nespecifikovány.
Registrace ukázky součásti
JPEG umožňuje různým rozlišením více komponent (například Y, Cb a Cr ), ale nedefinuje, jak by měla být tato různá pole vzorků zarovnána. Standard JFIF vyžaduje, aby byly vzorky umístěny „ intersticiálně “ -což znamená, že dekodér může zacházet s každým složkovým polem tak, že představuje pole stejně velkých obdélníkových pixelů vzorkovaných v jejich středech, přičemž každé pole má stejné vnější hranice jako obraz. To je praktické pro uživatele počítačů, ale není to zarovnání používané v MPEG-2 a většině video aplikací.
Rozlišení a poměr stran
Standard JPEG neobsahuje žádnou metodu kódování rozlišení nebo poměru stran obrázku. JFIF poskytuje informace o rozlišení nebo poměru stran pomocí rozšíření segmentu aplikace do formátu JPEG. Používá aplikační segment č. 0, přičemž záhlaví segmentu sestává z nulového zakončení řetězce „JFIF“ v ASCII, za nímž následuje bajt rovný 0, a určuje, že se musí jednat o první segment v souboru, což usnadňuje rozpoznat soubor JFIF. Snímky Exif zaznamenané digitálními fotoaparáty obecně tento segment neobsahují, ale ve všech ostatních ohledech obvykle vyhovují standardu JFIF.
Barevný prostor
Standard JPEG používaný pro kompresní kódování v souborech JFIF nedefinuje, jaké barevné kódování se má pro obrázky použít. JFIF definuje barevný model, který má být použit: buď Y v odstínech šedé, nebo YCbCr odvozené z primárních barev RGB, jak jsou definovány v CCIR 601 (nyní známý jako Rec. ITU-R BT.601), s výjimkou jiného škálování „celého rozsahu“ složky Y, Cb a Cr. Na rozdíl od „studiového rozsahu“ definovaného v CCIR 601, kde je černá reprezentována Y = 16 a bílá Y = 235 a hodnoty mimo tento rozsah jsou k dispozici pro zpracování signálu „světlá výška“ a „prostor pro nohy“, JFIF používá všech 256 úrovní 8bitové reprezentace, takže Y = 0 pro černou a Y = 255 pro špičkovou bílou. Barevné primární barvy RGB definované v JFIF prostřednictvím CCIR 601 se také poněkud liší od toho, co se stalo běžnou praxí v novějších aplikacích (např. Se mírně liší od primárních barev definovaných v sRGB ). CCIR 601 (před rokem 2007) navíc neposkytl přesnou definici primárních barev RGB; místo toho se spoléhalo na základní praktiky televizního průmyslu.
Interpretaci barev obrázku JFIF lze zlepšit vložením profilu ICC , metadat barevného prostoru nebo značky sRGB a použitím aplikace, která tyto informace interpretuje.
Struktura formátu souboru
Soubor JFIF se skládá ze sekvence značek nebo segmentů značek (podrobnosti viz JPEG, syntaxe a struktura ). Značky jsou definovány v části 1 standardu JPEG . Každá značka se skládá ze dvou bajtů: FFbajt následovaný bajtem, který není roven 00nebo FFa určuje typ značky. Některé značky jsou samostatné, ale většina označuje začátek segmentu značky, který obsahuje datové bajty podle následujícího vzorce:
FF xx s1 s2 [data bytes]
Bajty s1 a s2 jsou pohromadě reprezentovány 16bitovým celým číslem s velkým endianem určujícím délku následujících „datových bytů“ plus 2 bajty použité k reprezentaci délky. Jinými slovy, s1 a s2 určují počet následujících datových bytů jako .
Podle části 1 standardu JPEG mohou aplikace používat segmenty značek APP a definovat specifický význam dat pro aplikaci. Ve standardu JFIF jsou definovány následující segmenty značek APP:
- Segment značky JFIF APP0 (zkráceně segment JFIF) (povinné)
- Rozšíření JFIF Značkovací segment APP0 (zkráceně segment JFXX) (volitelně)
Jsou popsány níže.
Standard JFIF vyžaduje, aby segment markeru JFIF APP0 bezprostředně následoval po značce SOI. Pokud je použit značkovací segment APP0 s rozšířením JFIF, musí bezprostředně následovat po segmentu markeru JFIF APP0. Soubor JFIF tedy bude mít následující strukturu:
| Struktura souboru JFIF | ||
|---|---|---|
| Segment | Kód | Popis |
| SOI | FF D8 |
Začátek obrázku |
| JFIF-APP0 | FF E0 s1 s2 4A 46 49 46 00 ... |
viz. níže |
| JFXX-APP0 | FF E0 s1 s2 4A 46 58 58 00 ... |
volitelné, viz níže |
| … Další segmenty značek (například SOF, DHT, COM) |
||
| SOS | FF DA |
Začátek skenování |
| komprimovaná obrazová data | ||
| EOI | FF D9 |
Konec obrázku |
Segment značky JFIF APP0
V povinném segmentu značky JFIF APP0 jsou specifikovány parametry obrázku. Volitelně lze vložit nekomprimovanou miniaturu.
| Segment značky JFIF APP0 | ||
|---|---|---|
| Pole | Velikost (bajty) | Popis |
| Značka APP0 | 2 |
FF E0
|
| Délka | 2 | Délka segmentu bez značky APP0 |
| Identifikátor | 5 |
4A 46 49 46 00= "JFIF" v ASCII , ukončeno nulovým bajtem
|
| Verze JFIF | 2 | První bajt pro hlavní verzi, druhý bajt pro vedlejší verzi ( 01 02pro 1,02)
|
| Jednotky hustoty | 1 | Jednotky pro následující pole hustoty pixelů
|
| Hustota X | 2 | Horizontální hustota pixelů. Nesmí být nula |
| Hustota Y | 2 | Vertikální hustota pixelů. Nesmí být nula |
| Xthumbnail | 1 | Horizontální počet pixelů následující vložené miniatury RGB. Může být nula |
| Miniatura | 1 | Svislý počet pixelů následující vložené miniatury RGB. Může být nula |
| Data miniatur | 3 × n | Nekomprimovaná 24bitová data RGB rastru (8 bitů na barevný kanál) v pořadí R0, G0, B0, ... Rn-1, Gn-1, Bn-1; s n = Xthumbnail × Ythumbnail |
Segment markeru rozšíření JFIF APP0
Bezprostředně za segmentem markeru JFIF APP0 může být segment markeru APP0 rozšíření JFIF. Tento segment může být přítomen pouze pro JFIF verze 1.02 a vyšší. Umožňuje vložit miniaturu obrázku ve 3 různých formátech.
| Segment markeru rozšíření JFIF APP0 | ||
|---|---|---|
| Pole | Velikost (bajty) | Popis |
| Značka APP0 | 2 |
FF E0
|
| Délka | 2 | Délka segmentu bez značky APP0 |
| Identifikátor | 5 |
4A 46 58 58 00= "JFXX" v ASCII , ukončeno nulovým bajtem
|
| Formát miniatur | 1 | Určuje, jaký formát dat se použije pro následující vloženou miniaturu:
|
| Data miniatur | proměnná | Záleží na formátu miniatur, viz níže |
Data miniatur závisí na formátu miniatur následujícím způsobem:
| Miniatura uložená pomocí kódování JPEG | ||
|---|---|---|
| Pole | Velikost (bajty) | Popis |
| SOI | 2 |
FF D8
|
| proměnná | Musí být ve formátu JIF pomocí YCbCr nebo pouze Y a nesmí obsahovat segmenty JFIF nebo JFXX | |
| EOI | 2 |
FF D9
|
| Miniatura uložená pomocí jednoho bajtu na pixel | ||
|---|---|---|
| Pole | Velikost (bajty) | Popis |
| Xthumbnail | 1 | Horizontální počet pixelů následující vložené miniatury. Nesmí být nula |
| Miniatura | 1 | Svislý počet pixelů následující vložené miniatury. Nesmí být nula |
| Paleta miniatur | 768 | 256 položek palety, z nichž každá obsahuje 24bitovou hodnotu barvy RGB |
| Data miniatur | n | Jeden bajt na pixel obsahující index barvy v paletě,
s n = Xthumbnail × Ythumbnail |
| Miniatura uložená pomocí tří bajtů na pixel | ||
|---|---|---|
| Pole | Velikost (bajty) | Popis |
| Xthumbnail | 1 | Horizontální počet pixelů následující vložené miniatury. Nesmí být nula |
| Miniatura | 1 | Svislý počet pixelů následující vložené miniatury. Nesmí být nula |
| Data miniatur | 3 × n | Nekomprimovaná 24bitová data RGB rastru (8 bitů na barevný kanál) v pořadí R0, G0, B0, ... Rn-1, Gn-1, Bn-1; s n = Xthumbnail × Ythumbnail |
Kompatibilita
Novější formát výměnného obrazového souboru (Exif) je srovnatelný s JFIF, ale tyto dva standardy jsou vzájemně nekompatibilní. Důvodem je, že oba standardy specifikují, že jejich konkrétní aplikační segment (APP0 pro JFIF, APP1 pro Exif) musí bezprostředně následovat značku SOI. V praxi mnoho programů a digitálních fotoaparátů vytváří soubory s oběma aplikačními segmenty. U většiny dekodérů to nebude mít vliv na dekódování obrazu, ale špatně navržené analyzátory JFIF nebo Exif nemusí soubor správně rozpoznat.
JFIF je kompatibilní s rozšířením JPEG „Information Resource Block“ v Adobe Photoshopu a metadaty IPTC Information Interchange Model , protože JFIF nevylučuje další segmenty aplikací a není nutné, aby byla rozšíření Photoshopu první v souboru. Photoshop však obecně ukládá vyrovnávací paměti CMYK jako čtyřkomponentní „Adobe JPEG“, které nejsou v souladu s JFIF. Protože tyto soubory nejsou v barevném prostoru YCbCr, nelze je obvykle dekódovat pomocí webových prohlížečů a jiného internetového softwaru.
Dějiny
Vývoj dokumentu JFIF vedl Eric Hamilton ze společnosti C-Cube Microsystems a dohoda o první verzi byla uzavřena na konci roku 1991 na setkání konaném v C-Cube za účasti asi 40 zástupců různých počítačových, telekomunikačních a zobrazovacích společností. Krátce poté byla zveřejněna menší revize - JFIF 1.01. Téměř 20 let byla nejnovější dostupná verze v1.02, publikovaná 1. září 1992.
V roce 1996 RFC 2046 specifikoval, že formát obrazu používaný pro přenos obrázků JPEG přes internet by měl být JFIF. Typ MIME „image/jpeg“ musí být kódován jako JFIF. V praxi však prakticky veškerý internetový software může dekódovat jakýkoli základní obrázek JIF, který používá komponenty Y nebo YCbCr, ať už je kompatibilní s JFIF nebo ne.
Jak plynul čas, C-Cube byl restrukturalizován (a nakonec přešel na Harmonic , LSI Logic , Magnum Semiconductor , Avago Technologies , Broadcom a GigOptix, GigPeak atd.) A ztratil o dokument zájem a specifikace neměla oficiálního vydavatele dokud jej v roce 2009 nezískala společnost Ecma International a skupina Joint Photographic Experts Group ITU-T/ISO/IEC, aby nedošlo k jeho ztrátě v historii a poskytl způsob, jak jej formálně citovat ve standardních publikacích a zlepšit jeho redakční kvalitu. Vydala ji ECMA v roce 2009 jako technická zpráva číslo 98, aby se předešlo ztrátě historických záznamů, a byla formálně standardizována ITU-T v roce 2011 jako její doporučení T.871 a ISO/IEC v roce 2013 jako ISO/IEC 10918- 5, Novější publikace zahrnovaly redakční vylepšení, ale žádné podstatné technické změny.
Viz také
Reference
Další čtení
Knihy
- Miano, John M, „Komprimované formáty obrazových souborů“; 1999, Addison-Wesley ISBN 978-0-201-60443-6
- Pennebaker, William B. a Joan L. Mitchell : Standard komprese dat ve formátu JPEG ; 3. vydání, 1993, Springer ISBN 978-0-442-01272-4
Standardy
- Hamilton, Eric: JPEG File Interchange Format, verze 1.02 (PDF, 0,02 MB) 1. září 1992
- Doporučení ITU-T T.871: Informační technologie-Digitální komprese a kódování nepohyblivých obrazů: JPEG File Interchange Format (JFIF) (PDF a Microsoft Word, 0,2 MB) Schváleno 14. května 2011; zveřejněno 11. září 2012
- Doporučení ITU-T T.81: Informační technologie-Digitální komprese a kódování fotografií se souvislými tóny-Požadavky a pokyny (PDF a Microsoft Word, 1,5 MB) Schváleno 18. září 1992; zveřejněno 14. dubna 2004