Sunteți pe pagina 1din 7

COMPRESIA DATELOR - GENERALITI

1. Definiii
Termenul de compresie a datelor este, sper, unul destul de cunoscut. O posibil definiie general ar fi:

Compresia de date este ansamblul prelucrrilor ce se aplic unor date n


scopul reducerii dimensiunii reprezentrii acestora.
Eficiena compresiei obinut cu o metod oarecare poate fi apreciat prin raportul de compresie. n
contextul definiiei anterioare

Raportul de compresie este egal cu raportul dintre dimensiunea


reprezentrii datelor n lipsa compresiei i dimensiunea reprezentrii
datelor obinute n urma compresiei.
Uneori, pentru rapoarte de compresie mici, se consider raportul invers, exprimat de cele mai multe ori
n procente. De obicei trebuie determinat, n funcie de context, care din cele dou abordri este cea
folosit. n diverse cazuri particulare raportul de compresie este redefinit (particularizat) corespunztor
situaiilor respective.

Compresia se realizeaz prin schimbarea modului de reprezentare a datelor avnd deci de a face cu un
caz particular de codare (de aceea termenii de compresie i de codare vor fi folosii aproape ca
sinonime, dupa cum sunt consacrai pentru diferite metode). Codarea se face n raport cu un anumit
model al datelor, aflndu-ne astfel n cazul mai general de modelare, al cutrii unui model
corespunztor (optim) al datelor.

2. Clasificri
n cadrul acestui domeniu exist o mare varietate de metode, de cele mai multe ori prezentate
individual, fr a se ncerca integrarea acestora. Acest lucru impune clasificri, care se pot face dup
diverse criterii.

Cea mai general clasificare a metodelor de compresie se face dup eroarea de refacere a datelor. n
raport cu acest criteriu distingem dou categorii mari de metode:

1. Metode fr pierderi - n care datele se refac n totalitate, fr a exista nici o diferen ntre datele
originale i cele refcute. Aceste metode sunt cunoscute ca i metode LOSSLESS. Ele se
aplica n general n situaiile n care refacerea fr eroare este esenial: compresie de programe
executabile, surse de programe, texte, n general date de natur strict numeric.

1
2. Metode cu pierderi - n care datele se refac n limita unor erori considerate acceptabile. Acceptarea
din start a existenei unor erori duce la creterea spectaculoas a ratei de compresie fa de cazul
anterior. Termenul consacrat pentru aceste metode este cel de metode LOSSY. Aceste metode
se aplic n general n cazul datelor de natur analogic (date ce reprezint semnale care la
origine erau analogice) destinate n final tot unui operator uman. n aceast categorie intr
compresia semnalului audio i a semnalului video, semnale n a cror prelucrare, datorit naturii
lor analogice, gsim de obicei un cuantizor care se constituie oricum ntr-o surs de erori.

Delimitarea unei metode generale n lossless / lossy nu este strict. De exemplu, tehnicile predictive se
pot ncadra n ambele categorii, n funcie de datele pentru care se aplic (de natur numeric sau
analogic) i n funcie de existena n algoritm a unui cuantizor.

n funcie de modul cum evolueaza n timp modelul sursei de date, metodele de compresie se pot
mpri astfel:

1. Metode statice - n care modelul este fix, nu evolueaz n timp ci este construit apriori, pe baza unor
mesaje considerate tipice. n aceast categorie este inclus compresia realizat n cazul
transmisiilor fax. Este util n situaiile n care cunoatem statistica fluxului de date i aceasta
ramne neschimbat, rezultnd metode dedicate unui anumit context. Datorit caracterului
static se preteaz bine chiar i la implementri hardware. Schem general de compresie
(codare) pentru acest situaie este dat n Figura 1.1.

2. Metode semistatice - n care modelul este construit naintea codrii (comprimrii) pe baza datelor

Date Codare Date Decodare Date


de comprimat comprimate decomprimate

