Cum se configurează smartphone-uri și PC-uri. Portal informativ

Metoda instrumentului de comprimare a datelor. Compresie fără pierdere de informații

Comprimarea datelor(comprimarea datelor) - tehnica tehnica reducerea volumului (dimensiunii) înregistrării datelor pe mediile lor (disc magnetic dur, dischetă, bandă magnetică); implementate prin diferite metode, folosind în principal codificare (cuvinte repetate, fraze, simboluri). Există două grupuri de moduri de compresie a datelor: static și dinamic; se face şi o distincţie între compresia fizică şi cea logică; compresie simetrică și asimetrică; codificare adaptivă, semi-adaptativă și neadaptativă; compresie fără pierderi, cu pierderi și minimizarea pierderilor. Metode (tipuri) de compresie a datelor:

Comprimarea statică a datelor - folosită pentru stocarea și arhivarea pe termen lung; se realizează folosind programe utilitare speciale de arhivare, de exemplu ARJ, PKZIP/PKUNZIP. După recuperare (decompresie), înregistrarea originală este restaurată.
Compresie dinamică (compresie în timp real; compresie dinamică, compresie în timp real) - concepută pentru a reduce zona de memorie ocupată a discului de date care necesită acces online și ieșire către dispozitive externe Computer (inclusiv pe un ecran de monitor). Comprimarea și recuperarea dinamică a datelor se realizează automat și „instantaneu” folosind un software special.
Compresia fizică este o metodologie de compresie în care datele sunt reconstruite într-o formă mai compactă „formal”, adică fără a lua în considerare natura informațiilor pe care le conține.
Compresia logică este o metodologie în care un set de caractere alfabetice, numerice sau binare este înlocuit cu altul. În același timp, se păstrează sensul semantic al datelor originale. Un exemplu ar fi înlocuirea unei fraze cu abrevierea acesteia. Compresia logică este efectuată pe un caracter sau mai multe nivel inaltși se bazează exclusiv pe conținutul datelor originale. Compresia logică nu se aplică imaginilor.
Compresia simetrică este o metodologie de compresie, conform căreia principiile de construire a algoritmilor de împachetare și dezambalare a datelor sunt strâns sau strâns legate între ele. Când se utilizează compresia simetrică, timpul petrecut pentru comprimarea și decomprimarea datelor este comparabil. Programele de schimb de date folosesc de obicei compresia simetrică.
Compresia asimetrică este o metodologie conform căreia se petrece mai mult timp când se efectuează lucrări „într-o direcție” decât atunci când se lucrează în cealaltă direcție. Comprimarea imaginilor necesită de obicei mult mai mult timp și resurse de sistem decât decomprimarea acestora. Eficacitatea acestei abordări este determinată de faptul că imaginile pot fi comprimate o singură dată și decomprimate în scopul afișării lor - de mai multe ori. Algoritmi asimetrici „în direcția opusă” (comprimarea datelor durează mai puțin decât decompresia) sunt utilizați la execuție Rezervă copie date.
Codificarea adaptivă este o metodologie de codare pentru compresia datelor care nu este preconfigurată pentru un anumit tip de date. Programele care folosesc codificare adaptivă sunt ajustate la orice tip de date comprimate, realizând reducerea maximă a volumului acestora.
Codificarea neadaptativă este o metodologie de codificare orientată spre compresie anumit tip sau tipuri de date. Codificatoarele construite pe acest principiu conțin dicționare statice de „subșiruri predefinite” despre care se știe că apar frecvent în datele codificate. Un exemplu este metoda de compresie Huffman.
Codarea semi-adaptativă este o metodologie de codare de comprimare a datelor care utilizează elemente de codare adaptivă și neadaptativă. Principiul de funcționare al codificării semi-adaptative este că codificatorul efectuează două grupuri de operații: în primul rând, vizualizarea matricei de date codificate și construirea unui dicționar pentru acestea și apoi codificarea în sine.
Compresia fără pierderi este o metodologie de compresie în care o bucată de date codificată anterior este restaurată după despachetarea completă fără a face modificări.
Compresia cu pierderi este o metodologie în care, pentru a asigura raportul maxim de compresie, matrice sursă Unele dintre datele pe care le conține sunt aruncate. Pentru date text, numerice și tabelare, utilizați programe care implementează metode similare compresia este inacceptabilă. Cu toate acestea, pentru programele care funcționează cu grafică, acest lucru este adesea recomandabil. Calitatea imaginii restaurate depinde de natura materialului grafic și de corectitudinea algoritmului de compresie implementat în program. Există o serie de algoritmi de compresie care iau în considerare nivelurile acceptabile de pierdere a imaginii grafice originale în utilizări specifice ale imaginii restaurate, de exemplu, prin vizualizarea acesteia pe un ecran de monitor, prin imprimarea acesteia cu o imprimantă sau prin imprimare. Aceste metode sunt denumite în mod colectiv „compresie minimizată cu pierderi”.
Compresia imaginii este o tehnică sau o metodă tehnică de reducere a volumului (dimensiunii) înregistrării imaginilor grafice (desene, desene, diagrame) pe suporturile lor (de exemplu, pe un disc magnetic, bandă magnetică). În esență, „comprimarea imaginii” este un tip de compresie dinamică. Pentru a-l implementa, se folosesc diverse metode de codificare a datelor, care sunt axate pe elementele grafice care alcătuiesc imaginea, inclusiv pe obiectele în mișcare. De asemenea, este utilizat la transmiterea informațiilor de fax prin canale de comunicație, în sisteme multimedia și videofoane.
Comprimarea discului este o tehnică tehnică bazată pe compresia dinamică în timpul procesului de scriere pe disc și la citirea lor. recuperare automată la forma sa originală. Compresia discului este utilizată pentru a crește capacitatea discului. În funcție de natura înregistrărilor, capacitatea discului poate fi mărită de aproximativ 1,5 până la 5 ori. Compresia discului se realizează cu ajutorul special programe de aplicație, de exemplu DoubleSpace, Stacker, SuperStor.

Metode și mijloace de comprimare a datelor:
Metoda de compresie Huffman (codificare CCITT) a fost dezvoltată în 1952 de David Huffman. Comitetul Consultativ Internațional pentru Telefonie și Telegrafie (CCITT) a dezvoltat o serie de protocoale de comunicare pentru transmisia prin fax pe baza acestuia imagini alb-negru prin canale telefonice și rețele de date (Standard T.4 CCIT și T.6 CCITT, cunoscute și ca compresie CCITT grup 3 și compresie CCITT grup 4).
Compresie fractală - metoda compresiei imagini raster prin transformarea lor în așa-numiți fractali. Stocarea imaginilor sub formă de fractali necesită de patru ori mai puțină memorie pe disc decât în ​​pixeli.
ART este o metodă de comprimare a textului, graficelor, audio și video. Principiul de funcționare al algoritmului de compresie se bazează pe analiza imaginii și identificarea caracteristicilor sale cheie (culoare, zgomot, margini, caracteristici repetate).
AC3 Dolby este o metodă și un format de compresie care vă permite să comprimați, să stocați și să transmiteți până la 6 canale de date audio într-un singur fișier la viteze de la 32 la 640 kbps.
DJVU (DjVu, djvu, deja vu) este o tehnologie și un format pentru compresia dinamică a paginilor scanate ale publicațiilor care conțin text și materiale ilustrative.
DVI (Digital Video Interactive) este un sistem de compresie dinamică și restaurare a înregistrărilor audio și video în formă digitală. Utilizarea acestuia vă permite să înregistrați un film video de lungime completă împreună cu audio pe un CD-ROM.
EAD (Descrierea arhivă codificată) este un standard de codare dezvoltat de Biroul pentru Dezvoltarea Rețelei și Standardele MARC al Bibliotecii Congresului în colaborare cu Societatea Arhiviștilor Americani în 1998 (actualizat în 2002). Standardul stabilește principii pentru crearea, dezvoltarea și întreținerea schemelor de codificare pentru mijloacele de găsire pentru arhivă și bibliotecă.
Managerul de compresie a imaginilor este un program dinamic de gestionare a compresiei imaginii care vă permite să utilizați diverse metode compresie/reconstrucție a imaginii (MPEG, JPEG).
JBIG (Joint Bi-level Image Experts Group) este o metodă de compresie fără pierderi pentru imagini cu două niveluri (două culori), creată de Joint ISO și CCIT Bi-level Image Experts Group în 1988. Metoda JBIG a fost aprobată în 1993 ca standard pentru codificarea datelor pe două niveluri în locul algoritmilor de compresie MR (Citire modificată) și MMR (Citire modificată modificată) mai puțin eficienți.
LZW (Lempel-Ziv-Welch) este o metodă de compresie dinamică bazată pe căutarea întregului fișier și stocarea unor secvențe identice de date într-un dicționar (se numesc fraze). Fiecărei secvențe unice de date îi sunt atribuite jetoane (chei) mai scurte.
MP3 (Moving Pictures Experts Group, Layer 3) este o metodă de compresie dinamică (algoritm) și un format special pentru înregistrarea fișierelor de date audio. MP3 oferă o compresie ridicată a înregistrărilor audio și este utilizat în aplicații multimedia, în special în playere digitale (playere) și pe Internet.
RLE (Run Length Encoding) este o metodă de compresie dinamică a datelor grafice, în principal a imaginilor, bazată pe reducerea dimensiune fizică repetarea șirurilor de caractere.

