李 鵬,史 峰
(1.南京信息工程大學(xué),江蘇省氣象探測與信息處理重點(diǎn)實(shí)驗(yàn)室,江蘇 南京 210044;2.南京信息工程大學(xué)濱江學(xué)院,江蘇 無錫 214105;3.南京信息工程大學(xué),江蘇省氣象傳感網(wǎng)技術(shù)工程中心,江蘇 南京 210044)
圖像壓縮技術(shù)分為有損壓縮和無損壓縮[1],伴隨5G 時(shí)代的到來,圖像數(shù)據(jù)量將達(dá)到一個(gè)全新的高度,國內(nèi)外研究學(xué)者對于圖像壓縮技術(shù)的研究也從未停止。Kadhim[2]利用二維離散小波變換中多分辨率特性和時(shí)頻局部化特性通過安排和識別比特流中的不同分辨率來產(chǎn)生高度可伸縮的比特流從而起到壓縮的效果。Alshorman[3]通過Frei-Chen 基技術(shù)和改進(jìn)的游程編碼(RLE)對圖像進(jìn)行壓縮,利用Frei-Chen 技術(shù)將平均子空間應(yīng)用于3×3 的塊,利用單個(gè)值代替最高能量的塊。Mohammed[4]提出了一種基于離散傅里葉變換(Discrete Fourier Transform,DFT)和矩陣最小化(Matrix Minimization,MM)算法的高分辨率圖像壓縮算法。鄭運(yùn)平[5]提出基于迭代控制搜索策略的快速分形圖像壓縮算法,通過設(shè)置搜索終止條件,去除低效搜索和無效搜索達(dá)到降低計(jì)算復(fù)雜度的目的。張茗茗[6]提出了基于自適應(yīng)搜索的絕對矩塊截?cái)嗑幋a壓縮算法,其實(shí)現(xiàn)方法是根據(jù)中值來確定搜索范圍和圖像中心閾值,根據(jù)圖像的中心閾值來尋找與上下中心距離偏差值之和最小的所有像素,在降低復(fù)雜度的同時(shí)較好地提升圖像質(zhì)量。
本文通過對離散余弦變換(Discrete cosine transform,DCT)[7]與離散小波變換(Discrete wavelet transform,DWT)[8]方法進(jìn)行計(jì)算效率和壓縮質(zhì)量的對比,發(fā)現(xiàn)影響圖像編碼的主要原因是量化器和熵編碼器的區(qū)別而非DCT 和DWT 的區(qū)別[9]。由于離散余弦變換計(jì)算量小且對硬件的兼容性好,DCT 在一些當(dāng)代圖像和視頻壓縮標(biāo)準(zhǔn)(如JPEG)中得到廣泛應(yīng)用[10]。因此提出了一種基于DCT 變換的自適應(yīng)有損壓縮方法。
離散余弦變換是一種正交變換,該變換來源于離散傅里葉變換,由于DCT 算法比DFT 操作簡單且計(jì)算量小,因此常被用于圖像處理和語音信號處理方面。信號經(jīng)過DCT 變換從時(shí)域轉(zhuǎn)換為頻域具有“能量集中”的特性,這也是量化的基礎(chǔ)。
在使用DCT 對彩色圖像進(jìn)行處理時(shí),由于彩色圖像的顏色值分布為0~255,而DCT 處理的范圍為-127~128,因此在DCT 變換前需編碼進(jìn)行減128的操作,在解碼時(shí)執(zhí)行加128 的操作??焖貲CT 及其反變換的定義如式(1)、式(2)。
式中:
Fxy為原始圖像數(shù)據(jù),Xuv為DCT 變換后數(shù)據(jù),圖像分塊規(guī)則可以為8×8、16×16、32×32,遇到圖像像素不足時(shí)補(bǔ)零。以8×8 為例,每個(gè)塊看成二維坐標(biāo)中64 個(gè)點(diǎn),快速DCT 是將這64 個(gè)點(diǎn)數(shù)據(jù)作為輸入信號分解為64 個(gè)規(guī)范正交基信號,輸出的64 個(gè)基信號幅度組合被稱為DCT 系數(shù)。在這個(gè)二維坐標(biāo)中(0,0)稱為直流系數(shù)DC,剩余63 個(gè)點(diǎn)稱為交流系數(shù)AC。
本文所提出的有損壓縮算法主要是無損編碼器的設(shè)計(jì),預(yù)處理后的圖像數(shù)據(jù)經(jīng)過閾值量化后,利用四種曲線對每個(gè)塊DCT 系數(shù)掃描并轉(zhuǎn)化為NZ 和IDX 兩個(gè)矢量。根據(jù)本文編碼規(guī)則選擇編碼占位最少的曲線作為該塊的掃描編碼曲線,利用自適應(yīng)方式達(dá)到進(jìn)一步壓縮圖像的目的。該算法整體實(shí)現(xiàn)流程圖如圖1 所示。
圖1 算法運(yùn)行流程圖
圖像RGB 空間存在過多的冗余性,需進(jìn)行RGB到Y(jié)CbCr 顏色空間轉(zhuǎn)換,轉(zhuǎn)換后的YCbCr 圖像能量主要集中于Y 平面內(nèi)。因此可以在不損失整個(gè)壓縮圖像質(zhì)量的前提下實(shí)現(xiàn)在Cb 和Cr 平面上達(dá)到高壓縮比。表1 給出了測試圖像在RGB 和YCbCr 空間中的能量分布。
表1 RGB 和YCbCr 測試圖像能量分布單位:%
不同平面能量計(jì)算公式如式(4)、式(5)。式中ER、EG、EB分別為紅綠藍(lán)平面的空間能量,ERGB、EYCbCr分別為兩種顏色空間總能量,EY、ECb、ECr分別代表亮度、藍(lán)色色度、紅色色度平面的空間能量,M、N表示圖像尺寸。
為了降低計(jì)算量,在對圖像進(jìn)行DCT 前需要先對圖像Y、Cb、Cr 平面進(jìn)行分塊,每個(gè)分塊都必須經(jīng)過DCT、閾值量化處理,量化使用均勻標(biāo)量量化器[11]。壓縮方法的評價(jià)指標(biāo)主要有壓縮比和重建圖像的質(zhì)量,本文分別使用單位像素深度(bits per pixel,bpp)和峰值信噪比(PSNR)作為壓縮比和圖像重建質(zhì)量的衡量指標(biāo)。bpp 和PSNR 計(jì)算公式如式(6)(7)。為了評估重建圖像的質(zhì)量,還考慮到圖像結(jié)構(gòu)相似性(Structural Similarity Index,SSIM)和特征相似度(Feature Similarity,F(xiàn)SIM),SSIM 和FSIM可以很好地用來評估壓縮后的圖像質(zhì)量。
式中:MSE 為圖像R、G、B 平面的均方誤差。
式中:I和K分別為原始和重構(gòu)圖像的R、G、B 平面,N和M為圖像尺寸。
無損自適應(yīng)編碼器結(jié)合自適應(yīng)掃描和RLE 技術(shù),經(jīng)過閾值處理和量化步驟,得到DCT 系數(shù)。首先,對DCT 系數(shù)塊進(jìn)行排序,并在掃描后將其轉(zhuǎn)換為矢量。在本文算法實(shí)現(xiàn)過程中分別采用Zig-Zag、Hilbert、水平、垂直四種掃描方式對預(yù)處理后的數(shù)據(jù)矩陣進(jìn)行掃描處理并生成矢量數(shù)據(jù)。為了能夠有效且快速地對DCT 系數(shù)矢量進(jìn)行編碼,每次掃描結(jié)束編碼器都會生成兩個(gè)矢量。分別為NZ 向量,用來存儲保留的DCT 數(shù)值中非零的數(shù)值;IDX 向量,用來記錄并存儲兩個(gè)非零數(shù)值之間零的個(gè)數(shù)。因?yàn)榉橇銛?shù)值的個(gè)數(shù)是確定的,所以使用IDX 向量中最大值作為一個(gè)特征量,選取IDX 向量最大值中的最小值對應(yīng)曲線作為最佳掃描曲線對數(shù)據(jù)進(jìn)行編碼。
算法中自適應(yīng)的實(shí)現(xiàn)是由于每個(gè)DCT 塊獨(dú)立編碼,每個(gè)塊都進(jìn)行四次掃描,只選擇最佳的掃描曲線,形成了一個(gè)DCT 塊自動選擇的模式,也稱自適應(yīng)選擇。正因?yàn)槊總€(gè)DCT 塊獨(dú)立編碼,因此,在本算法中需要引入全局標(biāo)頭的概念,用來控制編碼和解碼過程,全局標(biāo)頭由三部分組成:
(1)每個(gè)塊的NZ 系數(shù)大小Li,參數(shù)Li用P位編碼;
(2)每個(gè)塊的最佳掃描曲線ASi,由于采用四種掃描方式,所以需要使用2 位編碼;
(3)編碼每個(gè)塊IDXi向量時(shí)所需的位數(shù)qi,qi用P位編碼。
參數(shù)P和qi的計(jì)算公式如式(9)、式(10),其中n為分塊大小。max(IDXi)為最佳掃描曲線對應(yīng)非零數(shù)值之間零的個(gè)數(shù)的最大值。
自適應(yīng)編解碼實(shí)現(xiàn)過程如圖2 所示。在編碼端使用2 位對四種掃描曲線進(jìn)行編碼(編碼格式為00、01、10、11),對預(yù)處理后的圖像使用四種掃描曲線進(jìn)行掃描,將掃描后生成的矢量數(shù)據(jù)分為NZi和IDXi兩組向量。對四組IDX 最大值比較選擇最小數(shù)值對應(yīng)曲線作為最佳掃描曲線,并將最佳掃描曲線的編碼存入ASi中,編碼后的圖像數(shù)據(jù)流由定義控制位的全局標(biāo)頭和NZi、IDXi組成。圖像數(shù)據(jù)流格式如圖3 所示。
圖2 自適應(yīng)編解碼實(shí)現(xiàn)流程圖
圖3 圖像數(shù)據(jù)流格式
對編碼后的數(shù)據(jù)進(jìn)行解碼時(shí)需要先讀取全局標(biāo)頭,根據(jù)全局標(biāo)頭中定義的控制位信息進(jìn)行解碼并將解碼后的DCT 塊初始化為零,同時(shí)生成解碼后的NZi向量DecNZi,將DecNZi向量填充進(jìn)DecNZi塊中實(shí)現(xiàn)整個(gè)解碼過程。
直流系數(shù)是塊內(nèi)所有圖像采樣值的平均值,因此,交流系數(shù)與直流系數(shù)分開處理。通常,圖像中相鄰塊的直流分量之間具有高度的相關(guān)性。因此對直流系數(shù)采用差分直流編碼比編碼量化后的直流系數(shù)本身更有效,并且可以獲得較高的壓縮包比。熵編碼是任何壓縮算法的重要步驟,它通過向量統(tǒng)計(jì)特性對差分直流編碼后的數(shù)據(jù)編碼從而實(shí)現(xiàn)額外的壓縮。圖3 可以看出,圖像數(shù)據(jù)流之間存在很大差異。因此,算術(shù)編碼器作為熵編碼器分別應(yīng)用于全局標(biāo)頭、NZ 向量和IDX 向量的每個(gè)部分對它們進(jìn)行編碼,從而實(shí)現(xiàn)無損壓縮。
隨機(jī)抽取Lena 灰度圖中的隨機(jī)8?8 塊為例闡述本文算法具體過程。
經(jīng)過本文DCT、量化、閾值處理后,該圖像塊數(shù)據(jù)變?yōu)?
采用之字形掃描方式舉例闡述NZ 與IDX 向量的闡述原理,如圖4 所示。
圖4 NZ 和IDX 生成規(guī)則
2.5.1 編碼算法
(1)對圖像進(jìn)行預(yù)處理(包含分塊、DCT、量化、閾值處理);
(2)按照四種掃描方式(Zig-Zag、垂直、水平、Hilbert)掃描預(yù)處理后的數(shù)據(jù)并生成四組向量;
(3)生成包含非零DCT 系數(shù)及其指標(biāo)的向量NZi和idxNZi以及非零DCT 系數(shù)前0 的個(gè)數(shù)的向量IDXi;
(4)尋找最佳掃描曲線。
2.5.2 解碼算法:
(1)讀取解碼塊的NZ、IDX 向量;
(2)讀取ASi選擇相應(yīng)的掃描順序;
(3)將解碼后的DCT 塊初始化為0;
(4)生成解碼后的NZ 向量DecNZ;
(5)用DecNZ 向量填充DecDCT 塊。
將上述舉例數(shù)據(jù)在Q=7,n=8 的條件下分別采用文中四種掃描曲線進(jìn)行掃描,生成四組IDXi向量數(shù)值如圖5 所示。
從圖5 可以看出,在對該塊進(jìn)行掃描后,Zig-Zag掃描曲線所生成向量中的最大值在四組曲線中最小,所以選擇該曲線作為最佳掃描曲線對該塊進(jìn)行編碼。通過數(shù)值計(jì)算進(jìn)一步驗(yàn)證本文算法的優(yōu)越性。Q=7,n=8,P=log2(8×8)=6 bit,q1=[log2(9)]=4,所以用P位編碼為“000100”,L1=16,用P位編碼為“010000”。
圖5 四種掃描曲線值
因此編碼該塊需要位數(shù)為:m=P+2+P+(Q×L1)+(q1×L1) =190 bit。全局標(biāo)頭以“010000 00 000100”開始。與類似的方法進(jìn)行對比,文獻(xiàn)[12]需要207 bit,文獻(xiàn)[13]需要190 bit,RLE[14]需要294 bit。
為了驗(yàn)證本文提出的壓縮算法,本研究進(jìn)行了兩組實(shí)驗(yàn),第一組實(shí)驗(yàn)使用了文獻(xiàn)中廣泛使用的7幅測試彩色圖像。這些彩色圖像分別是512?512的“Airplane”、“Peppers”、“Lina”,以及大小為256?256 的“Girl”、“Couple”、“House”和“Zelda”。第二組實(shí)驗(yàn)使用了Kodak 無損真彩色圖像數(shù)據(jù)庫。對7 幅測試圖像采用不同塊大小(8?8、16?16、32?32)和不同量化器寬度Q(7,8,9)。
圖6(a)為在不同Q情況下bpp 和PSNR 的平均性能,可以看出Q=8 時(shí)性能最好,圖6(b)為Q=8 時(shí)不同分塊大小時(shí)bpp 和PSNR 的平均性能,可以看出,在Q=8,16?16 情況下圖像性能最好。
圖6 PSNR 與bpp 在圖像上的平均表現(xiàn)
將實(shí)驗(yàn)結(jié)果(Q=8,塊大小16 ?16) 與dLUT[12]、CDABS[13]、JPEG[15]、CBTF-PF[15]比較,見表2、表3?;谶@些數(shù)據(jù),不難看出本文方法在性能方面的優(yōu)越性。
表2 與CDABS 和dLUT 性能比較
表3 與JPEG 和CBTF-PF 性能比較
圖7 給出了本算法對512×512 的Lena 圖像的可視化結(jié)果,其中PSNR=30.78,bpp =0.67,SSIM=0.9852,F(xiàn)SIM=0.9834。表4 給出了Lena 圖像對比結(jié)果。
圖7 效果對比圖
表4 Lena 圖像性能分析對比
為了進(jìn)一步證明,將所提出的方法在Kodak 真彩色圖像數(shù)據(jù)庫上與Hops 編碼器、LHE、JPEG2000和JPEG 進(jìn)行了比較,如圖8 所示。從圖8(a)和圖8(b) 的曲線可以看出,與JPEG[15]、Hops 編碼器[17]、LHE[18]和JPEG2000[18]相比,該方法對于小于0.5 bpp 情況下,本文方法給出的PSNR 雖然比Hops 編碼器少,但是FSIM 方面整體顯著提高,在大于0.5 bpp 情況下,本文方法給出的PSNR 和FSIM均高于引用方法。從這些曲線中可以看出本文方法要優(yōu)于引用方法。
圖8 Kodak 圖像數(shù)據(jù)庫測試圖像的平均性能
上述實(shí)驗(yàn)運(yùn)行環(huán)境為Intel I5-8400@2.8GHz,12G RAM,MATLAB(R2018a)。產(chǎn)生上述差異的主要原因在于本文的編碼器的自適應(yīng)特性,能夠在傳統(tǒng)算法的基礎(chǔ)上更加靈活地選擇合適的掃描曲線,使得DCT 系數(shù)能夠最大化節(jié)約編碼資源,起到進(jìn)一步壓縮圖像的目的。這就使得在相同壓縮比情況下本文算法擁有更高的清晰度,保留更多的圖像細(xì)節(jié)。因此,圖像的bpp、PSNR、SSIM 參數(shù)表現(xiàn)較好。表5 給出了本文方法在Kodak 數(shù)據(jù)庫使用不同圖像質(zhì)量的性能。
表5 本文方法性能分析
本文提出了一種彩色圖像壓縮算法,通過離散余弦變換結(jié)合自適應(yīng)的方法實(shí)現(xiàn)了對圖像的壓縮,算法可應(yīng)用于智能識別中敏感圖像壓縮傳輸與存儲,從而進(jìn)一步節(jié)約傳輸帶寬和存儲容量。通過上述實(shí)驗(yàn)結(jié)果表明,本文算法通過自適應(yīng)方式選擇最佳掃描曲線使得在相同壓縮比情況下比JPEG 算法在PSNR、SSIM、FSIM 性能上均得到明顯提升。自適應(yīng)所帶來的計(jì)算量可通過較小的編碼占位來彌補(bǔ),保障了在時(shí)間相同的情況下,壓縮效果更好。在下一步的工作中將對算法復(fù)雜度進(jìn)行優(yōu)化改進(jìn),從而進(jìn)一步提高壓縮效率。