Salta al contenuto
Note per Studenti Audio, immagini e video digitali non compressi e spazi di colore

Audio, immagini e video digitali non compressi e spazi di colore

In questa pagina 6

Questa nota applica la catena di digitalizzazioneLa conversione analogico-digitale (ADC) ha tre passi: campionamento $s_c(n)=s(nT_c)$, quantizzazione su $L=2^m$ livelli, binarizzazione dell'indice in $m$ bit; il bit-rate vale $R=F_c\log_2L$. Per il teorema di Shannon un segnale a banda limitata $f_M$ si ricostruisce senza errore se $F_c\ge2f_M$ (criterio di Nyquist), altrimenti c'è aliasing; per questo prima del campionatore c'è un filtro passa-basso. La quantizzazione uniforme di passo $\Delta=\frac{2A}{L}$ è irreversibile, con errore massimo $\frac\Delta2$ e $\mathrm{MSE}=\frac{\Delta^2}{12}$; la qualità si misura con MSE e $\mathrm{PSNR}=10\log_{10}\frac{(2^b-1)^2}{\mathrm{MSE}}$. In ricezione il bit mapper ricostruisce i valori e l'interpolazione con un nucleo $h$ (sample and hold, lineare, cubica, sinc troncato) riporta il segnale al tempo continuo.Digitalizzazione dei segnali multimediali - campionamento, quantizzazione e binarizzazione → ai tre tipi di segnale multimediale: suono, immagine, video. Per ciascuno si vede come sono scelti i parametri (frequenza di campionamento, bit per campione, numero di canali) e quanti bit al secondo o quanti byte risultano. Sono i conti più frequenti nei quiz d'esame (esercizi svolti in Esercizio - Bitrate e dimensione dei segnali non compressi (domande ed esercizi del corso)), e mostrano perché la compressione è indispensabile.

La regola di fondo, per ogni segnale non compresso: bit-rate=(campioni al secondo)×(bit per campione)×(numero di canali o componenti).\text{bit-rate}=\text{(campioni al secondo)}\times\text{(bit per campione)}\times\text{(numero di canali o componenti)}.

1. Come percepiamo il suono

Il nostro sistema uditivo fa un'analisi in frequenza dei suoni che arrivano all'orecchio: si può modellare come un banco di filtri H1(f),…,HN(f)H_1(f),\dots,H_N(f), ciascuno dei quali analizza una banda di frequenze. Un tono puro a frequenza f0f_0 eccita soprattutto la fibra nervosa che corrisponde a quella banda. Due fenomeni sono importanti per la compressione.

  • Soglia di udibilità. Esiste una potenza minima sotto la quale un tono puro di frequenza ff non si sente; la soglia varia da persona a persona e con l'età. Presa come riferimento la soglia del tono a 1 kHz, la soglia in funzione della frequenza è molto alta agli estremi dello spettro udibile e più bassa nella zona 1-5 kHz (a forma di conca). I suoni sotto la curva sono inutili da codificare.
  • Mascheramento in frequenza. Se un tono forte è presente, alza la soglia per le frequenze vicine: un tono debole accanto a uno forte non si sente. La funzione di innalzamento della soglia decresce con la distanza in frequenza, ma non è simmetrica: scende più lentamente per le frequenze superiori. Un tono maschera più le frequenze più alte che quelle più basse.
  • Mascheramento temporale. Il tono forte maschera anche nel tempo: un po' prima (pre-masking, 2-5 ms) e molto dopo (post-masking, 100-200 ms).

Codifica percettiva. Si può quantizzare (comprimere) il segnale acustico in modo che il rumore di quantizzazione generato cada sotto la soglia di mascheramento e quindi non si senta. Si realizza dando forma allo spettro del rumore, oppure con un'analisi tempo-frequenza che quantizza grossolanamente le componenti mascherate. È il principio di MP3 e AAC.

2. Parlato: PCM a 64 kbit/s

La potenza del segnale vocale è concentrata nella banda [200,3400][200,3400] Hz. Il parlato si acquisisce quindi con un filtro passa-basso a fcut=4f_{\text{cut}}=4 kHz e campionamento a Fc≥8F_c\ge8 kHz (Nyquist: 2×4=82\times4=8). Il numero di livelli di quantizzazione è stato trovato sperimentalmente. Due scelte comuni:

  • 128 livelli, cioè 7 bit per campione (in uso in Asia e America): R=8000×7=56R=8000\times7=56 kbit/s;
  • 256 livelli, cioè 8 bit (nel resto del mondo): R=8000×8=64R=8000\times8=64 kbit/s.

