Kako postaviti pametne telefone i računala. Informativni portal
  • Dom
  • TV (Smart TV)
  • Metoda alata za kompresiju podataka. Kompresija bez gubitka informacija

Metoda alata za kompresiju podataka. Kompresija bez gubitka informacija

Kompresija podataka(kompresija podataka) - tehnička tehnika smanjenje volumena (veličine) zapisa podataka na svojim medijima (tvrdi magnetski disk, disketa, magnetska vrpca); provodi se različitim metodama, uglavnom korištenjem kodiranja (ponavljanje riječi, fraza, simbola). Postoje dvije skupine načina kompresije podataka: statički i dinamički; također se pravi razlika između fizičke i logičke kompresije; simetrična i asimetrična kompresija; adaptivno, poluadaptivno i neadaptivno kodiranje; kompresija bez gubitaka, kompresija s gubicima i kompresija minimiziranja gubitaka. Metode (vrste) kompresije podataka:

Statička kompresija podataka - koristi se za dugotrajnu pohranu i arhiviranje; izvodi se pomoću posebnih uslužnih programa za arhiviranje, na primjer ARJ, PKZIP/PKUNZIP. Nakon oporavka (dekompresije), vraća se izvorna snimka.
Dinamičko sažimanje (sažimanje u stvarnom vremenu; dinamičko sažimanje, sažimanje u stvarnom vremenu) - dizajnirano za smanjenje zauzetog područja memorije diska podacima koji zahtijevaju online pristup i izlaz na vanjski uređaji Računalo (uključujući i na zaslonu monitora). Dinamičko sažimanje i oporavak podataka izvodi se automatski i "trenutačno" pomoću posebnog softvera.
Fizička kompresija je metodologija kompresije u kojoj se podaci rekonstruiraju u kompaktniji oblik "formalno", to jest, bez uzimanja u obzir prirode informacija koje sadrže.
Logička kompresija je metodologija u kojoj se jedan skup abecednih, numeričkih ili binarnih znakova zamjenjuje drugim. Istodobno se čuva semantičko značenje izvornih podataka. Primjer bi bila zamjena izraza njegovom kraticom. Logička kompresija se izvodi na jednom ili više znakova visoka razina a temelji se isključivo na sadržaju izvornih podataka. Logička kompresija se ne primjenjuje na slike.
Simetrično sažimanje je metodologija sažimanja prema kojoj su principi konstrukcije algoritama za pakiranje i raspakiranje podataka bliski ili usko povezani. Kada koristite simetričnu kompresiju, vrijeme potrošeno na kompresiju i dekompresiju podataka je usporedivo. Programi za razmjenu podataka obično koriste simetričnu kompresiju.
Asimetrična kompresija je metodologija prema kojoj se više vremena troši pri izvođenju rada “u jednom smjeru” nego pri izvođenju rada u drugom smjeru. Sažimanje slika obično zahtijeva mnogo više vremena i resursa sustava nego njihovo dekomprimiranje. Učinkovitost ovog pristupa određena je činjenicom da se slike mogu komprimirati samo jednom, a dekomprimirati u svrhu prikazivanja - više puta. Asimetrični algoritmi "u suprotnom smjeru" (kompresija podataka traje kraće od dekompresije) koristi se prilikom izvođenja Rezervni primjerak podaci.
Prilagodljivo kodiranje je metodologija kodiranja za kompresiju podataka koja nije unaprijed konfigurirana za određenu vrstu podataka. Programi koji koriste adaptivno kodiranje prilagođeni su svim vrstama komprimiranih podataka, postižući maksimalno smanjenje njihovog volumena.
Neadaptivno kodiranje je metodologija kodiranja orijentirana na kompresiju određena vrsta ili vrste podataka. Koderi izgrađeni na ovom principu sadrže statičke rječnike "unaprijed definiranih podnizova" za koje se zna da se često pojavljuju u podacima koji se kodiraju. Primjer je Huffmanova metoda kompresije.
Poluadaptivno kodiranje je metodologija kodiranja kompresije podataka koja koristi elemente adaptivnog i neprilagodljivog kodiranja. Načelo rada polu-adaptivnog kodiranja je da koder izvodi dvije grupe operacija: prvo, pregled niza kodiranih podataka i izrada rječnika za njih, a zatim, samo kodiranje.
Kompresija bez gubitaka je metodologija kompresije u kojoj se prethodno kodirani dio podataka vraća nakon potpunog raspakiranja bez unošenja promjena.
Kompresija s gubitkom je metodologija u kojoj, kako bi se osigurao maksimalni omjer kompresije, izvorni niz Neki od podataka koje sadrži su odbačeni. Za tekstualne, numeričke i tablične podatke koristite programe koji implementiraju slične metode kompresija je neprihvatljiva. Međutim, za programe koji rade s grafikom, ovo je često preporučljivo. Kvaliteta obnovljene slike ovisi o prirodi grafičkog materijala i ispravnosti algoritma kompresije implementiranog u programu. Postoji niz algoritama kompresije koji uzimaju u obzir prihvatljive razine gubitka izvorne grafičke slike u specifičnim upotrebama njezine obnovljene slike, na primjer, gledanjem na zaslonu monitora, ispisom na pisaču ili u ispisu. Ove metode zajednički se nazivaju "kompresija s minimalnim gubitkom".
Kompresija slike tehnička je tehnika ili metoda smanjivanja volumena (veličine) zapisa grafičkih slika (crteža, crteža, dijagrama) na njihovim medijima (primjerice na magnetskom disku, magnetskoj vrpci). U biti "kompresija slike" je vrsta dinamičke kompresije. Za njegovu provedbu koriste se različite metode kodiranja podataka, koje su usmjerene na grafičke elemente koji čine sliku, uključujući pokretne objekte. Također se koristi pri prijenosu informacija o faksu putem komunikacijskih kanala, u multimedijskim sustavima i videotelefonima.
Kompresija diska tehnička je tehnika koja se temelji na dinamičkoj kompresiji tijekom procesa njihovog zapisivanja na disk i prilikom čitanja. automatski oporavak svom izvornom obliku. Kompresija diska koristi se za povećanje kapaciteta diska. Ovisno o prirodi zapisa, kapacitet diska može se povećati za otprilike 1,5 do 5 puta. Kompresija diska provodi se posebnim aplikacijski programi, na primjer DoubleSpace, Stacker, SuperStor.

Metode i sredstva kompresije podataka:
Huffmanovu metodu kompresije (CCITT kodiranje) razvio je 1952. David Huffman. Međunarodni savjetodavni odbor za telefoniju i telegrafiju (CCITT) razvio je brojne komunikacijske protokole za faksimilni prijenos na temelju toga crno-bijele slike preko telefonskih kanala i podatkovnih mreža (Standard T.4 CCIT i T.6 CCITT, također poznat kao kompresija CCITT grupe 3 i kompresija CCITT grupe 4).
Fraktalna kompresija - metoda kompresije rasterske slike pretvarajući ih u takozvane fraktale. Pohranjivanje slika u obliku fraktala zahtijeva četiri puta manje memorije na disku nego u pikselima.
ART je metoda za komprimiranje teksta, grafike, zvuka i videa. Načelo rada algoritma kompresije temelji se na analizi slike i identificiranju njenih ključnih značajki (boja, šum, rubovi, ponavljajuće značajke).
AC3 Dolby je metoda i format kompresije koji vam omogućuje komprimiranje, pohranu i prijenos do 6 kanala audio podataka u jednoj datoteci pri brzinama od 32 do 640 kbps.
DJVU (DjVu, djvu, deja vu) je tehnologija i format za dinamičku kompresiju skeniranih stranica publikacija koje sadrže tekstualne i ilustrativne materijale.
DVI (Digital Video Interactive) je sustav za dinamičku kompresiju i restauraciju audio i video zapisa u digitalnom obliku. Njegova uporaba omogućuje vam snimanje dugometražnog video filma zajedno sa zvukom na CD-ROM.
EAD (Encoded Archival Description) je standard kodiranja koji je razvio Ured za razvoj mreže i MARC standarde Kongresne knjižnice u suradnji s Društvom američkih arhivista 1998. (ažurirano 2002.). Norma utvrđuje načela za stvaranje, razvoj i održavanje shema kodiranja za arhivska i knjižnična pomoćna sredstva.
Upravitelj kompresije slika dinamički je program za upravljanje kompresijom slike koji vam omogućuje korištenje razne metode kompresija/rekonstrukcija slike (MPEG, JPEG).
JBIG (Joint Bi-level Image Experts Group) metoda je kompresije bez gubitaka za dvoslojne (dvobojne) slike koju je stvorila Joint ISO i CCIT Bi-level Image Experts Group 1988. godine. Metoda JBIG odobrena je 1993. godine kao standard za kodiranje dvorazinskih podataka umjesto manje učinkovitih algoritama kompresije MR (Modified READ) i MMR (Modified Modified READ).
LZW (Lempel-Ziv-Welch) je metoda dinamičke kompresije koja se temelji na pretrazi cijele datoteke i pohranjivanju identičnih nizova podataka u rječnik (oni se nazivaju fraze). Svakoj jedinstvenoj sekvenci podataka dodijeljeni su kraći tokeni (ključevi).
MP3 (Moving Pictures Experts Group, Layer 3) je dinamička metoda kompresije (algoritam) i poseban format za snimanje audio datoteka. MP3 omogućuje visoku kompresiju audio zapisa i koristi se u multimedijskim aplikacijama, posebice u digitalnim playerima (playerima) i Internetu.
RLE (Run Length Encoding) je metoda dinamičke kompresije grafičkih podataka, prvenstveno slika, koja se temelji na redukciji fizička veličina ponavljanje nizova znakova.

