圖像處理複習
CH6 圖像編碼
6.1 編碼與備援
圖像編碼,就是對圖像源資料按一定的規則進行變換群組合,進而達到以盡可能少的代碼來表示盡可能多的資料的目的
編碼實作了壓縮,是以又稱之為壓縮編碼
圖像能夠壓縮是因為為壓縮圖像中存在資訊的備援,一般将備援分成三類:
- 編碼備援:自然編碼将所有灰階值等長編碼,出現頻率高的灰階值全局相對碼字長度較大
- 像素相關性備援:幀内像素資訊備援、幀間像素資訊備援
- 視覺備援:人眼對不同視覺資訊有不同敏感度,并且人眼分辨率有限
6.2 資訊熵和編碼性能參數
(1)熵
設圖像灰階集集合 d=d1,d2,...,dm , dk 出現頻率為 p(dk) ,那麼有該圖像的熵為:
H(d)=−∑i=1mp(di)log2p(di)
(2)無失真編碼定理
無失真編碼定理:在無幹擾條件下,存在一種無失真的編碼方法,使編碼的平均碼長與信源的熵 H(d) 無限接近
推論:
- 若目前編碼平均碼長大于 H(d) 則一定可以設計出平均碼長更短的無失真編碼方法
- 平均碼長小于 H(d) 的無失真編碼不存在
(3)編碼性能參數
- 平均碼長: L=∑mi=1p(di)l(di) ,其中 l(di) 是灰階級為 di 的碼長,機關是比特每像素
- 編碼效率: η=H(d)L
- 備援度: Rd=1−η
- 壓縮比: C=nnd
6.3 簡單編碼
(1)Huffman編碼
每次選兩個機率最小的節點構造一個新節點(新節點機率為兩節點機率之和),直到構造出一棵二叉樹(根節點機率為1),然後左0右1标記樹枝,最後從根節點到葉節點路徑上的标号串連起來既是該節點的Huffman編碼
Huffman編碼是最優編碼,編碼效率很高,但是計算量較大,并且有一個緻命問題:
- 當各灰階機率接近時編碼(都比較小)長度會較長,可能會超過自然編碼長度,導緻不壓縮反而資料量增大
解決:分子塊獨立Huffman編碼
(2)其他亞最優編碼
以下編碼均是變長的亞最優編碼
- B2 編碼:兩位資訊位編碼,一位标志位,按機率從大到小依次安排較短編碼
- 二進制平移碼:3位資訊位作為一段,按機率從大到小依次安排段數較小的碼,并且保證隻有最後一段不是111(其餘均是)
- 截斷Huffman編碼:隻對最可能出現的M個符号進行哈夫曼編碼,而對其它的碼都用在1個合适的定長碼前加1個字首碼來表示
- Huffman平移碼:分塊,所有塊内字尾和第一塊的huffman編碼相同,各塊再增加字首區分
截斷Huffman編碼具體步驟是:
- 重新排列信源符号使它們的機率單減
- 選取一個合适的M
- 将後N-M個節點機率合并看成一個節點A
- 對M+1個節點進行huffman編碼
- 前M個節點編碼就是配置設定的huffman碼
- 後N-M個節點字首為節點A的huffman碼,并配置設定最小長度的定長碼作為字尾
平移Huffman編碼的具體步驟是:
- 重新排列信源符号使它們的機率單減
- 将符号總數分成相同大小的符号塊
- 對第一塊中節點和剩餘節點的合并節點A進行huffman編碼
- 第一塊節點編碼就是配置設定的huffman碼
- 剩餘每塊的字尾按同樣位序取第一塊中配置設定的huffman碼
- A的huffman碼作為字首,循環串連作為後面塊的字首:如A的huffman碼是00,那麼第二塊字首取00,第三塊字首取0000
注,ppt中表述的太含蓄沒看懂,是參考這個連結弄懂的:http://netclass.csu.edu.cn/NCourse/hep042/005/li6.html
(3)編碼舉例
說明:
- 二進制碼即自然碼
- 二進制平移碼的構造方法之前說的不是很詳細,可以參考Huffman平移碼了解平移的概念
- Huffman和 B2 比較易懂
- 截斷huffman碼取M=12,把後N-M=9個節點看成一個節點做Huffman編碼
- 二進制平移碼和Huffman平移碼均取塊大小為7,那麼就按照前7個節點和合并的節點的編碼确定各塊的字首和字尾
6.4 變換編碼
圖像資料經過正交變換後絕大部分資訊集中在少數變換系數上,通過對這些系數的量化實作圖像壓縮,最常用的正交變換是DCT
正交變換圖像編碼的一般步驟為:
- 壓縮:輸入 → 構造子圖像 → 正交變換 → 量化 → 編碼
- 解壓:解碼 → 反正交變換 → 合并子圖像 → 輸出
(1)DCT變換編碼
DCT圖像編碼的一般步驟為:
- 壓縮:輸入 → 構造子圖像 → DCT變換 → 除以量化矩陣 → 取整 → 編碼
- 解壓:解碼 → 乘以量化矩陣 → DCT逆變換 → 取整 → 合并子圖像 → 輸出
核心思路是對DCT變換後的圖像(集中)再進行編碼,如Huffman編碼此時效率更高
CH7 彩色圖像處理
7.1 彩色模型
(1)RGB
光的三基色為R、G、B,那麼所有顔色可表示為C=rR+gG+bB,三元組(1,b,c)就是RGB顔色模型中顔色表示
(2)HIS
字母的含義為:
- H:亮度
- I:色度/色相,0度為紅色、120度為綠色、240度為藍色
- S:飽和度,色環中用原點到彩色點的半徑表示飽和度(越靠近中心飽和度越低)
RGB到HIS轉換:
I=13‾‾√(R+G+B)S=1−3min(R,G,B)R+G+BH=⎧⎩⎨⎪⎪θ,G≥B2π−θ,G<B其中θ=arccos(R−G)+(R−B)2(R−G)2+(R−B)(G−B)‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾√
(3)YUV
Y是亮度,U和V是色差:
Y=0.299R+0.587G+0.114BU=B−YV=R−Y
(4)YCbCr
Y是亮度,Cb和Cr是色差:
Y=0.299R+0.587G+0.114BCb=2(1−0.114)(B−Y)Cr=2(1−0.299)(R−Y)