白丝美女被狂躁免费视频网站,500av导航大全精品,yw.193.cnc爆乳尤物未满,97se亚洲综合色区,аⅴ天堂中文在线网官网

首頁 / 專利庫 / 電腦圖像 / 運(yùn)動矢量 / 用于基于運(yùn)動補(bǔ)償?shù)囊曨l壓縮的錯誤跟蹤和減輕

用于基于運(yùn)動補(bǔ)償的視頻壓縮的錯誤跟蹤和減輕

閱讀:2發(fā)布:2022-02-10

專利匯可以提供用于基于運(yùn)動補(bǔ)償的視頻壓縮的錯誤跟蹤和減輕專利檢索,專利查詢,專利分析的服務(wù)。并且本文涉及用于基于 運(yùn)動補(bǔ)償 的視頻壓縮的錯誤 跟蹤 和減輕。本文描述了用于將視頻的 幀 中的錯誤追蹤到視頻的后續(xù)幀的方法和 編碼器 。響應(yīng)于接收到指示錯誤在解碼期間出現(xiàn)在編碼的幀中的錯誤通知消息,編碼器得到:(a)緊接著在錯誤幀后面的幀的 塊 的每列的最小 水 平 運(yùn)動矢量 分量和最大水平運(yùn)動矢量分量;以及(b)緊接著在錯誤幀后面的幀的塊的每行的最小垂直運(yùn)動矢量分量和最大垂直運(yùn)動矢量分量。使用最小水平運(yùn)動矢量分量、最大水平運(yùn)動矢量分量、最小垂直運(yùn)動矢量分量和最大垂直運(yùn)動矢量分量來識別緊接著在錯誤幀后面的幀的塊的矩形區(qū)域,錯誤可能傳播到該矩形區(qū)域。,下面是用于基于運(yùn)動補(bǔ)償的視頻壓縮的錯誤跟蹤和減輕專利的具體信息內(nèi)容。

1.一種用于將視頻的中的錯誤追蹤到所述視頻的后續(xù)幀的方法(1000),所述視頻中的每個幀被劃分成布置在多個行和列中的多個,所述視頻的每個幀被通過包括產(chǎn)生所述幀的塊的運(yùn)動矢量的技術(shù)編碼,所述方法包括:
(a)在編碼器處接收錯誤通知消息,所述錯誤通知消息包括識別所述視頻的錯誤幀的信息和識別所述錯誤幀的被檢測為在解碼期間有錯誤的部分的信息(1002);
(b)在所述編碼器處將緊接著在所述錯誤幀后面的幀識別為參考幀(1006);
(c)在所述編碼器處得到所述參考幀的塊的每列的最小平運(yùn)動矢量分量和最大水平運(yùn)動矢量分量;
(d)在所述編碼器處得到所述參考幀的塊的每行的最小垂直運(yùn)動矢量分量和最大垂直運(yùn)動矢量分量;以及
(e)在所述編碼器處根據(jù)所述參考幀的最小水平運(yùn)動矢量分量、最大水平運(yùn)動矢量分量、最小垂直運(yùn)動矢量分量和最大垂直運(yùn)動矢量分量識別所述參考幀中的、所述錯誤可能已經(jīng)傳播到的塊的矩形區(qū)域(1008、1010、1018)。
2.根據(jù)權(quán)利要求1所述的方法(1000),還包括:
(f)在所述編碼器處確定緊接著在所述參考幀后面的幀是否是將由所述編碼器進(jìn)行編碼的下一幀(1014);以及
(g)響應(yīng)于確定緊接著在所述參考幀后面的幀不是將由所述編碼器進(jìn)行編碼的所述下一幀,將緊接著在所述參考幀后面的幀識別為所述參考幀并重復(fù)(c)到(g)(1016)。
3.根據(jù)權(quán)利要求1所述的方法(1000),其中識別所述參考幀的所述矩形區(qū)域包括:
在所述編碼器處根據(jù)所述參考幀的所述最大垂直運(yùn)動矢量分量和最小垂直運(yùn)動矢量分量識別所述參考幀中的、所述錯誤可能已經(jīng)傳播到的行(1008);以及
在所述編碼器處根據(jù)所述參考幀的所述最大水平運(yùn)動矢量分量和最小水平運(yùn)動矢量分量識別所述參考幀中的、所述錯誤可能已經(jīng)傳播到的列(1010);
其中所述參考幀的所述矩形區(qū)域被限定為所識別的行和列的交集(1018)。
4.根據(jù)權(quán)利要求3所述的方法(1000),其中識別所述錯誤幀的被檢測為在解碼期間有錯誤的所述部分的所述信息包括幀錯誤圖,該幀錯誤圖識別所述錯誤幀的被檢測為在解碼期間有錯誤的塊。
5.根據(jù)權(quán)利要求4所述的方法(1000),其中識別所述參考幀的所述矩形區(qū)域包括將所述幀錯誤圖轉(zhuǎn)換成識別所述錯誤幀的被檢測為在解碼期間有錯誤的行的行錯誤圖和識別所述錯誤幀的被檢測為在解碼期間有錯誤的列的列錯誤圖(1004)。
6.根據(jù)權(quán)利要求1所述的方法(1000),其中識別所述錯誤幀的被檢測為在解碼期間有錯誤的部分的所述信息包括識別所述錯誤幀的被檢測為在解碼期間有錯誤的行的行錯誤圖和識別所述錯誤幀的被檢測為在解碼期間有錯誤的列的列錯誤圖。
7.根據(jù)權(quán)利要求5或權(quán)利要求6所述的方法(1000),其中:
根據(jù)前面幀的所述行錯誤圖和所述參考幀的所述最大垂直運(yùn)動矢量分量和最小垂直運(yùn)動矢量分量來識別所述參考幀中的、所述錯誤可能已經(jīng)傳播到的行(1008),所述前面的幀是緊接著在所述視頻中的所述參考幀前面的幀;以及
根據(jù)所述前面幀的所述列圖和所述參考幀的所述最大水平運(yùn)動矢量分量和最小水平運(yùn)動矢量分量來識別所述參考幀中的、所述錯誤可能已經(jīng)傳播到的列(1010)。
8.根據(jù)權(quán)利要求7所述的方法(1000),其中使用以下公式來識別所述參考幀中的、所述錯誤可能已經(jīng)傳播到的行:
其中PropRowErrorMap是具有針對所述參考幀的每行的條目的數(shù)組,每個條目指示所述錯誤是否可能已經(jīng)傳播到相應(yīng)的行,RowErrorMap是所述前面的幀的所述行錯誤圖,MinMVy是所述參考幀的所述最小垂直運(yùn)動矢量分量,MaxMvy是所述參考幀的所述最大垂直運(yùn)動矢量分量,TotalBlockRows是在所述參考幀中的塊的行的數(shù)量,BLKHEIGHT是所述塊的高度,且ROUNDFACTOR是舍入因子。
9.根據(jù)權(quán)利要求7所述的方法(1000),其中使用以下公式來識別所述參考幀的、所述錯誤可能已經(jīng)傳播到的列:
其中PropColErrorMap是具有針對所述參考幀的每列的條目的數(shù)組,每個條目指示所述錯誤是否可能已經(jīng)傳播到相應(yīng)的行,ColErrorMap是所述前面的幀的所述列錯誤圖,MinMVx是所述參考幀的所述最小水平運(yùn)動矢量分量,MaxMvx是所述參考幀的所述最大水平運(yùn)動矢量分量,TotalBlockCols是在所述后續(xù)幀中的塊的列的數(shù)量,BLKWIDTH是所述參考幀中的塊的寬度,且ROUNDFACTOR是舍入因子。
10.一種減輕在視頻的幀中的錯誤的傳播的方法(700),所述錯誤被在解碼器處檢測到,所述方法包括:
根據(jù)權(quán)利要求1的所述方法(1000)在編碼器處將所述錯誤追蹤到緊接著在待被編碼的下一幀前面的幀(706);
修改所述參考幀以將在所識別的矩形區(qū)域中的塊識別為對于幀間編碼是不可用的(708);以及
使用所修改的參考幀來對所述下一幀進(jìn)行編碼(710)。
11.根據(jù)權(quán)利要求10所述的方法(700),其中使用所修改的參考幀對所述下一幀進(jìn)行編碼包括:對參考所修改的參考幀中的被識別為對幀間編碼不可用的塊的所述下一幀的每個塊進(jìn)行幀內(nèi)編碼。
12.根據(jù)權(quán)利要求10所述的方法(700),其中使用所修改的參考幀對所述下一幀進(jìn)行編碼包括:使用緊接著在所述錯誤幀前面的幀中的信息對參考所修改的參考幀中的被識別為對幀間編碼不可用的塊的所述下一幀的每個塊進(jìn)行編碼。
13.一種將視頻的幀中的錯誤追蹤到所述視頻的后續(xù)幀的視頻編碼器(402),所述視頻中的每個幀被劃分成布置在多個行和列中的多個塊,所述視頻的每個幀由包括產(chǎn)生所述幀的塊的運(yùn)動矢量的技術(shù)進(jìn)行編碼,所述編碼器(402)包括:
通信接口(1110),其配置成接收錯誤通知消息,所述錯誤通知消息包括識別錯誤幀的信息和識別所述錯誤幀中的被檢測為在解碼期間有錯誤的部分的信息(1002);以及處理器(1102),其與所述通信接口(1110)進(jìn)行通信,所述處理器配置成:
a.將緊接著在所述視頻中的所述錯誤幀(804、904)后面的幀識別為參考幀;
b.得到所述參考幀(806、814、906)的塊的每列的最小水平運(yùn)動矢量分量和最大水平運(yùn)動矢量分量(604、606);
c.得到所述參考幀(806、814、906)的塊的每行的最小垂直運(yùn)動矢量分量和最大垂直運(yùn)動矢量分量(608、610);以及
d.根據(jù)所述參考幀(806、814、906)的所述最小水平運(yùn)動矢量分量、最大水平運(yùn)動矢量分量、最小垂直運(yùn)動矢量分量和最大垂直運(yùn)動矢量分量(604、606、608、610)來識別所述參考幀(806、814、906)中的、所述錯誤可能已經(jīng)傳播到的塊的矩形區(qū)域(812、820、912)。

說明書全文

用于基于運(yùn)動補(bǔ)償的視頻壓縮的錯誤跟蹤和減輕

