侯思祖 馬紅月 項洪印
(華北電力大學電氣與電子工程學院 保定 071003)
可逆信息隱藏(Reversible Data Hiding,RDH)是一種將秘密信息嵌入到原始圖像中,并保證在提取隱藏數據后可以無差錯地恢復原始圖像的技術??蓱糜谲娛?、醫療等要求原始圖像不允許有任何變化的敏感領域中。典型的RDH方法,如差值擴展[1~2]、直方圖平移[3]、無損壓縮[4~5]是利用自然圖像的冗余來嵌入信息。加密技術是利用加密密鑰將原始圖像轉化為毫無意義的圖像來保護圖像內容。信息隱藏技術和加密技術在數據保護方面發揮著不同的功能。近年來云服務日漸普及,內容所有者對信息的安全考慮愈加重視,經常出現在向云端發送數據之前對其進行加密的情況,加密域可逆信息隱藏技術則可以在恢復上傳數據的前提下對其進行傳輸和處理。
現有的加密域可逆信息隱藏一般分為四種類型:第一種是對加密圖像進行數據壓縮預留出空間來嵌入秘密信息[6~8],此類方式操作復雜,計算量大;第二種是加密前先進行預處理操作,以便于在確定信息嵌入位置[9~11],此類方式嵌入失真小,嵌入容量大,但需要內容所有者不僅要加密數據,還有為信息隱藏者做準備工作,在實際中并不適用;第三種是利用加密技術的同態性來嵌入數據[12~13],此類方法安全性好,但數據加密后計算復雜度急劇增加,對信息隱藏的工作挑戰性很大。第四種是直接對圖像進行加密,然后對加密圖像進行信息的嵌入。
文獻[14]通過翻轉部分加密圖像像素的低三位將1 bit秘密數據嵌入到圖像中,并利用像素之間的相關性恢復圖像,但此方法存在誤碼率較高和嵌入容量低的問題。文獻[15]針對此問題提出用全部像素的波動函數描述圖像平滑度來降低信息提取誤碼率,但嵌入容量依舊很低。文獻[16]利用像素的最低有效位進行信息的嵌入,使得信息提取誤碼率有所降低,峰值信噪比也有一定改善,但提升并不明顯。文獻[17]算法針對塊內圖像的平滑程度不會因分塊置亂加密而下降的特點,利用像素預測和排序技術(Pixel-Value-Ordering,PVO)對加密圖像進行處理,使得每個圖像塊至多可嵌入2 bits信息,嵌入容量和峰值信噪比明顯提升,還保證了可逆性和可分離性,但同時嵌入容量受限于分塊數量和分塊大小。文獻[18]是針對自然圖像進行的處理,算法充分開發了平滑塊的嵌入容量,根據局部復雜性自適應地將數據劃分為三種嵌入數據嵌入到塊中,提高了自然圖像平滑塊的像素利用率。
為提高加密圖像的嵌入容量和嵌入質量,本文結合PVO算法與自適應嵌入思想,提出一種基于改進PVO自適應嵌入的加密圖像的可逆信息隱藏方法。此方法充分利用置亂加密圖像塊的平滑程度不會因為置亂技術而下降的特點,將加密圖像塊根據局部復雜度自適應分為多個等級,每個等級確定相應的嵌入方式,越平滑塊可嵌入數據越多,其中使用塊中未修改的像素與該塊周圍像素來估計塊復雜度;并對塊內像素根據灰度值大小進行升序排列,將排序后的中間值作為目標像素,分塊內其他值作為參考像素,參考像素根據相關性強度自適應地嵌入秘密信息。結果表明,本文算法嵌入容量和嵌入質量都有較好的提升。

圖1 掃描方式及分塊方式
由于Arnold置亂加密圖像分塊內像素點只是打亂順序,像素灰度值的大小并未發生任何改變,塊內像素灰度值排序后,其平滑程度不會因置亂變換而下降。為此,為了實現在平滑區域嵌入更多像素這一目標,將平滑區域根據塊復雜度劃分多個等級,每個等級所能嵌入數據的容量根據所在等級而確定,并且每個等級其相應的嵌入方式也不同。具體來說,首先將分塊加密圖像進行像素灰度值排序,然后計算排序后像素的中間位置m1和m2,當像素數量為奇數時,m1=n/2,m2=n/2+1,當像素數量為偶數時,m1=m2=(n+1)/2,m的取值取決于n的大小,n為分塊圖像的像素個數取決于分塊大小,分塊越大,n越大,m值越大。其中值為分塊等級最大限定值,光滑區域的塊粗糙度可劃分為m等級的任何一級。我們假設將平滑塊最大等級設為t等級,將t等級的劃分如式(1)所示。