Pošaljite svoj dobar rad u bazu znanja jednostavno je. Koristite obrazac u nastavku

Dobar posao na web mjesto">

Studenti, diplomanti, mladi znanstvenici koji koriste bazu znanja u svom studiju i radu bit će vam vrlo zahvalni.

Objavljeno na http://www.allbest.ru/

Kompresija podataka

1. Informacija. Njegove vrste i svojstva

U literaturi se može pronaći dosta definicija pojma "informacije", koje odražavaju različite pristupe tumačenju ovog pojma. Ozhegovov objašnjavajući rječnik ruskog jezika daje 2 definicije riječi "informacija":

Informacije o okolnom svijetu i procesima koji se u njemu odvijaju, koje percipira osoba ili poseban uređaj.

Poruke koje obavještavaju o stanju stvari, stanju nečega. (Znanstvene, tehničke i novinske informacije, mediji - tisak, radio, televizija, kino).

Informacija i njezina svojstva predmet su proučavanja brojnih znanstvenih disciplina, kao što su teorija informacija (matematička teorija sustava prijenosa informacija), kibernetika (znanost o komunikaciji i upravljanju u strojevima i životinjama, kao iu društvu i ljudima). bića), semiotika (znanost o znakovima) i sustavi znakova), teorija masovne komunikacije (proučavanje medija i njihov utjecaj na društvo), informatika (proučavanje procesa prikupljanja, transformacije, pohranjivanja, zaštite, pretraživanja i prijenos svih vrsta informacija i njihova sredstva automatizirana obrada), fizike i matematike.

Informacija ima dvojaku prirodu: materijalnu – može se prenositi, pohranjivati ​​itd.; i nematerijalni – prijenosom sumpora može se nadoknaditi. Informacija ne može postojati bez svog materijalnog nositelja, sredstva za prijenos u prostoru i vremenu. Nositelj može biti sam fizički objekt ili njegov energetski ekvivalent u obliku zvučnih, svjetlosnih, električnih i drugih signala.

U tu svrhu, sada su izumljene mnoge metode za pohranjivanje informacija na vanjske (u odnosu na ljudski mozak) medije i njihov prijenos na velike udaljenosti.

Glavne vrste informacija prema obliku prezentacije, metodama kodiranja i pohranjivanja, koje ima najveća vrijednost za informatiku, ovo je:

· grafički ili slikovni - prvi tip za koji je implementirana metoda pohranjivanja informacija o okolnom svijetu u obliku slika na stijenama, a kasnije u obliku slika, fotografija, dijagrama, crteža na papiru, platnu, mramoru i drugim materijalima koji prikazuju slike stvarnog svijeta;

· zvuk- svijet oko nas pun je zvukova, a problem njihovog pohranjivanja i umnožavanja riješen je izumom uređaja za snimanje zvuka 1877. godine; njegova vrsta su glazbene informacije - za ovu vrstu je izumljena metoda kodiranja pomoću posebnih znakova, što omogućuje njihovo pohranjivanje na sličan način grafičke informacije;

· tekst- metoda kodiranja ljudskog govora posebnim simbolima - slovima, a različite nacije imaju različite jezike i koriste različite skupove slova za prikaz govora; Ova je metoda postala osobito važna nakon izuma papira i tiska;

· numerički- kvantitativna mjera objekata i njihovih svojstava u okolnom svijetu; Osobito veliko značenje dobilo je razvojem trgovine, gospodarstva i novčane razmjene; na sličan način tekstualne informacije za prikaz se koristi metoda kodiranja s posebnim simbolima - brojevima, a sustavi kodiranja (brojčanja) mogu biti različiti;

· video informacije- metoda očuvanja "živih" slika okolnog svijeta, koja se pojavila s izumom kina.

Za prijenos informacija na velike udaljenosti u početku su se koristili kodirani svjetlosni signali, izumom električne energije - prijenos signala kodiranog na određeni način žicama, a kasnije i radio valovima.

Pojavom računala (ili, kako su ih u početku kod nas nazivali, računala – elektroničkih računalni strojevi) prvo je bilo sredstvo za obradu brojčane informacije. Međutim, kasnije, osobito nakon široke uporabe osobnih računala (PC), računala su se počela koristiti za pohranu, obradu, prijenos i dohvaćanje tekstualnih, numeričkih, vizualnih, zvučnih i video informacija. Od pojave prvih osobnih računala - PC-a (80-ih godina 20. stoljeća) - do 80% njihovog radnog vremena posvećeno je radu s tekstualnim informacijama.

Pohranjivanje informacija prilikom korištenja računala provodi se na magnetski diskovi ili trake, na laserski diskovi(CD i DVD), posebni trajni memorijski uređaji (flash memorija, itd.). Ove se metode stalno poboljšavaju, izmišljaju se novi uređaji i mediji za pohranu. Obradu informacija (reprodukciju, pretvorbu, prijenos, snimanje na vanjski medij) obavlja procesor računala. Pomoću računala moguće je kreirati i pohraniti nove informacije bilo koje vrste, za što se koriste posebni programi, koji se koristi na računalima i uređajima za unos informacija.

Trenutno se posebnom vrstom informacija mogu smatrati informacije predstavljene na globalnom Internetu. Koristi posebne tehnike za pohranu, obradu, pretraživanje i prijenos velikih količina distribuiranih informacija i posebne načine rada s različite vrste informacija. Stalno poboljšavanje softver, pružajući kolektivni rad s informacijama svih vrsta.

Svojstva informacija

Mogu se navesti mnoga različita svojstva informacija. Svaka znanstvena disciplina razmatra one koji su joj važniji. Sa stajališta računalne znanosti, sljedeća svojstva se čine najvažnijima:

1. Objektivnost i subjektivnost informacija. Objektivnijim informacijama smatra se ona u koju metode unose manje subjektivnog elementa. Tijekom informiranja uvijek se smanjuje stupanj objektivnosti informacija.

2. Potpunost informacija. Cjelovitost informacija uvelike karakterizira kvalitetu informacija i određuje dostatnost podataka za donošenje odluka ili stvaranje novih podataka na temelju postojećih.

3. Pouzdanost informacija. Podaci nastaju kada se signali snimaju, ali nisu svi signali "korisni" - uvijek je prisutna razina stranih signala.

5. Dostupnost informacija.

6. Relevantnost.

2. Kompresija podataka

Poznato pravilo postoji u kompjuterski svijet koji kapacitet tvrdi disk nikad ne može biti previše. Doista, teško je ne složiti se s njim: koliko god tvrdi disk izgledao golem kada ga kupite, brzo se začepi raznim stvarima. nepotrebne informacije. Budući da je šteta sve brisati, vrijedi uvijek iznova sve te stvari "spremiti" u neku vrstu spremišta, arhive.

Skompresija podataka- postupak kodiranja podataka koji se provodi u cilju smanjenja njegovog volumena. Koristi se za racionalnije korištenje uređaja za pohranu i prijenos podataka. Ako se metode kompresije podataka primjenjuju na gotove dokumente, tada se termin “kompresija podataka” često zamjenjuje terminom “arhiviranje podataka”.

Kompresija se temelji na uklanjanju suvišnih informacija sadržanih u izvornim podacima. Primjer redundancije je ponavljanje fragmenata u tekstu (na primjer, riječi prirodni ili strojni jezik). Takva se redundancija obično eliminira zamjenom ponovljenog niza s kraćom vrijednošću (kodom). Druga vrsta redundancije je zbog činjenice da se neke vrijednosti u komprimiranim podacima pojavljuju češće od drugih, te je moguće zamijeniti podatke koji se često pojavljuju s više kratke kodove, a rijetke - duže (probabilistička kompresija). Sažimanje podataka koji nemaju svojstva redundantnosti (npr. slučajni signal ili buke), nemoguće je bez gubitaka. Također, obično nije moguće komprimirati šifrirane informacije.

Algoritmi kompresije za tekstove/datoteke nepoznatog formata

Postoje 2 glavna pristupa komprimiranju datoteka nepoznatog formata.

U svakom koraku algoritma kompresije, ili se sljedeći znak postavlja kakav jest (s posebnom zastavom koja označava da nije komprimiran), ili se označavaju granice riječi iz prethodnog dijela koji se poklapa sa sljedećim znakovima datoteke. . Raspakiranje datoteka komprimiranih na ovaj način vrlo je brzo, pa se ovi algoritmi koriste za izradu programa koji se sami raspakuju.

Za svaki niz u svakom trenutku prikuplja se statistika njegovog pojavljivanja u datoteci. Na temelju ove statistike izračunava se vjerojatnost vrijednosti za sljedeći simbol. Nakon toga možete koristiti jednu ili drugu vrstu statističko kodiranje, na primjer, aritmetičko ili Huffmanovo kodiranje za zamjenu nizova koji se često pojavljuju kraćima i onih koji se rijetko pojavljuju duljima.

