邱應(yīng)強(qiáng),蔡燦輝,曾煥強(qiáng),馮 桂,林曉丹,錢(qián)振興
(1.華僑大學(xué) 信息科學(xué)與工程學(xué)院,福建 廈門(mén) 361021;2.復(fù)旦大學(xué) 計(jì)算機(jī)科學(xué)技術(shù)學(xué)院,上海 200433)
圖像可逆數(shù)據(jù)隱藏技術(shù)具有在提取圖像中的嵌入數(shù)據(jù)后可無(wú)失真恢復(fù)宿主圖像的特性,在對(duì)圖像內(nèi)容敏感的軍事、醫(yī)學(xué)和法律論證等領(lǐng)域得到了廣泛的應(yīng)用,主要技術(shù)有差值擴(kuò)展[1-2]和直方圖修改[3-6]等。隨著云計(jì)算的不斷成熟,傳統(tǒng)的本地?cái)?shù)據(jù)存儲(chǔ)和計(jì)算逐漸轉(zhuǎn)向云端。然而,云計(jì)算的安全性和數(shù)據(jù)私密性保護(hù)問(wèn)題制約了云計(jì)算產(chǎn)業(yè)的發(fā)展和應(yīng)用。為了在云計(jì)算環(huán)境下兼顧數(shù)據(jù)安全與信號(hào)處理,加密域信號(hào)處理技術(shù)應(yīng)運(yùn)而生,其中有可逆數(shù)據(jù)隱藏技術(shù)與加密技術(shù)相結(jié)合發(fā)展而成的加密圖像可逆數(shù)據(jù)隱藏技術(shù)。
按照嵌入數(shù)據(jù)提取和圖像無(wú)失真恢復(fù)操作是否可分開(kāi)進(jìn)行,加密圖像可逆隱藏分成分離式方法和聯(lián)合式方法兩類(lèi)。分離式方法,顧名思義,嵌入數(shù)據(jù)提取和圖像無(wú)失真恢復(fù)操作可獨(dú)立開(kāi)展,如ZHANG提出的加密后生成數(shù)據(jù)嵌入空間的可逆隱藏方法[7]、MA等人提出的加密前生成數(shù)據(jù)嵌入空間的方法[8]。最近,大多研究集中在加密前生成空間的方法以提高數(shù)據(jù)嵌入容量,如使用自適應(yīng)整數(shù)變換技術(shù)生成不受流加密影響的大容量嵌入空間的方法[9],采用最高有效位預(yù)測(cè)生成嵌入空間的方法[10],基于多位高有效位預(yù)測(cè)與Huffman編碼相結(jié)合的方法[11],使用二叉樹(shù)編碼壓縮像素預(yù)測(cè)差值來(lái)生成嵌入空間的方法[12]等。由ZHANG提出的最早的加密圖像可逆隱藏方法[13]屬于聯(lián)合式方法。該方法在圖像加密后通過(guò)翻轉(zhuǎn)各圖像塊部分像素的最低三位有效位來(lái)嵌入1比特?cái)?shù)據(jù),提取數(shù)據(jù)及恢復(fù)圖像操作在圖像解密后利用圖像相關(guān)性聯(lián)合進(jìn)行;該方法數(shù)據(jù)嵌入容量較低,提高嵌入容量將導(dǎo)致提取數(shù)據(jù)誤碼及無(wú)法無(wú)失真恢復(fù)原圖像的問(wèn)題。此后,有學(xué)者不斷改進(jìn)聯(lián)合式方法來(lái)降低提取數(shù)據(jù)誤碼率并提高嵌入容量,如利用相鄰圖像塊的相關(guān)性并使用邊緣匹配算法的改進(jìn)方法[14],使用不同位置的多個(gè)相鄰像素來(lái)評(píng)估圖像塊復(fù)雜度的改進(jìn)方法[15],加密圖像下采樣分類(lèi)分塊后基于循環(huán)移位/數(shù)據(jù)交換算法嵌入數(shù)據(jù)的改進(jìn)方法[16];這些方法提高了數(shù)據(jù)提取無(wú)誤碼條件下的最大數(shù)據(jù)嵌入容量,但嵌入容量仍然較低。數(shù)據(jù)提取誤碼問(wèn)題限制了聯(lián)合式加密圖像可逆隱藏的發(fā)展。
為了消除數(shù)據(jù)提取誤碼問(wèn)題并提高數(shù)據(jù)嵌入容量來(lái)滿足更大容量的聯(lián)合式方法的實(shí)際應(yīng)用需求,文中提出了一種聯(lián)合式加密圖像可逆數(shù)據(jù)隱藏新算法。該算法首先通過(guò)圖像加密前的預(yù)處理操作將糾錯(cuò)數(shù)據(jù)自嵌入到圖像中,然后只需翻轉(zhuǎn)加密圖像部分像素最低若干有效位即可實(shí)現(xiàn)數(shù)據(jù)嵌入,圖像解密后通過(guò)提取糾錯(cuò)數(shù)據(jù)實(shí)現(xiàn)嵌入數(shù)據(jù)100%正確提取及原圖像無(wú)失真恢復(fù),取得了良好的效果。
本算法系統(tǒng)框架如圖1所示,由發(fā)送端、云服務(wù)器端、接收端三方組成。在發(fā)送端,圖像所有者對(duì)原始圖像進(jìn)行下采樣,使用插值技術(shù)得到非采樣像素預(yù)測(cè)值,通過(guò)計(jì)算非采樣像素特定低位有效位翻轉(zhuǎn)前后與預(yù)測(cè)值的方差得到標(biāo)記數(shù)據(jù),并通過(guò)自適應(yīng)整數(shù)變換技術(shù)嵌入到采樣像素中,原非采樣像素和修改后的采樣像素一并流加密處理后上傳云端;在云端,數(shù)據(jù)嵌入者只需將加密圖像中的非采樣像素分組,根據(jù)其嵌入密鑰,保留或翻轉(zhuǎn)各分組像素特定低位有效位實(shí)現(xiàn)附加數(shù)據(jù)嵌入;在接收端,授權(quán)接收者先對(duì)載密加密圖像進(jìn)行解密操作,在下采樣得到的采樣像素中提取糾錯(cuò)標(biāo)記并通過(guò)整數(shù)逆變換恢復(fù)原采樣像素,進(jìn)而可得到非采樣像素預(yù)測(cè)值,計(jì)算比較當(dāng)前非采樣像素特定低位有效位翻轉(zhuǎn)前后與預(yù)測(cè)值的方差,結(jié)合采樣像素中提取的糾錯(cuò)標(biāo)記,提取嵌入數(shù)據(jù)并解密得到附加數(shù)據(jù),同時(shí)無(wú)失真恢復(fù)非采樣像素,得到原始圖像。
圖1 算法系統(tǒng)框圖
2.1.1 圖像下采樣及插值預(yù)測(cè)
圖2 像素分類(lèi)及預(yù)測(cè)示意圖
2.1.2 圖像加密及加密域數(shù)據(jù)嵌入
圖像加密前,需要通過(guò)2.2節(jié)介紹的整數(shù)變換對(duì)采樣像素進(jìn)行預(yù)處理。設(shè)預(yù)處理后圖像為X′={x'(i,j), 1≤i≤2N, 1≤j≤2M},各像素x'(i,j)的8個(gè)比特?cái)?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)為加密密鑰生成的二值隨機(jī)數(shù)據(jù)。加密后的像素值為
(3)
得到加密圖像Y={y(i,j), 1≤i≤2N, 1≤j≤2M}。
(4)
2.1.3 數(shù)據(jù)提取及圖像恢復(fù)糾錯(cuò)原理
(5)
(6)
2.1.2節(jié)已經(jīng)介紹了如何在加密圖像中翻轉(zhuǎn)非采樣像素,實(shí)現(xiàn)數(shù)據(jù)嵌入,嵌入過(guò)程不對(duì)采樣像素進(jìn)行任何操作。在接收端,對(duì)載密加密圖像Y'像素y'(i,j)各比特按下式解密:
z(i,j,k)=y′(i,j,k)⊕r(i,j,k) ,
(7)
因此,可正確提取嵌入像素并無(wú)失真恢復(fù)xp。所有恢復(fù)像素值重組即可無(wú)失真得到原圖像。
由2.1節(jié)可知發(fā)送端需生成二值標(biāo)記序列S,并在圖像加密前將S無(wú)損壓縮后的數(shù)據(jù)S′以可逆方式嵌入到采樣像素中。下面將介紹基于自適應(yīng)整數(shù)變換的可逆數(shù)據(jù)隱藏原理。
2.2.1 基于整數(shù)變換的可逆數(shù)據(jù)隱藏
文獻(xiàn)[1]提出了用于圖像可逆隱藏的一般化整數(shù)變換,文獻(xiàn)[2]拓展該整數(shù)變換實(shí)現(xiàn)了自適應(yīng)可逆隱藏。筆者將采用該技術(shù)在圖像加密前把糾錯(cuò)數(shù)據(jù)嵌入到采樣像素中。對(duì)于整數(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)
對(duì)應(yīng)的嵌入數(shù)據(jù)提取和原像素值無(wú)失真恢復(fù)的整數(shù)逆變換公式為
(11)
2.2.2 自適應(yīng)整數(shù)變換
通過(guò)式(10)將3b比特?cái)?shù)據(jù)嵌入到xl后引入的失真可用歐幾里德范數(shù)表示如下:
(12)
(13)
當(dāng)xl∈Ab,使用參數(shù)b通過(guò)式(10)整數(shù)變換在xl中嵌入3b比特?cái)?shù)據(jù)后將不會(huì)造成像素值溢出。若要求‖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ù)包括無(wú)損壓縮后的二值標(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 /*算法開(kāi)始 */
while(T2!=T1andT2!=T1+1)
若Ctemp>=C,則置T2=Ttemp;否則,置T1=Ttemp; /*調(diào)整閾值高門(mén)限或低門(mén)限*/
end while
若Ctemp>=C,則置T=T1;否則,置T=T2; /*確定最佳閾值T*/
returnT; /*返回最佳閾值T*/
End /* 算法結(jié)束 */
若確定的最佳閾值T等于最初設(shè)定的閾值T2,則表明采樣像素?zé)o法嵌入非采樣像素標(biāo)記值,非采樣像素的分組參數(shù)v太小,以致于無(wú)法實(shí)現(xiàn)算法自糾錯(cuò)功能。
算法系統(tǒng)由圖像所有者、數(shù)據(jù)嵌入者、授權(quán)接收者三方分別完成圖像預(yù)處理與圖像加密、圖像加密域嵌入數(shù)據(jù)、嵌入數(shù)據(jù)提取與原圖像無(wú)失真恢復(fù)等操作。下面將從三方操作分別說(shuō)明算法實(shí)現(xiàn)步驟。
步驟1 圖像所有者對(duì)大小為2N×2M原圖像X進(jìn)行下采樣,得到N×M大小的低分辨率圖像Xl;
步驟2 使用插值技術(shù),利用Xl預(yù)測(cè)X中其余3N×M個(gè)非采樣像素的像素值;
步驟7 用加密密鑰將預(yù)處理后的圖像X′進(jìn)行流加密,得到加密圖像Y并上傳云端。
步驟1 數(shù)據(jù)嵌入者對(duì)加密圖像Y進(jìn)行下采樣,提取其中的3N×M個(gè)非采樣像素;
步驟3 對(duì)所有yp′根據(jù)1 bit待嵌入的加密數(shù)據(jù),保持或翻轉(zhuǎn)yp所有像素的最低u位有效位,得到y(tǒng)p′;
步驟4 將所有yp′替換Y中對(duì)應(yīng)yp,得到載密加密圖像Y′。
步驟1 授權(quán)接收者使用加密密鑰對(duì)Y′直接解密得到載密圖像Z,對(duì)Z進(jìn)行下采樣可得到X′l=Zl;
步驟2 將X′l分成2×2的互不重疊圖像塊,從中可提取出其中嵌入的輔助數(shù)據(jù)S′,S′解壓縮得到二值標(biāo)記序列S,并進(jìn)一步通過(guò)對(duì)圖像塊整數(shù)逆變換無(wú)失真恢復(fù)得到原低分辨率圖像Xl;
步驟4 將Z中3N×M個(gè)非采樣像素也按特定順序以每v個(gè)像素進(jìn)行分組,得到zp;
步驟7 用嵌入密鑰對(duì)所有提取數(shù)據(jù)解密,得到嵌入的附加數(shù)據(jù),所有無(wú)失真恢復(fù)的像素重組,得到原圖像。
為了驗(yàn)證所提出的算法,在配備Intel(R) Core(TM) i5-10 210 CPU、8 GB內(nèi)存、Windows 10操作系統(tǒng)的筆記本電腦上,以Visual Studio 2017為軟件平臺(tái)開(kāi)展實(shí)驗(yàn)。如圖3所示,實(shí)驗(yàn)采用Lena、Baboon、Man、Lake、Goldhill、Boats、Couple和Tiffany這8幅大小為512×512的256級(jí)灰度圖像作為宿主圖像。
圖3 實(shí)驗(yàn)測(cè)試圖像
首先,采用自適應(yīng)可逆整數(shù)變換參數(shù)maxb≤3、加密圖像塊翻轉(zhuǎn)最低有效位位數(shù)u=3,測(cè)試各圖像加密域的最大數(shù)據(jù)嵌入容量,并與現(xiàn)有的同類(lèi)聯(lián)合式加密圖像可逆隱藏方法在保證嵌入數(shù)據(jù)100%正確提取及圖像可無(wú)失真恢復(fù)的條件下取得最大數(shù)據(jù)嵌入容量進(jìn)行比較。實(shí)驗(yàn)數(shù)據(jù)如表1所示,文中方法除Baboon、Lake在加密非采樣像素分組長(zhǎng)度v=3時(shí)取得最大數(shù)據(jù)嵌入容量65 536 bit,其余測(cè)試圖像可在v=2時(shí)取得最大數(shù)據(jù)嵌入容量98 304 bit,所取得的最大數(shù)據(jù)嵌入容量遠(yuǎn)高于其他同類(lèi)文獻(xiàn)方法[13-16]。部分實(shí)驗(yàn)結(jié)果示意圖如圖4所示:圖(a)為原圖像Lena;圖(b)為對(duì)圖(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)為對(duì)圖(c)直接解密得到的載密圖像1,與圖(a)之間的PSNR為32.58 dB、SSIM為0.940 7;圖(e)為原圖像Lake;圖(f)為對(duì)圖(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)為對(duì)圖(g)直接解密得到的載密圖像2,與圖(e)之間PSNR為31.04 dB、SSIM為0.940 8;從圖(d)和圖(h)中均可100%正確提取其中的嵌入數(shù)據(jù),并無(wú)失真恢復(fù)原圖像(PSNR為∞ dB、SSIM為1)。從實(shí)驗(yàn)結(jié)果可以看出,文中方法不僅可以保護(hù)圖像內(nèi)容隱私信息,還可實(shí)現(xiàn)更大的數(shù)據(jù)嵌入容量。
表1 不同聯(lián)合式加密圖像可逆數(shù)據(jù)隱藏方法最大數(shù)據(jù)嵌入容量比較 bit
筆者還采用加密非采樣像素分組長(zhǎng)度v依次為128、64、32、16、8、4、3、2進(jìn)行了翻轉(zhuǎn)最低有效位位數(shù)u分別為2和3的實(shí)驗(yàn)測(cè)試,可實(shí)現(xiàn)的數(shù)據(jù)嵌入容量依次分別為1 536、3 072、6 144、12 288、24 576、49 152、65 536和98 304 bit。表2給出了各種不同情況下對(duì)載密加密圖像直接解密后的載密圖像與原圖像之間的峰值信噪比數(shù)據(jù)。由于文獻(xiàn)[13-16]方法均通過(guò)修改圖像塊像素最低三位有效位實(shí)現(xiàn)數(shù)據(jù)嵌入,在嵌入數(shù)據(jù)“0”“1”等概率分布的條件下,其直接解密后的載密圖像與原圖像之間的峰值信噪比在理論上為37.92 dB,其解密載密圖像質(zhì)量與圖像分塊大小及相應(yīng)的嵌入量無(wú)關(guān)。文中方法在保持或翻轉(zhuǎn)最低三位有效位時(shí),有3/4的像素需要進(jìn)行類(lèi)似的處理實(shí)現(xiàn)數(shù)據(jù)嵌入,而其余1/4作為采樣像素在圖像加密前的預(yù)處理過(guò)程中通過(guò)整數(shù)變換嵌入了糾錯(cuò)數(shù)據(jù)。從表2實(shí)驗(yàn)數(shù)據(jù)可以看出,文中方法在測(cè)試圖像中可實(shí)現(xiàn)嵌入12 288 bit數(shù)據(jù)(除Baboon圖像嵌入3 072 bit)的情況時(shí),取得的解密載密圖像PSNR>37.92 dB,結(jié)合表1數(shù)據(jù)可知取得的數(shù)據(jù)嵌入容量明顯優(yōu)于其他同類(lèi)文獻(xiàn)方法[13-16]。隨著非采樣像素分組長(zhǎng)度的減少,需要嵌入到采樣像素的糾錯(cuò)數(shù)據(jù)增多將導(dǎo)致解密載密圖像質(zhì)量逐漸下降,但進(jìn)一步提高了數(shù)據(jù)嵌入容量,且可100%正確嵌入數(shù)據(jù)圖像并無(wú)失真恢復(fù)原圖像。文中方法可進(jìn)一步將翻轉(zhuǎn)的最低有效位減少到2位,理論峰值信噪比可達(dá)44.15 dB。
表2 不同數(shù)據(jù)嵌入量下直接解密的載密圖像與原圖像之間的峰值信噪比 dB
表2數(shù)據(jù)表明,在嵌入數(shù)據(jù)量較小的情況下,減少翻轉(zhuǎn)的最低有效位位數(shù)可進(jìn)一步提高解密載密圖像質(zhì)量。
表3 不同加密圖像可逆數(shù)據(jù)隱藏方法的特性比較
表3對(duì)加密圖像可逆信息隱藏方法進(jìn)行了定性比較分析。在嵌入方式上,有加密前生成嵌入空間(Vacating Room Before Encryption,VRBE)方法和加密后生成嵌入空間(Vacating Room After Encryption,VRAE)方法。文獻(xiàn)[8-12]方法屬于VRBE,其他文獻(xiàn)方法和文中方法屬于VRAE。在數(shù)據(jù)提取方式上,文獻(xiàn)[7-12]方法可獨(dú)立進(jìn)行嵌入數(shù)據(jù)提取和圖像無(wú)失真恢復(fù)操作,屬于分離式方法;而文獻(xiàn)[13-16]方法和文中方法則要求圖像解密后聯(lián)合進(jìn)行嵌入數(shù)據(jù)提取和圖像無(wú)失真恢復(fù)操作,屬于聯(lián)合式方法。在嵌入容量上,由于VRBE方法在圖像加密前可更好地利用圖像相關(guān)性生成更大容量的嵌入空間,因此可取得更高的數(shù)據(jù)嵌入容量,如文獻(xiàn)[8]方法可達(dá)0.5 bit/像素,文獻(xiàn)[10]方法接近1.0 bit/像素,文獻(xiàn)[9]、[11-12]方法可超過(guò)2.0 bit/像素;VRAE方法數(shù)據(jù)嵌入容量相對(duì)較低,文獻(xiàn)[7]、[13-16]方法在提取數(shù)據(jù)無(wú)錯(cuò)誤的條件下一般低于0.05 bit/像素,而文中方法提高了聯(lián)合式VRAE方法的數(shù)據(jù)嵌入容量,可達(dá)0.375 bit/像素;關(guān)于直接解密的載密圖像質(zhì)量,文獻(xiàn)[8-9]方法和文中方法(v=2)在嵌入一定的數(shù)據(jù)量時(shí),解密載密圖像PSNR大于40 dB,可取得較好的圖像質(zhì)量;文獻(xiàn)[7]和文獻(xiàn)[13-16]方法在嵌入數(shù)據(jù)量較小的情況下,解密載密圖像PSNR大多為38 dB左右;而文獻(xiàn)[10-12]方法在數(shù)據(jù)嵌入過(guò)程中將直接修改像素值的高位有效位,因此其解密載密圖像質(zhì)量較差。在嵌入數(shù)據(jù)提取誤碼和圖像恢復(fù)失真方面,聯(lián)合式方法[13-16]在較低數(shù)據(jù)嵌入量時(shí)可正確提取嵌入數(shù)據(jù)且無(wú)失真恢復(fù)原圖像,但隨著數(shù)據(jù)嵌入容量的增大,存在提取嵌入數(shù)據(jù)錯(cuò)誤以及恢復(fù)圖像失真的問(wèn)題,其余方法則不存在提取嵌入數(shù)據(jù)錯(cuò)誤和恢復(fù)圖像失真的問(wèn)題。
筆者提出了一種兼具自糾錯(cuò)和內(nèi)容隱私保護(hù)功能的加密圖像可逆數(shù)據(jù)隱藏新算法。該算法系統(tǒng)由三方組成:圖像所有者對(duì)原始圖像進(jìn)行下采樣,使用插值技術(shù)來(lái)預(yù)測(cè)非采樣像素,以此來(lái)生成用于保障加密域嵌入數(shù)據(jù)正確提取的糾錯(cuò)數(shù)據(jù),并以可逆方式嵌入到采樣像素后再加密上傳云端;數(shù)據(jù)嵌入者只需將加密圖像非采樣像素分組,通過(guò)保留或翻轉(zhuǎn)各組像素特定低位有效位即可嵌入數(shù)據(jù);授權(quán)接收者對(duì)載密加密圖像解密后,可100%正確提取加密圖像中嵌入的數(shù)據(jù)并無(wú)失真恢復(fù)原圖像。實(shí)驗(yàn)結(jié)果表明,該算法解決了現(xiàn)有聯(lián)合式方法數(shù)據(jù)提取存在誤碼的問(wèn)題,同時(shí)大大提高了最大數(shù)據(jù)嵌入容量,并保持解密載密圖像質(zhì)量良好,可應(yīng)用于軍事、醫(yī)學(xué)、云服務(wù)等眾多領(lǐng)域。