邱應(yīng)強,蔡燦輝,曾煥強,馮 桂,林曉丹,錢振興
(1.華僑大學(xué) 信息科學(xué)與工程學(xué)院,福建 廈門 361021;2.復(fù)旦大學(xué) 計算機科學(xué)技術(shù)學(xué)院,上海 200433)
圖像可逆數(shù)據(jù)隱藏技術(shù)具有在提取圖像中的嵌入數(shù)據(jù)后可無失真恢復(fù)宿主圖像的特性,在對圖像內(nèi)容敏感的軍事、醫(yī)學(xué)和法律論證等領(lǐng)域得到了廣泛的應(yīng)用,主要技術(shù)有差值擴展[1-2]和直方圖修改[3-6]等。隨著云計算的不斷成熟,傳統(tǒng)的本地數(shù)據(jù)存儲和計算逐漸轉(zhuǎn)向云端。然而,云計算的安全性和數(shù)據(jù)私密性保護問題制約了云計算產(chǎn)業(yè)的發(fā)展和應(yīng)用。為了在云計算環(huán)境下兼顧數(shù)據(jù)安全與信號處理,加密域信號處理技術(shù)應(yīng)運而生,其中有可逆數(shù)據(jù)隱藏技術(shù)與加密技術(shù)相結(jié)合發(fā)展而成的加密圖像可逆數(shù)據(jù)隱藏技術(shù)。
按照嵌入數(shù)據(jù)提取和圖像無失真恢復(fù)操作是否可分開進行,加密圖像可逆隱藏分成分離式方法和聯(lián)合式方法兩類。分離式方法,顧名思義,嵌入數(shù)據(jù)提取和圖像無失真恢復(fù)操作可獨立開展,如ZHANG提出的加密后生成數(shù)據(jù)嵌入空間的可逆隱藏方法[7]、MA等人提出的加密前生成數(shù)據(jù)嵌入空間的方法[8]。最近,大多研究集中在加密前生成空間的方法以提高數(shù)據(jù)嵌入容量,如使用自適應(yīng)整數(shù)變換技術(shù)生成不受流加密影響的大容量嵌入空間的方法[9],采用最高有效位預(yù)測生成嵌入空間的方法[10],基于多位高有效位預(yù)測與Huffman編碼相結(jié)合的方法[11],使用二叉樹編碼壓縮像素預(yù)測差值來生成嵌入空間的方法[12]等。由ZHANG提出的最早的加密圖像可逆隱藏方法[13]屬于聯(lián)合式方法。該方法在圖像加密后通過翻轉(zhuǎn)各圖像塊部分像素的最低三位有效位來嵌入1比特數(shù)據(jù),提取數(shù)據(jù)及恢復(fù)圖像操作在圖像解密后利用圖像相關(guān)性聯(lián)合進行;該方法數(shù)據(jù)嵌入容量較低,提高嵌入容量將導(dǎo)致提取數(shù)據(jù)誤碼及無法無失真恢復(fù)原圖像的問題。此后,有學(xué)者不斷改進聯(lián)合式方法來降低提取數(shù)據(jù)誤碼率并提高嵌入容量,如利用相鄰圖像塊的相關(guān)性并使用邊緣匹配算法的改進方法[14],使用不同位置的多個相鄰像素來評估圖像塊復(fù)雜度的改進方法[15],加密圖像下采樣分類分塊后基于循環(huán)移位/數(shù)據(jù)交換算法嵌入數(shù)據(jù)的改進方法[16];這些方法提高了數(shù)據(jù)提取無誤碼條件下的最大數(shù)據(jù)嵌入容量,但嵌入容量仍然較低。數(shù)據(jù)提取誤碼問題限制了聯(lián)合式加密圖像可逆隱藏的發(fā)展。
為了消除數(shù)據(jù)提取誤碼問題并提高數(shù)據(jù)嵌入容量來滿足更大容量的聯(lián)合式方法的實際應(yīng)用需求,文中提出了一種聯(lián)合式加密圖像可逆數(shù)據(jù)隱藏新算法。該算法首先通過圖像加密前的預(yù)處理操作將糾錯數(shù)據(jù)自嵌入到圖像中,然后只需翻轉(zhuǎn)加密圖像部分像素最低若干有效位即可實現(xiàn)數(shù)據(jù)嵌入,圖像解密后通過提取糾錯數(shù)據(jù)實現(xiàn)嵌入數(shù)據(jù)100%正確提取及原圖像無失真恢復(fù),取得了良好的效果。
本算法系統(tǒng)框架如圖1所示,由發(fā)送端、云服務(wù)器端、接收端三方組成。在發(fā)送端,圖像所有者對原始圖像進行下采樣,使用插值技術(shù)得到非采樣像素預(yù)測值,通過計算非采樣像素特定低位有效位翻轉(zhuǎn)前后與預(yù)測值的方差得到標(biāo)記數(shù)據(jù),并通過自適應(yīng)整數(shù)變換技術(shù)嵌入到采樣像素中,原非采樣像素和修改后的采樣像素一并流加密處理后上傳云端;在云端,數(shù)據(jù)嵌入者只需將加密圖像中的非采樣像素分組,根據(jù)其嵌入密鑰,保留或翻轉(zhuǎn)各分組像素特定低位有效位實現(xiàn)附加數(shù)據(jù)嵌入;在接收端,授權(quán)接收者先對載密加密圖像進行解密操作,在下采樣得到的采樣像素中提取糾錯標(biāo)記并通過整數(shù)逆變換恢復(fù)原采樣像素,進而可得到非采樣像素預(yù)測值,計算比較當(dāng)前非采樣像素特定低位有效位翻轉(zhuǎn)前后與預(yù)測值的方差,結(jié)合采樣像素中提取的糾錯標(biāo)記,提取嵌入數(shù)據(jù)并解密得到附加數(shù)據(jù),同時無失真恢復(fù)非采樣像素,得到原始圖像。