Kompresija može biti bez gubitaka (kada je moguće vratiti izvorne podatke bez izobličenja) ili s gubicima (oporavak je moguć uz izobličenja koja su beznačajna s gledišta daljnje upotrebe obnovljenih podataka). U obradi se obično koristi kompresija bez gubitaka računalni programi i podataka, rjeđe - za smanjenje količine audio, foto i video informacija. Kompresija s gubitkom koristi se za značajno smanjenje glasnoće audio, foto i video informacija učinkovitiji od kompresije bez gubitka.

3. Softver za kompresiju podataka

Ako se metode kompresije informacija primjenjuju na gotove dokumente. Često se izraz “kompresija podataka” zamjenjuje pojmom “arhiviranje podataka”, a softver koji obavlja te radnje naziva se arhivisti.

Programi za arhiviranje dizajnirani su za komprimiranje datoteka, tj. kako bi smanjili prostor na disku koji zauzimaju. Omogućuju, pomoću posebnih metoda pakiranja informacija, komprimiranje informacija na diskovima, stvaranje kopija datoteka u jednu arhivsku datoteku. Unatoč činjenici da memorija računala stalno raste, potreba za arhiviranjem se ne smanjuje.

Dakle, arhiviranje može dobro doći:

1) Prilikom pohranjivanja kopija datoteka i disketa, jer disketa je ograničena u veličini;

2) Osloboditi prostor na tvrdom disku;

3) Prilikom prijenosa informacija preko mreže.

Arhiviranje informacija je transformacija informacija pri kojoj se njihov obujam ne smanjuje, ali količina informacija ostaje ista.

Komprimirana datoteka naziva se arhiva. Arhivska datoteka je na poseban način organizirana datoteka, koji sadrži jednu ili više datoteka u komprimiranom i nekomprimiranom obliku i službene informacije o njihovim imenima.

Stupanj kompresije informacija ovisi o vrsti izvorna datoteka, na korišteni program, kao i na odabrani način pakiranja. Datoteke su najbolje komprimirane grafički objekti, tekstualne datoteke i podatkovne datoteke, za koje omjer kompresije može doseći 5-40%, datoteke su manje komprimirane izvršni programi a opterećenje modula -60-90%.

Razni programeri stvorili su mnoge programe za arhiviranje. Među njima, najčešći za Windows su WINRAR, WINZIP.

Po svojoj popularnosti WinRAR arhivator, Bez sumnje je na prvom mjestu u Rusiji i jedan od prvih u cijelom svijetu. Program za arhiviranje razvio je Evgeny Roshal 2003. Program predviđa potpuna kontrola datoteke u arhivima, restauracija oštećenih arhiva, šifriranje, stvaranje samoraspakirajućih i višetomnih arhiva.

WinZip je jedan od najpopularnijih programa na Internetu koji je skupio značajan broj nagrada od raznih računalnih publikacija diljem svijeta.

Sam algoritam Zip slobodno se koristi u desecima programa, međutim, za mnoge korisnike Windowsa, WinZip je TOČNO standardni program za rad s arhivom. Ugrađeni WinZIP alati za obradu arhiva omogućuju vam da pakirate, pregledavate i izdvajate datoteke iz široko korištenih arhivskih formata kao što su ZIP, CAB, Microsoft Compress, GZIP, TAR, itd. WinZip je vrlo jednostavan i lagan za korištenje.

Međutim, nije uvijek opravdano koristiti zasebne arhive s vlastitim grafičkim školjkama. Najprikladnija ljuska za arhivare je obični upravitelj datoteka, na primjer, Windows Commander, koji ima mogućnost pregledavanja i raspakiranja arhivskih datoteka u formatima ZTP, ARJ, RAR, TAR, GZ, CAB, ACE. Ipak, većina operacija s datotekama, uključujući arhive, obavlja se u takvim upraviteljima.

4. Sažimanje podataka s gubitkom

Sažimanje podataka s gubitkom je metoda kompresije podataka gdje je dekomprimirana datoteka drugačija od izvorne, ali je "dovoljno blizu" da na neki način bude korisna. Ova vrsta kompresije često se koristi na internetu, posebno u streamingu i telefoniji. Te se metode u ovom kontekstu često nazivaju kodecima. Alternativa je kompresija bez gubitaka.

Vrste kompresije s gubitkom

Postoje dvije glavne sheme kompresije s gubitkom:

U transformacijskim kodecima, okviri slika ili zvuka se uzimaju, režu u male segmente, transformiraju u novi osnovni prostor i kvantiziraju. Rezultat se zatim komprimira pomoću entropijskih metoda.

U prediktivnim kodecima, prethodni i/ili naknadni podaci koriste se za predviđanje trenutnog okvira slike ili zvuka. Pogreška između predviđenih i stvarnih podataka, zajedno s dodatnim informacijama potrebnim za predviđanje, zatim se kvantizira i kodira.

Neki sustavi kombiniraju ove dvije tehnike korištenjem transformacijskih kodeka za komprimiranje signala pogreške generiranih tijekom faze predviđanja.

Kompresija bez gubitaka u odnosu na kompresiju bez gubitaka

Prednost metoda kompresije s gubicima u odnosu na metode kompresije bez gubitaka je u tome što su prve znatno superiornije u pogledu omjera kompresije, dok nastavljaju ispunjavati specificirane zahtjeve.

Metode kompresije s gubitkom često se koriste za komprimiranje zvuka ili slika.

U takvim slučajevima, nekomprimirana datoteka može biti vrlo različita od originala na razini usporedbe bit za bit, ali je praktički nerazlučiva ljudskom uhu ili oku u većini praktičnih primjena.

Mnoge metode usmjerene su na strukturne značajke ljudskih osjetilnih organa. Psihoakustički model određuje koliko se zvuka može komprimirati bez degradacije percipirane kvalitete zvuka. Nesavršenosti uzrokovane kompresijom s gubitkom koje su vidljive ljudskom uhu ili oku poznate su kao artefakti kompresije.

Zvučne podatke koji su podvrgnuti kompresiji s gubitkom sudovi ne prihvaćaju kao materijalne dokaze (pa čak ih niti ne uzimaju u obzir) zbog činjenice da informacija koja je podvrgnuta kompresiji poprima kompresijske artefakte i gubi prirodnu buku okoline iz koje je snimljena. napravljena. Stoga je nemoguće utvrditi je li snimka originalna ili sintetizirana. Zato važne zapise Preporučljivo je proizvoditi u PCM formatu ili koristiti magnetofon.

Fotografije snimljene u JPEG format, sud može prihvatiti (unatoč činjenici da su podaci podvrgnuti kompresiji s gubitkom). Ali u isto vrijeme, potrebno je dostaviti kameru kojom su snimljene ili odgovarajuću tablicu prikaza boja fotografije.

Metode kompresije podataka s gubitkom

v Kompresija slike:

· Smanjena dubina boje;

· Metoda glavne komponente;

· Fraktalna kompresija;

v Video kompresija:

· Flash (također podržava JPEG pokretne slike);

· MPEG-1 dio 2;

· MPEG-2 dio 2;

· MPEG-4 2. dio;

v Audio kompresija:

· MP3 - Definirano MPEG-1 specifikacijom;

· Ogg Vorbis (karakterizira ga nepostojanje patentnih ograničenja i drugo visoka kvaliteta);

· AAC, AAC+ - postoji u nekoliko verzija, definiranih MPEG-2 i MPEG-4 specifikacijama, koje se koriste, primjerice, u Apple Computer;

· eAAC+ - format koji nudi Sony kao alternativu AAC i AAC+;

· WMA je vlasništvo Microsofta;

gubitak arhivatora kompresije informacija

5. Kompresija podataka bez gubitka informacija

Kompresija bez gubitaka(engleski: Lossless data compression) - metoda kompresije informacija, pomoću koje se kodirane informacije mogu obnoviti s bitnom točnošću. U tom se slučaju izvorni podaci potpuno vraćaju iz komprimiranog stanja. Ova vrsta kompresije bitno se razlikuje od kompresije podataka s gubitkom. Za svaku vrstu digitalnih informacija u pravilu postoje optimalni algoritmi kompresije bez gubitaka.

Kompresija podataka bez gubitaka koristi se u mnogim aplikacijama. Na primjer, koristi se u popularnoj datoteci ZIP format i Unix pomoćni program Gzip. Također se koristi kao komponenta u kompresiji s gubicima.

Kompresija bez gubitaka koristi se kada je važno da komprimirani podaci budu identični izvorniku. Uobičajen primjer su izvršne datoteke i izvorni kod. Malo grafike formati datoteka, kao što su PNG ili GIF, koristite samo kompresiju bez gubitaka; dok drugi (TIFF, MNG) mogu koristiti i kompresiju s gubicima i bez gubitaka.

Tehnika kompresije bez gubitaka

Iz kombinatorike slijedi da ne postoji algoritam kompresije bez gubitaka koji može smanjiti bilo koju datoteku za barem jedan bajt. Međutim, to nije znak kvalitete algoritma za kompresiju - algoritam mora učinkovito raditi na podacima za koje je dizajniran.

