VideoHome. Prec. Succ. Home Home


Paragrafo 2: H.261

1.1 introduzione

Le raccomandazioni H.261 sono state preparate dal Gruppo di Studio XV del CCITT, organo permanente dell'ITU, e approvate nel Dicembre del 1990, vennero poi rivedute e leggermente modificate nel 1993 quando ormai il CCITT era stato inglobato dall'ITU ed era diventato ITU-T (settore dell'ITU per la standardizzazione delle telecomunicazioni). Esse descrivono i metodi di codifica e decodifica per sequenze di immagini in movimento ai fini di trasmissioni audio/video su reti con p x 64 Kbit/s di rate (p valore intero compreso tra 1 e 30). Le specifiche H.261 includono, inoltre, uno schema di organizzazione gerarchica a strati per i dati video.

1.2 formato del sorgente

Ai fini di utilizzare un unico insieme di specifiche per nazioni che utilizzano standard televisivi diversi quali possono essere il PAL (625/50) e l' NTSC (525/60), il CCITT ha adottato come formato dell'immagine il CIF e il QCIF, l'immagine, inoltre, viene codificata in luminanza (Y) e due componenti (CB e CR), funzione dei componenti standard di crominanza RGB (red green blue).

Il formato CIF ha 352 pixel in orizzontale e 288 in verticale e il QCIF 176 e 144 in pratica metà delle righe e metà delle colonne del CIF, Q sta appunto per quarter, in entrambi i casi per ogni quattro pixel di luminanza ve ne sono due di crominanza come in figura 1. Figura 1

Secondo le specifiche H.261 tutti i Codec devono saper gestire i QCIF mentre l'utilizzo dei CIF è raccomandato ma comunque opzionale. La codifica viene fatta sia sugli INTERFRAME che sugli INTRAFRAME: ci si riferisce ai primi quando si parla di immagini che dipendono da quelle precedenti, per esempio nel caso di predizione dell'errore, ci si riferisce ai secondi quando, invece, l'immagine è autonomamente decodificata e non ha nessuna relazione con quelle precedenti. Per riassumere si può affermare che l'intraframe può essere decodificata senza bisogno di informazioni esterne, l'interframe invece contiene solo informazioni sulle differenze dell'immagine rispetto alla precedente è quindi impossibile decodificarla e portarla in chiaro senza prima aver decodificato quella che la precedeva. Nel caso di intraframe vengono rimosse solamente le ridondanze spaziali, esattamente come fosse un'immagine fissa compressa in JPEG o GIF, nelle interframe vengono rimosse anche le ridondanze temporali cioè quanto quel determinato blocchetto di pixel differisce da quello nella medesima posizione nell'immagine precedente.

1.3 organizzazione gerarchica dei dati video

Le immagini in formato CIF e QCIF vengono suddivise in blocchi, Figura 2 macroblocchi, gruppi di blocchi e immagini complete. Ogni blocco è formato da un quadrato di 8x8 pixel e ogni macroblocco (MB) è formato da quattro blocchi, quindi è un quadrato di 16 pixel di lato; quando in questo campo si parla di un certo numero di pixel, a meno che non sia specificato, si intende sempre pixel di luminanza, come si può notare dalla figura 2 per ogni quattro pixel di luminanza ve ne sono uno di CB e uno di CR quindi in realtà un macroblocco è formato da quattro blocchi di luminanza, uno di crominanza CB e uno di crominanza CR.

Ogni gruppo di blocchi (GOB, group of blocks) è formato da 3x11 macroblocchi per cui si può infine affermare che una immagine in formato CIF (352x288) è composta da 12 GOB e una QCIF (176x144) da 3 GOB.

Il trattamento di tali suddivisioni si può vedere in pratica come una suddivisione a strati non troppo dissimile dal modello ISO/OSI-RM dove ogni strato aggiunge il suo header al pacchetto dati che riceve dallo strato superiore. Come si può vedere in figura 3 ad ogni strato è associato un pacchetto dati che nello specifico contiene: per lo strato Picture un header seguito dai dati dei GOB, l'header contiene un codice di inizio immagine, alcuni bit di sincronizzazione e il formato Figura 3 video usato (CIF o QCIF); il pacchetto a livello GOB contiene i dati degli MB e un header che indica l'inizio gruppo di blocchi e il numero del blocco; a livello di macroblocco abbiamo un header seguito dai dati dei blocchi, l'header contiene un codice a lunghezza variabile (VLC, variable length code) che indica la posizione dell'MB all'interno del GOB, un altro VLC che indica il tipo di MB che può essere: codificato inter o intra frame, con o senza stima del vettore di moto (motion vector) e altre informazioni relative alla codifica che vedremo comunque in seguito più dettagliatamente; infine a livello di blocco non abbiamo un header bensì una codifica dei 64 coefficienti della Trasformata Discreta Coseno (DCT) seguiti da un codice a lunghezza fissa ( FLC, fixed length code) che indica la fine del blocco (EOB, end of block). Un'ultima considerazione va fatta sulla sequenza dei Figura 4 coefficienti, essi vengono trasmessi, e calcolati, nella classica sequenza a zig-zag (vedi figura 4) sì da aumentare il rapporto di compressione.

1.4 problematiche concernenti interframe ed intraframe

Tornando a riprendere per un attimo il concetto di intraframe e interframe va detto che tale stima viene fatta non sull'immagine intera bensì sui macroblocchi, per intendersi un'immagine completa essendo composta da diversi MB può averne alcuni codificati inter e altri codificati intra, tale decisione viene presa a livello di Codec, che ripetiamo può essere sia software che hardware, confrontando il macroblocco con il relativo dell'immagine precedente, se tale differenza è molto elevata, cioè al di sopra di una certa soglia, viene scelta una codifica intra, saltando quindi il processo di predizione dell'errore, se invece risulta essere abbastanza bassa ecco che il macroblocco viene codificato in modo inter e parte così la routine di predizione dell'errore che darà come risultato un vettore di moto per ogni MB, a questo punto la serie di vettori di moto verrà codificata e trasmessa, è palese quindi il risparmio di 'spazio' in termini di trasmissione dei dati con questo secondo metodo di codifica, va detto di contro che l'algoritmo sarà un po' più lento perché dovrà fare una serie di confronti più onerosi rispetto ai calcoli della codifica intra quindi andrà scelto un compromesso tra velocità di codifica ed efficienza della compressione, tantopiù che le specifiche H.261 in realtà non danno un valore fisso della soglia di cui sopra e lasciano all'utente o programmatore la libertà di fissarla a seconda delle esigenze e delle caratteristiche del proprio sistema di videoconferenza.

Un altro paio di grossi problemi sorgono dall'utilizzo degli inter e intraframe e sono: l' 'impossibilità' di far girare la sequenza all'indietro e la ricostruzione dell'immagine se un pacchetto perduto sulla rete conteneva proprio un'intraframe (si ricordi che, per aumentare la velocità di trasmissione, utilizziamo un protocollo non orientato alla connessione). Per il primo caso, che esce un po' dai binari della videoconferenza e abbraccia il campo dei montaggi video in digitale, basti pensare ad un qualsiasi operatore video che ricerca una certa sequenza mandando indietro il nastro, che nel nostro caso nastro non è bensì informazioni su disco fisso o in memoria centrale: se il ventesimo frame, ad esempio, dipende dal diciannovesimo e può essere ricostruito solo da quello, non sarà possibile vederlo se ci si arriva dal ventunesimo, appunto procedendo all'indietro. Il secondo problema nasce dalla non troppo remota possibilità di perdere sulla rete un pacchetto dati, o dal caso questo arrivi ma sia errato, ecco che anche in questo caso la ricostruzione delle immagini seguenti quel pacchetto sarebbe impossibile almeno senza qualche accorgimento.

Per entrambi i problemi, comunque, si può trovare una soluzione parlando del concetto di refresh rate che starebbe ad indicare ogni quanti interframe ci deve per forza essere un'intraframe, indipendentemente dal criterio della 'soglia' di cui prima parlavamo. In questa maniera è possibile mandare all'indietro la sequenza video che tornerà al primo intraframe precedente il fotogramma che vogliamo visionare e andrà avanti ricostruendo immagine per immagine, chi mai avesse avuto esperienza di montaggio digitale si sarà reso conto di quanto costa in termini di tempo andare all'indietro fotogramma per fotogramma. Anche per il caso di pacchetti perduti o errati l'utilizzo di questi intraframe indice permette la ricostruzione della sequenza a partire dall'intraframe successivo il pacchetto perduto o errato. Così come per la soglia, le specifiche H.261 non indicano un preciso refresh rate ma semplicemente un tetto massimo oltre il quale conviene codificare un macroblocco in modo intra, questo valore è 132 e sta ad indicare che al massimo un MB deve essere rinfrescato con una codifica intra ogni 132 volte che viene trasmesso. In realtà questo valore è anche troppo elevato tantopiù che sistemi di videoconferenza quali l' IVS rinfrescano il MB ogni 30 consecutivi MB inter.


Torna suTorna in cima


1.5 Algoritmo di rivelazione del movimento

Una volta che è stata scelta una codifica inter, parte un algoritmo che confronta i pixel di luminanza del macroblocco dell'immagine corrente con il MB nella medesima posizione riferito però all'immagine precedente, viene così calcolato un SAD (sum of absolute differences), tale confronto, e calcolo del SAD, viene fatto anche sui MB 'vicini' a quello della posizione originale, sempre dell'immagine precedente, con granularità 1 pixel (Integer Pixel Motion Estimation) e fino ad allontanarsi di 15 pixel (figura 5) sia orizzontalmente che verticalmente. Figura 5 Tra tutti i SAD così calcolati viene preso quello di valore più basso e viene calcolato il vettore di moto (MV, motion vector), che sarà poi quantizzato. Tale procedimento viene ripetuto per ogni macroblocco dell'immagine: in pratica un frame codificato inter non sarà altro che una serie di vettori di moto tramite i quali sarà poi possibile, conoscendo il frame precedente, ricostruire il frame corrente. Per riassumere un'ultima volta il concetto, è come se io cercassi nel frame diciannovesimo un MB del frame ventesimo, o almeno uno che gli assomiglia parecchio, e per trovarlo cercassi nelle vicinanze di dove era prima: si pensi ad un braccio che saluta, la porzione di frame che conteneva la mano, nel frame successivo, sarà di sicuro lì vicino, ecco, una volta trovata la nuova posizione io trasmetto soltanto un vettore a due dimensioni che mi indica di quanto si è spostata orizzontalmente e verticalmente. Tale metodo mi permette di trasmettere soltanto la quantizzazione di una serie di vettori bidimensionali, invece che dei campioni di una immagine intera, con notevole miglioramento della compressione.

Alla luce delle caratteristiche e delle definizioni fino ad ora descritte, diamo di seguito una trascrizione delle raccomandazioni H.261 così come le presenta ufficialmente l' ITU-T, mantenendo, tra l'altro, gli stessi numeri dei capitoli del documento ufficiale per una più facile comprensione e comparazione dell'originale con la nostra relazione, si fa notare che le specifiche vere e proprie cominciano dal capitolo 2 poiché il capitolo 1, sia nella versione ufficiale che nella nostra relazione, contiene un'introduzione allo standard.

2 brief specification:

Figura 6

3 source coder

Figura 7



Torna suTorna in cima


4 Video Multiplexer Decoder

Figura 10
Figura 11
Figura 12

Figura 13


Figura 14

5 Transmission coder

A questo punto le raccomandazioni H.261 presentano tre appendici: Annesso A, B e C.

Il primo Annesso indica specifiche strettamente riguardanti l'antitrasformata da eseguire in fase di ricostruzione dell'immagine; l'Annesso B indica le specifiche di un ipotetico decoder (HRD) che segua le raccomandazioni H.261; l'Annesso C indica il metodo da seguire per calcolare il ritardo tra video decoder e video encoder.

Come abbiamo già detto, le raccomandazioni H.261 vennero riviste in piccole parti nel 1993, tra le piccole variazioni del documento c'era anche l'aggiunta di un Annesso D che indicava le specifiche da seguire per trasmettere immagini statiche con risoluzione quadrupla rispetto a quella usata, si parlava quindi di CIF se QCIF era il formato adottato e Super-CIF se il formato adottato era il CIF. (N.d.R.: si noti che per la prima volta si parla di formato Super-Cif che altro non è che un immagine formata da quattro CIF, due in orizzontale e due in verticale (704x576 pixel), tale formato è stato, tra l'altro, implementato dall'IVS Inria Videoconference System).


Torna su VideoHome. Prec. Succ. Home Home