MODELUL SURSEI
Figura 1.1 Schema general de compresie pentru modelare static
ce urmeaz s fie comprimate i este meninut nemodificat pe durata acesteia. Avantajul const
n adaptarea metodei la fluxul de date (metodele fiind mai general aplicabile). Dezavantajele
sunt necesitatea parcurgerii de dou ori a fluxului de date i necesitatea transmiterii modelului
spre decodor, fapt care ncarc suplimentar fluxul de date i deterioreaz performanele. n
aceast categorie se ncadreaz metoda de comprimare bazat pe algoritmul Huffman
(cunoscut de obicei ca i metoda Huffman static notaie oarecum nefericit dar consacrat).
Schem general de compresie (codare) pentru aceast situaie este dat n Figura 1.2.

2
Date Codare Date Decodare Date
de comprimat comprimate decomprimate

Model Model
Sursa Sursa

Figura 1.2 Schema general de compresie pentru metodele semistatice

3. Metode dinamice (adaptive) - n care compresia ncepe la o anumit stare a modelului, aceeai att
n cazul comprimrii ct i n cel al decomprimrii. Starea iniial a modelului poate fi la rndul
ei determinat ca i n unul din cazurile anterioare. Fiecare simbol se codeaz pe baza modelului
curent. Dup codare sau respectiv decodare (la decodor) starea modelului se actualizeaz n
acelai mod att la codor ct i la decodor. Se elimin astfel cele dou dezavantaje importante ale
metodelor semistatice. Cele mai cunoscute metode de acest tip sunt compresia Huffman adaptiv
i metodele de dicionar. n acest caz schema general de compresie devine cea din Figura 1.3.

Date Codare Date Decodare Date


de comprimat comprimate decomprimate

Model Model
Sursa Sursa
Figura 1.3 Schema general de compresie pentru modelare dinamic (adaptiv)

n funcie de natura informaiilor pe baza crora se construiete modelul putem clasifica metodele de
compresie n (clasificare care acoper doar metodele lossless):

1. Metode de compresie bazate pe modelarea statistic a surselor discrete


Modelarea statistic a unei surse discrete de informaie const n asocierea unei probabiliti de
apariie fiecrui simbol al alfabetului sursei urmat apoi de atribuirea de cuvinte de cod cu un
numr mai mic de bii cuvintelor cu o probabilitate de apariie mai mare. Din aceast categorie
fac parte codificarea Shannon-Fano, codificarea Huffman static (optim pentru cazul codificrii
simbol cu simbol), codificarea Huffman dinamic, codificarea aritmetic (codific secvene de
simboluri i nu simboluri individuale).

2. Metode de compresie bazate pe modelarea lingvistic a surselor discrete


Aceste metode au la baz faptul c irul de simboluri generate de surs prezint constrngeri n
ceea ce privete combinaiile care pot s apar. Datorit acestor constrngeri nu toate
combinaiile posibile apar cu aceeai frecven. Ideea este de a construi un dicionar din cuvinte
3
ale limbajului asociat sursei. Ulterior inserrii unui cuvnt n dicionar n cazul oricrei apariii a
cuvntului acesta se nlocuiete cu o informaie despre poziia sa n dicionar. n acest caz
modelul sursei este reprezentat de dicionar. Din aceast categorie fac parte algoritmii LZ77,
LZ78 , LZW.

3. Model general de compresie - decompresie


Cel mai general model al unui sistem de compresie de date este cel din Figura 1.4. Prima transformare
este transformarea care reduce entropia cu scopul de a elimina parametrii mesajului care nu au
importan pentru destinatar (specific cazului lossy). Transformarea urmtoare conserv entropia
datelor dar reduce redundana n scopul mririi eficienei transmisiunii sau stocrii (specific cazului
lossless). n cazul n care transmisia se face pe un canal cu zgomot se poate reintroduce o anumit
redundan prin utilizarea de coduri corectoare sau detectoare de erori. Deoarece aceste coduri nu
realizeaz o compresie ci dimpotriv o cretere a dimensiunii datelor ele nu vor fi tratate n continuare.