Višenamjenski algoritmi kompresije razlikuju se po svojoj sposobnosti redukcije širok raspon podaci - izvršne datoteke, podatkovne datoteke, tekstovi, grafike itd., a koriste se u arhivatorima. Specijalizirani algoritmi dizajnirani su za određenu vrstu datoteke (tekst, grafika, zvuk itd.), ali takve datoteke znatno jače sažimaju. Na primjer: arhivari komprimiraju audio za oko trećinu (1,5 puta), dok ga FLAC komprimira za 2,5 puta. Većina specijaliziranih algoritama malo je korisna za "strane" vrste datoteka: na primjer, audiopodaci su slabo komprimirani algoritmom dizajniranim za tekstove.

Većina algoritama kompresije bez gubitaka radi u dvije faze: prva generira statistički model za dolazne podatke, druga preslikava dolazne podatke u prikaz po bitovima, koristeći model za proizvodnju "probabilističkih" (to jest, podataka koji se često pojavljuju), što je koristi se češće nego "neprobabilistički" podaci. .

Statistički modeli algoritama za tekst (ili tekstualne binarne podatke kao što su izvršne datoteke) uključuju:

Burrows-Wheelerova transformacija (pretprocesiranje sortiranja blokova koje kompresiju čini učinkovitijom)

LZ77 i LZ78 (koristi se DEFLATE)

Algoritmi kodiranja kroz generiranje nizova bitova:

· Huffmanov algoritam (također se koristi DEFLATE)

Aritmetičko kodiranje

Metode kompresije bez gubitaka

· Višenamjenski

· Kodiranje duljina izvođenja - jednostavan sklop, davanje dobra kompresija podaci koji sadrže mnogo dupliciranih vrijednosti

· LZW - koristi se u gifu i mnogim drugima.

· Deflate - koristi se u gzipu, naprednoj verziji zip-a, i kao dio procesa kompresije PNG-a.

· LZMA - koristi se u 7-zip.

v Audio kompresija:

· Apple Lossless - ALAC (Apple Lossless Audio Codec);

· Audio Lossless Coding - poznato i kao MPEG-4 ALS;

· Izravni prijenos toka - DST;

· Besplatni audio kodek bez gubitaka - FLAC;

v Kompresija grafike

· ABO - Adaptive Binary Optimization;

· GIF - (samo bez gubitaka za slike koje sadrže manje od 256 boja);

· JBIG2 - (sa ili bez crno-bijelih slika s gubitkom);

· JPEG-LS - (standard kompresije bez / gotovo bez gubitaka);

· JPEG 2000 - (uključuje kompresiju bez gubitaka; također testirao Sunil Kumar, profesor na Državnom sveučilištu San Diego);

· PGF - progresivna grafička datoteka (kompresija bez gubitaka/bez gubitaka);

· PNG - prijenosna mrežna grafika;

· WMPhoto - (uključujući metodu kompresije bez gubitaka);

v Video kompresija

· Kodek za animaciju;

· CamStudio Video Codec;

6. Pohrana informacija (tekst, slika, zvuk)

Informacije se pohranjuju pomoću određenih medija za pohranu. Osoba pohranjuje svoje znanje ili u vlastito pamćenje ili na neko vanjski mediji.

U početku je osoba koristila svoje pamćenje za pohranu i akumulaciju informacija - jednostavno je pamtila primljene informacije i sjećala ih se neko vrijeme. Postupno su ljudi došli do zaključka da ova metoda pohranjivanja informacija ima niz nedostataka. Uvidjevši nepouzdanost ovakvog načina pohranjivanja i gomilanja informacija, čovjek je izumom pisma počeo bilježiti podatke u obliku crteža – na papirusima, a kasnije iu knjigama. Tada su se kao elementi pojavile fotografske ploče i uređaji za snimanje zvuka vanjska memorija video i audio informacije, bilježnice, priručnici, enciklopedije itd. koje nazivamo vanjska pohrana podaci. Do sredine 20. stoljeća izumljeno je računalo. Odmah se postavilo pitanje kako će pohraniti podatke.

Informacijski medij može biti različite prirode: papir. Mehanički, magnetski, električni. Podaci zabilježeni na mediju mogu biti u obliku simbola koji je razumljiv ljudima ili u kodiranom obliku. Informacije za magnetofon, video rekorder, filmsku kameru - zvuk pohranjeni na posebnim uređajima: audio kasete, video kasete, filmovi. Korištenje mikrofona i drugih uređaja audio informacije snimljen na magnetsku traku.

U računalima su se počeli koristiti sljedeći uređaji za snimanje i čitanje informacija: čitači bušenih kartica; Pogoni magnetske vrpce, pogoni za diskete (disk) i tvrdi (tvrdi disk) magnetski diskovi; pogoni za kompaktne diskove (CD-ROM-ovi) i drugi suvremeniji uređaji za spremanje i čuvanje informacija.

Bibliografija

1. Savezni zakon Ruska Federacija“O informacijama, informatizaciji i zaštiti informacija” od 27. srpnja 2006. br. 149-FZ.

2. Levin A.Sh. Samoučni priručnik za rad na računalu. - St. Petersburg: Peter, 2006. - 655 str.

3. Romanova N.I. Osnove informatike. - St. Petersburg: Politehnika, 2004. -224 str.

4. Simonovich S.V. Informatika. Osnovni tečaj. - St. Petersburg: Peter, 2008 -640 str.

Objavljeno na Allbest.ru

Slični dokumenti

    Vrste kompresije podataka: s gubitkom i bez gubitka. Kompresija s minimalnom redundancijom. Kodiranje metodom Shannon-Fano. Testiranje programa za kompresiju bmp i xls datoteka. Provedba na Delphi algoritam Shannonova i Huffmanova kompresija.

    kolegij, dodan 26.01.2011

    Podjela i glavne značajke metode kompresije podataka. Izračun kompresijskih omjera i ocjena njihove učinkovitosti. Algoritmi polinomske, ekstrapolacijske i interpolacijske metode kompresije i njihova usporedba. Optimalno linearno predviđanje.

    kolegij, dodan 17.03.2011

    Arhiviranje i kompresija kao metode kompresije slike. Algoritmi za kompresiju podataka. pomagala, koji se koriste za smanjenje veličine datoteka: promijeniti model u boji slike, mijenjanje rezolucije rasterske datoteke, ponovno uzorkovanje.

    prezentacija, dodano 01.06.2014

    Proučavanje glavnih vrsta programa za arhiviranje. Kompresija datoteke tijekom arhiviranja. Pokazatelj stupnja kompresije datoteke. Procjena funkcionalnosti najpopularnijih programa za pakiranje. Tehničke značajke procesa kompresije. Metode arhiviranja bez gubitaka.

    sažetak, dodan 05.12.2013

    Otkrivanje svrhe kompresije datoteka i karakterizacija svrhe arhivara kao programa koji pakiraju i raspakiraju datoteke u arhivu radi lakšeg prijenosa i pohrane. Glavne vrste arhivara: datoteka, softver, disk. Metoda kompresije bez gubitaka.

    prezentacija, dodano 05.04.2011

    Osnovni pojmovi i metode kompresije podataka. Pretvaranje informacija pohranjenih u datoteci u oblik koji smanjuje redundanciju u njihovoj prezentaciji. Metode statističke i rječničke kompresije. Programi za arhiviranje, osnovne značajke WinRAR-a.

    test, dodan 03/12/2011

    Kratki osvrt osnovne teorije kompresije. Koncepti ideja i njihova realizacija. Kompresija podataka korištenjem Burrows-Wheelerove transformacije. Huffmanov statički algoritam. Lokalno prilagodljivi algoritam kompresije. Ziv-Lempelov algoritam (Welch) i Shannon-Fano metoda.

    praktični rad, dodano 24.04.2014

    Entropija i količina informacija. Kombinatorna, probabilistička i algoritamska procjena količine informacija. Modeliranje i kodiranje. Neki algoritmi za kompresiju podataka. Algoritam aritmetičko kodiranje. Inkrementalni prijenos i prijem.

    kolegij, dodan 28.07.2009

    Korištenje algoritama koji osiguravaju visok stupanj kompresije za povećanje brzine prijenosa podataka preko komunikacijskih kanala. Značajke i metode nalaženja dekompozicije singularne vrijednosti. Razvoj programa koji implementira kompresiju slike pomoću SVD kompresije.

    diplomski rad, dodan 13.10.2015

    Programi za izradu arhiva. Učinkovitost kompresije podataka kao najvažnija karakteristika arhivari. Osnovne metode kompresije podataka. Karakteristike programa za pakiranje tekstova i WinRar programi. Raspakiranje datoteka, pakiranje datoteka i mapa u zajedničku arhivu.

"Kompresija podataka"

Karakteristična značajka većine tipova podataka je njihova redundantnost. Stupanj redundancije podataka ovisi o vrsti podataka. Na primjer, za video podatke stupanj zalihosti je nekoliko puta veći nego za grafičke podatke, a stupanj zalihosti grafičkih podataka, pak, veći je od stupnja zalihosti tekstualnih podataka. Drugi čimbenik koji utječe na stupanj redundancije je usvojeni sustav kodiranja. Primjer sustava kodiranja bili bi obični jezici komunikacije, koji nisu ništa drugo nego sustavi kodiranja koncepata i ideja za izražavanje misli. Tako je utvrđeno da kodiranje tekstualnih podataka korištenjem ruskog jezika daje u prosjeku redundanciju koja je 20-25% veća od kodiranja sličnih podataka korištenjem engleskog jezika.

