第二章、视频压缩技术与原理
2.1.1 熵及熵編碼基本原理
信息量的概念
信息量:表示該符號所需要的位數(shù)
- 考慮用0、1組成的二進制數(shù)碼
- 是為含有n個符號的某條信息編碼
- 假設(shè)符號aj在整條信息中重復出現(xiàn)的概率為Pj,則該符號的信息量定義為:信息量表示以2為底的對數(shù),是正值?
Eg:輸入信源字符串為aabbaccbaa,abc出現(xiàn)的概率分別為0.5\0.3\0.2,它們的信息量分別為多少,總信息量也即表達整個字符串需要的位數(shù)為多少?
?
?如果用二進制等長編碼,需要20位。
?熵編碼的概念
- 數(shù)據(jù)壓縮的基石——Shannon創(chuàng)建的信息論
- Shannon第一定律(率失真定律)確定了在編碼過程中不損失任何信息,即在無損編碼條件下數(shù)據(jù)壓縮的理論極限是信息的熵,并指出了如何建立最優(yōu)數(shù)據(jù)壓縮編碼方法。
- 這類保存信息熵的編碼方法統(tǒng)稱為熵編碼(Entropy coding),熵編碼的結(jié)果經(jīng)解碼后可無失真地恢復出原始信息
?平均碼長的概念
如果對字符的編碼長度為,則信號L的平均碼長為:(m為信號中所出現(xiàn)不同字符的個數(shù))
無失真編碼定理
熵是平均碼長的下限,這是以信息論為基礎(chǔ)的編碼方式的一個最重要的理論。
編碼的基本思想就是用較少的比特數(shù)表示出現(xiàn)概率較大的碼源符號,用較多的比特數(shù)表示出現(xiàn)概率小的碼源符號。最常用:霍夫曼編碼
編碼效率的定義
熵H(x)除以平均碼長Lavg,即表示 編碼效率
(熵是編碼的極限,所以<=1)
?小結(jié):
- 數(shù)據(jù)壓縮的理論極限是信息熵
- 只要信源不是等概率分布,就存在著數(shù)據(jù)壓縮的可能性
- 數(shù)據(jù)壓縮的基本途徑之一:使各字符的編碼長度盡可能等于字符的信息量
2.2.1 Huffman編碼?
簡介:
Huffman編碼是1952年為壓縮文本文件所設(shè)計的編碼方法,也是目前消除視頻信息冗余最常使用的方法之一。
對出現(xiàn)概率最大的符號附以最短的碼字,概率越小表示的碼字越長,從而使表示每個符號的平均比特數(shù)最小。
編碼步驟:
?編碼特點:
Huffman編碼是瞬時唯一的可解塊編碼
- 瞬時:符號串中每個碼字無需參考后繼符號就可解碼
- 唯一可解碼:任何符號串只能以一種方式解碼
- 塊編碼:每個信源符號都映射到一個編碼符號的固定序列中
Huffman編碼是為一個可譯碼。短的碼不會成為更長碼的起始部分
?Huffman編碼的平均碼長接近于熵
與計算機的數(shù)據(jù)結(jié)構(gòu)不匹配
需要多次排序耗費時間
注意:
????????Huffman編碼的算法是確定的但是編出的碼并非是唯一的
????????Huffman編碼的依據(jù)是信源符號的概率分布,故其編碼效率取決于信源的統(tǒng)計特性
????????Huffman編碼局限性:只適用于離散信源
? ? ? ? 編碼時需要知道輸入符號集的概率分布
????????Huffman編碼計算量大而復雜,尤其譯碼復雜度高
????????Huffman編碼沒有錯誤保護功能
????????由于碼長不等還存在輸入輸出的速率匹配問題
壓縮比=等長編碼的編碼長度/平均碼長
按照熵的定義,它表示平均信息量
2.2.3 算術(shù)編碼
算術(shù)編碼是1980年代發(fā)展起來的一種熵編碼方法。
1、原理:
2、算術(shù)編碼步驟
?????????算術(shù)編碼是從整個符號序列出發(fā),采用遞推式連續(xù)編碼的方法。
????????解碼時,根據(jù)該區(qū)間判斷信源各個符號出現(xiàn)的順序和類型。
以多符號的算術(shù)編碼為例,來分析算術(shù)編碼(基于固定模式)步驟:
設(shè)信源符號表是{al,,a2, a3,a4},其符號出現(xiàn)的概率分別為{0.2,0.1,0.4,0.3},請按照序列{a2, a1, a4, a3}進行算術(shù)編碼。
解:(1)首先確定算法空間為[0,1]
? ? ? ? (2)確定各個字符的區(qū)間分配,建立碼點。
碼點要滿足兩條規(guī)則:
(a)每個碼點值是它前面所出現(xiàn)的概率之和。第一個碼點值為0,因為它前面沒有碼字
(b)將每一個碼點值作為右端點,每個子分過程中所得區(qū)間的寬度對應于該符號的概率。
? ? ? ? (3)對輸入的每個信源符號,重復如下步驟:
接下來確定第二個符號是a1的子區(qū)間,即序列a2a1的子空間:
?將信源符號序列a2a1的概率空間[0.2,0.22)擴展為新的算法子空間;
然后確定信源符號序列a2a1a4的新算法子空間[0.214,0.22)
?將信源符號序列a2a1a4的概率空間[0.214,0.22)擴展為新的算法子空間;
確定信源符號序列a2a1a4a4的新算法子空間
?那么,任何一個該區(qū)間中的實數(shù),如,0.2160就可以用來表示序列{a2a1a4a3}的編碼
?3、算術(shù)解碼步驟
解碼過程是對按照當前的編碼進行識別的過程。
當?shù)玫揭粋€圖像的編碼后,根據(jù)其各個信源符號的概率進行分析,找到當前編碼所符合的概率空間,逐步求精,即可得到原始符號序列信息。
解碼過程示例如下:
上例中,0.2158在區(qū)間[0.2, 0.3)之間,所以第一個符號是a2。
? ? ? 2. 從編碼數(shù)值中消去第一個符號a2的影響,即首先減去a2的左端點的值,然后除以a2對應范圍的寬度,即
?0.158再次比較與哪一個符號對應的數(shù)值范圍符合,得到a1。
? ? ??3. 重復步驟1、2,直到解出整個符號流。
注意:?一個符號的末尾應該有一個結(jié)束符作為標志,它隨信源符號一起被編碼。
?4、算術(shù)編碼的分析
算術(shù)編碼是一種從整個符號系列出發(fā),采用遞推形式連續(xù)編碼的方法。在算術(shù)編碼中,字母表中的符號和碼字間不再存在一一對應關(guān)系,一個算術(shù)碼字要賦給整個信源符號序列(即不是一次編一個號),而碼字本身確定0和1之間的一個實數(shù)區(qū)間。
不論是否是二元信源,也不論數(shù)據(jù)的概率分布如何,其平均碼長均能逼近信源的熵。
算術(shù)編碼和Huffman編碼的區(qū)別:
? ? ? ? 在算術(shù)編碼中,輸入序列(即被賦給單個碼字的符號塊)的長度,是可變的。可以說算術(shù)編碼是將可變長碼字賦給可變長符號塊。
正是由于算術(shù)編碼不需要為定長符號塊分配整數(shù)長的碼字,采用算術(shù)編碼每個符號的平均編碼長度可以為小數(shù),理論上能達到無損編碼定理所規(guī)定的最低限。
算法編碼從全序列出發(fā),采用遞推形式的連續(xù)編碼,它不是將單個的信源符號映射成一個碼字,而是將整個符號序列映射為實數(shù)軸上[0,1)區(qū)間內(nèi)的一個小區(qū)間,其長度等于該序列的概率。
隨著輸入符號越來越多,子區(qū)間分割越來越細,因此表示其左端點的數(shù)值的有效位數(shù)也越來越多。
如果等整個符號序列輸入完畢后再將最終得到的左端點輸出,將遇到兩個問題:
通常采用兩個有限精度的移位寄存器存放碼字的最新部分,隨著序列中符號的不斷輸入,不斷地將其中的高位移出到信道上,以實現(xiàn)實時編解碼。
?5、算術(shù)編碼的效率
- 算術(shù)編碼最大的優(yōu)點之一在于它具有自適應性和高編碼效率
- 算術(shù)編碼的模式直接影響編碼效率。其模式:固定模式(基于概率分布模型)和自適應模式(其各符號的初始概率都相同,但隨著符號順序的出現(xiàn)而改變,在無法進行信源概率模型統(tǒng)計的條件下,非常適于使用自適應模式的算術(shù)編碼。)
?在信道符號概率比較均勻的情況下,算術(shù)編碼的編碼效率高于Huffman編碼,但在是實現(xiàn)上比Huffman編碼的計算過程復雜。
算術(shù)碼也是邊長碼,編碼過程中的移位和輸出都不均勻,因此也需要有緩沖存儲器。
在誤差擴散方面,算術(shù)碼比分組碼嚴重。
算術(shù)碼流的傳輸也要求高質(zhì)量的信道,或者采用檢錯反饋重發(fā)的方式。
?小結(jié):
- 算數(shù)編碼的原理:編碼從序列出發(fā),將各信源序列的概率映射到[0,1]區(qū)間上,使得每個序列對應該區(qū)間內(nèi)的一個點,即一個二進制的小數(shù)。這些點將[0,1]區(qū)間分成許多小段,每段的長度等于某一序列的概率,整個編碼過程就是單位區(qū)間[0,1]內(nèi)的子分過程。
- 是將一個算術(shù)碼字,賦給整個信源符號序列,而碼字是在0和1之間的一個實數(shù)區(qū)間。
2.2.4 游程編碼?
?1、游程編碼基本概念
游程編碼的基本原理:
將具有相同值的連續(xù)串,用其串長和一個代表值來代替,該連續(xù)串就稱為游程,串長稱為游程長度
編碼思想:
去除像素冗余,游程編碼用游程的灰度和游程的長度來代替游程本身。
2、二元信源的游程編碼
二元信源只有兩個不同的信源,只有“0”和“1”符號
“0”游程和“1”游程總是交替出現(xiàn)(比如:規(guī)定某二元序列是從“0”開始,第一個游程是“0”第二個是“1”然后又是“0”等等)
“0”游程:連續(xù)出現(xiàn)“0”符號的段? =>? “0”游程的長度L(0)
“1”游程:連續(xù)出現(xiàn)“1”符號的段? =>? “0”游程的長度L(1)
這樣游程序列就可以用自然數(shù)標記游程的長度,映射成交替出現(xiàn)的游程長度序列。
?3、多元信源的游程(行程)編碼
多元信源:顧名思義在這個信源中,里面的符號是多個不同的符號,不是只有兩個不同的符號。
Eg:對多元序列aabbbcddddd用游程編碼
解:游程長度編碼為2a3b1c5d
- 定長游程編碼:編碼的游程長度所用的二進制位數(shù)固定。
- 變長游程編碼:不同范圍的游程長度用不同編碼位,需要增加標志位來表明所使用的二進制位數(shù)。
?4、游程編碼的優(yōu)缺點分析
缺點:
- 游程編碼仍然是變長編碼,有其固定的缺點,需大量的緩沖和優(yōu)質(zhì)的信道。
- 編程長度可以從1一直到無限,這在碼字的選擇和碼表的建立方面都有困難,實際應用是尚需采用某些措施來改進。
- 只適用于二元序列,對于多元信源,一般不能直接利用游程編碼
游程越長出現(xiàn)的概率越小;游程長度趨于無窮時,其出現(xiàn)的概率也趨向于0。
按照霍夫曼編碼的規(guī)則,概率越小,碼長越長,但小概率的碼字對平均碼長的影響較小。
所以在實際應用時,對長游程一般采用截斷處理的方法,將大于一定長度的長游程統(tǒng)一用等長碼編碼。?
5、(圖像)游程編碼
對某些相同灰度級成片連續(xù)出現(xiàn)的圖像,游程編碼也是一種高效的編碼方法。特別是對二值圖像,效果尤為顯著。
- 游程編碼所能獲得的壓縮比主要取決于圖像本身的特點。
- 若圖像中具有相同顏色的圖像塊越大圖像塊數(shù)目越少,則壓縮比就越高。反之壓縮比就越小。
?通常為了達到比較好的壓縮效果,一般不單獨使用游程編碼,而是和其他編碼方法結(jié)合使用。比如:在JPEG中,綜合使用了游程編碼以及哈夫曼編碼。
總結(jié)
以上是生活随笔為你收集整理的第二章、视频压缩技术与原理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MES系统的实施准备,将MES系统导入到
- 下一篇: 光刻技术简介