亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

圖象數(shù)據(jù)處理的制作方法

文檔序號:7565078閱讀:204來源:國知局
專利名稱:圖象數(shù)據(jù)處理的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及用于視頻預(yù)測編碼的產(chǎn)生移動矢量類型的圖象數(shù)據(jù)的處理方法,其中第一視頻幀位于參考幀及第二視頻幀之間。
本發(fā)明也涉及用于視頻預(yù)測編碼的產(chǎn)生移動矢量類型的圖象數(shù)據(jù)的處理裝置,其中第一視頻幀位于參考幀及第二視頻幀之間。
預(yù)測編碼是一種公知的用于壓縮視頻數(shù)據(jù)的技術(shù)。將待編碼的視頻幀與參考幀相比較,不是產(chǎn)生出代表獨立的幀的數(shù)據(jù),而是產(chǎn)生出代表參考幀與待編碼幀之間差值的數(shù)據(jù)。
如果在圖象中發(fā)生移卻時,在參考幀與待編碼幀之間單個象素的比較其效率顯著地變低。但是,倘若移動經(jīng)常導(dǎo)致圖象中一些單元重布置,而不是一個圖象完全的重發(fā)生時,仍然具有一定的固有冗余度,并且這可被用來促使進一步的壓縮。
一個視頻序列中的移動經(jīng)常是由在圖象不同部分之間移動的單元組成的。假定視頻幀每秒出現(xiàn)25或30幀,對于最常觀看的物體其移動程度從一幀到另一幀是相當(dāng)和緩的。因此,移動通常由象素值的重新布置組成及該固有冗余度可被利用以便促進數(shù)據(jù)壓縮。
理論上,可以考慮每個單個象素的移動,對于所考慮的目前幀的每個單個象素識別在參考幀中類似象素的位置。但是,可以理解,對于每個單個象素產(chǎn)生移動矢量,與傳輸單個象素值本身相比將提供很小的壓縮,因此,為了獲得一定的壓縮度,必須對象素的區(qū)域計算移動矢量并假定該整個區(qū)域以相同方式移動。因而,公知了將視頻圖象分成象素塊,例如由16×16個象素組成的方塊。于是,在對塊中的每個象素傳輸差值數(shù)據(jù)以前,圍繞一個參考塊中的類似區(qū)域進行搜索以識別參考塊中的象素塊,此時該識別的象素塊再與待傳輸?shù)膲K相比較,并產(chǎn)生出最小絕對差值的平均項。這樣,一旦確定出來,這些差值項就與移動矢量一起被傳輸出去,其中移動矢量在參考幀中識別相對于與被傳輸塊類似位置的塊的真正參考塊的位置。
預(yù)測編碼可用來對緊跟在參考幀后的幀產(chǎn)生差值。此外,該方法也可用來預(yù)測后繼的幀,如幀n+2,及幀n+3等。在這些情況下,對其考慮到移動的參考幀搜索區(qū)域的規(guī)模將隨幀間隔的每次增加而增加。此外,應(yīng)理解這種增加以兩維的方式出現(xiàn)。
為了有助于移動矢量的計算,可以采用嵌套(telescoping)技術(shù),其中在幀n及幀n+1之間識別用于第一幀位移的移動矢量,然后參考幀n及對幀n+1計算的移動矢量來對幀n+2計算移動矢量。于是,這兩個移動矢量可被“嵌套”在一起,以提供出從幀n 幀n+2的移動矢量。
當(dāng)實時地確定移動矢量時,最大程度地減少從參考幀中讀出象素值的次數(shù)將是極有利的。因此,一個參考幀象素區(qū)域?qū)⒈恍蜇灥刈x出并提供到多個并行處理器。
每個移動矢量的計算涉及參考幀中的象素窗孔。當(dāng)處理一幀間隔時,這些窗孔相重疊,因此一個區(qū)域可能由多個重疊的窗孔組成,這使得被讀出的所有數(shù)據(jù)對多個處理器是可利用的。此外,已知隨著象素值的讀取移近窗孔邊緣時,可比較的數(shù)目將下降(因為待編碼塊中可從這些參考象素移動的象素數(shù)目減少了),因而當(dāng)對其目前塊可比較數(shù)目開始下降時,對于每個處理器可以開始對一新塊處理移動矢量。于是,每個處理器可設(shè)置成以基本恒定速率來處理象素的比較。
在理論上,對于與參考幀隔開不止一個幀間隔的視頻幀的塊的處理基本上以與單個幀間隔的情況類似的方式進行。但是,為了獲得可比較的結(jié)果,移動矢量可能存在的規(guī)模必須成正比地增大。因此,對該區(qū)域必須作出的比較量變得過大,并且實施起來是不現(xiàn)實的。
對這個問題的解決是嵌套地進行象素比較。在嵌套方案中,在參考幀中為第二幀考慮的象素位置的窗孔譬如可以與用于第一幀的窗孔具有相同規(guī)模。但是,當(dāng)對第二幀確定移動矢量時,利用由對第一幀的等效塊計算出的移動矢量確定的一個外延來再定位該窗孔。因此對于第二幀所需的比較數(shù)目變得與對于第一幀所需的比較數(shù)目相同,這將改善可實施性。
使用該嵌套方案的一個問題是,就其本質(zhì)而言,窗孔將以對在先幀確定出的移動矢量進行位移。因此,窗孔可能重疊,但在被讀區(qū)域中窗孔的真正布置是完全不能預(yù)測的而是由視頻圖象的特征確定的。雖然,為了計算一個特定的移動矢量僅必須讀出常規(guī)規(guī)模窗孔中參考幀的象素值,但是窗孔的位置將改變,因為它們可能位于在所有增大規(guī)模的多幀間隔的移動矢量所限定的區(qū)域中的任何位置上。因而,通過將象素值提供給多個處理器,使在參考幀中讀取象素值的次數(shù)減到最小程度的需要是和通過對檢驗窗孔實行嵌套偏移作出比較以減少處理器的負擔(dān)的要求相抵觸的。
根據(jù)本發(fā)明的第一方面,提供了上述類型的一種方法,其特征在于包括下列步驟參考所述參考幀處理所述第一幀中的象素塊,以產(chǎn)生第一幀移動矢量;從所述參考幀中讀出足夠大的象素區(qū)域,以便參考所述參考幀,提供對所述第二幀的移動矢量的直接計算;并行地處理從所述參考幀中讀出的象數(shù)值,以便并行地產(chǎn)生多個第二幀移動矢量;及響應(yīng)所述第一幀移動矢量啟動所述處理步驟。
根據(jù)本發(fā)明的第二方面,提供了上述類型的圖象數(shù)據(jù)處理裝置,其特征在于包括處理裝置,用于參考所述參考幀處理所述第一幀中的象素塊,以產(chǎn)生第一幀移動矢量;從所述參考幀中讀出足夠大的象素區(qū)域,以便參考所述參考幀,提供對所述第二幀移動矢量的直接計算的裝置;處理裝置,用于并行地處理從所述參考幀中讀出的象素值,以便并行地產(chǎn)生多個第二幀移動矢量;及啟動裝置,用于響應(yīng)所述第一幀移動矢量,啟動所述處理裝置。
因而,本發(fā)明提供了允許參考幀中象素值區(qū)域被序貫地讀出并提供給多個處理器的優(yōu)點。但是,每個處理器并不負擔(dān)不需由它處理的象素值,因為對每個處理器提供了由對在先幀計算出的移動矢量得到的啟動信號。
以下將參照附圖通過僅為例子的方式來描述本發(fā)明,附圖為

