信息論一些基礎
自信息I(s)
信息熵H(s)
在信源中,考慮的不是某一單個符號發生的不確定性,而是要考慮這個信源所有可能發生情況的平均不確定性。若信源符號有n種取值:U1…Ui…Un,對應概率為:P1…Pi…Pn,且各種符號的出現彼此獨立。這時,信源的平均不確定性應當為單個符號不確定性-logPi的統計平均值(E),可稱為信息熵,即
式中對數一般取2為底,單位為比特
香農采樣定理
香農第一定理(可變長無失真信源編碼定理)
設離散無記憶信源X包含N個符號{x1,x2,…,xi,..,xN},信源發出K重符號序列,則此信源可發出N^k個不同的符號序列消息,其中第j個符號序列消息的出現概率為PKj,其信源編碼后所得的二進制代碼組長度為Bj,代碼組的平均長度B為
B=PK1B1+PK2B2+…+PKN^kBN^k
當K趨於無限大時,B和信息量H(X)之間的關系為B*K=H(X)(K趨近無窮)
香農第一定理又稱為無失真信源編碼定理或變長碼信源編碼定理。
香農第一定理的意義:將原始信源符號轉化為新的碼符號,使碼符號盡量服從等概分布,從而每個碼符號所攜帶的信息量達到最大,進而可以用盡量少的碼符號傳輸信源信息。
香農第二定理(有噪信道編碼定理)
有噪信道編碼定理。當信道的信息傳輸率不超過信道容量時,采用合適的信道編碼方法可以實現任意高的傳輸可靠性,但若信息傳輸率超過了信道容量,就不可能實現可靠的傳輸。
設某信道有r個輸入符號,s個輸出符號,信道容量為C,當信道的信息傳輸率R<C,碼長N足夠長時,總可以在輸入的集合中(含有r^N個長度為N的碼符號序列),找到M ((M<=2^(N(C-a))),a為任意小的正數)個碼字,分別代表M個等可能性的消息,組成一個碼以及相應的譯碼規則,使信道輸出端的最小平均錯誤譯碼概率Pmin達到任意小。

注:B為信道帶寬;S/N為信噪比,通常用分貝(dB)表示。
香農第三定理(保失真度准則下的有失真信源編碼定理)
保真度准則下的信源編碼定理,或稱有損信源編碼定理。只要碼長足夠長,總可以找到一種信源編碼,使編碼后的信息傳輸率略大於率失真函數,而碼的平均失真度不大於給定的允許失真度,即D'<=D.
設R(D)為一離散無記憶信源的信息率失真函數,並且選定有限的失真函數,對於任意允許平均失真度D>=0,和任意小的a>0,以及任意足夠長的碼長N,則一定存在一種信源編碼W,其碼字個數為M<=EXP{N[R(D)+a]},而編碼后碼的平均失真度D'(W)<=D+a。
行程編碼
RLE(Run LengthEncoding行程編碼)算法是一個簡單高效的無損數據壓縮算法,其基本思路是把數據看成一個線性序列,而這些數據序列組織方式分成兩種情況:一種是連續的重復數據塊,另一種是連續的不重復數據塊。對於連續的重復數據快采用的壓縮策略是用一個字節(我們稱之為數據重數屬性)表示數據塊重復的次數,然后在這個數據重數屬性字節后面存儲對應的數據字節本身,例如某一個文件有如下的數據序列AAAAA,在未壓縮之前占用5個字節,而如果使用了壓縮之后就變成了5A,只占用兩個字節,對於連續不重復的數據序列,表示方法和連續的重復數據塊序列的表示方法一樣,只不過前面的數據重數屬性字節的內容為1。一般的這里的數據塊取一個字節,這篇文章中數據塊都默認為一個字節。為了更形象的說明RLE算法的原理我們給出最原始的RLE算法:
給出的數據序列為:A-A-A-A-A-B-B-C-D
未壓縮前:A-A-A-A-A-B-B-C-D
(0x41-0x41-0x41-0x41-0x41-0x42-0x42-0x43-0x44)
壓縮后:5-A-2-B-1-C-1-D
(0x05-0x41-0x02-0x42-0x01-0x43-0x01-0x44)
霍夫曼編碼
霍夫曼編碼使用變長編碼表對源符號(如文件中的一個字母)進行編碼,其中變長編碼表是通過一種評估來源符號出現機率的方法得到的,出現機率高的字母使用較短的編碼,反之出現機率低的則使用較長的編碼,這便使編碼之后的字符串的平均長度、期望值降低,從而達到無損壓縮數據的目的。
算數編碼
術編碼用到兩個基本的參數:符號的概率和它的編碼間隔。信源符號的概率決定壓縮編碼的效率,也決定編碼過程中信源符號的間隔,而這些間隔包含在0到1之間。編碼過程中的間隔決定了符號壓縮后的輸出。
給定事件序列的算術編碼步驟如下:
(1)編碼器在開始時將“當前間隔” [ L, H) 設置為[0,1)。
(2)對每一事件,編碼器按步驟(a)和(b)進行處理
(a)編碼器將“當前間隔”分為子間隔,每一個事件一個。
(b)一個子間隔的大小與下一個將出現的事件的概率成比例,編碼器選擇子間隔對應於下一個確切發生的事件相對應,並使它成為新的“當前間隔”。
(3)最后輸出的“當前間隔”的下邊界就是該給定事件序列的算術編碼。
設Low和High分別表示“當前間隔”的下邊界和上邊界,CodeRange為編碼間隔的長度,LowRange(symbol)和HighRange(symbol)分別代表為了事件symbol分配的初始間隔下邊界和上邊界。上述過程的實現可用偽代碼描述如下:
set Low to 0
set High to 1
while there are input symbols do
take a symbol
CodeRange = High – Low
High = Low + CodeRange *HighRange(symbol)
Low = Low + CodeRange * LowRange(symbol)
end of while
output Low
算術碼解碼過程用偽代碼描述如下:
get encoded number
do
find symbol whose range straddles the encoded number
output the symbol
range = symbo.LowValue – symbol.HighValue
substracti symbol.LowValue from encoded number
divide encoded number by range
until no more symbols
詞典編碼
LZW算法
LZW算法先將可能的信源符號,創建一個初始詞典,然后再編碼過程中,遇到詞典中沒有的短語就加到詞典中,動態創建詞典。
參考:
預測編碼
幀內預測
預測編碼的思路簡單來說就是指編碼實際值與預測值之間的差別,通過預測其對當數據塊進行預測(與前面的數據有關),之后與真實值做差,將差值進行編碼。在重建數據時,需要采取相同的預測器預測當前數據,與差值求和即可得到真實值。
線性預測
非線性預測
差分脈沖調制編碼(DPCM)

