專利名稱:使用后向自適應(yīng)規(guī)則進(jìn)行整數(shù)數(shù)據(jù)的無損自適應(yīng)Golomb/Rice編碼和解碼的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及數(shù)字?jǐn)?shù)據(jù)的處理,尤其是使用具有新穎的后向自適應(yīng)規(guī)則的Golomb/Rice編碼進(jìn)行整數(shù)數(shù)據(jù)的無損編碼與解碼的改進(jìn)方法和系統(tǒng)。
背景技術(shù):
隨著計(jì)算機(jī)數(shù)據(jù)(諸如文本、音頻、視頻、圖像和程序文件)的大小持續(xù)增長(zhǎng),數(shù)據(jù)壓縮正變得越來越重要。數(shù)據(jù)壓縮是一種將數(shù)字?jǐn)?shù)據(jù)編碼為比原始數(shù)據(jù)使用更少比特的經(jīng)編碼表示的方法。以較少比特表示數(shù)據(jù)意味著數(shù)據(jù)占據(jù)較少的存儲(chǔ)空間并需要較小的傳輸帶寬。
通常,數(shù)據(jù)壓縮通過預(yù)測(cè)最常出現(xiàn)的數(shù)據(jù)并將之以較少的空間存儲(chǔ)來壓縮數(shù)據(jù)。具體地,數(shù)據(jù)壓縮涉及至少兩個(gè)不同的任務(wù)(1)定義一數(shù)據(jù)模型來預(yù)測(cè)輸入數(shù)據(jù)的概率;以及(2)用編碼器從這些概率生成代碼。此外,某些數(shù)據(jù)壓縮技術(shù)在數(shù)學(xué)上變換并量化數(shù)據(jù)以達(dá)到甚至更大的壓縮。
壓縮技術(shù)可以是無損或有損的。無損壓縮技術(shù)是可逆的,從而編碼前的原始數(shù)據(jù)和解碼后的解壓縮數(shù)據(jù)的每一比特都是相同的。有損壓縮利用了數(shù)據(jù)中有很多可以扔掉的重復(fù)而在質(zhì)量上有更多損失這一事實(shí)。有損壓縮接受某些原始數(shù)據(jù)的損失以便得到更高的壓縮。
無損壓縮一般用于壓縮文本或二進(jìn)制數(shù)據(jù),而有損壓縮一般用于音頻、圖像和視頻數(shù)據(jù)。然而,即使有損壓縮技術(shù)有時(shí)也使用無損壓縮技術(shù)。例如,兩種常用的壓縮(或編碼)技術(shù)是變換編碼和預(yù)測(cè)編碼。對(duì)于這些種類的壓縮系統(tǒng),原始數(shù)據(jù)經(jīng)變換并隨后被量化(舍入到最近的整數(shù)),或者根據(jù)(固定或自適應(yīng)的)信號(hào)模型進(jìn)行預(yù)測(cè),且預(yù)測(cè)誤差(原始和預(yù)測(cè)的數(shù)據(jù)之間的差異)隨后被量化。在這兩種情況下,經(jīng)量化的數(shù)據(jù)是整數(shù)形式的。一旦獲得這些整數(shù),就要用無損壓縮技術(shù)來編碼經(jīng)量化的值,以減少表示該數(shù)據(jù)所需要的比特?cái)?shù)。
這些整數(shù)值集合通常有相關(guān)聯(lián)的概率分布函數(shù)(PDF)。這些PDF具有這樣的分布當(dāng)在預(yù)測(cè)編碼中數(shù)據(jù)性質(zhì)由預(yù)測(cè)者很好地模型化時(shí),預(yù)測(cè)誤差應(yīng)在大多數(shù)時(shí)間接近于零。類似地,在變換編碼中,大多數(shù)量化變換系數(shù)為零。圖1示出對(duì)于這些整數(shù)值的典型概率分布;零是最可能的值,而非零值的概率隨數(shù)量增加呈接近指數(shù)級(jí)下降。數(shù)據(jù)具有圖1所示的概率分布,因?yàn)槭褂脽o損壓縮編碼的數(shù)據(jù)不是原始數(shù)據(jù)。圖1是通過量化變換系數(shù)或預(yù)測(cè)誤差所得的整數(shù)數(shù)據(jù)。
從數(shù)學(xué)上講,問題是要找出編碼包含N個(gè)整數(shù)的向量x的有效解決方案。每個(gè)元素x(n),n=0,1,...,N-1,有一個(gè)按照類似于圖1的概率分布的值,因而最可能值為零,而距零更遠(yuǎn)的值具有快速減少的概率。
像圖1中這樣的概率分布的簡(jiǎn)單數(shù)學(xué)模型是拉普拉斯(Laplacian)分布,或者雙邊幾何(TSG)分布,由參數(shù)θ特征化P(x,θ)=1-θ1+θθ|x|----(1)]]>注意,參數(shù)θ控制當(dāng)|x|增長(zhǎng)時(shí)概率的衰減速率。θ值越大,衰減越快。參數(shù)θ可直接相關(guān)于概率,當(dāng)x=0時(shí),即P(0,θ)=(1-θ)/(1+θ)。同樣,源碼元的期望絕對(duì)值是E[|x|]=2θ1-θ2---(2)]]>源的熵按比特/碼元給出,如下式H(x)=log2(1+θ1-θ)-2θ1-θ2log2(θ)-----(3)]]>因此,一個(gè)好的編碼器應(yīng)將x的N個(gè)值的向量映射到包含不多于N·H(x)個(gè)比特(理論最小值)的比特流。
拉普拉斯分布是媒體壓縮系統(tǒng)中的常用模型,用于預(yù)測(cè)編碼器(如大多數(shù)無損音頻和圖像編碼器)中的預(yù)測(cè)誤差,或者用于量化變換系數(shù)(如大多數(shù)有損音頻、圖像和視頻編碼器)。
對(duì)于具有拉普拉斯/TSG分布的源有多種建議的編碼器。一個(gè)簡(jiǎn)單而有效的編碼器是Golomb/Rice編碼器。首先,通過以下簡(jiǎn)單的可逆映射將TSG源值x映射到非負(fù)值uu=Q(x)=2x,x≥0-2x-1,x<0------(4)]]>即,等效于將u視作重新排序的字母表的索引{0,-1,+1,-2,+2,...}。新源u具有接近幾何源的概率分布,對(duì)它而言Golomb碼是最優(yōu)的,因?yàn)樗鼈兪菐缀卧吹腍uffman碼,只要適當(dāng)?shù)剡x擇Golomb參數(shù)。
Golomb/Rice(G/R)碼的一個(gè)示例示于表1,示出參數(shù)m的幾個(gè)值。應(yīng)該注意,當(dāng)m等于二的冪時(shí),使用了參數(shù)k,它通過m=2k與m相關(guān)。G/R碼優(yōu)于Huffman碼的主要優(yōu)點(diǎn)在于對(duì)于任意輸入值,二進(jìn)制碼字可通過簡(jiǎn)單的規(guī)則來計(jì)算。因此,不需要存儲(chǔ)表。這對(duì)現(xiàn)代處理器特別有用,對(duì)它們而言,從存儲(chǔ)表?xiàng)l目的存儲(chǔ)位置讀取可能比執(zhí)行若干指令花更長(zhǎng)時(shí)間。易于明白,參數(shù)m確定多少連續(xù)的碼字具有相同的比特?cái)?shù)。這也表明計(jì)算碼字涉及計(jì)算u/m。其中u是輸入值。對(duì)于大多數(shù)處理器,整數(shù)除法采用多次循環(huán),因而G/R碼對(duì)于一般的m并沒有吸引力。當(dāng)選擇了對(duì)應(yīng)于Rice碼的m=2k,則除法u/m可用位移來代替,因?yàn)閡/m=u>>k(其中>>表示右移運(yùn)算符)。從而,對(duì)于任意輸入u計(jì)算G/R碼是容易的;只需計(jì)算p=u>>k和v=u-(p<<k)。隨后通過將具有p個(gè)1的串與v的k位二進(jìn)制表示串接來形成代碼。
表1從表1中顯而易見,G/R參數(shù)k的選擇必須依賴于源的統(tǒng)計(jì)量。當(dāng)u增加時(shí),概率衰減得越慢,因此應(yīng)選擇更大的k。否則,碼字長(zhǎng)度增長(zhǎng)過太。選擇k的簡(jiǎn)單規(guī)則是對(duì)于給定輸入值u的碼字長(zhǎng)度應(yīng)接近于該值出現(xiàn)概率以2為底的對(duì)數(shù)。
盡管G/R碼對(duì)于幾何分布源是最優(yōu)的,但對(duì)于經(jīng)由公式4的映射從拉普拉斯/TSG源編碼碼元并非最優(yōu)。這是因?yàn)閷?duì)于具有TSG分布的輸入變量x,從公式4得到的變量u具有接近但不完全是幾何的概率分布。實(shí)際上,性能足夠接近于最優(yōu)(例如,一般具有比熵少5%的速率),因此G/R碼相當(dāng)流行。TSG源的最優(yōu)碼包括一組四個(gè)代碼變量,在大多數(shù)情況下,實(shí)現(xiàn)它們且按5%或更少來改進(jìn)壓縮更為復(fù)雜。因此,在大多數(shù)情況下,G/R編碼器在性能和簡(jiǎn)便之間提供最佳折衷。
在圖1中,概率分布由單個(gè)參數(shù)表示,即指數(shù)衰減速率。衰減速率越快,則更可能是零值。這意味著在許多情況下零是很可能的,使得幾個(gè)零連串變得非??赡堋Q言之,如果概率分布衰減速率足夠快,則編碼連串是個(gè)好方法。編碼零連串意味著僅有幾個(gè)比特用于處理輸入數(shù)據(jù)中的許多項(xiàng)。
例如,如果數(shù)據(jù)與預(yù)測(cè)編碼中預(yù)測(cè)器所使用的模型相匹配,則預(yù)測(cè)誤差更可能為零。但即使有了好模型,偶爾有個(gè)大值也是可能的。這會(huì)在到達(dá)邊界時(shí)發(fā)生,諸如像素值從背景值到前景值。不時(shí)地會(huì)出現(xiàn)大數(shù)字。當(dāng)這種現(xiàn)象發(fā)生時(shí),比游程編碼更有用的一種類型的編碼技術(shù)被稱為“游程Golomb/Rice(RLGR)”編碼技術(shù)。一種這樣的RLFT編碼技術(shù)在美國(guó)專利第6,771,828號(hào),Malvar的題為“System andMethod for Progressively Transform Coding Digital Data(用于漸進(jìn)變換編碼數(shù)字?jǐn)?shù)據(jù)的系統(tǒng)和方法)”和美國(guó)專利第6,477,280號(hào),Malvar的題為“Lossless AdaptiveEncoding of Finite Alphabet Data(有限字母數(shù)據(jù)的無損自適應(yīng)編碼)”中公開。
事實(shí)上,隨著數(shù)據(jù)源變化,概率將不保持常量而隨時(shí)間變化。這對(duì)于例如圖像和音頻都是真實(shí)的。通常,這些輸入數(shù)據(jù)中的概率變化可用大量不同的方法來處理。在JPEG中,例如,有一熵編碼器(Huffman編碼器),其中不同長(zhǎng)度的碼字用于要編碼的不同值。Huffman表通常是預(yù)先設(shè)計(jì)的,即,通常是獲得大量圖像、測(cè)試它們的概率、并構(gòu)造用于所有圖像的平均模型。這種方法的一個(gè)問題是對(duì)于圖像的每個(gè)部分,編碼效率上都有損耗,因?yàn)殪鼐幋a器使用的概率模型平均上很好,但對(duì)圖像的某個(gè)部分不夠好。
從表1可看出,Golomb/Rice碼有兩個(gè)主要問題(1)概率衰減參數(shù)θ,或者等價(jià)的概率P(x=0)必須已知,因此k的近似值才能確定;以及(2)如果衰減參數(shù)太小,則熵H(x)比1小,且因而Golomb/Rice碼不是最理想的,因?yàn)槠淦骄a字長(zhǎng)度不能小于1比特/碼元。
實(shí)際上,第一個(gè)問題(最優(yōu)Golomb/Rice參數(shù)的估算)通常是通過將輸入向量劃分成預(yù)定長(zhǎng)度的塊來解決的。對(duì)于每個(gè)塊,編碼器兩次通過數(shù)據(jù)。第一次通過時(shí),計(jì)算輸入值的平均量。為此,參數(shù)θ可從公式2估算,且可確定相應(yīng)的最優(yōu)k。在第二次通過時(shí),編碼器通過首先輸出二進(jìn)制形式的k的值,隨后是塊內(nèi)數(shù)據(jù)值的Golomb/Rice碼的串接串,來生成該塊的比特流。這是實(shí)際上所有使用Golomb/Rice碼的無損壓縮系統(tǒng)中都使用的方法,諸如用于無損圖像壓縮的JPEG-LS、用于無損音頻壓縮的SHORTEN及其它等。這被稱為“按塊自適應(yīng)”或者“前向自適應(yīng)”模型。前向自適應(yīng)模型在以下意義上上是前向的編碼器在編碼前先考察數(shù)據(jù)、測(cè)量統(tǒng)計(jì)參數(shù)(通常是平均量)、隨后基于該參數(shù)編碼并將用于編碼數(shù)據(jù)的參數(shù)值放入首部,以便由解碼器使用。數(shù)據(jù)被拆成小部分,即塊,而不是試圖同時(shí)編碼所有數(shù)據(jù)。對(duì)于每個(gè)塊,測(cè)量該塊的統(tǒng)計(jì)量,對(duì)于與緩沖區(qū)的內(nèi)容相匹配的數(shù)據(jù)部分測(cè)量統(tǒng)計(jì)參數(shù),且將熵編碼器調(diào)整到該參數(shù)。在編碼文件中,插入首部,指示用于編碼該數(shù)據(jù)塊的參數(shù)值。
實(shí)踐中的第二個(gè)問題,即,具有非常低的熵的編碼源,通常是使用按塊自適應(yīng)或前向自適應(yīng)模型來解決的,且如果塊中輸入碼元的平均量的值小到足以使估算的熵H(x)小于1,則編碼器使用游程編碼而非Golomb/Rice編碼。
盡管這些方法在實(shí)踐中用得很好,但有兩個(gè)主要缺點(diǎn)。一個(gè)缺點(diǎn)是編碼器需要兩次讀取每個(gè)輸入塊,這樣在數(shù)據(jù)上執(zhí)行兩次通過第一次計(jì)算平均量以確定Golomb/Rice參數(shù),而第二次執(zhí)行真正的編碼。這要求編碼器執(zhí)行附加的工作并增加了復(fù)雜性。在某些應(yīng)用中,編碼時(shí)間不是問題,但對(duì)于例如數(shù)碼相機(jī)而言,它會(huì)減慢編碼過程或增加隨機(jī)存取存儲(chǔ)器的開銷。具體而言,前向自適應(yīng)模型必須先考察數(shù)據(jù)并測(cè)量統(tǒng)計(jì)量,找出模型參數(shù),然后編碼。如果編碼器在具有大量處理能力的個(gè)人計(jì)算機(jī)上運(yùn)行,則這不是個(gè)問題。然而,如果用手機(jī)拍照,照片要由手機(jī)自己編碼,而其處理能力相當(dāng)有限。
第二個(gè)但最重要的缺點(diǎn)涉及選擇塊尺寸的難度。如果塊尺寸太大,則統(tǒng)計(jì)量在塊內(nèi)會(huì)劇烈變化。另一方面,如果塊尺寸太小,則必須告知解碼器哪個(gè)參數(shù)用于編碼該數(shù)據(jù)塊的額外開銷變得難以承擔(dān)。對(duì)于每個(gè)塊,編碼器必須存儲(chǔ)正用于編碼該塊的參數(shù)值。從某種觀點(diǎn)看,編碼小塊所需要的額外開銷對(duì)于所得到的壓縮是不值得的。這就造成了權(quán)衡。一方面,如果用了小塊,則塊的統(tǒng)計(jì)量可匹配,但測(cè)量統(tǒng)計(jì)量是困難的,因?yàn)橹挥袔讉€(gè)數(shù),且編碼的額外開銷是巨大的。另一方面,如果使用大塊,則問題是統(tǒng)計(jì)量在塊內(nèi)變動(dòng)巨大。實(shí)際上,很難找到這兩個(gè)矛盾因素之間的折衷,因此塊尺寸通常被選擇在128和1,048個(gè)樣值之間,取決于要編碼的數(shù)據(jù)類型。
一種解決方案是在編碼器中使用后向自適應(yīng)技術(shù)。采用后向自適應(yīng),編碼始于解碼器和編碼器對(duì)每個(gè)塊達(dá)成初始狀態(tài)的一致。換言之,每個(gè)參數(shù)被初始化為預(yù)定值,隨后編碼開始。每次當(dāng)編碼器產(chǎn)生一輸出碼元,該碼元即可立即被發(fā)送至解碼器,因?yàn)榻獯a器知道用于編碼它的參數(shù)值。在編碼器輸出碼元后,它就按照預(yù)定的自適應(yīng)規(guī)則計(jì)算用于編碼參數(shù)的新值,這取決于所輸出的碼元。解碼器知道該參數(shù)自適應(yīng)規(guī)則,因此它也可計(jì)算用于編碼參數(shù)的新值。因而,編碼參數(shù)可在每個(gè)編碼的碼元后調(diào)整,且編碼器和解碼器始終是同步的,即,解碼器追蹤編碼參數(shù)中的變化。這意味著編碼器不需要向解碼器發(fā)送有關(guān)什么參數(shù)用于編碼該數(shù)據(jù)方面的任何額外開銷信息。
因此,所需的是一種提供有效壓縮并能處理和編碼可能出現(xiàn)的任何輸入整數(shù)的無損Golomb/Rice(G/R)編碼器和解碼器(編解碼器)和方法。此外,還需要的是一種通過使用后向自適應(yīng)技術(shù)提供對(duì)輸入數(shù)據(jù)的快速追蹤和有效壓縮來避免上述前向自適應(yīng)所存在問題的自適應(yīng)G/R編解碼器和方法。
發(fā)明內(nèi)容
此處所公開的本發(fā)明包括用于整數(shù)數(shù)據(jù)無損編碼和解碼的自適應(yīng)Golomb/Rice(G/R)編碼器和解碼器(編解碼器)和方法。該自適應(yīng)G/R編解碼器和方法使用了具有新穎的自適應(yīng)規(guī)則的新穎后向自適應(yīng)技術(shù)。使用后向自適應(yīng),該自適應(yīng)G/R編解碼器和方法快速獲知輸入數(shù)據(jù)的統(tǒng)計(jì)量中的任何變化。此外,該自適應(yīng)G/R編解碼器和方法能夠編碼任何輸入整數(shù)值。
該自適應(yīng)G/R編解碼器和方法還使用了在每個(gè)編碼碼元后調(diào)整編碼參數(shù)的新穎的自適應(yīng)規(guī)則。不需要概率表或碼字表,因而該自適應(yīng)G/R編解碼器和方法可適用于小存儲(chǔ)器的情況。該自適應(yīng)G/R編解碼器和方法因此很適于現(xiàn)代處理器,其存儲(chǔ)器訪問通常比指令取出和執(zhí)行花費(fèi)更多的周期。它也適于只有有限存儲(chǔ)器和有限處理能力的小型設(shè)備,因?yàn)樵撟赃m應(yīng)G/R編解碼器和方法不需要緩沖塊中的輸入數(shù)據(jù),也不需要兩次處理每個(gè)數(shù)據(jù)值。
該自適應(yīng)G/R和方法的主要優(yōu)點(diǎn)之一是在生成的每個(gè)碼字后調(diào)整和更新G/R參數(shù)(k)。這使得輸入數(shù)據(jù)的統(tǒng)計(jì)量中的任何變化都能被很快追蹤到。不需要將G/R參數(shù)發(fā)送到解碼器的額外開銷,因?yàn)樗鼈兊淖兓寄鼙唤獯a器追蹤。由于自適應(yīng)規(guī)則是簡(jiǎn)單的,使用后向自適應(yīng)的計(jì)算復(fù)雜度很低。因而,該自適應(yīng)G/R編解碼器和方法對(duì)許多實(shí)際應(yīng)用都有吸引力。
該自適應(yīng)G/R方法包括使用編碼和自適應(yīng)規(guī)則。編碼規(guī)則規(guī)定下一輸入值x是通過先經(jīng)簡(jiǎn)單的1-1映射規(guī)則(當(dāng)x>0時(shí)u=2x,當(dāng)x<0時(shí)u=-2x-1)將它映射到非負(fù)值u上、然后使用帶有參數(shù)k的Golomb/Rice編碼器編碼來編碼的,因此輸出碼字被表示為GR(u,k)。
在編碼了碼元后,使用自適應(yīng)規(guī)則。該自適應(yīng)G/R方法使用簡(jiǎn)單而新穎的自適應(yīng)規(guī)則。對(duì)于k的自適應(yīng)規(guī)則如下。從輸入值u(記住G/R編碼器總是在u值上運(yùn)算),通過p=u>>k計(jì)算臨時(shí)值p(其中>>表示右移運(yùn)算符)。如果p=0,則k的經(jīng)比例縮放的形式,稱為K,減少第五整數(shù)常數(shù)B3。如果p=1,則k保持不變。如果p>1,則K增加p。以這種方法,在生成每個(gè)碼字后,參數(shù)k對(duì)于第一和第二模式中的G/R編碼器而更新。隨后計(jì)算用于生成下一碼字的k值為k=K/L,其中L是固定參數(shù)(記住如果L選為二的冪,則除以L的除法只是位移運(yùn)算)。
從以上自適應(yīng)規(guī)則的描述中可以看到,該自適應(yīng)G/R方法還可包括稱為“小數(shù)自適應(yīng)”的特征。小數(shù)自適應(yīng)允許對(duì)自適應(yīng)速度的更精細(xì)控制。首先,定義比例縮放參數(shù)L,且L的值一般設(shè)為二的冪。接著,定義經(jīng)比例縮放的G/R參數(shù)K=k*L。當(dāng)對(duì)k使用自適應(yīng)規(guī)則時(shí),經(jīng)比例縮放的參數(shù)值K根據(jù)所生成的碼字增加或減少整數(shù)常數(shù)。在K的自適應(yīng)后,最終的參數(shù)值k通過k=K/L來計(jì)算。用這種方式,K的整數(shù)增量可看作k的小數(shù)增量,它允許對(duì)k值的更平滑控制,從而能更好地追蹤輸入統(tǒng)計(jì)量中的變化。如果k在每個(gè)編碼碼元后按整數(shù)增量調(diào)整,其值將波動(dòng)太大。參數(shù)值中的這種噪聲將導(dǎo)致壓縮比(以直接二進(jìn)制形式存儲(chǔ)輸入數(shù)據(jù)所需的比特?cái)?shù)與存儲(chǔ)已編碼比特流所需的比特?cái)?shù)之比)的下降。在一經(jīng)測(cè)試的實(shí)施例中,比例縮放參數(shù)等于十六,且G/R參數(shù)的值基于數(shù)字?jǐn)?shù)據(jù)的衰減參數(shù)。
一種自適應(yīng)G/R編碼器包括結(jié)合上述自適應(yīng)G/R方法的模塊和裝置。
數(shù)字整數(shù)數(shù)據(jù)包括具有值的整數(shù)向量。值是這樣的,對(duì)每個(gè)值,最可能的值是零,且非零值具有隨非零值增加而減少的概率。該自適應(yīng)G/R方法還包括用于編碼和解碼數(shù)據(jù)的過程。該過程包括使用自適應(yīng)Golomb/Rice(G/R)編碼和G/R參數(shù)k來編碼數(shù)字整數(shù)數(shù)據(jù)的每個(gè)值x,以及定義小數(shù)G/R參數(shù)為K=k*L,其中L是比例縮放參數(shù)。該過程還包括在編碼了每個(gè)數(shù)字整數(shù)數(shù)據(jù)的每個(gè)值x后,使用具有自適應(yīng)規(guī)則的后向自適應(yīng)技術(shù)來更新小數(shù)G/R參數(shù),以及將數(shù)字整數(shù)數(shù)據(jù)的編碼值追加至比特流中。該過程還包括使用G/R解碼器解碼比特流以精確地恢復(fù)數(shù)字整數(shù)數(shù)據(jù)的每個(gè)值x。
自適應(yīng)G/R解碼器和方法通過使用對(duì)應(yīng)于以上編碼規(guī)則的解碼規(guī)則并使用上述相同的自適應(yīng)規(guī)則來工作。解碼器處的解碼規(guī)則反轉(zhuǎn)了前述的編碼器處的編碼規(guī)則。即,解碼器根據(jù)GR參數(shù)k的當(dāng)前值,按所需多少?gòu)妮斎氡忍亓?或文件)中讀取多個(gè)比特。以這種方法,解碼器按照表1讀取對(duì)應(yīng)于有效的Golomb/Rice碼GR(u,k)的完整碼字。由于Golomb/Rice碼對(duì)每個(gè)參數(shù)k是唯一可解碼的,因此解碼器隨后可解碼該碼字。換言之,解碼器可確定目前在解碼器處的碼元值u。從u,解碼器可簡(jiǎn)單地通過使用1-1逆映射規(guī)則來確定相應(yīng)的數(shù)據(jù)值x。具體而言,如果u是偶數(shù),則x=u/2,而當(dāng)u是奇數(shù)時(shí),則x=-(u+1)/2。執(zhí)行上述解碼過程來將輸入碼字解碼成完全匹配在編碼器處所見到的輸出值或值串。這樣,解碼過程是無損的。
在如上所述地解碼了來自輸入比特流或文件的碼字后,解碼器則如以上對(duì)編碼器所述的相同自適應(yīng)規(guī)則地計(jì)算。以這種方式,解碼器將以與編碼器完全相同的方法調(diào)整參數(shù)值k。從而,參數(shù)將具有用于解碼下一比特流(或文件)碼字的正確值。
本發(fā)明可通過參考以下描述和示出本發(fā)明各方面的附圖來進(jìn)一步理解。通過結(jié)合附圖閱讀以下本發(fā)明的詳細(xì)描述,其它特征和優(yōu)點(diǎn)將是顯而易見的,附圖作為示例示出了本發(fā)明的原理。
現(xiàn)在參考附圖,其中相同的參考標(biāo)號(hào)通篇表示相應(yīng)的部件圖1示出適用于此處所公開的自適應(yīng)游程Golomb/Rice(RLGR)編碼器和方法的整數(shù)值的典型概率分布。
圖2A是示出此處所公開的自適應(yīng)Golomb/Rice(G/R)編解碼器和方法的編碼器部分的示例性實(shí)現(xiàn)的框圖。
圖2B是示出此處所公開的自適應(yīng)Golomb/Rice(G/R)編解碼器和方法的解碼器部分的示例性實(shí)現(xiàn)的框圖。
圖3示出其中可實(shí)現(xiàn)圖2所示的自適應(yīng)G/R編解碼器的合適的計(jì)算系統(tǒng)環(huán)境的示例。
圖4是示出圖2所示的自適應(yīng)G/R編碼器的組件的概括框圖。
圖5是示出圖2和4所示的自適應(yīng)G/R編碼器和方法的概括操作的概括流程圖。
圖6是進(jìn)一步示出圖5所示的自適應(yīng)G/R編碼器和方法的細(xì)節(jié)的流程圖。
圖7是圖4所示的自適應(yīng)G/R編解碼器和方法的Golomb/Rice(G/R)參數(shù)自適應(yīng)模塊的操作的詳細(xì)流程圖。
圖8是圖7所示的Golomb/Rice(G/R)參數(shù)自適應(yīng)模塊所使用的自適應(yīng)值的計(jì)算的流程圖。
圖9是一工作示例,示出圖2和4所示的自適應(yīng)G/R編碼器的編碼細(xì)節(jié),包括G/R參數(shù)k自適應(yīng)規(guī)則。
具體實(shí)施例方式
在本發(fā)明的以下描述中,對(duì)附圖進(jìn)行了參考,附圖構(gòu)成本發(fā)明的一部分,其中作為說明給出可實(shí)施本發(fā)明的特定示例。要理解,也可使用其它實(shí)施例且可作出結(jié)構(gòu)性變化,而不脫離本發(fā)明的范圍。
I.介紹此處所公開的自適應(yīng)Golomb/Rice(G/R)編解碼器和方法可用于各種各樣的壓縮應(yīng)用中。例如,該自適應(yīng)G/R編解碼器和方法可用于數(shù)據(jù)庫(kù)應(yīng)用來編碼索引。索引一般是具有類似于圖1的概率分布的正整數(shù)數(shù)字,因?yàn)閷?duì)于索引,小值比大值更可能。另一示例是將該自適應(yīng)G/R編解碼器和方法用于編碼硬盤的磁頭位置。直到硬盤滿之前,數(shù)據(jù)更可能位于硬盤開始處而不是末尾處。因此,小磁頭值比大磁頭值更可能,因而整數(shù)數(shù)據(jù)具有類似于圖1的概率分布。
這里所公開的RLGR編解碼器和方法是用于整數(shù)數(shù)據(jù)的無損壓縮的改進(jìn)技術(shù)。包含整數(shù)值的向量由編碼器映射到比特流中,它稍后可由解碼器精確重建。為改進(jìn)性能使用后向自適應(yīng),該自適應(yīng)G/R編解碼器和方法快速獲知和自適應(yīng)輸入數(shù)據(jù)的統(tǒng)計(jì)量中的變化。
該自適應(yīng)G/R編解碼器和方法使用了一種在每個(gè)編碼的碼元后調(diào)整G/R參數(shù)的后向自適應(yīng)策略。概率表或碼字表是不需要的,它們使自適應(yīng)G/R編解碼器和方法適合于很小的存儲(chǔ)器情況。因而該自適應(yīng)G/R編解碼器和方法特別適合現(xiàn)代處理器,其中存儲(chǔ)器訪問通常比指令取出和執(zhí)行花費(fèi)更多的周期。
該自適應(yīng)G/R編解碼器和方法與以前各種熵編碼器相比的一個(gè)關(guān)鍵優(yōu)點(diǎn)是其后向自適應(yīng)策略快速獲知數(shù)據(jù)的統(tǒng)計(jì)量中的變化。因而,實(shí)際上該自適應(yīng)G/R編解碼器和方法展示出比諸如Huffman編碼器、塊自適應(yīng)Golomb/Rice編碼器或上下文自適應(yīng)算術(shù)編碼器等其它各種編碼器更好的性能。使用后向自適應(yīng)策略用于編碼參數(shù)的另一個(gè)優(yōu)點(diǎn)是不需要概率估算器。該自適應(yīng)G/R編解碼器和方法還有另一個(gè)優(yōu)點(diǎn)是它在每個(gè)編碼的碼元之后執(zhí)行自適應(yīng),只在數(shù)據(jù)上通過一次,這樣比使用按塊或前向自適應(yīng)的編碼器產(chǎn)生更好的壓縮結(jié)果和更快的編碼。
II.概覽圖2A和B是方框圖,示出此處所公開的自適應(yīng)Golomb/Rice(G/R)編解碼器和方法的示例性實(shí)現(xiàn)。在圖2A中,示出了自適應(yīng)G/R編解碼器和方法的編碼器部分的框圖。在圖2B中,示出了自適應(yīng)G/R編解碼器和方法的解碼器部分的框圖。應(yīng)該注意,圖2A和B只是其中可實(shí)現(xiàn)和使用自適應(yīng)G/R編解碼器和方法的幾種方式中的兩種。
參考圖2A,自適應(yīng)G/R編碼器200運(yùn)行在第一計(jì)算設(shè)備210上。自適應(yīng)G/R編碼器200輸入并處理整數(shù)數(shù)據(jù)220。一般而言,給定整數(shù)數(shù)據(jù)220,諸如包含整數(shù)值的向量,自適應(yīng)G/R編碼器200將整數(shù)數(shù)據(jù)220編碼或映射為已編碼比特流230。整數(shù)數(shù)據(jù)220一般包含整數(shù)向量,因而大多數(shù)可能值為零且任意非零值具有隨值增長(zhǎng)而減少的概率。這種類型的整數(shù)數(shù)據(jù)一般具有類似于圖1所示的概率分布函數(shù)(PDF)。在編碼了整數(shù)數(shù)據(jù)后,已編碼比特流230可被存儲(chǔ)或發(fā)送。
參考圖2B,G/R解碼器240駐留在第二計(jì)算設(shè)備250上。應(yīng)該注意,盡管示出為單獨(dú)的計(jì)算設(shè)備,但第一計(jì)算設(shè)備210和第二計(jì)算設(shè)備250可以是同一計(jì)算設(shè)備。換言之,G/R編碼器200和解碼器240可駐留在同一計(jì)算設(shè)備上。一般而言,G/R解碼器240處理編碼器比特流230并輸出經(jīng)重建的整數(shù)數(shù)據(jù)260。因?yàn)樽赃m應(yīng)G/R編碼器200執(zhí)行整數(shù)數(shù)據(jù)220的無損編碼,因此G/R解碼器240可讀取已編碼比特流230,并精確地重建包含在整數(shù)數(shù)據(jù)220中的原始數(shù)據(jù)向量。
應(yīng)該注意,在實(shí)際應(yīng)用中,設(shè)備或儀器可包含G/R編碼器而不包含G/R解碼器(例如,數(shù)碼相機(jī))。同樣地,設(shè)備或儀器可包含G/R解碼器而不包含G/R編碼器(例如,數(shù)字音頻播放器或數(shù)字圖像查看器)。
III.示例性操作環(huán)境自適應(yīng)Golomb/Rice(G/R)編解碼器和方法被設(shè)計(jì)為在計(jì)算環(huán)境中和計(jì)算設(shè)備上運(yùn)行,諸如圖2所示的第一計(jì)算設(shè)備210和第二計(jì)算設(shè)備250?,F(xiàn)在將討論自適應(yīng)G/R編解碼器和方法在其中運(yùn)行的計(jì)算環(huán)境。以下討論旨在提供可在其中實(shí)現(xiàn)自適應(yīng)Golomb/Rice(G/R)編碼器和方法的適當(dāng)計(jì)算環(huán)境的簡(jiǎn)要概括描述。
圖3示出可在其中實(shí)現(xiàn)圖2所示的自適應(yīng)G/R編解碼器和方法的適當(dāng)計(jì)算系統(tǒng)環(huán)境的示例。計(jì)算系統(tǒng)環(huán)境300只是適當(dāng)計(jì)算環(huán)境的一個(gè)示例,而不旨在對(duì)本發(fā)明使用范圍或功能提出任何限制。計(jì)算環(huán)境300不應(yīng)被解釋為對(duì)于示例性操作環(huán)境300中所示任意一個(gè)組件或其組合具有任何依賴或需求。
自適應(yīng)G/R編解碼器和方法可用大量其它通用或?qū)S糜?jì)算系統(tǒng)環(huán)境或配置來操作。眾所周知的適于自適應(yīng)G/R編解碼器和方法使用的計(jì)算系統(tǒng)、環(huán)境和/或配置的示例包括,但不限于,個(gè)人計(jì)算機(jī)、服務(wù)器計(jì)算機(jī)、諸如蜂窩電話和PDA等手持式、膝上型或移動(dòng)計(jì)算機(jī)或通信設(shè)備、多處理器系統(tǒng)、基于微處理器的系統(tǒng)、機(jī)頂盒、可編程消費(fèi)電子產(chǎn)品、網(wǎng)絡(luò)PC、小型機(jī)、大型計(jì)算機(jī)、可包括任意以上系統(tǒng)或設(shè)備的分布式計(jì)算環(huán)境等等。
自適應(yīng)G/R編解碼器和方法可在諸如程序模塊等由計(jì)算機(jī)執(zhí)行的計(jì)算機(jī)可執(zhí)行指令的通用上下文環(huán)境中描述。一般而言,程序模塊包括例程、程序、對(duì)象、組件、數(shù)據(jù)結(jié)構(gòu)等,它們執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型。自適應(yīng)G/R編解碼器和方法還可在分布式計(jì)算環(huán)境中實(shí)施,其中任務(wù)由通過通信網(wǎng)絡(luò)連接的遠(yuǎn)程處理設(shè)備執(zhí)行。在分布式計(jì)算環(huán)境中,程序模塊可位于包括存儲(chǔ)器存儲(chǔ)設(shè)備在內(nèi)的本地和遠(yuǎn)程計(jì)算機(jī)存儲(chǔ)介質(zhì)中。參考圖3,用于實(shí)現(xiàn)自適應(yīng)G/R編解碼器和方法的示例性系統(tǒng)包括計(jì)算機(jī)310形式的通用計(jì)算設(shè)備。計(jì)算機(jī)310是圖2所示第一計(jì)算設(shè)備210和第二計(jì)算設(shè)備250的示例。
計(jì)算機(jī)310的組件可包括,但不限于,處理單元320、系統(tǒng)存儲(chǔ)器330和將包括系統(tǒng)存儲(chǔ)器的各種系統(tǒng)組件耦合到處理單元320的系統(tǒng)總線321。系統(tǒng)總線321可以是任意幾種類型的總線結(jié)構(gòu)的任一種,包括存儲(chǔ)器總線或存儲(chǔ)器控制器、外圍總線或外部總線、和/或使用任意各種各樣總線體系結(jié)構(gòu)的任一種的局部總線。作為示例,而非限制,這樣的體系結(jié)構(gòu)包括工業(yè)標(biāo)準(zhǔn)體系結(jié)構(gòu)(ISA)總線、微通道體系結(jié)構(gòu)(MSA)總線、擴(kuò)展ISA(EISA)總線、視頻電子技術(shù)標(biāo)準(zhǔn)協(xié)會(huì)(VESA)局部總線以及外圍部件互連(PCI)總線,也稱為Mezzanine總線。
計(jì)算機(jī)310通常包括各種計(jì)算機(jī)可讀介質(zhì)。計(jì)算機(jī)可讀介質(zhì)可以是能夠被計(jì)算機(jī)訪問的任何可用介質(zhì),包括易失性和非易失性介質(zhì)、可移動(dòng)和不可移動(dòng)介質(zhì)。作為示例,而非限制,計(jì)算機(jī)可讀介質(zhì)可包括計(jì)算機(jī)存儲(chǔ)介質(zhì)和通信介質(zhì)。計(jì)算機(jī)存儲(chǔ)介質(zhì)包括以用于諸如計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù)等信息的存儲(chǔ)的方法或技術(shù)實(shí)現(xiàn)的任何易失性和非易失性、可移動(dòng)和不可移動(dòng)介質(zhì)。
計(jì)算機(jī)存儲(chǔ)介質(zhì)包括,但不限于,RAM、ROM、EEPROM、閃存或其它存儲(chǔ)器技術(shù)、CD-ROM、數(shù)字多功能盤(DVD)或者其它光盤存儲(chǔ)、磁盒、磁帶、磁盤存儲(chǔ)或者其它磁存儲(chǔ)設(shè)備,或者可用于存儲(chǔ)需要的信息并且可由計(jì)算機(jī)310訪問的任何其它介質(zhì)。通信介質(zhì)一般具體化為在如載波或其它傳送機(jī)制等已調(diào)制數(shù)據(jù)信號(hào)中的計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù),并且包括任何信息傳遞介質(zhì)。
注意,術(shù)語“已調(diào)制數(shù)據(jù)信號(hào)”意指以將信息編碼到該信號(hào)中的方式設(shè)置或改變其一個(gè)或多個(gè)特征的信號(hào)。作為示例,而非限制,通信介質(zhì)包括有線介質(zhì),諸如有線網(wǎng)絡(luò)或者直接線連接,以及無線介質(zhì),諸如聲學(xué)、RF、紅外和其它無線介質(zhì)。任何上述內(nèi)容的組合也包括在計(jì)算機(jī)可讀介質(zhì)的范圍內(nèi)。
系統(tǒng)存儲(chǔ)器330包括以易失性和/或非易失性存儲(chǔ)器形式的計(jì)算機(jī)存儲(chǔ)介質(zhì),諸如只讀存儲(chǔ)器(ROM)331和隨機(jī)存取存儲(chǔ)器(RAM)332。基本輸入/輸出系統(tǒng)333(BIOS)一般存儲(chǔ)在ROM 331中,它包含諸如在啟動(dòng)期間幫助在計(jì)算機(jī)310內(nèi)各元件間傳送信息的基本例程。RAM 332一般包含由處理單元320可直接訪問和/或目前正運(yùn)行的數(shù)據(jù)和/或程序模塊。作為示例而非限制,圖3示出操作系統(tǒng)334、應(yīng)用程序335、其它程序模塊336和程序數(shù)據(jù)337。
計(jì)算機(jī)310還可包括其它可移動(dòng)/不可移動(dòng)、易失性/非易失性計(jì)算機(jī)存儲(chǔ)介質(zhì)。僅作為示例,圖3示出讀寫不可移動(dòng)非易失性磁介質(zhì)的硬盤驅(qū)動(dòng)器341、讀寫可移動(dòng)非易失性磁盤352的磁盤驅(qū)動(dòng)器351,以及讀寫如CD-ROM或其它光介質(zhì)等可移動(dòng)非易失性光盤356的光盤驅(qū)動(dòng)器355。
可在示例性操作環(huán)境中使用的其它可移動(dòng)/不可移動(dòng)、易失性/非易失性計(jì)算機(jī)存儲(chǔ)介質(zhì)包括,但不限于,磁帶盒、閃存卡、數(shù)字多功能盤、數(shù)字錄像帶、固態(tài)RAM、固態(tài)ROM等等。硬盤驅(qū)動(dòng)器341一般通過諸如接口340等不可移動(dòng)存儲(chǔ)器接口連接到系統(tǒng)總線321,而磁盤驅(qū)動(dòng)器351和光盤驅(qū)動(dòng)器355一般通過諸如接口350等可移動(dòng)存儲(chǔ)器接口連接到系統(tǒng)總線321。
以上討論并在圖3中示出的驅(qū)動(dòng)器及其相關(guān)聯(lián)的計(jì)算機(jī)存儲(chǔ)介質(zhì)為計(jì)算機(jī)310提供了計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊和其它數(shù)據(jù)的存儲(chǔ)。例如,在圖3中,硬盤驅(qū)動(dòng)器341被示出為存儲(chǔ)操作系統(tǒng)344、應(yīng)用程序345、其它程序模塊346和程序數(shù)據(jù)347。注意這些組件可以相同或不同于操作系統(tǒng)334、應(yīng)用程序335、其它程序模塊336和程序數(shù)據(jù)337。操作系統(tǒng)344、應(yīng)用程序345、其它程序模塊346和程序數(shù)據(jù)347在這里給出不同的標(biāo)號(hào)是為了指出至少它們是不同的副本。用戶可通過諸如鍵盤362和定點(diǎn)設(shè)備361(通常指鼠標(biāo)、軌跡球或觸摸板)等輸入設(shè)備將命令和信息輸入到計(jì)算機(jī)310。
其它輸入設(shè)備(未示出)可包括話筒、操縱桿、游戲墊、圓盤式衛(wèi)星天線、掃描儀、無線電接收器或者電視或廣播視頻接收器等等。這些和其它輸入設(shè)備通過耦合到系統(tǒng)總線321的用戶輸入接口360連接到處理單元320,但也可通過其它接口和總線結(jié)構(gòu),如并行端口、游戲端口或通用串行總線(USB)來連接。監(jiān)示器391或其它類型的顯示設(shè)備也通過接口,如視頻接口390連接到系統(tǒng)總線321。除了監(jiān)示器以外,計(jì)算機(jī)還可包括其它外設(shè)輸出設(shè)備,諸如揚(yáng)聲器397和打印機(jī)396,它們可通過輸出外圍接口395連接。
計(jì)算機(jī)310可使用到一或多個(gè)遠(yuǎn)程計(jì)算機(jī),如遠(yuǎn)程計(jì)算機(jī)380的邏輯連接在網(wǎng)絡(luò)化環(huán)境中工作。遠(yuǎn)程計(jì)算機(jī)380可以是個(gè)人計(jì)算機(jī)、服務(wù)器、路由器、網(wǎng)絡(luò)PC、對(duì)等設(shè)備或其它普通網(wǎng)絡(luò)節(jié)點(diǎn),并且一般包括上面相對(duì)于計(jì)算機(jī)310所述的許多或所有元件,盡管在圖3中所示的只有存儲(chǔ)器存儲(chǔ)設(shè)備381。圖3所示的邏輯連接包括局域網(wǎng)(LAN)371和廣域網(wǎng)(WAN)373,但也可包括其它網(wǎng)絡(luò)。這樣的網(wǎng)絡(luò)環(huán)境在辦公室、企業(yè)范圍計(jì)算機(jī)網(wǎng)絡(luò)、企業(yè)內(nèi)部互聯(lián)網(wǎng)和因特網(wǎng)中是很常見的。
當(dāng)在LAN環(huán)境中使用時(shí),計(jì)算機(jī)310通過網(wǎng)絡(luò)接口或適配器370連接到LAN371。當(dāng)在廣域網(wǎng)環(huán)境中使用時(shí),計(jì)算機(jī)310一般包括調(diào)制解調(diào)器372或通過WAN373,如因特網(wǎng)建立通信的其它裝置。調(diào)制解調(diào)器372可以是內(nèi)置或外置的,通過用戶輸入接口360或其它適當(dāng)機(jī)制連接到系統(tǒng)總線321。在網(wǎng)絡(luò)化環(huán)境中,相對(duì)于計(jì)算機(jī)310描述的程序模塊或其部分可存儲(chǔ)在遠(yuǎn)程存儲(chǔ)器存儲(chǔ)設(shè)備中。作為示例而非限制,圖3例示了遠(yuǎn)程應(yīng)用程序385駐留在存儲(chǔ)器設(shè)備381上。要理解,所示的網(wǎng)絡(luò)連接是示例性的,并且可使用在計(jì)算機(jī)之間建立通信鏈路的其它手段。
IV.系統(tǒng)組件圖4是示出圖2所示的自適應(yīng)G/R編碼器200組件的總框圖。自適應(yīng)G/R編碼器接收輸入值(或值串)400作為輸入。使用Golomb/Rice編碼模塊410來編碼輸入值(或串)400以獲得碼字420。在每個(gè)輸入值(或串)400的編碼后,編碼參數(shù)被自適應(yīng)來追蹤輸入數(shù)據(jù)的統(tǒng)計(jì)量。
Golomb/Rice(G/R)參數(shù)自適應(yīng)模塊430用于使用后向自適應(yīng)技術(shù)和新穎的自適應(yīng)規(guī)則來更新原始G/R參數(shù)。這產(chǎn)生經(jīng)更新的G/R參數(shù)445。G/R參數(shù)的自適應(yīng)將在下面詳細(xì)討論。一旦參數(shù)被更新,下一個(gè)輸入值450將由自適應(yīng)G/R編碼器200用更新后的G/R參數(shù)440來處理。
V.操作概覽現(xiàn)在將討論如圖2和4所示的自適應(yīng)G/R編碼器200的操作和其中所使用的方法。圖5是總流程圖,示出圖2和4所示的自適應(yīng)G/R編碼器和方法的總操作。該方法始于輸入要編碼的數(shù)字?jǐn)?shù)據(jù)(框500)。在一個(gè)經(jīng)測(cè)試的實(shí)施例中,輸入數(shù)字?jǐn)?shù)據(jù)是具有整數(shù)值元素的向量形式的整數(shù)數(shù)據(jù)。應(yīng)該注意,每個(gè)輸入數(shù)字?jǐn)?shù)據(jù)值可以是任意整數(shù)值,而不限于特定的范圍(例如,二進(jìn)制或二進(jìn)制加符號(hào),因?yàn)檫@在其它熵編碼器中很常見)。接下來,使用G/R參數(shù)來編碼數(shù)字?jǐn)?shù)據(jù)(框510)。
數(shù)字?jǐn)?shù)據(jù)是使用被初始化為某一值的G/R參數(shù)來編碼的。然而,由于輸入數(shù)字?jǐn)?shù)據(jù)的統(tǒng)計(jì)量可以變化,因此G/R編碼器200是自適應(yīng)的。這種自適應(yīng)使得自適應(yīng)G/R編碼器200能夠追蹤輸入數(shù)字?jǐn)?shù)據(jù)的統(tǒng)計(jì)量并快速自適應(yīng)到那些統(tǒng)計(jì)量,以提供更高的編碼效率。自適應(yīng)G/R編碼器200和方法使用后向自適應(yīng)技術(shù)來更新G/R參數(shù)(框520)。G/R參數(shù)的這種更新在編碼了輸入數(shù)字?jǐn)?shù)據(jù)的每個(gè)值或值串后發(fā)生。此外,后向自適應(yīng)技術(shù)包括新穎的自適應(yīng)規(guī)則,這將在下面詳細(xì)討論。然后,輸出已編碼數(shù)字?jǐn)?shù)據(jù)(框530)。接下來,使用剛才描述的方法處理輸入數(shù)字?jǐn)?shù)據(jù)的下一值或串。G/R參數(shù)的更新值用于編碼下一輸入值或串。一直重復(fù)這個(gè)過程,直到所有數(shù)字?jǐn)?shù)據(jù)都被編碼成已編碼比特流。
圖6是一流程圖,示出圖5所示的自適應(yīng)G/R編碼器和方法的進(jìn)一步細(xì)節(jié)。特別地,數(shù)字?jǐn)?shù)據(jù)的值或串作為輸入接收(框600)。接下來,使用G/R參數(shù)編碼輸入值或串(框610)。在編碼了輸入值或串后,更新G/R參數(shù)。該自適應(yīng)過程始于定義一經(jīng)比例縮放的G/R參數(shù)(框520)。該經(jīng)比例縮放的G/R參數(shù)用來減慢G/R參數(shù)的自適應(yīng),這樣可更緊密地追蹤最優(yōu)參數(shù)值。經(jīng)比例縮放的G/R參數(shù)將在下面更詳細(xì)地討論。接下來,使用后向自適應(yīng)技術(shù)和新穎的自適應(yīng)規(guī)則來更新經(jīng)比例縮放的G/R參數(shù)(框630)。經(jīng)編碼的輸入值或串被追加到已編碼比特流后,且輸入要編碼的下一個(gè)數(shù)字?jǐn)?shù)據(jù)值或串(框640)。該過程重新開始,用更新后的經(jīng)比例縮放的G/R參數(shù)編碼下一值或串。
VI.操作細(xì)節(jié)現(xiàn)在將討論以上所述圖4、5和6的自適應(yīng)G/R編碼器200和方法的操作細(xì)節(jié)。
Golomb/Rice(G/R)參數(shù)自適應(yīng)模塊圖7是圖4所示的自適應(yīng)G/R編碼器200和方法的Golomb/Rice(G/R)參數(shù)自適應(yīng)模塊430的操作的詳細(xì)流程圖。一般而言,G/R參數(shù)自適應(yīng)模塊430使用具有新穎的自適應(yīng)規(guī)則的后向自適應(yīng)技術(shù)來更新初始G/R參數(shù)。更新是在編碼數(shù)字?jǐn)?shù)據(jù)的每個(gè)值或串后執(zhí)行的。
該操作始于接收初始G/R參數(shù)(框705)和自適應(yīng)值(框710)作為輸入,稍后將描述其計(jì)算。隨后做出關(guān)于自適應(yīng)值是否等于零的判斷(框715)。如果是,則自適應(yīng)規(guī)則將使經(jīng)比例縮放的G/R參數(shù)減少一整數(shù)常數(shù)(框720)。
如果自適應(yīng)值不等于零,則做出關(guān)于自適應(yīng)值是否等于一的判斷(框725)。如果是,則自適應(yīng)規(guī)則保持經(jīng)比例縮放的G/R參數(shù)不變(框730)。如果不是,則自適應(yīng)規(guī)則將經(jīng)比例縮放的G/R參數(shù)增加自適應(yīng)值(框735)。
一旦G/R參數(shù)已被更新,用更新后的G/R參數(shù)替換當(dāng)前G/R參數(shù)(框740)。這可通過將經(jīng)比例縮放的G/R模式參數(shù)除以固定比例縮放因子并保留結(jié)果的整數(shù)部分來獲得。由于自適應(yīng)按照整數(shù)步長(zhǎng)調(diào)整經(jīng)比例縮放的G/R模式參數(shù),因此實(shí)際G/R參數(shù)就象它是由小數(shù)步長(zhǎng)來自適應(yīng)的一樣。再一次,這是“小數(shù)自適應(yīng)”的示例,它允許對(duì)自適應(yīng)速度的更精細(xì)控制。當(dāng)然,如果G/R參數(shù)保持不變(框730),則不進(jìn)行更新,且當(dāng)前G/R參數(shù)是相同的。最后,輸出更新后的G/R參數(shù)(框745)。
圖8是圖7所示的Golomb/Rice(G/R)參數(shù)自適應(yīng)模塊430使用的自適應(yīng)值的計(jì)算的詳細(xì)流程圖。參考圖7和9,自適應(yīng)值計(jì)算模塊800產(chǎn)生作為圖7的流程圖的輸入的自適應(yīng)值(框710)。該操作始于接收兩個(gè)輸入,即當(dāng)前G/R參數(shù)值(框805)和輸入值(框810)。接著,輸入值右移與G/R參數(shù)值相同的位數(shù)(框820)。結(jié)果值就是自適應(yīng)值,隨后輸出它(框830)。
VII.工作示例為了更全面地理解這里所公開的自適應(yīng)G/R編碼器和方法,給出示例性工作示例的操作細(xì)節(jié)。應(yīng)該注意,這個(gè)工作示例只是其中可實(shí)現(xiàn)自適應(yīng)G/R編碼器和方法的一種方法。
自適應(yīng)Golomb/Rice(G/R)編解碼器和方法是在以上提到的美國(guó)專利第6,477,280號(hào)中公開的PTC熵編碼器的擴(kuò)展。然而,美國(guó)專利第6,477,280號(hào)的PTC熵編碼器是用于編碼二進(jìn)制數(shù)據(jù)的(一般是整數(shù)數(shù)據(jù)的位平面)。此處所公開的自適應(yīng)G/R編碼器和方法可使用任意輸入值來編碼整數(shù)數(shù)據(jù)。換言之,此處所公開的自適應(yīng)G/R編碼器和方法可編碼任意字母的數(shù)據(jù)。
此處所公開的自適應(yīng)G/R編碼器和方法的一個(gè)優(yōu)點(diǎn)是,不象PTC熵編碼器,不需要了解輸入數(shù)據(jù)的最大可能數(shù)。相反,自適應(yīng)G/R編碼器和方法可處理任意大小的輸入值,不論有多大。這意味著自適應(yīng)G/R編碼器假設(shè)輸入數(shù)據(jù)具有如圖1所示的拉普拉斯分布,當(dāng)突然有大數(shù)字出現(xiàn)在輸入數(shù)據(jù)中,自適應(yīng)G/R編碼器和方法能夠編碼這個(gè)大數(shù)字。盡管大數(shù)字將比小數(shù)字使用更多比特,但大數(shù)字仍將被編碼。然而,使用更多比特只在大數(shù)字出現(xiàn)時(shí)才自承其果,而不是對(duì)每個(gè)其它值。這歸因于以下提出的新模式選擇和自適應(yīng)規(guī)則。
用PTC熵編碼器,接收輸入數(shù)據(jù)、分解成位平面、然后用G/R編碼器編碼每個(gè)位平面。在此處所公開的自適應(yīng)G/R編解碼器和方法中,自適應(yīng)G/R編解碼器被擴(kuò)展成直接處理拉普拉斯數(shù)據(jù)。這有自適應(yīng)G/R編解碼器和方法使用單次通過編碼的優(yōu)點(diǎn),使得它比PTC熵編碼器要快得多。
PTC熵編碼器的輸入數(shù)據(jù)具有拉普拉斯分布,其中小數(shù)字更可能。有時(shí),小數(shù)字有更多可能,使得編碼零連串對(duì)于比特流的特定部分更加有效。然而,PTC熵編碼器將拾取數(shù)據(jù),在最高位平面上進(jìn)行一次通過,并回去在下一位平面上進(jìn)行一次通過。例如,如果數(shù)據(jù)是16位,通過首先在位#16上完成并編碼。當(dāng)然,大多數(shù)數(shù)據(jù)將是零,因?yàn)樵撐恢粚?duì)很大的數(shù)分割,然后繼續(xù)向下。當(dāng)?shù)搅宋?5、4、3、2和1,這些位具有許多零和一,這意味著它到達(dá)了編碼它們已沒有什么幫助的一點(diǎn)。通常最低位是隨機(jī)的,以至于用一個(gè)比特來編碼這個(gè)位,即每個(gè)輸入比特都直接復(fù)制到輸出。PTC熵編碼帶來的問題是位平面上的編碼需要幾次通過數(shù)據(jù)。具體而言,PTC熵編碼器不得不編碼最高位、下一位、然后再下一位等等。顯然,這花費(fèi)了太大量的時(shí)間,而且在某些情況下,PTC熵編碼器比此處所公開的自適應(yīng)G/R編碼器和方法慢1.5到3倍。
編碼規(guī)則自適應(yīng)G/R編解碼器和方法使用基于G/R參數(shù)k的新穎的編碼規(guī)則。表2給出自適應(yīng)G/R編解碼器和方法用于將整數(shù)值x映射到二進(jìn)制比特流的編碼規(guī)則。
表2
在這個(gè)工作示例中,定義映射值u。自適應(yīng)G/R編碼器和方法的輸入值x可正可負(fù)。輸入值x映射到值u,其中u只有正值。因而,帶符號(hào)的輸入值x被轉(zhuǎn)換成不帶符號(hào)的等價(jià)表示u。公式4給出從x到u的映射。具體而言,該映射表示,0映射到0、1映射到1、-1映射到2、2映射到3、-2映射到4等等,因而u值總是正的。這完成后,就可使用G/R表(表1),因?yàn)镚/R表只用于非零值。這種映射使得自適應(yīng)G/R編解碼器和方法能處理任何輸入字母。換言之,由于使用了G/R表(它可處理任何輸入數(shù)),因此輸入字母可以是無限的,且自適應(yīng)G/R編解碼器和方法可處理任意大小的數(shù)字輸入。自適應(yīng)G/R編解碼器和方法只受限于操作系統(tǒng)可處理的數(shù)字的大小。應(yīng)該注意,實(shí)際上,G/R編碼表1不需要存儲(chǔ)在存儲(chǔ)器中。很容易明白,表?xiàng)l目具有足夠的結(jié)構(gòu),使得對(duì)于任意u值和編碼參數(shù)k,都能方便地計(jì)算出碼字。
給定u數(shù)據(jù),表2規(guī)定使用自適應(yīng)G/R編碼器和表1例示的G/R編碼規(guī)則來編碼輸入值x的映射值u。因而,用于編碼x的碼字基于u和k值。G/R參數(shù)k是使用后向自適應(yīng)技術(shù)和創(chuàng)新自適應(yīng)規(guī)則來更新的,如以下詳細(xì)討論。表2中的規(guī)則精確定義了編碼器如何編碼,這意味著解碼器可使用表2中的同樣規(guī)則來恢復(fù)(或解碼)已編碼數(shù)據(jù)。
小數(shù)自適應(yīng)小數(shù)自適應(yīng)使用經(jīng)比例縮放的G/R參數(shù)K來代替G/R參數(shù)k。小數(shù)自適應(yīng)是減慢自適應(yīng)的一種方法。使用沒有小數(shù)自適應(yīng)的自適應(yīng)G/R編解碼器和方法是可能的。然而,如果沒有小數(shù)自適應(yīng),則自適應(yīng)通常變化太快,而無法正確追蹤用于輸入數(shù)據(jù)的最優(yōu)參數(shù)。
在這個(gè)工作示例中,k參數(shù)的自適應(yīng)是使用經(jīng)比例縮放的K參數(shù)來完成的。因而,更新K而非k。k和K之間的關(guān)系如下k=K/L,其中L是如上解釋的比例縮放參數(shù)。因此,當(dāng)進(jìn)行自適應(yīng)時(shí),自適應(yīng)K值,而K除以L就獲得k值。注意,所有值都是整數(shù),所以通過k=K/L,意味著是結(jié)果的整數(shù)部分。還要記住,固定比例縮放參數(shù)L被設(shè)為等于2的冪的值(例如L=16),則除以L的除法可通過位移運(yùn)算來有效執(zhí)行。
小數(shù)自適應(yīng)是較佳的,因?yàn)樽赃m應(yīng)G/R編解碼器和方法對(duì)生成的每個(gè)代碼都進(jìn)行了G/R參數(shù)k的調(diào)整。換言之,在編碼了輸入值或串后,執(zhí)行自適應(yīng)規(guī)則。如果k直接通過整數(shù)值變化來自適應(yīng),則由于它們是整數(shù),所有可做的是保持相同或至少增減1。然而,假設(shè)輸入數(shù)據(jù)變得更大,意味著參數(shù)應(yīng)該增加。
小數(shù)自適應(yīng)允許k的小數(shù)增加。例如,k可以用.5代替1來增加。然而,這是不允許的,因?yàn)閗是整數(shù)參數(shù)。因此小數(shù)自適應(yīng)執(zhí)行K的整數(shù)增加,且用L除以K給出k的小數(shù)增加。這保證了參數(shù)k沒有振蕩。
作為使用自適應(yīng),定義一個(gè)標(biāo)志是可能的,這樣如果數(shù)據(jù)有增減,在增減該參數(shù)前通過則某些數(shù)量的編碼周期??啥x追蹤編碼周期數(shù)的新參數(shù)。換言之,該參數(shù)將追蹤在參數(shù)改變前條件(輸入數(shù)據(jù)增加或減少)發(fā)生了多少次。但是應(yīng)該注意,這一技術(shù)是經(jīng)試驗(yàn)的,且小數(shù)自適應(yīng)提供了較好的結(jié)果。
Golomb/Rice(k)參數(shù)自適應(yīng)G/R參數(shù)k在編碼了每個(gè)輸入值或串后被自適應(yīng)。當(dāng)使用小數(shù)自適應(yīng)時(shí),實(shí)際上自適應(yīng)經(jīng)比例縮放的G/R參數(shù)K,而非直接自適應(yīng)k。表3給出用于G/R參數(shù)k的自適應(yīng)規(guī)則。在編碼了值u后,通過自適應(yīng)值p=u>>k來控制自適應(yīng),這意味著u向右移k位。在自適應(yīng)后,k的值被設(shè)為k=K/L,其中L是常數(shù)。在這個(gè)工作示例中,L=16。
表3表1的G/R碼取決于參數(shù)k。例如,如果一個(gè)不完全連串后的值為13,13的GR碼是“1111111111110”(對(duì)于k=0),且如果k=1,則為“11111101”。k越大,則表示13的數(shù)將越小。而k越小,則表示13的數(shù)將越大。因而,參數(shù)k必須已知。這意味著如果對(duì)k選擇了合適的值,自適應(yīng)G/R編解碼器和方法會(huì)完成得很好。但是,使用k的大值并不總是有利的,因?yàn)檫@將對(duì)于輸入數(shù)據(jù)的較小值產(chǎn)生較長(zhǎng)串,如表1所示。換言之,k值的合適選擇取決于輸入數(shù)據(jù)。如果值為13,則使用k的大值是個(gè)好主意。但是,假設(shè)不完全連串后的值為“1”。則k的較小值是所希望的。因而,對(duì)于不完全連串之后的小值,使用小k更好,而對(duì)于大值,使用大k更好。因此,k的選擇與值的概率有關(guān)。在現(xiàn)有技術(shù)中,有對(duì)為此目的的大量理論成果如果輸入數(shù)據(jù)的概率已知(例如,如果輸入數(shù)據(jù)是拉普拉斯,其中存在控制衰減的單個(gè)參數(shù)),則有眾所周知的公式,從中可計(jì)算要使用的衰減參數(shù),即參數(shù)k。這平均起來使映射使用盡可能少的比特。
因而,k參數(shù)是自適應(yīng)的是很重要的。以這種方法,如果在輸入數(shù)據(jù)上有大值出現(xiàn),則k應(yīng)該增加,因?yàn)閷?duì)于大值,k越大越好。另一方面,如果有較小值出現(xiàn),則k應(yīng)該減少。直觀上,能夠明白,對(duì)于大數(shù)字,k應(yīng)該增加,而對(duì)于小數(shù)字,k應(yīng)該減少。因此,只要k以足夠小的幅度改變(諸如當(dāng)使用小數(shù)自適應(yīng)時(shí)),對(duì)于輸入數(shù)據(jù)的最優(yōu)參數(shù)將總是被正確地追蹤。
表3所示的k的自適應(yīng)規(guī)則是相當(dāng)新穎的。在自適應(yīng)G/R編解碼器和方法中,任何值都可出現(xiàn),因此這個(gè)值必須被編碼。編碼是使用自適應(yīng)G/R編碼器和G/R參數(shù)k來完成的。參考表3,輸入數(shù)據(jù)是x。輸入數(shù)據(jù)x可以是任何整數(shù),小x更可能(可以是正的或是負(fù)的)。但是,G/R編碼只用于正數(shù)。x的直接映射(見公式4)用于將x映射成u。k的自適應(yīng)是由自適應(yīng)值p來控制的,p被定義為u向右移k位。因而,自適應(yīng)值p是u的按比例縮小形式?;蛘?,等價(jià)地,p參數(shù)是近似于u/2k的整數(shù)。向右移k位等于將此數(shù)除以2k。例如,如果一個(gè)數(shù)向右移5位,這就與將此數(shù)除以32(即25)相同。余數(shù)被舍去,而只使用商。
參考表3,如果自適應(yīng)值p等于零,則K被更新并由K減少一整數(shù)常數(shù)B3來替換。如果自適應(yīng)值p等于一,則K不變。如果自適應(yīng)值p大于一,則K被更新并由K減少自適應(yīng)值p來替換。
如果p的自適應(yīng)值等于一,這意味著u值接近于2k,且就是對(duì)它們而言參數(shù)k是正確的那些值。因此,如表3所示,沒有變化。如果自適應(yīng)值p的值是0,這意味著輸入值小于2k。即要開始減少k(因?yàn)檩斎胫敌∮?k)。自適應(yīng)值p大于1的情況是不太可能的,因?yàn)檩斎胫挡豢赡芊浅4蟆5绻麛?shù)字是大的且p>1,則要開始增加k參數(shù)。
自適應(yīng)G/R編碼器圖9是示出圖2和4所示自適應(yīng)G/R編碼器200的編碼細(xì)節(jié)的工作示例,包括G/R參數(shù)k自適應(yīng)規(guī)則。該過程開始(框905)于讀取輸入值u(框910)。自適應(yīng)G/R編碼器200的兩個(gè)主要過程是G/R編碼(框915)和G/R參數(shù)自適應(yīng)(框920)。
G/R編碼過程915始于計(jì)算自適應(yīng)值p和v(框925)。向比特流追加等于一的p個(gè)比特(框930)。v的k位二進(jìn)制值則被追加在該比特流后(框935)。這些操作包括如表1所定義的自適應(yīng)Golomb/Rice編碼器。
G/R參數(shù)自適應(yīng)過程920包括確定自適應(yīng)值p是否等于一(框940)。如果是,則自適應(yīng)值p保持不變(點(diǎn)945)。否則,做出關(guān)于自適應(yīng)值p是否等于零的另一判斷(框950)。如果不是,則K被更新并用K減少一整數(shù)常數(shù)B3來替換(框955)。否則,K被更新并用K增加自適應(yīng)值p來替換(框960)。最后,該過程設(shè)置k等于K除以L(框965),并且該過程結(jié)束(框970)。
結(jié)果該工作示例的自適應(yīng)G/R編解碼器和方法已在圖像、音頻和地圖數(shù)據(jù)壓縮的應(yīng)用中實(shí)現(xiàn)。在這些應(yīng)用中使用自適應(yīng)G/R編解碼器和方法的結(jié)果是壓縮比可與最復(fù)雜熵編碼器相比,但以更簡(jiǎn)單的實(shí)現(xiàn)方式。
特別地,對(duì)于用于整數(shù)數(shù)據(jù)的現(xiàn)有熵編碼器,自適應(yīng)G/R編解碼器和方法對(duì)于大量如圖1中的源碼元概率分布達(dá)到了接近于理論最大值(由源熵所規(guī)定的)壓縮比。作為示例,眾所周知的Golomb/Rice和Huffman編碼器只對(duì)于每碼元1個(gè)比特或更高些的源熵有效。
VIII.解碼自適應(yīng)G/R編解碼器和方法還包括可基于上述編碼器精確實(shí)現(xiàn)的解碼器。參考圖2B,計(jì)算設(shè)備(框250)可以只實(shí)現(xiàn)G/R解碼器240。自適應(yīng)G/R解碼器240和方法從已編碼比特流接收碼字(框230)。接著,自適應(yīng)G/R解碼器240通過應(yīng)用上文對(duì)于自適應(yīng)G/R編碼器200所述的逆規(guī)則來解碼碼字。接下來,G/R參數(shù)使用與自適應(yīng)G/R編碼器的規(guī)則完全相同的規(guī)則來自適應(yīng)。最后,輸出解碼后的(或重建的)整數(shù)數(shù)據(jù)(框260)。
由于編碼規(guī)則是唯一可解碼的,且解碼器的自適應(yīng)規(guī)則與編碼器的相同,因此前面描述的編碼規(guī)則和自適應(yīng)規(guī)則也精確地描述了解碼器的操作。
本發(fā)明的以上描述已為說明和描述之途而給出。它并不旨在窮盡本發(fā)明或?qū)⒈景l(fā)明限于所公開的精確形式。各種修改和變體鑒于以上示教都是可能的。本發(fā)明范圍不受本發(fā)明詳細(xì)描述所限,而只受所附權(quán)利要求書所限。
權(quán)利要求
1.一種用于處理數(shù)字?jǐn)?shù)據(jù)的方法,其特征在于,包括使用Golomb/Rice(G/R)參數(shù)編碼所述數(shù)字?jǐn)?shù)據(jù)的輸入值以生成所述輸入值的碼字;在生成所述碼字后使用具有自適應(yīng)規(guī)則的后向自適應(yīng)技術(shù)來更新G/R參數(shù);以及對(duì)所述數(shù)字?jǐn)?shù)據(jù)的每個(gè)值重復(fù)所述編碼和更新。
2.如權(quán)利要求1所述的方法,其特征在于,還包括定義一自適應(yīng)值;以及當(dāng)所述自適應(yīng)值等于零時(shí),減少所述G/R參數(shù)。
3.如權(quán)利要求2所述的方法,其特征在于,還包括當(dāng)所述自適應(yīng)值等于零時(shí),使所述G/R參數(shù)減少一整數(shù)常數(shù)。
4.如權(quán)利要求2所述的方法,其特征在于,還包括當(dāng)所述自適應(yīng)值等于一時(shí),保持所述G/R參數(shù)不變。
5.如權(quán)利要求4所述的方法,其特征在于,還包括當(dāng)所述自適應(yīng)值大于一時(shí),增加所述G/R參數(shù)。
6.如權(quán)利要求5所述的方法,其特征在于,還包括當(dāng)所述自適應(yīng)值大于一時(shí),使所述G/R參數(shù)增加所述自適應(yīng)值。
7.如權(quán)利要求1所述的方法,其特征在于,還包括定義一比例縮放參數(shù);以及定義一經(jīng)比例縮放的G/R參數(shù)為等于所述G/R參數(shù)乘以所述比例縮放參數(shù)。
8.如權(quán)利要求7所述的方法,其特征在于,還包括在生成所述碼字后,通過使用具有自適應(yīng)規(guī)則的后向自適應(yīng)技術(shù)更新所述經(jīng)比例縮放的G/R參數(shù)而非所述G/R參數(shù)。
9.如權(quán)利要求8所述的方法,其特征在于,還包括設(shè)置所述經(jīng)比例縮放的參數(shù)等于十六;以及基于所述數(shù)字?jǐn)?shù)據(jù)的衰減參數(shù)確定所述G/R參數(shù)的值。
10.如權(quán)利要求1所述的方法,其特征在于,所述數(shù)字?jǐn)?shù)據(jù)還包括具有如下值的整數(shù)向量(a)對(duì)于每個(gè)值為零的最可能值;以及(b)非零值,它具有按所述非零值增加而減少的概率。
11.一種具有用于執(zhí)行如權(quán)利要求1所述的計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀介質(zhì)。
12.一種具有用于編碼具有整數(shù)值的數(shù)字整數(shù)數(shù)據(jù)的計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀介質(zhì),其特征在于,包括使用自適應(yīng)Golomb/Rice(G/R)編碼和G/R參數(shù)k來編碼所述整數(shù)值的每一個(gè),以對(duì)所述整數(shù)值的每一個(gè)生成一碼字;使用所述G/R參數(shù)k來定義一經(jīng)比例縮放的G/R參數(shù)K;以及在生成每個(gè)碼字后使用后向自適應(yīng)規(guī)則來更新所述經(jīng)比例縮放的G/R參數(shù)K。
13.如權(quán)利要求12所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,還包括定義一比例參數(shù)L;以及定義所述經(jīng)比例縮放的G/R參數(shù)K為K=k乘以L。
14.如權(quán)利要求13所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,還包括設(shè)置所述經(jīng)比例縮放的參數(shù)等于是二的冪的值。
15.如權(quán)利要求12所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述數(shù)字整數(shù)數(shù)據(jù)還包括包含N個(gè)整數(shù)的向量x,且其中,所述向量x的每個(gè)元素x(n),其中n=0到N-1,具有這樣的概率分布最可能值為零且距零更遠(yuǎn)的值有著快速下降的概率。
16.如權(quán)利要求15所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述概率分布由以下公式給定P(x,θ)=1-θ1+θθ|x|]]>并且其中,參數(shù)θ控制當(dāng)x的絕對(duì)值增長(zhǎng)時(shí)概率的衰減速率。
17.如權(quán)利要求12所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,還包括定義一自適應(yīng)值p;以及當(dāng)p=0時(shí)用(K-B3)代替K,其中,B3是一整數(shù)常數(shù)。
18.如權(quán)利要求17所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,還包括當(dāng)p=1時(shí)保持K不變。
19.如權(quán)利要求18所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,還包括當(dāng)p>1時(shí)用(K+p)代替K。
20.如權(quán)利要求17所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,還包括定義一參數(shù)u,當(dāng)x>0時(shí)它為2x;定義u,當(dāng)x<0時(shí)它為-2x-1;以及定義p=u>>k,意指p等于u向右移k位。
21.一種用于編碼和解碼數(shù)字整數(shù)數(shù)據(jù)的計(jì)算機(jī)實(shí)現(xiàn)的過程,其特征在于,包括使用自適應(yīng)Golomb/Rice(G/R)編碼和G/R參數(shù)k來編碼所述數(shù)字整數(shù)數(shù)據(jù)的每個(gè)值x;定義一經(jīng)比例縮放的G/R參數(shù)為K=k*L,其中L是比例縮放參數(shù);在編碼了所述數(shù)字整數(shù)數(shù)據(jù)的每個(gè)值x后,使用具有自適應(yīng)規(guī)則的后向自適應(yīng)技術(shù)來更新所述經(jīng)比例縮放G/R參數(shù)K;將所述數(shù)字整數(shù)數(shù)據(jù)的已編碼值追加到比特流中;以及使用G/R解碼器解碼所述比特流,來精確恢復(fù)所述數(shù)字整數(shù)數(shù)據(jù)的每個(gè)值x。
22.如權(quán)利要求21所述的計(jì)算機(jī)實(shí)現(xiàn)的過程,其特征在于,還包括當(dāng)x>0時(shí)用映射參數(shù)u=2x代替x;當(dāng)x<0時(shí)用u=-2x-1代替x;以及定義一自適應(yīng)參數(shù)p為u向右移k位,p=u>>k。
23.如權(quán)利要求22所述的計(jì)算機(jī)實(shí)現(xiàn)的過程,其特征在于,所述自適應(yīng)規(guī)則還包括當(dāng)p=0時(shí)用(K-B3)代替K,其中B3是一整數(shù)常數(shù)。
24.如權(quán)利要求23所述的計(jì)算機(jī)實(shí)現(xiàn)的過程,其特征在于,所述自適應(yīng)規(guī)則還包括當(dāng)p=1時(shí)保持K不變。
25.如權(quán)利要求24所述的計(jì)算機(jī)實(shí)現(xiàn)的過程,其特征在于,所述自適應(yīng)規(guī)則還包括當(dāng)p>1時(shí)用(K+P)代替K。
26.一個(gè)或多個(gè)其上具有計(jì)算機(jī)可讀指令的計(jì)算機(jī)可讀介質(zhì),當(dāng)由一個(gè)或多個(gè)處理器執(zhí)行所述指令時(shí),使一個(gè)或多個(gè)處理器實(shí)現(xiàn)如權(quán)利要求21所述的計(jì)算機(jī)實(shí)現(xiàn)的過程。
27.一種用于編碼包含整數(shù)值的數(shù)字整數(shù)數(shù)據(jù)的自適應(yīng)Golomb/Rice(G/R)編碼器,其特征在于,包括一具有G/R參數(shù)k的Golomb/Rice(G/R)編碼器,用于編碼所述整數(shù)值;以及一用于在編碼了所述整數(shù)值的每一個(gè)后使用具有自適應(yīng)規(guī)則的后向自適應(yīng)技術(shù)來更新G/R參數(shù)k的裝置。
28.如權(quán)利要求27所述的自適應(yīng)G/R編碼器,其特征在于,所述自適應(yīng)規(guī)則還包括一用于如下更新所述G/R參數(shù)k的裝置定義一自適應(yīng)值p;當(dāng)p=0時(shí)使k減少一整數(shù)常數(shù);當(dāng)p=1時(shí)保持k不變,以及當(dāng)p>1時(shí)使k增加p。
29.如權(quán)利要求28所述的自適應(yīng)G/R編碼器,其特征在于,還包括一用于如下定義經(jīng)比例縮放的G/R參數(shù)K的裝置定義一比例參數(shù)L;定義S=s*L;以及定義K=k*L。
30.如權(quán)利要求29所述的自適應(yīng)G/R編碼器,其特征在于,還包括一用于用所述自適應(yīng)規(guī)則更新K而非k的裝置。
31.一種用于解碼已編碼比特流的方法,其特征在于,包括從所述已編碼比特流接收一碼字;用一Go1omb/Rice(G/R)參數(shù)解碼所述碼字;在解碼所述代碼字后使用具有自適應(yīng)規(guī)則的后向自適應(yīng)技術(shù)來更新所述G/R參數(shù);以及對(duì)所述已編碼比特流的每個(gè)碼字重復(fù)所述解碼和更新過程,以恢復(fù)重建的數(shù)字?jǐn)?shù)據(jù)。
32.如權(quán)利要求31所述的方法,其特征在于,還包括定義一自適應(yīng)值;當(dāng)所述自適應(yīng)值等于零時(shí)減少所述G/R參數(shù);當(dāng)所述自適應(yīng)值等于一時(shí)保持所述G/R參數(shù)不變;以及當(dāng)所述自適應(yīng)值大于一時(shí)增加所述G/R參數(shù)。
33.如權(quán)利要求32所述的方法,其特征在于,還包括當(dāng)所述自適應(yīng)值等于零時(shí)使所述G/R參數(shù)減少一整數(shù)常數(shù)。
34.如權(quán)利要求32所述的方法,其特征在于,還包括當(dāng)所述自適應(yīng)值大于一時(shí)使所述G/R參數(shù)增加所述自適應(yīng)值。
35.如權(quán)利要求31所述的方法,其特征在于,還包括定義一比例縮放參數(shù);以及定義一經(jīng)比例縮放的G/R參數(shù)為等于所述G/R參數(shù)乘以所述比例縮放參數(shù)。
36.一種具有用于執(zhí)行如權(quán)利要求31所述的方法的計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀介質(zhì)。
37.一種用于解碼已由一編碼過程編碼為已編碼比特流的數(shù)字整數(shù)數(shù)據(jù)的過程,所述編碼過程使用一Golomb/Rice(G/R)參數(shù)來編碼所述數(shù)字整數(shù)數(shù)據(jù)的輸入值以生成所述輸入值的碼字、在生成所述碼字后使用具有自適應(yīng)規(guī)則的后向自適應(yīng)技術(shù)更新所述G/R參數(shù)、并對(duì)所述數(shù)字整數(shù)數(shù)據(jù)的每個(gè)輸入值重復(fù)所述編碼和更新,所述過程包括從所述已編碼比特流接收一串碼字;使用自適應(yīng)G/R解碼和G/R參數(shù)k來解碼每個(gè)碼字;用所述G/R參數(shù)k定義經(jīng)比例縮放的G/R參數(shù)K;以及在解碼每個(gè)碼字后使用所述具有自適應(yīng)規(guī)則的后向自適應(yīng)技術(shù)來更新所述經(jīng)比例縮放的G/R參數(shù)K。
38.如權(quán)利要求37所述的過程,其特征在于,還包括定義一自適應(yīng)值p;以及當(dāng)p=0時(shí)用(K-B3)代替所述經(jīng)比例縮放的G/R參數(shù)K,其中B3是一整數(shù)常數(shù)。
39.如權(quán)利要求37所述的過程,其特征在于,還包括當(dāng)p=1時(shí)保持所述經(jīng)比例縮放的G/R參數(shù)K不變。
40.如權(quán)利要求37所述的過程,其特征在于,還包括當(dāng)p>1時(shí)用(K+p)代替所述經(jīng)比例縮放的G/R參數(shù)K。
全文摘要
一種使用具有新穎的自適應(yīng)規(guī)則的新穎后向自適應(yīng)技術(shù)進(jìn)行整數(shù)數(shù)據(jù)的無損自適應(yīng)Golomb/Rice(G/R)編碼的方法和系統(tǒng)。該自適應(yīng)G/R編碼器和解碼器(編解碼器)及方法使用了在生成每個(gè)碼字后調(diào)整G/R參數(shù)的自適應(yīng)規(guī)則。這些自適應(yīng)規(guī)則包括定義一自適應(yīng)值并根據(jù)該自適應(yīng)值調(diào)整G/R參數(shù)。如果自適應(yīng)值等于零,則使G/R參數(shù)減少一整數(shù)常數(shù)。如果自適應(yīng)值等于一,則G/R參數(shù)保持不變。如果自適應(yīng)值大于一,則使G/R參數(shù)增加該自適應(yīng)值。此外,該自適應(yīng)G/R編碼器和方法包括小數(shù)自適應(yīng),它根據(jù)G/R參數(shù)定義了經(jīng)比例縮放的G/R參數(shù),并更新和調(diào)整該經(jīng)比例縮放的G/R參數(shù)來減慢自適應(yīng)速率。
文檔編號(hào)G06T9/00GK1783144SQ20051010888
公開日2006年6月7日 申請(qǐng)日期2005年9月29日 優(yōu)先權(quán)日2004年10月29日
發(fā)明者H·S·馬爾瓦 申請(qǐng)人:微軟公司