侯思祖 馬紅月 項(xiàng)洪印
(華北電力大學(xué)電氣與電子工程學(xué)院 保定 071003)
可逆信息隱藏(Reversible Data Hiding,RDH)是一種將秘密信息嵌入到原始圖像中,并保證在提取隱藏?cái)?shù)據(jù)后可以無(wú)差錯(cuò)地恢復(fù)原始圖像的技術(shù)??蓱?yīng)用于軍事、醫(yī)療等要求原始圖像不允許有任何變化的敏感領(lǐng)域中。典型的RDH方法,如差值擴(kuò)展[1~2]、直方圖平移[3]、無(wú)損壓縮[4~5]是利用自然圖像的冗余來(lái)嵌入信息。加密技術(shù)是利用加密密鑰將原始圖像轉(zhuǎn)化為毫無(wú)意義的圖像來(lái)保護(hù)圖像內(nèi)容。信息隱藏技術(shù)和加密技術(shù)在數(shù)據(jù)保護(hù)方面發(fā)揮著不同的功能。近年來(lái)云服務(wù)日漸普及,內(nèi)容所有者對(duì)信息的安全考慮愈加重視,經(jīng)常出現(xiàn)在向云端發(fā)送數(shù)據(jù)之前對(duì)其進(jìn)行加密的情況,加密域可逆信息隱藏技術(shù)則可以在恢復(fù)上傳數(shù)據(jù)的前提下對(duì)其進(jìn)行傳輸和處理。
現(xiàn)有的加密域可逆信息隱藏一般分為四種類(lèi)型:第一種是對(duì)加密圖像進(jìn)行數(shù)據(jù)壓縮預(yù)留出空間來(lái)嵌入秘密信息[6~8],此類(lèi)方式操作復(fù)雜,計(jì)算量大;第二種是加密前先進(jìn)行預(yù)處理操作,以便于在確定信息嵌入位置[9~11],此類(lèi)方式嵌入失真小,嵌入容量大,但需要內(nèi)容所有者不僅要加密數(shù)據(jù),還有為信息隱藏者做準(zhǔn)備工作,在實(shí)際中并不適用;第三種是利用加密技術(shù)的同態(tài)性來(lái)嵌入數(shù)據(jù)[12~13],此類(lèi)方法安全性好,但數(shù)據(jù)加密后計(jì)算復(fù)雜度急劇增加,對(duì)信息隱藏的工作挑戰(zhàn)性很大。第四種是直接對(duì)圖像進(jìn)行加密,然后對(duì)加密圖像進(jìn)行信息的嵌入。
文獻(xiàn)[14]通過(guò)翻轉(zhuǎn)部分加密圖像像素的低三位將1 bit秘密數(shù)據(jù)嵌入到圖像中,并利用像素之間的相關(guān)性恢復(fù)圖像,但此方法存在誤碼率較高和嵌入容量低的問(wèn)題。文獻(xiàn)[15]針對(duì)此問(wèn)題提出用全部像素的波動(dòng)函數(shù)描述圖像平滑度來(lái)降低信息提取誤碼率,但嵌入容量依舊很低。文獻(xiàn)[16]利用像素的最低有效位進(jìn)行信息的嵌入,使得信息提取誤碼率有所降低,峰值信噪比也有一定改善,但提升并不明顯。文獻(xiàn)[17]算法針對(duì)塊內(nèi)圖像的平滑程度不會(huì)因分塊置亂加密而下降的特點(diǎn),利用像素預(yù)測(cè)和排序技術(shù)(Pixel-Value-Ordering,PVO)對(duì)加密圖像進(jìn)行處理,使得每個(gè)圖像塊至多可嵌入2 bits信息,嵌入容量和峰值信噪比明顯提升,還保證了可逆性和可分離性,但同時(shí)嵌入容量受限于分塊數(shù)量和分塊大小。文獻(xiàn)[18]是針對(duì)自然圖像進(jìn)行的處理,算法充分開(kāi)發(fā)了平滑塊的嵌入容量,根據(jù)局部復(fù)雜性自適應(yīng)地將數(shù)據(jù)劃分為三種嵌入數(shù)據(jù)嵌入到塊中,提高了自然圖像平滑塊的像素利用率。
為提高加密圖像的嵌入容量和嵌入質(zhì)量,本文結(jié)合PVO算法與自適應(yīng)嵌入思想,提出一種基于改進(jìn)PVO自適應(yīng)嵌入的加密圖像的可逆信息隱藏方法。此方法充分利用置亂加密圖像塊的平滑程度不會(huì)因?yàn)橹脕y技術(shù)而下降的特點(diǎn),將加密圖像塊根據(jù)局部復(fù)雜度自適應(yīng)分為多個(gè)等級(jí),每個(gè)等級(jí)確定相應(yīng)的嵌入方式,越平滑塊可嵌入數(shù)據(jù)越多,其中使用塊中未修改的像素與該塊周?chē)袼貋?lái)估計(jì)塊復(fù)雜度;并對(duì)塊內(nèi)像素根據(jù)灰度值大小進(jìn)行升序排列,將排序后的中間值作為目標(biāo)像素,分塊內(nèi)其他值作為參考像素,參考像素根據(jù)相關(guān)性強(qiáng)度自適應(yīng)地嵌入秘密信息。結(jié)果表明,本文算法嵌入容量和嵌入質(zhì)量都有較好的提升。
圖1 掃描方式及分塊方式
由于Arnold置亂加密圖像分塊內(nèi)像素點(diǎn)只是打亂順序,像素灰度值的大小并未發(fā)生任何改變,塊內(nèi)像素灰度值排序后,其平滑程度不會(huì)因置亂變換而下降。為此,為了實(shí)現(xiàn)在平滑區(qū)域嵌入更多像素這一目標(biāo),將平滑區(qū)域根據(jù)塊復(fù)雜度劃分多個(gè)等級(jí),每個(gè)等級(jí)所能嵌入數(shù)據(jù)的容量根據(jù)所在等級(jí)而確定,并且每個(gè)等級(jí)其相應(yīng)的嵌入方式也不同。具體來(lái)說(shuō),首先將分塊加密圖像進(jìn)行像素灰度值排序,然后計(jì)算排序后像素的中間位置m1和m2,當(dāng)像素?cái)?shù)量為奇數(shù)時(shí),m1=n/2,m2=n/2+1,當(dāng)像素?cái)?shù)量為偶數(shù)時(shí),m1=m2=(n+1)/2,m的取值取決于n的大小,n為分塊圖像的像素個(gè)數(shù)取決于分塊大小,分塊越大,n越大,m值越大。其中值為分塊等級(jí)最大限定值,光滑區(qū)域的塊粗糙度可劃分為m等級(jí)的任何一級(jí)。我們假設(shè)將平滑塊最大等級(jí)設(shè)為t等級(jí),將t等級(jí)的劃分如式(1)所示。
其中,j∈{1,…,k},PEA大于中間位置像素的預(yù)測(cè)誤差,PEI為小于中間位置像素的預(yù)測(cè)誤差。
塊復(fù)雜度描述所選圖像區(qū)域內(nèi)像素的灰度值分布,用來(lái)反映特定位置、特定方向和特定范圍內(nèi)各像素的灰度值變化程度。通過(guò)對(duì)區(qū)域內(nèi)像素復(fù)雜度進(jìn)行約束,秘密信息可以自適應(yīng)地選擇約束范圍內(nèi)的目標(biāo)像素進(jìn)行嵌入,記該約束條件為塊復(fù)雜度Δ。目標(biāo)像素在塊復(fù)雜度Δ范圍內(nèi)才會(huì)用來(lái)信息的嵌入,其他不滿(mǎn)足條件的則不嵌入信息,可以有效地減少像素不必要的修改,降低整體圖像的失真程度。使用塊中未修改的像素與該塊周?chē)袼貋?lái)估計(jì)塊復(fù)雜度。
由于經(jīng)過(guò)等級(jí)劃分后的分塊圖像,xf(t+)1,…,xf(n-t)塊內(nèi)像素在嵌入信息過(guò)程中并未發(fā)生改變,為未修改像素,將此類(lèi)像素結(jié)合鄰域像素來(lái)計(jì)算塊復(fù)雜度,使得對(duì)塊內(nèi)平滑度描述的更加精確,塊復(fù)雜度Δ的定義如式(3)所示。
其中,μ為局部粗糙度像素均值;n1,n2圖像分塊大小;n為圖像塊像素個(gè)數(shù)。Δ≥νT為粗糙塊,像素之間相關(guān)性較弱,不用來(lái)嵌入信息;Δ≤νT為平滑塊。平滑塊再進(jìn)一步進(jìn)行等級(jí)劃分。平滑程度最好的則可嵌入2t bits信息,平滑程度最低則可嵌入2 bits信息。如圖2所示Airplane圖在PVO算法與本文算法的預(yù)測(cè)誤差直方圖,明顯看出,本文算法可嵌入點(diǎn)超過(guò)50000 bits,PVO算法可嵌入點(diǎn)為35000 bits,本文算法嵌入容量大大增加,證明改進(jìn)PVO算法的優(yōu)越性。
圖2 PVO算法與本文算法的預(yù)測(cè)誤差直方圖
本文提出算法包括圖像加密、水印嵌入、水印提取和圖像解密及恢復(fù)四個(gè)階段。內(nèi)容所有者將原始圖像分為大小相同互重疊分塊,利用加密密鑰K1對(duì)原始圖像進(jìn)行塊內(nèi)像素置亂加密得到圖像I',再利用加密密鑰K2對(duì)分塊進(jìn)行置亂變換,得到加密圖像I''。信息隱藏者對(duì)內(nèi)容所有者提供的加密圖像進(jìn)行同樣的分塊處理,對(duì)塊內(nèi)像素按灰度值大小進(jìn)行升序排列后,計(jì)算中間位置的像素灰度值大小xf(m),用xf(m)預(yù)測(cè)其他位置像素值并嵌入秘密信息;數(shù)據(jù)接收者通過(guò)輔助信息和密鑰K1和K2可以提取數(shù)據(jù)并通過(guò)Arnold逆變換恢復(fù)出原始圖像。
在圖像加密階段,使用Arnold置亂技術(shù)對(duì)原始圖像進(jìn)行加密處理。一幅M×N大小圖像的二維Arnold變換定義如式(4)所示。
其中,a,b,c,d∈Z,并且滿(mǎn)足 |ad-bc|>0為加密密鑰,(x,y)為原始圖像像素坐標(biāo),(x′,y′)為置亂變 換 后 圖 像 像 素 坐 標(biāo),其 中x,y,x′,y′∈(1 ,…,n)。本文采用Arnold置亂加密,包括塊內(nèi)置亂塊間置亂,可明顯提高傳統(tǒng)置亂加密的運(yùn)算速度。具體地,將大小為M×N的原始圖像分為若干個(gè)n1×n2大小不重疊的塊(其中M,N分別為n1,n2的整數(shù)倍),然后對(duì)分塊采用式(4)對(duì)塊內(nèi)像素進(jìn)行置亂變換,形成塊內(nèi)加密圖像I',然后繼續(xù)用式(4)對(duì)分塊進(jìn)行置亂變換得到最終加密圖像。如圖3為置亂變換原理圖,原始圖像先經(jīng)過(guò)橫向錯(cuò)切變換,在進(jìn)行縱向錯(cuò)切變換,最后進(jìn)行取模處理,得到圖像的一次置亂變換。加密圖像由多次置亂變換得到。
圖3 Arnold置亂變換原理圖
內(nèi)容所有者將加密圖像發(fā)送給信息隱藏者。信息隱藏者對(duì)加密圖像進(jìn)行信息的嵌入。具體步驟如下。
步驟一:首先將大小為M×N加密圖像I分成l個(gè)大小相同的非重疊塊A={ }A1,A2,…,Al,其中,的定義如式(5)所示。
其中,n1,n2為分塊的大小,通過(guò)光柵掃描方式將二維分塊圖像轉(zhuǎn)為一維矩陣Ai= {x1,x2,…,xn},n為分塊內(nèi)包含n個(gè)像素,i∈{1 ,2,…,k}為分塊圖像數(shù)量,按灰度值大小將一維矩陣Ai升序排列后得到新的序列為一一映射關(guān)系。
步驟二:掃描分塊圖像,標(biāo)記溢出分塊位置圖。對(duì)于新的序列B,塊內(nèi)像素若出現(xiàn)0或255兩種情況時(shí),分塊有可能發(fā)生溢出,若在此情況進(jìn)行信息嵌入則不能保證算法的可逆性。所以此類(lèi)分塊不嵌入信息,并對(duì)該分塊以序號(hào)0做標(biāo)記,其他不會(huì)發(fā)生溢出的分塊以序號(hào)1作標(biāo)記,表示該分塊可進(jìn)行嵌入處理。將標(biāo)記信息以輔助信息形式嵌入到圖像中,保證信息提取時(shí)的可逆性。針對(duì)每個(gè)分塊都進(jìn)行標(biāo)記處理,會(huì)形成很長(zhǎng)的標(biāo)記序列,導(dǎo)致輔助信息過(guò)長(zhǎng)從而影響凈荷容量的問(wèn)題,利用算術(shù)編碼對(duì)標(biāo)記序列進(jìn)行數(shù)據(jù)壓縮得到壓縮序列c。
步驟四:根據(jù)相關(guān)性強(qiáng)度自適應(yīng)確定不同分組平滑塊的嵌入方式。具體來(lái)說(shuō),對(duì)于相同等級(jí)的平滑塊劃分成的一組Gk,k∈{ }1,…,t,采用相同的嵌入方式,嵌入公式如式(6)和式(7):
步驟五:當(dāng)所有秘密嵌入完成后,記錄最后嵌入位置作為輔助信息,輔助信息還包括圖像分塊大小(n1,n2),壓縮位置圖c,等級(jí)t的大小,粗糙度閾值vT。將輔助信息嵌入到圖像最后位置中的最低有效位(LSB)中,所替換的LSB作為秘密信息嵌入到圖像中保證提取數(shù)據(jù)的完全可逆性。
數(shù)據(jù)接收者在收到含有秘密信息的加密圖像后,先對(duì)圖像進(jìn)行數(shù)據(jù)提取得到秘密信息,再對(duì)提取數(shù)據(jù)后的加密圖像進(jìn)行置亂逆變換得到恢復(fù)圖像。
步驟一:為了確定嵌入位置,需提取輔助信息,因此對(duì)含有秘密信息的加密圖像進(jìn)行光柵掃描,掃描順序同嵌入過(guò)程相反,然后對(duì)位置圖進(jìn)行解壓處理。這樣通過(guò)位置圖和像素值可確定其嵌入位置。
步驟二:將圖像分成與嵌入過(guò)程中相同的圖像塊,對(duì)于每一分塊的像素值先進(jìn)行預(yù)測(cè),因此要保證預(yù)測(cè)方法和預(yù)測(cè)像素的唯一性,才能滿(mǎn)足可逆信息隱藏唯一性的要求,進(jìn)而保證提取信息過(guò)程的可逆性。
圖像像素提取公式如式(8)和式(9)。
其中,b A為xf(n-k)用來(lái)預(yù)測(cè)大于其灰度值的像素時(shí)的恢復(fù)比特;b I為xf(k+1)用來(lái)預(yù)測(cè)小于其灰度值的像素時(shí)的恢復(fù)比特。恢復(fù)加密圖像如式(10)和式(11)所示。
其中,j∈{1,…,k},與信息提取后的加密像素。
步驟三:對(duì)恢復(fù)的加密圖像進(jìn)行逆變換,恢復(fù)原始圖像,逆變換如式(12)所示。
本實(shí)驗(yàn)選取圖4所示的6幅尺寸大小為512×512的標(biāo)準(zhǔn)灰度圖像進(jìn)行實(shí)驗(yàn),其中包括:“Lena”、“Lake”、“Boat”、“Airplane”、“baboon”、“Barbara”等圖像。采用Matlab R2014a軟件進(jìn)行測(cè)試。
圖4 標(biāo)準(zhǔn)測(cè)試圖像
利用大小為512×512的未壓縮的Lena灰度圖像作為原始圖像進(jìn)行實(shí)驗(yàn),其中嵌入秘密信息為5000 bits。實(shí)驗(yàn)結(jié)果如圖5所示,圖(a)為L(zhǎng)ena的原始灰度圖像;圖(b)在4×4分塊下的加密圖像,加密圖像在視覺(jué)上完全不能看出原始圖像特征,加密效果良好;圖(c)是含有5000 bits秘密信息的加密圖像;圖(d)是將含有秘密信息的加密圖像進(jìn)行信息提取后的圖像;圖(e)是將嵌入信息并將圖像進(jìn)行解密后的恢復(fù)圖像,恢復(fù)圖像與原始圖像的PSNR值為108.131,說(shuō)明解密圖像與原始圖像完全相同,該算法可無(wú)失真地恢復(fù)原始圖像,證明了算法的可逆性,即可以完全無(wú)差錯(cuò)提取數(shù)據(jù)并可以無(wú)損恢復(fù)原始圖像。
圖5 Lena不同階段圖像
本算法峰值信噪比會(huì)因參數(shù)不同所得結(jié)果不同,其中最受影響的兩個(gè)參數(shù)為分塊大小和等級(jí)的劃分。因此,表2和3分別列出Lena和Boat兩幅圖在不同凈荷負(fù)載下,在不同等級(jí)和不同分塊下的峰值信噪比的仿真結(jié)果。
表1 Lena在不同等級(jí)和嵌入容量下的峰值信噪比
表2 Lena在不同等級(jí)和嵌入容量下的峰值信噪比
從表2和表3在不同嵌入數(shù)、不同分塊以及不同等級(jí)下的峰值信噪比可以看出:
表3 分塊大小為3×3時(shí)的嵌入容量(bit)
1)在相同嵌入容量和等級(jí)下,分塊越大,峰值信噪比越高,嵌入質(zhì)量越好,在Lena圖中,在設(shè)置最大等級(jí)t=1時(shí),3×3分塊、4×4分塊和5×5分塊,嵌入信息為10000 bits下,PSNR值分別為60.478,60.935,61.013。其中在5×5分塊下嵌入質(zhì)量最好。相差的PSNR值分別為0.457、0.078??梢?jiàn)分塊越大,圖像質(zhì)量相差越小。
2)一般來(lái)看,等級(jí)t設(shè)置的越高,PSNR值越低,圖像嵌入質(zhì)量保真度會(huì)降低,但也有特殊情況,在Boat圖中,嵌入容量為5000 bit,設(shè)置等級(jí)t為1和2時(shí),PSNR值分別為62.381、62.447,等級(jí)為2時(shí)的峰值信噪比等級(jí)為1時(shí)要高,主要取決于加密圖像分塊內(nèi)的平滑程度,若分塊內(nèi)平滑程度較高,嵌入數(shù)據(jù)較多時(shí),分塊內(nèi)嵌入質(zhì)量可能會(huì)下降,嵌入數(shù)據(jù)的分塊則會(huì)減小,有可能會(huì)提高整體的嵌入質(zhì)量。
3)如圖中,在嵌入數(shù)據(jù)為15000 bit和10000 bit情況下,等級(jí)t設(shè)置過(guò)低會(huì)導(dǎo)致數(shù)據(jù)無(wú)法完全嵌入,嵌入容量有限,從而可以看出等級(jí)的提升會(huì)提升圖像的嵌入容量。
4.2.1 嵌入容量
對(duì)圖4中4幅圖像進(jìn)行嵌入容量的分析,原始圖像分別采用3×3、4×4和5×5的分塊方式進(jìn)行加密,得到的加密圖像在防溢出處理得到位置圖后用算術(shù)編碼方法進(jìn)行壓縮,采用本文方案選擇與加密方式相同的分塊方式進(jìn)行預(yù)測(cè),得到不同分塊下的凈荷嵌入容量。本文算法分別與文獻(xiàn)[9]中Ma的算法、文獻(xiàn)[14]中Zhang的算法和文獻(xiàn)[18]中PVO算法的嵌入容量進(jìn)行對(duì)比。
表4 分塊大小為4×4時(shí)的嵌入容量(bit)
表5 分塊大小為5×5時(shí)的嵌入容量(bit)
通過(guò)對(duì)比不同分塊下的嵌入容量可以看出:
1)分塊越大,嵌入容量越小,PVO算法在3×3與5×5分塊平均嵌入容量分別為14828和5807,降低了255%,本文算法在3×3與5×5分塊平均嵌入容量分別為65598和60534,降低了5067比特,降低并不明顯,分塊大小的選擇對(duì)于本文算法與PVO算法對(duì)比影響降低明顯。
2)相同分塊大小下,本文算法與其他三種算法相比明顯提高了凈荷嵌入容量,并且分塊越大提升的越明顯,如表中所示分塊為3×3、4×4和5×5時(shí)分別平均最多提升了50770比特,53602比特和54727比特。主要是因?yàn)楸疚乃惴S著分塊的增加,凈荷容量減小的并不明顯,而另外三種方法嚴(yán)重受限于分塊的大小,分塊增加,凈荷容量迅速下降。
3)本文算法并未對(duì)小分塊進(jìn)行對(duì)比,原因是本文算法針對(duì)小分塊(上下文像素為4以下)無(wú)法進(jìn)行信息的嵌入,在分塊大小2×2時(shí),中間位置的預(yù)測(cè)像素為兩個(gè),本文只針對(duì)中大塊進(jìn)行分析,也是本文算法所存在的缺陷。
4.2.2 峰值信噪比
表6和表7分別列出了加密分塊為4×4情況下,在凈荷負(fù)載為5000比特和7000比特時(shí)文獻(xiàn)[9]中Ma的算法、文獻(xiàn)[14]中Zhang的算法和文獻(xiàn)[18]中PVO算法的峰值信噪比(PSNR)性能對(duì)比。
表6 凈荷負(fù)載為5000比特的PSNR性能(dB)
表7 凈荷負(fù)載為7000比特的PSNR性能(dB)
通過(guò)對(duì)比四種算法在5000凈荷負(fù)載和7000凈荷負(fù)載的峰值信噪比可以看出本文相對(duì)其他三種方法在峰值信噪比都有不同程度的提高,本文算法與PVO算法對(duì)比,PSNR值略有提高,對(duì)比Barbara圖,本文算法與PVO的PSNR值在凈荷容量為5000比特時(shí)相差僅0.33。在Airplane圖中兩算法相差1.423,主要原因是本文算法在平滑圖中優(yōu)越性表現(xiàn)較為明顯。
明顯看到,PVO在Baboon加密圖像中信息均無(wú)法嵌入,是因?yàn)椋瑢?duì)于PVO算法來(lái)說(shuō),4×4分塊屬于大分塊,PVO算法嵌入容量嚴(yán)重受限于分塊大小,又因?yàn)锽aboon圖像平滑程度較低,導(dǎo)致PVO算法在4×4嵌入容量低,使信息無(wú)法嵌入。
為進(jìn)一步證明本算法的性能。圖6顯示了本文算法與其他三種算法的實(shí)驗(yàn)結(jié)果,主要是在嵌入不同比特下所對(duì)應(yīng)的峰值信噪比。
圖6 不同嵌入比特對(duì)應(yīng)的峰值信噪比
可以明顯看出,本文算法在嵌入容量上有明顯提升,在嵌入質(zhì)量上與PVO對(duì)比稍有提升,與另外兩種傳統(tǒng)方法相比優(yōu)勢(shì)明顯。
根據(jù)Arnold置亂加密圖像的特點(diǎn)及可逆信息隱藏技術(shù)的特點(diǎn),利用置亂圖像分塊內(nèi)像素相關(guān)性高的特點(diǎn),對(duì)分塊內(nèi)圖像按平滑度進(jìn)行分等級(jí)的嵌入信息從而提高嵌入容量,并重新定義粗糙度從而提高嵌入質(zhì)量。仿真結(jié)果表明,本文提出的基于Arnold置亂加密域圖像的可逆信息隱藏方法與傳統(tǒng)方法相比在嵌入質(zhì)量和嵌入容量方面有明顯提高,無(wú)論在主觀(guān)評(píng)價(jià)還是客觀(guān)評(píng)價(jià)都表現(xiàn)優(yōu)良,在加密域可逆信息隱藏中是一種行之有效的方法。