Esercizio - Sottocampionamento del colore YUV 420 su un blocco (demo del corso)
In questa pagina 3
Teoria: Audio, immagini e video digitali non compressi e spazi di coloreIl parlato (banda 200-3400 Hz) si digitalizza con $F_c=8$ kHz e 8 bit per campione: 64 kbit/s (PCM, pacchetti di 20 ms = 160 campioni = 160 byte). La musica (banda fino a 20 kHz) con $F_c=44{,}1$ kHz, 16 bit, 2 canali: 1,411 Mbit/s. Un'immagine a colori RGB ha 3 canali da 8 bit (24 bit per pixel); nello spazio YCbCr, ottenuto con una rotazione dello spazio colore, l'occhio è molto meno sensibile alla crominanza e si scartano 3 campioni su 4 di Cb e Cr (4:2:0), dimezzando i dati: $1{,}5\cdot H\cdot W$ campioni per immagine. Un video non compresso costa $H,W,1{,}5,b,f$ bit/s (1080p a 50 Hz: 1,244 Gbit/s, 4K: 5,3 Gbit/s): serve la compressione.Audio, immagini e video digitali non compressi e spazi di colore → (spazio YCbCr, sparsificazione, 4:2:0). Fonte: slide e demo "spazi di colore" del corso di Reti di Calcolatori, Ing. Informatica UniPD 2025-26 (blocco numerico delle slide); i conti sono verificati in Python.
Testo
Un blocco della componente di un'immagine, ottenuto con la trasformazione RGB YCbCr, è
(a) Applicare il sottocampionamento 4:2:0 alla crominanza: si conservano i campioni sulle righe e sulle colonne dispari (la prima, la terza, ...). (b) Ricostruire il blocco con l'interpolazione di ordine zero. (c) Calcolare l'errore, l'MSE e il PSNR. (d) Quanto si risparmia in campioni? (e) Confrontare le dimensioni di un frame in 4:4:4, 4:2:2 e 4:2:0.
Soluzione
(a) Decimazione
"Righe e colonne dispari" nella numerazione che parte da 1: si tengono le righe 1, 3, 5, 7 e le colonne 1, 3, 5, 7 (indici da 0: 0, 2, 4, 6). Da ogni blocco di pixel si tiene un solo campione (quello in alto a sinistra) e si scartano gli altri 3: si scarta dei campioni di crominanza. Il blocco decimato è
(b) Interpolazione di ordine zero
In ricostruzione si replica ogni campione su un blocco (nelle demo con il prodotto di Kronecker con una matrice di uni ). Il blocco ricostruito è
(c) Errore, MSE, PSNR
L'errore è nullo nei pixel che sono stati conservati (in alto a sinistra di ogni ) e uguale alla differenza con il campione replicato negli altri:
Esempio: pixel in riga 0, colonna 1: ; pixel in riga 1, colonna 0: ; in riga 1, colonna 1: . (somma dei quadrati ), quindi Un PSNR di 27 dB su questo canale è basso, ma è un singolo blocco in una zona di transizione (valori che scendono da 200 a 90): l'errore è piccolo dove il segnale varia piano (nella parte in alto a destra e nelle ultime due righe gli errori sono quasi tutti di pochi livelli, da a , con qualche eccezione fino a ) ed è grande dove c'è un gradiente forte (righe 3 e 5: , , ). Su un'immagine intera la crominanza varia lentamente, quasi dappertutto, e soprattutto l'occhio è molto meno sensibile alla crominanza che alla luminanza: l'errore, anche con MSE di questo ordine, non è visibile. Lo stesso errore sulla luminanza sarebbe invece ben visibile: ecco perché si decima solo e .
(d) Risparmio
Per il blocco: da 64 a 16 campioni per (e lo stesso per ). Per un blocco di pixel: RGB campioni; YCbCr 4:2:0 campioni: metà, con campioni per pixel.
(e) Dimensioni di un frame (8 bit per campione)
Pixel: .
- 4:4:4: byte MB (come l'RGB).
- 4:2:2 (crominanze dimezzate solo in orizzontale): byte MB.
- 4:2:0: byte MB. Il passaggio 4:4:4 4:2:0 dimezza la dimensione senza perdite percepibili.
Errori tipici
- Pensare che il sottocampionamento si applichi anche alla luminanza.
- Decimare in una sola direzione (è 4:2:2, non 4:2:0).
- Interpolare con (cioè riempire di zeri) invece di replicare il valore: ordine zero significa replicare.
- Valutare la qualità solo dal PSNR della crominanza: conta la qualità percepita sull'immagine a colori (la luminanza è intatta).
- Contare 3 campioni per pixel in 4:2:0.
Versione ripasso
Procedura 4:2:0. (1) RGB YCbCr; (2) decimazione di e (si tiene un campione ogni , quello in alto a sinistra: righe e colonne dispari): si scarta della crominanza; (3) in ricezione interpolazione di ordine zero (replica su blocchi , prodotto di Kronecker con una matrice di uni); (4) YCbCr RGB.
Blocco di . Decimato : righe , , , . Ricostruito: ogni valore replicato su un . Errore : nullo nei campioni conservati, altrove la differenza con il valore replicato (es. , , ); massimo (riga 5, colonna 6: ).
- (somma dei quadrati 8262, divisa per 64).
- dB.
- Errore piccolo dove il segnale varia piano, grande sui gradienti forti. Nella crominanza non si vede perché l'occhio è meno sensibile a che a ; la luminanza resta intatta.
Risparmio. Per pixel: RGB 192 campioni, 4:2:0 (metà, campioni per pixel).
Frame , 8 bit. 4:4:4: MB; 4:2:2: MB; 4:2:0: MB.
Errori tipici: decimare la luminanza; decimare in una sola direzione (4:2:2); interpolare con zeri invece di replicare; giudicare dal solo PSNR di ; 3 campioni per pixel in 4:2:0.