Jpeg

Jpeg Obrázek v Infoboxu. Květinová fotografie komprimovaná do formátu JPEG se stále silnější kompresí zleva doprava. Vlastnosti
Rozšíření .jpg` .jpeg` .JPG,.JPEG
Typ MIME image/jpeg
Typ formátu rastrový obrázek

JPEG (zkratka pro Joint Photographic Experts Group ) je standard, který definuje formát záznamu a dekódovací algoritmus pro komprimovanou digitální reprezentaci statického obrazu.

Nejběžnější přípony souborů pro soubory používající kompresi JPEG jsou .jpg a .jpeg , byly však také použity soubory .jpe , .jfif a .jif .

Úvod do JPEG

JPEG je zkratka pro Joint Photographic Experts Group . Toto je komise odborníků, která vydává kompresní standardy pro statický obraz. Běžně známý standard JPEG, skutečné jméno ISO / IEC 10918-1 ITU-T Doporučení T.81, je výsledkem vývoje práce, která začala v letech 19781980 prvními laboratorními kompresními testy .

Skupina JPEG, která spojila kolem třiceti mezinárodních odborníků, specifikovala standard v roce 1991 . Oficiální a konečný standard byl přijat v roce 1992 . V praxi je patentována pouze část týkající se aritmetického kódování, a proto je chráněna společností IBM , jejím návrhářem.

JPEG pouze normalizuje dekódovací algoritmus a formát. Proces kódování je ponechán otevřený konkurenci ze strany průmyslu a akademických pracovníků. Jediným omezením je, že vytvořený obraz musí být schopen dekódovat dekodér splňující normu. Norma nabízí sadu testovacích souborů zvaných soubory shody, které se používají k ověření, zda dekodér vyhovuje normě. Dekodér je považován za kompatibilní, pokud je schopen dekódovat všechny soubory souladu.

Patent týkající se JPEG standardu byla podána u Forgent společnosti, ale byl napadán Spojených států patentového úřadu (USPTO), které tato skutečnost vyvrácena na24. května 2006pro dosavadní stav techniky na základě stížnosti od Public Patent Foundation . Ale protože27. září 2007Společnost Global Patent Holdings, dceřiná společnost společnosti Acacia Research Corporation, se zase přihlásila k vlastnictví tohoto formátu.

JPEG definuje dvě třídy procesu komprese:

Tento algoritmus je velmi populární, zejména na internetu, kde komprese souboru snižuje náklady na šířku pásma. U většiny digitálních fotoaparátů a mobilních telefonů je navíc možné uložit obrázek ve formátu JPEG. Ztráty, ke kterým dochází při „klasické“ kompresi, však znamenají, že se méně používá v některých oblastech, jako je lékařské zobrazování , kde je důležitější věrná reprodukce počátečního obrazu.

Formát JPEG / JFIF podporuje maximální velikost obrázku 65 535 × 65 535 pixelů nebo více než čtyři miliardy pixelů.

Soubory JPEG

Přípony názvů souborů JPEG

Mezi nejvíce obyčejné přípony souboru pro soubory pomocí komprese JPEG jsou JPG a JPEG , ale .jpe, .jfif a .jif byly také použity. Je také možné vložit data JPEG do jiných typů souborů - soubory kódované ve formátu TIFF často obsahují miniaturu JPEG hlavního obrázku; a soubory MP3 mohou obsahovat obrázek JPEG obálky obsažené ve značce ID3v2 .

Přípona JPG se objevila v 90. letech, protože některé operační systémy tohoto období ( např. Windows 95 , 98 , Me ) neumožňovaly použití přípony souborů s více než 3 znaky.

Komprese JPEG

Proces nevratné komprese a dekomprese JPEG má šest hlavních kroků uvedených níže:

Vývojový diagram komprese
Obrázek 1: Vývojový diagram komprese.

Transformace barev

JPEG je schopen kódovat barvy v jakémkoli formátu, ale nejlepších rychlostí komprese se dosáhne s barevným kódováním typu luminance / chrominance, protože lidské oko je docela citlivé na jas (jas), ale málo na chroma (odstín) obrazu. Aby bylo možné tuto vlastnost využít, algoritmus převede původní obraz z jeho počátečního kolorimetrického modelu (obecně RGB ) na model typu chrominancí / jasu YCbCr . V tomto modelu je Y informace o jasu a Cb a Cr jsou dvě chrominanční informace, respektive modrá minus Y a červená minus Y.

