FMUSER Wirless Trasmetti video e audio più facilmente!
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> Afrikaans
sq.fmuser.org -> albanese
ar.fmuser.org -> Arabo
hy.fmuser.org -> Armenian
az.fmuser.org -> Azerbaigiano
eu.fmuser.org -> Basco
be.fmuser.org -> bielorusso
bg.fmuser.org -> Bulgaro
ca.fmuser.org -> Catalano
zh-CN.fmuser.org -> Cinese (semplificato)
zh-TW.fmuser.org -> Cinese (Tradizionale)
hr.fmuser.org -> croato
cs.fmuser.org -> ceco
da.fmuser.org -> danese
nl.fmuser.org -> Olandese
et.fmuser.org -> Estone
tl.fmuser.org -> Filippino
fi.fmuser.org -> finlandese
fr.fmuser.org -> Francese
gl.fmuser.org -> Galiziano
ka.fmuser.org -> georgiano
de.fmuser.org -> tedesco
el.fmuser.org -> Greca
ht.fmuser.org -> Creolo haitiano
iw.fmuser.org -> Ebraico
hi.fmuser.org -> Hindi
hu.fmuser.org -> Hungarian
is.fmuser.org -> Islandese
id.fmuser.org -> Indonesiano
ga.fmuser.org -> Irlandese
it.fmuser.org -> Italiano
ja.fmuser.org -> giapponese
ko.fmuser.org -> coreano
lv.fmuser.org -> Lettone
lt.fmuser.org -> Lithuanian
mk.fmuser.org -> Macedone
ms.fmuser.org -> Malese
mt.fmuser.org -> Maltese
no.fmuser.org -> Norwegian
fa.fmuser.org -> persiano
pl.fmuser.org -> polacco
pt.fmuser.org -> portoghese
ro.fmuser.org -> Romeno
ru.fmuser.org -> Russo
sr.fmuser.org -> Serbo
sk.fmuser.org -> slovacco
sl.fmuser.org -> Sloveno
es.fmuser.org -> spagnolo
sw.fmuser.org -> Swahili
sv.fmuser.org -> svedese
th.fmuser.org -> Thai
tr.fmuser.org -> turco
uk.fmuser.org -> Ucraino
ur.fmuser.org -> Urdu
vi.fmuser.org -> Vietnamita
cy.fmuser.org -> Gallese
yi.fmuser.org -> Yiddish
Prefazione
L'algoritmo di compressione video H264 è ora senza dubbio la più utilizzata e la più popolare di tutte le tecniche di compressione video. Con l'introduzione di librerie open source come x264 / openh264 e ffmpeg, la maggior parte degli utenti non ha più bisogno di fare troppe ricerche sui dettagli di H264, il che riduce notevolmente il costo delle persone che utilizzano H264.
Ma per fare un buon uso di H264, dobbiamo ancora capire i principi di base di H264. Oggi daremo uno sguardo ai principi di base di H264.
Panoramica H264
La tecnologia di compressione H264 utilizza principalmente i seguenti metodi per comprimere i dati video. includere:
La compressione della previsione intra-frame risolve il problema della ridondanza dei dati spaziali.
La compressione della previsione inter-frame (stima del movimento e compensazione) risolve il problema della ridondanza dei dati nel dominio del tempo.
Integer Discrete Cosine Transform (DCT), che trasforma la correlazione spaziale in dati irrilevanti nel dominio della frequenza e quindi la quantizza.
Compressione CABAC.
Il frame compresso è suddiviso in: I frame, P frame e B frame:
I frame: fotogramma chiave, utilizzando la tecnologia di compressione intra-frame.
Frame P: frame di riferimento in avanti, durante la compressione, si riferisce solo al frame elaborato in precedenza. Utilizza la tecnologia di compressione audio dei fotogrammi.
Frame B: un frame di riferimento bidirezionale. Durante la compressione, si riferisce al frame precedente e al frame successivo. Utilizzo della tecnologia di compressione inter-frame.
Oltre ai frame I / P / B, ci sono anche sequenze di immagini GOP.
GOP: Tra due fotogrammi I c'è una sequenza di immagini, e c'è solo un fotogramma I in una sequenza di immagini. Come mostrato di seguito:
Ora descriveremo in dettaglio la tecnologia di compressione H264.
Tecnologia di compressione H264
Il principio di base di H264 è in realtà molto semplice, descriviamo brevemente il processo di compressione dei dati di H264. I fotogrammi video catturati dalla telecamera (calcolati a 30 fotogrammi al secondo) vengono inviati al buffer dell'encoder H264. L'encoder deve prima dividere i macroblocchi per ogni immagine.
Prendi la seguente immagine come esempio:
Macroblocco di partizione
H264 utilizza un'area 16X16 come blocco macro per impostazione predefinita e può anche essere diviso in dimensioni 8X8.
Dopo aver diviso il blocco macro, calcolare il valore in pixel del blocco macro.
Per analogia, viene calcolato il valore dei pixel di ogni macroblocco in un'immagine e tutti i macroblocchi vengono elaborati come segue.
Sottoblocco
H264 utilizza macroblocchi 16X16 per immagini relativamente piatte. Tuttavia, per ottenere un tasso di compressione più elevato, i sottoblocchi più piccoli possono anche essere suddivisi in macroblocchi 16X16. La dimensione del sottoblocco può essere 8X16, 16X8, 8X8, 4X8, 8X4, 4X4, che è molto flessibile.
Nella foto sopra, la maggior parte dei macroblocchi 16X16 nella cornice rossa hanno uno sfondo blu, e parte dell'immagine delle tre aquile è disegnata in questo macroblocco. Per poter elaborare al meglio le immagini parziali delle tre aquile, i sottoblocchi Multipli H264 sono suddivisi in macroblocchi 16X16.
In questo modo, dopo la compressione intra-frame, è possibile ottenere dati più efficienti. La figura sotto è il risultato della compressione dei macroblocchi precedenti utilizzando rispettivamente mpeg-2 e H264. La metà sinistra è il risultato della compressione dopo la divisione dei sottoblocchi MPEG-2 e la metà destra è il risultato della compressione dei sottoblocchi H264. Si può vedere che il metodo di divisione H264 ha più vantaggi.
Dopo che il blocco macro è stato diviso, tutte le immagini nel buffer dell'encoder H264 possono essere raggruppate.
Raggruppamento di frame
Per i dati video, esistono principalmente due tipi di ridondanza dei dati, uno è la ridondanza dei dati nel tempo e l'altro è la ridondanza dei dati nello spazio. Tra questi, la ridondanza dei dati nel tempo è la più grande. Parliamo prima del problema di ridondanza del tempo dei dati video.
Perché la ridondanza di tempo è la più grande? Supponendo che la fotocamera acquisisca 30 fotogrammi al secondo, i dati di questi 30 fotogrammi sono per lo più correlati. È anche possibile che più di 30 frame di dati, decine di frame o centinaia di frame di dati siano particolarmente strettamente correlati.
Per questi frame strettamente correlati, infatti, è necessario salvare solo un frame di dati e altri frame possono essere previsti da questo frame secondo determinate regole, quindi i dati video hanno la ridondanza più tempo.
Per fare in modo che i frame rilevanti comprimano i dati attraverso il metodo di predizione, è necessario raggruppare i frame video. Quindi come determinare che determinati frame sono strettamente correlati e possono essere raggruppati insieme? Diamo un'occhiata a un esempio. Di seguito è riportato un fotogramma video catturato di un gruppo di palle da biliardo in movimento. Le palle da biliardo rotolano dall'angolo superiore destro all'angolo inferiore sinistro.
L'encoder H264 estrae ogni volta due frame adiacenti per confrontare i macroblocchi al fine di calcolare la somiglianza dei due frame. Come mostrato di seguito:
Attraverso la macro block scan e la macro block search, si può riscontrare che la correlazione tra i due frame è molto alta. Inoltre, si è riscontrato che il grado di correlazione di questo gruppo di frame è molto alto. Pertanto, i frame di cui sopra possono essere divisi in un gruppo. L'algoritmo è: nelle immagini adiacenti, i pixel che sono generalmente diversi sono solo entro il 10%, la differenza di luminosità non supera il 2% e la differenza di cromaticità cambia solo entro l'1%. Pensiamo che questo I grafici possano essere raggruppati insieme.
In un tale gruppo di frame, dopo la codifica, conserviamo solo i dati completi del primo post e gli altri frame vengono calcolati facendo riferimento al frame precedente. Chiamiamo il primo frame IDR / I frame e gli altri frame P / B frame, quindi chiamiamo GOP il gruppo di frame di dati codificati.
Stima e compensazione del movimento
Dopo che i frame sono stati raggruppati nell'encoder H264, è necessario calcolare i vettori di movimento degli oggetti nel gruppo di frame. Prendendo come esempio il fotogramma video del biliardo in movimento sopra, diamo un'occhiata a come calcola il vettore di movimento.
L'encoder H264 estrae prima due fotogrammi di dati video dall'intestazione del buffer in sequenza, quindi esegue la scansione del blocco macro. Quando un oggetto viene trovato in una delle immagini, la ricerca viene eseguita in prossimità dell'altra immagine (nella finestra di ricerca). Se l'oggetto si trova in un'altra immagine in questo momento, è possibile calcolare il vettore di movimento dell'oggetto. L'immagine seguente mostra la posizione della palla da biliardo dopo la ricerca.
Attraverso la differenza tra le posizioni delle palle da biliardo nell'immagine sopra, è possibile calcolare la direzione e la distanza dell'immagine del tavolo. H264 registra la distanza e la direzione del movimento della palla in ogni fotogramma a turno, e diventa il seguente.
Dopo che il vettore di movimento è stato calcolato, la stessa parte (ovvero la parte verde) viene sottratta per ottenere i dati di compensazione. Alla fine, dobbiamo solo comprimere e salvare i dati di compensazione, quindi l'immagine originale può essere ripristinata durante la decodifica. I dati compressi devono registrare solo una piccola quantità di dati. Come segue:
Chiamiamo vettore di movimento e compensazione come tecnologia di compressione inter-frame, che risolve la ridondanza dei dati dei frame video nel tempo. Oltre alla compressione inter-frame, anche la compressione dei dati deve essere eseguita all'interno del frame. La compressione dei dati intra-frame risolve la ridondanza dei dati spaziali. Ora introdurremo la tecnologia di compressione intra-frame.
Previsione intra
L'occhio umano ha un grado di riconoscimento dell'immagine, è molto sensibile alla luminosità delle basse frequenze e non è molto sensibile alla luminosità delle alte frequenze. Pertanto, sulla base di alcune ricerche, i dati che non sono sensibili agli occhi umani possono essere rimossi da un'immagine. In questo modo viene proposta la tecnologia di predizione intra.
La compressione intra-frame di H264 è molto simile a JPEG. Dopo che un'immagine è stata divisa in macroblocchi, ogni macroblocco può essere previsto in 9 modalità. Trova la modalità di previsione più vicina all'immagine originale.
L'immagine seguente è il processo di previsione di ciascun blocco macro nell'intera immagine.
Il confronto tra l'immagine dopo la predizione intra e l'immagine originale è il seguente:
Quindi, l'immagine originale e l'immagine intra predetta vengono sottratte per ottenere un valore residuo.
Quindi salva le informazioni sulla modalità di previsione che abbiamo ottenuto in precedenza, in modo da poter ripristinare l'immagine originale durante la decodifica. L'effetto è il seguente:
Dopo la compressione intra-frame e inter-frame, sebbene i dati siano notevolmente ridotti, c'è ancora spazio per l'ottimizzazione.
Eseguire DCT sui dati residui
I dati residui possono essere sottoposti a trasformata coseno discreta intera per rimuovere la correlazione dei dati e comprimere ulteriormente i dati. Come mostrato nella figura sottostante, il lato sinistro è il macro blocco dei dati originali e il lato destro è il macro blocco dei dati residui calcolati.
Il macroblocco dei dati residui viene digitalizzato come mostrato nella figura seguente:
La conversione DCT viene eseguita sul macroblocco dei dati residui.
Dopo aver rimosso i dati associati, possiamo vedere che i dati vengono ulteriormente compressi.
Dopo aver eseguito DCT, non è sufficiente e CABAC è necessario per la compressione senza perdite.
CABAC
La suddetta compressione intra-frame è una tecnica di compressione con perdita. In altre parole, dopo che l'immagine è stata compressa, non può essere ripristinata completamente. CABAC è una tecnologia di compressione senza perdite.
La tecnologia di compressione senza perdita può essere la più familiare a tutti è la codifica di Huffman, un codice breve per parole ad alta frequenza, un codice lungo per parole a bassa frequenza per raggiungere lo scopo della compressione dei dati. VLC utilizzato in MPEG-2 è questo tipo di algoritmo, prendiamo AZ come esempio, A appartiene ai dati ad alta frequenza e Z appartiene ai dati a bassa frequenza. Guarda come si fa.
CABAC è anche un codice breve per dati ad alta frequenza e un codice lungo per dati a bassa frequenza. Allo stesso tempo, si comprimerà in base al contesto, il che è molto più efficiente di VLC. L'effetto è il seguente:
Ora sostituisci AZ con un fotogramma video e sarà simile al seguente.
È ovvio dall'immagine sopra che lo schema di compressione senza perdita di dati che utilizza CACBA è molto più efficiente di VLC.
sommario
A questo punto, abbiamo terminato il principio di codifica H264. Questo articolo parla principalmente dei seguenti punti:
1. Jianyin ha introdotto alcuni concetti di base in H264. Come frame I / P / B, GOP.
2. Ha spiegato in dettaglio i principi di base della codifica H264, tra cui:
Divisione macro blocchi
Raggruppamento di immagini
Principio della tecnologia di compressione intra-frame
Il principio della tecnologia di compressione inter-frame.
DCT
Principio di compressione CABAC.
|
Inserisci l'email per ricevere una sorpresa
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> Afrikaans
sq.fmuser.org -> albanese
ar.fmuser.org -> Arabo
hy.fmuser.org -> Armenian
az.fmuser.org -> Azerbaigiano
eu.fmuser.org -> Basco
be.fmuser.org -> bielorusso
bg.fmuser.org -> Bulgaro
ca.fmuser.org -> Catalano
zh-CN.fmuser.org -> Cinese (semplificato)
zh-TW.fmuser.org -> Cinese (Tradizionale)
hr.fmuser.org -> croato
cs.fmuser.org -> ceco
da.fmuser.org -> danese
nl.fmuser.org -> Olandese
et.fmuser.org -> Estone
tl.fmuser.org -> Filippino
fi.fmuser.org -> finlandese
fr.fmuser.org -> Francese
gl.fmuser.org -> Galiziano
ka.fmuser.org -> georgiano
de.fmuser.org -> tedesco
el.fmuser.org -> Greca
ht.fmuser.org -> Creolo haitiano
iw.fmuser.org -> Ebraico
hi.fmuser.org -> Hindi
hu.fmuser.org -> Hungarian
is.fmuser.org -> Islandese
id.fmuser.org -> Indonesiano
ga.fmuser.org -> Irlandese
it.fmuser.org -> Italiano
ja.fmuser.org -> giapponese
ko.fmuser.org -> coreano
lv.fmuser.org -> Lettone
lt.fmuser.org -> Lithuanian
mk.fmuser.org -> Macedone
ms.fmuser.org -> Malese
mt.fmuser.org -> Maltese
no.fmuser.org -> Norwegian
fa.fmuser.org -> persiano
pl.fmuser.org -> polacco
pt.fmuser.org -> portoghese
ro.fmuser.org -> Romeno
ru.fmuser.org -> Russo
sr.fmuser.org -> Serbo
sk.fmuser.org -> slovacco
sl.fmuser.org -> Sloveno
es.fmuser.org -> spagnolo
sw.fmuser.org -> Swahili
sv.fmuser.org -> svedese
th.fmuser.org -> Thai
tr.fmuser.org -> turco
uk.fmuser.org -> Ucraino
ur.fmuser.org -> Urdu
vi.fmuser.org -> Vietnamita
cy.fmuser.org -> Gallese
yi.fmuser.org -> Yiddish
FMUSER Wirless Trasmetti video e audio più facilmente!
Contatto
Indirizzo:
No.305 Room HuiLan Building No.273 Huanpu Road Guangzhou Cina 510620
Categorie
Newsletter