Sunteți pe pagina 1din 16

Metode de compresie

1. Codarea Huffman
Atunci cnd se codific n mod individual simbolurile unei surse
de informaie, codarea Huffman conduce la cel mai mic numr
de simboluri de cod pentru fiecare simbol surs. Codul obinut
este optimal pentru o valoare fixat n , cu condiia ca
simbolurile surs s fie codificate unul cte unul.
n practic, simbolurile surs sunt fie intensiti de imagine, fie
ieirea unui operator de transformare a intensitii.
Primul pas n codarea Huffman este formarea unei secvene
de reducere a surselor prin ordonarea probabilitilor
simbolurilor considerate i combinarea simbolurilor cu
probabilitatea cea mai mic ntr-un singur simbol n sursa
redus.
Fig. 1 ilustreaz acest proces pentru o codare binar.

n coloana din stnga se noteaz simbolurile surs ordonate dup


probabilitile lor, descresctor, de sus n jos. Pentru a forma prima
reducere cele dou probabiliti de jos (cele mai mici) se combin
pentru a forma un simbol compus cu probabilitatea egal cu suma
celor dou probabiliti iniiale. Acest simbol compus i probabilitatea
asociat se plaseaz n coloana primei reduceri astfel nct
probabilitile s fie ordonate, din nou, descresctor, de sus n jos.
Procesul se repet pn cnd sursa redus are numai dou
simboluri.

Al doilea pas este codificarea propriu-zis Se ncepe prin


codarea sursei reduse cu cel mai mic numr de simboluri.
Codul binar minimal pentru sursa cu dou simboluri este codul
de un bit: 0 i 1.
Dup cum se poate observa n Fig. 2, simbolurile 0 i 1 se
asigneaz celor dou simboluri din coloana din dreapta
(aleator).

Pentru c simbolul sursei reduse care are probabilitatea 0.6 a


fost generat din combinarea a dou simboluri ale sursei reduse
trei (din stnga), valoarea 0 folosit pentru a codifica acest
simbol este asignat ambelor simboluri din sursa 3, apoi se
adaug arbitrar 0 i 1 pentru a forma dou coduri de cte doi
bii. Se repet aceast procedur pn se codific sursa
iniial.

Lmed = (0.4 1) + (0.3 2) + (0.1 3) + (0.1 4) +

+ (0.06 5) + (0.04 5) = 2.2 biti pixel


Metoda Huffman produce un cod optimal. Dup ce a fost
obinut codul, codarea i/sau decodarea fr erori se
realizeaz pe baza unui tabel.
Codul propriu-zis este numit cod bloc pentru c fiecare simbol
surs este transformat ntr-o secven fix de simboluri de cod.

Este instantaneu pentru c fiecare cuvnt de cod dintr-un ir de


simboluri de cod poate fi decodificat fr a lua n considerare
succesiunea de simboluri.
Este unic decodabil pentru c orice ir de simboluri de cod
poate fi decodificat ntr-un singur mod.
Deci, orice ir de simboluri codificate Huffman poate fi
decodificat examinnd simbolurile individuale ale irului de la
stnga la dreapta.
Pentru codul binar din Fig. 2, decodificarea de la stnga la
dreapata a irului 010100111100 conduce la: primul cuvnd de
cod valid este 01010, care corespunde simbolului a3 , apoi 011
care corespunde simbolului a1... Mesajul decodificat este
a3 a1a 2 a 2 a6 .

Ex.
Imagine cu niveluri multiple de gri din fig. 3 este 512 512 8 i
are histograma indicat.

Pentru c intensitile nu sunt egal probabile, se poate


implementa n MATLAB procedura Huffman pentru a codifica
intensitile cu 7.428 bii/pixel (incuznd tabelul de coduri
necesar pentru reconstrucia imaginii iniiale).
Reprezentarea comprimat are o entropie mai mare dect
entropia estimat (7.3838 bii/pixel, din ec. ???) cu
512 2 (7.428 7.3838) sau 11587 bii, aproximativ 0.6% .
Raportul de compresie i redundana relativ sunt

8
C=
= 1.077
7.428
1
R = 1
= 0.0715
1.077
Adic, 7.15% din imaginea iniial codificat cu lungime fix de
8 bii, a fost eliminat pentru c a fost redundant.

2. Codarea LZW Lempel Ziv Welch