Nel seguito si prende L=256L=256: R=Fclog⁡2L=8000×8=64 kbit/sR=F_c\log_2L=8000\times8=\textbf{64 kbit/s}. Questo schema è chiamato PCM (pulse code modulation), anche se a rigore non è una modulazione ma uno schema di digitalizzazione (una modulazione associa a ogni stringa di bb bit una forma d'onda da trasmettere sul canale per un intervallo di simbolo; per esempio una QPSK associa a 00,01,11,1000,01,11,10 quattro fasi della portante).

Pacchettizzazione. Un pacchetto corrisponde tipicamente a 20 ms di voce: 20⋅10−3×8000=16020\cdot10^{-3}\times8000=160 campioni, cioè 160160 byte con 8 bit (140140 byte con 7 bit, perché 160×7/8=140160\times7/8=140). Il ritmo è quindi 50 pacchetti al secondo. Per ridurre i 64 kbit/s si usano i codificatori vocali (Codifica della voceIl parlato è localmente stazionario su circa 20 ms e comprende suoni vocali (pseudo-periodici, con pitch) e non vocali (simili a rumore). Si codifica in tre modi: a forma d'onda (PCM, G.711: 64 kbit/s, qualità alta), con vocoder (modellano la produzione della voce, 2,4 kbit/s o meno, voce innaturale) e ibridi (parametri del modello più codifica del residuo: G.729 a 8 kbit/s, GSM a 13, AMR-WB 6,6-23,85, Opus 6-510 kbit/s). Nel vocoder LPC10 ogni 20 ms (160 campioni) si trasmettono 10 coefficienti del filtro di predizione (36 bit), un bit voiced/unvoiced, potenza (6 bit) e, se vocale, il pitch (7 bit): 2500 o 2150 bit/s. Contano anche latenza, resilienza agli errori (FEC) e soppressione del silenzio (VAD).Codifica della voce →).

3. Musica: il CD audio

Per la musica, intesa come qualsiasi segnale audio non garantito sotto i 4 kHz, i parametri che rendono impercettibile la distorsione sono:

  • banda utile ≈[15,20 000]\approx[15,20\,000] Hz;
  • due canali (stereo): la stereofonia dà al cervello la direzione di provenienza del suono;
  • Fc=44,1F_c=44{,}1 kHz con filtro anti-aliasing (leggermente più di 2×20=402\times20=40 kHz);
  • 16 bit per campione, cioè 65 53665\,536 livelli (scelta empirica: trasparenza, nessuna distorsione percepibile).

R=44 100×16×2=1 411 200 bit/s≈1,411 Mbit/s.R=44\,100\times16\times2=1\,411\,200\ \text{bit/s}\approx\boxed{1{,}411\ \text{Mbit/s}}. Un solo canale (mono) richiede 705,6705{,}6 kbit/s.

Esempio (capacità di un CD). Il flusso scritto sul disco contiene dati utili al 87%87\% e il 13%13\% è codice di protezione dagli errori (CRC e correzione). Il disco ha 730730 MB di dati utili.

  • Bit-rate totale (dati più protezione): RT=1,4110,87≈1,622R_T=\dfrac{1{,}411}{0{,}87}\approx1{,}622 Mbit/s. Perché si divide per 0,870{,}87: i dati utili sono l'87%87\% del totale, quindi totale = utili / 0,87.
  • Durata massima: bit utili disponibili diviso data rate: T=730×8 Mbit1,4112 Mbit/s≈4138T=\dfrac{730\times8\ \text{Mbit}}{1{,}4112\ \text{Mbit/s}}\approx4138 s ≈69\approx69 minuti. Si usa il data rate dei soli dati utili, perché i 730 MB sono utili.
Segnale FcF_c livelli bit/campione canali data rate
Parlato 8 kHz 256 8 1 64 kbit/s
Musica 44,1 kHz 65 536 16 2 1,411 Mbit/s

La frequenza di campionamento è scelta leggermente sopra 2fmax⁡2f_{\max} (Nyquist); il numero di livelli è scelto empiricamente per assicurare intelligibilità al parlato e trasparenza alla musica; il numero di canali asseconda l'esigenza di spazializzazione.

Passaggi da ricordare per i quiz audio.

  • Dimensione di un file: byte=bit-rate×durata8\text{byte}=\dfrac{\text{bit-rate}\times\text{durata}}{8}. Esempio: 128 kbit/s per 10 minuti: 128×10×60=76 800128\times10\times60=76\,800 kbit =9,6=9{,}6 MB.
  • Quanta musica sta su un supporto: T=capacitaˋ (bit)bit-rateT=\dfrac{\text{capacità (bit)}}{\text{bit-rate}}; se c'è un codice di canale di rapporto Rc=knR_c=\frac kn, il bit-rate che occupa il supporto è RRc\frac{R}{R_c} (più grande, perché si aggiungono bit).
  • Banda con quantizzazione su LL livelli: bit per campione =⌈log⁡2L⌉=\lceil\log_2L\rceil (2048 livelli →\to 11 bit).

4. Immagini

4.1 Acquisizione e quantizzazione

La luce della scena attraversa le ottiche e colpisce il sensore sul piano d'immagine. Ogni pixel del sensore misura la luce che colpisce la sua superficie: si compie un filtraggio e un campionamento spaziale bidimensionale. La qualità aumenta con il numero di pixel (le prime fotocamere digitali: circa 1 Mpixel; oggi oltre 100 Mpixel).

Le immagini in scala di grigi si rappresentano con 1 byte per pixel: 256 livelli di grigio, praticamente indistinguibili da una versione non quantizzata. Ma 256 livelli di luminosità possono non bastare se nell'immagine ci sono zone molto più scure (sottoesposte) o molto più chiare (sovraesposte) del resto: i valori "veri" di quelle zone finiscono a 0 o a 255 e si perde il dettaglio. Soluzione: più bit per pixel. I formati HDR (high dynamic range, gamma dinamica estesa) usano 10 o 12 bit per campione. (Non vanno confusi con le tecniche che simulano l'HDR fondendo più foto scattate a esposizioni diverse.)

4.2 Immagini a colori: lo spazio RGB

L'occhio percepisce i colori grazie ai coni della retina: ce ne sono di tre tipi, ciascuno con una diversa risposta in funzione della lunghezza d'onda. La sensazione di colore è prodotta dal cervello a partire dal tristimolo, la tripletta delle intensità di risposta dei tre coni. Un colore si può quindi ottenere combinando tre colori primari: rosso, verde, blu. Lo spazio RGB rappresenta il colore di un pixel con tre intensità; la tripletta modula la luce dei led di uno schermo.

Ogni canale è su bb bit; con b=8b=8 si hanno (28)3≈16⋅106(2^8)^3\approx16\cdot10^6 colori (24 bit/pixel). Con HDR a 10 o 12 bit si arriva a 36 bit/pixel, circa 64 miliardi di colori (l'occhio ne distingue circa 10 milioni, ma la sovrapposizione con l'RGB a 8 bit non è totale: ecco perché l'HDR può servire).

Dimensioni non compresse. Un'immagine RGB H×WH\times W a 8 bit/canale pesa 3 HW3\,HW byte.

  • HD: 1080×1920×3×8≈49,81080\times1920\times3\times8\approx49{,}8 Mbit ≈6,22\approx6{,}22 MB.
  • 100 Mpixel in HDR a 12 bit: 100⋅106×36=3600100\cdot10^6\times36=3600 Mbit =450=450 MB.
  • 1000×10001000\times1000 pixel RGB: 2424 Mbit.

4.3 Cambi di spazio di colore e sparsità

Nello spazio RGB il colore di un pixel è un vettore X(n,m)=[R,G,B]T\mathbf X(n,m)=[R,G,B]^T. Applicando un cambio di coordinate (una rotazione degli assi, cioè la moltiplicazione per una matrice) si ottengono altri spazi, più utili per le applicazioni. Perché interessa una rotazione? Perché i tre canali RGB sono fortemente correlati: le tre immagini R, G, B sono quasi uguali. Il segnale in RGB non è sparso: tutti i campioni hanno più o meno la stessa importanza; se si degrada un canale, si vede su tutta l'immagine.

Segnale sparso. Un segnale è sparso quando contiene pochi campioni "importanti" e molti "non importanti" (trascurabili, o percettivamente poco rilevanti). Un segnale sparso si comprime bene: si quantizza finemente i campioni importanti e grossolanamente gli altri, senza degradare la qualità percepita. Un campione è importante perché ha valore grande, oppure perché è intrinsecamente più rilevante per la percezione.

4.4 Lo spazio YCbCr

Lo spazio YCbCr si ottiene con una rotazione degli assi che porta la diagonale del cubo dei colori (la retta dei grigi, R=G=BR=G=B) a essere uno degli assi, seguita da un offset che mantiene i valori nell'intervallo [0,255][0,255]: [YCbCr]=T[RGB]+o.\begin{bmatrix}Y\\C_b\\C_r\end{bmatrix}=T\begin{bmatrix}R\\G\\B\end{bmatrix}+\mathbf o.

  • YY, la luminanza, è la luminosità del pixel indipendentemente dal colore;
  • CbC_b e CrC_r, le crominanze, danno l'informazione sul colore (differenze di blu e di rosso rispetto alla luminanza).

Nella pratica la matrice è leggermente diversa dalla rotazione pura, perché si vuole che con R,G,B∈[0,255]R,G,B\in[0,255] anche le nuove componenti stiano in un byte. Per esempio, in una delle versioni in uso (quella dei file JPEG): Y=0,299R+0,587G+0,114B,Cb=128−0,1687R−0,3313G+0,5B,Cr=128+0,5R−0,4187G−0,0813B.Y=0{,}299R+0{,}587G+0{,}114B,\quad C_b=128-0{,}1687R-0{,}3313G+0{,}5B,\quad C_r=128+0{,}5R-0{,}4187G-0{,}0813B. Un grigio (R=G=BR=G=B) ha Cb=Cr=128C_b=C_r=128: nessuna informazione di colore. L'inversione è immediata (T−1T^{-1} e sottrazione dell'offset), ad esempio R=Y+1,402(Cr−128)R=Y+1{,}402(C_r-128).

Esempio. Il pixel (R,G,B)=(200,100,50)(R,G,B)=(200,100,50) dà Y=0,299⋅200+0,587⋅100+0,114⋅50=124,2Y=0{,}299\cdot200+0{,}587\cdot100+0{,}114\cdot50=124{,}2; Cb=128−33,7−33,1+25=86,1C_b=128-33{,}7-33{,}1+25=86{,}1; Cr=128+100−41,9−4,1=182,1C_r=128+100-41{,}9-4{,}1=182{,}1. Ritrasformando si ritrova (200,100,50)(200,100,50).

Perché conviene YCbCr. Il nostro occhio è molto meno sensibile alla crominanza che alla luminanza. Si può quindi scartare tre campioni di crominanza su quattro senza degradazioni visibili: il segnale è sparso dal punto di vista percettivo (campioni importanti: YY; meno importanti: CbC_b e CrC_r). Idea per la compressione:

  1. trasformare da RGB a YCbCr;
  2. scartare una parte dei campioni di crominanza (decimazione);
  3. in ricostruzione, ricreare i campioni mancanti con l'interpolazione (basta l'ordine zero: si replica il valore), poi applicare la trasformazione inversa YCbCr →\to RGB.

