Esercizio - Stima del movimento, GOP e bit-rate del video (domande ed esercizi del corso)
In questa pagina 4
Teoria: 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 → (block-matching, GOP, tasso medio , buffer del client). Fonte: domande a risposta multipla ed esempi di preparazione, slide e demo di stima del movimento del corso di Reti di Calcolatori, Ing. Informatica UniPD 2025-26. Conti verificati in Python.
1. Bit-rate dei vettori di movimento
Domanda 1. In un video HD (, 30 immagini/s) si fa la stima del movimento con block-matching. Nel primo caso si usano blocchi con vettori codificati con 2 bit/vettore; nel secondo blocchi con 2,5 bit/vettore. Quale affermazione è esatta? (a) nel primo caso i vettori richiedono 121,5 kbit/s, (b) nel secondo caso richiedono 8100 bit/s, (c) nel primo caso richiedono 4 volte più bit che nel secondo.
Soluzione. Quattro passaggi: pixel per immagine; blocchi per immagine; bit per immagine; bit al secondo.
- Pixel: .
- Primo caso: blocchi ; bit/immagine ; bit/s kbit/s: (a) vera.
- Secondo caso: blocchi ; bit/immagine ; bit/s kbit/s. (b) falsa: 8100 è il numero di blocchi per immagine, non un bit-rate.
- (c) falsa: è il contrario; il primo caso richiede dei bit del secondo (dimezzare il lato del blocco quadruplica i vettori, e ogni vettore costa un po' di più: ).
Conferma con la tabella delle slide (immagine CIF ). Blocchi: , , . Tasso totale dei vettori: , , bit, cioè , , bit per vettore: con blocchi più piccoli i vettori sono più numerosi e ciascuno costa di più (meno regolari rispetto ai vicini), il tasso totale cresce di volte da a , il PSNR del predittore sale da a dB e il tempo di calcolo volte.
Ricerca three-step. Per una finestra di ricerca candidati la full search fa 196 confronti; la three-step ne fa (primo passo) (i passi successivi riusano il centro) : riduzione .
2. GOP, ritardo e buffer
Domanda 2. Un codificatore video usa un GOP del tipo con una immagine Intra e immagini P. Le Intra sono codificate con kbit, le P con , , cioè 40 kbit. Il video ha immagini/s. Dopo la compressione è trasmesso su una connessione di 10 link identici, ciascuno con throughput costante di 2 Mbit/s. Quale affermazione è esatta? (a) il ritardo end-to-end di un'immagine può arrivare fino a non meno di 2 secondi; (b) se allora da un GOP all'altro il playout buffer del client tende a riempirsi in fase di riproduzione; (c) il minimo throughput (al variare di ) necessario per supportare la trasmissione video è 10 Mbit/s.
Soluzione.
- (a) Il ritardo di trasmissione di una Intra su un link è s ms; con 10 link in cascata (store-and-forward) il ritardo end-to-end è almeno s, e ancora non si sono contati accodamento, processing e propagazione. Quindi "fino a non meno di 2 secondi" è vera.
- (b) Il tasso medio del GOP è . Il buffer si riempie se Mbit/s (la rete usata ai fini del playout è la più lenta: 2 Mbit/s). Tabella: Mbit/s; ; ; ; ; . Condizione: per avere (uguale per : il buffer resta costante); riempimento strettamente per . Per il buffer si svuota. (b) falsa.
- (c) Mbit/s (la funzione è strettamente decrescente). Qualsiasi può sostenere il video purché sia abbastanza grande. (c) falsa (10 Mbit/s è , il caso di tutte intra).
Condizione R_C <= S, con R_Intra = 10 Mbit/s, R_Inter = 1 Mbit/s:
S <= 1 Mbit/s : mai soddisfatta
S >= 10 Mbit/s : sempre (per ogni N)
1 < S < 10 Mbit/s : N >= (10 - S) / (S - 1) (per S = 2: N >= 8)Domanda 3 (GOP e riproduzione). Un video ha 30 fps, struttura GOP , bit per frame kbit, rapporto tra bit di una P e bit di una I uguale a , throughput Mbit/s. Quale affermazione è corretta, relativamente al periodo di playout? (a) il buffer tende a svuotarsi, (b) a riempirsi, (c) il sistema è instabile (oscilla), (d) non è determinabile.
Bit per GOP: kbit. Il GOP ha 10 frame, quindi dura s: in un secondo ci sono 3 GOP, kbit/s Mbit/s Mbit/s. In riproduzione : il buffer si svuota: (a). (b) falsa perché . (c) l'oscillazione c'è solo dentro il singolo GOP (il buffer cala quando passano le I e risale sulle P), ma l'andamento medio è decrescente. (d) è determinabile.
3. Struttura del GOP (esercizio costruito)
Domanda 4. Con GOP di lunghezza e distanza tra le ancore , scrivere l'ordine di visualizzazione e di codifica. Soluzione. Visualizzazione: . Ogni coppia di B si predice dalle due ancore che la racchiudono (l'ultima coppia dalla e dalla del GOP seguente). Codifica: . Il decodificatore deve riordinare i frame prima di mostrarli, e il codificatore deve aspettare l'ancora futura per codificare le B: un ritardo di riordino di circa frame (con e 25 fps, 80 ms).
Domanda 5. Se una Intra pesa 400 kbit e una P 40 kbit, e una B 20 kbit, quanti bit richiede un GOP con , (1 I, 3 P, 8 B)? kbit; durata s; Mbit/s. (Le B pesano meno delle P: a parità di qualità le immagini I sono 3-5 volte le P e 10-20 volte le B.)
Errori tipici
- Dimenticare il numero di blocchi (si divide per l'area del blocco) o i fotogrammi al secondo nel bit-rate dei vettori.
- Usare 1 al posto di come numero di frame del GOP (con P il GOP ha frame).
- Confrontare con il throughput di un singolo link, anche con più link in serie: conta il minimo (il collo di bottiglia).
- Confondere la condizione di riempimento () con quella di equilibrio (): per nell'esempio il buffer resta costante.
- Dimenticare che il ritardo end-to-end minimo conta tutti i link in cascata (10 200 ms), non uno solo.
Versione ripasso
Bit-rate dei vettori. Blocchi ; bit/immagine ; bit/s . HD pixel, 30 fps: , 2 bit: kbit/s (vera); , 2,5 bit: kbit/s (8100 è il numero di blocchi, non un bit-rate); il primo caso richiede del secondo (non 4 volte di più).
Tabella CIF. Blocchi 1584, 396, 99; tasso 7938, 1668, 368 bit 5,0, 4,2, 3,7 bit/vettore; vs : tasso , PSNR dB, tempo . Three-step: 25 confronti su 196 .
GOP. 400 kbit, kbit, 25 fps, 10 link da 2 Mbit/s.
- (a) ritardo e2e s: vera.
- Mbit/s: , , , , . Riempimento se : ; costante a ; svuotamento per : (b) falsa. Condizione .
- (c) Mbit/s (non 10): falsa. : mai se ; sempre se .
I+9P. kbit, , 30 fps, Mbit/s: bit per GOP kbit; 3 GOP/s Mbit/s ; : il buffer si svuota.
GOP , . Visualizzazione ; codifica ; riordino frame. Con I 400, P 40, B 20 kbit: kbit in s: Mbit/s.
Errori tipici: non dividere per l'area del blocco o dimenticare i fps; frame del GOP ; confrontare con il throughput di un solo link invece del minimo; confondere riempimento () ed equilibrio (); contare un solo link nel ritardo end-to-end.