Formát pro výměnu souborů JPEG - JPEG File Interchange Format - Wikipedia
The Formát pro výměnu souborů JPEG (JFIF) je formát obrazového souboru Standard. Definuje doplňkové specifikace pro formát kontejneru který obsahuje obrazová data zakódovaná pomocí JPEG algoritmus. Základní specifikace formátu kontejneru JPEG jsou definovány v příloze B standardu JPEG, známém jako Formát výměny JPEG (JIF). JFIF staví nad JIF, aby vyřešil některá omezení JIF, včetně zbytečné složitosti, registrace vzorků komponent, rozlišení, poměru stran a barevný prostor. Protože JFIF je doplňkový standard, lze výsledný formát souboru označovat jako „JPEG / JFIF“.
JFIF je vzájemně neslučitelné s novějším Vyměnitelný formát obrazového souboru (Exif).
Účel
JFIF definuje řadu detailů, které nejsou specifikovány standardem JPEG část 1 (ISO /IEC 10918-1, ITU-T Doporučení T.81.)[1]
Registrace vzorku součásti
JPEG umožňuje více komponent (např Y, Cb a Cr ) mít různá rozlišení, ale nedefinuje, jak by měla být tato odlišná pole vzorků zarovnána. Standard JFIF vyžaduje umístění vzorků “intersticiálně "- což znamená, že dekodér může s každým složkovým polem zacházet jako s řadou obdélníkových pixelů stejné velikosti vzorkovaných v jejich středech, přičemž každé pole má stejné vnější hranice jako obrázek. To je výhodné pro uživatele počítačů, ale nejedná se o zarovnání v MPEG-2 a většina video aplikací.
Rozlišení a poměr stran
Standard JPEG neobsahuje žádnou metodu kódování rozlišení nebo poměru stran obrazu. JFIF poskytuje informace o rozlišení nebo poměru stran pomocí rozšíření segmentu aplikace do formátu JPEG. Využívá segment aplikací č. 0, přičemž záhlaví segmentu se skládá z řetězec zakončený nulou pravopis "JFIF" v ASCII následuje byte rovný 0 a určuje, že se musí jednat o první segment v souboru, což usnadňuje rozpoznání souboru JFIF. Exif snímky zaznamenané digitálními fotoaparáty obecně tento segment nezahrnují, ale obvykle splňují ve všech ostatních ohledech standard JFIF.
Barevný prostor
Standard JPEG používaný pro kódování komprese v souborech JFIF nedefinuje které barevné kódování se používá pro obrázky. JFIF definuje barevný model použít: buď Y pro stupně šedi, nebo YCbCr odvozený od RGB barevné primárky jak je definováno v CCIR 601 (nyní známý jako Rec. ITU-R BT.601), s výjimkou jiného „plného rozsahu“ škálování komponent Y, Cb a Cr. Na rozdíl od „studiového rozsahu“ definovaného v CCIR 601, kde černá je reprezentována Y = 16 a bílá Y = 235 a hodnoty mimo tento rozsah jsou k dispozici pro zpracování signálu „headroom“ a „footroom“, JFIF používá všech 256 úrovní 8bitové reprezentace, takže Y = 0 pro černou a Y = 255 pro špičkovou bílou. RGB barevné primárky definované v JFIF přes CCIR 601 se také poněkud liší od toho, co se stalo běžnou praxí v novějších aplikacích (např., Mírně se 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éhala na základní praktiky televizního průmyslu.
Barevnou interpretaci obrázku JFIF lze zlepšit vložením souboru ICC profil, metadata barevného prostoru nebo sRGB tag a pomocí aplikace, která tyto informace interpretuje.
Struktura formátu souboru
Soubor JFIF se skládá ze sledu značek nebo segmentů značek (podrobnosti viz JPEG, syntaxe a struktura ). Značky jsou definovány v části 1 dokumentu JPEG Standard.[1] Každá značka se skládá ze dvou bajtů: an FF
byte následovaný bajtem, který se nerovná 00
nebo FF
a určuje typ značky. Některé značky stojí samostatně, ale většina označuje začátek segmentu značky, který obsahuje datové bajty podle následujícího vzoru:
FF xx s1 s2 [datové bajty]
Byty s1 a s2 společně představují 16bitové celé číslo big-endian určující délku následujících „datových bajtů“ plus 2 bajty použité k vyjádření délky. Jinými slovy, s1 a s2 uveďte počet následujících položek datové bajty tak 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 APP0 značkovací segment (zkráceně JFXX segment) (volitelně)
Jsou popsány níže.
Standard JFIF vyžaduje, aby segment markeru JFIF APP0 bezprostředně následoval za markerem SOI. Pokud se používá segment značky APP0 s rozšířením JFIF, musí okamžitě následovat segment značky JFIF APP0.[2] Soubor JFIF bude mít následující strukturu:
Struktura souboru JFIF | ||
---|---|---|
Segment | Kód | Popis |
SOI | FF D8 | Začátek obrazu |
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 02 za 1,02) |
Jednotky hustoty | 1 | Jednotky pro následující pole hustoty pixelů
|
Xdensity | 2 | Horizontální hustota pixelů. Nesmí být nula |
Hustota | 2 | Vertikální hustota pixelů. Nesmí být nula |
Xthumbnail | 1 | Počet vodorovných pixelů následující vložené miniatury RGB. Může být nula |
Ythumbnail | 1 | Počet vertikálních pixelů následující vložené miniatury RGB. Může být nula |
Miniaturní data | 3 × n | Nekomprimovaná 24bitová RGB (8 bitů na barevný kanál) rastrová miniatura dat v pořadí R0, G0, B0, ... Rn-1, Gn-1, Bn-1; s n = Xthumbnail × Ythumbnail |
Prodloužení JFIF APP0 značkovací segment
Bezprostředně po segmentu markeru JFIF APP0 může být segment markeru APPF rozšíření. Tento segment může být přítomen pouze pro JFIF verze 1.02 a vyšší. Umožňuje vložit miniaturu ve 3 různých formátech.
Prodloužení JFIF APP0 značkovací segment | ||
---|---|---|
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 miniatury | 1 | Určuje, jaký formát dat se použije pro následující vloženou miniaturu:
|
Miniaturní data | proměnná | Závisí na formátu miniatur, viz níže |
Data miniatur závisí na formátu miniatur takto:
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 používající YCbCr nebo jen Y a nesmí obsahovat segmenty JFIF nebo JFXX | |
EOI | 2 | FF D9 |
Miniatura uložena pomocí jednoho bajtu na pixel | ||
---|---|---|
Pole | Velikost (bajty) | Popis |
Xthumbnail | 1 | Počet vodorovných pixelů následující vložené miniatury. Nesmí být nula |
Ythumbnail | 1 | Počet vertikálních 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 |
Miniaturní data | n | Jeden bajt na pixel obsahující index barvy v paletě, s n = Xthumbnail × Ythumbnail |
Miniatura uložena pomocí tří bajtů na pixel | ||
---|---|---|
Pole | Velikost (bajty) | Popis |
Xthumbnail | 1 | Počet vodorovných pixelů následující vložené miniatury. Nesmí být nula |
Ythumbnail | 1 | Počet vertikálních pixelů následující vložené miniatury. Nesmí být nula |
Miniaturní data | 3 × n | Nekomprimovaná 24bitová RGB (8 bitů na barevný kanál) rastrová miniatura dat v pořadí R0, G0, B0, ... Rn-1, Gn-1, Bn-1; s n = Xthumbnail × Ythumbnail |
Kompatibilita
Novější Vyměnitelný formát obrazového souboru (Exif) je srovnatelný s JFIF, ale tyto dva standardy jsou vzájemně nekompatibilní. Je to proto, že oba standardy určují, že jejich konkrétní aplikační segment (APP0 pro JFIF, APP1 pro Exif) musí okamžitě následovat značku SOI. V praxi mnoho programů a digitálních fotoaparátů vytváří soubory s oběma aplikačními segmenty. Toto neovlivní dekódování obrazu pro většinu dekodérů, ale špatně navržené analyzátory JFIF nebo Exif nemusí soubor správně rozpoznat.
JFIF je kompatibilní s Adobe Photoshop rozšíření JPEG "Information Resource Block" a Model výměny informací IPTC metadata, protože JFIF nevylučuje další segmenty aplikace a rozšíření Photoshopu nemusí být první v souboru. Photoshop však obecně ukládá vyrovnávací paměti CMYK jako čtyřkomponentní soubory „Adobe JPEG“, které nejsou v souladu s JFIF. Protože tyto soubory nejsou v barevném prostoru YCbCr, nelze je obvykle dekódovat webovými prohlížeči a jiným internetovým softwarem.
Dějiny
Vývoj dokumentu JFIF vedl Eric Hamilton z C-Cube Microsystems Dohoda o první verzi byla uzavřena koncem roku 1991 na schůzce konané 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 nato byla zveřejněna menší revize - JFIF 1.01.[3] Téměř 20 let byla nejnovější dostupná verze v1.02, publikovaná 1. září 1992.[2]
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. The Typ MIME „image / jpeg“ musí být zakódováno jako JFIF. V praxi však prakticky veškerý internetový software dokáže dekódovat jakoukoli základní linii JIF obrázek, který používá komponenty Y nebo YCbCr, ať už je to kompatibilní s JFIF nebo ne.
Postupem času byla C-Cube restrukturalizována (a nakonec převedena do Harmonický, Logika LSI, Magnum Semiconductor, Avago Technologies, Broadcom a GigOptix, GigPeak atd.) a ztratil o dokument zájem a specifikace neměla žádného oficiálního vydavatele, dokud ji nezachytil Ecma International a ITU-T / ISO / IEC Společná skupina fotografických odborníků kolem roku 2009, aby nedošlo k jeho ztrátě v historii, a poskytl způsob, jak jej formálně uvést ve standardních publikacích a zlepšit jeho redakční kvalitu. To bylo vydáno ECMA v roce 2009 jako technická zpráva číslo 98, aby nedošlo ke ztrátě historického záznamu,[3]a bylo formálně standardizováno ITU-T v roce 2011 jako jeho doporučení T.871[4]a podle ISO / IEC v roce 2013 jako ISO / IEC 10918-5,[5] Novější publikace obsahovaly redakční vylepšení, ale žádné podstatné technické změny.
Viz také
Reference
- ^ A b „Doporučení ITU-T T.81: Informační technologie - Digitální komprese a kódování statických obrázků s nepřetržitým tónem - Požadavky a pokyny“ (PDF). ITU-T (dříve CCITT). 18. února 1992. Citováno 15. června 2015.
- ^ A b Hamilton, Eric (12. září 1992). „Formát pro výměnu souborů JPEG, verze 1.02“ (pdf, 0,02 MB). Citováno 15. června 2015.
- ^ A b „Formát pro výměnu souborů JPEG (JFIF)“. ecma-international.org. 2009. Citováno 15. června 2015.
- ^ „Doporučení ITU-T T.871: Informační technologie - digitální komprese a kódování statických obrázků s nepřetržitým tónem: JPEG File Interchange Format (JFIF)“ (PDF). ITU-T. 14. května 2011. Citováno 15. června 2015.
- ^ „ISO / IEC 10918-5: 2013: Informační technologie - Digitální komprese a kódování statických obrázků s nepřetržitým tónem: Formát JPEG (Interchange Format) (JFIF)“. ISO / Mezinárodní elektrotechnická komise. 1. května 2013. Citováno 15. června 2015.
Další čtení
Knihy
- Miano, John M, „Formáty komprimovaných obrazových souborů“; 1999, Addison-Wesley ISBN 978-0-201-60443-6
- Pennebaker, William B. a Joan L. Mitchell: Standard komprese dat statických obrázků JPEG; 3. vydání, Springer, 1993 ISBN 978-0-442-01272-4
Standardy
- Hamilton, Eric: Formát pro výměnu souborů JPEG, 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í statických obrázků s nepřetržitým tónem: 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í statických snímků se spojitým tónem - Požadavky a pokyny (PDF a Microsoft Word, 1,5 MB) Schváleno 18. září 1992; zveřejněno 14. dubna 2004