Formate de comprimare a datelor

Articolul se ocupă cu spectru împrăștiat și tipuri de etanșări de acces. Acesta descrie caracteristicile de bază și beneficiile fiecărei abordări.

principii și caracteristici ale funcționării demodularea amplificatoare logaritmice sunt luate în considerare în detaliu. Caracteristicile de popular printre dezvoltatorii amplificator AD8307. Aceasta stabilește domeniul de utilizare a amplificatoarelor logaritmice.







Tabel. 1. Metode de clasificare de compresiune: lossless și lossy

Imaginile transmise prin Internet sunt un bun exemplu de ce este de compresie a datelor necesare. Să presupunem că doriți să descărcați de pe internet o fotografie digitală color prin intermediul 33.6-kbit / s modem. Dacă imaginea nu este comprimat (de exemplu, este TIFF-fișier), acesta se va ridica la aproximativ 600 KB. Când comprimați fotografii fără pierderi (în GIF-fișier) va scădea dimensiunea până la aproximativ 300 KB. compresie lossy metoda (JPEG format) va reduce dimensiunea fișierului de până la 50 KO. Incarcarea acestor trei fișiere este 142, 72 și 12, respectiv. E o mare diferență. JPEG este ideal pentru lucrul cu fotografii digitale, în timp ce GIF este utilizat pentru imagini numai desenate.

A doua modalitate de clasificare a metodelor de compresie a datelor este ilustrată în tabelul 2. Majoritatea programelor de compresie a lucra cu aceste grupuri, care sunt preluate din fișierul sursă este comprimat și scrise în fișierul de ieșire. De exemplu, o astfel de tehnică este CSQ (coarser Eșantionarea și cuantizarea - prelevarea de probe inexacte și digitizare). Să presupunem că comprimat semnal digital, cum ar fi un semnal audio care este digitalizat până la 12 biți. Poate fi citit din două eșantioane adiacente ale fișierului sursă (24 biți) pentru a se debarasa de un eșantion se debarasa complet cel mai puțin semnificativi 4 biți ai celuilalt eșantion, scrie apoi 8 biți rămași în fișierul de ieșire. Când cei 24 de biți de intrare și de ieșire 8 aspect algoritm raportul lossy este de 3: 1. Această metodă este foarte eficient atunci când este utilizat cu o compresie de transformare. este fundamentul JPEG algoritm.

Tabel. 2. Clasificarea metodelor de compresie: fixă ​​și mărimea grupului variabil

Numărul metoda CSQ fix de biți citite din fișierul de intrare, precum și un număr fix mai mic în scris în fișierul de ieșire. Alte tehnici de compresie vă permit să creați un număr variabil de biți pentru a citi sau a scrie. Motivul pentru care în tabel nu sunt înregistrate în format JPEG și MPEG, adică algoritmii de componente, care combină o varietate de alte metode.

Fișierele de date conțin aceleași personaje repetate de multe ori la rând. De exemplu, fișierele text în folosit pentru separarea spațiilor de propuneri de indentare, de masă, etc. Semnalele digitale conțin, de asemenea, aceleași valori, indicând faptul că semnalul rămâne neschimbat. De exemplu, imaginea de noapte cerul poate conține o lungă serie de caractere care reprezintă un fundal întunecat, și muzica digitală poate fi o lungă serie de zero-uri între melodii. -Codare RLE (codare Run lungime - run-lungime de codificare) este o metodă de comprimare a acestor tipuri de fișiere.
Figura 1 ilustrează principiul acestei codificare a secvenței de date cu repetarea frecventă a unei serii de zerouri. Ori de câte ori zero este întâlnită în intrare, fișierul de ieșire este scris două valori: zero, indicând începutul codificării, și numărul de zerouri din serie. În cazul în care durata medie a alerga mai mult de două, are loc comprimare. Pe de altă parte, o mulțime de zerouri unice în datele pot duce la faptul că fișierul codificat va fi mai mare decât originalul.

Fig. 1. Exemplul RLE-codare

Datele de intrare pot fi privite ca octeți individuali sau grupuri, cum ar fi numere reale cu virgulă. RLE-codare poate fi utilizat numai în cazul în care același semn (în cazul zero, în exemplul de mai sus), caractere multiple sau toate caracterele.

Această metodă a fost dezvoltată de Huffman în anii 1950. Metoda se bazează pe frecvența relativă a elementelor individuale. Elementele comune sunt codificate de o secvență scurtă de biți. Figura 2 prezintă o histogramă a valorilor unui fișier mare octet ASCII. Mai mult de 96% din fișierul este format din 31 de caractere: litere mici, spații, virgule, și un retur de car.