Za ljude se redundancija podataka često povezuje s kvalitetom informacija, budući da redundancija nastoji poboljšati razumljivost i percepciju informacija. Međutim, kada je u pitanju pohranjivanje i prijenos informacija pomoću računalne tehnologije, redundancija ima negativnu ulogu, jer dovodi do povećanja troškova pohranjivanja i prijenosa informacija. Ovaj problem postaje posebno relevantan u slučaju obrade velikih količina informacija s beznačajnim količinama medija za pohranu. S tim u vezi stalno se javlja problem redundantnosti ili kompresije podataka. Ako se metode kompresije podataka primjenjuju na gotove datoteke, tada se često umjesto izraza “kompresija podataka” koristi termin “arhiviranje podataka”; komprimirana verzija podataka naziva se arhiva, a softver koji implementira metode kompresije nazivaju se arhivisti.

Ovisno o objektu u kojem se nalaze podaci koji se komprimiraju:

    Kompresija (arhiviranje) datoteka: koristi se za smanjivanje veličine datoteka prilikom njihove pripreme za prijenos putem komunikacijskih kanala ili za prijenos na vanjske medije malog kapaciteta;

    Kompresija (arhiviranje) mapa: koristi se kao sredstvo za smanjenje volumena mapa prije dugotrajne pohrane, na primjer, tijekom sigurnosnog kopiranja;

    Kompresija diska (sažimanje): koristi se za povećanje učinkovitosti korištenja diskovnog prostora kompresijom podataka prilikom njihovog pisanja na medij za pohranu (obično pomoću operativnog sustava).

Postoji mnogo praktičnih algoritama za kompresiju podataka, ali svi se temelje na tri teorijska načina za smanjenje redundantnosti podataka. Prvi način je promjena sadržaja podataka, drugi je promjena strukture podataka, a treći je promjena strukture i sadržaja podataka u isto vrijeme.

Ako kompresija podataka promijeni njihov sadržaj, tada se poziva metoda kompresije nepovratan, odnosno prilikom vraćanja (dearhiviranja) podataka iz arhive podaci se ne vraćaju u potpunosti. Takve se metode često nazivaju metodama kompresije s kontrolom gubitaka. Jasno je da se ove metode mogu koristiti samo za tipove podataka kod kojih gubitak dijela sadržaja ne dovodi do značajnog iskrivljenja informacija. Ove vrste podataka uključuju video, audio i grafičke podatke. Metode kompresije s kontroliranim gubitkom daju znatno veće stope kompresije, ali se ne mogu primijeniti na tekstualne podatke. Primjeri formata kompresije s gubitkom uključuju:

    JPEG - za grafičke podatke;

    MPG - za video podatke;

    MP3 - za audio podatke.

Ako kompresija podataka mijenja samo strukturu podataka, tada se poziva metoda kompresije reverzibilan. U tom slučaju moguće je potpuno vratiti podatke iz arhive. Reverzibilne metode kompresije mogu se primijeniti na bilo koju vrstu podataka, ali pružaju manju kompresiju od nepovratnih metoda kompresije. Primjeri formata kompresije bez gubitaka:

    GIF, TIFF - za grafičke podatke;

    AVI - za video podatke;

    ZIP, ARJ, RAR, CAB, LH - za proizvoljne tipove podataka.

Postoji mnogo različitih praktičnih metoda kompresije bez gubitaka, koje obično imaju različitu učinkovitost za različite vrste podataka i različite količine. Međutim, te se metode temelje na tri teorijska algoritma:

    RLE (Run Length Encoding) algoritam;

    algoritmi skupine KWE (KeyWord Encoding);

    Huffmanov algoritam.

RLE algoritam

RLE algoritam temelji se na ideji identificiranja ponovljenih nizova podataka i njihove zamjene jednostavnijom strukturom koja specificira šifru podataka i faktor ponavljanja. Na primjer, neka je dan sljedeći niz podataka koji je podložan kompresiji:

1 1 1 1 2 2 3 4 4 4

RLE algoritam predlaže njegovu zamjenu sljedećom strukturom: 1 4 2 2 3 1 4 3, gdje je prvi broj svakog para brojeva šifra podataka, a drugi je faktor ponavljanja. Ako se 1 bajt dodijeli za pohranu svakog elementa podataka ulazne sekvence, tada će cijela sekvenca zauzeti 10 bajtova memorije, dok će izlazna sekvenca (komprimirana verzija) zauzeti 8 bajtova memorije. Omjer kompresije, koji karakterizira stupanj kompresije, može se izračunati pomoću formule:

gdje je Vx količina memorije potrebna za pohranjivanje izlaznog (rezultirajućeg) niza podataka, Vn je ulazni niz podataka.

Što je niži omjer kompresije, to učinkovitija metoda kompresija. Jasno je da će RLE algoritam dati bolji učinak kompresije kada je niz podataka koji se ponavlja dulji. U slučaju gore navedenog primjera, ako ulazni niz izgleda ovako: 1 1 1 1 1 1 3 4 4 4, tada će omjer kompresije biti 60%. S tim u vezi, postiže se veća učinkovitost RLE algoritma kod sažimanja grafičkih podataka (osobito za monokromatske slike).

Algoritmi KWE grupe

Algoritam kompresije ključnih riječi temelji se na principu kodiranja leksičkih jedinica u skupine bajtova fiksne duljine. Primjer leksičke jedinice bila bi obična riječ. U praksi se nizovi simbola koji se ponavljaju odabiru da igraju ulogu leksičkih jedinica i kodiraju se nizom simbola (kodom) kraće duljine. Rezultat kodiranja stavlja se u tablicu, tvoreći takozvani rječnik.

Postoji dosta implementacija ovog algoritma, među kojima su najčešći Lempel-Ziv algoritam (LZ algoritam) i njegova modifikacija, Lempel-Ziv-Welch algoritam (LZW algoritam). Rječnik u ovaj algoritam je potencijalno beskonačan popis fraza. Algoritam počinje s gotovo praznim rječnikom koji sadrži samo jedan kodirani niz, takozvani NULL niz. Prilikom čitanja sljedećeg znaka niza ulaznih podataka, on se dodaje trenutnom retku. Proces se nastavlja sve dok trenutni redak odgovara nekom izrazu iz rječnika. Ali prije ili kasnije trenutni redak prestaje odgovarati nekoj frazi iz rječnika. Na mjestu gdje trenutni redak predstavlja zadnje podudaranje iz rječnika plus upravo pročitani znak poruke, koder proizvodi kod koji se sastoji od indeksa podudaranja i sljedećeg znaka koji je prekinuo podudaranje retka. Nova fraza, koja se sastoji od indeksa podudaranja i sljedećeg znaka, dodaje se u rječnik. Sljedeći put kada se ova fraza pojavi u poruci, može se koristiti za konstrukciju duže fraze, što povećava stupanj kompresije informacija.

LZW algoritam izgrađen je oko tablice fraza (rječnika) koja zamjenjuje znakovne nizove komprimirane poruke u kodove fiksne duljine. Tablica ima takozvano svojstvo unaprijed, odnosno za svaki izraz u rječniku, koji se sastoji od određenog izraza w i simbola K, u rječnik se upisuje i izraz w. Ako su svi dijelovi rječnika potpuno ispunjeni, kodiranje prestaje biti prilagodljivo (kodiranje se odvija na temelju izraza koji već postoje u rječniku).

Algoritmi kompresije ove skupine najučinkovitiji su za velike tekstualne podatke, a neučinkoviti su za male datoteke (zbog potrebe spremanja rječnika).

Huffmanov algoritam

Huffmanov algoritam temelji se na ideji kodiranja grupe bitova. Najprije se provodi frekvencijska analiza niza ulaznih podataka, odnosno utvrđuje se učestalost pojavljivanja svakog znaka koji se u njemu nalazi. Nakon toga se simboli poredaju prema opadajućoj učestalosti pojavljivanja.

Osnovna ideja je sljedeća: što se znak češće pojavljuje, to je manje bitova kodiran. Rezultat kodiranja upisuje se u rječnik potreban za dekodiranje. Pogledajmo jednostavan primjer koji ilustrira kako radi Huffmanov algoritam.

Neka je dan tekst u kojem se slovo "A" pojavljuje 10 puta, slovo "B" - 8 puta, "C" - 6 puta, "D" - 5 puta, "E" i "F" - po 4 puta. . Tada je jedna od mogućih opcija kodiranja pomoću Huffmanovog algoritma prikazana u tablici 1.

Stol 1.

Učestalost pojavljivanja

Bitni kod

Kao što je vidljivo iz tablice 1, veličina ulaznog teksta prije kompresije je 37 bajtova, dok je nakon kompresije 93 bita, odnosno oko 12 bajtova (ne računajući duljinu rječnika). Omjer kompresije je 32%. Huffmanov algoritam je univerzalan; može se koristiti za komprimiranje podataka bilo koje vrste, ali je neučinkovit za male datoteke (zbog potrebe spremanja rječnika).

