Fájltömörítés (File Compression): a folyamat célja és leggyakoribb módszerei

A fájltömörítés célja az adatok méretének csökkentése, hogy kevesebb helyet foglaljanak és gyorsabban továbbíthatók legyenek. A leggyakoribb módszerek közé tartozik a veszteséges és veszteségmentes tömörítés, melyek mindennapi életünk részei.
ITSZÓTÁR.hu
40 Min Read
Gyors betekintő

A digitális kor hajnalán, amikor a számítógépek még gyerekcipőben jártak, az adatok tárolása és továbbítása komoly kihívást jelentett. A rendelkezésre álló tárhely korlátozott volt, az internet sebessége pedig a maihoz képest elenyésző. Ebben a környezetben vált létfontosságúvá egy olyan technológia, amely lehetővé teszi a digitális információk méretének csökkentését anélkül, hogy azok lényeges tartalma elveszne. Ez a technológia a fájltömörítés, angolul file compression, amely azóta is az informatikai infrastruktúra egyik alapköve.

A fájltömörítés egy olyan folyamat, amelynek során egy vagy több fájl méretét csökkentik speciális algoritmusok segítségével. Ennek elsődleges célja az adattárolás hatékonyságának növelése és az adatátviteli idők lerövidítése. Gondoljunk csak bele, egy modern okostelefon kamerája könnyedén készíthet több megabájtos képeket, egy videófelvétel pedig gigabájtos nagyságrendű is lehet. Ekkora adatmennyiséget tárolni, megosztani vagy feltölteni komoly kihívás lenne tömörítés nélkül.

A tömörítési eljárások a redundancia, azaz az ismétlődő vagy felesleges információk felismerésén és eltávolításán alapulnak. A digitális adatok gyakran tartalmaznak ismétlődő mintákat, nulla értékű blokkokat, vagy olyan információkat, amelyek az emberi érzékelés számára észrevétlenek. A tömörítő algoritmusok ezeket a mintázatokat azonosítják, és rövidebb kódokkal vagy utalásokkal helyettesítik, ezáltal csökkentve a fájl fizikai méretét. Amikor a tömörített fájlt újra használni szeretnénk, egy dekompressziós folyamaton megy keresztül, amely visszaállítja az eredeti adatokat vagy azok egy közelítő változatát.

A fájltömörítés nem egy egységes módszer; számos különböző algoritmussal és megközelítéssel találkozhatunk, amelyek mind eltérő célokra és adattípusokra optimalizáltak. Vannak olyan eljárások, amelyek garantálják az eredeti adatok tökéletes visszaállítását (veszteségmentes tömörítés), és vannak olyanok, amelyek az információ egy részének feláldozásával érnek el drasztikusabb méretcsökkenést (veszteséges tömörítés). Mindkét típusnak megvan a maga helye és jelentősége a digitális világban, attól függően, hogy milyen típusú adatról van szó, és milyen mértékű minőségvesztés elfogadható.

A Fájltömörítés Célja és Jelentősége a Digitális Korban

A fájltömörítés nem csupán egy technikai eljárás, hanem egy alapvető eszköz, amely lehetővé teszi a modern digitális élet működését. Jelentősége számos területen megmutatkozik, a személyes adatok kezelésétől kezdve a nagyvállalati rendszerekig és a globális hálózatokig.

Tárhelymegtakarítás: Optimalizált Adattárolás

Az egyik legkézenfekvőbb és leggyakoribb célja a fájltömörítésnek a tárhelymegtakarítás. Napjainkban exponenciálisan növekszik az adatok mennyisége, legyen szó személyes fényképekről, videókról, dokumentumokról, vagy vállalati adatbázisokról és archívumokról. Bár a merevlemezek és SSD-k kapacitása folyamatosan nő, az adatok mennyisége gyakran még gyorsabban gyarapodik. A tömörítés révén ugyanannyi fizikai tárhelyen sokkal több információt tudunk tárolni.

Ez különösen fontos a felhőalapú tárhelyszolgáltatások esetében, ahol a tárolt adatok mennyisége közvetlenül befolyásolja a havi költségeket. Egy jól tömörített archívum nemcsak kevesebb helyet foglal, hanem a felhőbe történő feltöltése is gyorsabb, ami további idő- és költségmegtakarítást jelent. A vállalati szektorban az adatbázis-tömörítés és a szervereken tárolt fájlok tömörítése kritikus fontosságú lehet a tárolási infrastruktúra költségeinek optimalizálásában és a teljesítmény fenntartásában.

Gyorsabb Adatátvitel: Az Internet Gerince

A tömörítés másik kulcsfontosságú előnye a gyorsabb adatátvitel. Az internet és a hálózati technológiák fejlődése ellenére a sávszélesség továbbra is korlátozó tényező lehet, különösen nagy fájlok továbbítása esetén. Egy tömörített fájl mérete kisebb, így kevesebb időbe telik annak letöltése vagy feltöltése, ami jelentősen javítja a felhasználói élményt és a hálózati hatékonyságot.

Gondoljunk csak az e-mail mellékletekre, a weboldalak tartalmára, a szoftverfrissítésekre vagy a streaming szolgáltatásokra. A weboldalak esetében a képek, CSS fájlok és JavaScript kódok tömörítése (pl. GZIP vagy Brotli segítségével) alapvető fontosságú a gyors betöltődési idő szempontjából, ami közvetlenül befolyásolja a SEO rangsorolást és a felhasználói elégedettséget. A videó- és hangstreaming szolgáltatások (pl. Netflix, Spotify) a veszteséges tömörítésre épülnek, hogy valós időben, akadozás nélkül tudják eljuttatni a tartalmat a felhasználókhoz, még korlátozott sávszélesség esetén is.

Adatarchiválás és Biztonsági Mentés: Hosszú Távú Megoldások

A fájltömörítés elengedhetetlen az adatarchiválás és biztonsági mentés területén. Amikor régi, ritkán használt adatokat kell hosszú távon megőrizni, a tömörítés drasztikusan csökkenti a szükséges tárhely mennyiségét. Ez különösen igaz a jogi, pénzügyi vagy egészségügyi adatokra, amelyeket gyakran évtizedekig meg kell őrizni.