運動估計ME
運動估計就是尋找當前編碼塊在已編碼圖像(或參考幀)中的最佳對應塊,並且計算出對應塊的偏移(即運動矢量)。
運動補償MC
運動補償則是根據運動矢量和幀間預測方法,求得當前幀的估計值的過程。它是對當前圖像的描述,旨在說明當前圖像的每一塊像素如何由其參考圖像的像素塊得到。
運動補償預測編碼
對於運動的物體,估計出物體在相鄰幀內的相對位移,用上一幀中物體的圖像對這一幀的物體進行預測,將預測的差值部分編碼傳輸,就可以壓縮着部分的碼率。包括以下4個部分:
1.圖像區域划分,划分為靜止區域和運動區域
2.運動估計。對每一個運動物體進行位移估計
3.運動補償。由位移的估計值建立同一個運動物體在不同幀的空間位置對應關系,從而盡力預測關系。
4.補償后的預測信息編碼。對運動物體的補償后的位移幀差信號以及運動矢量等進行編碼傳輸
運動估計算法
像素遞歸法:根據像素間亮度的變化和梯度,通過遞歸修正的方法來估計每個像素的運動矢量。每個像素都有一個運動矢量與之對應。
塊匹配算法:
(1)分塊匹配算法
一種基於模板的匹配方法。
(2)快速搜索算法
全局搜索算法(full search,FS)是最簡單和細致的搜索算法,它在搜索區內搜索每一個點,然后找到誤差最小的點。
三步搜索法(three step search,TSS):基本思想是采用由粗到細的搜索模式。
鑽石搜索法(diamond search,DS):選用兩種形狀的搜索模板,分別是9個檢測點的大鑽石模板(LDSP)和5個檢測點的小鑽石模板(SDSP),先進行大模板搜索,再用小模板定位

匹配標准

變換編碼
指對信號的樣本值進行某種形式的函數變換,從一種空間變換到另一種空間,然后再根據信號在另一個空間域的特征來對信號進行編碼壓縮。

K-L變換(均方誤差准則下最佳變換)
指圖像信號中各像素間存在的相關性完全解除的正交變換
離散傅里葉變換(DFT)
建立以時間為自變量的信號與以頻率為自變量的頻譜函數之間的變換關系
離散余弦變換(DCT)
量化
標量量化:均衡量化、非均衡量化和自適應量化
矢量量化:一次量化多個采樣點的量化方法,即將輸入數據幾個一組分成許多組,成組進行量化編碼
視頻數據組織結構
