Condivisione della tecnologia

Apprendimento sistematico del processo di compressione dei dati della codifica video H264 (03) e dei concetti correlati

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Nota: facciamo riferimento al metodo di apprendimento del Golden Circle (Cos'è la regola del Golden Circle? -> Modello della regola del Golden Circle, questo articolo utilizza: perché-cosa) per apprendere la codifica video H264 audio. Questa serie di articoli si concentra sulla comprensione del sistema di conoscenza e dei metodi pratici di codifica video. L'aspetto teorico spiegherà di più sull'origine dei concetti in audio e video e sulle connessioni tra i vari concetti. Sapere com'è, sapere perché è così. Allo stesso tempo, viene posta maggiore enfasi sulla creazione di sistemi di conoscenza.

In questo articolo parleremo principalmente del processo di compressione dei dati H.264 e dei concetti correlati. La compressione dei dati H.264 ha un solo scopo, comprimere, comprimere e poi comprimere per ridurre le dimensioni dei dati video garantendo al tempo stesso la massima qualità dell'immagine. Quindi, prima di apprendere la compressione dei dati H.264, dobbiamo prima capire: sebbene ci siano molti concetti e metodi coinvolti in questo processo, tutti i metodi e i processi hanno questo scopo: la compressione.

1 Interpretazione del processo di compressione dei dati H.264

Il processo di compressione dei dati di H.264 è principalmente riassunto nei seguenti passaggi chiave: divisione di macroblocchi e divisione di sottoblocchi -> raggruppamento di frame -> previsione di frame -> trasformata coseno discreta intera (DCT) -> compressione CABAC. Le istruzioni specifiche per l'espansione sono le seguenti.

1.1 Dividere i macroblocchi e dividerli in sottoblocchi

Blocco macro: si può comprendere che quando il fotogramma video viene inviato al buffer dell'encoder H264, l'encoder divide i blocchi macro in ciascuna immagine. Per impostazione predefinita, la codifica H264 utilizza un'area di 16X16 pixel come macroblocco (H265 utilizza un'area di 64X64 pixel L'effetto della divisione di un fotogramma del video in macroblocchi è il seguente:

L'effetto complessivo dopo la divisione dei macroblocchi

Allo stesso tempo, nell'immagine sopra, possiamo effettivamente dividere il macroblocco 16X16 pixel in sottoblocchi più piccoli. La dimensione del sottoblocco può essere 8X16、16X8、8X8、4X8、8X4、4X4 ed è molto flessibile. Lo scopo di dividerlo nuovamente in sottoblocchi è registrare questi dati con dati molto piccoli. Dopo che i macroblocchi sono stati divisi, tutte le immagini nella cache dell'encoder H264 possono essere raggruppate.

La divisione in macroblocchi e sottoblocchi consente alla codifica video di analizzare ed elaborare i contenuti video in modo più accurato e ottenere una compressione dei dati più efficiente. I fotogrammi video sono divisi in macroblocchi di dimensioni 16x16 pixel, che possono essere ulteriormente suddivisi in blocchi più piccoli come 8x8, 8x4, 4x8, ecc. per adattarsi alla complessità del contenuto dell'immagine.

1.2 Raggruppamento di frame

Il raggruppamento di frame (struttura GOP) viene definito prima della predizione intra e dell'inter predizione. Nel processo di codifica video, l'impostazione del raggruppamento dei fotogrammi è uno dei passaggi iniziali, che determina l'organizzazione e l'ordine di codifica dei fotogrammi video. Lo scopo principale del raggruppamento di frame è ridurre la ridondanza dei dati. La ridondanza dei dati video si divide principalmente in due categorie:

  • La ridondanza temporale dei dati, che richiede l’uso della compressione delle previsioni tra frame, rappresenta una percentuale maggiore(Perché anche se la fotocamera cattura 30 fotogrammi al secondo, nella maggior parte dei casi questi 30 fotogrammi di dati sono correlati. Potrebbero esserci più di 30 fotogrammi di dati e forse dozzine di fotogrammi di dati sono particolarmente strettamente correlati. E poiché la correlazione è in particolare Chiudi fotogrammi, dobbiamo solo salvare un fotogramma chiave(Inquadro)dati, altri frame(telaio B e telaio P)Tutto può essere previsto attraverso questo fotogramma secondo determinate regole, quindi i dati video hanno la massima ridondanza temporale).
  • La ridondanza dei dati spaziali, che richiede l'uso della compressione di previsione intra-frame, rappresenta una percentuale relativamente piccola.

Passaggi di esecuzione del raggruppamento di frame H264:

  1. Ogni volta che vengono estratti due fotogrammi adiacenti per il confronto dei macroblocchi, viene calcolata la somiglianza tra i due fotogrammi.
  2. La somiglianza si ottiene dopo la quantificazione: se i pixel con differenze si trovano solo entro il 10% dei punti, la differenza di luminosità cambia non più del 2% e la differenza di crominanza cambia solo entro l'1%, riteniamo che tali immagini possano essere raggruppate in un gruppo.

Una volta completato il raggruppamento, il problema della compressione della previsione dei fotogrammi inizia a essere risolto.

1.3 Compressione della previsione dei fotogrammi

Questa parte include principalmente la previsione intra-frame e la previsione inter-frame. La previsione intra-frame consiste nel comprimere i fotogrammi di immagini statiche, prevedere il valore dei pixel di ciascun macroblocco attraverso 9 diverse modalità e quindi calcolare il valore residuo con l'immagine originale. E previsione tra fotogrammi (stima del movimento e compensazione del movimento): per fotogrammi P e fotogrammi B, trovare il vettore di movimento tra il fotogramma precedente o due fotogrammi tramite la stima del movimento, quindi eseguire la previsione della compensazione del movimento, generare un'immagine prevista e calcolare il residuo da il fotogramma corrente.

Nota: l'ordine di predizione intra e inter predizione dipende dal tipo di frame codificato e dalla strategia di codifica. In un'implementazione di un codificatore video reale, questi passaggi fanno parte del processo di codifica e vengono gestiti automaticamente dal codificatore. Non deve essere chi se ne occupa per primo.

1.3.1 previsione intra

Compressione della previsione intra-frame: risolve il problema della ridondanza dei dati spaziali. I dati ridondanti dello spazio aereo si riferiscono a colore, luminosità, ecc., che riguardano principalmente informazioni insensibili all'occhio umano. La codifica viene compressa eliminandola.Il principio utilizzato nella previsione intra-frame è che l'occhio umano ha un certo grado di riconoscimento delle immagini. È molto sensibile alla luminosità a bassa frequenza e meno sensibile alla luminosità ad alta frequenza.(Può essere inteso come una dimensione del macroblocco di 16X16. In H264, altri dati vengono previsti attraverso i 16 pixel superiori e i 16 pixel più a sinistra, in modo che le informazioni sulla rappresentazione dei pixel che originariamente richiedono 16*16=256 possano essere convertite in 16+ 16-1 =31 pixel per rappresentare le informazioni)

1.3.2 Previsione inter-frame (stima del movimento e compensazione del movimento)

Compressione della previsione interframe (stima e compensazione del movimento): risolve il problema della ridondanza dei dati nel dominio del tempo. Nel video sono presenti più fotogrammi disposti linearmente in ordine cronologico. La correlazione tra i fotogrammi è molto forte, quindi ci sono molti dati che possono essere eliminati tra i fotogrammi.Dopo la compressione, verrà diviso in tre tipologie: I frame, P frame e B frame.(Spiegazione: Principio di stima e compensazione del movimento: L'encoder H264 prima estrae in sequenza due fotogrammi di dati video dall'intestazione del buffer, quindi esegue la scansione dei macroblocchi. Quando viene rilevato che c'è un oggetto in una delle immagini, cercherà la posizione vicina (nella finestra di ricerca). Se l'oggetto viene trovato in un'altra immagine in questo momento, è possibile calcolare il vettore di movimento dell'oggetto. L'immagine sotto è la posizione della palla da biliardo dopo la ricerca.

Per i fotogrammi P e B, viene utilizzata la stima del movimento per trovare il vettore di movimento tra il fotogramma precedente o due fotogrammi, quindi viene eseguita la previsione della compensazione del movimento per generare un'immagine prevista e viene calcolato il residuo con il fotogramma corrente.

1.4 Trasformata coseno discreta intera (DCT,Trasformata discreta del coseno

Questo passaggio esegue principalmente la trasformazione DCT sul residuo di previsione, converte la correlazione spaziale in dati irrilevanti nel dominio della frequenza e quindi la quantizza. La DCT viene utilizzata principalmente per la compressione di dati o immagini, convertendo la correlazione spaziale in dati irrilevanti nel dominio della frequenza e quindi quantizzandoli.(Spiegazione: la trasformazione DCT può raccogliere insieme informazioni più importanti dell'immagine e le aree e i coefficienti del dominio della frequenza non importanti possono essere ritagliati direttamente)

Riepilogo: la sequenza di compressione dei dati del frame consiste nell'eseguire prima la compressione inter-frame e intra-frame, quindi eseguire la trasformazione DCT sui dati residui per rimuovere la correlazione dei dati e comprimerli ulteriormente. Come segue:

1.5 Compressione CABAC

La compressione CABAC è una tecnologia di compressione senza perdite e un metodo di codifica entropica. Quando CABAC viene compresso e codificato, i dati ad alta frequenza vengono definiti come codici brevi e i dati a bassa frequenza come codici lunghi. Questo metodo è più efficiente del metodo VLC. Il metodo di codifica entropica CABAC (Context-Adaptive Binary Arithmetic Coding) viene utilizzato per comprimere ulteriormente i coefficienti quantizzati per migliorare l'efficienza di compressione. Qui, i dati elaborati nei quattro passaggi precedenti vengono codificati nel flusso di codice finale utilizzando l'algoritmo di codifica. I fotogrammi compressi finali si dividono in: fotogrammi I, fotogrammi P e fotogrammi B. Dopo aver eseguito il metodo di compressione senza perdita CABAC, si ottiene il flusso del codice video.

2 Concetti correlati al processo di compressione dei dati

2.1 Ridondanza dei dati nel tempo e nello spazio

La ridondanza dei dati spaziali e la ridondanza dei dati temporali sono due concetti base nella compressione video. Descrivono rispettivamente informazioni ripetute all'interno e tra i fotogrammi video.

Interpretazione della ridondanza spaziale

  • Si riferisce alla somiglianza o correlazione tra pixel adiacenti all'interno di un singolo fotogramma video, con conseguente duplicazione dei dati. A causa della continuità delle immagini naturali, i pixel adiacenti tendono ad avere valori di luminosità o colore simili.
  • Esempi tipici di ridondanza spaziale includono ampie aree monocromatiche, gradienti o texture che cambiano lentamente.
  • Gli algoritmi di compressione video riducono la ridondanza spaziale attraverso la previsione spaziale, trasformano la codifica (come DCT) e altre tecnologie, convertono l'immagine dal dominio spaziale al dominio della frequenza e concentrano l'energia su alcuni coefficienti per raggiungere lo scopo della compressione.

Interpretazione della ridondanza temporale

  • Si riferisce alla somiglianza che esiste tra fotogrammi consecutivi di una sequenza video, ovvero lo stesso oggetto o scena in fotogrammi consecutivi non cambia visivamente in modo significativo.
  • La ridondanza temporale di solito si verifica quando la telecamera è ferma o quando gli oggetti nella scena si muovono lentamente, con solo una piccola area che cambia nei fotogrammi successivi rispetto al fotogramma precedente.
  • Gli algoritmi di compressione video riducono la ridondanza temporale attraverso tecniche come la previsione tra fotogrammi, la stima del movimento e la compensazione del movimento, utilizzando la correlazione tra i fotogrammi precedenti e successivi per prevedere e codificare le differenze tra i fotogrammi invece di codificare completamente ciascun fotogramma.

2.2 Interpretazione dei dati residui e concetti correlati

Nella compressione video H.264, i dati residui si riferiscono alla differenza tra il fotogramma video originale e il fotogramma previsto. Allo stesso tempo, se vuoi avere una comprensione più profonda dei dati residui, devi comprendere i seguenti concetti, come mostrato di seguito:

  1. quadro previsto : Durante il processo di codifica video, verrà utilizzata la predizione intra (Intra Prediction) o l'inter predizione (Inter Prediction) per generare fotogrammi previsti. La previsione interna si basa sulle informazioni sui pixel del fotogramma corrente, mentre la previsione interna si basa sulle informazioni di compensazione del movimento dei fotogrammi precedenti o successivi.

  2. cornice originale: Si riferisce ai fotogrammi dell'immagine originale effettivamente catturati nella sequenza video.

  3. Calcolo residuo : I dati residui vengono calcolati sottraendo il fotogramma previsto dal fotogramma originale. I dati residui rappresentano la differenza tra il fotogramma previsto e il fotogramma originale.

Con le basi dei concetti sopra esposti, possiamo comprendere ulteriormente le caratteristiche dei dati residui:

  • I dati residui solitamente hanno un'elevata casualità spaziale perché il quadro di previsione ha rimosso la maggior parte delle informazioni ridondanti. Questa casualità rende i dati residui adatti ad un'ulteriore compressione attraverso trasformazione e quantizzazione.

  • Dopo che i dati residui sono stati elaborati mediante la trasformata coseno discreta intera (IDCT) e la quantizzazione, la quantità di dati può essere notevolmente ridotta. La trasformazione converte l'informazione spaziale bidimensionale del residuo in informazione di frequenza, mentre la quantizzazione riduce la precisione di questi coefficienti e rimuove dettagli impercettibili all'occhio umano.

Lo scopo della codifica dei dati residui è ridurre ulteriormente il bitrate dei dati video mantenendo il più possibile la qualità dell'immagine. Allo stesso tempo, una compressione efficace dei dati residui è fondamentale per l'efficienza della codifica H.264, poiché influisce direttamente sulla qualità del video codificato e sulla larghezza di banda di archiviazione o trasmissione richiesta.

2.3 Concetti relativi alla codifica dell'entropia e interpretazione estesa

La codifica entropica è una tecnica di compressione dei dati senza perdita di dati basata sul concetto di entropia dell'informazione e mira a rappresentare i dati con il minor numero di bit possibile. L'idea centrale della codifica entropica è allocare meno bit ai simboli che hanno maggiori probabilità di verificarsi e allocare più bit ai simboli che appaiono meno frequentemente. In questo modo si riduce lo spazio di memoria o la larghezza di banda di trasmissione desiderata poiché si riduce il bitrate medio dell'intero set di dati.

La codifica entropica viene spesso utilizzata per il testo e per alcuni tipi specifici di compressione dei dati e può migliorare significativamente l'efficienza della compressione, soprattutto quando i dati hanno una distribuzione di probabilità significativamente non uniforme. Nella codifica della compressione video, i metodi di codifica entropica più strettamente correlati alla compressione video includono principalmente quanto segue:

  • Codifica Huffman : La codifica Huffman è una tecnologia di codifica entropica di base utilizzata in molti standard di compressione video (come le serie JPEG e MPEG). Assegna un codice di lunghezza variabile a ciascun simbolo attraverso un albero di Huffman costruito in base alla frequenza di occorrenza del simbolo.
  • Codifica aritmetica : La codifica aritmetica è adottata in alcuni standard di compressione video (come JPEG-LS, JPEG 2000). Utilizza un intervallo frazionario per rappresentare la distribuzione di probabilità dei dati di input e generalmente fornisce una migliore efficienza di compressione rispetto alla codifica di Huffman.
  • Codifica aritmetica binaria adattiva basata sul contesto (CABAC) : CABAC è il metodo di codifica entropica utilizzato negli standard di compressione video H.264/AVC e H.265/HEVC. Combina i concetti di codifica aritmetica e adattamento al contesto e può regolare dinamicamente il modello probabilistico di codifica in base alle informazioni contestuali, ottenendo così una codifica più efficiente.
  • Codifica a lunghezza variabile (VLC) : VLC è un termine generale utilizzato per descrivere metodi di codifica, inclusa la codifica Huffman, che assegnano codici di lunghezza variabile ai simboli. Nella compressione video, VLC si riferisce solitamente al metodo di codifica utilizzato per rappresentare i coefficienti di trasformazione e così via.

Nella compressione video, la codifica entropica è il passaggio di codifica finale utilizzato per codificare i dati residui dopo l'intra e l'inter-previsione. I dati residui rappresentano la differenza tra i dati originali e i dati previsti e solitamente hanno meno energia e una distribuzione di probabilità più irregolare. Attraverso la codifica entropica, il bit rate di questi dati residui può essere ulteriormente ridotto, raggiungendo così lo scopo di comprimere i dati video.