A biztonsági mentések készítésekor a tömörítés nemcsak a tárhelyet spórolja meg, hanem a mentési folyamat idejét is lerövidíti. Egy kisebb adatmennyiség gyorsabban másolódik le, ami különösen fontos a rendszeres, automatizált mentések esetén, ahol az időablak szűkös lehet. Sok biztonsági mentési szoftver beépített tömörítési funkciókat kínál, optimalizálva a mentett adatok méretét és a mentési ablakot.

Adatintegritás és Titkosítás: Biztonságos Adatkezelés

Bár nem közvetlen célja a tömörítésnek, sok tömörítő formátum és eszköz kínál beépített adatvédelmi és biztonsági funkciókat is. Gyakran van lehetőség jelszóval védeni a tömörített archívumokat, vagy akár titkosítást alkalmazni a bennük lévő adatokra. Ez különösen hasznos érzékeny információk továbbítása vagy tárolása esetén, ahol a jogosulatlan hozzáférés megakadályozása kulcsfontosságú.

Egyes tömörítő algoritmusok beépített hibajavító mechanizmusokat is tartalmazhatnak, amelyek segítenek az adatintegritás megőrzésében sérült archívumok esetén. Ez a fajta ellenállóság növeli az adatok megbízhatóságát, különösen hosszú távú tárolás vagy instabil hálózatokon keresztüli átvitel esetén.

A fájltömörítés alapvető fontosságú technológia, amely lehetővé teszi a digitális adatok hatékony kezelését, tárolását és továbbítását a folyamatosan növekvő adatmennyiség és a korlátozott erőforrások világában, optimalizálva a teljesítményt és csökkentve a költségeket.

A Fájltömörítés Alapelvei és Típusai

A fájltömörítés mögött meghúzódó elv az adatokban rejlő redundancia, azaz az ismétlődő vagy felesleges információk azonosítása és hatékonyabb reprezentációja. Két fő kategóriát különböztetünk meg a tömörítési eljárásokban, attól függően, hogy az eredeti adatok maradéktalanul visszaállíthatók-e a dekompresszió során.

Veszteségmentes Tömörítés (Lossless Compression)

A veszteségmentes tömörítés olyan eljárás, amely garantálja, hogy a tömörített fájlból az eredeti adatok pontosan, bitről bitre visszaállíthatók legyenek. Ez azt jelenti, hogy semmilyen információ nem vész el a tömörítés során. Ez a típusú tömörítés elengedhetetlen olyan adatok esetében, ahol az eredeti információ bármilyen mértékű elvesztése elfogadhatatlan lenne.

Főbb jellemzői és alkalmazási területei:

  • Adatintegritás: A legfontosabb szempont, hogy az eredeti fájl tökéletesen reprodukálható.
  • Alkalmazási területek:
    • Szöveges fájlok: Dokumentumok, programkódok, adatbázisok. Egyetlen karakter elvesztése is súlyos következményekkel járhat.
    • Végrehajtható fájlok: Szoftverek, operációs rendszerek komponensei. Egyetlen bit hiba is működésképtelenné teheti a programot.
    • Archívumok: Több fájl egybe tömörítése zip, rar, 7z formátumban.
    • Bizonyos képformátumok: PNG, GIF, BMP. Ezek a formátumok megőrzik a kép minden egyes pixelét.
    • Bizonyos audio formátumok: FLAC (Free Lossless Audio Codec), ALAC (Apple Lossless Audio Codec). Ezek a CD minőségű hangot tömörítik anélkül, hogy a hangminőség romlana.
  • Tömörítési arány: Általában alacsonyabb, mint a veszteséges tömörítés esetén, mivel nem engedi meg az adatok eldobását. A tömörítési arány az adatok redundanciájától függ. Minél több ismétlődés van egy fájlban, annál jobban tömöríthető.

A veszteségmentes tömörítés alapja az adatok redundanciájának eltávolítása. Ez történhet ismétlődő minták azonosításával és rövidebb utalásokkal való helyettesítésével (pl. „AAAAA” helyett „5A”), vagy gyakran előforduló elemek rövidebb kódokkal való reprezentálásával (pl. Huffman-kódolás).

Veszteséges Tömörítés (Lossy Compression)

A veszteséges tömörítés ezzel szemben egy olyan eljárás, amely során a tömörített fájlból az eredeti adatok nem állíthatók vissza pontosan. A tömörítési folyamat során bizonyos információk véglegesen elvesznek. Ennek az információnak a nagy része azonban olyan, amelyet az emberi érzékelés (látás, hallás) nem vagy csak alig képes észrevenni. A cél a maximális méretcsökkentés, elfogadható minőségromlás mellett.

Főbb jellemzői és alkalmazási területei:

  • Információvesztés: Az adatok egy része eldobásra kerül. Ez a minőség romlásával járhat, de a méretcsökkentés jelentős.
  • Alkalmazási területek:
    • Képek: JPEG. A JPEG formátum a vizuális információ azon részeit dobja el, amelyekre az emberi szem kevésbé érzékeny (pl. finom színátmenetek, nagyfrekvenciás részletek).
    • Hang: MP3, AAC, Ogg Vorbis. Ezek a formátumok a pszichoakusztikai modelleket használják, hogy kiszűrjék azokat a hangokat, amelyeket az emberi fül nem hall meg, vagy más hangok elfednek.
    • Videó: MPEG (pl. MP4, H.264, H.265). A videó tömörítés kihasználja a képek közötti hasonlóságot (időbeli redundancia) és az egyes képeken belüli redundanciát (térbeli redundancia).
  • Tömörítési arány: Rendkívül magas lehet, gyakran a fájl eredeti méretének 1/10-e, 1/20-a vagy akár még kisebb méretre is csökkenthető. Ez a drasztikus méretcsökkenés teszi lehetővé a streaminget és a gyors online tartalomfogyasztást.
  • Minőség-méret kompromisszum: A felhasználó gyakran beállíthatja a tömörítési szintet, ezzel befolyásolva a fájl méretét és a minőségromlás mértékét. Magasabb tömörítés nagyobb minőségromlással jár.

A veszteséges tömörítés alapja a perceptuális modell alkalmazása. Ez azt jelenti, hogy az algoritmusok kihasználják az emberi érzékelés korlátait és sajátosságait. Például, az emberi szem sokkal érzékenyebb a fényerő változásaira, mint a színek finom árnyalataira, vagy az emberi fül bizonyos frekvenciákat elfed más, hangosabb frekvenciák jelenlétében. Ezen ismeretek alapján döntik el az algoritmusok, hogy mely adatok dobhatók el anélkül, hogy a minőségromlás feltűnő lenne.