Trimiteți-vă munca bună în baza de cunoștințe este simplu. Utilizați formularul de mai jos

Buna treaba la site">

Studenții, studenții absolvenți, tinerii oameni de știință care folosesc baza de cunoștințe în studiile și munca lor vă vor fi foarte recunoscători.

Postat pe http://www.allbest.ru/

Comprimarea datelor

1. Informație. Tipurile și proprietățile sale

În literatura de specialitate se pot găsi destul de multe definiții ale termenului „informație”, reflectând abordări diferite ale interpretării acestui concept. Dicționarul explicativ al limbii ruse al lui Ozhegov oferă 2 definiții ale cuvântului „informații”:

Informații despre lumea înconjurătoare și procesele care au loc în ea, percepute de o persoană sau de un dispozitiv special.

Mesaje care informează despre starea lucrurilor, starea a ceva. (Informații științifice, tehnice și de presă, mass-media - scris, radio, televiziune, cinema).

Informația și proprietățile ei fac obiectul de studiu într-o serie de discipline științifice, cum ar fi teoria informației (teoria matematică a sistemelor de transmisie a informațiilor), cibernetica (știința comunicării și controlului la mașini și animale, precum și în societate și umanitate). ființe), semiotica (știința semnelor) și a sistemelor de semne), teoria comunicării de masă (studiul mijloacelor de comunicare și influența lor asupra societății), informatica (studiul proceselor de colectare, transformare, stocare, protecție, căutare și transmiterea tuturor tipurilor de informații și a mijloacelor acestora prelucrare automată), fizică și matematică.

Informația are o dublă natură: materială – poate fi transmisă, stocată etc.; și intangibile - prin transmitere sulf poate fi reînnoit. Informația nu poate exista fără purtătorul ei material, un mijloc de a o transfera în spațiu și timp. Purtătorul poate fi obiectul fizic în sine sau echivalentul său energetic sub formă de semnale sonore, luminoase, electrice și alte semnale.

În acest scop, acum au fost inventate multe metode de stocare a informațiilor pe medii externe (față de creierul uman) și transmiterea lor pe distanțe mari.

Principalele tipuri de informații în funcție de forma sa de prezentare, metode de codificare și stocare, care are cea mai mare valoare pentru informatică, acesta este:

· grafic sau pictorial - primul tip pentru care a fost implementată o metodă de stocare a informațiilor despre lumea înconjurătoare sub formă de picturi pe rocă, iar mai târziu sub formă de picturi, fotografii, diagrame, desene pe hârtie, pânză, marmură și alte materiale care înfățișează imagini. a lumii reale;

· sunet- lumea din jurul nostru este plina de sunete si problema stocarii si replicarii lor a fost rezolvata odata cu inventarea aparatelor de inregistrare a sunetului in 1877; tipul său este informația muzicală - pentru acest tip a fost inventată o metodă de codare folosind caractere speciale, ceea ce face posibilă stocarea acesteia într-un mod similar informatii grafice;

· text- o metodă de codificare a vorbirii umane cu simboluri speciale - litere și diferite națiuni au limbi diferite și folosesc diferite seturi de litere pentru a afișa vorbirea; Această metodă a devenit deosebit de importantă după inventarea hârtiei și a tiparului;

· numeric- o măsură cantitativă a obiectelor și proprietăților lor în lumea înconjurătoare; a dobândit o importanță deosebită odată cu dezvoltarea comerțului, economiei și schimburilor monetare; în mod similar informații text pentru a-l afișa, se folosește o metodă de codare cu simboluri speciale - numere, iar sistemele de codare (număr) pot fi diferite;

· informații video- o metodă de conservare a imaginilor „vii” ale lumii înconjurătoare, care au apărut odată cu invenția cinematografiei.

Pentru transmiterea informațiilor pe distanțe mari, au fost utilizate inițial semnale luminoase codificate, odată cu inventarea electricității - transmiterea unui semnal codificat într-un anumit mod prin fire, iar ulterior folosind unde radio.

Odată cu apariția computerelor (sau, așa cum au fost numite inițial în țara noastră, computerele - electronice mașini de calcul) mai întâi a existat un mijloc de prelucrare informatii numerice. Totuși, mai târziu, mai ales după utilizarea pe scară largă a calculatoarelor personale (PC), calculatoarele au început să fie folosite pentru stocarea, procesarea, transmiterea și preluarea informațiilor text, numerice, vizuale, sonore și video. De la apariția primelor computere personale - PC-urile (anii 80 ai secolului XX) - până la 80% din timpul lor de lucru este dedicat lucrului cu informații text.

Stocarea informațiilor la utilizarea computerelor se realizează pe discuri magnetice sau benzi, pe discuri laser(CD și DVD), dispozitive speciale de memorie nevolatilă (memorie flash etc.). Aceste metode sunt în mod constant îmbunătățite, se inventează noi dispozitive și medii de stocare. Prelucrarea informațiilor (reproducere, conversie, transmitere, înregistrare pe medii externe) este realizată de procesorul computerului. Folosind un computer, este posibil să creați și să stocați informație nouă orice fel, pentru ce sunt folosite programe speciale, utilizat pe computere și dispozitive de introducere a informațiilor.

În prezent, un tip special de informații pot fi considerate informații prezentate pe internetul global. Utilizează tehnici speciale de stocare, procesare, căutare și transmitere a unor volume mari de informații distribuite și modalități speciale de lucru cu tipuri variate informație. În continuă îmbunătățire software, oferind lucrări colective cu informații de toate tipurile.

Proprietățile informațiilor

Pot fi citate multe proprietăți diferite ale informațiilor. Fiecare disciplină științifică le consideră pe cele care sunt mai importante pentru ea. Din punctul de vedere al informaticii, următoarele proprietăți par a fi cele mai importante:

1. Obiectivitatea și subiectivitatea informației. Informația mai obiectivă este considerată a fi aceea în care metodele introduc mai puțin un element subiectiv. În timpul procesului de informare, gradul de obiectivitate al informaţiei scade întotdeauna.

2. Completitudinea informațiilor. Completitudinea informațiilor caracterizează în mare măsură calitatea informațiilor și determină suficiența datelor pentru luarea deciziilor sau crearea de noi date pe baza celor existente.

3. Fiabilitatea informațiilor. Datele apar atunci când semnalele sunt înregistrate, dar nu toate semnalele sunt „utile” - există întotdeauna un nivel de semnale străine prezente.

5. Disponibilitatea informațiilor.

6. Relevanța.

2. Comprimarea datelor

Regula binecunoscută există în lumea computerelor ce capacitate hard disk nu poate fi niciodată prea mult. Într-adevăr, este greu să nu fii de acord cu el: indiferent cât de mare ar părea hard disk-ul când îl cumperi, se înfundă rapid cu tot felul de lucruri. informatii inutile. Deoarece este păcat să ștergi totul, merită să „stociezi” din nou toate aceste lucruri într-un fel de stocare, arhivă.

CUcompresia datelor- o procedură de recodificare a datelor efectuată în vederea reducerii volumului acestora. Folosit pentru utilizarea mai rațională a dispozitivelor de stocare și transmisie a datelor. Dacă metodele de comprimare a informațiilor sunt aplicate documentelor finite, atunci termenul „comprimare a datelor” este adesea înlocuit cu termenul „arhivare a datelor”.

Comprimarea se bazează pe eliminarea informațiilor redundante conținute în datele sursă. Un exemplu de redundanță este repetarea fragmentelor din text (de exemplu, cuvinte naturale sau limbajul mașinii). O astfel de redundanță este de obicei eliminată prin înlocuirea secvenței repetate cu o valoare (cod) mai scurtă. Un alt tip de redundanță se datorează faptului că unele valori din datele comprimate apar mai des decât altele și este posibil să înlocuiți datele care apar frecvent cu mai multe coduri scurte, iar cele rare - mai lungi (compresie probabilistica). Comprimarea datelor care nu au proprietăți de redundanță (de exemplu, semnal aleator sau zgomot), este imposibil fără pierderi. De asemenea, de obicei nu este posibilă comprimarea informațiilor criptate.

Algoritmi de compresie pentru texte/fișiere de format necunoscut

Există 2 abordări principale pentru a comprima fișiere cu format necunoscut.

La fiecare pas al algoritmului de compresie, fie următorul caracter este plasat așa cum este (cu un steag special care indică faptul că nu este comprimat), fie sunt indicate limitele cuvântului din piesa anterioară care coincide cu următoarele caractere ale fișierului . Dezarhivarea fișierelor comprimate în acest fel este foarte rapidă, așa că acești algoritmi sunt folosiți pentru a crea programe autoextractibile.

Pentru fiecare secvență în fiecare moment de timp, sunt colectate statistici privind apariția acesteia în fișier. Pe baza acestor statistici, se calculează probabilitatea valorilor pentru următorul simbol. După aceasta, puteți utiliza unul sau altul codificare statistică, de exemplu, codare aritmetică sau Huffman pentru a înlocui secvențele care apar frecvent cu altele mai scurte și cele care apar rar cu altele mai lungi.

