青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

幾種壓縮算法原理介紹

2006年1月12日RLE

RLE又叫Run Length Encoding,是一個針對無損壓縮的非常簡單的算法。它用重復字節(jié)和重復的次數(shù)來簡單描述來代替重復的字節(jié)。盡管簡單并且對于通常的壓縮非常低效,但它有的時候卻非常有用(例如,JPEG就使用它)。

1.1. 原理

2.1顯示了一個如何使用RLE算法來對一個數(shù)據(jù)流編碼的例子,其中出現(xiàn)六次的符號‘93’已經(jīng)用3個字節(jié)來代替:一個標記字節(jié)(‘0’在本例中)重復的次數(shù)(‘6’)和符號本身(‘93’)。

RLE解碼器遇到符號‘0的時候,它表明后面的兩個字節(jié)決定了需要輸出哪個符號以及輸出多少次。

1.2. 實現(xiàn)

RLE可以使用很多不同的方法。基本壓縮庫中詳細實現(xiàn)的方式是非常有效的一個。一個特殊的標記字節(jié)用來指示重復節(jié)的開始,而不是對于重復非重復節(jié)都coding run

因此非重復節(jié)可以有任意長度而不被控制字節(jié)打斷,除非指定的標記字節(jié)出現(xiàn)在非重復節(jié)(頂多以兩個字節(jié)來編碼)的稀有情況下。為了最優(yōu)化效率,標記字節(jié)應該是輸入流中最少出現(xiàn)的符號(或許就不存在)。

重復runs能夠在32768字節(jié)的時候運轉。少于129字節(jié)的要求3個字節(jié)編碼(標記+次數(shù)+符號),而大雨128字節(jié)要求四個字節(jié)(標記+次數(shù)的高4|0x80+次數(shù)的低4位)。這是通常所有采用的壓縮的做法,并且也是相比較三個字節(jié)固定編碼(允許使用3個字節(jié)來編碼256個字節(jié))而言非常少見的有損壓縮率的方法。

在這種模式下,最壞的壓縮結果是:

輸出大小=257/256*輸入大小+1

2.   哈夫曼

哈夫曼編碼是無損壓縮當中最好的方法。它使用預先二進制描述來替換每個符號,長度由特殊符號出現(xiàn)的頻率決定。常見的符號需要很少的位來表示,而不常見的符號需要很多為來表示。

哈夫曼算法在改變任何符號二進制編碼引起少量密集表現(xiàn)方面是最佳的。然而,它并不處理符號的順序和重復或序號的序列。

2.1. 原理

我不打算探究哈夫曼編碼的所有實際的細節(jié),但基本的原理是為每個符號找到新的二進制表示,從而通常符號使用很少的位,不常見的符號使用較多的位。