圖1 算法系統(tǒng)框圖
2.1.1 圖像下采樣及插值預(yù)測

圖2 像素分類及預(yù)測示意圖
2.1.2 圖像加密及加密域數(shù)據(jù)嵌入
圖像加密前,需要通過2.2節(jié)介紹的整數(shù)變換對采樣像素進行預(yù)處理。設(shè)預(yù)處理后圖像為X′={x'(i,j), 1≤i≤2N, 1≤j≤2M},各像素x'(i,j)的8個比特數(shù)據(jù)從高位到低位可表示為x'(i,j,7),x'(i,j,6), …,x'(i,j,0)

(1)

y(i,j,k)=x'(i,j,k)⊕r(i,j,k) ,
(2)
其中,r(i,j,k)為加密密鑰生成的二值隨機數(shù)據(jù)。加密后的像素值為
(3)
得到加密圖像Y={y(i,j), 1≤i≤2N, 1≤j≤2M}。

(4)

2.1.3 數(shù)據(jù)提取及圖像恢復(fù)糾錯原理

(5)

(6)



2.1.2節(jié)已經(jīng)介紹了如何在加密圖像中翻轉(zhuǎn)非采樣像素,實現(xiàn)數(shù)據(jù)嵌入,嵌入過程不對采樣像素進行任何操作。在接收端,對載密加密圖像Y'像素y'(i,j)各比特按下式解密:
z(i,j,k)=y′(i,j,k)⊕r(i,j,k) ,
(7)




因此,可正確提取嵌入像素并無失真恢復(fù)xp。所有恢復(fù)像素值重組即可無失真得到原圖像。
由2.1節(jié)可知發(fā)送端需生成二值標(biāo)記序列S,并在圖像加密前將S無損壓縮后的數(shù)據(jù)S′以可逆方式嵌入到采樣像素中。下面將介紹基于自適應(yīng)整數(shù)變換的可逆數(shù)據(jù)隱藏原理。
2.2.1 基于整數(shù)變換的可逆數(shù)據(jù)隱藏
文獻[1]提出了用于圖像可逆隱藏的一般化整數(shù)變換,文獻[2]拓展該整數(shù)變換實現(xiàn)了自適應(yīng)可逆隱藏。筆者將采用該技術(shù)在圖像加密前把糾錯數(shù)據(jù)嵌入到采樣像素中。對于整數(shù)x,定義函數(shù)
(8)

a(xl)=round((xl,1+xl,2+xl,3+xl,4)/4) ,
(9)
下式整數(shù)變換可將d=(d1,d2,d3),di∈ [0, 2b-1](1≤i≤3,b∈)嵌入xl,得到
(10)
對應(yīng)的嵌入數(shù)據(jù)提取和原像素值無失真恢復(fù)的整數(shù)逆變換公式為
(11)
2.2.2 自適應(yīng)整數(shù)變換
通過式(10)將3b比特數(shù)據(jù)嵌入到xl后引入的失真可用歐幾里德范數(shù)表示如下:
(12)

(13)
當(dāng)xl∈Ab,使用參數(shù)b通過式(10)整數(shù)變換在xl中嵌入3b比特數(shù)據(jù)后將不會造成像素值溢出。若要求‖x'l-xl‖≤T(T為閾值),設(shè)max(b)≤ 3,則可按下列4種情況自適應(yīng)選擇參數(shù)b:





(14)

C=3e1+6e2+9e3-LLM′。
(15)
2.2.3 閾值自適應(yīng)選擇
根據(jù)上述討論,需要嵌入到采樣像素的數(shù)據(jù)包括無損壓縮后的二值標(biāo)記序列S和采樣像素位置圖LM′;選擇合適的閾值T可控制數(shù)據(jù)嵌入引入失真。用折半法自適應(yīng)選擇最佳閾值的算法可用偽代碼描述如下:
算法1最佳閾值T自適應(yīng)選擇算法。
T=Processing(C,T1,T2) /* 設(shè)輸入C=LS′為嵌入容量,低閾值T1=0,大數(shù)值高閾值T2?T1;輸出T為最佳閾值*/
Begin /*算法開始 */
while(T2!=T1andT2!=T1+1)

若Ctemp>=C,則置T2=Ttemp;否則,置T1=Ttemp; /*調(diào)整閾值高門限或低門限*/
end while

若Ctemp>=C,則置T=T1;否則,置T=T2; /*確定最佳閾值T*/
returnT; /*返回最佳閾值T*/
End /* 算法結(jié)束 */
若確定的最佳閾值T等于最初設(shè)定的閾值T2,則表明采樣像素?zé)o法嵌入非采樣像素標(biāo)記值,非采樣像素的分組參數(shù)v太小,以致于無法實現(xiàn)算法自糾錯功能。
算法系統(tǒng)由圖像所有者、數(shù)據(jù)嵌入者、授權(quán)接收者三方分別完成圖像預(yù)處理與圖像加密、圖像加密域嵌入數(shù)據(jù)、嵌入數(shù)據(jù)提取與原圖像無失真恢復(fù)等操作。下面將從三方操作分別說明算法實現(xiàn)步驟。
步驟1 圖像所有者對大小為2N×2M原圖像X進行下采樣,得到N×M大小的低分辨率圖像Xl;
步驟2 使用插值技術(shù),利用Xl預(yù)測X中其余3N×M個非采樣像素的像素值;