Gyakori Veszteségmentes Tömörítési Algoritmusok és Módszerek

A veszteségmentes tömörítés számos kifinomult algoritmussal dolgozik, amelyek mind a redundancia eltávolítására fókuszálnak, de eltérő módszerekkel közelítik meg a problémát. Néhány alapvető és elterjedt algoritmust mutatunk be.

Adatduplikáció Eltávolítása és Mintázatfelismerés

Az egyik legegyszerűbb elv az adatduplikáció eltávolítása, amelynek során az algoritmusok az ismétlődő adatsorokat vagy mintázatokat azonosítják. Ahelyett, hogy minden egyes előfordulást tárolnának, egyetlen másolatot őriznek meg, és az ismétlődő részekre mutató hivatkozásokat helyeznek el. Ez az elv az alapja a legtöbb modern tömörítő algoritmusnak.

Például, ha egy szöveges fájlban sokszor szerepel a „fájltömörítés” szó, az algoritmus az első előfordulást tárolja, majd a továbbiakban csak egy rövid kódot vagy mutatót helyez el, ami az első előfordulásra utal. Ez jelentős méretcsökkenést eredményezhet, különösen nagy, ismétlődő adatokat tartalmazó fájlok esetében.

Huffman-kódolás

A Huffman-kódolás egy entrópia kódolási módszer, amelyet David A. Huffman fejlesztett ki 1952-ben. Alapelve, hogy a gyakrabban előforduló karakterekhez vagy adatelemekhez rövidebb bináris kódot rendel, míg a ritkábban előfordulókhoz hosszabbat. Ezáltal az átlagos kódszóhossz csökken, ami kisebb fájlméretet eredményez.

Működése:

  1. Megszámolja az egyes karakterek vagy szimbólumok előfordulási gyakoriságát a bemeneti adatban.
  2. Létrehoz egy bináris fát (Huffman-fa), ahol a leggyakoribb elemek vannak a fa gyökeréhez közelebb, így rövidebb útvonalat és rövidebb kódot kapnak.
  3. Az egyes karakterekhez egyedi bináris kódot rendel a fa segítségével. A kódok prefixmentesek, azaz egyik kód sem kezdődik egy másik kód prefixével, ami lehetővé teszi a egyértelmű dekódolást.

Alkalmazása: A Huffman-kódolást széles körben használják önmagában vagy más tömörítő algoritmusokkal kombinálva. Megtalálható a JPEG, MP3, ZIP, GZIP és PNG formátumokban is, általában a tömörítési lánc utolsó lépéseként, miután a redundanciát más módszerekkel már csökkentették.

Lempel-Ziv Algoritmusok (LZ77, LZ78, LZW)

A Lempel-Ziv (LZ) algoritmusok egy családja a szótár-alapú tömörítési módszereknek, amelyeket Jacob Ziv és Abraham Lempel fejlesztett ki az 1970-es évek végén. Ezek az algoritmusok az ismétlődő szekvenciákat (karakterláncokat) egy szótárban tárolják, és a későbbi előfordulásokat a szótárban lévő bejegyzésekre mutató hivatkozásokkal helyettesítik.

  • LZ77 (Sliding Window):

    Az LZ77 algoritmus egy „csúszó ablakot” használ a már feldolgozott adatokra. Amikor egy ismétlődő karakterláncot talál, azt egy párral helyettesíti: (távolság az ablak elejétől, hossz). Például, ha a „banana” szóban a „ana” ismétlődik, és az „ana” már szerepelt az ablakban, akkor az algoritmus egy (távolság, hossz) párral hivatkozik rá. Ez a módszer rendkívül hatékony a gyakran ismétlődő, de nem feltétlenül azonos tartalmú minták felismerésében.

    Alkalmazása: A Deflate algoritmus (amelyet a ZIP, GZIP és PNG használ) az LZ77 egy változatát alkalmazza.

  • LZW (Lempel-Ziv-Welch):

    Az LZW algoritmus egy dinamikusan épülő szótárat használ. Kezdetben a szótár tartalmazza az összes lehetséges egyedi karaktert. Amikor az algoritmus egy új karakterláncot talál, amely még nincs a szótárban, hozzáadja azt. A már szótárban lévő karakterláncokat egyetlen kóddal helyettesíti. A dekódolás során a szótár ugyanúgy épül fel, mint a kódolás során, így a dekóder képes visszaállítani az eredeti karakterláncokat a kódokból.

    Alkalmazása: Az LZW algoritmust a GIF képformátum, a TIFF képformátum és a PDF fájlok is használják. Egyszerűsége és hatékonysága miatt rendkívül népszerű volt.

Run-Length Encoding (RLE)

A Run-Length Encoding (RLE) egy nagyon egyszerű veszteségmentes tömörítési módszer, amely különösen hatékony az olyan adatok esetében, ahol hosszú sorozatokban ismétlődnek ugyanazok az adatelemek (pl. „AAAAABBCDDD” -> „5A2B1C3D”). Az algoritmus lényege, hogy az ismétlődő karakterek sorozatát egyetlen karakterrel és az ismétlődések számával helyettesíti.

Működése:

Például a „WWWWWWWWWWWWBWWWWWWWWWWWWBBBWWWWWWWWWWWWWWWWWWWWWWW” karaktersorozat RLE tömörítéssel a következőképpen nézhet ki: „12W1B12W3B24W”.

Alkalmazása:

  • Faxgépek: A fekete-fehér képek gyakran tartalmaznak hosszú, azonos színű sorozatokat.
  • Bizonyos képformátumok: BMP, TIFF (opcionálisan).
  • Egyszerű grafikonok és diagramok, ahol nagy, egyszínű területek vannak.

Bár az RLE egyszerű és gyors, nem hatékony minden típusú adaton. Ha az adatok nem tartalmaznak hosszú, ismétlődő szekvenciákat, az RLE akár növelheti is a fájl méretét.

Deflate Algoritmus

A Deflate algoritmus az egyik legelterjedtebb és leghatékonyabb veszteségmentes tömörítési eljárás. Ez egy hibrid algoritmus, amely az LZ77 (pontosabban annak LZSS nevű variánsa) és a Huffman-kódolás kombinációjából áll. Ezt a kombinációt 1991-ben fejlesztette ki Phil Katz, a ZIP fájlformátum létrehozója.

