Standardul de compresie JPEG [613521]
Standardul de compresie JPEG
Caracteristici generale
Standardul JPEG a fost dezvoltat de un grup de experți cunoscut sub numele Joint Photographic
Experts Group și este î nregistrat sub numărul ISO 10918. Practic, standardul definește o familie
de tehnici de compresie pentru imagini statice în ton continuu (pe scară de gri sau color).
Datorită cantității mari de date implicate și redundanței psihovizuale, JPEG utilizează o schemă
de compresie cu pierderi bazată pe codarea cu transformare.
JPEG furnizează mai multe moduri de operare: secvențial (de bază), ierarhic, progresiv și fără
pierderi. Fiecare mod de operare este indicat pentru utilizare în domenii particulare de apli cație.
Principalele caracteristici ale standardului JPEG pot fi rezumate după cum urmează:
Independența rezoluției . Standardul admite tratarea semnalelor provenite de la surse cu
rezoluții diferite. Imaginile ale căror dimensiuni nu sunt bazate pe multi plii de 8, sunt ajustate
intern la dimensiuni multiplu de 8 pentru operarea în moduri de lucru bazate pe transformarea
cosinus discretă (DCT).
Precizia . Modurile de lucru bazate pe DCT sunt restricționate la precizii de 8 sau 12
biți/eșantion. Pentru cod area fără pierderi, precizia poate varia de la 2 la 16 biți/eșantion.
Fără țintă specifică a ratei de bit . Rata de bit, implicit calitatea compresiei, este
controlată primar de către matricea de cuantizare.
Separabilitate între luminanță și crominanță . Este posibilă recuperarea doar a semnalului
de luminanță din imaginile codate sub formă de semnal complet luminanță -crominanță, fără a fi
întotdeauna necesară decodarea crominanței.
Extensibilitate . Nu există limite în ceea ce privește numărul de etape în codarea
progresivă, sau de etape de joasă -rezoluție în cazul codării ierarhice.
JPEG nu reprezintă o arhitectură completă pentru realizarea schimbului de imagini între diverse
surse. Șirul de date structurate JPEG este definit sub aspectul cerințelor p e care le impune un
decodor JPEG pentru a realiza decompresia. Ca parte a standardului nu este definită nici o
formă de fișier, rezoluție spațială sau model de spațiu al culorilor. Totuși, JPEG include un format
minimal recomandat de fișier, cunoscut sub d enumirea de JFIF (JPEG File Interchange Format) ,
care permite ca șirurile de date JPEG să fie interschimbate între o mare diversitate de platforme
și aplicații. O serie de alte formate de fișiere pentru imagini sunt de asemenea compatibile JPEG,
de exemplu TIFF (Tag Image File Format) . Este important de specificat faptul că, pentru a fi
considerat JPEG compatibil , un produs sau sistem trebuie să accepte cel puțin modul de lucru de
bază prevăzut de standardul JPEG.
Algoritmul de bază pentru codare
Algoritmul de bază pe care îl vom prezenta în continuare definește modul de lucru de bază sau
modul secvențial . Acest mod de lucru definește compresia imaginilor digitale monocromatice
sau color așa cum sunt ele utilizate în aplicațiile de comunicații mul timedia. Acest mod de lucru
implică parcurgerea a cinci pași: partiția imaginii , transformata cosinus directă (DCT) ,
cuantizarea , codarea entropiei și construcția cadrului JPEG . În Figura 6.2. este prezentată
schema bloc a codării JPEG care implică acești pași, fiecare pas urmând să fie discutat separat.
Partiția imaginii
Sursa de imagine este în general formată din una sau mai multe matrici bidimensionale. În cazul
unei imagini monocrome în tonuri continue, este necesară o singură matrice bidimensională
pentru memorarea setului de valori ale nivelurilor de gri reprezentate pe 8 biți care
caracterizează imaginea. În mod similar, pentru o imagine color, dacă se utilizează o memorie
LUT (Look -up table), atunci este necesară o singură matrice de valori.
Alternativ, dacă imaginea este reprezentată în format R, G, B, sunt necesare trei matrici, câte
una pentru valorile cuantizate R, G și B. Pentru imaginile color se poate utiliza și reprezentar ea
prin semnale diferență de culoare Y, CR și CB, cu avantajul că semnalele de crominanță CR și CB
necesită doar jumătate din lărgimea de bandă a semnalului de luminanță Y. Din acest motiv,
cele două matrici care conțin componentele digitale de crominanță sunt de dimensiuni mai mici
decât matricea Y, ceea ce conduce la o reducere față de reprezentarea clasică R, G, B.
Figura 6.3 ilustrează procesul de partiție a imaginii , prezentând cele patru alternative pentru
reprezentarea imaginii sursă și aranjarea ac estora într -o matrice a valorilor care trebuie
compresate. Acesta este blocul prezentat în Fig. 6.2 sub denumirea pregătire imagine . După
alegerea formei de reprezentare a imaginii, valorile cuprinse în matrice vor trebui comprimate
prin utilizarea transfo rmatei cosinus discrete (DCT). Înainte însă de a realiza această prelucrare
mai este necesar un pas, cunoscut sub denumirea de pregătire blocuri . Acesta este necesar
deoarece calculul transformatei cosinus pentru fiecare poziție din matrice implică cunoașt erea
valorilor tuturor blocurilor care urmează a fi prelucrate. Deoarece timpul necesar pentru
calculul DCT pentru toată matricea într -un singur pas ar fi mult prea mare, matricea este mai
întâi divizată pe submatrici de dimensiuni 8×8, care poartă denumir ea de blocuri . Ca urmare,
transformarea DCT se poate efectua pe blocuri, prin aducerea secvențială a acestora la intrarea
procesorului de calcul a transformatei .
Transformarea cosinus discretă DCT
După cum s -a precizat anterior, pentru scurtarea timpului total de calcul a transformatei directe
DCT, este necesară operarea la nivel de blocuri de 8×8 valori. Ordinea în care sunt prezentate
blocurile constituite la in trarea procesorului de calcul DCT este prezentată în Figura 6.4.
Principiile codării cu transformare au fost prezentate anterior, în paragraful 3.5. În mod normal
fiecare valoare de pixel este cuantizată pe 8 biți, ceea ce conduce la un domeniu de variație a
valorilor luminanței și crominanței (semnalele Y, R, G și B) situat între 0 și 255, respectiv un
domeniu de variație a valorilor semnalelor diferență de culoare (CR și CB) situat între -128 și
+127. Pentru a realiza calculul transformatei cosinus discrete directe, toate valorile pixelilor
trebuiie mai întâi centrate pe zero, prin scăderea valorii 128 din fiecare valoare de luminanță
sau crominanță. În continuare, dacă notăm cu P(x,y) valorile elementelor din matricea
bidimensională de intrare și cu F(i,j) valorile elementelor matricii transformate, atunci expresia
de calcul a transformatei cosinus discrete directe DCT pentru fiecare bloc de 8×8 pixeli este [Cla,
95]:
Prin interpretarea expresiei (6.1) se pot trage câteva concluzii cu privire la complexitatea de
calcul a tranformatei DCT:
Toate cele 64 valori ale matricii de intrare P(x,y) contribuie la fiecare din intrările matricii
transformate F(i,j)
Pentru i=j=0 , cei doi termeni în cosinus (prin urmare coeficienții frecvențelor orizontale
și verticale) sunt ambii 0. De asemenea, deoarece cos(0)=1 , valoarea locației F(0,0) a
matricii transformatei este o simplă sumare a tuturor valorilor din matricea de intrare. În
ultimă instanță, coeficientul F(0,0) reprezintă media tuturor celor 64 valori din matricea
de intrare, fiind cunoscut și sub denumirea de coeficient DC (component ă continuă) .
Deoarece valorile din toate celelalte locații ale matricii transformatei au un coeficient al
frecvenței asociat – fie orizontal ( x=1÷7 pentru y=0 ), fie vertical ( y=1÷7 pentru x=0), fie
ambii ( x=1÷7 pentru y=1 ÷7) – ele sunt cunoscute sub den umirea de coeficienți AC
(componentă alternativă) .
Pentru j=0, sunt prezenți doar coeficienții frecvențelor orizontale, ei crescând în
frecvență pentru i=1÷7 .
Pentru i=0, sunt prezenți doar coeficienții frecvențelor verticale, ei crescând în frecven ță
pentru j=1÷ 7.
În toate celelalte locații ale matricii transformate sunt prezenți atât coeficienți ai
frecvențelor orizontale cât și ai frecvențelor verticale, în diferite proporții
În Figura 6.5. este prezentată în mod schematic structura matricilor inițială și transformată,
cu identificarea coeficienților DC și AC. De asemenea este prezentată modalitatea de variație
a frecvențelor spațiale orizontală și verticală, pentru a se vedea care este ponderea
diveriților coeficienți din matricea transformată .
Pentru a avea o mai bună imagine cu privire la valorile așteptate în mod tipic pentru un bloc
al transformatei DCT directe, vom considera o imagine tipică de 640 × 480 pixeli.
Consid erând că transformarea DCT se efectuează pe blocurile tipice de 8 × 8 pixeli, imaginea
sursă va fi formată din 80 × 60, adică 4800 blocuri, fiecare din ele cu dimensiunea de
aproximativ 5 × 5 mm, pentru un ecran cu lățimea tipică de 40 cm. De aceea, regiun ile din
imagine care au o culoare constantă vor genera un set de blocuri ale transformatei având:
același (sau foarte similar) coeficient DC;
doar un număr mic de coeficienți AC cu valori semnificative.
De aceea, doar acele zone ale imaginii care conț in tranziții de culoare vor genera seturi de
blocuri ale transformatei cu coeficienți DC diferiți și cu un număr mare de coeficienți AC
nenuli. Aceste caracteeristici sunt exploatate în continuare în faza de codare a entropiei din
cadrul algoritmului de co mpresie JPEG.
Cuantizarea
Teoretic, dacă se efectuează calculul transformatei DCT directe cu mare precizie prin
utilizarea unui procesor în virgulă mobilă, există o foarte mică pierdere de informație pe
durata fazei DCT. În practică apar mici pierderi, d atorate de obicei utilizării unor procesoare
în virgulă fixă. Același tip de erori apare însă și pe durata fazelor de cuantizare și de codare a
entropiei.
În conformitate cu caracteristicile fiziologice ale vederii umane [Kunt, 85], ochiul va
răspunde în primul rând la coeficientul DC și la coeficienții frecvențelor spectrale scăzute. De
aceea, dacă amplitudinea unui anumit coeficient de frecvență înaltă este sub un anumit
prag, ochiul nu îl va detecta. Această proprietate este exploatată în faza de cuanti zare prin
eliminarea – practic, prin setarea la zero – a acelor coeficienți de frecvențe spațiale din
matricea transformatei care se situează sub un anumit prag. Trebuie specificat însă că, odată
eliminați, acești coeficienți nu mai pot fi recuperați în cu rsul procesului de decodare.
În afară de a determina dacă un anumit coeficient de frecvență spațială este sub un prag
predefinit, procesul de cuantizare realizează și reducerea dimensiunilor coeficienților DC și
AC, astfel încât să fie necesară cât mai pu țină bandă pentru transmiterea acestora. În loc de
a compara fiecare coeficient cu valoarea definită a pragului, se realizează o împărțire
utilizând valoarea de prag drept divizor. Dacă numărul întreg cel mai apropiat la care se
rotunjește rezultatul este zero, atunci coeficientul frecvenței spațiale este sub valoarea de
prag. Dacă rezultatul nu este zero, atunci valoarea întreagă care rotunjește câtul arată de
câte ori este mai mare coeficientul decât valoarea de prag, fără a caracteriza direct valoarea
absolută a acestuia. Astfel se realizează o reducere a cantității de informație care trebuie
transmisă. De exemplu, dacă pragul este definit la valoarea 16, atunci vor fi economisiți 4
biți față de cazul utilizării valorilor absolute. Desigur că această redu cere se face în contul
preciziei utilizate pentru valoarea absolută, deoarece în cursul procesului de decodare
aceasta este determinată prin multiplicarea valorii recepționate cu valoarea de prag
corespunzătoare.
După cum s -a mai precizat anterior, sensib ilitatea ochiului se modifică cu frecvența spațială,
prin urmare și valoarea de prag peste care ochiul detectează o anumită frecvență spațială se
modifică. Din acest motiv, în practică, valoarea de prag utilizată este diferită pentru fiecare
din cei 64 coe ficienți DCT. Aceste praguri sunt memorate într -o matrice bidimensională,
numită tabel de cuantizare .
Alegerea valorilor de prag este extrem de importantă, fiind în practică un compromis între
nivelul de compresie cerut și gradul de pierdere de informație care este acceptabil.
Standardul JPEG include două tabele de cuantizare cu valori prestabilite ale pragurilor, unul
pentru coeficienții de luminanță și celălalt pentru cele două seturi de coeficienți de
crominanță. Standardul permite însă și definirea de către utilizator a acestor praguri, care
după utilizare în procesul de codare vor fi transmise împreună cu imaginea comprimată.
În Figura 6.6 este prezentat un exemplu de tabel de cuantizare, împreună cu un set de
coeficienți DCT și cu rezultatul cuantiză rii acestora.
Din exemplul considerat se pot trage anumite concluzii privind caracteristicile fazei de
cuantizare:
Calculul coeficienților cuantizați implică rotunjirea câtului împărți rii la cea mai apropiată
valoare întreagă;
Valorile de prag utilizate cresc, în general, odată cu creșterea frecvenței spațiale;
Coeficientul DC din matricea transformată este întotdeauna cel mai mare;
mare parte din coeficienții corespunzători fre cvențelor spațiale înalte sunt egali
cu zero.
Ultimele două proprietăți sunt utilizate pentru realizarea următoarei faze, cea de codare
a entropiei.
Codarea entropiei
După cum s -a arătat, faza de codare a entropiei implică patru pași:
Vectorizarea;
Codarea diferențială;
Codarea run -length;
Codarea Huffman.
Vectorizarea
Diferiții algoritmi de codare a entropiei care au fost prezentați în capitolul 2 operează cu
șiruri unidimensionale de valori, adică cu vectori. După cum s -a văzut însă, ieș irea fazei de
cuantizare este constituită de o matrice de valori bidimensională. Prin urmare, înainte de a
aplica orice algoritm de codare a entropiei asupra setului de valori din matrice, este necesară
reprezentarea acestor valori sub forma unui vector un idimensional. Această operație este
cunoscută sub numele de vectorizare .
După cum s -a văzut din exemplul prezentat în Fig. 6.6, ieșirea tipică a procesului de cuantizare
este constituită de o matrice bidimensională de coeficienți care sunt în marea lor ma joritate de
valoare zero, cu excepția unui număr de valori nenule situate în colțul din stânga sus al matricii.
De aceea, dacă pentru a serializa valorile din matrice am utiliza conceptul de scanare linie cu
linie, am obține drept rezultat un șir mixt de v alori nule și nenule. Pentru a exploata în cursul
procesului de compresie prezența unui număr mare de coeficienți nuli este necesar ca aceștia să
fie dispuși cât mai grupat în vectorul unidimensional. De aceea, pentru obținerea șirului
unidimensional 1 × 6 4 de coeficienți, se utilizează o scanare în zig -zag a matricii bidimensionale.
În Figura 6.7 este reprezentat schematic principiul scanării în zig -zag.
Cu această tehnică e ste scanat mai întâi coeficientul DC și apoi coeficienții AC de frecvență
scăzută (atât pe orizontală cât și pe verticală). Coeficienții de frecvență ridicată sunt și ei scanați
în ordine secvențială, astfel încât acest tip de reprezentare este mai potrivi t pentruu compresie.
Pentru exemplul prezentat în Fig. 6.6 se obține vectorul liniar de reprezentare din Figure 6.8.
Codarea diferențială
Codarea diferențială se aplică doar co eficientului DC obținut în urma fazei de cuantizare. Acesta
este o măsură medie a luminanței sau crominanței asociate fiecărui bloc de 8 × 8 pixeli, fiind cel
mai mare coeficient. Datorită importanței sale deosebite, rezoluția sa este păstrată cât mai
ridicată în cursul fazei de cuantizare. Pe de altă parte, datorită ariei fizice relativ mici acoperite
de fiecare bloc, coeficientul DC variază destul de puțin de la un bloc la altul. După cum s -a arătat
în capitolul 2, cea mai eficientă metodă de compresie pe ntru acest tip de informație este
codarea diferențială, deoarece aceasta codează diferența dintre două valori dintr -un șir, și nu
valoarea lor absolută. În cazul considerat, se codează diferența dintre valoarea coeficientului DC
dintr -un bloc și cea a bloc ului anterior.
Codarea run -length
Codarea run -length se aplică celor 63 de coeficienți AC din matricea cuantizată. Datorită tehnicii
de scanare în zig -zag, vectorul liniar va conține șiruri lungi de coeficienți nuli, ceea ce face
deosebit de convenabilă utilizarea codării run -length unidimensională, descrisă în paragraful
2.6.
Codarea Huffman
Principiul codării Huffman a fost prezentat în paragraful 2.1.3, împreună cu alți algoritmi de
codare cu lungime variabilă sau de codare a entropiei. În cadrul a lgoritmului de codare JPEG se
utilizează codarea Huffman atât pentru ieșirea codării diferențiale a coeficienților DC cât și
pentru ieșirea codării run -length a coeficienților AC. În acest scop poate fi utilizat un tabel de
cuvinte de cod Huffman furnizat de algoritmul de codare JPEG, fie tabele de cuvinte de cod care
se transmit împreeună cu șirul de biți.
Construcția cadrului JPEG
Tipic, șirul de biți de ieșire furnizat de codorul JPEG este înmagazinat î n memoria unui
calculator, fie cu scopul de a fi integrat într -o altă aplicație, fie pentru a fi accesat de un alt
calculator (eventual printr -o rețea). Pentru ca decodorul unui calculator situat undeva la
distanță să poată interpreta diferitele câmpuri și tabele care alcătuiesc informația
corespunzătoare unui șir de biți JPEG este necesară delimitarea fiecărui câmp sau set de tabele
într-un mod bine definit. De aceea, standardul JPEG include și o definire a structurii unui șir total
de biți pentru o anumit ă imagine. Această structură poartă denumirea de cadru și are forma
prezentată în Figura 6.9.
Rolul blocului Construcție cadru JPEG reprezentat anterior în Fig. 6.2 este acela de a asambla
toate informațiile referitoare la o imagine codată în format JPEG. După cum se observă,
structura unui cadru este ierarhică. Pe nivelul superior, conținutul cadrului (inclusiv header -ul)
este asamblat între delimitatoarele de start cadru și de sfârșit cadru , care permit receptorului să
determine începutul și sfârșitul gr upului de informație referitoare la o întreagă imagine.
Header -ul cadrului conține o serie de câmpuri care dau informații despre:
lățimea și înălțimea imaginii, exprimate în pixeli;
numărul și tipul componentelor utilizate pentru reprezentarea imaginii (memorii LUT;
componente R, G, B sau componente Y, CB, CR);
formatul utilizat pentru pentru digitizarea imaginii.
Pe nivelul al doilea, un cadru conține un număr de comp onente denumite explorări . Setul de
explorări este de asemenea precedat de un header, care furnizează prin câmpurile sale
informații despre:
identitatea componentelor (R, G, B, etc.);
numărul de biți utilizați pentru digitizarea fiecărei componente;
tabelul de cuantizare utilizat pentru codarea fiecărei componente.
Tipic, fiecare explorare conține unul sau mai multe segmente , fiecare putând conține un grup de
blocuri , precedate de un header.
Acesta conține tabelul Huffman utilizat pentru codare a fiecărui bloc din segment, în cazul în
care nu se utilizează tabelul furnizat din oficiu de către algoritmul JPEG. Astfel, fiecare segment
poate fi decodificat independent, ceea ce elimină posibilitatea propagării erorilor către alte
segmente. Deoarece f iecare cadru complet conține toate informațiile necesare pentru ca
decodorul să identifice câmpul recepționat, este posibilă realizarea operațiunii de decodificare.
Decodorul JPEG
Structura unui decodor JPEG este prezentată în Figura 6.10. Se poate obse rva că realizarea se
bazează în linii mari pe utilizarea blocurilor similare celor folosite în procesul de compresie. Prin
urmare, timpul necesar pentru realizarea funcției de decodare este similar cu timpul utilizat
pentru realizarea codării.
La recepționarea șirului de biți codați JPEG, decodorul cadru identifică mai întâi informația de
control și tabelele cuprinse în diferitele headere. În continuare, conț inutul tabelelor
recepționate este încărcat în tabelele corespunzătoare ale decodorului, iar informația de control
este transmisă către blocul de reconstrucție imagine . Șirul comprimat de biți este transmis apoi
la intrarea decodorului Huffman care realize ază operația de decompresie corespunzătoare în
conformitate fie cu tabelul de cuvinte de cod furnizat din oficiu de standardul JPEG, fie cu
tabelul preîncărcat din șirul recepționat. Șirurile obținute de coeficienți DC, respectiv AC sunt
furnizate la intra rea decodorului diferențial , respectiv a decodorului run -length . Matricea
rezultată este decuantizată prin utilizarea tabelelor preîncărcate din șirul recepționat.
Fiecare dintre blocuri de coeficienți de frecvențe spațiale de dimensiune 8 × 8 rezultate s unt
transmise la intrarea blocului de transformare DCT inversă, care le readuce la forma lor inițială
prin utilizarea relației de calcul:
Blocul de reconstrucție a imaginii refac e imaginea originală din aceste blocuri, prin utilizarea
informației de control recepționate.
Deși standardul de compresie JPEG este relativ complicat, datorită numărului mare de etape pe
care le implică, pot fi obținute rapoarte de compresie mai mari dec ât 20:1 în condiții de păstrare
a unei calități bune a imaginii de ieșire. Acest ordin de mărime al compresiei se obține însă
pentru imagini relativ simple, care implică relativ puține tranziții de culoare. În cazul unor
imagini complexe sunt mai uzuale ra poarte de compresie de ordinul 10:1.
Mai trebuie precizat în legătură cu standardul JPEG faptul că acesta permite o codare și refacere
progresivă a imaginii, prin transmiterea inițial a unei versiuni de rezoluție mică, urmată de
adăugarea a tot mai multe detalii. Această facilitate poate fi realizată în două moduri:
modul pregresiv , în care se transmite inițial coeficientul DC și coeficienții de frecvență
joasă din fiecare bloc;
modul ierarhic , în care se transmite inițial o imagine de joasă rezoluți e (de exemplu 320
× 240) și abia ulterior imaginea de rozoluție maximă.
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: Standardul de compresie JPEG [613521] (ID: 613521)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