U praksi softver za kompresiju podataka sintetizira ova tri "čista" algoritma, jer njihova učinkovitost ovisi o vrsti i količini podataka. Tablica 2 prikazuje uobičajene formate kompresije i odgovarajuće programe za arhiviranje koji se koriste u praksi.

Tablica 2.

Format kompresije

Operativni sustav MS DOS

Windows operativni sustav

Program za arhiviranje

Program za raspakiranje

Program za arhiviranje

Program za raspakiranje

Osim toga, moderni arhivari pružaju korisniku cijeli niz usluga za rad s arhivama, od kojih su glavne:

    stvaranje nove arhive;

    dodavanje datoteka u postojeću arhivu;

    raspakiranje datoteka iz arhive;

    stvaranje samoraspakirajućih arhiva;

    stvaranje distribuiranih arhiva fiksne veličine za male medije za pohranu podataka;

    zaštita arhiva lozinkama od neovlaštenog pristupa;

    pregledavanje sadržaja datoteka različitih formata bez prethodnog raspakiranja;

    traženje datoteka i podataka unutar arhive;

    provjera virusa u arhivi prije raspakiranja;

    izbor i podešavanje omjera kompresije.

Kontrolna pitanja

1. Koji čimbenici utječu na stupanj redundantnosti podataka? 2. Što je arhiva? Koji se softverski alati nazivaju arhivatorima? 3. Zašto se metode kompresije koje mijenjaju sadržaj podataka nazivaju nepovratnima? 4. Navedite primjere formata kompresije s gubitkom. 5. Koja je prednost reverzibilnih metoda kompresije u odnosu na ireverzibilne? Što je s nedostatkom? 6. Kakav je odnos između omjera kompresije i učinkovitosti metode kompresije? 7. Koja je glavna ideja RLE algoritma? 8. Koja je glavna ideja algoritama KWE grupe? 9. Koja je glavna ideja Huffmanovog algoritma? 10. Koje programe za arhiviranje poznajete? Ukratko ih opišite.

    Informatika. Osnovni tečaj. / Ed. S.V.Simonovič. - Sankt Peterburg, 2000

    A.P. Miklyaev, IBM PC User's Handbook 3rd edition M.:, "Solon-R", 2000, 720 str.

    Simonovich S.V., Evseev G.A., Murakhovsky V.I. Kupili ste računalo: Potpuni vodič za početnike s pitanjima i odgovorima. - M.: AST-PRESS BOOK; Infocom-Press, 2001.- 544 str.: ilustr. (1000 savjeta).

    Kovtanyuk Yu.S., Solovyan S.V. Priručnik za samostalnu poduku za rad na osobno računalo- K.:Junior, 2001.- 560 str., ilustr.

Moj mentor i ja pripremamo malu monografiju o obradi slike. Odlučio sam habra zajednici predstaviti poglavlje posvećeno algoritmima za kompresiju slike. Budući da je teško cijelo poglavlje smjestiti u jedan post, odlučio sam ga podijeliti na tri posta:
1. Metode kompresije podataka;
2. Kompresija slike bez gubitaka;
3. Kompresija slike s gubitkom.
U nastavku možete pročitati prvu objavu iz serije.

Trenutno postoji velik broj algoritama za kompresiju bez gubitaka, koji se mogu podijeliti u dvije velike skupine:
1. Algoritmi toka i rječnika. Ova skupina uključuje algoritme obitelji RLE (run-length encoding), LZ* itd. Značajka svih algoritama u ovoj skupini je da se kod kodiranja ne koriste informacije o frekvencijama simbola u poruci, već ali informacije o sekvencama na koje smo ranije nailazili.
2. Algoritmi za statističku (entropijsku) kompresiju. Ova skupina algoritama sažima informacije iskorištavanjem prednosti nepravilnih učestalosti s kojima se različiti znakovi pojavljuju u poruci. Algoritmi u ovoj skupini uključuju aritmetičke algoritme i algoritme za kodiranje prefiksa (koristeći Shannon-Fanno, Huffman, sekantno stablo).
U zasebna grupa Mogu se razlikovati algoritmi za pretvaranje informacija. Algoritmi ove skupine ne komprimiraju izravno informacije, ali njihova uporaba uvelike pojednostavljuje daljnju kompresiju korištenjem stream, rječnika i entropijskih algoritama.

Algoritmi toka i rječnika

Kodiranje dužine izvođenja

Run-Length Encoding (RLE) jedan je od najjednostavnijih i najčešćih algoritama za kompresiju podataka. U ovom algoritmu niz znakova koji se ponavljaju zamjenjuje se znakom i brojem ponavljanja.
Na primjer, niz "AAAAAA", koji zahtijeva 5 bajtova za pohranjivanje (pod pretpostavkom da je bajt dodijeljen za pohranu jednog znaka), može se zamijeniti s "5A", koji se sastoji od dva bajta. Očito je da je ovaj algoritam učinkovitiji što je serija ponavljanja duža.

Glavni nedostatak ovog algoritma je njegova izuzetno niska učinkovitost na nizovima znakova koji se ne ponavljaju. Na primjer, ako uzmemo u obzir niz "ABABAB" (6 bajtova), tada će se nakon primjene RLE algoritma pretvoriti u "1A1B1A1B1A1B" (12 bajtova). Postoje različite metode za rješavanje problema znakova koji se ne ponavljaju.

Najviše jednostavna metoda je sljedeća modifikacija: bajt koji kodira broj ponavljanja mora pohraniti informacije ne samo o broju ponavljanja, već io njihovoj prisutnosti. Ako je prvi bit 1, sljedećih 7 bitova označava broj ponavljanja odgovarajućeg znaka, a ako je prvi bit 0, sljedećih 7 bitova označava broj znakova koji se moraju uzeti bez ponavljanja. Ako kodiramo "ABABAB" pomoću ove izmjene, dobit ćemo "-6ABABAB" (7 bajtova). Očito je da predložena tehnika može značajno povećati učinkovitost RLE algoritma na nizovima znakova koji se ne ponavljaju. Implementacija predloženog pristupa prikazana je u popisu 1:

  1. tip
  2. funkcija RLEEncode(InMsg: ShortString) : TRLEEncodedString;
  3. MatchFl: booleov;
  4. MatchCount: shortint ;
  5. EncodedString: TRLEEncodedString;
  6. N, i: bajt;
  7. početi
  8. N:=0;
  9. SetLength(EncodedString, 2 * length(InMsg) ) ;
  10. dok je duljina(InMsg) >= 1 do
  11. početi
  12. MatchFl : = (length(InMsg) > 1 ) and (InMsg[ 1 ] = InMsg[ 2 ] ) ;
  13. Broj podudaranja: = 1;
  14. dok (MatchCount<= 126 ) and (MatchCount < length(InMsg) ) and ((InMsg[ MatchCount] = InMsg[ MatchCount + 1 ] ) = MatchFl) do
  15. Broj podudaranja: = Broj podudaranja + 1;
  16. ako MatchFl tada
  17. početi
  18. N:=N+2;
  19. EncodedString[ N - 2 ] : = Broj podudaranja + 128 ;
  20. EncodedString[N-1]:=ord(InMsg[1]);
  21. drugo
  22. početi
  23. ako MatchCount<>duljina(InMsg) zatim
  24. Broj podudaranja: = Broj podudaranja - 1;
  25. N : = N + 1 + Broj podudaranja;
  26. EncodedString[ N - 1 - MatchCount] : = - MatchCount + 128 ;
  27. za i : = 1 do MatchCount do
  28. EncodedString[ N - 1 - MatchCount + i] : = ord (InMsg[ i] ) ;
  29. kraj ;
  30. brisanje(InMsg, 1, MatchCount) ;
  31. kraj ;
  32. Postavi duljinu (kodirani niz, N) ;
  33. RLEEncode := EncodedString;
  34. kraj ;

Dekodiranje komprimirane poruke vrlo je jednostavno i svodi se na jedan prolaz kroz komprimiranu poruku, pogledajte Ispis 2:
  1. tip
  2. TRLEEncodedString = niz bajtova;
  3. funkcija RLEDecode(InMsg: TRLEEncodedString) : ShortString;
  4. RepeatCount: shortint ;
  5. i, j: riječ ;
  6. OutMsg: ShortString;
  7. početi
  8. OutMsg : = "" ;
  9. i := 0 ;
  10. dok ja< length(InMsg) do
  11. početi
  12. Broj ponavljanja : = InMsg[ i] - 128 ;
  13. i : = i + 1 ;
  14. ako RepeatCount< 0 then
  15. početi
  16. Broj ponavljanja := abs (Broj ponavljanja) ;
  17. za j : = od i do i + Broj ponavljanja - 1 do
  18. OutMsg : = OutMsg + chr (InMsg[ j] ) ;
  19. i : = i + Broj ponavljanja;
  20. drugo
  21. početi
  22. za j : = 1 do RepeatCount učiniti
  23. OutMsg : = OutMsg + chr (InMsg[ i] ) ;
  24. i : = i + 1 ;
  25. kraj ;
  26. kraj ;
  27. RLEDecode := OutMsg;
  28. kraj ;

