370 likes | 613 Views
第七章:影像編碼. 7.1 前言 7.2 基本理論 7.3 編碼方式 7.4 映射 7.5 失真壓縮. 7.1. 前言. 影像壓縮的編碼方式種類繁多,因不同的應用而有不同的選擇,它們可分成兩大類: 失真編碼 和 不失真編碼 。
E N D
第七章:影像編碼 • 7.1 前言 • 7.2 基本理論 • 7.3 編碼方式 • 7.4 映射 • 7.5 失真壓縮 第七章:影像編碼
7.1 前言 影像壓縮的編碼方式種類繁多,因不同的應用而有不同的選擇,它們可分成兩大類:失真編碼和不失真編碼。 失真編碼方式,壓縮後的影像還原回來和原始影像不同,在一些應用裏影像變黑一點或亮一點,線條變粗一點或細一點不會影響我們對影像的認知,此時我們可以應用失真編碼來壓縮影像,因為壓縮碼的過程中,我們允許資料損失,因此可以做到較高的壓縮比 (原影像的資料量和壓縮影像資料量的比值),一般 10:1 是很容易達到的。但是某些影像,如 X 光片的影像,影像稍微有點失真往往會讓醫生做出不同的診斷,此時就不允許編碼後的影像和原影像不同,此時需利用不失真編碼壓縮影像。 第七章:影像編碼
7.1 前言 我們將源編碼過程細分為 (1) 映射 (mapping),(2) 量化和 (3) 編碼等三個程序。源編碼的主要目的是去掉多餘的資訊。此三程序如能完全反向回去,此種編碼即是不失真編碼,一般失真的發生都是重新量化所造成的。 圖7-1 編碼的程序 第七章:影像編碼
7.2 基本理論 消息的意義 (Information) 第七章:影像編碼
熵 (entropy) • Example: • 假設符號源 S={s1, s2, s3, s4} • 且p1=0.5, p2=0.25, p3 = p4 = 0.125。 • 以 a = 2 為基底我們可以得到熵為 • H2(S) = 0.5 log22+0.25 log24 • +0.125 log28+ 0.125 log28 • = 0.5 + 0.5 + 0.375 + 0.375 • = 1.75 資訊位元 第七章:影像編碼
Example: • 丟擲一個兩面出現機率相等的銅板。 • S = {s1, s2} 且p1=p2=0.5。 • 以 a = 2 為基底 • 個別事件的資訊量 • I(s1) = I(s2) = -log2(1/2)= log22=1 • 我們可以得到熵為 • H2(S) = 0.5 log22+0.5 log22 = 1 H2(S) 的值等於I(si) 。 第七章:影像編碼
7.3 編碼方式 第七章:影像編碼
7.3 編碼方式 • Example: • 假設符號源 S={s1, s2, s3, s4} • 且p1=0.5, p2=0.25, p3 = p4 = 0.125。 • 以 a = 2 為基底我們可以得到熵為 • H2(S) = 0.5 log22+0.25 log24 • +0.125 log28+ 0.125 log28 • = 0.5 + 0.5 + 0.375 + 0.375 • = 1.75 資訊位元 • 假設編碼後的結果分別為 (00)2, (01)2, (10)2, (11)2 • L=0.5*2+0.25*2+0.125*2+0.125*2 • = 2 • Redundancy=1-(1.75/2)=1/8 第七章:影像編碼
Huffman Code (霍夫曼碼) Huffman Code 產生的方式在建立一二元樹,此二元樹的產生是一連串的排序和合併直至剩下二筆資訊機率和等於 1,然後再根據此二元樹找出每一原始資料的 Huffman-Code,找法是由上而下有分枝即每分枝給1和0。 排序時,機率大的排在上面,如果資料的機率分配很不平均,則此二元樹也不平均,且機率大的事件因為經過的合併次數少,所以在此二元樹的上層,故碼長也較短,合併及排序的經過如圖7-2,所得到的二元樹及編碼如圖7-3。 第七章:影像編碼
圖7-2 Huffman Code 二元樹之建立 第七章:影像編碼
圖7-3 Huffman Code 第七章:影像編碼
圖7-4 8×8 範例影像 第七章:影像編碼
7.4 映射 轉換映射 第七章:影像編碼
7.4 映射 Example: 原始影像第一列 2 3 4 5 6 7 8 9 轉換後影像第一列 2 -1 -1 -1 -1 -1 -1 -1 第七章:影像編碼
圖7-4 8×8 範例影像 圖7-6 圖 7-4 的差映射 圖7-7 圖 7-5 的 Huffman Code 第七章:影像編碼
7.4 映射 第七章:影像編碼
7.5 失真壓縮 JPEG 影像編碼 JPEG 編碼方式可分為 (1) 將原影像切割成 8×8 影像的小範圍像;(2)將此 8×8 影像經過 DCT 轉換,轉換結果代表原 8×8 影像的頻率成份,左上角的值代表直流成份 (DC),其他 63 個代表交流成份 (AC),如果原 8×8 像素值是常數,則此 63 個值為零;(3) 將每一個成份依不同能階數量化;(4) 將不同區域的直流值以差映射和 Huffman Code 編碼,將 63 個交流值安排成由低頻到高頻的一維數列,再以長度映射和 Huffman Code 編碼。 JPEG 壓縮標準 1. 系統 整個 JPEG baseline system 的壓縮,可視為一個 8×8 pixelblock 大小的壓縮,其整個壓縮流程如圖 7.12 所示: 第七章:影像編碼
圖7-12 JPEG 壓縮流程圖 第七章:影像編碼
2. DCT 首先來源影像的每一個 8×8 pixel-block 經過 left shift,即減 128 將每一 pixel 的影像值調整至 –128 ~ 127。接著再經過 Forward DCT (FDCT) 運算,JPEG 採用下式作為計算 2D-FDCT 的公式 3. 量化 接著,64 個經過 FDCT 的係數 F(u, v) 再經過一個量化器 Q 量化,此量化器 Q 為一個 8×8 的矩陣,其 Q 之值與量化公式如下: 第七章:影像編碼
4. 直流成份DPCM編碼 (Differential Pulse Code Modulation) 量化後的 “DC” coefficient 即 F(0, 0) 與其餘的63係數 (AC coefficient) 是分開處理的,其編碼方式為 DPCM 編碼。 將目前這個 block 的 DC 係數減去前一個 block 的 DC 係數。 Diff_DC(i)=DC(i)-DC(i-1) 因為 DC coefficient 需 11 bits 表示,所 Diff_DC 需要 12 bits。 5. Zig_zag_scan ordering 將 63 個 AC coefficient 按照下圖的順序讀取排成一個 1-D 的序列。 圖7-13 交流成份安排順序 第七章:影像編碼
6. Huffman 編碼 JPEG 的 Huffman codeing 採 2 個步驟:modeling 和 coding。 第七章:影像編碼
7. VLC (Variable-Length-Code) 和 VLI (Variable-Length-Integer) medeling 後的資料,DC 和 AC 皆需再經過 VLC 和 VLI 的編碼過程,其中 VLC 為 Huffman code,VLI 也是可變長度編碼但不是 Huffman code,一個重要的特徵是每一個 VLC 的長度是一直到解碼時才知道,而 VLI 則等 VLC 解碼後才知道其長度。 以 AC coefficient 來說,code 1 為 VLC 編碼,code 2 為 VLI,然後兩者交替送至位元輸出完成壓縮的資料。 AC 與 DC 兩者的 VLC code 的獲得方式皆是以 modeling 後的數值從 VLC table 查出對應的 VLC code。 不同的 color component 可能使用不同的 VLC table,而每一個 table 包含 DC VLC 及 AC VLC 兩部分。 每個 VLC 碼簿 可為定製型或預設型,在 baseline system 中最多可有 2 個 VLC 碼簿在每個畫面中。 亮度成份的直流 VLC 碼簿列於表 7-6,而交流 VLC 碼簿列於表 7-7。 第七章:影像編碼
8. 實例 第七章:影像編碼
9. VLC 碼表 這裏列出 JPEG 建議的亮度 VLC 碼表,我們以 16 進位,C 語言結構方式列出,碼長 (code length) 代表此 16 進位數中有意義的位元數。 第七章:影像編碼
DPCM (Differential Pulse Code Modulation) 影像編碼 DPCM 為一簡單且效率高的編碼方式,故常應用到信號的資料壓縮上,如聲音和影像壓縮,主要是利用信號點和點間皆存在著多餘的資料 (共同的部份)。 DPCM 的結構如圖 7-14,因為相鄰點差的信號振幅通常小於個別點的振幅,因此可以較少能階量化,較少位元編碼,如我們可以二個能階量化相鄰兩點的差 (+△和-△),量化的結果可以一個位元編碼,此種編碼方式又稱為 DM (Delta Modulation)。 圖7-14 DPCM 編碼結構 第七章:影像編碼
DPCM (Differential Pulse Code Modulation) 影像編碼 當信號變化太快,且 DPCM 量化能階太少此時編碼後的信號無法趕上原信號此種現象稱為斜率過載 (Slope Overload),又量化能階減少時編碼後信號每一步進的變化不會和原信號的差剛好相同此時會造成振盪現象,稱為粒化誤差 (granular noise) 我們以差調為例說明,如圖 7-15。 (1:代表+,0:代表-) 圖7-15 差調的斜率超載和粒化誤差 第七章:影像編碼
圖7-16 加入預測器的 DPCM 編碼結構圖 第七章:影像編碼
圖7-17 DPCM 解碼結構 第七章:影像編碼