簡短的說,這個問題的解決方案是為了查找每個符號的通用程度,我們建立一個未壓縮數(shù)據(jù)的柱狀圖;通過遞歸拆分這個柱狀圖為兩部分來創(chuàng)建一個二叉樹,每個遞歸的一半應該和另一半具有同樣的權(權是NK =1符號數(shù)k, N是分之中符號的數(shù)量,符號數(shù)k是符號k出現(xiàn)的次數(shù)

這棵樹有兩個目的:

1.  編碼器使用這棵樹來找到每個符號最優(yōu)的表示方法

2.  解碼器使用這棵樹唯一的標識在壓縮流中每個編碼的開始和結束,其通過在讀壓縮數(shù)據(jù)位的時候自頂向底的遍歷樹,選擇基于數(shù)據(jù)流中的每個獨立位的分支,一旦一個到達葉子節(jié)點,解碼器知道一個完整的編碼已經(jīng)讀出來了。

我們來看一個例子會讓我們更清楚。圖2.2顯示了一個10個字節(jié)的未壓縮的數(shù)據(jù)。

根據(jù)符號頻率,哈夫曼編碼器生成哈夫曼樹(圖2.4)和相應的編碼表示(圖2.3)。

 

你可以看到,常見的符號接近根,因此只要少數(shù)位來表示。于是最終的壓縮數(shù)據(jù)流如圖2.5所示。

壓縮后的數(shù)據(jù)流是24位(三個字節(jié)),原來是80位(10個字節(jié))。當然,我應該存儲哈夫曼樹,這樣解碼器就能夠解碼出對應的壓縮流了,這就使得該例子中的真正數(shù)據(jù)流比輸入的流數(shù)據(jù)量大。這是相對較短的數(shù)據(jù)上的副作用。對于大數(shù)據(jù)量來說,上面的哈夫曼樹就不占太多比例了。

解碼的時候,從上到下遍歷樹,為壓縮的流選擇從左/右分支,每次碰到一個葉子節(jié)點的時候,就可以將對應的字節(jié)寫到解壓輸出流中,然后再從根開始遍歷。

2.2. 實現(xiàn)

哈夫曼編碼器可以在基本壓縮庫中找到,其是非常直接的實現(xiàn)。

這個實現(xiàn)的基本缺陷是:

1.  慢位流實現(xiàn)

2.  相當慢的解碼(比編碼慢)

3.  最大的樹深度是32(編碼器在任何超過32位大小的時候退出)。如果我不是搞錯的話,這是不可能的,除非輸出的數(shù)據(jù)大于232字節(jié)。

另一方面,這個實現(xiàn)有幾個優(yōu)點:

1.  哈夫曼樹以一個緊密的形式每個符號要求12位(對于8位的符號)的方式存儲,這意味著最大的頭為384

2.  編碼相當容易理解

哈夫曼編碼在數(shù)據(jù)有噪音的情況(不是有規(guī)律的,例如RLE)下非常好,這中情況下大多數(shù)基于字典方式的編碼器都有問題。

3.   Rice

對于由大word(例如:1632位)組成的數(shù)據(jù)和教低的數(shù)據(jù)值,Rice編碼能夠獲得較好的壓縮比。音頻和高動態(tài)變化的圖像都是這種類型的數(shù)據(jù),它們被某種預言預處理過(例如delta相鄰的采樣)。

盡管哈夫曼編碼處理這種數(shù)據(jù)是最優(yōu)的,卻由于幾個原因而不適合處理這種數(shù)據(jù)(例如:32位大小要求16GB的柱狀圖緩沖區(qū)來進行哈夫曼樹編碼)。因此一個比較動態(tài)的方式更適合由大word組成的數(shù)據(jù)。

3.1. 原理

Rice編碼背后的基本思想是盡可能的用較少的位來存儲多個字(正像使用哈夫曼編碼一樣)。實際上,有人可能想到Rice是靜態(tài)的哈夫曼編碼(例如,編碼不是由實際數(shù)據(jù)內容的統(tǒng)計信息決定,而是由小的值比高的值常見的假定決定)。

編碼非常簡單:將值XX個‘1’位之后跟一個0位來表示。

3.2. 實現(xiàn)

在基本壓縮庫針對Rice做了許多優(yōu)化:

1.  每個字最沒有意義的位被存儲為k和最有意義的N-k位用Rice編碼。K作為先前流中少許采樣的位平均數(shù)。這是通常最好使用Rice編碼的方法,隱藏噪音且對于動態(tài)變化的范圍并不導致非常長的Rice編碼。

2.  如果rice編碼比固定的開端長,T,一個可選的編碼:輸出T個‘1’位,緊跟(log2(X-T))個‘1’和一個‘0’位,接著是X-T(最沒有意義的(log2(X-T))-1位)。這對于大值來說都是比較高效的代碼并且阻止可笑的長Rice編碼(最壞的情況,對于一個32word單個Rice編碼可能變成232位或512MB)。

如果開端是4,下面是結果編碼表:

X

bin

Rice

Thresholded

Rice

0

00000

0

0

 

1

00001

10

10

 

2

00010

110

110

 

3

00011

1110

1110

 

4

00100

11110

11110

 

5

00101

111110

111110

 

6

00110

1111110

11111100

+1

7

00111

11111110

11111101

 

8

01000

111111110

1111111000

+1

9

01001

1111111110

1111111001

 

10

01010

11111111110

1111111010

-1

11

01011

111111111110

1111111011

-2

12

01100

1111111111110

111111110000

 

13

01101

11111111111110

111111110001

-1

14

01110

111111111111110

111111110010

-2

15

01111

1111111111111110

111111110011

-3

16

10000

11111111111111110

111111110100

-4

17

10001

111111111111111110

111111110101

-5

18

10010

1111111111111111110

111111110110

-6

19

10011

11111111111111111110

111111110111

-7

20

10100

111111111111111111110

11111111100000

-5

就像你看到的一樣,在這個實現(xiàn)中使用threshold方法僅僅兩個編碼導致一個最壞的情況;剩下的編碼產(chǎn)生比標準Rice編碼還要短的編碼。

3.  最壞的情況,輸出。

4.   Lempel-Ziv (LZ77)

Lempel-Ziv壓縮模式有許多不同的變量。基本壓縮庫有清晰的LZ77算法的實現(xiàn)(Lempel-Ziv1977),執(zhí)行的很好,源代碼也非常容易理解。

LZ編碼器能用來通用目標的壓縮,特別對于文本執(zhí)行的很好。它也在RLE和哈夫曼編碼器(RLELZ,哈夫曼)中使用來大多數(shù)情況下獲得更多的壓縮。

4.1. 原理

LZ壓縮算法的背后是使用RLE算法用先前出現(xiàn)的相同字節(jié)序列的引用來替代。

簡單的講,LZ算法被認為是字符串匹配的算法。例如:在一段文本中某字符串經(jīng)常出現(xiàn),并且可以通過前面文本中出現(xiàn)的字符串指針來表示。當然這個想法的前提是指針應該比字符串本身要短。

例如,在上一段短語“字符串”經(jīng)常出現(xiàn),可以將除第一個字符串之外的所有用第一個字符串引用來表示從而節(jié)省一些空間。

一個字符串引用通過下面的方式來表示:

1.  唯一的標記

2.  偏移數(shù)量

3.  字符串長度

由編碼的模式?jīng)Q定引用是一個固定的或變動的長度。后面的情況經(jīng)常是首選,因為它允許編碼器用引用的大小來交換字符串的大小(例如,如果字符串相當長,增加引用的長度可能是值得的)。