Chrominanční podvzorkování

K využití této nízké citlivosti lidského oka na chrominanci lze přistoupit k dílčímu vzorkování jeho signálů. Principem operace je zmenšení velikosti několika chrominančních bloků do jednoho bloku. Identické zpracování se aplikuje na bloky Cb a bloky Cr, zatímco bloky jasu (bloky Y) se nemění. Převzorkování lze provést několika různými způsoby. Typ režimu použitého při kompresi je specifikován zápisem „J: a: b“.

Výklad notace je následující:

J: představuje šířku nejmenší uvažované pixelové matice (obecně 4)

a: počet chrominančních složek v prvním řádku

b: počet dalších chrominančních složek ve druhém řádku

Případ 4: 4: 4

Tento případ odpovídá absenci uplatnění dílčího vzorkování.

Případ 4: 2: 2

Tento případ odpovídá dílčímu vzorkování, které vede ke zmenšení velikosti bloků Cb / Cr o faktor 1/2. Za tímto účelem vypočítáme průměrnou hodnotu barevnosti dvou vodorovně sousedících pixelů.

Případ 4: 2: 0

Průměr chrominance čtyř sousedních pixelů se vypočítá a uloží do bloku vytvořeného převzorkováním. Sousední pixely tvoří čtvercové bloky o rozměrech 2 × 2 pixely. Převzorkování 4: 2: 0 proto přidává vertikální redukci k horizontální redukci režimu 4: 2: 2. Vede to k rozdělení bloků Cb / Cr o 4 velikosti.

Případ 4: 1: 1

Druhý případ je u komprese JPEG vzácný a je spíše používán ve video aplikacích, jako jsou formáty NTSC DV, DVCAM, DVCPRO.

Tento typ převzorkování umožňuje výrazně zmenšit velikost obrázků. Vede to však ke ztrátě informací, které nelze obnovit ve fázi dekódování obrazu; jedná se tedy o nevratnou kompresní operaci. Na konci této fáze jsou data ve formě bloků koeficientů Y, Cb a Cr, přičemž počet bloků Cb a Cr se rovná čtvrtině, polovině nebo 100% počtu bloků Y podle aplikovaného režim převzorkování.

Řezání do bloků

Obrázek je rozřezán na bloky 64 (8 × 8) subpixelů . Vzhledem k tomu, jasu informace není převzorkovány každý blok odpovídá 8 × 8 pixelů v původním obraze. Informace o chroma , na druhé straně, odpovídají v závislosti na převzorkování na 8 × 8, 16 × 8 nebo 16 × 16 pixelů v původním obrázku.

DCT transformace

DCT transformace ( diskrétní kosinová transformace , ve francouzštině transformovaná do diskrétní kosinové ), je digitální transformace, která se aplikuje na každý blok. Tato transformace je variantou Fourierovy transformace . Rozkládá blok, považovaný za digitální funkci se dvěma proměnnými, na součet kosinových funkcí oscilujících na různých frekvencích. Každý blok je tedy popsán spíše v mapě frekvencí a amplitud než v pixelech a barevných koeficientech. Hodnota frekvence odráží velikost a rychlost změny, zatímco hodnota amplitudy je odchylka spojená s každou změnou barvy.

Každý blok pixelů je spojen s frekvencemi

Transformace DCT je matematicky vyjádřena:

Rovnice 1: Přímá transformace DCT.

A inverzní DCT transformace je vyjádřena:

Rovnice 2: Inverzní transformace DCT.

V obou případech se konstanta rovná :

Rovnice 3: Nastavení konstantní C .

Pro ilustraci komprese byl použit úplný příklad z Digital Image Compression Techniques od Majida Rabbaniho a Paula W. Jonese.

Základní matice (blok pixelů ):

Rovnice 4: Původní matice.

Provedením DCT transformace získáme následující frekvenční matici:

Rovnice 5: DCT transformovaná matice.

Aplikace DCT je teoreticky operace bez ztráty informací; počáteční koeficienty lze zjistit použitím „inverzní DCT“ na výsledek DCT. V praxi však zůstává možná určitá ztráta informací kvůli zaokrouhlovacím chybám zavedeným během výpočtu.

