Giovedì, 10 February 2022 09:06

I Codec per la Videosorveglianza

I Codec sono elementi fondamentali nella videosorveglianza con nomi quali H.264, H.265, e MJPEG utilizzati normalmente. Come funzionano? Perché usarli? Quali problemi si possono riscontrare?

In questo documento affrontiamo diversi aspetti:

Confronto fra Video non Compresso e Compresso

Praticamente tutti i segnali video usati per la videosorveglianza vengono compressi in quanto in caso contrario le risorse di archiviazione e trasmissione in rete necessarie sarebbero oltre 100 volte superiori.

Quando il video viene digitalizzato inizialmente esso non è compresso.

Ci sono 3 fattori principali da considerare nella dimensione del video non compresso:

  • La gamma di valori supportati per ciascun pixel
  • Il numero totale di pixel per frame
  • Il numero totale di frame al secondoPer scoprire la dimensione totale si devono moltiplicare questi valori. Vediamo qualche dettaglio in più.

Valori dei Pixel

A ciascun pixel viene associato un valore rappresentato da un numero all’interno di una gamma di valori. Questa gamma determina quanto può essere definito precisamente il colore ed ha un impatto enorme sulla banda passante/dimensione.

  • Se consideriamo la scala dei grigi, normalmente ha una gamma di 256 valori (8 bit) con 0 che rappresenta il nero, 255 che rappresenta il bianco e i valori intermedi le scale di grigio.
  • Naturalmente la quasi totalità dei sistemi di videosorveglianza odierni supportano il colore, per cui la gamma di valori necessaria per rappresentare tutti i colori è molto più grande. 16 bit (o 65.536) valori è la normalità.

Valori di Risoluzione/Framerate

Gli altri due fattori sono molto più semplici da capire in quanto sono la risoluzione della telecamera, ottenuta moltiplicando la quantità di pixel orizzontali per quelli verticali:

Per concludere ci sono i frame al secondo (numero di immagini al secondo), semplicemente 1fps, 10fps, 30fps, ecc. La maggior parte delle telecamere di videosorveglianza vengono registrate con un parametro che va da 5 a 15 FPS.

Sommiamo il tutto

Il fattore critico è identificare quanto possa diventare enorme un segnale video non compresso. Prendiamo una telecamera a colori con risoluzione 1080p a 30fps. Non compressa è il prodotto dei seguenti valori:


 La moltiplicazione di questi tre fattori darebbe come risultato circa 1 Gb/s per ottenere un video non compresso da 1080p/30fps. In un giorno, con questi valori, si avrebbe bisogno di circa 12TB di archivio per un singolo flusso video. Nonostante i dischi fissi continuino a diventare sempre più grandi, un sistema di videosorveglianza che dovesse archiviare 16 telecamere non compresse per 30 giorni avrebbe bisogno di circa 6PB (1PB = 1024 TB) di archivio, ossia centinaia di dischi che costerebbero migliaia di Euro.

I Codec Sono la Chiave

Nonostante la dimensione enorme del video non compresso, i sistemi di videosorveglianza da 16 telecamere sono comuni e vengono alloggiati all’interno di normali PC o apparati dedicati (NVR) di dimensione compatta. Come avviene tutto questo? Grazie ai Codec.

Codec è un acronimo che sta per “compression/decompression” e l’operazione di compressione è l’elemento centrale nella riduzione dell’utilizzo di banda passante / dimensione archivio.

L’assegnazione ad ogni pixel di ogni frame di un valore unico è un inutile spreco di risorse in quanto la maggior parte delle scene sono composte da un piccolo numero di colori simili.

I codec comprimono il video riducendo il numero dei valori registrati, tenendo traccia dei pixel che hanno lo stesso valore o valori simili, consentendo la trasmissione con una quantità di bit molto inferiore.

Confronto fra compressione “Inter-Frame” e “Intra-Frame”