4.2. 實現(xiàn)

使用LZ77的一個問題是由于算法需要字符串匹配,對于每個輸入流的單個字節(jié),每個流中此字節(jié)前面的哪個字節(jié)都必須被作為字符串的開始從而盡可能的進行字符串匹配,這意味著算法非常慢。

另一個問題是為了最優(yōu)化壓縮而調整字符串引用的表示形式并不容易。例如,必須決定是否所有的引用和非壓縮字節(jié)應該在壓縮流中的字節(jié)邊界發(fā)生。

基本壓縮庫使用一個清晰的實現(xiàn)來保證所有的符號和引用是字節(jié)對齊的,因此犧牲了壓縮比率,并且字符串匹配程序并不是最優(yōu)化的(沒有緩存、歷史緩沖區(qū)或提高速度的小技巧),這意味著程序非常慢。

另一方面,解壓縮程序非常簡單。

一個提高LZ77速度的試驗已經(jīng)進行了,這個試驗中使用數(shù)組索引來加速字符串匹配的過程。然而,它還是比通常的壓縮程序慢。

posted on 2006-01-12 23:27 zmj 閱讀(4076) 評論(5)  編輯 收藏 引用

評論

# re: 幾種壓縮算法原理介紹 2007-07-29 15:10 hitjjg

very good!
  回復  更多評論   

# re: 幾種壓縮算法原理介紹 2007-08-04 08:38 lwef

垃圾!  回復  更多評論   

# re: 幾種壓縮算法原理介紹 2007-11-30 13:27 等待

純垃圾!  回復  更多評論   

# re: 幾種壓縮算法原理介紹 2008-06-03 13:03 sudo

什么內容都沒有,看這文章純粹是浪費時間。  回復  更多評論   

# re: 幾種壓縮算法原理介紹 2009-09-22 10:49 袁嘵濤

"如果rice編碼比固定的開端長,T,一個可選的編碼:輸出T個‘1’位,緊跟(log2(X-T))個‘1’和一個‘0’位,接著是X-T(最沒有意義的(log2(X-T))-1位)。這對于大值來說都是比較高效的代碼并且阻止可笑的長Rice編碼(最壞的情況,對于一個32位word單個Rice編碼可能變成232位或512MB)。"


這句話我不是很理解,能否再講得清楚些。
謝謝!
  回復  更多評論   


