一種視頻編碼方法
【專(zhuān)利摘要】本發(fā)明實(shí)施例提供了一種視頻編碼方法,解決了以現(xiàn)有技術(shù)中需要反復(fù)從參考幀圖像中讀取整個(gè)運(yùn)動(dòng)搜索區(qū)域的參考圖像數(shù)據(jù),而導(dǎo)致的對(duì)存儲(chǔ)器帶寬的需求過(guò)大的問(wèn)題。該方法按照行掃描順序?qū)Υ幋a圖像中的宏塊進(jìn)行編碼;其中一個(gè)宏塊的編碼過(guò)程包括:判斷當(dāng)前宏塊的相鄰宏塊是否與當(dāng)前宏塊位于同一ROI區(qū)域/背景區(qū)域;根據(jù)所述相鄰宏塊的判斷結(jié)果對(duì)當(dāng)前宏塊進(jìn)行編碼。
【專(zhuān)利說(shuō)明】 _種視頻編碼方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及視頻編碼領(lǐng)域,特別涉及一種視頻編碼方法。
技術(shù)背景
[0002]目前的SVAC (Surveillance video and aud1 coding,安全防范監(jiān)控?cái)?shù)字視音頻編解碼)標(biāo)準(zhǔn)中,提供了兩種獲取當(dāng)前宏塊預(yù)測(cè)數(shù)據(jù)的方法,分別為幀內(nèi)預(yù)測(cè)方法和幀間預(yù)測(cè)方法。其中,幀間預(yù)測(cè)方法需要根據(jù)參考幀圖像中一定運(yùn)動(dòng)搜索區(qū)域內(nèi)的最佳匹配宏塊的數(shù)據(jù),獲取當(dāng)前宏塊的預(yù)測(cè)數(shù)據(jù)。由于一些宏塊的運(yùn)動(dòng)搜索區(qū)域可能重疊,因此這些些宏塊可以共享運(yùn)動(dòng)搜索區(qū)域數(shù)據(jù)。
[0003]然而以現(xiàn)有的編碼方式在對(duì)一幀圖像進(jìn)行編碼之前,要先識(shí)別待編碼圖像中的ROI區(qū)域(Reg1n Of Interest,感興趣區(qū)域)和背景區(qū)域,并將ROI區(qū)域和背景區(qū)域分別劃分為多個(gè)條帶。然后先分別對(duì)待編碼圖像中的ROI區(qū)域進(jìn)行編碼,再對(duì)背景區(qū)域進(jìn)行編碼。這樣當(dāng)單獨(dú)針對(duì)一個(gè)ROI區(qū)域采用幀間預(yù)測(cè)進(jìn)行編碼時(shí),ROI區(qū)域邊界的宏塊無(wú)法共享與該ROI區(qū)域相鄰的背景宏塊的運(yùn)動(dòng)搜索區(qū)域數(shù)據(jù),因而需要再單獨(dú)讀取參考幀圖像中整個(gè)運(yùn)動(dòng)搜索區(qū)域數(shù)據(jù)以獲取幀間預(yù)測(cè)數(shù)據(jù)。同樣的推理也適用于背景區(qū)域的邊界宏塊。
[0004]圖1為現(xiàn)有技術(shù)所提供的一幀圖像的條帶構(gòu)成示意圖。如圖1所示,在該幀圖像中有兩個(gè)ROI區(qū)域,其中一個(gè)ROI區(qū)域由B1、B2、B3、B4和B5條帶組成,另一個(gè)由B6條帶組成。背景區(qū)域則被分為A、C、D、E、F、G、H、1、J、K及L條帶。
[0005]例如,圖1中的ROI區(qū)域條帶B4與背景區(qū)域條帶F相鄰,這樣B4最左側(cè)宏塊肯定存在與背景區(qū)域條帶F最右側(cè)宏塊重疊的運(yùn)動(dòng)搜索區(qū)域。但當(dāng)采用現(xiàn)有的編碼方式單獨(dú)對(duì)條帶B4所屬的ROI區(qū)域進(jìn)行編碼時(shí),由于無(wú)法調(diào)用背景區(qū)域條帶F最右側(cè)宏塊的重疊運(yùn)動(dòng)搜索區(qū)域,因而不得不單獨(dú)從參考幀圖像中讀取整個(gè)運(yùn)動(dòng)搜索區(qū)域數(shù)據(jù)進(jìn)行幀間預(yù)測(cè)。
[0006]由此可見(jiàn),現(xiàn)有的編碼方式在硬件的實(shí)現(xiàn)過(guò)程中,由于要反復(fù)從參考幀圖像中讀取整個(gè)運(yùn)動(dòng)搜索區(qū)域數(shù)據(jù),因而對(duì)存儲(chǔ)器帶寬的需求較高,并且控制比較復(fù)雜。此外,這樣先對(duì)ROI區(qū)域進(jìn)行編碼再對(duì)背景區(qū)域進(jìn)行編碼,由于ROI區(qū)域并不連續(xù),因此需要根據(jù)ROI區(qū)域的設(shè)置來(lái)計(jì)算下一個(gè)ROI區(qū)域宏塊的位置,控制也比較復(fù)雜。
【發(fā)明內(nèi)容】
[0007]有鑒于此,本發(fā)明實(shí)施例提供了一種視頻編碼方法,解決了現(xiàn)有技術(shù)中需要反復(fù)從參考幀圖像中讀取整個(gè)運(yùn)動(dòng)搜索區(qū)域的參考圖像數(shù)據(jù)以進(jìn)行幀間預(yù)測(cè),而導(dǎo)致的對(duì)存儲(chǔ)器帶寬的需求過(guò)大的問(wèn)題。
[0008]本發(fā)明實(shí)施例提供的一種視頻編碼方法,按照行掃描順序?qū)Υ幋a圖像中的宏塊進(jìn)行編碼;其中一個(gè)宏塊的編碼過(guò)程中獲取預(yù)測(cè)數(shù)據(jù)的過(guò)程包括:
[0009]判斷當(dāng)前宏塊的相鄰宏塊是否與當(dāng)前宏塊位于同一 ROI區(qū)域/背景區(qū)域;根據(jù)所述相鄰宏塊的判斷結(jié)果對(duì)當(dāng)前宏塊進(jìn)行編碼。
[0010]本發(fā)明實(shí)施例提供的一種視頻編碼方法,以行掃描方式對(duì)待編碼圖像中的宏塊進(jìn)行編碼;這樣無(wú)論待編碼圖像中有幾個(gè)ROI區(qū)域以及條帶構(gòu)成結(jié)構(gòu)如何,每個(gè)宏塊都可調(diào)用已存儲(chǔ)的其運(yùn)動(dòng)搜索區(qū)域與另一宏塊運(yùn)動(dòng)搜索區(qū)域的重疊部分?jǐn)?shù)據(jù),而不用從參考幀圖像中讀取整個(gè)運(yùn)動(dòng)搜索區(qū)域的數(shù)據(jù)進(jìn)行幀間預(yù)測(cè);從而減少了采用幀間預(yù)測(cè)編碼時(shí)的數(shù)據(jù)讀取量,降低了硬件實(shí)現(xiàn)過(guò)程中對(duì)存儲(chǔ)器帶寬的需求。
【專(zhuān)利附圖】
【附圖說(shuō)明】
[0011]圖1為現(xiàn)有技術(shù)所提供的一幀圖像的條帶構(gòu)成示意圖。
[0012]圖2所示為本發(fā)明一實(shí)施例所提供的視頻編碼方法中獲取預(yù)測(cè)數(shù)據(jù)的流程示意圖。
[0013]圖3所示為本發(fā)明一實(shí)施例所提供的當(dāng)前宏塊與相鄰宏塊的空間位置關(guān)系示意圖。
[0014]圖4所示為本發(fā)明一實(shí)施例所提供的視頻編碼方法中熵編碼過(guò)程的流程示意圖。
[0015]圖5所示為本發(fā)明一實(shí)施例所提供的視頻編碼方法的硬件實(shí)現(xiàn)示意圖。
【具體實(shí)施方式】
[0016]為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步的詳細(xì)描述。
[0017]圖2所示為本發(fā)明一實(shí)施例所提供的視頻編碼方法的流程示意圖。該視頻編碼方法為按照行掃描順序?qū)Υ幋a圖像中的宏塊進(jìn)行編碼。如圖2所示,其中一個(gè)宏塊的編碼過(guò)程中獲取預(yù)測(cè)數(shù)據(jù)的過(guò)程包括:
[0018]步驟201:判斷當(dāng)前宏塊的相鄰宏塊是否與當(dāng)前宏塊位于同一 ROI區(qū)域/背景區(qū)域。
[0019]在本發(fā)明一實(shí)施例中,該相鄰宏塊的判斷過(guò)程可以通過(guò)獲取當(dāng)前宏塊的相鄰宏塊參數(shù)完成。其中,當(dāng)一相鄰宏塊的判斷結(jié)果為是時(shí),將與該相鄰宏塊對(duì)應(yīng)的相鄰宏塊參數(shù)賦值為I;否則,將與該相鄰宏塊對(duì)應(yīng)的相鄰宏塊參數(shù)賦值為O。
[0020]圖3所示為本發(fā)明一實(shí)施例所提供的當(dāng)前宏塊與相鄰宏塊的空間位置關(guān)系示意圖。如圖3所示,當(dāng)前宏塊E的相鄰宏塊包括:當(dāng)前宏塊的上邊宏塊B、左邊宏塊A、右上宏塊C和左上宏塊D。此時(shí)當(dāng)通過(guò)獲取當(dāng)前宏塊E的相鄰宏塊參數(shù)完成判斷過(guò)程時(shí),該相鄰宏塊參數(shù)可包括:
[0021]topmbofslice:用于表示當(dāng)前塊的上邊塊B是否與當(dāng)前宏塊E位于同一 ROI區(qū)域/背景區(qū)域;當(dāng)上邊塊B的判斷結(jié)果為是時(shí),將topmbofslice賦值為I ;否則,將topmbofslice 賦值為 O。
[0022]Ieftmbofslice:用于表示當(dāng)前塊的左邊塊A是否與當(dāng)前宏塊E位于同一 ROI區(qū)域/背景區(qū)域;當(dāng)左邊塊A的判斷結(jié)果為是時(shí),將Ieftmbofslice賦值為I ;否則,將Ieftmbofslice 賦值為 O。
[0023]trmbofslice:用于表示當(dāng)前塊的右上邊塊C是否與當(dāng)前宏塊E位于同一 ROI區(qū)域/背景區(qū)域;當(dāng)右上邊塊C的判斷結(jié)果為是時(shí),將trmbofslice賦值為I ;否則,將trmbofslice 賦值為 O。
[0024]tlmbofslice:用于表示當(dāng)前塊的左上邊塊D是否與當(dāng)前宏塊E位于同一 ROI區(qū)域/背景區(qū)域;當(dāng)左上邊塊D的判斷結(jié)果為是時(shí),將tlmbofslice賦值為I ;否則,將t Imbofs I ice 賦值為 O。
[0025]步驟202:根據(jù)所述相鄰宏塊的判斷結(jié)果對(duì)當(dāng)前宏塊進(jìn)行編碼。其中該編碼過(guò)程可為幀內(nèi)編碼和/或幀間編碼。
[0026]對(duì)于幀間編碼,根據(jù)相鄰宏塊參數(shù)以及運(yùn)動(dòng)搜索得到預(yù)測(cè)數(shù)據(jù)。在進(jìn)行運(yùn)動(dòng)搜索時(shí),調(diào)用一宏塊的與當(dāng)前宏塊運(yùn)動(dòng)搜索區(qū)域重疊的運(yùn)動(dòng)搜索區(qū)域數(shù)據(jù)作為當(dāng)前宏塊運(yùn)動(dòng)搜索區(qū)域數(shù)據(jù)的一部分;讀取參考幀圖像數(shù)據(jù)以補(bǔ)齊當(dāng)前宏塊余下的運(yùn)動(dòng)搜索區(qū)域數(shù)據(jù)。預(yù)測(cè)數(shù)據(jù)包括編碼模式、預(yù)測(cè)樣點(diǎn)數(shù)據(jù)和預(yù)測(cè)運(yùn)動(dòng)矢量。
[0027]由于采用行掃描順序以宏塊為單位進(jìn)行編碼,因此對(duì)待編碼圖像中宏塊的編碼過(guò)程是連續(xù)的。即使當(dāng)前宏塊為一個(gè)ROI區(qū)域/背景區(qū)域的邊界宏塊,也可以調(diào)用其相鄰宏塊的運(yùn)動(dòng)搜索區(qū)域數(shù)據(jù)作為當(dāng)前宏塊運(yùn)動(dòng)搜索區(qū)域數(shù)據(jù)的一部分。
[0028]以圖3為例,當(dāng)前宏塊E與相鄰宏塊A由于位置相鄰,二者的運(yùn)動(dòng)搜索區(qū)域也必然有所重疊。當(dāng)采用行掃描進(jìn)行編碼時(shí),由于相鄰宏塊A的運(yùn)動(dòng)搜索區(qū)域數(shù)據(jù)已被保存,因此在對(duì)當(dāng)前宏塊E進(jìn)行編碼時(shí),可直接調(diào)用該已保存的相鄰宏塊A的運(yùn)動(dòng)搜索區(qū)域數(shù)據(jù)作為宏塊E的運(yùn)動(dòng)搜索區(qū)域數(shù)據(jù)的一部分,然后再讀取參考幀圖像數(shù)據(jù)以補(bǔ)齊當(dāng)前宏塊E的運(yùn)動(dòng)搜索區(qū)域數(shù)據(jù)。這樣待編碼圖像中的每個(gè)宏塊都可以利用其運(yùn)動(dòng)搜索區(qū)域與另一個(gè)宏塊運(yùn)動(dòng)搜索區(qū)域的重疊部分?jǐn)?shù)據(jù)進(jìn)行幀間預(yù)測(cè)。而不用從參考幀圖像中讀取整個(gè)運(yùn)動(dòng)搜索區(qū)域的數(shù)據(jù)進(jìn)行幀間預(yù)測(cè);從而減少了采用幀間預(yù)測(cè)編碼時(shí)的數(shù)據(jù)讀取量,降低了硬件實(shí)現(xiàn)過(guò)程中對(duì)存儲(chǔ)器帶寬的需求。
[0029]之后,根據(jù)當(dāng)前宏塊的運(yùn)動(dòng)搜索區(qū)域數(shù)據(jù)進(jìn)行幀間預(yù)測(cè),獲取當(dāng)前宏塊的預(yù)測(cè)數(shù)據(jù)。具體過(guò)程為:在當(dāng)前宏塊的運(yùn)動(dòng)搜索區(qū)域數(shù)據(jù)中選取與當(dāng)前宏塊最匹配的參考?jí)K數(shù)據(jù);然后利用該參考?jí)K數(shù)據(jù)獲取當(dāng)前宏塊的預(yù)測(cè)數(shù)據(jù)。
[0030]對(duì)于幀內(nèi)編碼,可將步驟201中得到的相鄰宏塊參數(shù)topmbofslice、leftmbofslice、tlbofslice、trmbofslice直接代入SVAC標(biāo)準(zhǔn)進(jìn)行幀內(nèi)預(yù)測(cè)得到預(yù)測(cè)數(shù)據(jù),而不用區(qū)分當(dāng)前宏塊位于哪個(gè)ROI區(qū)域/背景區(qū)域。預(yù)測(cè)數(shù)據(jù)包括編碼模式和預(yù)測(cè)樣點(diǎn)數(shù)據(jù)。
[0031]本領(lǐng)域技術(shù)人員可以理解,在按行掃描順序以宏塊為單位進(jìn)行編碼時(shí),其中一個(gè)宏塊的編碼過(guò)程既可以采用幀內(nèi)預(yù)測(cè)獲取預(yù)測(cè)數(shù)據(jù),也可以采用幀間預(yù)測(cè)獲取預(yù)測(cè)數(shù)據(jù),本發(fā)明對(duì)此不做限定。
[0032]在通過(guò)幀內(nèi)預(yù)測(cè)和/或幀間預(yù)測(cè)獲取到當(dāng)前宏塊的預(yù)測(cè)數(shù)據(jù)后,根據(jù)該預(yù)測(cè)樣點(diǎn)數(shù)據(jù)與當(dāng)前宏塊數(shù)據(jù)的差值即可獲取當(dāng)前宏塊的殘差數(shù)據(jù)。在將殘差數(shù)據(jù)進(jìn)行變換量化后,根據(jù)該殘差數(shù)據(jù)即可對(duì)當(dāng)前宏塊進(jìn)行編碼以獲得當(dāng)前宏塊的編碼碼流。
[0033]在本發(fā)明另一實(shí)施例中,殘差數(shù)據(jù)先按照SVAC標(biāo)準(zhǔn)進(jìn)行重組,然后再被用于后續(xù)的編碼過(guò)程。
[0034]在本發(fā)明一實(shí)施例中,根據(jù)殘差數(shù)據(jù)對(duì)當(dāng)前宏塊進(jìn)行編碼的過(guò)程為一個(gè)熵編碼過(guò)程。
[0035]圖4所示為本發(fā)明一實(shí)施例所提供的視頻編碼方法中熵編碼過(guò)程的流程示意圖。如圖4所示,該熵編碼過(guò)程包括:
[0036]步驟401:判斷當(dāng)前宏塊是否為當(dāng)前ROI區(qū)域/背景區(qū)域的第一個(gè)宏塊;如果判斷為是,則計(jì)算并存儲(chǔ)當(dāng)前ROI區(qū)域/背景區(qū)域的熵編碼參數(shù),執(zhí)行步驟402 ;如果判斷為否,則獲取已存儲(chǔ)的與當(dāng)前宏塊所屬ROI區(qū)域/背景區(qū)域相對(duì)應(yīng)的熵編碼參數(shù),執(zhí)行步驟402。
[0037]由于熵編碼過(guò)程中每個(gè)ROI區(qū)域或背景區(qū)域都有一套自己的熵編碼參數(shù),因此只有獲取了相應(yīng)熵編碼參數(shù)才能進(jìn)行后續(xù)的熵編碼過(guò)程。此時(shí),在采用行掃描方式進(jìn)行熵編碼時(shí),要首先判斷當(dāng)前宏塊是否為一個(gè)ROI區(qū)域/背景區(qū)域的第一個(gè)宏塊。如果判斷當(dāng)前宏塊為一個(gè)ROI區(qū)域/背景區(qū)域的第一個(gè)宏塊,由于此時(shí)并沒(méi)有存儲(chǔ)該ROI區(qū)域/背景區(qū)域的熵編碼參數(shù),因此需要計(jì)算該ROI區(qū)域/背景區(qū)域的熵編碼參數(shù)。如果當(dāng)前宏塊不是當(dāng)前ROI區(qū)域/背景區(qū)域的第一個(gè)宏塊,則直接從已存儲(chǔ)的熵編碼參數(shù)中獲取當(dāng)前ROI區(qū)域/背景區(qū)域的熵編碼參數(shù)即可。
[0038]在本發(fā)明一實(shí)施例中,還可以獲取當(dāng)前宏塊的宏塊位置參數(shù)firstmbofslilce ;其中,當(dāng)前宏塊為當(dāng)前ROI區(qū)域/背景區(qū)域的第一個(gè)宏塊時(shí),將該宏塊位置參數(shù)firstmbofslilce賦值為I ;否則,將該宏塊位置參數(shù)firstmbofslilce賦值為O。
[0039]步驟402:根據(jù)當(dāng)前宏塊的所述殘差數(shù)據(jù)和所述熵編碼參數(shù)對(duì)該當(dāng)前宏塊進(jìn)行熵編碼,并存儲(chǔ)當(dāng)前ROI區(qū)域/背景區(qū)域的熵編碼參數(shù)。
[0040]在本發(fā)明一實(shí)施例中,可以獲取當(dāng)前宏塊的宏塊位置參數(shù)Ieftmbofslice和topmbofslice,這兩個(gè)參數(shù)前面已經(jīng)描述,用這兩個(gè)參數(shù)所表示的相鄰信息來(lái)進(jìn)行熵編碼。
[0041]步驟403:判斷當(dāng)前宏塊是否為當(dāng)前ROI區(qū)域/背景區(qū)域的最后一個(gè)宏塊;如果判斷為是,則執(zhí)行步驟404 ;如果判斷為否,則返回步驟401開(kāi)始按照行掃描順序?qū)ο乱粋€(gè)宏塊進(jìn)行判斷和編碼。
[0042]在本發(fā)明一實(shí)施例中,還可以獲取當(dāng)前宏塊的宏塊位置參數(shù)Iastmbofslice ;其中,當(dāng)前宏塊為當(dāng)前ROI區(qū)域/背景區(qū)域的最后一個(gè)宏塊時(shí),將該宏塊位置參數(shù)Iastmbofslice賦值為I ;否則,將該宏塊位置參數(shù)Iastmbofslice賦值為O。此時(shí)根據(jù)宏塊位置參數(shù)Iastmbofslice的值即可完成步驟403的判斷過(guò)程。
[0043]步驟404:判斷當(dāng)前宏塊是否為當(dāng)前待編碼圖像的最后一個(gè)宏塊;如果判斷為是,則結(jié)束當(dāng)前待編碼圖像的編碼;如果判斷為否,則返回步驟401開(kāi)始按照行掃描順序?qū)ο乱粋€(gè)宏塊進(jìn)行判斷和編碼。
[0044]在本發(fā)明一實(shí)施例中,還可以獲取當(dāng)前宏塊的宏塊位置參數(shù)Iastmbofpic ;其中,當(dāng)前宏塊為當(dāng)前待編碼圖像的最后一個(gè)宏塊時(shí),將該宏塊位置參數(shù)Iastmbofpic賦值為I ;否則,將該宏塊位置參數(shù)Iastmbofpic賦值為O。此時(shí)根據(jù)宏塊位置參數(shù)Iastmbofpic的值即可完成步驟404的判斷過(guò)程。
[0045]在本發(fā)明一實(shí)施例中,熵編碼的具體形式為上下文自適應(yīng)二進(jìn)制算術(shù)編碼(CABAC)。因此每次對(duì)一個(gè)ROI區(qū)域/背景區(qū)域內(nèi)的宏塊進(jìn)行熵編碼時(shí),都要獲取符合CABAC上下文模型的算術(shù)編碼器計(jì)算參數(shù)作為熵編碼參數(shù)。
[0046]在本發(fā)明一實(shí)施例中,當(dāng)以行掃描順序完成了對(duì)待編碼圖像的編碼后,由于待編碼圖像中的ROI區(qū)域和背景區(qū)域可能是不連續(xù)的,因此所得到的待編碼圖像中某一 ROI區(qū)域/背景區(qū)域的編碼碼流也可能是不連續(xù)的。此時(shí),在完成對(duì)當(dāng)前宏塊的編碼獲得編碼碼流后,可為當(dāng)前宏塊的編碼碼流加上與當(dāng)前宏塊所屬ROI區(qū)域/背景區(qū)域相對(duì)應(yīng)的指示符,并將帶有指示符的編碼碼流寫(xiě)入臨時(shí)存儲(chǔ)單元。然后在按照行掃描順序?qū)Υ幋a圖像中的所有宏塊編碼完畢后,再?gòu)脑撆R時(shí)存儲(chǔ)單元中讀取編碼碼流,并根據(jù)指示符拼接屬于同一個(gè)ROI區(qū)域/背景區(qū)域的編碼碼流。這樣就可以將屬于同一個(gè)ROI區(qū)域/背景區(qū)域的編碼碼流拼接為一個(gè)整體,并將該經(jīng)過(guò)重新拼接的編碼碼流作為最終的待編碼圖像的編碼碼流進(jìn)行儲(chǔ)存。
[0047]在本發(fā)明一實(shí)施例中,還可以獲取當(dāng)前宏塊所屬ROI區(qū)域/背景區(qū)域的區(qū)域標(biāo)記參數(shù)sliCe_num,用于表示該ROI區(qū)域/背景區(qū)域未待編碼圖像中的第幾個(gè)區(qū)域;并根據(jù)區(qū)域標(biāo)記參數(shù)slice_num為當(dāng)前宏塊的編碼碼流加上指示符。
[0048]在本發(fā)明一實(shí)施例中,帶有指示符的編碼碼流的一個(gè)數(shù)據(jù)包的大小為64bit,其中所述指示符的大小為4bit。
[0049]在本發(fā)明另一實(shí)施例中,為了進(jìn)一步簡(jiǎn)化該視頻編碼方法的硬件實(shí)現(xiàn)結(jié)構(gòu),可以在對(duì)當(dāng)前宏塊進(jìn)行編碼之前,先一次性獲取當(dāng)前宏塊的所有相鄰宏塊參數(shù)、所有宏塊位置參數(shù)和區(qū)域標(biāo)記參數(shù)。
[0050]此時(shí),根據(jù)所獲取的當(dāng)前宏塊的所有參數(shù),即可完成對(duì)相鄰宏塊是否與當(dāng)前宏塊屬于同一 ROI區(qū)域/背景區(qū)域的判斷;完成當(dāng)前宏塊是否為當(dāng)前ROI區(qū)域/背景區(qū)域的第一個(gè)宏塊或最后一個(gè)宏塊的判斷,以獲取當(dāng)前宏塊的熵編碼參數(shù);根據(jù)所述定位參數(shù)中當(dāng)前宏塊所屬ROI區(qū)域/背景區(qū)域的標(biāo)記,為當(dāng)前宏塊的編碼碼流加上指示符。
[0051]圖5所示為本發(fā)明一實(shí)施例所提供的視頻編碼方法的硬件實(shí)現(xiàn)示意圖。其中實(shí)線連接線表示現(xiàn)有的模塊連接關(guān)系,虛線連接線表示采用本發(fā)明所提供的視頻編碼方法后新加的模塊連接關(guān)系。如圖5所示,該硬件包括:
[0052]宏塊定位模塊(MBlct),用于獲取當(dāng)前宏塊(Fn (current))的所有相鄰宏塊參數(shù)、所有宏塊位置參數(shù)和區(qū)域標(biāo)記參數(shù);
[0053]商編碼模塊(Entropy Encode),用于完成對(duì)當(dāng)前宏塊的j:商編碼過(guò)程;
[0054]摘編碼后處理模塊(Stream post-process),用于拼接屬于同一ROI區(qū)域/背景區(qū)域的編碼碼流;
[0055]運(yùn)動(dòng)估計(jì)模塊(ME),用于根據(jù)當(dāng)前宏塊的運(yùn)動(dòng)搜索區(qū)域數(shù)據(jù)進(jìn)行幀間預(yù)測(cè),獲得預(yù)測(cè)數(shù)據(jù);
[0056]幀內(nèi)預(yù)測(cè)模塊(Intra Predict1n),用于對(duì)當(dāng)前宏塊進(jìn)行幀內(nèi)預(yù)測(cè),獲得預(yù)測(cè)數(shù)據(jù);
[0057]變換模塊(T)和反變換模塊(Γ1),分別用于對(duì)當(dāng)前宏塊的殘差數(shù)據(jù)進(jìn)行變換和反變換處理;
[0058]量化模塊(Q)和反量化模塊(Q—1),分別用于對(duì)當(dāng)前宏塊的殘差數(shù)據(jù)進(jìn)行量化和反量化處理;
[0059]重組模塊(reorder),用于對(duì)當(dāng)前宏塊的經(jīng)變換量化的殘差數(shù)據(jù)按照SVAC進(jìn)行重組;
[0060]濾波模塊(Filter),用于根據(jù)經(jīng)反變換和反量化的殘差數(shù)據(jù)以及當(dāng)前宏塊所有獲取的參數(shù)進(jìn)行濾波處理得到重建圖像(F’n(reconstructed)),該重建圖像可用作運(yùn)動(dòng)估計(jì)中的參考幀圖像。
[0061]由此可見(jiàn),僅需在現(xiàn)有的模塊連接關(guān)系中引入宏塊定位模塊(MBlct)以獲取當(dāng)前宏塊的所有參數(shù),并將這些參數(shù)分別發(fā)送給運(yùn)動(dòng)估計(jì)模塊(ME)、幀內(nèi)預(yù)測(cè)模塊(IntraPredict1n)、濾波模塊(Filter)、j:商編碼模塊(Entropy Encode)即可完成本發(fā)明實(shí)施例所提供的視頻編碼方法。其他各模塊的現(xiàn)有連接方式均不用做任何改動(dòng),硬件實(shí)現(xiàn)起來(lái)更加簡(jiǎn)潔。
[0062]以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
【權(quán)利要求】
1.一種視頻編碼方法,其特征在于,按照行掃描順序?qū)Υ幋a圖像中的宏塊進(jìn)行編碼;其中一個(gè)宏塊的編碼過(guò)程包括: 判斷當(dāng)前宏塊的相鄰宏塊是否與當(dāng)前宏塊位于同一 ROI區(qū)域/背景區(qū)域; 根據(jù)所述相鄰宏塊的判斷結(jié)果對(duì)當(dāng)前宏塊進(jìn)行編碼。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述一個(gè)宏塊的編碼過(guò)程符合SVAC標(biāo)準(zhǔn)。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,根據(jù)所述相鄰宏塊的判斷結(jié)果對(duì)當(dāng)前宏塊進(jìn)行編碼包括: 根據(jù)所述相鄰宏塊的判斷結(jié)果進(jìn)行幀間預(yù)測(cè)獲取當(dāng)前宏塊的預(yù)測(cè)數(shù)據(jù)。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述幀間預(yù)測(cè)包括: 調(diào)用前一宏塊與當(dāng)前宏塊運(yùn)動(dòng)搜索區(qū)域重疊的運(yùn)動(dòng)搜索區(qū)域數(shù)據(jù)作為當(dāng)前宏塊運(yùn)動(dòng)搜索區(qū)域數(shù)據(jù)的一部分;讀取參考幀圖像數(shù)據(jù)以補(bǔ)齊當(dāng)前宏塊余下的運(yùn)動(dòng)搜索區(qū)域數(shù)據(jù)。
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,根據(jù)所述相鄰宏塊的判斷結(jié)果對(duì)當(dāng)前宏塊進(jìn)行編碼包括: 根據(jù)所述相鄰宏塊的判斷結(jié)果進(jìn)行幀內(nèi)預(yù)測(cè)獲取當(dāng)前宏塊的預(yù)測(cè)數(shù)據(jù)。
6.根據(jù)權(quán)利要求1所述的方法,其特征在于,判斷當(dāng)前宏塊的相鄰宏塊是否與當(dāng)前宏塊位于同一 ROI區(qū)域/背景區(qū)域包括: 分別獲取與每個(gè)相鄰宏塊對(duì)應(yīng)的相鄰宏塊參數(shù);其中,相鄰宏塊參數(shù)表示該相鄰宏塊是否與當(dāng)前宏塊位于同一 ROI區(qū)域/背景區(qū)域。
7.根據(jù)權(quán)利要求1至6中任一所述的方法,其特征在于,所述相鄰宏塊包括:當(dāng)前宏塊的上邊宏塊、和/或左邊宏塊、和/或右上宏塊、和/或左上宏塊。
8.根據(jù)權(quán)利要求1至6中任一所述的方法,其特征在于,根據(jù)所述相鄰宏塊的判斷結(jié)果對(duì)當(dāng)前宏塊進(jìn)行編碼的過(guò)程包括熵編碼。
9.根據(jù)權(quán)利要求8所述的方法,其特征在于,所述熵編碼過(guò)程包括: 判斷當(dāng)前宏塊是否為當(dāng)前ROI區(qū)域/背景區(qū)域的第一個(gè)宏塊;如果判斷為是,則計(jì)算當(dāng)前ROI區(qū)域/背景區(qū)域的熵編碼參數(shù);如果判斷為否,則獲取已存儲(chǔ)的與當(dāng)前宏塊所屬ROI區(qū)域/背景區(qū)域相對(duì)應(yīng)的熵編碼參數(shù);根據(jù)所述熵編碼參數(shù)對(duì)該當(dāng)前宏塊進(jìn)行熵編碼,并存儲(chǔ)當(dāng)前ROI區(qū)域/背景區(qū)域的熵編碼參數(shù)。
10.根據(jù)權(quán)利要求8所述的方法,其特征在于,所述熵編碼為上下文自適應(yīng)二進(jìn)制算術(shù)編碼。
11.根據(jù)權(quán)利要求9所述的方法,其特征在于,判斷當(dāng)前宏塊是否為當(dāng)前ROI區(qū)域/背景區(qū)域的第一個(gè)宏塊包括: 獲取當(dāng)前宏塊的宏塊位置參數(shù);所述宏塊位置參數(shù)用于表示當(dāng)前宏塊是否為當(dāng)前ROI區(qū)域/背景區(qū)域的第一個(gè)宏塊。
12.根據(jù)權(quán)利要求1至6、9和11中任一所述的方法,其特征在于,所述其中一個(gè)宏塊的編碼過(guò)程進(jìn)一步包括: 為當(dāng)前宏塊的編碼碼流加上與當(dāng)前宏塊所屬ROI區(qū)域/背景區(qū)域相對(duì)應(yīng)的指示符,并將帶有指示符的編碼碼流寫(xiě)入臨時(shí)存儲(chǔ)單元; 從所述臨時(shí)存儲(chǔ)單元中讀取編碼碼流,根據(jù)所述指示符拼接屬于同一個(gè)ROI區(qū)域/背景區(qū)域的編碼碼流。
13.根據(jù)權(quán)利要求12所述的方法,其特征在于,所述其中一個(gè)宏塊的編碼過(guò)程進(jìn)一步包括: 獲取當(dāng)前宏塊所屬ROI區(qū)域/背景區(qū)域的區(qū)域標(biāo)記參數(shù); 為當(dāng)前宏塊的編碼碼流加上與當(dāng)前宏塊所屬ROI區(qū)域/背景區(qū)域相對(duì)應(yīng)的指示符包括: 根據(jù)所述區(qū)域標(biāo)記參數(shù)為當(dāng)前宏塊的編碼碼流加上指示符。
14.根據(jù)權(quán)利要求12所述的方法,其特征在于,所述帶有指示符的編碼碼流的一個(gè)數(shù)據(jù)包的大小為64bit,其中所述指示符的大小為4bit。
【文檔編號(hào)】H04N19/167GK104486626SQ201410841088
【公開(kāi)日】2015年4月1日 申請(qǐng)日期:2014年12月30日 優(yōu)先權(quán)日:2014年12月30日
【發(fā)明者】瞿艷梅, 鐘俊華 申請(qǐng)人:北京中星微電子有限公司, 中星電子股份有限公司