Andmete pakkimine

Allikas: Vikipeedia

Arvutiteaduses ja informatsiooniteoorias on andmete pakkimine (ka andmete tihendamine, andmetihendus; bitimäära vähendamine; (Inglise K. "Data compression")) andmete kodeerimine nii, et väljundandmed on mälu mahult väiksemad kui sisendandmed. [1] Pakkimist on kahte tüüpi: kadudega ja kadudeta. Kadudeta andmetihendus vähendab bitimäära statistilise liiasuse leidmise ja elimineerimisega (Inglise K. "Statistic redundancy"). [2] Kadudeta pakkimisel informatsiooni ei lähe kaduma. Kadudega tihendamisel leitakse ebavajalik informatsioon ja eemaldatakse see. Kui andmed on pakitud, saab neid andmeid uuesti kasutada ainult siis, kui need kindlad andmed on uuesti lahti pakitud. [3]

Tihendus on vajalik, sest see aitab vähendada ressursikulu (nt andmete säilitamise ruum või edastusmaht). Kuna andmed peavad olema kasutamisel lahti pakitud, on andmete tihendus arvutusvõimsuse suhtes nõudlik. See tähendab seda, et andmete tihendus tähendab muude ressursside eraldamist informatsiooni mahu vähendamise nimel. Seega võib näiteks video vaatamisel vaja minna suhteliselt võimsat riistvara, et arvuti suudaks informatsiooni lahti pakkida piisavalt kiiresti, et seda videot ilma probleemideta (näiteks puhverdamisvajaduseta) vaadata. Veel on võimalus see tihendatud andmehulk täielikult lahti pakkida enne, kui seda kasutama tahetakse hakata, kuid see vajab rohkem ruumi ja aega. Seega, andmete pakkimise süsteemid tähendavad, et andmete mahu vähendamise nimel ohverdatakse muid resursse nagu aeg, arvutuslik võimsus ja andmete enda moonutus (kasutades kadudega pakkimist).

Statistiline liiasus[muuda | redigeeri lähteteksti]

Statistiline liiasus (Inglise K. "Statistic redundancy") tähendab bittide hulka, mida kasutati, et sõnumit edastada miinus see bittide hulk, mis hulk informatsiooni selles sõnumis tegelikult oli. Võib ka defineerida, et see on raisatud "ruumi" hulk, mida kindla andmehulga edastamisel kasutati. Andmete tihendamine on mittetahetud statistilise liiasuse vähendamine või elimineerimine, samas kui kontrollsummadega on statistilist liiasust võimalik kasvatada. Seda tehakse vahepeal selleks, et leida edastamisvigu, kui näiteks andmeid edastatakse üle suure koormusega võrgu.

Liigid[muuda | redigeeri lähteteksti]

Andmeid on võimalik pakkida kahel erineval moel:

  • Kadudeta andmetihendus (Inglise K. "lossless compression")
  • Kadudega andmetihendus (Inglise K. "lossy compression")

Kadudeta andmetihenduse korral saavutatakse lahti pakkimisel esialgsed andmed. Kasutatakse seda varianti tavaliselt siis, kui on oluline, et andmed säiliksid nii nagu nad alguses olid. Näiteks teksti andmete tihendamisel.

Kadudega andmetihenduse korral võib originaaliga võrreldes esineda väikeseid erinevusi. Kasutatakse peamiselt graafiliste failide puhul. Tuntuim failiformaat kus seda kasutatakse on .jpeg. Kui andmed on pakitud kasutades mõnda kadudega andmete pakkimise algoritmi, ei ole võimalik taastada sellest kadudeta versiooni.

Kadudeta andmetihendus[muuda | redigeeri lähteteksti]