其中,j∈{1,…,k},PEA大于中間位置像素的預測誤差,PEI為小于中間位置像素的預測誤差。
塊復雜度描述所選圖像區域內像素的灰度值分布,用來反映特定位置、特定方向和特定范圍內各像素的灰度值變化程度。通過對區域內像素復雜度進行約束,秘密信息可以自適應地選擇約束范圍內的目標像素進行嵌入,記該約束條件為塊復雜度Δ。目標像素在塊復雜度Δ范圍內才會用來信息的嵌入,其他不滿足條件的則不嵌入信息,可以有效地減少像素不必要的修改,降低整體圖像的失真程度。使用塊中未修改的像素與該塊周圍像素來估計塊復雜度。
由于經過等級劃分后的分塊圖像,xf(t+)1,…,xf(n-t)塊內像素在嵌入信息過程中并未發生改變,為未修改像素,將此類像素結合鄰域像素來計算塊復雜度,使得對塊內平滑度描述的更加精確,塊復雜度Δ的定義如式(3)所示。

其中,μ為局部粗糙度像素均值;n1,n2圖像分塊大小;n為圖像塊像素個數。Δ≥νT為粗糙塊,像素之間相關性較弱,不用來嵌入信息;Δ≤νT為平滑塊。平滑塊再進一步進行等級劃分。平滑程度最好的則可嵌入2t bits信息,平滑程度最低則可嵌入2 bits信息。如圖2所示Airplane圖在PVO算法與本文算法的預測誤差直方圖,明顯看出,本文算法可嵌入點超過50000 bits,PVO算法可嵌入點為35000 bits,本文算法嵌入容量大大增加,證明改進PVO算法的優越性。

圖2 PVO算法與本文算法的預測誤差直方圖
本文提出算法包括圖像加密、水印嵌入、水印提取和圖像解密及恢復四個階段。內容所有者將原始圖像分為大小相同互重疊分塊,利用加密密鑰K1對原始圖像進行塊內像素置亂加密得到圖像I',再利用加密密鑰K2對分塊進行置亂變換,得到加密圖像I''。信息隱藏者對內容所有者提供的加密圖像進行同樣的分塊處理,對塊內像素按灰度值大小進行升序排列后,計算中間位置的像素灰度值大小xf(m),用xf(m)預測其他位置像素值并嵌入秘密信息;數據接收者通過輔助信息和密鑰K1和K2可以提取數據并通過Arnold逆變換恢復出原始圖像。
在圖像加密階段,使用Arnold置亂技術對原始圖像進行加密處理。一幅M×N大小圖像的二維Arnold變換定義如式(4)所示。

其中,a,b,c,d∈Z,并且滿足 |ad-bc|>0為加密密鑰,(x,y)為原始圖像像素坐標,(x′,y′)為置亂變 換 后 圖 像 像 素 坐 標,其 中x,y,x′,y′∈(1 ,…,n)。本文采用Arnold置亂加密,包括塊內置亂塊間置亂,可明顯提高傳統置亂加密的運算速度。具體地,將大小為M×N的原始圖像分為若干個n1×n2大小不重疊的塊(其中M,N分別為n1,n2的整數倍),然后對分塊采用式(4)對塊內像素進行置亂變換,形成塊內加密圖像I',然后繼續用式(4)對分塊進行置亂變換得到最終加密圖像。如圖3為置亂變換原理圖,原始圖像先經過橫向錯切變換,在進行縱向錯切變換,最后進行取模處理,得到圖像的一次置亂變換。加密圖像由多次置亂變換得到。

圖3 Arnold置亂變換原理圖
內容所有者將加密圖像發送給信息隱藏者。信息隱藏者對加密圖像進行信息的嵌入。具體步驟如下。
步驟一:首先將大小為M×N加密圖像I分成l個大小相同的非重疊塊A={ }A1,A2,…,Al,其中,的定義如式(5)所示。

