饒俊慧,吳曉云
(1. 玉林師范學(xué)院 物理與電信工程學(xué)院,廣西 玉林 537000;2. 廣東財(cái)經(jīng)大學(xué) 信息學(xué)院,廣東 廣州 5 10320)
圖像處理技術(shù)發(fā)展的同時(shí),給數(shù)字圖像信息安全帶來(lái)嚴(yán)峻挑戰(zhàn),利用一些軟件和技術(shù)可以輕易篡改圖像內(nèi)容,其效果逼真甚至很難通過(guò)主觀視覺(jué)進(jìn)行鑒別。這種現(xiàn)象導(dǎo)致版權(quán)、票據(jù)和證件的真?zhèn)坞y辨,進(jìn)而對(duì)信息安全構(gòu)成威脅。水印算法利用在圖像上嵌入特殊水印,使原始圖像包含非可見(jiàn)特殊信息[1]。這樣通過(guò)對(duì)圖像進(jìn)行水印提取,對(duì)比水印信息就可以確定圖像是否遭受惡意攻擊。由于水印算法具有圖像完整性認(rèn)證功能[2],因此關(guān)于圖像的水印算法已經(jīng)成為數(shù)字圖像安全保密研究領(lǐng)域的重點(diǎn),現(xiàn)階段的研究熱點(diǎn)是如何增強(qiáng)水印的隱藏性,以及在攻擊情況下的魯棒性[3]。早期水印算法只能應(yīng)用于灰度圖像[4],伴隨互聯(lián)網(wǎng)帶寬與數(shù)據(jù)處理能力的增加,彩色數(shù)字圖像大幅增加,不斷涌現(xiàn)出適用于彩色圖像的水印算法。當(dāng)下較為成熟的算法有Hadamard、DWT、DCT、SVD,以及Contourle等算法,為了獲得良好的水印效果,通常采用多種算法融合策略。文獻(xiàn)[5]在將原始圖像采取SVD處理的基礎(chǔ)上,對(duì)全部分塊采取Hadamard操作,并添加半脆弱水印。該算法僅對(duì)JPEG壓縮攻擊做了分析,缺乏其它攻擊的抵抗性能支持。文獻(xiàn)[6]在初始化階段采取亮度小波分解,隨后利用SVD添加水印。該算法針對(duì)多種攻擊進(jìn)行了客觀驗(yàn)證,并且具有較好的水印破譯難度。文獻(xiàn)[7]通過(guò)Contourle和SVD完成雙重水印添加,并分別采取Landweber與SIFT對(duì)水印進(jìn)行重構(gòu)和校正。該算法表現(xiàn)出良好的魯棒性,但是在提取過(guò)程中必須依賴密鑰。文獻(xiàn)[8]對(duì)原始圖像做HSV空間變換,并對(duì)S分量采取DCT變換,同時(shí)把HASH水印添加到S分量,該方法具有良好的半脆弱水印性能。
基于現(xiàn)有研究,為了進(jìn)一步增強(qiáng)水印算法的隱藏性與魯棒性,本文提出了融合DCT與SVD的半脆弱圖像水印算法。算法有效利用了SVD的非可見(jiàn)性優(yōu)勢(shì),同時(shí)優(yōu)化了靈敏度和嵌入系數(shù),并設(shè)計(jì)了二值水印篡改識(shí)別。此外,有效利用了DCT的感知能力,通過(guò)融合DCT來(lái)增強(qiáng)SVD嵌入與提取的性能。
對(duì)于任何圖像而言,它的奇異值能夠用于描述其內(nèi)部特征。由于奇異值表現(xiàn)出良好的穩(wěn)定性,所以當(dāng)圖像存在一定程度干擾的情況下,奇異值仍然能夠保持較好的穩(wěn)定特征。根據(jù)該特點(diǎn),對(duì)圖像進(jìn)行SVD處理,可以將矩陣采取對(duì)角化操作,得到圖像奇異值,再在其上添加水印,此時(shí)即便存在外界攻擊,依舊可以較好的恢復(fù)水印。另外,奇異值表現(xiàn)的是亮度信息,水印的添加不會(huì)影響圖像的主觀效果與幾何性質(zhì)。假定矩陣A∈Rm×n,則A對(duì)應(yīng)的SVD矩陣分解表示為
A=LSRT
(1)
L與R均是正交矩陣,依次代表左、右奇異值;S代表對(duì)角矩陣,描述如下
S=diag(σ1,σ2,…,σm),σ1≥σ2≥…≥σm≥0
(2)
為了提高SVD的靈敏度,這里對(duì)圖像采取分塊奇異值分析。對(duì)于一幅M×N圖像,按照RGB分離得到圖像Ir,Ig和Ib。利用在RGB內(nèi)分別添加半脆弱水印,就可以實(shí)現(xiàn)對(duì)任意通道的篡改識(shí)別。在分塊過(guò)程中,塊的大小會(huì)影響篡改識(shí)別精度,但是也不能無(wú)限小,隨著塊的變小誤檢率也會(huì)隨之增加,因此需要綜合考量,本文采取3×3的分塊。傳統(tǒng)方法利用單個(gè)LSB來(lái)保存認(rèn)證數(shù)據(jù),為盡可能完整的得到分塊數(shù)據(jù),這里在兩個(gè)LSB上添加水印。嵌入水印時(shí),先將所有分塊低頻子帶采取SVD處理可得
Fcb=LcbScbRcbT,c∈{R,G,B},b∈{blocki}
(3)
其中,i代表分塊,即i=1,2,3,…,9。再把水印采取RGB分離得到Wr,Wg和Wb,SVD處理可得
Wc=LcwScwRcwT,c∈{R,G,B}
(4)
根據(jù)水印Wr,Wg和Wb的SVD結(jié)果修改低頻子帶的SVD結(jié)果,從而完成水印嵌入,于是嵌入過(guò)程描述如下
S′cb=Scb+λScw,c∈{R,G,B},b∈{blocki}
(5)
其中,0<λ<1表示嵌入系數(shù)。為了選取合適的嵌入系數(shù)λ,基于隱藏與魯棒效果的考慮,這里設(shè)計(jì)如下方式確定λ
(6)
PSNR表示嵌入后的峰值信噪比,且PSNR>0;NC表示相關(guān)系數(shù),且0 Scrz(i,j)=Scrb(i,j)-(Scrb(i,j)mod 4) (7) 其中,Scrb表示置亂圖像;Scrz表示對(duì)Scrb內(nèi)兩個(gè)LSB像素清零。采用八位二進(jìn)制數(shù)描述分塊數(shù)據(jù),其中五位用于記錄矩陣S的跡,其余三位用于記錄局部分塊的平均跡。從而形成對(duì)獨(dú)立分塊與局部分組的篡改識(shí)別。在水印提取時(shí),先提取出LSB,同時(shí)得到獨(dú)立分塊與局部分組的篡改識(shí)別OBAB與OGAB。然后計(jì)算二值水印,并采取匹配處理,獨(dú)立分塊匹配過(guò)程如下 (8) 其中,BAB表示由MSB得出的分塊驗(yàn)證;TV表示實(shí)際的二值水印。局部分組匹配過(guò)程如下 (9) 其中,GAB表示由MSB得出的分組驗(yàn)證。通過(guò)TV′與TV的對(duì)比,便可以確定圖像的篡改部分。 DCT變換具有效率高、易擴(kuò)展、感知能力強(qiáng)的優(yōu)勢(shì),根據(jù)一維DCT,可以方便的擴(kuò)展至二維應(yīng)用場(chǎng)合 (10) 其中,第一個(gè)方程表示DCT正變換;第二個(gè)方程表示DCT反變換;x與y表示空間變量,且x=0,1,…,M-1,y=0,1,…,N-1;m與n表示頻域變量,且m=0,1,…,M-1,n=0,1,…,N-1;z(m)與z(n)表示變換系數(shù),其取值方式為 (11) 在數(shù)字圖像處理場(chǎng)景中,一般通過(guò)像素對(duì)其進(jìn)行描述,這樣可以令M=N,從而可以簡(jiǎn)化DCT的復(fù)雜度。其變換系數(shù)轉(zhuǎn)化為 (12) 在利用DCT嵌入水印時(shí),同樣采取獨(dú)立分塊原則,將其分為3×3數(shù)量的獨(dú)立塊。將圖像保存至二維數(shù)組中,分塊得到block(x,y)。將block(x,y)采取DCT處理,輸出結(jié)果為block_dct(x,y)。與SVD嵌入時(shí)同樣的通道操作,根據(jù)水印Wr,Wg和Wb的DCT結(jié)果修改低頻子帶的DCT結(jié)果。與SVD嵌入不同的是,此時(shí)需要將圖像分塊采取DCT反變換,經(jīng)過(guò)重組后完成水印添加。在對(duì)水印進(jìn)行DCT提取時(shí),為嵌入的逆操作。先對(duì)添加水印的圖像分塊,采取DCT反變換,獲取到block_dct(x,y)。再根據(jù)block_dct(x,y)逆向計(jì)算出水印Wr,Wg和Wb,并對(duì)其依次采取DCT處理。最后經(jīng)過(guò)重組,分離出原始水印及圖像。 在水印生成的初始階段,將原始圖像采取小波分解。經(jīng)過(guò)三級(jí)分解獲得圖像的低頻子帶,圖1描述了其分解過(guò)程。因?yàn)镠F3、FH3與HH3具有更好的魯棒性,所以采用它們構(gòu)建哈希。 圖1 低頻子帶分解 假定HF3、FH3與HH3參數(shù)集依次是X1、X2與X3,對(duì)應(yīng)哈希序列依次是X′1、X′2與X′3,其中Xi={xi,1,xi,2,…,xi,k},k=1,2,3。通過(guò)集合Xi內(nèi)元素和門限對(duì)比,生成相應(yīng)的哈希值 (13) T代表門限,這里利用Xi標(biāo)準(zhǔn)差s(Xi)與對(duì)應(yīng)的系數(shù)α乘積來(lái)確定,即T=a×s(Xi)。把X′i讀入m×m矩陣,對(duì)X′i采取或運(yùn)算求解出哈希水印,并對(duì)其在頻域內(nèi)完成嵌入,流程描述為: 1)對(duì)載體圖像采取3×3數(shù)量的獨(dú)立分塊。 2)對(duì)所有子塊采取DCT變換得到block_dct(x,y)構(gòu)造的矩陣。 3)將block_dct(x,y)構(gòu)造的矩陣采取SVD分解 [Limg,Simg,Rimg]=svd(block_dct) (14) 4)嵌入水印,描述為 S′img=Simg+h×Wimg (15) h表示嵌入的強(qiáng)度系數(shù);Wimg表示水印圖像。 5)將S′img采取SVD分解[L,S,R]=svd(S′img),并將S和Limg、Rimg進(jìn)行SVD反變換,從而確定新DC矩陣 block_dct′=Limg*S*Rimg (16) 6)把block_dct′采取DCT重構(gòu),通過(guò)DCT反向處理獲得具有水印的圖像。 關(guān)于水印提取的流程描述為: 1)對(duì)載體圖像采取3×3數(shù)量的獨(dú)立分塊。 2)將所有分塊采取DCT變換,構(gòu)造具有水印信息的DC矩陣block_dct′。 3)將block_dct′采取SVD分解,確定對(duì)角矩陣S′,并結(jié)合嵌入時(shí)的L、R求解SVD反變換block′=L*S′*R。 4)計(jì)算嵌入時(shí)的Simg矩陣,求解出水印信息 (17) 仿真基于MATLAB2014,載體圖像采用VOCdevkit數(shù)據(jù)集,圖2列出了數(shù)據(jù)集中部分圖像,圖3列出了水印圖像。 圖2 實(shí)驗(yàn)載體圖像 圖3 水印圖像 在水印算法性能驗(yàn)證時(shí),主要從兩個(gè)方面進(jìn)行評(píng)價(jià):透明度與魯棒性。其中,透明度用于描述水印在載體上的隱藏效果。透明度越高,說(shuō)明隱藏效果越好,防攻擊的能力就越好。本文采用峰值信噪比(PSNR)參數(shù)作為性能指標(biāo)。PSNR公式如下 (18) m與n分別是行與列;I(i,j)是載體圖像;I′(i,j)是具有水印的圖像。PSNR描述的是圖像失真效果,因此PSNR值越大,意味著透明度越高。根據(jù)當(dāng)前研究經(jīng)驗(yàn),PSNR指標(biāo)達(dá)到40dB,即表明透明度效果良好。 魯棒性通過(guò)相關(guān)系數(shù)(NC)指標(biāo)來(lái)評(píng)價(jià)。NC的公式描述如下 (19) W(i,j)是實(shí)際的水?。籛′(i,j)是提取到的水印。當(dāng)NC越趨向于1時(shí),代表W′(i,j)和W(i,j)的差異越小。根據(jù)經(jīng)驗(yàn),NC指標(biāo)達(dá)到0.75以上,即表明相似度效果良好。 圖4所示為嵌入水印的圖像結(jié)果。從主觀效果來(lái)看,很難發(fā)現(xiàn)和原始載體圖像之間存在的差別,說(shuō)明透明度很高。另外,表1列出了圖4對(duì)應(yīng)圖像的PSNR結(jié)果,從數(shù)據(jù)可以看出,兩種算法下,所有圖像的PSNR參數(shù)均超過(guò)40dB,且本文算法的PSNR值明顯優(yōu)于文獻(xiàn)[8]算法,證明本文算法的透明度和抗攻擊能力更好。 圖4 包含水印的圖像 表1 PSNR指標(biāo)結(jié)果 為了驗(yàn)證嵌入水印圖像的抗攻擊性能,針對(duì)JPEG有損壓縮攻擊進(jìn)行分析,通過(guò)調(diào)整壓縮系數(shù)得到圖像對(duì)應(yīng)的NC指標(biāo),結(jié)果如圖5所示。從結(jié)果數(shù)據(jù)可以看出,當(dāng)壓縮系數(shù)為60時(shí),圖像的NC值為1。當(dāng)壓縮系數(shù)降低的過(guò)程中,圖像的NC值隨之逐漸降低,但仍保持對(duì)1的良好趨近。 圖5 JPEG攻擊時(shí)的NC指標(biāo)結(jié)果 為了更加全面驗(yàn)證算法的抗攻擊性能,引入JPEG以外的其它攻擊,包括旋轉(zhuǎn)、剪切、高斯噪聲、泊松噪聲,分別得到兩種算法的NC指標(biāo),結(jié)果如圖6所示。根據(jù)攻擊方式的數(shù)據(jù)比較,不同攻擊對(duì)水印算法的影響存在一定的差異,比如本文算法在高斯噪聲與泊松噪聲情況下的NC指標(biāo)均為1,而在其它攻擊情況下則有所下降。根據(jù)與文獻(xiàn)算法的數(shù)據(jù)比較,在各種攻擊情況下,本文算法始終保持更好的NC指標(biāo)。表明本文方法具有更低的水印提取誤差。NC指標(biāo)的提高,充分證明了融合DCT變換與SVD分解能夠有效提高圖像水印算法的攻擊抵抗能力,降低水印失真性。 圖6 其它攻擊時(shí)的NC指標(biāo)結(jié)果 為了提高圖像水印的感知效果,考慮到水印算法的透明性與魯棒性,基于獨(dú)立分塊與低頻子帶,采用SVD分解圖像奇異值。擴(kuò)展了二維DCT變換改善水印的嵌入與提取,并將DCT與SVD進(jìn)行了融合。仿真結(jié)果得出: 1)算法的PSNR指標(biāo)明顯高于40dB,證明具有良好的透明度,這是由于SVD分解與嵌入系數(shù)優(yōu)化設(shè)計(jì)決定的。 2)在各類攻擊情況下,算法的NC指標(biāo)始終保持良好的對(duì)1趨近性,證明具有良好的水印誤差與魯棒性。這得益于SVD分解時(shí)采取的分塊與分組篡改識(shí)別,DCT變換的良好感知性,以及基于低頻子帶的分解變換,提高了攻擊場(chǎng)合中水印的嵌入與提取。3 基于DCT水印算法
4 融合DCT與SVD圖像水印算法
5 仿真與結(jié)果分析
5.1 數(shù)據(jù)集與衡量指標(biāo)
5.2 實(shí)驗(yàn)及結(jié)果分析
6 結(jié)束語(yǔ)