Kadudeta andmete pakkimise algoritmid tavaliselt kasutavad ära statistilist liiasust, et esitada andmeid sisutihedalt ilma informatsiooni kaotamata. Kadudeta andmetihendus on võimalik, sest enamus päris maailma andmetest sisaldab statistilist liiasust. Näiteks, üks pilt võib endas kanda värvide piirkondi kus värv ei muutu üle suure hulga pikslite. Selle asemel, et kodeerida "punane piksel asukohal 2000, punane piksel asukohal 2001, ..." võib andmed kodeerida "279 punast pikslit asukohal 2000, 2001, 2002" või "punased pikslid asukohal 2000-2279". See on algeline näide RLE (Inglise K. "Run-length encoding") kohta.

Grammatikapõhine andmetihendus (Inglise K. "Grammar-based compression") kujutab endas väga efektiivselt väga korduva teksti pakkimist, näiteks bioloogiliste andmete kollektsioon, internetiarhiivid, suure hulga dokumentide kollektsioon jms. Põhiline tööülesanne grammatikapõhisel pakkimisel on leida kontekstivaba korduv osa dokumendis, kustutada see nendest asukohtadest, luua sellest üks koopia ja lisada selle koopia lõppu iga asukoht, kus see lause dokumendis kordus. Näiteks, üks pikk referaat võib endas sisaldada lauset "tiigrite tüüpiline elukoht on" 200 korda. Selle asemel, et seda 208-t baiti iga kord uuesti kirjutada, kustutatakse see igast asukohast, luuakse üks koopia ja selle järgi kirjutatakse selle korduva osa asukoht näiteks nii: ""tiigrite tüüpiline elukoht on" asukohtadel 2000, 2015, 2090, .." ja selle asemel, et iga kord kasutada 208 baiti, kasutab see igal korral peale esimese ainult 36 baiti.

Kadudega andmetihendus[muuda | redigeeri lähteteksti]

Kadudega andmetihenduse algoritme kasutatakse ainult olukordades kus täielik perfektsus pole nii tähtis. Kaotades mittevajalikkud detailid andmetehulgast saab säästa mäluruumi. Kadudega tihendamise algoritmid on ehitatud üles erinevate uurimiste põhjal, kuidas inimene tajub võib märkab kindlat informatsiooni. Näiteks, inimese silm on rohkem tundlik väikestele heleduse muutustele kui värvi muutustele. Selle põhjal saab teha väikeseid kompromisse informatsiooni säilitamise ja andmehulga vähendamise vahel. Mitmed populaarsed pakkimise formaadid kasutavad ära neid väikseid tajumise erinevusi nagu näiteks JPEG või muud muusika, piltide või video pakkimise algoritmid.

Kadudega piltide pakkimist saab kasutada digitaalkaamerates, et vähendada mälu kasutust piltide poolt, kuid selle nimel ohverdatakse võimalikult minimaalne hulk pildi kvaliteeti. Sarnaselt, DVD-d kasutavad kadudega MPEG-2 Video pakkimise formaati või "koodeksit" nagu seda kutsutakse heli ja videote pakkimisel. Kadudega heli pakkimisel, kasutatakse psühhoakustika (Inglise K. "psychoacoustics") uuringutega kooskõlas leiutatud meetodeid meetodeid, et eemaldada mitte-kuuldavaid (või vaevu kuuldavaid) komponente kogu andmete hulgast. [4] Inimese kõne pakkimimist tehakse tihti veelgi spetsiaalsemate tehnikatega. Kõne kodeerimine või hääle kodeerimine on tihti eristatud tavalisest heli pakkimisest. Hääle pakkimist kasutatakse näiteks internetitelefonide puhul ja heli pakkimist kasutatakse näiteks muusika CD-de puhul, kus muusika kirjutatakse CD plaadile tihendatud vormis ja helimängijad peavad helifailid lahti pakkima.

Arhiveerimine[muuda | redigeeri lähteteksti]

Kindlasti tuleks eristada andmete pakkimisest teist tüüpi andmesuuruste vähendamist - arhiveerimist. Kuigi enamus tänapäeval rohkem levinuid pakkimisprogramme lubavad ka arhiveerimist (Näiteks WinZip, WinRar, WinAce, arj, jne.), on need siiski kaks erinevat asja.

