日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

HEVC视频编码技术

發(fā)布時(shí)間:2024/9/21 c/c++ 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HEVC视频编码技术 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

HEVC視頻編碼框架

HEVC編碼框架與H.26X標(biāo)準(zhǔn)的編碼框架類似,均采用基于塊的混合模型。

?

圖1 HEVC編碼框架

如上圖所示,HEVC編碼器的工作過程為:

1.首先,視頻編碼器將輸入視頻圖像劃分為互不重疊的編碼單元。

2.再進(jìn)行預(yù)測編碼,主要利用視頻的空間相關(guān)性和時(shí)間相關(guān)性,分別采用幀內(nèi)預(yù)測和幀間預(yù)測去除時(shí)空域冗余信息,從而得到預(yù)測圖像塊。

3.然后將預(yù)測圖像塊與原始圖像塊作差得到預(yù)測殘差塊,再對預(yù)測殘差進(jìn)行離散余弦變換(DCT)和量化,獲得量化的DCT系數(shù)。

4.最后對量化后的DCT系數(shù)進(jìn)行熵編碼,得到壓縮碼流。

HEVC融入了許多關(guān)鍵技術(shù)以提高性能,例如基于四叉樹劃分編碼單元,預(yù)測方向更精細(xì)的幀內(nèi)預(yù)測技術(shù),采用運(yùn)動(dòng)合并技術(shù)和先進(jìn)運(yùn)動(dòng)矢量預(yù)測模式的幀間預(yù)測技術(shù),高精度運(yùn)動(dòng)補(bǔ)償技術(shù),用于改善重構(gòu)圖像質(zhì)量的去方塊濾波和像素自適應(yīng)補(bǔ)償技術(shù)等。


?

HEVC編碼單元

HEVC編碼單元的概念和作用與H.264中的宏塊相同,只是HEVC種編碼快的分割更加靈活。編碼單元CU采用四叉樹結(jié)構(gòu),首先將一幀圖像分成若干個(gè)一定大小互不重疊的矩形塊,每一個(gè)塊即為最大編碼單元(LCU)。每個(gè)LCU又可以分為從64*64到8*8不同大小的CU,且對CU的最大/最小值在配置文件中還可以修改。

CU采用四叉樹的分割方式,具體的分割過程用兩個(gè)變量進(jìn)行標(biāo)記:分割深度(Depth)和分割標(biāo)記符(Split_flag)。

圖2 LCU四叉樹分割過程

如上圖所示,LCU的大小為64*64,深度為0,用CU0表示,CU0可以分成四個(gè)大小為32*32的深度為1的編碼單元CU1,以此類推,直到可以分為深度為3的CU3則不可再分。因此,對于編碼單元CUd的大小為2N*2N,深度為d,此時(shí)若它的split_flag值為0,則CUd不再被劃分;否則被分為四個(gè)大小為N*N的深度d+1的編碼單元CUd+1。

PU是預(yù)測的基本單元,規(guī)定了編碼單元的所有預(yù)測模式,其最大單元與當(dāng)前的CU大小相同。HEVC中對于skip模式,幀內(nèi)模式和幀間模式,PU分割大小是不同的。

圖3 預(yù)測單元PU劃分方式

如上圖所示,對于skip模式,PU的大小是2N*2N。而幀內(nèi)預(yù)測模式PU的大小可以為2N*2N和N*N,其中,當(dāng)且僅當(dāng)CU的大小為8*8時(shí),幀內(nèi)PU才可以取N*N。

幀間預(yù)測PU分割模式共有8種,主要分為兩類:對稱分割和非對稱分割。其中,2N*2N,2N*N,N*2N和N*N為4種對稱模式,2N*nU,2N*nD,nL*2N和nR*2N為4種非對稱模式,U、D、L和R分別表示上下左右,且非對稱劃分形式只用于大小為32*32和16*16的CU中,對稱劃分形式的N*N只用于大小為8*8的CU中。例如,2N*nU和2N*nD分別以上下1:3和3:1劃分,nL*2N和nR*2N分別以左右1:3和3:1劃分。

TU是變換和量化的基本單元,變換樹是由變換單元組成的四叉樹。從CU大小開始,變換單元以迭代方式四等分,是否劃分成四個(gè)子塊根據(jù)語法元素split_transform_flag標(biāo)定。根據(jù)迭代劃分的深度不同,其大小可以是32*32,16*16,8*8和4*4中的一個(gè)。在序列參數(shù)集中可以設(shè)定變換單元的最大/最小值。

圖4 變換單元TU劃分方式

