Sunteți pe pagina 1din 14

Tehnici de compresie a semnalelor

multimedia
Standardul JPEG de compresie a
imaginilor

Facultatea de Electronică, Telecomunicaţii şi Tehnologia Informaţiei


Universitatea Tehnică “Gheorghe Asachi”, Ias, i, România

1 / 14
Codarea JPEG a unui bloc de 8 × 8 pixeli
Să se codeze următorul bloc de coeficient, i cuantizat, i conform cu
standardul JPEG, când acesta este primul bloc din imagine s, i când
blocul anterior are coeficientul DC egal cu 19. Calculat, i factorii de
compresie pentru fiecare caz.
16 8 0 0 0 0 1 0
6 2 0 0 0 0 0 0
5 -2 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0

2 / 14
Codarea JPEG a unui bloc de 8 × 8 pixeli
Să se codeze următorul bloc de coeficient, i cuantizat, i conform cu
standardul JPEG, când acesta este primul bloc din imagine s, i când
blocul anterior are coeficientul DC egal cu 19. Calculat, i factorii de
compresie pentru fiecare caz.
16 8 0 0 0 0 1 0
6 2 0 0 0 0 0 0
5 -2 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0

2 / 14
Codarea JPEG a unui bloc de 8 × 8 pixeli
Codare coeficient DC: xDC →
16 8 0 0 0 0 1 0 (C/P) (clasă/pozit, ie ı̂n clasă)
6 2 0 0 0 0 0 0 Caz 1) Blocul este primul din
5 -2 0 0 0 0 0 0 imagine.
0 0 0 0 0 0 0 0 xDC = 16 → (C/P) = (5/16)
0 0 0 0 0 0 0 0 (clasa 5 / pozit, ia 16)
codare
0 0 0 0 0 0 0 0 (5/16) −→ 111110
| {z } 10000| {z }
0 0 0 0 0 0 0 0 cod clasă 16 scris ı̂n
binar pe 5 bit, i
0 0 0 0 0 0 0 0 (11 bit, i)
Caz 2) Blocul nu este primul din imagine, iar blocul anterior are
coeficientul DC = 19.
Se codează diferent, a dintre coeficient, ii DC: xDC = 16 - 19 = -3 →
codare
(C/P) = (2/0) (clasa 2 / pozit, ia 0) −→ |{z} 110 00
|{z} (5 bit, i)
cod clasă 0 scris ı̂n
binar pe 2 bit, i
3 / 14
Codarea JPEG a unui bloc de 8 × 8 pixeli
Codare coeficient, i AC: xAC →
16 8 0 0 0 0 1 0 (Z/C, P) (număr de zerouri care
6 2 0 0 0 0 0 0 precede valoarea xAC ̸= 0/clasa
5 -2 0 0 0 0 0 0 valorii xAC , pozit, ia valorii xAC ı̂n
0 0 0 0 0 0 0 0 clasă)
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
xAC = 8 → (Z/C, P) = (0/4, 7) (număr de zerouri care precede
valoarea 8 = 0 / clasa valorii 8 = 4, pozit, ia valorii 8 ı̂n clasă = 7)
codare
(0/4, 7) −→ 1011|{z} 0111
|{z} (8 bit, i)
cod pereche 7 scris ı̂n
(0/4) binar pe 4 bit, i

4 / 14
Codarea JPEG a unui bloc de 8 × 8 pixeli
Codare coeficient, i AC: xAC →
16 8 0 0 0 0 1 0 (Z/C, P) (număr de zerouri care
6 2 0 0 0 0 0 0 precede valoarea xAC ̸= 0/clasa
5 -2 0 0 0 0 0 0 valorii xAC , pozit, ia valorii xAC ı̂n
0 0 0 0 0 0 0 0 clasă)
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
xAC = 6 → (Z/C, P) = (0/3, 6) (număr de zerouri care precede
valoarea 6 = 0 / clasa valorii 6 = 3, pozit, ia valorii 6 ı̂n clasă = 6)
codare
(0/3, 6) −→ |{z}100 110
|{z} (6 bit, i)
cod pereche 6 scris ı̂n
(0/3) binar pe 3 bit, i