Druga metoda za povećanje učinkovitosti RLE algoritma je korištenje algoritama za transformaciju informacija koji ne komprimiraju izravno podatke, već ih dovode u oblik pogodniji za kompresiju. Kao primjer takvog algoritma razmotrit ćemo BWT permutaciju, nazvanu po izumiteljima Burrows-Wheelerove transformacije. Ovom permutacijom se ne mijenjaju sami znakovi, već se samo mijenja njihov redoslijed u nizu, dok se ponovljeni podnizovi nakon primjene permutacije skupljaju u guste skupine, koje se puno bolje komprimiraju korištenjem RLE algoritma. Izravna BWT pretvorba svodi se na sljedeće korake:
1. Dodavanje originalnom nizu posebnog znaka za kraj retka koji se ne pojavljuje nigdje drugdje;
2. Dobivanje svih cikličkih permutacija izvornog niza;
3. Razvrstavanje primljenih nizova po leksikografskom redu;
4. Vraćanje posljednjeg stupca rezultirajuće matrice.
Implementacija ovog algoritma prikazana je u ispisu 3.
  1. konst
  2. EOMsg = "|" ;
  3. funkcija BWTEncode(InMsg: ShortString) : ShortString;
  4. OutMsg: ShortString;
  5. LastChar:ANSIChar;
  6. N, i: riječ;
  7. početi
  8. InMsg : = InMsg + EOMsg;
  9. N : = duljina (InMsg) ;
  10. ShiftTable[ 1 ] : = InMsg;
  11. za i : = 2 do N do
  12. početi
  13. LastChar : = InMsg[ N] ;
  14. InMsg : = LastChar + copy(InMsg, 1 , N - 1 ) ;
  15. ShiftTable[ i] : = InMsg;
  16. kraj ;
  17. Sortiraj(ShiftTablica) ;
  18. OutMsg : = "" ;
  19. za i : = 1 do N do
  20. OutMsg : = OutMsg + ShiftTable[ i] [ N] ;
  21. BWTEncode := OutMsg;
  22. kraj ;

Ovu transformaciju najlakše ćete objasniti na konkretnom primjeru. Uzmimo niz "PINEAPPLE" i dogovorimo se da kraj znaka niza bude znak "|". Sve cikličke permutacije ovog niza i rezultat njihova leksikografskog sortiranja dani su u tablici. 1.

Oni. Rezultat izravne pretvorbe je niz "|NNAAAC". Lako je vidjeti da je ovaj niz komprimiran mnogo bolje od originalnog RLE algoritmom, jer sadrži duge podnizove ponovljenih slova.
Sličan učinak može se postići i drugim transformacijama, no prednost BWT transformacije je što je reverzibilna, iako je obrnuta transformacija kompliciranija od izravne. Da biste vratili izvorni niz, morate izvršiti sljedeće korake:
Napravite praznu matricu veličine n*n, gdje je n broj znakova u kodiranoj poruci;
Ispunite krajnji desni prazan stupac kodiranom porukom;
Poredaj retke tablice leksikografskim redom;
Ponavljajte korake 2-3 sve dok ima praznih stupaca;
Vrati niz koji završava znakom za kraj retka.

Implementacija obrnute konverzije na prvi pogled nije teška, a jedna od mogućnosti implementacije prikazana je u Listingu 4.

  1. konst
  2. EOMsg = "|" ;
  3. funkcija BWTDecode(InMsg: ShortString) : ShortString;
  4. OutMsg: ShortString;
  5. ShiftTable: polje ShortString;
  6. N, i, j: riječ ;
  7. početi
  8. OutMsg : = "" ;
  9. N : = duljina (InMsg) ;
  10. Postavi duljinu(ShiftTable, N + 1) ;
  11. za i : = 0 do N do
  12. ShiftTable[ i] : = "" ;
  13. za i : = 1 do N do
  14. početi
  15. za j := 1 do N do
  16. ShiftTable[ j] : = InMsg[ j] + ShiftTable[ j] ;
  17. Sortiraj(ShiftTablica) ;
  18. kraj ;
  19. za i : = 1 do N do
  20. if ShiftTable[ i] [ N] = EOMsg then
  21. OutMsg : = ShiftTable[ i] ;
  22. brisanje(OutMsg, N, 1 ) ;
  23. BWTDecode := OutMsg;
  24. kraj ;

Ali u praksi učinkovitost ovisi o odabranom algoritmu sortiranja. Trivijalni algoritmi s kvadratnom složenošću očito će imati vrlo negativan utjecaj na performanse, stoga se preporučuje korištenje učinkovitih algoritama.

Nakon sortiranja tablice dobivene u sedmom koraku potrebno je odabrati red iz tablice koji završava znakom “|”. Lako je vidjeti da je ovo jedina linija. Da. Proučili smo BWT transformaciju na konkretnom primjeru.

Ukratko, možemo reći da je glavna prednost RLE skupine algoritama jednostavnost i brzina rada (uključujući brzinu dekodiranja), a glavni nedostatak je neučinkovitost na skupovima znakova koji se ne ponavljaju. Korištenje posebnih permutacija povećava učinkovitost algoritma, ali također uvelike povećava vrijeme rada (osobito dekodiranja).

Kompresija rječnika (LZ algoritmi)

Grupa rječničkih algoritama, za razliku od algoritama grupe RLE, kodira ne broj ponavljanja znakova, već prethodno susrećene nizove znakova. Dok algoritmi koji se razmatraju rade, dinamički se kreira tablica s popisom već pronađenih sekvenci i njihovim odgovarajućim kodovima. Ova tablica se često naziva rječnik, a odgovarajuća grupa algoritama se naziva rječnik.

Najjednostavnija verzija algoritma rječnika opisana je u nastavku:
Inicijalizirati rječnik sa svim znakovima koji se pojavljuju u ulaznom nizu;
Pronađite u rječniku najduži niz (S) koji odgovara početku kodirane poruke;
Ispisati kod pronađene sekvence i ukloniti ga s početka kodirane poruke;
Ako se ne dosegne kraj poruke, pročitajte sljedeći znak i dodajte Sc u rječnik, prijeđite na korak 2. U suprotnom, izađite.

Na primjer, novoinicijalizirani rječnik za izraz "CUCKOOKOOKUSHONKOOKUPILAKAHOOD" prikazan je u tablici. 3:

Tijekom procesa kompresije, rječnik će se nadopuniti nizovima koji se nalaze u poruci. Postupak ažuriranja rječnika dan je u tablici. 4.

Pri opisu algoritma namjerno je izostavljen opis situacije kada je rječnik potpuno popunjen. Ovisno o varijanti algoritma, moguće je različito ponašanje: potpuno ili djelomično brisanje rječnika, zaustavljanje popunjavanja rječnika ili proširenje rječnika s odgovarajućim povećanjem kapaciteta koda. Svaki od ovih pristupa ima određene nedostatke. Na primjer, zaustavljanje nadopunjavanja rječnika može dovesti do situacije u kojoj rječnik pohranjuje nizove koji se pojavljuju na početku niza koji se sažima, ali se ne pojavljuju kasnije. U isto vrijeme, čišćenje rječnika može dovesti do uklanjanja čestih nizova. Većina korištenih implementacija prilikom popunjavanja rječnika počinje pratiti razinu kompresije, a kada ona padne ispod određene razine, rječnik se ponovno gradi. Zatim ćemo razmotriti najjednostavniju implementaciju koja zaustavlja ažuriranje rječnika kada je pun.

Prvo, definirajmo rječnik kao zapis koji pohranjuje ne samo podnizove na koje naiđemo, već i broj podnizova pohranjenih u rječniku:

Prethodno pronađeni podnizovi pohranjeni su u nizu Words, a njihov kod su brojevi podsekvenci u ovom nizu.
Također ćemo definirati funkcije pretraživanja u rječniku i dodavanja u rječnik:

  1. konst
  2. MAX_DICT_LENGTH = 256;
  3. funkcija FindInDict(D: TDictionary; str: ShortString) : cijeli broj ;
  4. r: cijeli broj;
  5. i:cijeli broj;
  6. fl:boolean;
  7. početi
  8. r: = - 1;
  9. if D. WordCount > 0 tada
  10. početi
  11. i := D. Broj riječi ;
  12. fl := lažno ;
  13. dok (ne fl) i (i >= 0 ) rade
  14. početi
  15. i : = i - 1 ;
  16. fl : = D. Riječi [ i] = str;
  17. kraj ;
  18. kraj ;
  19. ako fl onda
  20. r := i;
  21. FindInDict: = r;
  22. kraj ;
  23. procedure AddToDict(var D: TDictionary; str: ShortString) ;
  24. početi
  25. ako D. WordCount< MAX_DICT_LENGTH then
  26. početi
  27. D. Broj riječi : = D. Broj riječi + 1 ;
  28. Postavi duljinu(D. Riječi, D. Broj riječi) ;
  29. D. Riječi [ D. Broj riječi - 1 ] : = str;
  30. kraj ;
  31. kraj ;

