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