[0001] 背景
[0002] 由于數(shù)字視頻數(shù)據(jù)的大尺寸,一般在整個網(wǎng)絡(luò)中傳輸數(shù)字視頻之前在數(shù)字視頻上執(zhí)行某種形式的壓縮??杀皇褂玫囊环N視頻壓縮技術(shù)是基于運(yùn)動補(bǔ)償?shù)膲嚎s,其只傳輸在正被編碼的視頻和參考幀之間的差異。運(yùn)動補(bǔ)償壓縮利用幀間冗余。特別是,在連續(xù)幀之間的唯一差異常常是在幀內(nèi)攝像機(jī)移動或物體移動的結(jié)果。這意味著描述一個幀的大部分信息與描述后面的幀的信息相同。
[0003] 然而,網(wǎng)絡(luò)錯誤可意味著接收器不能夠?qū)Ρ痪幋a的視頻幀的某些部分進(jìn)行解碼(即,因為在所接收的信息中存在錯誤或因為接收器未接收到被編碼的視頻的部分),導(dǎo)致本身顯現(xiàn)為視頻中的視覺假象的遺漏的數(shù)據(jù)。因為后續(xù)幀取決于前面的幀,在特定幀中的任何錯誤或視覺假象傳播到后續(xù)幀。這具有引起視頻中的增長的視覺假象的級聯(lián)效應(yīng)。
[0004] 減輕這樣的錯誤或假象的傳播的一種方式是在確定錯誤出現(xiàn)時引入內(nèi)編碼幀(即,使用只包含在正被編碼的幀內(nèi)的信息來編碼的幀)。然而,這種技術(shù)并不實現(xiàn)與幀間編碼技術(shù)(即,使用來自另一個幀的信息來對幀編碼的編碼技術(shù),例如基于運(yùn)動補(bǔ)償?shù)膲嚎s技術(shù))一樣高的壓縮比,因為這樣的內(nèi)編碼幀以非均勻方式耗盡大量帶寬。
[0005] 減輕這樣的錯誤或假象的傳播的另一方式是對每個幀的一部分(例如一個或多個)進(jìn)行幀內(nèi)編碼。幀的不同部分(例如塊)在一系列幀上被循環(huán)地選擇。這種技術(shù)隨著時間的推移更均勻地分布額外的數(shù)據(jù)。然而,因為幀內(nèi)編碼塊可在空間上從相同幀的鄰近幀內(nèi)編碼塊得到,這種技術(shù)的有效性由于現(xiàn)有的傳播錯誤而降低。
[0006] 因此,用于減輕錯誤傳播的已知技術(shù)以均勻或非均勻的方式增加了在編碼器解碼器之間傳輸?shù)臄?shù)據(jù)。
[0007] 下面描述的實施方式不限于解決已知的視頻壓縮技術(shù)的任何或所有缺點(diǎn)的實現(xiàn)。
[0008] 概述
[0009] 提供這個概述來以簡化形式引入下面在詳細(xì)描述中進(jìn)一步描述的一系列概念。這個概述并不打算識別所要求保護(hù)的主題的關(guān)鍵特征或本質(zhì)特征,它也不打算用于幫助確定所要求保護(hù)的主題的范圍。
[0010] 本文描述了用于將視頻的幀中的錯誤追蹤到視頻的后續(xù)幀的方法和編碼器。響應(yīng)于接收指示在解碼期間出現(xiàn)在編碼幀中的錯誤的錯誤通知消息,編碼器得到:(a)緊接著在錯誤幀后面的幀的塊的每列的最小運(yùn)動矢量分量和最大水平運(yùn)動矢量分量;以及(b)緊接著在錯誤幀后面的幀的塊的每行的最小垂直運(yùn)動矢量分量和最大垂直運(yùn)動矢量分量。使用最小水平運(yùn)動矢量分量、最大水平運(yùn)動矢量分量、最小垂直運(yùn)動矢量分量和最大垂直運(yùn)動矢量分量來識別緊接著在錯誤幀后面的幀中的、所述錯誤可能已經(jīng)傳播到的塊的矩形區(qū)域。
[0011] 第一方面提供將視頻的幀中的錯誤追蹤到視頻的后續(xù)幀的方法,視頻中的每個幀被劃分成布置在多個行和列中的多個塊,視頻中的每個幀由包括產(chǎn)生幀的塊的運(yùn)動矢量的技術(shù)編碼,該方法包括:(a)在編碼器處接收錯誤通知消息,錯誤通知消息包括識別視頻的錯誤幀的信息和識別該錯誤幀的被檢測為在解碼期間有錯誤的部分的信息;(b)在編碼器處識別緊接著在錯誤幀后面的幀作為參考幀;(c)在編碼器處得到參考幀的塊的每列的最小水平運(yùn)動矢量分量和最大水平運(yùn)動矢量分量;(d)在編碼器處得到參考幀的塊的每行的最小垂直運(yùn)動矢量分量和最大垂直運(yùn)動矢量分量;(e)在編碼器處根據(jù)參考幀的最小水平運(yùn)動矢量分量、最大水平運(yùn)動矢量分量、最小垂直運(yùn)動矢量分量和最大垂直運(yùn)動矢量分量來識別參考幀的錯誤可能傳播到的塊的矩形區(qū)域。
[0012] 第二方面提供減輕在視頻的幀中的錯誤的傳播的方法,錯誤在解碼器處被檢測到,該方法包括:根據(jù)第一方面在編碼器處將錯誤追蹤到緊接著在待編碼的下一幀前面的幀;修改參考幀以將在所識別的矩形區(qū)域中的塊識別為對于幀間編碼是不可用的;以及使用修改的參考幀來對下一幀進(jìn)行編碼。
[0013] 第三方面提供視頻編碼器以將視頻的幀中的錯誤追蹤到視頻的后續(xù)幀,視頻中的每個幀被劃分成布置在多個行和列中的多個塊,視頻的每個幀由包括產(chǎn)生幀的塊的運(yùn)動矢量的技術(shù)編碼,編碼器包括:通信接口,其配置成接收錯誤通知消息,錯誤通知消息包括識別錯誤幀的信息和識別錯誤幀的被檢測為在解碼期間有錯誤的部分的信息;以及處理器,其與通信接口連通,處理器配置成:a.將緊接著在視頻中的錯誤幀后面的幀識別為參考幀;b.得到參考幀的塊的每列的最小水平運(yùn)動矢量分量和最大水平運(yùn)動矢量分量;c.得到參考幀的塊的每行的最小垂直運(yùn)動矢量分量和最大垂直運(yùn)動矢量分量;以及d.根據(jù)參考幀的最小水平運(yùn)動矢量分量、最大水平運(yùn)動矢量分量、最小垂直運(yùn)動矢量分量和最大垂直運(yùn)動矢量分量來識別參考幀中的錯誤可能傳播到的塊的矩形區(qū)域。
[0014] 本文描述的方法可由配置有軟件的計算機(jī)執(zhí)行,軟件以機(jī)器可讀形式被存儲在有形存儲介質(zhì)上,例如以包括用于配置計算機(jī)以執(zhí)行所述方法的組成部分的計算機(jī)可讀程序代碼的計算機(jī)程序的形式或以包括適于在程序在計算機(jī)上運(yùn)行時和在計算機(jī)程序可體現(xiàn)在計算機(jī)可讀存儲介質(zhì)上的地方執(zhí)行本文描述的任何方法中的任何方法的所有步驟的計算機(jī)程序代碼模塊的計算機(jī)程序的形式。有形(或非暫時)存儲介質(zhì)的例子包括磁盤、拇指驅(qū)動器、存儲卡等,且不包括傳播的信號。軟件可適合于在并行處理器或串行處理器上執(zhí)行,使得可以按任何適當(dāng)?shù)捻樞蚧蛲瑫r執(zhí)行方法步驟。
[0015] 本文描述的硬件部件可由非臨時計算機(jī)可讀存儲介質(zhì)產(chǎn)生,非臨時計算機(jī)可讀存儲介質(zhì)具有在其上編碼的計算機(jī)可讀程序代碼。
[0016] 這承認(rèn)固件和軟件可被單獨(dú)地使用且是有價值的。目的是包括在“非智能的(dumb)”或標(biāo)準(zhǔn)硬件上運(yùn)行或控制“非智能的”或標(biāo)準(zhǔn)硬件的軟件來執(zhí)行期望的功能。目的還在于包括“描述”或定義了硬件的配置的軟件(例如如用于設(shè)計芯片或用于配置通用可編程芯片的HDL(硬件描述語言)軟件)以執(zhí)行期望的功能。
[0017] 優(yōu)選的特征可被適當(dāng)組合,如將對技術(shù)人員明顯的,并可與本發(fā)明的方面的任何方面組合。
[0018] 附圖的簡要說明
[0019] 將通過示例的方式參考附圖來描述本發(fā)明的實施方式,其中:
[0020] 圖1是用于使用塊運(yùn)動補(bǔ)償視頻壓縮對視頻數(shù)據(jù)進(jìn)行編碼的已知系統(tǒng)的框圖
[0021] 圖2是示出了用于減輕在圖1的系統(tǒng)中的錯誤的傳播的已知方法的示意圖;
[0022] 圖3是示出了編碼的幀中的錯誤的示意圖;
[0023] 圖4是用于使用其中相關(guān)性信息被存儲的塊運(yùn)動補(bǔ)償視頻壓縮對視頻數(shù)據(jù)進(jìn)行編碼的示例系統(tǒng)的框圖;
[0024] 圖5是用于產(chǎn)生圖4的相關(guān)性信息的示例方法的流程圖;
[0025] 圖6示出了圖4的相關(guān)性信息的例子;
[0026] 圖7是用于使用圖4的相關(guān)性信息減輕錯誤的傳播的示例方法的流程圖;
[0027] 圖8是示出了用于使用圖4的相關(guān)性信息將錯誤幀中的錯誤追蹤到后續(xù)幀的示例方法的示意圖;
[0028] 圖9是示出了圖7的方法的示意圖;
[0029] 圖10是用于使用圖4的相關(guān)性信息將錯誤幀中的錯誤追蹤到后續(xù)幀的示例方法的示意圖;以及
[0030] 圖11是示例性基于計算的設(shè)備的框圖。
[0031] 在整個附圖中使用共同的附圖標(biāo)記以指示類似的特征。
[0032] 詳細(xì)描述
[0033] 僅僅通過示例的方式在下文描述了本發(fā)明的實施方式。這些例子代表申請人當(dāng)前已知的實施本發(fā)明的最佳方式,雖然它們并不是其中這可被實現(xiàn)的唯一方式。該描述闡述了例子的功能和用于構(gòu)造和操作例子的步驟的順序。然而,可由不同的例子完成相同或等效的功能和順序。
[0034] 如上所述,在基于運(yùn)動補(bǔ)償?shù)囊曨l壓縮中,在正被編碼的視頻幀和參考幀之間的差異被確定,且只有該差異被通過網(wǎng)絡(luò)傳輸。運(yùn)動補(bǔ)償壓縮利用在兩個視頻幀之間的唯一差異常常是攝像機(jī)移動或物體移動的結(jié)果的事實。這意味著描述一個幀的大部分信息與描述后續(xù)幀的信息相同。
[0035] 在基于塊運(yùn)動補(bǔ)償?shù)膲嚎s中,每個幀被劃分成像素的塊(例如在MPEG中的16x16像素的宏塊)。然后試圖從在本文被稱為參考幀的另一幀(緊接著在前面的幀)中的塊(即,匹配塊)預(yù)測特定幀的每個塊(即,目標(biāo)塊)。特別地,在編碼的視頻數(shù)據(jù)中,正被編碼的幀的每個塊可由指示塊來自哪里(即,從目標(biāo)塊到匹配塊的移動)的運(yùn)動矢量表示。每個運(yùn)動矢量包括代表在水平方向上的運(yùn)動的x或水平分量和代表在垂直方向上的運(yùn)動的y或垂直分量。
[0036] 參考幀一般是緊接著在待編碼的幀前面的視頻的幀。然而對本領(lǐng)域中的技術(shù)人員將明顯的是,視頻的另一幀可用作參考幀。對本領(lǐng)域中的技術(shù)人員還將明顯的是,可使用一個以上的參考幀。例如,可使用第一參考幀的塊來對一些塊進(jìn)行編碼,并且可使用第二參考幀的塊來對其他塊進(jìn)行編碼。
[0037] 現(xiàn)在參考圖1,其示出了用于使用塊運(yùn)動補(bǔ)償視頻壓縮對視頻數(shù)據(jù)進(jìn)行編碼的已知系統(tǒng)100。系統(tǒng)100包括布置成接收視頻數(shù)據(jù)并使用塊運(yùn)動補(bǔ)償視頻壓縮技術(shù)對視頻數(shù)據(jù)進(jìn)行編碼的編碼器102;用于接收編碼的視頻數(shù)據(jù)并對編碼的視頻數(shù)據(jù)進(jìn)行解碼的解碼器104;以及用于將編碼的視頻數(shù)據(jù)從編碼器102傳輸?shù)浇獯a器104的數(shù)據(jù)通信網(wǎng)絡(luò)106。
[0038] 編碼器102是能夠?qū)σ曨l數(shù)據(jù)進(jìn)行編碼的基于計算的設(shè)備。編碼器102從視頻源108接收視頻數(shù)據(jù)。視頻源108可以是提供直播視頻的設(shè)備,例如攝像機(jī);存儲預(yù)先記錄的視頻的設(shè)備,例如存儲器;或提供直播視頻的設(shè)備和存儲預(yù)先記錄的視頻的設(shè)備的組合。
[0039] 響應(yīng)于從視頻源108接收到視頻數(shù)據(jù),編碼器102布置或配置成使用塊運(yùn)動補(bǔ)償壓縮技術(shù)或編碼譯碼器(例如H.264)來對視頻數(shù)據(jù)進(jìn)行編碼。如上所述,塊運(yùn)動補(bǔ)償壓縮技術(shù)(例如H.264)使用來自另一幀(即,參考幀)的塊來對幀進(jìn)行編碼。
[0040] 特別地,對于待編碼的幀的每個塊(被稱為目標(biāo)塊),在參考幀(即,緊接著在前面的幀)中找到與待編碼的塊最緊密地匹配的塊(被稱為匹配塊)。待編碼的幀不確切地匹配參考幀中的塊的地方,稱為存在錯誤殘差。一旦識別出匹配塊,則確定代表從目標(biāo)幀到匹配幀的移動的運(yùn)動矢量。運(yùn)動矢量是關(guān)于在參考幀中的匹配塊的運(yùn)動描述目標(biāo)塊的二維矢量(即,它具有水平分量和垂直分量)。
[0041] 運(yùn)動矢量和錯誤殘差一起(即,幀間編碼技術(shù))的壓縮效率然后與每個塊的幀內(nèi)編碼技術(shù)進(jìn)行比較,且為每個塊選擇更有效的編碼技術(shù)。因此,對于每個塊(其中幀間編碼是有效的),將存在與它相關(guān)的運(yùn)動矢量,其將用于對塊進(jìn)行編碼。相反,塊(其中幀間編碼不是有效的)將沒有與它相關(guān)的運(yùn)動矢量。編碼的視頻數(shù)據(jù)然后經(jīng)由數(shù)據(jù)通信網(wǎng)絡(luò)106被發(fā)送到解碼器104。
[0042] 解碼器104是用于對編碼的視頻數(shù)據(jù)進(jìn)行解碼的基于計算的設(shè)備。解碼器104經(jīng)由數(shù)據(jù)通信網(wǎng)絡(luò)106從編碼器102接收編碼的視頻數(shù)據(jù),并對所接收的編碼的視頻數(shù)據(jù)進(jìn)行解碼。解碼器104然后將解碼的視頻提供到視頻輸出模塊110用于顯示。視頻輸出模塊110可以是用于顯示視頻的任何適當(dāng)?shù)脑O(shè)備,例如電視機(jī)、計算機(jī)屏幕或移動電話顯示器。
[0043] 如上所述,在數(shù)據(jù)通信網(wǎng)絡(luò)106中的錯誤可意味著解碼器104不能夠?qū)幋a的視頻幀的部分(即,一個或多個塊)進(jìn)行解碼。這可能是例如因為解碼器未接收到編碼的視頻幀的部分(例如,它被丟失)或因為在傳輸期間出現(xiàn)的錯誤是編碼的視頻幀的已破壞部分。解碼器104不能夠解碼的任何塊可出現(xiàn)為視頻中的視覺假象。因為解碼器接收的關(guān)于特定的幀信息是關(guān)于一個或多個前面的幀(即,在幀之間存在時間相關(guān)性),在特定幀中的任何錯誤或假象將傳播并擴(kuò)展到后續(xù)幀。
[0044] 因此,已經(jīng)發(fā)展了用于減輕在基于塊運(yùn)動補(bǔ)償?shù)囊曨l壓縮系統(tǒng)中的這樣的錯誤的傳播的方法。
[0045] 現(xiàn)在參考圖2,其示出了用于減輕在例如圖1的系統(tǒng)100的基于塊運(yùn)動補(bǔ)償?shù)囊曨l壓縮系統(tǒng)中的錯誤的傳播的已知方法200。在方法200中,編碼器102將視頻幀N 202劃分成像素的塊,使用基于塊運(yùn)動補(bǔ)償?shù)膲嚎s技術(shù)(例如MPEG2、MOEG4或H.274)對所劃分的視頻幀進(jìn)行編碼,并且通過數(shù)據(jù)通信網(wǎng)絡(luò)106傳輸所編碼的幀。當(dāng)編碼的視頻幀N 202隨后被接收并由解碼器104進(jìn)行解碼時,解碼器104可能不能夠?qū)σ曨l幀N 202的一個或多個塊204進(jìn)行解碼。如上所述,這可能是因為包含那些塊的編碼的數(shù)據(jù)的數(shù)據(jù)包被丟失,或在那些塊的所接收的編碼的數(shù)據(jù)中存在錯誤,其禁止解碼器能夠?qū)δ切K進(jìn)行解碼。未被正確地解碼的塊出現(xiàn)為在輸出視頻中的視覺假象。
[0046] 后續(xù)視頻幀(視頻幀N+1206)類似地被劃分成像素的塊并由編碼器102使用與視頻幀N 202相同的基于塊運(yùn)動補(bǔ)償?shù)膲嚎s技術(shù)來進(jìn)行編碼。當(dāng)解碼器104接收到視頻幀N+1206的編碼的數(shù)據(jù)時,它使用編碼的數(shù)據(jù)來從視頻幀N 202產(chǎn)生視頻幀N+1206。在幀之間的這個時間相關(guān)性意味著在視頻幀N 202中的錯誤204被傳播并擴(kuò)展到視頻幀N+1206,產(chǎn)生較大錯誤或視覺假象208。
[0047] 為了減輕或減小錯誤對后續(xù)幀的影響,解碼器104向編碼器102通知視頻幀N 202中的錯誤。編碼器然后將視頻幀N+2210編碼為幀內(nèi)編碼的幀。特別地,它只使用在視頻幀N+2210內(nèi)的信息對幀N+2210進(jìn)行編碼。這除去了時間相關(guān)性并因此停止了錯誤的擴(kuò)展和傳播,但它以增加在編碼器102和解碼器104之間發(fā)送的數(shù)據(jù)的代價這么做。這是因為幀內(nèi)編碼的幀的編碼或壓縮一般不如幀間編碼的幀那么高效。此外,因為幀內(nèi)編碼的幀大于幀間編碼的幀,它一般花費(fèi)較長時間來到達(dá)解碼器,這引起在接收下一時間編碼的幀時的延遲,惡化了該問題。
[0048] 不是實現(xiàn)如關(guān)于圖2描述的周期性幀內(nèi)編碼,其它壓縮技術(shù)為每個幀實現(xiàn)部分幀間編碼以減輕錯誤傳播。雖然這也增加了在編碼器102和解碼器104之間傳輸?shù)臄?shù)據(jù)的數(shù)量,但是它在有規(guī)律的基礎(chǔ)上而不是周期性地這么做。因此,存在對減輕視頻流中的錯誤或假象的傳播而不明顯增加在編碼器和解碼器之間傳輸?shù)臄?shù)據(jù)的數(shù)量的技術(shù)的需要。
[0049] 本文描述的實施方式涉及用于跟蹤并減輕在基于塊運(yùn)動補(bǔ)償?shù)囊曨l壓縮中的錯誤的傳播而不明顯增加在編碼器和解碼器之間傳輸?shù)臄?shù)據(jù)的系統(tǒng)和方法。特別地,在本文描述的實施方式中,編碼器存儲每個幀的相關(guān)性信息,其允許錯誤被追蹤到當(dāng)前幀。特別地,對于每個幀,編碼器存儲幀的塊的每列和每行的運(yùn)動矢量分量的最大值和最小值。當(dāng)編碼器隨后從解碼器接收到錯誤在解碼期間已經(jīng)出現(xiàn)在特定的編碼的幀中的消息時,編碼器使用所存儲的最大值和最小值來將來自特定的編碼的幀的錯誤追蹤到待編碼的下一幀的參考幀。追蹤識別可能被解碼器所識別的錯誤影響的參考幀的塊。被識別為可能被錯誤影響的參考幀的塊然后被標(biāo)記為對于壓縮是不可用的,所以將不使用參考幀的受影響的塊中的任何塊來對待編碼的下一幀進(jìn)行編碼。
[0050] 例如,在圖3的例子中,編碼器302對視頻幀N 304到N+3310進(jìn)行編碼并進(jìn)行傳輸。當(dāng)解碼器312試圖對編碼的幀N 304解碼時,它識別到在編碼的幀N 304中的錯誤。響應(yīng)于檢測到錯誤,解碼器312將錯誤通知消息314發(fā)送到編碼器302以向編碼器302通知幀N 304中的錯誤。響應(yīng)于接收到錯誤通知消息314,編碼器302使用所存儲的最大值和最小值來將幀N中的錯誤追蹤到待編碼的下一幀的參考幀。在圖3的例子中,當(dāng)編碼器302接收到錯誤通知消息314時,待編碼的下一幀是幀N+4316。幀N+4316的參考幀是幀N+3310。因此,在本例子中,編碼器302使用所存儲的最大值和最小值來將幀N 304中的錯誤追蹤到幀N+3310。特別是,編碼器302使用所存儲的最大值和最小值來識別可能已經(jīng)被幀N 304中的錯誤影響的幀N+3310的塊。被識別為被幀N中的錯誤影響的參考幀(幀N+3)的塊然后被標(biāo)記為對幀間編碼是不可用的,使得將不使用幀N+3310的受影響的塊中的任何受影響的塊來對幀N+4316進(jìn)行編碼。
[0051] 可以在同時使用編碼器和一個或多個解碼器的任何應(yīng)用中使用本文描述的方法和系統(tǒng)。例如,可在IP上視頻、直播視頻監(jiān)視、視頻點(diǎn)播和直播視頻代碼轉(zhuǎn)換應(yīng)用中使用本文描述的方法和系統(tǒng)來向用戶提供提高的視覺質(zhì)量體驗。
[0052] 現(xiàn)在參考圖4,其示出用于追蹤并減輕在基于運(yùn)動補(bǔ)償?shù)囊曨l壓縮中的錯誤或假象的傳播的系統(tǒng)400。系統(tǒng)包括布置成接收視頻數(shù)據(jù)并對視頻數(shù)據(jù)進(jìn)行編碼并存儲相關(guān)性信息410的編碼器402;用于接收編碼的視頻數(shù)據(jù)并對編碼的視頻數(shù)據(jù)解碼的解碼器404;以及用于將編碼的視頻數(shù)據(jù)從編碼器402傳輸?shù)浇獯a器404的數(shù)據(jù)通信網(wǎng)絡(luò)406。
[0053] 類似于圖1的編碼器102的編碼器402是能夠?qū)σ曨l數(shù)據(jù)進(jìn)行編碼的基于計算的設(shè)備。編碼器402從視頻源408接收視頻數(shù)據(jù)。視頻源408可以是提供直播視頻的設(shè)備,例如攝像機(jī);存儲預(yù)先記錄的視頻的設(shè)備,例如存儲器;或提供直播視頻的設(shè)備和存儲預(yù)先記錄的視頻的設(shè)備的組合。
[0054] 響應(yīng)于從視頻源408接收到視頻數(shù)據(jù),編碼器402布置或配置成使用基于塊運(yùn)動補(bǔ)償?shù)膲嚎s技術(shù)或編碼譯碼器(例如H.264)來對視頻數(shù)據(jù)進(jìn)行編碼。編碼的視頻數(shù)據(jù)然后經(jīng)由數(shù)據(jù)通信網(wǎng)絡(luò)406被發(fā)送到解碼器404。
[0055] 圖4的編碼器402進(jìn)一步布置或配置成存儲每個編碼的幀的相關(guān)性信息410,其解釋在編碼的幀的塊和參考幀的塊之間的關(guān)系。特別地,相關(guān)性信息410描述參考幀的什么塊用于對編碼的幀的塊進(jìn)行編碼。例如,如果使用幀N-1(參考幀)來對幀N進(jìn)行編碼,則相關(guān)性信息將幀N-1的塊鏈接到幀N的塊。
[0056] 因為編碼器402不知道錯誤將出現(xiàn)在哪里,相關(guān)性信息允許在特定的編碼的幀中的錯誤被追蹤或跟蹤(在事實之后)到一個或多個后續(xù)幀。特別地,因為相關(guān)性信息410將編碼的幀的塊鏈接到參考幀(即,緊接著前面的幀)的塊,使用相關(guān)性信息,參考幀中的錯誤可被追蹤到編碼的幀。例如,如果相關(guān)性信息指示參考幀的塊1用于對下一幀的塊2進(jìn)行編碼,如果錯誤在解碼期間出現(xiàn)在參考幀的塊1中,則相關(guān)性信息可用于將塊1中的錯誤追蹤到后續(xù)幀的塊2。特別地,相關(guān)性信息可用于確定可能傳播到下一幀的塊2的錯誤。
[0057] 雖然存儲幀的每個塊的運(yùn)動矢量允許編碼器準(zhǔn)確地將一個幀中的錯誤追蹤到后續(xù)幀,但這將需要存儲大量信息。已識別出錯誤傾向于作為矩形區(qū)域傳播。這是因為視頻一般以一系列數(shù)據(jù)包的形式傳輸。每個數(shù)據(jù)包一般包括視頻圖像的單獨(dú)可解碼的分片。分片通常是形成實質(zhì)上矩形的區(qū)域的視頻圖像的塊的光柵掃描集合。數(shù)據(jù)包的任何部分的損失或破壞引起在分片(其實質(zhì)上是矩形的)的形狀中的視覺假象。此外,假象傾向于在由一個或多個矩形盒接近的區(qū)域內(nèi)的這個區(qū)域周圍傳播。因此,可通過基于在同一行和列中的塊的運(yùn)動來規(guī)定矩形區(qū)域,來產(chǎn)生被參考幀中的任何特定塊影響的塊的準(zhǔn)確估計。
[0058] 因此,在本文描述的實施方式中,由編碼器402為每個幀存儲的相關(guān)性信息410是在行和列基礎(chǔ)上的運(yùn)動矢量的水平分量和垂直分量的最大值和最小值。特別地,編碼器402存儲塊的每列的運(yùn)動矢量的水平分量的最大值和最小值以及塊的每行的運(yùn)動矢量的垂直分量的最大值和最小值。最大值和最小值可接著用于將錯誤追蹤到在后續(xù)幀中的塊。參考圖5描述用于產(chǎn)生相關(guān)性信息410的示例方法,并參考圖6描述相關(guān)性信息410的例子。
[0059] 在一些情況中,編碼器402可以只存儲幀的預(yù)定數(shù)量的最小值和最大值。幀的預(yù)定數(shù)量可基于在編碼器402和解碼器404之間的往返時延。特別是,只需要存儲特定幀的相關(guān)性信息(即,最大值和最小值),直到足夠的時間過去為止,使得編碼器402可假定如果編碼器402對于特定的幀沒有接收到錯誤消息,則認(rèn)為解碼器404成功地接收幀并對該幀進(jìn)行解碼。因此,編碼器402可配置成保持與被編碼和發(fā)送但還沒有被解碼器404成功地解碼的幀有關(guān)的相關(guān)性信息的滾動窗口。
[0060] 解碼器404是用于對編碼的視頻數(shù)據(jù)進(jìn)行解碼的基于計算的設(shè)備。解碼器404經(jīng)由數(shù)據(jù)通信網(wǎng)絡(luò)406從編碼器402接收編碼的視頻數(shù)據(jù),并配置或布置成對所接收的編碼的視頻數(shù)據(jù)進(jìn)行解碼。解碼器404可向視頻輸出模塊412提供解碼的視頻用于顯示。視頻輸出模塊412可以是用于顯示視頻的任何適當(dāng)?shù)脑O(shè)備,例如電視機(jī)、計算機(jī)屏幕或移動電話顯示器;視覺再現(xiàn)硬件;用于存儲視頻數(shù)據(jù)的任何適當(dāng)?shù)脑O(shè)備,例如存儲器;或用于顯示視頻的任何適當(dāng)?shù)脑O(shè)備和用于存儲視頻數(shù)據(jù)的任何適當(dāng)?shù)脑O(shè)備的組合。
[0061] 如果解碼器404在對編碼的視頻數(shù)據(jù)解碼時遇到錯誤,則解碼器404經(jīng)由數(shù)據(jù)通信網(wǎng)絡(luò)406將錯誤通知消息傳輸?shù)骄幋a器402。通知消息包括識別幀和該幀有錯誤的部分的信息。通知消息可以以任何適當(dāng)?shù)男问?。例如,在一些情況下,通知消息可包括明確地識別有錯誤的塊的標(biāo)準(zhǔn)宏塊錯誤位圖。在其它情況下,通知消息可包括識別有錯誤的列和行的信息。
[0062] 當(dāng)接收到錯誤通知消息時,編碼器402使用通知消息中的信息來識別錯誤塊。編碼器402然后使用所存儲的相關(guān)性信息來將錯誤跟蹤或追蹤到緊接著待在由編碼器402編碼的下一幀前面的幀。例如,如果在幀N中出現(xiàn)錯誤,且?guī)琋+5是待編碼的下一幀,則編碼器402使用所存儲的相關(guān)性信息來追蹤錯誤從幀N到幀N+4的傳播。
[0063] 特別地,編碼器402使用相關(guān)性信息(即,最小水平運(yùn)動矢量分量、最大水平運(yùn)動矢量分量、最小垂直運(yùn)動矢量分量和最大垂直運(yùn)動矢量分量)來識別在錯誤可能傳播到的后續(xù)幀中的列和行。編碼器402接著使用列和行信息來識別在錯誤可能傳播到的后續(xù)幀中的一個或多個矩形區(qū)域。一旦編碼器402將錯誤追蹤到緊接著在待編碼的下一幀前面的幀中的一個或多個矩形區(qū)域,編碼器402為了編碼目的將緊接著被識別為可能被錯誤影響的前面的幀的任何塊標(biāo)記為不可用的。然后當(dāng)下一幀被編碼時,可能被錯誤影響的塊將不用于編碼。這減輕了錯誤的傳播。
[0064] 數(shù)據(jù)傳輸網(wǎng)絡(luò)406可以是能夠?qū)崿F(xiàn)在編碼器402和解碼器404之間的數(shù)據(jù)通信的任何網(wǎng)絡(luò)或網(wǎng)絡(luò)的組合。例如,數(shù)據(jù)通信網(wǎng)絡(luò)406可以是公共交換電話網(wǎng)絡(luò)(PSTN)、移動電話網(wǎng)絡(luò)、無線數(shù)據(jù)網(wǎng)絡(luò)、有線數(shù)據(jù)網(wǎng)絡(luò)或其任何組合。
[0065] 雖然示出單個數(shù)據(jù)通信網(wǎng)絡(luò)406,對本領(lǐng)域中的技術(shù)人員將明顯的是,數(shù)據(jù)通信網(wǎng)絡(luò)406可包括多個所連接的數(shù)據(jù)通信網(wǎng)絡(luò)或多個單獨(dú)和獨(dú)立的數(shù)據(jù)通信網(wǎng)絡(luò)。
[0066] 現(xiàn)在參考圖5,其示出用于產(chǎn)生可由圖4的編碼器402實現(xiàn)的相關(guān)性信息410(即,最小水平運(yùn)動矢量分量、最大水平運(yùn)動矢量分量、最小垂直運(yùn)動矢量分量和最大垂直運(yùn)動矢量分量)的方法500的流程圖。在步驟502,編碼器402從視頻源408接收代表視頻的幀的數(shù)據(jù)(在本文被稱為幀數(shù)據(jù))。響應(yīng)于接收到幀數(shù)據(jù),方法500繼續(xù)前進(jìn)到步驟504。
[0067] 在步驟504,編碼器402使用基于塊運(yùn)動補(bǔ)償?shù)囊曨l壓縮技術(shù)對幀數(shù)據(jù)進(jìn)行編碼。如上所述,基于塊運(yùn)動補(bǔ)償?shù)囊曨l壓縮技術(shù)包括試圖產(chǎn)生幀的每個塊的運(yùn)動矢量。如上面提到的,在一些情況下,可以不為幀的每個塊產(chǎn)生運(yùn)動矢量。例如,產(chǎn)生某些塊的運(yùn)動矢量可能不是可能的或有效的。
[0068] 運(yùn)動矢量可被記錄在被稱為FrameMV矩陣的矩陣中。FrameMV矩陣包括針對幀中的每個塊的條目。每個條目代表那個塊的運(yùn)動矢量(x分量和y分量)。FrameMV條目由行(x)和列(y)號編索引,使得FrameMV(x,y)代表在第x行和第y列中的塊的運(yùn)動矢量。FrameMVx(x,y)只代表在第x行和第y列中的塊的運(yùn)動矢量的x分量(即,水平分量),而FrameMVy(x,y)只代表在第x行和第y列中的塊的運(yùn)動矢量的y分量(即,垂直分量)。一旦編碼器402對幀進(jìn)行編碼(包括產(chǎn)生幀的運(yùn)動矢量),則方法500就繼續(xù)前進(jìn)到步驟506。
[0069] 在步驟506,編碼器402確定在每列中的塊的最大水平運(yùn)動。在一些情況下,編碼器402通過計算在每列中的塊的運(yùn)動矢量的最大水平分量(即,x分量)來確定在每列中的塊的最大水平運(yùn)動。編碼器402可將這些最大值保存在被稱為MaxMVx數(shù)組的數(shù)組中。MaxMVx數(shù)組包括針對在幀中的塊的每列的條目。每個條目代表在那個列中的塊的運(yùn)動矢量的最大水平分量。在一些情況下,可使用方程(1)從FrameMVx矩陣產(chǎn)生MaxMVx數(shù)組,其中TotalBlockRows是在幀中的塊行的總數(shù),而TotalBlockCols是在幀中的塊列的總數(shù)。
[0070] (1)MaxMVx(ColBlkIdx) = max0≤RowBlkIdx≤TotalBlockRowsFrameMVx(ColBlkIdx,RowBlkIdx)
[0071]
[0072] 一旦編碼器計算了每列的最大水平運(yùn)動矢量分量,則方法500就繼續(xù)進(jìn)行到步驟508。
[0073] 在步驟508,編碼器確定在每列中的塊的最小水平運(yùn)動。在一些情況下,編碼器通過計算在每列中的塊的運(yùn)動矢量的最小水平分量(即,x分量)來確定在每列中的塊的最小水平運(yùn)動。編碼器402可將這些最小值保存在被稱為MinMVx數(shù)組的數(shù)組中。MinMVx數(shù)組包括針對在幀中的塊的每列的條目。每個條目代表在那個列中的塊的運(yùn)動矢量的最小水平分量。在一些情況下,可使用方程(2)從FrameMV矩陣產(chǎn)生MinMVx數(shù)組。(2)MinMVx(ColBlkIdx)=min0≤RowBlkIdx≤TotalBlockRowsFrameMVx(ColBlkIdx,RowBlkIdx)[0074]
[0075] 一旦編碼器計算了每列的最小水平運(yùn)動矢量分量,方法500就繼續(xù)進(jìn)行到步驟510。
[0076] 在步驟510,編碼器402確定在每行中的塊的最大垂直運(yùn)動。在一些情況下,編碼器402通過計算在每行中的塊的運(yùn)動矢量的最大垂直分量(即,y分量)來確定在每行中的塊的最大垂直運(yùn)動。編碼器可將這些最大值保存在被稱為MaxMVy數(shù)組的數(shù)組中。MaxMVy數(shù)組包括針對在幀中的塊的每行的條目。每個條目代表在那個行中的塊的運(yùn)動矢量的最大垂直分量。在一些情況下,可使用方程(3)從FrameMV矩陣產(chǎn)生MaxMVy數(shù)組。
[0077] (3)MaxMVy(RowBlkIdx) = max0≤ColBlkIdx≤TotalBlockColsFrameMVy(ColBlkIdx,RowBlkIdx)
[0078]
[0079] 一旦編碼器計算了每行的最大垂直運(yùn)動矢量分量,則方法500就繼續(xù)進(jìn)行到步驟512。
[0080] 在步驟512,編碼器402計算在每行中的塊的運(yùn)動矢量的最小垂直分量(即,y分量)。在一些情況下,最小垂直分量值保存或存儲在被稱為MinMVy數(shù)組的數(shù)組中。MinMVy數(shù)組包括針對在幀中的塊的每行的條目。每個條目代表在那個行中的塊的運(yùn)動矢量的最小垂直分量。在一些情況下,可使用方程(4)從FrameMV矩陣產(chǎn)生MinMVy數(shù)組。
[0081] (4)MinMVy(RowBlkIdx) = min0≤ColBlkIdx≤TotalBlockColsFrameMVy(ColBlkIdx,RowBlkIdx)
[0082]
[0083] 一旦編碼器計算了每行的最小垂直運(yùn)動矢量分量,則方法500結(jié)束。
[0084] 在特定的塊被幀內(nèi)編碼(例如因為幀內(nèi)編碼被認(rèn)為更有效)的地方,該塊將沒有與它相關(guān)的運(yùn)動矢量。當(dāng)確定在每行和列中的塊的運(yùn)動矢量的最大水平分量、最小水平運(yùn)分量、最大垂直分量和最大垂直分量時,那個特定的塊可被忽略或看作具有零運(yùn)動矢量。
[0085] 現(xiàn)在參考圖6,其示出了可使用例如圖5的方法由圖4的編碼器402產(chǎn)生并存儲的相關(guān)性信息410的例子。圖6示出了存儲幀的運(yùn)動矢量的FrameMV矩陣602,其中25個塊被分成5個行和5個列。因此,F(xiàn)rameMV矩陣具有25個條目,每個條目針對幀中的每個塊。每個條目具有兩個分量:代表相對于參考(即,前面的)幀的相應(yīng)塊的水平運(yùn)動的水平分量或x分量和代表相對于參考(即,前面的)幀的相應(yīng)塊的垂直運(yùn)動的垂直分量或y分量。為了方便解釋,運(yùn)動矢量的測量單位是塊。因此,具有1的值的x分量意味著在正水平方向(即,向右)上的1個塊的運(yùn)動,而具有-2的值的y分量意味著在負(fù)垂直方向(即,向下)上的2個塊的運(yùn)動。然而,對本領(lǐng)域中的技術(shù)人員將明顯的是,任何其它適當(dāng)?shù)臏y量單位可用于運(yùn)動矢量分量,例如像素或子像素。
[0086] 如上面關(guān)于圖5描述的,F(xiàn)rameMV矩陣602可轉(zhuǎn)換成代表在行和列基礎(chǔ)上的最大水平運(yùn)動矢量分量、最小水平運(yùn)動矢量分量、最大垂直運(yùn)動矢量分量和最小垂直運(yùn)動矢量分量的一個或多個數(shù)組(例如MaxMVx 604、MinMVx 606、MaxMVy 608和MinMVy 610)。特別地,如上所述,MaxMVx數(shù)組604具有針對塊的每列的條目,其代表在那個列中的塊的最大水平運(yùn)動矢量分量;MinMVx數(shù)組606具有針對塊的每列的條目,其代表在那個列中的塊的最小水平運(yùn)動矢量分量;MaxMVy數(shù)組608具有針對塊的每行的條目,其代表在那個行中的塊的最大垂直運(yùn)動矢量分量;MinMVy數(shù)組610具有針對塊的每行的條目,其代表在那個行中的塊的最小垂直運(yùn)動矢量分量。這四個數(shù)組(MaxMVx 604、MinMVx 606、MaxMVy 608和MinMVy610)一起形成相關(guān)性信息410。
[0087] 在圖6中所示的例子中,幀包括塊的5個行和塊的5個列,因此四個數(shù)組(MaxMVx604、MinMVx 606、MaxMVy 608和MinMVy 610)每個具有五個條目,每個條目針對每列或每行。對本領(lǐng)域中的技術(shù)人員將明顯的是,根據(jù)在幀中的塊的行和列的數(shù)量,相關(guān)性數(shù)組(MaxMVx 604、MinMVx 606、MaxMVy 608和MinMVy 610)可具有更多或更少的條目。
[0088] 現(xiàn)在參考圖7,其示出了用于減輕在可由圖4的編碼器402實現(xiàn)的基于塊運(yùn)動補(bǔ)償?shù)囊曨l壓縮系統(tǒng)中的錯誤傳播的方法700的流程圖。在步驟702,編碼器402從解碼器404接收錯誤通知消息。如上所述,錯誤通知消息包括指示幀和該幀有錯誤的部分(即,塊)的信息。通知消息可以以任何適當(dāng)?shù)男问?。例如,在一些情況下,通知消息可包括明確地識別有錯誤的幀的塊的標(biāo)準(zhǔn)宏塊錯誤位圖。在其它情況下,通知消息可包括識別有錯誤的列和行的信息。響應(yīng)于接收到錯誤通知消息,方法700繼續(xù)進(jìn)行到步驟704。
[0089] 在步驟704,編碼器402分析錯誤通知消息以識別錯誤的起源。錯誤的起源被定義為特定的幀和該幀有錯誤的部分(即,塊)。其中出現(xiàn)錯誤的幀將被稱為錯誤幀,并且其中錯誤幀內(nèi)出現(xiàn)錯誤的塊在本文被稱為錯誤塊。響應(yīng)于識別出錯誤的起源,方法700繼續(xù)進(jìn)行到步驟706。
[0090] 在步驟706,編碼器402使用所存儲的相關(guān)性信息(即,最大數(shù)組和最小數(shù)組)將來自錯誤幀的錯誤追蹤到待編碼的下一幀的參考幀。在參考幀是緊接著在待編碼的幀前面的幀的地方,錯誤被從錯誤幀追蹤到緊接著在待被編碼的下一幀前面的幀。特別地,編碼器402使用相關(guān)性信息來識別可能已經(jīng)被錯誤影響的幀的塊,該幀緊接著在待被編碼的下一幀前面。換句話說,編碼器402使用相關(guān)性信息來識別錯誤從錯誤幀到待被編碼的下一幀的參考幀的傳播。
[0091] 在一些情況下,編碼器402使用相關(guān)性信息410(即,最小水平運(yùn)動矢量分量、最大水平運(yùn)動矢量分量、最小垂直運(yùn)動矢量分量和最大垂直運(yùn)動矢量分量)來識別緊接著在錯誤幀后面的幀的可能已經(jīng)被錯誤影響的列和行。受影響的列和行的重疊限定可能已經(jīng)被錯誤影響的塊的矩形區(qū)域(即,錯誤可能傳播到這些塊)。這個過程對每個后續(xù)幀重復(fù),直到錯誤被追蹤到緊接著在待被編碼的下一幀前面的幀。
[0092] 例如,如圖8中所示,如果錯誤802出現(xiàn)在幀N 804中。編碼器402使用幀N+1806的相關(guān)性信息(即,最大垂直運(yùn)動矢量分量、最小垂直運(yùn)動矢量分量、最大水平運(yùn)動矢量分量和最小水平運(yùn)動矢量分量)來識別幀N+1806的可能被錯誤802影響的列808和行810(即,錯誤可能傳播到這些列和行)。這些列808和行810的交集限定了可能已經(jīng)被錯誤802影響的塊的矩形區(qū)域812。
[0093] 這個過程然后對下一幀(幀N+2814)重復(fù)。特別地,編碼器402使用幀N+2814的相關(guān)性信息(即,最大垂直運(yùn)動矢量分量、最小垂直運(yùn)動矢量分量、最大水平運(yùn)動矢量分量和最小水平運(yùn)動矢量分量)來識別幀N+2814的可能被幀N+1806的錯誤區(qū)域812影響的列816和行818。這些列816和行818的交集限定了可能被錯誤802影響的塊的矩形區(qū)域820。這個過程然后對每個后續(xù)幀(即,N+3、N+4等)重復(fù),直到錯誤被追蹤到緊接著在待被編碼的下一幀前面的幀為止。
[0094] 參考圖10將描述了用于使用相關(guān)性信息410將來自錯誤幀的錯誤追蹤到緊接著在待被編碼的下一幀前面的幀的示例方法。一旦錯誤已經(jīng)被追蹤到緊接著在待被編碼的下一幀前面的幀,方法700繼續(xù)進(jìn)行到步驟708。
[0095] 在步驟708,緊接著在待被編碼的下一幀前面的幀中的塊(在步驟706中被識別為可能被錯誤影響)被標(biāo)記或以其它方式識別為對于幀間編碼是不可用的。例如,如果幀N+3是待被編碼的下一幀,則在幀N+2814的矩形區(qū)域820中的塊被標(biāo)記為對于幀間編碼是不可用的。一旦緊接著在當(dāng)前幀前面的幀的被識別為可能被錯誤影響的塊被標(biāo)記為對于幀間編碼是不可用的,則方法700繼續(xù)進(jìn)行到步驟710。
[0096] 在步驟710,使用基于塊運(yùn)動補(bǔ)償?shù)膲嚎s技術(shù)對待被編碼的下一幀進(jìn)行編碼。因為參考幀的多個塊被標(biāo)記為對于幀間編碼是不可用的,使用其它技術(shù)對相應(yīng)于(或關(guān)于)被標(biāo)記為對于幀間編碼是不可用的參考幀中的塊的在待被編碼的下一幀中的任何塊進(jìn)行編碼。在一些情況下,基于最后一個成功分發(fā)的幀(即,緊接著在錯誤幀前面的幀)對相應(yīng)于(或關(guān)于)在參考幀中的不可用塊的塊進(jìn)行編碼。在其它情況(例如其中壓縮技術(shù)不支持多個參考幀或沒有參考區(qū)是可用的)下,相應(yīng)于(或關(guān)于)在參考幀中的不可用塊的塊是被幀內(nèi)編碼的(即,僅使用來自幀本身的信息進(jìn)行編碼)。例如,相應(yīng)于(或關(guān)于)在參考幀中的不可用塊的塊可被分類為按光柵掃描順序(或塊編碼順序)連續(xù)運(yùn)行的塊,其被編碼為獨(dú)立可解碼的幀內(nèi)分片。
[0097] 現(xiàn)在參考圖9,其示出了用于對幀進(jìn)行編碼的方法,其中參考幀的一部分被識別為對于幀間編碼是不可用的。特別地,在圖9的例子中,錯誤902出現(xiàn)在幀N 904中。編碼器402使用幀N+1906的相關(guān)性信息(即,最大垂直運(yùn)動矢量分量、最小垂直運(yùn)動矢量分量、最大水平運(yùn)動矢量分量和最小水平運(yùn)動矢量分量)來識別幀N+1906的可能被錯誤902影響的列908和行910(即,錯誤可能傳播到這些列和行)。這些列908和行910的交集限定了可能被錯誤(即,錯誤可能傳播到這些塊)影響的塊的矩形區(qū)域912。編碼器402然后將在所識別的區(qū)域912中的塊標(biāo)記為對于編碼是不可用的。然后當(dāng)編碼器402對幀N+2914進(jìn)行編碼時,不能使用在所識別的區(qū)域912中的塊對幀N+2的塊916進(jìn)行編碼,幀N+2的塊
916相應(yīng)于(或關(guān)于)幀N+1906的被識別的區(qū)域912中的塊。在一些情況下,可使用在最后成功的分發(fā)的幀(即,幀N-1920)中的相應(yīng)區(qū)域918對這些塊916進(jìn)行編碼。
[0098] 現(xiàn)在參考圖10,其示出了用于使用可由編碼器402執(zhí)行的相關(guān)性信息410(即,最大運(yùn)動矢量分量和最小運(yùn)動矢量分量)將錯誤追蹤到后續(xù)幀的示例性方法1000。在步驟1002,編碼器402接收錯誤通知消息,其包括識別錯誤幀和錯誤幀在解碼期間有錯誤的部分(即,塊)的信息。
[0099] 在一些情況下,識別錯誤幀的在解碼期間有錯誤的部分的信息可包括分別指示在解碼期間有錯誤的幀的列和行的列錯誤圖和行錯誤圖。行錯誤圖和列錯誤圖可被實現(xiàn)為在本文分別被稱為RowErrorMap和ColErrorMap數(shù)組的數(shù)組。RowErrorMap具有針對幀的每行的條目。每個條目指示相應(yīng)的行在解碼期間是否有錯誤。例如,RowErrorMap(x)指示第x行在解碼期間是否有錯誤。類似地,ColErrorMap具有針對幀的每列的條目。每個條目指示相應(yīng)的列在解碼期間是否有錯誤。例如,ColErrorMap(y)指示第y行在解碼期間是否有錯誤。
[0100] 在其它情況下,識別錯誤幀的在解碼期間有錯誤的部分的信息可包括識別在解碼期間有錯誤的塊的幀錯誤圖。幀錯誤圖可由在本文被稱為FBFrameErrorMap矩陣的矩陣實現(xiàn)。FBFrameErrorMap矩陣包括針對在幀中的每個塊的條目。每個條目指示相應(yīng)的塊在解碼期間是否有錯誤。FBFrameErrorMap條目由行(x)和列(y)號編索引,使得FBFrameErrorMap(x,y)指示在解碼期間在第x行和第y列中是否存在錯誤。在識別了錯誤幀的部分的信息是幀錯誤圖的地方,方法1000繼續(xù)進(jìn)行到步驟1004,其中幀錯誤圖轉(zhuǎn)換成行錯誤圖和列錯誤圖(即,RowErrorMap數(shù)組和ColErrorMap數(shù)組)。然而在識別錯誤幀的部分的信息是行錯誤圖和列錯誤圖的地方,方法1000直接繼續(xù)進(jìn)行到步驟1006。
[0101] 在步驟1004,幀錯誤圖(即,F(xiàn)BFrameErrorMap)轉(zhuǎn)換成行錯誤圖和列錯誤圖。在一些情況下,將幀錯誤圖轉(zhuǎn)換成行錯誤圖和列錯誤圖包括分析幀錯誤圖以識別在解碼期間有錯誤的行和列。例如,可使用方程(5)從幀錯誤圖(即,F(xiàn)BFrameErrorMap矩陣)產(chǎn)生行錯誤圖(即,RowErrorMap數(shù)組)。
[0102]
[0103]
[0104] 類似地,可使用方程(6)從幀錯誤圖(即,F(xiàn)BFrameErrorMap矩陣)產(chǎn)生列錯誤圖(即,ColErrorMap數(shù)組)。
[0105]
[0106]
[0107] 一旦幀錯誤圖轉(zhuǎn)換成行錯誤圖和列錯誤圖,方法1000就繼續(xù)進(jìn)行到步驟1006。
[0108] 在步驟1006,編碼器將緊接著在錯誤幀后面的幀識別為參考幀。一旦參考幀被識別出,方法1000就繼續(xù)進(jìn)行到步驟1008。
[0109] 在步驟1008,編碼器402使用緊接著在參考幀前面的幀的行錯誤圖(即,RowErrorMap)和參考幀的相關(guān)性信息(即,最小垂直運(yùn)動矢量分量和最大垂直運(yùn)動矢量分量(MinMVy和MaxMVy))來識別參考幀中的可能被錯誤影響的行。例如,如果錯誤幀是幀N,則編碼器402使用幀N的行錯誤圖和幀N+1的相關(guān)性信息來估計幀N+1的被幀N中的錯誤塊影響的行。如果行被識別為可能被錯誤塊影響,則錯誤可能傳播到該行。
[0110] 在一些情況下,識別參考幀中的可能被錯誤影響的行的信息存儲在本文被稱為PropRowErrorMap數(shù)組的數(shù)組中。PropRowErrorMap數(shù)組像RowErrorMap數(shù)組一樣具有針對幀的塊的每行的條目。每個條目指示相應(yīng)的行是否可能被錯誤影響(即,錯誤可能傳播到該行)。例如PropRowErrorMap(x)指示第x行是否可能被錯誤影響。PropRowErrorMap數(shù)組可從方程(7)產(chǎn)生,其中StartIdx從方程(8)產(chǎn)生,且EndIdx從方程(9)產(chǎn)生,其中BLKHEIGHT是取決于運(yùn)動矢量的單位的像素或子像素中的塊的高度,并且ROUNDFACTOR是幫助計算錯誤的最壞情況傳播的因子。在一些情況下,ROUNDFACTOR等于BLKHEIGHT的一半以實現(xiàn)在整數(shù)除法中的“向上舍入”或上舍入功能。在其它情況下,ROUNDFACTOR可被設(shè)置為零(以實現(xiàn)“向下舍入”或下舍入功能)。將ROUNDFACTOR設(shè)置為零減少了被執(zhí)行的加法運(yùn)算的數(shù)量,但這個減少被以減小的準(zhǔn)確度為代價做出。
[0111]
[0112]
[0113]
[0114]
[0115] 一旦識別出錯誤可能傳播到的參考幀的行,方法1000就繼續(xù)進(jìn)行到步驟1010。
[0116] 在步驟1010,編碼器402使用緊接著在參考幀前面的幀的列錯誤圖(即,ColErrorMap)和參考幀的相關(guān)性信息(即,最小水平運(yùn)動矢量分量和最大水平運(yùn)動矢量分量(MinMVx和MaxMVx))來識別參考幀中的可能被錯誤影響的列。例如,如果錯誤幀是幀N,則編碼器402使用幀N的列錯誤圖和幀N+1的相關(guān)性信息來估計幀N+1的可能被幀N中的錯誤塊影響的列。如果列被識別為可能被錯誤塊影響,則錯誤可能傳播到該列。
[0117] 在一些情況下,識別參考幀中的可能被錯誤影響的列的信息存儲在本文被稱為PropColErrorMap數(shù)組的數(shù)組中。PropColErrorMap數(shù)組像ColErrorMap數(shù)組一樣具有針對幀的塊的每列的條目。每個條目指示相應(yīng)的列是否可能被錯誤影響。例如PropColErrorMap(y)指示第y列是否可能被錯誤影響。PropColErrorMap數(shù)組可從方程(10)產(chǎn)生,其中StartIdx從方程(11)產(chǎn)生,且EndIdx從方程(12)產(chǎn)生。BLKWIDTH是取決于運(yùn)動矢量的單位的像素或子像素中的塊的寬度,并且ROUNDFACTOR是用于計算錯誤的最壞情況傳播的因子。在一些情況下,ROUNDFACTOR等于BLKWIDTH的一半。
[0118]
[0119]
[0120]
[0121]
[0122] 一旦識別出錯誤可能傳播到的參考幀的列,方法1000就繼續(xù)進(jìn)行到步驟1012。
[0123] 在步驟1012,編碼器402將RowErrorMap設(shè)置為在步驟1008中計算的PropRowErrorMap,并將ColErrorMap設(shè)置為在步驟1010中計算的PropColErrorMap。方法
1000接著繼續(xù)進(jìn)行到步驟1014。
[0124] 在步驟1014,編碼器402確定緊接著在參考幀后面的幀是否是待由編碼器402進(jìn)行編碼的下一幀。如果確定緊接著在參考幀后面的幀是待被編碼的下一幀,則方法1000繼續(xù)進(jìn)行到步驟1018。然而如果確定緊接著在參考幀后面的幀不是待被編碼的下一幀,則該方法繼續(xù)進(jìn)行到步驟1016。
[0125] 在步驟1016,編碼器402將緊接著在參考幀后面的幀識別為參考幀,且方法1000繼續(xù)進(jìn)行返回到步驟1008。因此,針對在錯誤幀后面的每個幀一直到緊接著在待被編碼的下一幀前面的幀,重復(fù)使用相關(guān)性信息來識別幀的可能被緊接著在前面的幀中的錯誤影響的行和列的過程。換句話說,針對在錯誤幀后面的每個前面被編碼的幀重復(fù)該過程。
[0126] 在步驟1018,編碼器402將參考幀的行錯誤圖和列錯誤圖(即,RowErrorMap和ColErrorMap)轉(zhuǎn)換成幀錯誤圖。幀錯誤圖識別錯誤可能傳播到的參考幀的塊的矩形區(qū)域。矩形區(qū)域被定義為所識別的列和行(即,RowErrorMap和ColErrorMap)的交集。
[0127] 在一些情況下,參考幀的幀錯誤圖被存儲為矩陣。這樣的矩陣將在本文被稱為RefFrameErrorMap矩陣。類似于可從解碼器404接收的FBFrameErrorMap矩陣,RefFrameErrorMap矩陣包括針對幀中的每個塊的條目。每個條目指示原始錯誤是否可能已經(jīng)傳播到相應(yīng)的塊。RefFrameErrorMap條目由行(x)和列(y)號編索引,使得FBFrameErrorMap(x,y)指示錯誤是否可能已經(jīng)傳播到在第x行和第y列中的塊。
[0128] 在一些情況下,可使用方程(13)從行錯誤圖和列錯誤圖(即,RowErrorMap和ColErrorMap)產(chǎn)生RefFrameErrorMap陣列。
[0129] (13)RefFrameErrorMap(XBlkIdx,YBlkIdx)=RowErrorMap(YBlkIdx)×ColErrorMap(XBlkIdx)
[0130]
[0131] 產(chǎn)生的RefFrameErrorMap陣列限定了被識別為可能被原始錯誤(即,錯誤可能傳播到這些塊)影響的塊的矩形區(qū)域。一旦行錯誤圖和列錯誤圖轉(zhuǎn)換成幀錯誤圖,方法1000就結(jié)束。
[0132] 例子將用于進(jìn)一步描述圖10的方法1000。在本示例中,每個幀包括被劃分成5個列和5個行的25個塊,其中行和列是從0到4的數(shù)字。幀N+1具有在方程(14)到(17)中示出的最小水平運(yùn)動矢量分量數(shù)組、最大水平運(yùn)動矢量分量數(shù)組、最小垂直運(yùn)動矢量分量數(shù)組和最大垂直運(yùn)動矢量分量數(shù)組(MaxMVx、MinMVx、MaxMVy、MinMVy)。為了方便解釋,以塊為單位呈現(xiàn)運(yùn)動矢量分量。然而對本領(lǐng)域中的技術(shù)人員將明顯的是,其它測量單位可用于代表運(yùn)動矢量分量。例如,可以以像素或子像素為單位代表運(yùn)動矢量分量。
[0133] (14)MaxMVx=[0,0,-1,0,0]
[0134] (15)MinMVx=[0,0,1,0,0]
[0135] (16)MaxMVy=[0,0,-1,0,0]
[0136] (17)MinMVy=[0,1,1,0,0]
[0137] 如果在幀N的行1和列2中的塊中存在錯誤,則幀N的幀錯誤圖(FBFrameErrorMap)將如在方程(18)中所示。
[0138]
[0139] 當(dāng)接收到幀N的方程(18)的幀錯誤圖(FBFrameErrorMap)時,編碼器402可使用上面描述的方程(5)和(6)將幀錯誤圖(FBFrameErrorMap)轉(zhuǎn)換成幀N的方程(19)和(20)的行錯誤圖和列錯誤圖(RowErrorMap和ColErrorMap)。特別地,編碼器產(chǎn)生指示在行1和列2中存在錯誤的行錯誤圖和列錯誤圖。
[0140] (19)RowErrorMap=[0,1,0,0,0]
[0141] (20)ColErrorMap=[0,0,1,0,0]
[0142] 一旦產(chǎn)生行錯誤圖和列錯誤圖(RowErrorMap和ColErrorMap),編碼器402就使用幀N的行錯誤圖(RowErrorMap)和幀N+1的相關(guān)性信息(即,MaxMVy、MinMVy)來估計錯誤傳播到的幀N+1的行。例如,編碼器402可使用上面描述的方程(7)產(chǎn)生方程(23)的所傳播的行錯誤圖(ProRowErrorMap)。為了做到這一點(diǎn),編碼器402首先根據(jù)方程(8)和(9)產(chǎn)生如在方程(21)和(22)中所示的每行的起始id和結(jié)束id。為了簡單起見,假定塊尺寸是1,且舍入因子是零。如可從方程(23)看到,估計錯誤被傳播到行1和行2。
[0143] (21)StartIdx=[0,1,1,3,4]
[0144] (22)EndIdx=[0,2,3,3,4]
[0145] (23)PropRowErrorMap=[0,1,1,0,0]
[0146] 一旦產(chǎn)生所傳播的行錯誤圖,編碼器就使用幀N的列錯誤圖(ColErrorMap)和幀N+1的相關(guān)性信息(即,MaxMVx、MinMVx)來估計錯誤傳播到的幀N+1的列。例如,編碼器402可使用上面描述的方程(10)產(chǎn)生方程(26)的所傳播的列錯誤圖(PropColErrorMap)。
為了做到這一點(diǎn),編碼器402首先根據(jù)方程(11)和(12)產(chǎn)生如在方程(24)和(25)中所示的每列的起始id和結(jié)束id。為了簡單起見,假定塊尺寸是1,且舍入因子是零。如可從方程(26)看到的,估計錯誤被傳播到列1和列2。
[0147] (24)StartIdx=[0,1,1,3,4]
[0148] (25)EndIdx=[0,1,3,3,4]
[0149] (26)PropColErrorMap=[0,0,1,0,0]
[0150] 一旦產(chǎn)生所傳播的列錯誤圖,行錯誤圖和列錯誤圖(RowErrorMap和ColErrorMap)就被設(shè)置為所傳播的行錯誤圖和列錯誤圖(PropRowErrorMap和
PropColErrorMap)。
[0151] 假設(shè)幀N+1是在待編碼的下一幀前面的幀,一旦所傳播的行錯誤圖和列錯誤圖被設(shè)置為所傳播的行錯誤圖和列錯誤圖,使用上面描述的方程(13)將行錯誤圖和列錯誤圖轉(zhuǎn)換成方程(27)的參考幀錯誤圖以識別幀N+1的可能被幀N中的錯誤影響的塊。如可從方程(27)看到,估計錯誤將傳播到包括在行1、列2和行2、列2處的塊的幀N+1的矩形區(qū)域。
[0152]
[0153] 雖然關(guān)于實現(xiàn)基于固定尺寸塊運(yùn)動補(bǔ)償?shù)膲嚎s技術(shù)的編碼器描述了方法和系統(tǒng),但是對本領(lǐng)域中的技術(shù)人員將明顯的是,本文描述的方法和系統(tǒng)也可與實現(xiàn)基于可變尺寸塊運(yùn)動補(bǔ)償?shù)膲嚎s技術(shù)的編碼器一起使用。如上所述,在基于固定尺寸塊運(yùn)動補(bǔ)償?shù)膲嚎s技術(shù)中,幀被劃分成像素的多個相等尺寸的塊(例如16x16個像素的宏塊)。從參考幀中的相等尺寸的塊預(yù)測每個塊。
[0154] 在基于可變尺寸塊運(yùn)動補(bǔ)償?shù)膲嚎s技術(shù)中,編碼器可動態(tài)地選擇塊的尺寸,且每個塊不必有相同的尺寸。例如,編碼器可能能夠選擇尺寸為8x8個像素到64x64個像素的塊。在其中塊尺寸是可變的情況下,編碼器可配置成將按所使用的最小塊尺寸存儲相關(guān)性信息。例如,如果編碼器具有選擇在8x8個像素和64x64個像素之間的塊尺寸的能,則在8x8像素級存儲和分析運(yùn)動矢量信息。因此,如果為大于8x8的塊選擇運(yùn)動矢量,則編碼器復(fù)制運(yùn)動矢量以代表較大的塊。例如,如果為尺寸32x32個像素的塊選擇運(yùn)動矢量,則編碼器復(fù)制運(yùn)動矢量以代表十六個8x8像素塊。編碼器然后分析運(yùn)動矢量的8x8像素表示以產(chǎn)生相關(guān)性信息。
[0155] 現(xiàn)在參考圖11,其示出了可被實現(xiàn)為任何形式的計算和/或電子設(shè)備的示例性基于計算的設(shè)備1100的各種部件,且其中可實現(xiàn)圖4的編碼器402的實施方式。
[0156] 基于計算的設(shè)備1100包括一個或多個處理器1102,其可以是微處理器、控制器或用于處理計算機(jī)可執(zhí)行指令以控制設(shè)備的操作的任何其它適當(dāng)類型的處理器。在一些例子中,例如其中使用了芯片架構(gòu)上的系統(tǒng),處理器1102可包括實現(xiàn)上面在硬件(而不是軟件或固件)中描述的方法的一部分的一個或多個固定功能塊(也被稱為加速器)??稍诨谟嬎愕脑O(shè)備處提供包括操作系統(tǒng)1104的平臺軟件或任何其它適當(dāng)?shù)钠脚_軟件以使應(yīng)用軟件能夠被在設(shè)備上執(zhí)行。例如,基于計算的設(shè)備1100可包括編碼模塊1106,其包括使用基于塊運(yùn)動補(bǔ)償?shù)膲嚎s技術(shù)來對視頻的幀進(jìn)行編碼的代碼;相關(guān)性信息產(chǎn)生模塊1108,其包括用于產(chǎn)生每個編碼的幀的相關(guān)性信息1110的代碼(例如執(zhí)行圖5的方法500的代碼);錯誤跟蹤模塊1112,其包括使用相關(guān)性信息1110來將一個幀中的錯誤追蹤到后續(xù)幀的代碼(例如執(zhí)行圖10的方法1000的代碼);以及錯誤減輕模塊1114,其包括用于使用相關(guān)性信息1110來減輕錯誤的傳播的代碼(例如執(zhí)行圖7的方法700的代碼)。
[0157] 計算設(shè)備1100還包括可用于將編碼的幀傳輸?shù)浇獯a器404和/或從解碼器404接收錯誤通知消息的通信接口1116。
[0158] 可使用可由基于計算的設(shè)備1100訪問的任何計算機(jī)可讀介質(zhì)來提供計算機(jī)可執(zhí)行指令。計算機(jī)可讀介質(zhì)可包括,例如計算機(jī)存儲介質(zhì)(例如存儲器1118)和通信介質(zhì)。計算機(jī)存儲介質(zhì)(例如存儲器1118)包括用于存儲信息(例如計算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù))的以任何方法或技術(shù)中實現(xiàn)的易失性介質(zhì)和非易失性介質(zhì)、可移動介質(zhì)和不可移動介質(zhì)。計算機(jī)存儲介質(zhì)包括但不限于RAM、ROM、EPROM、EEPROM、閃存或其它存儲器技術(shù)、CD-ROM、數(shù)字通用盤(DVD)或其它光學(xué)存儲器、磁帶盒、磁帶、磁盤存儲器或其它磁性存儲設(shè)備或可用于存儲由計算設(shè)備訪問的信息的任何其它非傳輸介質(zhì)。相反,通信介質(zhì)可體現(xiàn)計算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或在經(jīng)調(diào)制數(shù)據(jù)信號(例如載波)中的其它數(shù)據(jù)或其它傳輸機(jī)制。如在本文限定的,計算機(jī)存儲介質(zhì)不包括通信介質(zhì)。雖然計算機(jī)存儲介質(zhì)(存儲器1118)被示為在基于計算的設(shè)備1100內(nèi),將認(rèn)識到,可遠(yuǎn)程分布或放置存儲器,并經(jīng)由網(wǎng)絡(luò)或其它通信鏈路(例如使用通信接口1116)訪問存儲器。
[0159] 基于計算的設(shè)備1100還可包括布置成向顯示設(shè)備1122輸出顯示信息的輸入/輸出控制器1120,顯示設(shè)備1122可與基于計算的設(shè)備1100分離或成一整體。顯示信息可提供圖形用戶界面。輸入/輸出控制器1120也可布置成從一個或多個設(shè)備(例如用戶輸入設(shè)備1124(例如鼠標(biāo)鍵盤))接收并處理輸入。在實施方式中,如果顯示設(shè)備1122是觸敏顯示設(shè)備,則顯示設(shè)備1122也可充當(dāng)用戶輸入設(shè)備1124。輸入/輸出控制器1120也可向不同于顯示設(shè)備的設(shè)備(例如本地連接的打印設(shè)備(在圖11中未示出))輸出數(shù)據(jù)。
[0160] 在本文使用的術(shù)語“處理器”和“計算機(jī)”指的是具有處理能力的任何設(shè)備或其部分,使得它可執(zhí)行指令。本領(lǐng)域中的技術(shù)人員將認(rèn)識到,這樣的處理能力并入到很多不同的設(shè)備中,且因此術(shù)語“計算機(jī)”包括機(jī)頂盒、媒體播放器、數(shù)字收音機(jī)、PC、服務(wù)器、移動電話、個人數(shù)字助理和很多其它設(shè)備。
[0161] 本領(lǐng)域中的技術(shù)人員將認(rèn)識到,用來存儲程序指令的存儲設(shè)備可分布在整個網(wǎng)絡(luò)中。例如,遠(yuǎn)程計算機(jī)可存儲被描述為軟件的進(jìn)程的例子。本地或終端計算機(jī)可訪問遠(yuǎn)程計算機(jī)并下載軟件的一部分或全部以運(yùn)行程序??蛇x地,本地計算機(jī)可按需要下載軟件的片段或執(zhí)行在本地終端處的一些軟件指令和在遠(yuǎn)程計算機(jī)(或計算機(jī)網(wǎng)絡(luò))處的一些軟件指令。本領(lǐng)域中的技術(shù)人員還將認(rèn)識到,通過利用本領(lǐng)域中的技術(shù)人員已知的常規(guī)技術(shù),可由專用電路(例如DSP、可編程邏輯陣列等)執(zhí)行軟件指令的全部或一部分。
[0162] 存儲用于在實現(xiàn)所公開的方面時使用的機(jī)器可執(zhí)行數(shù)據(jù)的存儲器可以是非暫時性介質(zhì)。非暫時性介質(zhì)可以是易失性或非易失性的。易失性非暫時性介質(zhì)的例子包括基于半導(dǎo)體的存儲器,例如SRAM或DRAM??捎糜趯崿F(xiàn)非易失性存儲器的技術(shù)的例子包括光學(xué)存儲技術(shù)和磁存儲技術(shù)、閃存、相變存儲器、電阻式RAM。
[0163] 對“邏輯”的特定參考指的是執(zhí)行一個功能或多個功能的結(jié)構(gòu)。邏輯的例子包括被布置成執(zhí)行那些功能的電路。例如,這樣的電路可包括晶體管和/或在制造過程中可用的其它硬件元件。舉例來說,這樣的晶體管和/或其它元件可用于形成實現(xiàn)和/或包含存儲器(例如寄存器、觸發(fā)器或存器)、邏輯運(yùn)算器(例如布爾運(yùn)算)、數(shù)學(xué)運(yùn)算器(例如加法器、乘法器或移位器))的電路或結(jié)構(gòu)和連接體。這樣的元件可被提供為定制電路或標(biāo)準(zhǔn)單元庫、宏或被在其它抽象級別提供。這樣的元件可在特定的布置中互連。邏輯可包括固定功能的電路,且電路可被編程以執(zhí)行一個功能或多個功能;可從固件或軟件更新或控制機(jī)制提供這樣的編程。被識別為執(zhí)行一個功能的邏輯也可包括實現(xiàn)組成功能或子進(jìn)程的邏輯。在例子中,硬件邏輯具有實現(xiàn)固定功能操作、或操作、狀態(tài)機(jī)或進(jìn)程的電路。
[0164] 如將對技術(shù)人員明顯的是,在本文給出的任何范圍或設(shè)備值可擴(kuò)展或改變,而不失去所尋求的效果。
[0165] 應(yīng)當(dāng)理解的是,上面描述的益處和優(yōu)點(diǎn)可涉及一個實施方式或可涉及幾個實施方式。實施方式不限于解決所陳述的問題中的任何所陳述的問題或所有所陳述的問題的那些實施方式或具有所陳述的益處和優(yōu)點(diǎn)中的任何所陳述的益處和優(yōu)點(diǎn)的或所有所陳述的益處和優(yōu)點(diǎn)的那些實施方式。
[0166] 對‘一個(an)’項目的任何參考指的是那些項目中的一個項目或多個項目。本文使用的術(shù)語‘包括(comprising)’意味著包括所識別的方法塊或元件,但這樣的塊或元件并不包括排他列表,且裝置可包含額外的塊或元件,以及方法可包括額外的操作或元件。此外,塊、元件和操作本身不是隱含地封閉的。
[0167] 可在適當(dāng)?shù)牡胤揭匀魏芜m當(dāng)?shù)捻樞蚧蛲瑫r執(zhí)行本文描述的方法的步驟。在附圖中的框之間的箭頭顯示方法步驟的一個示例順序,但并不旨在排除其它順序或并行的多個步驟的執(zhí)行。此外,可從方法中的任何方法刪除單獨(dú)的塊,而不偏離本文描述的主題的精神和范圍。上面描述的例子中的任何例子的方面可與所描述的任何其它例子中的任何例子的方面組合以形成另外的例子,而不失去所尋求的效果。在附圖的元件被示為由箭頭連接的地方,應(yīng)當(dāng)認(rèn)識到,這些箭頭僅僅顯示在元件之間的通信(包括數(shù)據(jù)和控制消息)的僅僅一個示例流程。在元件之間的流程可以在任一方向上或在兩個方向上。
[0168] 應(yīng)當(dāng)認(rèn)識到,僅通過示例的方式給出了優(yōu)選實施方式的上述描述,以及本文領(lǐng)域中的技術(shù)人員可做出各種修改。雖然上面以某個程度的特殊性或參考一個或多個單獨(dú)的實施方式描述了各種元件,但是本領(lǐng)域中的技術(shù)人員可對所公開的實施方式做出很多變更,而不偏離本發(fā)明的精神或范圍。
高效檢索全球?qū)@?/div>

專利匯是專利免費(fèi)檢索,專利查詢,專利分析-國家發(fā)明專利查詢檢索分析平臺,是提供專利分析,專利查詢,專利檢索等數(shù)據(jù)服務(wù)功能的知識產(chǎn)權(quán)數(shù)據(jù)服務(wù)商。

我們的產(chǎn)品包含105個國家的1.26億組數(shù)據(jù),免費(fèi)查、免費(fèi)專利分析。

申請試用

分析報告

專利匯分析報告產(chǎn)品可以對行業(yè)情報數(shù)據(jù)進(jìn)行梳理分析,涉及維度包括行業(yè)專利基本狀況分析、地域分析、技術(shù)分析、發(fā)明人分析、申請人分析、專利權(quán)人分析、失效分析、核心專利分析、法律分析、研發(fā)重點(diǎn)分析、企業(yè)專利處境分析、技術(shù)處境分析、專利壽命分析、企業(yè)定位分析、引證分析等超過60個分析角度,系統(tǒng)通過AI智能系統(tǒng)對圖表進(jìn)行解讀,只需1分鐘,一鍵生成行業(yè)專利分析報告。

申請試用

QQ群二維碼
意見反饋