Anche se i colori ricostruiti non sono identici, l'occhio non se ne accorge. (I sensori acquisiscono nativamente in RGB: YCbCr è un formato di codifica, non di acquisizione.)

4.5 Sottocampionamento del colore: 4:4:4, 4:2:2, 4:2:0

  • 4:4:4: tutte e tre le componenti a piena risoluzione (nessun sottocampionamento).
  • 4:2:2: CbC_b e CrC_r dimezzate in orizzontale.
  • 4:2:0 (il più usato): CbC_b e CrC_r dimezzate sia in orizzontale sia in verticale (si tiene un campione di crominanza ogni 2×22\times2 pixel: si scartano 34\frac34 dei campioni di crominanza). Si dice anche YUV 4:2:0: "YUV" è un sinonimo pratico di YCbCr, "4:2:0" indica il sottocampionamento spaziale.

Conto delle dimensioni in 4:2:0. Per un frame H×WH\times W: YY ha HWHW campioni; CbC_b e CrC_r hanno H2×W2=HW4\frac H2\times\frac W2=\frac{HW}4 ciascuno. Totale HW+14HW+14HW=1,5 HW campioni.HW+\tfrac14HW+\tfrac14HW=\boxed{1{,}5\,HW}\ \text{campioni.} Rispetto all'RGB (3 HW3\,HW) si dimezza la dimensione. Esempio: immagine da 10 Mpixel: RGB=10+10+10=30\text{RGB}=10+10+10=30 MB; YCbCr 4:2:0=10+2,5+2,5=15\text{YCbCr 4:2:0}=10+2{,}5+2{,}5=15 MB. Compressione ottenuta senza perdita di qualità visiva.