如上圖所示,TU的最大劃分深度為3,其大小可以大于PU但不能超過CU。當(dāng)PU為正方形時(shí),TU采用正方形變換,且當(dāng)PU為長方形時(shí),TU采用長方形變換,其大小可以是32*8,8*32,16*4和4*16中的一個(gè)。


預(yù)測編碼

HEVC預(yù)測編碼相對于H.264有較大改進(jìn),使其更適用于高效編碼。預(yù)測編碼是基于前后兩幀或同一圖像的相鄰像素存在的相關(guān)性,利用當(dāng)前幀和一組預(yù)測系數(shù),推測出下一幀圖像,也可以利用周圍像素推測出當(dāng)前像素。然后將實(shí)際值和預(yù)測值作差,對差值進(jìn)行編碼,從而去除冗余。預(yù)測編碼分為幀內(nèi)預(yù)測和幀間預(yù)測,下面分別進(jìn)行介紹。

幀內(nèi)編碼

幀內(nèi)預(yù)測從H.264開始使用,4*4亮度塊的幀內(nèi)預(yù)測有9種預(yù)測模式,16*16亮度塊的幀內(nèi)預(yù)測有4種預(yù)測模式(H.264的宏塊大小?)。HEVC沿用H.264幀內(nèi)預(yù)測的思路,但對其進(jìn)行擴(kuò)展。

圖5 幀內(nèi)預(yù)測33種方向

如上圖所示,HEVC采用35種幀內(nèi)預(yù)測模式,其中包括DC模式、33種角度模式和Planar模式。HEVC對幀內(nèi)預(yù)測模式的選擇過程更細(xì)致,不同大小的PU對應(yīng)不同的預(yù)測模式。這使得幀內(nèi)預(yù)測更加精確,且能減少空間冗余。幀內(nèi)預(yù)測具體過程如下:

1.首先遍歷所有的預(yù)測模式,計(jì)算各個(gè)模式下預(yù)測的SAD(定義?)并由小到大排序。

2.SAD最小的一組預(yù)測模式作為該預(yù)測模式的子集。

3.確定預(yù)測子集后,判斷該P(yáng)U左和上已經(jīng)編碼像素塊的方向是否在子集內(nèi),若不在則將該模式加入子集。

4.最后對子集中的所有預(yù)測模式進(jìn)行率失真優(yōu)化(RDO)。

?

表1 不同大小塊對應(yīng)的不同模式個(gè)數(shù)

?

如上表所示,HEVC中預(yù)測單元大小不同,則預(yù)測模式數(shù)也不同,最終的預(yù)測子集個(gè)數(shù)也不同。

幀間編碼

HEVC幀間預(yù)測提出了運(yùn)動(dòng)合并技術(shù)、先進(jìn)運(yùn)動(dòng)矢量預(yù)測等新工具來提高編碼效率。幀間預(yù)測模式分為skip模式、運(yùn)動(dòng)合并技術(shù)(merge模式)、先進(jìn)運(yùn)動(dòng)矢量預(yù)測技術(shù)(AMVP)。其中,skip模式是merge中的一種特殊模式,其區(qū)別在于傳輸時(shí)不需要傳殘差信息和MV信息。下面對幀間預(yù)測模式分別進(jìn)行介紹。

merge模式

merge模式采用相鄰PU塊的運(yùn)動(dòng)信息估計(jì)當(dāng)前PU塊的運(yùn)動(dòng)信息,編碼器從時(shí)空域相鄰PU塊構(gòu)成的參考列表中選擇出最優(yōu)的運(yùn)動(dòng)信息,并將其傳到解碼端。

圖6 merge模式運(yùn)動(dòng)參數(shù)候選列表構(gòu)建過程

如上圖所示,候選列表主要包括兩個(gè)子集,空域候選列表和時(shí)域候選列表,總個(gè)數(shù)為MaxNumMergeCand(在片頭?中顯示輸出,且默認(rèn)值為5)。

圖7 運(yùn)動(dòng)合并空域候選位置

如上圖所示,空域候選列表從5個(gè)空間相鄰塊位置進(jìn)行選取,選取的順序?yàn)锳1->B1->B0->A0->(B2)。其中,B2只有在A1,B1,B0和A0中有一個(gè)不存在或幀內(nèi)預(yù)測(35種模式?)的情況下才可以使用。

圖8 N*2N和2N*N第二個(gè)PU的相鄰候選位置

為了防止虛化(指什么),對于N*2N,nL*2N和nR*2N模式的第二個(gè)PU的候選位置A1是不可用的,這種情況下的選取順序?yàn)锽1->B0->A0->B2。同理,對于2N*N,2N*nU和2N*nD模式第二個(gè)PU的候選位置B1是不可用的,這種情況下的選取順序是A1->B0->A0->B2。例如上圖所示。

