Technika / Web / A JPEG szabvány

Linkajánló

A JPEG szabvány

Áttekintés

A JPEG (Joint Photographic Experts Group, a szakértői csoport nevéből jön, amely kifejlesztette) a raszteres képek egy veszteséges tömörítési eljárása, amit az ISO szabványosított a jól csengő ISO/IEC IS 10918-1 néven. A szabványcsomag tartalmaz veszteségmentes tömörítést is, de ez nem terjedt el annyira.

Az Internet legelterjedtebb képformátuma nagy tömörítési aránya és páratlanul széles támogatottsága miatt. Fényképek esetében 10:1, 20:1 tömörítést ér el.

Alkalmazható szürkeárnyalatos és színes képekre is. Veszteségessége abban mutatkozik meg, hogy a kitömörítés utáni kép nem fog megegyezni az eredeti bemenettel. A technikai megoldás azt célozza, hogy az eltérés az emberi szem számára legkevésbé legyen zavaró. A minőségromlásért cserébe jobb tömörítési arányt kaphatunk, mint veszeteségmentes esetben.

Algoritmusa észrevehetően az éles határvonalakat mossa el. Így legjobban fényképekre alkalmazható, vonalas rajzoknál, számítógépes grafikáknál csúnya eredményt kapunk (vagy gyenge tömörítési arányra kényszerülünk). Tömörítési aránya, így minősége paraméterezhető.

Algoritmikai részletek

A JPEG tömörítés képsíkonként történik, a képsíkok felbontása eltérhet. Mivel az emberi szem működése inkább az fényesség-telítettség-árnylat (HLS) színsémához igazodik, először RGB-ről erre kell konvertálni a képet, és a képsíkokat az fényesség, telítettség és árnylat színkoordináták képzik. Ezen a ponton hasznos a képsíkok felbontásának különbözősége, mert szemünk inkább a fényesség eltérésére érzékenyebb. A technika így lehetővé teszi, hogy a színinformációt hordozó képsíkok fél felbontással vesznek részt a folyamatban - a minőség érezhető romlása nélkül.

Ez után a képsíkok 8x8-as négyzetekre bontása következik. Ha a képméret nem osztható 8-cal, akkor a képet a szelső sorok többszörözésével kibővítik. Ez azért megfelelő módszer, mert így nem keletkezik éles vonal.

A 8x8-as négyzetekre DCT (diszkrét koszinusz transzformáció) fut le. Ez 8x8-as négyzeteket eredményez, melynek elemei valós számok. A transzfomált négyzet együtthatói a különböző frekvenciájú felharmonikusoknak felelnek meg. A következő feladatunk az értékek kvantálása. A szem érzékenységéhez igazodva a kvantálást a kisebb frekvenciákra kisebb lépésközzel végzik, a nagy frekvenciákra nagyobbakkal. Így a nagyobb frekvenciák együtthatói nagyrész 0-k lesznek.

Tudni kell még, hogy a bal felső sarokba a 0 frekvenciához tartozó komponens kerül. Mivel a szomszédos képrészek színe általában hasonló, így ezeknek nem a tényleges értékét tárolják, hanem a különbségét az előző blokkétól (ezáltal ezek a komponensek csökkenthetők).

A fenti módon kvantált együtthatókat a bal felső sarokból indulva cikk-cakk elrendezésben sorbarendezik. Ezáltal a sorozat végére leginkább 0-k kerülnek.

A kapott sorozatot, mely nagyrészt 0-kból áll, futamhossz kódolással ({n,s},v) hármasokká alakítják. (n az utolsó nem 0 együttható és az épp kódolt együttható közti 0-k darabszáma, s mutatja, hogy az együtthatót hány biten kódoljuk, és v az együttható kódja.

Végül az ({n,s},v) hármasok {n,s} részét Huffmann-kóddal tömörítik, a v értéket pedig további tömörítés nélkül felsorolják.

Leggyakrabban 24 bites képekre alkalmazzák, és itt pixelenkénti 2 bites tömörség mellett a tömörített kép még tökéletes emberi számára. 1 bit/képpontos bitsebesség esetén a veszteség láthatóvá válik, és a felismerhetőség határa 0,086 bit/képpont körül van.

Forrás: WeblaborWiki
CreativeCommons


© halmaz.hu