Comprimarea poate fi fără pierderi (când este posibilă restaurarea datelor originale fără distorsiuni) sau cu pierderi (recuperarea este posibilă cu distorsiuni nesemnificative din punctul de vedere al utilizării ulterioare a datelor recuperate). Compresia fără pierderi este folosită în mod obișnuit în procesare programe de calculatorși date, mai rar - pentru a reduce volumul informațiilor audio, foto și video. Compresia cu pierderi este utilizată pentru a reduce volumul informațiilor audio, foto și video; este semnificativ mai eficient decât compresia fara pierdere.

3. Software de compresie a datelor

Dacă se aplică metode de comprimare a informațiilor documentelor finite. Adesea, termenul „comprimare a datelor” este înlocuit cu termenul „arhivare a datelor”, iar software-ul care efectuează aceste operații se numește arhivisti.

Arhivatoarele sunt concepute pentru a comprima fișiere, de ex. pentru a reduce spațiul pe disc pe care îl ocupă. Acestea permit, prin metode speciale de împachetare a informațiilor, să comprimați informațiile de pe discuri, creând copii ale fișierelor într-un singur fișier de arhivă. În ciuda faptului că volumele de memorie ale computerului sunt în continuă creștere, nevoia de arhivare nu scade.

Deci, arhivarea poate fi utilă:

1) La stocarea copiilor de fișiere și dischete, deoarece discheta are dimensiuni limitate;

2) Pentru a elibera spațiu pe hard disk;

3) Când transmiteți informații printr-o rețea.

Arhivarea informațiilor este o transformare a informațiilor în care volumul acesteia nu scade, dar cantitatea de informații rămâne aceeași.

Fișierul comprimat se numește arhivă. Fișierul de arhivă este într-un mod special dosar organizat, care conține unul sau mai multe fișiere în formă comprimată și necomprimată și informatii oficiale despre numele lor.

Gradul de compresie a informațiilor depinde de tip fișier sursă, asupra programului utilizat, precum și asupra metodei de ambalare alese. Fișierele sunt cel mai bine comprimate obiecte grafice, fișiere text și fișiere de date, pentru care raportul de compresie poate ajunge la 5-40%, fișierele sunt comprimate mai puțin programe executabile iar modulele de încărcare -60-90%.

Diferiți dezvoltatori au creat multe programe de arhivare. Dintre acestea, cele mai comune pentru Windows sunt WINRAR, WINZIP.

Prin popularitatea sa Arhivator WinRAR, Fără îndoială, este pe primul loc în Rusia și unul dintre primele din întreaga lume. Arhivatorul a fost dezvoltat de Evgeny Roshal în 2003. Programul oferă control total fișiere în arhive, restaurarea arhivelor deteriorate, criptare, crearea de arhive autoextractibile și cu mai multe volume.

WinZip este unul dintre cele mai populare programe de pe Internet, adunând un număr semnificativ de premii de la diverse publicații informatice din întreaga lume.

Algoritmul Zip în sine este folosit în mod liber în zeci de programe, cu toate acestea, pentru mulți utilizatori de Windows, WinZip este EXACT program standard pentru lucrul cu arhivele. Instrumentele de procesare a arhivelor WinZIP încorporate vă permit să împachetați, să vizualizați și să extrageți fișiere din formate de arhivă utilizate pe scară largă, cum ar fi ZIP, CAB, Microsoft Compress, GZIP, TAR etc. WinZip este foarte simplu și ușor de utilizat.

Cu toate acestea, nu este întotdeauna justificată utilizarea arhivatoarelor separate cu propriile shell-uri grafice. Cel mai convenabil shell pentru arhivatori este un manager de fișiere obișnuit, de exemplu, Windows Commander, care are capacitatea de a vizualiza și dezambala fișiere de arhivă în formatele ZTP, ARJ, RAR, TAR, GZ, CAB, ACE. Cu toate acestea, majoritatea operațiunilor cu fișiere, inclusiv arhive, sunt efectuate în astfel de manageri.

4. Comprimarea datelor cu pierderi

Comprimarea datelor cu pierderi este o metodă de comprimare a datelor în care fișierul decomprimat este diferit de cel original, dar este „suficient de aproape” pentru a fi util într-un fel. Acest tip de compresie este adesea folosit pe Internet, în special în streaming și telefonie. Aceste metode sunt adesea numite codecuri în acest context. O alternativă este compresia fără pierderi.

Tipuri de compresie cu pierderi

Există două scheme principale de compresie cu pierderi:

În codecurile de transformare, cadrele de imagini sau sunet sunt preluate, tăiate în segmente mici, transformate într-un nou spațiu de bază și cuantizate. Rezultatul este apoi comprimat folosind metode de entropie.

În codecurile predictive, datele anterioare și/sau ulterioare sunt utilizate pentru a prezice cadrul curent al unei imagini sau al sunetului. Eroarea dintre datele prezise și datele reale, împreună cu informațiile suplimentare necesare pentru a face predicția, este apoi cuantificată și codificată.

Unele sisteme combină aceste două tehnici utilizând codecuri de transformare pentru a comprima semnalele de eroare generate în timpul etapei de predicție.

Compresie cu pierderi vs. fără pierderi

Avantajul metodelor de compresie cu pierderi în comparație cu metodele de compresie fără pierderi este că primele sunt semnificativ superioare în ceea ce privește raportul de compresie, în timp ce continuă să îndeplinească cerințele specificate.

Metodele de compresie cu pierderi sunt adesea folosite pentru a comprima sunetul sau imaginile.

În astfel de cazuri, fișierul necomprimat poate fi foarte diferit de original la nivel de comparație bit cu bit, dar este practic imposibil de distins pentru urechea sau ochiul uman în majoritatea aplicațiilor practice.

Multe metode se concentrează pe caracteristicile structurale ale organelor senzoriale umane. Modelul psihoacustic determină cât de mult sunet poate fi comprimat fără a degrada calitatea sunetului perceput. Imperfecțiunile cauzate de compresia cu pierderi care sunt vizibile pentru urechea sau ochiul uman sunt cunoscute ca artefacte de compresie.

Datele de sunet care au fost supuse compresiei cu pierderi nu sunt acceptate de instanțele de judecată ca dovezi materiale (și nici măcar nu sunt luate în considerare) din cauza faptului că informațiile care au fost supuse compresiei capătă artefacte de compresie și pierd zgomotul natural al mediului din care se înregistrează. a fost facut. Prin urmare, este imposibil să se determine dacă înregistrarea este autentică sau sintetizată. De aceea înregistrări importante Se recomandă producerea în format PCM sau utilizarea unui reportofon.

Fotografii înregistrate în format JPEG, poate fi acceptat de instanță (în ciuda faptului că datele au fost supuse compresiei cu pierderi). Dar, în același timp, trebuie furnizat și aparatul foto cu care au fost realizate sau tabelul de redare a culorilor foto corespunzător.

Metode de comprimare a datelor cu pierderi

v Comprimarea imaginii:

· Profunzime de culoare redusa;

· Metoda componentelor principale;

· Compresie fractală;

v Compresie video:

· Flash (suportă și imagini în mișcare JPEG);

· MPEG-1 Partea 2;

· MPEG-2 Partea 2;

· MPEG-4 Partea 2;

v Compresie audio:

· MP3 - Definit de specificația MPEG-1;

· Ogg Vorbis (caracterizat prin absența restricțiilor de brevet și nu numai calitate superioară);

· AAC, AAC+ - există în mai multe versiuni, definite de specificațiile MPEG-2 și MPEG-4, utilizate, de exemplu, în Apple Computer;

· eAAC+ - un format oferit de Sony ca alternativă la AAC și AAC+;

· WMA este proprietatea Microsoft;

pierderea arhivatorului de compresie a informațiilor

5. Comprimarea datelor fără pierdere de informații

Compresie fără pierderi(Engleză: Comprimarea datelor fără pierderi) - o metodă de comprimare a informațiilor, prin care informațiile codificate pot fi restaurate cu precizie de biți. În acest caz, datele originale sunt complet restaurate din starea lor comprimată. Acest tip de compresie este fundamental diferit de compresia datelor cu pierderi. Pentru fiecare tip de informație digitală, de regulă, există algoritmi optimi de compresie fără pierderi.

Comprimarea datelor fără pierderi este utilizată în multe aplicații. De exemplu, este folosit în fișierul popular Format ZIPși utilitarul Unix Gzip. De asemenea, este folosit ca componentă în compresia cu pierderi.

Compresia fără pierderi este utilizată atunci când este important ca datele comprimate să fie identice cu cele originale. Un exemplu comun sunt fișierele executabile și codul sursă. Niște grafice formate de fișiere, cum ar fi PNG sau GIF, utilizează numai compresie fără pierderi; în timp ce altele (TIFF, MNG) pot folosi atât compresia cu pierderi, cât și fără pierderi.

Tehnica de compresie fără pierderi

Din combinatorie rezultă că nu există un algoritm de compresie fără pierderi care să poată reduce orice fișier cu cel puțin un octet. Cu toate acestea, acesta nu este un semn al calității unui algoritm de compresie - algoritmul trebuie să funcționeze eficient asupra datelor pentru care este proiectat.

