1.一種基于HEVC的Two-Pass碼率控制方法,其特征在于:該方法的具體步驟為:
步驟1,快速預(yù)編碼視頻序列,并收集對(duì)應(yīng)編碼單元的統(tǒng)計(jì)信息;
步驟2,將根據(jù)前面收集的統(tǒng)計(jì)信息,進(jìn)行比特分配、率失真模型參數(shù)訓(xùn)練擬合以及量化參數(shù)QP的計(jì)算,輸出比特流。
2.根據(jù)權(quán)利要求1所述的一種基于HEVC的Two-Pass碼率控制方法,其特征在于:所述步驟1的包括以下步驟:
步驟a:初始化;對(duì)于給定視頻序列,在編碼的cfg配置文件中配置固定的量化參數(shù)QP值,同時(shí)將RateControl參數(shù)設(shè)置為0,關(guān)閉碼率控制開關(guān);
步驟b:CU劃分;輸入給定視頻序列,在函數(shù)TEncCu::xCompressCU()中對(duì)當(dāng)前視頻序列的每一個(gè)LCU進(jìn)行遞歸地劃分;
步驟c:判斷是否劃分到16×16;利用劃分深度uiDepth變量是否小于3的條件,判斷當(dāng)前劃分是否到了16×16層級(jí),如小于3,則繼續(xù)劃分;否則,則證明當(dāng)前LCU已劃分到16×16層級(jí),能夠進(jìn)行下一步操作;
步驟d:判斷是否為圖像邊界;利用邊界判斷條件,判斷是否為圖像邊界,若是邊界,有可能存在邊界LCU不能被16整除的情況,則繼續(xù)向下劃分到8×8塊,然后進(jìn)行后續(xù)的預(yù)測(cè)、變換編碼過程;
步驟e:收集編碼產(chǎn)生的視頻序列的統(tǒng)計(jì)信息;重點(diǎn)是對(duì)每個(gè)LCU塊所占的比特?cái)?shù)、整個(gè)幀的比特?cái)?shù)、視頻輸出碼率、視頻失真信息的收集;其中,LCU的比特?cái)?shù)和整幀的比特?cái)?shù)信息,可以作為復(fù)雜度,在后續(xù)比特分配時(shí)使用;碼率、失真信息則可以組成(R,D)樣本點(diǎn),供后續(xù)參數(shù)的擬合使用;
步驟f:改變QP值,重復(fù)步驟a到步驟e的編碼過程,直到遍歷22、27、32、37四種QP值。
3.根據(jù)權(quán)利要求1或2所述的一種基于HEVC的Two-Pass碼率控制方法,其特征在于:所述步驟2包括比特分配、率失真模型建立和量化參數(shù)QP計(jì)算三個(gè)主要部分,具體步驟為:
步驟?。簬?jí)比特分配;在TEncRCSeq::create()函數(shù)中,根據(jù)目標(biāo)碼率和當(dāng)前序列的幀率,計(jì)算目標(biāo)比特?cái)?shù),并將目標(biāo)比特?cái)?shù)平均分配給每一幀;
步驟ⅱ:修改TEncCu::updateLCUDataISlice()函數(shù),將LCU的復(fù)雜度衡量基準(zhǔn)由原來的64個(gè)8×8的SATD和,修改為固定QP為22時(shí)步驟1中收集的LCU比特?cái)?shù),即定義文件指針變量以從文件中讀入LCU的比特?cái)?shù)信息,將函數(shù)返回值依次賦值給按光柵掃描順序排列的LCU的復(fù)雜度變量m_costIntra;
步驟ⅲ:遍歷當(dāng)前幀中的每一個(gè)LCU,將所有LCU的復(fù)雜度變量m_costIntra的累加和賦值給m_totalCostIntra變量,該變量表示當(dāng)前幀的總復(fù)雜度;
步驟ⅳ:在函數(shù)TEncRCPic::getLCUInitTargetBits()中,為每一個(gè)LCU分配比特,算式如下:
TCurrLCU=(TCurrPic-BitHeader-BitCoded)×CCurrLCU
其中,CCurrLCU為當(dāng)前LCU的復(fù)雜度,B1stCurrLCU為First-Pass中收集到的當(dāng)前LCU的比特?cái)?shù),BNotCodedLCUs為步驟1中收集到的當(dāng)前幀中未編碼LCU的比特?cái)?shù);
步驟ⅴ:使用步驟1中收集的視頻碼率、失真信息,以雙曲線R-D模型為基準(zhǔn),擬合當(dāng)前視頻序列的模型參數(shù)C、K;
步驟ⅵ:按照R-D模型和R-λ模型的對(duì)應(yīng)關(guān)系,計(jì)算R-λ模型的模型參數(shù)α、β;
步驟ⅶ:根據(jù)在線訓(xùn)練模型參數(shù)的R-λ模型,利用步驟ⅳ中為當(dāng)前LCU分配的比特?cái)?shù),計(jì)算用于當(dāng)前LCU的λ值,并檢驗(yàn)是否符合約束;
步驟ⅷ:根據(jù)步驟ⅶ中獲得的λ值以及算式QP=4.2005lnλ+13.7122中描述的λ與QP之間的關(guān)系,計(jì)算用于當(dāng)前LCU量化過程的QP值,并檢驗(yàn)是否符合約束;
步驟ⅸ:應(yīng)用步驟ⅷ中得到的QP值集,進(jìn)行完整的編碼過程,輸出比特流。