嚴(yán)珍珍,劉建軍
(南京郵電大學(xué) 理學(xué)院,江蘇 南京 210023)
基于離散余弦變換的圖像壓縮編碼方法及改進(jìn)
嚴(yán)珍珍,劉建軍
(南京郵電大學(xué) 理學(xué)院,江蘇 南京 210023)
圖像壓縮是圖像信息傳遞的一個(gè)重要途徑。在對(duì)圖像壓縮的同時(shí),還必須保證恢復(fù)圖像的質(zhì)量。目前已出現(xiàn)多種壓縮技術(shù)并且有相應(yīng)的國(guó)際標(biāo)準(zhǔn),離散余弦變換(DCT)是許多圖像編碼國(guó)際標(biāo)準(zhǔn)的核心。DCT作為一種有損壓縮算法,壓縮比較高,且壓縮后的圖像視覺(jué)效果明顯,因而成為圖像壓縮的一項(xiàng)重要技術(shù),被廣泛應(yīng)用在圖像壓縮領(lǐng)域,比如國(guó)際靜態(tài)圖像壓縮標(biāo)準(zhǔn)和動(dòng)態(tài)圖像壓縮標(biāo)準(zhǔn)中都采用了DCT變換。文中介紹了DCT的原理以及它在圖像壓縮方面的應(yīng)用。比較了兩種基于DCT的圖像壓縮編碼方法,提出了一種改進(jìn)的基于二維DCT的圖像壓縮算法。該算法通過(guò)改進(jìn)DCT系數(shù)的選取方法來(lái)控制圖像壓縮數(shù)組的大小,提高了圖像恢復(fù)質(zhì)量。在MATLAB上的實(shí)驗(yàn)結(jié)果表明,該算法提高了壓縮圖像的峰值信噪比,且耗時(shí)相對(duì)較少。
圖像壓縮;離散余弦變換;峰值信噪比;閾值
在當(dāng)今信息化社會(huì),大數(shù)據(jù)量的圖像信息會(huì)給存儲(chǔ)器的存儲(chǔ)容量和計(jì)算機(jī)的處理速度增加很大的壓力。如何高效地存儲(chǔ)和傳輸圖像信息將是面臨的一個(gè)重要問(wèn)題。對(duì)圖像信息進(jìn)行壓縮是一種很好的解決途徑。圖像壓縮即用少量的數(shù)據(jù)比特有損或無(wú)損地表示原始圖像的技術(shù)[1]。圖像壓縮編碼技術(shù)主要基于以下兩個(gè)原理:
(1)數(shù)字圖像的相關(guān)性。在一幅圖像中相鄰幀對(duì)應(yīng)的像素之間往往相關(guān)性很強(qiáng),減少圖像信息中的冗余度就可以實(shí)現(xiàn)圖像的壓縮;
(2)人的視覺(jué)特征。利用人的視覺(jué)對(duì)邊緣急劇變化不敏感以及對(duì)顏色分辨力弱的特點(diǎn),可以在適當(dāng)降低編碼精度的情況下不影響總體視覺(jué)效果。
圖像壓縮有很多種方法,如離散余弦變換法、分形法和小波變換法等[2]。離散余弦變換(DCT)屬于正交變換[3],圖像經(jīng)過(guò)DCT變換后大部分能量集中在少數(shù)的系數(shù)上,并且大部分在圖像塊的左上角,因而是對(duì)語(yǔ)音和圖像信號(hào)進(jìn)行變換的一項(xiàng)重要技術(shù)。從原理上講可以對(duì)整幅圖像進(jìn)行DCT變換,但是由于圖像各部分上的細(xì)節(jié)程度不一樣,對(duì)整體進(jìn)行變換的效果不好。很多研究人員對(duì)此做了改進(jìn),比如對(duì)圖像進(jìn)行分塊處理[4]。
文中提出一種基于DCT的圖像壓縮編碼方法,通過(guò)改進(jìn)離散余弦變換系數(shù)的選取方法來(lái)控制圖像壓縮數(shù)組的大小。利用Matlab進(jìn)行實(shí)驗(yàn),結(jié)果顯示改進(jìn)算法具有較好的壓縮效果,且算法耗時(shí)相對(duì)較短。
1.1 二維DCT變換基本原理
離散余弦變換是一種與傅里葉變換相關(guān)的數(shù)學(xué)運(yùn)算。在傅里葉級(jí)數(shù)展開(kāi)式中,如果展開(kāi)的函數(shù)是實(shí)偶函數(shù),則傅里葉級(jí)數(shù)中只包含余弦項(xiàng),再進(jìn)行離散化就可以導(dǎo)出余弦變換,因此稱(chēng)之為離散余弦變換。二維DCT的解析式如下[5]:
設(shè)f(k,l)為二維離散函數(shù),k,l=0,1,…,N-1,進(jìn)行離散變換后:
(1)
其反變換為:
(2)
其中,k,l=0,1,…,N-1;c(x)=c(y)=
1.2 DCT的壓縮過(guò)程
圖像壓縮分為三個(gè)過(guò)程。首先是對(duì)圖像進(jìn)行DCT變換,正交變換編碼的基本思想是將圖像編碼變換到頻域上進(jìn)行。由于圖像各個(gè)部位上的細(xì)節(jié)豐富程度有所不同,若對(duì)整幅圖像進(jìn)行DCT變換,恢復(fù)后的圖片質(zhì)量不好[6]。因此將圖像分割為8×8的子塊,對(duì)每個(gè)子塊進(jìn)行二維DCT變換。從圖1中可以看到,圖像的左上角亮度較高,所以DCT變換后能量主要集中在左上角的低頻分量中[7]。由于左上角對(duì)應(yīng)的DCT系數(shù)比較大,而右下角區(qū)域的高頻細(xì)節(jié)分量對(duì)應(yīng)的DCT系數(shù)較小,這樣就能只編碼和傳輸少數(shù)系數(shù)而不嚴(yán)重影響圖像質(zhì)量[8]。
其次是對(duì)變換后的DCT系數(shù)進(jìn)行量化,它是一個(gè)非常重要的過(guò)程,是信息損失的根源[9]。在壓縮算法中通常使用均勻量化器,具體的量化定義為:對(duì)變換后8×8子塊中的DCT系數(shù)除以其量化步長(zhǎng),然后四舍五入。量化表達(dá)式為:
圖1 圖像頻譜圖
(3)
在量化過(guò)程中,高頻部分的量化閾值比較大,目的是盡可能將高頻部分系數(shù)轉(zhuǎn)化為0;低頻部分的量化閾值比較小,目的是盡可能保留圖像主要能量。
最后是對(duì)量化后的系數(shù)進(jìn)行編碼。目前的編碼方法有很多種,常用的編碼方法有預(yù)測(cè)編碼[11]、變換編碼[12]和統(tǒng)計(jì)編碼[13]等等,而DCT變換應(yīng)用的就是變換編碼。變換編碼并不是直接對(duì)空域圖像信號(hào)進(jìn)行編碼,而是先將空域圖像信號(hào)變換到頻域中,產(chǎn)生一些變換系數(shù),然后對(duì)這些變換系數(shù)進(jìn)行編碼處理。
離散余弦變換編碼的基本原理框圖如圖2所示。
圖2 離散余弦變換編碼的基本原理框圖
1.3 基于DCT變換的圖像壓縮
從圖1可以看出,圖像的左上角亮度較高,由于DCT變換后能量主要集中在左上角的低頻分量中,對(duì)應(yīng)的DCT系數(shù)比較大。為了達(dá)到圖像壓縮的目的,在壓縮過(guò)程中可以只保留較大的DCT系數(shù),忽略較小的DCT系數(shù)。
一種方法是只保留每個(gè)子塊DCT系數(shù)矩陣的左上角10個(gè)DCT系數(shù),其余系數(shù)全部歸為0,這種方法是根據(jù)矩陣分塊的思路實(shí)現(xiàn)的,也稱(chēng)為間接實(shí)現(xiàn)算法[14],文中記為算法一。在一般情況下恢復(fù)的圖像在視覺(jué)效果不會(huì)有太大影響,但是圖像丟失的信息較多。
另一種方法是對(duì)DCT變化后的矩陣采用一致量化器量化,通過(guò)產(chǎn)生一個(gè)二維DCT變換矩陣,對(duì)變換后的系數(shù)矩陣進(jìn)行量化,然后設(shè)定閾值來(lái)減少非零系數(shù),對(duì)于小于設(shè)定閾值的歸零處理[5],文中記為算法二。此算法在圖像恢復(fù)時(shí)容易出現(xiàn)塊效應(yīng)。
2.1 算法思想及步驟
對(duì)圖像而言,低頻DCT系數(shù)一般包含圖像的大部分能量,因此低頻系數(shù)比高頻系數(shù)更為重要,但是完全放棄高頻系數(shù)會(huì)使圖像丟失太多信息。比如說(shuō)在只留有少量的低頻系數(shù)的時(shí)候,忽略高頻系數(shù)可能會(huì)丟失一些具有相對(duì)能量較高的中高頻系數(shù)。該算法首先將圖像分割為8×8的子塊,對(duì)每個(gè)子塊進(jìn)行二維DCT變換;在系數(shù)的選取上,保留系數(shù)矩陣左上角的10個(gè)系數(shù),對(duì)剩下的54個(gè)系數(shù)設(shè)定閾值,對(duì)小于指定閾值的做0處理;最后把篩選的DCT系數(shù)進(jìn)行整合。將這種改進(jìn)算法記為算法三。
算法三的具體過(guò)程如下:
(1)將圖像劃分為8×8的像素子塊,對(duì)每個(gè)子塊進(jìn)行離散余弦變換;
(2)DCT變換之后得到DCT系數(shù)矩陣,保留系數(shù)矩陣的左上角10個(gè)系數(shù),然后對(duì)剩下54個(gè)系數(shù)設(shè)定閾值進(jìn)行截?cái)嗵幚?,?duì)于小于指定閾值的系數(shù)歸0處理,大于指定閾值的保持不變;
(3)對(duì)變換系數(shù)進(jìn)行編碼處理,經(jīng)過(guò)編碼后,每個(gè)圖像塊都和碼書(shū)中的某個(gè)碼字相對(duì)應(yīng)。
2.2 MATLAB程序?qū)崿F(xiàn)及效果分析
圖像壓縮要有評(píng)價(jià)標(biāo)準(zhǔn),主要包括編碼復(fù)雜度、圖像恢復(fù)質(zhì)量和所消耗時(shí)間等。常用的圖像恢復(fù)質(zhì)量的度量標(biāo)準(zhǔn)如峰值信噪比[15]:
(4)
實(shí)驗(yàn)采用400×400的Lena圖,利用Matlab工具對(duì)圖像進(jìn)行仿真。下面從峰值信噪比和算法用時(shí)兩個(gè)方面對(duì)上述三種算法作比較,見(jiàn)圖3。
從圖像的主觀視覺(jué)效果來(lái)看,恢復(fù)質(zhì)量都不錯(cuò),算法二中恢復(fù)的圖像相對(duì)較差一些,出現(xiàn)了塊效應(yīng)。為了直觀顯示DCT壓縮的效果,圖3(d)為算法三中圖像壓縮后的數(shù)據(jù)圖像。
表1顯示了上述三種算法的耗時(shí)和峰值信噪比。
表1 三種算法的耗時(shí)和峰值信噪比
圖3 實(shí)驗(yàn)圖像
可以看出,算法二峰值信噪比是比較低的,算法三的峰值信噪比得到了較大提高。算法一耗時(shí)最長(zhǎng),算法二和算法三耗時(shí)較短,并且二者用時(shí)不相上下。
通過(guò)以上主觀視覺(jué)效果、峰值信噪比及用時(shí)等方面的綜合比較來(lái)看,基于DCT圖像壓縮編碼的改進(jìn)算法,提高了圖像的恢復(fù)質(zhì)量,而消耗時(shí)間也相對(duì)較短,達(dá)到了比較理想的壓縮效果。
DCT用少量的數(shù)據(jù)點(diǎn)表示原圖像,具有算法簡(jiǎn)單和易于實(shí)現(xiàn)等優(yōu)點(diǎn),它是圖像壓縮的一項(xiàng)重要技術(shù)。但是由于分塊時(shí)塊與塊的邊界相關(guān)性不能去掉,所以在低比特率條件下會(huì)出現(xiàn)塊效應(yīng)[16]。文中對(duì)已有的兩種算法進(jìn)行實(shí)現(xiàn),并提出了一種基于DCT圖像壓縮編碼的改進(jìn)算法。將三種算法用Matlab編程進(jìn)行實(shí)驗(yàn),結(jié)果表明這種改進(jìn)算法的耗時(shí)相對(duì)較少,并且圖像的恢復(fù)質(zhì)量最好。
[1] 高國(guó)芳.數(shù)字圖像壓縮處理技術(shù)[J].重慶科技學(xué)院學(xué)報(bào):自然科學(xué)版,2006,8(2):93-95.
[2] 張兆禮.現(xiàn)代圖像處理技術(shù)及Matlab實(shí)現(xiàn)[M].北京:人民郵電出版社,2001.
[3] Chen Wen-Hsiung,Smith C,Fralick S.A fast computational algorithm for the discrete cosine transform[J].IEEE Transactions on Communications,1977,25(9):1004-1009.
[4] 李高平.分形法圖像壓縮編碼[M].西安:西安交通大學(xué)出版社,2010.
[5] Zhao Debin,Zhang Dapeng,Gao Wen.Embedded image coding based on hierarchical discrete cosine transform[J].Journal of Software,2001,12(9):1287-1294.
[6] 張 巖.MATLAB圖像處理[M].北京:人民郵電出版社,2014.
[7] 陳守吉,張立明.分形與圖像壓縮[M].上海:上??萍冀逃霭嫔?1998.
[8] 張巧芳,李光耀,丁美林,等.基于單幅圖像的三維瀏覽圖生成算法[J].計(jì)算機(jī)技術(shù)與發(fā)展,2010,20(1):22-24.
[9] 趙 珊,趙 倩.基于DCT系數(shù)的JPEG圖像檢索算法[J].計(jì)算機(jī)工程,2010,36(19):190-192.
[10] 阮秋奇.數(shù)字圖像處理學(xué)[M].北京:電子工業(yè)出版社,2001.
[11] Li Y,Gong P,Sasagawa T.Integrated shadow removal based on photogrammetry and image analysis[J].International Journal of Remote Sensing,2005,26(18):3911-3929.
[12] Tsai V J D.A comparative study on shadow compensation of color aerial images in invariant color models[J].IEEE Trans on Geoscience and Remote Sensing,2006,44(6):1661-1671.
[13] 盧佩新,趙國(guó)安.基于終端-服務(wù)器模式的掃描儀圖像獲取技術(shù)[J].計(jì)算機(jī)技術(shù)與發(fā)展,2010,20(3):28-31.
[14] 李秀敏,萬(wàn)里青,周擁軍.基于Matlab的DCT變換在JPEG圖像壓縮中應(yīng)用[J].電光與控制,2005,12(2):64-67.
[15] 王愛(ài)玲,葉明生,鄧秋香.MATLAB2007圖像處理技術(shù)與應(yīng)用[M].北京:電子工業(yè)出版社,2008.
[16] Xiong Z,Ramchandran K,Orchard M,et al.A comparative study of DCT and wavelet-based image coding[J].IEEE Trans on Circuits System Video Technology,1999,9(8):692-695.
Improved Image Compression Coding Method Based on Discrete Cosine Transform
YAN Zhen-zhen,LIU Jian-jun
(College of Science,Nanjing University of Posts and Telecommunications,Nanjing 210023,China)
Image compression is an important way of image information transfer.The quality of image must be ensured when it is compressed.Among kinds of compressing methods,Discrete Cosine Transform (DCT) is the core of most international image compressing standards.As a lossy compression algorithm,DCT can achieve high compression ratio and good visual effect.So the method becomes an important technology of image compression and it has been widely used in the areas such as image compression,especially in the JPEG and the MPEG.The principle of DCT and its applications in image compression are introduced in this paper.Based on comparison of two kinds of image compression based on DCT,an improved image compression method based on DCT is proposed.By choosing coefficient of DCT to control the size of an array of image compression,the new method improves the quality of image restoration.The experiments of MATLAB show that the proposed algorithm improves the PSNR of compressed images and consumes relatively few time.
image compression;discrete cosine transform;PSNR;threshold
2015-04-30
2015-08-05
時(shí)間:2016-01-04
國(guó)家自然科學(xué)基金資助項(xiàng)目(11471114,61179027)
嚴(yán)珍珍(1978-),女,副教授,研究方向?yàn)閯?dòng)力系統(tǒng)、分形和非線性分析;劉建軍(1991-),男,研究生,研究方向?yàn)榉蔷€性分析。
http://www.cnki.net/kcms/detail/61.1450.TP.20160104.1453.020.html
TP301.6
A
1673-629X(2016)01-0147-03
10.3969/j.issn.1673-629X.2016.01.031