5 / 14
Codarea JPEG a unui bloc de 8 × 8 pixeli
Codare coeficient, i AC: xAC →
16 8 0 0 0 0 1 0 (Z/C, P) (număr de zerouri care
6 2 0 0 0 0 0 0 precede valoarea xAC ̸= 0/clasa
5 -2 0 0 0 0 0 0 valorii xAC , pozit, ia valorii xAC ı̂n
0 0 0 0 0 0 0 0 clasă)
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
xAC = 5 → (Z/C, P) = (0/3, 5) (număr de zerouri care precede
valoarea 5 = 0 / clasa valorii 5 = 3, pozit, ia valorii 5 ı̂n clasă = 5)
codare
(0/3, 5) −→ |{z}100 101
|{z} (6 bit, i)
cod pereche 5 scris ı̂n
(0/3) binar pe 3 bit, i

6 / 14
Codarea JPEG a unui bloc de 8 × 8 pixeli
Codare coeficient, i AC: xAC →
16 8 0 0 0 0 1 0 (Z/C, P) (număr de zerouri care
6 2 0 0 0 0 0 0 precede valoarea xAC ̸= 0/clasa
5 -2 0 0 0 0 0 0 valorii xAC , pozit, ia valorii xAC ı̂n
0 0 0 0 0 0 0 0 clasă)
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
xAC = 2 → (Z/C, P) = (0/2, 2) (număr de zerouri care precede
valoarea 2 = 0 / clasa valorii 2 = 2, pozit, ia valorii 2 ı̂n clasă = 2)
codare
(0/2, 2) −→ |{z} 01 10
|{z} (4 bit, i)
cod pereche 2 scris ı̂n
(0/2) binar pe 2 bit, i

7 / 14
Codarea JPEG a unui bloc de 8 × 8 pixeli
Codare coeficient, i AC: xAC →
16 8 0 0 0 0 1 0 (Z/C, P) (număr de zerouri care
6 2 0 0 0 0 0 0 precede valoarea xAC ̸= 0/clasa
5 -2 0 0 0 0 0 0 valorii xAC , pozit, ia valorii xAC ı̂n
0 0 0 0 0 0 0 0 clasă)
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
xAC = −2 → (Z/C, P) = (3/2, 1) (număr de zerouri care precede
valoarea -2 = 3 / clasa valorii -2 = 2, pozit, ia valorii -2 ı̂n clasă = 1)
codare
(3/2, 1) −→ 111110111
| {z } 01
|{z} (11 bit, i)
cod pereche 1 scris ı̂n
(3/2) binar pe 2 bit, i

8 / 14
Codarea JPEG a unui bloc de 8 × 8 pixeli
Codare coeficient, i AC: xAC →
16 8 0 0 0 0 1 0 (Z/C, P) (număr de zerouri care
6 2 0 0 0 0 0 0 precede valoarea xAC ̸= 0/clasa
5 -2 0 0 0 0 0 0 valorii xAC , pozit, ia valorii xAC ı̂n
0 0 0 0 0 0 0 0 clasă)
0 0 0 0 0 0 0 0 Obs.: Dacă numărul de zerouri
0 0 0 0 0 0 0 0 este Z > 16, atunci un grup de
0 0 0 0 0 0 0 0 câte 16 zerouri consecutive se
0 0 0 0 0 0 0 0 codează prin codul ZRL = (F/0).

xAC = 1 → (Z/C, P) = (18/1, 1) (număr de zerouri care precede


valoarea 1 = 18 / clasa valorii 1 = 1, pozit, ia valorii 1 ı̂n clasă = 1)
Z = 18 > 16 ⇒ se codează mai ı̂ntâi primele 16 zerouri prin codul
codare
ZRL: (F/0) −→ 11111111001
| {z } (11 bit, i)
cod ZRL