步驟7 用加密密鑰將預(yù)處理后的圖像X′進行流加密,得到加密圖像Y并上傳云端。
步驟1 數(shù)據(jù)嵌入者對加密圖像Y進行下采樣,提取其中的3N×M個非采樣像素;

步驟3 對所有yp′根據(jù)1 bit待嵌入的加密數(shù)據(jù),保持或翻轉(zhuǎn)yp所有像素的最低u位有效位,得到y(tǒng)p′;
步驟4 將所有yp′替換Y中對應(yīng)yp,得到載密加密圖像Y′。
步驟1 授權(quán)接收者使用加密密鑰對Y′直接解密得到載密圖像Z,對Z進行下采樣可得到X′l=Zl;
步驟2 將X′l分成2×2的互不重疊圖像塊,從中可提取出其中嵌入的輔助數(shù)據(jù)S′,S′解壓縮得到二值標(biāo)記序列S,并進一步通過對圖像塊整數(shù)逆變換無失真恢復(fù)得到原低分辨率圖像Xl;

步驟4 將Z中3N×M個非采樣像素也按特定順序以每v個像素進行分組,得到zp;


步驟7 用嵌入密鑰對所有提取數(shù)據(jù)解密,得到嵌入的附加數(shù)據(jù),所有無失真恢復(fù)的像素重組,得到原圖像。
為了驗證所提出的算法,在配備Intel(R) Core(TM) i5-10 210 CPU、8 GB內(nèi)存、Windows 10操作系統(tǒng)的筆記本電腦上,以Visual Studio 2017為軟件平臺開展實驗。如圖3所示,實驗采用Lena、Baboon、Man、Lake、Goldhill、Boats、Couple和Tiffany這8幅大小為512×512的256級灰度圖像作為宿主圖像。

