摘 要:DCT變換是圖像壓縮的一項重要技術(shù),如何準(zhǔn)確、快速進(jìn)行圖像壓縮一直是國內(nèi)外研究的熱點。主要介紹基于DCT變換的圖像壓縮編碼算法,給出具體的實現(xiàn)方法和步驟,并用Matlab進(jìn)行了算法仿真。實驗結(jié)果表明,該算法實現(xiàn)簡單,在很大壓縮范圍內(nèi),都能得到很好的重建圖像質(zhì)量,滿足不同場合要求不同圖像質(zhì)量的實際需要。這里利用Matlab做仿真實驗,方法簡單、速度快且誤差小,大大提高了圖像壓縮的效率和精度。
關(guān)鍵詞:圖像壓縮;DCT變換;Matlab仿真;峰值信噪比
中圖分類號:TP391 文獻(xiàn)標(biāo)識碼:B 文章編號:1004373X(2008)1615703
Image Compression Coding and Implementation Based on 2DDCT
LI Chunxia
(College of Electric and Information Engineering,Shaanxi University of Science Technology,Xi′an,710021,China)
Abstract:The DCT transform is an important technique in the field of image compression.How to compress the image accurately and fast has been a research focus both at home and abroad all the time.This paper mainly introduces the algorithm of the image compress coding based on DCT,and shows details of realization.Then the algorithm is simulated by Matlab.Simulation experiments show that the algorithm is simple to realize.The reconstructed images are of good quality satisfying the demands of different image quality on various occasions under the circumstances of very large compression range.The innovation spot of this paper is that the method doing experiments with Matlab is simple,rapid and with little error.It can improve the efficiency and precision of the image compression greatly.
Keywords:image compression;DCT transform;Matlab simulation;peak signal to noise ratio
在信息世界迅猛發(fā)展的今天,圖像傳輸已成為一項重要內(nèi)容,而傳輸信息量的大小是影響傳輸速度的重要因素之一。要想提高通信速度,一個必要的手段就是圖像的壓縮編碼技術(shù),減少傳輸?shù)臄?shù)據(jù)量。于是,對圖像信息的壓縮成為一個不可或缺的環(huán)節(jié)。圖像壓縮是關(guān)于用最少的數(shù)據(jù)量表示盡可能多的原圖像信息的一個過程。本文主要研究基于離散余弦變換(Discrete Cosine Transform,DCT)的有損壓縮編碼技術(shù)。DCT是一種實數(shù)域變換,其變換核為余弦函數(shù),計算速度快。DCT除了具有一般正交變換的性質(zhì)外,它的變換陣的基向量能很好地描述人類語音信號和圖像信號的相關(guān)特征。因此,在對語音信號、圖像信號的變換中,DCT變換被認(rèn)為是最接近KL(KarhunenLoeve)變換性能的準(zhǔn)最佳變換。
1 離散余弦變換的基本原理
DCT是正交變換的一種,它具有正交變換的一些有用性質(zhì):
(1) 熵保持性,即通過DCT變換后并不丟失信息。
(2) 能量保持性,并能把能量重新分配和集中。這就有可能采用熵壓縮法來壓縮系數(shù),即在質(zhì)量允許的情況下,舍棄一些能量很小的系數(shù),而對能量較大的系數(shù)分配較多的比特數(shù),對能量較小的系數(shù)分配較少的比特數(shù),從而使數(shù)據(jù)有較大的壓縮。
(3) 去相關(guān)性,即可使高度相關(guān)的空間樣值變?yōu)橄嚓P(guān)性較弱的變換系數(shù),從而減少空間樣值的冗余度。
基于DCT的壓縮算法之所以能壓縮信息的比特數(shù),是因為在經(jīng)過離散余弦變換后得到的系數(shù)矩陣中,數(shù)值較大的方差總是集中在少數(shù)系數(shù)中。這樣,把分布在變換域中的信息集中起來,為合理少分配比特數(shù)提供了可能。以下就是圖像尺寸為M×N的數(shù)據(jù)的二維DCT公式:
正變換(FDCT):F(u,v)=2MNC(u)C(v)[∑M-1x=0∑N-1y=0f(x,y)·
cos(2x+1)uπ2Mcos(2y+1)vπ2N](1)
u=0,1,2,…,M-1; v=0,1,2,…,N-1逆變換(IDCT):f(x,y)=2MN[∑M-1u=0∑N-1v=0C(u)C(v)F(u,v)·
cos(2x+1)uπ2Mcos(2y+1)vπ2N](2)
x=0,1,2,…,M-1; y=0,1,2,…,N-1式中,當(dāng)u,v=0時,C(u),C(v)=1/2;當(dāng)u,v≠0時,C(u),C(v)=1。
f(x,y)為像素值;F(u,v)為變換后的系數(shù),u,v為系數(shù)下標(biāo)。
2 DCT在圖像壓縮編碼中的應(yīng)用
DCT變換在圖像壓縮中有很多應(yīng)用,是JPEG,MPEG等圖像壓縮標(biāo)準(zhǔn)的重要數(shù)學(xué)基礎(chǔ)。在編碼過程中,首先將輸入圖像劃分為8×8大小的圖像塊,然后用正向二維DCT把每個塊轉(zhuǎn)變成64個DCT系數(shù)值。其中1個數(shù)值是直流(DC)系數(shù),即8×8空間域圖像子塊的平均值,其余63個是交流(AC)系數(shù)。接下來對DCT系數(shù)進(jìn)行量化以進(jìn)一步減少數(shù)據(jù)量。最后對量化后的系數(shù)進(jìn)行編碼和傳送,形成壓縮后的圖像格式。在解壓縮時首先對已編碼的量化的系數(shù)進(jìn)行解碼,然后求逆量化并利用二維DCT反變換把DCT系數(shù)轉(zhuǎn)化為8×8樣本像塊,最后將反變換后的塊組成一幅完整的圖像。
2.1 DCT變換
DCT的實現(xiàn)常常將圖像分成一些小而易處理的塊,這里假設(shè)選擇8×8的塊作為DCT計算的大小。DCT變換的實現(xiàn)有2種方法:
(1) 基于FFT的快速算法;
(2) DCT變換矩陣方法。
后者非常適合做8×8或16×16的圖像塊的DCT變換。一個M×M的DCT變換矩陣T定義為:T=(Ti,j)=1M,i=0,0≤j≤M-1
2Mcosπ(2j+1)i2M,1≤i≤M-1,0≤j≤M-1 如果設(shè)X為8×8像素矩陣,則X的離散余弦變換Y可表示為矩陣的乘積:為Y=TXT.T。在Matlab的仿真實現(xiàn)中,主要采用二維DCT變換的矩陣式定義來實現(xiàn),矩陣式定義可以表示為:[F(u,v)]=[T][f(x,y)][T].T,
[f(x,y)]=[T].T[F(u,v)][T]其中[f(x,y)]是空間數(shù)據(jù)矩陣;[F(u,v)]是變換系數(shù)矩陣;[T]是變換矩陣;[T].T是[T]轉(zhuǎn)置。
經(jīng)過DCT變換得到的系數(shù),其能量主要沿對角線分布,并主要集中在左上角。也就是說能量成分以低頻為主。因此,可以在確保一定的圖像質(zhì)量情況下。放棄一些次要信息,以達(dá)到壓縮目的。
2.2 DCT系數(shù)的量化與Z掃描
量化的作用是在一定的主觀保真度圖像質(zhì)量的前提下,丟掉那些對視覺影響不大的信息,以獲得較高的壓縮比。然而,量化也是導(dǎo)致圖像質(zhì)量下降的最主要原因。這里使用量化矩陣來實現(xiàn)量化。對于DCT輸出矩陣中的每一個元素,量化矩陣中的同一位置都有一個相應(yīng)的量化值,范圍是0~255。量化定義可以表述為:對64個DCT系數(shù)除以其量化步長,四舍五入取整,即:C(u,v)=I(xiàn)ntegerRound(F(u,v)/Q(u,v)) 式中,C(u,v)為量化的系數(shù)幅度,Q(u,v)為量化步長,它是量化表的元素,通常隨DCT系數(shù)的位置和彩色分量的不同而取不同的值。因為人眼對亮度信號比對色差信號更敏感,因此使用了2個量化表,一個是亮度量化表,一個是色差量化表。此外,由于人眼對低頻分量的圖像比對高頻分量的圖像更敏感,因此量化表中的左上角的量化步長一般要比右下角的量化步長小。量化既要使得大部分?jǐn)?shù)據(jù)得以壓縮,同時又要保證通過量化和編碼之后能輸出一個與信道傳輸速率匹配的比特流。在DCT變換時使用量化矩陣很容易對圖像壓縮質(zhì)量進(jìn)行控制,用戶可根據(jù)具體的硬件存儲容量和所需要的圖像量,選擇合適的量化值。
圖1 量化系數(shù)的Z掃描量化后的系數(shù)需要重新編排,目的是為了增加連續(xù)的“0”系數(shù)的個數(shù),即“0”的游程長度,方法是按照Z字形的樣式編排,如圖1所示。這樣就把一個8×8的矩陣變成一個1×64的矢量,同時保證低頻分量先出現(xiàn),高頻分量后出現(xiàn)。矩陣的左上角元素為DC分量,其余63個為AC分量,由左上至右下頻率漸次升高。
2.3 壓縮編碼
原始圖像經(jīng)過離散余弦變換和量化后,最后一個步驟就是編碼。8×8圖像塊經(jīng)過DCT變換后得到的DC系數(shù)有2個特點:一是系數(shù)的數(shù)值比較大;二是相鄰圖像塊的DC系數(shù)值變化不大。根據(jù)這個特點,可以法使用差值沖編碼調(diào)制(DPCM)技術(shù),對相鄰圖像塊之間量化DC系數(shù)的差值Δ(Δ=DCi-DCi-1,其中DCi為第i個子圖像的直流量,DCi-1為前一個子圖像的直流量)進(jìn)行編碼。
量化后的AC系數(shù)的特點是包含有許多“0”的系數(shù),并且這許多的“0”是連續(xù)的,因此可以使用游程編碼(RLC,Run Length Coding)對它們進(jìn)行編碼。之后再使用熵編碼對DPCM編碼后的直流DC系數(shù)和游程編碼后的交流AC系數(shù)做進(jìn)一步的壓縮。熵編碼可以分兩步進(jìn)行,首先對DPCM編碼后的DC系數(shù)和RLE編碼后的AC系數(shù)轉(zhuǎn)換成中間符號序列,然后賦予這些符號以變長碼字。最后組成數(shù)據(jù)位流。把各種標(biāo)記代碼和編碼后的圖像數(shù)據(jù)組成一幀一幀的數(shù)據(jù),這樣做的目的是為了便于傳輸、存儲和譯碼器進(jìn)行譯碼,這樣組織的數(shù)據(jù)通常稱為位數(shù)據(jù)流(bitstream)。
3 實驗結(jié)果分析與結(jié)論
基于前面的理論,下面使用二維離散余弦變換進(jìn)行圖像壓縮編碼。實驗利用Matlab 6.5對圖像peony.tif進(jìn)行仿真的結(jié)果如圖2所示。其中圖2(a)為原始圖像,圖2(b)為經(jīng)過DCT變換壓縮編解碼得到的圖像。
圖2 原始圖像與重建圖像比較對比上面的原始圖像與重建圖像,可以發(fā)現(xiàn)視覺效果相差很小,可見壓縮的效果比較理想。改變量化矩陣,對peony圖像做不同的量化,在不同的壓縮比下,得到質(zhì)量不同的重建圖像,并用峰值信噪比(Peak Signal to Noise Ratio,PSNR)進(jìn)行衡量。實驗數(shù)據(jù)如表1所示。
表1 不同壓縮比下壓縮圖像的峰值信噪比
量化矩陣Q倍乘Compress ratio壓縮比PSNR /dBQ.0.35.8639.45Q.219.833.6Q.429.731.23Q.945.0127.82
實驗結(jié)果表明,基于DCT的圖像壓縮算法實現(xiàn)簡單,在很大壓縮范圍內(nèi),都能得到很好的重建圖像質(zhì)量,滿足不同場合要求不同圖像質(zhì)量的實際需要。用Matlab做仿真實驗,方法簡單而且誤差小,大大提高了圖像壓縮的效率和精度。
DCT具有算法簡單,易于硬件實現(xiàn)等優(yōu)點,從而廣泛應(yīng)用于圖像壓縮領(lǐng)域,尤其在的高比特率傳輸條件下能取得令人滿意的壓縮效果。然而它在低比特率條件下的“方塊效應(yīng)”成了不容忽視的“瓶頸”缺陷。原因就在于DCT處理的圖像是分塊進(jìn)行的,塊與塊邊界兩邊的像素相關(guān)性不能去掉,從而形成了明顯的方塊邊界。若將DCT變換與其他編碼方法(如小波變換、分形等)相結(jié)合,會得到更好的效果。
參 考 文 獻(xiàn)
[1]張兆禮.現(xiàn)代圖像處理技術(shù)及Matlab實現(xiàn)[M].北京:人民郵電出版社,2001.
[2]徐飛.Matlab應(yīng)用圖像處理[M].西安:西安電子科技大學(xué)出版社,1990.
[3]何東健.數(shù)字圖像處理[M].西安:西安電子科技大學(xué)出版社,2002.
[4]朱劍英.基于DCT變換的圖像編碼方法研究\\.南京:南京理工大學(xué),2004.
[5]閆宇松,石青云.可逆的DCT整型變換與無失真圖像壓縮\\.軟件學(xué)報,2000,11(5):620627.
作者簡介 李春霞 女,陜西西安人。主要研究方向為圖像處理。
注:本文中所涉及到的圖表、注解、公式等內(nèi)容請以PDF格式閱讀原文