Korištenjem ovih funkcija, proces kodiranja prema opisanom algoritmu može se implementirati na sljedeći način:
  1. funkcija LZWEncode(InMsg: ShortString) : TEncodedString;
  2. OutMsg: TEncodedString;
  3. tmpstr: kratki niz;
  4. D: TRječnik;
  5. i, N: bajt;
  6. početi
  7. SetLength(OutMsg, length(InMsg) ) ;
  8. N:=0;
  9. InitDict(D) ;
  10. dok je duljina(InMsg) > 0 do
  11. početi
  12. tmpstr : = InMsg[ 1 ] ;
  13. dok (FindInDict(D, tmpstr) >= 0 ) i (length(InMsg) > length(tmpstr) do
  14. tmpstr : = tmpstr + InMsg[ duljina(tmpstr) + 1 ] ;
  15. if FindInDict(D, tmpstr)< 0 then
  16. brisanje(tmpstr, dužina(tmpstr), 1) ;
  17. OutMsg[ N] : = FindInDict(D, tmpstr) ;
  18. N:=N+1;
  19. brisanje(InMsg, 1, duljina(tmpstr)) ;
  20. ako je duljina (InMsg) > 0 tada
  21. AddToDict(D, tmpstr + InMsg[ 1 ] ) ;
  22. kraj ;
  23. PostaviDuljina(OutMsg, N) ;
  24. LZWEncode := OutMsg;
  25. kraj ;

Rezultat kodiranja bit će broj riječi u rječniku.
Proces dekodiranja se svodi na direktno dekodiranje kodova, te nema potrebe za prijenosom kreiranog rječnika, dovoljno je da se tijekom dekodiranja rječnik inicijalizira na isti način kao i kod kodiranja. Tada će se rječnik potpuno obnoviti izravno tijekom procesa dekodiranja ulančavanjem prethodnog podniza i trenutnog simbola.

Jedini problem je moguć u sljedećoj situaciji: kada je potrebno dekodirati podsekvencu koja još nije u rječniku. Lako je vidjeti da je to moguće samo kada je potrebno izdvojiti podniz koji treba dodati u trenutnom koraku. To znači da podniz zadovoljava cSc obrazac, tj. počinje i završava istim likom. U ovom slučaju, cS je podniz dodan u prethodnom koraku. Razmatrana situacija je jedina kada je potrebno dekodirati liniju koja još nije dodana. Uzimajući u obzir gore navedeno, možemo predložiti sljedeću opciju za dekodiranje komprimiranog niza:

  1. funkcija LZWDecode(InMsg: TEncodedString) : ShortString;
  2. D: TRječnik;
  3. OutMsg, tmpstr: kratki niz;
  4. i: bajt;
  5. početi
  6. OutMsg : = "" ;
  7. tmpstr : = "" ;
  8. InitDict(D) ;
  9. za i : = 0 do length(InMsg) - 1 do
  10. početi
  11. if InMsg[ i] >= D. WordCount then
  12. tmpstr : = D. Riječi [ InMsg[ i - 1 ] ] + D. Riječi [ InMsg[ i - 1 ] ] [ 1 ]
  13. drugo
  14. tmpstr : = D. Riječi [ InMsg[ i] ] ;
  15. OutMsg : = OutMsg + tmpstr;
  16. ako je i > 0 tada
  17. AddToDict(D, D. Words [ InMsg[ i - 1 ] ] + tmpstr[ 1 ] );
  18. kraj ;
  19. LZWDecode := OutMsg;
  20. kraj ;

Prednosti rječničkih algoritama uključuju njihovu veću učinkovitost kompresije u usporedbi s RLE. Međutim, to se mora razumjeti stvarna upotreba Ovi algoritmi su povezani s nekim poteškoćama u implementaciji.

Entropijsko kodiranje

Kodiranje pomoću Shannon-Fano stabala

Shannon-Fano algoritam jedan je od prvih razvijenih algoritama kompresije. Algoritam se temelji na ideji predstavljanja češćih znakova pomoću kraćih kodova. Štoviše, kodovi dobiveni korištenjem Shannon-Fano algoritma imaju svojstvo prefiksa: tj. nijedan kod nije početak bilo kojeg drugog koda. Svojstvo prefiksa osigurava da je kodiranje jedan na jedan. Algoritam za konstrukciju Shannon-Fano kodova prikazan je u nastavku:
1. Podijelite abecedu na dva dijela, ukupne vjerojatnosti simbola u kojima su što bliže jedna drugoj.
2. Dodajte 0 prefiks kodu prvog dijela znakova, dodajte 1 prefiks kodu drugog dijela znakova.
3. Za svaki dio (koji sadrži najmanje dva znaka), rekurzivno izvedite korake 1-3.
Unatoč svojoj relativnoj jednostavnosti, Shannon-Fano algoritam nije bez nedostataka, od kojih je najznačajniji neoptimalno kodiranje. Iako je podjela u svakom koraku optimalna, algoritam ne jamči optimalan rezultat u cjelini. Razmotrite, na primjer, sljedeći redak: "AAAABVGDEZH". Odgovarajuće Shannon-Fano stablo i kodovi dobiveni na njegovoj osnovi prikazani su na slici. 1:

Bez korištenja kodiranja poruka će zauzimati 40 bita (pod uvjetom da je svaki znak kodiran s 4 bita), a korištenjem Shannon-Fano algoritma 4*2+2+4+4+3+3+3=27 bita. Glasnoća poruka smanjena je za 32,5%, no u nastavku ćemo pokazati da se ovaj rezultat može znatno poboljšati.

Kodiranje s Huffmanovim stablima

Huffmanov algoritam kodiranja, razvijen nekoliko godina nakon Shannon-Fano algoritma, također ima svojstvo prefiksnosti, a uz to i dokazanu minimalnu redundanciju, što određuje njegovu izuzetno široku rasprostranjenost. Za dobivanje Huffmanovih kodova koristite sljedeći algoritam:
1. Svi znakovi abecede predstavljeni su kao slobodni čvorovi, a težina čvora proporcionalna je učestalosti znaka u poruci;
2. Iz skupa slobodnih čvorova odabiru se dva čvora s minimalnom težinom i kreira se novi (roditeljski) čvor s težinom jednakom zbroju težina odabranih čvorova;
3. Odabrani čvorovi se uklanjaju sa slobodnog popisa, a nadređeni čvor kreiran na njihovoj osnovi dodaje se ovom popisu;
4. Koraci 2-3 se ponavljaju dok ne bude više od jednog čvora na slobodnom popisu;
5. Na temelju konstruiranog stabla, svakom znaku abecede dodijeljen je prefiks kod;
6. Poruka je kodirana primljenim kodovima.

Razmotrimo isti primjer kao u slučaju Shannon-Fano algoritma. Huffmanovo stablo i kodovi dobiveni za poruku “AAAABVGDEJ” prikazani su na slici. 2:

Lako je izračunati da će volumen kodirane poruke biti 26 bita, što je manje nego u Shannon-Fano algoritmu. Zasebno je vrijedno napomenuti da zbog popularnosti Huffmanovog algoritma trenutno postoji mnogo opcija za Huffmanovo kodiranje, uključujući adaptivno kodiranje, koje ne zahtijeva prijenos frekvencija simbola.
Među nedostacima Huffmanovog algoritma značajan dio čine problemi povezani sa složenošću implementacije. Korištenje simbola realnih varijabli za pohranjivanje frekvencija povezano je s gubitkom preciznosti, pa se u praksi često koriste cjelobrojne varijable, ali budući da Težina roditeljskih čvorova stalno raste, prije ili kasnije dolazi do preljeva. Dakle, usprkos jednostavnosti algoritma, njegova ispravna implementacija ipak može izazvati neke poteškoće, posebno za velike alfabete.

Kodiranje stablima sekantne funkcije

Kodiranje pomoću funkcija sekante je algoritam koji su razvili autori koji vam omogućuje dobivanje prefiks kodova. Algoritam se temelji na ideji konstruiranja stabla, čiji svaki čvor sadrži funkciju sekante. Za detaljniji opis algoritma potrebno je uvesti nekoliko definicija.
Riječ je uređen niz od m bitova (broj m naziva se kapacitet riječi).
Sekantni literal je par oblika znamenka-znamenkasta vrijednost. Na primjer, literal (4,1) znači da bit 4 riječi mora biti 1. Ako je uvjet literala zadovoljen, tada se literal smatra istinitim, inače je netočan.
K-bitni sekans je skup od k literala. Ako su svi literali istiniti, tada je sama funkcija sekante istinita, inače je lažna.

Stablo je konstruirano tako da svaki čvor dijeli abecedu na što bliže dijelove. Na sl. Slika 3 prikazuje primjer sekantnog stabla:

Stablo funkcija sekante u opći slučaj ne jamči optimalno kodiranje, ali pruža izuzetno velika brzina rad zbog jednostavnosti rada u čvorovima.

Aritmetičko kodiranje

Aritmetičko kodiranje jedno je od naj učinkovite načine kompresija informacija. Za razliku od Huffmanovog algoritma, aritmetičko kodiranje omogućuje kodiranje poruka s entropijom manjom od 1 bita po znaku. Jer Većina algoritama aritmetičkog kodiranja zaštićena je patentima; u nastavku će biti opisane samo osnovne ideje.
Pretpostavimo da abeceda koja se koristi sadrži N simbola a_1,…,a_N, s frekvencijama p_1,…,p_N. Tada će algoritam aritmetičkog kodiranja izgledati ovako:
Uzmi ) kao radni poluinterval)

Najbolji članci na temu