專利名稱:用于對比特序列進(jìn)行編碼的方法和設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種用于對比特序列進(jìn)行編碼的方法和設(shè)備。
背景技術(shù):
例如,根據(jù)對數(shù)字多媒體內(nèi)容(如音頻、視頻或其組合)或伴隨這種內(nèi)容的輔助信
息進(jìn)行編碼產(chǎn)生了比特序列。為了高效地使用存儲器容量和傳輸帶寬,對這種比特序列進(jìn)
行編碼以得到編碼后的內(nèi)容和輔助信息中至少一個的緊湊表示是至關(guān)重要的。
還可以將不是僅由0或僅由1組成的普通比特序列的每個比特序列理解為由與
一個或更多1的游程(rim)交替的一個或更多0的游程組成,其中,每個游程是一個或更多
等值的比特的連續(xù)子序列,該游程緊鄰在分別具有不同的比特值的另一比特游程之前或之
后,只要該另一比特游程既不正好是比特序列的第一個游程也不正好是最后一個游程。 在比特序列中,具有第一可能比特值的比特和具有不同的第二可能比特值的比特
通常以顯著不同的頻率出現(xiàn),例如,0很可能多于1,反之亦然。從而,比特序列的熵小于該
比特序列中所包括的比特?cái)?shù)目。 如果是這樣,比特序列中便存在可以通過無損壓縮移除的冗余。
眾所周知,使用熵編碼方法來對比特序列進(jìn)行無損壓縮?;旧希腥N熵編碼方 法(l)可變長度編碼(VLC),如哈夫曼編碼,(2)算術(shù)編碼,以及(3)基于字典的壓縮,如 L卿el-Ziv壓縮或L卿el-Ziv-Welch壓縮。 熵編碼的效果在于,壓縮后的比特序列的熵和壓縮后的比特序列中所包括的比特
數(shù)目之間的差值小于壓縮前的比特序列的熵和其中所包括比特?cái)?shù)目之間的差值。 本領(lǐng)域中繼續(xù)努力來尋找原則上適于改進(jìn)編碼的備選方案。
發(fā)明內(nèi)容
為了實(shí)現(xiàn)這樣的改進(jìn),本發(fā)明提出了一種根據(jù)權(quán)利要求1的用于對比特序列進(jìn)行 編碼的方法以及一種根據(jù)權(quán)利要求7的相應(yīng)設(shè)備。 所述用于對比特序列進(jìn)行編碼的方法包括針對比特序列中包括的每個1游程, 產(chǎn)生各個l游程的長度的一元表示;通過將所產(chǎn)生的l游程的長度的一元表示拼接起來,產(chǎn) 生第一序列(RLS1);針對比特序列中包括的每個O游程,產(chǎn)生各個O游程的長度的一元表 示;通過將所產(chǎn)生的O游程的長度的一元表示拼接起來,產(chǎn)生第二序列(RLS0);以及對所產(chǎn) 生的第一序列和第二序列進(jìn)行比特平面編碼。 在多數(shù)情況下,游程長度的一元表示的比特平面的總熵小于比特序列的熵。從而,
可以實(shí)現(xiàn)更緊湊的編碼。毫無疑問,比特平面的總熵將不會超過比特序列的熵。 在實(shí)施例中,對所述第一序列的比特平面和所述第二序列的比特平面進(jìn)行分離地編碼。 在另一實(shí)施例中,比特平面編碼包括在比特平面中產(chǎn)生1游程的長度的一元表 示的第三序列;在所述比特平面中產(chǎn)生O游程的長度的一元表示的第四序列;以及對所產(chǎn)生的一元表示的第三序列和第四序列進(jìn)行比特平面編碼。 在又一實(shí)施例中,該方法還包括或者單獨(dú)包括以下步驟(a)接收所述比特序列 的當(dāng)前比特,(b)接收所述比特序列的下個比特,(c)如果該下個比特具有優(yōu)選的可能比 特值,則輸出具有與該當(dāng)前比特的值不同的值的比特,否則,輸出具有該當(dāng)前比特的值的比 特,(d)重復(fù)步驟(b)和(c),直到到達(dá)比特序列的結(jié)尾為止,其中,將所述下個比特用作當(dāng) 前比特,以及(e)對所輸出的比特進(jìn)行編碼。 在該方法的所述又一實(shí)施例中,如果當(dāng)前比特具有所述優(yōu)選的可能比特值,則向 輔助序列輸出比特,否則,向另一輔助序列輸出比特。 輔助序列和另一輔助序列分別可以包括與游程中比特的不同的可能位置相對應(yīng) 的子序列。然后,該方法的又一實(shí)施例還包括向與當(dāng)前比特和當(dāng)前游程中當(dāng)前比特的位置 相對應(yīng)的子序列之一輸出比特。 本發(fā)明還提出了一種根據(jù)權(quán)利要求5的用于來自編碼后的第一比特平面和第二 比特平面的比特序列進(jìn)行解碼的方法和一種根據(jù)權(quán)利要求8的相應(yīng)的設(shè)備。
所述用于形成比特序列的方法包括以下步驟對第一比特平面進(jìn)行解碼,產(chǎn)生一 元表示的第一序列;對第二比特平面進(jìn)行解碼,產(chǎn)生一元表示的第二序列;使用所述第一 序列來產(chǎn)生1的游程,其中,針對包括在所述第一序列中的每個一元表示,產(chǎn)生相應(yīng)長度的 1的游程;使用所述第二序列產(chǎn)生0的游程,其中,針對包括在所述第二序列中的每個一元 表示,產(chǎn)生相應(yīng)長度的0的游程;以及通過將所產(chǎn)生的0的游程和所產(chǎn)生的1的游程進(jìn)行交 替,來形成比特序列。 在實(shí)施例中,所述解碼方法包括以下步驟(a)使用優(yōu)選的可能比特值作為當(dāng)前 值,(b)接收所述比特序列的當(dāng)前比特,(C)輸出具有所述當(dāng)前值的比特,(d)如果當(dāng)前比特 具有所述優(yōu)選的可能比特值,則改變所述當(dāng)前值,以及(e)重復(fù)步驟(b)-(d)。
在附圖中示出了本發(fā)明的示例性實(shí)施例,并在下面的描述中進(jìn)行更加詳細(xì)的解 釋。
在附圖中 圖1示出了第一示例輸入序列、示例游程長度序列、其它示例游程長度序列、以及 在本發(fā)明方法的示例實(shí)施例的應(yīng)用過程中產(chǎn)生的示例比特平面的第一和第二集合,
圖2示出了又一示例游程長度序列以及在本發(fā)明方法的示例實(shí)施例的迭代應(yīng)用 過程中產(chǎn)生的又一示例比特平面序列,以及 圖3示出了第二示例輸入序列,以及在本發(fā)明方法的示例實(shí)施例的應(yīng)用過程中產(chǎn) 生的其它示例游程長度序列。
具體實(shí)施例方式
在圖1中,示出了長度為30比特的第一示例輸入比特序列BS。 在圖1的示例中,O和1在BS以相同的頻率出現(xiàn),即,BS中有15個0和15個1。
可以如下計(jì)算第一示例輸入比特序列BS的熵 H(B) = _15*log2 (15/30) _15*log2 (15/30) =30
因而,看似好像需要30比特來表示BS。 然而,從第一示例輸入比特序列BS中,可以形成示例的游程長度序列RLS,其中,可以從RLS中重構(gòu)BS。 示例性地,可以從以下方法的輸出比特中形成RLS :(a)接收所述輸入比特序列BS的當(dāng)前比特,(b)接收所述輸入比特序列BS的下個比特,(c)如果該下個比特具有優(yōu)選的可能比特值(在本示例中是l),則輸出具有與該當(dāng)前比特的值不同的值的比特,否則,輸出具有當(dāng)前比特的值的比特,(d)重復(fù)步驟(b)和(c),直到到達(dá)該比特序列的結(jié)尾為止,其中,將所述下個比特用作當(dāng)前比特。 對于BS中緊鄰1之前的每個0在RLS中存在一個1。此外,對于BS中緊鄰l之前的每個在RLS中存在一個0。 由于BS包括8個緊鄰1之前的0并且僅包括7個緊鄰1之前的1,在BS和RLS中0和1以不同的頻率出現(xiàn)。 S卩,在RLS中僅有14個0但有16個1。因此,RLS的熵是
H(RLS) =-14*log2 (14/30)-16*log2 (16/30) = 29.90376
因此,為了表示RLS,仍需要30個比特。 可以從RLS中形成兩個其它示例游程長度序列,在步驟(c)中如果當(dāng)前比特具有所述優(yōu)選的可能比特值,則向第一其它游程長度序列輸出比特,否則,向第二其它游程長度序列輸出比特。 第一其它游程長度序列RLSO包括BS中相應(yīng)的比特是O的RLS中的那些比特。以及,第二其它游程長度序列RLS1包括BS中相應(yīng)的比特是1的RLS中的那些比特。
從RLSO中產(chǎn)生三個示例比特平面CSOl、 CS02和CS03的第一集合。
CS01包含RLSO中緊鄰其之前不是0值比特的那些比特。 CS02包含RLSO中緊鄰其之前的是被分到CS01中的0值比特的那些比特。從而,CS02中包含的比特?cái)?shù)目與CS01中包括的0的數(shù)目相等。 最后,CS03包含RLSO中緊鄰其之前的是被選到CS02中的0值比特的那些比特。就CS02而言,CS03中包含的比特?cái)?shù)目與CS02中包括的0的數(shù)目相等。
由于CS03不包含任何0,因此沒有CS04。 CS01、CS02和CS03可以是由CS01、CS02和CS03的拼接組成的附加輔助比特序列
的子序列。第一集合的總熵是 H(CS01)+H(CS02)+H(CS03) = 11.2451 以相同的方式,從RLS1中產(chǎn)生四個示例比特平面CS11、CS12、CS13和CS14的第二
隹A朱n o 第二集合的總熵是H(CS11)+H(CS12)+H(CS13)+H (CS14) = 10.39036 因此,雖然從第一集合和第二集合中仍然能夠重構(gòu)BS,第一集合和第二集合總的熵遠(yuǎn)小于BS的熵。 可將該原則應(yīng)用到迭代中。即,可將CS01和CS11中的至少一個視作輸入序列。在圖2中示例性地對此進(jìn)行了描述。從CS01和CS11中形成序列0RLS和1RLS。將ORLS和1RLS的比特分成兩個序列對,即0RLS0、0RLS1、1RLS0和1RLS1。將0RLS0、0RLS1、 1RLS0和1RLS1的比特分到不同的上下文中。 將0RLS0的比特分到上下文0CS01、0CS02和0CS03中,而將0RLS1的比特分到上下文0CS11和0CS12中。 以及,將1RLS0的比特分到上下文1CS01和1CS02中,而將1RLS1的比特分到上下文1CS11、1CS12和1CS13中。 因此,通過0CS01、0CS02、0CS03、0CS11和0CS12來代替CSOl。以及通過ICSOI、1CS02、1CS11、1CS12和1CS13來代替CSll。 因此,通過CS02、 CS03、 CS12、 CS13、 CS14、0CS01、0CS02、0CS03、0CS11、0CS12、1CS01、1CS02、1CS11、1CS12和1CS13來表示BS。借助于這些比特平面序列,該BS表示的總熵是15. 509775,并從而幾乎是原來BS的熵的一半。 例如,通過使用基于上下文的熵編碼或比特平面編碼來至少將熵降低開發(fā)到一定程度,以對這些比特平面序列進(jìn)一步壓縮。例如,可以使用基于上下文的算術(shù)編碼、基于上下文的哈夫曼編碼或基于字典的壓縮。 雖然熵只是對編碼性能的粗略估計(jì),但例如算術(shù)編碼可以特別是在輸入數(shù)據(jù)的大小足夠大(如,1024比特)時(shí)幾乎實(shí)現(xiàn)熵。 本發(fā)明開發(fā)了,在多數(shù)序列中,連續(xù)O和連續(xù)1的數(shù)目是高度相關(guān)的。 可以將所提出的方法與任何傳統(tǒng)的熵編碼方法一起使用。可將一些標(biāo)記位插入比
特流中,以指示是否直接將熵編碼方法應(yīng)用于比特序列,或者是否在所提出的方法過程中
使用熵編碼方法。 在圖3中,示出了長度為30比特的第二示例輸入比特序列BS'。同樣,O和1在BS'中以同樣頻率出現(xiàn),S卩,BS'中有15個0和15個1。因此,第二示例輸入比特序列BS'的熵是30,而且BS'看起來好像不能被進(jìn)一步壓縮。 但是,如果以和從BS中形成游程長度序列RLS相同的方式,從該第二示例輸入比
特流BS'中形成另一個游程長度序列RS',則通過形成RLS'已經(jīng)實(shí)現(xiàn)了顯著的熵降低。 即,RLS,僅包括6個O,卻包括24個l,并具有21. 65784的熵。 借助于字典,將序列1111映射成l,將序列1001映射成Ol,將序列1110映射成
001上,以及將序列11映射成0001上(作為用于表示最后兩個比特的終止序列),可以將
RLS'變換成僅由17個比特(8個1和9個0)組成的、熵大約為16. 96的壓縮后的輸出序列
C0S,。 輸入比特序列BS可以是要被壓縮的較長比特序列中所包括的序列,或者可以是要被壓縮的整個比特序列。 對于要被壓縮的長比特序列來說,存在所提出的本發(fā)明的實(shí)施例,允許將比特序列逐比特地變換成游程長度序列。即,可以存在連接至順序地產(chǎn)生比特序列的比特的第一編碼器的變換設(shè)備,該變換設(shè)備接收這些產(chǎn)生的比特并針對每個接收到的比特輸出輸出比特。因此,可以在僅有l(wèi)比特等待時(shí)間的情況下,在運(yùn)行中將比特序列變換成游程長度序列。 所述變換設(shè)備包括用于接收序列BS、BS'的比特的裝置,用于向?qū)敵龅谋忍剡M(jìn)行編碼的第二編碼器輸出比特的裝置。用于輸出比特的裝置是適用于,使得輸出的比特的值取決于先前接收到的比特和當(dāng)前接收到的比特的值,其中,先前接收到的比特在比特序
7列BS、BS'中緊鄰當(dāng)前接收到的比特之前。即,如果當(dāng)前接收到的比特具有優(yōu)選的可能比特值,則輸出的比特具有與先前接收到的比特的值不同的值,否則,輸出的比特具有先前接收到的比特的值。該設(shè)備適用于在輸出比特后使用當(dāng)前接收到的比特作為先前接收到的比特,并適用于重復(fù)進(jìn)行比特的接收并輸出比特,直到到達(dá)比特序列BS的結(jié)尾為止。因此,針對每個先前接收到的比特,都有相應(yīng)的輸出比特。對比特序列的最后比特而言,所述沒有隨后比特的最后比特因而永遠(yuǎn)不會是先前接收到的比特,設(shè)備輸出具有所述優(yōu)選的可能比特值的比特。 設(shè)備可以包括其值被初始化為1的計(jì)數(shù)器,其中,如果先前接收到的比特的值等于當(dāng)前接收到的比特的值,則計(jì)數(shù)器值增加1,以及如果先前接收到的比特的值與當(dāng)前接收到的比特的值不同,將計(jì)數(shù)器值重置到1。 然后,第二編碼器可以適用于對輸出的比特進(jìn)行基于上下文的算術(shù)編碼,其中,通過相應(yīng)的先前接收到的比特的值和計(jì)數(shù)器值中的至少一個來限定輸出比特的上下文。
權(quán)利要求
一種用于對比特序列(BS)進(jìn)行編碼的方法,所述方法包括-針對比特序列(BS)中包括的每個1的游程,產(chǎn)生各個1的游程的長度的一元表示,-通過將所產(chǎn)生的1的游程的長度的一元表示拼接起來,產(chǎn)生第一序列(RLS1),-針對比特序列(BS)中包括的每個0的游程,產(chǎn)生各個0的游程的長度的一元表示,-通過將所產(chǎn)生的0的游程的長度的一元表示拼接起來,產(chǎn)生第二序列(RLS0),以及-對所產(chǎn)生的第一序列(RLS1)和第二序列(RLS0)進(jìn)行比特平面編碼。
2. 根據(jù)權(quán)利要求l所述的方法,其中所述第一序列(RLS1)的比特平面和所述第二序列(RLSO)的比特平面是分離地編碼的。
3. 根據(jù)權(quán)利要求1或2所述的方法,其中,比特平面編碼包括 -在比特平面中產(chǎn)生l的游程的長度的一元表示的第三序列(0RLS1、1RLS1),-在所述比特平面中產(chǎn)生0的游程的長度的一元表示的第四序列(RLS0、1RLS0),以及 -對所產(chǎn)生的一元表示的第三序列和第四序列進(jìn)行比特平面編碼。
4. 根據(jù)前述權(quán)利要求中任一項(xiàng)所述的方法,所述方法包括以下步驟 -(a)接收所述比特序列(BS、BS')的當(dāng)前比特,-(b)接收所述比特序列(BS、BS')的下個比特,-(c)如果所述下個比特具有優(yōu)選的可能比特值,則輸出具有與當(dāng)前比特的值不同的值 的比特,否則,輸出具有所述當(dāng)前比特的值的比特,-(d)重復(fù)步驟(b)和(c),直到到達(dá)所述比特序列(BS)的結(jié)尾為止,其中,將所述下個 比特用作當(dāng)前比特,以及-(e)對輸出的比特(RLS、RLS')進(jìn)行壓縮。
5. —種用于從第一和第二編碼比特平面中形成比特序列的方法,所述方法包括以下步驟_對所述第一比特平面進(jìn)行解碼,以產(chǎn)生一元表示的第一序列, _對所述第二比特平面進(jìn)行解碼,以產(chǎn)生一元表示的第二序列,-使用所述第一序列產(chǎn)生1的游程,其中,針對所述第一序列中包括的每個一元表示, 產(chǎn)生相應(yīng)長度的1的游程,-使用所述第二序列產(chǎn)生O的游程,其中,針對所述第二序列中包括的每個一元表示, 產(chǎn)生相應(yīng)長度的0的游程,以及-通過將所產(chǎn)生的O的游程和所產(chǎn)生的1的游程進(jìn)行交替,來形成比特序列。
6. 根據(jù)權(quán)利要求5所述的方法,其中,所述方法包括以下步驟 -(a)使用優(yōu)選的可能比特值作為當(dāng)前值,-(b)接收所述比特序列的當(dāng)前比特, -(c)輸出具有所述當(dāng)前值的比特,-(d)如果所述當(dāng)前比特具有所述優(yōu)選的可能比特值,則改變所述當(dāng)前值,以及 -(e)重復(fù)步驟(b)-(d)。
7. —種用于對比特序列(BS)進(jìn)行編碼的設(shè)備,所述設(shè)備包括-產(chǎn)生裝置,用于針對比特序列(BS)中包括的每個l的游程,產(chǎn)生各個l的游程的長度 的一元表示,-所述產(chǎn)生裝置適用于,針對比特序列(BS)中包括的每個O的游程,產(chǎn)生各個O的游程 的長度的一元表示,-拼接裝置,用于通過將所產(chǎn)生的1的游程的長度的一元表示拼接起來,產(chǎn)生第一序列 (RLS1),-所述拼接裝置適用于,通過將所產(chǎn)生的0的游程的長度的一元表示拼接起來,產(chǎn)生第二序列(RLSO),以及-用于對所產(chǎn)生的一元表示的第一序列和第二序列進(jìn)行比特平面編碼的裝置。
8. —種用于從第一和第二編碼比特平面中解碼比特序列的設(shè)備,所述設(shè)備包括_解碼裝置,用于對所述第一比特平面進(jìn)行解碼,以產(chǎn)生一元表示的第一序列,_所述解碼裝置適用于,對所述第二比特平面進(jìn)行解碼,以產(chǎn)生一元表示的第二序列,-產(chǎn)生裝置,用于使用所述第一序列產(chǎn)生1的游程,其中,針對所述第一序列中包括的每個一元表示,產(chǎn)生相應(yīng)長度的1的游程,-所述產(chǎn)生裝置適用于,使用所述第二序列產(chǎn)生O的游程,其中,針對所述第二序列中包括的每個一元表示,產(chǎn)生相應(yīng)長度的0的游程,以及-用于通過將所產(chǎn)生的O的游程和所產(chǎn)生的1的游程進(jìn)行交替來形成比特序列的裝置。
全文摘要
本發(fā)明涉及用于對比特序列進(jìn)行編碼的方法和設(shè)備。所述方法包括針對比特序列(BS)中包括的每個1的游程,產(chǎn)生各個1的游程的長度的一元表示;通過將所產(chǎn)生的1的游程的長度的一元表示拼接起來,以產(chǎn)生第一序列(RLS1);針對比特序列(BS)中包括的每個0的游程,產(chǎn)生各個0的游程的長度的一元表示;通過將所產(chǎn)生的0的游程的長度的一元表示拼接起來,以產(chǎn)生第二序列(RLS0);以及對所產(chǎn)生的一元表示的第一序列(RLS1)和第二序列(RLS0)進(jìn)行比特平面編碼。在多數(shù)情況下,游程長度的一元表示的比特平面的總熵小于比特序列的熵。因此,可以實(shí)現(xiàn)更緊湊的編碼。
文檔編號H04N7/30GK101795407SQ201010004678
公開日2010年8月4日 申請日期2010年1月20日 優(yōu)先權(quán)日2009年1月30日
發(fā)明者滕軍, 蔡康穎, 陳志波, 陳衢清 申請人:湯姆森許可貿(mào)易公司