Működése:

  1. LZ77 fázis: Az algoritmus először az LZ77 elvét alkalmazza az ismétlődő karaktersorozatok azonosítására. Az ismétlődő szekvenciákat (match) egy (távolság, hossz) párral helyettesíti, amely az előzőleg már feldolgozott adatokra mutat. A nem ismétlődő karaktereket (literal) önmagukban tárolja.
  2. Huffman-kódolás fázis: A kimenet, amely literálokból és (távolság, hossz) párokból áll, ezután Huffman-kódoláson megy keresztül. Két külön Huffman-fa épül: az egyik a literálokhoz és hosszakhoz, a másik a távolságokhoz. Ez tovább csökkenti az adatok méretét, kihasználva a literálok és párok előfordulási gyakoriságát.

Alkalmazása:

  • ZIP fájlformátum: A Deflate a ZIP fájlok alapértelmezett tömörítési algoritmusa.
  • GZIP fájlformátum: Széles körben használják Unix/Linux rendszereken és a webes tartalmak (pl. HTML, CSS, JavaScript) tömörítésére.
  • PNG képformátum: A PNG képek Deflate algoritmussal tömörítik a pixeladatokat.
  • PDF fájlok: Sok PDF fájlban a stream-ek tömörítésére használják.

A Deflate algoritmus népszerűsége annak köszönhető, hogy jó tömörítési arányt kínál, miközben viszonylag gyorsan képes tömöríteni és kicsomagolni az adatokat. Ez az egyensúly teszi ideálissá számos általános célú tömörítési feladatra.

Gyakori Veszteséges Tömörítési Algoritmusok és Módszerek

A veszteséges tömörítés fájlminőség romlásával járhat.
A veszteséges tömörítésnél az adatok egy része elveszik, így kisebb fájlméret és gyorsabb átvitel érhető el.

A veszteséges tömörítés a médiafájlok (képek, hangok, videók) hatékony kezelésének kulcsa. Ezek az algoritmusok kihasználják az emberi érzékelés korlátait, hogy jelentős méretcsökkenést érjenek el minimális észrevehető minőségromlással.

Diszkrét Koszinusz Transzformáció (DCT – Discrete Cosine Transform)

A Diszkrét Koszinusz Transzformáció (DCT) egy olyan matematikai eljárás, amely a térbeli tartományban lévő (például képpontok) adatokat frekvencia tartományba alakítja át. Ez a transzformáció alapvető fontosságú a JPEG kép- és az MPEG videótömörítésben.

Működése:

A DCT egy képet (vagy annak egy részét) különböző frekvenciájú koszinusz hullámok összegeként reprezentálja. A transzformáció után a kép információja „frekvencia komponensekként” jelenik meg: az alacsony frekvenciájú komponensek a nagy, sima területeket és az általános formákat írják le, míg a magas frekvenciájú komponensek a finom részleteket, éleket és textúrákat. Az emberi szem sokkal érzékenyebb az alacsony frekvenciájú változásokra (általános fényerő és szín), mint a magas frekvenciájúakra (finom részletek).

Szerepe a tömörítésben:

A DCT transzformáció után a magas frekvenciájú komponensek, amelyek kevesebb vizuális információt hordoznak az emberi szem számára, elhagyhatók vagy jelentősen lekerekíthetők anélkül, hogy a kép minősége drasztikusan romlana. Ez a szelektív információvesztés a veszteséges tömörítés alapja.

Kvantálás (Quantization)

A kvantálás a veszteséges tömörítés legfontosabb lépése, amely közvetlenül felelős az információvesztésért és a méretcsökkenésért. A DCT után kapott frekvencia komponensekre alkalmazzák.

Működése:

A kvantálás során a folytonos vagy nagy pontosságú értékeket egy kisebb, diszkrét értékkészletre képezik le. Egyszerűbben fogalmazva, a számokat lekerekítik vagy egy előre meghatározott táblázat szerint módosítják. A JPEG esetében ez egy kvantálási mátrix segítségével történik, amely minden frekvencia komponenshez egy kvantálási faktort rendel. A magas frekvenciájú komponensekhez általában nagyobb kvantálási faktorokat rendelnek, ami nagyobb mértékű lekerekítést és információvesztést eredményez, mivel ezek kevésbé fontosak a vizuális minőség szempontjából.

Jelentősége:

A kvantálás az a lépés, ahol a fájl mérete drasztikusan csökken. Minél agresszívebb a kvantálás (magasabb kvantálási faktorok), annál kisebb lesz a fájlméret, de annál nagyobb lesz a minőségromlás és annál inkább észrevehetővé válnak az úgynevezett „blokkosodási” vagy „tömörítési artefaktok”.

JPEG (Joint Photographic Experts Group)

A JPEG a legelterjedtebb veszteséges képformátum, amelyet elsősorban fényképek tárolására használnak. Nevét a formátumot fejlesztő Joint Photographic Experts Group-ról kapta.

Működése (egyszerűsítve):

  1. Színtér átalakítás: A kép RGB (vörös, zöld, kék) színadatait YCbCr színtérre alakítják, ahol Y a fényerő (luminancia), Cb és Cr pedig a színinformációt (krominancia) hordozza. Az emberi szem a fényerőre érzékenyebb, mint a színre, így a színinformációt alulmintavételezhetik (pl. 4:2:0 alulmintavételezés), ami már önmagában is méretcsökkenést eredményez.
  2. Blokkokra osztás: A kép fényerő és színkomponenseit 8×8 pixeles blokkokra osztják.
  3. DCT alkalmazása: Minden 8×8-as blokkon elvégzik a Diszkrét Koszinusz Transzformációt, amely a pixeleket frekvencia komponensekké alakítja.
  4. Kvantálás: A frekvencia komponenseket kvantálják egy kvantálási mátrix segítségével. Ez a lépés dobja el az információ egy részét (főleg a magas frekvenciájú komponenseket). A kvantálási mátrix határozza meg a JPEG minőségi beállítását.
  5. Entrópia kódolás: A kvantált együtthatókat végül veszteségmentes entrópiakódolással (pl. Huffman-kódolás vagy aritmetikai kódolás) tömörítik, tovább csökkentve a fájl méretét.

Előnyei: Kiváló tömörítési arány fényképek esetén, széles körű támogatás.
Hátrányai: Nem alkalmas szöveges vagy éles vonalakat tartalmazó képekhez (pl. logók, diagramok), mivel a tömörítési artefaktok (blokkosodás, elmosódás) feltűnővé válhatnak. Minden újra mentéskor további minőségromlás történik.

