幀內(nèi)編碼的碼率控制方法
【專利摘要】本發(fā)明公開一種精確的“幀內(nèi)編碼的碼率控制方法”。涉及數(shù)字圖像和視頻編碼【技術(shù)領(lǐng)域】。本發(fā)明將一幀圖像劃分為塊組,然后利用塊組內(nèi)鄰近象素點(diǎn)間梯度的絕對(duì)值之和描述塊組的復(fù)雜度,并用編碼數(shù)據(jù)量和復(fù)雜度之比的指數(shù)模型來確定塊組的量化步長,從而實(shí)現(xiàn)塊組級(jí)別的碼率控制,達(dá)到精確控制碼率的目的。
【專利說明】幀內(nèi)編碼的碼率控制方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)字圖像和視頻編碼【技術(shù)領(lǐng)域】,尤其涉及基于塊編碼技術(shù)的圖像和視頻編碼系統(tǒng)。
【背景技術(shù)】
[0002]在科技飛速發(fā)展的今天,人們通過電子設(shè)備與網(wǎng)絡(luò)獲得資訊,加強(qiáng)彼此交流,越來越多的需要對(duì)圖像和視頻進(jìn)行存儲(chǔ)和傳輸。數(shù)字圖像和數(shù)字視頻數(shù)據(jù)量巨大,在存儲(chǔ)和傳輸時(shí)需要采用合適的編碼技術(shù)進(jìn)行圖像和視頻的壓縮以達(dá)到減少存儲(chǔ)空間和降低傳輸帶寬需求的目的。目前常用的數(shù)字圖像和視頻編碼技術(shù)中,基于塊的混合編碼技術(shù)是主流技術(shù),比如目前已得到廣泛應(yīng)用的圖像編碼標(biāo)準(zhǔn)JPEG和視頻編碼標(biāo)準(zhǔn):MPEG-1,MPEG-2/
H.262,MPEG-4, H.261,H.263,MPEG-4AVC/H.264和AVS等標(biāo)準(zhǔn)都是采用基于塊的混合編碼技術(shù)。
[0003]基于塊的混合編碼技術(shù)基本思想是先將一幅圖像或視頻序列(數(shù)字視頻可以看做是一系列圖像構(gòu)成的序列)的每幀劃分為塊,然后以塊為基本單位對(duì)圖像或視頻進(jìn)行預(yù)測(cè)編碼減少冗余度達(dá)到圖像和視頻壓縮的目的。塊通常為正方形或矩形,每個(gè)塊包含水平和垂直方向的多個(gè)連續(xù)像素點(diǎn)。塊大小在不同編碼標(biāo)準(zhǔn)中有不同的取法,可以是4X4,8X8,16X16,8X16和16X8等像素點(diǎn)。在同一編碼標(biāo)準(zhǔn)中也可以使用多種不同大小的塊。在視頻編碼中預(yù)測(cè)編碼通常分為幀內(nèi)預(yù)測(cè)和幀間預(yù)測(cè)兩大類。幀內(nèi)預(yù)測(cè)是指對(duì)當(dāng)前塊進(jìn)行編碼時(shí),只利用視頻序列的當(dāng)前編碼幀中已編碼的部分對(duì)當(dāng)前塊的值進(jìn)行預(yù)測(cè)。幀間預(yù)測(cè)指對(duì)當(dāng)前塊進(jìn)行編碼時(shí),利用視頻序列中的前后幀對(duì)當(dāng)前塊的值進(jìn)行預(yù)測(cè)?;趬K的混合編碼技術(shù)在利用幀內(nèi)預(yù)測(cè)或幀間預(yù)測(cè)取得當(dāng)前編碼塊的預(yù)測(cè)值之后,對(duì)當(dāng)前塊的值和預(yù)測(cè)值的殘差進(jìn)行變換、量化和熵編碼,以達(dá)到壓縮編碼的目的。
[0004]高效視頻編碼(HEVC)是IS0/IEC MPEG 組織和 ITU-T VCEG 組織繼 MPEG-4AVC/
H.264視頻編碼標(biāo)準(zhǔn)后最新制定的視頻編碼標(biāo)準(zhǔn),采用比MPEG-4AVC/H.264更復(fù)雜的算法,具有比MPEG-4AVC/H.264更高的編碼效率。在HEVC中采用了復(fù)雜的分層塊劃分方式。在HEVC中使用編碼樹單元(CTU)代替了傳統(tǒng)視頻編碼中采用的宏塊(MB)做為分層塊劃分的頂層單元。和傳統(tǒng)視頻編碼技術(shù)中采用固定大小的宏塊為核心編碼層不同,在HEVC中采用尺寸大小可變的CTU做為核心編碼層,CTU的尺寸大小在編碼時(shí)由編碼算法具體決定。每個(gè)CTU包含一個(gè)亮度編碼樹塊(CTB)和兩個(gè)對(duì)應(yīng)的色度CTB,亮度CTB可以是比亮度MB更大的正方形圖像區(qū)域,如64X64和32X32,也可以采用和亮度MB —樣大的正方形區(qū)域16X 16。在HEVC中做為核心編碼層的CTU被四叉樹劃分為編碼單元(CU),一個(gè)CU包含一個(gè)亮度編碼塊(CB)和兩個(gè)對(duì)應(yīng)的色度CB。每一個(gè)CU在編碼的不同步驟中將被劃分為多個(gè)預(yù)測(cè)單元(PU)或多個(gè)變換單元(TU)。每個(gè)I3U包含相應(yīng)的亮度預(yù)測(cè)塊(PB)和色度PB。每個(gè)TU包含相應(yīng)的亮度變換塊(TB)和色度TB。
[0005]在進(jìn)行圖像和視頻編碼時(shí)圖像、視頻的質(zhì)量和編碼壓縮后的數(shù)據(jù)量有相同變化的趨勢(shì),即圖像、視頻的質(zhì)量越高,編碼后的數(shù)據(jù)量越大。在實(shí)際應(yīng)用中通常對(duì)視頻的數(shù)據(jù)量有一定的限制,如網(wǎng)絡(luò)傳輸時(shí)的帶寬限制,存儲(chǔ)時(shí)存儲(chǔ)器的容量限制。因此在實(shí)際應(yīng)用中通常需要對(duì)單位時(shí)間內(nèi)編碼的數(shù)據(jù)量即碼率進(jìn)行控制以便滿足應(yīng)用需求。碼率控制是一種對(duì)編碼數(shù)據(jù)量進(jìn)行控制的方法。
[0006]現(xiàn)代視頻編碼中幀內(nèi)預(yù)測(cè)編碼幀即可以作為幀間預(yù)測(cè)編碼幀的參考幀,也可以單獨(dú)用于圖像編碼。幀內(nèi)預(yù)測(cè)編碼幀通常編碼的數(shù)據(jù)量遠(yuǎn)大于幀間預(yù)測(cè)編碼幀的數(shù)據(jù)量。因此對(duì)于幀內(nèi)預(yù)測(cè)編碼幀的碼率控制是提高視頻編碼碼率控制精確度的關(guān)鍵。但是對(duì)于最新的視頻編碼標(biāo)準(zhǔn)HEVC,目前幀內(nèi)預(yù)測(cè)編碼幀的碼率控制研究主要集中于幀級(jí)控制,即同一幀采用相同的量化步長,碼率控制精度不高,同時(shí)對(duì)于幀內(nèi)預(yù)測(cè)編碼幀的碼率模型參數(shù)通常用已編碼幀進(jìn)行預(yù)測(cè),不適合對(duì)視頻序列中的初始幀和場(chǎng)景的初始幀進(jìn)行碼率控制。
【發(fā)明內(nèi)容】
[0007]本發(fā)明的目的在于克服現(xiàn)有技術(shù)的不足,為此針對(duì)采用基于塊的混合編碼技術(shù)的圖像或視頻編碼提供一種圖像編碼或視頻幀內(nèi)預(yù)測(cè)編碼中用以確定量化步長的碼率控制方法,以達(dá)到對(duì)圖像編碼或視頻幀內(nèi)預(yù)測(cè)編碼的碼率精確控制的目的,可以有效地降低編碼器的緩存大小。
[0008]本發(fā)明技術(shù)方案概括為:
[0009]一種幀內(nèi)編碼的碼率控制方法,其特征在于,將一幀圖像劃分為塊組,然后利用塊組內(nèi)鄰近象素點(diǎn)間梯度的絕對(duì)值之和描述塊組的復(fù)雜度,并用編碼數(shù)據(jù)量和復(fù)雜度之比的指數(shù)模型來確定塊組的量化步長,從而實(shí)現(xiàn)塊組級(jí)別的碼率控制,達(dá)到精確控制碼率的目的。
[0010]以上幀內(nèi)編碼的碼率控制方法,具體步驟包括:
[0011]步驟1:開始當(dāng)前視頻幀或圖像的編碼;
[0012]步驟2:讀取視頻流的一巾貞圖像;
[0013]步驟3:將編碼圖像或視頻的當(dāng)前編碼幀劃分的塊進(jìn)行分組,每一塊組是由鄰近的塊組構(gòu)成的矩形,每一個(gè)塊組內(nèi)的塊編碼時(shí)采用相同的量化步長;
[0014]步驟4:計(jì)算視頻幀中所有塊組的復(fù)雜度,求得SGf和所有SGm。SGf通過將公式I中的M和N分別設(shè)為當(dāng)前視頻幀的水平像素點(diǎn)個(gè)數(shù)和垂直像素點(diǎn)個(gè)數(shù),然后由公式I計(jì)算求得;
[0015]步驟5:為當(dāng)前編碼的塊組分配編碼后的目標(biāo)數(shù)據(jù)量Rtm,以比特?cái)?shù)為單位。設(shè)當(dāng)前編碼塊組為第m個(gè)塊組,其目標(biāo)比特?cái)?shù)Rtm可由公式6求得;
[0016]步驟6:判斷當(dāng)前編碼塊組是否為第I個(gè)編碼塊組;如果是第I個(gè)編碼塊組則跳轉(zhuǎn)到步驟10,反之到步驟7;
[0017]步驟7:用公式3預(yù)測(cè)估計(jì)當(dāng)前模型參數(shù)am,bm取固定值;
[0018]步驟8:用公式2求得當(dāng)前塊組的量化步長Qm ;
[0019]步驟9:對(duì)當(dāng)前塊組幀內(nèi)預(yù)測(cè)編碼方法以量化步長Qm對(duì)塊組進(jìn)行編碼壓縮。然后至步驟15 ;
[0020]步驟10:對(duì)模型參數(shù)進(jìn)行固定值初始化,B1取某個(gè)固定值,Id1取另一固定值;
[0021]步驟11:用公式2求得第一個(gè)塊組的量化步長Q1 ;
[0022]步驟12:對(duì)第一個(gè)塊組相應(yīng)幀內(nèi)預(yù)測(cè)編碼方法以量化步長Q1對(duì)塊組進(jìn)行編碼壓縮;
[0023]步驟13:用公式4計(jì)算當(dāng)?shù)谝粋€(gè)塊組編碼后的實(shí)際數(shù)據(jù)量和預(yù)先分配的數(shù)據(jù)量之相對(duì)差值A(chǔ)r,然后判斷Ar是否超出預(yù)先設(shè)定的閾值Th。如果Ar大于Th則跳轉(zhuǎn)至步驟14,反之至步驟15 ;
[0024]步驟14:對(duì)第一個(gè)塊組的模型參數(shù)按照公式5進(jìn)行修正,并跳轉(zhuǎn)至步驟8重新確定量化步長;
[0025]步驟15:判斷當(dāng)前已編碼塊組是否為視頻幀內(nèi)的最后一個(gè)塊組,如果是則跳轉(zhuǎn)至步驟17,反之至步驟16 ;
[0026]步驟16:利用當(dāng)前已編碼后的塊組的實(shí)際編碼數(shù)據(jù)量Rrm求得當(dāng)前塊組實(shí)際編碼數(shù)據(jù)量和復(fù)雜度之比Y m,并用Rrm替換公式2中的Rtm后用公式2求得實(shí)際am用于后續(xù)塊組模型參數(shù)的預(yù)測(cè)估計(jì)。然后跳轉(zhuǎn)至步驟5開始對(duì)下一個(gè)塊組進(jìn)行編碼;
[0027]步驟17:轉(zhuǎn)至下一視頻幀的編碼。
[0028]與現(xiàn)有技術(shù)相比,以上技術(shù)方案體現(xiàn)出的關(guān)鍵技術(shù)特點(diǎn):
[0029]利用圖像的復(fù)雜度分配塊組目標(biāo)編碼數(shù)據(jù)量和確定塊組的量化步長進(jìn)行精確碼率控制,且不利用圖像序列中前后圖像信息。
[0030]對(duì)編碼圖像中不同的塊組可以使用不同的量化步長進(jìn)行圖像或視頻編碼。塊組可以包含視頻或圖像編碼中一個(gè)基本編碼單元或多個(gè)相鄰的基本編碼單元,如在H.264編碼標(biāo)準(zhǔn)中可以是I個(gè)或多個(gè)相鄰的宏塊,在HEVC編碼標(biāo)準(zhǔn)中可以使I個(gè)或多個(gè)CTU。
[0031]采用公式2的模型確定編碼塊組的量化步長;對(duì)公式2中的模型參數(shù)am在m大于I時(shí)用當(dāng)前塊組的左側(cè),左上側(cè)和上側(cè)緊鄰的已編碼塊組的真實(shí)Bm值和當(dāng)圖像或視頻幀中第m個(gè)塊組的實(shí)際編碼數(shù)據(jù)量和復(fù)雜度之比¥?1進(jìn)行預(yù)測(cè)估計(jì)。對(duì)公式2中的模型參數(shù)am在m大于I時(shí)用公式3進(jìn)行計(jì)算;
[0032]第I個(gè)塊組對(duì)應(yīng)說明書中公式2模型參數(shù)先采用固定值進(jìn)行初始化;如果編碼后的實(shí)際比特率和預(yù)先分配比特率之差大于預(yù)先設(shè)定的閾值,則對(duì)用說明書中公式5進(jìn)行修正,然后對(duì)第I個(gè)塊組重新編碼。
[0033]根據(jù)編碼塊組的復(fù)雜度對(duì)當(dāng)前編碼塊組目標(biāo)編碼數(shù)據(jù)量用公式6進(jìn)行分配。
【專利附圖】
【附圖說明】
[0034]圖1圖像或視頻幀內(nèi)編碼過程示意圖
[0035]圖2圖像或視頻幀的塊組劃分示意圖
[0036]圖3塊組內(nèi)像素點(diǎn)位置示意圖
[0037]圖4模型參數(shù)預(yù)測(cè)估計(jì)示意圖
[0038]圖5實(shí)施例中圖像或視頻幀內(nèi)碼率控制過程示意圖
【具體實(shí)施方式】
[0039]本發(fā)明是在視頻幀的塊組級(jí)對(duì)碼率進(jìn)行精確控制,即不同塊組可以采用不同的量化步長,因此可以實(shí)現(xiàn)精確碼率控制,同時(shí)碼率的模型參數(shù)不依賴于已編碼幀,因此適合于對(duì)視頻序列中的初始幀和場(chǎng)景的初始幀進(jìn)行碼率控制,不需要進(jìn)行場(chǎng)景變換檢測(cè)即可以實(shí)現(xiàn)精確的碼率控制。[0040]基于塊的混合圖像編碼和視頻幀內(nèi)編碼的基本編碼過程如圖1所示:
[0041]步驟1:讀取圖像或視頻數(shù)據(jù);
[0042]步驟2:將讀入的圖像或視頻的一幀劃分為塊;
[0043]步驟3:利用當(dāng)前圖像中已編碼重建的塊或已編碼塊的原圖像值對(duì)當(dāng)前要編碼的塊值進(jìn)行預(yù)測(cè);
[0044]步驟4:計(jì)算當(dāng)前塊值和預(yù)測(cè)塊值的殘差;
[0045]步驟5:對(duì)殘差進(jìn)行變換,變換通常采用離散余弦變換或類似變換;
[0046]步驟6:對(duì)變換后數(shù)據(jù)進(jìn)行量化;
[0047]步驟7:對(duì)量化后數(shù)據(jù)進(jìn)行反變換;
[0048]步驟8:將反變換后的數(shù)據(jù)和預(yù)測(cè)塊值相加;
[0049]步驟9:對(duì)相加后的值進(jìn)行圖像重建,此重建后的圖像可用于步驟3的塊值預(yù)測(cè);
[0050]步驟10:對(duì)步驟6量化后的數(shù)據(jù)進(jìn)行熵編碼,進(jìn)行無損壓縮;
[0051]步驟11:對(duì)壓縮后的數(shù)據(jù)進(jìn)行存儲(chǔ)或傳輸。
[0052]在上述基本編碼過程中有大量的編碼參數(shù)需要確定。其中和編碼后數(shù)據(jù)量或單位時(shí)間內(nèi)數(shù)據(jù)量即碼率和圖像或視頻質(zhì)量直接有關(guān)的是量化時(shí)采用的量化步長。量化步長通常通過用碼率控制方法進(jìn)行確定。
[0053]基于塊的混合編碼技術(shù)首先將編碼圖像或視頻的當(dāng)前編碼幀劃分的塊進(jìn)行分組,每一塊組是由鄰近的塊組構(gòu)成的矩形。在視頻編碼中這樣的塊組可以是一個(gè)或多個(gè)相鄰的MB,或在HEVC中是一個(gè)或多個(gè)相鄰的CTU。在本發(fā)明中每一個(gè)塊組內(nèi)的塊編碼時(shí)采用相同的量化步長。
[0054]在本發(fā)明中每一個(gè)塊組的復(fù)雜度用鄰近象素點(diǎn)間梯度的絕對(duì)值之和來描述。假設(shè)當(dāng)前編碼圖像或視頻幀中第m個(gè)塊組為水平方向包含有M個(gè)像素點(diǎn),垂直方向包含有N個(gè)像素點(diǎn)的矩形。m表示按照視頻或圖像中塊組的編碼次序第m個(gè)進(jìn)行編碼的塊組,如圖2所示。位于該塊組內(nèi)水平方向第i個(gè)位置,垂直方向第j個(gè)位置的像素點(diǎn)的取值記為如圖3所示。則第m個(gè)塊組的復(fù)雜度用SGm表示,為該塊組相鄰像素點(diǎn)間梯度的絕對(duì)值之和,由公式I求得
[0055]
【權(quán)利要求】
1.一種幀內(nèi)編碼的碼率控制方法,其特征在于,將一幀圖像劃分為塊組,然后利用塊組內(nèi)鄰近象素點(diǎn)間梯度的絕對(duì)值之和描述塊組的復(fù)雜度,并用編碼數(shù)據(jù)量和復(fù)雜度之比的指數(shù)模型來確定塊組的量化步長,從而實(shí)現(xiàn)塊組級(jí)別的碼率控制以達(dá)到精確控制碼率。
2.如權(quán)利要求1所述的幀內(nèi)編碼的碼率控制方法,其特征在于,具體步驟包括: 步驟1:開始當(dāng)前視頻幀或圖像的編碼; 步驟2:讀取視頻流的一幀圖像; 步驟3:將編碼圖像或視頻的當(dāng)前編碼幀劃分的塊進(jìn)行分組,每一塊組是由鄰近的塊組構(gòu)成的矩形,每一個(gè)塊組內(nèi)的塊編碼時(shí)采用相同的量化步長; 步驟4:計(jì)算視頻幀中所有塊組的復(fù)雜度,求得SGf和所有SGm。SGf通過將公式I中的M和N分別設(shè)為當(dāng)前視頻幀的水平像素點(diǎn)個(gè)數(shù)和垂直像素點(diǎn)個(gè)數(shù),然后由公式I計(jì)算求得;步驟5:為當(dāng)前編碼的塊組分配編碼后的目標(biāo)數(shù)據(jù)量Rtm,以比特?cái)?shù)為單位。設(shè)當(dāng)前編碼塊組為第m個(gè)塊組,其目標(biāo)比特?cái)?shù)Rtm可由公式6求得; 步驟6:判斷當(dāng)前編碼塊組是否為第I個(gè)編碼塊組;如果是第I個(gè)編碼塊組則跳轉(zhuǎn)到步驟10,反之到步驟7; 步驟7:用公式3預(yù)測(cè)估計(jì)當(dāng)前模型參數(shù)am,bm取固定值; 步驟8:用公式2求得當(dāng)前塊組的量化步長Qm ; 步驟9:對(duì)當(dāng)前塊組幀內(nèi)預(yù)測(cè)編碼方法以量化步長Qm對(duì)塊組進(jìn)行編碼壓縮;然后至步驟15 ; 步驟10:對(duì)模型參數(shù)進(jìn)行固定值初始化,B1取某個(gè)固定值,Id1取另一固定值; 步驟11:用公式2求得第一個(gè)塊組的量化步長Q1 ; 步驟12:對(duì)第一個(gè)塊組相應(yīng)幀內(nèi)預(yù)測(cè)編碼方法以量化步長Q1對(duì)塊組進(jìn)行編碼壓縮;步驟13:用公式4計(jì)算當(dāng)?shù)谝粋€(gè)塊組編碼后的實(shí)際數(shù)據(jù)量和預(yù)先分配的數(shù)據(jù)量之相對(duì)差值A(chǔ)r,然后判斷Ar是否超出預(yù)先設(shè)定的閾值Th;如果Λ r大于Th則跳轉(zhuǎn)至步驟14,反之至步驟15 ; 步驟14:對(duì)第一個(gè)塊組的模型參數(shù)按照公式5進(jìn)行修正,并跳轉(zhuǎn)至步驟8重新確定量化步長; 步驟15:判斷當(dāng)前已編碼塊組是否為視頻幀內(nèi)的最后一個(gè)塊組,如果是則跳轉(zhuǎn)至步驟17,反之至步驟16 ; 步驟16:利用當(dāng)前已編碼后的塊組的實(shí)際編碼數(shù)據(jù)量Rrm求得當(dāng)前塊組實(shí)際編碼數(shù)據(jù)量和復(fù)雜度之比Y m,并用Rrm替換公式2中的Rtm后用公式2求得實(shí)際am用于后續(xù)塊組模型參數(shù)的預(yù)測(cè)估計(jì);然后跳轉(zhuǎn)至步驟5開始對(duì)下一個(gè)塊組進(jìn)行編碼; 步驟17:轉(zhuǎn)至下一視頻幀的編碼。
【文檔編號(hào)】H04N19/146GK104038769SQ201410256674
【公開日】2014年9月10日 申請(qǐng)日期:2014年6月11日 優(yōu)先權(quán)日:2014年6月11日
【發(fā)明者】岑峰, 陸千里, 許維勝 申請(qǐng)人:同濟(jì)大學(xué)