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ů
  • 00 : Žádné jednotky; šířka: výška Poměr stran pixelu = Hustota: Hustota X
  • 01 : Pixely na palec (2,54 cm)
  • 02 : Pixely na centimetr
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:
  • 10 : Formát JPEG
  • 11 : 1 bajt na pixel paletizovaný formát
  • 13 : Formát RGB 3 bajty na pixel
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

Standardy