MP3 (MPEG-1 Audio Layer III)

Az MP3 a legelterjedtebb veszteséges audio formátum, amely forradalmasította a zene terjesztését és fogyasztását. Az MPEG (Moving Picture Experts Group) szabványcsalád része.

Működése: Pszichoakusztikai Modell

Az MP3 tömörítés a pszichoakusztikai modellre épül, amely az emberi hallás sajátosságait használja ki:

  1. Frekvencia elemzés: Az audiojelet frekvencia tartományra bontja (pl. Modified Discrete Cosine Transform – MDCT segítségével).
  2. Maszkolás (Masking):
    • Időbeli maszkolás: Egy hangos hang közvetlenül előtte és utána lévő halkabb hangokat elfedhet.
    • Frekvencia maszkolás: Egy hangos hang bizonyos frekvenciájú közeli halkabb hangokat elfedhet.

    Az algoritmus ezeket az elfedett, „hallhatatlan” hangkomponenseket azonosítja és eldobja.

  3. Kvantálás és Kódolás: A megmaradt, hallható frekvencia komponenseket kvantálja (pontosságukat csökkenti), majd entrópiakódolással (pl. Huffman-kódolással) tömöríti.

Bitráta: Az MP3 fájlok minőségét gyakran a bitrátával (pl. 128 kbps, 192 kbps, 320 kbps) jellemzik. Minél magasabb a bitráta, annál több adatot tart meg a tömörítés során, és annál jobb a hangminőség, de annál nagyobb a fájlméret is.

Előnyei: Jelentős méretcsökkentés elfogadható hangminőség mellett, széles körű kompatibilitás.
Hátrányai: Minőségromlás (különösen alacsony bitráta esetén), audio artefaktok (pl. „pre-echo”, „víz alatti” hang). Nem alkalmas professzionális audio szerkesztésre, ahol az eredeti minőség megőrzése kritikus.

MPEG (Moving Picture Experts Group) – Videó Tömörítés

Az MPEG szabványok (pl. MPEG-1, MPEG-2, MPEG-4, H.264/AVC, H.265/HEVC) a videó tömörítés alapját képezik. A videó tömörítés rendkívül komplex, mivel egyszerre kell kezelni a képek (frame-ek) térbeli és időbeli redundanciáját.

Főbb elvek:

  1. Térbeli Tömörítés (Intra-frame Compression):

    Ez az egyes videó kockák (frame-ek) tömörítésére vonatkozik, hasonlóan a JPEG kép tömörítéshez. Azaz, minden képkockát külön-külön tömörítenek a DCT, kvantálás és entrópiakódolás segítségével. Ezeket a képkockákat nevezzük I-frame-eknek (Intra-coded frames), és teljes képinformációt tartalmaznak, függetlenül a többi frame-től. Ezek biztosítják a véletlenszerű hozzáférést a videóhoz (pl. tekerés).

  2. Időbeli Tömörítés (Inter-frame Compression):

    Ez a videó tömörítés legfontosabb és leghatékonyabb része. Kihasználja, hogy a legtöbb videóban a szomszédos képkockák rendkívül hasonlóak. Ahelyett, hogy minden egyes képkockát teljes egészében tárolnának, csak a változásokat rögzítik az előző vagy következő képkockákhoz képest.

    • P-frame-ek (Predicted frames): Ezek az előző I-frame vagy P-frame alapján kerülnek kódolásra. Csak a változásokat és a mozgásvektorokat tárolják.
    • B-frame-ek (Bi-directional predicted frames): Ezek az előző ÉS a következő I- vagy P-frame-ek alapján kerülnek kódolásra, ami a legmagasabb tömörítési arányt eredményezi, de a legkomplexebb dekódolást igényli.

    A mozgásbecslés (motion estimation) és mozgáskompenzáció (motion compensation) kulcsfontosságú elemei az időbeli tömörítésnek. Az algoritmus azonosítja a képkockák közötti mozgó blokkokat, és ahelyett, hogy újra kódolná az egész blokkot, csak egy mozgásvektort tárol, amely megmondja, hová mozdult el a blokk az előző képkockához képest.

Előnyei: Rendkívül magas tömörítési arány, ami lehetővé teszi a HD és 4K videók streamingjét és tárolását.
Hátrányai: Számításigényes kódolás és dekódolás, minőségromlás, különösen gyors mozgások és alacsony bitráta esetén (pl. „makróblokkosodás”).

A Fájltömörítés Gyakorlati Alkalmazásai

A fájltömörítés nem csupán elméleti algoritmusok összessége, hanem a mindennapi digitális életünk szerves része, gyakran anélkül, hogy tudatosulna bennünk.

Operációs Rendszerekben

A modern operációs rendszerek beépített támogatással rendelkeznek a fájltömörítéshez, mind a tárolás, mind az archiválás szempontjából:

  • Windows: A Windows operációs rendszer alapértelmezetten támogatja a ZIP fájlokat, lehetővé téve azok tömörítését és kicsomagolását külső szoftver nélkül. Emellett az NTFS fájlrendszer is képes fájl- vagy mappaszinten tömöríteni az adatokat, ezzel helyet spórolva a merevlemezen. Ez a tömörítés átlátszó a felhasználó számára, de enyhe teljesítménycsökkenést okozhat a hozzáférés során.
  • macOS: A macOS is rendelkezik beépített ZIP támogatással, és a „Tömörítés” funkcióval könnyedén létrehozhatók archívumok.
  • Linux/Unix: A Linux és Unix rendszerek a GZIP, BZIP2, XZ és TAR formátumokat részesítik előnyben, amelyeket parancssorból vagy grafikus felületen keresztül is könnyedén kezelhetünk. A TAR (Tape Archive) több fájlt gyűjt össze egyetlen archívumba, majd ezt az archívumot tömörítik például GZIP-pel (ezért látunk gyakran .tar.gz vagy .tgz kiterjesztéseket).

E-mail Mellékletek

Az e-mail szolgáltatók gyakran korlátozzák a mellékletek méretét (pl. 20-25 MB). Nagyobb fájlok elküldéséhez elengedhetetlen a tömörítés. Egy .zip vagy .rar archívumba csomagolva több fájl is elküldhető egyszerre, és a méretük is jelentősen csökkenthető, elkerülve a méretkorlátokat és gyorsítva az átvitelt.