Esistono due approcci fondamentali alla compressione: intra-frame e inter-frame.

È determinante capire la differenza tra i due in quanto essi influenzano il consumo di banda passante, i requisiti di capacità di calcolo e la qualità dell’immagine.

  •  La compressione “Intra-frame” avviene solamente nell’ambito di un singolo frame, NON in quello di più frame (esempio - MJPEG)
  • La compressione “Inter-frame” viene effettuata sia nell’ambito di diversi frame che all’interno degli stessi (esempi - H.264, H.265, MPEG-4)

Tutti i codec supportano la compressione “intra-frame” ma solo alcuni supportano anche la compressione “inter-frame”.

Compressione Intra-frame

La compressione Intra-frame si occupa di un solo frame alla volta, facendo del proprio meglio per comprimere il contenuto dell’immagine.

Anche se il video è costituito da una serie di immagini, la compressione intra-frame “vede” solamente una immagine alla volta ignorando la sequenza (stream).

Lo stream prodotto da una codifica intra-frame assomiglia alla sequenza di frame che costituiscono un filmato:

 Il vantaggio di questa soluzione è che è semplice da realizzare dal punto di vista computazionale e che esegue una compressione significativa del video.

Per esempio, un flusso video 1080p/30fps compresso utilizzando una compressione intra-frame come MJPEG può vedere il proprio bitrate ridotto da ~1000 Mb/s a ~40Mb/s.

Tuttavia, lo svantaggio è che un ulteriore livello di compressione sarebbe ottenibile utilizzando un confronto fra i frame.

Compressione Inter-frame

Con l’utilizzo della compressione inter-frame, oltre a venire compresso il video all’interno del singolo frame, come visto in precedenza, il codec esegue la comparazione di frame adiacenti in modo da ottenere una ulteriore compressione.

Questo è possibile dal momento che nella maggior parte dei casi fra un frame e l’altro ci sono pochissime differenze.

Per esempio, considerando la stessa scena di una persona che saluta, la compressione inter-frame trasmetterebbe solamente il braccio della persona.
Con una parte così grande della scena che rimane statica, l’invio delle sole differenze nella scena consente un sostanziale risparmio di banda / archiviazione.

Per esempio, lo stesso flusso a 1080p/30fps che avrebbe bisogno di 40Mb/s con MJPEG (un codec esclusivamente intra-frame), potrebbe necessitare di solo 4Mb/s con H.264, un codec che utilizza anche inter-frame.

Tuttavia, il principale problema della compressione inter-frame è costituito dal fatto che essa necessita di molta più capacità di calcolo, generando potenziali rischi di prestazioni e qualità (esaminati in seguito).

Comparazione fra I e P Frame

Nella compressione inter-frame come H.264/H.265 ci sono due tipi di frame comuni, I e P.

I-frame

La prima immagine in un determinato gruppo di immagini è denominata I-frame, abbreviazione di “intra-coded”, ed è essenzialmente una immagine completa di video, diversamente dai P frame che sono costituiti esclusivamente dalle variazioni nella scena.

La distanza tra due I-frame viene chiamata “I-frame interval”, GOV (group of video), o GOP (group of pictures).

A titolo di esempio, l’immagine seguente mostra l’I-frame di una scena esterna:


P-frame

I P-frame sono riferiti alla immagine completa del precedente I-frame in modo da trasmettere solamente le variazioni all’interno della scena.

Le variazioni possono essere piccole, come del rumore digitale o il movimento di fogliame, o grandi come lo spostamento di una telecamera PTZ da un preset all’altro.

La P in P-frame sta per "Predictive."

Le differenze inviate in un P-frame dalla scena dell’immagine di esempio precedente si possono vedere nella immagine seguente. Solamente le aree vicino alla strada, dove passano le auto, e il fogliame in movimento sulla destra, vengono inviate come variazioni.