圖3 實驗測試圖像
首先,采用自適應(yīng)可逆整數(shù)變換參數(shù)maxb≤3、加密圖像塊翻轉(zhuǎn)最低有效位位數(shù)u=3,測試各圖像加密域的最大數(shù)據(jù)嵌入容量,并與現(xiàn)有的同類聯(lián)合式加密圖像可逆隱藏方法在保證嵌入數(shù)據(jù)100%正確提取及圖像可無失真恢復(fù)的條件下取得最大數(shù)據(jù)嵌入容量進行比較。實驗數(shù)據(jù)如表1所示,文中方法除Baboon、Lake在加密非采樣像素分組長度v=3時取得最大數(shù)據(jù)嵌入容量65 536 bit,其余測試圖像可在v=2時取得最大數(shù)據(jù)嵌入容量98 304 bit,所取得的最大數(shù)據(jù)嵌入容量遠高于其他同類文獻方法[13-16]。部分實驗結(jié)果示意圖如圖4所示:圖(a)為原圖像Lena;圖(b)為對圖(a)預(yù)處理后的加密圖像,與圖(a)之間的峰值信噪比(PSNR)、結(jié)構(gòu)相似度(SSIM)分別為9.58 dB、0.042 0;圖(c)為加密域嵌入數(shù)據(jù)后的載密加密圖像1,使用參數(shù)v=2嵌入98 304 bit數(shù)據(jù),與圖(a)之間的PSNR為9.58 dB、SSIM為0.042 3;圖(d)為對圖(c)直接解密得到的載密圖像1,與圖(a)之間的PSNR為32.58 dB、SSIM為0.940 7;圖(e)為原圖像Lake;圖(f)為對圖(e)預(yù)處理后的加密圖像1,與圖(e)之間PSNR為8.28 dB、SSIM為0.033 1;圖(g)為使用參數(shù)v=3嵌入65 536 bit數(shù)據(jù)后的載密加密圖像2,與圖(e)之間PSNR為8.25 dB、SSIM為0.033 0;圖(h)為對圖(g)直接解密得到的載密圖像2,與圖(e)之間PSNR為31.04 dB、SSIM為0.940 8;從圖(d)和圖(h)中均可100%正確提取其中的嵌入數(shù)據(jù),并無失真恢復(fù)原圖像(PSNR為∞ dB、SSIM為1)。從實驗結(jié)果可以看出,文中方法不僅可以保護圖像內(nèi)容隱私信息,還可實現(xiàn)更大的數(shù)據(jù)嵌入容量。


表1 不同聯(lián)合式加密圖像可逆數(shù)據(jù)隱藏方法最大數(shù)據(jù)嵌入容量比較 bit
筆者還采用加密非采樣像素分組長度v依次為128、64、32、16、8、4、3、2進行了翻轉(zhuǎn)最低有效位位數(shù)u分別為2和3的實驗測試,可實現(xiàn)的數(shù)據(jù)嵌入容量依次分別為1 536、3 072、6 144、12 288、24 576、49 152、65 536和98 304 bit。表2給出了各種不同情況下對載密加密圖像直接解密后的載密圖像與原圖像之間的峰值信噪比數(shù)據(jù)。由于文獻[13-16]方法均通過修改圖像塊像素最低三位有效位實現(xiàn)數(shù)據(jù)嵌入,在嵌入數(shù)據(jù)“0”“1”等概率分布的條件下,其直接解密后的載密圖像與原圖像之間的峰值信噪比在理論上為37.92 dB,其解密載密圖像質(zhì)量與圖像分塊大小及相應(yīng)的嵌入量無關(guān)。文中方法在保持或翻轉(zhuǎn)最低三位有效位時,有3/4的像素需要進行類似的處理實現(xiàn)數(shù)據(jù)嵌入,而其余1/4作為采樣像素在圖像加密前的預(yù)處理過程中通過整數(shù)變換嵌入了糾錯數(shù)據(jù)。從表2實驗數(shù)據(jù)可以看出,文中方法在測試圖像中可實現(xiàn)嵌入12 288 bit數(shù)據(jù)(除Baboon圖像嵌入3 072 bit)的情況時,取得的解密載密圖像PSNR>37.92 dB,結(jié)合表1數(shù)據(jù)可知取得的數(shù)據(jù)嵌入容量明顯優(yōu)于其他同類文獻方法[13-16]。隨著非采樣像素分組長度的減少,需要嵌入到采樣像素的糾錯數(shù)據(jù)增多將導(dǎo)致解密載密圖像質(zhì)量逐漸下降,但進一步提高了數(shù)據(jù)嵌入容量,且可100%正確嵌入數(shù)據(jù)圖像并無失真恢復(fù)原圖像。文中方法可進一步將翻轉(zhuǎn)的最低有效位減少到2位,理論峰值信噪比可達44.15 dB。

