Salta al contenuto
Note per Studenti Esercizio - Sottocampionamento del colore YUV 420 su un blocco (demo del corso)

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 8×88\times8 della componente CbC_b di un'immagine, ottenuto con la trasformazione RGB →\to YCbCr, è

Cb=[159179193198195190195200135152170183190193194196107120137159179193195195949610813215717518819487929610712814416517787919599101106128144919494939188961129292919190899092]C_b=\begin{bmatrix}159&179&193&198&195&190&195&200\\135&152&170&183&190&193&194&196\\107&120&137&159&179&193&195&195\\94&96&108&132&157&175&188&194\\87&92&96&107&128&144&165&177\\87&91&95&99&101&106&128&144\\91&94&94&93&91&88&96&112\\92&92&91&91&90&89&90&92\end{bmatrix}

(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 1920×10801920\times1080 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 2×22\times2 di pixel si tiene un solo campione (quello in alto a sinistra) e si scartano gli altri 3: si scarta 34\frac34 dei campioni di crominanza. Il blocco decimato 4×44\times4 è

[159193195195107137179195879612816591949196]\begin{bmatrix}159&193&195&195\\107&137&179&195\\87&96&128&165\\91&94&91&96\end{bmatrix}

(b) Interpolazione di ordine zero

In ricostruzione si replica ogni campione su un blocco 2×22\times2 (nelle demo con il prodotto di Kronecker con una matrice di uni 2×22\times2). Il blocco ricostruito è

C^b=[159159193193195195195195159159193193195195195195107107137137179179195195107107137137179179195195878796961281281651658787969612812816516591919494919196969191949491919696]\hat C_b=\begin{bmatrix}159&159&193&193&195&195&195&195\\159&159&193&193&195&195&195&195\\107&107&137&137&179&179&195&195\\107&107&137&137&179&179&195&195\\87&87&96&96&128&128&165&165\\87&87&96&96&128&128&165&165\\91&91&94&94&91&91&96&96\\91&91&94&94&91&91&96&96\end{bmatrix}

(c) Errore, MSE, PSNR

L'errore e=Cb−C^be=C_b-\hat C_b è nullo nei pixel che sono stati conservati (in alto a sinistra di ogni 2×22\times2) e uguale alla differenza con il campione replicato negli altri:

e=[020050−505−24−7−23−10−5−2−1101302201400−13−11−29−5−22−4−7−10501101601204−13−27−22−37−21030−10−301611−3−3−1−2−6−4]e=\begin{bmatrix}0&20&0&5&0&-5&0&5\\-24&-7&-23&-10&-5&-2&-1&1\\0&13&0&22&0&14&0&0\\-13&-11&-29&-5&-22&-4&-7&-1\\0&5&0&11&0&16&0&12\\0&4&-1&3&-27&-22&-37&-21\\0&3&0&-1&0&-3&0&16\\1&1&-3&-3&-1&-2&-6&-4\end{bmatrix}

Esempio: pixel in riga 0, colonna 1: 179−159=20179-159=20; pixel in riga 1, colonna 0: 135−159=−24135-159=-24; in riga 1, colonna 1: 152−159=−7152-159=-7. MSE=164∑eij2=129,09\mathrm{MSE}=\frac1{64}\sum e_{ij}^2=129{,}09 (somma dei quadrati =8262=8262), quindi PSNR=10log⁡102552129,09=48,13−21,11=27,0 dB.\mathrm{PSNR}=10\log_{10}\frac{255^2}{129{,}09}=48{,}13-21{,}11=27{,}0\ \text{dB}. 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 −6-6 a +5+5, con qualche eccezione fino a +16+16) ed è grande dove c'è un gradiente forte (righe 3 e 5: −29-29, −27-27, −37-37). 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 CbC_b e CrC_r.

(d) Risparmio

Per il blocco: da 64 a 16 campioni per CbC_b (e lo stesso per CrC_r). Per un blocco 8×88\times8 di pixel: RGB =3⋅64=192=3\cdot64=192 campioni; YCbCr 4:2:0 =64+16+16=96=64+16+16=96 campioni: metà, con 1,51{,}5 campioni per pixel.

(e) Dimensioni di un frame 1920×10801920\times1080 (8 bit per campione)

Pixel: 2 073 6002\,073\,600.

  • 4:4:4: 3⋅2 073 600=6 220 8003\cdot2\,073\,600=6\,220\,800 byte =6,22=6{,}22 MB (come l'RGB).
  • 4:2:2 (crominanze dimezzate solo in orizzontale): 2⋅2 073 600=4 147 2002\cdot2\,073\,600=4\,147\,200 byte =4,15=4{,}15 MB.
  • 4:2:0: 1,5⋅2 073 600=3 110 4001{,}5\cdot2\,073\,600=3\,110\,400 byte =3,11=3{,}11 MB. Il passaggio 4:4:4 →\to 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 00 (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 →\to YCbCr; (2) decimazione di CbC_b e CrC_r (si tiene un campione ogni 2×22\times2, quello in alto a sinistra: righe e colonne dispari): si scarta 34\frac34 della crominanza; (3) in ricezione interpolazione di ordine zero (replica su blocchi 2×22\times2, prodotto di Kronecker con una matrice di uni); (4) YCbCr →\to RGB.

Blocco 8×88\times8 di CbC_b. Decimato 4×44\times4: righe [159,193,195,195][159,193,195,195], [107,137,179,195][107,137,179,195], [87,96,128,165][87,96,128,165], [91,94,91,96][91,94,91,96]. Ricostruito: ogni valore replicato su un 2×22\times2. Errore e=Cb−C^be=C_b-\hat C_b: nullo nei campioni conservati, altrove la differenza con il valore replicato (es. 179−159=20179-159=20, 135−159=−24135-159=-24, 152−159=−7152-159=-7); massimo ∣e∣=37|e|=37 (riga 5, colonna 6: 128−165=−37128-165=-37).

  • MSE=129,09\mathrm{MSE}=129{,}09 (somma dei quadrati 8262, divisa per 64).
  • PSNR=10log⁡102552129,09=48,13−21,11=27,0\mathrm{PSNR}=10\log_{10}\frac{255^2}{129{,}09}=48{,}13-21{,}11=27{,}0 dB.
  • Errore piccolo dove il segnale varia piano, grande sui gradienti forti. Nella crominanza non si vede perché l'occhio è meno sensibile a Cb,CrC_b,C_r che a YY; la luminanza resta intatta.

Risparmio. Per 8×88\times8 pixel: RGB 192 campioni, 4:2:0 64+16+16=9664+16+16=96 (metà, 1,51{,}5 campioni per pixel).

Frame 1920×10801920\times1080, 8 bit. 4:4:4: 6,226{,}22 MB; 4:2:2: 4,154{,}15 MB; 4:2:0: 3,113{,}11 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 CbC_b; 3 campioni per pixel in 4:2:0.

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 →.

Teoria collegata