HEVC中B幀的基于SKIP/MergeRDCost的CU提前終止方法技術(shù)領(lǐng)域本發(fā)明涉及視頻壓縮領(lǐng)域中降低HEVCB幀中模式選擇復(fù)雜度的方法,具體是一種利用CU的SKIP/MergeRDCost來(lái)跳過(guò)該CU的剩下的模式選擇,從而降低編碼復(fù)雜度的方法。
背景技術(shù):隨著數(shù)字視頻應(yīng)用產(chǎn)業(yè)鏈的快速發(fā)展,視頻應(yīng)用向高清晰度、高幀率和高壓縮率法相發(fā)展的趨勢(shì)越來(lái)越明顯,如果繼續(xù)采用H.264編碼會(huì)出現(xiàn)一些問(wèn)題,比如由于視頻分辨率的提高,宏塊個(gè)數(shù)大大增加,會(huì)導(dǎo)致用于編碼的宏塊級(jí)參數(shù)所占的碼字過(guò)多,壓縮效率明顯降低,而且由于分辨率的大大提高,單個(gè)宏塊所表示的圖像信息也大大減少;高分辨率的宏塊的運(yùn)動(dòng)矢量的幅值也增加,而H.264原有的編碼方式將不再適用等等。HEVC(HighEfficiencyVideoCoding)是一種新的視頻壓縮標(biāo)準(zhǔn),被視為是ITU-TH.264/AVC標(biāo)準(zhǔn)的繼任者。HEVC被認(rèn)為不僅能提升圖像質(zhì)量,同時(shí)能達(dá)到H.264/MPEG-4AVC兩倍壓縮率(等同于同樣畫面質(zhì)量下比特率減少了50%),可以支持4K分辨率,最高分辨率可達(dá)到8192x4320(8K分辨率)。HEVC較于H.264的性能有大幅度的提高是因?yàn)樗捎昧藥讉€(gè)有較高復(fù)雜度的方法,其中之一就是靈活的編碼單元(CU)劃分和預(yù)測(cè)單元(PU)的模式選擇。相比于H.264/AVC,HEVC采用了一種基于編碼樹單元(CTU)的更靈活的四叉樹結(jié)構(gòu)。如圖1所示,左圖是LCU(最大的CU,默認(rèn)情況下為64x64)經(jīng)過(guò)模式判決后得到的最優(yōu)劃分,從圖中可以看出HEVC可以支持64x64到8x8的CU。Kim等人在文獻(xiàn)“BlockpartitioningstructureintheHEVCstandard”Kim,I.K.,Min,J.,Lee,T.,Han,W.J.,&Park,J.(2012).BlockpartitioningstructureintheHEVCstandard.CircuitsandSystemsforVideoTechnology,IEEETransactionson,22(12),1697-1706.中提到,對(duì)于高分辨率的視頻序列使用較大尺寸的CU會(huì)有比較明顯的性能提升。這是因?yàn)榇蟪叽鐖D像的平緩區(qū)域的面積更大,所以如果采用較大的塊進(jìn)行編碼將能夠極大的提升編碼效率,同時(shí)又由于大尺寸塊不能很好的處理圖像的局部細(xì)節(jié),而復(fù)雜的圖像需要精細(xì)的預(yù)測(cè),因此小尺寸塊也是需要的,因而這種塊結(jié)構(gòu)能夠很好的適應(yīng)圖像的各個(gè)區(qū)域,達(dá)到較好的編碼效果。此外,在P幀和B幀時(shí),每個(gè)CU還要從不同的PU(預(yù)測(cè)單元)中選出最優(yōu)的,相對(duì)于H.264/AVC,HEVC中的PU模式也大大增加,包括:SKIP模式,Merge模式,Inter2Nx2N,InterNx2N,Inter2NxN,Inter2NxnU,Inter2NxnD,InternLx2N,InternRx2N,InterNxN,Intra2Nx2N和IntraNxN。在這么多不同的模式中,HEVC通過(guò)比較各個(gè)模式的RDCost來(lái)得到最優(yōu)的預(yù)測(cè)模式。RDCost通過(guò)RDO(率失真優(yōu)化)得到,見(jiàn)式(1):lmode==(SSEluma+ωchroma·SSEchroma)+λ·Bmode(1)其中SSE是原始像素與重建像素的均方誤差,ωchroma是色度的均方誤差的加權(quán)因子,λ是拉格朗日乘數(shù),Bmode是在該模式下的碼流大小。為了得到RDCost,需要進(jìn)行運(yùn)動(dòng)估計(jì)、運(yùn)動(dòng)補(bǔ)償、變換、量化、熵編碼、反量化和反變換,再加上HEVC本身的塊結(jié)構(gòu),使HEVC的模式判決的復(fù)雜度大大增加。Tan等人在文獻(xiàn)“Onfastcodingtreeblockandmodedecisionforhigh-efficiencyvideocoding(HEVC)”(Tan,H.L.,Liu,F.,Tan,Y.H.,&Yeo,C.(2012,March).Onfastcodingtreeblockandmodedecisionforhigh-efficiencyvideocoding(HEVC).InAcoustics,SpeechandSignalProcessing(ICASSP),2012IEEEInternationalConferenceon(pp.825-828).IEEE)中提到,使用固定大小的16x16的CU只需引入1584次RDO,而使用64x64且最大深度為4的CTU需要進(jìn)行8415次RDO。SKIP模式和Merge模式的RDO相對(duì)來(lái)說(shuō)比較簡(jiǎn)單,因?yàn)樗鼈兙恍枰\(yùn)動(dòng)估計(jì),此外由于SKIP模式不需要傳遞殘差,其RDO過(guò)程還不需要變換量化等過(guò)程。
技術(shù)實(shí)現(xiàn)要素:針對(duì)現(xiàn)有技術(shù)中的缺陷,本發(fā)明的目的是提供一種HEVC中B幀的基于SKIP/MergeRDCost的CU提前終止方法,解決HEVC原有的方法在B幀進(jìn)行CU劃分和PU模式選擇時(shí)具有較高的復(fù)雜度的問(wèn)題。為實(shí)現(xiàn)以上目的,本發(fā)針對(duì)降低HEVC編碼復(fù)雜的需求,且SKIP模式和Merge模式的RDO相對(duì)比較簡(jiǎn)單,提出的一種利用當(dāng)前CU的SKIP/Merge的RDCost來(lái)提前終止該CU的向下劃分和模式選擇的方法:首先是為每一幀初始化各個(gè)閾值,然后是針對(duì)每一個(gè)CU通過(guò)閾值來(lái)判斷是否能提前終止,包括SKIP/Merge模式的提前跳出和CU停止向下劃分兩個(gè)部分,最后是根據(jù)搜索得到的最優(yōu)模式進(jìn)行閾值的自適應(yīng)更新。本發(fā)明具有較低復(fù)雜度、性能損失小且速度快的優(yōu)點(diǎn)。所述方法包括如下步驟:步驟1:如果當(dāng)前CU是每幀的第一個(gè)LCU,那么初始化各閾值;步驟2:計(jì)算該CU的SKIP/Merge的RDCost;步驟3:如果該CU的SKIP/Merge的RDCost小于第一閾值,直接跳到步驟9;步驟4:如果該CU的深度(depth)為0,且SKIP/Merge的RDCost小于第二閾值時(shí),跳過(guò)該CU中深度為2和3的CU劃分,跳到步驟7;步驟5:如果該CU的深度為0,且SKIP/Merge的RDCost小于第三閾值時(shí),跳過(guò)該CU中深度為3的CU劃分,跳到步驟7;步驟6:如果該CU的深度為1,且SKIP/Merge的RDCost小于第四閾值時(shí),跳過(guò)該CU中深度為3的CU劃分;步驟7:進(jìn)行該CU當(dāng)前的深度下的剩下的模式判決,選出該深度下的最優(yōu)模式;步驟8:根據(jù)步驟4、5、6來(lái)判斷是否進(jìn)行向下劃分,若需要?jiǎng)t針對(duì)向下劃分后得到的每個(gè)小CU跳至步驟1,否則跳至步驟9;步驟9:更新相應(yīng)的閾值。本發(fā)明中:自適應(yīng)的閾值設(shè)置,如步驟1中為每一幀初始化各個(gè)閾值,減少由場(chǎng)景切換帶來(lái)的性能損失;如步驟9中的自適應(yīng)更新閾值,為閾值引入了空間相關(guān)性,使得當(dāng)前CU的閾值隨著周圍CU相關(guān)情況上下浮動(dòng),從而使閾值判斷的準(zhǔn)確率有所提升,性能損失得到保障。本發(fā)明中:如步驟3中的為每一層CU的SKIP/Merge提前跳出均設(shè)置了相應(yīng)的閾值,這是由每層CU有不同的特性決定的。經(jīng)驗(yàn)證,分別設(shè)置閾值與只設(shè)置一個(gè)性能損失大大減少,而速度提升沒(méi)有明顯提升。本發(fā)明中:如步驟4、步驟5和步驟6的隔層提前終止CU搜索,這是由于使用RDCost的值來(lái)提前終止CU向下劃分,并不能很好的區(qū)分相鄰兩層之間的區(qū)別,因而采用隔層提前終止的方法才能使性能損失保持在一個(gè)令人滿意的程度內(nèi)。與現(xiàn)有技術(shù)相比,本發(fā)明具有如下的有益效果:本發(fā)明提供的方法能夠?qū)EVC中B幀的CU模式判決進(jìn)行有效的提前終止,實(shí)現(xiàn)在較小的性能損失下降低HEVC編碼時(shí)的時(shí)間復(fù)雜度。經(jīng)驗(yàn)證,在使用了該發(fā)明之后,在HEVC的參考編碼器HM12.0下,針對(duì)多個(gè)視頻序列編碼器平均有50%的速度提升,而BD-rate(相同質(zhì)量下的碼率)僅有1.25%的增加。附圖說(shuō)明通過(guò)閱讀參照以下附圖對(duì)非限制性實(shí)施例所作的詳細(xì)描述,本發(fā)明的其它特征、目的和優(yōu)點(diǎn)將會(huì)變得更明顯:圖1是HEVC靈活的塊結(jié)構(gòu)示意圖;圖2是本發(fā)明所提出的CU模式判決提前終止流程圖;圖3是CU的SKIP/Merge的RDCost對(duì)應(yīng)的最優(yōu)模式的概率分布曲線;圖4是64x64CU經(jīng)模式判決后得到的最優(yōu)深與SKIP/MergeRDCost的概率分布曲線。具體實(shí)施方式下面結(jié)合具體實(shí)施例對(duì)本發(fā)明進(jìn)行詳細(xì)說(shuō)明。以下實(shí)施例將有助于本領(lǐng)域的技術(shù)人員進(jìn)一步理解本發(fā)明,但不以任何形式限制本發(fā)明。應(yīng)當(dāng)指出的是,對(duì)本領(lǐng)域的普通技術(shù)人員來(lái)說(shuō),在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干變形和改進(jìn)。這些都屬于本發(fā)明的保護(hù)范圍。如圖1所示,本實(shí)施例提供一種HEVC中B幀的基于SKIP/MergeRDCost的CU提前終止方法,具體實(shí)施步驟如下:步驟(1):利用當(dāng)前CU的位置來(lái)判斷是否要重新初始化閾值,具體是:通過(guò)判斷CU的橫軸與縱軸的坐標(biāo)來(lái)判斷該CU是否為每幀的第一個(gè)CU,如果滿足條件,則為該幀初始化各個(gè)閾值。這里為每一幀都初始化閾值的目的是為了防止畫面切換造成的前后兩幀的相關(guān)性大大降低,如果沿用前一幀的更新后的閾值,可能會(huì)造成較大的性能損失。這里針對(duì)該發(fā)明設(shè)置了以下幾個(gè)閾值:threshold_skip[i],(i=0,1,2,3),threshold_depth_0_50,threshold_depth_0_70,threshold_depth_1_50。在要用到相應(yīng)的閾值時(shí)會(huì)介紹使用該閾值的原因及其對(duì)應(yīng)初始化的值。步驟(2):計(jì)算該CU的SKIP/Merge的RDCost值,這里采用的是HEVC編碼器原有的計(jì)算RDCost的方法。步驟(3):如果該CU的SKIP/Merge的RDCost小于第一閾值,直接跳到步驟9,具體是:這里第一閾值是threshold_skip[i],(i=0,1,2,3),此處的i代表的是不同CU的深度,為了盡可能的降低本發(fā)明的性能損失,這里給每一層深度分別設(shè)定了閾值。經(jīng)過(guò)統(tǒng)計(jì),發(fā)現(xiàn)對(duì)于巨大部分視頻序列來(lái)說(shuō),經(jīng)過(guò)完整的模式選擇后B幀的SKIP/Merge模式占到總數(shù)的50%以上。并且計(jì)算SKIP/Merge的RDCost相對(duì)于其他模式來(lái)說(shuō)復(fù)雜度低的多,這是因?yàn)镾KIP/Merge是利用周圍塊的運(yùn)動(dòng)矢量直接進(jìn)行運(yùn)動(dòng)補(bǔ)償,而不需要進(jìn)行運(yùn)動(dòng)估計(jì)得到最優(yōu)的運(yùn)動(dòng)矢量,此外由于SKIP模式下不會(huì)傳遞殘差,因而對(duì)殘差進(jìn)行的DCT和IDCT也不需要進(jìn)行。鑒于這些原因,如果在計(jì)算了SKIP/Merge的RDCost之后能夠提前終止,那么CU模式選擇的復(fù)雜度將會(huì)大大降低。因?yàn)楦鱾€(gè)模式之間的衡量標(biāo)準(zhǔn)是RDCost,RDCost最小的模式將會(huì)被選為該CU的最優(yōu)模式,所以如果SKIP/Merge的RDCost值足夠小的話就可以認(rèn)為有很大概率SKIP/Merge為該CU的最優(yōu)模式。為了驗(yàn)證這個(gè)猜想,可以粗略的把CU模式選擇之后的最優(yōu)模式分為SKIP/Merge、Inter、Intra、Splited這四種,其中Splited表示要得到該CU的最優(yōu)模式需要往下繼續(xù)劃分。圖3是視頻序列Kimono1_1920x1080_30.yuv在QP(量化參數(shù))為32下32x32CU的SKIP/MergeRDCost對(duì)應(yīng)的最優(yōu)模式的概率分布曲線。從圖中可以看出如果取SKIP/Merge的10百分位來(lái)作為初始閾值的話,分別僅有1.0%、1.9%和0.2%的Inter、Intra和Splited模式被錯(cuò)判為SKIP/Merge模式。經(jīng)過(guò)測(cè)試多個(gè)視頻序列后,threshold_skip[i]的初始值為式(2):threshold_skip[i]=21.179e0.053*QP(2)所以,如果該CU的SKIP/Merge的RDCost小于threshold_skip[i],那么可以認(rèn)為SKIP/Merge已經(jīng)是該CU的最優(yōu)模式,所以該CU的剩余模式?jīng)]有必要計(jì)算,直接跳至步驟9更新相應(yīng)的閾值。步驟(4):如果該CU的深度為0,且SKIP/Merge的RDCost小于第二閾值時(shí),跳過(guò)該CU中深度為2和3的CU劃分,跳到步驟7,具體是:由于HEVC的靈活的塊結(jié)構(gòu)帶來(lái)了大量的計(jì)算復(fù)雜度,因而及時(shí)地終止不必要的CU向下劃分可以節(jié)省可觀的運(yùn)算時(shí)間并且能夠帶來(lái)較少的性能損失,這里的做法就是基于這個(gè)原理。這里用到的第二閾值被記為threshold_depth_0_50,表示該閾值用在當(dāng)CU的深度為0時(shí)的情況,采用的是深度為0的CU的SKIP/Merge的RDCost的50百分位。為證明該閾值的有效性,在視頻序列Kimono1_1920x1080_30.yuv中深度為0的CU進(jìn)行了測(cè)試,結(jié)果如圖4,這里的SKIP/MergeRDCost指的是深度為0時(shí)的該CU的SKIP/MergeRDCost的值。在圖4中,Depthi(I=0,1,2,3)表示64x64經(jīng)過(guò)模式判決后得到的最優(yōu)的深度。從圖4中可以看出,如果利用Depth0的50百分位,那么將只有12%,5.8%,2.9%的Depth1,Depth2,Depth3被錯(cuò)判為Depth0。同時(shí),經(jīng)實(shí)驗(yàn)得知利用該方法采用隔層提前終止會(huì)得到較好的性能,即利用threshold_depth_0_50只跳過(guò)深度為2和3的搜索,而不跳過(guò)深度為1的搜索,這個(gè)策略也會(huì)用到該發(fā)明的其余地方。經(jīng)過(guò)測(cè)試多個(gè)視頻序列后,threshold_depth_0_50的初始值為式(3):threshold_depth_0_50=7.0337e0.01124*QP(3)步驟5:如果該CU的深度為0,且SKIP/Merge的RDCost小于第三閾值時(shí),跳過(guò)該CU中深度為3的CU劃分,跳到步驟7,具體是;這里采用的策略與方法同步驟4類似,只是利用70百分位跳過(guò)深度為3的CU搜索,利用第三閾值進(jìn)行提前終止的錯(cuò)判率也在圖4中。經(jīng)過(guò)測(cè)試多個(gè)視頻序列后,threshold_depth_0_70的初始值為式(4):threshold_depth_0_70=5.2503e0.1323*QP(4)步驟6:如果該CU的深度為1,且SKIP/Merge的RDCost小于第四閾值時(shí),跳過(guò)該CU中深度為3的CU劃分,具體是:同步驟4和步驟5一樣,這里采用的是32x32CU的SKIP/MergeRDCost來(lái)跳過(guò)深度為3的搜索。此處的第四閾值記為threshold_depth_1_50,初始值為式(5):threshold_depth_1_50=8.6663e0.1084*QP(5)步驟7:進(jìn)行該CU當(dāng)前的深度下的剩下的模式判決,選出該深度下的最優(yōu)模式,具體是:如果沒(méi)有滿足步驟3的條件,那么就要進(jìn)行該層的其余模式,即包括Inter2Nx2N,InterNx2N,Inter2NxN,Inter2NxnU,Inter2NxnD,InternLx2N,InternRx2N,InterNxN,Intra2Nx2N和InterNxN,分別計(jì)算各個(gè)模式的RDCost,選出其中RDCost最小的模式,這個(gè)RDCost將于該CU向下劃分后進(jìn)行模式判決得到的RDCost進(jìn)行比較,從而得到該CU的最優(yōu)劃分。步驟8:根據(jù)步驟4、5、6來(lái)判斷是否進(jìn)行向下劃分,若需要?jiǎng)t針對(duì)向下劃分后得到的每個(gè)小CU跳至步驟1,否則跳至步驟9,具體是:在步驟7完成之后,當(dāng)前深度的最優(yōu)模式已經(jīng)得到,這時(shí)需要向下劃分得到向下劃分的最優(yōu)模式,兩者進(jìn)行比較從而得到該深度下的最優(yōu)劃分。該步驟就是利用本發(fā)明提出的方法來(lái)判斷是否要向下劃分。為了實(shí)現(xiàn)的方便,這里為每個(gè)LCU的每個(gè)深度設(shè)置了標(biāo)志符is_search[i](i=0,1,2,3),這里的i代表不同的深度。當(dāng)每個(gè)LCU的搜索開始時(shí)is_search[i]均被初始化為true,當(dāng)滿足步驟4、步驟5或步驟6的條件時(shí),才將對(duì)應(yīng)的標(biāo)志符設(shè)為false。在該步驟中通過(guò)判斷標(biāo)志符來(lái)決定是否要向下劃分:若標(biāo)志符為true,則該CU需要向下劃分;若為false,則不要。步驟9:更新相應(yīng)的閾值,具體是:在上面的各步驟中已經(jīng)提到根據(jù)多個(gè)測(cè)試序列的仿真結(jié)果,為每一個(gè)閾值都初始化了閾值,在這里還進(jìn)行自適應(yīng)的更新,原因是由于空間上的相關(guān)性,相鄰的CU之間的閾值也具有一定的相關(guān)性,在閾值中引入這種相關(guān)性會(huì)使性能損失與速度提升得到平衡,閾值更新的為式(6):這里的threshold為上文中提到的任意閾值,經(jīng)驗(yàn)證,當(dāng)λ取7時(shí),得到的效果最為理想。此處就利用步驟6來(lái)更新相應(yīng)的閾值,例如對(duì)32x32的CU,完成搜索后發(fā)現(xiàn)其最優(yōu)模式為當(dāng)前層的SKIP/Merge模式,那么threshold_skip[1]就會(huì)被更新;對(duì)64x64的LCU來(lái)說(shuō),若其最優(yōu)的劃分為Depth0或Depth1,那么threshold_depth_0_50就會(huì)被更新。本發(fā)明能夠解決HEVC在B幀CU搜索時(shí)復(fù)雜度過(guò)大的問(wèn)題,在HEVC的參考編碼器HM12.0下,針對(duì)多個(gè)視頻序列編碼器平均有50%的速度提升,而BD-rate(相同質(zhì)量下的碼率)僅有1.25%的增加。以上對(duì)本發(fā)明的具體實(shí)施例進(jìn)行了描述。需要理解的是,本發(fā)明并不局限于上述特定實(shí)施方式,本領(lǐng)域技術(shù)人員可以在權(quán)利要求的范圍內(nèi)做出各種變形或修改,這并不影響本發(fā)明的實(shí)質(zhì)內(nèi)容。