專利名稱:一種視頻碼流錯(cuò)誤隱藏方法
技術(shù)領(lǐng)域:
本發(fā)明涉及視頻編碼和圖像處理領(lǐng)域,尤其涉及一種視頻碼流錯(cuò)誤隱藏方法。
背景技術(shù):
現(xiàn)代視頻編碼標(biāo)準(zhǔn)采用混合編碼框架,用了一系列技術(shù)來(lái)達(dá)到高效率的視頻編碼,包括幀內(nèi)預(yù)測(cè)、幀間預(yù)測(cè)、變換、量化和熵編碼等。幀間預(yù)測(cè)使用基于塊的運(yùn)動(dòng)矢量來(lái)消除圖像間的冗余;幀內(nèi)預(yù)測(cè)使用空間預(yù)測(cè)模式來(lái)消除圖像內(nèi)的冗余。再通過(guò)對(duì)預(yù)測(cè)殘差進(jìn)行變換和量化消除圖像內(nèi)的視覺(jué)冗余。最后,運(yùn)動(dòng)矢量、預(yù)測(cè)模式、量化參數(shù)和變換系數(shù)用熵編碼進(jìn)行壓縮。
壓縮后的視頻經(jīng)過(guò)信道進(jìn)行傳輸后,方在接收方進(jìn)行解碼。與其他通信信道相比, 無(wú)線信道是最為復(fù)雜的一種,各種問(wèn)題都可能發(fā)生。信號(hào)有干擾和衰落的影響,再加上移動(dòng)終端本身的運(yùn)動(dòng),使得無(wú)線信道多變且難以控制,發(fā)生比特錯(cuò)誤和傳輸包丟失錯(cuò)誤等是難以避免的。這樣,再加上移動(dòng)帶寬的限制,視頻在移動(dòng)無(wú)線網(wǎng)絡(luò)中傳輸,對(duì)系統(tǒng)的容錯(cuò)能力提出了更高的要求,不僅需要能夠檢測(cè)并處理隨時(shí)可能出現(xiàn)的錯(cuò)誤,而且要求保障系統(tǒng)錯(cuò)誤恢復(fù)的實(shí)時(shí)性和高效性。
目前被廣泛用到的視頻容錯(cuò)技術(shù),包括靈活的宏塊組織方式(FM0)、編碼端增加冗余信息、解碼端進(jìn)行錯(cuò)誤隱藏等。
當(dāng)視頻序列中,一幀中的某些宏塊丟失時(shí),需要對(duì)這些宏塊中的每個(gè)像素點(diǎn)進(jìn)行恢復(fù)。很多方法是基于圖像的空間特性(如紋理、邊緣),利用這些特性在丟失宏塊所在圖像幀內(nèi)部進(jìn)行像素點(diǎn)恢復(fù)。這些方法對(duì)于視頻幀的空間特性要求較高,對(duì)于平滑區(qū)域或者紋理明顯的區(qū)域較為適用,適合于采用幀內(nèi)編碼方式的視頻幀;而對(duì)于更一般的情況如有運(yùn)動(dòng)物品的視頻序列,在出現(xiàn)較大塊丟失時(shí)則無(wú)法恢復(fù)出丟失的信息。發(fā)明內(nèi)容
本發(fā)明解決的技術(shù)問(wèn)題在于如何利用運(yùn)動(dòng)矢量預(yù)測(cè)及塊邊界匹配思想,在解碼端對(duì)視頻碼流進(jìn)行錯(cuò)誤隱藏。
本發(fā)明提供了一種視頻碼流錯(cuò)誤隱藏方法,該方法包括如下步驟
將每一個(gè)宏塊劃分成4個(gè)8*8的塊;
取得與受損宏塊相鄰的上方的2個(gè)8*8塊、下方的2個(gè)8*8塊、左側(cè)的2個(gè)8*8塊、 右側(cè)的2個(gè)8*8塊以及與受損宏塊臨近的其它8*8塊,將這N個(gè)8*8塊的運(yùn)動(dòng)矢量和O值運(yùn)動(dòng)矢量作為受損宏塊的參考運(yùn)動(dòng)矢量,其中N>=8 ;
對(duì)于受損宏塊中的每個(gè)8*8塊,如果有參考運(yùn)動(dòng)矢量可用,則按照一定規(guī)則從中選擇一個(gè)作為該8*8塊運(yùn)動(dòng)矢量的重構(gòu)值;如果參考運(yùn)動(dòng)矢量都不可用,則用其它方式來(lái)重構(gòu)該8*8塊的運(yùn)動(dòng)矢量;
對(duì)于受損宏塊中的每個(gè)8*8塊,利用重構(gòu)的運(yùn)動(dòng)矢量在其參考幀中取得該塊的重構(gòu)值。
作為本發(fā)明的進(jìn)ー步改進(jìn),從參考運(yùn)動(dòng)矢量中選擇的方法為,對(duì)于受損宏塊中的ー個(gè)8*8塊,根據(jù)每個(gè)參考運(yùn)動(dòng)矢量在其對(duì)應(yīng)參考幀中取出ー個(gè)預(yù)測(cè)塊,考察與受損8*8塊相鄰的兩個(gè)完好8*8塊與該預(yù)測(cè)塊的邊界匹配程度,選擇能夠使得邊界匹配程度最好的運(yùn)
動(dòng)矢量。作為本發(fā)明的進(jìn)ー步改進(jìn),邊界匹配程度的衡量標(biāo)準(zhǔn)是,預(yù)測(cè)塊與相鄰的兩個(gè)完好8*8塊的鄰接邊界像素點(diǎn)的SAD。作為本發(fā)明的進(jìn)ー步改進(jìn),如果與受損8*8塊相鄰的兩個(gè)完好8*8塊都不存在,則采用各個(gè)參考運(yùn)動(dòng)矢量的平均值來(lái)重構(gòu)該受損8*8塊的運(yùn)動(dòng)矢量。作為本發(fā)明的進(jìn)ー步改進(jìn),如果參考運(yùn)動(dòng)矢量都不存在,則選用前ー幀中對(duì)應(yīng)位置8*8塊的運(yùn)動(dòng)矢量來(lái)重構(gòu)當(dāng)前受損8*8塊的運(yùn)動(dòng)矢量。 本發(fā)明的有益效果是由于利用了視頻的空間、時(shí)間相關(guān)性,尤其對(duì)運(yùn)動(dòng)矢量的選擇給出了有效的新方法,算法簡(jiǎn)單、復(fù)雜度低,能夠保證在移動(dòng)應(yīng)用中的實(shí)時(shí)性,同時(shí),能在很大程度恢復(fù)出丟失或出錯(cuò)的視頻信息。
當(dāng)結(jié)合附圖考慮時(shí),通過(guò)參照下面的詳細(xì)描述,能夠更完整更好地理解本發(fā)明以及容易得知其中許多伴隨的優(yōu)點(diǎn),但此處所說(shuō)明的附圖用來(lái)提供對(duì)本發(fā)明的進(jìn)ー步理解,構(gòu)成本發(fā)明的一部分,本發(fā)明的示意性實(shí)施例及其說(shuō)明用于解釋本發(fā)明,并不構(gòu)成對(duì)本發(fā)明的不當(dāng)限定,其中圖I為P幀宏塊丟失邊界匹配示意圖。
具體實(shí)施例方式以下參照?qǐng)DI對(duì)本發(fā)明的實(shí)施例進(jìn)行說(shuō)明。當(dāng)一幀視頻圖像中發(fā)生塊丟失或出錯(cuò)時(shí),不僅利用視頻序列的時(shí)間相關(guān)性,從已經(jīng)解碼的相鄰幀中通過(guò)運(yùn)動(dòng)補(bǔ)償獲得丟失塊的預(yù)測(cè)值,同時(shí)利用丟失塊與相鄰塊的空間相關(guān)性,采用塊邊界匹配的方法來(lái)選擇最優(yōu)的運(yùn)動(dòng)矢量。對(duì)于每個(gè)丟失宏塊,考慮其中的每個(gè)8*8塊。獲得與該宏塊相鄰的八個(gè)8*8塊的運(yùn)動(dòng)矢量和O值運(yùn)動(dòng)矢量,將其作為丟失宏塊中8*8塊的運(yùn)動(dòng)矢量的候選。最優(yōu)的運(yùn)動(dòng)矢量通過(guò)塊邊界匹配的方式來(lái)得到,即考察丟失塊外邊界像素點(diǎn)與用某個(gè)候選運(yùn)動(dòng)矢量得到的恢復(fù)塊內(nèi)邊界像素點(diǎn)的差異,使得差異最小的運(yùn)動(dòng)矢量為最終選定的運(yùn)動(dòng)矢量。利用這個(gè)運(yùn)動(dòng)矢量來(lái)獲得當(dāng)前8*8塊的恢復(fù)快。實(shí)施例方法對(duì)于當(dāng)前丟失宏塊中的每個(gè)8*8塊,分別找其運(yùn)動(dòng)矢量。對(duì)于這每個(gè)8*8塊,都考察與當(dāng)前丟失宏塊相鄰的八個(gè)8*8塊。每個(gè)相鄰8*8塊對(duì)應(yīng)一個(gè)運(yùn)動(dòng)矢量,再加上O值運(yùn)動(dòng)矢量,這樣就有9個(gè)運(yùn)動(dòng)矢量可以使用(如果某相鄰塊為intra塊或者不存在,則其運(yùn)動(dòng)矢量不可用,相應(yīng)總共可用的運(yùn)動(dòng)矢量數(shù)量減一)。利用這9個(gè)運(yùn)動(dòng)矢量,在相應(yīng)的參考幀中得到9個(gè)預(yù)測(cè)塊,分別用這9個(gè)預(yù)測(cè)塊鄰接相鄰塊的16個(gè)像素點(diǎn)與相鄰的兩個(gè)8*8塊中鄰接丟失塊的16個(gè)像素點(diǎn)求SAD,找出使得SAD最小的預(yù)測(cè)塊及其相應(yīng)的運(yùn)動(dòng)矢量。用該預(yù)測(cè)塊來(lái)恢復(fù)丟失塊。如圖I,中間區(qū)域表不丟失的宏塊,其中標(biāo)號(hào)為0、1、2、3的正方形表不該丟失宏塊內(nèi)的4個(gè)8*8塊。四周區(qū)域分別表不丟失宏塊的相鄰8*8塊,分別標(biāo)號(hào)為al、a2、bl、b2、 Cl、c2、dl、d2。這8個(gè)8*8塊的運(yùn)動(dòng)矢量將被用作候選運(yùn)動(dòng)矢量。
對(duì)0、1、2、3正方形表示的四個(gè)丟失塊分別進(jìn)行恢復(fù)。以O(shè)號(hào)丟失塊的恢復(fù)為例進(jìn)行說(shuō)明。
考察8個(gè)鄰接的8*8塊,即正方形表示的al、a2、bl、b2、cl、c2、dl、d2塊。分別用這個(gè)8個(gè)塊的運(yùn)動(dòng)矢量對(duì)丟失的O號(hào)塊在各個(gè)鄰接塊相應(yīng)的參考幀中找到8個(gè)預(yù)測(cè)塊, 再用O值運(yùn)動(dòng)矢量在O號(hào)參考幀中找到一個(gè)預(yù)測(cè)塊,這樣總共可以得到9個(gè)預(yù)測(cè)塊。對(duì)每個(gè)預(yù)測(cè)塊,將其填充到O號(hào)丟失塊的位置,那么它將有兩個(gè)鄰接塊a2和bl塊??疾祛A(yù)測(cè)塊與這兩個(gè)鄰接塊相鄰的16對(duì)像素點(diǎn)的SAD,即差值絕對(duì)值的和。這樣9個(gè)預(yù)測(cè)塊,就找到 9個(gè)SAD,從中找出最小的SAD,并找出相應(yīng)的預(yù)測(cè)塊及運(yùn)動(dòng)矢量。用該預(yù)測(cè)塊恢復(fù)丟失的O 號(hào)塊。
如果O號(hào)丟失塊的鄰接塊不存在,即圖中a2塊和bl塊不存在(a2、bl超出圖像邊界,或者已丟失仍未恢復(fù)),那么對(duì)應(yīng)的像素點(diǎn)就不存在,SAD將無(wú)法計(jì)算。此時(shí),直接將各個(gè)相鄰8*8塊的運(yùn)動(dòng)矢量求平均得到丟失塊的運(yùn)動(dòng)矢量,再用此運(yùn)動(dòng)矢量進(jìn)行恢復(fù)。
如上所述,對(duì)本發(fā)明的實(shí)施例進(jìn)行了詳細(xì)地說(shuō)明,但是只要實(shí)質(zhì)上沒(méi)有脫離本發(fā)明的發(fā)明點(diǎn)及效果可以有很多的變形,這對(duì)本領(lǐng)域的技術(shù)人員來(lái)說(shuō)是顯而易見(jiàn)的。因此,這樣的變形例也全部包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種視頻序列錯(cuò)誤隱藏的方法,該方法包括如下步驟, a)將每一個(gè)宏塊劃分成4個(gè)8*8的塊; b)取得與受損宏塊相鄰的上方的2個(gè)8*8塊、下方的2個(gè)8*8塊、左側(cè)的2個(gè)8*8塊、右側(cè)的2個(gè)8*8塊以及與受損宏塊臨近的其它8*8塊,將這N個(gè)8*8塊的運(yùn)動(dòng)矢量和O值運(yùn)動(dòng)矢量作為受損宏塊的參考運(yùn)動(dòng)矢量,其中N>=8 ; c)對(duì)于受損宏塊中的每個(gè)8*8塊,如果有參考運(yùn)動(dòng)矢量可用,則按照一定規(guī)則從中選擇一個(gè)作為該8*8塊運(yùn)動(dòng)矢量的重構(gòu)值;如果參考運(yùn)動(dòng)矢量都不可用,則用其它方式來(lái)重構(gòu)該8*8塊的運(yùn)動(dòng)矢量; d)對(duì)于受損宏塊中的每個(gè)8*8塊,利用重構(gòu)的運(yùn)動(dòng)矢量在其參考幀中取得該塊的重構(gòu)值。
2.按照權(quán)利要求一所述的視頻序列錯(cuò)誤隱藏的方法,其特征在于 從參考運(yùn)動(dòng)矢量中選擇的方法為,對(duì)于受損宏塊中的一個(gè)8*8塊,根據(jù)每個(gè)參考運(yùn)動(dòng)矢量在其對(duì)應(yīng)參考幀中取出一個(gè)預(yù)測(cè)塊,考察與受損8*8塊相鄰的兩個(gè)8*8塊與該預(yù)測(cè)塊的邊界匹配程度,選擇能夠使得邊界匹配程度最好的運(yùn)動(dòng)矢量。
3.按照權(quán)利要求二所述的視頻序列錯(cuò)誤隱藏的方法,其特征在于 邊界匹配程度的衡量標(biāo)準(zhǔn)是,預(yù)測(cè)塊與相鄰的兩個(gè)完好8*8塊的鄰接邊界像素點(diǎn)的SAD。
4.按照權(quán)利要求二所述的視頻序列錯(cuò)誤隱藏的方法,其特征在于 如果與受損8*8塊相鄰的兩個(gè)8*8塊都不存在,則采用各個(gè)參考運(yùn)動(dòng)矢量的平均值來(lái)重構(gòu)該受損8*8塊的運(yùn)動(dòng)矢量。
5.按照權(quán)利要求一所述的視頻序列錯(cuò)誤隱藏的方法,其特征在于 如果參考運(yùn)動(dòng)矢量都不存在,則選用前一幀中對(duì)應(yīng)位置8*8塊的運(yùn)動(dòng)矢量來(lái)重構(gòu)當(dāng)前受損8*8塊的運(yùn)動(dòng)矢量。
全文摘要
本發(fā)明提供了一種視頻碼流錯(cuò)誤隱藏方法,包括利用視頻序列的時(shí)間和空間相關(guān)性,恢復(fù)視頻信息。本發(fā)明可用于視頻碼流宏塊級(jí)的錯(cuò)誤恢復(fù)。
文檔編號(hào)H04N7/26GK102984525SQ20121055179
公開(kāi)日2013年3月20日 申請(qǐng)日期2012年12月18日 優(yōu)先權(quán)日2012年12月18日
發(fā)明者馬思偉, 趙琛, 高文 申請(qǐng)人:北京大學(xué)