Algoritmul atribuie fiecare dintre aceste cinci biți standard de simboluri de cod binar schemă 00000 = a, b = 00001, 00010 = c, etc. Acesta permite 96% din fișierul pentru a reduce volumul la 5/8. Acesta din urmă este o combinație 11111 ar indica faptul că simbolul transmis nu este inclus în grupul de 31 standard de caractere. Următorii opt biți din dosar indică faptul că este un personaj în sootovetstvii ASCII cu alocare standard de. Astfel, 4% din simboluri în fișierul de intrare pentru prezentare necesită 5 + 8 = 13 biți.

Principiul acestui algoritm este de a atribui simboluri utilizate frecvent mai puțini biți și caractere rar apar - numărul mai mare de biți. În acest exemplu, numărul mediu de biți necesar pentru fiecare simbol sursă, egal cu 0,96. 5 + 0,04. 13 = 5.32. Cu alte cuvinte, raportul total de comprimare este de 8 biți / 5,32 biți sau 1.5. 1.

Fig. 2. Histogramă ASCII valori de fragmente de text ale acestui articol

Figura 3 este o schemă simplificată a codarea Huffman. Lista de coduri conține simboluri de probabilitate a se folosi cu A pentru G, disponibile în secvența de date originale, precum și conformitatea acestora. Codurile de lungime variabilă sunt sortate în grupuri de standard, de opt biți. Când decomprima datele toate grupurile sunt aranjate într-o secvență de zerouri și cele, care permite să se separe fluxul de date fără ajutorul markerilor. Procesarea fluxului de date, extrage programul generează un cod valid, iar apoi se trece la următorul caracter. O astfel de metodă de formare a codului oferă o lectură lipsită de ambiguitate a datelor.







Termenul de „codare delta“ denotă conservarea mai multor metode sau date sub forma diferenței dintre eșantioane succesive (sau simboluri), dar nu pentru a păstra ei înșiși mostre. Figura 4 prezintă un exemplu de funcționare a mecanismului. Prima valoare din fișierul codat este același ca și originalul. Toate următoarele valori din fișierul codificat sunt egale cu diferența dintre corespunzătoare și valorile anterioare ale fișierului de intrare.

Fig. 4. Exemplu de codificare delta

codificare Delta utilizat pentru compresia datelor, fișierul original, în cazul în care valorile variază lin. și anume diferența dintre următoarele valori pentru fiecare altul este mic. Acest lucru nu este cazul pentru textul ASCII, codul executabil, dar acesta este un caz comun atunci când informațiile vine sub forma unui semnal. De exemplu, Figura 5a prezintă un fragment audio digitalizate cu 8 biți, iar toate probele au valori în intervalul -127-127. Figura 5b conține versiunea codificată a semnalului, principala diferență de semnalul original, care este mai mică amplitudine. Cu alte cuvinte, codarea delta crește probabilitatea ca fiecare valoare a eșantionului este aproape de zero, iar probabilitatea ca acesta este considerabil mai mare decât această valoare este mică. Odată cu distribuția inegală a probabilității de Huffman de lucru. În cazul în care semnalul original nu se modifică sau se schimbă liniar, rezultând într-o delta-codificare va fi mostre din seria cu aceleași valori, acesta funcționează cu RLE-algoritm. Astfel, în metoda de compresie fișier standard utilizează codificare delta, urmată de aplicarea unei metode sau Huffman RLE-codare.

Fig. 5. EXEMPLU codificare delta

Mecanism de codare delta poate fi extinsă la o metodă mai completă numită liniară de codificare predictive (Linear Predictive Coding, LPC).
Pentru a înțelege această metodă, ne imaginăm că a fost codificat primele 99 de mostre ale semnalului de intrare și este necesară pentru a face o selecție la numărul 100. Ne întrebăm despre ce cel mai probabil este semnificația? Răspunsul la această întrebare codifică delta este presupunerea că valoarea anterioară, proba 99-lea. Această valoare preconizată este utilizată ca valoare de referință în codificarea eșantionului 100. Astfel, diferența dintre valoarea eșantionului și așteptarea este plasat în imaginea codificată. Metoda LPC stabilește valoarea cea mai probabilă în baza ultimelor câteva mostre. Algoritmii utilizați în acest lucru se aplică z transformare și a altor metode matematice.

EXEMPLUL codebook

Fig. 6. EXEMPLU compresiune conform tabelului de codificare

Metoda LZW comprimă datele folosind 256-4095 coduri care reprezintă o secvență de octeți. De exemplu, codul 523 poate reprezenta o secvență de trei octeți: 231 124 234. Ori de câte ori secvența de algoritmul de compresie detectează în fișierul de intrare, fișierul este pus în codul codificat 523. La despachetarea codul 523 este convertit printr-un tabel în secvența originală a trei octeți. Cu cât secvența, codul alocabilă de identitate și cu atât mai des se repetă, cu atât mai mare rata de compresie.
Există două obstacole principale în calea utilizării acestei metode de compresie: 1) modul de determinare secvențe care ar trebui să fie specificate în tabelul de cod, și 2) cum să se asigure că programul decomprima aceeași masă, care utilizează un program de compresie. Algoritmul LZW poate rezolva aceste probleme.