Algoritmii de compresie multifuncțional se disting prin capacitatea lor de a reduce gamă largă date - fișiere executabile, fișiere de date, texte, grafice etc. și sunt utilizate în arhivare. Algoritmii specializați sunt proiectați pentru un anumit tip de fișier (text, grafică, sunet etc.), dar comprimă astfel de fișiere mult mai puternic. De exemplu: arhivatorii comprimă sunetul cu aproximativ o treime (1,5 ori), în timp ce FLAC îl comprimă de 2,5 ori. Majoritatea algoritmilor specializați sunt de puțin folos pentru tipurile de fișiere „străine”: de exemplu, datele audio sunt slab comprimate de un algoritm conceput pentru texte.

Majoritatea algoritmilor de compresie fără pierderi funcționează în două etape: prima generează un model statistic pentru datele primite, al doilea mapează datele primite la o reprezentare pe biți, folosind modelul pentru a produce date „probabilistice” (adică, care apar frecvent), care sunt utilizate mai des decât datele „non-probabilistice”.

Modelele statistice de algoritmi pentru text (sau date binare text, cum ar fi fișierele executabile) includ:

Transformarea Burrows-Wheeler (preprocesare de sortare a blocurilor care face compresia mai eficientă)

LZ77 și LZ78 (se folosește DEFLATE)

Algoritmi de codare prin generarea de secvențe de biți:

· Algoritmul Huffman (este folosit și DEFLATE)

Codare aritmetică

Metode de compresie fără pierderi

· Multifuncțional

· Codificarea lungimilor de rulare - circuit simplu, dând compresie buna date care conțin multe valori duplicate

· LZW - folosit în gif și multe altele.

· Deflate - folosit în gzip, o versiune avansată de zip, și ca parte a procesului de compresie PNG.

· LZMA - folosit în 7-zip.

v Compresie audio:

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

· Codare fără pierderi audio - cunoscută și sub numele de MPEG-4 ALS;

· Transfer Direct Stream - DST;

· Codec audio gratuit fără pierderi - FLAC;

v Compresie grafică

· ABO - Adaptive Binary Optimization;

· GIF - (fără pierderi numai pentru imaginile care conțin mai puțin de 256 de culori);

· JBIG2 - (cu sau fără imagini alb/negru cu pierderi);

· JPEG-LS - (standard de compresie fără pierderi / aproape fără pierderi);

· JPEG 2000 - (include compresie fără pierderi; testat și de Sunil Kumar, profesor la San Diego State University);

· PGF - Progressive Graphics File (compresie fără pierderi/fără pierderi);

· PNG - Grafică de rețea portabilă;

· WMPhoto - (inclusiv metoda de compresie fără pierderi);

v Compresie video

· Codec de animație;

· Codec video CamStudio;

6. Stocarea informatiilor (text, grafic, sunet)

Informațiile sunt stocate folosind anumite medii de stocare. O persoană își stochează cunoștințele fie în propria memorie, fie pe unele medii externe.

La început, o persoană și-a folosit memoria pentru a stoca și a acumula informații - pur și simplu a memorat informațiile primite și și-a amintit de ceva timp. Treptat, oamenii au ajuns la concluzia că această metodă de stocare a informațiilor are o serie de dezavantaje. Dându-și seama de lipsa de încredere a acestei metode de stocare și acumulare a informațiilor, omul a început să înregistreze informații sub formă de desene, odată cu inventarea scrisului - pe papirus, iar mai târziu în cărți. Apoi au apărut ca elemente plăci fotografice și dispozitive de înregistrare a sunetului memorie externa informații video și audio, caiete, cărți de referință, enciclopedii etc., pe care le numim stocare externă date. Pe la mijlocul secolului al XX-lea, computerul a fost inventat. A apărut imediat întrebarea cum va stoca informațiile.

Suportul de informare poate fi de natură diferită: hârtie. Mecanic, magnetic, electric. Informațiile înregistrate pe media pot fi sub forma unui simbol care este înțeles de oameni sau într-o formă codificată. Informații pentru casetofon, video recorder, camera video - sunet stocate pe dispozitive speciale: casete audio, casete video, filme. Utilizarea unui microfon și a altor dispozitive informații audioînregistrate pe bandă magnetică.

În calculatoare au început să fie folosite următoarele dispozitive de înregistrare și citire a informațiilor: cititoare de carduri perforate; unități de bandă magnetică, unități de dischetă (unitate de disc) și unități de disc magnetice (hard disk); unități de disc compact (CD-ROM) și alte dispozitive mai moderne pentru stocarea și stocarea informațiilor.

Bibliografie

1. Legea federală Federația Rusă„Cu privire la informare, informatizare și protecția informațiilor” din 27 iulie 2006 Nr. 149-FZ.

2. Levin A.Sh. Manual de autoinstruire pentru lucrul la computer. - Sankt Petersburg: Peter, 2006. - 655 p.

3. Romanova N.I. Fundamentele informaticii. - Sankt Petersburg: Politekhnika, 2004. -224 p.

4. Simonovici S.V. Informatică. Curs de bază. - Sankt Petersburg: Peter, 2008 -640 p.

Postat pe Allbest.ru

Documente similare

    Tipuri de compresie a datelor: cu pierderi și fără pierderi. Compresie cu redundanță minimă. Codificare folosind metoda Shannon-Fano. Testarea programului pentru comprimarea fișierelor bmp și xls. Implementarea pe Algoritmul Delphi compresie Shannon și Huffman.

    lucrare de curs, adăugată 26.01.2011

    Clasificarea și principalele caracteristici ale metodei de compresie a datelor. Calculul rapoartelor de compresie și evaluarea eficacității acestora. Algoritmi pentru metode de compresie polinomială, extrapolare și interpolare și compararea acestora. Predicție liniară optimă.

    lucrare curs, adaugat 17.03.2011

    Arhivarea și compresia ca metode de compresie a imaginii. Algoritmi de compresie a datelor. SIDA, care sunt folosite pentru a reduce dimensiunile fișierelor: modificare model de culoare imagini, modificarea rezoluției fișierului raster, reeșantionare.

    prezentare, adaugat 01.06.2014

    Studiul principalelor tipuri de programe de arhivare. Comprimarea fișierelor în timpul arhivării. Un indicator al gradului de compresie a fișierului. Evaluarea funcționalității celor mai populare programe de ambalare. Caracteristicile tehnice ale proceselor de compresie. Metode de arhivare fără pierderi.

    rezumat, adăugat 12.05.2013

    Dezvăluirea scopului comprimării fișierelor și caracterizarea scopului arhivatorilor ca programe care împachetează și despachetează fișiere într-o arhivă pentru a facilita transferul și stocarea. Principalele tipuri de arhivare: fișier, software, disc. Metoda de compresie fără pierderi.

    prezentare, adaugat 04.05.2011

    Concepte de bază și metode de comprimare a datelor. Transformarea informațiilor stocate într-un fișier într-o formă care reduce redundanța în prezentarea acestuia. Metode de compresie statistică și dicționar. Programe de arhivare, caracteristici de bază ale WinRAR.

    test, adaugat 03.12.2011

    Scurtă recenzie teoriile de bază ale compresiei. Concepte de idei și implementarea lor. Comprimarea datelor folosind transformarea Burrows-Wheeler. Algoritmul static al lui Huffman. Algoritm de compresie adaptiv local. Algoritmul Ziv-Lempel (Welch) și metoda Shannon-Fano.

    lucrare practica, adaugata 24.04.2014

    Entropia și cantitatea de informații. Estimarea combinatorie, probabilistica si algoritmica a cantitatii de informatii. Modelare și codare. Unii algoritmi de compresie a datelor. Algoritm codificare aritmetică. Transmisie și recepție incrementale.

    lucrare de curs, adăugată 28.07.2009

    Utilizarea algoritmilor care asigură un grad ridicat de compresie pentru a crește viteza de transmisie a datelor pe canalele de comunicație. Caracteristici și metode de găsire a descompunerii valorii singulare. Dezvoltarea unui program care implementează compresia imaginii folosind compresia SVD.

    teză, adăugată 13.10.2015

    Programe pentru crearea arhivelor. Eficiența compresiei datelor ca cea mai importantă caracteristică arhivatorii. Metode de bază de comprimare a datelor. Caracteristicile programului de ambalare a textelor și programe WinRar. Dezambalarea fișierelor, împachetarea fișierelor și folderelor într-o arhivă comună.

„Comprimarea datelor”

O trăsătură caracteristică a majorității tipurilor de date este redundanța lor. Gradul de redundanță a datelor depinde de tipul de date. De exemplu, pentru datele video gradul de redundanță este de câteva ori mai mare decât pentru datele grafice, iar gradul de redundanță al datelor grafice, la rândul său, este mai mare decât gradul de redundanță al datelor text. Un alt factor care influențează gradul de redundanță este sistemul de codificare adoptat. Un exemplu de sisteme de codificare ar fi limbajele obișnuite de comunicare, care nu sunt altceva decât sisteme de codificare a conceptelor și idei pentru exprimarea gândurilor. Astfel, s-a stabilit că codificarea datelor text folosind limba rusă dă în medie o redundanță care este cu 20-25% mai mare decât codificarea datelor similare folosind limba engleză.

