專(zhuān)利名稱(chēng):采用可逆長(zhǎng)度可變碼(rvlc)的差錯(cuò)彈性視頻編碼的制作方法
本申請(qǐng)要求1999年2月8目所申請(qǐng)的美國(guó)臨時(shí)專(zhuān)利申請(qǐng)序列號(hào)60/146888的優(yōu)先權(quán)。1998年3月2日申請(qǐng)的美國(guó)專(zhuān)利申請(qǐng)序列號(hào)09/040676(等申案目號(hào)25802)揭示有關(guān)本題的內(nèi)容。所有這些申請(qǐng),其受讓者相同。
本申請(qǐng)涉及噪聲信道傳輸?shù)男畔⒕幋a和存儲(chǔ),尤其涉及差錯(cuò)彈性編碼。
減緩噪聲信道數(shù)據(jù)傳輸發(fā)生的差錯(cuò),通常有兩種方法自動(dòng)請(qǐng)求重發(fā)(ARQ)和前向糾錯(cuò)編碼(FEC)。ARQ型的減緩差錯(cuò)因其不可容忍的時(shí)延或缺少反饋通道,不適合諸如電視等多點(diǎn)同播或?qū)崟r(shí)應(yīng)用。在該情況下,譯碼器只能對(duì)受差錯(cuò)損害的位流譯碼以防止差錯(cuò)擴(kuò)展,而且必須從該位流建立糾錯(cuò)編碼。FEC通過(guò)糾錯(cuò)碼(如里德一所羅門(mén)碼)減緩差錯(cuò)。然而,不能糾正的差錯(cuò)需要進(jìn)一步地減緩?fù)緩健?br>
通用的視頻壓縮法一般在基于數(shù)據(jù)決的運(yùn)動(dòng)補(bǔ)償,以消除時(shí)間冗余量。運(yùn)行補(bǔ)償法僅對(duì)(宏)數(shù)據(jù)塊運(yùn)動(dòng)矢量及其相應(yīng)的量化余量(紋理)進(jìn)行編碼,而且運(yùn)動(dòng)矢量和余量的長(zhǎng)度可變編碼(VLC)提高編碼效率。然而,長(zhǎng)度可變編碼往往對(duì)傳輸信道的差錯(cuò)高度敏感,并且發(fā)生不可糾正差錯(cuò)時(shí),譯碼器宏易喪失與編碼器同步。諸如運(yùn)動(dòng)補(bǔ)償?shù)阮A(yù)測(cè)編碼法由于一視頻幀中的差錯(cuò)迅速在整個(gè)視頻序列繁殖,譯碼視頻信號(hào)質(zhì)量很快劣化,問(wèn)題更嚴(yán)重。
上述基于數(shù)據(jù)塊的視頻壓縮法防不可糾正差錯(cuò)的途徑通常有檢錯(cuò)步驟(如范圍外運(yùn)動(dòng)矢量、無(wú)效VLC表目或數(shù)據(jù)無(wú)效余量數(shù)的檢測(cè))、譯碼器與編碼器重新同步,以及通過(guò)在不可糾正數(shù)據(jù)處重復(fù)先前發(fā)送的正確數(shù)據(jù)隱蔽差錯(cuò)。例如,采用MPEG1-2的視頻壓縮在幀的每一宏塊(MB)的始端具有再同步標(biāo)志(起始碼)并丟棄正確譯碼的再同步標(biāo)志之間的所有數(shù)據(jù)中出現(xiàn)的不可糾正差錯(cuò)。這意味著視頻數(shù)據(jù)流質(zhì)量劣化,尤其對(duì)諸如MPEG等預(yù)測(cè)壓縮法。
上述壓縮視頻信號(hào)一般用霍夫曼碼等長(zhǎng)度可變碼(VLC)表進(jìn)行編碼。在噪聲通信信道傳送壓縮視頻數(shù)據(jù)時(shí),該數(shù)據(jù)受到信道差錯(cuò)損害。證明VLC表對(duì)位差錯(cuò)特別敏感。這是因?yàn)槲徊铄e(cuò)能使一個(gè)碼字錯(cuò)譯為另一個(gè)不同長(zhǎng)度的碼字,從而測(cè)不出差錯(cuò)。這時(shí)譯碼器與編碼器不同步。雖然借助無(wú)效VLC表目最終可測(cè)出差錯(cuò),但往往位流中的出差錯(cuò)的位置與出現(xiàn)差錯(cuò)的位置不同。因此,譯碼器檢測(cè)差錯(cuò)時(shí),必須尋找下一再同步標(biāo)志,并丟棄該標(biāo)志與上一再同步標(biāo)志之間的所有數(shù)據(jù)。這樣,即使僅1個(gè)位發(fā)生差錯(cuò)也會(huì)導(dǎo)致丟失大量數(shù)據(jù)。這是已知編碼方案存在的問(wèn)題。
參閱M.J.Weinberger、G.Seroussi和G.Sapiro等人所著“LOCO-1低復(fù)雜度上下文無(wú)損失圖像壓縮算法”(Proc 1996 IEEE Data Comp.Conf.,Snowbird,第140頁(yè)~149頁(yè),1996年4月),無(wú)損失圖像壓縮已經(jīng)用Golomb-Bice碼(S.W.Golomb著“游程長(zhǎng)度編碼”,IEEE Trans.Inf.Tneory,Vol.IT-12第399頁(yè)~第401頁(yè),1996年7月;R.F.Rice著“一些實(shí)際通用無(wú)噪聲編碼技術(shù)”,Tech.Rep.JPL-79-22,噴氣推進(jìn)實(shí)驗(yàn)室,Pasadena,CAS,1979年3月)。
這些視頻壓縮和去壓縮方法可在專(zhuān)用集電路、可編程數(shù)字信號(hào)處理器或微處理器上實(shí)現(xiàn)。
本發(fā)明采用可逆長(zhǎng)度可變碼(RVLC)對(duì)運(yùn)動(dòng)矢量進(jìn)行編碼,以緩解諸如MPEG等運(yùn)動(dòng)補(bǔ)償壓縮視頻數(shù)據(jù)中的差錯(cuò)問(wèn)題。該RVLC具有粗碼(表面值的范圍)和附加位(表明該范圍的一個(gè)值)的交織結(jié)構(gòu);粗碼提供可逆性。
較佳實(shí)施例包括用再同步字劃分?jǐn)?shù)據(jù),該同步字位于數(shù)據(jù)分用中宏塊的運(yùn)動(dòng)矢量數(shù)據(jù)與紋理(余量)數(shù)據(jù)之間。這樣,就允許使用前面緊接的運(yùn)動(dòng)矢量作為預(yù)測(cè)算了,進(jìn)行簡(jiǎn)單的差分運(yùn)動(dòng)矢量編碼。
其優(yōu)點(diǎn)在于性能較佳。
附圖有助于了解。
圖1~4示出采用可逆編碼的檢錯(cuò)。
圖5為固定長(zhǎng)度碼表。
圖6a~c示出數(shù)據(jù)劃分用的位流語(yǔ)法。
圖7示出劃分?jǐn)?shù)據(jù)和首部用的位流語(yǔ)法。
圖8~9示出另一位流語(yǔ)法。
圖10說(shuō)明運(yùn)動(dòng)矢量編碼。
圖11示出運(yùn)動(dòng)矢量預(yù)測(cè)。
數(shù)據(jù)劃分通過(guò)采用數(shù)據(jù)劃分,可取得諸如MPEG等運(yùn)動(dòng)補(bǔ)償壓縮的強(qiáng)化差錯(cuò)隱蔽性能。試考慮包含兩個(gè)連接再同步標(biāo)志之間的數(shù)據(jù)的“視頻數(shù)據(jù)分組”。在數(shù)據(jù)劃分途徑中,位流內(nèi)分別對(duì)第一視頻數(shù)據(jù)分組中的運(yùn)動(dòng)數(shù)據(jù)和紋理(DCT)數(shù)據(jù)進(jìn)行編碼。運(yùn)動(dòng)數(shù)據(jù)和DCT數(shù)據(jù)之間嵌入另一再同步字(運(yùn)動(dòng)再同步字),以通知運(yùn)動(dòng)數(shù)據(jù)結(jié)束和DCT數(shù)據(jù)開(kāi)始。這樣的數(shù)據(jù)劃分使得即便DCT數(shù)據(jù)被不能檢測(cè)的差錯(cuò)損害,譯碼器也可用運(yùn)動(dòng)數(shù)據(jù)。其優(yōu)點(diǎn)在于用少量時(shí)附加開(kāi)銷(xiāo)部分恢復(fù)壓縮視頻數(shù)據(jù)分組中的不可糾正差錯(cuò)。通過(guò)應(yīng)用譯碼的運(yùn)動(dòng)矢量采用運(yùn)動(dòng)補(bǔ)償,可獲得差錯(cuò)隱蔽,其結(jié)果,使譯碼的視頻數(shù)據(jù)質(zhì)量較好。而且,延伸為基于對(duì)象的壓縮,其中可用形狀再同步字,從運(yùn)動(dòng)數(shù)據(jù)和紋理數(shù)據(jù)分出對(duì)象形狀數(shù)據(jù)。
采用數(shù)據(jù)劃分時(shí),如圖6a~c所示那樣組織視頻數(shù)據(jù)分組中的數(shù)據(jù)。圖6a示出兩個(gè)再同步標(biāo)志之間的字段,圖6b~c用一個(gè)例子較詳細(xì)地畫(huà)出運(yùn)動(dòng)數(shù)據(jù)字段和紋理數(shù)據(jù)字段。具體而言第1段(“再同步標(biāo)志”)為再同步標(biāo)志,第2段(“MB號(hào)”)為視頻數(shù)據(jù)分組第1宏塊(16×16像素塊)在幀中的號(hào)碼,第3段(“QP”)為視頻數(shù)據(jù)分組中紋理數(shù)據(jù)(DCT系數(shù))量化用的缺省量化參數(shù),第4段(“運(yùn)動(dòng)數(shù)據(jù)”)為運(yùn)動(dòng)數(shù)據(jù),第5段(“運(yùn)動(dòng)再同步字”)為運(yùn)動(dòng)數(shù)據(jù)與紋理數(shù)據(jù)之間的再同步標(biāo)志,第6段(“DCT數(shù)據(jù)”)為紋理數(shù)據(jù),最后一段(“再同步標(biāo)志”)為末尾再同步標(biāo)志。注意,再同步標(biāo)志取為具有23個(gè)連續(xù)的0,并且可用共同待批美國(guó)專(zhuān)利申請(qǐng)序列號(hào)09/19787(1998年2月6日申請(qǐng)(所進(jìn)述的查找過(guò)程建立這些再同步字。
圖6b示出數(shù)據(jù)分組中每一宏塊包含COD字段、MVBPC字段和MV字段的運(yùn)動(dòng)數(shù)據(jù)字段。COD字段指示宏塊編碼或跳越)COD=0為編碼,COD=1為跳越)。MCBPC字段指示(1)寵塊的模式和(2)宏塊中的色度塊哪些編碼,哪些跳越;該模式指示是按INTRA(無(wú)運(yùn)動(dòng)補(bǔ)償)或INTER(用一個(gè)16×16運(yùn)動(dòng)矢量補(bǔ)償運(yùn)動(dòng)),還是按INTER4V(用4個(gè)8×8運(yùn)動(dòng)矢量補(bǔ)償運(yùn)動(dòng))對(duì)當(dāng)前的宏塊進(jìn)行編碼。當(dāng)然,如果COD指示宏塊不編碼,則沒(méi)有MCBPC字段。MVC字段為一個(gè)矢量或4個(gè)矢量的實(shí)際運(yùn)動(dòng)矢量數(shù)據(jù)。如果COD指示宏塊不編碼,當(dāng)然也沒(méi)有MV字段。
圖6c示出后續(xù)每一宏塊DCT數(shù)據(jù)的每一宏塊包含CBPY字段和DQUANT字段的紋理(DCT數(shù)據(jù))字段。CBPY字段指示宏塊中亮度聲哪些編碼,哪些跳DQUANT字段指示計(jì)算宏塊量化值用的缺省量化值(QP)差分增量。DCT字段為宏塊中量化DCT系數(shù)值的編碼游程長(zhǎng)度。
帶首部的可逆VLC圖7中示出具有采用RVLC的首部和數(shù)據(jù)的視頻數(shù)據(jù)包中位流語(yǔ)法的較佳實(shí)施例。再同步標(biāo)志、MB號(hào)、QP和運(yùn)動(dòng)再同步字等字段與圖6a中的相同;與圖6b一樣,運(yùn)動(dòng)矢量數(shù)據(jù)字段包含運(yùn)動(dòng)矢量數(shù)據(jù)MV1、MV2……MVn;DCT首部數(shù)據(jù)字段包含圖6c的CBPY1、DQUANT1…CBPYn、DQUANTn;DCT字段包含用圖6cr DCT1、DCT2…DCTn。
首部數(shù)據(jù)字段每一宏塊包含COD和MCBPC數(shù)據(jù)組合(見(jiàn)圖6b)的一個(gè)RVLC表目,首部再同步字為與運(yùn)動(dòng)再同步字相同的獨(dú)特譯碼字。因此,RVLC表目序列出現(xiàn)在首部數(shù)據(jù)、運(yùn)動(dòng)矢量數(shù)據(jù)、DCT首部數(shù)據(jù)和DCT數(shù)據(jù)等字段中,當(dāng)然每一字段有其本身的RVLC表,后文將詳述。如果在對(duì)任何RVLC譯碼時(shí)檢測(cè)到差錯(cuò),譯碼器就尋找下一再同步字(首部再同步字、運(yùn)動(dòng)再同步字或再同步標(biāo)志)。然后,對(duì)RULC數(shù)據(jù)進(jìn)行后向譯碼。于是,可出現(xiàn)以下4種情況中的一種,并且譯碼器決定丟棄以下各圖中帶陰影的位流適當(dāng)部分。
(1)獨(dú)立檢錯(cuò)點(diǎn)采用數(shù)據(jù)無(wú)差錯(cuò)的MB、丟棄前向譯碼與后向譯碼檢錯(cuò)點(diǎn)之間的數(shù)據(jù)(圖1中帶陰影的部分)。
(2)交叉檢錯(cuò)點(diǎn)采用數(shù)據(jù)無(wú)差錯(cuò)的MB。丟棄前向譯碼與后向譯碼檢錯(cuò)點(diǎn)之間的數(shù)據(jù)(圖2中帶陰影的部分)。
(3)在一個(gè)方向檢測(cè)差錯(cuò)丟棄數(shù)據(jù)受損的MB(圖3中帶陰影的部分)。同樣處理前向無(wú)差錯(cuò)、反向有差錯(cuò)的對(duì)稱(chēng)狀態(tài)。
(4)在相同MB中檢測(cè)差錯(cuò)僅丟棄受損的MB(圖4中帶陰影的部分)。
在上述采用RVLC和反向(反向)譯碼的所有情況中,譯碼器能挽救位流中無(wú)差錯(cuò)的大部分?jǐn)?shù)據(jù)。
RULC的設(shè)計(jì)較佳實(shí)施例的參數(shù)化RVLC具有與先前已知的非可逆VLC相同的編碼長(zhǎng)度分布,已知該VLC對(duì)圖像數(shù)據(jù)編碼中出現(xiàn)的概率密度函數(shù)(pdf)接近最佳。將提供的RVLC參數(shù)化,使它們可適配各種pdf,并能具有雙向譯碼的優(yōu)點(diǎn),同時(shí)保持傳統(tǒng)(非可逆)長(zhǎng)度可變碼的效率。
從長(zhǎng)度分布與Golomb-Rice碼相同的可逆碼開(kāi)始。如發(fā)明背景中所述,Golomb-Rice碼最近用于無(wú)損失圖像編碼中進(jìn)行預(yù)測(cè)差錯(cuò)編碼。該碼對(duì)指數(shù)分布非負(fù)整數(shù)編碼接近最佳,并用商和余數(shù)描述整數(shù)n。為了簡(jiǎn)化,除數(shù)常選為2的冪,即2K,并用K參數(shù)化。商可任意大,并用一元表示描述;余量用范圍
劃界,并采用k位以二進(jìn)制的形式表達(dá)。例如,對(duì)k=2的Golomb-Rice碼,數(shù)字9可表為11001。碼字的“前綴”110等于9/22的商,具有值2。“后綴”01為余數(shù)的2位二進(jìn)制表述。下面的表2給出前面幾個(gè)整數(shù)的Golomb-Rice碼,參數(shù)K有兩種選擇。
為了獲得等效長(zhǎng)度的可逆碼,可簡(jiǎn)便地把每一Golomb-Rice碼字的前綴換為以“1”開(kāi)始和結(jié)束的前綴,其他各位等等于“0”。例如的是長(zhǎng)度為1的前綴設(shè)定為“0”。RVLC的后綴保留與相應(yīng)Golomb-Rice碼的后綴相同。按照這些規(guī)則構(gòu)成的RVLC示于表1,其中有k=1和k=2兩種。根據(jù)該表,顯然RVLC的長(zhǎng)度分布和相應(yīng)Golomb-Rice碼的相同。雖然只是前綴,但與整個(gè)碼字相比,該前綴對(duì)稱(chēng),而且碼字非可逆部分長(zhǎng)度固定,因而能方便地對(duì)這些碼進(jìn)行雙向譯碼。
與每一長(zhǎng)度碼字?jǐn)?shù)恒定的Golomb-Rice碼碼相反,也可構(gòu)造給定長(zhǎng)度的碼字?jǐn)?shù)隨長(zhǎng)度指數(shù)增多的碼。在Teuhola的論文(J.Teuhola著“成束位矢量壓縮法”,Information Processing Letters,Vol.7,第308頁(yè)~第311頁(yè),1978年10月(中,用“指數(shù)Golomb”編碼的術(shù)語(yǔ)講術(shù)了采用該碼的游程長(zhǎng)度壓縮。指數(shù)Golomb碼附合具有比典型指數(shù)pdf中峰值高且尾數(shù)和的pdf。這種pdf非常附合量化圖像變換中出現(xiàn)的游程長(zhǎng)度編碼數(shù)據(jù)。可按碼字后綴的位數(shù)k將指數(shù)Golomb碼能數(shù)化。表2列k=1和2的指數(shù)Golomb碼。盡管不直觀,可構(gòu)造與指數(shù)Golomb碼長(zhǎng)度分布相同的可逆碼。為了構(gòu)造該碼,也施加前綴的第1和最后位均為“1”的制約。和前面一樣,長(zhǎng)度為1的前綴設(shè)定為0。要求前綴中全部奇數(shù)索引為“0”,除第1位和最后位以外。例如,在長(zhǎng)度為5的全部前綴中,第3位為“0”,第1位和第5位為“1”。偶數(shù)索引為可任意變化,長(zhǎng)度為1的前綴可為2(1-1)/2,其中1為偶數(shù)。構(gòu)造該碼時(shí),每一前綴與2K個(gè)不同的長(zhǎng)度為k的后綴鏈接。表2給出按照這些規(guī)則構(gòu)造的RVLC。顯然,RVLC長(zhǎng)度分布也等于相應(yīng)可逆碼的長(zhǎng)度分布。
表1參數(shù)化的Golom-Rice碼和可逆Golomb-Rice碼
表2參數(shù)化的指數(shù)Golomb碼和可逆指數(shù)Golomb碼(RVLC中不受對(duì)稱(chēng)限制的位用斜體字表示)
本碼字表設(shè)計(jì)如下。
1.編制最普遍發(fā)生事件的概率表。
2.對(duì)每一K按相應(yīng)RVLC表分配碼字給事件,使較短的碼字映射概率較高的事件。
然后,選擇提供最短平均長(zhǎng)度K。
使用上述方法,對(duì)下列各數(shù)據(jù)設(shè)計(jì)RVLC(1)首部數(shù)據(jù)(COD+MCBPC)(INTRA幀和INTER幀),(2)運(yùn)動(dòng)矢量數(shù)據(jù),(3)INTRA幀DCT數(shù)據(jù),(4)INTER幀DCT數(shù)據(jù)。采用2類(lèi)RVLC。第1類(lèi)RVLC用于對(duì)首部信息(COD+MCBPC)編碼。一個(gè)RVLC用于INTRA幀,一個(gè)RVLC用于INTER幀。這些示于下面的表3和表4。
表3幀內(nèi)編碼視頻數(shù)據(jù)分組中COD+MCBPC的RVLC
表4幀內(nèi)編碼視頻數(shù)據(jù)分組中COD+MCBPC的RVLC
第2類(lèi)為可用參數(shù)k加以參數(shù)化的RVLC,可用于對(duì)量化DCT系數(shù)進(jìn)行熵編碼以及對(duì)運(yùn)動(dòng)矢量數(shù)據(jù)進(jìn)行編碼。表7給出最普遍發(fā)生事件以及k=1和k=2的DCT系數(shù)碼字的碼表。該表中,最后的位“S”注明電平的符號(hào),“0”為正,“1”為負(fù)。其余的事件用固定長(zhǎng)度碼進(jìn)行編碼,如圖5所示。
表5游程的FLC表
表6級(jí)的FLC表
表7 DCT系數(shù)的RVLC。INTRA欄用于INTRA亮一度,INTER用于INTER和INTRA色度和INTER亮度。
表8運(yùn)動(dòng)矢量數(shù)據(jù)的RVLC
另外的RVLC和使用上述較佳實(shí)施例使用較佳實(shí)施例的語(yǔ)法中的RVLC較佳實(shí)施例,該語(yǔ)法中將運(yùn)動(dòng)數(shù)據(jù)劃分成首部數(shù)據(jù)和運(yùn)動(dòng)矢量數(shù)據(jù),并且用首部再同步字分開(kāi)。也可通過(guò)對(duì)圖6c的DCT(DCT1、DCT2……DCTn)使用表7的碼,借助圖6a的數(shù)據(jù)劃分使用RVLC較佳實(shí)施例。
RVLC還可用于對(duì)CBPY加DQUANT字段進(jìn)行編碼。
另一較佳實(shí)施例對(duì)運(yùn)動(dòng)矢量數(shù)據(jù)使用表8的RVLC,而不再使用獨(dú)立的首部數(shù)據(jù)和首部再同步字。
最后,對(duì)其他再同步校志,可將其他RVLC編制成模擬的形式。例如,下列表9~11為上述表4和表7~8的其他形式。表9幀間編碼視頻數(shù)據(jù)分組中COD+MCBPC的RVLC
表10 DCT系數(shù)的RVLC。INTRA欄用于INTRA亮度,INTER欄用于INTER和INTRA色度和INTER亮度
表11運(yùn)動(dòng)矢量數(shù)據(jù)的RVLC
基于對(duì)象的壓縮通過(guò)在字段(通常位于運(yùn)動(dòng)數(shù)據(jù)前)中包含對(duì)象形狀數(shù)據(jù)并任選性地具有從運(yùn)動(dòng)數(shù)據(jù)分出形狀數(shù)據(jù)的形狀再同步字,上述RVLC和位流語(yǔ)法還延伸到基于對(duì)象的壓縮。
進(jìn)一步的較佳實(shí)施例進(jìn)一步的較佳實(shí)施例對(duì)從紋理數(shù)據(jù)分出的較重要運(yùn)動(dòng)矢量數(shù)據(jù)加傳送運(yùn)動(dòng)矢量預(yù)測(cè)算子當(dāng)前狀態(tài)(稱(chēng)為運(yùn)動(dòng)矢量預(yù)測(cè)算子狀態(tài))的新語(yǔ)法單元也使用可逆長(zhǎng)度可變碼。這有助于前向譯碼和后向譯碼檢驗(yàn)運(yùn)動(dòng)矢量是否正確譯碼。運(yùn)動(dòng)矢量預(yù)測(cè)算子狀態(tài)單元的數(shù)量取決于信道狀態(tài),差錯(cuò)率高則該單元用得多。
具體而言,有兩種視頻數(shù)據(jù)分組I-VOP的幀編碼視頻數(shù)據(jù)分組和非幀內(nèi)編碼VOP的幀間編碼視頻數(shù)據(jù)分組。圖8示出非幀內(nèi)編碼VOP中幀間編碼視頻數(shù)據(jù)分組的結(jié)構(gòu)。注意,幀內(nèi)編碼視頻數(shù)據(jù)分組的編碼可以和MPEG-4 VM7-0相同。在每一數(shù)據(jù)分組的始端將分組首部插入壓縮數(shù)據(jù)中。分組首部包括獨(dú)特的17位再同步標(biāo)志(圖8中的“再同步標(biāo)志”該標(biāo)志可為0000 0000 00000000 1),此標(biāo)志后續(xù)指示當(dāng)前宏塊號(hào)(“MB No.”,VOP中宏塊號(hào)最多為2N個(gè))的N位和5位量化參數(shù)(“QP”),還有首部擴(kuò)展碼。除運(yùn)動(dòng)數(shù)據(jù)和紋量首部外,全部語(yǔ)法單元可以和VN7.0相同。
圖9畫(huà)出運(yùn)動(dòng)數(shù)據(jù)字段的結(jié)構(gòu)。圖10表示運(yùn)動(dòng)矢量的長(zhǎng)度可編碼組合,其中用運(yùn)動(dòng)類(lèi)型標(biāo)志區(qū)分16×16宏塊運(yùn)動(dòng)補(bǔ)償和8×8塊運(yùn)動(dòng)補(bǔ)償。為了能進(jìn)行可逆譯碼,視頻數(shù)據(jù)分組的最后宏塊不編碼為“跳宏塊”。表12表示mn-vlc編碼。每一mv-vlc原本包含兩部分粗碼和附加碼。粗碼出現(xiàn)在偶數(shù)位,是可逆是,如“0”、“11”、“101”,而附加碼為奇數(shù)位的序列。用這種方法,能獨(dú)特地組成mv-vlc。此外,無(wú)論什么方向?qū)LC譯碼,都能通過(guò)在偶數(shù)位查找粗碼尋求碼界。較佳實(shí)施例中,粗碼不僅是能進(jìn)行雙向譯碼的標(biāo)志。而且是有含義的碼,該碼傳送粗略的信息,即VLC要表述的值的范圍。運(yùn)動(dòng)矢量編碼的語(yǔ)法如下
<pre listing-type="program-listing"><![CDATA[ motion_vector(){ mv_vlc(horizontal) if(MV1 or MV4) motion_type_flag mv_vlc(vertical) }]]></pre>其中mv_vlc(horizonal)和mv_vlc(vertical)取自表12,可為1-27位;motion_type_flag(運(yùn)動(dòng)類(lèi)型標(biāo)志)為1位,如圖10所注。
運(yùn)動(dòng)數(shù)據(jù)的語(yǔ)法如下<pre listing-type="program-listing"><![CDATA[ motion_coding(){ first_MB_Inc MVs+Motion type do{ MB_Inc if(MB_Inc==”000”) MV status else MVs+Motion type }while(not motion marker) motion_marker }]]></pre>其中,first)MB_Inc實(shí)際為MB_Inc+1;MVs-Motion type區(qū)分16×16運(yùn)動(dòng)補(bǔ)償和8×8運(yùn)動(dòng)補(bǔ)償,如圖10所示;MB_Inc具有1~13位;motion_marker為“1100 0000 0000 00001”,有17位。MB_Inc替換VM9.0中用的COD。MB_Inc告訴從先前編碼的宏塊跳過(guò)多少宏塊,即遞增多少宏塊。注意,數(shù)據(jù)分組中的第1MB_Inc(分分為“first_MB_Inc”)告訴哪個(gè)宏塊先譯碼。每一表13對(duì)first_MB_Inc編碼,因而其值含義為實(shí)際增量加1,假設(shè)先前編碼的宏塊對(duì)應(yīng)于數(shù)據(jù)分組中宏塊號(hào)字段(MB_No.)規(guī)定的宏塊。
采用一維運(yùn)動(dòng)預(yù)測(cè),以免差錯(cuò)敏殖?!癕V預(yù)測(cè)算子狀態(tài)”代表MV預(yù)測(cè)算子水平和垂直分量的值。使用前置MB_Inc=“000”以信號(hào)通知的VLC,按照16×16運(yùn)動(dòng)補(bǔ)償式對(duì)MV預(yù)測(cè)算子狀態(tài)編碼。其值為緊接事件前的宏塊(即MB_Inc=“000”)的MV預(yù)測(cè)算子中的編碼值。
應(yīng)插入運(yùn)動(dòng)標(biāo)志前的至少一個(gè)MV狀態(tài),以便可進(jìn)行雙向譯碼,并按要求經(jīng)常輸MV預(yù)測(cè)算子狀態(tài),以強(qiáng)化抗差穩(wěn)健性。
圖11說(shuō)明運(yùn)動(dòng)矢量預(yù)測(cè)編碼的規(guī)則每一水平和垂直分量只用一個(gè)MV預(yù)測(cè)算子;在跳越宏塊MV預(yù)測(cè)算子處不復(fù)位;對(duì)幀內(nèi)編碼宏塊也將16×16運(yùn)動(dòng)補(bǔ)償?shù)腗V加以編碼,以便隱蔽差錯(cuò)。紋理數(shù)據(jù)不能譯碼時(shí),此MV用于獲取運(yùn)動(dòng)補(bǔ)償信號(hào)。此模式按中心的實(shí)驗(yàn)對(duì)運(yùn)動(dòng)矢量差MVD(0,0)編碼。
宏塊類(lèi)型(MB_type)的語(yǔ)法如下<pre listing-type="program-listing"><![CDATA[MB_type(){ MCBPC CBPY if(dquant) dquant }]]></pre>其中,MCBPC具有1~8位,如表14所示;CBPY具有2~6位,和VM7.0中一樣;dquant具有2位,和VM7.0中一樣。為了在下列差錯(cuò)狀態(tài)下進(jìn)行譯碼操作,譯碼器在下一再同步進(jìn)行再同步,該點(diǎn)為再同步標(biāo)志或共同起始(即23位“0”+“1”),只要在位流中先遇到其中的一個(gè)(1)收到非法VLC。
(2)一個(gè)數(shù)據(jù)塊中對(duì)64個(gè)以上的DCT系數(shù)譯碼。
(3)收到不一致的首部信息(即QP超出范圍,MB號(hào)超出范圍)。
(4)再同步標(biāo)志或VOP起始碼受幀。
(5)對(duì)當(dāng)前數(shù)據(jù)分組中的宏塊譯碼時(shí),設(shè)有檢測(cè)到差錯(cuò),但譯碼器維持的當(dāng)前運(yùn)行宏塊計(jì)數(shù)與當(dāng)前數(shù)據(jù)分組首部NMB不相符。(NMB指示視頻數(shù)據(jù)分組中的宏塊號(hào),并按當(dāng)前視頻數(shù)據(jù)分組與下一視頻分組間的宏塊號(hào)(MB No.)差計(jì)算)。
如果再同步前丟失任何后續(xù)數(shù)據(jù)分組,這些分組就用跳越宏塊代替。在紋理數(shù)據(jù)部分檢測(cè)到差錯(cuò)(運(yùn)動(dòng)部分沒(méi)有檢測(cè)到差錯(cuò))時(shí),用NMB運(yùn)動(dòng)矢量執(zhí)行運(yùn)動(dòng)補(bǔ)償。丟棄該分組中所有宏塊的紋理部分,并且譯碼器再同步到下一再同步標(biāo)志。如果位流的運(yùn)動(dòng)部分或紋理部分沒(méi)有檢測(cè)到差錯(cuò),但當(dāng)前數(shù)據(jù)分組的全部宏塊譯碼后沒(méi)有發(fā)現(xiàn)再同步標(biāo)志,則示出差錯(cuò)標(biāo)志,并僅丟棄當(dāng)前數(shù)據(jù)分組中所有宏塊的紋量部分。該情況下,仍對(duì)NMB宏塊施加運(yùn)動(dòng)補(bǔ)償。
讓MBA[K]表示當(dāng)前數(shù)據(jù)分組中第1宏塊的號(hào),MBA[K+1]表示下一數(shù)據(jù)分組中第1宏塊的號(hào)。當(dāng)數(shù)據(jù)分組的運(yùn)動(dòng)部分或紋理部分沒(méi)有檢測(cè)到差錯(cuò)并且正確地找到下一同步標(biāo)志時(shí),可進(jìn)行附加校驗(yàn)。這種情況下,校驗(yàn)MBA[K+1]-MBA[K]是否等于NMB。如果不等,丟棄下一視頻數(shù)據(jù)分組(對(duì)應(yīng)于MBA[K+1]的分組)中的數(shù)據(jù)。
至于通常的數(shù)據(jù)劃分,運(yùn)動(dòng)數(shù)據(jù)部分檢測(cè)到差錯(cuò)時(shí),譯碼器丟棄整個(gè)數(shù)據(jù)分組,并再同步到下一成功讀取的再同步標(biāo)志或VOP起始碼。然而,所建議方法的譯碼器按下節(jié)所述那樣進(jìn)行MV復(fù)原,并且用復(fù)原的MV作運(yùn)動(dòng)補(bǔ)償。
舉一個(gè)例說(shuō)明此過(guò)程。假設(shè)運(yùn)動(dòng)數(shù)據(jù)序列如下表所示
其中,為了簡(jiǎn)便,僅涉及MV的水平分量,不考慮MB_Inc。在此運(yùn)動(dòng)數(shù)據(jù)字段,實(shí)際上對(duì)7個(gè)運(yùn)動(dòng)矢量編碼,并且用矢量差(MVD)、運(yùn)動(dòng)矢量預(yù)測(cè)算子(P)和實(shí)際運(yùn)動(dòng)矢量(MV)表示這些運(yùn)動(dòng)矢量。假定將最后的MV值(即本例中的MV[7]=24)存儲(chǔ)作為MV預(yù)測(cè)算子狀態(tài)。和前向譯碼一樣,后向譯碼也用此信息。即,前向譯碼中,<pre listing-type="program-listing"><![CDATA[ for(k=0;k<=7;k++){ MV[k]=P[k]+MVD[k]; P[k+1]=MV[k]; }]]></pre>后向譯碼中,<pre listing-type="program-listing"><![CDATA[ for(k=7;k>=0;k-){ MV[k]=P[k+1]; P[k]=MV[k]-MVD[K]; }]]></pre>上述過(guò)程中,從位流獲得MVD。假設(shè)MVD和P
在分組的始端為0,這兩種參數(shù)在后向譯碼中可重建MV,而作為預(yù)測(cè)算子狀態(tài)嵌入的MV[]和MVD在后向譯碼碼也能使MV復(fù)原。因此,能在兩個(gè)方向?qū)V正確譯碼?,F(xiàn)假設(shè)MV No.1(宏塊號(hào)1)處發(fā)生一位差錯(cuò),從而MVD數(shù)據(jù)“1101001”變?yōu)椤?101011”。譯碼器將這些差錯(cuò)二進(jìn)制位變換為MVD[1]=-7。于是,譯碼器獲得的MV如下
應(yīng)當(dāng)注意,1位的差錯(cuò)使8個(gè)MV中的7個(gè)受損,而且還未檢測(cè)出差錯(cuò)。此例充分說(shuō)明出錯(cuò)的位很可能譯為出錯(cuò)VLC碼字。因此,在VLC譯碼的上下關(guān)系中差錯(cuò)很可能敏殖,而沒(méi)有在VLC中檢測(cè)到。
根據(jù)較佳實(shí)施例,對(duì)這些MV進(jìn)行譯碼如下。單獨(dú)的表目樣表示MV預(yù)測(cè)算子狀態(tài)。
符合較佳實(shí)施例的譯碼器按3個(gè)步驟進(jìn)行工作檢錯(cuò);再同步;差錯(cuò)復(fù)原和差錯(cuò)隱蔽。假設(shè)在與上述例子相同的部位發(fā)生1位差錯(cuò),逐一描述這些步驟如下。
步驟1。實(shí)際譯碼的MV預(yù)測(cè)算子與MV預(yù)測(cè)算子狀態(tài)不同時(shí),能檢測(cè)到差錯(cuò)。在此例中,實(shí)際譯碼的MV預(yù)測(cè)算子為16,而MV預(yù)測(cè)算子狀態(tài)為30。注意,遇到非法VLC碼定時(shí),也能檢測(cè)到差錯(cuò)。
步驟2。一旦檢測(cè)到差錯(cuò),譯碼器即通過(guò)查找運(yùn)動(dòng)標(biāo)志尋求再同步點(diǎn)。
步驟3。在緊接運(yùn)動(dòng)標(biāo)志之前的MV預(yù)測(cè)算子狀態(tài)處,開(kāi)始進(jìn)行后向譯碼。此過(guò)程持續(xù)到下列兩種事件之一發(fā)生(1)后向譯碼中,MV預(yù)測(cè)算子狀態(tài)與MV預(yù)測(cè)算子不同;(2)過(guò)程到達(dá)檢測(cè)到差錯(cuò)的MB處(此MV不處理。)當(dāng)后向譯碼終止時(shí),將已復(fù)原的數(shù)據(jù)修訂為正確的信息。
步驟4。清除向譯碼中MV預(yù)測(cè)算子狀態(tài)未證實(shí)的數(shù)據(jù)。此實(shí)施例中,將上述MV復(fù)位為0。注意,根據(jù)進(jìn)一步的審查,可優(yōu)化此過(guò)程。
要對(duì)運(yùn)動(dòng)數(shù)據(jù)后的紋理數(shù)據(jù)進(jìn)行相應(yīng)的處理。丟棄對(duì)應(yīng)于差錯(cuò)隱蔽所處理MB的預(yù)測(cè)差錯(cuò)信號(hào)。然而,如果MB為幀內(nèi)編碼且被正確譯碼,即便該MB的運(yùn)動(dòng)數(shù)據(jù)成功復(fù)原,此MB也相當(dāng)于幀內(nèi)編碼MB。
表12MV VLC
表13MB_Inc VLC
表14MVBPC VLC
權(quán)利要求
1.一種運(yùn)動(dòng)補(bǔ)償視頻數(shù)據(jù),具有包含運(yùn)動(dòng)矢量和紋理數(shù)據(jù)的宏塊的數(shù)據(jù)分組,其特征在于,包含(a)用包含可逆精碼加交織附加碼位的碼字編碼的運(yùn)動(dòng)矢量。
2.如權(quán)利要求1所述的視頻數(shù)據(jù),其特征在于,(a)用預(yù)測(cè)算子,即前置運(yùn)動(dòng)矢量分量,對(duì)運(yùn)動(dòng)矢量分量進(jìn)行差分編碼。
3.如權(quán)利要求2所述的視頻數(shù)據(jù),其特征在于,(a)運(yùn)動(dòng)矢量分量的碼字如表12所示。
4.如權(quán)利要求1所述的視頻數(shù)據(jù),其特征在于,(a)粗碼指示值的范圍;(b)附加位指示所述值范圍的1個(gè)值。
5.一種譯碼器,用于運(yùn)動(dòng)補(bǔ)償視頻數(shù)據(jù),該視頻數(shù)據(jù)具有包含運(yùn)動(dòng)矢量和紋理數(shù)據(jù)的宏塊的數(shù)據(jù)分組,其特征在于,包含(a)一種譯碼器,該譯碼器的操作對(duì)用包含可逆粗碼加交織附加碼位的碼字編碼的運(yùn)動(dòng)矢量進(jìn)行檢測(cè)。
6.一種編碼器,用于運(yùn)動(dòng)補(bǔ)償視頻數(shù)據(jù),該視頻數(shù)據(jù)具有包含運(yùn)動(dòng)矢量和紋理數(shù)據(jù)的宏塊的數(shù)據(jù)分組,其特征在于,包含(a)一種編碼器,該編碼器的操作對(duì)具有包含可逆粗碼加交織附加碼位的碼字的運(yùn)動(dòng)矢量進(jìn)行編碼。
全文摘要
一種運(yùn)動(dòng)補(bǔ)償視頻數(shù)據(jù)的編碼和譯碼,具有用與附加碼交織的可逆粗碼加以編碼的運(yùn)動(dòng)矢量,粗碼占據(jù)碼字的偶數(shù)位,附加碼占據(jù)奇數(shù)位。較佳實(shí)施例包括劃分運(yùn)動(dòng)矢量數(shù)據(jù)和紋理數(shù)據(jù),以及通過(guò)采用直接前置運(yùn)動(dòng)矢量作為預(yù)測(cè)算子,對(duì)運(yùn)動(dòng)矢量進(jìn)行差分編碼。
文檔編號(hào)H04N7/64GK1335725SQ00122619
公開(kāi)日2002年2月13日 申請(qǐng)日期2000年8月2日 優(yōu)先權(quán)日2000年8月2日
發(fā)明者伊藤裕二 申請(qǐng)人:德克薩斯儀器股份有限公司