Video compression

Compressione video

Le tecnologie di compressione video hanno lo scopo di ridurre e rimuovere i dati video ridondanti affinché il file video digitale risultante possa essere trasmesso tramite una rete e memorizzato sulle unità disco del computer in modo più efficiente. Con tecniche di compressione efficaci, è possibile ottenere una riduzione notevole delle dimensioni del file con effetti minimi o comunque non negativi sulla qualità delle immagini. Tuttavia, è possibile che la qualità delle immagini sia compromessa se le dimensioni del file vengono ulteriormente ridotte aumentando il livello di compressione per una determinata tecnica di compressione.

Sono disponibili diverse tecnologie di compressione, sia standard proprietari che di settore. Oggi la maggior parte dei fornitori di tecnologie video di rete utilizza tecniche di compressione standard. Gli standard sono importanti per garantire compatibilità e interoperabilità. Sono particolarmente utili per la compressione video poiché i video possono essere utilizzati per diversi scopi e, in alcune applicazioni di videosorveglianza, è necessario che siano visualizzabili anche molti anni dopo la data di registrazione. Quando si progetta un sistema di videosorveglianza, essendo i sistemi di videosorveglianza basati su standard, gli utenti finali possono scegliere tra diversi fornitori, anziché essere legati a un solo fornitore.

Axis utilizza tre diversi standard di compressione video: Motion JPEG, MPEG-4 Parte 2 (o semplicemente MPEG-4) e H.264. H.264 è lo standard di compressione video più recente ed efficace. In questo capitolo viene descritto il concetto di compressione e viene fornita una descrizione di ciascuno dei tre standard sopra menzionati.

Codec video

Il processo di compressione consiste nell’applicare un algoritmo al video di origine allo scopo di creare un file compresso pronto per la trasmissione o la memorizzazione. Al momento della riproduzione del file compresso, viene invece applicato un algoritmo inverso che genera un video contenente praticamente lo stesso contenuto del video originale. Il tempo richiesto per comprimere, trasmettere, decomprimere e visualizzare un file rappresenta la cosiddetta latenza. Più avanzato è l’algoritmo di compressione, più alta è la latenza.

Una coppia di algoritmi utilizzata contemporaneamente rappresenta un codec (codificatore/ decodificatore) video. I codec video di standard diversi non sono generalmente compatibili tra loro, il che significa che il video compresso con uno standard non può essere normalmente decompresso usando un altro standard. Ad esempio, un decodificatore che supporta lo standard MPEG-4 non può essere utilizzato con un codificatore che supporta lo standard H.264, semplicemente perché uno dei due algoritmi non è in grado di decodificare l’output dell’altro algoritmo correttamente; tuttavia, è possibile implementare più algoritmi nello stesso software o hardware e consentire la coesistenza di più formati.

Confronto tra compressione delle immagini e compressione video

I vari standard di compressione utilizzano metodi diversi per ridurre i dati e offrono, quindi, velocità di trasmissione in bit, qualità e latenze diverse. Gli algoritmi di compressione si suddividono in due tipi: compressione delle immagini e compressione video.

La compressione delle immagini utilizza la tecnologia di codifica intra-fotogramma. I dati vengono ridotti all’interno di un fotogramma immagine semplicemente rimuovendo le informazioni non necessarie che potrebbero essere non visibili all’occhio umano. Motion JPEG è un tipico esempio di standard di compressione di questo tipo. In una sequenza Motion JPEG le immagini sono codificate o compresse come singole immagini JPEG.

Nel formato Motion JPEG le tre immagini della sequenza mostrata vengono codificate e trasmesse come immagini univoche distinte (fotogrammi di tipo I) senza dipendenze tra loro.

Gli algoritmi di compressione di video, quali MPEG-4 e H.264, utilizzano la predizione inter-fotogramma per ridurre i dati video tra una serie di fotogrammi. Ciò implica tecniche come ad esempio la codifica differenziale, dove ciascun fotogramma viene confrontato con quello di riferimento e vengono codificati solo i pixel modificati rispetto al fotogramma di riferimento. Pertanto, il numero dei valori dei pixel codificati e trasmessi risulta significativamente ridotto. Quando si visualizza una sequenza codificata di questo tipo, le immagini vengono riprodotte come nella sequenza video originale.