圖9 用于時(shí)域運(yùn)動(dòng)合并的縮放式預(yù)測運(yùn)動(dòng)矢量

如上圖所示,對于時(shí)域候選子集的推導(dǎo)過程為:

1.首先當(dāng)前預(yù)測單元(curr_PU)從參考隊(duì)列中找出和它所處圖像(curr_pic)的POC序列差值最小的參考圖像(col_pic),以及curr_pic的參考圖像(curr_ref)。?

2.其次從參考圖像col_pic中找出兩個(gè)預(yù)測位置作為候選位置,并從兩個(gè)位置中選擇一個(gè)作為參考預(yù)測單元(col_PU)。

3.最后根據(jù)當(dāng)前預(yù)測單元和參考圖像的POC距離tb,以及col_pic和col_ref的POC距離td,對時(shí)域預(yù)測單元col_PU的運(yùn)動(dòng)矢量進(jìn)行縮放,從而得到當(dāng)前預(yù)測單元的預(yù)測矢量。

圖10 時(shí)域運(yùn)動(dòng)合并候選位置C3和H

如上圖所示,col_PU的位置從C3和H中進(jìn)行選擇。一般情況下首先考慮H位置,當(dāng)H位置不存在或編碼模式使用的是幀內(nèi)預(yù)測(35種?),或者超出了CTU(全稱,與CU關(guān)系?)的邊界時(shí),選擇C3位置。

AMVP技術(shù)

AMVP技術(shù)和merge模式預(yù)測過程部分相似,也是利用空域和時(shí)域相鄰塊的運(yùn)動(dòng)信息預(yù)測當(dāng)前PU塊的運(yùn)動(dòng)信息。AMVP技術(shù)利用周圍信息估計(jì)當(dāng)前編碼塊運(yùn)動(dòng)信息的過程和merge模式相同,包括候選列表的構(gòu)建過程和最優(yōu)運(yùn)動(dòng)矢量的選擇過程,只是候選數(shù)目不同,

圖11 AMVP候選列表構(gòu)建流程

如上圖所示,AMVP候選列表構(gòu)建流程中空域的5個(gè)位置和merge模式下空域的5個(gè)位置完全相同,但最終選擇的是兩個(gè)最優(yōu)位置,其中一個(gè)來自上邊塊,另一個(gè)來自左邊塊。而時(shí)域運(yùn)動(dòng)矢量的選取是利用兩個(gè)不同預(yù)測方向的時(shí)域相鄰預(yù)測單元的運(yùn)動(dòng)矢量作為測量值,并選取最優(yōu)的一個(gè)作為時(shí)域運(yùn)動(dòng)矢量。當(dāng)時(shí)域和空域候選子集選取完成后,首先去除重復(fù)的運(yùn)動(dòng)矢量,其次檢查運(yùn)動(dòng)矢量的總數(shù)是否為2,若大于2則保留前兩個(gè)即去除索引值大于1的,若小于2則添加零運(yùn)動(dòng)矢量。

空域運(yùn)動(dòng)矢量最多有2個(gè)預(yù)測運(yùn)動(dòng)矢量,是從圖7中5個(gè)位置中選取的。預(yù)測運(yùn)動(dòng)矢量選取順序?yàn)?#xff1a;

1.左相鄰塊:A0->A1->縮放的A0->縮放的A1

2.上相鄰塊:B0->B1->B2->縮放的B0->縮放的B1->縮放的B2

左候選子集和上候選子集均有四種處理預(yù)測運(yùn)動(dòng)矢量的方式,且可以劃分為兩類:運(yùn)動(dòng)矢量不縮放情形和運(yùn)動(dòng)矢量縮放情形。而且總是先處理不縮放情形,再處理縮放情形。對于兩種情形的規(guī)定如下:

1.不需要縮放的情形:

(1)使用同一個(gè)參考列表,同一個(gè)參考圖像索引。

(2)使用不同參考列表,同一個(gè)參考圖像索引。

2.需要縮放的情形:

(1)同一個(gè)參考列表,不同參考圖像索引。

(2)不同參考列表,不同參考圖像索引。

因此,具有相同圖像參考索引的不需要進(jìn)行縮放操作,其他情況要進(jìn)行縮放操作。時(shí)域運(yùn)動(dòng)矢量候選的選取方式與merge模式的時(shí)域候選方式相同,且對于空域縮放過程和時(shí)域縮放過程相同。


變換編碼