Sursa Transformri Transformri Codare


Reducere Entropie Conservare Entropie coduri corectoare

Canal
(posibil cu perturbaii)

Decodare Transf. inverse Transformri Destinatar


coduri corectoare Conservare Entropie Reintroducere entropie
Figura 1.4 Modelul general de compresie - decompresie

4. Cteva exemple
n continuare prezentm cteva exemple simple, relativ empirice, de metode de compresie. Acestea nu
se folosesc n practic de sine stttor, n aceast form simpl, ci de obicei ca etape intermediare n
scheme mai elaborate. Scopul principal al prezentrii acestora este acela de a exemplifica conceptele
de metod static / semistatic / dinamic i de metod statistic / de dicionar. Analiznd rezultatele
obinute vom observa ca niciuna din metode nu este util n toate situaiile, pentru unele fluxuri
(nefericit alese) nu doar c nu obinem compresie, ci am putea avea chiar o cretere a dimensiunii
datelor.

4.1. Codare RLE (Run Length Encoding)


Prezentm n continuare o versiune RLE aa cum este implementat n formatul BinHex 4.0. Acest
format impune, pe lng codarea RLE, i existena unui comentariu standard, unui antet impus i

4
codare pe 7 biti a fluxului binar rezultat. n cele ce urmeaz prezentm doar etapa RLE, celelalte pot fi
gsite n documentaia BinHex 4.0.

Ideea de baz la RLE este aceea de codare a lungimii secvenelor repetitive (numite runs). n
continuare prezentm un flux de intrare i fluxul rezultat n urma codrii RLE:

Flux intrare Flux codat RLE

00 11 22 33 44 55 66 77 00 11 22 33 44 55 66 77
11 22 22 22 22 22 22 33 11 22 90 06 33
11 22 90 33 44 11 22 90 00 33 44

Din analiza exemplului rezult urmtoarele:


Caracterele care nu sunt parte a unei repetri (run) nu sufer nici o prelucrare.
Run-urile se nlocuiesc cu o triplet reprezentnd caracterul repetat, markerul de repetare 90H i
lungimea repetrii
n cazul apariiei n fluxul de date a markerului 90H acesta trebuie nlocuit cu o secven
specific (speculnd faptul c run-urile nu au lungime 0)

Chiar dac n practic putem impune alt mod de reprezentare trebuie s rezolvm cele dou probleme:
codarea run-ului i apariia marker-ului.

Observm c metoda devine util doar n cazul existenei run-urilor de lungime minim 4 (run-uri mai
scurte se las neschimbate) i eficiena ei este redus de existena marker-ului n fluxul de date (caz
care duce la o expandare a fluxului).

Aa cum a fost prezentat metoda se bazeaz pe modelare static a fluxului de date. Dac dorim o
modelare semistatic putem face o analiz a fluxului n avans i s alegem ca i marker caracterul care
apare de cele mai puine ori n flux. Evident, noul marker trebuie transmis decodorului (de exemplu ca
primul caracter din fluxul codat). Dac dorim o modelare dinamic putem face o analiz periodic a
fluxului deja transmis i schimba din mers marker-ul.

4.2. Codare statistic simpl


Pentru exemplificarea acestei metode propunem codarea urmtorului flux:
ABABACAD
Cea mai simpl codare ar fi codarea pe 2 bii a fiecrui simbol (corespunztoare unui alfabet cu 4
simboluri) de exemplu astfel:
A 00, B 01, C 10, D 11
5
Astfel, secvena codat devine:
0001000100100011
avnd deci 16 bii.

Codarea statistic presupune realizarea statisticii apariiei simbolurilor i alocarea de coduri mai scurte
simbolurilor cu frecven de apariie mai mare. Evalum deci frecvenele de apariie:
A 4, B 2, C 1, D 1
i alocm coduri corespunztor:
A 0, B 10, C 110, D - 111
Fluxul codat devine acum:
01001001100111
avnd deci doar 14 bii, realiznd o compresie fa de situaia anterioar.