Nella codifica differenziale, viene codificata interamente solo la prima immagine (fotogramma di tipo I). Per le due immagini successive (fotogrammi di tipo P), vengono stabiliti dei collegamenti agli elementi statici della prima immagine, come la casa. Solo gli oggetti in movimento, come l’uomo che corre, vengono codificati usando vettori di movimento, in modo da ridurre la quantità di informazioni trasmesse e memorizzate.

Per ridurre ulteriormente i dati, è possibile utilizzare altre tecniche come la compensazione del movimento basata su blocchi. Questa tecnica individua la parte di un nuovo fotogramma di una sequenza video che corrisponde a quella di un fotogramma precedente, anche se riferito a una posizione diversa, e divide il fotogramma in una serie di macroblocchi (blocchi di pixel). Ciò consente di creare o “prevedere”, blocco dopo blocco, un nuovo fotogramma, ricercando un blocco corrispondente in un fotogramma di riferimento. Se si rileva una corrispondenza, il codificatore codifica la posizione in cui si trova il blocco corrispondente all’interno del fotogramma di riferimento. La cosiddetta codifica del vettore di movimento richiede una quantità inferiore di bit rispetto alla codifica del contenuto effettivo del blocco.

Illustrazione della compensazione del movimento basata su blocchi.

Con la predizione inter-fotogramma, ciascun fotogramma di una sequenza di immagini viene classificato come un determinato tipo di fotogramma, ad esempio I, P o B.

Un fotogramma di tipo I o intra-fotrogramma è un fotogramma a sé stante che può essere decodificato in modo indipendente senza fare riferimento ad altre immagini. La prima immagine di una sequenza video è sempre rappresentata da un fotogramma di tipo I. Questo tipo di fotogrammi viene usato come punto iniziale per i nuovi visualizzatori o come punto di risincronizzazione nel caso in cui il flusso in bit trasmesso risulti danneggiato. I fotogrammi di tipo I possono essere usati anche per le funzioni di avanzamento veloce, il riavvolgimento e altre funzioni di accesso. I codificatori inseriscono automaticamente fotogrammi di tipo I a intervalli regolari o su richiesta, se il flusso video deve essere visualizzato su nuovi client. Lo svantaggio di questo tipo di fotogrammi è rappresentato dal fatto che richiedono una maggiore quantità di bit, ma non producono molti artefatti, causati da dati mancanti.

I fotogrammi di tipo P, che sta per inter-fotogramma “predittivo”, fa riferimento al cambiamento a sezioni di fotogrammi I e/o P precedenti per codificare il fotogramma. Questo tipo di fotogramma richiede generalmente una quantità inferiore di bit rispetto ai fotogrammi di tipo I, ma in compenso è molto sensibile agli errori di trasmissione a causa della stretta dipendenza dai fotogrammi P e/o I precedenti.

Un fotogramma di tipo B, o inter-fotogramma “bi-predittivo”, fa riferimento sia a un fotogramma precedente che a un fotogramma successivo. L’uso di fotogrammi di tipo B aumenta la latenza.

Sequenza tipica con fotogrammi I, B e P. Un fotogramma P può fare riferimento solo a fotogrammi I o P precedenti, mentre un fotogramma B può fare riferimento a fotogrammi I o P precedenti e successivi.

Quando un decodificatore video ripristina il video decodificando il flusso di bit un fotogramma alla volta, la decodifica deve sempre iniziare con un fotogramma di tipo I. I fotogrammi di tipo P e B, se utilizzati, devono essere decodificati insieme ai fotogrammi di riferimento.

I prodotti con tecnologia video di rete Axis consentono agli utenti di impostare la lunghezza GOV (Group Of Video), che determina la quantità di fotogrammi di tipo P da inviare prima dell’invio di un altro fotogramma di tipo I. Riducendo la frequenza di fotogrammi I (sequenza GOV più lunga), è possibile ridurre la velocità di trasmissione in bit. Per ridurre la latenza, non vengono utilizzati fotogrammi di tipo B.

Per ridurre ulteriormente i dati e migliorare la qualità del video, oltre alla codifica differenziale e alla compensazione del movimento, è possibile utilizzare altre tecniche avanzate. Lo standard H.264, ad esempio, supporta tecniche avanzate che comprendono schemi di predizione per la codifica dei fotogrammi di tipo I, migliore compensazione del movimento con precisione nell’ordine dei subpixel e un filtro di deblocking per attenuare i bordi dei blocchi (artefatti).

Argomento successivo: Formati di compressione

Formati di compressione