Pipeline:  immagine RGB -> RGB-YCbCr -> decimazione di Cb e Cr -> formato 4:2:0 -> file / trasmissione
           file -> interpolazione di ordine zero di Cb e Cr -> YCbCr-RGB -> visualizzazione

Un esempio numerico di decimazione e interpolazione di ordine zero su un blocco 8×88\times8 di CbC_b (si tengono le righe e colonne dispari: blocco 4×44\times4; si replica ogni valore in un blocco 2×22\times2) è svolto in Esercizio - Sottocampionamento del colore YUV 420 su un blocco (demo del corso): l'errore è piccolo dove l'immagine varia piano e più grande sui bordi.

5. Video

Un video è un flusso di immagini, i fotogrammi (frame). Frequenze tipiche: 24, 30, 50, 60 fps (frame per second). Il minimo di 24 fps dà l'impressione di moto fluido grazie alla persistenza retinica.

Per un video non compresso in 4:2:0 a bb bit per campione: R=H⋅W⋅1,5⋅b⋅f bit/s(f=fps).R=H\cdot W\cdot1{,}5\cdot b\cdot f\ \text{bit/s}\quad(f=\text{fps}).

Formato Risoluzione Pixel fps Tasso (8 bit, 4:2:0)
CIF 352×288352\times288 101 376 30 36 Mbit/s
SDTV 576p 720×576720\times576 414 720 60 299 Mbit/s
HDTV 720p 1280×7201280\times720 921 600 50 553 Mbit/s
HDTV 1080p 1920×10801920\times1080 2 073 600 50 1244 Mbit/s
2K 2048×10802048\times1080 2 211 840 50 1327 Mbit/s
4K 4096×21604096\times2160 8 847 360 50 5308 Mbit/s
8K 7680×43207680\times4320 33 177 600 50 19 907 Mbit/s