變換編碼是將空間的圖像變換到頻域,產(chǎn)生相關(guān)性很小的變換系數(shù),并對其進(jìn)行編碼壓縮。HEVC采用自適應(yīng)的變換編碼技術(shù),其沿用了H.264的自適應(yīng)塊大小變換技術(shù)(ABT),并在此基礎(chǔ)上進(jìn)行擴(kuò)展和改進(jìn)。

HEVC變換大小更靈活,采用更大的塊和非正方形變換。例如,在H.264的4*4和8*8變換基礎(chǔ)上,增加了16*16,32*32,16*4,4*16,32*8和8*32的變換大小。同時(shí),HEVC又增加了基于模式方向的掃描技術(shù)(MDCS),該技術(shù)主要針對幀內(nèi)編碼塊,根據(jù)幀內(nèi)編碼塊預(yù)測模式的水平或垂直相關(guān)性決定當(dāng)前變換系數(shù)的掃描順序。

圖12 8*8變換塊掃描方式

如上圖所示,對于幀內(nèi)4*4和8*8變換塊的掃描方式主要分為對角掃描,水平掃描和垂直掃描。


熵編碼

HEVC視頻編碼標(biāo)準(zhǔn)中只采用一種熵編碼器,即基于上下文的自適應(yīng)二進(jìn)制算數(shù)編碼器(CABAC),且去除了基于上下文的自適應(yīng)可變長編碼(CAVLC)。

圖13 熵編碼流程

如上圖所示,HEVC的CABAC熵編碼流程與H.264基本類似。主要包括:二進(jìn)制化,文本模型選擇,概率估計(jì)和二進(jìn)制算術(shù)編碼,但HEVC在概率估計(jì)精確度和自適應(yīng)速度加快等方面進(jìn)行了改進(jìn)。


重構(gòu)圖像后處理技術(shù)

為降低重建圖像和原始圖像之間的失真程度,HEVC對重構(gòu)圖像進(jìn)行后處理,包括去方塊濾波和像素自適應(yīng)補(bǔ)償技術(shù)。其中,SAO是HEVC新增技術(shù),主要對重構(gòu)圖像基于像素進(jìn)行補(bǔ)償以減小重建圖像和原始圖像之間的差異。

去方塊濾波

HEVC的去方塊濾波與H.264類似,但由于HEVC中TU的大小可以大于PU,因此不能像H.264選擇塊邊界,而是從TU和PU中選擇較小的邊界進(jìn)行濾波。而且為了降低負(fù)責(zé)讀,其不對4*4塊邊界進(jìn)行濾波。

圖14 去方塊濾波流程

如上圖所示,邊界濾波分為三種情況:不進(jìn)行濾波,弱濾波和強(qiáng)濾波。且濾波類型由邊界強(qiáng)度BS,閾值β和tc決定。


像素自適應(yīng)補(bǔ)償

SAO在去方塊濾波后執(zhí)行,是HEVC新增的編碼技術(shù)。SAO是以LCU為單元,對每個(gè)LCU經(jīng)過去方塊濾波后的重建像素進(jìn)行自適應(yīng)補(bǔ)償,從而減小重建圖像的失真。SAO分為兩類:邊帶補(bǔ)償(BO)和邊界補(bǔ)償(EO)。

圖15 BO補(bǔ)償

如上圖所示,BO首先將亮度等級(0-255)分成32個(gè)條帶,然后統(tǒng)計(jì)一個(gè)LCU內(nèi)的像素分別落入每個(gè)條帶的數(shù)目。對32個(gè)條帶,每四個(gè)為一組,其左邊界標(biāo)記為起始位置。計(jì)算出連續(xù)4個(gè)條帶應(yīng)該補(bǔ)償?shù)闹?#xff0c;對LCU中的像素進(jìn)行補(bǔ)償,最后進(jìn)行RDO,選擇RDO最小的4連續(xù)條帶進(jìn)行補(bǔ)償。

圖16 EO補(bǔ)償?shù)乃念惙较?/p>

如上圖所示,EO主要是對圖像的輪廓進(jìn)行補(bǔ)償,其補(bǔ)償方向主要分為四類,其中每一類又可以分成圖17中的四種情況。統(tǒng)計(jì)出每種情況下的補(bǔ)償值,按照像素所屬類型以LCU為單位基于像素進(jìn)行補(bǔ)償。

圖17 EO補(bǔ)償每一類方向的四種情況

總結(jié):HEVC對H.264關(guān)鍵技術(shù)進(jìn)行了改進(jìn),并引入了新技術(shù),提高了視頻編碼效率,同時(shí)適用于高清視頻序列的編碼壓縮

總結(jié)

以上是生活随笔為你收集整理的HEVC视频编码技术的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。