灰度圖像部分加密方法之SPIHT編碼加密

隨著圖像壓縮技術(shù)的發(fā)展,對壓縮數(shù)據(jù)進行加密的方法不但提高了加密效率,而且取得了廣泛應(yīng)用。然而,由于圖像數(shù)據(jù)量大、冗余度高,其壓縮數(shù)據(jù)量較大,這種方法的加密速度仍難于滿足圖像的實時安全傳輸要求。為此,我們基于SPIHT的灰度圖像部分加密方法,這種方法非常適用于灰度圖像加密。

一、SPIHT編碼原理

首先對圖像進行離散小波變換,并將所有高頻子帶小波系數(shù)根據(jù)一定規(guī)則劃分為空間方向樹(Spatial OrientationTrees,SOT)集合。然后用漸進量化編碼對小波系數(shù)進行編碼。在編碼中,SPIHT借助了3個鏈表:不重要系數(shù)鏈表(List ofInsignificant Pixels,LIP),不重要集合鏈表(List of InsignificantSets,LIS)和重要系數(shù)鏈表(List of Significant Pixels,LSP),并用小波系數(shù)矩陣中LL層的小波系數(shù)初始化LIP,用所有的SOT初始化LIS,初始化LSP為空集。

SPIHT編碼由掃描3個鏈表完成。當(dāng)閾值為Tk時,k=0,1,…,K(K由壓縮率決定),掃描過程如下:

(1)LIP掃描:將不重要系數(shù)保留在LIP中,重要系數(shù)移入LSP,并輸出表示系數(shù)重要性和符號的比特灰度圖像部分加密方法之SPIHT編碼加密;

(2)LIS掃描:掃描LIS中所有的SOT,如果SOT中不包括重要系數(shù)(即SOT不重要)將其保留在LIS中;反之,則將SOT分裂為4個直接后代和更小的SOT,將小SOT加入到LIS鏈尾,并判斷4個直接后代系數(shù)的重要性,不重要系數(shù)放入LIP中,重要系數(shù)放入LSP。同時,輸出表示SOT重要性、系數(shù)重要性和符號的比特灰度圖像部分加密方法之SPIHT編碼加密;

(3)LSP掃描:輸出LSP中每個系數(shù)第n(n=1b(Tk))個位平面的比特Bk,LSP到壓縮數(shù)據(jù)中。至此一個循環(huán)掃描完成,改變閾值Tk+1=Tk/2進入下一次掃描。如此迭代,直到輸出數(shù)據(jù)達到要求的壓縮率為止。

二、基于SPIHT算法的部分加密

3個鏈表掃描過程產(chǎn)生的不同類型壓縮數(shù)據(jù)在解碼中起著不同的作用。如果從中選擇對解碼極為重要的數(shù)據(jù),則只對這部分?jǐn)?shù)據(jù)進行加密即可保障圖像安全,進而得到新的圖像部分加密方案。

1、 SPIHT數(shù)據(jù)重要性分析

設(shè)SPIHT算法輸出的壓縮數(shù)據(jù)為B(比特流),B可以分成有序的子集B={Bo,B1,…,Bk),其中,Bk表示第k次迭代掃描產(chǎn)生的壓縮數(shù)據(jù)。Bk可以進一步劃分為Bk={Bk,LIP,Bk,LIS,
Bk,LSP),如圖1所示。

灰度圖像部分加密方法之SPIHT編碼加密

其中,Bk.LIP,Bk.LIS和Bk.LSP分別表示LIP掃描、LIS掃描和LSP掃描產(chǎn)生的壓縮數(shù)據(jù)。根據(jù)SPIHT編碼原理,Bk,LIP和Bk,LIS又分別由Bk,LIP_sig,Bk.LIP_sgn和Bk,LIS_T,
Bk.LIS_sig,Bk,LIS_sgn組成(見圖1)。