n Cap. anterior i codarea Huffman am luat n considerare
eliminarea redundanei codului.
n acest paragraf: compresia fr erori care ia n considerare
redundana spaial dintr-o imagine.
Metoda de codare LZW asigneaz cuvinte de cod de lungime
fix secvenelor cu lungime variabil ale sursei de simboluri.
Shannon: codificarea secvenelor de simboluri ale sursei i nu
simboluri individuale.
O caracteristic a codificrii LZW este aceea c nu este nevoie
de cunoaterea a priori a probabilitii de apariie a simbolurilor
care trebuie codificate.
LZW GIF, TIFF, PDF.

Ex. Lena, o imagine 512 512 8.


Folosind Adobe Photoshop, o versiune TIFF necomprimat a
acestei imagini ocup 286740 bytes pe disc: 262144 bytes
pentru imaginea 512 512 8 plus 24596 bytes overhead.
Folosind opiunea TIFF compresie LZW, se obine un fiier de
224420 bytes. Raportul de compresie este C = 1.28 .
La Huffman C = 1.077 .
Compresia suplimentar se datoreaz eliminrii unora din
redundanele spaiale.

Codarea LZW este destul de simpl conceptual.


La nceputul procesului de codare se construiete o carte de
coduri (sau un dicionar) care conine simboluri surs ce trebuie
codificate.
Pentru imaginile cu niveluri multiple de gri, pe 8 bii, primele
256 cuvinte de cod se asigneaz intensitilor 0,1,2,...,255 .
Pe msur ce codificatorul examineaz n mod secvenial
pixelii din imagine, secvenele de intensiti care nu sunt n
dicionar se plaseaz n locaii determinate n mod algoritmic
(de ex, la locaia urmtoare nefolosit).
De exemplu, dac primii doi pixeli din imagine sunt albi,
secvena 255 255 poate fi asignat locaiei 256, adresa care
urmeaz locaiilor rezervate pentru nivelurile de intensitate ntre
0 i 255.
Urmtoarea dat cnd se vor citi doi pixeli consecutivi albi, se
va folosi cuvntul de cod 256 (adresa locaiei care conine
secvena 256 256) pentru a-i reprezenta.

Dac n procesul de codificare se folosete un dicionar de 9


bii (512 cuvinte), cei 8+8 bii folosii iniial pentru a reprezenta
cei doi pixeli se vor nlocui cu un singur cuvnt de cod de 9 bii.
n mod clar, dimensiunea dicionarului este un parametru
important. Dac dicionarul este prea mic, detecia secvenelor
va fi mai puin probabil. Dac este prea mare, dimensiunea
cuvintelor de cod va afecta negativ performana compresiei.
Ex.
Imaginea 4 4 , 8 bii, a unei muchii verticale.
39
39
39
39

39
39
39
39

126
126
126
126

126
126
126
126

Se folosete un dicionar cu 512 cuvinte, cu urmtorul coninut


de start:

Iniial, locaiile 256 511 nu sunt utilizate.


n Tabel sunt detaliate etapele de codificare a celor 16 pixeli.

Imaginea se codific procesnd pixelii de la stnga la dreapta,


de sus n jos. Fiecare valoare succesiv de intensitate este
concatenat cu o variabil (coloana 1) numit secvena
curent recunoscut (currently recognized sequence).
Se caut n dicionar fiecare secven concatenat i dac se
gsete, cum este cazul din prima linie din tabel, se nlocuiete
cu mai noua secven concatenat i recunoscut (localizat n
dicionar). Aceasta s-a fcut n coloana 1 din linia 2. Nu se
genereaz niciun cod de ieire iar dicionarul nu este afectat.
Dac secvena concatenat nu a fost gsit, totui, adresa
secvenei curente recunoscute este transmis la ieire sub
forma urmtoarei valori codificate, secvena concatenat dar
nerecunoscut se adaug n dicionar iar secvena curent
recunoscut este iniializat la valoarea pixelului curent. Aa se
ntmpl n linia 2 din tabel.

Ultimele dou coloane indic secvenele de intensiti care se


adaug n dicionar cnd se scaneaz ntreaga imagine 4 x 4.
Au fost definite nou cuvinte de cod suplimentare.
n final, dicionarul va conine 265 cuvinte de cod iar algoritmul
LZW a identificat mai multe secvene de intensiti care se
repet. Astfel, imaginea iniial de 128 bii (16 pixeli x 8
bii/pixel) se transform n 90 bii (adic, 10 coduri de 9 bii)
Ieirea codificat se obine citind coloana 3 de sus n jos.
Raportul de compresie este 1.42:1.

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