În cazul în care programul LZW începe să codifice fișierul, tabelul conține numai primele 256 de intrări - restul este gol. Acest lucru înseamnă că primele coduri sunt primite în fișierul comprimat sunt octeti unice ale fișierului sursă care urmează să fie convertite în grupuri de 12 biți. Odată cu continuarea algoritmului de codificare identifică secvențele de date-repetarea LZW și le adaugă la masa de cod. Compresia începe atunci când secvența este găsit din nou. este esența metodei că secvența fișierului de intrare nu se adaugă la tabelul de cod, în cazul în care deja a fost plasată într-un fișier comprimat ca un singur caracter (coduri 0-255). Aceasta este o condiție importantă, deoarece permite programul pentru a restaura tabela de codificare despachetare direct din datele comprimate, fără a fi nevoie de transmitere a acestuia separat.

Din multitudinea de algoritmi de compresie sunt pierderi de codare prin transformare a fost cel mai popular. Cel mai bun exemplu al acestei metode - popular standardul JPEG (Joint Fotografi Experts Group - Grupul mixt de experți privind prelucrarea mecanică a imaginilor fotografice). Luați în considerare exemplul lucrărilor pe algoritmul de compresie JPEG este lossy.

Am discutat deja o metodă simplă de compresie cu pierderi CSQ, ceea ce reduce numărul de biți per eșantion sau eliminate complet unele probe. Ambele recepție poate obține rezultatul dorit - un fișier devine mai mică datorită degradării calității semnalului. Este clar că aceste metode simple nu funcționează în cel mai bun mod.

Transformarea de compresie bazată pe condiția de simplu: în semnalul transformat (de exemplu, folosind transformata Fourier,) a primit valori de date nu poartă aceeași sarcină de trafic. În special, componentele de semnal de frecvență joasă au început să joace un rol mai important decât componentele de înaltă frecvență. Eliminarea 50% din biții componentelor de înaltă frecvență pot, de exemplu, îndepărtarea de doar 5% din informațiile codificate.

Din figura 7 se vede că, JPEG-compresie începe prin împărțirea imaginii în grupe de mărime 8 × 8 pixeli. Algoritmul complet JPEG nu au lucrat cu o mare varietate de biți per pixel, inclusiv informații de culoare. In acest exemplu, fiecare pixel este un singur octet, o scală gri în intervalul 0-255. Aceste grupuri de 8 × 8 pixeli sunt procesate când este comprimat în mod independent. Aceasta înseamnă că fiecare grup de primii 64 octeți reprezentați. După transformarea și îndepărtarea fiecărui grup de date este reprezentat, de exemplu, 2-20 bytes. Când decomprima fișierul comprimat necesită același număr de octeți pentru apropierea grupului inițial de 8 × 8. Aceste grupuri sunt apoi aproximate împreună, recrearea imaginea necomprimat. De ce grup utilizați dimensiunea de 8 × 8, × 16 și nu 16? Această grupare a fost fondată pe baza dimensiunii maxime posibile, care a lucrat cip la momentul de dezvoltare a standardului.

Fig. 7. Exemplu pentru metoda de compresie JPEG. Trei grupuri de 8? 8 prezentate într-o vedere mărită, reprezintă valorile pixelilor individuali

multe transformări diferite au fost investigate pentru punerea în aplicare a metodelor de compresie. De exemplu, Karhunen-Loeve transforma oferă cea mai mare rata de compresie, dar este dificil de realizat. Transformata Fourier metoda este implementată mult mai ușor, dar nu oferă o compresie destul de bun. În final, alegerea a fost făcută în favoarea varietății metodei Fourier - DCT (Transformare Cosinus Discretă - DCT).

În algoritmul JPEG exemplu arată modul în care mai multe scheme de compresie sunt combinate, oferind o mai mare eficiență. Toate procesul de compresie JPEG este alcătuit din următoarele etape:
- imaginea este împărțită în grupe de 8 × 8;
- fiecare grup este transformată printr-o transformare DCT;
- fiecare element spectral 8 x 8 este comprimat prin reducerea numărului de biți și ștergerea unora dintre componentele cu tabelul de cuantizare;
- un spectru modificat este transformat dintr-o matrice de 8 × 8 într-o secvență liniară, toate componentele de înaltă frecvență, care sunt plasate la capătul său;
- o serie de zero-uri este comprimat folosind metoda RLE;
- secventa codificate fie Huffman sau metode aritmetice pentru a produce un fișier comprimat.

1. Steven W. Smith, date tutorial de compresie partea 1, partea 2 și partea 3.