9 / 14
Codarea JPEG a unui bloc de 8 × 8 pixeli
Codare coeficient, i AC: xAC →
16 8 0 0 0 0 1 0 (Z/C, P) (număr de zerouri care
6 2 0 0 0 0 0 0 precede valoarea xAC ̸= 0/clasa
5 -2 0 0 0 0 0 0 valorii xAC , pozit, ia valorii xAC ı̂n
0 0 0 0 0 0 0 0 clasă)
0 0 0 0 0 0 0 0 Obs.: Dacă numărul de zerouri
0 0 0 0 0 0 0 0 este Z > 16, atunci un grup de
0 0 0 0 0 0 0 0 câte 16 zerouri consecutive se
0 0 0 0 0 0 0 0 codează prin codul ZRL = (F/0).
Se codează apoi restul de 18-16 = 2 zerouri care preced valoarea 1.
xAC = 1 → (Z/C, P) = (2/1, 1) (număr rămas de zerouri care precede
valoarea 1 = 2 / clasa valorii 1 = 1, pozit, ia valorii 1 ı̂n clasă = 1)
codare
(2/1, 1) −→ 11100
| {z } 1
|{z} (6 bit, i)
cod pereche 1 scris ı̂n
(2/1) binar pe 1 bit
10 / 14
Codarea JPEG a unui bloc de 8 × 8 pixeli
Codare coeficient, i AC: xAC →
16 8 0 0 0 0 1 0 (Z/C, P) (număr de zerouri care
6 2 0 0 0 0 0 0 precede valoarea xAC ̸= 0/clasa
5 -2 0 0 0 0 0 0 valorii xAC , pozit, ia valorii xAC ı̂n
0 0 0 0 0 0 0 0 clasă)
0 0 0 0 0 0 0 0 Obs.: Dacă de la o valoare
0 0 0 0 0 0 0 0 xAC ̸= 0 până la finalul blocului
0 0 0 0 0 0 0 0 există numai zerouri, atunci toate
0 0 0 0 0 0 0 0 aceste zerouri se codează prin
codul EOB (End Of Block).
codare
EOB −→ 1010
|{z} (4 bit, i)
cod EOB

11 / 14
Codarea JPEG a unui bloc de 8 × 8 pixeli
Calculul factorilor de compresie
16 8 0 0 0 0 1 0 Fără codare fiecare coeficient
6 2 0 0 0 0 0 0 cuantizat este codat pe 8 bit, i.
5 -2 0 0 0 0 0 0 Rezultă că numărul de bit, i necesar
0 0 0 0 0 0 0 0 pentru reprezentarea blocului de
0 0 0 0 0 0 0 0 coeficient, i cuantizat, i = 64
0 0 0 0 0 0 0 0 coeficient, i × 8 bit, i/coeficient =
0 0 0 0 0 0 0 0 512 bit, i.
0 0 0 0 0 0 0 0
Numărul de bit, i pentru codarea coeficient, ilor AC = 8 + 6 + 6 + 4 +
11 + 11 + 6 + 4 = 56.
Caz 1) Blocul este primul din imagine.
Numărul de bit, i pentru codarea coeficientului DC = 11.
Numărul total de bit, i pentru codarea blocului de coeficient, i cuantizat, i
= 56 + 11 = 67. Rezultă factorul de compresie FC1 = 512 67
∼ 7.64.
12 / 14
Codarea JPEG a unui bloc de 8 × 8 pixeli
Calculul factorilor de compresie
16 8 0 0 0 0 1 0 Fără codare, numărul de bit, i
6 2 0 0 0 0 0 0 necesar pentru reprezentarea
5 -2 0 0 0 0 0 0 blocului de coeficient, i cuantizat, i =
0 0 0 0 0 0 0 0 64 coeficient, i × 8 bit, i/coeficient =
0 0 0 0 0 0 0 0 512 bit, i.
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
Numărul de bit, i pentru codarea coeficient, ilor AC = 56.
Caz 2) Blocul nu este primul din imagine, iar blocul anterior are
coeficientul DC = 19.
Numărul de bit, i pentru codarea coeficientului DC = 5.
Numărul total de bit, i pentru codarea blocului de coeficient, i cuantizat, i
= 56 + 5 = 61. Rezultă factorul de compresie FC2 = 512 61
∼ 8.39.
Powered by TCPDF (www.tcpdf.org)
13 / 14

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