Pentru oameni, redundanța datelor este adesea asociată cu calitatea informațiilor, deoarece redundanța tinde să îmbunătățească înțelegerea și percepția informațiilor. Cu toate acestea, atunci când vine vorba de stocarea și transmiterea informațiilor folosind tehnologia informatică, redundanța joacă un rol negativ, deoarece duce la creșterea costului de stocare și transmitere a informațiilor. Această problemă devine deosebit de relevantă în cazul prelucrării unor volume uriașe de informații cu cantități nesemnificative de medii de stocare. În acest sens, se pune constant problema reducerii redundanței sau compresiei datelor. Dacă metodele de comprimare a datelor sunt aplicate fișierelor terminate, atunci adesea în loc de termenul „comprimare a datelor” se folosește termenul „arhivare a datelor”; versiunea comprimată a datelor se numește Arhiva, iar software-ul care implementează metode de compresie sunt numite arhivisti.

În funcție de obiectul în care se află datele de comprimat:

    Comprimarea (arhivarea) fișierelor: utilizată pentru a reduce dimensiunea fișierelor la pregătirea lor pentru transmiterea prin canale de comunicație sau pentru transportul pe medii externe de capacitate mică;

    Comprimarea (arhivarea) folderelor: utilizată ca mijloc de reducere a volumului folderelor înainte de stocarea pe termen lung, de exemplu, în timpul copiei de rezervă;

    Comprimarea discului (compact): folosită pentru a crește eficiența utilizării spațiului pe disc prin comprimarea datelor atunci când le scrieți pe un mediu de stocare (de obicei, folosind sistemul de operare).

Există mulți algoritmi practici de comprimare a datelor, dar toți se bazează pe trei moduri teoretice de a reduce redundanța datelor. Prima modalitate este de a schimba conținutul datelor, a doua este de a schimba structura datelor, iar a treia este de a schimba atât structura, cât și conținutul datelor în același timp.

Dacă compresia datelor își schimbă conținutul, atunci metoda de compresie este apelată ireversibil, adică la restaurarea (dezarhivarea) datelor dintr-o arhivă, informațiile nu sunt complet restaurate. Astfel de metode sunt adesea numite metode de compresie cu pierderi controlate. Este clar că aceste metode pot fi utilizate numai pentru tipurile de date pentru care pierderea unei părți a conținutului nu duce la o denaturare semnificativă a informațiilor. Aceste tipuri de date includ date video, audio și grafice. Metodele de compresie controlate de pierderi oferă rate de compresie semnificativ mai mari, dar nu pot fi aplicate datelor text. Exemple de formate de compresie cu pierderi includ:

    JPEG - pentru date grafice;

    MPG - pentru date video;

    MP3 - pentru date audio.

Dacă compresia datelor schimbă doar structura datelor, atunci metoda de compresie este apelată reversibil. În acest caz, este posibilă restaurarea completă a informațiilor din arhivă. Metodele de compresie reversibilă pot fi aplicate oricărui tip de date, dar oferă o compresie mai mică decât metodele de compresie ireversibilă. Exemple de formate de compresie fără pierderi:

    GIF, TIFF - pentru date grafice;

    AVI - pentru date video;

    ZIP, ARJ, RAR, CAB, LH - pentru tipuri de date arbitrare.

Există multe metode practice diferite de compresie fără pierderi, care tind să aibă eficiență diferită pentru diferite tipuri de date și diferite volume. Cu toate acestea, aceste metode se bazează pe trei algoritmi teoretici:

    algoritmul RLE (Run Length Encoding);

    algoritmi ai grupului KWE (KeyWord Encoding);

    Algoritmul Huffman.

Algoritmul RLE

Algoritmul RLE se bazează pe ideea de a identifica secvențe de date repetate și de a le înlocui cu o structură mai simplă care specifică codul de date și factorul de repetiție. De exemplu, să fie dată următoarea secvență de date care este supusă compresiei:

1 1 1 1 2 2 3 4 4 4

Algoritmul RLE propune înlocuirea acestuia cu următoarea structură: 1 4 2 2 3 1 4 3, unde primul număr al fiecărei perechi de numere este codul de date, iar al doilea este factorul de repetiție. Dacă se alocă 1 octet pentru a stoca fiecare element de date al secvenței de intrare, atunci întreaga secvență va ocupa 10 octeți de memorie, în timp ce secvența de ieșire (versiunea comprimată) va ocupa 8 octeți de memorie. Raportul de compresie, care caracterizează gradul de compresie, poate fi calculat folosind formula:

unde Vx este cantitatea de memorie necesară pentru a stoca secvența de date de ieșire (rezultă), Vn este secvența de date de intrare.

Cu cât raportul de compresie este mai mic, cu atât metoda mai eficienta comprimare. Este clar că algoritmul RLE va oferi un efect de compresie mai bun atunci când secvența de date care se repetă este mai lungă. În cazul exemplului discutat mai sus, dacă secvența de intrare arată astfel: 1 1 1 1 1 1 3 4 4 4, atunci raportul de compresie va fi de 60%. În acest sens, se obține o eficiență mai mare a algoritmului RLE la comprimarea datelor grafice (în special pentru imaginile monocromatice).

Algoritmi ai grupului KWE

Algoritmul de compresie al cuvintelor cheie se bazează pe principiul codificării unităților lexicale în grupuri de octeți de lungime fixă. Un exemplu de articol lexical ar fi un cuvânt obișnuit. În practică, secvențele repetate de simboluri sunt alese pentru a juca rolul de unități lexicale și sunt codificate printr-un lanț de simboluri (cod) de lungime mai mică. Rezultatul codificării este plasat într-un tabel, formând un așa-numit dicționar.

Există destul de multe implementări ale acestui algoritm, dintre care cele mai comune sunt algoritmul Lempel-Ziv (algoritmul LZ) și modificarea acestuia, algoritmul Lempel-Ziv-Welch (algoritmul LZW). Dicţionar in acest algoritm este o listă potențial nesfârșită de fraze. Algoritmul începe cu un dicționar aproape gol care conține doar un șir codificat, așa-numitul șir NULL. Când citiți următorul caracter al secvenței de date de intrare, acesta este adăugat la linia curentă. Procesul continuă atâta timp cât linia curentă se potrivește cu o frază din dicționar. Dar, mai devreme sau mai târziu, linia curentă încetează să mai corespundă unei fraze din dicționar. În punctul în care linia curentă reprezintă ultima potrivire de dicționar plus caracterul mesajului tocmai citit, codificatorul produce un cod care constă din indexul potrivirii și următorul caracter care a întrerupt linia de potrivire. O frază nouă, constând din indexul de potrivire și următorul caracter, este adăugată în dicționar. Data viitoare când această frază apare într-un mesaj, poate fi folosită pentru a construi o frază mai lungă, ceea ce crește gradul de compresie a informațiilor.

Algoritmul LZW este construit în jurul unui tabel de fraze (dicționar) care înlocuiește șirurile de caractere ale mesajului comprimat în coduri cu lungime fixă. Tabelul are așa-numita proprietate de avans, adică pentru fiecare frază din dicționar, constând dintr-o anumită frază w și simbolul K, fraza w este introdusă și în dicționar. Dacă toate părțile dicționarului sunt complet completate, codificarea încetează să mai fie adaptativă (codificarea are loc pe baza frazelor deja existente în dicționar).

Algoritmii de compresie din acest grup sunt cei mai eficienți pentru datele text mari și sunt ineficienți pentru fișierele mici (din cauza necesității de a salva dicționarul).

Algoritmul Huffman

Algoritmul Huffman se bazează pe ideea de codificare a grupului de biți. În primul rând, se efectuează o analiză de frecvență a secvenței de date de intrare, adică se stabilește frecvența de apariție a fiecărui caracter găsit în ea. După aceasta, simbolurile sunt sortate în funcție de frecvența de apariție descrescătoare.

Ideea de bază este următoarea: cu cât apare mai frecvent un caracter, cu atât este codificat mai puțini biți. Rezultatul codificării este introdus în dicționarul necesar pentru decodare. Să ne uităm la un exemplu simplu care ilustrează modul în care funcționează algoritmul Huffman.

Să fie dat un text în care litera "A" apare de 10 ori, litera "B" - de 8 ori, "C" - de 6 ori, "D" - de 5 ori, "E" și "F" - de 4 ori fiecare . Apoi, una dintre opțiunile posibile de codare folosind algoritmul Huffman este prezentată în Tabelul 1.

Tabelul 1.

Frecvența de apariție

Cod de biți

După cum se poate observa din Tabelul 1, dimensiunea textului de intrare înainte de comprimare este de 37 de octeți, în timp ce după comprimare este de 93 de biți, adică de aproximativ 12 octeți (excluzând lungimea dicționarului). Raportul de compresie este de 32%. Algoritmul Huffman este universal; poate fi folosit pentru a comprima date de orice tip, dar este ineficient pentru fișiere mici (din cauza necesității de a salva dicționarul).

În practică, software-ul de compresie a datelor sintetizează acești trei algoritmi „puri”, deoarece eficiența lor depinde de tipul și volumul datelor. Tabelul 2 prezintă formatele comune de compresie și programele de arhivare corespunzătoare utilizate în practică.

