Contacte

Care este procesul de comprimare a datelor. Codificarea cu Shannon Fano copaci. Mutați și copiați fișierele și folderele comprimate

Numărul de curs 4. Comprimați informațiile

Principiile informațiilor de compresie

Scopul compresiei datelor este de a oferi o reprezentare compactă a datelor generate de sursă, pentru economisirea și transmiterea lor mai economică prin canale de comunicare.

Să avem o dimensiune a fișierului 1 (unu) megabyte. Trebuie să obținem un fișier mai mic de la ea. Nimic complicat - Lansați arhivatorul, de exemplu, WinZip și duceți la rezultat, de exemplu, un fișier de 600 kilobytes. Unde sunt restul de 424 kilobytes?

Comprimarea informațiilor este una dintre modalitățile de codificare. În general, codurile sunt împărțite în trei grupuri mari - coduri de compresie (coduri eficiente), coduri rezistente la zgomot și coduri criptografice. Codurile concepute pentru a comprima informațiile sunt împărțite, la rândul său, pe coduri fără coduri de pierdere și pierdere. Codificarea fără pierderi implică o recuperare absolută a datelor după decodificare și poate fi utilizată pentru a comprima orice informație. Codarea pierderilor este de obicei un grad mult mai mare de comprimare decât codificarea fără pierderi, dar permite unele deviații de date decodificate din sursă.

Tipuri de compresie

Toate metodele de comprimare a informațiilor pot fi împărțite în două clase mari de non-ciclu: compresie cu pierderi Informații și compresie fără pierdere informație.

Compresie fără pierderea informațiilor.

Aceste metode de compresie sunt interesate mai întâi de noi, deoarece acestea sunt utilizate în transferul de documente și programe text, atunci când emite un client realizat de lucrările efectuate sau când creează copii de rezervă ale informațiilor stocate pe un computer.

Metodele de comprimare a acestei clase nu pot permite pierderea informațiilor, astfel încât acestea se bazează numai pe eliminarea redundanței, iar informațiile au redundanță aproape întotdeauna (deși, dacă cineva nu mai complicat). Dacă nu ar exista o redundanță, nu ar fi nimic de comprimat.

Iată un exemplu simplu. În limba rusă, 33 de scrisori, zece cifre și mai multe despre una și jumătate de duzină de semne de punctuație și alte personaje speciale. Pentru textul înregistrat numai cu scrisori de capital rusesc (Ca și în telegrame și radiograme), ar fi suficient pentru șaizeci de valori diferite. Cu toate acestea, fiecare personaj este, de obicei, codificat de octeți, care conține 8 biți și poate exprima 256 de coduri diferite. Aceasta este prima bază pentru redundanță. Pentru textul nostru "Telegraph", ar fi suficient pentru șase biți pe un simbol.

Iată un alt exemplu. În caracterele internaționale de codare ASCII. Pentru a codifica orice simbol, este dată aceeași cantitate de biți (8), în timp ce toată lumea are mult timp și este bine cunoscut faptul că cele mai frecvente simboluri au sens pentru a codifica mai puține caractere. Deci, de exemplu, în "alfabetul lui Morse", literele "E" și "T", care sunt adesea codificate, sunt codificate de un semn (respectiv, acesta este un punct și o bordură). Și astfel de scrisori rare, ca "Yu" (- - - -) și "C" (- -) sunt codificate de patru semne. Codificarea ineficientă este a doua bază pentru redundanță. Programe care comprimă informațiile pot introduce codificarea lor (diferită pentru diferite fișiere.) și atribuiți un anumit tabel (dicționar) într-un fișier comprimat, de la care programul de despachetare învață cum să acest fișier Acelea sau alte caractere sau grupurile lor sunt codificate. Sunt numite algoritmi bazați pe informații transcodare algoritmi Hafman.

Prezența fragmentelor repetate este a treia bază pentru redundanță. În textele este rară, dar în tabele și în grafic, repetarea codurilor este un fenomen comun. De exemplu, dacă numărul 0 este repetat de douăzeci de ori la rând, nu are sens să puneți douăzeci de octeți zero. În schimb, au pus un zero și coeficient 20. Astfel de algoritmi pe baza repetițiilor dezvăluite sunt numite metodeRLE. (ALERGA. Lungime. Codificare.).

Secvențele mari de repetare ale aceluiași octeți sunt ilustrații grafice deosebit de diferite, dar nu sunt fotografice (există multe puncte de zgomot și puncte învecinate diferă semnificativ în parametrii) și cei care artiștii vopseau culoarea "netedă" ca în filmele animate.

Compresie cu pierderea informațiilor.

Compresia cu pierderea informațiilor înseamnă că după despachetarea arhivei compactate, vom primi un document oarecum diferit de cel de la început. Este clar că cu atât este mai mare gradul de compresie, cu atât este mai mare valoarea pierderii și viceversa.

Desigur, astfel de algoritmi nu se aplică documentelor text, tabele de bază de date și în special pentru programe. Distorsiuni minore într-un text simplu neformat poate fi supraviețuit cumva, dar distorsiunea cel puțin un pic în program va face absolut inoperabilă.

În același timp, există materiale în care merită să sacrificați câteva procente din informație pentru a obține o comprimare a zeci de ori. Acestea includ ilustrații fotografice, imagini video și compoziții muzicale. Pierderea informațiilor în comprimare și despachetarea ulterioară în astfel de materiale este percepută ca apariția unor "zgomot" suplimentar. Dar, deoarece atunci când creând aceste materiale, un anumit "zgomot" este încă prezent, creșterea ușoară nu arată întotdeauna critică, iar câștigurile din dimensiuni oferă o imensă (10-15 ori în muzică, la 20-30 ori în fotografie și imagini video).

Algoritmi de compresie cu pierderea informațiilor includ astfel de algoritmi bine-cunoscuți precum JPEG și MPEG. Algoritmul JPEG este utilizat la comprimarea imaginilor foto. Fișierele grafice comprimate prin această metodă au o extensie JPG. Algoritmii MPEG sunt utilizați atunci când sunt comprimate video și muzică. Aceste fișiere pot avea extensii diferite, în funcție de programul specific, dar cele mai renumite sunt.mpg pentru video i.mrz pentru muzică.

Algoritmi de compresie cu pierderea informațiilor se aplică numai pentru sarcinile de consum. Aceasta înseamnă, de exemplu, că dacă fotografia este transmisă pentru vizualizare și muzică pentru redare, atunci pot fi aplicate astfel de algoritmi. Dacă acestea sunt transmise pentru prelucrare ulterioară, de exemplu, pentru editare, nici o pierdere de informații din materialul sursă nu este inacceptabilă.

Mărimea pierderii permise în comprimare este de obicei posibilă controlul. Acest lucru vă permite să experimentați și să obțineți un raport optim de dimensiune / calitate. În ilustrațiile fotografice destinate redării pe ecran, o pierdere de 5% din informație este de obicei necritică, iar în unele cazuri poate fi permisă 20-25%.

Algoritmi de compresie fără pierderea informațiilor

Cod shannon-fano

Pentru motivarea ulterioară, va fi convenabil să ne supuneți dosar original. Cu textul ca sursă de caractere care apar la ieșirea sa. Nu știm în prealabil ce simbol va fi după cum urmează, dar știm că litera "A" va apărea cu probabilitatea de P1, cu probabilitatea de P2 -Buva "B" etc.

În cel mai simplu caz, vom lua în considerare toate simbolurile de text independente unul de celălalt, adică. Probabilitatea apariției următorului simbol nu depinde de valoarea simbolului anterior. Desigur, pentru un text semnificativ nu este, dar acum avem în vedere o situație foarte simplificată. În acest caz, aprobarea este adevărată "Simbolul poartă mai multe informații, cu atât mai puțin probabil să apară".

Să ne imaginăm textul, alfabetul constă doar din 16 litere: A, B, B, G, D, E, Z, Z și, K, L, M, N, O, P, R. Fiecare dintre acestea Semnele pot codul cu doar 4 biți: de la 0000 la 1111. Acum, imaginați-vă că probabilitățile apariției acestor caractere sunt distribuite după cum urmează:

Suma acestor probabilități este în mod natural unită. Împărțim aceste personaje în două grupe, astfel încât probabilitatea totală a caracterelor fiecărui grup este de ~ 0,5 (Fig.). În exemplul nostru, va fi grupuri caractere a-in și domnul Cercurile din figura, indicând grupurile de simboluri, sunt numite noduri sau noduri (noduri), iar designul ei din aceste noduri este un copac binar (B-arbore). Atribimați codul dvs. la fiecare nod, indicând un număr de nod 0 și celălalt număr 1.

Din nou, vom rupe primul grup (A-B) în două subgrupuri, astfel încât probabilitățile lor totale să fie la fel de apropiate unul de celălalt. Adăugați la codul primului număr de subgrup 0 și al doilea cod - cifră 1.

Vom repeta această operație până la fiecare vârf al "copacului" nostru va rămâne un caracter. Copacul complet pentru alfabetul nostru va avea 31 nod.

Codurile de simboluri (noduri extreme din lemn) au codurile de lungime inegală. Deci, litera A având o probabilitate p \u003d 0,2 pentru textul nostru imaginar este codificată cu doar două biți, iar litera P (nu este prezentată în figură), având probabilitatea p \u003d 0,013, este codificată cu o combinație de șase biți.

Deci, principiul este evident - simbolurile comune sunt codificate de un număr mai mic de biți, rar găsit - mare. Ca rezultat, cantitatea medie de biți de pe simbol va fi egală

În cazul în care NI este numărul de biți care codifică simbolul I, PI este probabilitatea apariției simbolului I.

Codul Huffman.

Algoritmul Huffman este implementează elegant ideea generală de codificare statistică utilizând seturi de prefix și funcționează după cum urmează:

1. Noi scriem toate simbolurile alfabetului în vederea creșterii sau scăderii probabilității apariției lor în text.

2. Combinați în mod consecvent două caractere cu cele mai mici probabilități ale apariției apariției într-un nou caracter compozit, probabilitatea de care presupunem egal cu suma probabilităților componentelor personajelor sale. În cele din urmă, construim un copac, fiecare nod are probabilitatea totală a tuturor nodurilor de sub ea.

3. Urmăriți calea spre fiecare foaie de lemn, marcând direcția la fiecare nod (de exemplu, dreapta - 1, stânga - 0). Secvența rezultată oferă un cuvânt de cod corespunzător fiecărui simbol (fig.).

Construiți un copac de cod pentru comunicarea cu următorul alfabet:

Dezavantajele metodelor

Cea mai mare complexitate cu codurile, după cum rezultă din discuția anterioară, este necesitatea de a avea un tabel de probabilitate pentru fiecare tip de date compresibile. Aceasta nu este o problemă dacă se știe că textul englez sau rus este comprimat; Pur și simplu oferim codificator și decodor arbore de cod adecvat pentru textul englezesc sau rusesc. În cazul general, atunci când probabilitatea de simboluri pentru datele de intrare nu este cunoscută, codurile statice ale Huffman funcționează ineficient.

Soluția la această problemă este o analiză statistică a datelor codificate efectuate în prima trecere a datelor, iar compilația pe el se bazează pe lemnul său de code. De fapt, codarea este efectuată de a doua trecere.

O altă lipsă de coduri este că lungimea minimă a cuvântului de cod pentru ele nu poate fi mai mică decât una, în timp ce entropia mesajului poate fi de 0,1 și 0,01 biți / scrisoare. În acest caz, codul devine semnificativ redundant. Problema este rezolvată prin utilizarea algoritmului pentru a bloca blocurile, dar atunci procedura de codificare / decodificare este complicată, iar arborele de cod este extins semnificativ, ceea ce trebuie salvat în cele din urmă împreună cu codul.

Aceste coduri nu iau în considerare relațiile dintre caracterele care sunt prezente în aproape orice text. De exemplu, dacă în text limba engleza Suntem găsiți în litera Q, putem spune cu încredere că litera u va merge după ea.

Codarea grupului - Lungimea de rulare Codificare (RLE) este una dintre cele mai vechi și mai simple algoritmi de arhivare. Compresia în RLE are loc datorită înlocuirii lanțurilor aceluiași octet pe perechea "contor, valoare". ("Roșu, roșu, ..., roșu" este scris ca "n roșu").

Una dintre implementările algoritmului este: ei caută octetul cel mai frecvent întâmplător, ei o numesc prefixul și fac înlocuirea lanțurilor acelorași simboluri pe triple "Prefixul, contorul, valoarea". Dacă acest octet este îndeplinit în fișierul sursă o dată sau de două ori la rând, acesta este înlocuit cu o pereche de "prefix, 1" sau "prefix, 2". Există o pereche neutilizată "Prefix, 0", care poate fi utilizată ca semn al sfârșitului datelor ambalate.

Când codificați fișierele exe, puteți căuta și ambalați secvența formei Axayazawat ... care sunt adesea găsite în resurse (rânduri în codarea Unicode)

Părțile pozitive ale algoritmului pot fi atribuite ceea ce nu necesită memorie suplimentară atunci când funcționează și este executată rapid. Algoritmul este utilizat în formatele PCX, TIFF, RMN. O caracteristică interesantă a codificării grupului în PCX este că gradul de arhivare pentru unele imagini poate fi semnificativ crescut numai prin schimbarea ordinii culorilor din paleta de imagini.

Codul LZW (Lempel-Ziv & Welch) este astăzi unul dintre cele mai frecvente coduri de compresie fără pierderi. Este cu ajutorul codului LZW că există compresie în astfel de formate grafice ca TIFF și GIF, cu ajutorul modificărilor LZW, există foarte multe arhitenți universali. Funcționarea algoritmului se bazează pe căutarea în fișierul de intrare al secvențelor de simbol repetate, care sunt codificate prin combinații cu o lungime de 8 până la 12 biți. Astfel, cea mai mare eficiență acest algoritm Are pe fișiere text și fișiere grafice în care există secțiuni monocrome mari sau secvențe repetate de pixeli.

Absența pierderilor de informații cu codarea LZW a condus la distribuirea largă a formatelor bazate pe TIFF pe baza acestuia. Acest format nu impune restricții la dimensiunea și adâncimea culorii imaginii și este larg răspândită, de exemplu, în imprimare. Un alt format bazat pe LZW - GIF este mai primitiv - vă permite să stocați imagini cu o adâncime de culoare de cel mult 8 biți / pixeli. La începutul fișierului GIF există o paletă - un tabel care stabilește corespondența dintre indicele de culoare - numărul în intervalul de la 0 la 255 și valoarea de culoare adevărată, 24 de biți.

Algoritmi de compresie cu pierdere de informații

Algoritmul JPEG a fost dezvoltat de un grup de firme numite grupuri de experți fotografici în comun. Scopul proiectului a fost de a crea un standard de compresie extrem de eficient atât pentru imagini alb-negru, cât și pentru imagini color, acest obiectiv și a fost realizat de dezvoltatori. În prezent, JPEG găsește cea mai largă aplicație în care este necesar un raport de compresie ridicat - de exemplu, pe Internet.

Spre deosebire de algoritmul LZW JPEG codificare codifică cu pierderi. Algoritmul de codificare se bazează pe o matematică foarte complexă, dar, în termeni generali, poate fi descrisă după cum urmează: imaginea este împărțită în pătrate 8 * 8 pixeli, iar fiecare pătrat este transformat într-un lanț secvențial de 64 pixeli. Apoi, fiecare astfel de lanț este supus așa-numitului transformare DCT, care este una dintre soiurile de transformare discretă Fourier. Acesta constă în faptul că secvența de intrare a pixelilor poate fi reprezentată ca suma componentelor sinusoidale și cosinoase cu frecvențe multiple (așa-numitele armonici). În acest caz, trebuie să cunoaștem numai amplitudinile acestor componente pentru a restabili secvența de intrare cu un grad suficient de precizie. Cu cât este mai mare numărul de componente armonice pe care le cunoaștem, cu atât va fi mai puțin discrepanța dintre imaginea inițială și cea comprimată. Majoritatea encoderelor JPEG vă permit să reglați raportul de compresie. Acest lucru este foarte realizat calea usoara: Cu cât este stabilit gradul de compresie, cu atât mai mică armonică va prezenta fiecare bloc de 64 de pixeli.

Desigur, puterea acestui tip de codare este un raport de compresie mare, menținând în același timp adâncimea inițială a culorii. Această proprietate a condus la utilizarea pe scară largă pe Internet, unde scăderea dimensiunii dosarelor este de o importanță capitală în enciclopedii multimedia, unde depozitarea trebuie să fie mai mare decât grafica în volum limitat.

Proprietatea negativă a acestui format nu are legătură cu orice mijloace, înrăutățirea inerentă a calității imaginii. Este acest lucru trist care nu permite ca acesta să fie utilizat în imprimare, unde calitatea este plasată la capul colțului.

Cu toate acestea, formatul JPEG nu este limita perfecțiunii în dorința de a reduce dimensiunea fișierului de destinație. ÎN În ultima vreme Cercetarea intensivă este în curs de desfășurare în domeniul așa-numitului transformării wavelet (sau transformării splash). Pe baza principiilor matematice cele mai complexe, codificatoarele de undă permit obținerea unei compresii mai mari decât JPEG, cu pierderi mai mici de informații. În ciuda complexității matematicii de transformare a uneltei, în implementarea software-ului este mai ușoară decât JPEG. Deși algoritmii comprimării wavelet sunt încă în stadiul inițial de dezvoltare, este pregătit un viitor mare.

Compresie fractală

Compresia imaginii fractale este un algoritm de compresie a imaginii cu pierderi bazate pe utilizarea funcțiilor iconice (dacă, de regulă, ca urmare a transformărilor afine) la imagini. Acest algoritm este cunoscut în faptul că, în unele cazuri, permite obținerea unor rapoarte de compresie foarte ridicate ( cele mai bune exemple - până la 1000 de ori cu capacitate vizuală acceptabilă) pentru fotografiile reale ale obiectelor naturale, care nu sunt disponibile pentru alte algoritmi de compresie a imaginilor în principiu. din cauza situația complexă Cu brevetul de pe scară largă, algoritmul nu a primit.

Arhivarea fractală se bazează pe faptul că utilizarea coeficienților de sistem ai funcțiilor ICT, imaginea este predicată într-o formă mai compactă. Înainte de a lua în considerare procesul de arhivare, vom analiza cum se construiește o imagine.

Strict vorbind, dacă este un set de transformări afine tridimensionale care au tradus o imagine la alta. Transformarea este supusă punctelor în spațiul tridimensional (coordonate X, la coordonate, luminozitate).

Baza metodei de codare fractală este detectarea parcelelor auto-cum ar fi în imagine. Pentru prima dată posibilitatea de a aplica teoria sistemelor de funcții iconice (IFS) la problema compresiei imaginii a fost studiată de Michael Barnsley și Alan Sloan. Ei și-au brevetat ideea în 1990 și 1991. Jackwin (Jacquin) a introdus o metodă de codificare fractală, care utilizează blocuri de subimage de domeniu și de rază (blocuri de subimage de domeniu și interval), blocuri bloc care acoperă întreaga imagine. Această abordare a devenit baza pentru majoritatea metodelor de codificare fractale utilizate astăzi. El a fost îmbunătățit de Javal Fisher (Fisher Yuval) și un număr de alți cercetători.

În conformitate cu această metodă, imaginea este împărțită într-o multitudine de frați de rang non-reciproc (subimages) și stabilește un set de dizabilități de domeniu suprapuse (subiect de domeniu). Pentru fiecare bloc de rang, algoritmul de codare găsește cea mai potrivită unitate de domeniu și o conversie afină care traduce această unitate de domeniu la acest bloc de rang. Structura imaginii este afișată în sistemul de blocuri de rang, blocuri de domenii și transformări.

Ideea este după cum urmează: Să presupunem că imaginea originală este un punct fix al unui afișaj compresiune. Apoi, este posibil să vă amintiți acest afișaj în locul imaginii în sine și pentru a restabili, este suficient în mod repetat acest afișaj la orice imagine de pornire.

Pe teorema Banach, astfel de iterații conduc întotdeauna la un punct fix, adică imaginea originală. În practică, întreaga dificultate constă în găsirea celui mai potrivit afișaj compresiv și în spațiul de stocare compact. De regulă, algoritmii de mapare (adică algoritmi de compresie) sunt în mare parte copleșitoare și necesită costuri computaționale mari. În același timp, algoritmii de restaurare sunt destul de eficienți și rapizi.

Pe scurt, metoda propusă de Barnesy poate fi descrisă după cum urmează. Imaginea este codificată de mai multe transformări simple (în cazul nostru afine), adică este determinată de coeficienții acestor transformări (în cazul nostru A, B, C, D, E, F).

De exemplu, imaginea curbei Koch poate fi codificată de patru transformări afine, o determinăm fără ambiguitate cu toți cei 24 de coeficienți.

Ca rezultat, punctul va merge cu siguranță undeva în zona neagră de pe imaginea sursă. După ce am făcut o astfel de operație, umplem tot spațiul negru, restabilind astfel imaginea.

Cele mai renumite două imagini obținute folosind IFS: triunghiul lui Serpinsky și Fern Barnsley. Primul este setat trei, iar al doilea este cinci transformări afine (sau, în terminologia noastră, lentile). Fiecare conversie este stabilită de octeți citiți literalmente, în timp ce imaginea construită cu ajutorul lor poate ocupa mai multe megaoctete.

Ea devine clar cum funcționează arhivarul și de ce are nevoie atât de mult timp. De fapt, compresia fractală este căutarea domeniilor auto-cum ar fi imaginea și definirea parametrilor transformărilor afine pentru ei.

În cel mai rău caz, dacă algoritmul de optimizare nu se aplică, va lua un bust și compararea tuturor fragmentelor posibile ale imaginii de diferite dimensiuni. Chiar și pentru imagini mici, atunci când luați în considerare discretatea, obținem numărul astronomic al opțiunilor dezactivate. Chiar și o îngustare bruscă a claselor de conversie, de exemplu, prin scalarea doar un anumit număr de ori, nu va permite obținerea unui timp acceptabil. În plus, calitatea imaginii este pierdută. Majoritatea covârșitoare a cercetării în domeniul compresiei fractale sunt acum menite să reducă timpul de arhivare necesar pentru a obține o imagine de înaltă calitate.

Pentru un algoritm de compresie fractală, precum și pentru alți algoritmi de compresie cu pierderi, mecanismele sunt foarte importante cu care va fi posibilă ajustarea gradului de compresie și gradul de pierderi. Până în prezent, a fost dezvoltat un set mare de astfel de metode. În primul rând, este posibil să se limiteze numărul de transformări, asigurând în mod deliberat că raportul de compresie nu este sub valoarea fixă. În al doilea rând, puteți cere acest lucru într-o situație în care diferența dintre fragmentul prelucrat și cea mai bună aproximare va fi mai mare decât o anumită valoare de prag, acest fragment a fost zdrobit în mod necesar (mai multe lentile sunt în mod necesar inițiate). În al treilea rând, este posibil să se interzică fragmentele fragmentelor mai mici decât, de exemplu, patru puncte. Schimbând valorile pragului și prioritatea acestor condiții, puteți controla foarte flexibil raportul de compresie a imaginii: de la conformitatea în șarje, la orice raport de compresie.

Comparație cu JPEG.

Astăzi, cel mai comun algoritm de arhivare grafică este JPEG. Comparați-l cu compresie fractală.

În primul rând, observăm că ambele și un alt algoritm funcționează cu imagini cu 8 biți (în clase gri) și imagini cu culori complete de 24 de biți. Ambii sunt algoritmi ai pierderilor de compresie și oferă coeficienți de arhivare apropiați. Iar algoritmul fractal și JPEG au posibilitatea de a crește gradul de compresie datorită creșterii pierderilor. În plus, ambii algoritmi sunt foarte bine paraleli.

Diferențele încep dacă considerăm timpul de care aveți nevoie pentru a arhiva / dezlipi algoritmi. Astfel, algoritmul fractal comprimă sute și chiar mii de ori mai mult decât JPEG. Despachetarea imaginii, dimpotrivă, va avea loc mai repede de 5-10 ori. Prin urmare, dacă imaginea este comprimată o singură dată și transferată în rețea și este despachetată de mai multe ori, atunci este mai profitabilă să utilizați un algoritm fractal.

JPEG folosește descompunerea imaginii asupra funcțiilor cosinoase, astfel încât pierderea în ea (chiar și pentru pierderile minime date) se manifestă în valuri și halo pe marginea culorilor ascuțite. În acest sens, acest lucru nu le place să se utilizeze la comprimarea imaginilor care sunt pregătite pentru imprimarea de înaltă calitate: acest efect poate fi foarte vizibil.

Algoritmul fractal este încântat de acest deficit. Mai mult, atunci când imprimați imagini, de fiecare dată când trebuie să efectuați operația de scalare, deoarece dispozitivul de imprimare al dispozitivului de imprimare nu coincide cu imaginea rasterului. La conversie, pot exista, de asemenea, mai multe efecte neplăcute cu care puteți lupta sau scala imaginea programată (pentru dispozitivele de imprimare ieftine, cum ar fi laserul obișnuit și imprimante cu jet de cerneală), fie furnizarea unui dispozitiv de imprimare cu procesorul său, unitatea hard disk și un set de programe de procesare a imaginilor (pentru mașini fotofonante scumpe). După cum puteți ghici, cu utilizarea unui algoritm fractal, astfel de probleme nu apar.

Algoritmul fractal al OUSTING JPEG în utilizarea pe scară largă nu se va întâmpla în curând (cel puțin datorită vitezei cele mai scăzute de arhivare), dar în domeniul aplicațiilor multimedia, în jocuri pe calculator Utilizarea sa este destul de justificată.

În zilele noastre, mulți utilizatori se gândesc la modul în care se desfășoară procesul de comprimare a informațiilor pentru a economisi spațiu liber pe Winchester, deoarece este una dintre cele mai multe instrumente eficiente Utilizarea spațiului util în orice unitate. Este de multe ori pentru utilizatorii moderni care se confruntă cu o lipsă de spațiu liber pe unitate, trebuie să ștergeți orice date, încercând să eliberați locul dorit în acest mod, în timp ce utilizatorii mai avansați utilizează cel mai adesea compresia datelor pentru a reduce volumul său .

Cu toate acestea, mulți oameni nu știu nici măcar cum se numește procesul de comprimare a informațiilor, ca să nu mai vorbim ce algoritmi sunt utilizați și ceea ce conferă fiecăruia dintre ele.

Merită comprimarea datelor?

Compresia de date este importantă astăzi și este nevoie de orice utilizator. Desigur, în timpul nostru, aproape toată lumea poate dobândi dispozitive avansate de stocare a datelor, oferind posibilitatea utilizării unei cantități suficient de mari de spațiu liber, precum și echipate cu canale de traducere a informațiilor de mare viteză.

Cu toate acestea, este necesar să înțelegem corect că în timp, cantitatea de date care trebuie transmise în timp. Și dacă literalmente acum zece ani, un volum de 700 MB a fost considerat standard pentru un film obișnuit, atunci filmele de astăzi realizate în calitate HD pot avea volume egale cu mai multe duzini de gigaocteți, ca să nu mai vorbim cât de mult spațiu liber este picturile de înaltă calitate. În Format Blu-ray.

Când este necesară compresia datelor?

Desigur, nu merită să fie faptul că procesul de informație de comprimare vă va aduce o mulțime de utilizare, dar există un anumit număr de situații în care unele dintre metodele de comprimare a informațiilor sunt extrem de utile și chiar necesare:

  • Transferul anumitor documente prin e-mail. În special, aceasta se referă la acele situații în care aveți nevoie pentru a transfera informații într-un volum mare utilizând diverse dispozitive mobile.
  • Adesea procesul de comprimare a informațiilor pentru a reduce locul ocupat de acesta este utilizat la publicarea anumitor date pe diferite site-uri atunci când doriți să salvați traficul;
  • Salvarea spațiului liber pe hard disk când nu este posibilă înlocuirea sau adăugarea de noi instrumente de stocare. În special, cea mai frecventă situație este cea în care există anumite restricții în bugetul accesibil, dar nu are liber spatiu pe disc.

Desigur, în plus față de cele de mai sus, există încă număr mare Pot exista situații diferite în care poate fi necesară procesul de comprimare a informațiilor pentru a reduce volumul său, dar acestea sunt astăzi cele mai frecvente.

Cum pot comprima datele?

Astăzi există o mare varietate de metode de comprimare a informațiilor, dar toate acestea sunt împărțite în două grupuri principale - aceasta este comprimarea cu anumite pierderi, precum și comprimarea fără pierderi.

Utilizarea ultimului grup de metode este relevantă atunci când datele trebuie restabilite cu o precizie extrem de ridicată, până la un pic. Această abordare este singura relevantă în cazul în care este comprimată o comprimare a unui document text specific.

Trebuie remarcat faptul că, în anumite situații, nu este necesar să se maximizeze reducerea datelor comprimate, prin urmare este posibilă utilizarea unor astfel de algoritmi în care se efectuează comprimarea informațiilor de pe disc cu anumite pierderi. Avantajul compresiei cu pierderi este că o astfel de tehnologie este mult mai simplă în implementare și oferă, de asemenea, cel mai mare grad posibil de arhivare.

Compresie cu pierderi

Informațiile cu pierderi asigură o comandă de compresie mai bună, menținând în același timp calitatea suficientă a informațiilor. În cele mai multe cazuri, utilizarea acestor algoritmi este efectuată pentru a comprima datele analogice, cum ar fi tot felul de imagini sau sunete. În astfel de situații, fișierele despachetate pot diferi destul de puternic din informațiile originale, dar ele nu sunt practic distincte cu ochiul sau urechii umane.

Compresie fără pierdere

Algoritmi pentru comprimarea informațiilor fără pierderi oferă cea mai exactă recuperare a datelor, eliminând orice pierdere a fișierelor compresibile. Cu toate acestea, este necesar să înțelegem corect faptul că în acest caz nu este asigurată compresia atât de eficientă a fișierelor.

Metode universale

Printre altele, există o anumită serie metode universalecare se efectuează un proces eficient de informații de comprimare pentru a reduce locul ocupat de acesta. În general, puteți aloca doar trei tehnologii principale:

  • Conversia fluxului. În acest caz, o descriere a noilor informații necomprimate se efectuează prin intermediul fișierelor deja prelucrate și nu se calculează probabilitățile și simbolurile codifică pe baza singurele fișiere care au fost deja supuse unei anumite prelucrări.
  • Compresie statistică. Acest proces de informație de comprimare pentru a reduce locul ocupat pe disc este distribuit în două subcategorii - metode adaptive și blocuri. Opțiunea adaptivă prevede calcularea probabilității pentru fișiere noi în funcție de informație, care a fost deja procesată în timpul procesului de codificare. În special, astfel de metode ar trebui să includă, de asemenea, diferite variante adaptive ale algoritmilor Shannon Fano și Huffman. Algoritmul bloc asigură un calcul separat al fiecărui bloc de informații, urmat de adăugarea la blocul comprimat în sine.
  • Conversia blocului. Informațiile primite sunt distribuite mai multor blocuri și, ulterior, apare o transformare holistică. Trebuie spus că anumite metode, în special cele care se bazează pe permutarea mai multor blocuri, pot duce, în cele din urmă, la o scădere semnificativă a volumului informațiilor compresibile. Cu toate acestea, este necesar să înțelegem corect că după efectuarea unui astfel de tratament, în cele din urmă există o îmbunătățire semnificativă în care compresia ulterioară prin alți algoritmi este efectuată mult mai simplă și rapid.

Compresie la copiere

Una dintre cele mai importante componente copie de rezervă Este dispozitivul pentru care se va mișca necesare pentru utilizator informație. Cantitatea mai mare a acestor date va fi deplasată, dispozitivul mai volumetric pe care trebuie să-l utilizați. Cu toate acestea, dacă sunteți implementat un proces de comprimare a datelor, atunci în acest caz este puțin probabil ca problema lipsei spațiului liber să rămână relevantă pentru dvs.

Pentru ce ai nevoie?

Abilitatea de a comprima informații când face posibilă reducerea semnificativă a timpului în care doriți să copiați fișierele necesare și, în același timp, să obțineți economii eficiente de spațiu liber pe unitate. Cu alte cuvinte, atunci când utilizați comprimarea, informațiile vor fi copiate mult mai compacte și mai rapide și vă puteți salva banii și finanțele necesare pentru a cumpăra o unitate mai voluminos. Printre altele, având informații comprimate, de asemenea, reduceți timpul pe care veți avea nevoie la transportul tuturor datelor pe server sau să le copiați prin rețea.

Compresia datelor pentru backup poate fi efectuată în unul sau mai multe fișiere - în acest caz totul va depinde de ce fel de program pe care îl utilizați și ce informații sunt supuse compresiei.

Atunci când alegeți un utilitar, asigurați-vă că vă uitați la modul în care programul pe care l-ați ales poate comprima datele. Depinde de tipul de informații, ca rezultat, eficacitatea compresiei documentelor text poate fi mai mare de 90%, în timp ce este eficientă pentru cel mult 5%.

Înainte de a începe procesul de comprimare a unui fișier sau a unui dosar, este foarte important să înțelegeți toate beneficiile primite de la acest lucru și să dezasamblați metodele de compresie disponibile în Windows 7:

  • Compresia fișierului NTFS.
  • Foldere de compresie (zip).

Compresia de date reduce dimensiunea fișierului prin minimizarea datelor sale redundante. ÎN fisier text Cu date redundante, există adesea anumite semne, cum ar fi un simbol spațial sau vocale generale (E și A), precum și șiruri de caractere. Comprimarea datelor creează o versiune comprimată a fișierului, minimizând aceste date redundante.

Aceste două metode de compresie vor fi comparate mai jos. În plus, va fi luat în considerare impactul diverse fișiere și folderele de acțiunea fișierelor și folderelor comprimate.


Fişier sistemul NTFS. Suportă compresia fișierului pe baza unui fișier separat. Algoritmul de compresie a fișierelor este un algoritm de compresie fără pierdere, ceea ce înseamnă că atunci când comprimarea și despachetarea fișierului, datele nu sunt pierdute. În alți algoritmi în comprimare și decompresie ulterioară, o parte a datelor este pierdută.

Compresia NTFS disponibilă pe sistemul de fișiere NTFS hard discuriAre următoarele limitări și caracteristici:

  • Compresie - Atribut pentru un fișier sau un dosar.
  • Dosare și fișiere pe Volum NTFS sau comprimate sau nu.
  • Fișierele noi create într-un dosar comprimat sunt curățate implicite.
  • Starea unui dosar comprimat nu reflectă neapărat starea compresiei fișierelor din acest dosar. De exemplu, folderele pot fi comprimate fără comprimarea conținutului său, iar unele sau toate fișierele dintr-un folder comprimat pot fi neremunerate.
  • Lucrul cu fișierele comprimate NTFS fără a le despacheta, deoarece acestea sunt despachetate și comprimate din nou fără intervenția utilizatorului.
  • Dacă fișierul comprimat este deschis, sistemul îl desparte automat.
  • La închidere fișier Windows. Din nou, ea stoarce.
  • Pentru a simplifica recunoașterea, numele și folderele de fișiere comprimate NTFS sunt afișate într-o altă culoare.
  • Fișierele și folderele comprimate NTFS rămân într-o formă comprimată, numai pe volumul NTFS.
  • Fișierele comprimate NTFS nu pot fi criptate.
  • Bytes de fișiere comprimate nu sunt disponibile pentru aplicații; Ei văd doar date necomprimate.
  • Aplicații care deschid fișierele comprimate pot funcționa cu ele ca fiind comprimate.
  • Fișierele comprimate nu pot fi copiate într-un alt sistem de fișiere.

Notă: Puteți utiliza instrumentul de comandă a liniei de comandă pentru a gestiona compresia NTFS.

Mutați și copiați fișierele și folderele comprimate.


Fișierele și folderele comprimate deplasate sau copiate pot schimba starea lor de compresie. Mai jos sunt cinci situații în care este luată în considerare impactul copierii și deplasării în fișiere și foldere comprimate.

Copierea în cadrul secțiunii NTFS Partition.

Cum se schimbă starea fișierului comprimat sau a dosarului dacă o copiați în secțiunea NTFS? Când copiați un fișier sau un folder în interiorul sistemului de fișiere NTFS, o secțiune, fișier sau folder moștenește starea de comprimare a dosarului țintă. De exemplu, dacă copiați un fișier sau un folder comprimat într-un dosar despachetat, un fișier sau un dosar va fi despachetat automat.

Mutați în secțiunea NTFS.

Ce se întâmplă cu comprimarea sau dosarul fișierului atunci când se deplasează în secțiunea NTFS?

Când mutați un fișier sau un folder în secțiunea NTFS, un fișier sau un dosar salvează starea inițială de compresie. De exemplu, atunci când mutați un fișier sau un folder comprimat într-un folder necomprimat, fișierul rămâne comprimat.

Copierea sau mutarea între secțiunile NTFS.

Ce se întâmplă cu un fișier sau un folder comprimat atunci când copiați sau mutați-l între secțiunile NTFS?

Când mutați fișierul sau folderul dintre partițiile NTFS, fișierul sau folderul moștenește starea de comprimare a dosarului țintă. Deoarece Windows 7 examinează mișcarea dintre secțiuni ca copierea cu o operație ulterioară de ștergere, fișierele moștenesc starea de compresie a dosarului țintă.

Când copiați un fișier într-un dosar care conține deja un fișier cu același nume, fișierul copiat acceptă atributul de compresie al fișierului țintă, indiferent de starea de compresie a folderului.

Copierea sau deplasarea între volumele de grăsime și NTFS.

Ce se întâmplă cu comprimarea fișierului care este copiată sau deplasată între volumele de grăsime și NTFS?

Fișierele comprimate copiate în secțiunea de grăsime nu sunt comprimate, deoarece volumele de grăsime nu acceptă comprimarea. Cu toate acestea, dacă copiați sau mutați fișiere din secțiunea de grăsime la secțiunea NTFS, acestea moștenesc atributul de compresie a folderului la care le copiați.

Când copiați fișierele, sistemul de fișiere NTFS calculează spațiul pe disc pe baza dimensiunii unui fișier necomprimat. Acest lucru este important deoarece fișierele în timpul procesului de copiere nu sunt comprimate, iar sistemul trebuie să garanteze suficient spațiu. Dacă încercați să copiați un fișier comprimat în secțiunea NTFS și nu are un spațiu liber pentru un fișier necomprimat, veți avea un mesaj de eroare că veți notifica deficitul spațiului discului pentru fișier.

După cum sa menționat mai sus, una dintre sarcinile importante de pregătire preliminară a datelor la criptare este de a reduce redundanța și alinierea modelelor statistice ale limbajului aplicat. Reducerea parțială a redundanței este realizată prin comprimarea datelor.

Comprimați informațiile reprezintă procesul de transformare a mesajului sursă de la un sistem de cod la altul, ca urmare a scăderii dimensiunea mesajului. Algoritmii destinați comprimării informațiilor pot fi împărțite în două grupe mari: implementarea compresiei fără pierderi (compresie reversibilă) și implementarea compresiei cu pierderi (compresie ireversibilă).

Compresie reversibilă Aceasta implică o recuperare absolută a datelor după decodificare și poate fi aplicată pentru a comprima orice informație. Întotdeauna duce la o scădere a volumului fluxului de ieșire al informațiilor fără a-și schimba informativitatea, adică fără pierdere structura informațiilor. În plus, din fluxul de ieșire, folosind un algoritm de restaurare sau decompresie, puteți obține intrarea, iar procesul de recuperare se numește decompresie sau despachetare și numai după procesul de despachetare, datele sunt potrivite pentru procesarea în conformitate cu formatul lor intern. Compresia fără pierderi este aplicată textelor, fișierelor executabile, sunetului și graficelor de înaltă calitate.

Compresie ireversibilă Este de obicei un grad mult mai mare de comprimare decât codificarea fără pierderi, dar permite unele deviații de date decodificate din sursă. În practică, există o gamă largă de sarcini practice, în care nu este necesară respectarea cerinței de restaurare precisă a informațiilor inițiale după decompresie. Acest lucru, în special, se referă la comprimarea informațiilor multimedia: imagini de sunet, foto sau video. De exemplu, formatele de informații JPEG și MPEG Multimedia sunt aplicate pe scară largă, care utilizează comprimarea ireversibilă. Compresia ireversibilă nu este de obicei utilizată împreună cu criptarea criptografică, deoarece cerința principală pentru criptosistem este identitatea datelor decriptate de la original. Cu toate acestea, atunci când utilizați tehnologii multimedia, datele prezentate în video digital., adesea expuse la compresie ireversibilă înainte de a servi în sistemul criptografic pentru criptare. După transferarea informațiilor către consumator și decriptare, fișierele multimedia sunt utilizate într-o formă comprimată (care este, nu este restabilită).

Luați în considerare unele dintre cele mai comune modalități de compresie a datelor reversibile.

Cea mai cunoscută abordare și algoritm pentru comprimarea informațiilor sunt reversibile - aceasta este codificarea seriei de secvențe (codificarea lungimii de rulare - RLE). Esența metodelor acestei abordări constă în înlocuirea lanțurilor sau a seriei de octeți repetate la un byte-venit de codare și numărul repetițiilor lor. Problema tuturor metodelor similare este numai în definiția metodei, cu care algoritmul de despachetare ar putea fi distins în fluxul rezultat al seriei codificate de la alte secvențe octețuri necodificate. Soluția la problemă este de obicei realizată prin extinderea etichetelor la începutul lanțurilor codificate. Astfel de etichete pot fi biți caracteristici în primul Pape al seriei codificate, valorile primului octet al seriei codificate. Dezavantajul metodei RLE este un raport de compresie destul de scăzut sau costul codificării fișierelor cu un număr mic de serie și, chiar mai rău - cu un număr mic de octeți repetitivi din serie.

Cu informații uniforme de codificare, același bit este alocat mesajului, indiferent de probabilitatea apariției sale. În același timp, este logic să presupunem că lungimea totală a mesajelor transmise va scădea dacă mesajele frecvente codificate cu cuvinte de cod scurt și rareori întâlnite - mai mult. Problemele care decurg din acest lucru sunt legate de necesitatea de a utiliza coduri cu cuvânt cu cod variabil. Există multe abordări pentru construirea unor astfel de coduri.

Unele dintre cele răspândite în practică sunt metode de vocabular, ale căror reprezentanți principali includ algoritmii familiei Ziva și Lemlge. Ideea lor de bază este că fragmentele flux de intrare ("Fraze") sunt înlocuite de un pointer la locul unde au apărut deja în text. În literatură, astfel de algoritmi sunt indicați ca algoritmi LZ Compression..

O metodă similară se adaptează rapid la structura textului și poate codifica cuvinte funcționale scurte, deoarece apar foarte des în ea. Cuvintele și frazele noi pot fi, de asemenea, formate din părți ale cuvintelor întâlnite anterior. Decodarea textului comprimat este efectuată direct, există o simplă înlocuire a indicatorului la fraza terminată din dicționar la care indică cel. În practică, metoda LZ realizează o compresie bună, proprietatea sa importantă este foarte lucrare rapidă decodor.

O altă abordare a compresiei informațiilor este codul Huffman., codificatorul și decodorul care au o implementare destul de simplă a hardware-ului. Ideea algoritmului constă în următoarele: cunoașterea probabilităților apariției caracterelor într-un mesaj, puteți descrie procedura de construire a codurilor de lungime variabilă constând dintr-un număr întreg de biți. Simbolurile sunt mai susceptibile de a fi atribuite mai mult coduri scurte, întrucât caracterele mai puțin întâlnite sunt mai lungi. Datorită acestui fapt, se realizează o reducere a lungimii medii a cuvântului cod și o mai mare eficiență a compresiei. Codurile Huffman au un prefix unic (începutul cuvântului codului), care vă permite să le decodificați fără echivoc, în ciuda lungimii lor variabile.

Procedura de sinteză a codului clasic Khaffman presupune prezența unei informații priori privind caracteristicile statistice ale sursei de mesaje. Cu alte cuvinte, dezvoltatorul ar trebui să știe probabilitatea acestor sau alte caractere, despre care se formează mesaje. Luați în considerare sinteza codului lui Huffman pe un exemplu simplu.

p (s 1) \u003d 0,2, P (S 2) \u003d 0,15, P (s 3) \u003d 0,55, P (s 4) \u003d 0,1. Sortați simbolurile în descendența probabilității aspectului și imaginați-vă sub forma unui tabel (fig.14.3, a).

Procedura de sinteză a codului constă din trei pași principali. Primul declanșator al rândurilor de masă are loc: Două rânduri corespunzătoare simbolurilor cu cele mai mici probabilități ale apariției sunt înlocuite cu o probabilitate totală, după care tabelul este reordonat din nou. Convoluția continuă până când o singură linie cu o probabilitate totală egală cu una (figura 14.3, b) rămâne în tabel.


Smochin. 14.3.

În a doua etapă, lemnul de code este construit folosind o masă pliată (fig.14.4, a). Arborele este construit, începând cu ultima coloană a mesei.


Smochin. 14.4.

Rădăcina copacului formează o unitate situată în ultima coloană. În acest exemplu, această unitate este formată din probabilitățile de 0,55 și 0,45 descrise sub formă de două noduri ale copacului asociate rădăcinii. Primul dintre ele corespunde simbolului S 3 și, astfel, nu se produce o ramificare suplimentară a acestui nod.

Cel de-al doilea nod marcat cu o probabilitate de 0,45 este conectat la două noduri ale celui de-al treilea nivel, cu probabilități de 0,25 și 0,2. Probabilitatea de 0,2 corespunde simbolului S1, iar probabilitatea de 0,25, la rândul său, este formată din probabilitățile de 0,15 aspectul simbolului S 2 și 0.1 Aspectul simbolului S 4.

Coaste care leagă nodurile de copaci individuale, numerele 0 și 1 numere (de exemplu, coastele stângi - 0 și dreapta - 1). În a treia etapă finală, este construită un tabel în care simbolurile sursei sunt comparate și codurile codului Huffman. Aceste cuvinte de cod sunt formate ca urmare a numerelor de citire marcate cu coaste care formează calea de la rădăcina copacului la simbolul corespunzător. Pentru exemplul în cauză, codul Huffman va lua vizualizarea prezentată în tabelul din dreapta (fig.14.4, b).

Cu toate acestea, algoritmul clasic Huffman are un dezavantaj semnificativ. Pentru a restabili conținutul mesajului comprimat, decodorul trebuie să cunoască tabelul de frecvență care sa bucurat de codificator. Prin urmare, lungimea mesajului comprimat crește prin lungimea mesei de frecvență, care trebuie trimisă înaintea datelor, care nu poate fi redusă la nici un efort pentru a comprima mesajul.

O altă variantă codarea statică Huffman. Este de a vizualiza fluxul de intrare și codificarea clădirilor pe baza statisticilor colectate. Acest lucru necesită două fișiere din fișier - una pentru a vizualiza și a colecta informații statistice, al doilea este pentru codare. În codificarea statică a Huffman, simbolurile de intrare (lanțurile de bucăți diferite) sunt stabilite la corespondența lanțului biților, de asemenea, lungimi variabile - codurile lor. Lungimea codului fiecărui simbol este luată de un logaritm binar proporțional al frecvenței sale întreprinse cu semnul opus. Iar setul total al tuturor celor întâlnite diferite simboluri este alfabetul fluxului.

Există o altă metodă - adaptivă sau codificarea dinamică a Huffman. A lui principiu general Este de modificare a schemei de codificare în funcție de natura modificărilor fluxului de intrare. O astfel de abordare are un algoritm cu un singur pas și nu necesită păstrarea informațiilor despre codificarea utilizată în mod explicit. Codificarea adaptivă poate da un raport de compresie mai mare comparativ cu static, deoarece schimbările în frecvențele fluxului de intrare sunt luate în considerare pe deplin. Atunci când se utilizează codificarea adaptivă Huffman, complicația algoritmului constă în necesitatea de a ajusta în mod constant lemnul și codurile simbolurilor alfabetului principal în conformitate cu statisticile în schimbare ale fluxului de intrare.

Metodele Huffman dau viteza mare și moderat calitate bună comprimare. Cu toate acestea, codificarea Huffman are o redundanță minimă, cu condiția ca fiecare caracter să fie codificat în alfabetul codului de simbol printr-un lanț separat de două biți - (0, 1). Principalul dezavantaj aceasta metoda Este dependența gradului de comprimare din proximitatea probabilității de simboluri la 2 într-o anumită măsură negativă, care se datorează faptului că fiecare personaj este codificat de un număr întreg.

O soluție complet diferită codificarea aritmetică. Această metodă se bazează pe ideea de transformare a fluxului de intrare într-un singur punct plutitor. Codificarea aritmetică este o metodă care permite ambalajele de caractere alfabetului de intrare fără pierderi, cu condiția ca distribuția de frecvență a acestor caractere să fie cunoscută.

Secvența necesară estimată a simbolurilor atunci când este comprimată prin metoda de codificare aritmetică este considerată o fracțiune binară din interval)

Ți-a plăcut articolul? Împărtășește-l