由上可見,SPIHT算法產(chǎn)生了Bk,LIP_sig,Bk.LIP_sgn,Bk,LIS_T,Bk.LIS_sig,Bk,LIS_sgn和Bk.LSP 6種類型數(shù)據(jù),下面結(jié)合實驗對其在解碼中的重要性進行討論:

(1)Bk,LIP_sig表示LIP鏈表中系數(shù)的重要性。LIP鏈表包含了所有低頻子帶系數(shù)和部分高頻子帶系數(shù)。由于低頻子帶集中了圖像的絕大部分能量,這部分?jǐn)?shù)據(jù)對圖像重構(gòu)極為重要。另外,在編碼中如果bi(Bk,LIP_sig且bi=1,則bi+1∈Bk,LIP_sig;如果bi=0,則bi+1∈Bk,LIP_sig,即改變Bk,LIP_sig將直接影響后面比特的意義,進而產(chǎn)生連鎖反應(yīng),直接影響后面大部分或所有數(shù)據(jù)的意義。所以,Bk,LIP_sig在解碼中是重要數(shù)據(jù)。圖2(a)是lena原始圖像;圖2(b)是改變這類數(shù)據(jù)后的重構(gòu)圖像,從中已不能分辨原圖像的任何信息。

灰度圖像部分加密方法之SPIHT編碼加密
(2)Bk.LIP_sgn表示LIP鏈表中重要系數(shù)的符號。它只會影響一個系數(shù)值,不影響其他數(shù)據(jù)的意義,因此,不屬于重要數(shù)據(jù)。圖2(c)是改變Bk.LIP_sgn后的重構(gòu)圖像,盡管發(fā)生了失真,
但仍能獲得原圖像信息。

(3)Bk.LIS_T表示SOT的重要性,影響SOT中的所有系數(shù)值。SPIHT算法中SOT的前后狀態(tài)相互關(guān)聯(lián)。如果第七次迭代掃描產(chǎn)生的Bk.LIS_T值不確定,后面迭代產(chǎn)生的Bk.LIS_T(Ti>k)
都會受到影響。也就是說,這類數(shù)據(jù)不但影響所有高頻子帶系數(shù)值,而且還影響其后面數(shù)據(jù)的意義。圖2(d)是改變Bk.LIS_T后的重建圖像,從中已無法辨別原圖像信息,表明了Bk.LIS_T
數(shù)據(jù)的重要性。

(4)Bk.LIS_sig表示SOT中系數(shù)的重要性。由于這些系數(shù)來自高頻子帶,表示圖像的紋理和邊緣,因此這部分?jǐn)?shù)據(jù)錯誤僅導(dǎo)致圖像模糊不清,但仍然可以分辨圖像輪廓。圖2(e)是改變這類數(shù)據(jù)后的重構(gòu)圖像,表明Bk.LIS_sig在解碼中的重要性較低。

(5)Bk,LIS_sgn表示SOT中重要系數(shù)的符號。它的作用與Bk.LIP_sgn相似,也屬于非重要解碼數(shù)據(jù)。不同的是Bk.LIP_sgn產(chǎn)生于LIP掃描,而Bk,LIS_sgn產(chǎn)生于LIP掃描。圖2(f)是改變
Bk,LIS_sgn后的重構(gòu)圖像,原圖像信息仍然可見。

(6)Bk.LSP表示系數(shù)最高位平面以下的比特,它能使重構(gòu)系數(shù)值逐漸逼近原系數(shù)值,從而進一步提高解壓縮圖像的質(zhì)量。改變Bk,LSP只影n向小波系數(shù)值的大小,但不影響其他比特的意義,因此為非重要比特。圖2(g)是改變這種類型比特后的重構(gòu)圖像。由圖可見,只是圖像的亮度發(fā)生了改變。

2、部分加密方案