Masa 2.

Format de compresie

Sistem de operare MS DOS

sistem de operare Windows

Program de arhivare

Program de dezarhivare

Program de arhivare

Program de dezarhivare

În plus, arhivatorii moderni oferă utilizatorului o gamă completă de servicii pentru lucrul cu arhivele, dintre care principalele sunt:

    crearea unei noi arhive;

    adăugarea de fișiere la o arhivă existentă;

    despachetarea fișierelor din arhivă;

    crearea de arhive autoextractor;

    crearea de arhive distribuite de dimensiune fixă ​​pentru medii de stocare mici;

    protejarea arhivelor cu parole împotriva accesului neautorizat;

    vizualizarea conținutului fișierelor de diferite formate fără a despacheta mai întâi;

    cauta fisiere si date in interiorul arhivei;

    verificarea virușilor din arhivă înainte de despachetare;

    selectarea si reglarea raportului de compresie.

Întrebări de control

1. Ce factori influențează gradul de redundanță a datelor? 2. Ce este o arhivă? Ce instrumente software se numesc arhivare? 3. De ce metodele de compresie care modifică conținutul datelor sunt numite ireversibile? 4. Dați exemple de formate de compresie cu pierderi. 5. Care este avantajul metodelor de compresie reversibilă față de cele ireversibile? Ce zici de dezavantaj? 6. Care este relația dintre raportul de compresie și eficiența metodei de compresie? 7. Care este ideea principală a algoritmului RLE? 8. Care este ideea principală a algoritmilor grupului KWE? 9. Care este ideea principală a algoritmului Huffman? 10. Ce arhivare software cunoașteți? Descrieți-le pe scurt.

    Informatică. Curs de bază. / Ed. S.V.Simonovici. - Sankt Petersburg, 2000

    A.P. Miklyaev, IBM PC User's Handbook ediția a 3-a M.:, „Solon-R”, 2000, 720 p.

    Simonovici S.V., Evseev G.A., Murakhovsky V.I. Ați cumpărat un computer: Ghidul complet pentru întrebări și răspunsuri pentru începători. - M.: CARTEA AST-PRESS; Inforcom-Press, 2001.- 544 p.: ill. (1000 de sfaturi).

    Kovtanyuk Yu.S., Solovyan S.V. Manual de autoinstruire pentru lucru calculator personal- K.:Junior, 2001.- 560 p., ill.

Supraveghetorul meu și cu mine pregătim o mică monografie despre prelucrarea imaginilor. Am decis să prezint comunității habra un capitol dedicat algoritmilor de compresie a imaginilor. Deoarece este greu să încadrezi un întreg capitol într-o singură postare, am decis să-l împart în trei postări:
1. Metode de compresie a datelor;
2. Compresie fără pierderi de imagine;
3. Compresie cu pierderi de imagine.
Mai jos puteți citi primul post din serie.

În prezent, există un număr mare de algoritmi de compresie fără pierderi, care pot fi împărțiți în două grupuri mari:
1. Algoritmi de flux și dicționar. Acest grup include algoritmi ai familiilor RLE (codarea lungimii de rulare), LZ* etc.. O caracteristică a tuturor algoritmilor din acest grup este că atunci când se codifică, nu sunt informații despre frecvențele simbolurilor din mesaj care sunt utilizate, ci informații despre secvențe întâlnite anterior.
2. Algoritmi pentru compresia statistica (entropia). Acest grup de algoritmi comprimă informațiile profitând de frecvențele neregulate cu care apar diferite caractere într-un mesaj. Algoritmii din acest grup includ algoritmi de codare aritmetică și de prefix (folosind Shannon-Fanno, Huffman, arbori secanți).
ÎN grup separat Se pot distinge algoritmi de conversie a informațiilor. Algoritmii acestui grup nu comprimă în mod direct informațiile, dar utilizarea lor simplifică foarte mult comprimarea suplimentară folosind algoritmi de flux, dicționar și entropie.

Algoritmi de flux și dicționar

Codificarea lungimii rulării

Run-Length Encoding (RLE) este unul dintre cei mai simpli și mai comuni algoritmi de compresie a datelor. În acest algoritm, o secvență de caractere repetate este înlocuită cu un caracter și de numărul de ori se repetă.
De exemplu, șirul „AAAAAA”, care necesită stocarea a 5 octeți (presupunând că un octet este alocat pentru a stoca un caracter), poate fi înlocuit cu „5A”, format din doi octeți. Evident, acest algoritm este mai eficient cu cât seria de repetări este mai lungă.

Principalul dezavantaj al acestui algoritm este eficiența sa extrem de scăzută pe secvențe de caractere care nu se repetă. De exemplu, dacă luăm în considerare secvența „ABABAB” (6 octeți), atunci după aplicarea algoritmului RLE se va transforma în „1A1B1A1B1A1B” (12 octeți). Există diferite metode pentru a rezolva problema caracterelor care nu se repetă.

Cel mai metoda simpla este următoarea modificare: octetul care codifică numărul de repetări trebuie să stocheze informații nu numai despre numărul de repetări, ci și despre prezența acestora. Dacă primul bit este 1, atunci următorii 7 biți indică numărul de repetări ale caracterului corespunzător, iar dacă primul bit este 0, atunci următorii 7 biți indică numărul de caractere care trebuie luate fără repetare. Dacă codificăm „ABABAB” folosind această modificare, vom obține „-6ABABAB” (7 octeți). Este evident că tehnica propusă poate crește semnificativ eficiența algoritmului RLE pe secvențe de caractere care nu se repetă. Implementarea abordării propuse este prezentată în Lista 1:

  1. tip
  2. funcția RLEEncode(InMsg: ShortString) : TRLEEncodedString;
  3. MatchFl: boolean;
  4. MatchCount: shortint ;
  5. EncodedString: TRLEEncodedString;
  6. N, i: octet ;
  7. ÎNCEPE
  8. N:=0;
  9. SetLength(EncodedString, 2 * lungime(InMsg));
  10. în timp ce lungimea (InMsg) >= 1 do
  11. ÎNCEPE
  12. MatchFl : = (lungime(InMsg) > 1 ) și (InMsg[ 1 ] = InMsg[ 2 ] ) ;
  13. MatchCount: = 1;
  14. în timp ce (MatchCount<= 126 ) and (MatchCount < length(InMsg) ) and ((InMsg[ MatchCount] = InMsg[ MatchCount + 1 ] ) = MatchFl) do
  15. MatchCount: = MatchCount + 1;
  16. dacă MatchFl atunci
  17. ÎNCEPE
  18. N:=N+2;
  19. EncodedString[ N - 2 ] : = MatchCount + 128 ;
  20. EncodedString[ N - 1 ] : = ord ( InMsg[ 1 ] ) ;
  21. altfel
  22. ÎNCEPE
  23. dacă MatchCount<>lungime(InMsg) atunci
  24. MatchCount : = MatchCount - 1 ;
  25. N : = N + 1 + MatchCount;
  26. EncodedString[ N - 1 - MatchCount] : = - MatchCount + 128 ;
  27. pentru i : = 1 la MatchCount do
  28. EncodedString[ N - 1 - MatchCount + i] : = ord (InMsg[ i] ) ;
  29. Sfârşit ;
  30. delete(InMsg, 1, MatchCount) ;
  31. Sfârşit ;
  32. SetLength(EncodedString, N) ;
  33. RLEEncode := EncodedString;
  34. Sfârşit ;

Decodificarea unui mesaj comprimat este foarte simplă și se reduce la o singură trecere prin mesajul comprimat, vezi Lista 2:
  1. tip
  2. TRLEEncodedString = matrice de octeți;
  3. funcția RLEDcode(InMsg: TRLEEncodedString): ShortString;
  4. RepeatCount: shortint ;
  5. i, j: cuvânt ;
  6. OutMsg: ShortString;
  7. ÎNCEPE
  8. OutMsg : = "" ;
  9. i := 0 ;
  10. in timp ce eu< length(InMsg) do
  11. ÎNCEPE
  12. RepeatCount : = InMsg[ i] - 128 ;
  13. i : = i + 1 ;
  14. dacă RepeatCount< 0 then
  15. ÎNCEPE
  16. RepeatCount := abs (RepeatCount) ;
  17. pentru j : = i la i + RepeatCount - 1 do
  18. OutMsg : = OutMsg + chr (InMsg[ j] ) ;
  19. i : = i + RepeatCount;
  20. altfel
  21. ÎNCEPE
  22. pentru j : = 1 la RepeatCount do
  23. OutMsg : = OutMsg + chr (InMsg[ i] ) ;
  24. i : = i + 1 ;
  25. Sfârşit ;
  26. Sfârşit ;
  27. RLEDcode := OutMsg;
  28. Sfârşit ;

