王文娟 陶 杰 刑 娜
中國人民解放軍軍械工程學(xué)院
首先介紹基于DCT 變換的JPEG 圖像壓縮編碼過程,然后利用MatLab2008a 編程軟件進行仿真實驗,給出詳細的編程過程。改變量化參數(shù),可得到不同壓縮比以適應(yīng)不同的應(yīng)用場合。從實驗結(jié)果看出,JPEG 算法在實現(xiàn)較高的壓縮比情況下可保證較高的圖像質(zhì)量。MatLab 高效的數(shù)值計算功能使圖像仿真編程簡單且誤差較小,從而提高實驗結(jié)果的可靠性。
隨著多媒體及網(wǎng)絡(luò)技術(shù)的發(fā)展,圖像數(shù)據(jù)作為一種十分重要的信息源已成為多媒體信息中最重要的組成部分。但是圖像的數(shù)據(jù)量大,不便于保密、存儲和傳輸,因此圖像壓縮編碼技術(shù)受到人們的廣泛重視。在眾多的圖像編碼標準中,JPEG(joint photographic experts group)標準以其良好的性能被廣泛應(yīng)用于數(shù)字圖像壓縮領(lǐng)域。
本文在簡單介紹JPEG 圖像壓縮編碼原理基礎(chǔ)上,利用MatLab2008a 對標準灰度圖像進行壓縮和重建,最后通過分析實驗結(jié)果得出結(jié)論。
JPEG 標準是由國際標準化組織(ISO)和CCITT 的聯(lián)合圖片專家組(joint picture experts group,JPEG)針對靜止圖像壓縮而聯(lián)合制定的第一個國際標準。它包含兩種基本的壓縮編碼算法,第一種是以離散余弦變換(DCT)為基礎(chǔ)的有損壓縮算法,第二種以空間預(yù)測算法為基礎(chǔ)的無損壓縮算法。有損壓縮算法也稱為信息量壓縮算法,一般壓縮比比較高,能達到10:1、20:1,甚至40:1,而無損壓縮的壓縮比相對較低,一般只有2:1 到至4:1。以有損壓縮為例進行說明,其編碼、解碼步驟方框圖如圖1 所示。
(1)DCT 變換及系數(shù)量化
輸入一幅原始的灰度圖像,因為JPEG 是以圖像塊為基本單位進行的壓縮,所以在進行DCT 變換之前,首先將原始圖像分成8×8 像素塊。經(jīng)過DCT 變換后,大部分自然信號的能量都被集中在離散余弦變換后的低頻部分,正是由于DCT 變換具有這種很強的“能量集中”特性,常用于圖像的有損數(shù)據(jù)壓縮。
圖1 JPEG 基本系統(tǒng)框圖
量化是造成DCT 編解碼信息損失的根源,作用是在一定的主觀保真度前提下,丟掉對視覺影響不大的信息,以達到壓縮目的。根據(jù)亮度量化表,經(jīng)過DCT 變換后的系數(shù)除以各自對應(yīng)的量化步長,得到量化系數(shù)。由于低頻分量集中在8×8 矩陣的左上角,因此量化表中的左上角的量化步長一般要比右下角的量化步長小。如表1 所示。位于右下角的量化系數(shù)多被截取為零值,舍棄這些零值,在重構(gòu)圖像時并不會帶來畫面質(zhì)量的明顯下降,由此節(jié)約存儲空間,而集中主要能量的左上角的量化系數(shù)被保留。
表1 亮度量化表
該部分編程如下:
(2)熵編碼
首先是將量化系數(shù)進行重新編排,目的是為了增加數(shù)據(jù)塊中量化系數(shù)“0”的游程長度,即連“0”系數(shù)的個數(shù)。方法是按照“Z”字形的樣式編排,如圖2 所示。每個8×8 的矩陣都變?yōu)?×64 的矢量,同時保證先低頻、后高頻的順序,則整個圖像對應(yīng)的是一個64*數(shù)據(jù)塊總數(shù)大小的矩陣。矢量的第一個元素為直流DC 分量,其余63個為交流AC 分量,頻率依次升高。
DC 和AC 系數(shù)分別進行Huffman 編碼,由于相鄰數(shù)據(jù)塊的DC 分量相差不大,因此可將DC 分量先進行DPCM 編碼,再進行Huffman 編碼,進一步壓縮數(shù)據(jù)量。在編程中,還應(yīng)注意AC全零的情況。該部分主要編程如下:
圖2 DCT 的“Z”形順序
(3)壓縮性能
根據(jù)DC、AC 系數(shù)進行Huffman 編碼后的兩個矢量,計算圖像壓縮編碼后的總的信息量,與編碼之前的信息量進行比較,從而計算編碼比特率和壓縮比特率。
解壓縮過程是壓縮的反過程,JPEG 圖像壓縮算法為有損算法,但其中一些步驟是可逆的。對壓縮后的數(shù)據(jù),首先通過Huffman 解碼還原出非零向量,根據(jù)在各塊合并過程中的eob 結(jié)束標志重新恢復(fù)成塊矩陣,然后乘以亮度量化表中的量化步長,最后進行DCT 逆變換。從而得到原圖像矩陣。這種有損算法會給圖像造成一定失真,但基本不影響圖像的視覺效果(譯碼程序略)。程序最后計算峰值信噪比。
用MATLAB 程序?qū)Σ煌笮。?bit/pixel 的4 幅灰度測試圖像做JPEG 壓縮編解碼實驗,計算編碼比特率、壓縮比與峰值信噪比,實驗結(jié)果如表2 所示。
結(jié)合上面的圖像,對比原始圖像和重建圖像的顯示效果可以看出,雖然大部分的DCT 系數(shù)都被丟棄,導(dǎo)致重建的圖像存在一定程度失真,但是重建圖像仍清晰可辨且圖像視覺效果差異不大,可見壓縮的效果比較理想。另外,程序中加入的量化參數(shù)quality決定截去的系數(shù)和壓縮比,增加quality 的值,可增大壓縮比,使壓縮編碼后的圖像占用內(nèi)存更小,因此該程序可適應(yīng)于不同場合圖像質(zhì)量的實際需求。
表2 壓縮的實驗結(jié)果
圖3 cameraman 與Lena 的原始圖像
圖4 cameraman 與Lena 的重建圖像
本文首先介紹了基于DCT 變換的JPEG 圖像壓縮編碼的基本原理,之后利用MatLab2008a 編程軟件對標準灰度圖像進行仿真,給出詳細的程序,給讀者以參考。程序中的量化參數(shù)quality,可根據(jù)實驗編程需要改變大小,以得到不同壓縮比的圖像,文章最后給出實驗結(jié)果。對于原始圖像和重建圖像,可以看出JPEG 算法在實現(xiàn)較高的壓縮比情況下可保證較高的圖像質(zhì)量。MatLab 做圖像仿真實驗,編程簡單且誤差較小,大大提高實驗結(jié)果的精度和可靠性?;谝陨蟽?yōu)點,JPEG 算法在不同的圖像壓縮需求下,得到廣泛的應(yīng)用。