專(zhuān)利名稱(chēng):塊組編碼結(jié)構(gòu)及基于該結(jié)構(gòu)的自適應(yīng)分階段預(yù)測(cè)編碼方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種塊組編碼結(jié)構(gòu)及基于該結(jié)構(gòu)的自適應(yīng)分階段預(yù)測(cè)編碼方法,具體來(lái)說(shuō),涉及一種屬于信號(hào)處理中視頻編解碼技術(shù)領(lǐng)域中的塊組編碼結(jié)構(gòu)及基于該結(jié)構(gòu)的自適應(yīng)分階段預(yù)測(cè)編碼方法。
背景技術(shù):
傳統(tǒng)的圖像序列編碼標(biāo)準(zhǔn),也叫做視頻編碼標(biāo)準(zhǔn),如ITU(國(guó)際電信同盟)制定的H.261,H.263,H.263+,H.264標(biāo)準(zhǔn),以及ISO(國(guó)際標(biāo)準(zhǔn)化組織)的MPEG(運(yùn)動(dòng)圖像專(zhuān)家組)制定的MPEG-1,MPEG-2,MPEG-4等都是建立在混合編碼(Hybrid Coding)框架之上的。所述的混合編碼框架是一種混合時(shí)間空間視頻圖像編碼方法,這種方法包括先進(jìn)行幀內(nèi)、幀間的預(yù)測(cè),以消除時(shí)間域的相關(guān)性;然后對(duì)原始圖像與預(yù)測(cè)結(jié)果的殘差進(jìn)行二維變換,可采用離散余弦變換或其它線性變換,消除空間相關(guān)性;然后進(jìn)行熵編碼,去除統(tǒng)計(jì)上的冗余度。
為了提高視頻信號(hào)的壓縮效率,預(yù)測(cè)是視頻編碼標(biāo)準(zhǔn)中最重要的核心技術(shù),預(yù)測(cè)方法一般分為幀內(nèi)預(yù)測(cè)和幀間預(yù)測(cè)。
在上述視頻編碼標(biāo)準(zhǔn)中,宏塊是大小為16×16的圖像像素塊,是預(yù)測(cè)及編解碼的基本單位。宏塊可以是16×16的圖像像素塊,也可以分解為兩個(gè)8×16,或兩個(gè)16×8,或四個(gè)8×8,或多個(gè)8×4,4×8,4×4等一些小的矩形塊;原始圖像是原始輸入的圖像,參考圖像是在已經(jīng)編碼并重建的幀中作為參考的圖像,可以是已經(jīng)編碼并重建的幀中的一部分,也可以是一整幀。幀間預(yù)測(cè)方法是用這些矩形塊大小的原始圖像在參考圖像中進(jìn)行運(yùn)動(dòng)估計(jì),就得到原始圖像塊的最佳匹配圖像塊作為預(yù)測(cè)結(jié)果。幀內(nèi)預(yù)測(cè)方法是在當(dāng)前編碼幀中利用需要編碼的矩形塊周?chē)呀?jīng)編碼的矩形塊,對(duì)需要編碼的矩形塊進(jìn)行預(yù)測(cè)得到的預(yù)測(cè)矩形塊作為預(yù)測(cè)結(jié)果。
因?yàn)閳D像序列信號(hào)的輸入可以分為逐行掃描的和隔行掃描的。逐行掃描的視頻信號(hào)叫做幀圖像序列,隔行掃描的視頻信號(hào)叫做場(chǎng)圖像序列。對(duì)于圖像序列中的一幅圖像,幀圖像中的宏塊叫幀宏塊,場(chǎng)圖像中的宏塊叫場(chǎng)宏塊。
故目前在視頻編碼標(biāo)準(zhǔn)中,主要存在四種預(yù)測(cè)編碼方法1、以幀宏塊為單位的預(yù)測(cè)編碼方法叫幀預(yù)測(cè)編碼方法(簡(jiǎn)稱(chēng)幀編碼),在H.261,H.263,H.263+,H.264標(biāo)準(zhǔn)以及ISO的MPEG制定的MPEG-1,MPEG-2和MPEG-4標(biāo)準(zhǔn)中都采用了幀編碼。幀編碼對(duì)于幀圖像來(lái)說(shuō)效果較好,但不適應(yīng)于場(chǎng)圖像。
2、以場(chǎng)宏塊為單位的預(yù)測(cè)編碼方法叫場(chǎng)預(yù)測(cè)編碼方法(簡(jiǎn)稱(chēng)場(chǎng)編碼),在MPEG-2,MPEG-4和H.264中采用了場(chǎng)編碼。場(chǎng)編碼對(duì)于場(chǎng)圖像來(lái)說(shuō)效果較好,但不適應(yīng)于幀圖像。
3、根據(jù)編碼代價(jià)值對(duì)每一個(gè)宏塊選擇幀編碼或場(chǎng)編碼的自適應(yīng)幀場(chǎng)預(yù)測(cè)編碼方法,在MPEG-2中采用了該編碼方法。自適應(yīng)幀場(chǎng)預(yù)測(cè)編碼方法為對(duì)視頻信號(hào)首先分別進(jìn)行幀編碼和場(chǎng)編碼,然后根據(jù)兩者的編碼代價(jià)值,決定采用幀編碼的編碼碼流還是場(chǎng)編碼的編碼碼流。這種預(yù)測(cè)編碼方法能夠同時(shí)適應(yīng)幀圖像和場(chǎng)圖像,但是這種方法是以整幀的編碼代價(jià)值為單位進(jìn)行比較選擇,因此編碼效率不高。
4、基于宏塊對(duì)的自適應(yīng)幀場(chǎng)預(yù)測(cè)編碼方法,在H.264中采用了該編碼方法。該編碼方法為先進(jìn)行基于宏塊對(duì)的幀編碼和場(chǎng)編碼,然后根據(jù)兩者的編碼代價(jià)值,決定采用基于宏塊對(duì)的幀編碼的編碼碼流還是場(chǎng)編碼的編碼碼流。這種預(yù)測(cè)編碼方法也能夠適應(yīng)幀圖像和場(chǎng)圖像,但復(fù)雜度很大。
發(fā)明內(nèi)容
本發(fā)明提供的一種塊組編碼結(jié)構(gòu)及基于該結(jié)構(gòu)的自適應(yīng)分階段預(yù)測(cè)編碼方法,利用塊組數(shù)據(jù)結(jié)構(gòu)的特點(diǎn),采用兩階段進(jìn)行預(yù)測(cè)編碼,重點(diǎn)定義預(yù)測(cè)編碼的編碼順序,這種預(yù)測(cè)編碼順序能夠充分利用數(shù)據(jù)之間的相關(guān)性,有效的提高視頻信號(hào)的壓縮效率。
為了達(dá)到上述目的,本發(fā)明提供了一種塊組編碼結(jié)構(gòu),定義M像素×N像素為塊組BG,其中,N為正偶數(shù);其包含原始?jí)K組NS和派生塊組VS;所述的原始?jí)K組NS是連續(xù)的M像素×N像素的塊組;對(duì)于逐行掃描的原始圖像,一個(gè)連續(xù)的M像素×N像素就構(gòu)成一個(gè)原始?jí)K組NS;對(duì)于隔行掃描的原始圖像,先將時(shí)間上相鄰的奇場(chǎng)和偶場(chǎng),或偶場(chǎng)和奇場(chǎng)圖像按自然空間位置拼成幀圖像,在拼成的幀圖像中的一個(gè)連續(xù)的M像素×N像素就構(gòu)成一個(gè)原始?jí)K組NS;所述的原始?jí)K組NS由原始上層塊組NS0和原始下層塊組NS1組成,該原始上層塊組NS0是原始?jí)K組的第1行~第N/2行的部分,該原始下層塊組NS1是原始?jí)K組的第N/2+1行~第N行的部分;即NS0(i,j)=BG(x,y),其中,i=x=1,......,M;j=y(tǒng)=1,......,N/2;NS1(i,j)=BG(x,y+N/2),其中,i=x=1,......,M;j=y(tǒng)=1,......,N/2;所述的原始上層塊組NS0和原始下層塊組NS1的編碼屬性均為第一階段編碼;所述的派生塊組VS是對(duì)原始?jí)K組NS進(jìn)行垂直1/2抽樣,并重新排列后得到的M像素×N像素的塊組;其包含以下2種垂直1/2抽樣過(guò)程按從上到下的順序?qū)υ級(jí)K組NS中的偶數(shù)行進(jìn)行抽樣,并將抽樣結(jié)果填充至派生塊組VS中的第1行~第N/2行,定義為派生上層塊組VS0;按從上到下的順序?qū)υ級(jí)K組NS中的奇數(shù)行進(jìn)行抽樣,并將抽樣結(jié)果填充至派生塊組VS中的第N/2+1行~第N行,定義為派生下層塊組VS1,組合得到派生塊組VS;即VS0(i,j)=NS(x,2y),其中,x=i=1,...,M;y=j(luò)=1,......,N/2;VS1(i,j)=NS(x,2y-1),其中,x=i=1,...,M;y=j(luò)=1,......,N/2;按從上到下的順序?qū)υ級(jí)K組NS中的奇數(shù)行進(jìn)行抽樣,并將抽樣結(jié)果填充至派生塊組VS中的第1行~第N/2行,定義為派生上層塊組VS0;按從上到下的順序?qū)υ級(jí)K組NS中的偶數(shù)行進(jìn)行抽樣,并將抽樣結(jié)果填充至派生塊組VS中的第N/2+1行~第N行,定義為派生下層塊組VS1,組合得到派生塊組VS;即VS0(i,j)=NS(x,2y-1),其中,x=i=1,...,M;y=j(luò)=1,......,N/2;VS1(i,j)=NS(x,2y),其中,x=i=1,...,M;y=j(luò)=1,......,N/2;所述的派生上層塊組VS0的編碼屬性為第一階段編碼,所述的派生下層塊組VS1的編碼屬性為第二階段編碼。
本發(fā)明還提供了一種基于塊組編碼結(jié)構(gòu)的自適應(yīng)分階段預(yù)測(cè)編碼方法,其包含以下步驟
步驟1、編碼過(guò)程步驟1.1、從原始圖像中獲得一個(gè)連續(xù)的M像素×N像素的當(dāng)前編碼塊組步驟1.1.1、定義所述的連續(xù)M像素×N像素的塊組為原始?jí)K組;步驟1.1.2、對(duì)所述的原始?jí)K組進(jìn)行垂直1/2的抽樣處理,并重新排列得到M像素×N像素的派生塊組;步驟1.2、對(duì)當(dāng)前編碼塊組進(jìn)行第一階段編碼步驟1.2.1、選定上述的原始?jí)K組作為當(dāng)前的塊組編碼結(jié)構(gòu),對(duì)該原始?jí)K組的編碼結(jié)構(gòu)進(jìn)行編碼,并計(jì)算其編碼代價(jià)值步驟1.2.1.1、定義該原始?jí)K組的第1行~第N/2行的部分為原始上層塊組,定義該原始?jí)K組的第N/2+1行~第N行的部分為原始下層塊組,其編碼階段屬性均屬于第一階段編碼屬性;步驟1.2.1.2、根據(jù)參考圖像,對(duì)所述的原始上層塊組和原始下層塊組進(jìn)行編碼,輸出原始上層塊組和原始下層塊組的編碼碼流;步驟1.2.1.3、分別計(jì)算原始上層塊組和原始下層塊組的編碼代價(jià)值,并計(jì)算其相加之和作為此原始?jí)K組的編碼結(jié)構(gòu)的編碼代價(jià)值;步驟1.2.2、選定上述的派生塊組作為當(dāng)前的塊組編碼結(jié)構(gòu),對(duì)該派生塊組的編碼結(jié)構(gòu)進(jìn)行編碼,并計(jì)算其編碼代價(jià)值步驟1.2.2.1、定義該派生塊組的第1行~第N/2行的部分為派生上層塊組,定義該派生塊組的第N/2+1行~第N行的部分為派生下層塊組,所述的派生上層塊組的編碼階段屬性屬于第一階段編碼屬性,所述的派生下層塊組的編碼階段屬性屬于第二階段編碼屬性;步驟1.2.2.2、根據(jù)參考圖像,對(duì)所述的派生上層塊組進(jìn)行編碼,輸出派生上層塊組的編碼碼流,并計(jì)算其編碼代價(jià)值;步驟1.2.2.3、估算所述的派生下層塊組的編碼代價(jià)值;步驟1.2.2.4、將所述的派生上層塊組和派生下層塊組的編碼代價(jià)值相加,得到此派生塊組的編碼結(jié)構(gòu)的編碼代價(jià)值;步驟1.2.3、輸出當(dāng)前編碼塊組的編碼碼流比較步驟1.2.1中得到的原始?jí)K組的編碼代價(jià)值和步驟1.2.2中得到的派生塊組的編碼代價(jià)值;若原始?jí)K組的編碼代價(jià)值小于派生塊組的編碼代價(jià)值,則輸出原始?jí)K組的編碼碼流,作為當(dāng)前編碼塊組的編碼碼流;并將編碼后的原始上層塊組和原始下層塊組重新組合,得到當(dāng)前編碼塊組的原始重建塊組,并將其填充至重建圖像的相應(yīng)位置中;若原始?jí)K組的編碼代價(jià)值大于派生塊組的編碼代價(jià)值,則輸出派生上層塊組的編碼碼流,作為當(dāng)前編碼塊組的編碼碼流;并將編碼后的派生上層塊組和未編碼的派生下層塊組重新組合,得到當(dāng)前編碼塊組的派生重建塊組;步驟1.3、循環(huán)執(zhí)行步驟1.1~步驟1.2,按順序?qū)υ紙D像中分割得到的所有塊組完成第一階段編碼,得到所有的重建塊組,包括原始重建塊組和派生重建塊組組成的重建圖像;步驟1.4、進(jìn)行第二階段編碼步驟1.4.1、根據(jù)步驟1.1的結(jié)果,按順序遍歷原始圖像中分割得到的所有塊組,判斷當(dāng)前編碼塊組的下層塊組是否進(jìn)行過(guò)第一階段編碼,若是,則執(zhí)行當(dāng)前步驟1.4.4;若否,則執(zhí)行步驟1.4.2;步驟1.4.2、以第一階段編碼時(shí)使用的參考圖像和第一階段編碼得到的重建圖像一起作為參考圖像,對(duì)當(dāng)前編碼塊組的下層塊組進(jìn)行第二階段編碼,得到當(dāng)前編碼塊組的新的派生重建塊組;步驟1.4.3、輸出經(jīng)過(guò)第二階段編碼得到的派生重建塊組的編碼碼流,并將其相應(yīng)填充至重建圖像中;步驟1.4.4、判斷原始圖像中的所有塊組是否均遍歷完成,若否,則循環(huán)執(zhí)行步驟1.4.1~步驟1.4.4,選取原始圖像中的下一個(gè)塊組為當(dāng)前編碼塊組;若是,則結(jié)束編碼過(guò)程,表明得到原始圖像當(dāng)前幀的編碼重建圖像;步驟2、解碼過(guò)程步驟2.1、從編碼重建圖像中獲得一個(gè)M像素×N像素的重建塊組作為當(dāng)前的解碼塊組;步驟2.2、對(duì)當(dāng)前解碼塊組進(jìn)行第一階段解碼步驟2.2.1、根據(jù)在編碼過(guò)程中得到的該重建塊組的編碼碼流,來(lái)判斷編碼碼流的編碼結(jié)構(gòu)和解碼塊組的類(lèi)型,若解碼塊組的編碼結(jié)構(gòu)的是原始?jí)K組,則執(zhí)行步驟2.2.2;若解碼塊組的編碼結(jié)構(gòu)是派生塊組,則執(zhí)行步驟2.2.3;步驟2.2.2、對(duì)該編碼結(jié)構(gòu)是原始?jí)K組的解碼塊組進(jìn)行解碼由于原始?jí)K組的原始上層塊組和原始下層塊組都是在第一階段進(jìn)行編碼的,故根據(jù)參考圖像,對(duì)解碼塊組的上層塊組和下層塊組在第一階段進(jìn)行解碼,得到原始解碼重建塊組,并將其填充至解碼重建圖像的相應(yīng)位置中;步驟2.2.3、對(duì)該編碼結(jié)構(gòu)是派生塊組的解碼塊組進(jìn)行解碼由于派生塊組的派生上層塊組是在第一階段進(jìn)行編碼的,派生下層塊組是在第二階段進(jìn)行編碼的,故根據(jù)參考圖像,對(duì)該解碼塊組的上層塊組進(jìn)行解碼,將解碼后的上層塊組和未解碼的下層塊組重新組合,得到派生解碼重建塊組;步驟2.3、循環(huán)執(zhí)行步驟2.1~步驟2.2,對(duì)編碼重建圖像中所有的解碼塊組完成第一階段解碼,得到第一階段解碼后的解碼重建圖像;步驟2.4、進(jìn)行第二階段解碼步驟2.4.1、按順序遍歷編碼重建圖像中分割得到的所有M像素×N像素的解碼塊組,判斷當(dāng)前解碼塊組的下層塊組是否進(jìn)行過(guò)第一階段解碼;若是,則執(zhí)行步驟2.4.3;若否,則說(shuō)明該解碼塊組是派生解碼塊組,執(zhí)行步驟2.4.2;步驟2.4.2、以第一階段解碼得到的重建圖像和第一階段解碼時(shí)使用的參考圖像為參考,對(duì)當(dāng)前派生解碼塊組的下層塊組進(jìn)行解碼,并組合得到新的派生解碼重建塊組,并將其填充至解碼重建圖像的相應(yīng)位置中;步驟2.4.3、判斷編碼重建圖像中的所有解碼塊組是否均遍歷完成,若否,則循環(huán)執(zhí)行步驟2.4.1~2.4.3;若是,則解碼過(guò)程結(jié)束,得到當(dāng)前幀的解碼重建圖像,并可將其作為解碼下一幀圖像的解碼參考幀。
本發(fā)明提供的基于塊組編碼結(jié)構(gòu)的自適應(yīng)分階段預(yù)測(cè)編碼方法,在圖像序列的編碼碼流中,包含了用來(lái)標(biāo)識(shí)哪些幅圖像采用了本方法進(jìn)行編碼的碼字。
本發(fā)明提供的基于塊組編碼結(jié)構(gòu)的自適應(yīng)分階段預(yù)測(cè)編碼方法,可以應(yīng)用于圖像序列中的某些幅圖像,而該圖像序列中的其他幅圖像可以采用該方法,也可以采用其他方法,具有良好的兼容性。
本發(fā)明提供的基于塊組編碼結(jié)構(gòu)的自適應(yīng)分階段預(yù)測(cè)編碼方法,利用塊組編碼結(jié)構(gòu)中的編碼階段屬性,對(duì)圖像的當(dāng)前幀先后分兩個(gè)階段進(jìn)行編碼重建,而第一階段編碼后的重建圖像可以作為第二階段編碼的參考圖像,這樣能有效的提高圖像第二階段編碼的效率。
本發(fā)明提供的基于塊組編碼結(jié)構(gòu)的自適應(yīng)分階段預(yù)測(cè)編碼方法,能夠結(jié)合其他各種編碼技術(shù),有效的提高圖像序列的壓縮效率。
圖1為本發(fā)明提供的塊組的結(jié)構(gòu)示意圖;圖2為本發(fā)明提供的原始?jí)K組的結(jié)構(gòu)示意圖;圖3為本發(fā)明提供的派生塊組的結(jié)構(gòu)示意圖;圖4為發(fā)明提供的基于塊組編碼結(jié)構(gòu)的自適應(yīng)分階段預(yù)測(cè)編碼方法的示意圖。
具體實(shí)施例方式
以下根據(jù)圖1~圖4,具體說(shuō)明本發(fā)明的最佳實(shí)施方法一種塊組編碼結(jié)構(gòu),定義16像素×32像素為塊組BG;本實(shí)施例中,所有的塊組為宏塊組;其包含原始宏塊組NS和派生宏塊組VS;如圖1所示,對(duì)于逐行掃描的原始圖像,一個(gè)連續(xù)的16像素×32像素就構(gòu)成一個(gè)原始宏塊組NS;對(duì)于隔行掃描的原始圖像,先將時(shí)間上相鄰的奇場(chǎng)和偶場(chǎng),或偶場(chǎng)和奇場(chǎng)圖像按自然空間位置拼成幀圖像,在拼成的幀圖像中的一個(gè)連續(xù)的16像素×32像素就構(gòu)成一個(gè)原始宏塊組NS;如圖2所示,所述的原始宏塊組NS由原始上層宏塊組NS0和原始下層宏塊組NS1組成,該原始上層宏塊組NS0是原始宏塊組NS的第1行~第16行的部分,該原始下層宏塊組NS1是原始宏塊組NS的第17行~第32行的部分;即NS0(i,j)=BG(x,y),其中,i=x=1,......,16;j=y(tǒng)=1,......,16;NS1(i,j)=BG(x,y+16),其中,i=x=1,......,16;j=y(tǒng)=1,......,16;所述的原始上層宏塊組NS0和原始下層宏塊組NS1的編碼屬性均為第一階段編碼;如圖3所示,所述的派生宏塊組VS是對(duì)原始宏塊組NS進(jìn)行垂直1/2抽樣,并重新排列后得到的16像素×32像素的塊組;其包含以下2種垂直1/2抽樣過(guò)程按從上到下的順序?qū)υ己陦K組NS中的偶數(shù)行進(jìn)行抽樣,并將抽樣結(jié)果填充至派生宏塊組VS中的第1行~第16行,定義為派生上層宏塊組VS0;按從上到下的順序?qū)υ己陦K組NS中的奇數(shù)行進(jìn)行抽樣,并將抽樣結(jié)果填充至派生宏塊組VS中的第17行~第32行,定義為派生下層宏塊組VS1,組合得到派生宏塊組VS;即VS0(i,j)=NS(x,2y),其中,x=i=1,...,16;y=j(luò)=1,......,16;VS1(i,j)=NS(x,2y-1),其中,x=i=1,...,16;y=j(luò)=1,......,16;或者可以按從上到下的順序?qū)υ己陦K組NS中的奇數(shù)行進(jìn)行抽樣,并將抽樣結(jié)果填充至派生宏塊組VS中的第1行~第16行,定義為派生上層宏塊組VS0;按從上到下的順序?qū)υ己陦K組NS中的偶數(shù)行進(jìn)行抽樣,并將抽樣結(jié)果填充至派生宏塊組VS中的第17行~第32行,定義為派生下層宏塊組VS1,組合得到派生宏塊組VS;即VS0(i,j)=NS(x,2y-1),其中,x=i=1,...,16;y=j(luò)=1,......,16;VS1(i,j)=NS(x,2y),其中,x=i=1,...,16;y=j(luò)=1,......,16;所述的派生上層宏塊組VS0的編碼屬性為第一階段編碼,所述的派生下層宏塊組VS1的編碼屬性為第二階段編碼。
本發(fā)明還提供了一種基于塊組編碼結(jié)構(gòu)的自適應(yīng)分階段預(yù)測(cè)編碼方法,其包含以下步驟步驟1、編碼過(guò)程(可參見(jiàn)圖4中的實(shí)線箭頭所描述的編碼順序)步驟1.1、從原始圖像中獲得一個(gè)連續(xù)的16像素×32像素的當(dāng)前編碼塊組步驟1.1.1、定義所述的16像素×32像素的塊組為原始宏塊組NS;步驟1.1.2、對(duì)所述的原始宏塊組進(jìn)行垂直1/2的抽樣處理,并重新排列得到16像素×32像素的派生宏塊組VS;步驟1.2、對(duì)當(dāng)前編碼塊組進(jìn)行第一階段編碼步驟1.2.1、選定上述的原始宏塊組NS作為當(dāng)前的塊組編碼結(jié)構(gòu),對(duì)該原始宏塊組的編碼結(jié)構(gòu)進(jìn)行編碼,并計(jì)算其編碼代價(jià)值步驟1.2.1.1、定義該原始宏塊組NS的第1行~第16行的部分為原始上層宏塊組NS0,定義該原始宏塊組NS的第17行~第32行的部分為原始下層宏塊組NS1,其編碼階段屬性均屬于第一階段編碼屬性;步驟1.2.1.2、根據(jù)參考圖像,對(duì)所述的原始上層宏塊組NS0和原始下層宏塊組NS1進(jìn)行編碼,輸出原始上層宏塊組NS0和原始下層宏塊組NS1的編碼碼流;步驟1.2.1.3、分別計(jì)算原始上層宏塊組NS0和原始下層宏塊組NS1的編碼代價(jià)值,并計(jì)算其相加之和作為此原始宏塊組NS的編碼結(jié)構(gòu)的編碼代價(jià)值;步驟1.2.2、選定上述的派生宏塊組VS作為當(dāng)前的塊組編碼結(jié)構(gòu),對(duì)該派生宏塊組VS的編碼結(jié)構(gòu)進(jìn)行編碼,并計(jì)算其編碼代價(jià)值步驟1.2.2.1、定義該派生宏塊組的第1行~第16行的部分為派生上層宏塊組VS0,定義該派生宏塊組的第17行~第32行的部分為派生下層宏塊組VS1,所述的派生上層宏塊組VS0的編碼階段屬性屬于第一階段編碼屬性,所述的派生下層宏塊組VS1的編碼階段屬性屬于第二階段編碼屬性;步驟1.2.2.2、根據(jù)參考圖像,對(duì)所述的派生上層宏塊組VS0進(jìn)行編碼,輸出派生上層宏塊組VS0的編碼碼流,并計(jì)算其編碼代價(jià)值;步驟1.2.2.3、估算所述的派生下層宏塊組VS1的編碼代價(jià)值;步驟1.2.2.4、將所述的派生上層宏塊組VS0和派生下層宏塊組VS1的編碼代價(jià)值相加,得到此派生宏塊組的編碼結(jié)構(gòu)的編碼代價(jià)值;步驟1.2.3、輸出當(dāng)前編碼塊組的編碼碼流比較步驟1.2.1中得到的原始宏塊組NS的編碼代價(jià)值和步驟1.2.2中得到的派生宏塊組VS的編碼代價(jià)值;若原始宏塊組NS的編碼代價(jià)值小于派生宏塊組VS的編碼代價(jià)值,則輸出原始?jí)K組NS的編碼碼流,作為當(dāng)前編碼塊組的編碼碼流;并將編碼后的原始上層宏塊組和原始下層宏塊組重新組合,得到當(dāng)前編碼塊組的原始重建宏塊組,并將其填充至重建圖像的相應(yīng)位置中;若原始宏塊組NS的編碼代價(jià)值大于派生宏塊組VS的編碼代價(jià)值,則輸出派生上層宏塊組VS0的編碼碼流,作為當(dāng)前編碼塊組的編碼碼流;并將編碼后的派生上層宏塊組和未編碼的派生下層宏塊組VS1重新組合,得到當(dāng)前編碼塊組的派生重建宏塊組;步驟1.3、循環(huán)執(zhí)行步驟1.1~步驟1.2,按順序?qū)υ紙D像中分割得到的所有宏塊組BG完成第一階段編碼,得到所有的重建塊組,包括原始重建塊組和派生重建塊組組成的重建圖像;步驟1.4、進(jìn)行第二階段編碼步驟1.4.1、根據(jù)步驟1.1的結(jié)果,按順序遍歷原始圖像中分割得到的所有宏塊組BG,判斷當(dāng)前編碼塊組的下層宏塊組是否進(jìn)行過(guò)第一階段編碼,即當(dāng)前編碼塊組是否是派生宏塊組VS的編碼結(jié)構(gòu);若是,則執(zhí)行當(dāng)前步驟1.4.4;若否,則執(zhí)行步驟1.4.2;步驟1.4.2、以第一階段編碼時(shí)使用的參考圖像和第一階段編碼得到的重建圖像一起作為參考圖像,對(duì)當(dāng)前編碼塊組的下層宏塊組進(jìn)行第二階段編碼,得到當(dāng)前編碼塊組的新的派生重建宏塊組;步驟1.4.3、輸出經(jīng)過(guò)第二階段編碼得到的派生重建宏塊組的編碼碼流,并將其相應(yīng)填充至重建圖像中;步驟1.4.4、判斷原始圖像中的所有宏塊組是否均遍歷完成,若否,則循環(huán)執(zhí)行步驟1.4.1~步驟1.4.4,選取原始圖像中的下一個(gè)宏塊組為當(dāng)前編碼塊組;若是,則結(jié)束編碼過(guò)程,表明得到原始圖像當(dāng)前幀的編碼重建圖像;步驟2、解碼過(guò)程(可參見(jiàn)圖4中的虛線箭頭所描述的解碼順序)步驟2.1、從編碼重建圖像中獲得一個(gè)16像素×32像素的重建宏塊組作為當(dāng)前的解碼塊組;步驟2.2、對(duì)當(dāng)前解碼塊組進(jìn)行第一階段解碼步驟2.2.1、根據(jù)在編碼過(guò)程中得到的該重建宏塊組的編碼碼流,來(lái)判斷編碼碼流的編碼結(jié)構(gòu)和解碼塊組的類(lèi)型,若解碼塊組的編碼結(jié)構(gòu)的是原始宏塊組NS,則執(zhí)行步驟2.2.2;若解碼塊組的編碼結(jié)構(gòu)是派生宏塊組VS,則執(zhí)行步驟2.2.3;步驟2.2.2、對(duì)該編碼結(jié)構(gòu)是原始宏塊組NS的解碼塊組進(jìn)行解碼由于原始宏塊組NS的原始上層宏塊組NS0和原始下層宏塊組NS1都是在第一階段進(jìn)行編碼的,故根據(jù)參考圖像,對(duì)解碼塊組的上層宏塊組NS0和下層宏塊組NS1在第一階段進(jìn)行解碼,得到原始解碼重建宏塊組,并將其填充至解碼重建圖像的相應(yīng)位置中;然后直接執(zhí)行步驟2.4;步驟2.2.3、對(duì)該編碼結(jié)構(gòu)是派生宏塊組VS的解碼塊組進(jìn)行解碼由于派生宏塊組VS的派生上層宏塊組VS0是在第一階段進(jìn)行編碼的,派生下層宏塊組VS1是在第二階段進(jìn)行編碼的,故根據(jù)參考圖像,對(duì)該解碼塊組的上層宏塊組VS0進(jìn)行解碼,將解碼后的上層宏塊組VS0和未解碼的下層宏塊組VS1重新組合,得到派生解碼重建宏塊組;步驟2.3、循環(huán)執(zhí)行步驟2.1~步驟2.2,對(duì)編碼重建圖像中所有的解碼宏塊組完成第一階段解碼,得到第一階段解碼后的解碼重建圖像;
步驟2.4、進(jìn)行第二階段解碼步驟2.4.1、按順序遍歷編碼重建圖像中分割得到的所有M像素×N像素的解碼宏塊組,判斷當(dāng)前解碼宏塊組的下層塊組是否進(jìn)行過(guò)第一階段解碼;若是,則執(zhí)行步驟2.4.3;若否,則說(shuō)明該解碼宏塊組是派生解碼宏塊組,執(zhí)行步驟2.4.2;步驟2.4.2、以第一階段解碼得到的重建圖像和第一階段解碼時(shí)使用的參考圖像為參考,對(duì)當(dāng)前派生解碼宏塊組的下層塊組進(jìn)行解碼,并組合得到新的派生解碼重建宏塊組,并將其填充至解碼重建圖像的相應(yīng)位置中;步驟2.4.3、判斷編碼重建圖像中的所有解碼宏塊組是否均遍歷完成,若否,則循環(huán)執(zhí)行步驟2.4.1~2.4.3;若是,則解碼過(guò)程結(jié)束,得到當(dāng)前幀的解碼重建圖像,并可將其作為解碼下一幀圖像的解碼參考幀。
本發(fā)明提供的基于塊組編碼結(jié)構(gòu)的自適應(yīng)分階段預(yù)測(cè)編碼方法,在圖像序列的編碼碼流中,包含了用來(lái)標(biāo)識(shí)哪些幅圖像采用了本方法進(jìn)行編碼的碼字。
本發(fā)明提供的基于塊組編碼結(jié)構(gòu)的自適應(yīng)分階段預(yù)測(cè)編碼方法,可以應(yīng)用于圖像序列中的某些幅圖像,而該圖像序列中的其他幅圖像可以采用該方法,也可以采用其他方法,具有良好的兼容性。
本發(fā)明提供的基于塊組編碼結(jié)構(gòu)的自適應(yīng)分階段預(yù)測(cè)編碼方法,利用塊組編碼結(jié)構(gòu)中的編碼階段屬性,對(duì)圖像的當(dāng)前幀先后分兩個(gè)階段進(jìn)行編碼重建,而第一階段編碼后的重建圖像可以作為第二階段編碼的參考圖像,這樣能有效的提高圖像第二階段編碼的效率。
本發(fā)明提供的基于塊組編碼結(jié)構(gòu)的自適應(yīng)分階段預(yù)測(cè)編碼方法,能夠結(jié)合其他各種編碼技術(shù),有效的提高圖像序列的壓縮效率。
權(quán)利要求
1.一種塊組編碼結(jié)構(gòu),定義M像素×N像素為塊組BG,其中,N為正偶數(shù);特征在于,包含原始?jí)K組NS和派生塊組VS;所述的原始?jí)K組NS是連續(xù)的M像素×N像素的塊組;所述的原始?jí)K組NS由原始上層塊組NS0和原始下層塊組NS1組成,該原始上層塊組NS0是原始?jí)K組NS的第1行~第N/2行的部分,該原始下層塊組NS1是原始?jí)K組NS的第N/2+1行~第N行的部分;即NS0(i,j)=NS(x,y),其中,i=x=1,……,M;j=y(tǒng)=1,……,N/2;NS1(i,j)=NS(x,y+N/2),其中,i=x=1,……,M;j=y(tǒng)=1,……,N/2;所述的原始上層塊組NS0和原始下層塊組NS1的編碼屬性均為第一階段編碼;所述的派生塊組VS是對(duì)原始?jí)K組NS進(jìn)行垂直1/2抽樣,并重新排列后得到的M像素×N像素的塊組;所述的派生塊組VS由派生上層塊組VS0和派生下層塊組VS1組成,該派生上層塊組VS0是派生塊組VS的第1行~第N/2行的部分,該派生下層塊組VS1是派生塊組VS的第N/2+1行~第N行的部分;所述的派生上層塊組VS0的編碼屬性為第一階段編碼,所述的派生下層塊組VS1的編碼屬性為第二階段編碼。
2.如權(quán)利要求1所述的塊組編碼結(jié)構(gòu),其特征在于,可以對(duì)原始?jí)K組NS進(jìn)行垂直1/2抽樣得到派生塊組VS按從上到下的順序?qū)υ級(jí)K組NS中的偶數(shù)行進(jìn)行抽樣,并將抽樣結(jié)果填充至派生塊組VS中的第1行~第N/2行,得到派生上層塊組VS0;按從上到下的順序?qū)υ級(jí)K組NS中的奇數(shù)行進(jìn)行抽樣,并將抽樣結(jié)果填充至派生塊組VS中的第N/2+1行~第N行,得到派生下層塊組VS1,組合得到派生塊組VS;即VS0(i,j)=NS(x,2y),其中,x=i=1,…,M;y=j(luò)=1,……,N/2;VS1(i,j)=NS(x,2y-1),其中,x=i=1,…,M;y=j(luò)=1,……,N/2。
3.如權(quán)利要求1所述的塊組編碼結(jié)構(gòu),其特征在于,也可以對(duì)原始?jí)K組NS進(jìn)行垂直1/2抽樣得到派生塊組VS按從上到下的順序?qū)υ級(jí)K組NS中的奇數(shù)行進(jìn)行抽樣,并將抽樣結(jié)果填充至派生塊組VS中的第1行~第N/2行,得到派生上層塊組VS0;按從上到下的順序?qū)υ級(jí)K組NS中的偶數(shù)行進(jìn)行抽樣,并將抽樣結(jié)果填充至派生塊組VS中的第N/2+1行~第N行,得到派生下層塊組VS1,組合得到派生塊組VS;即VS0(i,j)=NS(x,2y-1),其中,x=i=1,…,M;y=j(luò)=1,……,N/2;VS1(i,j)=NS(x,2y),其中,x=i=1,…,M;y=j(luò)=1,……,N/2。
4.如權(quán)利要求1所述的塊組編碼結(jié)構(gòu),其特征在于,所述的原始?jí)K組NS在逐行掃描的圖像中是一個(gè)連續(xù)的M像素×N像素的塊組;在隔行掃描的圖像中,先將時(shí)間上相鄰的奇場(chǎng)和偶場(chǎng),或偶場(chǎng)和奇場(chǎng)圖像按自然空間位置拼成幀圖像,所述的原始?jí)K組NS在拼成的幀圖像中是一個(gè)連續(xù)的M像素×N像素的塊組。
5.一種基于塊組編碼結(jié)構(gòu)的自適應(yīng)分階段預(yù)測(cè)編碼方法,特征在于,其包含以下步驟步驟1、編碼過(guò)程步驟1.1、從原始圖像中獲得一個(gè)連續(xù)的M像素×N像素的當(dāng)前編碼塊組步驟1.1.1、定義所述的連續(xù)M像素×N像素的塊組為原始?jí)K組;步驟1.1.2、對(duì)所述的原始?jí)K組進(jìn)行垂直1/2的抽樣處理,并重新排列得到M像素×N像素的派生塊組;步驟1.2、對(duì)當(dāng)前編碼塊組進(jìn)行第一階段編碼步驟1.2.1、選定上述的原始?jí)K組作為當(dāng)前的塊組編碼結(jié)構(gòu),對(duì)該原始?jí)K組的編碼結(jié)構(gòu)進(jìn)行編碼,并計(jì)算其編碼代價(jià)值步驟1.2.1.1、定義該原始?jí)K組的第1行~第N/2行的部分為原始上層塊組,定義該原始?jí)K組的第N/2+1行~第N行的部分為原始下層塊組,其編碼階段屬性均屬于第一階段編碼屬性;步驟1.2.1.2、根據(jù)參考圖像,對(duì)所述的原始上層塊組和原始下層塊組進(jìn)行編碼,輸出原始上層塊組和原始下層塊組的編碼碼流;步驟1.2.1.3、分別計(jì)算原始上層塊組和原始下層塊組的編碼代價(jià)值,并計(jì)算其相加之和作為此原始?jí)K組的編碼結(jié)構(gòu)的編碼代價(jià)值;步驟1.2.2、選定上述的派生塊組作為當(dāng)前的塊組編碼結(jié)構(gòu),對(duì)該派生塊組的編碼結(jié)構(gòu)進(jìn)行編碼,并計(jì)算其編碼代價(jià)值步驟1.2.2.1、定義該派生塊組的第1行~第N/2行的部分為派生上層塊組,定義該派生塊組的第N/2+1行~第N行的部分為派生下層塊組,所述的派生上層塊組的編碼階段屬性屬于第一階段編碼屬性,所述的派生下層塊組的編碼階段屬性屬于第二階段編碼屬性;步驟1.2.2.2、根據(jù)參考圖像,對(duì)所述的派生上層塊組進(jìn)行編碼,輸出派生上層塊組的編碼碼流,并計(jì)算其編碼代價(jià)值;步驟1.2.2.3、估算所述的派生下層塊組的編碼代價(jià)值;步驟1.2.2.4、將所述的派生上層塊組和派生下層塊組的編碼代價(jià)值相加,得到此派生塊組的編碼結(jié)構(gòu)的編碼代價(jià)值;步驟1.2.3、輸出當(dāng)前編碼塊組的編碼碼流比較步驟1.2.1中得到的原始?jí)K組的編碼代價(jià)值和步驟1.2.2中得到的派生塊組的編碼代價(jià)值;若原始?jí)K組的編碼代價(jià)值小于派生塊組的編碼代價(jià)值,則輸出原始?jí)K組的編碼碼流,作為當(dāng)前編碼塊組的編碼碼流;并將編碼后的原始上層塊組和原始下層塊組重新組合,得到當(dāng)前編碼塊組的原始重建塊組,并將其填充至重建圖像的相應(yīng)位置中;若原始?jí)K組的編碼代價(jià)值大于派生塊組的編碼代價(jià)值,則輸出派生上層塊組的編碼碼流,作為當(dāng)前編碼塊組的編碼碼流;并將編碼后的派生上層塊組和未編碼的派生下層塊組重新組合,得到當(dāng)前編碼塊組的派生重建塊組;步驟1.3、循環(huán)執(zhí)行步驟1.1~步驟1.2,按順序?qū)υ紙D像中分割得到的所有塊組完成第一階段編碼,得到所有的重建塊組,包括原始重建塊組和派生重建塊組組成的重建圖像;步驟1.4、進(jìn)行第二階段編碼步驟1.4.1、根據(jù)步驟1.1的結(jié)果,按順序遍歷原始圖像中分割得到的所有塊組,判斷當(dāng)前編碼塊組的下層塊組是否進(jìn)行過(guò)第一階段編碼,若是,則執(zhí)行當(dāng)前步驟1.4.4;若否,則執(zhí)行步驟1.4.2;步驟1.4.2、根據(jù)第二階段編碼的參考圖像,對(duì)當(dāng)前編碼塊組的下層塊組進(jìn)行第二階段編碼,得到當(dāng)前編碼塊組的新的派生重建塊組;步驟1.4.3、輸出經(jīng)過(guò)第二階段編碼得到的派生重建塊組的編碼碼流,并將其相應(yīng)填充至重建圖像中;步驟1.4.4、判斷原始圖像中的所有塊組是否均遍歷完成,若否,則循環(huán)執(zhí)行步驟1.4.1~步驟1.4.4,選取原始圖像中的下一個(gè)塊組為當(dāng)前編碼塊組;若是,則結(jié)束編碼過(guò)程,表明得到原始圖像當(dāng)前幀的編碼重建圖像;步驟2、解碼過(guò)程步驟2.1、從編碼重建圖像中獲得一個(gè)M像素×N像素的重建塊組作為當(dāng)前的解碼塊組;步驟2.2、對(duì)當(dāng)前解碼塊組進(jìn)行第一階段解碼步驟2.2.1、根據(jù)在編碼過(guò)程中得到的該重建塊組的編碼碼流,來(lái)判斷編碼碼流的編碼結(jié)構(gòu)和解碼塊組的類(lèi)型,若解碼塊組的編碼結(jié)構(gòu)的是原始?jí)K組,則執(zhí)行步驟2.2.2;若解碼塊組的編碼結(jié)構(gòu)是派生塊組,則執(zhí)行步驟2.2.3;步驟2.2.2、對(duì)該編碼結(jié)構(gòu)是原始?jí)K組的解碼塊組進(jìn)行解碼由于原始?jí)K組的原始上層塊組和原始下層塊組都是在第一階段進(jìn)行編碼的,故根據(jù)參考圖像,對(duì)解碼塊組的上層塊組和下層塊組在第一階段進(jìn)行解碼,得到原始解碼重建塊組,并將其填充至解碼重建圖像的相應(yīng)位置中;然后直接執(zhí)行步驟2.4;步驟2.2.3、對(duì)該編碼結(jié)構(gòu)是派生塊組的解碼塊組進(jìn)行解碼由于派生塊組的派生上層塊組是在第一階段進(jìn)行編碼的,派生下層塊組是在第二階段進(jìn)行編碼的,故根據(jù)參考圖像,對(duì)該解碼塊組的上層塊組進(jìn)行解碼,將解碼后的上層塊組和未解碼的下層塊組重新組合,得到派生解碼重建塊組;步驟2.3、循環(huán)執(zhí)行步驟2.1~步驟2.2,對(duì)編碼重建圖像中所有的解碼塊組完成第一階段解碼,得到第一階段解碼后的解碼重建圖像;步驟2.4、進(jìn)行第二階段解碼步驟2.4.1、按順序遍歷編碼重建圖像中分割得到的所有M像素×N像素的解碼塊組,判斷當(dāng)前解碼塊組的下層塊組是否進(jìn)行過(guò)第一階段解碼;若是,則執(zhí)行步驟2.4.3;若否,則說(shuō)明該解碼塊組是派生解碼塊組,執(zhí)行步驟2.4.2;步驟2.4.2、根據(jù)第二階段解碼的參考圖像,對(duì)當(dāng)前派生解碼塊組的下層塊組進(jìn)行解碼,并組合得到新的派生解碼重建塊組,并將其填充至解碼重建圖像的相應(yīng)位置中;步驟2.4.3、判斷編碼重建圖像中的所有解碼塊組是否均遍歷完成,若否,則循環(huán)執(zhí)行步驟2.4.1~2.4.3;若是,則解碼過(guò)程結(jié)束,得到當(dāng)前幀的解碼重建圖像,并可將其作為解碼下一幀圖像的解碼參考幀。
6.如權(quán)利要求5所述的基于塊組編碼結(jié)構(gòu)的自適應(yīng)分階段預(yù)測(cè)編碼方法,其特征在于,步驟1.4.2中,所述的第二階段編碼的參考圖像是第一階段編碼得到的重建圖像和第一階段編碼時(shí)使用的參考圖像。
7.如權(quán)利要求5所述的基于塊組編碼結(jié)構(gòu)的自適應(yīng)分階段預(yù)測(cè)編碼方法,其特征在于,步驟2.4.2中,所述的第二階段解碼的參考圖像是第一階段解碼得到的重建圖像和第一階段解碼時(shí)使用的參考圖像。
8.如權(quán)利要求5所述的基于塊組編碼結(jié)構(gòu)的自適應(yīng)分階段預(yù)測(cè)編碼方法,其特征在于,在圖像序列的編碼碼流中,包含了用來(lái)標(biāo)識(shí)哪些幅圖像采用了本方法進(jìn)行編碼的碼字。
全文摘要
本發(fā)明提供一種塊組編碼結(jié)構(gòu),定義M像素×N像素為塊組,包含原始?jí)K組和派生塊組;原始?jí)K組是連續(xù)的M像素×N像素的塊組;派生塊組是對(duì)原始?jí)K組進(jìn)行垂直1/2抽樣,重新排列后得到的M像素×N像素的塊組;本發(fā)明還提供一種基于塊組編碼結(jié)構(gòu)的自適應(yīng)分階段預(yù)測(cè)編碼方法,該方法的編碼過(guò)程和解碼過(guò)程根據(jù)塊組編碼結(jié)構(gòu)中的編碼階段屬性均分為兩個(gè)階段,對(duì)圖像的當(dāng)前幀先后分兩個(gè)階段進(jìn)行編解碼重建。本發(fā)明能有效的提高圖像編解碼的效率;同時(shí)能結(jié)合其他各種編碼技術(shù),有效的提高圖像序列的壓縮效率。
文檔編號(hào)H04N7/32GK1812583SQ20051002985
公開(kāi)日2006年8月2日 申請(qǐng)日期2005年9月22日 優(yōu)先權(quán)日2005年9月22日
發(fā)明者趙海武, 侯鋼, 王國(guó)中, 何蕓, 陳建文, 李國(guó)平 申請(qǐng)人:上海廣電(集團(tuán))有限公司中央研究院, 清華大學(xué)