Metoda se ncadreaz n categoria metodelor semistatice, la prima trecere construind modelul


(codurile) i abia la a doua trecere realiznd codarea propriu-zis. Pentru implementarea practic a
metodei trebuie transmise decodorului codurile alocate fiecrui simbol, chestiune neglijat anterior,
care ar putea compromite ctigul obinut. Deocamdat nu am specificat cum trebuie alese codurile
pornind de la frecvenele de apariie (de exemplu prin metodele Shanon-Fano sau mai ales Huffman)
dar reinem ideea de a ine cont de statistica fluxului de date (preferabil dezechilibrat).

4.3. Codare bazat pe dicionar i MTF


Pentru acest exemplu considerm secvena ABCDDDCCBBAA pe care o codm bazat pe dicionar.
Construim un dicionar cu toate simbolurile (deci care conine ABCD) i prin codare emitem indexul
n acest dicionar. Cazul dicionarului static este prezentat n primele coloane ale tabelul urmtor:

Dicionar static Dicionar adaptiv MTF


Index Dicionar Index Dicionar
Flux Dicionar Flux
(codare) curent (codare) actualizat
A ABCD 0 A ABCD 0 ABCD
B ABCD 1 B ABCD 1 BACD
C ABCD 2 C BACD 2 CBAD
D ABCD 3 D CBAD 3 DCBA
D ABCD 3 D DCBA 0 DCBA
D ABCD 3 D DCBA 0 DCBA
C ABCD 2 C DCBA 1 CDBA
C ABCD 2 C CDBA 0 CDBA
B ABCD 1 B CDBA 2 BCDA
B ABCD 1 B BCDA 0 BCDA
A ABCD 0 A BCDA 3 ABCD
A ABCD 0 A ABCD 0 ABCD

6
Obinem prin codare secvena 012333221100. Evident, deocamdat nu am ctigat absolut nimic.

n continuare considerm metoda Move To Front (MTF) de actualizare a dicionarului. Astfel, dup
codarea unui caracter pe baza dicionarului acest caracter este mutat n fa. Se ncearc s se
favorizeze astfel reprezentarea simbolurilor care se repet la interval scurt, indexul rezultat fiind n acel
caz de valoare mai mic. Metoda este una cu modelare dinamic bazat pe dicionar i, ca toate
metodele dinamice, const n:
Codare / decodare pe baza modelului curent (dicionarului curent)
Actualizarea modelului (dicionarului)

n ultimele coloane ale tabelului anterior este prezentat aplicarea metodei MTF pe datele considerate.
La fiecare pas dicionarul curent este cel obinut prin actualizarea de la pasul anterior. Fluxul rezultat
este 012300102030.

Dac construim histograma de apariie a indecilor generai constatm dezechilibrarea distribuiei


valorilor n sensul favorizrii indecilor mici:

Fr MTF Cu MTF
0 *** 0 ******
1 *** 1 **
2 *** 2 **
3 *** 3 **
Acest fapt permite aplicarea asupra fluxului generat a unei metode statistice (de genul celei prezentate
anterior) care va avea performane bune dac fluxul este dezechilibrat. Constatm c metoda este
valoroas ca etap intermediar ntr-un lan mai lung de prelucrri (idee general valabil n compresia
de date). Evident, dac presupunerea privind repetarea simbolurilor nu este justificat, efectul MTF
poate fi nesemnificativ sau chiar negativ. Metoda MTF poate fi folosit i n cazul n care dicionarele
conin iruri de simboluri (cazul uzual n practic) nu numai simboluri individuale cum a fost prezentat
anterior pentru simplitate. De asemenea se pot lua n considerare i actualizarea prin mutarea n fa
doar cu un numr de k poziii (nu pn n prima poziie) i mutarea doar n cazul repetrii utilizrii
unei anumite intrri din dicionar (nu la fiecare utilizare).

S-ar putea să vă placă și