Poznámky

Výpočet DCT je časově nejnáročnější A krok náročné na zdroje v kompresi a dekompresi JPEG, ale je možná Nejdůležitější, protože odděluje nízké a vysoké frekvence přítomné v obraze.

Výpočetní výkon, který je dnes k dispozici, v kombinaci s algoritmy jako FFT velmi efektivní, pomáhá učinit výpočetní čas pro současného uživatele docela přijatelným, nebo dokonce nepostřehnutelným u nejvýkonnějších strojů.

V důsledku tohoto kroku se rozlišují nízké a vysoké frekvence. Nízké frekvence jsou hlavní data přítomná v obraze, zatímco vysoké frekvence charakterizují oblasti s vysokým kontrastem, což jsou náhlé změny barvy. Protože jsou tato data méně viditelná, bude právě na nich provedena komprese.

Kvantifikace

Kvantifikace je stádium algoritmu komprese JPEG, během níž se stane největší ztráty informací (a tím i vizuální kvality), ale je to také ten, který šetří nejvíce místo (na rozdíl od DCT, který nekomprimuje).

DCT vrátil pro každý blok matici čísel 8 × 8 (za předpokladu, že bloky na obrázku jsou 8 × 8 pixelů). Kvantizace spočívá v dělení této matice jinou, zvanou kvantizační matice, která obsahuje 8 × 8 koeficientů specificky vybraných kodérem.

Cílem je zmírnit vysoké frekvence, to znamená ty, na které je lidské oko velmi necitlivé. Tyto frekvence mají nízké amplitudy a jsou dále zeslabeny kvantizací; některé koeficienty jsou dokonce často sníženy na 0.

Výpočet umožňující kvantifikaci je následující:

nejbližší celé číslo
S: celé číslo přímo menší než
Rovnice 6: Výpočet kvantizace.

A pro inverzní kvantování:

Rovnice 7: Výpočet inverzní kvantizace.

Jak ukazuje příklad níže, kvantizace přináší mnoho koeficientů zpět na 0 (zejména v pravém dolním rohu matice, kde jsou vysoké frekvence). K reprezentaci bloku je uchováváno pouze několik základních informací (soustředěných v levém horním rohu). Redundance dat obsažených v bloku se tak značně zvyšuje, což lze využít kompresním algoritmem: při kódování výsledku do souboru bude dlouhá řada nul vyžadovat velmi málo místa. Pokud je však kvantizace příliš silná (= kompresní poměr příliš vysoký), bude příliš málo nenulových koeficientů, aby věrně reprezentoval blok. Problém se objeví během dekódování nezbytného pro zobrazení obrazu: na obrazovce bude viditelné rozdělení do bloků a obraz bude vypadat „pixelovaně“.

V našem příkladu jsme vzali následující kvantizační matici:

Rovnice 8: Matice definující úroveň kvantifikace.

Což dává jako matici kvantovaných frekvencí:

Rovnice 9: Kvantifikovaná matice.
Poznámky

Kódování RLE a Huffman, komprese

Kódování se provádí klikatým způsobem, jak je znázorněno na následujícím obrázku, a končí koncovým znakem:

Pořadí kódování definované standardem JPEG
Obrázek 2: Pořadí kódování definované standardem JPEG.

Kódování našeho příkladu .

Tento výsledek je pak komprimován podle RLE algoritmu založeného na hodnotě 0 (kódování RLE zasahuje pouze u druhé), poté entropické kódování Huffmanova nebo aritmetického typu .

S následujícím velmi zjednodušeným kódovacím schématem si všimneme, že kódování nám dává dvě tabulky (čtyři pro barevný obrázek). Tyto tabulky, které se ukládají do konečného souboru, může vybrat kompresor.

Zjednodušené schéma kódování
Obrázek 3: Zjednodušené schéma kódování.

Dekomprese JPEG

Fáze dekomprese se provádějí v opačném pořadí komprese podle výše definovaných metod (současně s kompresí).

Zde je výsledek dekomprese v našem příkladu:

Rovnice 10: Výsledek dekomprese.

Stejně jako matice chyb:

Rovnice 11: Matice chyb realizovaných ztrátami.
Poznámky