Controllo di una riga: 1080p a 50 fps: 2 073 600×1,5×8×50=1 244 160 0002\,073\,600\times1{,}5\times8\times50=1\,244\,160\,000 bit/s ≈1244\approx1244 Mbit/s. Con profondità maggiori il tasso sale: 4K a 10 bit in 4:2:0 e 50 fps vale ≈6635\approx6635 Mbit/s; 8K a 10 bit in 4:4:4 (33 campioni per pixel) ≈49 766\approx49\,766 Mbit/s.

Immagini e video sono quindi dati che richiedono moltissime risorse: i valori di risoluzione e dinamica devono garantire altissima qualità percepita, ma i tassi corrispondenti sono troppo alti per la rete e per la memoria. C'è bisogno della compressione (Codifica lossless - entropia, Huffman e codifiche a dizionarioLa codifica lossless rappresenta i simboli di una sorgente con parole di codice a lunghezza variabile in modo invertibile; si usano codici a prefisso (istantanei). L'entropia $H(X)=\sum p_i\log_2\frac1{p_i}$ è il limite: $H(X)\le\mathcal L^<H(X)+1$ (Shannon), con uguaglianza se le probabilità sono potenze di 1/2. Il codice di Huffman è ottimo ma lascia fino a 1 bit di overhead per simbolo; raggruppando $K$ simboli (codifica a blocchi) si tende al tasso entropico $\mathcal H(X)\le H(X)$, ma la complessità cresce come $M^K$; la codifica aritmetica ($\mathcal L<H+2$ per messaggio) ha complessità lineare. Altre tecniche: dizionario (LZ, DEFLATE di ZIP e PNG, ANS in Zstandard), Exp-Golomb e categoria/ampiezza (usati in JPEG e nei codec video) per interi con probabilità decrescente col modulo, codifica predittiva (si codifica l'errore di predizione, che ha entropia molto più bassa).Codifica lossless - entropia, Huffman e codifiche a dizionario →, Compressione di immagini - DCT e standard JPEGPer comprimere con perdita non basta quantizzare i pixel (non sono sparsi): si applica una trasformata lineare ortogonale che concentra l'energia in pochi coefficienti, si quantizzano i coefficienti e si codificano senza perdita. Le trasformate ortogonali conservano l'MSE ($\frac1N|\mathbf x-\tilde{\mathbf x}|^2=\frac1N|\mathbf y-\tilde{\mathbf y}|^2$). JPEG baseline: si sottrae 128, si divide in blocchi $8\times8$, DCT 2D ($Y=AXA^T$), quantizzazione uniforme con tabella (passi piccoli a bassa frequenza, scalata da un fattore di qualità $Q$), zig-zag scan, DC codificato in modo differenziale con categoria/ampiezza, AC con coppie (run, categoria) e simbolo EOB, codici di Huffman non standardizzati scritti nel file. Esempio completo: un blocco da 512 bit diventa 49 bit (0,766 bit/pixel).Compressione di immagini - DCT e standard JPEG →, Codifica video - stima del moto, MPEG e H.264Un video non compresso costa da centinaia di Mbit/s a decine di Gbit/s; la compressione toglie prima di tutto la ridondanza temporale (immagini consecutive molto simili) con la stima del movimento per block-matching, $\mathbf v^=\arg\min_{\mathbf v},d(B_k^{(\mathbf p)},B_h^{(\mathbf p+\mathbf v)})+\lambda R(\mathbf v)$, e la compensazione del movimento; l'errore di predizione (sparso) si codifica come in JPEG. I fotogrammi sono di tipo I (intra), P (predetti da un riferimento) e B (da due riferimenti, passato e futuro), organizzati in GOP di $N$ immagini con ancore ogni $M$; le I sono 3-5 volte più grandi delle P e 10-20 volte delle B. Il codificatore ibrido contiene un Decoded Frame Buffer per ripetere la predizione del decodificatore. Standard: MPEG-2, H.264/AVC (2003), H.265/HEVC (2013), H.266/VVC (2021), VP9 e AV1: ciascuno dimezza circa il tasso del precedente. Il tasso medio di un GOP I+$N$P è $R_C=fB_I\frac{1+\alpha N}{1+N}$.Codifica video - stima del moto, MPEG e H.264 →). Esempio di rapporto di compressione richiesto: un video 4K (3840x2160, 30 fps, 4:2:0, 8 bit) vale 3840×2160×1,5×8×30≈2,993840\times2160\times1{,}5\times8\times30\approx2{,}99 Gbit/s; per trasmetterlo su un collegamento da 10 Mbit/s serve un rapporto di compressione di almeno 2,99⋅109107≈300\frac{2{,}99\cdot10^9}{10^7}\approx300.

