一種hevc快速cu深度劃分編碼方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及視頻編碼技術(shù)領(lǐng)域,特別是一種HEVC(High Efficiency Video Coding)快速⑶深度劃分編碼方法。
【背景技術(shù)】
[0002] 2012 年 10 月,ITU-T/ISO/IEC 視頻編碼聯(lián)合協(xié)作小組(Joint Collaborative Team on Video Coding,JCT_VC)發(fā)布了"高效視頻編碼"(High Efficiency Video Coding, HEVC)標(biāo)準(zhǔn)草案9,此后先后舉行了多次會(huì)議,不斷的改進(jìn)、增刪和完善HEVC技術(shù)內(nèi)容。2013 年1月,HEVC作為新一代視頻標(biāo)準(zhǔn)正式成為國際標(biāo)準(zhǔn)。它的核心目標(biāo)是在H. 264/AVC High Profile的基礎(chǔ)上,在保證相同的視頻圖像質(zhì)量的前提下,視頻流的碼率減少50%。HEVC遵 循H. 264/AVC的核心機(jī)制,并采用了多種編碼技術(shù),顯著提高了編碼性能,例如編碼過程不 再以宏塊為單位,而是定義了三種不同的結(jié)構(gòu)單元:編碼單元(Coding Unit,CU)、預(yù)測(cè)單元 (Prediction Unit,PU)和變換單元(Transform Unit,TU),幀間PU模式遍歷選擇技術(shù)和 CU的四叉樹編碼結(jié)構(gòu)技術(shù)等。CU的深度按四叉樹遞歸方式,根據(jù)大小不同的CU尺寸可以 分為深度0、深度1、深度2和深度3,對(duì)應(yīng)的⑶尺寸分別是64X64,32X32,16 X 16,8 X 8。 幀間 I3U 模式包括 9 種不同的劃分方式:SKIP,Inter_2NX2N,Inter_2NXN,Inter_NX2N, Inter_NXN,Inter_2NXnU,Inter_2NXnD,Inter_nLX2N,Inter_nLX2N,其中 SKIP 是一 種特殊的幀間I3U模式。在所有不同深度的CU遍歷9種幀間PU模式和幀內(nèi)模式后,根據(jù)計(jì) 算得到的率失真代價(jià)值確定該CU的最佳深度劃分。每個(gè)深度為0的最大編碼單元LCU共 需要進(jìn)行1+4+4 2+43= 85次⑶劃分。因此,HEVC在提高一倍編碼效率的同時(shí)也給編碼端 帶來很大的計(jì)算復(fù)雜度。
[0003] 在HEVC中,⑶采用四叉樹編碼結(jié)構(gòu),⑶塊始終是正方形,深度從0到3,對(duì)應(yīng)⑶ 尺寸大小為64X64到8X8。⑶塊的劃分從IXU開始遞歸,逐層遍歷所有深度從0到3的 CU塊,并且根據(jù)率失真代價(jià)選擇最佳編碼深度,從而實(shí)現(xiàn)當(dāng)前CU的最佳深度劃分。在標(biāo)準(zhǔn) HEVC中,IXU的劃分算法如下:
[0004] 1)從深度為0的最大編碼單元LCU開始,對(duì)其進(jìn)行幀間預(yù)測(cè)和幀內(nèi)預(yù)測(cè)編碼,得到 其率失真代價(jià)。
[0005] 2)進(jìn)一步劃分為4個(gè)深度為1的子⑶塊,對(duì)第一個(gè)深度為1子⑶塊進(jìn)行幀間預(yù) 測(cè)和幀內(nèi)編碼,得到這個(gè)子CU塊的率失真代價(jià)。
[0006] 3)進(jìn)一步劃分為4個(gè)深度為2的子⑶塊,對(duì)第一個(gè)深度為2子⑶塊進(jìn)行幀間預(yù) 測(cè)和幀內(nèi)編碼,得到這個(gè)子CU塊的率失真代價(jià)。
[0007] 4)進(jìn)一步劃分為4個(gè)深度為3的子CU ±夬,對(duì)其進(jìn)行幀間預(yù)測(cè)和幀內(nèi)編碼,得到率 失真代價(jià)。
[0008] 5)分別對(duì)剩余3個(gè)深度為3的子CU塊其進(jìn)行幀間預(yù)測(cè)和幀內(nèi)編碼,得到各自的率 失真代價(jià),并計(jì)算4個(gè)深度為3的CU塊的率失真代價(jià)和。
[0009] 6)遞歸返回,根據(jù)率失真代價(jià)值選擇最佳塊。如果4個(gè)深度為3的CU的率失真代 價(jià)和大于對(duì)應(yīng)深度為2的CU塊的率失真代價(jià),則該深度為2的CU塊不劃分,否則該深度為 2的CU塊劃分成4個(gè)深度為3的CU塊。
[0010] 7)按照步驟4、5、6分別對(duì)其他深度為2、深度為1直到深度為0的⑶塊進(jìn)行遞歸 劃分,最終確定當(dāng)前LCU的最佳深度劃分。
[0011] 8)編碼下一個(gè) LCU。
[0012] 基于這種遞歸結(jié)構(gòu),編碼器需要對(duì)各個(gè)尺寸的CU進(jìn)行9種幀間PU模式和幀內(nèi)模 式全遍歷算法,計(jì)算量非常大,需要消耗大量運(yùn)算時(shí)間。
[0013] 為了提高HEVC編碼效率滿足實(shí)時(shí)性,一些對(duì)CU塊深度劃分早決策的快速算法被 提出 ° 提案 ECU[R. H. Gweon, Y.-L. Lee, and J. Lim. "Early termination of CU encoding to reduce HEVC Complexity, JCT-VC-Meeting, JCTVC-F045, Torino, Italy, July 2011], 這種方法利用SKIP模式提前終止CU分割的算法,具體算法過程是當(dāng)前CU遍歷完9種幀間 模式和幀內(nèi)模式預(yù)測(cè)后,如果最佳預(yù)測(cè)模式為SKIP模式,則提前終止當(dāng)前CU劃分,從而減 少遍歷⑶的個(gè)數(shù)。此算法對(duì)⑶劃分早決策的判斷條件比較苛刻,且只能適用于平坦且運(yùn)動(dòng) 小的視頻序列,對(duì)于紋理和運(yùn)動(dòng)復(fù)雜的序列編碼速度提高并不明顯。另一種利用基于SKIP 模式和全零塊檢測(cè)得到的閾值提前終止⑶深度劃分算法被提出[Pai-Tse Chiang,Tian Sheuan Chang, "Fast Zero Block Detection and Early CU Termination for HEVC Video Coding, " in Circuits and Systems, IEEE. May, 2013],該算法將 Inter_2NX2N 模式提到 SKIP模式之前,判斷該模式的率失真代價(jià)值是否小于閾值,如果小于閾值,則直接終止當(dāng)前 CU劃分,否則繼續(xù)遍歷包括SKIP模式在內(nèi)的8種幀間PU模式,如果最佳預(yù)測(cè)模式是SKIP 模式終止CU劃分。該算法利用全零塊檢測(cè)得到的閾值,計(jì)算復(fù)雜。
【發(fā)明內(nèi)容】
[0014] 本發(fā)明所要解決的技術(shù)問題是克服現(xiàn)有技術(shù)的不足,而提供一種HEVC快速CU深 度劃分編碼方法,該方法將除了幀間NXN模式外的7種幀間預(yù)測(cè)單元PU模式分成3類: Model、Mode2和Mode3 ;針對(duì)深度為0、深度為1和深度為2的編碼單元⑶預(yù)先分別設(shè)置不 同的幀間PU模式類別;在CU劃分過程中,當(dāng)CU的最佳預(yù)測(cè)模式是幀間模式時(shí),利用CU在 當(dāng)前深度下的CBF和MVD都為0、最佳預(yù)測(cè)模式滿足相應(yīng)設(shè)置的幀間PU模式類別作為劃分 提前終止條件,可以使CU在深度為0、深度為1或深度為2時(shí)提前終止其深度劃分,從而實(shí) 現(xiàn)快速的CU深度分割。
[0015] 本發(fā)明為解決上述技術(shù)問題采用以下技術(shù)方案:
[0016] 根據(jù)本發(fā)明提出的一種HEVC快速⑶深度劃分編碼方法,將除了幀間NX N模式外 的7種幀間預(yù)測(cè)單元PU模式分成3類:Model、Mode2和Mode3,針對(duì)深度為0、深度為1和 深度為2的CU預(yù)先分別設(shè)置不同的幀間PU模式類別;在CU劃分過程中,如果CU在當(dāng)前深 度下的CBF和MVD都為0、其最佳預(yù)測(cè)模式是幀間PU模式且滿足相應(yīng)設(shè)置的幀間PU模式類 別時(shí),則提前終止當(dāng)前CU的四叉樹劃分;具體采用以下方法:
[0017] 步驟1、若深度為0的最大編碼單元IXU遍歷完幀間模式和幀內(nèi)模式預(yù)測(cè)后且IXU 的CBF和MVD值均為0,判斷其最佳預(yù)測(cè)模式是否屬于Model,如果是,則終止當(dāng)前CU劃分; 如果否,則繼續(xù)進(jìn)行預(yù)測(cè)編碼計(jì)算當(dāng)前LCU的率失真代價(jià),將LCU劃分為深度為1的4個(gè)子 CU,轉(zhuǎn)步驟2 ;
[0018] 步驟2、若深度為1的子⑶遍歷完幀間模式和幀內(nèi)模式預(yù)測(cè)后且⑶的CBF和MVD 值均為〇,判斷當(dāng)前子CU的最佳預(yù)測(cè)模式是否屬于Model或Mode2,如果是,則終止當(dāng)前CU 劃分;如果否,則繼續(xù)進(jìn)行預(yù)測(cè)編碼計(jì)算當(dāng)前CU的率失真代價(jià),將當(dāng)前子CU劃分為深度為 2的4個(gè)子⑶后,轉(zhuǎn)步驟3 ;
[0019] 步驟3、若深度為2的子⑶遍歷完幀間模式和幀內(nèi)模式預(yù)測(cè)后且⑶的CBF和MVD 值均為〇,判斷當(dāng)前子⑶的最佳預(yù)測(cè)模式是否屬于Model或Mode2或Mode3,如果是,則終 止當(dāng)前CU劃分;如果否,則繼續(xù)進(jìn)行預(yù)測(cè)編碼計(jì)算當(dāng)前CU的率失真代價(jià),將當(dāng)前子CU劃分 為深度為3的4個(gè)子⑶后,轉(zhuǎn)步驟4 ;
[0020] 步驟4、分別對(duì)4個(gè)深度為3的子CU進(jìn)行完整的幀間和幀內(nèi)預(yù)測(cè)編碼并計(jì)算出各 自的率失真代價(jià)。
[0021] 作為本發(fā)明所述HEVC快速⑶深度劃分編碼方法進(jìn)一步優(yōu)化方案,所述Model的 具體設(shè)定如下:
[0022] Model是幀間PU模式為Inter_2NX 2N正方形劃分方式,代表CU運(yùn)動(dòng)趨于平緩。
[0023] 作為本發(fā)明所述HEVC快速CU深度劃分編碼方法進(jìn)一