【正文】
來圖像,其重建值為 ,^][mTYVX?則重建圖像與原來圖像近似誤差為 ,其均方誤差為mkXe^? ()??????NmiyixiiE12122}{??由于變換前后總能量保持不變,按照能量從大到小選擇較大的 m 個系數重建時,其重建圖像接近原來圖像。 變換編碼的特點在視頻壓縮中,最常用的變換方法是 DCT,DCT 被認為是性能接近 KL 變換的準最佳變換,變換編碼的主要特點有:(1) 在變換域里視頻圖像要比空間域里簡單。(3) 具有較強的抗干擾能力,傳輸過程中的誤碼對圖像質量的影響遠小于預測編碼 [5]。它可以使原來多波段圖像經變換后提供出一組不相關的圖像變量,最前面的主分量具有較大的方差,包含了原始影像的主要信息,所以要集中表達信息,突出圖像的某些細部特征,可采用主分量變換來完成。由于其變換基矢量或者說變換矩陣是根據輸入圖像的統(tǒng)計性質得出的,也就是說其變換基于 MATLAB 的 JPEG 基本系統(tǒng)編碼13矩陣是針對輸入圖像“ 量身定做 ”的,因此具有最佳的去相關性。鑒于圖像信號是隨機變量,度量隨機變量之ijxij間的相關程度可用協(xié)方差(任意兩個時刻上獲得的隨機變量的統(tǒng)計相關特性)矩陣表示,協(xié)方差矩陣是圖像統(tǒng)計特性的重要反映。)(xX??容易從 KL 變換的過程和結果得到 KL 變換具有以下性質:(1) KL 變換使矢量信號的各個分量互不相關,即變換域信號的協(xié)方差矩陣為對角線型。(3) 對于所有正交變換,在同樣失真條件下,KL 變換達到最小的碼率。XX 大學學士學位論文14基于 MATLAB 的 JPEG 基本系統(tǒng)編碼15第4章 JPEG圖像壓縮 JPEG概述 JPEG 是聯合圖像專家小組的英文縮寫。他們開發(fā)研制出連續(xù)色調、多級灰度以及負責制定靜態(tài)的數字圖像數據壓縮編碼標準,這個專家組開發(fā)的算法稱為JPEG 算法,并且成為,因此又稱為 JPEG 標準。圖像壓縮的目的在于以較少的數據來表示圖像以節(jié)約存儲費用,或者傳輸時間和費用。這也就是為什么 JPEG 會有如此滿意的壓縮比例的原因。JPEG 標準委員會完成了詳盡的技術評估、測試、選擇、有效化和文檔編制工作,形成了完整的國際標準。隨著各種各樣的圖像應用在開放網絡化計算機系統(tǒng)中,JPEG 數字圖像壓縮文件,作為一種數據類型,如同文本和圖形文件一樣地存儲和傳輸。(2) 能適用于任何連續(xù)色調的圖像,長寬比不受限制,同時也不受限于景物內容、圖像的復雜程度和統(tǒng)計特性等。(4)JPEG 算法具有四種工作模式:① 順序編碼:每圖像分量按從左到右,從上到下掃描,一次掃描完成編碼。③ 無失真編碼:該方法保證解碼后完全精確地恢復采用值。當信道傳輸速率慢時,接收端顯示器分辨率也不高的情況下,只需做低分辨率圖像解碼,不必進行高分辨率解碼。 離散余弦編碼DCT 變換的全稱是離散余弦變換,是指將一組光強數據轉換成頻率數據,以便得知強度變化的情形。當圖像數據分成一個 88 矩陣后,還必須將每個數值減去 128,然后一一代入 DCT變換公式中,即可達到 DCT 變換的目的。DCT 變換編碼其變換前后的信號熵和能量不變,在時域(或空域)中的 n 維信號 x 其變換核可分離的正、逆 DCT 變換分別定義如下 ()102)1(cos)(2)(10 ??????? NkNnxkCNXn , ?? ())()()(10 , ???Xnxn其中 ??????1210/)( NkkC, , ?DCT 的各行(列) 基矢量均是歸一正交的(為了保證變換前后熵和范數相等)。綜合 DCT 編碼特性及相關性等方面因素,它僅次于理想的 KL 變換,所以 DCT 在眾多變換(DCT、斜變換、Haar 變換、KLT 和沃爾什變換等)中脫穎而出。由于變換后系數矩陣右下角大多數高頻系數趨向于零,這樣就為結合 HVS 特性,采用(有死區(qū))量化、Zigzag 掃描、截斷 DCT 變字長壓縮編碼創(chuàng)造了條件,更重要的是為數字圖像/視音頻信號的壓縮找到了切實可行的方法。數字圖像 可以看成是一個 MN 的矩陣,借助于二維 DCT,可以將圖像從空),(nmx間域( 即 平面 )變換到 DCT 域(即 平面) 。由于人眼對高頻分量遠沒有低頻分量敏感,大量的圖像信息(如亮度)主要包含在低頻中,所以編碼時,可以忽略圖像的高頻分量,從而在視覺損失很小的情況下達到壓縮的目的。量化過程就是每個 DCT 系數除以各自的量化步長并取整,得到量化系數: ()])([)(~??vuSFINTvuF,這里的取整采用四舍五入的方式。應用程序可以根據圖像的性質、顯示設備和觀察條件等因素設定量化表的值。如圖 、圖 所示,分別用于對亮度和色差信號。量化表左上角的值較小,右下角的值較大,這樣就達到了保持低頻分量、抑制高頻分量的目的。目前在許多一般應用的 JPEG 基本系統(tǒng)中均使用這兩個量化表,并且取得了良好的效果。編碼時,每個矩陣數據的 DC 值與 63 個 AC 值,將分別使用不同的 Huffman 編碼表,而亮度與色度也需要不同的 Huffman 編碼表,所以一共需要 4 個編碼表,才能順利地完成 JPEG 編碼工作。亮度分量和灰度分量的統(tǒng)計特性不同,其碼字結構為:C=(SSSS,附加位) ,其中 4bits 二進制碼“SSSS”用來將 DC 差值的幅度范圍分為 255。表 差值 Bits 數與差值內容對照表差值 Bits DC 差值內容0 01 1,12 3,2,2,33 7,…4,4,…74 15,…,8,8…,155 31,…,16,16,…,316 61,…,32,32,…637 127,…64,64,…,1278 255,…128,128,…,25518 511,…,256,256,…51110 1023,…,512,512, …,102311 2047,…,1024,1024,…,2047基于 MATLAB 的 JPEG 基本系統(tǒng)編碼19在差值前端另外加入一些差值的 Huffman 碼值,例如亮度差值為 5(101)的位數為 3,在 Huffman 碼值應該是 100,兩者連接在一起即為 100101。根據這兩份表格內容,即可為 DC 差值加上 Huffman 碼值,完成DC 的編碼工作。從 DCT 變換的公式可以看出,直流(DC)系數反映了 88 子塊內64 個像素均值的度量,它包含了整個圖像總能量的重要部分,因此將 DC 系數和其余 63XX 大學學士學位論文20個交流(AC) 系數分別編碼。其余 63 個交流系數則用 Zig_Zag 之字形掃描轉換成一維序列,如圖 (b)所示,編碼順序為箭頭所示的方向。AC 和 DC 均為二進制補碼表示的整數。AC 值排列之后,將 AC系數轉換成中間符號,中間符號表示為 RRRR/SSSS,RRRR 表示非零的 AC 之前其值為0 的 AC 個數,SSSS 表示 AC 值所需的位數,AC 系數的范圍與 SSSS 的對應關系與 DC差值 Bits 數與差值內容對照表相似。例如某一組亮度的中間符為 5/3,AC 值為 4,首先以 5/3 為索引值,從亮度 AC 的 Huffman 編碼表中找到1111111110011110Huffman 碼值,于是加上原來 100(4)即是用來取[5,4]的 Huffman 編碼基于 MATLAB 的 JPEG 基本系統(tǒng)編碼211111111110011110100,[5,4]表示 AC 值為 4 的前面有 5 個零。 實現上述四個步驟,即完成一幅圖像的 JPEG 壓縮。 JPEG 圖像數據壓縮發(fā)展JPEG 是一個適用范圍很廣的靜態(tài)圖像數據壓縮標準,既可用于灰度圖像又可用于彩色圖像。最近發(fā)布的 JPEG2022 標準提供了一些新的壓縮算法,支持 Inter 應用等特點。輸入緩沖D C TZ Z 掃描量化碼流脈沖量化表霍夫曼編碼輸出脈沖編碼表圖 JPEG 系統(tǒng)模塊圖它對彩色圖像采用分量編碼。首先將整個圖像分為小的重疊的 88 像素子塊(共有 Y,U,V 三幅數字圖像),接著對各個子塊進行 DCT 變換,然后對所有的系數進行線性量化。量化步長矩陣,它們是根據視覺心理實驗得到的。利用這些閾值,在編碼率小于 1bit/像素的條件下依然獲得非常好的圖像質量。其次,對 DCT 量化系數進行熵編碼,進一步壓縮碼率。對于當前子塊 DC 系數與上一塊的 DC 系數之差值進行 VLC 編碼壓縮數據;這是由于 DC 分量是子塊的平均值,相鄰子塊間的相關性很強,同時,視覺上要求各子塊的平均灰度無明顯的跳躍,因此對 DC 的差值作無失真的熵編碼是合適的。在基本系統(tǒng)中共推薦了兩組 Huffman 碼表,一組用于亮度信號 Y,另一組用于色度信號 U,V。 JPEG壓縮編碼的設計流程DCT 部分程序流程圖利用 DCT 變換進行圖像壓縮,首先要將輸入圖像分解為 88 的塊,然后對每個塊進行二維 DCT 變換,最后將變換得到的 DCT 系數進行編碼和傳送,解碼時對每個 88 的圖像塊進二維 DCT 反變換,最后將反變換后的塊組合成一幅圖像。如果舍棄這些接近于 0 的DCT 系數值,在重構圖像時并不會帶來畫面質量的顯著下降,所以利用 DCT 進行圖像壓縮編碼可以節(jié)約大量的存儲空間。具體程序流程圖如圖 所示。圖像預處理所得到的數據是按逐列逐行掃描得到的。一個 MCU 的某組成分量的 DU 間采用自然掃描順序;DU 內的各矩陣元素間也采用自然掃描順序。 量化部分程序流程圖對圖像進行量化時,要選擇碼字的尺寸和碼字的大小。任意一幅圖像同樣分割成 88 的子塊圖像,可以按照碼字的索引編號進行編碼。解碼就是按照索引代表的碼字將圖像重建出來。 霍夫曼編碼部分程序流程圖霍夫曼編碼的過程較一般編碼方法更為繁瑣,主要包括霍夫曼編碼部分和先序遍歷霍夫曼樹函數兩部分?;?MATLAB 的 JPEG 基本系統(tǒng)編碼25開始結束輸入一幅原始圖像分成 8 8 像素塊 , 分別做 D C T 變換根據量化表 , 對變換系數進行量化對量化后的變換系數進行 Z i g Z a g 掃描對經掃描得到的 D C 系數和 A C 系數分別進行 H u f f m a n 熵編碼得到整個圖像編碼后的比特序列 , 并計算壓縮比特率對 D C 系數和 A C 系數分別進行 H u f f m a n 熵編碼反掃描 、 反量化反 D C T 變換計算重建圖像的峰值信噪比圖 JPEG 編解碼 Matlab 程序流程圖Y 0 Y 1 Y 2 Y 3YC h 0 C h 1C bC r8 8 系數塊M C U 0 : Y 0 Y 1 C b 0 C r 0M C U 0M C U 1 M C U 2M C U 1 : Y 2 Y 3 C b 1 C r 1C r 0 C r 1圖 YCbCr 分量數據掃描順序XX 大學學士學位論文26開始是否寫滿一個數據塊 ?產生順序遞增地址掃描地址表輸出符合Z i g _ Z a g 順序的地址數據按掃描順序輸出數據數據寫入數據存儲器計算矢量距離的子函數結束開始N結束設置碼字的大小裝入和顯示原始圖像求出圖像像素的行數和列數進行分塊處理設置碼數的大小圖 Zig_Zag 程序流程圖 圖 量化過程的流程圖結束裝入霍夫曼數據將最后兩個出現概率最小的消息合成一個消息將消息添加到隊列的最后 , 為 n 1 消息重新進行排序做準備碼字初始化為 0遍歷至原始消息 , 即葉子結點 , 輸出該碼字使左分支編碼為 1 ,右分支編碼為 0初始化原始消息數目排序列表初始化分別遍歷左右分支結點將 n 個消息進行排序獲得霍夫曼碼字開始圖 霍夫曼編碼程序流程圖基于 MATLAB 的 JPEG 基本系統(tǒng)編碼27 圖形用戶界面設計具體程序運行的結果如圖 所示。圖 (c) 在(b)的基礎上選擇 couple 圖像后所得出的結果(4) 選擇名為“l(fā)enna”的圖像后,可以得到圖 (d)所示的結果。圖 (d) 在(b)的基礎上選擇 lenna 圖像后所得出的結果基于 MATLAB 的 JPEG 基本系統(tǒng)編碼29(5) 選擇名為 “baboon”的圖像后,可以得到圖 (e)所示的結果。它們都是連續(xù)色調圖像,盡管“l(fā)enna”有一些離散色調圖像的特征。然而鼻子區(qū)域卻是連續(xù)色調的。帽子是好的連續(xù)色調,然而頭發(fā)和帽子上的羽毛卻是差的連續(xù)色調。壓縮結果主要與兩個因素有關,也就是說,分析一個壓縮算法的性能好壞,不僅要研究不同比特率下的壓縮結果如何,還應對圖像本身確定信號對壓縮結果的影響進行分析與探討。由于圖像經過 DCT 變換后,根據人眼視覺特性,通過設置不同視覺閾值或量化電平,將許多能量較小的高頻分量量化為零,而能量較大的系數保留了下來,從而實現了較高效率的壓縮?!發(fā)enna”圖像是一種平滑圖像。雖然“l(fā)enna”圖像 含有許多的細節(jié)信息,但從重構圖像我們可以看出,DCT 算法偏重于圖像的視覺效果,用該算法得出圖像的視覺效果相當好,它與原圖像的視覺效果幾乎一樣。 “baboon”圖像是一種邊緣圖像,從圖 (e) “ba