Domande d'esame

1. Qual è lo scopo della trasformazione da RGB a YCbCr? Traccia: ottenere una rappresentazione sparsa percettivamente: l'occhio è meno sensibile a CbC_b e CrC_r che a YY, quindi si possono decimare le crominanze (4:2:0, 3/4 dei campioni scartati, dimensione dimezzata) con impatto piccolo sulla qualità percepita; in ricezione si interpola e si torna a RGB.

2. Un'immagine 2000×30002000\times3000 in YCbCr 4:2:0, 8 bit per canale, è trasmessa senza compressione a 1 Mbit/s. Quanto dura la trasmissione? E in RGB? Traccia: YY: 2000⋅3000⋅8=482000\cdot3000\cdot8=48 Mbit; CbC_b e CrC_r un quarto ciascuno: totale 72 Mbit →\to 72 s; in RGB il doppio (144 Mbit) →\to 144 s.

3. Un segnale musicale stereo a 44,1 kHz e 16 bit viene registrato su un disco da 730 MB con il 13% di dati di protezione dagli errori. Quanti minuti entrano? Traccia: R=44 100⋅16⋅2=1,411R=44\,100\cdot16\cdot2=1{,}411 Mbit/s; i 730 MB sono utili: T=730⋅8/1,411≈4138T=730\cdot8/1{,}411\approx4138 s ≈69\approx69 min.