Mettendole tutte insieme in un video, le variazioni dei P-frame vengono “sovrapposte” una dopo l’altra fino a che non viene inviato il successivo I-frame (~15 secondi in questo esempio).

Altri Tipi di Frame

Si tenga presente che oltre ai frame I e P ne esistono di altri tipi, quali B, SI e SP, sebbene essi siano praticamene non utilizzati nell’ambito della videosorveglianza.

Alcune telecamere IP includono il supporto dei B-frame, ma non tutti i VMS sono in grado di decodificarli in modo appropriato, per cui essi generalmente non vengono usati.

Codec Standard

A far data 2022 la maggior parte delle nuove installazioni utilizzano ancora H.264.

Nonostante le telecamere dispongano ormai anche di H.265 e il supporto da parte dei VMS sia diffuso, l’aumento di carico della CPU quando si usa H.265 e il guadagno di banda limitato rendono H.264 la scelta più comune nella maggior parte dei casi.

MJPEG viene ancora utilizzato in alcuni casi ma principalmente in applicazioni specialistiche quali la rilevazione delle targhe o altri tipi di analisi video.

Tuttavia, i produttori hanno iniziato a limitare il supporto del MJPEG con alcuni dei nuovi modelli che non forniscono lo stream in MJPEG.

H.265 Comune ma Ancora Limitato

Per anni H.265 è stato il “next big codec”, promettendo di rimpiazzare H.264 e ridurre il bitrate di un altro ~50%. Tuttavia, ci sono degli ostacoli che ne prevengono una adozione illimitata:

  • Vantaggi limitati: Mentre il passaggio da MJPEG a H.264 ha dato luogo a una drastica riduzione nel bitrate, spesso 50-75% o superiore, i test del H.265 dimostrano che il risparmio rispetto di banda rispetto al H.264 è nell’ordine del 15-30%. Dato questo fatto e il rapido aumento di dimensione / diminuzione di costo dei dischi fissi, i vantaggi del H.265 non sono così interessanti come quelli del suo predecessore.
  • Aumento di carico della CPU: In base ai test la visualizzazione degli stream H.265 necessita di una capacità di calcolo del processore notevolmente superiore rispetto all’equivalente FPS/risoluzione di flussi H.264, in alcuni casi doppia, il che potrebbe significare la necessità di nuove workstation di visualizzazione in molte installazioni.
  • Necessita di sviluppo: Le applicazioni VMS devono implementare la decodifica H.265, uno sviluppo dal costo non banale, sebbene con vantaggi limitati dal numero ancora limitato di modelli H.265 e risparmi limitati in termini di banda passante / archiviazione.
  • Conformità ONVIF Limitata: Il passaggio delle telecamere al H.265 significa abbandonare la conformità ONVIF fino al completamento dell’ultimo profilo disponibile, Profilo T, che è stato rilasciato a fine 2018 ed ancora ha una limitata quantità di prodotti conformi. I produttori di telecamere erano in grado di implementare H.265 usando la specifica 2.4 di ONVIF ma non è stato disponibile nessun test di conformità fino a che il profilo non è stato completamente disponibile. Le telecamere con Profilo T sono cresciute rapidamente nel 2020/2021, ma la conformità dei VMS è ancora piuttosto limitata rispetto al precedente Profilo S.

Codec proprietari

Il mercato della videosorveglianza ha avuto alcuni codec proprietari, ma pochi di essi sono ancora usati nel 2022. Nei vecchi sistemi analogici il video veniva codificato, archiviato e gestito dallo stesso dispositivo (il DVR), rendendo più semplice l’impiego di un codec proprietario dal momento che il produttore controllava interamente il processo dall’inizio alla fine.

Tuttavia, le telecamere IP codificano il video internamente e lo trasmettono a un registratore / VMS per la registrazione e la gestione.

I codec proprietari aumentano la complessità di registrazione, gestione e visualizzazione del video in quanto essi devono essere sviluppati appositamente nel VMS / NVR.