Weboldalak és Hálózati Adatátvitel

A weboldalak sebessége kritikus fontosságú a felhasználói élmény és a keresőoptimalizálás szempontjából. A web szerverek széles körben alkalmazzák a GZIP vagy Brotli tömörítést a weboldalak tartalmának (HTML, CSS, JavaScript, SVG) továbbítására. Amikor egy böngésző lekér egy weboldalt, a szerver tömörítve küldi el a tartalmat, a böngésző pedig automatikusan kicsomagolja azt. Ez drasztikusan csökkenti a letöltési időt és a felhasznált sávszélességet.

Emellett a képek (JPEG, WebP) és videók (MPEG formátumok) veszteséges tömörítése teszi lehetővé a gazdag multimédiás tartalmak gyors betöltését a weboldalakon.

Szoftvertelepítők és Frissítések

A szoftverek, operációs rendszerek és játékok telepítő fájljai gyakran gigabájtos méretűek. Ezeket a fájlokat szinte mindig tömörítve terjesztik, hogy csökkentsék a letöltési időt és a szerverek terhelését. Amikor letöltünk egy programot, az általában egy tömörített csomagban érkezik (pl. .exe telepítő, .dmg, .apk), amelyet a telepítő automatikusan kicsomagol a telepítés során. Ugyanez vonatkozik a szoftverfrissítésekre is, amelyek szintén tömörítve kerülnek letöltésre.

Online Játékok

Az online játékok, különösen a nagy, modern címek, hatalmas adatmennyiséget tartalmaznak. A játékfájlok tömörítése kulcsfontosságú a letöltési idők minimalizálásához és a játékosok gyorsabb hozzáféréséhez. Ezen felül, a játékok frissítései is tömörítve érkeznek, és gyakran delta tömörítést is alkalmaznak, ahol csak a megváltozott részeket töltik le, nem az egész fájlt.

Adatbázisok

Nagyvállalati környezetben az adatbázisok is profitálnak a tömörítésből. Sok modern adatbázis-kezelő rendszer (pl. Microsoft SQL Server, Oracle, MySQL) kínál beépített tömörítési funkciókat, amelyek sor-, oldal- vagy táblaszinten tömörítik az adatokat. Ez nemcsak a tárhelyet spórolja meg, hanem javíthatja az I/O teljesítményt is, mivel kevesebb adatot kell olvasni a lemezről, ami gyorsabb lekérdezésekhez vezethet.

Archiválás és Adatmentés

Ahogy korábban is említettük, az adatok hosszú távú archiválása és a rendszeres biztonsági mentések készítése során a tömörítés elengedhetetlen. Az archiváló szoftverek (pl. WinRAR, 7-Zip) és a biztonsági mentő rendszerek beépített tömörítési funkciókat használnak, hogy minimalizálják a mentett adatok méretét, ezáltal csökkentve a tárhelyköltségeket és a mentési ablakokat.

Népszerű Fájltömörítő Formátumok és Eszközök

Számos fájltömörítő formátum és a hozzájuk tartozó szoftver létezik, mindegyiknek megvannak a maga előnyei és hátrányai a tömörítési arány, sebesség, kompatibilitás és funkciók tekintetében.

ZIP

A ZIP a legismertebb és legelterjedtebb archív fájlformátum. Phil Katz fejlesztette ki 1989-ben, és mára de facto szabvánnyá vált a fájlok archiválására és tömörítésére.

  • Tömörítési algoritmus: Alapértelmezésben a Deflate algoritmust használja, de támogat más algoritmusokat is (pl. BZIP2, LZMA, PPMd).
  • Kompatibilitás: Szinte minden operációs rendszer és fájlkezelő szoftver natívan támogatja a ZIP fájlokat, ami rendkívül magas kompatibilitást biztosít.
  • Funkciók: Támogatja a több fájl egy archívumba tömörítését, jelszóvédelmet, fájlnév titkosítást.
  • Előnyök: Univerzális kompatibilitás, gyors tömörítés és kicsomagolás, egyszerű használat.
  • Hátrányok: A tömörítési arány gyakran nem éri el a modernebb formátumokét, különösen nagy fájlok vagy sok kis fájl esetén.

RAR

A RAR egy zárt forráskódú archív fájlformátum, amelyet Eugene Roshal fejlesztett ki. A WinRAR nevű szoftver a legelterjedtebb eszköz a RAR archívumok kezelésére.

  • Tömörítési algoritmus: Saját, fejlett algoritmusokat használ, amelyek gyakran jobb tömörítési arányt biztosítanak, mint a ZIP, különösen nagy fájlok vagy sok kis fájl esetén.
  • Kompatibilitás: Bár a RAR archívumok olvasásához számos szoftver létezik (pl. 7-Zip), a létrehozásukhoz általában a WinRAR-ra van szükség, ami korlátozza az interakciót a nyílt forráskódú eszközökkel.
  • Funkciók: Támogatja a többkötetes archívumokat (split archives), a jelszóvédelmet, az erős titkosítást (AES-256), a helyreállító rekordokat (recovery record) a sérült archívumok javításához, és a szilárd archívumokat (solid archives), amelyek tovább javítják a tömörítési arányt hasonló fájlok esetén.
  • Előnyök: Kiváló tömörítési arány, robusztus hibajavítás, fejlett funkciók.
  • Hátrányok: Zárt forráskódú, a létrehozáshoz licencelt szoftver (WinRAR) szükséges.

7z (7-Zip)

A 7z egy nyílt forráskódú archív formátum, amelyet Igor Pavlov fejlesztett ki a 7-Zip fájl archiváló szoftver számára. A 7z formátumot a kiváló tömörítési aránya tette népszerűvé.

  • Tömörítési algoritmus: Alapértelmezetten az LZMA (Lempel-Ziv-Markov chain-Algorithm) és az LZMA2 algoritmusokat használja, amelyek rendkívül hatékonyak. Támogat más algoritmusokat is, mint a PPMd, BZIP2, Deflate.
  • Kompatibilitás: A 7-Zip szoftver ingyenes és nyílt forráskódú, és számos platformon elérhető. Bár nem olyan széles körben támogatott natívan, mint a ZIP, a 7-Zip és más archiváló programok révén könnyen kezelhető.
  • Funkciók: Támogatja a többkötetes archívumokat, az erős AES-256 titkosítást, a szilárd archívumokat, és a fájlnév titkosítást.
  • Előnyök: Gyakran a legjobb tömörítési arányt kínálja a veszteségmentes formátumok között, ingyenes és nyílt forráskódú.
  • Hátrányok: A tömörítés lassabb lehet, mint a ZIP vagy RAR, különösen magas tömörítési szinten. A kicsomagolás is valamivel lassabb lehet.