Versione ripasso

Regola generale. bit-rate == campioni/s ×\times bit per campione ×\times canali (o componenti). File: byte=R⋅T8\text{byte}=\frac{R\cdot T}{8}; durata su un supporto: capacità / data rate; con un codice di canale di rapporto Rc=k/nR_c=k/n il flusso diventa R/RcR/R_c.

Udito. Banco di filtri (analisi in frequenza). Soglia di udibilità (a conca, riferita al tono a 1 kHz). Mascheramento in frequenza: un tono forte alza la soglia vicino a sé, non simmetrico (maschera di più le frequenze superiori). Mascheramento temporale: pre-masking 2-5 ms, post-masking 100-200 ms. Codifica percettiva: il rumore di quantizzazione deve cadere sotto la soglia di mascheramento (MP3, AAC).

Parlato (PCM). Banda 200-3400 Hz, passa-basso a 4 kHz, Fc=8F_c=8 kHz. 8 bit (256 livelli): 8000×8=648000\times8=64 kbit/s; 7 bit (128 livelli, Asia e America): 56 kbit/s. Pacchetto da 20 ms =160=160 campioni =160=160 B (140 B con 7 bit). PCM è uno schema di digitalizzazione, non una modulazione.

Musica (CD). Banda fino a 20 kHz, Fc=44,1F_c=44{,}1 kHz, 16 bit, 2 canali: 44 100×16×2=1,41144\,100\times16\times2=1{,}411 Mbit/s (mono 705,6 kbit/s). Disco da 730 MB utili con 87% di dati e 13% di protezione: RT=1,4110,87≈1,622R_T=\frac{1{,}411}{0{,}87}\approx1{,}622 Mbit/s; T=730⋅81,4112≈4138T=\frac{730\cdot8}{1{,}4112}\approx4138 s ≈69\approx69 min (si usa il data rate dei dati utili). FcF_c poco sopra 2fmax⁡2f_{\max}; livelli scelti empiricamente; stereo per la direzione del suono.

Immagini. Sensore = campionamento spaziale (pixel). Grigi: 8 bit (256 livelli); HDR 10-12 bit contro sotto e sovraesposizione. RGB: coni di tre tipi, tristimolo; 8 bit per canale =24=24 bit/pixel (≈16⋅106\approx16\cdot10^6 colori); HDR fino a 36 bit/pixel. Dimensioni: HD 1080×1920×24≈49,81080\times1920\times24\approx49{,}8 Mbit ≈6,22\approx6{,}22 MB; 100 Mpixel a 36 bit =450=450 MB; 1000×10001000\times1000 RGB =24=24 Mbit.

YCbCr. Rotazione degli assi (diagonale dei grigi →\to asse YY) più offset: YY luminanza, Cb,CrC_b,C_r crominanze. In pratica (JPEG): Y=0,299R+0,587G+0,114BY=0{,}299R+0{,}587G+0{,}114B, Cb=128−0,1687R−0,3313G+0,5BC_b=128-0{,}1687R-0{,}3313G+0{,}5B, Cr=128+0,5R−0,4187G−0,0813BC_r=128+0{,}5R-0{,}4187G-0{,}0813B; un grigio ha Cb=Cr=128C_b=C_r=128. Esempio: (200,100,50)→(124,2; 86,1; 182,1)(200,100,50)\to(124{,}2;\,86{,}1;\,182{,}1).

  • Segnale sparso: pochi campioni importanti, molti trascurabili; si quantizza fine gli importanti e grossolano gli altri. RGB non è sparso (canali correlati), YCbCr sì (percettivamente).
  • Idea: RGB →\to YCbCr, decimare Cb,CrC_b,C_r, in ricezione interpolare (ordine zero) e tornare a RGB.
  • 4:4:4 pieno; 4:2:2 crominanze dimezzate in orizzontale; 4:2:0 dimezzate in orizzontale e verticale (scarta 3/4 della crominanza). Campioni: HW+HW4+HW4=1,5 HWHW+\frac{HW}4+\frac{HW}4=1{,}5\,HW, metà dell'RGB (3HW3HW). 10 Mpixel: RGB 30 MB, 4:2:0 15 MB. In pipeline: RGB →\to YCbCr →\to decimazione →\to file; lettura →\to interpolazione →\to RGB.

