專利名稱:一種解碼錯(cuò)誤宏塊的錯(cuò)誤隱蔽方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及視頻解碼技術(shù)領(lǐng)域,尤其涉及一種解碼錯(cuò)誤宏塊的錯(cuò)誤隱蔽方法及裝置。
背景技術(shù):
隨著網(wǎng)絡(luò)技術(shù)的快速發(fā)展和多媒體技術(shù)的不斷進(jìn)步,視頻通訊的應(yīng)用得到了越來(lái) 越多的關(guān)注。例如在目前3G標(biāo)準(zhǔn)使用的H. 324-M規(guī)范中,規(guī)定使用H. 263和MPEG-4視頻 編碼標(biāo)準(zhǔn)。這兩種標(biāo)準(zhǔn)都是基于運(yùn)動(dòng)補(bǔ)償?shù)囊曨l編碼算法,其中的大多數(shù)視頻幀與前面幀 的相關(guān)性很高,任一幀的錯(cuò)誤都會(huì)被傳播、擴(kuò)散到后續(xù)的若干幀中,從而引起視頻質(zhì)量的嚴(yán) 重降低。因此視頻通訊對(duì)傳輸信道的要求很高,但是現(xiàn)有的有線和無(wú)線網(wǎng)絡(luò)不能提供有效 的服務(wù)質(zhì)量(QoS,Quality of Service) 0特別在類似3G可視電話這種實(shí)時(shí)性要求高的系 統(tǒng)中,不能采用丟包重傳等錯(cuò)誤恢復(fù)機(jī)制,所以只能利用接收端接收到的解碼錯(cuò)誤的宏塊 的數(shù)據(jù)進(jìn)行錯(cuò)誤隱蔽。傳統(tǒng)的接收端解碼器根據(jù)錯(cuò)誤檢測(cè)結(jié)果進(jìn)行錯(cuò)誤隱蔽的方法一般分為兩類基于 時(shí)域的錯(cuò)誤隱蔽和基于空域/頻域的錯(cuò)誤隱蔽。其中基于運(yùn)動(dòng)補(bǔ)償?shù)臅r(shí)域錯(cuò)誤隱蔽方法的 一種簡(jiǎn)單實(shí)現(xiàn),就是利用錯(cuò)誤宏塊所在幀的前一幀中與錯(cuò)誤宏塊空間位置相同的宏塊,替 代當(dāng)前錯(cuò)誤宏塊。但是在視頻中存在較劇烈運(yùn)動(dòng)時(shí),這種方法的效果并不理想。
發(fā)明內(nèi)容
本發(fā)明實(shí)施例提供了一種解碼錯(cuò)誤宏塊的錯(cuò)誤隱蔽方法及裝置,用以提高解碼過(guò) 程中對(duì)解碼錯(cuò)誤宏塊的錯(cuò)誤隱蔽效果,提高解碼后的圖像質(zhì)量。本發(fā)明實(shí)施例提供的一種解碼錯(cuò)誤宏塊的錯(cuò)誤隱蔽方法,包括對(duì)當(dāng)前幀進(jìn)行解碼過(guò)程中解碼錯(cuò)誤的宏塊,使用該宏塊周圍相鄰的正確解碼的各 第一宏塊的運(yùn)動(dòng)矢量值、已完成錯(cuò)誤隱蔽的各第二宏塊的運(yùn)動(dòng)矢量值和發(fā)生錯(cuò)誤解碼且未 完成錯(cuò)誤隱蔽的各第三宏塊的運(yùn)動(dòng)矢量預(yù)測(cè)值,預(yù)測(cè)出該宏塊的運(yùn)動(dòng)矢量值;根據(jù)預(yù)測(cè)出的該宏塊的運(yùn)動(dòng)矢量值,使用當(dāng)前幀的參考幀的像素值進(jìn)行運(yùn)動(dòng)補(bǔ) 償,得出該宏塊的運(yùn)動(dòng)補(bǔ)償值,作為該宏塊的錯(cuò)誤隱蔽結(jié)果。在當(dāng)前幀解碼過(guò)程中出現(xiàn)多個(gè)解碼錯(cuò)誤的宏塊時(shí),按照解碼時(shí)的先后順序,依次 對(duì)各解碼錯(cuò)誤的宏塊進(jìn)行錯(cuò)誤隱蔽的操作。使用該宏塊周圍相鄰的各第一宏塊宏塊的運(yùn)動(dòng)矢量值、各第二宏塊的運(yùn)動(dòng)矢量值 和各第三宏塊的運(yùn)動(dòng)矢量預(yù)測(cè)值,預(yù)測(cè)出該宏塊的運(yùn)動(dòng)矢量值,包括確定該宏塊上、下、左、右、左上、左下、右上和右下相鄰的八個(gè)宏塊或該宏塊上、 下、左、右相鄰的四個(gè)宏塊中所包含的各第一宏塊、第二宏塊和第三宏塊;對(duì)所述各第三宏塊的運(yùn)動(dòng)矢量值進(jìn)行預(yù)測(cè),得到各第三宏塊的運(yùn)動(dòng)矢量預(yù)測(cè)值;對(duì)所述當(dāng)前宏塊相鄰的各第一宏塊的運(yùn)動(dòng)矢量值、各第二宏塊運(yùn)動(dòng)矢量值和各第三宏塊的運(yùn)動(dòng)矢量預(yù)測(cè)值進(jìn)行加權(quán)平均,得到該宏塊的運(yùn)動(dòng)矢量值。所述對(duì)所述各第三宏塊的運(yùn)動(dòng)矢量值進(jìn)行預(yù)測(cè),得到各第三宏塊的運(yùn)動(dòng)矢量預(yù)測(cè) 值,包括當(dāng)?shù)谌陦K上、下、左、右、左上、左下、右上和右下相鄰的八個(gè)宏塊中存在正確解 碼的宏塊時(shí),從所述第三宏塊相鄰的八個(gè)宏塊中選取正確解碼的宏塊的運(yùn)動(dòng)矢量值進(jìn)行加 權(quán)平均運(yùn)算,得到第三宏塊的運(yùn)動(dòng)矢量預(yù)測(cè)值;或者當(dāng)?shù)谌陦K上、下、左、右、左上、左下、右上和右下相鄰的八個(gè)宏塊中都不存在正 確解碼的宏塊時(shí),在該第三宏塊周圍的若干宏塊行中查找正確解碼的宏塊,對(duì)查找到的正 確解碼的宏塊的運(yùn)動(dòng)矢量值進(jìn)行加權(quán)平均運(yùn)算得到第三宏塊的運(yùn)動(dòng)矢量預(yù)測(cè)值。根據(jù)該宏塊與其相鄰的各第一宏塊、第二宏塊和第三宏塊之間運(yùn)動(dòng)矢量值的相關(guān) 度,確定加權(quán)平均運(yùn)算中各第一宏塊、第二宏塊和第三宏塊的權(quán)重。本發(fā)明實(shí)施例提供的另一種解碼錯(cuò)誤宏塊的錯(cuò)誤隱蔽方法,包括對(duì)當(dāng)前幀進(jìn)行解碼過(guò)程中解碼錯(cuò)誤的宏塊,使用該宏塊周圍相鄰的正確解碼的各 第一宏塊的運(yùn)動(dòng)矢量值、已完成錯(cuò)誤隱蔽的各第二宏塊的運(yùn)動(dòng)矢量值和發(fā)生錯(cuò)誤解碼且未 完成錯(cuò)誤隱蔽的各第三宏塊的運(yùn)動(dòng)矢量預(yù)測(cè)值,預(yù)測(cè)出該宏塊的第一運(yùn)動(dòng)矢量值;根據(jù)預(yù)測(cè)出的該宏塊的第一運(yùn)動(dòng)矢量值,使用當(dāng)前幀的參考幀的像素值進(jìn)行運(yùn)動(dòng) 補(bǔ)償,得出該宏塊的第一運(yùn)動(dòng)補(bǔ)償值;根據(jù)當(dāng)前幀的參考幀中與該宏塊位置對(duì)應(yīng)的宏塊的運(yùn)動(dòng)矢量值,或者根據(jù)所述參 考幀中與該宏塊位置對(duì)應(yīng)的宏塊的周圍宏塊的運(yùn)動(dòng)矢量值,預(yù)測(cè)出該宏塊的第二運(yùn)動(dòng)矢量 值;根據(jù)預(yù)測(cè)出的該宏塊的第二運(yùn)動(dòng)矢量值,使用當(dāng)前幀的參考幀的像素值進(jìn)行運(yùn)動(dòng) 補(bǔ)償,得出該宏塊的第二運(yùn)動(dòng)補(bǔ)償值;比較第一運(yùn)動(dòng)補(bǔ)償值和第二運(yùn)動(dòng)補(bǔ)償值的錯(cuò)誤隱蔽效果,選擇錯(cuò)誤隱蔽效果較佳 的作為該宏塊的錯(cuò)誤隱蔽結(jié)果。根據(jù)當(dāng)前幀的參考幀中與該宏塊位置對(duì)應(yīng)的宏塊的運(yùn)動(dòng)矢量值,預(yù)測(cè)該宏塊的第 二運(yùn)動(dòng)矢量值,包括將當(dāng)前幀的參考幀中與該宏塊位置對(duì)應(yīng)的宏塊的運(yùn)動(dòng)矢量值作為該宏塊的第二 運(yùn)動(dòng)矢量值;根據(jù)參考幀中與該宏塊位置對(duì)應(yīng)的宏塊的周圍宏塊的運(yùn)動(dòng)矢量值,預(yù)測(cè)出該宏塊 的第二運(yùn)動(dòng)矢量值,包括將參考幀中與該宏塊位置對(duì)應(yīng)的宏塊周圍相鄰的八個(gè)宏塊的運(yùn)動(dòng)矢量值進(jìn)行算 術(shù)平均,運(yùn)算結(jié)果作為該宏塊的第二運(yùn)動(dòng)矢量值。采用邊緣匹配算法BMA或加強(qiáng)的邊緣匹配算法EBMA,分別對(duì)該宏塊第一、第二運(yùn) 動(dòng)補(bǔ)償值中邊緣像素點(diǎn)的像素值與相鄰的其他該宏塊的邊緣像素點(diǎn)的像素值的相關(guān)度進(jìn) 行計(jì)算,并根據(jù)計(jì)算結(jié)果確定錯(cuò)誤隱蔽的效果。本發(fā)明實(shí)施例提供的一種解碼錯(cuò)誤宏塊的錯(cuò)誤隱蔽裝置,包括運(yùn)動(dòng)矢量值預(yù)測(cè)單元,用于對(duì)當(dāng)前幀進(jìn)行解碼過(guò)程中解碼錯(cuò)誤的宏塊,使用該宏 塊周圍相鄰的正確解碼的各第一宏塊的運(yùn)動(dòng)矢量值、已完成錯(cuò)誤隱蔽的各第二宏塊的運(yùn)動(dòng) 矢量值和發(fā)生錯(cuò)誤解碼且未完成錯(cuò)誤隱蔽的各第三宏塊的運(yùn)動(dòng)矢量預(yù)測(cè)值,預(yù)測(cè)出該宏塊6的運(yùn)動(dòng)矢量值;運(yùn)動(dòng)補(bǔ)償單元,用于根據(jù)預(yù)測(cè)出的該宏塊的運(yùn)動(dòng)矢量值,使用當(dāng)前幀的參考幀的 像素值進(jìn)行運(yùn)動(dòng)補(bǔ)償,得出該宏塊的運(yùn)動(dòng)補(bǔ)償值,作為該宏塊的錯(cuò)誤隱蔽結(jié)果。所述運(yùn)動(dòng)矢量值預(yù)測(cè)單元,包括確定子單元,用于確定該宏塊上、下、左、右、左上、左下、右上和右下相鄰的八個(gè)宏 塊或該宏塊上、下、左、右相鄰的四個(gè)宏塊中所包含的各第一宏塊、第二宏塊和第三宏塊;預(yù)測(cè)子單元,用于對(duì)所述各第三宏塊的運(yùn)動(dòng)矢量值分別進(jìn)行預(yù)測(cè),得到各第三宏 塊的運(yùn)動(dòng)矢量預(yù)測(cè)值;以及對(duì)所述當(dāng)前宏塊相鄰的各第一宏塊的運(yùn)動(dòng)矢量值、各第二宏塊 運(yùn)動(dòng)矢量值和各第三宏塊的運(yùn)動(dòng)矢量預(yù)測(cè)值進(jìn)行加權(quán)平均,得到該宏塊的運(yùn)動(dòng)矢量值。所述預(yù)測(cè)子單元,還用于當(dāng)?shù)谌陦K上、下、左、右、左上、左下、右上和右下相鄰的 八個(gè)宏塊中存在正確解碼的宏塊時(shí),從所述第三宏塊相鄰的八個(gè)宏塊中選取正確解碼的宏 塊的運(yùn)動(dòng)矢量值進(jìn)行加權(quán)平均運(yùn)算,得到第三宏塊的運(yùn)動(dòng)矢量預(yù)測(cè)值;或者當(dāng)?shù)谌陦K上、下、左、右、左上、左下、右上和右下相鄰的八個(gè)宏塊中都不存在正 確解碼的宏塊時(shí),在該第三宏塊周圍的若干宏塊行中查找正確解碼的宏塊,對(duì)查找到的正 確解碼的宏塊的運(yùn)動(dòng)矢量值進(jìn)行加權(quán)平均運(yùn)算得到第三宏塊的運(yùn)動(dòng)矢量預(yù)測(cè)值。本發(fā)明實(shí)施例提供的另一種解碼錯(cuò)誤宏塊的錯(cuò)誤隱蔽裝置,包括第一運(yùn)動(dòng)矢量值預(yù)測(cè)單元,用于對(duì)當(dāng)前幀進(jìn)行解碼過(guò)程中解碼錯(cuò)誤的宏塊,使用 該宏塊周圍相鄰的正確解碼的各第一宏塊的運(yùn)動(dòng)矢量值、已完成錯(cuò)誤隱蔽的各第二宏塊的 運(yùn)動(dòng)矢量值和發(fā)生錯(cuò)誤解碼且未完成錯(cuò)誤隱蔽的各第三宏塊的運(yùn)動(dòng)矢量預(yù)測(cè)值,預(yù)測(cè)出該 宏塊的第一運(yùn)動(dòng)矢量值;第一運(yùn)動(dòng)補(bǔ)償單元,用于根據(jù)預(yù)測(cè)出的該宏塊的第一運(yùn)動(dòng)矢量值,使用當(dāng)前幀的 參考幀的像素值進(jìn)行運(yùn)動(dòng)補(bǔ)償,得出該宏塊的第一運(yùn)動(dòng)補(bǔ)償值;第二運(yùn)動(dòng)矢量值預(yù)測(cè)單元,用于根據(jù)當(dāng)前幀的參考幀中與該宏塊位置對(duì)應(yīng)的宏塊 的運(yùn)動(dòng)矢量值,或者根據(jù)所述參考幀中與該宏塊位置對(duì)應(yīng)的宏塊的周圍宏塊的運(yùn)動(dòng)矢量 值,預(yù)測(cè)出該宏塊的第二運(yùn)動(dòng)矢量值;第二運(yùn)動(dòng)補(bǔ)償單元,用于根據(jù)預(yù)測(cè)出的該宏塊的第二運(yùn)動(dòng)矢量值,使用當(dāng)前幀的 參考幀的像素值進(jìn)行運(yùn)動(dòng)補(bǔ)償,得出該宏塊的第二運(yùn)動(dòng)補(bǔ)償值;比較單元,用于比較第一運(yùn)動(dòng)補(bǔ)償值和第二運(yùn)動(dòng)補(bǔ)償值的錯(cuò)誤隱蔽效果,選擇錯(cuò) 誤隱蔽效果較佳的作為該宏塊的錯(cuò)誤隱蔽結(jié)果。第二運(yùn)動(dòng)矢量值預(yù)測(cè)單元,還用于將當(dāng)前幀的參考幀中與該宏塊位置對(duì)應(yīng)的宏塊 的運(yùn)動(dòng)矢量值作為該宏塊的第二運(yùn)動(dòng)矢量值;或者將參考幀中與該宏塊位置對(duì)應(yīng)的宏塊周 圍相鄰的八個(gè)宏塊的運(yùn)動(dòng)矢量值進(jìn)行算術(shù)平均,運(yùn)算結(jié)果作為該宏塊的第二運(yùn)動(dòng)矢量值。本發(fā)明實(shí)施例的有益效果包括本發(fā)明實(shí)施例提供的解碼錯(cuò)誤宏塊的錯(cuò)誤隱蔽方法及裝置,對(duì)解碼錯(cuò)誤的宏塊, 使用基于空域的預(yù)測(cè)方式預(yù)測(cè)其運(yùn)動(dòng)矢量值,即根據(jù)該宏塊周圍相鄰的正確解碼的各第一 宏塊的運(yùn)動(dòng)矢量值、已完成錯(cuò)誤隱蔽的各第二宏塊的運(yùn)動(dòng)矢量值和發(fā)生錯(cuò)誤解碼且未完成 錯(cuò)誤隱蔽的各第三宏塊的運(yùn)動(dòng)矢量預(yù)測(cè)值,預(yù)測(cè)出該宏塊的運(yùn)動(dòng)矢量值;然后根據(jù)預(yù)測(cè)出 的該宏塊的運(yùn)動(dòng)矢量值,使用當(dāng)前幀的參考幀的像素值進(jìn)行運(yùn)動(dòng)補(bǔ)償,得出該宏塊的運(yùn)動(dòng) 補(bǔ)償值,作為該宏塊的錯(cuò)誤隱蔽結(jié)果。本發(fā)明實(shí)施例在該解碼錯(cuò)誤的宏塊的相鄰宏塊也發(fā)生解碼錯(cuò)誤時(shí),依然可以準(zhǔn)確有效地預(yù)測(cè)該宏塊的運(yùn)動(dòng)矢量值。尤其是當(dāng)視頻圖像中出現(xiàn) 較劇烈運(yùn)動(dòng)的情況下,由于采用同一幀內(nèi)與該解碼錯(cuò)誤的宏塊周圍相鄰的宏塊進(jìn)行運(yùn)動(dòng)矢 量值的預(yù)測(cè),比現(xiàn)有的使用解碼錯(cuò)誤的宏塊所在幀的前一幀中與該宏塊位置相同的宏塊, 替代該宏塊的方法,錯(cuò)誤隱蔽的效果更好。本發(fā)明實(shí)施例提供的另一種解碼錯(cuò)誤宏塊的錯(cuò)誤隱蔽方法及裝置,不僅對(duì)發(fā)生解 碼錯(cuò)誤的宏塊使用基于空域的方式預(yù)測(cè)其運(yùn)動(dòng)矢量值,還對(duì)該發(fā)生解碼錯(cuò)誤的宏塊使用基 于時(shí)域的方式預(yù)測(cè)其運(yùn)動(dòng)矢量值,即根據(jù)當(dāng)前幀的參考幀中與該宏塊位置對(duì)應(yīng)的宏塊的運(yùn) 動(dòng)矢量值,或者根據(jù)參考幀中與該宏塊位置對(duì)應(yīng)的宏塊的周圍宏塊的運(yùn)動(dòng)矢量值,預(yù)測(cè)出 該宏塊的運(yùn)動(dòng)矢量值,然后比較兩種預(yù)測(cè)方式得到的運(yùn)動(dòng)補(bǔ)償值的錯(cuò)誤隱蔽效果,擇優(yōu)選 取其中一種方式得到的運(yùn)動(dòng)補(bǔ)償值作為錯(cuò)誤隱蔽的結(jié)果。本發(fā)明實(shí)施例二提供的解碼錯(cuò)誤 宏塊的錯(cuò)誤隱蔽方法及裝置同時(shí)使用了基于空域的和時(shí)域的運(yùn)動(dòng)矢量值的預(yù)測(cè)方式,更有 效地利用基于空域的和時(shí)域的預(yù)測(cè)方式的優(yōu)勢(shì),提高錯(cuò)誤隱蔽效果,提高圖像的解碼質(zhì)量。
圖1為本發(fā)明實(shí)施例一提供的解碼錯(cuò)誤宏塊的錯(cuò)誤隱蔽方法的流程圖;圖2為本發(fā)明實(shí)施例一提供的解碼錯(cuò)誤宏塊的錯(cuò)誤隱蔽方法的具體實(shí)例的示意 圖之一;圖3為本發(fā)明實(shí)施例一提供的解碼錯(cuò)誤宏塊的錯(cuò)誤隱蔽方法的具體實(shí)例的示意 圖之二;圖4為本發(fā)明實(shí)施例一提供的解碼錯(cuò)誤宏塊的錯(cuò)誤隱蔽裝置的結(jié)構(gòu)示意圖;圖5為本發(fā)明實(shí)施例一提供的運(yùn)動(dòng)矢量值預(yù)測(cè)單元結(jié)構(gòu)示意圖;圖6為本發(fā)明實(shí)施例二提供的解碼錯(cuò)誤宏塊的錯(cuò)誤隱蔽方法的流程圖;圖7為本發(fā)明實(shí)施例二提供的解碼錯(cuò)誤宏塊的錯(cuò)誤隱蔽裝置的結(jié)構(gòu)示意圖。
具體實(shí)施例方式下面結(jié)合附圖,對(duì)本發(fā)明提供的一種解碼錯(cuò)誤宏塊的錯(cuò)誤隱蔽方法及裝置的具體 實(shí)施方式進(jìn)行詳細(xì)的說(shuō)明。實(shí)施例一在對(duì)當(dāng)前幀進(jìn)行解碼的過(guò)程中,通過(guò)語(yǔ)法檢測(cè)視頻碼流中當(dāng)前幀的宏塊的解碼的 數(shù)據(jù)是否存在錯(cuò)誤;例如可以使用下述語(yǔ)法檢測(cè)方法來(lái)判斷是否出現(xiàn)宏塊的解碼錯(cuò)誤,運(yùn) 動(dòng)矢量值是否超過(guò)范圍;可變長(zhǎng)編碼(Variable-length,VLC)碼字是否有效;離散余弦變 換(Discrete Consine Transform, DCT)系數(shù)是否超出范圍;DCT系數(shù)的個(gè)數(shù)是否超出范 圍;量化系數(shù)是否超過(guò)范圍;解碼的宏塊數(shù)目是否超過(guò)范圍,碼流是否發(fā)生丟包(丟失數(shù)據(jù) 包中的宏塊也屬于發(fā)生解碼錯(cuò)誤),當(dāng)出現(xiàn)解碼錯(cuò)誤的宏塊時(shí),對(duì)發(fā)生解碼錯(cuò)誤的宏塊進(jìn)行 標(biāo)識(shí),在當(dāng)前幀的解碼過(guò)程結(jié)束后,如果不存在解碼錯(cuò)誤的宏塊,進(jìn)行下一幀的解碼;如果 存在解碼錯(cuò)誤的宏塊,對(duì)于發(fā)生解碼錯(cuò)誤的宏塊,則需要按照發(fā)明實(shí)施例一提供的解碼錯(cuò) 誤宏塊的錯(cuò)誤隱蔽方法,執(zhí)行錯(cuò)誤隱蔽的操作。如果當(dāng)前幀解碼過(guò)程中出現(xiàn)多個(gè)解碼錯(cuò)誤的宏塊,則對(duì)于各個(gè)解碼錯(cuò)誤的宏塊, 按照宏塊解碼時(shí)的先后順序,依次對(duì)各個(gè)解碼錯(cuò)誤的宏塊進(jìn)行錯(cuò)誤隱蔽的操作。下面針對(duì)某個(gè)解碼錯(cuò)誤的宏塊的錯(cuò)誤隱蔽過(guò)程進(jìn)行描述。本發(fā)明實(shí)施例一提供的解碼錯(cuò)誤宏塊的錯(cuò)誤隱蔽方法,采用基于空域的運(yùn)動(dòng)矢量 值的預(yù)測(cè),也就是根據(jù)當(dāng)前進(jìn)行錯(cuò)誤隱蔽的宏塊(下面簡(jiǎn)稱當(dāng)前宏塊)周圍相鄰的宏塊的 運(yùn)動(dòng)矢量值來(lái)預(yù)測(cè)該當(dāng)前宏塊的運(yùn)動(dòng)矢量值,進(jìn)而得到該當(dāng)前宏塊的運(yùn)動(dòng)補(bǔ)償值,作為錯(cuò) 誤隱蔽的結(jié)果,具體來(lái)說(shuō),如圖1所示,包括下述步驟步驟S101、使用該當(dāng)前宏塊周圍相鄰的正確解碼的各第一宏塊的運(yùn)動(dòng)矢量值、已 完成錯(cuò)誤隱蔽的各第二宏塊的運(yùn)動(dòng)矢量值和發(fā)生錯(cuò)誤解碼且未完成錯(cuò)誤隱蔽的各第三宏 塊的運(yùn)動(dòng)矢量預(yù)測(cè)值,預(yù)測(cè)出該當(dāng)前宏塊的運(yùn)動(dòng)矢量值;步驟S102、根據(jù)預(yù)測(cè)出的該當(dāng)前宏塊的運(yùn)動(dòng)矢量值,使用當(dāng)前幀的參考幀的像素 值進(jìn)行運(yùn)動(dòng)補(bǔ)償,得出該當(dāng)前宏塊的運(yùn)動(dòng)補(bǔ)償值,作為該當(dāng)前宏塊的錯(cuò)誤隱蔽結(jié)果。在本發(fā)明實(shí)施例一提供的上述解碼錯(cuò)誤宏塊的錯(cuò)誤隱蔽方法中,為了區(qū)分正確解 碼的宏塊,已完成錯(cuò)誤隱蔽的宏塊和發(fā)生錯(cuò)誤解碼且未完成錯(cuò)誤隱蔽操作的宏塊依次稱為 第一宏塊、第二宏塊和第三宏塊。在上述步驟SlOl中,使用當(dāng)前宏塊周圍相鄰的各第一宏塊宏塊的運(yùn)動(dòng)矢量值、各 第二宏塊的運(yùn)動(dòng)矢量值和各第三宏塊的運(yùn)動(dòng)矢量預(yù)測(cè)值,預(yù)測(cè)出該當(dāng)前宏塊的運(yùn)動(dòng)矢量 值,具體包括確定當(dāng)前宏塊上、下、左、右、左上、左下、右上和右下相鄰的八個(gè)宏塊或該宏塊上、 下、左、右相鄰的四個(gè)宏塊中包含的各第一宏塊、第二宏塊和第三宏塊;對(duì)各第三宏塊(解碼錯(cuò)誤且未完成錯(cuò)誤隱蔽操作的宏塊)的運(yùn)動(dòng)矢量值分別進(jìn)行 預(yù)測(cè),得到各第三宏塊的運(yùn)動(dòng)矢量預(yù)測(cè)值;對(duì)當(dāng)前宏塊相鄰的各第一宏塊的運(yùn)動(dòng)矢量值、各第二宏塊運(yùn)動(dòng)矢量值和各第三宏 塊的運(yùn)動(dòng)矢量預(yù)測(cè)值進(jìn)行加權(quán)平均,得到該當(dāng)前宏塊的運(yùn)動(dòng)矢量值。進(jìn)一步地,本發(fā)明實(shí)施例一中,對(duì)第三宏塊的運(yùn)動(dòng)矢量值進(jìn)行預(yù)測(cè),得到各第三宏 塊的運(yùn)動(dòng)矢量預(yù)測(cè)值,包括當(dāng)?shù)谌陦K上、下、左、右、左上、左下、右上和右下相鄰的八個(gè)宏塊中存在正確解 碼的宏塊時(shí),從所述第三宏塊相鄰的八個(gè)宏塊中選取已正確解碼的宏塊的運(yùn)動(dòng)矢量值進(jìn)行 加權(quán)平均運(yùn)算,得到第三宏塊的運(yùn)動(dòng)矢量預(yù)測(cè)值;或者當(dāng)?shù)谌陦K上、下、左、右、左上、左下、右上和右下相鄰的八個(gè)宏塊中都不存在正 確解碼的宏塊時(shí),在該第三宏塊相鄰的若干宏塊行中查找正確解碼的宏塊,對(duì)查找到的正 確解碼的宏塊的運(yùn)動(dòng)矢量值進(jìn)行加權(quán)平均運(yùn)算,得到第三宏塊的運(yùn)動(dòng)矢量預(yù)測(cè)值。在根據(jù)當(dāng)前宏塊相鄰的第一宏塊、第二宏塊和第三宏塊的運(yùn)動(dòng)矢量值進(jìn)行加權(quán)平 均得出該宏塊的運(yùn)動(dòng)矢量值的計(jì)算式中,各第一宏塊、第二宏塊和第三宏塊的加權(quán)平均運(yùn) 算的權(quán)重,根據(jù)各宏塊與當(dāng)前宏塊之間運(yùn)動(dòng)矢量值的相關(guān)度來(lái)決定。換言之,相關(guān)度越高 的,權(quán)重值相應(yīng)的越大,反之,相關(guān)度低的,權(quán)重值相應(yīng)的越小,這樣,計(jì)算出的當(dāng)前宏塊的 運(yùn)動(dòng)矢量值才會(huì)盡可能地接近當(dāng)前宏塊的真實(shí)的運(yùn)動(dòng)矢量值。下面以兩個(gè)具體的實(shí)例對(duì)本發(fā)明實(shí)施例一提供的解碼錯(cuò)誤宏塊的錯(cuò)誤隱蔽方法 進(jìn)行說(shuō)明。如圖1所示,當(dāng)對(duì)宏塊E進(jìn)行錯(cuò)誤隱蔽的操作時(shí),選取該宏塊E上、下、左、右相鄰 的四個(gè)宏塊即宏塊A、B、C和D的運(yùn)動(dòng)矢量值預(yù)測(cè)宏塊E的運(yùn)動(dòng)矢量值。
宏塊A、B、C和D當(dāng)中,假設(shè)宏塊A已正確解碼,宏塊B、C和D解碼錯(cuò)誤,由于宏塊 B在宏塊E之前已經(jīng)完成了錯(cuò)誤隱蔽的操作(因?yàn)楹陦KB的解碼的順序在宏塊E解碼的順 序之前),那么此次錯(cuò)誤隱蔽操作中,可以直接使用該宏塊B的運(yùn)動(dòng)矢量值,而錯(cuò)誤解碼的 宏塊C和宏塊D的運(yùn)動(dòng)矢量值是不可用的,必須首先利用其周圍相鄰的正確解碼的宏塊的 運(yùn)動(dòng)矢量值進(jìn)行預(yù)測(cè),得到宏塊C和D的運(yùn)動(dòng)矢量預(yù)測(cè)值。對(duì)宏塊C來(lái)說(shuō),宏塊C周圍相鄰的8個(gè)宏塊中,存在正確解碼的宏塊,選取宏塊C 右上相鄰的正確解碼的宏塊M和對(duì)宏塊C右下相鄰的正確解碼的宏塊N的運(yùn)動(dòng)矢量值,計(jì) 算宏塊C的運(yùn)動(dòng)矢量預(yù)測(cè)值。假設(shè)宏塊M的運(yùn)動(dòng)矢量值為VM,宏塊N的運(yùn)動(dòng)矢量值為Vn,兩者進(jìn)行加權(quán)平均的運(yùn) 算的運(yùn)算式如下Vc = a*VM+b*VN ;上式中,Ve是宏塊C的運(yùn)動(dòng)矢量預(yù)測(cè)值;a和b分別是Vm和Vn加權(quán)平均運(yùn)算的權(quán)重值。同樣地,如圖2所示,對(duì)宏塊D來(lái)說(shuō),將宏塊D左下方、下方和右下方相鄰的已正確 解碼的宏塊J、K和L的運(yùn)動(dòng)矢量值Vk和Ψ進(jìn)行加權(quán)平均運(yùn)算,得到宏塊D的運(yùn)動(dòng)矢量 預(yù)測(cè)值Vd。然后,將宏塊A的運(yùn)動(dòng)矢量值VA、宏塊B的運(yùn)動(dòng)矢量值VD、宏塊C的運(yùn)動(dòng)矢量預(yù)測(cè) 值Ψ和宏塊D的運(yùn)動(dòng)矢量預(yù)測(cè)值Vd進(jìn)行加權(quán)平均運(yùn)算,得到宏塊E的運(yùn)動(dòng)矢量值VE。后續(xù)的運(yùn)動(dòng)補(bǔ)償?shù)牟僮靼锤鶕?jù)宏塊E的運(yùn)動(dòng)矢量值VE,在當(dāng)前幀的參考幀 中查找到相應(yīng)的最匹配宏塊,將查找到的最匹配宏塊的像素值加上解碼出的差值,得到該 宏塊E的運(yùn)動(dòng)補(bǔ)償值作為錯(cuò)誤隱蔽結(jié)果。另一個(gè)實(shí)例如圖3所示,當(dāng)前宏塊為圖中的宏塊E,如果其周圍相鄰的宏塊都解碼 錯(cuò)誤(例如圖3中的宏塊A、B、C和D),其中,宏塊A和宏塊B已經(jīng)在宏塊E進(jìn)行錯(cuò)誤隱蔽 操作之前,完成了錯(cuò)誤隱蔽操作,因此,宏塊A和宏塊B的運(yùn)動(dòng)矢量值Va和Vb是可用的,宏 塊C解碼錯(cuò)誤且未經(jīng)過(guò)錯(cuò)誤隱蔽操作,宏塊C的運(yùn)動(dòng)矢量值不可用,必須先對(duì)宏塊C的運(yùn)動(dòng) 矢量值進(jìn)行預(yù)測(cè),得到宏塊C的運(yùn)動(dòng)矢量預(yù)測(cè)值\。對(duì)于宏塊C來(lái)說(shuō),其周圍緊鄰的8個(gè)宏塊中,沒(méi)有解碼正確的宏塊,因此,需要在其 周圍的若干宏塊行中查找解碼正確的宏塊,例如圖3中,對(duì)與宏塊C右上方相隔兩個(gè)宏塊行 的宏塊M的運(yùn)動(dòng)矢量值VM,以及宏塊C右下方相隔兩個(gè)宏塊行N的運(yùn)動(dòng)矢量值Vn進(jìn)行加權(quán) 平均運(yùn)算,得到宏塊C的運(yùn)動(dòng)矢量預(yù)測(cè)值V。。對(duì)于宏塊D來(lái)說(shuō),其周圍緊鄰的8個(gè)宏塊中,沒(méi)有解碼正確的宏塊,利用宏塊D下 方、左下方和右下方與宏塊D相隔一個(gè)宏塊行的宏塊J、K和L (這三個(gè)宏塊都是解碼正確的 宏塊)的運(yùn)動(dòng)矢量值VT、Vk和Vm進(jìn)行加權(quán)運(yùn)算,得到宏塊D的運(yùn)動(dòng)矢量預(yù)測(cè)值VD。然后,對(duì)宏塊A和宏塊B的運(yùn)動(dòng)矢量值Va和\、以及宏塊C和D的運(yùn)動(dòng)矢量預(yù)測(cè) 值\和Vd進(jìn)行加權(quán)平均運(yùn)算,得到宏塊E的運(yùn)動(dòng)矢量值VE。后續(xù)根據(jù)宏塊C的運(yùn)動(dòng)矢量值Ve進(jìn)行運(yùn)動(dòng)補(bǔ)償,得到宏塊E的運(yùn)動(dòng)補(bǔ)償值作為錯(cuò) 誤隱蔽結(jié)果。在上述對(duì)宏塊E的錯(cuò)誤隱蔽的操作過(guò)程中,優(yōu)先選擇宏塊E右方和宏塊E左下方、 下方和右下方正確解碼的宏塊進(jìn)行加權(quán)平均的運(yùn)算,因?yàn)樵诤陦K右方、左下方、下方和右下方的宏塊的運(yùn)動(dòng)矢量值是真實(shí)的運(yùn)動(dòng)矢量值,而非經(jīng)過(guò)運(yùn)算過(guò)的運(yùn)動(dòng)矢量預(yù)測(cè)值,能夠提 高宏塊E進(jìn)行錯(cuò)誤隱蔽時(shí)預(yù)測(cè)的運(yùn)動(dòng)矢量值的準(zhǔn)確度。基于同一發(fā)明構(gòu)思,本發(fā)明實(shí)施例一中還提供了一種解碼錯(cuò)誤宏塊的錯(cuò)誤隱蔽的 裝置,由于該裝置解決問(wèn)題的原理與前述一種解碼錯(cuò)誤宏塊的錯(cuò)誤隱蔽的方法相似,因此 該裝置的實(shí)施可以參見(jiàn)方法的實(shí)施,重復(fù)之處不在贅述。本發(fā)明實(shí)施例一提供的解碼錯(cuò)誤宏塊的錯(cuò)誤隱蔽裝置,如圖4所示,包括運(yùn)動(dòng)矢 量值預(yù)測(cè)單元401和運(yùn)動(dòng)補(bǔ)償單元402 ;運(yùn)動(dòng)矢量值預(yù)測(cè)單元401,用于對(duì)當(dāng)前幀進(jìn)行解碼過(guò)程中解碼錯(cuò)誤的宏塊,使用該 宏塊周圍相鄰的正確解碼的各第一宏塊的運(yùn)動(dòng)矢量值、已完成錯(cuò)誤隱蔽的各第二宏塊的運(yùn) 動(dòng)矢量值和發(fā)生錯(cuò)誤解碼且未完成錯(cuò)誤隱蔽的各第三宏塊的運(yùn)動(dòng)矢量預(yù)測(cè)值,預(yù)測(cè)出該宏 塊的運(yùn)動(dòng)矢量值;運(yùn)動(dòng)補(bǔ)償單元402,用于根據(jù)預(yù)測(cè)出的該宏塊的運(yùn)動(dòng)矢量值,使用當(dāng)前幀的參考幀 的像素值進(jìn)行運(yùn)動(dòng)補(bǔ)償,得出該宏塊的運(yùn)動(dòng)補(bǔ)償值,作為該宏塊的錯(cuò)誤隱蔽結(jié)果。其中,運(yùn)動(dòng)矢量值預(yù)測(cè)單元401,如圖5所示,具體包括確定子單元4011,用于確定該宏塊上、下、左、右、左上、左下、右上和右下相鄰的八 個(gè)宏塊中所包含的各第一宏塊、第二宏塊和第三宏塊;預(yù)測(cè)子單元4012,用于對(duì)所述各第三宏塊的運(yùn)動(dòng)矢量值分別進(jìn)行預(yù)測(cè),得到各第 三宏塊的運(yùn)動(dòng)矢量預(yù)測(cè)值;以及對(duì)所述當(dāng)前宏塊相鄰的各第一宏塊的運(yùn)動(dòng)矢量值、各第二 宏塊運(yùn)動(dòng)矢量值和各第三宏塊的運(yùn)動(dòng)矢量預(yù)測(cè)值進(jìn)行加權(quán)平均,得到該宏塊的運(yùn)動(dòng)矢量 值。預(yù)測(cè)子單元4012,還用于當(dāng)?shù)谌陦K上、下、左、右、左上、左下、右上和右下相鄰的 八個(gè)宏塊中存在正確解碼的宏塊時(shí),從所述第三宏塊相鄰的八個(gè)宏塊中選取正確解碼的宏 塊的運(yùn)動(dòng)矢量值進(jìn)行加權(quán)平均運(yùn)算,得到第三宏塊的運(yùn)動(dòng)矢量預(yù)測(cè)值;或者當(dāng)?shù)谌陦K上、下、左、右、左上、左下、右上和右下相鄰的八個(gè)宏塊中都不存在正 確解碼的宏塊時(shí),在該第三宏塊周圍的若干宏塊行中查找正確解碼的宏塊,對(duì)查找到的正 確解碼的宏塊的運(yùn)動(dòng)矢量值進(jìn)行加權(quán)平均運(yùn)算得到第三宏塊的運(yùn)動(dòng)矢量預(yù)測(cè)值。實(shí)施例二 本發(fā)明實(shí)施例二中,在實(shí)施例一提供的技術(shù)方案的基礎(chǔ)上,還對(duì)當(dāng)前宏塊的運(yùn)動(dòng) 矢量值進(jìn)行時(shí)域上的預(yù)測(cè),然后比較兩種方式下運(yùn)動(dòng)補(bǔ)償值的錯(cuò)誤隱蔽的效果,選擇效果 較優(yōu)的一種方式得到的運(yùn)動(dòng)補(bǔ)償值作為當(dāng)前宏塊最終的錯(cuò)誤隱蔽結(jié)果。如圖6所示,本發(fā)明實(shí)施例二提供的解碼錯(cuò)誤宏塊的錯(cuò)誤隱蔽方法,具體包括下 述步驟S601、對(duì)當(dāng)前幀進(jìn)行解碼過(guò)程中解碼錯(cuò)誤的宏塊,使用該宏塊周圍相鄰的正確解 碼的各第一宏塊的運(yùn)動(dòng)矢量值、已完成錯(cuò)誤隱蔽的各第二宏塊的運(yùn)動(dòng)矢量值和發(fā)生錯(cuò)誤解 碼且未完成錯(cuò)誤隱蔽的各第三宏塊的運(yùn)動(dòng)矢量預(yù)測(cè)值,預(yù)測(cè)出該宏塊的第一運(yùn)動(dòng)矢量值;S602、根據(jù)預(yù)測(cè)出的該宏塊的第一運(yùn)動(dòng)矢量值,使用當(dāng)前幀的參考幀的像素值進(jìn) 行運(yùn)動(dòng)補(bǔ)償,得出該宏塊的第一運(yùn)動(dòng)補(bǔ)償值;S603、根據(jù)當(dāng)前幀的參考幀中與該宏塊位置對(duì)應(yīng)的宏塊的運(yùn)動(dòng)矢量值,或者根據(jù) 所述參考幀中與該宏塊位置對(duì)應(yīng)的宏塊的周圍宏塊的運(yùn)動(dòng)矢量值,預(yù)測(cè)出該宏塊的第二運(yùn)11動(dòng)矢量值;S604、根據(jù)預(yù)測(cè)出的該宏塊的第二運(yùn)動(dòng)矢量值,使用當(dāng)前幀的參考幀的像素值進(jìn) 行運(yùn)動(dòng)補(bǔ)償,得出該宏塊的第二運(yùn)動(dòng)補(bǔ)償值;S605、比較第一運(yùn)動(dòng)補(bǔ)償值和第二運(yùn)動(dòng)補(bǔ)償值的錯(cuò)誤隱蔽效果,選擇錯(cuò)誤隱蔽效 果較佳的作為該宏塊的錯(cuò)誤隱蔽結(jié)果。上述步驟S601、S602的具體執(zhí)行過(guò)程與實(shí)施例一中相同,在此不再贅述。上述步驟S603的根據(jù)當(dāng)前幀的參考幀中與該宏塊位置對(duì)應(yīng)的宏塊的運(yùn)動(dòng)矢量 值,預(yù)測(cè)該宏塊的第二運(yùn)動(dòng)矢量值的步驟,可以通過(guò)下述方式實(shí)現(xiàn)將當(dāng)前幀的參考幀中與該宏塊位置對(duì)應(yīng)的宏塊的運(yùn)動(dòng)矢量值作為該宏塊的第二 運(yùn)動(dòng)矢量值;或者將當(dāng)前幀的參考幀中與該宏塊位置對(duì)應(yīng)的宏塊周圍相鄰的八個(gè)宏塊的運(yùn)動(dòng)矢量 值進(jìn)行算術(shù)平均,將算術(shù)平均的運(yùn)算結(jié)果作為該宏塊的第二運(yùn)動(dòng)矢量值。上述步驟S605中,采用現(xiàn)有的邊緣匹配算法(Boundary Matching Algorithm, BMA)或加強(qiáng)的邊緣匹配算法(Enhanced Boundary Matching Algorithm, EBMA),對(duì)當(dāng)前宏 塊第一運(yùn)動(dòng)補(bǔ)償值以及當(dāng)前宏塊的第二運(yùn)動(dòng)補(bǔ)償值的錯(cuò)誤隱蔽效果進(jìn)行比較。BMA和EBMA算法的基本原理是利用視頻圖像中鄰接像素點(diǎn)的像素值具有高度相 關(guān)性的事實(shí),也就說(shuō),計(jì)算出當(dāng)前宏塊的運(yùn)動(dòng)補(bǔ)償值中邊緣像素點(diǎn)與相鄰宏塊邊緣像素點(diǎn) 的相關(guān)度越高,則錯(cuò)誤隱蔽的效果越好。分別對(duì)當(dāng)前宏塊第一運(yùn)動(dòng)補(bǔ)償值以及當(dāng)前宏塊的第二運(yùn)動(dòng)補(bǔ)償值中,邊緣像素點(diǎn) 的像素值與相鄰的其他宏塊的邊緣像素點(diǎn)的像素值的相關(guān)度進(jìn)行計(jì)算,以圖2中的宏塊E 為例,計(jì)算宏塊E的運(yùn)動(dòng)補(bǔ)償值中右側(cè)邊緣像素點(diǎn)的像素值和相鄰宏塊C的左側(cè)邊緣像素 點(diǎn)的像素值之間的相關(guān)度,相關(guān)度越高,則認(rèn)為該運(yùn)動(dòng)補(bǔ)償值的錯(cuò)誤隱蔽效果越好?;谕话l(fā)明構(gòu)思,本發(fā)明實(shí)施例二中還提供了一種解碼錯(cuò)誤宏塊的錯(cuò)誤隱蔽的 裝置,由于該裝置解決問(wèn)題的原理與前述一種解碼錯(cuò)誤宏塊的錯(cuò)誤隱蔽的方法相似,因此 該裝置的實(shí)施可以參見(jiàn)方法的實(shí)施,重復(fù)之處不在贅述。本發(fā)明實(shí)施例二提供的一種解碼錯(cuò)誤宏塊的錯(cuò)誤隱蔽裝置,如圖7所示,具體包 括第一運(yùn)動(dòng)矢量值預(yù)測(cè)單元701,用于對(duì)當(dāng)前幀進(jìn)行解碼過(guò)程中解碼錯(cuò)誤的宏塊,使 用該宏塊周圍相鄰的正確解碼的各第一宏塊的運(yùn)動(dòng)矢量值、已完成錯(cuò)誤隱蔽的各第二宏塊 的運(yùn)動(dòng)矢量值和發(fā)生錯(cuò)誤解碼且未完成錯(cuò)誤隱蔽的各第三宏塊的運(yùn)動(dòng)矢量預(yù)測(cè)值,預(yù)測(cè)出 該宏塊的第一運(yùn)動(dòng)矢量值;第一運(yùn)動(dòng)補(bǔ)償單元702,用于根據(jù)預(yù)測(cè)出的該宏塊的第一運(yùn)動(dòng)矢量值,使用當(dāng)前幀 的參考幀的像素值進(jìn)行運(yùn)動(dòng)補(bǔ)償,得出該宏塊的第一運(yùn)動(dòng)補(bǔ)償值;第二運(yùn)動(dòng)矢量值預(yù)測(cè)單元703,用于根據(jù)當(dāng)前幀的參考幀中與該宏塊位置對(duì)應(yīng)的 宏塊的運(yùn)動(dòng)矢量值,或者根據(jù)所述參考幀中與該宏塊位置對(duì)應(yīng)的宏塊的周圍宏塊的運(yùn)動(dòng)矢 量值,預(yù)測(cè)出該宏塊的第二運(yùn)動(dòng)矢量值;第二運(yùn)動(dòng)補(bǔ)償單元704,用于根據(jù)預(yù)測(cè)出的該宏塊的第二運(yùn)動(dòng)矢量值,使用當(dāng)前幀 的參考幀的像素值進(jìn)行運(yùn)動(dòng)補(bǔ)償,得出該宏塊的第二運(yùn)動(dòng)補(bǔ)償值;比較單元705,用于比較第一運(yùn)動(dòng)補(bǔ)償值和第二運(yùn)動(dòng)補(bǔ)償值的錯(cuò)誤隱蔽效果,選擇錯(cuò)誤隱蔽效果較佳的作為該宏塊的錯(cuò)誤隱蔽結(jié)果。上述第二運(yùn)動(dòng)矢量值預(yù)測(cè)單元703,還用于將當(dāng)前幀的參考幀中與該宏塊位置對(duì) 應(yīng)的宏塊的運(yùn)動(dòng)矢量值作為該宏塊的第二運(yùn)動(dòng)矢量值;或者將參考幀中與該宏塊位置對(duì)應(yīng) 的宏塊周圍相鄰的八個(gè)宏塊的運(yùn)動(dòng)矢量值進(jìn)行算術(shù)平均,運(yùn)算結(jié)果作為該宏塊的第二運(yùn)動(dòng)矢量值。本發(fā)明實(shí)施例一提供的解碼錯(cuò)誤宏塊的錯(cuò)誤隱蔽方法及裝置,對(duì)解碼錯(cuò)誤的宏 塊,使用基于空域的預(yù)測(cè)方式預(yù)測(cè)其運(yùn)動(dòng)矢量值,即根據(jù)該宏塊周圍相鄰的正確解碼的各 第一宏塊的運(yùn)動(dòng)矢量值、已完成錯(cuò)誤隱蔽的各第二宏塊的運(yùn)動(dòng)矢量值和發(fā)生錯(cuò)誤解碼且未 完成錯(cuò)誤隱蔽的各第三宏塊的運(yùn)動(dòng)矢量預(yù)測(cè)值,預(yù)測(cè)出該宏塊的運(yùn)動(dòng)矢量值;然后根據(jù)預(yù) 測(cè)出的該宏塊的運(yùn)動(dòng)矢量值,使用當(dāng)前幀的參考幀的像素值進(jìn)行運(yùn)動(dòng)補(bǔ)償,得出該宏塊的 運(yùn)動(dòng)補(bǔ)償值,作為該宏塊的錯(cuò)誤隱蔽結(jié)果。本發(fā)明實(shí)施例一在該解碼錯(cuò)誤的宏塊的相鄰宏 塊也發(fā)生解碼錯(cuò)誤時(shí),依然可以準(zhǔn)確有效地預(yù)測(cè)該宏塊的運(yùn)動(dòng)矢量值。尤其是當(dāng)視頻圖像 中出現(xiàn)較劇烈運(yùn)動(dòng)的情況下,由于采用同一幀內(nèi)與該解碼錯(cuò)誤的宏塊周圍相鄰的宏塊進(jìn)行 運(yùn)動(dòng)矢量值的預(yù)測(cè),比現(xiàn)有的使用解碼錯(cuò)誤的宏塊所在幀的前一幀中與該宏塊位置相同的 宏塊,替代該宏塊的方法,準(zhǔn)確度更好,相應(yīng)的圖像解碼效果也更好。本發(fā)明實(shí)施例二提供的解碼錯(cuò)誤宏塊的錯(cuò)誤隱蔽方法及裝置,不僅對(duì)發(fā)生解碼錯(cuò) 誤的宏塊使用基于空域的方式預(yù)測(cè)其運(yùn)動(dòng)矢量值,還對(duì)該發(fā)生解碼錯(cuò)誤的宏塊使用基于時(shí) 域的方式預(yù)測(cè)其運(yùn)動(dòng)矢量值,即根據(jù)當(dāng)前幀的參考幀中與該宏塊位置對(duì)應(yīng)的宏塊的運(yùn)動(dòng)矢 量值,或者根據(jù)參考幀中與該宏塊位置對(duì)應(yīng)的宏塊的周圍宏塊的運(yùn)動(dòng)矢量值,預(yù)測(cè)出該宏 塊的運(yùn)動(dòng)矢量值,然后比較兩種預(yù)測(cè)方式得到的運(yùn)動(dòng)補(bǔ)償值的錯(cuò)誤隱蔽效果,擇優(yōu)選取其 中一種方式得到的運(yùn)動(dòng)補(bǔ)償值作為錯(cuò)誤隱蔽的結(jié)果。本發(fā)明實(shí)施例二提供的解碼錯(cuò)誤宏塊 的錯(cuò)誤隱蔽方法及裝置同時(shí)使用了基于空域的和時(shí)域的運(yùn)動(dòng)矢量值的預(yù)測(cè)方式,更有效地 利用基于空域的和時(shí)域的預(yù)測(cè)方式的優(yōu)勢(shì),提高錯(cuò)誤隱蔽效果,提高圖像的解碼質(zhì)量。顯然,本領(lǐng)域的技術(shù)人員可以對(duì)本發(fā)明進(jìn)行各種改動(dòng)和變型而不脫離本發(fā)明的精 神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍 之內(nèi),則本發(fā)明也意圖包含這些改動(dòng)和變型在內(nèi)。
權(quán)利要求
1.一種解碼錯(cuò)誤宏塊的錯(cuò)誤隱蔽方法,其特征在于,包括對(duì)當(dāng)前幀進(jìn)行解碼過(guò)程中解碼錯(cuò)誤的宏塊,使用該宏塊周圍相鄰的正確解碼的各第一 宏塊的運(yùn)動(dòng)矢量值、已完成錯(cuò)誤隱蔽的各第二宏塊的運(yùn)動(dòng)矢量值和發(fā)生錯(cuò)誤解碼且未完成 錯(cuò)誤隱蔽的各第三宏塊的運(yùn)動(dòng)矢量預(yù)測(cè)值,預(yù)測(cè)出該宏塊的運(yùn)動(dòng)矢量值;根據(jù)預(yù)測(cè)出的該宏塊的運(yùn)動(dòng)矢量值,使用當(dāng)前幀的參考幀的像素值進(jìn)行運(yùn)動(dòng)補(bǔ)償,得 出該宏塊的運(yùn)動(dòng)補(bǔ)償值,作為該宏塊的錯(cuò)誤隱蔽結(jié)果。
2.如權(quán)利要求1所述的方法,其特征在于,在當(dāng)前幀解碼過(guò)程中出現(xiàn)多個(gè)解碼錯(cuò)誤的 宏塊時(shí),按照解碼時(shí)的先后順序,依次對(duì)各解碼錯(cuò)誤的宏塊進(jìn)行錯(cuò)誤隱蔽的操作。
3.如權(quán)利要求1所述的方法,其特征在于,使用該宏塊周圍相鄰的各第一宏塊宏塊的 運(yùn)動(dòng)矢量值、各第二宏塊的運(yùn)動(dòng)矢量值和各第三宏塊的運(yùn)動(dòng)矢量預(yù)測(cè)值,預(yù)測(cè)出該宏塊的 運(yùn)動(dòng)矢量值,包括確定該宏塊上、下、左、右、左上、左下、右上和右下相鄰的八個(gè)宏塊或該宏塊上、下、左、 右相鄰的四個(gè)宏塊中所包含的各第一宏塊、第二宏塊和第三宏塊;對(duì)所述各第三宏塊的運(yùn)動(dòng)矢量值進(jìn)行預(yù)測(cè),得到各第三宏塊的運(yùn)動(dòng)矢量預(yù)測(cè)值; 對(duì)所述當(dāng)前宏塊相鄰的各第一宏塊的運(yùn)動(dòng)矢量值、各第二宏塊運(yùn)動(dòng)矢量值和各第三宏 塊的運(yùn)動(dòng)矢量預(yù)測(cè)值進(jìn)行加權(quán)平均,得到該宏塊的運(yùn)動(dòng)矢量值。
4.如權(quán)利要求3所述的方法,其特征在于,所述對(duì)所述各第三宏塊的運(yùn)動(dòng)矢量值進(jìn)行 預(yù)測(cè),得到各第三宏塊的運(yùn)動(dòng)矢量預(yù)測(cè)值,包括當(dāng)?shù)谌陦K上、下、左、右、左上、左下、右上和右下相鄰的八個(gè)宏塊中存在正確解碼的 宏塊時(shí),從所述第三宏塊相鄰的八個(gè)宏塊中選取正確解碼的宏塊的運(yùn)動(dòng)矢量值進(jìn)行加權(quán)平 均運(yùn)算,得到第三宏塊的運(yùn)動(dòng)矢量預(yù)測(cè)值;或者當(dāng)?shù)谌陦K上、下、左、右、左上、左下、右上和右下相鄰的八個(gè)宏塊中都不存在正確解 碼的宏塊時(shí),在該第三宏塊周圍的若干宏塊行中查找正確解碼的宏塊,對(duì)查找到的正確解 碼的宏塊的運(yùn)動(dòng)矢量值進(jìn)行加權(quán)平均運(yùn)算得到第三宏塊的運(yùn)動(dòng)矢量預(yù)測(cè)值。
5.如權(quán)利要求3或4所述的方法,其特征在于,根據(jù)該宏塊與其相鄰的各第一宏塊、第 二宏塊和第三宏塊之間運(yùn)動(dòng)矢量值的相關(guān)度,確定加權(quán)平均運(yùn)算中各第一宏塊、第二宏塊 和第三宏塊的權(quán)重。
6.一種解碼錯(cuò)誤宏塊的錯(cuò)誤隱蔽方法,其特征在于,包括對(duì)當(dāng)前幀進(jìn)行解碼過(guò)程中解碼錯(cuò)誤的宏塊,使用該宏塊周圍相鄰的正確解碼的各第一 宏塊的運(yùn)動(dòng)矢量值、已完成錯(cuò)誤隱蔽的各第二宏塊的運(yùn)動(dòng)矢量值和發(fā)生錯(cuò)誤解碼且未完成 錯(cuò)誤隱蔽的各第三宏塊的運(yùn)動(dòng)矢量預(yù)測(cè)值,預(yù)測(cè)出該宏塊的第一運(yùn)動(dòng)矢量值;根據(jù)預(yù)測(cè)出的該宏塊的第一運(yùn)動(dòng)矢量值,使用當(dāng)前幀的參考幀的像素值進(jìn)行運(yùn)動(dòng)補(bǔ) 償,得出該宏塊的第一運(yùn)動(dòng)補(bǔ)償值;根據(jù)當(dāng)前幀的參考幀中與該宏塊位置對(duì)應(yīng)的宏塊的運(yùn)動(dòng)矢量值,或者根據(jù)所述參考幀 中與該宏塊位置對(duì)應(yīng)的宏塊的周圍宏塊的運(yùn)動(dòng)矢量值,預(yù)測(cè)出該宏塊的第二運(yùn)動(dòng)矢量值;根據(jù)預(yù)測(cè)出的該宏塊的第二運(yùn)動(dòng)矢量值,使用當(dāng)前幀的參考幀的像素值進(jìn)行運(yùn)動(dòng)補(bǔ) 償,得出該宏塊的第二運(yùn)動(dòng)補(bǔ)償值;比較第一運(yùn)動(dòng)補(bǔ)償值和第二運(yùn)動(dòng)補(bǔ)償值的錯(cuò)誤隱蔽效果,選擇錯(cuò)誤隱蔽效果較佳的作 為該宏塊的錯(cuò)誤隱蔽結(jié)果。
7.如權(quán)利要求6所述的方法,其特征在于,根據(jù)當(dāng)前幀的參考幀中與該宏塊位置對(duì)應(yīng) 的宏塊的運(yùn)動(dòng)矢量值,預(yù)測(cè)該宏塊的第二運(yùn)動(dòng)矢量值,包括將當(dāng)前幀的參考幀中與該宏塊位置對(duì)應(yīng)的宏塊的運(yùn)動(dòng)矢量值作為該宏塊的第二運(yùn)動(dòng)矢量值;根據(jù)參考幀中與該宏塊位置對(duì)應(yīng)的宏塊的周圍宏塊的運(yùn)動(dòng)矢量值,預(yù)測(cè)出該宏塊的第 二運(yùn)動(dòng)矢量值,包括將參考幀中與該宏塊位置對(duì)應(yīng)的宏塊周圍相鄰的八個(gè)宏塊的運(yùn)動(dòng)矢量值進(jìn)行算術(shù)平 均,運(yùn)算結(jié)果作為該宏塊的第二運(yùn)動(dòng)矢量值。
8.如權(quán)利要求6所述的方法,其特征在于,采用邊緣匹配算法BMA或加強(qiáng)的邊緣匹配算 法EBMA,分別對(duì)該宏塊第一、第二運(yùn)動(dòng)補(bǔ)償值中邊緣像素點(diǎn)的像素值與相鄰的其他該宏塊 的邊緣像素點(diǎn)的像素值的相關(guān)度進(jìn)行計(jì)算,并根據(jù)計(jì)算結(jié)果確定錯(cuò)誤隱蔽的效果。
9.一種解碼錯(cuò)誤宏塊的錯(cuò)誤隱蔽裝置,其特征在于,包括運(yùn)動(dòng)矢量值預(yù)測(cè)單元,用于對(duì)當(dāng)前幀進(jìn)行解碼過(guò)程中解碼錯(cuò)誤的宏塊,使用該宏塊周 圍相鄰的正確解碼的各第一宏塊的運(yùn)動(dòng)矢量值、已完成錯(cuò)誤隱蔽的各第二宏塊的運(yùn)動(dòng)矢量 值和發(fā)生錯(cuò)誤解碼且未完成錯(cuò)誤隱蔽的各第三宏塊的運(yùn)動(dòng)矢量預(yù)測(cè)值,預(yù)測(cè)出該宏塊的運(yùn) 動(dòng)矢量值;運(yùn)動(dòng)補(bǔ)償單元,用于根據(jù)預(yù)測(cè)出的該宏塊的運(yùn)動(dòng)矢量值,使用當(dāng)前幀的參考幀的像素 值進(jìn)行運(yùn)動(dòng)補(bǔ)償,得出該宏塊的運(yùn)動(dòng)補(bǔ)償值,作為該宏塊的錯(cuò)誤隱蔽結(jié)果。
10.如權(quán)利要求9所述的裝置,其特征在于,所述運(yùn)動(dòng)矢量值預(yù)測(cè)單元,包括確定子單元,用于確定該宏塊上、下、左、右、左上、左下、右上和右下相鄰的八個(gè)宏塊或 該宏塊上、下、左、右相鄰的四個(gè)宏塊中所包含的各第一宏塊、第二宏塊和第三宏塊;預(yù)測(cè)子單元,用于對(duì)所述各第三宏塊的運(yùn)動(dòng)矢量值分別進(jìn)行預(yù)測(cè),得到各第三宏塊的 運(yùn)動(dòng)矢量預(yù)測(cè)值;以及對(duì)所述當(dāng)前宏塊相鄰的各第一宏塊的運(yùn)動(dòng)矢量值、各第二宏塊運(yùn)動(dòng) 矢量值和各第三宏塊的運(yùn)動(dòng)矢量預(yù)測(cè)值進(jìn)行加權(quán)平均,得到該宏塊的運(yùn)動(dòng)矢量值。
11.如權(quán)利要求10所述的裝置,其特征在于,所述預(yù)測(cè)子單元,還用于當(dāng)?shù)谌陦K上、 下、左、右、左上、左下、右上和右下相鄰的八個(gè)宏塊中存在正確解碼的宏塊時(shí),從所述第三 宏塊相鄰的八個(gè)宏塊中選取正確解碼的宏塊的運(yùn)動(dòng)矢量值進(jìn)行加權(quán)平均運(yùn)算,得到第三宏 塊的運(yùn)動(dòng)矢量預(yù)測(cè)值;或者當(dāng)?shù)谌陦K上、下、左、右、左上、左下、右上和右下相鄰的八個(gè)宏塊中都不存在正確解 碼的宏塊時(shí),在該第三宏塊周圍的若干宏塊行中查找正確解碼的宏塊,對(duì)查找到的正確解 碼的宏塊的運(yùn)動(dòng)矢量值進(jìn)行加權(quán)平均運(yùn)算得到第三宏塊的運(yùn)動(dòng)矢量預(yù)測(cè)值。
12.—種解碼錯(cuò)誤宏塊的錯(cuò)誤隱蔽裝置,其特征在于,包括第一運(yùn)動(dòng)矢量值預(yù)測(cè)單元,用于對(duì)當(dāng)前幀進(jìn)行解碼過(guò)程中解碼錯(cuò)誤的宏塊,使用該宏 塊周圍相鄰的正確解碼的各第一宏塊的運(yùn)動(dòng)矢量值、已完成錯(cuò)誤隱蔽的各第二宏塊的運(yùn)動(dòng) 矢量值和發(fā)生錯(cuò)誤解碼且未完成錯(cuò)誤隱蔽的各第三宏塊的運(yùn)動(dòng)矢量預(yù)測(cè)值,預(yù)測(cè)出該宏塊 的第一運(yùn)動(dòng)矢量值;第一運(yùn)動(dòng)補(bǔ)償單元,用于根據(jù)預(yù)測(cè)出的該宏塊的第一運(yùn)動(dòng)矢量值,使用當(dāng)前幀的參考 幀的像素值進(jìn)行運(yùn)動(dòng)補(bǔ)償,得出該宏塊的第一運(yùn)動(dòng)補(bǔ)償值;第二運(yùn)動(dòng)矢量值預(yù)測(cè)單元,用于根據(jù)當(dāng)前幀的參考幀中與該宏塊位置對(duì)應(yīng)的宏塊的運(yùn)動(dòng)矢量值,或者根據(jù)所述參考幀中與該宏塊位置對(duì)應(yīng)的宏塊的周圍宏塊的運(yùn)動(dòng)矢量值,預(yù) 測(cè)出該宏塊的第二運(yùn)動(dòng)矢量值;第二運(yùn)動(dòng)補(bǔ)償單元,用于根據(jù)預(yù)測(cè)出的該宏塊的第二運(yùn)動(dòng)矢量值,使用當(dāng)前幀的參考 幀的像素值進(jìn)行運(yùn)動(dòng)補(bǔ)償,得出該宏塊的第二運(yùn)動(dòng)補(bǔ)償值;比較單元,用于比較第一運(yùn)動(dòng)補(bǔ)償值和第二運(yùn)動(dòng)補(bǔ)償值的錯(cuò)誤隱蔽效果,選擇錯(cuò)誤隱 蔽效果較佳的作為該宏塊的錯(cuò)誤隱蔽結(jié)果。
13.如權(quán)利要求12所述的裝置,其特征在于,第二運(yùn)動(dòng)矢量值預(yù)測(cè)單元,還用于將當(dāng)前 幀的參考幀中與該宏塊位置對(duì)應(yīng)的宏塊的運(yùn)動(dòng)矢量值作為該宏塊的第二運(yùn)動(dòng)矢量值;或者 將參考幀中與該宏塊位置對(duì)應(yīng)的宏塊周圍相鄰的八個(gè)宏塊的運(yùn)動(dòng)矢量值進(jìn)行算術(shù)平均,運(yùn) 算結(jié)果作為該宏塊的第二運(yùn)動(dòng)矢量值。
全文摘要
本發(fā)明公開(kāi)了一種解碼錯(cuò)誤宏塊的錯(cuò)誤隱蔽方法及裝置,其中方法包括對(duì)當(dāng)前幀進(jìn)行解碼過(guò)程中解碼錯(cuò)誤的宏塊,使用該宏塊周圍相鄰的正確解碼的各第一宏塊的運(yùn)動(dòng)矢量值、已完成錯(cuò)誤隱蔽的各第二宏塊的運(yùn)動(dòng)矢量值和發(fā)生錯(cuò)誤解碼且未完成錯(cuò)誤隱蔽的各第三宏塊的運(yùn)動(dòng)矢量預(yù)測(cè)值,預(yù)測(cè)出該宏塊的運(yùn)動(dòng)矢量值;根據(jù)預(yù)測(cè)出的運(yùn)動(dòng)矢量值,使用當(dāng)前幀的參考幀的像素值進(jìn)行運(yùn)動(dòng)補(bǔ)償,得出該宏塊的運(yùn)動(dòng)補(bǔ)償值作為該宏塊的錯(cuò)誤隱蔽結(jié)果。在該解碼錯(cuò)誤的宏塊相鄰宏塊也發(fā)生解碼錯(cuò)誤時(shí),依然可以準(zhǔn)確有效地預(yù)測(cè)該宏塊的運(yùn)動(dòng)矢量值。針對(duì)視頻圖像中出現(xiàn)較劇烈運(yùn)動(dòng)的情況,由于采用同一幀內(nèi)與解碼錯(cuò)誤的宏塊相鄰的宏塊進(jìn)行運(yùn)動(dòng)矢量值的預(yù)測(cè),錯(cuò)誤隱蔽的效果更好。
文檔編號(hào)H04N7/26GK102055987SQ20091021086
公開(kāi)日2011年5月11日 申請(qǐng)日期2009年11月11日 優(yōu)先權(quán)日2009年11月11日
發(fā)明者左雯, 梁立偉, 王寧, 范文杰, 黃曉紅 申請(qǐng)人:中興通訊股份有限公司