圖像編碼與壓縮
概述
數據壓縮的研究內容包括數據的表示、傳輸、變換和編碼方法,目的是減少存儲數據所需的空間和傳輸所用時間
圖像編碼與壓縮就是對圖像數據按一定的規則進行變換和組合,達到以盡可能少的代碼(符號)來表示盡可能多的圖像信息
冗余數據
冗余數據有:編碼冗余、像素間冗余、心理視覺冗余
- 編碼冗余:圖像的灰度級編碼,使用了多余實際需要的編碼符號
- 像素冗余:圖像中的多個單個像素對視覺貢獻的冗余
- 視覺心理冗余:人眼不能感知或不敏感的那部分圖像信息
傳輸流程
源數據編碼:對原數據的壓縮
通道編碼:增加冗余位,抗干擾
通道:傳輸信道
通道解碼:反通道編碼
分類
-
根據解壓重建后的圖像和原始圖像之間是否存在誤差
分為無誤差編碼(無失真、無損、信息保持)和有誤差編碼(有失真或有損)
-
根據編碼作用域划分
分為空間域編碼和變換域編碼
圖像保真度准則
描述解碼圖像相對原始圖像偏離程度的測度一般稱為保真度
客觀保真度准則
最常用的客觀保真度准則是原圖像和解碼圖像之間的均方根誤差和均方信噪比
主觀保真度准則
通過觀察者評分確定圖像質量,即主觀保真度標准
圖像冗余度和編碼效率
根據Shannon無干擾信息保持編碼定理,無損編碼壓縮后的平均碼長存在一個下限,即圖像信息熵H,理論最佳信息保持編碼的平均碼長無限接近圖像信息熵H
\[H = - \sum _{i=0}^{L-1} p_i log_2 p_i \]
平均碼長
\[\overline{B} = \sum _{L-1}^{i=0} \beta_i p_i \]
\[\beta_i = 灰度值為i的編碼長度 \]
冗余度
\[r = \frac{\overline{B}}{H} -1 \]
編碼效率
\[\eta = \frac{H}{\overline{B}}=\frac{1}{1+r} \]
統計編碼方法
Huffman編碼(霍夫曼編碼)
Huffman編碼是根據信源數據符號的發生概率所進行的編碼
-
核心思想:信源數據中出現概率越大的符號(灰度值),編碼后相應的碼長越短,以盡可能少的碼符表示數據
-
方法:
- 把輸入符號按出現的概率從大到小排序,把概率最小的兩個符號的概率求和,移除序列
- 將求和結果插入序列,再次從大到小排序
- 重復上述過程直至序列中僅剩兩個數
- 反算結果,概率大的賦0,小的賦1
Fano-Shannon編碼(費諾仙儂編碼)
-
方法
- 把輸入符號按出現的概率從大到小排序,並分為兩組\(x_1 \sim x_k\)和\(x_k+1 \sim x_n\),使
\[\sum _{i=1}^{k} p(x_i) \approx \sum _{i=k+1}^{n} p(x_i) \]- 將兩個子集概率大的賦0,小的賦1
- 對兩個子集重復步驟1、2
- 重復步驟3,直至子集字符個數為1時,得到最終結果
-
特點
- Fano-Shannon編碼是唯一可譯碼,短碼不會成為長碼的起始部分
- Fano-Shannon編碼的平均碼長接近於熵,編碼效率略低於Huffman編碼
算術編碼
算術編碼中,信源符號與碼字之間不存在一一對應的關系,一個碼字賦給整個消息隊列
碼字定義為一個介於0與1之間的實數,區間中任何一個實數就代表一個編碼的消息隊列
當消息中的符號數目增加后,用於描述消息的間隔減小,表示間隔所需要的消息單元增多
-
方法
- 計算每個信源符號的概率及其區間
- 通過消息隊列計算算術編碼區間
行程編碼(RLE編碼)
行程編碼是一種最簡單的,在某些場合非常有效的無損壓縮編碼方法
-
基本原理
- 通過改變圖像的描述方式,來實現圖像的壓縮
- 將一行中灰度值相同的相鄰像素,用一個計數值和該灰度值來代替
-
實現方法
- 二維行程編碼
- 核心問題:將二維排列的像素通過某種方式轉化為一維排列的方式。