Video. 24, 30, 50, 60 fps (24 fps per la persistenza retinica). R=HW⋅1,5 b fR=HW\cdot1{,}5\,b\,f: CIF 36 Mbit/s; SD 576p60 299; 720p50 553; 1080p50 1244; 2K 1327; 4K 5308; 8K 19 907 Mbit/s; 4K 10 bit 4:2:0 6635; 8K 10 bit 4:4:4 49 766 Mbit/s. Video 4K 30 fps 8 bit 4:2:0: ≈2,99\approx2{,}99 Gbit/s; su 10 Mbit/s servono compressioni di circa 300.

Errori tipici: contare 3HW3HW campioni in 4:2:0 (sono 1,5HW1{,}5HW); dimenticare che la divisione per 0,870{,}87 dà il flusso totale e non quello utile; usare i 730 MB come totali (sono utili); confondere 7 bit e 8 bit per campione; scrivere log⁡2L\log_2L senza arrotondare per eccesso quando LL non è potenza di 2.

Collegamenti: Digitalizzazione dei segnali multimediali - campionamento, quantizzazione e binarizzazioneLa conversione analogico-digitale (ADC) ha tre passi: campionamento $s_c(n)=s(nT_c)$, quantizzazione su $L=2^m$ livelli, binarizzazione dell'indice in $m$ bit; il bit-rate vale $R=F_c\log_2L$. Per il teorema di Shannon un segnale a banda limitata $f_M$ si ricostruisce senza errore se $F_c\ge2f_M$ (criterio di Nyquist), altrimenti c'è aliasing; per questo prima del campionatore c'è un filtro passa-basso. La quantizzazione uniforme di passo $\Delta=\frac{2A}{L}$ è irreversibile, con errore massimo $\frac\Delta2$ e $\mathrm{MSE}=\frac{\Delta^2}{12}$; la qualità si misura con MSE e $\mathrm{PSNR}=10\log_{10}\frac{(2^b-1)^2}{\mathrm{MSE}}$. In ricezione il bit mapper ricostruisce i valori e l'interpolazione con un nucleo $h$ (sample and hold, lineare, cubica, sinc troncato) riporta il segnale al tempo continuo.Digitalizzazione dei segnali multimediali - campionamento, quantizzazione e binarizzazione →, Compressione di immagini - DCT e standard JPEGPer comprimere con perdita non basta quantizzare i pixel (non sono sparsi): si applica una trasformata lineare ortogonale che concentra l'energia in pochi coefficienti, si quantizzano i coefficienti e si codificano senza perdita. Le trasformate ortogonali conservano l'MSE ($\frac1N|\mathbf x-\tilde{\mathbf x}|^2=\frac1N|\mathbf y-\tilde{\mathbf y}|^2$). JPEG baseline: si sottrae 128, si divide in blocchi $8\times8$, DCT 2D ($Y=AXA^T$), quantizzazione uniforme con tabella (passi piccoli a bassa frequenza, scalata da un fattore di qualità $Q$), zig-zag scan, DC codificato in modo differenziale con categoria/ampiezza, AC con coppie (run, categoria) e simbolo EOB, codici di Huffman non standardizzati scritti nel file. Esempio completo: un blocco da 512 bit diventa 49 bit (0,766 bit/pixel).Compressione di immagini - DCT e standard JPEG →, Esercizio - Bitrate e dimensione dei segnali non compressi (domande ed esercizi del corso).

Domande tipiche.

  • Scopo di RGB →\to YCbCr: rappresentazione sparsa percettivamente, decimazione di CbC_b e CrC_r (4:2:0) con poco impatto sulla qualità.
  • 2000×30002000\times3000 in 4:2:0 a 8 bit su 1 Mbit/s: 48+12+12=7248+12+12=72 Mbit, 72 s; in RGB 144 s.
  • Musica stereo 44,1 kHz 16 bit su 730 MB con 13% di protezione: 1,4111{,}411 Mbit/s, ≈69\approx69 minuti.

Esercizi su questo argomento

Teoria collegata