專利名稱:將數(shù)據(jù)壓縮成固定長度數(shù)據(jù)塊及解壓的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及用固定長度輸出塊對數(shù)據(jù)進行有效編碼的方法。
背景技術(shù):
數(shù)據(jù)壓縮是數(shù)據(jù)傳輸和存儲的一個重要特征。已知的壓縮方法可以使數(shù)據(jù)在無數(shù)據(jù)丟失或丟失數(shù)據(jù)在允許范圍的前提下占據(jù)較小的帶寬或存儲空間。有多種數(shù)據(jù)壓縮方法,有不丟失數(shù)據(jù)的方法,也有丟失數(shù)據(jù)的方法,其中包括霍夫曼編碼、量化和直接余弦變換。不同的壓縮方法可實現(xiàn)不同的目的。
對于廣播要求有高數(shù)據(jù)(傳輸)速率的圖象數(shù)據(jù)來說,JPEG和MPEG是兩種眾所周知的并且易被接受的數(shù)據(jù)壓縮方法。在通常情況下,以這兩種格式傳輸或存儲的數(shù)據(jù)首先經(jīng)過變換和量化處理,然后再作可變長度壓縮以滿足系統(tǒng)帶寬或存儲的要求。壓縮的數(shù)據(jù)塊并不局限于某一特定的長度。當(dāng)出現(xiàn)數(shù)據(jù)塊的末端時,在數(shù)據(jù)的尾部附加一個塊結(jié)束(EOB)碼或標(biāo)志,以提醒系統(tǒng)當(dāng)前數(shù)據(jù)塊的結(jié)束和另一個數(shù)據(jù)塊的開始。
然而在某些情況下,某些數(shù)據(jù)(例如圖象數(shù)據(jù))必須以固定長度數(shù)據(jù)塊來儲存或傳輸。使用可變長度壓縮方法的已知系統(tǒng)保證對數(shù)據(jù)進行充分的壓縮以使每一數(shù)據(jù)塊適合于其分配的空間。使用小于分配的空間或帶寬的壓縮方法是很常見的。在這種情況下,系統(tǒng)(在數(shù)據(jù)的結(jié)尾)放置一個EOB碼而不管剩余的空間,或用零或其他所期望的位模式充填剩余空間。但是,在處理剩余塊空間時,(在數(shù)據(jù)的末尾)放置一個EOB碼或充填零會使系統(tǒng)數(shù)據(jù)輸入輸出中斷,從而降低了系統(tǒng)的效率。
當(dāng)數(shù)據(jù)傳輸速率增加到系統(tǒng)輸入輸出的極限時,放置一個EOB碼或作零充填處理會導(dǎo)致緩沖器中的數(shù)據(jù)溢出并導(dǎo)致數(shù)據(jù)跳行。解壓時也可能存在類似的問題,從而會中止數(shù)據(jù)的輸入輸出并產(chǎn)生相同的非期望的結(jié)果。因此,提供一個能以可變長度壓縮產(chǎn)生固定長度壓縮數(shù)據(jù)塊的系統(tǒng)是十分有益的,這種可變長度壓縮方法能有效地利用存儲空間或輸出帶寬,而且放置EOB碼或?qū)κS鄩K空間充填零將不會中斷數(shù)據(jù)流。
發(fā)明概述根據(jù)本發(fā)明的原理,產(chǎn)生固定長度輸出數(shù)據(jù)的壓縮系統(tǒng)以可變長度壓縮方法來壓縮輸入數(shù)據(jù)。有時候,用可變長度壓縮方法來壓縮輸入數(shù)據(jù)塊所用的位數(shù)小于固定長度輸出塊中所分配的位數(shù)。在這種情況下,壓縮系統(tǒng)將在壓縮過程中識別存在的剩余輸出空間,并對所選取的壓縮數(shù)據(jù)字作零充填,從而使最終壓縮數(shù)據(jù)塊的長度等于所分配的輸出塊的長度。
附圖簡述
圖1示出了一個本發(fā)明壓縮系統(tǒng)的示范性實施例。
圖2是一個在圖1系統(tǒng)中數(shù)據(jù)壓縮的流程圖。
圖3是一個與圖1和圖2所示系統(tǒng)中執(zhí)行的數(shù)據(jù)壓縮相對應(yīng)的數(shù)據(jù)解壓流程圖。
圖4示出了一個本項發(fā)明的系統(tǒng)產(chǎn)生的數(shù)據(jù)流。
圖5示出了一個本項發(fā)明所用的數(shù)據(jù)處理器。
優(yōu)選實施例的詳細(xì)描述下文將描述在MPEG壓縮系統(tǒng)中執(zhí)行的操作,該系統(tǒng)要求固定長度再壓縮數(shù)據(jù)塊存儲在幀存儲器中。本發(fā)明并不僅僅局限于MPEG系統(tǒng),它還可適用于任何能夠?qū)⑤斎霐?shù)據(jù)格式化成固定長度壓縮的輸出數(shù)據(jù)的壓縮系統(tǒng)。
圖1示出了一個能輸出預(yù)定的固定長度壓縮數(shù)據(jù)塊的壓縮系統(tǒng)。可變長度壓縮器(VLC)10從數(shù)據(jù)源(圖中未示出)中接收塊數(shù)據(jù)。接收的數(shù)據(jù)可能已作過離散余弦變換處理而被壓縮到某種程度。VLC10可用已知的方法壓縮代表差分脈碼調(diào)制(DPCM)值的預(yù)測數(shù)據(jù)。DPCM處理技術(shù)是已知的,對該技術(shù)的說明已超出本文討論的范圍。
VLC 10產(chǎn)生可變長度壓縮數(shù)據(jù)。例如,VLC 10可以將輸入數(shù)據(jù)從8位轉(zhuǎn)換成3、4、5或6位數(shù)據(jù)字。其壓縮量的大小取決于各種變量,如輸出網(wǎng)絡(luò)的大小以及系統(tǒng)允許的數(shù)據(jù)丟失量等。例如,當(dāng)提供給壓縮的值相對較小時,可用3位壓縮。而當(dāng)提供給壓縮的值相對較大時,可用6位壓縮。提供給壓縮的數(shù)值大小通常取決于在預(yù)測網(wǎng)絡(luò)中輸入數(shù)據(jù)值的相對變化。
例如,對于圖象數(shù)據(jù)來說,其位置移動可忽略的圖象幀和/或圖象數(shù)據(jù)在壓縮時通常會產(chǎn)生較小的預(yù)測誤差,其位置移動較大的圖象幀和/或多物體圖象數(shù)據(jù)在壓縮時容易產(chǎn)生較大的預(yù)測誤差,但有時也可能產(chǎn)生小的預(yù)測誤差。
當(dāng)VLC 10產(chǎn)生可變長度壓縮數(shù)據(jù)時,位計數(shù)器20跟蹤所有的輸入數(shù)據(jù)塊所用的位數(shù)和每個數(shù)據(jù)字所用的位數(shù)。例如,如果在每個輸出數(shù)據(jù)塊中每個數(shù)據(jù)字平均用4位,并且在一個8×8的點陣中每個數(shù)據(jù)塊由八位字組成,則固定長度壓縮數(shù)據(jù)塊輸出必須為256位。輸出數(shù)據(jù)塊過長或過短均會使系統(tǒng)混亂,并在恢復(fù)時產(chǎn)生數(shù)據(jù)污染。設(shè)計參數(shù)為每個數(shù)據(jù)字4位,以次作為實例來說明在給定的壓縮系統(tǒng)中可允許的數(shù)據(jù)丟失量。
位計數(shù)器20識別出當(dāng)在輸出塊中的剩余位數(shù)不足以維持平均每個壓縮字4位時,通知VLC 10將下一個輸入的數(shù)據(jù)字以3位壓縮。同樣,位計數(shù)器20識別出當(dāng)對給定數(shù)據(jù)塊作3位壓縮處理過于頻繁時,則對給定數(shù)據(jù)塊的每一個剩余數(shù)據(jù)字執(zhí)行大于4位壓縮處理。在這種情況下,當(dāng)壓縮系統(tǒng)確定以少于5位的壓縮方法壓縮后面的數(shù)據(jù)字提供的結(jié)果其數(shù)據(jù)丟失量在數(shù)據(jù)丟失參數(shù)所允許的范圍之內(nèi)時,位計數(shù)器給零填充器(Padder)30發(fā)出一個控制信號,并以位計數(shù)器20確定的速率在壓縮字的末端加零使平均每個數(shù)據(jù)字超過4位,以確保最終的壓縮塊為固定長度。在本文示范性系統(tǒng)中所充填的壓縮字可以是5位或6位。位計數(shù)器20使用一種內(nèi)部算法,并且在譯碼器中也使用同樣的算法,來確定在數(shù)據(jù)塊的末尾應(yīng)充填多少位。
當(dāng)然,填充壓縮字的總長度不會超過輸出寄存器、移位寄存器或其他將壓縮數(shù)據(jù)從壓縮器輸出的硬件的長度。例如,通過利用一個桶形轉(zhuǎn)換器將每一個壓縮字的最大長度保持為輸出寄存器的長度,這樣,數(shù)據(jù)流就不會被零散的零充填所中斷或終止。相反,使用數(shù)據(jù)末尾加零或在數(shù)據(jù)塊的結(jié)尾附加一個EOB時,就會導(dǎo)致數(shù)據(jù)流中斷或終止。當(dāng)遇到EOB時,停止數(shù)據(jù)流動來移去數(shù)據(jù)塊末尾的零充填或?qū)⒅甘踞槒?fù)位需要增加硬件和軟件,而這在連續(xù)輸入輸出數(shù)據(jù)時是不必要的。
在譯碼器/解壓器中處理進入數(shù)據(jù)的數(shù)據(jù)寄存器的長度與壓縮器中輸出寄存器的長度相同。在本實例中,由于最大壓縮字長是6位,因而這兩種寄存器的長度也應(yīng)該是6位。例如當(dāng)最大壓縮字長是5位時,則每一個處理壓縮數(shù)據(jù)的寄存器也應(yīng)是5位。通常使用最大字長可減小系統(tǒng)的復(fù)雜性。
壓縮系統(tǒng)跟蹤每一個壓縮數(shù)據(jù)字的長度,并將數(shù)據(jù)字直接從位計算器20或從零填充器30直接傳送到緩沖器/多路轉(zhuǎn)換器40中。如有必要,在此給數(shù)據(jù)字添加附加信息并將數(shù)據(jù)字與附加信息串聯(lián)在一起。在必要時,在數(shù)據(jù)壓縮的同時位計數(shù)器20將通過保持所需的位數(shù)的方式來補償附加信息。緩沖器/多路轉(zhuǎn)換器40將壓縮成固定長度的數(shù)據(jù)塊傳輸?shù)酱鎯ζ?0保存。另一方面,固定長度數(shù)據(jù)塊也可以按要求傳送或輸出到其他允許固定數(shù)據(jù)長度或固定帶寬的裝置或數(shù)據(jù)路徑中。
另一個實施例包括在VLC 10中執(zhí)行零填充,如果壓縮字不同,可將不需要作零填充的壓縮字直接通過零填充器30而不加零,繞過圖1所示的零充填器30。
當(dāng)需要重建駐存在存儲器50中的壓縮數(shù)據(jù)時,要執(zhí)行與上文描述相反的解壓處理。因此,對其相應(yīng)的裝置在此就不作進一步說明。但是,對于接收壓縮數(shù)據(jù)的解壓器來說,上述的零充填是適用的并且是必須的。解壓器使用的算法是與跟蹤所用的位數(shù)以及將控制信號傳送給VLC 10和零填充器30所用的算法的逆算法。
圖2和圖3分別表示當(dāng)將所選擇的數(shù)據(jù)字進行零充填處理來產(chǎn)生固定長度壓縮數(shù)據(jù)塊時數(shù)據(jù)壓縮和解壓處理的流程圖。首先參考圖1來描述圖2所示的流程。
在60步,VLC 10接收N位數(shù)據(jù)字。62步估算用來壓縮接收的數(shù)據(jù)字的位數(shù)并壓縮該數(shù)據(jù)字。位數(shù)是利用計算系統(tǒng)相關(guān)參數(shù)的算法和每個壓縮字的平均位數(shù)以及當(dāng)前數(shù)據(jù)塊的數(shù)據(jù)字所用的位數(shù)來確定的。壓縮長度一經(jīng)確定,就可以壓縮該數(shù)據(jù)字。位計數(shù)器20按照在64步的壓縮算法所確定的位數(shù)將用來壓縮的位數(shù)設(shè)置在各種計數(shù)器中。然后,如果數(shù)據(jù)字小于最大長度,在66步系統(tǒng)確定是否需要作零充填。如果需要作零充填,在68步在數(shù)據(jù)字末尾加上合適的位數(shù)并修改計數(shù)器。在70步輸出壓縮的數(shù)據(jù)字,輸出的數(shù)據(jù)字可能作過零充填處理,也可能未作過零充填處理。
圖3描述了對從上述壓縮器中接收的作過零填充或未作零填充處理的數(shù)據(jù)字作解壓處理的流程。在80步,系統(tǒng)確定用來解壓下一個固定長度數(shù)據(jù)塊的數(shù)據(jù)字的位數(shù),包括充填的位數(shù)。在82步,檢索數(shù)據(jù)字,并按照解壓算法將所用的位數(shù)設(shè)置在各種跟蹤解壓處理的計數(shù)器中。在84步,如果數(shù)據(jù)字作過充填處理,則確定充填的位數(shù),如果有必要在86步執(zhí)行去填充處理。在88步,將去掉零充填的壓縮數(shù)據(jù)字從去填充器傳送到解壓器,如果數(shù)據(jù)字未作過零填充,則將數(shù)據(jù)字從輸入裝置傳輸?shù)浇鈮浩髦小4藭r將數(shù)據(jù)字解壓成原來的N位長。最后,在90步,將解壓的數(shù)據(jù)字傳輸?shù)捷敵鼍W(wǎng)絡(luò)。
根據(jù)本項發(fā)明的原理,壓縮/解壓系統(tǒng)可以在不中斷數(shù)據(jù)輸入輸出和處理的條件下,連續(xù)產(chǎn)生固定長度的壓縮數(shù)據(jù)塊。如果在每個壓縮塊的末尾放置一個EOB,數(shù)據(jù)處理會停止來調(diào)整指示針的位置并執(zhí)行其他的附加功能。如果在數(shù)據(jù)塊的末尾充零以充填未用過的空間,系統(tǒng)必須要用足夠的時鐘周期數(shù)來移去附加的零,所用的時鐘周期的數(shù)量取次于移位寄存器的長度。另一種方法是使移位寄存器有足夠大的空間,但這樣做會增加系統(tǒng)的復(fù)雜性和花費。
圖4示出了本項發(fā)明所解決的問題。圖中所示的是兩個從壓縮網(wǎng)絡(luò)輸出到存儲器中和從存儲器輸入到解壓網(wǎng)絡(luò)中的數(shù)據(jù)流。數(shù)據(jù)流100在其固定長度數(shù)據(jù)塊的末尾充填有零。數(shù)據(jù)流102示出了根據(jù)上述發(fā)明的原理分散充填的零。例如,壓縮數(shù)據(jù)流可被壓縮到百分之五十。對于一個8×8的數(shù)據(jù)塊來說,每個數(shù)據(jù)字有8位,百分之五十壓縮可將每一個固定長度數(shù)據(jù)塊轉(zhuǎn)換為256位。壓縮的數(shù)據(jù)仍可由多路轉(zhuǎn)換器以8位塊移入或移出存儲器。因此,在百分之五十壓縮網(wǎng)絡(luò)中將數(shù)據(jù)從存儲器中輸出和輸入到存儲器中均需要32個時鐘周期。數(shù)據(jù)流100和102包含界線指示位,它表示單個壓縮數(shù)據(jù)字,而不是在某一個時鐘周期中移位的位數(shù)。
在解壓時,數(shù)據(jù)必須從變位格式解壓成原來的8位數(shù)據(jù)字。在數(shù)據(jù)流100中,前27個時鐘周期包含所有的數(shù)據(jù)信息,剩余的5個時鐘周期充填零,以滿足固定塊長度的要求。解壓器將利用來自27個輸入時鐘周期的數(shù)據(jù)在64個時鐘周期內(nèi)輸出64個8位值。在壓縮下一個數(shù)據(jù)塊之前必須將5個剩余的含有零的輸入時鐘周期移出緩沖器。另一個去零的方法是將緩沖器指示針復(fù)位到下一個數(shù)據(jù)塊。二者都要求中止數(shù)據(jù)的輸入輸出,并且二者都需要用更復(fù)雜的硬件和軟件來獲取有效的數(shù)據(jù)。而且,如果緩沖器/存儲器沒有足夠大的空間可供維持處理,一旦解壓端的數(shù)據(jù)流停下來等待足夠長的時間,壓縮網(wǎng)絡(luò)也會停止處理數(shù)據(jù)。
數(shù)據(jù)流102包含在選定的數(shù)據(jù)上分散充填的零。填充零使全部32個時鐘周期的有效數(shù)據(jù)擴大。如上文所述,系統(tǒng)控制器知道有多少位表示當(dāng)前正被解壓的數(shù)據(jù),包括多少位充填了零。在這一點,零充填會由于沒有降慢系統(tǒng)的速度而不容易被覺察。這樣可使固定長度的數(shù)據(jù)塊連續(xù)流動而不中斷數(shù)據(jù)通過壓縮網(wǎng)絡(luò)和解壓網(wǎng)絡(luò)。由于系統(tǒng)使用了現(xiàn)有的移位寄存器/桶形移位器來傳送單個變位長度壓縮數(shù)據(jù)字,因此降低了系統(tǒng)的復(fù)雜性。一旦解壓了某一個壓縮數(shù)據(jù)塊的256位,下一步系統(tǒng)將準(zhǔn)備檢索在數(shù)據(jù)通道上的下一個壓縮數(shù)據(jù)塊的第1位。
圖5是一個使用本項發(fā)明的實例性系統(tǒng)。該系統(tǒng)是一個高清晰度的電視接收器,能夠以例如MPEG格式接收、譯碼和顯示高清晰度廣播信號。高清晰度電視(HDTV)信號輸入裝置110接收解調(diào)的信號并將它提供給裝置112進行MPEG譯碼和解壓。部分或全部的譯碼視頻數(shù)據(jù)被傳輸?shù)皆賶嚎s器114,再壓縮器114在空間域?qū)?shù)據(jù)進行再壓縮來減小數(shù)據(jù)在幀存儲器116中所占用的空間。在譯碼和解壓下一個數(shù)據(jù)的同時,系統(tǒng)將部分譯碼的數(shù)據(jù)存儲在幀存儲器116中。然后從存儲器116中檢索部分被譯碼的數(shù)據(jù),經(jīng)解壓器118解壓、移動補償裝置120作補償處理,并在加法器122中與來自裝置112的數(shù)據(jù)進行組合,來重建最終的譯碼數(shù)據(jù)。移動補償處理對上一個譯碼和解壓的圖象進行預(yù)測,產(chǎn)生最終的譯碼數(shù)據(jù)樣品。移動補償涉及到部分I、P和B幀的MPEG標(biāo)準(zhǔn),因此,在此就不再作進一步的探討。
再壓縮器114將最終的譯碼數(shù)據(jù)進行再壓縮,并將之存儲在幀存儲器116中,直到需要按上述方法重建和顯示下一個幀信號為止。當(dāng)需要顯示再壓縮的數(shù)據(jù)時,將再壓縮的數(shù)據(jù)傳送到解壓器124并將之恢復(fù)成全位長度象元數(shù)據(jù)。然后將象元數(shù)據(jù)傳送到顯示處理器126作顯示格式化處理并將處理后的數(shù)據(jù)輸出給顯示裝置(圖中未示出)。
按上述方法可將象元數(shù)據(jù)作8×8象元塊處理。在壓縮端,圖1和圖2所示的本項發(fā)明的系統(tǒng)和流程安裝在再壓縮器114中;而在解壓端,圖1和圖2所示的本項發(fā)明的系統(tǒng)和流程安裝在解壓器118和124(圖3)中。在這兩種情況下解壓器的操作完全相同。
權(quán)利要求
1.一種用來將數(shù)據(jù)壓縮成固定長度數(shù)據(jù)塊的方法,每一個數(shù)據(jù)塊包括多個可變位長度數(shù)據(jù)字,包括下列操作步驟接收需作壓縮處理的變位長度數(shù)據(jù)字(60);確定需要表示所述的數(shù)據(jù)字的變位長度(62);將所述的數(shù)據(jù)字壓縮到所述的長度(62)來產(chǎn)生壓縮的數(shù)據(jù)字;確定所述的壓縮字是否要作填充處理(66)以便提供所述的固定長度數(shù)據(jù)塊;如在上述確定步中確定需要充填,則填充所述的壓縮字(68)。
2.一種用來將從固定長度壓縮數(shù)據(jù)塊中接收的壓縮數(shù)據(jù)字進行解壓的方法,每一個數(shù)據(jù)塊包括多個變位長度壓縮的數(shù)據(jù)字,所述的壓縮數(shù)據(jù)塊含有填充的壓縮字,包括下列操作步驟確定用來表示壓縮數(shù)據(jù)字的總位數(shù)(80);檢索所述的總位數(shù)(82);確定所述的總位數(shù)中是否有填充的位(84);如有填充的位,從所述的壓縮數(shù)據(jù)字中去掉確定的填充位(86);對所述的壓縮數(shù)據(jù)字進行解壓(88)。
3.在用來對接收的表示提高分辨率視頻圖象信息的固定長度數(shù)據(jù)塊的數(shù)字?jǐn)?shù)據(jù)流作處理的系統(tǒng)中,每一個數(shù)據(jù)塊包括多個可變位長度數(shù)據(jù)字,信號處理方法包括下述步驟對所述的視頻信息進行譯碼和解壓,以產(chǎn)生象元數(shù)據(jù);將所述的象元數(shù)據(jù)再壓縮成固定長度數(shù)據(jù)塊;計數(shù)由再壓縮上述像元數(shù)據(jù)所產(chǎn)生的位數(shù);按在上述計數(shù)步中計數(shù)的位數(shù)函數(shù)填充選取的再壓縮象元數(shù)據(jù)來填充所述的固定長度數(shù)據(jù)塊。
4.如權(quán)利要求3的方法,進一步包括下述操作步驟將在所述的再壓縮步中壓縮的再壓縮數(shù)據(jù)存儲在幀存儲器中。
5.如權(quán)利要求3的方法,其特征在于所述的數(shù)字?jǐn)?shù)據(jù)流為高清晰度電視信號。
6.如權(quán)利要求3的方法,其特征在于所述的再壓縮是在MPEG移動補償網(wǎng)絡(luò)中執(zhí)行的,它產(chǎn)生最終的譯碼和解壓的輸出數(shù)據(jù)。
7.如權(quán)利要求3的方法,其特征在于所述的再壓縮步將所述的象元數(shù)據(jù)進行可變長度壓縮。
8.如權(quán)利要求3的方法,其特征在于所述的要求填充固定長度數(shù)據(jù)塊的填充處理是分散在象元之間的。
9.如權(quán)利要求3的方法,其特征在于所述的填充是零填充。
全文摘要
本發(fā)明描述了以可可變長度壓縮產(chǎn)生固定長度壓縮數(shù)據(jù)塊的壓縮和解壓的裝置和方法。壓縮系統(tǒng)從一個數(shù)據(jù)塊中接收N位數(shù)據(jù)字(60)并確定該數(shù)據(jù)字的可變壓縮長度(62)。位計數(shù)器監(jiān)視剩余的總位數(shù)(64)并確定是否已用足夠的位數(shù)以確保可以填充固定長度壓縮數(shù)據(jù)塊(66)。如果已用足夠的位數(shù),則輸出壓縮的數(shù)據(jù)字(70)。如果沒有,在輸出之前給壓縮的數(shù)據(jù)字填充一合適的位數(shù)(68),填充位可以是零位。
文檔編號H04N7/46GK1516475SQ0310854
公開日2004年7月28日 申請日期1997年9月30日 優(yōu)先權(quán)日1996年12月18日
發(fā)明者G·A·克拉納維特, G A 克拉納維特, M·A·舒爾茨, 舒爾茨 申請人:湯姆森消費電子有限公司