4.4 Quantizzazione

Applicando fin qui il processo JPEG, abbiamo ottenuto una piccola compressione, convertendo i nostri 64 segnali in 64 coefficienti DCT.

Lo scopo della fase di cui parleremo è raggiungere un'ulteriore compressione rappresentando i coefficienti DCT con una piccola precisione, in modo da raggiungere la qualità desiderata.

Il fine di questo passo di elaborazione è scartare le informazioni meno significanti a livello visuale. La quantizzazione è un tracciato molti a uno e perciò è fondamentalmente con perdita, anzi è proprio la fonte principale della perdita del codificatore basato sulla DCT.

La quantizzazione è definita come divisione di ogni coefficiente DCT per la sua tabella di quantizzazione, seguita dall'arrotondamento all'intero più vicino:

Il processo di dequantizzazione è definito invece, come:

La tabella di quantizzazione può essere specificata dall'applicazione o può essere definita dall'utente.

Esperimenti sulla soglia psicovisuale hanno portato però alla definizione di due tabelle ottenute empiricamente usando un campionamento 2:1 orizzontale per la luminanza e la crominanza. Le tabelle ricavate dagli esperimenti sono le seguenti:

16

11

10

16

24

40

51

61

12

12

14

19

26

58

60

55

14

13

16

24

40

57

69

56

14

17

22

29

51

87

80

62

18

22

37

56

68

109

103

77

24

35

55

64

81

104

113

92

49

64

78

87

103

121

120

101

72

92

95

98

112

100

103

99

Tabella 1 - Tabella di quantizzazione per la luminanza

 

17

18

24

47

99

99

99

99

18

21

26

66

99

99

99

99

24

26

56

99

99

99

99

99

47

66

99

99

99

99

99

99

99

99

99

99

99

99

99

99

99

99

99

99

99

99

99

99

99

99

99

99

99

99

99

99

99

99

99

99

99

99

99

99

Tabella 2 - Tabella di quantizzazione per la crominanza

La trasformata coseno e il processo di quantizzazione possono essere applicati anche a blocchi di dimensione diversa da quella 8x8 però è stato dimostrato che buoni risultati si ottengono per blocchi di dimensione 8x8 e 16x16, i migliori in assoluto solo per blocchi di 8x8 pixels.

Un esempio di ciò che accade con la quantizzazione lo possiamo vedere considerando la figura 11 e la tabella 1. Il risultato della quantizzazione è il seguente:

15

0

-1

0

0

0

0

0

-2

-1

0

0

0

0

0

0

-1

-1

0

0

0

0

0

0

-1

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

Tabella 3 - figura 11 quantizzata

Se procediamo ora con la dequantizzazione possiamo notare che non otteniamo esattamente le informazioni di partenza, ma abbiamo perso informazioni (Tabella 4)

240

0

-10

0

0

0

0

0

-24

-12

0

0

0

0

0

0

-14

-13

0

0

0

0

0

0

-14

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

Tabella 4 - dequantizzazione della tabella 3

Se effettuiamo una scalatura dei valori della matrice di quantizzazione, si può ottenere una variazione sulla quantità di informazione eliminata nell'immagine. Il paramentro di scalatura sarà compreso nel range [0, 100] assegnando come significato a 0, la massima perdita di informazione con una pessima qualità e a 100 il contrario, ovvero pochissima informazione scartata con un'alta qualità di immagine.

Il parametro definito di scalatura, agirà sulla matrice di quantizzazione Q come segue:

 

Se parametro < 50 Þ ;

altrimenti: Þ