L’elevato costo di questo sviluppo / integrazione ha motivato la scelta della maggior parte dei costruttori di telecamere IP nell’utilizzo di codec standard.

L’eccezione del MxPEG di Mobotix

MxPEG di Mobotix è stato ed è ancora il codec proprietario più noto e impiegato nella videosorveglianza.

Introdotto nel 2000, MxPEG supporta la compressione inter-frame, migliorando il MJPEG e riducendo il consumo di banda in confronto a quest’ultimo.

Tuttavia, essendo proprietario, solo pochi VMS di terza parte lo supportano, sebbene alcuni lo abbiano integrato di recente.

Inoltre, il consumo di banda del H.264 è tipicamente molto inferiore rispetto a un flusso video equivalente MxPEG, riducendone ulteriormente l’attrattiva.

Smart Codec

Negli ultimi anni sono diventati comuni gli smart codec H.264 e H.265, con l’obiettivo di ridurre ulteriormente il bitrate rispetto agli H.264/5 standard. Il modo in cui esattamente funzionano questi smart codec varia, ma in generale essi impiegano due tecniche, analizzate brevemente di seguito.

Compressione Smart

Invece di applicare lo stesso livello di compressione all’intera scena, gli smart codec regolano dinamicamente la compressione in base all’attività presente nel campo visivo della telecamera.

Per esempio, guardando l’immagine seguente, il livello di compressione dovrebbe essere impostato a "low" (basso) per il soggetto in modo da mantenere una elevata qualità, mentre tutto lo sfondo può essere impostato ad "high" (alto), dal momento che non sono necessari dettagli delle pareti.

Intervallo del I-frame Dinamico

Gli smart codec tipicamente regolano dinamicamente l’intervallo del I-frame in base alla attività presente nella scena.

Quindi se una scena ha poco o nessun movimento, la telecamera invia I-frame in modo meno frequente (5, 10, 20 secondi o oltre), ma quando viene rilevata della attività nella scena, esso invia immediatamente un I-frame e torna al normale intervallo del I-frame (tipicamente 1 secondo) fino a che continua ad esserci attività.

La seguente immagine mostra gli effetti dell’intervallo di I-frame dinamico:

Benefici degli Smart Codec

In seguito a test si verifica come gli Smart codec riducano in modo significativo il bitrate, ~15% come minimo, ma fino a oltre il 95% in alcune scene.

Questi codec sono molto efficaci nelle scene statiche, dal momento che l’intervallo del I-frame rimane più lungo e la compressione più elevata grazie alla mancanza di attività.

Confronto di qualità fra H.264 e MJPEG

Nonostante il H.264 sia sicuramente il codec più utilizzato nella videosorveglianza è in corso da molti anni un grande dibattito a proposito della perdita di qualità rispetto al MJPEG, e alcuni sono tuttora convinti che il H.264 sia inferiore. Eseguendo approfonditi test comparati fra H.264 e MJPEG si può verificare come il H.264, correttamente configurato, fornisca la stessa qualità video del MJPEG.

Sono tuttavia presenti alcuni fattori che possono compromettere la qualità, tipicamente:

  • Impostazione di alti livelli di compressione: Se i livelli di compressione sono impostati troppo elevati, il video avrà un degrado qualitativo significativo.
  • Scene con elevata complessità: Questi fenomeni sono spesso visibili in scene complesse, dove è presente tanta attività tipo incroci stradali, folla, ecc.
  • Impostazione di bit rate basso e costante: Se viene usato il CBR ma il bit rate viene impostato basso, il video avrà un conseguente degrado qualitativo.

Tuttavia, nella maggior parte dei casi, anche utilizzando impostazioni di default, H.264 fornisce qualità simile a quella del MJPEG.

Codec Scalabili

La maggior parte dei codec possono supportare una singola risoluzione. Quindi per modificare uno stream da 2MP a 1MP usando MJPEG o H.264 è necessario o codificare uno stream diverso o trascodificare (ossia rielaborare) quello esistente a 2MP per renderlo a 1MP.