只有注冊用戶登錄后才能發(fā)表評論。
網(wǎng)站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲激情黄色| 国产九九精品视频| 久久影院午夜片一区| 国产精品无码专区在线观看| 欧美在线3区| 欧美亚洲一区在线| 久久不射中文字幕| 久久综合给合| 欧美日韩成人在线播放| 欧美日韩免费观看一区=区三区| 欧美国产欧美亚洲国产日韩mv天天看完整 | 久久久国产成人精品| 欧美在线一二三| 欧美黄污视频| 国产亚洲一区二区精品| 一本色道久久综合狠狠躁篇怎么玩 | 欧美日韩喷水| 欧美日本久久| 国产一级揄自揄精品视频| 亚洲成人在线免费| 亚洲免费视频一区二区| 久久精品五月| 亚洲欧洲日产国产综合网| 午夜一级在线看亚洲| 欧美体内she精视频在线观看| 国产欧美精品日韩| 夜夜嗨av一区二区三区| 免费亚洲一区| 欧美在线亚洲综合一区| 久久久久久久久岛国免费| aa亚洲婷婷| 欧美激情一区三区| 亚洲丶国产丶欧美一区二区三区| 久久成人精品无人区| 亚洲视频在线看| 国产精品久久久久国产a级| 日韩午夜剧场| 亚洲最快最全在线视频| 欧美视频导航| 欧美一区二区三区四区在线| 亚洲综合色激情五月| 国产精品综合| 男女精品视频| 麻豆成人小视频| 宅男噜噜噜66国产日韩在线观看| 亚洲伦理自拍| 国产日韩在线一区| 亚洲高清色综合| 国产精品一区免费视频| 另类亚洲自拍| 欧美日韩蜜桃| 久久综合中文字幕| 午夜精品久久久久久久久久久久久| 国产精品户外野外| 久久综合九色综合欧美狠狠| 欧美大片免费观看| 欧美在线在线| 免费影视亚洲| 久久久久久久久久看片| 欧美精品一区二区三区在线播放 | 久久久久久亚洲精品不卡4k岛国| 亚洲国产国产亚洲一二三| 亚洲天堂激情| 99re视频这里只有精品| 欧美在线视频导航| 亚洲网址在线| 欧美日韩国产一区二区三区| 蜜乳av另类精品一区二区| 国产精品日韩在线一区| av成人激情| 亚洲一区久久久| 国产精品户外野外| 在线一区观看| 欧美一区二区视频在线| 国产精品视频观看| 久久精品国产99国产精品| 欧美一区二区三区在线视频| 国产视频在线一区二区| 久久精品国产在热久久 | 国产女人18毛片水18精品| 亚洲精品国产视频| 99热免费精品在线观看| 欧美福利电影网| 亚洲影院在线| 免费亚洲一区二区| 一区二区欧美在线| 久久一区二区精品| 怡红院精品视频| 欧美日韩免费精品| 久久精品国产综合| 91久久国产综合久久| 欧美一区二区三区久久精品茉莉花| 亚洲人成啪啪网站| 欧美精品一区二区三区视频| 一区二区三区波多野结衣在线观看| 亚洲视频一区二区在线观看| 国产精品每日更新| 欧美成人国产va精品日本一级| 夜夜精品视频一区二区| 蜜桃精品久久久久久久免费影院| 亚洲一区二区三区久久| 亚洲日本中文字幕| 美日韩精品免费观看视频| 性欧美1819性猛交| 亚洲图片欧洲图片日韩av| 亚洲高清在线| 亚洲国产视频一区| 1024日韩| 亚洲国产精品久久人人爱蜜臀 | 欧美成人精品在线观看| 欧美一区二区视频在线| 亚洲图片欧洲图片日韩av| 日韩午夜av电影| 亚洲理论在线| 99在线精品免费视频九九视| 亚洲精品乱码久久久久久黑人| 亚洲国产一区视频| 亚洲欧洲一区二区三区| 99热在线精品观看| 亚洲一级二级| 久久av最新网址| 欧美阿v一级看视频| 欧美久久久久中文字幕| 国产精品国产自产拍高清av| 国内激情久久| 一区二区日韩| 久久男女视频| 亚洲国产视频一区| 亚洲欧美日韩一区在线| 蘑菇福利视频一区播放| 黄色成人片子| 在线精品亚洲| 亚洲一二三四久久| 麻豆91精品| 亚洲视频图片小说| 欧美成人激情在线| 国产一区二区日韩| 亚洲一区二区三区视频| 另类欧美日韩国产在线| 亚洲综合色噜噜狠狠| 欧美乱在线观看| 在线观看日韩av先锋影音电影院| 99国内精品久久| 欧美肥婆bbw| 久久久久久夜| 黄色精品在线看| 久久综合伊人77777蜜臀| 国产精品入口福利| 午夜精品久久久久久久男人的天堂 | 欧美14一18处毛片| 在线观看视频一区二区| 欧美亚洲自偷自偷| 午夜精品久久久久久久久久久久久| 欧美日韩一区二区三区| 在线亚洲精品| 亚洲午夜一级| 国产一区二区三区四区老人| 久久精品国产99| 鲁鲁狠狠狠7777一区二区| 亚洲精品1区2区| 日韩亚洲欧美综合| 国产在线观看一区| 亚洲国产精品毛片| 亚洲愉拍自拍另类高清精品| 欧美性事在线| 午夜精品区一区二区三| 亚洲免费在线| 最新中文字幕亚洲| 国产精品白丝黑袜喷水久久久| 亚洲在线成人精品| 这里只有精品视频| 国产精品久久久久久久app| 国产一区二区三区四区在线观看| 久久成人免费网| 国产亚洲成人一区| 国产精品久久久久久av福利软件 | 国产精品久久九九| 久久精品视频亚洲| 欧美日韩国产123区| 欧美 亚欧 日韩视频在线| 久久成人这里只有精品| 国产亚洲精品7777| 一区二区三区成人| 99精品国产在热久久婷婷| 久久精彩免费视频| 亚洲欧美999| 国产精品理论片在线观看| 亚洲精品中文在线| 亚洲精品一区二区在线| 久久综合久久综合这里只有精品 | 亚洲免费视频在线观看| 美女视频一区免费观看| 欧美a级片网| 亚洲国产日韩欧美| 蜜月aⅴ免费一区二区三区| 猛男gaygay欧美视频| 亚洲精品资源美女情侣酒店| 欧美激情综合五月色丁香| 亚洲人www| 欧美在线日韩精品|