Mi az a JPEG?

ekkor: 2011-01-19 · Kategória: Képszerkesztés Szakosan

Általánosságban:

Aki látott már a számítógépe képmegjelenítőjén digitális állóképet, az nagy valószínűséggel JPEG képet látott. Az egyik leggyakrabban használt képformátum. A rövidítés a Joint Photographic Experts Group mozaikszóból adódik, ez a társulat találta ki és hozta létre a szabványt, még valamikor 1982-ben.

Azóta többet is készítettek, név szerint: JPEG , JPEG 2000 , JPEG XR .

Honnan tudja az ember, hogy JPEG fájlról van-e szó? – Meg kell nézni a fájl kiterjesztését, ami lehet: .jpg, .jpeg, .jpe.

Miért volt erre szükség? – Ésszerű a kérdés, hogy miért találták vajon ki, és miért van annyi képformátum, hogy el lehet bennük kavarodni. A válasz egyszerű: a JPEG egy képtömörítési szabvány, tehát a kép fájlok méretét lehet vele nagyon hatékonyan csökkenteni. Ennek viszont ára van, mivel ez egy VESZTESÉGES képtömörítési mód, ami azt jelenti, hogy ha az ember egyszer már valamit JPEG-be alakított át, az visszafordíthatatlan minőségvesztéssel járt, az eredeti állapotot ebből a fájlból lehetetlen visszaállítani. Régen nagyobb volt rá az igény mint most, hiszen ma már nagyobb kapacitású tárolók vannak, és a sávszélesség is kibővült, ha az internetre gondolunk. Mégis érdemes használni ezt a formátumot, hiszen ma már minden böngésző kompatibilis vele, minden DVD-lejátszó ismeri, minden kamerán és fényképezőgépen ott a kis JPEG felirat, minden képekkel kapcsolatos program használja és ha bárkit megkérdünk a képformátumokkal kapcsolatban, valószínűleg az első mondatában benne lesz ez a kis szócska. Ezért is fontos közelebbről megismerkednünk vele.

A JPEG motor csodája:

Ha valaki megkérdezné tőlem, hogy hogyan is készül el egy JPEG kép mondjuk egy másik, veszteségmentes formátumból, igencsak el kellene gondolkozzak, ha egyszerűen akarnám kifejezni. A működés ugyanis eléggé bonyolult.

Tudományos megfogalmazásban: (Aki nem bírja a szakszavakat, az ugorjon egy bekezdést.)
A tömörítés (Compression) egymást kiegészítő eljárások eredménye, csökkenti a képi adatban található ismétlődéseket (redundanciát) és jelen esetben, a JPEG-nél kihasználja az emberi szem gyengeségét. Mindezt olyan elven, hogy a szemünk sokkal érzékenyebb a fényességre, telítettségre, árnylatra (HLS színséma), mint a színárnyalatokra.
– 1) RGB -> YCC konverzió: Mivel szemünk kijátszható, ezért a JPEG szabvány az eredeti kép RGB pixel-szín adatokat egy világossági (Y) és két színességi (Cb, Cr) adatra alakítja, így a három adattömb eltérő mintavételi gyakorisággal tömöríthető (4:4:4, 4:2:2, 4:1:1). A szabvány így teszi lehetővé, hogy a színinformációt hordozó képsíkok alacsonyabb  felbontással vesznek részt a folyamatban a min?ség alig látható romlásával.
– 2) DCT transzformáció: Ezután a technika az adott képet 8×8-as blokkokra osztja. Ha nem osztható 8-cal, akkor a képet a szélső sorok többszörözésével bővíti. Ezeknek a blokknak az Y, Cb, Cr értékeit a DCT (Diszkrét Koszinusz Transzformáció) koszinusz függvények együtthatóiként tárolja. Gondolom ennél a pontnál páran abbahagyták az olvasást, pedig a java még csak ezután következik: a szabvány kvantálja az együtthatókat, ahogy növeljük a kvantálás mértékét, úgy veszik el szépen előbb a magas, aztán a középső, aztán az alacsony frekvencia, végül marad a 8×8-as blokk pixelszíneinek átlaga.
– 3) Futóhossz tömörítés: (Run Lenght Encoding) A képadatokban az ismétlődő számokhoz rendelt futóhossz kódolással a fájlméret tovább csökken, mert a kvantált együtthatók eloszlása olyan, hogy az ismétlődő számok, főleg a nullák, rendszerint ismétlődnek. Tehát minnél nagyobb a kvantálás mértéke, annál hatékonyabban működik az RLE. Ez veszteségmentesen megy végbe.
– 4) Huffman tömörítés: A futóhossz kódolás eredményeként kapott számpárok végső tömörítése statisztikai (vagy aritmetikai) alapon működik, a Huffman kódolással. A gyakori számok kódja rövidebb, a ritkábban előfordulóké hosszabb. Ez szintén veszteségmentes tömörítési lépcsőfok.
– 5) Az így elkészült JPEG fájlban a kódolt adatokat megelőzi a fejléc (File Header), amely az EXIF és a WEB szöveges információkon kívül tartalmazza a két kvantáló és a Huffman táblázat szabványos adatait is.