Tuttavia, in alcuni casi si desidera modificare la risoluzione dello stream senza voler utilizzare un nuovo stream, per esempio se si sta inviando le immagini a un client collegato su connessione a banda limitata (p.es. mobile) o si desidera ridurre la dimensione di archiviazione di un video vecchio.

Una determinata famiglia di codec denominati “scalabili” possono farlo automaticamente, senza che sia necessario richiedere un nuovo stream o rielaborare quello esistente. Un codec scalabile può essenzialmente “estrarre” le immagini o i livelli di risoluzione desiderati da uno stream. Questo consente di ridurre i frame o la risoluzione nel tempo così come regolare dinamicamente risoluzione / fps per client remoti / mobili.

I due codec scalabili più noti sono:

  • SVC è H.264 con scalabilità. Il principale vantaggio è che combina la scalabilità con i benefici del consumo di banda ottimizzato del H.264. Purtroppo, è supportato da pochissimi costruttori. La maggior parte soddisfano questa esigenza attraverso il multi-streaming (trasmissione di stream multipli simultaneamente a diversa risoluzione / frame rate).
  • JPEG2000, che è essenzialmente MJPEG, con l’aggiunta della scalabilità. Questo è il codec usato da Avigilon nel passato, ma è stato sostituito dai più standard H.264 / 5 negli ultimi anni. Il principale limite del JPEG2000, così come del MJPEG, è l’enorme aumento di banda passante / dimensione archivio in confronto con H.264, solo parzialmente compensato dalla capacità di scalare.

Lo sviluppo del SVC è stato estremamente lento, con una limitatissima disponibilità al momento su modelli di telecamere sul mercato. Con i vantaggi in termini di bitrate garantiti degli smart codec H.264 (senza che siano necessari nuovi sviluppi per i VMS / NVR) e H.265, è improbabile che SVC diventi un fattore fra i codec usati per la videosorveglianza.

Codec Futuri

Nonostante vengano discussi o lanciati molti codec alternativi, è estremamente improbabile che ne venga adottato uno qualsiasi non standardizzato per la videosorveglianza.

Per esempio, alcuni sviluppatori rivendicano sensazionali risparmi di banda dai propri codec proprietari, come Digital Barriers TVI / EdgeVis.

Tuttavia, questo richiederebbe l’implementazione di questi codec nei propri prodotti sia da parte dei produttori di telecamere che di VMS / NVR. Inoltre, viste le significative riduzioni di bitrate degli smart codec, che sono compatibili con la maggior parte degli attuali NVR / VMS, l’investimento in sviluppo per aggiungere questi codec proprietari è ancora più improbabile.

Alcuni hanno menzionato i codec di Google VP8 e VP9 come possibilità nella videosorveglianza, specialmente come alternativa priva di costi di licenza al H.265 (che nel frattempo ha visto scendere i propri costi di licenza). Tuttavia, questi codec vedono interesse nullo da parte dei produttori, senza che nessun costruttore di chipset si muova per adottarli, e quindi per ora non se ne prevede l’impiego.

Quali Codec Scegliere?

Anche nel 2022, la miglior combinazione di codec per la maggior parte degli utilizzi è H.264 con smart codec in quanto quest’ultima caratteristica migliora significativamente l’efficienza del H.264 con svantaggi minimi.

H.265 sta acquisendo popolarità ma nella maggior parte dei casi esso non viene utilizzato a causa delle proprie varie limitazioni.

Tuttavia, esso è significativamente più utilizzato nei sistemi telecamere – NVR dello stesso produttore (p.es. TVT), in cui le problematiche di compatibilità non sono un fattore.

MJPEG rimane una nicchia per applicazioni specialistiche e per quelli che hanno paura (spesso in modo immotivato) di perdita informazioni causata dalla compressione inter-frame.