一種精確的prores視頻編碼快速碼率控制方法
【專利摘要】本發(fā)明公開了一種精確的PRORES視頻編碼快速碼率控制方法,在給定一幀圖像目標(biāo)數(shù)據(jù)量的條件下,快速計算編碼此圖像需要的量化參數(shù)。本發(fā)明包含兩部分:1.定義一種PRORES編碼數(shù)據(jù)量的估算公式,將數(shù)據(jù)量R定義為圖像DCT系數(shù)的絕對差值和SAD的線性函數(shù),函數(shù)中的系數(shù)對每一個可能的QP都有不同的固定值,可通過查表的方式獲取。2.公開在給定的圖像目標(biāo)數(shù)據(jù)量的情況下利用該公式計算QP的方法。本發(fā)明采用了根據(jù)經(jīng)驗系數(shù)查表與理論公式結(jié)合的QP計算方式,相對目前公開的其它算法更加準(zhǔn)確且能靈活適應(yīng)多種PRORES格式;而計算過程僅需要統(tǒng)計編碼過程本身產(chǎn)生的DCT系數(shù)的SAD值,額外增加的計算量小于其它計算方法。
【專利說明】
一種精確的PRORES視頻編碼快速碼率控制方法
技術(shù)領(lǐng)域
[00011本發(fā)明涉及一種精確的PR0RES視頻編碼快速碼率控制方法。
【背景技術(shù)】
[0002] PRORES是蘋果公司(Apple Inc.)制定的一種全幀內(nèi)編碼格式的高質(zhì)量視頻編碼 系列標(biāo)準(zhǔn),包括PR0RES422 HQ,PR0RES422,PR0RES422 LT和PR0RES422 PROXY共4種格式,具 有較高的碼率且允許每幀的實際長度可變,只需要平均碼率達(dá)到蘋果標(biāo)準(zhǔn)定義的碼率。編 碼過程包含離散余弦變換變換(DCT,Discrete Cosine Transform),量化(Quantization) 和熵編碼三個主要步驟,其中,量化是唯一同時影響到編碼質(zhì)量與編碼產(chǎn)生的數(shù)據(jù)量的環(huán) 節(jié)。量化需要對每個片(片)單獨設(shè)置量化參數(shù)(QP,Quantization Parameter),量化參數(shù)的 大小同時影響到編碼后的視頻質(zhì)量和產(chǎn)生的數(shù)據(jù)量即實際碼率。增大QP會引起視頻質(zhì)量下 降同時降低碼率;減小QP會提高視頻質(zhì)量同時增大碼率。
[0003] 為了確定合適的量化參數(shù),一種常用的辦法是先用一個QP進(jìn)行實際編碼,再根據(jù) 實際產(chǎn)生的數(shù)據(jù)量來決定是否需要增加或減小QP后重新編碼。這種方式會導(dǎo)致對同一圖像 多次編碼,因此效率很低。
[0004] 大部分基于公式計算QP的方法,都假設(shè)編碼數(shù)據(jù)量是編碼圖像某種特征和量化因子 Q的函數(shù)(量子因子Q與量化參數(shù)QP具有一一對應(yīng)關(guān)系,具體對應(yīng)關(guān)系根據(jù)視頻標(biāo)準(zhǔn)的不同有 不同定義),通過計算出量化因子來得到量化參數(shù)。不同的計算方法有不同的函數(shù)定義形式, 如MPEG-4 VM8(Verification Model 8)中使用的碼率估計公式為
其 中R為數(shù)據(jù)量,MAD(Mean of absolute difference)為待編碼圖像所有象素的平均絕對差 分值,α和β為實驗得出的固定系數(shù);H.263 TMN8(Test Model,Near-Team,Version 8)中使 用的碼率估計公式〉
其中,σ為待編碼宏塊(MB, Macroblock)中6個塊(block)的象素值的均方差。在這些公式中,除了MAD,〇與Q的表現(xiàn)形 式,公式中的系數(shù)如10,262,^等對數(shù)據(jù)量1?的準(zhǔn)確性有直接影響。然而這些系數(shù)對不同 的Q的取值都是相同的,與實際的編碼結(jié)果并不完全一致,導(dǎo)致這些公式直接應(yīng)用在PRORES 編碼中效果并不理想。
[0005] 此外,這些公式在計算時使用的都是圖像原始象素值的特征,然而,PRORES編碼過 程中實際進(jìn)行熵編碼的對象并不是原始象素點的值,而是對象素點進(jìn)行離散余弦變換 (DCT,Discrete Cosine Transform)后得到的系數(shù)進(jìn)行編碼,DCT系數(shù)的統(tǒng)計特征與原始象 素點的統(tǒng)計特征并不完全一致,因此,上述這些使用圖像原始象素值進(jìn)行碼率估計的公式 得到的數(shù)據(jù)量R的準(zhǔn)確性偏低。
[0006] 最后,因為大多數(shù)視頻格式可對不同的宏塊設(shè)置不同的QP,因此這些方法在設(shè)計 時大多以宏塊為單位對QP進(jìn)行計算;而PR0RES是以片為單位(一個片包含多個MB)設(shè)置QP, 并且DCT系數(shù)的編碼方式也不同,因此,應(yīng)用這些方式到PR0RES中也會導(dǎo)致編碼后的碼率有 較大偏差,從而影響質(zhì)量。
【發(fā)明內(nèi)容】
[0007] 本發(fā)明的目的在于克服現(xiàn)有技術(shù)的不足,提供一種精確的PR0RES視頻編碼快速碼 率控制方法,在給定一幀圖像目標(biāo)數(shù)據(jù)量的條件下,快速計算編碼此圖像需要的量化參數(shù), 本發(fā)明采用根據(jù)經(jīng)驗系數(shù)查表與理論公式結(jié)合的QP計算方式,相對目前公開的其它算法更 加準(zhǔn)確且能靈活適應(yīng)多種PR0RES格式;而計算過程僅需要統(tǒng)計編碼過程本身產(chǎn)生的DCT系 數(shù)的SAD值,額外增加的計算量小于其它計算方法。因此,本發(fā)明可顯著提高PR0RES的編碼 速度且保持視頻質(zhì)量無下降。
[0008] 本發(fā)明的目的是通過以下技術(shù)方案來實現(xiàn)的:一種精確的PR0RES視頻編碼快速碼 率控制方法,它包括如下子步驟:
[0009] S100:將QPpre設(shè)置初始值為2,設(shè)置Θ = 1;轉(zhuǎn)入步驟S101;
[0010] S101:將YUV圖像進(jìn)行DCT變換,分別得到Y(jié),U,V分量的DCT系數(shù);轉(zhuǎn)入步驟S102;
[0011] S102:對圖像的所有DCT系數(shù)計算絕對值之和SADdct;轉(zhuǎn)入步驟S103;
[0012] S103:計算當(dāng)前圖像幅面大小與高清圖像大小的比伊
再對SADdct 進(jìn)行歸一化得到= 作為公式R = 9 · (aQp · SAD+f3QP)中使用的SAD值;轉(zhuǎn)入步驟 P S104;
[0013] S104:令QP' =QPpre,查表取出aQP和PQP代入公式R=0 · (aQP · SAD+0Qp)計算出IT,若 f <Rtarget,轉(zhuǎn)入步驟S105;否則,轉(zhuǎn)入步驟S107;
[0014] S105:若QP'已經(jīng)是標(biāo)準(zhǔn)允許的最小量化參數(shù),將當(dāng)前圖像的QP設(shè)為QP',轉(zhuǎn)入步驟 S109;否則,轉(zhuǎn)入步驟S106;
[0015] S106:計算ΔΙΤ ,再令QP'二卩卩'-!,查表取出aQP和0qP代入公式R = 0 · (aQP · SAD+0qp)計算出f,若f <Rtarget,轉(zhuǎn)入步驟S105;否則,計算 AR'Gf-Rterget,若 AR〃 < Af,將當(dāng)前圖像的QP設(shè)為QP',轉(zhuǎn)入步驟S109;否則,將當(dāng)前圖像的QP設(shè)為QP'+l,轉(zhuǎn)入步 驟S109;
[0016] S107:若QP'已經(jīng)是標(biāo)準(zhǔn)允許的最大量化參數(shù),將當(dāng)前圖像的QP設(shè)為QP',轉(zhuǎn)入步驟 S109;否則,轉(zhuǎn)入步驟S108;
[0017] S108:計算ΔΙΤ,再令QP'二卩卩~!,查表取出aQP和PQP代入公式R = 0 · (aQP · SAD+0Qp)計算出f,若f >Rtarget,轉(zhuǎn)入步驟S107;否則,計算 AR'kRtergeflT,若 AR〃 < A f,將當(dāng)前圖像的QP設(shè)為QP',轉(zhuǎn)入步驟S109;否則,將當(dāng)前圖像的QP設(shè)為QP'-1,轉(zhuǎn)入步 驟S109;
[0018] S109:使用得到的QP對圖像進(jìn)行編碼,并置QPpre = QP,轉(zhuǎn)入步驟S110; 1 S110:根據(jù)S109編碼得到的實際數(shù)據(jù)量Rr-與目標(biāo)數(shù)據(jù)量Rtarget,計算出ef, -^target 更新公式R=0 · (aQP · SAD+Pqp)中的θ = θΧτ;若所有圖像編碼完成,結(jié)束;否則,轉(zhuǎn)入S101 編碼下一幀圖像;
[0020] 其中QP為量化參數(shù),aQP和eQP為固定系數(shù),SAD為要使用目標(biāo)QP進(jìn)行編碼的圖像塊 的DCT系數(shù)的絕對值之和,R為預(yù)測的此圖像塊編碼后產(chǎn)生的數(shù)據(jù)量,Θ為調(diào)整系數(shù)。
[0021] 如果計算單個片的QP,則SAD為單片的SAD;如果整幀圖像使用一個QP,則SAD為整 幀圖像的SAD。
[0022] 本發(fā)明的有益效果是:本發(fā)明提供了一種精確的PR0RES視頻編碼快速碼率控制方 法,在給定一幀圖像目標(biāo)數(shù)據(jù)量的條件下,快速計算編碼此圖像需要的量化參數(shù),本發(fā)明采 用了根據(jù)經(jīng)驗系數(shù)查表與理論公式結(jié)合的QP計算方式,相對目前公開的其它算法更加準(zhǔn)確 且能靈活適應(yīng)多種PR0RES格式;而計算過程僅需要統(tǒng)計編碼過程本身產(chǎn)生的DCT系數(shù)的SAD 值,額外增加的計算量小于其它計算方法。因此,本發(fā)明可顯著提高PR0RES的編碼速度且保 持視頻質(zhì)量無下降。
【附圖說明】
[0023]圖1為使用本發(fā)明進(jìn)行幅面為1920x1080的PR0RES422 HQ格式編碼的流程圖。
【具體實施方式】
[0024]下面結(jié)合一種精確的碼率控制方式對本發(fā)明在編碼幀率為29.97,碼率為 220Mbps,視頻幅面為1920x1080的PR0RES422 HQ格式中的實施方式作進(jìn)一步的詳細(xì)說明。 流程圖如圖1所示。具體步驟如下:
[0025] S200:初始化編碼器,設(shè)置幀率為每幀標(biāo)準(zhǔn)數(shù)據(jù)量Rstand = 7340674,設(shè)置下一幀目 標(biāo)數(shù)據(jù)量心虹_ = 1^- = 7340674,設(shè)置緩沖區(qū)溢出狀態(tài)8_出。》= 0,將將0?1^設(shè)置初始值 為2,設(shè)置Θ = 1;轉(zhuǎn)入步驟S201;
[0026] S201:將YUV圖像進(jìn)行DCT變換,分別得到Y(jié),U,V分量的DCT系數(shù);轉(zhuǎn)入步驟S202;
[0027] S202:對圖像的所有DCT系數(shù)計算絕對值之和SADdct;轉(zhuǎn)入步驟S203;
[0028] S203:計算當(dāng)前圖像幅面大小與高清圖像大小的比例P=1,再對SADdct進(jìn)行歸一化 得到SAD^FSADdct,作為公式R = 9 · (aQP · SAD+0qp)中使用的SAD值;轉(zhuǎn)入步驟S204;
[0029] S204:令QP' =QPpre,查表取出aQP和0qP代入公式R=0 · (aQP · SAD+0Qp)計算出V,若 f <Rtarget,轉(zhuǎn)入步驟S205;否則,轉(zhuǎn)入步驟S207;
[0030] S205:若QP'已經(jīng)是標(biāo)準(zhǔn)允許的最小量化參數(shù),將當(dāng)前圖像的QP設(shè)為QP人轉(zhuǎn)入步驟 S209;否則,轉(zhuǎn)入步驟S206;
[0031] S206:計算 ΔΙΤ ,再令QP' =QP/-1,查表取出aQP和0qP代入公式R = 0 · (aQP · SAD+0qp)計算出f,若f <Rtarget,轉(zhuǎn)入步驟S205;否則,計算 AR'Gf-Rterget,若 AR〃 < Af,將當(dāng)前圖像的QP設(shè)為QP',轉(zhuǎn)入步驟S209;否則,將當(dāng)前圖像的QP設(shè)為QPhl,轉(zhuǎn)入步 驟S209;
[0032] S207:若QP'已經(jīng)是標(biāo)準(zhǔn)允許的最大量化參數(shù),將當(dāng)前圖像的QP設(shè)為QP',轉(zhuǎn)入步驟 S209;否則,轉(zhuǎn)入步驟S208;
[0033] S208:計算 ΔΙΤ ,再令QP' =QP/+1,查表取出aQP和0qP代入公式R = 0 · (aQP · SAD+0Qp)計算出f,若f >Rtarget,轉(zhuǎn)入步驟S207;否則,計算 AR'GRterget-lT,若 AR〃 < A f,將當(dāng)前圖像的QP設(shè)為QP',轉(zhuǎn)入步驟S209;否則,將當(dāng)前圖像的QP設(shè)為QP'-1,轉(zhuǎn)入步 驟S209;
[0034] S209:使用得到的QP對圖像進(jìn)行編碼,并置QPpre = QP,轉(zhuǎn)入步驟S210; R
[0035] S210:根據(jù)S209編碼得到的實際數(shù)據(jù)量Rreal與目標(biāo)數(shù)據(jù)量Rtarget,計算出, larger 更新公式R = 9 · (aQP · SAD+0Qp)中的θ = θΧτ;轉(zhuǎn)入S211;
[0036] S211:根據(jù)S209編碼得到的實際數(shù)據(jù)量Rreal與目標(biāo)數(shù)據(jù)量Rtarg…更新緩沖區(qū)溢出 態(tài)Boverf low - Boverf low+Rreal-Rtarget ;轉(zhuǎn)入步驟S2 12 ;
[0037] S212:更新下一幀目標(biāo)數(shù)據(jù)i 轉(zhuǎn)入步驟S213;
[0038] S213:若所有圖像編碼完成,結(jié)束編碼流程;否則,轉(zhuǎn)入S201編碼下一幀圖像.
[0039]其中QP為量化參數(shù),aQP和i3QP為固定系數(shù),SAD為要使用目標(biāo)QP進(jìn)行編碼的圖像塊 的DCT系數(shù)的絕對值之和,R為預(yù)測的此圖像塊編碼后產(chǎn)生的數(shù)據(jù)量,Θ為調(diào)整系數(shù)。
[0040]如果計算單個片的QP,則SAD為單片的SAD;如果整幀圖像使用一個QP,則SAD為整 幀圖像的SAD。
[00411本發(fā)明的公式R = 9 · (aQP · SAD+f3QP)使用了圖像DCT系數(shù)的特征而非圖像原始象 素值的特征進(jìn)行計算;式中的系數(shù),QQP和~對PR0RES的4種不同格式以及對每個QP都有不 同的取值,因此無法直接通過反函數(shù)用R和SAD計算出QP,需要通過對可能的QP進(jìn)行計算來 找到使函數(shù)值最接近R的QP。
[0042] 使用公式R=0 · (aQP · SAD+i3QP)進(jìn)行計算時,由于DCT變換是編碼過程本身需要計 算的,因此,DCT變換不產(chǎn)生額外的計算量;本發(fā)明要統(tǒng)計的圖像特征為SAD,相對于其它算 法統(tǒng)計的MAD在計算量上可視為完全相同,而相對于統(tǒng)計均方差 〇所需要的計算量則明顯下 降;相對于其它使用R和圖像特征值直接計算QP的方式,本發(fā)明需要對公式R = 9 · (aQP · SAD +β〇Ρ)進(jìn)行多次計算,然而,傳統(tǒng)的方式需要對每個宏塊進(jìn)行一次公式計算,而本發(fā)明可對一 幀圖像只計算一個QP,因此,整個圖像編碼過程中,本發(fā)明使用公式進(jìn)行計算的次數(shù)也遠(yuǎn)少 于傳統(tǒng)方法的計算次數(shù)。因此,本發(fā)明相對其它方式有更低的計算量,同時對數(shù)據(jù)量估計的 準(zhǔn)確度有了明顯提升。
[0043]此外,本發(fā)明對一幀圖像只使用一個相同的QP,這有利于對圖像進(jìn)行并行編碼,同 時相同的QP也可以使圖像各個部分的質(zhì)量都保持一致。同時,本發(fā)明也可以將一幀圖像劃 分成多個部分分別計算QP,每個圖像部分在計算QP時使用其自身的SAD值以及目標(biāo)數(shù)據(jù)量 進(jìn)行計算。
【主權(quán)項】
1. 一種精確的PRORES視頻編碼快速碼率控制方法,其特征在于:它包括如下子步驟: SlOO:將QPpre設(shè)置初始值為2,設(shè)置Θ = 1;轉(zhuǎn)入步驟SlOl; SlOl:將YUV圖像進(jìn)行DCT變換,分別得至IjY,U,V分量的DCT系數(shù);轉(zhuǎn)入步驟S102; S102:對圖像的所有DCT系數(shù)計算絕對值之和SADdrt;轉(zhuǎn)入步驟S103; S103:計算當(dāng)前圖像幅面大小與高清圖像大小的比·,再對SADdrt進(jìn)行歸 一化得到>作為公式R = 9 · (aQP · SAD+f3QP)中使用的SAD值;轉(zhuǎn)入步驟S104; S104:令QP^ =QPpre,查表取出aQP和0QP代入公式R=0 · (ciQp · SAD+0Qp)計算出f,若f < Rtarget,轉(zhuǎn)入步驟S105;否則,轉(zhuǎn)入步驟S107; S105:若QP'已經(jīng)是標(biāo)準(zhǔn)允許的最小量化參數(shù),將當(dāng)前圖像的QP設(shè)為QP',轉(zhuǎn)入步驟 Sl 09;否則,轉(zhuǎn)入步驟Sl 06; S106:計算 ΔΙΤ =Rtarget-IT,再令QP7 =QP7-I,查表取出Qqp和0QP代入公式R= Θ · (ciQp · SAD+0qp)計算出f,若f <Rtarget,轉(zhuǎn)入步驟S105;否則,計算 Δ R〃 =V -Rtarget,若 Δ R〃 < Δ V,將當(dāng)前圖像的QP設(shè)為QP7,轉(zhuǎn)入步驟S109;否則,將當(dāng)前圖像的QP設(shè)為QP7 +1,轉(zhuǎn)入步驟 S109; S107:若QP'已經(jīng)是標(biāo)準(zhǔn)允許的最大量化參數(shù),將當(dāng)前圖像的QP設(shè)為QP',轉(zhuǎn)入步驟 Sl 09;否則,轉(zhuǎn)入步驟Sl 08; S108:計算 AR' = V-Rtarget,再令 QP7 =QPhl,查表取出 Qqp 和 Pqp 代入公式 R= Θ · (ciQp · SAD+0qp)計算出f,若f >Rtarget,轉(zhuǎn)入步驟S107;否則,計算 AlT=Rtarget-IT,若 AR〃< Δ V,將當(dāng)前圖像的QP設(shè)為QP7,轉(zhuǎn)入步驟S109;否則,將當(dāng)前圖像的QP設(shè)為QP7 -1,轉(zhuǎn)入步驟 S109; S109:使用得到的QP對圖像進(jìn)行編碼,并置QPpre = QP,轉(zhuǎn)入步驟S110; SI 10:根據(jù)S109編碼得到的實際數(shù)據(jù)量Rraal與目標(biāo)數(shù)據(jù)量Rtarge3t,計算出^,更新 1^target 公式R=9 · (aQP · SAD+Pqp)中的θ = θΧτ;若所有圖像編碼完成,結(jié)束;否則,轉(zhuǎn)入SlOl編碼 下一幀圖像; 其中QP為量化參數(shù),aQP和Pqp為固定系數(shù),SAD為要使用目標(biāo)QP進(jìn)行編碼的圖像塊的DCT 系數(shù)的絕對值之和,R為預(yù)測的此圖像塊編碼后產(chǎn)生的數(shù)據(jù)量,Θ為調(diào)整系數(shù)。2. 根據(jù)權(quán)利要求1所述的一種精確的PRORES視頻編碼快速碼率控制方法,其特征在于: 如果計算單個片的QP,則SAD為單片的SAD;如果整幀圖像使用一個QP,則SAD為整幀圖像的 SAD0
【文檔編號】H04N19/625GK105898304SQ201610292191
【公開日】2016年8月24日
【申請日】2016年5月5日
【發(fā)明人】鄧云, 李慧然, 劉盾, 韓志宏
【申請人】成都索貝數(shù)碼科技股份有限公司