Chyby jsou maximálně 5 a v průměru 1,6 nad asi 150, což nám dává průměrnou chybu asi 1%, a to vše při přechodu od 64 do 10 hodnot (s koncovým znakem); k tomu musíme přidat kvantizační matici, ale protože obecně komprimujeme velké soubory, má to malý vliv.

JPEG, bezztrátové kódování

Zde se přesnost p vzorků pohybuje od 2 do 16 bitů. Namísto DCT používá kódování prediktor P se třemi vzorky.

Bezztrátové schéma komprese JPEG
Obrázek 4: Bezztrátové schéma komprese JPEG.

Syntaxe a struktura

JPEG může odkazovat buď na kódování obrázku, nebo na formát souboru. Různé formáty souborů ( TIFF , PDF , JPG…) mohou skutečně obsahovat obrázek zakódovaný do formátu JPEG. V tomto odstavci budeme hovořit o formátu souboru (pro formát JPEG File Interchange Format se také nazývá JFIF ).

Soubor JPEG je tvořen posloupností segmentů začínajících značkou . Značka se skládá z hodnoty 0xFF následované bajtem identifikujícím typ značky. Některé značky obsahují pouze tyto dva bajty; za ostatními následují dva bajty určující velikost dat v segmentu v bajtech. Tato velikost zahrnuje tyto dva bajty velikosti, nikoli však tagy.

Běžné značky JPEG
Zkratka Hodnota Obsah Příjmení Komentáře
0xFFD8 Ne Začátek obrazu První slova souboru
SOF0 0xFFC0 proměnná velikost Začátek rámce (základní linie DCT) Označuje základní kódovaný obrázek DCT a určuje šířku, výšku, počet komponent a převzorkování komponent (např. 4: 2: 0).
SOF2 0xFFC2 proměnná velikost Začátek rámce (progresivní DCT) Označuje progresivní kódovaný obrázek DCT a určuje šířku, výšku, počet komponent a převzorkování komponent (např. 4: 2: 0).
DHT 0xFFC4 proměnná velikost Definujte Huffmanovy tabulky Určuje jednu nebo více Huffmanových tabulek.
DQT 0xFFDB proměnná velikost Definujte kvantifikační tabulky Určuje jednu nebo více kvantizačních tabulek.
DRI 0xFFDD dva bajty Definujte interval restartu Určuje interval mezi značkami RST n v makroblocích. Za touto značkou následují dva bajty označující její velikost, takže s ní lze zacházet jako s jakýmkoli segmentem proměnné velikosti.
SOS 0xFFDA proměnná velikost Začátek skenování Spustí cestu obrázku shora dolů. V základním kódování DCT je obvykle pouze jedna cesta. Progresivní obrázky DCT obvykle obsahují více cest. Tato značka určuje, který segment dat obsahuje. Velikost není uvedena: bezprostředně za ní následují entropicky zakódovaná data. Za bajty 0xFF následuje bajt 0x00, aby nedošlo k záměně se značkami.
RST č 0xFFD0… 0xFFD7 Ne Restartujte Vloží všechny r makrobloky, kde r je interval DRI (viz značka DRI). Nepoužívá se, pokud není k dispozici značka DRI. Tři nejméně významné bity značkovacího kódu se mění ve smyčce od 0 do 7.
APP č 0xFFE č proměnná velikost Specifické pro aplikaci Tato značka umožňuje zahrnout informace, které může prohlížecí program ignorovat, zatímco je stále schopen dekódovat obraz. Například soubor JPEG Exif používá k uložení metadat značku APP1 uspořádanou ve struktuře podobné formátování TIFF .
KOM 0xFFFE proměnná velikost Komentář Obsahuje textový komentář.
EOI 0xFFD9 Ne Konec obrázku Poslední slovo souboru

Související články

Poznámky a odkazy

  1. (en) Web společnosti Asure Software - od roku 2007 přejmenován na Forgent
  2. (in) „  Patent uplatněn proti standardu JPEG zamítnut patentovým úřadem jako výsledek požadavku PUBPAT  “ na pubpat.org ,26. května 2006(zpřístupněno 3. dubna 2012 )
  3. (in) Majid Rabbani a Paul W Jones , Digital Image Compression Techniques , Bellingham, SPIE Optical Engineering Press,1991, 240  s. ( ISBN  0-8194-0648-1 , OCLC  23142891 , číst online )
  4. „  ISO / IEC 10918-1: 1993 (E) s. 36  “