A doua metodă de creștere a eficienței algoritmului RLE este utilizarea algoritmilor de transformare a informațiilor care nu comprimă direct datele, ci le aduc într-o formă mai convenabilă pentru compresie. Ca exemplu al unui astfel de algoritm, vom lua în considerare permutarea BWT, numită după inventatorii transformării Burrows-Wheeler. Această permutare nu schimbă caracterele în sine, ci doar le schimbă ordinea în șir, în timp ce subșirurile repetate după aplicarea permutației sunt colectate în grupuri dense, care sunt mult mai bine comprimate folosind algoritmul RLE. Conversia directă BWT se reduce la următorii pași:
1. Adăugarea la șirul original a unui caracter special de final de linie care nu apare în altă parte;
2. Obținerea tuturor permutărilor ciclice ale șirului original;
3. Sortarea șirurilor primite în ordine lexicografică;
4. Revenirea ultimei coloane a matricei rezultate.
O implementare a acestui algoritm este prezentată în Lista 3.
  1. const
  2. EOMsg = "|" ;
  3. funcția BWTEncode(InMsg: ShortString) : ShortString;
  4. OutMsg: ShortString;
  5. LastChar:ANSIChar;
  6. N, i: cuvânt ;
  7. ÎNCEPE
  8. InMsg : = InMsg + EOMsg;
  9. N : = lungime(InMsg) ;
  10. ShiftTable[ 1 ] : = InMsg;
  11. pentru i : = 2 la N do
  12. ÎNCEPE
  13. LastChar : = InMsg[ N] ;
  14. InMsg : = LastChar + copy(InMsg, 1 , N - 1 ) ;
  15. ShiftTable[ i] : = InMsg;
  16. Sfârşit ;
  17. Sortare(ShiftTable) ;
  18. OutMsg : = "" ;
  19. pentru i : = 1 la N do
  20. OutMsg : = OutMsg + ShiftTable[ i] [ N] ;
  21. BWTEncode := OutMsg;
  22. Sfârşit ;

Cel mai simplu mod de a explica această transformare este cu un exemplu specific. Să luăm șirul „ANANAS” și să fim de acord că sfârșitul caracterului șir va fi caracterul „|”. Toate permutările ciclice ale acestui șir și rezultatul sortării lor lexicografice sunt date în tabel. 1.

Acestea. Rezultatul unei conversii directe este șirul „|NNAAAC”. Este ușor de observat că acest șir este comprimat mult mai bine decât cel original de către algoritmul RLE, deoarece conţine subsecvenţe lungi de litere repetate.
Un efect similar poate fi obținut folosind alte transformări, dar avantajul transformării BWT este că este reversibilă, deși transformarea inversă este mai complicată decât cea directă. Pentru a restabili șirul original, trebuie să efectuați următorii pași:
Creați o matrice goală de dimensiunea n*n, unde n este numărul de caractere din mesajul codificat;
Completați coloana goală din dreapta cu mesajul codificat;
Sortați rândurile tabelului în ordine lexicografică;
Repetați pașii 2-3 atâta timp cât există coloane goale;
Returnează șirul care se termină cu caracterul de final de linie.

Implementarea conversiei inverse nu este dificilă la prima vedere, iar una dintre opțiunile de implementare este prezentată în Lista 4.

  1. const
  2. EOMsg = "|" ;
  3. funcția BWTDcode(InMsg: ShortString) : ShortString;
  4. OutMsg: ShortString;
  5. ShiftTable: matrice de ShortString;
  6. N, i, j: cuvânt;
  7. ÎNCEPE
  8. OutMsg : = "" ;
  9. N : = lungime(InMsg) ;
  10. SetLength(ShiftTable, N + 1) ;
  11. pentru i : = 0 la N do
  12. ShiftTable[ i] : = "" ;
  13. pentru i : = 1 la N do
  14. ÎNCEPE
  15. pentru j := 1 la N do
  16. ShiftTable[ j] : = InMsg[ j] + ShiftTable[ j] ;
  17. Sortare(ShiftTable) ;
  18. Sfârşit ;
  19. pentru i : = 1 la N do
  20. dacă ShiftTable[ i] [ N] = EOMsg atunci
  21. OutMsg : = ShiftTable[ i] ;
  22. delete(OutMsg, N, 1);
  23. BWTDcode := OutMsg;
  24. Sfârşit ;

Dar, în practică, eficiența depinde de algoritmul de sortare ales. Algoritmii banali cu complexitate pătratică vor avea, evident, un impact foarte negativ asupra performanței, de aceea se recomandă utilizarea unor algoritmi eficienți.

După sortarea tabelului obținut în pasul al șaptelea, trebuie să selectați un rând din tabel care se termină cu caracterul „|”. Este ușor de văzut că aceasta este singura linie. Acea. Ne-am uitat la transformarea BWT folosind un exemplu specific.

Pentru a rezuma, putem spune că principalul avantaj al grupului de algoritmi RLE este simplitatea și viteza de funcționare (inclusiv viteza de decodare), iar principalul dezavantaj este ineficiența setului de caractere care nu se repetă. Utilizarea unor permutări speciale mărește eficiența algoritmului, dar mărește și mult timpul de rulare (în special decodare).

Comprimarea dicționarului (algoritmi LZ)

Grupul de algoritmi de dicționar, spre deosebire de algoritmii grupului RLE, codifică nu numărul de repetări de caractere, ci secvențe de caractere întâlnite anterior. În timp ce algoritmii luați în considerare rulează, un tabel este creat dinamic cu o listă de secvențe deja întâlnite și codurile lor corespunzătoare. Acest tabel este adesea numit dicționar, iar grupul corespunzător de algoritmi este numit dicționar.

Cea mai simplă versiune a algoritmului de dicționar este descrisă mai jos:
Inițializați dicționarul cu toate caracterele care apar în șirul de intrare;
Găsiți în dicționar cea mai lungă secvență (S) care se potrivește cu începutul mesajului codificat;
Tipăriți codul secvenței găsite și eliminați-l de la începutul mesajului codificat;
Dacă nu se ajunge la sfârșitul mesajului, citiți următorul caracter și adăugați Sc în dicționar, treceți la pasul 2. În caz contrar, ieșiți.

De exemplu, dicționarul nou inițializat pentru expresia „CUCKOOKOOKUSHONKOOKUPILAKAHOOD” este afișat în tabel. 3:

În timpul procesului de compresie, dicționarul va fi completat cu secvențe găsite în mesaj. Procesul de actualizare a dicționarului este prezentat în tabel. 4.

La descrierea algoritmului, o descriere a situației în care dicționarul este complet completat a fost omisă în mod deliberat. În funcție de varianta algoritmului, este posibil un comportament diferit: ștergerea completă sau parțială a dicționarului, oprirea completării dicționarului sau extinderea dicționarului cu o creștere corespunzătoare a capacității de cod. Fiecare dintre aceste abordări are anumite dezavantaje. De exemplu, oprirea completării dicționarului poate duce la o situație în care dicționarul stochează secvențe care apar la începutul șirului care este comprimat, dar nu apar ulterior. În același timp, curățarea dicționarului poate duce la eliminarea secvențelor frecvente. Majoritatea implementărilor utilizate, la completarea dicționarului, încep să monitorizeze nivelul de compresie, iar când acesta scade sub un anumit nivel, dicționarul este reconstruit. În continuare, vom lua în considerare cea mai simplă implementare care oprește actualizarea dicționarului când este plin.

Mai întâi, să definim un dicționar ca o înregistrare care stochează nu numai subșirurile întâlnite, ci și numărul de subșiruri stocate în dicționar:

Subsecvențele întâlnite anterior sunt stocate în matricea Words, iar codul lor este numerele de subsecvență din această matrice.
Vom defini, de asemenea, funcțiile de căutare în dicționar și de adăugare la dicționar:

  1. const
  2. MAX_DICT_LENGTH = 256;
  3. funcția FindInDict(D: TDictionary; str: ShortString) : întreg ;
  4. r:întreg;
  5. i:intger ;
  6. fl:boolean ;
  7. ÎNCEPE
  8. r : = - 1 ;
  9. dacă D. Număr de cuvinte > 0 atunci
  10. ÎNCEPE
  11. i := D. Număr de cuvinte ;
  12. fl := false ;
  13. în timp ce (nu fl) și (i >= 0 ) fac
  14. ÎNCEPE
  15. i : = i - 1 ;
  16. fl : = D. Cuvinte [ i] = str;
  17. Sfârşit ;
  18. Sfârşit ;
  19. daca fl atunci
  20. r := i;
  21. FindInDict: = r;
  22. Sfârşit ;
  23. procedura AddToDict(var D: TDictionary; str: ShortString) ;
  24. ÎNCEPE
  25. dacă D. Număr de cuvinte< MAX_DICT_LENGTH then
  26. ÎNCEPE
  27. D. Număr de cuvinte : = D. Număr de cuvinte + 1 ;
  28. SetLength(D. Cuvinte, D. Număr de cuvinte) ;
  29. D. Cuvinte [ D. Număr de cuvinte - 1 ] : = str;
  30. Sfârşit ;
  31. Sfârşit ;