根據(jù)上面的分析可知,Bk,LIP_sig,Bk,LIS-T在SPIHT算法中是重要數(shù)據(jù)。而且,這兩類數(shù)據(jù)直接影響其它類型數(shù)據(jù)的意義。因此,只需加密前N次迭代產(chǎn)生的Bk,LIP_sig,Bk.LIS_T,便可達到保護所有圖像數(shù)據(jù)的目的。據(jù)此,本文給出新的部分加密方案如圖3所示。其中,圖3(a)中“數(shù)據(jù)類型選擇”和圖3(b)中“數(shù)據(jù)類型判定”是在前N次迭代中確定Bk,LIP_sig
和Bk,LIS_T?!凹用堋杯h(huán)節(jié)采用了流加密算法,主要通過偽隨機發(fā)生器產(chǎn)生的隨機比特流與重要數(shù)據(jù)比特異或完成加密。

灰度圖像部分加密方法之SPIHT編碼加密

在部分加密應(yīng)用中,迭代次數(shù)N的選擇不宜小于2。由于圖像經(jīng)過小波變換后能量主要集中在低頻子帶,高頻子帶能量少且小波系數(shù)值較小,這樣,前2次迭代掃描中SOT不重要的概率較大,產(chǎn)生的Bk.LIS_T編碼數(shù)據(jù)中往往多數(shù)為“0”。根據(jù)這一特點,攻擊方易于從“0”串中推斷出加密數(shù)據(jù)的位置,進而用窮舉搜索法攻擊加密數(shù)據(jù)。因此,為了保障部分加密的安全性,N應(yīng)至少選取為2。

三、仿真實驗

本文基于Matlab7.0平臺,以標(biāo)準(zhǔn)灰度圖像庫中的圖像文件為對象進行了計算機仿真實驗。其中,圖4給出了2幅實驗灰度圖像文件(圖4(a))及其部分加密結(jié)果。在實驗中,加密了SPIHT算法前兩次迭代(N=2)掃描產(chǎn)生的Bk,LIP_sig和Bk,LIS_T(k=0,1)。加密用隨機比特流由BBS(Blum-Blum-Shub)產(chǎn)生‘u。圖4(b)是由加密數(shù)據(jù)流重構(gòu)的二幅圖像,顯然從中已無法辨別原圖像信息。

為了進一步表明部分加密的安全性,本文比較了原始圖像和圖像文件加密的直方圖。其中,圖4(c)是二幅原始圖像的直方圖,圖4(d)是二幅圖像文件加密后的直方圖。由圖可見,部分加密打破了原始圖像的統(tǒng)計特性,將原始圖像的特殊分布直方圖變成了近似均勻分布的直方圖,大大降低了圖像文件加密和原始圖像的相關(guān)性。

灰度圖像部分加密方法之SPIHT編碼加密

本文與其他的部分加密數(shù)據(jù)量進行了比較,結(jié)果如表1所示。其中“加密百分比”是加密數(shù)據(jù)量與壓縮數(shù)據(jù)量的比值。文獻[3]提出的部分加密方法是將前2次迭代(k=0,1)中產(chǎn)生的所有壓縮數(shù)據(jù)全部加密,而本文僅選擇了其中的重要比特Bk,LIP_sig和Bk,LIS_T進行加密。因此,相比之下,本文的加密數(shù)據(jù)量減少近一半。同時,因為所選擇加密數(shù)據(jù)的重要性,圖像的數(shù)據(jù)安全仍可得到保障。

灰度圖像部分加密方法之SPIHT編碼加密

小知識之?dāng)?shù)據(jù)編碼

數(shù)據(jù)編碼是指把需要加工處理的數(shù)據(jù)庫信息,用特寫的數(shù)字來表示的一種技術(shù),是根據(jù)一定數(shù)據(jù)結(jié)構(gòu)和目標(biāo)的定性特征,將數(shù)據(jù)轉(zhuǎn)換為代碼或編碼字符,在數(shù)據(jù)傳輸中表示數(shù)據(jù)組成,并作為傳送、接受和處理的一組規(guī)則和約定。