表2 不同數(shù)據(jù)嵌入量下直接解密的載密圖像與原圖像之間的峰值信噪比 dB
表2數(shù)據(jù)表明,在嵌入數(shù)據(jù)量較小的情況下,減少翻轉(zhuǎn)的最低有效位位數(shù)可進一步提高解密載密圖像質(zhì)量。

表3 不同加密圖像可逆數(shù)據(jù)隱藏方法的特性比較
表3對加密圖像可逆信息隱藏方法進行了定性比較分析。在嵌入方式上,有加密前生成嵌入空間(Vacating Room Before Encryption,VRBE)方法和加密后生成嵌入空間(Vacating Room After Encryption,VRAE)方法。文獻[8-12]方法屬于VRBE,其他文獻方法和文中方法屬于VRAE。在數(shù)據(jù)提取方式上,文獻[7-12]方法可獨立進行嵌入數(shù)據(jù)提取和圖像無失真恢復(fù)操作,屬于分離式方法;而文獻[13-16]方法和文中方法則要求圖像解密后聯(lián)合進行嵌入數(shù)據(jù)提取和圖像無失真恢復(fù)操作,屬于聯(lián)合式方法。在嵌入容量上,由于VRBE方法在圖像加密前可更好地利用圖像相關(guān)性生成更大容量的嵌入空間,因此可取得更高的數(shù)據(jù)嵌入容量,如文獻[8]方法可達0.5 bit/像素,文獻[10]方法接近1.0 bit/像素,文獻[9]、[11-12]方法可超過2.0 bit/像素;VRAE方法數(shù)據(jù)嵌入容量相對較低,文獻[7]、[13-16]方法在提取數(shù)據(jù)無錯誤的條件下一般低于0.05 bit/像素,而文中方法提高了聯(lián)合式VRAE方法的數(shù)據(jù)嵌入容量,可達0.375 bit/像素;關(guān)于直接解密的載密圖像質(zhì)量,文獻[8-9]方法和文中方法(v=2)在嵌入一定的數(shù)據(jù)量時,解密載密圖像PSNR大于40 dB,可取得較好的圖像質(zhì)量;文獻[7]和文獻[13-16]方法在嵌入數(shù)據(jù)量較小的情況下,解密載密圖像PSNR大多為38 dB左右;而文獻[10-12]方法在數(shù)據(jù)嵌入過程中將直接修改像素值的高位有效位,因此其解密載密圖像質(zhì)量較差。在嵌入數(shù)據(jù)提取誤碼和圖像恢復(fù)失真方面,聯(lián)合式方法[13-16]在較低數(shù)據(jù)嵌入量時可正確提取嵌入數(shù)據(jù)且無失真恢復(fù)原圖像,但隨著數(shù)據(jù)嵌入容量的增大,存在提取嵌入數(shù)據(jù)錯誤以及恢復(fù)圖像失真的問題,其余方法則不存在提取嵌入數(shù)據(jù)錯誤和恢復(fù)圖像失真的問題。
筆者提出了一種兼具自糾錯和內(nèi)容隱私保護功能的加密圖像可逆數(shù)據(jù)隱藏新算法。該算法系統(tǒng)由三方組成:圖像所有者對原始圖像進行下采樣,使用插值技術(shù)來預(yù)測非采樣像素,以此來生成用于保障加密域嵌入數(shù)據(jù)正確提取的糾錯數(shù)據(jù),并以可逆方式嵌入到采樣像素后再加密上傳云端;數(shù)據(jù)嵌入者只需將加密圖像非采樣像素分組,通過保留或翻轉(zhuǎn)各組像素特定低位有效位即可嵌入數(shù)據(jù);授權(quán)接收者對載密加密圖像解密后,可100%正確提取加密圖像中嵌入的數(shù)據(jù)并無失真恢復(fù)原圖像。實驗結(jié)果表明,該算法解決了現(xiàn)有聯(lián)合式方法數(shù)據(jù)提取存在誤碼的問題,同時大大提高了最大數(shù)據(jù)嵌入容量,并保持解密載密圖像質(zhì)量良好,可應(yīng)用于軍事、醫(yī)學(xué)、云服務(wù)等眾多領(lǐng)域。