專(zhuān)利名稱(chēng):Mpeg-4視頻碼流的錯(cuò)誤恢復(fù)方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種對(duì)由于信道誤碼嚴(yán)重需要進(jìn)行錯(cuò)誤恢復(fù)的方法和裝置,尤其涉及針對(duì)MPEG-4視頻碼流出現(xiàn)誤碼時(shí)進(jìn)行錯(cuò)誤恢復(fù)的方法和裝置。
背景技術(shù):
在目前的視頻業(yè)務(wù)中,由于后續(xù)解碼的容錯(cuò)性能不是很好,當(dāng)信道誤碼比較嚴(yán)重時(shí),在解碼器解碼失敗的情況下會(huì)有很多花屏現(xiàn)象,嚴(yán)重影響視頻質(zhì)量。目前對(duì)于視頻錯(cuò)誤恢復(fù)的技術(shù)主要集中在對(duì)壓縮視頻碼流解碼到像素域,然后在像素域通過(guò)各種算法來(lái)恢復(fù)。主要通過(guò)解碼后像素域的圖像錯(cuò)誤塊的左右上下宏塊的空間相關(guān)性來(lái)恢復(fù)錯(cuò)誤宏塊的圖像,通過(guò)解碼后像素域的圖像錯(cuò)誤塊對(duì)應(yīng)位置的前一幀相鄰宏塊的信息來(lái)恢復(fù)當(dāng)前宏塊的運(yùn)動(dòng)矢量等信息。這種方法的好處在于由于最后是在像素域進(jìn)行錯(cuò)誤恢復(fù),所以錯(cuò)誤恢復(fù)效果比較好。但是解碼到像素域的錯(cuò)誤恢復(fù)的方法有比較大的局限性,主要表現(xiàn)在其需要在解碼器內(nèi)部實(shí)現(xiàn),對(duì)于第三方提供的解碼器如果沒(méi)有內(nèi)部實(shí)現(xiàn)錯(cuò)誤恢復(fù),則后續(xù)錯(cuò)誤恢復(fù)算法基本沒(méi)有可能實(shí)現(xiàn)。同時(shí),即使在像素域進(jìn)行錯(cuò)誤恢復(fù),其計(jì)算復(fù)雜度也相當(dāng)大。
發(fā)明內(nèi)容
本發(fā)明的目的在于解決上述問(wèn)題,提供了一種MPEG-4視頻碼流的錯(cuò)誤恢復(fù)方法, 能大大減少由于解碼器不能正確解碼而造成的主觀質(zhì)量下降的問(wèn)題,并且與通常的像素域錯(cuò)誤恢復(fù)相比計(jì)算復(fù)雜度低。本發(fā)明的另一目的在于提供了一種MPEG-4視頻碼流的錯(cuò)誤恢復(fù)裝置。本發(fā)明的技術(shù)方案為本發(fā)明公開(kāi)了一種MPEG-4視頻碼流的錯(cuò)誤恢復(fù)方法,在像素域解碼之前的壓縮域進(jìn)行錯(cuò)誤恢復(fù),該方法包括語(yǔ)法層糾錯(cuò)步驟對(duì)當(dāng)前的MPEG-4視頻碼流進(jìn)行僅語(yǔ)法頭的解碼,對(duì)解碼得到的語(yǔ)法頭各個(gè)語(yǔ)法變量與MPEG-4標(biāo)準(zhǔn)比較,在當(dāng)前語(yǔ)法變量不符合MPEG-4標(biāo)準(zhǔn)規(guī)定或者前后矛盾的情況下,按照MPEG-4標(biāo)準(zhǔn)生成更新的語(yǔ)法變量并進(jìn)行編碼重構(gòu),以提供符合后續(xù)解碼器規(guī)范的視頻碼流;宏塊層糾錯(cuò)步驟根據(jù)錯(cuò)誤宏塊所在的位置分別進(jìn)行相應(yīng)的處理,進(jìn)行宏塊層的錯(cuò)誤恢復(fù)。根據(jù)本發(fā)明的MPEG-4視頻碼流的錯(cuò)誤恢復(fù)方法的一實(shí)施例,在語(yǔ)法層糾錯(cuò)步驟中,進(jìn)一步包括依次對(duì)MPEG-4 視頻碼流的 VisualObjectkquence、VisualObject、 VideoObjectLayer,VideoObjectPlane四個(gè)語(yǔ)法結(jié)構(gòu)進(jìn)行分析并糾錯(cuò),按照MPEG-4標(biāo)準(zhǔn)的語(yǔ)義規(guī)范對(duì)該四個(gè)語(yǔ)法結(jié)構(gòu)按照比特位逐次糾正,使MPEG-4視頻碼流符合后續(xù)解碼器規(guī)范的要求。根據(jù)本發(fā)明的MPEG-4視頻碼流的錯(cuò)誤恢復(fù)方法的一實(shí)施例,宏塊層糾錯(cuò)步驟進(jìn)一步包括對(duì)于當(dāng)前錯(cuò)誤宏塊在I幀內(nèi)且前一幀為P幀的情況,通過(guò)相鄰兩幀之間的空間相關(guān)性進(jìn)行錯(cuò)誤恢復(fù);對(duì)于當(dāng)前錯(cuò)誤宏塊在I幀之后的一個(gè)P幀內(nèi)的情況,用下一個(gè)P幀替代當(dāng)前錯(cuò)誤宏塊所在的P幀;對(duì)于當(dāng)前錯(cuò)誤宏塊在P幀之后的一個(gè)P幀內(nèi)的情況,通過(guò)當(dāng)前錯(cuò)誤宏塊所在幀的運(yùn)動(dòng)趨勢(shì)的計(jì)算方法來(lái)預(yù)測(cè)當(dāng)前錯(cuò)誤宏塊以及后續(xù)宏塊的運(yùn)動(dòng)矢量,且不對(duì)當(dāng)前錯(cuò)誤宏塊的殘差像素值進(jìn)行編碼,而是用當(dāng)前錯(cuò)誤宏塊所在幀的前一幀對(duì)應(yīng)位置宏塊的像素值進(jìn)行錯(cuò)誤恢復(fù)。根據(jù)本發(fā)明的MPEG-4視頻碼流的錯(cuò)誤恢復(fù)方法的一實(shí)施例,對(duì)于當(dāng)前錯(cuò)誤宏塊在I幀內(nèi)且前一幀為P幀的情況,細(xì)化的處理包括將當(dāng)前幀的編碼類(lèi)型變?yōu)镻幀,同時(shí)將從當(dāng)前錯(cuò)誤宏塊開(kāi)始到幀結(jié)束的宏塊的編碼類(lèi)型改成SKIP模式,沿用前一個(gè)P幀的信息,使當(dāng)前錯(cuò)誤宏塊之前的宏塊的編碼類(lèi)型維持INTRA模式。根據(jù)本發(fā)明的MPEG-4視頻碼流的錯(cuò)誤恢復(fù)方法的一實(shí)施例,對(duì)于當(dāng)前錯(cuò)誤宏塊在P幀之后的一個(gè)P幀內(nèi)的情況,細(xì)化的處理包括以當(dāng)前錯(cuò)誤宏塊所在幀的存在誤碼的行的上一行宏塊與上一個(gè)幀與之對(duì)應(yīng)的一行之間的運(yùn)動(dòng)矢量的差值的平均值作為運(yùn)動(dòng)趨勢(shì),計(jì)算公式為MV (trend) = (Pre_MV
[n]-MV
[n])/n 公式(1)其中MV
[η]為當(dāng)前錯(cuò)誤宏塊所在幀的存在誤碼的行的上一行宏塊的運(yùn)動(dòng)矢量,Pre_MV
[η]為當(dāng)前錯(cuò)誤宏塊所在幀的上一個(gè)幀與之對(duì)應(yīng)的一行宏塊的運(yùn)動(dòng)矢量,η 為圖像中一行宏塊的數(shù)量值,MV(trend)為當(dāng)前錯(cuò)誤宏塊的運(yùn)動(dòng)趨勢(shì);計(jì)算當(dāng)前錯(cuò)誤宏塊的殘差運(yùn)動(dòng)矢量,計(jì)算公式為MV (det al) = MV (previous) -MV (media) +MV (trend)公式 O)其中MV(Previ0Us)為當(dāng)前錯(cuò)誤宏塊前一幀對(duì)應(yīng)位置宏塊的運(yùn)動(dòng)矢量,MV(media) 為預(yù)測(cè)運(yùn)動(dòng)矢量,MV(detal)為當(dāng)前錯(cuò)誤宏塊的殘差運(yùn)動(dòng)矢量;將當(dāng)前錯(cuò)誤宏塊的殘差運(yùn)動(dòng)矢量進(jìn)行編碼,以生成更新后的MPEG-4視頻碼流。本發(fā)明還公開(kāi)了一種MPEG-4視頻碼流的錯(cuò)誤恢復(fù)裝置,位于MPEG-4解碼器之前, 對(duì)需要解碼的MPEG-4視頻碼流進(jìn)行預(yù)處理,該裝置進(jìn)一步包括碼流讀取模塊,接收需要解碼的MPEG-4視頻碼流;語(yǔ)法層糾錯(cuò)模塊,連接碼流讀取模塊,對(duì)當(dāng)前的MPEG-4視頻碼流進(jìn)行僅語(yǔ)法頭的解碼,對(duì)解碼得到的語(yǔ)法頭各個(gè)語(yǔ)法變量與MPEG-4標(biāo)準(zhǔn)比較,在當(dāng)前語(yǔ)法變量不符合 MPEG-4標(biāo)準(zhǔn)規(guī)定或者前后矛盾的情況下,按照MPEG-4標(biāo)準(zhǔn)生成更新的語(yǔ)法變量并進(jìn)行編碼重構(gòu),以提供符合后續(xù)MPEG-4解碼器規(guī)范的MPEG-4視頻碼流;宏塊層處理模塊,根據(jù)錯(cuò)誤宏塊所在的位置分別進(jìn)行相應(yīng)的處理,獲得錯(cuò)誤宏塊的殘差運(yùn)動(dòng)矢量以及編碼模式信息;碼流糾錯(cuò)模塊,根據(jù)錯(cuò)誤宏塊的殘差運(yùn)動(dòng)矢量以及編碼模式信息通過(guò)修改比特值的方式完成對(duì)MPEG-4視頻碼流的糾錯(cuò)。根據(jù)本發(fā)明的MPEG-4視頻碼流的錯(cuò)誤恢復(fù)裝置的一實(shí)施例,在語(yǔ)法層糾錯(cuò)模塊中,依次對(duì) MPEG-4 視頻碼流的 VisualOb jectSequence>VisualObject>VideoObjectLayer> VideoObjectPlane四個(gè)語(yǔ)法結(jié)構(gòu)進(jìn)行分析并糾錯(cuò),按照MPEG-4標(biāo)準(zhǔn)的語(yǔ)義規(guī)范對(duì)該四個(gè)語(yǔ)法結(jié)構(gòu)按照比特位逐次糾正,使MPEG-4視頻碼流符合后續(xù)解碼器規(guī)范的要求。根據(jù)本發(fā)明的MPEG-4視頻碼流的錯(cuò)誤恢復(fù)裝置的一實(shí)施例,宏塊層處理模塊進(jìn)一步包括第一類(lèi)錯(cuò)誤宏塊處理單元,對(duì)于當(dāng)前錯(cuò)誤宏塊在I幀內(nèi)且前一幀為P幀的情況,通過(guò)相鄰兩幀之間的空間相關(guān)性進(jìn)行錯(cuò)誤恢復(fù);第二類(lèi)錯(cuò)誤宏塊處理單元,對(duì)于當(dāng)前錯(cuò)誤宏塊在I幀之后的一個(gè)P幀內(nèi)的情況,用下一個(gè)P幀替代當(dāng)前錯(cuò)誤宏塊所在的P幀;第三類(lèi)錯(cuò)誤宏塊處理單元,對(duì)于當(dāng)前錯(cuò)誤宏塊在P幀之后的一個(gè)P幀內(nèi)的情況,通過(guò)當(dāng)前錯(cuò)誤宏塊所在幀的運(yùn)動(dòng)趨勢(shì)的計(jì)算方法來(lái)預(yù)測(cè)當(dāng)前錯(cuò)誤宏塊以及后續(xù)宏塊的運(yùn)動(dòng)矢量,且不對(duì)當(dāng)前錯(cuò)誤宏塊的殘差像素值進(jìn)行編碼,而是用當(dāng)前錯(cuò)誤宏塊所在幀的前一幀對(duì)應(yīng)位置宏塊的像素值進(jìn)行錯(cuò)誤恢復(fù)。根據(jù)本發(fā)明的MPEG-4視頻碼流的錯(cuò)誤恢復(fù)裝置的一實(shí)施例,該第一類(lèi)錯(cuò)誤宏塊處理單元的具體處理是將當(dāng)前幀的編碼類(lèi)型變?yōu)镻幀,同時(shí)將從當(dāng)前錯(cuò)誤宏塊開(kāi)始到幀結(jié)束的宏塊的編碼類(lèi)型改成SKIP模式,沿用前一個(gè)P幀的信息,使當(dāng)前錯(cuò)誤宏塊之前的宏塊的編碼類(lèi)型維持INTRA模式。根據(jù)本發(fā)明的MPEG-4視頻碼流的錯(cuò)誤恢復(fù)裝置的一實(shí)施例,該第三類(lèi)錯(cuò)誤宏塊處理單元進(jìn)一步包括錯(cuò)誤宏塊運(yùn)動(dòng)趨勢(shì)計(jì)算單元,以當(dāng)前錯(cuò)誤宏塊所在幀的存在誤碼的行的上一個(gè)行宏塊與上一個(gè)幀與之對(duì)應(yīng)的一行之間的運(yùn)動(dòng)矢量的差值的平均值作為運(yùn)動(dòng)趨勢(shì),計(jì)算公式為MV (trend) = (Pre_MV
[n]-MV
[n])/n 公式(1)其中MV
[η]為當(dāng)前錯(cuò)誤宏塊所在幀的存在誤碼的行的上一行宏塊的運(yùn)動(dòng)矢量,Pre_MV
[η]為當(dāng)前錯(cuò)誤宏塊所在幀的上一個(gè)幀與之對(duì)應(yīng)的一行宏塊的運(yùn)動(dòng)矢量,η 為圖像中一行宏塊的數(shù)量值,MV(trend)為當(dāng)前錯(cuò)誤宏塊的運(yùn)動(dòng)趨勢(shì);殘差運(yùn)動(dòng)矢量計(jì)算單元,計(jì)算當(dāng)前錯(cuò)誤宏塊的殘差運(yùn)動(dòng)矢量,計(jì)算公式為MV (det al) = MV (previous) -MV (media) +MV (trend)公式 O)其中MV(Previ0Us)為當(dāng)前錯(cuò)誤宏塊前一幀對(duì)應(yīng)位置宏塊的運(yùn)動(dòng)矢量,MV(media) 為預(yù)測(cè)運(yùn)動(dòng)矢量,MV(detal)為當(dāng)前錯(cuò)誤宏塊的殘差運(yùn)動(dòng)矢量。本發(fā)明對(duì)比現(xiàn)有技術(shù)有如下的有益效果本發(fā)明主要是在壓縮域進(jìn)行錯(cuò)誤恢復(fù), 而并未進(jìn)行像素域的解碼,與傳統(tǒng)的像素域錯(cuò)誤恢復(fù)相比復(fù)雜度低。而本方案的實(shí)現(xiàn)是在解碼器之前添加一個(gè)預(yù)解碼模塊,將MPEG-4視頻碼流恢復(fù)成符合相應(yīng)標(biāo)準(zhǔn)的規(guī)范碼流,以便后續(xù)解碼器能夠正確解碼,從而保證后續(xù)解碼不會(huì)出現(xiàn)花屏等嚴(yán)重的問(wèn)題。由于其通用性好獨(dú)立性高,添加在MPEG-4解碼器前面,所以不會(huì)對(duì)后續(xù)的解碼器產(chǎn)生依賴(lài)。
圖1是本發(fā)明的MPEG-4視頻碼流的錯(cuò)誤恢復(fù)方法的一個(gè)較佳實(shí)施例的流程圖。圖2是本發(fā)明的MPEG-4視頻碼流的錯(cuò)誤恢復(fù)裝置的一個(gè)較佳實(shí)施例的原理圖。
圖3是本發(fā)明的宏塊層處理模塊的細(xì)化原理圖。
具體實(shí)施例方式下面結(jié)合附圖和實(shí)施例對(duì)本發(fā)明作進(jìn)一步的描述。MPEG-4視頻碼流的錯(cuò)誤恢復(fù)方法的實(shí)施例圖1示出了本發(fā)明的MPEG-4視頻碼流的錯(cuò)誤恢復(fù)方法的實(shí)施例的詳細(xì)流程。請(qǐng)參見(jiàn)圖1,下面是對(duì)本方法流程中各個(gè)步驟的說(shuō)明。本實(shí)施例的方法是在像素域解碼之前的壓縮域進(jìn)行的錯(cuò)誤恢復(fù)。主要是分為兩個(gè)階段的糾錯(cuò),第一個(gè)階段是語(yǔ)法層糾錯(cuò)步驟,第二個(gè)階段是宏塊層糾錯(cuò)步驟。在第一階段, 主要是對(duì)當(dāng)前的MPEG-4視頻碼流進(jìn)行僅語(yǔ)法頭的解碼,對(duì)解碼得到的語(yǔ)法頭各個(gè)語(yǔ)法變量與MPEG-4標(biāo)準(zhǔn)比較,在當(dāng)前語(yǔ)法變量不符合MPEG-4標(biāo)準(zhǔn)規(guī)定或者前后矛盾的情況下,按照MPEG-4標(biāo)準(zhǔn)生成更新的語(yǔ)法變量并進(jìn)行編碼重構(gòu),以提供符合后續(xù)編碼器規(guī)范的視頻碼流。在第二階段,是根據(jù)錯(cuò)誤宏塊所在的位置分別進(jìn)行相應(yīng)的處理,進(jìn)行宏塊層的錯(cuò)誤恢
Μ. ο步驟SlOO 進(jìn)行語(yǔ)法層糾錯(cuò)。語(yǔ)法層的糾錯(cuò)是對(duì)當(dāng)前的MPEG-4視頻碼流進(jìn)行僅語(yǔ)法頭的解碼,對(duì)解碼得到的語(yǔ)法頭各個(gè)語(yǔ)法變量與MPEG-4標(biāo)準(zhǔn)進(jìn)行比較,在當(dāng)前語(yǔ)法變量不符合MPEG-4標(biāo)準(zhǔn)規(guī)定或者前后有矛盾的情況下,按照MPEG-4準(zhǔn)備生成更新后的語(yǔ)法變量并進(jìn)行編碼重構(gòu),以提供符合后續(xù)解碼器規(guī)范的視頻碼流。進(jìn)一步的,依次對(duì)MPEG-4 視頻碼流的 VisualObjectkquence、VisualObject、 VideoObjectLayer,VideoObjectPlane四個(gè)語(yǔ)法結(jié)構(gòu)進(jìn)行分析并糾錯(cuò),按照MPEG-4標(biāo)準(zhǔn)的語(yǔ)義規(guī)范對(duì)這四個(gè)語(yǔ)法結(jié)構(gòu)按照比特位逐次糾正,使MPEG-4視頻碼流符合后續(xù)解碼器規(guī)范的要求。步驟S102 對(duì)當(dāng)前幀中的每一個(gè)宏塊進(jìn)行處理。由于MPEG-4是壓縮編碼碼流,所以一旦一幀中某一個(gè)宏塊出現(xiàn)了無(wú)法,其之后的當(dāng)前幀的所有信息都不能利用,因此需要一個(gè)預(yù)解碼錯(cuò)誤恢復(fù)的處理。步驟S104 判斷當(dāng)前誤碼宏塊所在的幀是否為I幀且前一幀是否為P幀。如果成立,進(jìn)入步驟S106,如果不成立,進(jìn)入步驟S108。步驟S106 將當(dāng)前幀的編碼類(lèi)型變?yōu)镻巾貞,同時(shí)將當(dāng)前錯(cuò)誤宏塊開(kāi)始到幀結(jié)束的宏塊的編碼類(lèi)型改為SKIP (跳過(guò)編碼模式)模式,并沿用前一個(gè)P幀的信息,使當(dāng)前錯(cuò)誤宏塊之前的宏塊的編碼類(lèi)型維持INTRA(幀內(nèi)編碼模式)模式。步驟S108 判斷當(dāng)前錯(cuò)誤宏塊是否在工幀之后的一個(gè)P幀內(nèi)。如果成立則進(jìn)入步驟S110,如果不成立則進(jìn)入步驟S112。步驟SllO 用下一個(gè)P幀替代當(dāng)前錯(cuò)誤宏塊所在的P幀。步驟S112 判斷當(dāng)前錯(cuò)誤宏塊是否在P幀之后的一個(gè)P幀中。如果成立則進(jìn)入步驟S114,否則返回步驟S102中進(jìn)入下一個(gè)宏塊的處理。步驟S114 獲得當(dāng)前錯(cuò)誤宏塊的運(yùn)動(dòng)趨勢(shì)。在本實(shí)施例中是使用通過(guò)當(dāng)前幀的運(yùn)動(dòng)趨勢(shì)的計(jì)算方法來(lái)預(yù)測(cè)當(dāng)前錯(cuò)誤宏塊及后續(xù)宏塊的運(yùn)動(dòng)矢量,而宏塊的殘差像素值并不編碼仍用前一幀對(duì)應(yīng)位置宏塊的像素值的
8方法來(lái)做錯(cuò)誤恢復(fù)。步驟S116 通過(guò)前一幀同位置宏塊的運(yùn)動(dòng)矢量、當(dāng)前宏塊預(yù)測(cè)運(yùn)動(dòng)矢量、運(yùn)動(dòng)趨勢(shì)計(jì)算當(dāng)前錯(cuò)誤宏塊的殘差值。首先,以當(dāng)前錯(cuò)誤宏塊所在幀的存在誤碼的上一行宏塊與上一個(gè)幀與之對(duì)應(yīng)的一行宏塊之間的運(yùn)動(dòng)矢量的差值的平均值作為運(yùn)動(dòng)趨勢(shì),計(jì)算公式為MV (trend) = (Pre_MV
[n]-MV
[n])/n 公式(1)其中MV
[η]為當(dāng)前錯(cuò)誤宏塊所在幀的存在誤碼的行的上一行宏塊的運(yùn)動(dòng)矢量,Pre_MV
[η]為當(dāng)前錯(cuò)誤宏塊所在幀的上一個(gè)幀與之對(duì)應(yīng)的一行宏塊的運(yùn)動(dòng)矢量,η 為圖像中一行宏塊的數(shù)量值,MV(trend)為當(dāng)前錯(cuò)誤宏塊的運(yùn)動(dòng)趨勢(shì)。其次,計(jì)算當(dāng)前錯(cuò)誤宏塊的殘差運(yùn)動(dòng)矢量,計(jì)算公式為MV (det al) = MV (previous) -MV (media) +MV (trend)公式 O)其中MV(Previ0Us)為當(dāng)前錯(cuò)誤宏塊前一幀對(duì)應(yīng)位置宏塊的運(yùn)動(dòng)矢量,MV(media) 為預(yù)測(cè)運(yùn)動(dòng)矢量,MV(detal)為當(dāng)前錯(cuò)誤宏塊的殘差運(yùn)動(dòng)矢量。步驟S118 判斷當(dāng)前錯(cuò)誤宏塊是否為最后一個(gè)宏塊。如果是則進(jìn)入步驟S120,否則返回步驟S102進(jìn)行下一個(gè)宏塊的處理。步驟S120 重新生成新的MPEG-4碼流。將當(dāng)前錯(cuò)誤宏塊的殘差運(yùn)動(dòng)矢量進(jìn)行編碼,以生成更新后的MPEG-4視頻碼流。MPEG-4視頻碼流的錯(cuò)誤恢復(fù)裝置的實(shí)施例圖2示出了本發(fā)明的MPEG-4視頻碼流的錯(cuò)誤恢復(fù)裝置的實(shí)施例。錯(cuò)誤恢復(fù)裝置位于MPEG-4解碼器之前,對(duì)需要解碼的MPEG-4視頻碼流進(jìn)行預(yù)處理。請(qǐng)參見(jiàn)圖2,本實(shí)施例的MPEG-4視頻碼流的錯(cuò)誤恢復(fù)裝置包括依次連接的四個(gè)模塊碼流讀取模塊10、語(yǔ)法層糾錯(cuò)模塊12、宏塊層處理模塊14以及碼流糾錯(cuò)模塊16。碼流讀取模塊10接收需要解碼的MPEG-4視頻碼流,將接收到的MPEG-4視頻碼流傳遞給下一個(gè)的語(yǔ)法層糾錯(cuò)模塊12。語(yǔ)法層糾錯(cuò)模塊12對(duì)MPEG-4視頻碼流進(jìn)行僅語(yǔ)法頭的解碼,對(duì)解碼得到的語(yǔ)法頭各個(gè)語(yǔ)法變量與MPEG-4標(biāo)準(zhǔn)比較,在當(dāng)前語(yǔ)法變量不符合MPEG-4標(biāo)準(zhǔn)規(guī)定或者前后矛盾的情況下,按照MPEG-4標(biāo)準(zhǔn)生成更新的語(yǔ)法變量并進(jìn)行編碼重構(gòu),以提供符合后續(xù) MPEG-4解碼器規(guī)范的MPEG-4視頻碼流,然后將處理后的碼流交給下一個(gè)的宏塊層處理模塊14。在語(yǔ)法層糾錯(cuò)模塊12中,依次對(duì)MPEG-4視頻碼流的VisualObjecUequence、 VisualObject、VideoObjectLayer, VideoObjectPlane 四個(gè)語(yǔ)法結(jié)構(gòu)進(jìn)行分析糾錯(cuò),按照 MPEG-4標(biāo)準(zhǔn)的語(yǔ)義規(guī)范對(duì)這四個(gè)語(yǔ)法結(jié)構(gòu)按照比特位逐次糾正,使MPEG-4視頻碼流符合后續(xù)解碼器規(guī)范的要求。在經(jīng)過(guò)語(yǔ)法層糾錯(cuò)模塊12的處理后將已經(jīng)重新生成的語(yǔ)法層糾正好的MPEG-4碼流傳遞給下一個(gè)的宏塊層處理模塊14。宏塊層處理模塊14根據(jù)錯(cuò)誤宏塊所在的位置分別進(jìn)行相應(yīng)的處理,獲得錯(cuò)誤宏塊的殘差運(yùn)動(dòng)矢量以及編碼模式信息。請(qǐng)同時(shí)參照?qǐng)D3,宏塊層處理模塊14進(jìn)一步包括第一類(lèi)錯(cuò)誤宏塊處理單元140、第二類(lèi)錯(cuò)誤宏塊處理單元142以及第三類(lèi)錯(cuò)誤宏塊處理單元 144。第一類(lèi)錯(cuò)誤宏塊處理單元140是對(duì)當(dāng)前錯(cuò)誤宏塊在I幀內(nèi)且前一幀為P幀的情況進(jìn)行處理,主要是通過(guò)相鄰兩幀之間的空間相關(guān)性進(jìn)行錯(cuò)誤恢復(fù)。具體的處理過(guò)程是將當(dāng)前幀的編碼類(lèi)型變?yōu)镻幀,同時(shí)將從當(dāng)前錯(cuò)誤宏塊開(kāi)始到幀結(jié)束的宏塊的編碼類(lèi)型改為 SKIP模式,并沿用前一個(gè)P幀的信息,使當(dāng)前錯(cuò)誤宏塊之前的編碼類(lèi)型維持INTRA模式。第二類(lèi)錯(cuò)誤宏塊處理單元142是對(duì)當(dāng)前錯(cuò)誤宏塊在I幀之后的一個(gè)P幀內(nèi)的情況進(jìn)行處理,用下一個(gè)P幀替代當(dāng)前錯(cuò)誤宏塊所在的P幀。第三類(lèi)錯(cuò)誤宏塊處理單元144是對(duì)當(dāng)前錯(cuò)誤宏塊在P幀之后的一個(gè)P幀內(nèi)的情況進(jìn)行處理,通過(guò)當(dāng)前錯(cuò)誤宏塊所在幀的運(yùn)動(dòng)趨勢(shì)的計(jì)算方法來(lái)預(yù)測(cè)當(dāng)前錯(cuò)誤宏塊以及后續(xù)宏塊的運(yùn)動(dòng)矢量,且不對(duì)當(dāng)前錯(cuò)誤宏塊的殘差像素值進(jìn)行編碼,而是用當(dāng)前錯(cuò)誤宏塊所在幀的前一幀對(duì)應(yīng)位置宏塊的像素值進(jìn)行錯(cuò)誤恢復(fù)。對(duì)于這個(gè)第三類(lèi)錯(cuò)誤宏塊處理單元144,是由錯(cuò)誤宏塊運(yùn)動(dòng)趨勢(shì)計(jì)算單元1440和殘差運(yùn)動(dòng)矢量計(jì)算單元1442共同構(gòu)成。對(duì)于錯(cuò)誤宏塊運(yùn)動(dòng)趨勢(shì)計(jì)算單元1440,以當(dāng)前錯(cuò)誤宏塊所在幀的存在誤碼的行的上一個(gè)行宏塊與上一個(gè)幀與之對(duì)應(yīng)的一行宏塊之間的運(yùn)動(dòng)矢量的差值的平均值作為運(yùn)動(dòng)趨勢(shì),計(jì)算公式為MV (trend) = (Pre_MV
[n]-MV
[n])/n 公式(1)其中MV
[η]為當(dāng)前錯(cuò)誤宏塊所在幀的存在誤碼的行的上一行宏塊的運(yùn)動(dòng)矢量,Pre_MV
[η]為當(dāng)前錯(cuò)誤宏塊所在幀的上一個(gè)幀與之對(duì)應(yīng)的一行宏塊的運(yùn)動(dòng)矢量,η 為圖像中一行宏塊的數(shù)量值,MV(trend)為當(dāng)前錯(cuò)誤宏塊的運(yùn)動(dòng)趨勢(shì)。對(duì)于殘差運(yùn)動(dòng)矢量計(jì)算單元1442,計(jì)算當(dāng)前錯(cuò)誤宏塊的殘差運(yùn)動(dòng)矢量,計(jì)算公式為MV (det al) = MV (previous) -MV (media) +MV (trend)公式 O)其中MV(Previ0Us)為當(dāng)前錯(cuò)誤宏塊前一幀對(duì)應(yīng)位置宏塊的運(yùn)動(dòng)矢量,MV(media) 為預(yù)測(cè)運(yùn)動(dòng)矢量,MV(detal)為當(dāng)前錯(cuò)誤宏塊的殘差運(yùn)動(dòng)矢量。最后,宏塊層處理模塊14將新的殘差運(yùn)動(dòng)矢量以及編碼模式信息傳輸給下一個(gè)的碼流糾錯(cuò)模塊16。碼流糾錯(cuò)模塊16根據(jù)錯(cuò)誤宏塊的殘差運(yùn)動(dòng)矢量以及編碼模式信息通過(guò)修改比特值的方法完成對(duì)MPEG-4視頻碼流的糾錯(cuò)。本發(fā)明的主要改進(jìn)點(diǎn)在于,一是在壓縮域進(jìn)行錯(cuò)誤恢復(fù)而并未進(jìn)行像素域解碼, 一是通過(guò)計(jì)算當(dāng)前幀的整體運(yùn)動(dòng)趨勢(shì)進(jìn)行錯(cuò)誤恢復(fù)。與傳統(tǒng)的像素域錯(cuò)誤恢復(fù)相比復(fù)雜度低、通用性好、獨(dú)立性高,由于處理是在MPEG-4解碼器之前進(jìn)行的,因而不會(huì)對(duì)后續(xù)的解碼器產(chǎn)生依賴(lài)。上述實(shí)施例是提供給本領(lǐng)域普通技術(shù)人員來(lái)實(shí)現(xiàn)或使用本發(fā)明的,本領(lǐng)域普通技術(shù)人員可在不脫離本發(fā)明的發(fā)明思想的情況下,對(duì)上述實(shí)施例做出種種修改或變化,因而本發(fā)明的保護(hù)范圍并不被上述實(shí)施例所限,而應(yīng)該是符合權(quán)利要求書(shū)提到的創(chuàng)新性特征的最大范圍。
權(quán)利要求
1.一種MPEG-4視頻碼流的錯(cuò)誤恢復(fù)方法,在像素域解碼之前的壓縮域進(jìn)行錯(cuò)誤恢復(fù), 該方法包括語(yǔ)法層糾錯(cuò)步驟對(duì)當(dāng)前的MPEG-4視頻碼流進(jìn)行僅語(yǔ)法頭的解碼,對(duì)解碼得到的語(yǔ)法頭各個(gè)語(yǔ)法變量與MPEG-4標(biāo)準(zhǔn)比較,在當(dāng)前語(yǔ)法變量不符合MPEG-4標(biāo)準(zhǔn)規(guī)定或者前后矛盾的情況下,按照MPEG-4標(biāo)準(zhǔn)生成更新的語(yǔ)法變量并進(jìn)行編碼重構(gòu),以提供符合后續(xù)解碼器規(guī)范的視頻碼流;宏塊層糾錯(cuò)步驟根據(jù)錯(cuò)誤宏塊所在的位置分別進(jìn)行相應(yīng)的處理,進(jìn)行宏塊層的錯(cuò)誤恢復(fù)。
2.根據(jù)權(quán)利要求1所述的MPEG-4視頻碼流的錯(cuò)誤恢復(fù)方法,其特征在于,在語(yǔ)法層糾錯(cuò)步驟中,進(jìn)一步包括依次對(duì) MPEG-4 視頻碼流的 VisualObjectkquence、VisualObject、 VideoObjectLayer,VideoObjectPlane四個(gè)語(yǔ)法結(jié)構(gòu)進(jìn)行分析并糾錯(cuò),按照MPEG-4標(biāo)準(zhǔn)的語(yǔ)義規(guī)范對(duì)該四個(gè)語(yǔ)法結(jié)構(gòu)按照比特位逐次糾正,使MPEG-4視頻碼流符合后續(xù)解碼器規(guī)范的要求。
3.根據(jù)權(quán)利要求1所述的MPEG-4視頻碼流的錯(cuò)誤恢復(fù)方法,其特征在于,宏塊層糾錯(cuò)步驟進(jìn)一步包括對(duì)于當(dāng)前錯(cuò)誤宏塊在I幀內(nèi)且前一幀為P幀的情況,通過(guò)相鄰兩幀之間的空間相關(guān)性進(jìn)行錯(cuò)誤恢復(fù);對(duì)于當(dāng)前錯(cuò)誤宏塊在I幀之后的一個(gè)P幀內(nèi)的情況,用下一個(gè)P幀替代當(dāng)前錯(cuò)誤宏塊所在的P幀;對(duì)于當(dāng)前錯(cuò)誤宏塊在P幀之后的一個(gè)P幀內(nèi)的情況,通過(guò)當(dāng)前錯(cuò)誤宏塊所在幀的運(yùn)動(dòng)趨勢(shì)的計(jì)算方法來(lái)預(yù)測(cè)當(dāng)前錯(cuò)誤宏塊以及后續(xù)宏塊的運(yùn)動(dòng)矢量,且不對(duì)當(dāng)前錯(cuò)誤宏塊的殘差像素值進(jìn)行編碼,而是用當(dāng)前錯(cuò)誤宏塊所在幀的前一幀對(duì)應(yīng)位置宏塊的像素值進(jìn)行錯(cuò)誤恢復(fù)。
4.根據(jù)權(quán)利要求3所述的MPEG-4視頻碼流的錯(cuò)誤恢復(fù)方法,其特征在于,對(duì)于當(dāng)前錯(cuò)誤宏塊在I幀內(nèi)且前一幀為P幀的情況,細(xì)化的處理包括將當(dāng)前幀的編碼類(lèi)型變?yōu)镻幀,同時(shí)將從當(dāng)前錯(cuò)誤宏塊開(kāi)始到幀結(jié)束的宏塊的編碼類(lèi)型改成SKIP模式,沿用前一個(gè)P幀的信息,使當(dāng)前錯(cuò)誤宏塊之前的宏塊的編碼類(lèi)型維持 INTRA模式。
5.根據(jù)權(quán)利要求3所述的MPEG-4視頻碼流的錯(cuò)誤恢復(fù)方法,其特征在于,對(duì)于當(dāng)前錯(cuò)誤宏塊在P幀之后的一個(gè)P幀內(nèi)的情況,細(xì)化的處理包括以當(dāng)前錯(cuò)誤宏塊所在幀的存在誤碼的行的上一行宏塊與上一個(gè)幀與之對(duì)應(yīng)的一行之間的運(yùn)動(dòng)矢量的差值的平均值作為運(yùn)動(dòng)趨勢(shì),計(jì)算公式為MV (trend) = (Pre_MV
[n]-MV
[n])/n 公式(1)其中MV
[η]為當(dāng)前錯(cuò)誤宏塊所在幀的存在誤碼的行的上一行宏塊的運(yùn)動(dòng)矢量, Pre_MV
[η]為當(dāng)前錯(cuò)誤宏塊所在幀的上一個(gè)幀與之對(duì)應(yīng)的一行宏塊的運(yùn)動(dòng)矢量,η為圖像中一行宏塊的數(shù)量值,MV(trend)為當(dāng)前錯(cuò)誤宏塊的運(yùn)動(dòng)趨勢(shì);計(jì)算當(dāng)前錯(cuò)誤宏塊的殘差運(yùn)動(dòng)矢量,計(jì)算公式為MV (det al) = MV (previous) -MV (media) +MV (trend)公式 O)其中MV(Previous)為當(dāng)前錯(cuò)誤宏塊前一幀對(duì)應(yīng)位置宏塊的運(yùn)動(dòng)矢量,MV(media)為預(yù)測(cè)運(yùn)動(dòng)矢量,MV(detal)為當(dāng)前錯(cuò)誤宏塊的殘差運(yùn)動(dòng)矢量;將當(dāng)前錯(cuò)誤宏塊的殘差運(yùn)動(dòng)矢量進(jìn)行編碼,以生成更新后的MPEG-4視頻碼流。
6.一種MPEG-4視頻碼流的錯(cuò)誤恢復(fù)裝置,位于MPEG-4解碼器之前,對(duì)需要解碼的 MPEG-4視頻碼流進(jìn)行預(yù)處理,該裝置進(jìn)一步包括碼流讀取模塊,接收需要解碼的MPEG-4視頻碼流;語(yǔ)法層糾錯(cuò)模塊,連接碼流讀取模塊,對(duì)當(dāng)前的MPEG-4視頻碼流進(jìn)行僅語(yǔ)法頭的解碼,對(duì)解碼得到的語(yǔ)法頭各個(gè)語(yǔ)法變量與MPEG-4標(biāo)準(zhǔn)比較,在當(dāng)前語(yǔ)法變量不符合MPEG-4 標(biāo)準(zhǔn)規(guī)定或者前后矛盾的情況下,按照MPEG-4標(biāo)準(zhǔn)生成更新的語(yǔ)法變量并進(jìn)行編碼重構(gòu), 以提供符合后續(xù)MPEG-4解碼器規(guī)范的MPEG-4視頻碼流;宏塊層處理模塊,根據(jù)錯(cuò)誤宏塊所在的位置分別進(jìn)行相應(yīng)的處理,獲得錯(cuò)誤宏塊的殘差運(yùn)動(dòng)矢量以及編碼模式信息;碼流糾錯(cuò)模塊,根據(jù)錯(cuò)誤宏塊的殘差運(yùn)動(dòng)矢量以及編碼模式信息通過(guò)修改比特值的方式完成對(duì)MPEG-4視頻碼流的糾錯(cuò)。
7.根據(jù)權(quán)利要求6所述的MPEG-4視頻碼流的錯(cuò)誤恢復(fù)裝置,其特征在于,在語(yǔ)法層糾錯(cuò)模塊中,依次對(duì)MPEG-4視頻碼流的VisualOb jectkquence、VisualOb ject、 VideoObjectLayer,VideoObjectPlane四個(gè)語(yǔ)法結(jié)構(gòu)進(jìn)行分析并糾錯(cuò),按照MPEG-4標(biāo)準(zhǔn)的語(yǔ)義規(guī)范對(duì)該四個(gè)語(yǔ)法結(jié)構(gòu)按照比特位逐次糾正,使MPEG-4視頻碼流符合后續(xù)解碼器規(guī)范的要求。
8.根據(jù)權(quán)利要求6所述的MPEG-4視頻碼流的錯(cuò)誤恢復(fù)裝置,其特征在于,宏塊層處理模塊進(jìn)一步包括第一類(lèi)錯(cuò)誤宏塊處理單元,對(duì)于當(dāng)前錯(cuò)誤宏塊在I幀內(nèi)且前一幀為P幀的情況,通過(guò)相鄰兩幀之間的空間相關(guān)性進(jìn)行錯(cuò)誤恢復(fù);第二類(lèi)錯(cuò)誤宏塊處理單元,對(duì)于當(dāng)前錯(cuò)誤宏塊在I幀之后的一個(gè)P幀內(nèi)的情況,用下一個(gè)P幀替代當(dāng)前錯(cuò)誤宏塊所在的P幀;第三類(lèi)錯(cuò)誤宏塊處理單元,對(duì)于當(dāng)前錯(cuò)誤宏塊在P幀之后的一個(gè)P幀內(nèi)的情況,通過(guò)當(dāng)前錯(cuò)誤宏塊所在幀的運(yùn)動(dòng)趨勢(shì)的計(jì)算方法來(lái)預(yù)測(cè)當(dāng)前錯(cuò)誤宏塊以及后續(xù)宏塊的運(yùn)動(dòng)矢量, 且不對(duì)當(dāng)前錯(cuò)誤宏塊的殘差像素值進(jìn)行編碼,而是用當(dāng)前錯(cuò)誤宏塊所在幀的前一幀對(duì)應(yīng)位置宏塊的像素值進(jìn)行錯(cuò)誤恢復(fù)。
9.根據(jù)權(quán)利要求8所述的MPEG-4視頻碼流的錯(cuò)誤恢復(fù)裝置,其特征在于,該第一類(lèi)錯(cuò)誤宏塊處理單元的具體處理是將當(dāng)前幀的編碼類(lèi)型變?yōu)镻幀,同時(shí)將從當(dāng)前錯(cuò)誤宏塊開(kāi)始到幀結(jié)束的宏塊的編碼類(lèi)型改成SKIP模式,沿用前一個(gè)P幀的信息,使當(dāng)前錯(cuò)誤宏塊之前的宏塊的編碼類(lèi)型維持INTRA模式。
10.根據(jù)權(quán)利要求8所述的MPEG-4視頻碼流的錯(cuò)誤恢復(fù)裝置,其特征在于,該第三類(lèi)錯(cuò)誤宏塊處理單元進(jìn)一步包括錯(cuò)誤宏塊運(yùn)動(dòng)趨勢(shì)計(jì)算單元,以當(dāng)前錯(cuò)誤宏塊所在幀的存在誤碼的行的上一個(gè)行宏塊與上一個(gè)幀與之對(duì)應(yīng)的一行之間的運(yùn)動(dòng)矢量的差值的平均值作為運(yùn)動(dòng)趨勢(shì),計(jì)算公式為MV (trend) = (Pre_MV
[n]-MV
[n])/n 公式(1)其中MV
[η]為當(dāng)前錯(cuò)誤宏塊所在幀的存在誤碼的行的上一行宏塊的運(yùn)動(dòng)矢量,Pre_MV
[η]為當(dāng)前錯(cuò)誤宏塊所在幀的上一個(gè)幀與之對(duì)應(yīng)的一行宏塊的運(yùn)動(dòng)矢量,η為圖像中一行宏塊的數(shù)量值,MV(trend)為當(dāng)前錯(cuò)誤宏塊的運(yùn)動(dòng)趨勢(shì);殘差運(yùn)動(dòng)矢量計(jì)算單元,計(jì)算當(dāng)前錯(cuò)誤宏塊的殘差運(yùn)動(dòng)矢量,計(jì)算公式為 MV (det al) = MV (previous) -MV (media) +MV (trend)公式 O) 其中MV(Previous)為當(dāng)前錯(cuò)誤宏塊前一幀對(duì)應(yīng)位置宏塊的運(yùn)動(dòng)矢量,MV(media)為預(yù)測(cè)運(yùn)動(dòng)矢量,MV(detal)為當(dāng)前錯(cuò)誤宏塊的殘差運(yùn)動(dòng)矢量。
全文摘要
本發(fā)明公開(kāi)了MPEG-4視頻碼流的錯(cuò)誤恢復(fù)方法和裝置,能大大減少由于解碼器不能正確解碼而造成的主觀質(zhì)量下降的問(wèn)題,并且與通常的像素域錯(cuò)誤恢復(fù)相比計(jì)算復(fù)雜度低。其技術(shù)方案為方法包括語(yǔ)法層糾錯(cuò)步驟對(duì)當(dāng)前的MPEG-4視頻碼流進(jìn)行僅語(yǔ)法頭的解碼,對(duì)解碼得到的語(yǔ)法頭各個(gè)語(yǔ)法變量與MPEG-4標(biāo)準(zhǔn)比較,在當(dāng)前語(yǔ)法變量不符合MPEG-4標(biāo)準(zhǔn)規(guī)定或者前后矛盾的情況下,按照MPEG-4標(biāo)準(zhǔn)生成更新的語(yǔ)法變量并進(jìn)行編碼重構(gòu),以提供符合后續(xù)解碼器規(guī)范的視頻碼流;宏塊層糾錯(cuò)步驟根據(jù)錯(cuò)誤宏塊所在的位置分別進(jìn)行相應(yīng)的處理,進(jìn)行宏塊層的錯(cuò)誤恢復(fù)。
文檔編號(hào)H04N7/26GK102469315SQ201010546749
公開(kāi)日2012年5月23日 申請(qǐng)日期2010年11月16日 優(yōu)先權(quán)日2010年11月16日
發(fā)明者王宇泉 申請(qǐng)人:聯(lián)芯科技有限公司