編碼器、解碼器和編碼解碼方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及編碼器,例如可采用直接ODelta算子的編碼器。此外,本發(fā)明涉及編 碼數(shù)據(jù)的方法,例如采用直接ODelta算子的數(shù)據(jù)編碼方法。此外,本發(fā)明還涉及用于對編 碼數(shù)據(jù)進行解碼的解碼器,例如采用逆ODelta算子的解碼器。此外,本發(fā)明涉及編碼數(shù)據(jù) 的解碼方法,例如采用逆ODelta算子對編碼數(shù)據(jù)進行解碼的方法。更進一步地,本發(fā)明涉 及記錄在非瞬時機器可讀的數(shù)據(jù)存儲介質(zhì)上的軟件產(chǎn)品,其中,軟件產(chǎn)品可在計算機硬件 上執(zhí)行來實現(xiàn)上述方法。
【背景技術(shù)】
[0002] 克勞德?香農(nóng)(ClaudeE.Shannon)提出了一種數(shù)學(xué)理論,它為現(xiàn)代通信系統(tǒng)提供 了基礎(chǔ)。此外,在上述數(shù)學(xué)理論知識上,產(chǎn)生了各種現(xiàn)代編碼方法。表1提供了一個概述當(dāng) 代技術(shù)知識的信息來源的列表。
[0003] 表1:已知技術(shù)
[0004]
[0006] 在歐洲專利EP1376974B1( "數(shù)據(jù)包報頭壓縮方法和裝置",申請人是Alcatel Lucent(FR)),描述了一種傳輸數(shù)據(jù)包的方法,其中數(shù)據(jù)包由包含壓縮值的字段(CF)組成。 所述壓縮值表示在兩個連續(xù)數(shù)據(jù)包之間不斷變化的值,并且包括一個預(yù)定義的間隔(以下 簡稱"解釋區(qū)間(interpretationinterval)")。方法包括以下步驟:
[0007] (i)如果要壓縮的值與預(yù)定義的回繞(wraparound)邊界之間的距離低于預(yù)設(shè)閾 值,給所述壓縮值追加一個附加位,所述附加位明確地表示該值被壓縮到回繞邊界的相對 位置;
[0008] (ii)在一個接收器中,根據(jù)所有接收到的壓縮值的比特位計算第一解釋區(qū)間;
[0009] (iii)如果第一解釋區(qū)間的不止一個值與接收到的壓縮值相匹配,用信號指示回 繞(wraparound);
[0010] (iv)在用信號指示回繞的時候,根據(jù)壓縮值的除所述附加位之外的所有接收到的 比特位計算第二解釋區(qū)間;
[0011] (v)使用附加位,在第二解釋區(qū)間消除解壓縮值的歧義。
[0012] 香農(nóng)熵(Shanonentropy)的定義是由表1中所列的P7和P8文件提供的。有許 多不同的壓縮方法,可以用于壓縮給定數(shù)據(jù)的熵,這些方法有時被用于修改熵,例如,為了 獲得給定數(shù)據(jù)的更大的無損壓縮率之目的;這種修改熵的方法包括,例如,在表1中P2文件 描述的行程長度編碼(RLE),表1中P1文件描述的可變長度編碼(Variable-lengthcode, VLC),表1中P3文件描述的哈夫曼編碼(Huffmancoding),表1中P6文件中描述的德爾塔 編碼(Deltaencoding),和表1中P4文件描述的算術(shù)編碼(Arithmeticcoding),也稱為 距離編碼(rangecoding)。這些方法有利于壓縮代表字母、數(shù)字、字節(jié)和字的數(shù)據(jù)。然而, 這些方法并不適用于壓縮比特級的給定數(shù)據(jù),并且由于這個原因這些方法不能很好的壓縮 那些容易一位一位地變化的給定數(shù)據(jù)。
[0013] 德爾塔編碼,例如表1中P6文件所述,可以從正數(shù)的原始數(shù)據(jù)值中生成增量值,這 些增量值可以是正數(shù)或者負數(shù)。此外,有一些德爾塔編碼的實現(xiàn)是基于所采用的數(shù)據(jù)元素 的尺寸而用于8位、16位或32位回繞。然而,目前缺乏針對8位、16位、32位以外環(huán)境而 優(yōu)化的德爾塔編碼器。特別是,當(dāng)編碼原始比特值時,也即"0"和" 1",現(xiàn)有德爾塔編碼器 是尤其低效的,例如逐位(一位一位地,bit-by-bit)編碼,它典型地形成三個不同的值,即 "_1"、"0"和 "1"。
[0014] 所有類型的數(shù)據(jù)都會占用存儲空間,當(dāng)數(shù)據(jù)從一個位置移到另一個位置時,需要 通信系統(tǒng)的傳輸容量。隨著數(shù)據(jù)量的增加,例如三維視頻內(nèi)容等多媒體的發(fā)展,相應(yīng)的需要 更多的存儲空間和傳輸容量來處理數(shù)據(jù),并且隨著數(shù)據(jù)量的增加還需要更多的能源。在全 球范圍內(nèi),被傳輸?shù)臄?shù)據(jù)量正在隨著時間不斷增加;例如,因特網(wǎng)包含大量的數(shù)據(jù),其中一 些存儲于多個副本。此外,有些方法可同時用于壓縮與數(shù)據(jù)相關(guān)的熵E,例如用在減少數(shù)據(jù) 的大小的時候。此外,也有一些用于修正熵的方法,例如德爾塔編碼和行程長度編碼,但是, 仍然需要改進的方法,來提供比當(dāng)前方法更大的數(shù)據(jù)壓縮。
[0015] 還有需要對已知的德爾塔編碼方法進行優(yōu)化的使用,來實現(xiàn)對原始數(shù)據(jù)更快、更 有效的編碼,例如逐位編碼,例如,在原始數(shù)據(jù)的數(shù)據(jù)元素中的所有值沒有被使用,和/或, 與德爾塔編碼方法相結(jié)合使用的之前或之后的編碼方法需要比初始動態(tài)用于待編碼的數(shù) 據(jù)的比特位更高的比特位格式。
【發(fā)明內(nèi)容】
[0016] 本發(fā)明旨在于提供一種德爾塔編碼器的改進形式,即一種"直接ODelta編碼器", 當(dāng)對個別比特進行編碼,即,以一位一位的方式進行編碼,以及對其它數(shù)據(jù)值進行時,這種 編碼器是更有效的。
[0017] 此外,本發(fā)明旨在于提供一種德爾塔編碼數(shù)據(jù)的改進方法,即一種直接ODelta編 碼數(shù)據(jù)的方法。
[0018] 此外,本發(fā)明旨在于提供一種用于解碼已編碼數(shù)據(jù)的改進的解碼器,例如ODelta 已編碼數(shù)據(jù),即一種逆ODelta解碼器。
[0019] 進一步地,本發(fā)明旨在于提供一種解碼已編碼數(shù)據(jù)的改進的方法,例如ODelta已 編碼數(shù)據(jù),即一種逆ODelta解碼數(shù)據(jù)的方法。
[0020] 根據(jù)第一個方面,提供了一種如權(quán)利要求1所述的編碼器:一種編碼器(10),用于 編碼輸入數(shù)據(jù)(D1)以生成相應(yīng)的已編碼輸出數(shù)據(jù)(D2或D3),所述輸入數(shù)據(jù)(D1)包括多個 數(shù)字值的序列,其特征在于,所述編碼器(10)包括數(shù)據(jù)處理裝置,用于對輸入數(shù)據(jù)(D1)進 行差分和/或總和形式的編碼的,以生成一個或多個相應(yīng)的已編碼序列,其中,所述一個或 多個相應(yīng)的已編碼序列受到一個圍繞最大值的回繞和/或一個圍繞最小值的回繞處理,生 成已編碼輸出數(shù)據(jù)(D2或D3)。
[0021] 優(yōu)選地,所述回繞(wraparound)用于避免在實施所述編碼器時產(chǎn)生負偏差或太 大的值。所述術(shù)語"數(shù)值"(numericalvalue)被解釋為包括個別比特位(二進制),和比 特組(比二進制更高的階)。
[0022] 本發(fā)明的有益效果在于,差分和/或總和編碼的結(jié)合,和所述回繞提供所述輸入 數(shù)據(jù)(D1)的有用的熵修正以生成所述已編碼數(shù)據(jù)(D2),能夠在一個給定的熵編碼器內(nèi)從 已編碼數(shù)據(jù)(2)生成已編碼數(shù)據(jù)(D3)時增強數(shù)據(jù)壓縮。
[0023] 可選地,所述數(shù)據(jù)處理裝置用于分析所述輸入數(shù)據(jù)(D1)和/或一個或多個相應(yīng)的 已編碼序列來計算一個或多個偏移值、最小值和/或最大值,用于所述一個或多個相應(yīng)的 已編碼序列,以生成所述已編碼輸出數(shù)據(jù)(D2或D3)。進一步可選地,所述一個或多個偏移 值有一個值。
[0024] 可選地,所述編碼器(10)用于處理包括一個或多個Ι-bit值的所述多個值,所述 編碼器(10)用于以一位一位方式編碼所述輸入數(shù)據(jù)(D1)。
[0025] 可選地,所述一個或多個相應(yīng)的已編碼序列代表在所述輸入數(shù)據(jù)(D1)的連續(xù)的 值中的變化。
[0026] 可選地,所述編碼器用于使用一個回繞值(wrapValue),其中所述回繞值是最大值 (highValue)-最小值(lowValue)+l。當(dāng)生成所述已編碼輸出數(shù)據(jù)(D2或D3)時,這樣的 回繞值被優(yōu)選地使用,以避免產(chǎn)生比所述最小值(lowValue)更小的值、負值、或比最大值 (highValue)更大的值。
[0027] 可選地,所述編碼器(10)用于將所述輸入數(shù)據(jù)(D1)細分為多個部分,所述多個部 分被單獨編碼。進一步可選地,所述編碼器(10)用于僅當(dāng)數(shù)據(jù)壓縮在所述已編碼輸出數(shù)據(jù) (D2或D3)中是可實現(xiàn)的時,對所述數(shù)據(jù)的部分有選擇地進行編碼。
[0028] 可選地,所述編碼器(10)用于為一系列預(yù)測值使用默認第一個預(yù)測值,所述預(yù)測 值用于生成所述輸出已編碼數(shù)據(jù)(D2或D3),其中所述已編碼數(shù)據(jù)通過使用輸入值、預(yù)測值 和編碼算子而生成。進一步可選地,所述默認第一個預(yù)測值為"〇"。進一步可選地,所述第一 個預(yù)測值由以下至少一種值的計算得到:最小值(lowValue)、最大值(highValue)、(最 大值(highValue) + 最小值(lowValue)+1)/2〇
[0029] 可選地,所述編碼器(10)應(yīng)用附加的編碼,以生成所述已編碼輸出數(shù)據(jù)(D2),其 中所述附加的編碼包括以下中的至少一個:行程長度編碼(RLE)、SRLE,熵修正(ΕΜ)、可變 長度編碼(VLC)、哈夫曼編碼、算術(shù)編碼、距離編碼。
[0030] 可選地,所述編碼器(10)用于根據(jù)其中互相類似的比特的行程長度將所述輸入 數(shù)據(jù)(D1)細分為多個部分,所述的類似的比特的行程長度在使用行程長度編碼(RLE)、 SRLE、熵修正(EM)、哈夫曼編碼、可變長度編碼(VLC)、距離編碼和/或算術(shù)編碼進行編碼時 是有效率的。
[0031] 可選地,所述處理裝置通過使用計算機硬件實現(xiàn),所述計算機硬件用于執(zhí)行一個 或多個記錄于非瞬時機器可讀的數(shù)據(jù)存儲介質(zhì)上的軟件產(chǎn)品。
[0032] 根據(jù)第二個方面,提供了一種使用編碼器(10)編碼輸入數(shù)據(jù)(D1)以生成相應(yīng)的 已編碼輸出數(shù)據(jù)(D2或D3)的方法,所述輸入數(shù)據(jù)(D1)包括多個值的序列,其特征在于,所 述方法包括:
[0033] (a)使用編碼器(10)的數(shù)據(jù)處理裝置,對輸入數(shù)據(jù)(D1)進行差分和/或總和形式 的編碼,以生成一個或多個相應(yīng)的已編碼序列;并且
[0034] (b)使用所述數(shù)據(jù)處理裝置,使得所述一個或多個相應(yīng)的已編碼序列受到一個圍 繞最大值的回繞和/或一個圍繞最小值的回繞處理,以生成所述已編碼輸出數(shù)據(jù)(D2或D3) 〇
[0035] 優(yōu)選地,所述回繞用于避免在實施所述編碼器時產(chǎn)生負偏差或太大的值。所述術(shù) 語"數(shù)值"(numericalvalue)被解釋為包括個別比特位(二進制),和比特組(比二進制 更高的階)。
[0036] 可選地,所述方法包括使用所述數(shù)據(jù)處理裝置來分析所述輸入數(shù)據(jù)(D1)和/或所 述一個或多個相應(yīng)的已編碼序列來計算一個或多個偏移值、最小值和/或最大值,用來作 用于所述一個或多個相應(yīng)的已編碼序列以生成所述已編碼輸出數(shù)據(jù)(D2或D3)。進一步可 選地,所述方法包括為一個或多個偏移值使用"〇"值。
[0037] 可選地,所述方法包括處理所述包括一個或多個Ι-bit值的多個值,并以一位一 位方式編碼所述輸入數(shù)據(jù)(D1)。進一步可選地,所述方法包括為一個或多個偏移值使用 "0" 值。
[0038] 可選地,當(dāng)實施所述方法時,所述一個或多個相應(yīng)的已編碼序列代表所述輸入數(shù) 據(jù)(D1)的連續(xù)的值的變化。
[0039] 可選地,所述方法包括執(zhí)行所述編碼器以使用一個回繞值(wrapValue),所述回 繞值是最大值(highValue)-最小值(lowValue)+1。當(dāng)生成所述已編碼輸出數(shù)據(jù)(D2或 D3)時,這樣的回繞被優(yōu)選地使用,以避免產(chǎn)生比所述最小值(lowValue)更小的值、負值、 或比最大值(highValue)更大的值。
[0040] 可選地,所述方法包括將所述輸入數(shù)據(jù)(D1)細分為多個部分,所述多個部分被單 獨編碼。進一步可選地,所述方法包括僅當(dāng)數(shù)據(jù)壓縮在所述已編碼輸出數(shù)據(jù)(D2或D3)中 是可實現(xiàn)的時,對所述數(shù)據(jù)的部分有選擇地進行編碼。
[0041] 可選地,所述方法包括為一系列預(yù)測值使用默認第一個預(yù)測值,所述預(yù)測值用于 生成所述輸出已編碼數(shù)據(jù)(D2或D3),其中所述已編碼數(shù)據(jù)通過使用輸入值、預(yù)測值和編碼 算子而生成。進一步可選地,在所述方法中,所述默認第一個預(yù)測值為"0"。進一步可選地, 所述方法包括由以下至少一種值的計算得到所述第一個預(yù)測值:最小值(lowValue)、最大 值(highValue)、(最大值(highValue) + 最小值(lowValue)+1)/2〇
[0042] 可選地,所述方法包括應(yīng)用附加的編碼,以生成所述已編碼輸出數(shù)據(jù)(D2),其中所 述附加的編碼包括以下中的至少一個:行程長度編碼(RLE)、SRLE、熵修正(EM)、可變長度 編碼(VLC)、哈夫曼編碼、算術(shù)編碼、距離編碼。
[0043] 進一步可選地,所述方法包括根據(jù)其中互相類似的比特的行程長度將所述輸入數(shù) 據(jù)(D1)細分為多個部分,所述的類似的比特的行程長度在使用行程長度編碼(RLE)、SRLE、 熵修正(EM)、哈夫曼編碼、可變長度編碼(VLC)、距離編碼和/或算術(shù)編碼進行編碼時是有 效率的。
[0044] 進一步可選地,所述方法包括通過使用計算機硬件實現(xiàn)所述處理裝置,所述計算 機硬件用于執(zhí)行一個或多個記錄于非瞬時機器可讀的數(shù)據(jù)存儲介質(zhì)上的軟件產(chǎn)品。
[0045]根據(jù)第三個方面,提供了一種解碼器(20),用于解碼已編碼數(shù)據(jù)(D2、D3或D4)以 生成相應(yīng)的已解碼輸出數(shù)據(jù)(D5),其特征在于,所述解碼器(20)包括數(shù)據(jù)處理裝置,用于 處理已編碼數(shù)據(jù)(D2、D3或D