GZIP / TAR.GZ

A GZIP (GNU Zip) egy népszerű tömörítési program és fájlformátum, amelyet elsősorban Unix/Linux rendszereken használnak. A TAR (Tape Archive) formátum önmagában nem tömörít, hanem több fájlt és könyvtárat gyűjt össze egyetlen archív fájlba, megőrizve a könyvtárstruktúrát és a fájlattribútumokat. Gyakran használják együtt a GZIP-pel, ami TAR.GZ (vagy .tgz) kiterjesztésű fájlokat eredményez.

  • Tömörítési algoritmus: GZIP a Deflate algoritmust használja.
  • Alkalmazás:
    • GZIP: Egyetlen fájl tömörítésére alkalmas. Gyakran használják weboldalak tartalmának (HTML, CSS, JS) on-the-fly tömörítésére a HTTP protokollon keresztül.
    • TAR.GZ: Több fájl és könyvtár archiválására és tömörítésére. Nagyon elterjedt szoftvercsomagok terjesztésére Unix/Linux rendszereken.
  • Előnyök: Gyors, széles körben támogatott Unix/Linux környezetben és a weben, nyílt szabvány.
  • Hátrányok: A tömörítési arány általában alacsonyabb, mint a 7z vagy RAR. A GZIP csak egy fájlt tömörít, több fájl esetén TAR-ral kell kombinálni.

Brotli

A Brotli egy viszonylag új, nyílt forráskódú veszteségmentes tömörítési algoritmus, amelyet a Google fejlesztett ki 2015-ben. Kifejezetten webes tartalmak, különösen szöveges adatok (HTML, CSS, JavaScript) tömörítésére optimalizálták.

  • Tömörítési algoritmus: Saját, modern algoritmust használ, amely a Deflate-hez hasonló elvekre épül, de fejlettebb kódolási technikákat és egy előre definiált szótárat (common dictionary) használ a webes tartalmakra jellemző gyakori szavakhoz és kifejezésekhez.
  • Előnyök: Általában jobb tömörítési arányt biztosít, mint a GZIP (akár 20-26%-kal is kisebb fájlokat eredményezhet), miközben a dekompresszió sebessége hasonló vagy gyorsabb.
  • Hátrányok: A tömörítés lassabb lehet, mint a GZIP, különösen magas tömörítési szinten. Nem minden böngésző vagy szerver támogatja még, bár a népszerűsége gyorsan nő.

Zstandard (Zstd)

A Zstandard (Zstd) egy nyílt forráskódú, veszteségmentes tömörítési algoritmus, amelyet a Facebook fejlesztett ki 2016-ban. Célja, hogy rendkívül gyors tömörítést és dekompressziót biztosítson, miközben a tömörítési arány is kiváló.

  • Tömörítési algoritmus: Modern LZ77 alapú algoritmust használ, fejlett kódolási technikákkal és optimalizációkkal.
  • Előnyök: Rendkívül gyors dekompresszió, ami ideálissá teszi valós idejű alkalmazásokhoz, adatbázisokhoz, log fájlokhoz és hálózati forgalomhoz. Nagyon jó tömörítési arányt is kínál, gyakran felülmúlva a Deflate-et és megközelítve az LZMA-t, miközben sokkal gyorsabb.
  • Hátrányok: Viszonylag új, így a széles körű natív támogatása még kiépülőben van, de népszerűsége gyorsan növekszik a teljesítménye miatt.

Tömörítés és Teljesítmény: Kompromisszumok

A fájltömörítés nem egy ingyenes előny; mindig van egy kompromisszum a tömörítési arány, a sebesség és a felhasznált erőforrások között. A megfelelő tömörítési stratégia kiválasztása attól függ, hogy melyik tényező a legfontosabb az adott alkalmazásban.

Tömörítési Arány vs. Sebesség

Ez az egyik legalapvetőbb kompromisszum a tömörítésben. Általánosságban elmondható, hogy:

  • Magasabb tömörítési arány: A jobb tömörítési arány eléréséhez az algoritmusoknak több időt és CPU erőforrást kell fordítaniuk az adatok elemzésére, minták keresésére és a leghatékonyabb kódolás megtalálására. Ez lassabb tömörítési folyamatot eredményez.
  • Gyorsabb tömörítés: A gyorsabb tömörítés kevesebb CPU időt igényel, de általában alacsonyabb tömörítési arányt eredményez. Az algoritmusok ilyenkor kevésbé optimalizált módon vagy kevesebb erőfeszítéssel tömörítenek.

Ez a kompromisszum különösen szembetűnő a 7-Zip esetében, ahol a „normál” és „ultra” tömörítési szintek között jelentős különbség van a sebességben és a tömörítési arányban. Ugyanez igaz a videó- és audio kódolókra is, ahol a „minőségi” beállítások közvetlenül befolyásolják a kódolási időt.

A dekompresszió (kicsomagolás) sebessége általában kevésbé függ a tömörítési szinttől, és gyakran gyorsabb, mint a tömörítés. Ez különösen fontos a webes tartalmak esetében, ahol a szervernek egyszer kell tömörítenie, de a felhasználók milliószor csomagolják ki (a böngészőjükben).

CPU Erőforrásigény

A tömörítési és dekompressziós folyamatok jelentős CPU erőforrásokat igényelhetnek, különösen nagy fájlok vagy valós idejű alkalmazások esetén. Ez fontos szempont szerveroldali tömörítésnél (pl. web szerverek), ahol a magas CPU terhelés lassíthatja a szolgáltatást. Az on-the-fly tömörítés (pl. adatbázis-tömörítés vagy hálózati forgalom tömörítése) folyamatosan terheli a processzort.

A modern processzorok egyre hatékonyabban kezelik ezeket a feladatokat, és egyesek speciális utasításkészleteket is tartalmaznak a tömörítés felgyorsítására. Ennek ellenére a CPU terhelés mindig figyelembe veendő tényező marad.

Memóriaigény