Pakkimine on ainult kindla andmehulga tihendamine, mis lubab vähendada selle kindla andmehulga mahtu. Arhiveerimine on mitme erineva andmehulga, vahepeal ka erinevat tüüpi andmehulga, tihendus üheks failiks (arhiiviks).

Algoritmid[muuda | redigeeri lähteteksti]

Kadudeta andmete pakkimisel kasutatavad algoritmid on:

  • DEFLATE
  • RLE
  • GZIP
  • BZIP2
  • LZW
  • JPEG 2000

Kadudega andmete pakkimisel kasutatavad algoritmid on:

  • MPEG1
  • MPEG2
  • MPEG3
  • MPEG4
  • JPEG (Sisaldab ka kadudeta andmete tihendamise võimalust)
  • MP3
  • DOLBY AC-3

Andmete pakkimise maksimaalsuse saavutamiseks kasutatakse erinevaid algoritme koos.

Kasutusalad[muuda | redigeeri lähteteksti]

Heli[muuda | redigeeri lähteteksti]

Heli andmete tihendamist, mida eristatakse dünaamilise raadiuse tihendamisest (Inglise K. "Dynamic range compression"), kasutatakse selleks, et vähendada edastamiseks vajalikku ribalaiust ja ladustamiseks vajalikku mälumahtu. Heli andmete tihendamise algoritme implementeeritakse tarkvarasse ja neid kutsutakse heli koodeksiteks (Inglise K. "Codec"). Kadudega heli andmete pakkimise algoritmid või koodeksid võimaldavad efektiivsemat andmete pakkimist, kuid vähendavad kvaliteeti, ja neid kasutatakse väga paljudes heliga seotud rakendustes. Need algoritmid peaaegu kõik tuginevad psühhoakustika uurimustöödele, mis leida ja vähendada inimesele vähem tajutavad vähem kuuldavad või mittetähenduslikud helid, seega vähendades mäluruumi ja ribalaiuse vajadust ladustamise või edastamise puhul.

Nii kadudega kui kadudeta pakkimisel vähendatakse informatsiooni liiasust, kasutades meetodeid nagu kodeerimine, mustri eristamine ja lineaarne ennustamine, et vähendada andmete hulka, mis esindab tihendamata informatsiooni[5].

Dünaamilise raadiuse tihendamine (Inglise K. "Dynamic range compression") tähendab valjude helide vaigistamist ja vaiksete helide valjemaks tegemist, mis jätab helitugevuse teatud valjuduse ja vaiksuse limiidi vahele. See eemaldab erandlikud olukorrad, kus helitugevus on liiga kõrge või liiga madal, ja seeläbi vähendab helifaili suurust.

Video[muuda | redigeeri lähteteksti]

Video andmete tihendus kasutab tänapäevaseid kodeerimistehnikaid, et vähendada liiasust video andmetes. Enamus video andmete pakkimise algoritme või koodekseid kombineerivad ruumilise pildi pakkimise (Inglise K. "Spatial image compression") ja ajalise liikumise hüvitamise (Inglise K. "Temporal motion compensation"). Enamus video koodekseid kasutab heli pakkimise tehnikaid paralleelselt video pakkimisele, aga andmed on ühendatud üheks hulgaks[6].

Enamus video andmete tihendamise algoritme kasutavad kadudega tihendamist. Tihendamata video nõuab väga kõrget andmeedastuskiirust. Kuigi kadudeta tihendamise koodeksid suudavad pakkuda keskmiselt kolmekordset tihendust, tüüpiline MPEG-4 formaadi kadudega tihendus suudab vähendada andmete suurust 20 kuni 200 korda[7]. Nagu kõikides kadudega tihendamise algoritmides, on loodud kompromiss video kvaliteedi, arvuti jõudluse maksumuse ja süsteemi nõuete vahel.

Kodeerimise teooria[muuda | redigeeri lähteteksti]

Video andmeid saab kujutada kui seeriat paigal olevaid pilte (kaadreid). Piltide (Kaadrite) jada sisaldab endas ajalist ja ruumilist liiasust mida video pakkimise algoritmid üritavad elimineerida või kodeerida väiksemasse suurusesse. Sarnasused saab kodeerida näiteks ainult ladustades ainult erinevused kahe järjestikkuse kaadri vahel, või kasutades erinevaid inimese taju iseärasusi. Näiteks, väikeseid värvi erisusi on raskem inimese jaoks tajuda, kui erinevusi heleduses. Pakkimisalgoritmid saavad seetõttu luua mitme järgneva pildi värvide keskmise ja kasutada seda värvi, et vähendada ruumi.

Üks kõige võimsamaid tehnikaid video pakkimiseks on raamiväline tihendus (Inglise K. "Interframe compression"), kus kasutatakse varasemaid või järgnevaid kaadreid jadas, et pakkida käesolev kaader, kuid sarnane meetod, raamisisene tihendus (Inglise K. "Intraframe compression"), kasutab ainult käesolevat kaadrit, olles rohkem pildi tihendus[8].

Raamivälise pakkimise puhul võrreldakse igat kaadrit jadas eelnevaga, et näha, kas järgneval kaadril on alasid, kus midagi ei ole muutunud. Kui selline ala eksisteerib, siis kopeeritakse see ala lihtsalt eelmiselt pildilt järgnevale. Kui selle ala asukoht on muutunud, siis pööratakse ja liigutatakse eelmisel kaadril olevat ala. See siiski on palju vähem mälumahtu nõudev, kui iga pilt uuesti mälusse jätta ja vajadusel esitada. Raamiväline tihendus töötab ideaalselt programmide puhul, mis lihtsalt mängivad video vaatajale[9].

Probleem raamivälise pakkimisega on aga see, et kuna see algoritm kopeerib andmeid ühelt kaadrilt teisele, võib juhtuda olukordi, kus vajalik kaader on kaduma läinud. Nendes olukordades ei ole võimalik konstrueerida järgmiseid kaadreid õigesti.

Vaata ka[muuda | redigeeri lähteteksti]

Viited[muuda | redigeeri lähteteksti]

  1. Mahdi, O.A.; Mohammed, M.A.; Mohamed, A.J. (November 2012). "Implementing a Novel Approach an Convert Audio Compression to Text Coding via Hybrid Technique". International Journal of Computer Science Issues 9 (6, No. 3): 53–59. Välja otsitud 6 March 2013. 
  2. Pujar, J.H.; Kadlaskar, L.M. (May 2010). "A New Lossless Method of Image Compression and Decompression Using Huffman Coding Techniques". Journal of Theoretical and Applied Information Technology 15 (1): 18–23. 
  3. Salomon, David (2008). A Concise Introduction to Data Compression. Berlin: Springer. ISBN 9781848000728. 
  4. Arcangel, Cory. "On Compression". Vaadatud 12 December 2013.
  5. Mahdi, O.A.; Mohammed, M.A.; Mohamed, A.J. (November 2012). "Implementing a Novel Approach an Convert Audio Compression to Text Coding via Hybrid Technique". International Journal of Computer Science Issues 9 (6, No. 3): 53–59. Välja otsitud 6 March 2013. 
  6. "Video Coding". Center for Signal and Information Processing Research. Georgia Institute of Technology. Vaadatud 12 December 2013.
  7. Graphics & Media Lab Video Group (2007). Lossless Video Codecs Comparison. Moscow State University. 
  8. Faxin Yu, Hao Luo, Zheming Lu (2010). Three-Dimensional Model Analysis and Processing. Berlin: Springer, 47. ISBN 9783642126512. 
  9. Bhojani, D.R.. "4.1 Video Compression". Hypothesis. Vaadatud 12 December 2013.