圖1表示用于對視頻信號壓縮及擴展、以便傳輸或存儲它們的一個系統(tǒng),它包括執(zhí)行時間壓縮的電路;圖2A表示一個待編碼幀的象素塊及參考幀中的一個象素塊,它們用于計算移動矢量;圖2B表示計算移動矢量的一個算法程序;
圖3詳細表示圖1中所示類型的用于執(zhí)行時間壓縮的一個公知電路;圖4A表示根據(jù)MPEG建議方案考慮的在編碼前的幀的類型;圖4B表示MPEG幀的編碼流;圖5詳細表示用于對根據(jù)MPEG建議方案壓縮了的視頻幀解碼的電路;圖6表示與待編碼幀相比較的一個參考幀或區(qū)域,它用于當(dāng)該幀與參考幀隔開大于一幀間隔時計算其移動矢量;圖7表示為了計算移動矢量的嵌套式搜索;圖8表示利用嵌套法計算移動矢量的電路,它包括移動矢量計算電路;及圖9詳細表示圖8所示的移動矢量計算電路。
圖1中表示出用于壓縮視頻信號、傳輸或存儲所述信號和擴展所述被傳輸及被儲存的視頻信號的一個系統(tǒng)。全帶寬視頻信號由視頻信號發(fā)生器14產(chǎn)生出來,該發(fā)生器可以是攝象機或視頻重播裝置、如磁帶式放象機或光盤播放機等的形式。信號發(fā)生器14產(chǎn)生一個序列的原始幀15,它被提供給一個時間壓縮電路16。該時間壓縮電路利用在時間上分開的幀之間的相似性并產(chǎn)生代表所述幀之間差別的編碼信號。所述時間壓縮電路16的輸出被提供給空間壓縮電路17,它設(shè)計來利用特定圖象幀中的另外冗余信息。因此,空間壓縮電路17利用余弦變換編碼,使得對每幀產(chǎn)生的數(shù)據(jù)量依賴于在幀中包含的真實信息量。
因此,時間壓縮及空間壓縮的組合被認為可獲得顯著的視頻數(shù)據(jù)壓縮度,它允許被壓縮的這類視頻信號能在有限帶寬的頻道上傳輸,例如是在電視電話中使用的頻道上傳輸,或是用另一種方式,存儲在標(biāo)準(zhǔn)的以計算機為基礎(chǔ)的存儲媒界上,例如單片磁盤或以音頻為基礎(chǔ)的高密度光盤(CD-ROM)上。
來自空間壓縮電路17的輸出信號被放大器18放大,以便傳輸或存儲,如標(biāo)號19中所示的。
在一個接收機上,或在重播裝置中,從傳輸媒界接收到的及從存儲裝置中讀出的編碼信號被提供給一個放大器20,以后對取得壓縮所進行的處理進行反向處理,以使得圖象數(shù)據(jù)被擴展。于是,電路21執(zhí)行空間擴展,然后電路22執(zhí)行時間擴展,由此將一個全帶寬視頻圖象提供給圖象產(chǎn)生裝置23,例如電視監(jiān)視器,它接著顯示出一個序列的擴展視頻幀24。
本發(fā)明特別地涉及時間編碼及解碼方面,盡管會理解到,在許多場合除時間壓縮技術(shù)外還會涉及空間壓縮技術(shù)。利用這兩種類型壓縮的壓縮技術(shù)被國際標(biāo)準(zhǔn)組織(ISO)的活動圖象專家組通稱為MPEG。
時間壓縮是通過將第一幀作為參考幀并將該參考幀與一個待編碼的幀相比較來進行的。通過識別待編碼的幀與參考幀之間的差別并對這些差別的表達量進行編碼來獲得其編碼,以使得在接收機上或在重播時能重新構(gòu)成原始幀。
第一步驟可由將待傳輸幀的每個象素與參考幀的相應(yīng)象素相比較來組成。通常,象素由多個彩色分量,如RGB組成,或在傳輸系統(tǒng)中更普通地由亮度信號加上兩個色差信號組成。因此,對于這些分量的每一個,待傳輸幀的值與參考幀相比較,并且,不是對待傳輸?shù)南笏貍鬏斔械闹?,而是傳輸兩個象素值之間的差值。因此,在某些情況下,在逐幀基礎(chǔ)上兩個值之間的差可能很小,尤其是當(dāng)原始圖象是靜止的情況。但是,當(dāng)出現(xiàn)活動時,差別將開始變大并且具有顯著的移動量,其保留量將變得很小。此外,假如給定環(huán)境具有有限帶寬用于傳輸或存儲,其移動將產(chǎn)生圖象的破壞。
雖然,當(dāng)出現(xiàn)大的移動時,差分編碼技術(shù)最終也會失效,但是顯然,在大多數(shù)電視片斷中,移動是由在一圖象幀中在預(yù)定時間周期上移動的實際物體組成的。因此,假定在正好一秒的電視片斷中大量的幀被消失了,則可能對于整個幀的信息內(nèi)容來說移動物體不會產(chǎn)生大的變化,盡管在個別象素上會產(chǎn)生大的變化。因此,如果能與差值信號一起傳輸識別移動矢量的信息,該差值信號不是從參考幀的原始位置取得的,而是根據(jù)移動矢量從原始位置移到的位置取得的,就可以減少被傳輸?shù)男畔⒘俊?br> 用此方式壓縮視頻數(shù)據(jù)的一個系統(tǒng),也就是說,利用除差分編碼外的移動矢量計算的系統(tǒng)被公開在美國專利5,083,202中,該專利已轉(zhuǎn)讓給本受讓人。根據(jù)該公開文獻,視頻幀被分成多個塊,每個塊由每行上具有16個象素的16個行組成,即16×16個象素。將幀分成塊也需用空間壓縮,即,使用離散變換方法,但通常涉及分成為8×8個象素的塊。當(dāng)使用這兩種技術(shù)時,從四個8×8的塊集合成16×16個象素的區(qū)域,為了區(qū)別這兩者,較大的塊被稱為宏塊。
這種類型的象素宏塊被表示在圖2A中,對于圖象幀中所示的物體的實際移動,移動矢量并非從中得到且未必涉及到。正如這里所使用的,移動矢量涉及特定的16×16宏塊,并且它表示與待傳輸?shù)膲K相比產(chǎn)生出最小差值的參考圖象中一個塊的整數(shù)象素排列在正或負X,Y方向上的移動。因此有可能這樣來識別該矢量,即它滿足這個準(zhǔn)則而不真正地涉及到圖象幀中一個物體的實際移動。但是,在實踐中,很可能是這樣來識別移動矢量,即由于實際的移動實質(zhì)上發(fā)生在移動矢量的方向上,因而它滿足該準(zhǔn)則。
移動矢量的分辨率實際上是基于所需壓縮度及可能獲得的處理裝置任意選擇的。在此例中,移動矢量是以整象素間隔來量度的,但也可使用分數(shù)象素間隔,并且在子象素位置上的新象素值可用內(nèi)插法計算。類似地,搜索區(qū)域的大小這樣地選擇,以便提供最大的移動速度,而同時其間隔實際受到為計算移動矢量所需的處理設(shè)施的限制。當(dāng)在傳輸側(cè)上對移動矢量進行實時計算時,這點是特別重要的。
用于特定塊的優(yōu)選移動矢量的識別是一個需要大量計算的過程。但是應(yīng)理解到,一旦,為了執(zhí)行編碼并然后為了執(zhí)行解碼進行傳輸及記錄,移動矢量被實際地確定出來了,解碼程序則需要相當(dāng)少的計算。因此,當(dāng)給定一個移動矢量時,使用該矢量是一個非常直截了當(dāng)操作,以便識別被傳輸?shù)膮⒖紟械膬?yōu)選塊。但是,在傳送側(cè),在其被用于執(zhí)行編碼前必須實際地計算接矢量。
在特定塊計算移動矢量的方法將參照圖2A及圖2B來描述。在圖2A中,一個待編碼的16×16的象素塊用標(biāo)號25表示。該象素塊用參考幀中的相似塊來識別,并且不是傳輸目前塊的真實象素值,而是傳輸待編碼幀的塊中的象素值與參考幀中被識別出的塊中的象素值之間的算術(shù)差。
圖26是參考幀中的16×16象素塊,它出現(xiàn)在與目前幀中的塊25等同的位置上。因此,如果采用無移動矢量的預(yù)測編碼時,在塊25中的象素值將與塊26中的象素值直接相比較。
但是,當(dāng)考慮到移動及使用移動矢量時,將在參考幀中執(zhí)行搜索,來識別出一個比從塊26計算出的差值產(chǎn)生更小差值的16×16象素塊。
在理論上,可以對參考幀中的所有可能的塊進行檢驗,但是這需要極大量的計算并且實時地進行實際上是不可能的。因此,作了一種折衷,即從該16×16象素塊的基本位置(從標(biāo)號26表示的位置)在X、Y方向上向正、負方向移動15個象素間隔形成一個搜索區(qū)域。
因此,當(dāng)給出了正或負15個象素的位移時,用于對塊25編碼的參考象素塊可在參考幀的塊27中的任何位置上獲得。因而,塊27是由46×46個象素位置組成的塊,并且一個16×16的象素塊可能出現(xiàn)在塊27中961(31×31)個位置中的任一個上。
為了確定這些可能位置中哪個能提供最佳移動矢量要考慮所有可能位置,并基于在待傳輸幀25及塊27中的參考塊之間產(chǎn)生最小差值的位置作出選擇。為了確定最佳可能移動矢量所執(zhí)行的算法表示在圖2B上。
為了公開該方案起見,一個16×16的宏塊、例如塊26,它在一個更大的搜索區(qū)域、如塊27中的位置被稱為“塊位置”。此外,在一個16×16個象素的宏塊中真實象素的位置被稱為“象素位置”。塊位置將參照沒有在矢動矢量影響下被移動的塊所占據(jù)的位置來描述。因此,在區(qū)域27中一個塊位置將參照塊26的位置描述。此外,在區(qū)域27中塊位置的X、Y座標(biāo)系也等同于將塊26改變到計算實際差值的塊位置上所需的移動矢量。
如前所述,對于每個塊移動矢量是考慮在區(qū)域27中的每個可能位置來確定的。這是從考慮由移動矢量(-15,-15)定位的左上角的一個塊開始的。
在步驟30上確定下個塊的位置,即由一個移動矢量(X、Y)來規(guī)定它,在第一次操作時它被規(guī)定為上述左上角的塊。
在步驟31上,規(guī)定為差值和的變量∑D被置成零。接著,從步驟32開始了一個程序環(huán),它考慮在特定塊位置中所有的象素位置,因此,在步驟32上考慮該塊中下個象素的位置,及在步驟33上利用從待傳輸?shù)南笏刂抵袦p去參考象素值計算出絕對差值D,而不管該差值的符號。
在步驟34上,將在步驟33上計算出的差值加到代表差值和的變量∑D上,在第一次操作時,該和由在步驟33上計算出的值D加零形成。
在步驟35上將提問是否還有要考慮的其它象素位置?在第一次操作時,將得到肯定的回答,結(jié)果是控制返回到步驟32。
于是,在步驟32上確定出下一象素位置,在步驟33上為該象素位置計算其差值,并再在步驟34上將該差值加到差值和上。
這樣,直到宏塊中所有象素位置均被考慮了,16×16個象素的該宏塊中的所有差值就被加在一起,在步驟35上所問問題的回答便是否定的。
除去被確定的代表一個特定塊差值和的∑D值外,還存儲了代表差值的最小模數(shù)和的規(guī)定為∑D(min)的另一變量。
在開始該算法程序時,∑D(min)將設(shè)得足夠大,以使得任何∑D的典型值將具有較小模數(shù),結(jié)果使在步驟36上對所問問題的回答為肯定。
當(dāng)在步驟36上對所提問題的回答肯定時,則在步驟37上將∑D(min)設(shè)成等于∑D的計算值。類似地,在步驟38上,移動矢量的X分量V(X)被置成等于如在步驟30中所確定的X,移動矢量的Y分量V(Y)被置成等于Y。
在步驟39上,將提問是否還有要考慮的其它塊位置?如果回答是肯定的,則控制返回到步驟30,在那里將選擇下一X、Y塊位置。
因此,對于每個塊位置,該塊中的所有象素值與塊25中的相比較,即與待編碼的塊相比較。所有這些絕對象素差值(即為模數(shù)差值)被加在一起,及該和的模數(shù)被作出比較為檢驗至今所發(fā)現(xiàn)的和值是否是最小的。如果它是至今發(fā)現(xiàn)的最小和值,則用它取代在先的最小和值,并在步驟38上建立一個新的最佳移動矢量。
在所有塊位置被考慮了以后,結(jié)果是在步驟39上對所提問題的回答為否定,變量∑D(min)將代表最小的差值和,及對V(X)及V(Y)存儲的值代表最佳移動矢量的X及Y座標(biāo)系,它就是當(dāng)待傳輸?shù)膲K25與區(qū)域27中的參考塊相比較時產(chǎn)生最小差值的移動矢量。
用于執(zhí)行差分編碼的電路被表示在圖3上。一個預(yù)測電路41包括一個幀緩沖器,用于存儲在先幀的象素值。因此,該在先幀成為參考幀,及代表新的幀與該參考幀之間差值的信號被用于傳輸或傳送到下一壓縮級,如圖1中所示。利用減法電路42計算差值,它從輸入象素值中減去由預(yù)測電路41產(chǎn)生的輸出值。然后,這些象素值被編碼電路43編碼,可能進行量化編碼或霍夫曼(Huffman)編碼,以便隨后的傳輸或處理。
由編碼電路43輸出的信號也提供給解碼電路44,它設(shè)來作與編碼電路43相反的處理。解碼過程的執(zhí)行在于保證類似于在原始側(cè)上產(chǎn)生的參考幀在接收側(cè)上也被重新組建出來。由電路43執(zhí)行的編碼可能會引起損失,因此在原始側(cè)必須對這些損失進行考慮,以保證可重組建出類似的圖象。
于是,來自解碼電路44的輸出被提供給一個加法電路45,該加法電路的輸出被供給預(yù)測電路41。在操作中,來自待編碼幀的圖象數(shù)據(jù)塊被集聚在輸入緩沖器46中。待被傳輸?shù)南乱粋€數(shù)據(jù)塊被輸入到預(yù)測電路41,它被設(shè)置來執(zhí)行移動矢量計算程序,詳見前述。該計算程序的結(jié)果是,預(yù)測電路41確定出用于傳輸或本身將被記錄的該塊的移動矢量。
預(yù)測電路41存儲了一個完整復(fù)制的參考幀。開始,它識別在參考幀中與目前正在編碼的塊等同位置的塊。從該等同位置的塊,通過移動一些象素間隔根據(jù)移動矢量的規(guī)定來識別移動校正的等同塊。
一旦由預(yù)測電路41識別出一個預(yù)測塊,用于該塊的待編碼象素值被提供到加法電路42,該加法電路也接收來自預(yù)測電路41的等效預(yù)測值。因此,對于每個待編碼的塊中的象素,從其中減去它的等效移動校正象素,并將產(chǎn)生出的作為電路42輸出的差值提供給編碼電路43。
來自編碼電路43的輸出象素被聚集在一個輸出緩沖器48中,它能存儲多個完整的象素,以便能有助于傳輸?shù)木彌_。這就是說,對于被傳輸或以恒速記錄的象素來說它是理想的,以致能對可獲得的帶寬作出最佳利用。無論怎樣,如果編碼過程具有復(fù)雜的特性,則難以用恒定速率產(chǎn)生編碼象素,因此設(shè)置緩沖器48可使產(chǎn)生編碼數(shù)據(jù)的速率的變化被整平。
如前所述,來自編碼電路43的輸出被提供給一個等效解碼電路44,隨后由預(yù)測電路41產(chǎn)生的象素預(yù)測值被加法電路45加在已解碼值上,并再反饋到預(yù)測電路41,以便能組成后繼的參考幀,使得下一幀能依該次序被編碼。
因而,可以理解,當(dāng)在視頻幀的一個特定序列中給定了一個幀時,就可以計算以此次序發(fā)生的隨后幀。這種編碼形成被稱為向前預(yù)測編碼,其中一個新幀的編碼或解碼是參考在次序上先出現(xiàn)的幀進行的。尤其是,每個新幀的塊是參考在先幀的塊進行解碼的。首先,該塊可能在與這個在先幀中相應(yīng)位置不同的位置上,該新位置由移動矢量來識別。其次,傳輸值由新塊與在先被傳輸塊之間的象素差值組成。
如在美國專利5,083,202中所描述的,可以實時地對向前預(yù)測的視預(yù)信號編碼,由此可使該技術(shù)除用在編碼過程顯著長于解碼過程的系統(tǒng)中外,也可用在傳輸系統(tǒng)中。
根據(jù)MPEG視頻壓縮方案,將根據(jù)上述的向前預(yù)測方法產(chǎn)生出被壓縮的視頻幀。這種類型的幀被稱為“P”幀,它是形成壓縮位流的三種幀中的一種。
對MPEG系統(tǒng)要求它應(yīng)具有輸入點,這就是說從其可開始重播的參考幀,而不對在先傳輸?shù)膸鞒鰠⒖?。因此,一個MPEG位流可考慮是由多群幀組成的,其中每群(group)實質(zhì)上是自持的,允許在所述群的邊界上作編輯點。為了能使一些圖象幀壓縮成群,必須傳輸一個以這樣方式壓縮的幀,即它不需來自任何另外幀的信息用于它的產(chǎn)生。這樣一個幀被稱為幀內(nèi)編碼的幀,它區(qū)別于信息需來自其它幀的幀間編碼。這種類型的幀在MPEG標(biāo)準(zhǔn)中被稱為“工”幀(幀內(nèi)編碼),而“P”幀是從工幀或另外的P幀向前預(yù)測的幀。
在圖4中表示出用于MPEG的一個典型輸入幀序列。雖然,在該例中一群規(guī)定由15幀組成,但根據(jù)推薦方案,群數(shù)是可調(diào)整的,有效的做法是在壓縮率(即為,壓縮數(shù)據(jù)與原始數(shù)據(jù)的比例)及圖象質(zhì)量之間進行折衷。
在圖4A所示的15個幀的群中,將幀3規(guī)定為幀內(nèi)編碼幀I0。對該輸入序列的幀6用如上所述的向前預(yù)測編碼進行編碼,它將參考I0幀,即幀3。類似地,也使用向前預(yù)測編碼來編碼幀9,它被稱為P1,并將參考幀P0。下一預(yù)測幀P2則參考幀P1進行編碼,而最后的向前預(yù)測編碼幀P3參考幀P2進行編碼。因此,在一個15幀的群中,具有一個幀內(nèi)編碼幀,對該幀可料想到,它需要比隨后的幀及四個基本使用參照圖3所示的技術(shù)獲得的向前預(yù)測幀更顯著的加寬的帶寬。
該15個幀一群中的其余十個幀考慮參考與它相鄰兩側(cè)上的幀來得到編碼。就實際編碼而論,幀4,5,7,8,10,11,13及14可采用與向前預(yù)測P幀相同的方式,從一個I幀或一個P幀向前預(yù)測。于是,對于每個塊,利用塊中每個象素上的象素差值向前識別出一個移動矢量。
但是,要理解到,在某些情況下,在向前預(yù)測的幀與從其中獲取預(yù)測值的參考幀之間會出現(xiàn)場景的變化。當(dāng)出現(xiàn)該情況時,在預(yù)測幀及參考幀之間具有很小的相關(guān)性,結(jié)果是差值非常大,它可能涉及與傳輸作為幀內(nèi)編碼的預(yù)測幀所需信息量成類似比例的信息。因此,在這種狀況下,就失去了預(yù)測編碼的優(yōu)點,它勢必會產(chǎn)生圖象度量的降級,因為系統(tǒng)力圖傳輸?shù)膱鼍白兓璧某挸^所能得到的帶寬。在某種程度上,利用輸出緩沖器48可使該狀況得到寬容,假定另外的幀以足夠高的效率進行編碼而提供了附加的帶寬容量。但是,偶爾地,這類變化可能會產(chǎn)生出顯著的圖象質(zhì)量降級。
在一個克服此類狀況及進一步降低所需帶寬的嘗試中,幀1,2,4,5,7,8,10,11,13及14可參考視頻圖象序列中的后繼幀而非在先幀進行編碼。這樣,不是在向前方向上進行預(yù)測編碼,而是實際上在向后方向上進行預(yù)測編碼。因此,這些幀被稱為B幀(雙向幀),不過,應(yīng)理解到,向前編碼或向后編碼的選擇是在逐幀的基礎(chǔ)上選擇的,它取決于哪種方法需要最小的信息量。此外,雙向編碼幀可參考在先及在后兩個幀進行編碼。
于是,假定一個場景的變化發(fā)生在幀4及幀5之間。如果幀5是使用向前預(yù)測編碼產(chǎn)生時,它的參考幀是幀3。幀3形成在先場景的部分,因此具有與來自下一場景的幀5很小的相關(guān)性。如果要精確地重播幀5時,則需要很大的信息量。
在該例中,為了使用向前預(yù)測編碼方法來產(chǎn)生幀6將要傳輸很大的信息量。顯然,在幀3及幀6之間發(fā)生了場景的變化,正如由產(chǎn)生幀6所需的信息量所表現(xiàn)的,因此,很明顯地,在幀3及幀6的編碼時已實際上考慮到場景變化的效果。
該變化發(fā)生在幀4及幀5之間,且?guī)?可參考幀3精確地被重播。但是,當(dāng)編碼幀5時,如果所述該幀參考譬如幀6進行編碼,也即使用向后預(yù)測方法而非向前參考圖3進行編碼時,將需要少得多的信息量。但是在作出兩種編碼實踐的嘗試前,編碼系統(tǒng)將不會知道幀5應(yīng)參考幀6而不是幀3來編碼。當(dāng)已進行這兩種類型的編碼時,則可能對每種的結(jié)果進行比較,并選擇會產(chǎn)生最小傳輸信息量的編碼類型。
因此,在該例中幀4及幀5兩者起初將用向前預(yù)測方式及用向后預(yù)測方式進行編碼。然后,對幀4將參考向前預(yù)測編碼進行傳輸,而對幀5將參考向后預(yù)測編碼進行傳輸。
倘若B幀可通過向前預(yù)測編碼由前面的幀來產(chǎn)生,或通過向后預(yù)測編碼由后面的幀來產(chǎn)生,為了傳輸或記錄起見,就需要識別出幀數(shù)據(jù)的次序。這種重編次序表示在圖4B中。如果假定圖4A中所示的幀1是一特定順序中的最先一個幀,則不可能利用向前預(yù)測來產(chǎn)生該幀,因為沒有在先的幀。因此,幀1及幀2兩者由向后預(yù)測編碼來產(chǎn)生并因此在幀3后面被傳輸出去。這樣,如圖4B中所示,首先被傳輸?shù)膸菐?,后面跟著幀1及2。在幀3后面,不能傳輸幀4及5,因為這兩幀可能是參考幀6編碼的,而非參考幀3,因此下一個被傳輸?shù)膸菐?,后面跟著幀4及5,類似地,下一個幀是幀9,再跟著幀7及8,在幀12即P2幀被傳輸后,接著是幀10及11,在P3幀即幀15被傳輸后,接著是幀13及14。
用于MPEG編碼流的解碼電路被表示在圖5中,接收信號由放大器51放大,它類似于圖1中的放大器20。一個信號分離器52從移動矢量中分離出以頻域傳輸?shù)南笏匦畔?,并將所述象素?shù)據(jù)提供給一個空間擴展電路53,它類似于圖1中所示電路21,用于將空間壓縮數(shù)據(jù)轉(zhuǎn)換成象素值或象素差值,然后再被提供給處理器54。
處理器54,除從空間擴展電路53接收象素數(shù)據(jù),還從分離器52接收移動矢量及從視頻幀存儲器A及視頻幀存儲器B接收參考數(shù)據(jù),用于執(zhí)行時間擴展。為了響應(yīng)這些信息,處理器54被設(shè)置成以傳統(tǒng)的視頻格式產(chǎn)生輸出幀。
如圖4B中所示,一個幀群以重編次序被傳輸,因此擴展電路53接收編碼幀3,后面跟著編碼幀1,編碼幀2及編碼幀6等。它執(zhí)行空間擴展并將擴展幀數(shù)據(jù)提供給處理器54。
幀3是一個幀內(nèi)編碼幀,其本身僅用空間壓縮來傳輸。因此,在被電路53執(zhí)行空間擴展后,來自幀3的象素數(shù)據(jù)就完整了,因而不再需要由處理器54為產(chǎn)生輸出數(shù)據(jù)的附加處理,而將該幀3的象素數(shù)據(jù)提供給一個選擇器55。
但是,直到幀1及2被解碼了,幀3才能被提供輸出,因此,選擇器55將象素數(shù)據(jù)寫入到幀存儲器A中。
如圖4B所示,下一個到來的幀是幀1,它在空間擴展后就提供給處理器54。幀1是參考幀3預(yù)測編碼的(向后編碼),因此通過響應(yīng)移動矢量從存儲器A中讀出參考值及將參考象素加到被傳輸象素上來產(chǎn)生出幀1的輸出數(shù)據(jù)。沒有其它的幀是參考幀1編碼的,因此選擇器55安排將解碼的幀1提供到輸出端。
下一個到來的幀是幀2。該幀也是僅參考幀3被編碼的,因此處理器54也是通過參考響應(yīng)由分離器52提供的移動矢量從存儲器A中讀出的值來解碼幀2的。類似地,選擇器55將解碼的值提供到輸出端。
再下一個到來的幀是幀6,它也是參考幀3使用向前預(yù)測方法被編碼的。因此,在空間擴展后,處理器54將參考移動矢量及存儲在存儲器A中的參考值對幀6解碼,并將幀6的解碼值提供給選擇器55。在此情況下,幀6不能先于待解碼的幀4及5被提供到輸出端,因此幀6的解碼值由選擇器55提供給存儲器B。與此同時,幀3從存儲器A中被讀出并被提供到輸出端。
現(xiàn)在,已將幀3及6解碼數(shù)據(jù)進行了存儲,就可以對幀4及5進行向前、向后或雙向的解碼,-假設(shè)所有必要的信息是可獲得的。在幀4及5被提供到輸出端后,將幀6從存儲器B中讀出并也提供到輸出端。
在幀5被提供到輸出端后,將不再需要保留幀3,因此存儲器A可被改寫。再一個到來的幀是幀9。它將參考幀6解碼并寫入到存儲器A中。隨后,對于幀7及8重復(fù)上述對幀4及5的處理。幀7及8被解碼并提供到輸出端,然后,可從存儲器A中讀出并將它本身提供到輸出端。
因此,可以理解,利用尊循類似的技術(shù),所有的幀可被解碼,直到接收到另一幀內(nèi)編碼幀為止,接著將重復(fù)整個處理過程。也可理解到,硬件的需要,尤其是幀存儲器的數(shù)目并不是由幀群中包含的雙向幀數(shù)導(dǎo)致的。雙向幀當(dāng)其被接收到時,便參考存儲在存儲器A及B中的兩個幀進行了解碼。
在編碼速度不太嚴(yán)格的應(yīng)用場合,根據(jù)圖4所示的MPEG的要求在對視頻序列編碼時將不會遇到特別的困難。但是,當(dāng)試圖實時地根據(jù)據(jù)該標(biāo)準(zhǔn)進行編碼時,將會引起兩個顯著的問題。
如在圖2A中所示的,為了僅對一個16×16個象素的宏塊25確定其移動矢量,必須要對在區(qū)域27中的所有塊位置(46×46象素位置的方塊)考慮象素差值。當(dāng)在相鄰的幀之間執(zhí)行預(yù)測編碼時,可以在這樣一個區(qū)域上確定出合適的移動矢量。但是,如圖4A中所示的,必須要參考幀3來預(yù)測地對幀6編碼。在此情況下,幀6不是直接地與幀3相鄰的,而是距幀3隔開整3個幀的間隔。
如果移動發(fā)生在由幀3,4,5及6限定的時間間隔上,則可能在恒定的方向上發(fā)生該移動。因此,從其可確定出最小差值的參考象素塊將在圖象幀上這樣地移動,即搜索區(qū)域?qū)嶋H上在逐幀的基礎(chǔ)上移動。于是,雖然對于相鄰的幀位置需要移動正或負15個象素位置,但隨著幀間隔的增大,該搜索區(qū)域的規(guī)模也必須增大,以便獲得類似的結(jié)果。
因而,為了參考幀3對幀4預(yù)測編碼,必須在正或負的15個象素位置考慮塊位置,如圖2A中所示。但是,當(dāng)參考幀3對幀5作預(yù)測編碼時,幀的間隔增加了一個幀的位置,因此必須在正或負30個象素位置上考慮塊位置,以便能獲得類似結(jié)果。相似地,當(dāng)參考幀3對幀6編碼時,搜索區(qū)域?qū)⒃僭龃笳蜇?5個象素位置。于是,為了實現(xiàn)3個幀間隔,必須考慮由正或負45個象素位置的塊位移確定的象素區(qū)域。
這樣,便易于理解,如果根據(jù)圖2B規(guī)定的算法程序來搜索由正或負45個象素位置的位移限定的區(qū)域的話,參考幀3來直接地對幀6計算移動矢量將產(chǎn)生極大的總計算量。
參照圖6將可以理解該問題。在該例中,壓縮編碼裝置接收到原始圖象幀3,4,5及6,它們將被編碼成I0,B1,B2及P0,幀P0將參考幀I0利用向前預(yù)測方法被編碼。因此,所有的幀被分成16×16個象素的宏塊,然后通過確定移動矢量和象素差值一起對每個宏塊編碼。如前所述,當(dāng)考慮對于編碼幀P0的塊時,在由幀I0得到的塊及參考幀I0待編碼的塊之間具有三個幀的間隔。在幀6中,塊61代表作為P0幀一部分的待編碼用于傳輸?shù)?6×16個象素的宏塊。使用向前預(yù)測編碼方法,在幀I0中的相應(yīng)塊被稱為62。對于一幀間隔確定移動矢量時,這樣是幀4,這將使塊62的位置可在方塊63中任何位置上。這代表在X及Y方向上正或負15個象素的可能位移。
對于下一個幀間隔,就是從幀4到幀5,必須再考慮正或負15個象素的位移,因此,在兩幀后,對于塊62,它可能位于方塊64中的任何位置上,于是,在其中必須計算差值的區(qū)域大大地增加了。但是,盡管區(qū)域出現(xiàn)了明顯增大,它仍不能對幀P0提供移動矢量,因為還需要再一幀的間隔。
再一幀的間隔將在X及Y方向上產(chǎn)生另一個正或負15個象素的位移,將使得塊62可處于方塊65中任何位置上。因此,為了從方塊65對塊61提供參考矢量,并保持與從方塊63獲得的移動矢量具有相同的質(zhì)量等級,就必須考慮在X及Y方向上達到正及負45個象素位置的位移。顯然,這樣大的計算量在使用現(xiàn)有的硬件設(shè)施時實際上是不可能實時地被獲得的。
如前所述,還必須對幀4及5進行雙向編碼。于是,不管對幀4及5是否真正傳輸正向預(yù)測值,仍然必須計算它們,因此必須參考幀3中的塊對幀4中的塊計算移動矢量。這等同于在方塊63中移動塊62,這也表示在圖2A中。在塊62中的所有象素通過在X有Y方向上移動了正或負15個象素位置后,就可以將這些值平均并對塊62計算最佳移動矢量。
另一種方案稱為“嵌套法”(“telescoping”),它表示在圖7中。塊62在圖7中表示為塊72。通過在區(qū)域73中移動塊72來確定移矢量。作為這些操作的結(jié)果,計算出移動矢量,這實際上是將塊72重新定位到塊76上。于是在塊76中的象素可用來向前預(yù)測幀4中象素的塊。在常規(guī)的預(yù)測編碼中,幀4現(xiàn)在將用來預(yù)測幀5的值,后者再用來預(yù)測幀6的值。
如前所述,根據(jù)MPEG方案,對于幀6的值不是經(jīng)由幀4從幀5預(yù)測的,而是直接地從幀3預(yù)測的。但是,假定無論怎樣移動矢量都必須從幀4及幀5來計算,則這些移動矢量被用來計算幀6的最終移動矢量。因此,不是需要使象素位移正或負45個象素位置試圖一次躍越地來計算幀6的移動矢量,而是分級地來計算幀6的移動矢量,它類似于連接在一起能被拉得很長的嵌套式望遠鏡的各小節(jié)的結(jié)構(gòu)。因而,參考幀3獲得幀6的移動矢量的過程為參考幀3來計算幀4的移動矢量,參考幀3并使用上次計算的移動矢量作為偏移量來計算幀5的移動矢量,及最后參考幀3并再使用編移量來計算幀6的移動矢量,該過程被稱為“嵌套法”。
圖7代表一個參考幀中的象素塊。作為該例,待被傳輸?shù)膸械膲K與參考幀相隔3個幀的間隔。但是,不是將參考幀與最后輸出幀中的象素值相比較來執(zhí)行單次操作,而是考慮中間的幀,以致計算一個序列的移動矢量,它們再根據(jù)嵌套技術(shù)被加在一起。
這樣,所考慮的幀是由一個參考幀,一個待傳輸幀,及兩個位于參考幀及待傳輸?shù)膸g的中間幀塊成的。
待傳輸幀的每個宏塊被單獨的考慮。于是,對于每個特定的宏塊,在中間幀及在參考幀中具有一個等效的塊位置。該等效塊位置在圖7中表示為塊72。該等效定位塊將與第一中間幀中的等效定位塊相比較?,F(xiàn)在是在由X及Y兩方向上位移正或負15個象素所確定的區(qū)域73中進行搜索的。因此,該搜索實質(zhì)上與參照圖2A所描述的相同。該搜索的結(jié)果是,在參考幀中識別出塊76,它作為這樣一個塊,即由它可以獲得用于在第一中間幀中重建塊的象素值。此外,識別出使該等效定位塊移到塊76所需的移動矢量。
為了對第二中間幀產(chǎn)生出移動矢量,將在由區(qū)域77所限定的正或負15個象素位置間隔內(nèi)執(zhí)行另一次搜索。仍然,該搜索產(chǎn)生出另一個被計算出的移動矢量,它實際上在參考幀中被表示為塊78。因此,對于第二中間幀的移動矢量將使塊位置76轉(zhuǎn)移到塊位置78,及對于第一中間幀的移動矢量將使塊位置72轉(zhuǎn)移到塊位置76。
在對于第二中間幀計算出移動矢量后,對于圍繞塊78的、也是由正及負15個象素位置間隔限定的區(qū)域79再重復(fù)該過程。其結(jié)果是,在參考幀中識別出另一個塊位置,并且產(chǎn)生出全部的三個移動矢量,它們使參考幀中的一個塊轉(zhuǎn)移到與其隔開3個幀間隔的待轉(zhuǎn)輸幀中的一個塊上。于是,由嵌套這三個分開的移動矢量產(chǎn)生出一個單個的移動矢量,以致于可以使得一個塊及與識別該塊移動的移動矢量被傳輸出去,對于該塊已在與其相隔三幀間隔的參考幀中計算出差值。
該嵌套方法的結(jié)果是,獲得了在幀3中識別塊移動的單個移動矢量,它可用來預(yù)測幀6中的塊,而不必如圖6提供的圖示所建議的作出大量曲折的計算。
用于根據(jù)MPEG方案實時編碼視頻幀的一種時間壓縮電路被表示在圖8中。圖8中所示電路包括一個輸入存儲區(qū)域81,一個參考存儲區(qū)域82,一個移動矢量計算電路83,一個空間壓縮器84,一個空間擴展器85及緩沖區(qū)域86。
在該圖示例中,輸入存儲區(qū)域包括第一輸入幀存儲器87及第二輸入幀存儲器88。真正包括在輸入存儲區(qū)域中的幀存儲器的數(shù)目依賴于傳輸信息流中雙向幀的分群。因此,在該例中,雙向幀被分成兩群。因而需用兩個存儲裝置87及88。但是根據(jù)該方案,包含在每個雙向幀群中的雙向幀數(shù)目是可變的,并應(yīng)理解到,當(dāng)該分群值增大時,設(shè)在輸入存儲區(qū)域中的輸入幀存儲器的數(shù)目就需要相應(yīng)增加。
參考存儲區(qū)域82包括第一參考幀存儲器89及第二參考幀存儲器90。在參考存儲區(qū)域中需要兩個幀存儲器以便用于雙向預(yù)測編碼。于是,在參考存儲區(qū)域中幀存儲器的設(shè)置不取決于實際使用的MPEG信息流的類型,該類型是就在每群中出現(xiàn)的雙向幀的數(shù)目而言的。
標(biāo)號91表示提供給該電路的輸入幀的表,它等同于圖4A中所示的次序。如圖4A中所示,一個群的開始起始于雙向幀B-2,接著跟有雙向幀B1,然后是該群的幀內(nèi)編碼幀I0。因而這些幀可被分別標(biāo)以幀序號1,2及3。
當(dāng)幀B-2到達該電路時不可能對該幀編碼,因為編碼是參考幀內(nèi)編碼實現(xiàn)的,而在該階段此幀還末到達。因此,選擇器92將輸入幀數(shù)據(jù)寫入到第一輸入幀存儲器87中。類似地,當(dāng)幀B-1(幀2)到達時也不可能對該幀編碼,因而選擇器92將其象素信息寫入到第二輸入幀存儲器88中。
當(dāng)?shù)谌斎霂竭_時,這將作為I0幀處理,如前所述,該幀的傳輸末經(jīng)任何時間壓縮,以致對于特定群的幀可不參考任何其它群被再生出來。因此,輸入選擇器92將I0幀的象素值直接地提供給輸出選擇器93,接著將所述的值經(jīng)由加法器94及空間壓縮器84傳送到緩沖區(qū)域86。
加法器94用它的第二輸入端從參考存儲區(qū)域82接收預(yù)測值。該參考存儲區(qū)域82包括一個輸入選擇器95及一個輸出選擇器96,設(shè)置來用于將數(shù)據(jù)分別寫入到參考幀存儲器89及90中及從所述兩存儲器中分別讀出數(shù)據(jù)。
當(dāng)I0幀被提供給空間壓縮器84時,選擇器96實際上截止,以致沒有附加值被提供到加法器94,并且沒有被預(yù)測的值從由輸出選擇器93輸入到加法器的值中減去。
在緩沖區(qū)域86上,由空間壓縮器84產(chǎn)生的象素值在寫尋址器98的控制下寫入到緩沖器97中。于是,如標(biāo)號99所指示的。I0幀是在寫尋址器98的控制下寫入到緩沖器97的第一個幀。
除去提供到寫尋址器98外,由空間壓縮器84產(chǎn)生的用于I0幀的象素值也被提供給空間擴展器85,它實際上執(zhí)行與空間壓縮器84相逆的功能??臻g擴展器的輸出提供給加法器100,該加法器以其第二輸入端接收由選擇器96產(chǎn)生的輸出。如前所述,當(dāng)處理I0幀時,沒有輸出從選擇器96產(chǎn)生出來,因此對于幀I0,來自加法器100的輸出等同于由空間擴展器85產(chǎn)生的輸出。
來自加法器100的輸出被提供到參考存儲區(qū)域82的輸入選擇器95,接著,它將象素值寫入到第一參考幀存儲器89中。存儲在輸入幀存儲器87及88中的值及存儲在參考幀存儲器89及90中的值可由移動矢量計算電路83尋址。該移動矢量計算電路8 3能由在時間上與參考幀相鄰不止一幀間隔的四個幀使用上述的嵌套技術(shù)計算出移動矢量。因此,使用該技術(shù),移動矢量計算電路對第一幀即B-2幀及對第二幀即B-1幀中的各個塊計算移動矢量。理想的情況是,如圖4B所示,B-2幀應(yīng)在B-1幀之前被編碼。但是,直到對于B-1幀計算出類似的向后移動矢量時,才可能對B-2幀計算向后的移動矢量。這是因為對B-2幀的移動矢量是用嵌套程序計算的,因此需要對B-1幀計算出的移動矢量用于作為在對B-2幀計算移動矢量時的偏移值。于是,將B-1幀寫入到輸入幀存儲器88中,通過從這個幀存儲器中讀出值及從參考幀存儲器89中讀出I0幀的值,移動矢量計算電路83將為幀B-1中的各個塊計算出移動矢量。
在對幀B-1計算出移動矢量以后,則可以對幀B-1進行編碼。如果對該電路要求其實時地操作,就必須節(jié)省每一時刻保證數(shù)據(jù)盡可能快地被處理。于是,處可以編碼B-1幀的狀態(tài)時將導(dǎo)致了實際上對幀B-1編碼所必須采取的步驟。然后,移動矢量被從移動矢量計算電路83提供到輸出選擇器96。為響應(yīng)這些移動矢量,從參考幀存儲器89讀出象素值,這些象素值就是幀I0的構(gòu)成部分,它被提供給加法器94用于產(chǎn)生預(yù)測值。這時,從輸入幀存儲器88中讀出用于幀B-1的象素值,并經(jīng)由輸出選擇器93提供給加法器94。在加法器94上,從由輸出選擇器93提供的被存儲象素值中減去由輸出選擇器96產(chǎn)生的預(yù)測值,然后將差值提供給空間壓縮器84。
B類幀其本身不對任何其它幀提供參考幀,因此由空間擴展器85產(chǎn)生的任何輸出被提供給選擇器95,而不導(dǎo)致使象素值提供給任何參考幀存儲器89或90。但是,用于幀B-1的編碼象素值被提供給寫尋址器98,它接著將這些象素值寫入到緩沖器97。
在對幀B-1進行編碼了及將該塊相關(guān)的移動矢量存儲到移動矢量計算電路83中以后,就可以通過首先對B-2幀計算移動矢量,來對該特定幀進行編碼。
如前所述,利用通過嵌套方法對幀B-1確定的偏移值,可使計算移動矢量時的搜索區(qū)域減少。于是,產(chǎn)生出嵌套的移動矢量,它能使幀B-2參考已存儲在參考幀存儲器89中的幀I0來編碼。這將導(dǎo)致,由輸出選擇器93從輸入幀存儲器87中讀出用于幀B-2的象素值,并經(jīng)由加法器94提供給空間壓縮器84。在加法器94上,減去由輸出選擇器96選擇的預(yù)測值及所產(chǎn)生的差值被壓縮器84壓縮。仍然,不需要將任何這些象素作為參考值存儲,但是所述的值被提供給寫尋址器98,它接著將這些值寫入到緩沖器97中。
在幀B-2及B-1已被編碼后,不再需要為這些幀保留象素值,因而輸入存儲器87及88可以被改寫。也應(yīng)理解到,在此階段沒有數(shù)據(jù)被寫入到參考存儲器90中。
對于輸入序列中到達的下一個幀,即幀4將作為幀B0來處理。幀B0將被進行向編碼,因此直到下一人P幀被接收到才能對該幀B0進行編碼。所以,將幀B0先寫入到第一輸入幀存儲器87中。用于幀B0的輸入象素值也被直接地輸入到移動矢量計算電路83,該計算電路將參照被存儲的用于I0幀的象素值實時地計算移動矢量。從幀I0向前預(yù)測幀B0的值被計算出來并被存儲,以便在后面與從下一個P幀的向后預(yù)測值相比較。
類似地,下一個到來的幀即幀5也是B類幀,對其將導(dǎo)致在輸入選擇器92的控制下其象素值被寫入到第二輸入幀存儲器88中,以及直接地被傳送到輸入選擇器,用于如對于幀B0所述的那樣從存儲幀I0向前預(yù)測。
對于下一個到達的幀、即幀6將作為幀P0來處理,因此輸入選擇器92將這些象素值直接到傳到輸出選擇器93。利用從被存儲的I0幀向前預(yù)測的值對用于幀P0的象素值進行編碼。
用于P0的輸入象素值也被直接地提供給移動矢量計算電路83,它將參考存儲在幀存儲器89中的用于I0幀的存儲象素值,利用嵌套來自幀4及5的移動矢量來計算用于P0幀的移動矢量。
在計算用于P0幀的移動矢量時,將所述矢量提供到選擇器96,這導(dǎo)致對存儲器89中的參考值適當(dāng)?shù)剡x址,并對加法器94提供預(yù)測的值。
用于P0幀的象素值被從輸出選擇器93提供給加法器94,在加法器94上從其中減去預(yù)測的值,并將輸出值提供給空間壓縮器84。來自空間壓縮器84的輸出被提供給寫尋址器98,后者接著將已編碼的象素值寫入到緩沖器97中。與此同時,由壓縮器84輸出的編碼值被傳送到空間擴展器85,以執(zhí)行與空間壓縮器84所執(zhí)行的處理相逆的處理。
如前所述,來自空間擴展器85的輸出擴展象素值被提供給加法器100,該加法器100用其第二輸入端接收由選擇器96產(chǎn)生的預(yù)測值于是,象素值以與對P0幀的重建象素值實質(zhì)上等同的形式被提供給選擇器95。這些象素值其本身將被提供來作為B幀的參考值,因而所述這些值被寫入到第二參考幀存儲器90中。
在對用于P0幀的象素值均被考慮過以后,便可使用于幀B0及B1的象素值分別地存儲在輸入幀存儲器87及88中,以便使用后向預(yù)測被編碼。
在參考I0幀對P0幀產(chǎn)生移動矢量時,將利用移動矢量計算電路83執(zhí)行嵌套程序。于是,參考幀3對幀4計算出移動矢量。類似地,參考幀3及4對幀5計算出移動矢量,并利用嵌套程序,參考幀3,4,及5再對幀6計算出移動矢量。這樣,就已對B0及B1幀在向前方向上計算出移動矢量。現(xiàn)在則必須在向后方向上來計算這些移動矢量,正如對幀B-2及B-1所作的那樣。
仍然,假定對于幀B0將通過嵌套程序來計算移動矢量,就必須首先對幀B1計算幀B1、即幀5的向后移動矢量。
為了實現(xiàn)這些移動矢量計算,從第二輸入幀存儲器88讀出數(shù)值并提供給移動矢量計算電路83。然后將相對參考幀進行搜索,在此情況下,參考幀為從第二參考幀存儲器90中讀出的P0幀。在移動矢量被計算出來以后,它們被提供給選擇器96,它通過從第二參考幀存儲器90讀出合適的參考值,使幀B1被編碼。因此,從幀存儲器88中讀出用于幀B1的象素值并經(jīng)選擇器93提供給加法器94。在加法器94上,從由選擇器93提供的實際象素值中減去由輸出選擇器96產(chǎn)生的預(yù)測值,再將產(chǎn)生的差值提供給空間壓縮器84。仍然是,由空間壓縮器84產(chǎn)生空間壓縮值借助于寫尋址器98被寫入到緩沖器97中。
一旦幀B1被編碼了,現(xiàn)在可就對幀B0編碼。仍然是,在第二參考幀存儲器中存儲的參考幀的區(qū)域中進行搜索,在該操作時參考幀將是P0幀。借助在先計算出的用于幀5的移動矢量作為偏移量執(zhí)行嵌套程序。于是,將新計算出的移動矢量提供給選擇器96,以便能由加法94執(zhí)行預(yù)測編碼。
一旦幀B0及B1已在向前從向后面方向上被編了碼,該裝置將對這些雙向幀確定出是否應(yīng)該使用向后預(yù)測編碼向前預(yù)測編碼或是內(nèi)插式雙向編碼。請決定是基于哪一種編碼方案能產(chǎn)生最小誤差作出的。為響應(yīng)該計算,選擇器96從存儲器89及90的任一個中或從這兩者的結(jié)合中選擇用于每個幀的適合值。
如前所述,響應(yīng)寫尋址器98使幀寫入緩沖器97次序是由標(biāo)號99所表示的。該次序可與在如圖4 B中所示的方案中所需的次序相互比較。在該方案中,第一個被傳輸?shù)膸荌0幀,后面跟著B-2幀、B-1幀及P0幀等。但是,倘若是用嵌套程序來對雙向幀計算向后預(yù)測矢量,必然會導(dǎo)致所述的幀以錯誤的次序?qū)懭氲骄彌_器97中。于是,如由表99所示地,在幀I0被寫入到緩沖器97后緊接著是幀B-1(幀2)被寫入到所述緩沖器中,再接眷是B-2幀。因而,幀B-1及幀B-2以錯誤的次序被產(chǎn)生出來。
這種定次序的狀況在緩沖存儲區(qū)域86中借助讀尋址器101來解決。因此,設(shè)置的讀尋址器101以與寫入到緩沖器97的次序不同的次序讀出壓縮的象素數(shù)據(jù)。對讀尋址器101提供了識別緩沖器97中每個壓縮幀位置的信息。于是,在信息以表99所示次序被寫入到緩沖器97以后,則根據(jù)如表102所示的建議方案中的次序從緩沖器97中讀出信息。因而從緩沖器97中要讀出的第一個幀是I0幀,如前所述,它也是寫入到所述該緩沖器中的第一個幀。但是,此后從緩沖器97中讀出的不是B-1幀-該幀為寫入在所述緩沖器中的第二幀,而是從該緩沖器讀出B-2幀,它實際是寫入到所述緩沖器中的第三幀,如表99中所示。于是,讀尋址器實現(xiàn)了使幀次序重新編排成推薦方案所需的次序。
如表102所示,下一個被讀出的幀是P0幀,然后是B0幀先于B1幀被讀出,接著才是B1幀被讀出。
參照圖8所描述的該系統(tǒng)的一個顯著優(yōu)點在于雖然緩沖器97在允許向后嵌套的矢量計算方面起到重要作用,但它沒有明顯增加該系統(tǒng)的硬件需要。緩沖器97原是必須的,因為象素勢必以可變的位速寫入到所述緩沖器中。位速主要取決于圖象的固有冗余度,顯然,讀冗余度是從一個視頻幀序列到另一視頻幀序列變化著的。因而在整個視頗幀序列上在壓縮后產(chǎn)生的實際位數(shù)將是變化的。但是許多視頻及傳輸裝置需要恒定位速,因此數(shù)據(jù)以恒定位速從緩沖器97中被讀出。于是,除去重新定B幀位置的次序外,緩沖器97還起著吸收數(shù)據(jù)產(chǎn)生位速波動的重要作用。
在圖9上表示出一個計算移動矢量的電路。對于該電路將參考嵌套程序來描述,在其中將對與參考矢量隔開二個幀間隔的幀確定移動矢量。
設(shè)置了多個處理器,因當(dāng)對于兩幀間隔檢驗一個象素區(qū)域時需要五個處理器,這五個處理器在圖9中表示為P1至P5。每個處理器為待編碼幀的一個特定塊確定移動矢量。
通過從參考幀的一個區(qū)域中序貫地讀出象素值并將讀出的象素值提供給所有五個處理器可使讀參考幀的次數(shù)減至最小。區(qū)域可由象素的水平頻帶組成,類似地,它也可由垂直頻帶組成。從該區(qū)域中讀出象素值并使區(qū)域移動一塊的距離,然后再讀出新確定區(qū)域中的象素值,以便對于另一群塊的移動矢量。
在圖9上,對于塊n-2,n-1,n,n+1及n+2計算移動矢量。如果對于塊n基于一幀間隔計算移動矢量,則必須對參考幀中塊121的所有象素進行考慮。但是,如果要編碼的塊與參考幀相隔兩幀的間隔,則可能的象素位置區(qū)域由塊122確定。
如參照圖7所描述的,不需要對塊122中的所有象素位置進行考慮,因為對于中間幀已經(jīng)計算出移動矢量,它將用來為待考慮的象素區(qū)域提供偏移量。因而,待考慮的象素區(qū)域等同于塊121的大小。但是,該塊可位于塊122范圍中的任何位置上。
該電路設(shè)置來并行地處理五個移動矢量。對于其中的每個,有關(guān)窗孔的垂直偏移量(塊121的規(guī)模)可能不同。因而,為了保證每個處理器從參考幀接收所需的象素值,必須擴展該區(qū)域,以致它具有的垂直尺寸等于塊122的高度。
對圖示區(qū)域掃描的區(qū)域起始于象素位置123。它垂直向下地延伸到塊122的邊界124,共五塊間隔的距離。讀數(shù)據(jù)是響應(yīng)于尋址器125產(chǎn)生的地址進行的,該尋址器被編程,用于根據(jù)待編碼幀與參考幀之間的幀間隔數(shù)來讀所需規(guī)模的區(qū)域。
利用遞增一個象素間隔的水平位置并再讀全部五個塊距離上的象素進行連續(xù)讀數(shù)。該過程重復(fù)下去直到該區(qū)域中的所有象素均被考慮了為止。
當(dāng)塊n中的象素與n上面及下面的塊中的象素被一起讀出時,將一些象素值提供給處理器P1,它們是對塊n-2編碼所需要的。類似地,處理器P2接收涉及塊n-1的象素值,處理器3接收對塊n需要的象素值,處理器P4接收對塊n+1編碼所需的值,及處理器P5接收對n+2塊編碼所需的象素值。
當(dāng)在該區(qū)域中,掃描移動到包括塊n+1在內(nèi)的一列塊時,所有對塊n-2計算移動矢量所需的象素均被提供給處理器P1。于是處理器P1計算用于塊n-2的移動矢量并不再需要再對該塊作出考慮。處理器P1現(xiàn)在空出來可計算用于另外塊的移動矢量,由于處理器相對于塊位置的排列次序?qū)嶋H是循環(huán)的,故處理器P1持續(xù)接收參考幀中的象素值并現(xiàn)在將處理相對于n+3塊的這些值。
為了計算移動矢量,每個處理器接收5個塊列的象素數(shù)據(jù)值。因而每個處理器接收用于5個塊乘5個塊見方的象素區(qū)域的象素數(shù)據(jù),但是,由于由前一移動矢量確定的偏移量,并作為嵌套的結(jié)果,該處理器僅需處理三個塊乘三個塊見方的象素區(qū)域。此外,在可獲得的時間中,它也不可能處理五個塊乘5個塊的區(qū)域。
為了利用嵌套程序,當(dāng)使來自參考幀的象素數(shù)據(jù)提供給多個處理器時,用于上一幀(或多幀)的移動矢量被提供到一個啟動電路126。該啟動電路設(shè)置用來對每個處理器計算出什么時侯它從參考幀接收的數(shù)據(jù)是真正需要的,以便計算出嵌套的移動矢量。當(dāng)這種數(shù)據(jù)被從參考幀中讀出時,啟動電路產(chǎn)生一個啟動信號并提供給相應(yīng)的處理器。
當(dāng)從參考幀中讀出象素值時,這些值中的一些將是處理器P1需要的。當(dāng)被處理器P1需要的象素值被讀出時,由啟動電路126產(chǎn)生出一個啟動信號并經(jīng)由處理器啟動線127提供給P1。類似地,如果讀出的象素值是P2所需要的,則啟動信號經(jīng)由線128提供給P2。此外,從啟動電路126到相應(yīng)的處理器P3,P4及P5設(shè)置了類似的啟動線129,130及131 。
因此,對于一個處理電路(P1等),它對一個特定的塊計算移動矢量時,將從其規(guī)模等于五個塊乘五個塊的區(qū)域中接收象素值。但是,該處理器僅處理等于三個塊乘三個塊區(qū)域的數(shù)據(jù),盡管該區(qū)域可能位于較大的五個塊乘五個塊區(qū)域中的任何位置上。該較小的三個塊乘三個塊的區(qū)域是由啟動電路確定的,它使得當(dāng)出現(xiàn)在有關(guān)區(qū)域中的象素值被讀出時,處理器僅響應(yīng)啟動信號來鎖存數(shù)據(jù)。
一旦所有具有5個塊間隔高度的全部水平區(qū)域被讀出時,利用垂直地移動一個塊的間隔移動該區(qū)域,來選擇一個新區(qū)域。于是,每行塊落在五個重疊的區(qū)域(幀邊緣除外)中,且每個象素值被讀五次。
假定在其中出現(xiàn)的有關(guān)象素的區(qū)域較大時,當(dāng)在較大的距離上進行嵌套計算時,則需要更多的處理器。因此,當(dāng)隔開三個幀的間隔時,需要七個處理器。仍然用啟動信號來響應(yīng)嵌套的移動矢量以識別三個塊乘三個塊見方的區(qū)域。于是,當(dāng)幀之間的距離增大時,讀出的數(shù)據(jù)量也增大,但由處理器處理的實際數(shù)據(jù)量仍保持不變,因為啟動信號的有效數(shù)保持不變;由于啟動信號的無效,相應(yīng)的更多數(shù)據(jù)被忽略了。
權(quán)利要求
1.一種處理圖象數(shù)據(jù)的方法,它包括用于視頻預(yù)測編碼的移動矢量的產(chǎn)生,其中第一視頻幀(B0)位于參考視頻幀(I0)及第二視頻幀(B1)之間,其特征在于,該方法包括下列步驟參考所述參考幀處理所述第一幀中的象素塊(72),以產(chǎn)生第一幀移動矢量;從所述參考幀中讀出足夠大的象素區(qū)域,以便參考所述參考幀,提供對所述第二幀的移動矢量的直接計算;并行地處理從所述參考幀中讀出的象素值,以便并行地產(chǎn)生多個第二幀移動矢量;及響應(yīng)所述第一幀移動矢量啟動所述第二處理步驟。
2.根據(jù)權(quán)利要求1所述的方法,其中通過響應(yīng)所述第二幀移動矢量啟動處理,計算第三幀移動矢量。
3.根據(jù)權(quán)利要求1或2所述的方法,其中通過響應(yīng)在先計算的第n-1幀移動矢量啟動處理,計算第n幀的移動矢量。
4.根據(jù)權(quán)利要求1,2或3所述的方法,其中所述區(qū)域在第一方向上伸延到視頻幀的整個范圍,而在第二方向上伸延由可能最遠的移動矢量確定的距離。
5.根據(jù)權(quán)利要求4所述的方法,其中所述區(qū)域是在所述第二方向上序貫地被讀出的。
6.根據(jù)權(quán)利要求5所述的方法,其中在處理器接收到對于特定移動矢量的計算的所有可能參考象素后,它對在所述第一方向遇到的下一個塊進行移動矢量的計算。
7.根據(jù)權(quán)利要求1至6中任一項所述的方法,其中處理器接收來自啟動電路的啟動信號,及所述啟動電路響應(yīng)所述在先計算出的移動矢量產(chǎn)生出所述啟動信號,以便在被讀區(qū)域中確定待處理的象素窗孔。
8.根據(jù)權(quán)利要求1至7中任一項所述的方法,其中所述矢量是對于向前預(yù)測編碼被產(chǎn)生出來的,在視頻幀序列中,所述參考幀先于所述第一幀,所述第一幀又先于所述第二幀。
9.根據(jù)權(quán)利要求1至7中任一項所述的方法,其中所述矢量是對于向后預(yù)測編碼被產(chǎn)生出的,在視頻幀序列中,所述第二幀領(lǐng)先于所述第一幀,所述第一幀又先于所述參考幀。
10.根據(jù)權(quán)利要求9所述的向后預(yù)測編碼的方法,它包括利用將參考幀到第一幀的移動矢量及從第一幀到第二幀的矢量相嵌套,參考該參考幀對第二幀產(chǎn)生移動矢量;在將第二幀寫入到一個緩沖器以前將第一幀寫入到所述緩沖器;及在從所述緩沖器讀出第一幀以前從所述緩沖器讀出第二幀。
11.根據(jù)權(quán)利要求10所述的方法,其中參考幀是通過向前預(yù)測編碼從一個在先幀中預(yù)測出來的。
12.圖象數(shù)據(jù)處理裝置,用于為視頻預(yù)測編碼的移動矢量的產(chǎn)生,其中第一視頻幀位于參考幀及第二視頻幀之間,其特征在于包括處理裝置(83),用于參考所述參考幀處理所述第一幀中的象素塊,以產(chǎn)生第一幀移動矢量;從所述參考幀中讀出足夠大的象素區(qū)域,以便參考所述參考幀,提供對所述第二幀移動矢量的直接計算的裝置;處理裝置(P1,P2,P3,P4),用于并行地處理從所述參考幀中讀出的象素值,以便并行地產(chǎn)生多個第二幀移動矢量;及啟動裝量(126),用于響應(yīng)所述第一幀移動矢量啟動所述處理裝置。
13.根據(jù)權(quán)利要求12所述的裝置,包括處理裝置,它用于處理參考幀以產(chǎn)生第三幀移動矢量,及啟動裝置,用于響應(yīng)所述第二幀移動矢量啟動所述處理裝置。
14.根據(jù)權(quán)利要求12所述的裝置,包括處理裝置,它用于計算第n幀移動矢量,及啟動裝置用于響應(yīng)所述第n-1幀移動矢量啟動所述處理裝置。
15.根據(jù)權(quán)利要求12,13或14所述的裝置,包括尋址裝置,用于對參考幀的一個區(qū)域?qū)ぶ?,該區(qū)域在第一方向上伸延到所述幀的整個范圍,而在另一方向上伸延到由可能最遠的移動矢量確定的距離。
16.根據(jù)權(quán)利要求15所述的裝置,其中所述尋址裝置用于在讀第一區(qū)域后讀第二區(qū)域,其中所述第二區(qū)域從所述第一區(qū)域在第二方向上移動一個塊間隔。
17.根據(jù)權(quán)利要求12至16中任一項所述的裝置,其中在視頻幀序列中所述第二幀先于所述第一幀,在所述序列中所述第一幀先于所述參考幀,以便根據(jù)向后預(yù)測編碼計算所述移動矢量,所述裝置還包括利用參考其參考幀對第一幀計算出的移動矢量與用于第二幀矢量相嵌套,參考該參考幀產(chǎn)生用于第二幀的移動矢量的裝置;用于對各幀編碼的裝置;用于在將編碼了的第二幀寫入所述緩沖裝置以前將編碼了的第一幀寫入到緩沖裝置中的裝置;及用于在從所述緩沖裝置讀出編碼了的第一幀以前從所述緩沖裝置中讀出編碼了的第二幀的裝置。
18.根據(jù)權(quán)利要求17所述的裝置,包括通過從一個在先幀向前預(yù)測編碼對參考幀編碼的裝置。
19.根據(jù)權(quán)利要求12至18中任一項所述的裝置,其中所述裝置構(gòu)成電視會議裝置的一部分。
20.根據(jù)權(quán)利要求12至19中任一項所述的裝置,其中所述裝置構(gòu)成電視電話的一部分。
全文摘要
視頻幀的嵌套式預(yù)測編碼減少了需要被處理的參考幀中的象素數(shù)目。但是,由于對于相鄰塊的偏移值可以變化,很難并行地處理參考數(shù)據(jù)來用于實時編碼。在第一幀移動矢量被計算后,讀出參考幀中的足夠大的區(qū)域,以提供對第二幀的移動矢量的直接計算,因此允許對象素值的并行處理。雖然每個處理器可獲得所有的讀出象素值,但是處理器僅鎖存對于待計算的特定移動矢量真正需要的值。這是通過對處理器提供啟動信號來達到的,啟動信號是通過對第一幀移動矢量的處理來確定的。
文檔編號H04N7/32GK1130010SQ9419294
公開日1996年8月28日 申請日期1994年7月29日 優(yōu)先權(quán)日1993年7月30日
發(fā)明者伊恩·帕克 申請人:英國電訊有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1