Fő tartalom
A számítógép és az Internet
Tantárgy/kurzus: A számítógép és az Internet > 1. témakör
7. lecke: AdattömörítésVeszteséges tömörítés
A veszteséges tömörítési algoritmusok a fájl méretét úgy csökkentik, hogy a kevésbé fontos információt elhagyják.
Senki se szeret információt veszíteni, de egyes fájltípusok annyira nagyok, hogy egyszerűen nincs elég hely az összes eredeti adat tárolására. Ráadásul nincs is mindig szükség az összes adatra. Gyakran ez a helyzet fényképek, videók és hangfelvételek esetében, olyan fájloknál, amelyek világunk fantasztikus összetettségét ragadják meg.
A számítógépek hihetetlenül sok részletet képesek megörökíteni egy fotón – de vajon ennek mekkora részét képes az ember valóban érzékelni? A helyzet az, hogy voltaképpen rengeteg részlet elhagyható. A veszteséges tömörítési algoritmusok lényege, hogy okos módszereket találjunk a részletek eltávolítására anélkül, hogy az embereknek ez (túlságosan) feltűnne.
Itt van például egy fotó egy kalapban ülő macskáról:
Itt van ugyanez a kép, de felére összetömörítve:
Meg tudod különböztetni őket? Ránézésre nem látom a különbséget – és még akkor is, ha figyelmesebben megnézve meg tudnám különböztetni a két képet, megéri a lemezterület felét megspórolni.
Vizsgáljuk meg, milyen ügyes módszereket használnak a veszteséges tömörítési algoritmusok a részletek elhagyására a fájlméret csökkentése érdekében!
Képek: fényerő megtartása, színek átlagolása
Az emberi szem jobban érzékeli a fényerő változását, mint a színek eltéréseit. A tömörítő algoritmus ezt kihasználva változatlanul hagyja a fényerőt, miközben csökkenti a színek mennyiségét. Ez az eljárás a szín-alulmintavételezés (chroma subsampling).
Próbáljuk ki a kalapban ülő macska képén! Az első lépés a fényerő és a kromatikus (szín-) információ szétválasztása.
Ez itt a fotó egy olyan változata, ami csak a fényerő adatokat tartalmazza:
Ez pedig az a változat, ahol csak a szín-információ (chroma-only) látszik:
Ez a fotó azért érdekes, mert mind a macska, mind a szék meglehetősen színtelen – a kalap kék színe az, ami a színes változatban kiemelkedik. (Talán mindannyiunknak fekete-fehér macskát kellene tartanunk, hogy helyet takarítsunk meg a lemezen? Hmm...).
Közelítsünk rá a bal szem 8×2-es méretű blokkjára a szín-információs képen!
Ezen mindegyik pixel színárnyalata kicsit eltérő, így összesen 16 érték van. Ha minden egyes 2×2-es blokkot átlagolunk, és a blokk színét az átlagra állítjuk, akkor összesen csak 4 értékünk lesz:
Az eredmény nagyon hasonlít az eredetihez, de az eredeti szín-információ negyedét tartalmazza. Ha ezt az egész képre alkalmazzuk, akkor rengeteg helyet spórolhatunk meg anélkül, hogy az a látványt nagyban befolyásolná.
A szín-alulmintavételezési eljárást számos, képeket tömörítő algoritmus használja, többek között a népszerű JPEG és MPEG fájlformátumok is.
Ezek az algoritmusok a diszkrét koszinusz transzformációnak (DCT) nevezett eljárást is alkalmazzák a fényerő réteg egyszerűsítésére. Ha többet szeretnél megtudni erről, itt van egy jó kis (angol nyelvű) áttekintés.
Hang: nem hallható hangok elhagyása
Az emberi fül csak korlátozottan képes hallani. A hangtömörítő algoritmusok elemzik a hangfájlt, és elhagyják az emberi hallóképességen kívül eső hangokat. Ezt a folyamatot hívjuk perceptuális hangkódolásnak.
Hallásunk egyik érdekes korlátja az úgynevezett időbeli maszkolás. Ez az a jelenség, amikor egy hirtelen jött hang kimaszkolja (elfedi) az utána felhangzó hangokat – sőt, még az előtte elhangzókat is!
Például vegyünk egy dalt, amiben hangos dob aláfestés van. Körülbelül az ütés előtt 20 ezredmásodpercig és utána akár 200 ezredmásodpercig a dob elfedi a hangokat. Az alábbi grafikon a maszkoló hatást szemlélteti:
A számítógép látja ezeket a rejtett hangokat a felvett hangfájlban, de a fülünk nem hallja azokat, ezért a hangtömörítő algoritmusok nyugodtan elhagyhatják, vagy kevesebb biten ábrázolhatják ezeket az adatokat.
A tömörítési algoritmusok a természetes hallási folyamat egyéb korlátait is kihasználhatják, mint például a magas frekvenciahatárt és az egyidejű maszkolást. Ha többet szeretnél megtudni erről, ezzel foglalkozik a pszichoakusztika lenyűgöző területe.
A tömörítés minősége
Ha veszteségmentes tömörítési algoritmust használunk, mindig rekonstruálni tudjuk az eredeti adatok 100%-át. Veszteséges tömörítési algoritmusok esetén az eredeti adatok bizonyos százalékát elveszítjük; hol 5%-át, hol 10%-át, vagy akár a 70%-át. Mennyit veszítsünk? Ezt annak függvényében tudjuk eldönteni, hogy mire akarjuk használni az adatokat.
Gondoljunk csak a korábbi fotóra a kalapban ülő macskáról! Ha azt tervezzük, hogy ezt a fényképet egy macskadivatról szóló prezentációba helyezzük, és nagy felületre vetítjük ki, valószínűleg a lehető legtöbb részletet szeretnénk megtartani. Ebben az esetben vagy veszteségmentes tömörítési algoritmust (például PNG), vagy veszteséges tömörítési algoritmust (például JPEG) használhatunk úgy, hogy kiváló minőséget (például 100%-ot) adunk meg. A képszerkesztő alkalmazások gyakran biztosítják ezeket a lehetőségeket.
100%-os minőségben a 400×300-as fotó 169 kB helyet foglal el:
Mi van akkor, ha ezt a fényképet egy weboldalon szeretnénk használni, és a weboldal célfelhasználói egy másik országban vannak, ahol a kapcsolat sávszélessége alacsony? Minél kisebb a fájl, annál gyorsabb a letöltés. Szeretnénk, ha látnák a fényképet, de ebben az esetben a magas minőség nem annyira fontos, mint a letöltés sebessége. Mindenképpen veszteséges tömörítési algoritmust ajánlatos használni úgy, hogy exportáláskor alacsonyabb minőséget adunk meg. Az algoritmus paramétereit úgy állíthatod be, hogy még jobban leegyszerűsítse a részleteket.
60%-os minőségben a fénykép 48 kB-ot foglal el:
Ez még mindig elég jól néz ki – egy alacsony sávszélességű weboldalon biztosan használható. Milyen alacsonyra tudunk menni minőségben? Itt van a kép 1%-os minőségben:
Határozottan nem tökéletes – a szemek zöldje mintha belecsúszna a bundába, és a kalap és a szék találkozásánál is vannak hibák. De ez csak 12 kB, azaz az eredeti méretnek kevesebb, mint a tizede. Lenyűgöző, hogy mennyi információt veszíthetünk, de még mindig ennyi részletet tudunk átadni.
A hang- és videofájlokat átalakító veszteséges tömörítési algoritmusok minőségét is meghatározhatjuk. Valószínűleg láttál már rossz minőségű, erősen tömörített videókat a világhálón; a videókat tömörítik a legnagyobb valószínűséggel, mivel eleve olyan nagyok.
Amikor veszteséges tömörítést használunk, mindig kompromisszumot kötünk a minőség és a méret között, és rajtunk múlik, hogy megtaláljuk a szándékolt felhasználásnak legjobban megfelelő beállításokat.
🙋🏽🙋🏻♀️🙋🏿♂️Kérdéseid vannak a témával kapcsolatban? Szívesen válaszolunk – tedd fel őket bátran alább!
Szeretnél részt venni a beszélgetésben?
Még nincs hozzászólás.