其中,n1,n2為分塊的大小,通過光柵掃描方式將二維分塊圖像轉為一維矩陣Ai= {x1,x2,…,xn},n為分塊內包含n個像素,i∈{1 ,2,…,k}為分塊圖像數量,按灰度值大小將一維矩陣Ai升序排列后得到新的序列為一一映射關系。
步驟二:掃描分塊圖像,標記溢出分塊位置圖。對于新的序列B,塊內像素若出現0或255兩種情況時,分塊有可能發生溢出,若在此情況進行信息嵌入則不能保證算法的可逆性。所以此類分塊不嵌入信息,并對該分塊以序號0做標記,其他不會發生溢出的分塊以序號1作標記,表示該分塊可進行嵌入處理。將標記信息以輔助信息形式嵌入到圖像中,保證信息提取時的可逆性。針對每個分塊都進行標記處理,會形成很長的標記序列,導致輔助信息過長從而影響凈荷容量的問題,利用算術編碼對標記序列進行數據壓縮得到壓縮序列c。
步驟四:根據相關性強度自適應確定不同分組平滑塊的嵌入方式。具體來說,對于相同等級的平滑塊劃分成的一組Gk,k∈{ }1,…,t,采用相同的嵌入方式,嵌入公式如式(6)和式(7):
步驟五:當所有秘密嵌入完成后,記錄最后嵌入位置作為輔助信息,輔助信息還包括圖像分塊大小(n1,n2),壓縮位置圖c,等級t的大小,粗糙度閾值vT。將輔助信息嵌入到圖像最后位置中的最低有效位(LSB)中,所替換的LSB作為秘密信息嵌入到圖像中保證提取數據的完全可逆性。
數據接收者在收到含有秘密信息的加密圖像后,先對圖像進行數據提取得到秘密信息,再對提取數據后的加密圖像進行置亂逆變換得到恢復圖像。
步驟一:為了確定嵌入位置,需提取輔助信息,因此對含有秘密信息的加密圖像進行光柵掃描,掃描順序同嵌入過程相反,然后對位置圖進行解壓處理。這樣通過位置圖和像素值可確定其嵌入位置。
步驟二:將圖像分成與嵌入過程中相同的圖像塊,對于每一分塊的像素值先進行預測,因此要保證預測方法和預測像素的唯一性,才能滿足可逆信息隱藏唯一性的要求,進而保證提取信息過程的可逆性。
圖像像素提取公式如式(8)和式(9)。

其中,b A為xf(n-k)用來預測大于其灰度值的像素時的恢復比特;b I為xf(k+1)用來預測小于其灰度值的像素時的恢復比特?;謴图用軋D像如式(10)和式(11)所示。

其中,j∈{1,…,k},與信息提取后的加密像素。
步驟三:對恢復的加密圖像進行逆變換,恢復原始圖像,逆變換如式(12)所示。


本實驗選取圖4所示的6幅尺寸大小為512×512的標準灰度圖像進行實驗,其中包括:“Lena”、“Lake”、“Boat”、“Airplane”、“baboon”、“Barbara”等圖像。采用Matlab R2014a軟件進行測試。

圖4 標準測試圖像
利用大小為512×512的未壓縮的Lena灰度圖像作為原始圖像進行實驗,其中嵌入秘密信息為5000 bits。實驗結果如圖5所示,圖(a)為Lena的原始灰度圖像;圖(b)在4×4分塊下的加密圖像,加密圖像在視覺上完全不能看出原始圖像特征,加密效果良好;圖(c)是含有5000 bits秘密信息的加密圖像;圖(d)是將含有秘密信息的加密圖像進行信息提取后的圖像;圖(e)是將嵌入信息并將圖像進行解密后的恢復圖像,恢復圖像與原始圖像的PSNR值為108.131,說明解密圖像與原始圖像完全相同,該算法可無失真地恢復原始圖像,證明了算法的可逆性,即可以完全無差錯提取數據并可以無損恢復原始圖像。

圖5 Lena不同階段圖像
本算法峰值信噪比會因參數不同所得結果不同,其中最受影響的兩個參數為分塊大小和等級的劃分。因此,表2和3分別列出Lena和Boat兩幅圖在不同凈荷負載下,在不同等級和不同分塊下的峰值信噪比的仿真結果。

表1 Lena在不同等級和嵌入容量下的峰值信噪比

表2 Lena在不同等級和嵌入容量下的峰值信噪比
從表2和表3在不同嵌入數、不同分塊以及不同等級下的峰值信噪比可以看出:

表3 分塊大小為3×3時的嵌入容量(bit)
1)在相同嵌入容量和等級下,分塊越大,峰值信噪比越高,嵌入質量越好,在Lena圖中,在設置最大等級t=1時,3×3分塊、4×4分塊和5×5分塊,嵌入信息為10000 bits下,PSNR值分別為60.478,60.935,61.013。其中在5×5分塊下嵌入質量最好。相差的PSNR值分別為0.457、0.078??梢姺謮K越大,圖像質量相差越小。
2)一般來看,等級t設置的越高,PSNR值越低,圖像嵌入質量保真度會降低,但也有特殊情況,在Boat圖中,嵌入容量為5000 bit,設置等級t為1和2時,PSNR值分別為62.381、62.447,等級為2時的峰值信噪比等級為1時要高,主要取決于加密圖像分塊內的平滑程度,若分塊內平滑程度較高,嵌入數據較多時,分塊內嵌入質量可能會下降,嵌入數據的分塊則會減小,有可能會提高整體的嵌入質量。
3)如圖中,在嵌入數據為15000 bit和10000 bit情況下,等級t設置過低會導致數據無法完全嵌入,嵌入容量有限,從而可以看出等級的提升會提升圖像的嵌入容量。
4.2.1 嵌入容量
對圖4中4幅圖像進行嵌入容量的分析,原始圖像分別采用3×3、4×4和5×5的分塊方式進行加密,得到的加密圖像在防溢出處理得到位置圖后用算術編碼方法進行壓縮,采用本文方案選擇與加密方式相同的分塊方式進行預測,得到不同分塊下的凈荷嵌入容量。本文算法分別與文獻[9]中Ma的算法、文獻[14]中Zhang的算法和文獻[18]中PVO算法的嵌入容量進行對比。

表4 分塊大小為4×4時的嵌入容量(bit)

表5 分塊大小為5×5時的嵌入容量(bit)
通過對比不同分塊下的嵌入容量可以看出:
1)分塊越大,嵌入容量越小,PVO算法在3×3與5×5分塊平均嵌入容量分別為14828和5807,降低了255%,本文算法在3×3與5×5分塊平均嵌入容量分別為65598和60534,降低了5067比特,降低并不明顯,分塊大小的選擇對于本文算法與PVO算法對比影響降低明顯。
2)相同分塊大小下,本文算法與其他三種算法相比明顯提高了凈荷嵌入容量,并且分塊越大提升的越明顯,如表中所示分塊為3×3、4×4和5×5時分別平均最多提升了50770比特,53602比特和54727比特。主要是因為本文算法隨著分塊的增加,凈荷容量減小的并不明顯,而另外三種方法嚴重受限于分塊的大小,分塊增加,凈荷容量迅速下降。
3)本文算法并未對小分塊進行對比,原因是本文算法針對小分塊(上下文像素為4以下)無法進行信息的嵌入,在分塊大小2×2時,中間位置的預測像素為兩個,本文只針對中大塊進行分析,也是本文算法所存在的缺陷。
4.2.2 峰值信噪比
表6和表7分別列出了加密分塊為4×4情況下,在凈荷負載為5000比特和7000比特時文獻[9]中Ma的算法、文獻[14]中Zhang的算法和文獻[18]中PVO算法的峰值信噪比(PSNR)性能對比。

表6 凈荷負載為5000比特的PSNR性能(dB)

表7 凈荷負載為7000比特的PSNR性能(dB)
通過對比四種算法在5000凈荷負載和7000凈荷負載的峰值信噪比可以看出本文相對其他三種方法在峰值信噪比都有不同程度的提高,本文算法與PVO算法對比,PSNR值略有提高,對比Barbara圖,本文算法與PVO的PSNR值在凈荷容量為5000比特時相差僅0.33。在Airplane圖中兩算法相差1.423,主要原因是本文算法在平滑圖中優越性表現較為明顯。
明顯看到,PVO在Baboon加密圖像中信息均無法嵌入,是因為,對于PVO算法來說,4×4分塊屬于大分塊,PVO算法嵌入容量嚴重受限于分塊大小,又因為Baboon圖像平滑程度較低,導致PVO算法在4×4嵌入容量低,使信息無法嵌入。
為進一步證明本算法的性能。圖6顯示了本文算法與其他三種算法的實驗結果,主要是在嵌入不同比特下所對應的峰值信噪比。

圖6 不同嵌入比特對應的峰值信噪比
可以明顯看出,本文算法在嵌入容量上有明顯提升,在嵌入質量上與PVO對比稍有提升,與另外兩種傳統方法相比優勢明顯。
根據Arnold置亂加密圖像的特點及可逆信息隱藏技術的特點,利用置亂圖像分塊內像素相關性高的特點,對分塊內圖像按平滑度進行分等級的嵌入信息從而提高嵌入容量,并重新定義粗糙度從而提高嵌入質量。仿真結果表明,本文提出的基于Arnold置亂加密域圖像的可逆信息隱藏方法與傳統方法相比在嵌入質量和嵌入容量方面有明顯提高,無論在主觀評價還是客觀評價都表現優良,在加密域可逆信息隱藏中是一種行之有效的方法。