Emberi nyelven:
A lényeg, hogy a JPEG kihasználja az emberi szem hiányosságát, miszerint az érzékenyebb a fény-árnyék-telítettség hatásokra, mint a színekre. Ezen a tényen keresztül felbontja a képeket 8×8-as blokkokra, tulajdonképpen leegyszerűsíti az eredeti képet, mellyel csökken a fájl mérete, viszont ez minőségvesztéssel jár. Ezért láthatunk kis négyzeteket a rosszabb minőségű JPEG képekben, amire azt mondja az ember, helytelenül, hogy ez a kép nagyon kockás. Tulajdonképpen a 8×8-as blokkok határait látjuk.

A JPEG Előnyei, Hátrányai:

A JPEG-et tehát nem ok nélkül találták ki, hiszen az alapelv az, hogy a minőség feláldozható a fájlméret oltárán. Ez így is van, hiszen az ember nem feltétlenül veszi észre az apróbb különbségeket, viszont nem szabad átesni a ló túloldalára, mert akkor egy nagyon gyenge minőségű kép lehet az eredményünk. Egy közepes minőségű JPEG kép mérete akár több 10-szer is kisebb lehet mint a forrás, viszont egy közepes minőségű JPEG és egy gyenge minőségű JPEG kép közt a minőség romlás nagyon nagy, viszont a fájlméret közt nincs óriási különbség = nem éri meg.

JPEG táblázat: A képeket (kattintással) kinagyítva láthatod a különbségeket!
Ez itt egy 500x500px-nagyságú JPG kép, melyet más-más minőségbe konvertáltam Photoshoppal.

 

JPG_minoseg_kozepes

JPG_minoseg_jo

 

A JPEG képek nem alkalmasak az egyszerű formák, vonalas rajzolatok, szöveges ábrák, ikonok megjelenítésére, arra inkább más, veszteségmentes képformátumokat szoktunk használni, mint például a PNG, GIF.
A működése miatt nem tudja rendesen megjeleníteni a line-art (vonalas típusú) képeket, ugyanis a hirtelen (szín)változások határát a kvantált DCT tömörítési eljárás nem képes eléggé magas frekvenciákkal kezelni, ezért ott alias típusú hibák keletkeznek.

Fontos továbbá megemlíteni, hogy JPEG fájlt általában nem szokás közvetlenül szerkeszteni, hanem más -veszteségmentes- formátumba kell konvertálni és majd a munka legvégén alakítjuk vissza JPEG-be, a további adatvesztés elkerülése miatt. A köztes tömörítések ugyanis mindig rontanak a kép minőségén. Manapság szinte minden képszerkesztő program támogatja a formátumot, tehát ezzel különösebb gond nem lehet.