Néhány fejlettebb tömörítési algoritmus, különösen azok, amelyek nagy szótárakat vagy hosszú csúszó ablakokat használnak, jelentős mennyiségű RAM-ot igényelhetnek a hatékony működéshez. Ez korlátozó tényező lehet erőforrás-szegény környezetekben (pl. beágyazott rendszerek) vagy nagyméretű fájlok tömörítésekor.

Például az LZMA algoritmus, amelyet a 7z használ, viszonylag nagy memóriaigénnyel rendelkezik a tömörítés során, bár a dekompresszió során kevesebbre van szüksége.

Defragmentáció és Tömörítés

A fájlrendszer-szintű tömörítés (pl. NTFS tömörítés) és a lemezdefragmentáció kölcsönhatásban állhatnak egymással. A tömörített fájlok gyakran fragmentáltabbá válhatnak, mivel a tömörítő algoritmusok megváltoztatják a fájlméretet, ami a lemezen való elhelyezkedésüket is befolyásolja. Bár a modern operációs rendszerek és SSD-k esetében a defragmentáció kevésbé kritikus, régebbi merevlemezeken és erősen fragmentált tömörített fájlok esetén a teljesítmény romlását okozhatja.

A kompromisszumok megértése elengedhetetlen a megfelelő tömörítési megoldás kiválasztásához, figyelembe véve az adott rendszer erőforrásait és a felhasználási forgatókönyvet.

A Jövő Fájltömörítése

A jövő fájltömörítése mesterséges intelligenciával optimalizált adatkezelést ígér.
A jövő fájltömörítése mesterséges intelligenciát használhat a még hatékonyabb és gyorsabb adatok tömörítéséhez.

A digitális adatok mennyisége továbbra is exponenciálisan növekszik, és ezzel együtt a hatékony tömörítési módszerek iránti igény is. A jövőbeli fejlesztések valószínűleg több irányba mutatnak, kihasználva az új technológiákat és a mélyebb adatismeretet.

AI/ML a Tömörítésben

A mesterséges intelligencia (AI) és a gépi tanulás (ML) egyre inkább behatol a különböző technológiai területekre, és a tömörítés sem kivétel. Az ML algoritmusok képesek lehetnek mélyebb mintázatokat felismerni az adatokban, mint a hagyományos statisztikai módszerek. Ez lehetővé teheti:

  • Adaptív tömörítés: Az algoritmusok képesek lennének tanulni az adott adattípus jellemzőiből, és dinamikusan optimalizálni a tömörítési stratégiát. Például egy ML modell felismerhetné, hogy egy videóban egy bizonyos típusú mozgásminta dominál, és ahhoz optimalizálná a mozgásbecslést.
  • Perceptuális optimalizáció: A gépi tanulás segíthetne finomítani a veszteséges tömörítés pszichoakusztikai és vizuális modelljeit, még pontosabban előre jelezve, hogy mely adatok dobhatók el anélkül, hogy az emberi érzékelés számára észrevehető lenne a minőségromlás.
  • Generatív modellek: Hosszú távon, generatív AI modellek akár teljesen új módon is „tömöríthetnék” az adatokat, ha nem az eredeti bitek pontos visszaállítása a cél, hanem egy hasonló, de kisebb reprezentáció létrehozása. Például, ha egy képet nem bitről bitre tömörítünk, hanem egy leírást adunk róla, és egy generatív modell hozza létre újra a képet a leírás alapján. Ez azonban már messze túlmutat a hagyományos értelemben vett tömörítésen.

Specializált Hardver a Tömörítéshez/Dekompresszióhoz

Ahogy a tömörítési algoritmusok egyre komplexebbé válnak, a CPU-k terhelése is nő. A jövőben valószínűleg egyre nagyobb szerepet kapnak a dedikált hardveres gyorsítók (pl. FPGA-k, ASIC-ek) a tömörítési és dekompressziós feladatokhoz. Ezek a chipek kifejezetten ezen algoritmusok párhuzamos feldolgozására lennének optimalizálva, ami drasztikusan megnövelné a sebességet és csökkentené a CPU terhelését. Már ma is léteznek ilyen megoldások szerverekben és egyes médiafeldolgozó egységekben (pl. videókódolók).

Új Algoritmusok Specifikus Adattípusokra

A jövőbeli kutatások folytatódnak az új, hatékonyabb tömörítési algoritmusok fejlesztésében. Különösen nagy hangsúlyt kaphatnak a specifikus adattípusokra optimalizált algoritmusok:

  • Genomikus adatok tömörítése: Az emberi genom szekvenálása hatalmas adatmennyiséget generál. A genetikai adatok sajátos mintázatait kihasználó tömörítési algoritmusok jelentős méretcsökkenést eredményezhetnek, ami kritikus fontosságú az orvosi kutatások és a bioinformatika szempontjából.
  • 3D modellek és pontfelhők tömörítése: A virtuális valóság, a kiterjesztett valóság és a 3D nyomtatás elterjedésével egyre nagyobb az igény a 3D modellek és a lidar szkennerek által generált pontfelhők hatékony tömörítésére.
  • Idősoros adatok és szenzoradatok tömörítése: Az IoT (Dolgok Internete) elterjedésével rengeteg szenzoradat keletkezik, amelyek gyakran idősoros formában érkeznek. Ezen adatok tömörítésére optimalizált algoritmusok segíthetnek a tárolási és átviteli költségek csökkentésében.

Folyamatos Fókusz a Sebességre és Hatékonyságra

Bár a tömörítési arány mindig fontos marad, a jövőben valószínűleg még nagyobb hangsúlyt kap a sebesség és a hatékonyság, különösen a valós idejű és streaming alkalmazások esetében. Az olyan algoritmusok, mint a Zstandard, amelyek a gyors dekompresszióra optimalizálnak, egyre népszerűbbek lesznek. A cloud computing és az edge computing elterjedésével a tömörítésnek képesnek kell lennie a gyors on-the-fly feldolgozásra, minimalizálva a késleltetést.

Összességében a fájltömörítés területe dinamikusan fejlődik, ahogy az adatok mennyisége és a feldolgozási igények is nőnek. Az új technológiák és a mélyebb adatismeret segítségével a jövő tömörítési megoldásai még hatékonyabbá és intelligensebbé válnak majd, tovább optimalizálva a digitális infrastruktúrát.

Share This Article
Leave a comment

Vélemény, hozzászólás?

Az e-mail címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük