FMUSER Wirless överför video och ljud enklare!
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> afrikanska
sq.fmuser.org -> albanska
ar.fmuser.org -> arabiska
hy.fmuser.org -> Armenian
az.fmuser.org -> Azerbajdzjanska
eu.fmuser.org -> Baskiska
be.fmuser.org -> vitryska
bg.fmuser.org -> Bulgariska
ca.fmuser.org -> katalanska
zh-CN.fmuser.org -> Kinesiska (förenklad)
zh-TW.fmuser.org -> Kinesiska (traditionella)
hr.fmuser.org -> kroatiska
cs.fmuser.org -> Tjeckiska
da.fmuser.org -> danska
nl.fmuser.org -> Dutch
et.fmuser.org -> estniska
tl.fmuser.org -> filippinska
fi.fmuser.org -> finska
fr.fmuser.org -> French
gl.fmuser.org -> galiciska
ka.fmuser.org -> Georgiska
de.fmuser.org -> tyska
el.fmuser.org -> Greek
ht.fmuser.org -> Haitisk kreol
iw.fmuser.org -> hebreiska
hi.fmuser.org -> Hindi
hu.fmuser.org -> ungerska
is.fmuser.org -> isländska
id.fmuser.org -> Indonesiska
ga.fmuser.org -> Irländska
it.fmuser.org -> Italian
ja.fmuser.org -> japanska
ko.fmuser.org -> koreanska
lv.fmuser.org -> lettiska
lt.fmuser.org -> Litauiska
mk.fmuser.org -> makedonska
ms.fmuser.org -> Malajiska
mt.fmuser.org -> maltesiska
no.fmuser.org -> Norwegian
fa.fmuser.org -> persiska
pl.fmuser.org -> polska
pt.fmuser.org -> portugisiska
ro.fmuser.org -> rumänska
ru.fmuser.org -> ryska
sr.fmuser.org -> serbiska
sk.fmuser.org -> Slovakiska
sl.fmuser.org -> Slovenska
es.fmuser.org -> spanska
sw.fmuser.org -> Swahili
sv.fmuser.org -> svenska
th.fmuser.org -> Thai
tr.fmuser.org -> Turkiska
uk.fmuser.org -> ukrainska
ur.fmuser.org -> Urdu
vi.fmuser.org -> Vietnamesiskt
cy.fmuser.org -> Walesiska
yi.fmuser.org -> Jiddisch
Förord
H264-videokomprimeringsalgoritmen är nu utan tvekan den mest använda och mest populära av alla videokomprimeringstekniker. Med introduktionen av bibliotek med öppen källkod som x264 / openh264 och ffmpeg behöver de flesta användare inte längre undersöka detaljerna i H264, vilket avsevärt minskar kostnaden för människor som använder H264.
Men för att kunna använda H264 bra måste vi fortfarande räkna ut de grundläggande principerna för H264. Idag tar vi en titt på de grundläggande principerna för H264.
H264 översikt
H264-komprimeringsteknik använder huvudsakligen följande metoder för att komprimera videodata. omfatta:
Komprimering inom ramar för förutsägelse löser problemet med rumslig dataredundans.
Komprimering mellan ramar för förutsägelse (rörelsestimering och kompensation) löser problemet med tidsdomän dataredundans.
Integer Discrete Cosine Transform (DCT), som omvandlar den rumsliga korrelationen till irrelevanta data i frekvensdomänen och sedan kvantifierar den.
CABAC-komprimering.
Den komprimerade ramen är uppdelad i: I-ram, P-ram och B-ram:
I-ram: nyckelram med komprimeringsteknik inom ram.
P-ram: referensram framåt, vid komprimering, hänvisar endast till den tidigare bearbetade ramen. Använd ramljudkomprimeringsteknik.
B-ram: En dubbelriktad referensram. Under komprimering hänvisar den till föregående ram och följande ram. Använda komprimeringsteknik mellan ramar.
Förutom I / P / B-ramar finns det också bildsekvenser GOP.
GOP: Mellan två I-ramar finns en bildsekvens, och det finns bara en I-ram i en bildsekvens. Enligt nedanstående:
Nu kommer vi att beskriva H264-kompressionstekniken i detalj.
H264 komprimeringsteknik
Grundprincipen för H264 är faktiskt väldigt enkel, låt oss kort beskriva processen för komprimering av H264-data. Videoramar som fångats av kameran (beräknat till 30 bilder per sekund) skickas till bufferten i H264-kodaren. Kodaren måste först dela makroblock för varje bild.
Ta följande bild som ett exempel:
Partition makroblock
H264 använder ett 16X16-område som ett makroblock som standard, och det kan också delas in i 8X8-storlek.
Efter att ha delat makroblocket beräknar du pixelvärdet för makroblocket.
Analogt beräknas pixelvärdet för varje makroblock i en bild och alla makroblocken behandlas enligt följande.
Underblock
H264 använder 16X16 makroblock för relativt platta bilder. För att uppnå en högre kompressionshastighet kan mindre delblock också delas in i 16X16 makroblock. Storleken på underblocket kan vara 8X16, 16X8, 8X8, 4X8, 8X4, 4X4, vilket är mycket flexibelt.
I bilden ovan har de flesta 16X16 makroblocken i den röda ramen en blå bakgrund, och en del av bilden av de tre örnarna ritas i detta makroblock. För att bättre bearbeta de delvisa bilderna av de tre örnarna delas H264 flera delblock i 16X16 makroblock.
På detta sätt kan effektivare data erhållas efter komprimering inom ramen. Figuren nedan är resultatet av komprimering av ovanstående makroblock med mpeg-2 respektive H264. Den vänstra halvan är resultatet av komprimering efter delning av MPEG-2-underblock och den högra halvan är resultatet av komprimering av H264-underblock. Det kan ses att H264-uppdelningsmetoden har fler fördelar.
När makroblocket har delats upp kan alla bilder i H264-kodarbufferten grupperas.
Ramgruppering
För videodata finns det huvudsakligen två typer av dataredundans, den ena är dataredundans i tid och den andra är dataredundans i rymden. Bland dem är dataredundansen i tid störst. Låt oss först prata om redundansproblemet med videodatatiden.
Varför är tidsredundansen störst? Förutsatt att kameran tar 30 bilder per sekund är data för dessa 30 bilder mest relaterade. Det är också möjligt att mer än 30 ramar med data, tiotals ramar eller hundratals dataramar är särskilt nära besläktade.
För dessa mycket nära relaterade ramar behöver vi faktiskt bara spara en dataram, och andra ramar kan förutsägas från denna ram enligt vissa regler, så videodata har mest tidsredundans.
För att uppnå att relevanta ramar komprimerar data genom förutsägelsemetoden är det nödvändigt att gruppera videoramar. Så hur kan man bestämma att vissa ramar är nära besläktade och kan grupperas tillsammans? Låt oss ta en titt på ett exempel. Nedan finns en fångad videoram av en grupp biljardbollar i rörelse. Biljardbollarna rullar från det övre högra hörnet till det nedre vänstra hörnet.
H264-kodaren tar ut två intilliggande ramar varje gång för att jämföra makroblocken för att beräkna likheten mellan de två ramarna. Enligt nedanstående:
Genom makroblocksökning och makroblocksökning kan det konstateras att korrelationen mellan de två ramarna är mycket hög. Vidare har man funnit att korrelationsgraden för denna grupp av ramar är mycket hög. Därför kan ovanstående ramar delas in i en grupp. Algoritmen är: i intilliggande bilder är pixlarna som i allmänhet skiljer sig bara inom 10%, skillnaden i ljusstyrka inte överstiger 2% och kromatisitetsskillnaden ändras bara inom 1%. Vi tror att detta Grafen kan grupperas tillsammans.
I en sådan grupp av ramar, efter kodning, behåller vi bara fullständiga data för det första inlägget, och andra ramar beräknas med hänvisning till föregående ram. Vi kallar den första ramen IDR / I-ram och andra ramar kallar vi P / B-ramen, så vi kallar den kodade dataramgruppen GOP.
Uppskattning av rörelse och kompensation
Efter att ramarna har grupperats i H264-kodaren är det nödvändigt att beräkna rörelsevektorerna för objekten i ramgruppen. Med ovanstående rörliga biljardvideoram som ett exempel, låt oss ta en titt på hur den beräknar rörelsevektorn.
H264-kodaren tar först ut två bildrutor med videodata från buffertrubriken i sekvens och utför sedan makroblocksökning. När ett objekt hittas i en av bilderna utförs sökningen i närheten av den andra bilden (i sökfönstret). Om objektet hittas i en annan bild vid den här tiden kan objektets rörelsevektor beräknas. Följande bild visar positionen för biljardboll efter sökning.
Genom skillnaden mellan positionerna för biljardbollarna i bilden ovan kan bordsbildens riktning och avstånd beräknas. H264 registrerar avståndet och riktningen för kulrörelsen i varje ram i tur och ordning och det blir följande.
Efter att rörelsevektorn har beräknats subtraheras samma del (det vill säga den gröna delen) för att erhålla kompensationsdata. I slutändan behöver vi bara komprimera och spara kompensationsdata, och sedan kan originalbilden återställas vid avkodning. Den komprimerade data behöver bara spela in en liten mängd data. Som följer:
Vi kallar rörelsevektor och kompensation som komprimeringsteknik mellan ramar, vilket löser dataredundansen för videoramar i tid. Förutom komprimering mellan ramar måste datakomprimering också utföras inom ramen. Datakomprimering inom ram löser rumslig dataredundans. Nu kommer vi att introducera komprimeringstekniken inom ramen.
Intra förutsägelse
Det mänskliga ögat har en viss grad av igenkänning av bilden, det är mycket känsligt för ljusfrekvensen och är inte särskilt känsligt för ljusfrekvensen. Baserat på viss forskning kan därför data som inte är känsliga för mänskliga ögon tas bort från en bild. På detta sätt föreslås intra-prediction-tekniken.
Den inramade komprimeringen av H264 liknar mycket JPEG. Efter att en bild har delats in i makroblock kan varje makroblock förutsägas i 9 lägen. Hitta det förutsägningsläge som ligger närmast originalbilden.
Följande bild är processen att förutsäga varje makroblock i hela bilden.
Jämförelsen mellan bilden efter intra-förutsägelse och originalbilden är som följer:
Sedan subtraheras originalbilden och den intra-förutspådda bilden för att erhålla ett restvärde.
Spara sedan informationen om förutsägelseläge vi fick tidigare så att vi kan återställa originalbilden vid avkodning. Effekten är som följer:
Efter komprimering mellan ramar och mellan ramar, även om data minskas kraftigt, finns det fortfarande utrymme för optimering.
Gör DCT på restdata
Restdata kan utsättas för heltals diskret cosinustransformation för att avlägsna korrelationen av data och ytterligare komprimera data. Som visas i figuren nedan är den vänstra sidan makroblocket för de ursprungliga uppgifterna och den högra sidan är makroblocket för den beräknade restdata.
Makroblocket för kvarvarande data digitaliseras enligt bilden nedan:
DCT-omvandling utförs på det kvarvarande datamakroblocket.
Efter att ha tagit bort tillhörande data kan vi se att data komprimeras ytterligare.
Efter att DCT är klar räcker det inte och CABAC behövs för förlustfri komprimering.
CABAC
Ovanstående komprimering inom ramen är en förlustfri komprimeringsteknik. Med andra ord, efter att bilden komprimeras kan den inte återställas helt. CABAC är en förlustfri komprimeringsteknik.
Förlustfri komprimeringsteknik kan vara den mest bekanta för alla är Huffman-kodning, en kort kod för högfrekventa ord, en lång kod för lågfrekventa ord för att uppnå syftet med datakomprimering. VLC som används i MPEG-2 är denna typ av algoritm, vi tar AZ som ett exempel, A tillhör högfrekvensdata och Z tillhör lågfrekvensdata. Se hur det görs.
CABAC är också en kort kod för högfrekventa data och en lång kod för lågfrekventa data. Samtidigt kommer den att komprimeras baserat på kontext, vilket är mycket effektivare än VLC. Effekten är som följer:
Ersätt nu AZ med en videoram så ser det ut som följande.
Det framgår av bilden ovan att det förlustfria komprimeringsschemat med CACBA är mycket effektivare än VLC.
sammanfattning
Vid denna tidpunkt har vi avslutat H264-kodningsprincipen. Denna artikel talar främst om följande punkter:
1. Jianyin introducerade några grundläggande begrepp i H264. Såsom I / P / B-ram, GOP.
2. Förklarade de grundläggande principerna för H264-kodning i detalj, inklusive:
Makroblockdelning
Bildgruppering
Princip för komprimeringsteknik inom ramen
Principen för komprimeringsteknik mellan ramar.
DCT
CABAC-komprimeringsprincip.
|
Ange e-post för att få en överraskning
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> afrikanska
sq.fmuser.org -> albanska
ar.fmuser.org -> arabiska
hy.fmuser.org -> Armenian
az.fmuser.org -> Azerbajdzjanska
eu.fmuser.org -> Baskiska
be.fmuser.org -> vitryska
bg.fmuser.org -> Bulgariska
ca.fmuser.org -> katalanska
zh-CN.fmuser.org -> Kinesiska (förenklad)
zh-TW.fmuser.org -> Kinesiska (traditionella)
hr.fmuser.org -> kroatiska
cs.fmuser.org -> Tjeckiska
da.fmuser.org -> danska
nl.fmuser.org -> Dutch
et.fmuser.org -> estniska
tl.fmuser.org -> filippinska
fi.fmuser.org -> finska
fr.fmuser.org -> French
gl.fmuser.org -> galiciska
ka.fmuser.org -> Georgiska
de.fmuser.org -> tyska
el.fmuser.org -> Greek
ht.fmuser.org -> Haitisk kreol
iw.fmuser.org -> hebreiska
hi.fmuser.org -> Hindi
hu.fmuser.org -> ungerska
is.fmuser.org -> isländska
id.fmuser.org -> Indonesiska
ga.fmuser.org -> Irländska
it.fmuser.org -> Italian
ja.fmuser.org -> japanska
ko.fmuser.org -> koreanska
lv.fmuser.org -> lettiska
lt.fmuser.org -> Litauiska
mk.fmuser.org -> makedonska
ms.fmuser.org -> Malajiska
mt.fmuser.org -> maltesiska
no.fmuser.org -> Norwegian
fa.fmuser.org -> persiska
pl.fmuser.org -> polska
pt.fmuser.org -> portugisiska
ro.fmuser.org -> rumänska
ru.fmuser.org -> ryska
sr.fmuser.org -> serbiska
sk.fmuser.org -> Slovakiska
sl.fmuser.org -> Slovenska
es.fmuser.org -> spanska
sw.fmuser.org -> Swahili
sv.fmuser.org -> svenska
th.fmuser.org -> Thai
tr.fmuser.org -> Turkiska
uk.fmuser.org -> ukrainska
ur.fmuser.org -> Urdu
vi.fmuser.org -> Vietnamesiskt
cy.fmuser.org -> Walesiska
yi.fmuser.org -> Jiddisch
FMUSER Wirless överför video och ljud enklare!
Kontakta oss
Adress:
No.305 Room HuiLan Building No.273 Huanpu Road Guangzhou Kina 510620
Kategorier
Nyhetsbrev