Folosind aceste funcții, procesul de codificare conform algoritmului descris poate fi implementat după cum urmează:
  1. funcția LZWEncode(InMsg: ShortString) : TEncodedString;
  2. OutMsg: TEncodedString;
  3. tmpstr: ShortString;
  4. D: TDicționar;
  5. i, N: octet;
  6. ÎNCEPE
  7. SetLength(OutMsg, length(InMsg) );
  8. N:=0;
  9. InitDict(D);
  10. în timp ce lungimea (InMsg) > 0 do
  11. ÎNCEPE
  12. tmpstr : = InMsg[ 1 ] ;
  13. în timp ce (FindInDict(D, tmpstr) >= 0 ) și (lungime(InMsg) > lungime(tmpstr) nu
  14. tmpstr : = tmpstr + InMsg[ lungime(tmpstr) + 1 ] ;
  15. dacă FindInDict(D, tmpstr)< 0 then
  16. delete(tmpstr, lungime(tmpstr), 1);
  17. OutMsg[ N] : = FindInDict(D, tmpstr) ;
  18. N:=N+1;
  19. delete(InMsg, 1 , length(tmpstr) );
  20. dacă lungimea (InMsg) > 0 atunci
  21. AddToDict(D, tmpstr + InMsg[ 1 ] );
  22. Sfârşit ;
  23. SetLength(OutMsg, N) ;
  24. LZWEncode := OutMsg;
  25. Sfârşit ;

Rezultatul codificării va fi numărul de cuvinte din dicționar.
Procesul de decodare se reduce la decodarea directă a codurilor și nu este nevoie să transferați dicționarul creat; este suficient ca în timpul decodării dicționarul să fie inițializat în același mod ca și în timpul codificării. Apoi dicționarul va fi complet restaurat direct în timpul procesului de decodare prin concatenarea subsecvenței anterioare și a simbolului curent.

Singura problemă este posibilă în următoarea situație: când este necesară decodarea unei subsecvențe care nu se află încă în dicționar. Este ușor de observat că acest lucru este posibil numai atunci când este necesar să extrageți un subșir care ar trebui adăugat la pasul curent. Aceasta înseamnă că subșirul satisface modelul cSc, adică. începe și se termină cu același caracter. În acest caz, cS este subșirul adăugat în pasul anterior. Situația avută în vedere este singura când este necesară decodarea unei linii care nu a fost încă adăugată. Având în vedere cele de mai sus, putem propune următoarea opțiune pentru decodarea unui șir comprimat:

  1. funcția LZWDcode(InMsg: TEncodedString): ShortString;
  2. D: TDicționar;
  3. OutMsg, tmpstr: ShortString;
  4. i: octet;
  5. ÎNCEPE
  6. OutMsg : = "" ;
  7. tmpstr : = "" ;
  8. InitDict(D);
  9. pentru i : = 0 la lungime (InMsg) - 1 do
  10. ÎNCEPE
  11. if InMsg[ i] >= D. WordCount atunci
  12. tmpstr : = D. Cuvinte [ InMsg[ i - 1 ] ] + D. Cuvinte [ InMsg[ i - 1 ] ] [ 1 ]
  13. altfel
  14. tmpstr : = D. Cuvinte [ InMsg[ i] ] ;
  15. OutMsg : = OutMsg + tmpstr;
  16. dacă i > 0 atunci
  17. AddToDict(D, D. Cuvinte [ InMsg[ i - 1 ] ] + tmpstr[ 1 ] ) ;
  18. Sfârşit ;
  19. LZWDcode := OutMsg;
  20. Sfârşit ;

Avantajele algoritmilor de dicționar includ eficiența lor mai mare de compresie în comparație cu RLE. Totuși, trebuie să înțelegem asta utilizare reală Acești algoritmi sunt asociați cu unele dificultăți de implementare.

Codificarea entropiei

Codificare folosind arbori Shannon-Fano

Algoritmul Shannon-Fano este unul dintre primii algoritmi de compresie dezvoltati. Algoritmul se bazează pe ideea de a reprezenta caractere mai frecvente folosind coduri mai scurte. Mai mult, codurile obținute folosind algoritmul Shannon-Fano au proprietatea de prefixitate: i.e. niciun cod nu este începutul oricărui alt cod. Proprietatea prefix asigură că codificarea este unu-la-unu. Algoritmul pentru construirea codurilor Shannon-Fano este prezentat mai jos:
1. Împărțiți alfabetul în două părți, probabilitățile totale ale simbolurilor în care sunt cât mai aproape unul de celălalt.
2. Adăugați 0 la codul de prefix al primei părți a caracterelor, adăugați 1 la codul de prefix al celei de-a doua părți a caracterelor.
3. Pentru fiecare parte (care conține cel puțin două caractere), efectuați recursiv pașii 1-3.
În ciuda simplității sale comparative, algoritmul Shannon-Fano nu este lipsit de dezavantaje, dintre care cel mai semnificativ este codarea neoptimală. Deși partiția la fiecare pas este optimă, algoritmul nu garantează un rezultat optim în ansamblu. Luați în considerare, de exemplu, rândul următor: "AAAABVGDEZH". Arborele Shannon-Fano corespunzător și codurile obținute pe baza acestuia sunt prezentate în Fig. 1:

Fără a folosi codificare, mesajul va ocupa 40 de biți (cu condiția ca fiecare caracter să fie codificat cu 4 biți), și folosind algoritmul Shannon-Fano 4*2+2+4+4+3+3+3=27 biți. Volumul mesajelor a scăzut cu 32,5%, dar mai jos vom arăta că acest rezultat poate fi îmbunătățit semnificativ.

Codare cu Huffman Trees

Algoritmul de codare Huffman, dezvoltat la câțiva ani după algoritmul Shannon-Fano, are și proprietatea prefixității și, în plus, redundanță minimă dovedită, ceea ce determină distribuția sa extrem de largă. Pentru a obține coduri Huffman, utilizați următorul algoritm:
1. Toate caracterele alfabetului sunt reprezentate ca noduri libere, iar greutatea nodului este proporțională cu frecvența caracterului din mesaj;
2. Din setul de noduri libere se selectează două noduri cu greutate minimă și se creează un nou nod (părinte) cu o pondere egală cu suma greutăților nodurilor selectate;
3. Nodurile selectate sunt eliminate din lista liberă, iar nodul părinte creat pe baza lor este adăugat la această listă;
4. Pașii 2-3 se repetă până când există mai multe noduri în lista liberă;
5. Pe baza arborelui construit, fiecărui caracter al alfabetului i se atribuie un cod de prefix;
6. Mesajul este codificat cu codurile primite.

Să luăm în considerare același exemplu ca și în cazul algoritmului Shannon-Fano. Arborele Huffman și codurile obținute pentru mesajul „AAAABVGDEJ” sunt prezentate în Fig. 2:

Este ușor de calculat că volumul mesajului codificat va fi de 26 de biți, ceea ce este mai mic decât în ​​algoritmul Shannon-Fano. Separat, este de remarcat faptul că, datorită popularității algoritmului Huffman, există în prezent multe opțiuni pentru codarea Huffman, inclusiv codarea adaptivă, care nu necesită transmiterea frecvențelor simbol.
Printre dezavantajele algoritmului Huffman, o parte semnificativă sunt problemele asociate cu complexitatea implementării. Folosirea simbolurilor variabilelor reale pentru a stoca frecvențele este asociată cu o pierdere de precizie, așa că în practică sunt adesea folosite variabile întregi, dar deoarece Greutatea nodurilor părinte este în continuă creștere, mai devreme sau mai târziu are loc un debordare. Astfel, în ciuda simplității algoritmului, implementarea corectă a acestuia poate provoca totuși unele dificultăți, în special pentru alfabetele mari.

Codarea cu arbori de funcții secante

Codarea folosind funcții secante este un algoritm dezvoltat de autori care vă permite să obțineți coduri de prefix. Algoritmul se bazează pe ideea de a construi un arbore, al cărui nod conține o funcție secantă. Pentru a descrie algoritmul mai detaliat, este necesar să se introducă mai multe definiții.
Un cuvânt este o secvență ordonată de m biți (numărul m se numește capacitatea cuvântului).
Un literal secant este o pereche de forma cifre-cifra valoare. De exemplu, literalul (4,1) înseamnă că bitul 4 al cuvântului trebuie să fie 1. Dacă condiția literalului este îndeplinită, atunci literalul este considerat adevărat, în caz contrar, este fals.
O secanta de k biți este un set de k literale. Dacă toate literalele sunt adevărate, atunci funcția secanta în sine este adevărată, în caz contrar, este falsă.

Arborele este construit astfel încât fiecare nod să împartă alfabetul în părți cât mai apropiate posibil. În fig. Figura 3 prezintă un exemplu de arbore secant:

Arborele funcțiilor secante în caz general nu garantează o codificare optimă, dar oferă extrem de de mare viteză funcționează datorită simplității funcționării în noduri.

Codare aritmetică

Codarea aritmetică este una dintre cele mai multe moduri eficiente compresia informatiei. Spre deosebire de algoritmul Huffman, codarea aritmetică permite codificarea mesajelor cu entropie mai mică de 1 bit per caracter. Deoarece Majoritatea algoritmilor de codare aritmetică sunt protejați de brevete; doar ideile de bază vor fi descrise mai jos.
Să presupunem că alfabetul utilizat conține N simboluri a_1,…,a_N, cu frecvențele p_1,…,p_N, respectiv. Apoi algoritmul de codare aritmetică va arăta astfel:
Luați ) ca jumătate de interval de lucru)

Cele mai bune articole pe această temă