肖文靜 岳 楨 宋培非 李子臣
1(北京印刷學(xué)院信息工程學(xué)院 北京 102600)2 (北京郵電大學(xué)信息安全中心 北京 100876)
圖像直方圖與像素在圖像中位置無關(guān),所以能被很好地應(yīng)用到抗幾何攻擊的數(shù)字水印算法中.當(dāng)圖像被幾何攻擊時,圖像的大小和空間位置會發(fā)生相應(yīng)的改變,但是直方圖中各個灰度級的像素個數(shù),確切地說是各個灰度級像素個數(shù)占總像素個數(shù)的比例基本保持不變,即直方圖的形狀特征保持穩(wěn)定,所以基于直方圖的水印具有較強(qiáng)的魯棒性.
1998—2008年,文獻(xiàn)[1-4]提出了基于直方圖修改的水印算法,但嵌入容量較低,同時在傳統(tǒng)信號處理下其魯棒性不強(qiáng).2010年,Deng等人[5]在Xiang的工作基礎(chǔ)上從統(tǒng)計(jì)區(qū)間選取、直方圖修改方式和提取方式幾個方面對算法進(jìn)行了改進(jìn),將原先的2個bin 1組修改為3個bin(灰度級) 1組,增強(qiáng)了水印的魯棒性,但算法并沒有提高水印嵌入容量.2008—2015年,文獻(xiàn)[6-9]給出了一種基于直方圖修改的圖像水印算法,能抵抗一般的傳統(tǒng)信號處理攻擊以及幾何攻擊,增強(qiáng)了算法的魯棒性,同時應(yīng)用到視頻水印中,但該算法并未對嵌入容量進(jìn)行改進(jìn).
2017年在數(shù)字水印國際研討會(Digital Forensics and Watermarking)上,F(xiàn)eng等人[10]提出了2種新的方法來改進(jìn)嵌入算法:第1種算法執(zhí)行多輪嵌入,以攜帶更多的水印比特;第2種算法使用1組直方圖嵌入多個水印位,在此基礎(chǔ)上優(yōu)化系數(shù)轉(zhuǎn)移,以減少嵌入失真.這些算法一定程度上提高了水印信息嵌入量,但花費(fèi)更多bin的資源,單位圖像資源嵌入水印信息量并未增加.
提高水印嵌入容量、增強(qiáng)魯棒性目前依然是直方圖數(shù)字水印算法研究熱點(diǎn).本文提出一種新的基于2bin直方圖的數(shù)字水印算法,分3種情況修改直方圖中相鄰的2bin,嵌入信息由原來的“0,1”組成的字符串變成“-1,0,1”組成的字符串,即從二進(jìn)制轉(zhuǎn)為三進(jìn)制,新的算法提高了嵌入水印的容量,同時增強(qiáng)其魯棒性.實(shí)驗(yàn)結(jié)果表明,新的算法嵌入水印信息容量增加60%,并且有較高的魯棒性.
首先,對于1張大小為m×n的灰度圖,我們可以通過式(1)提取出直方圖,記為H.直方圖有#(H)個bin.
(1)
每2個相鄰的bin組成1組,嵌入1個水印位.假設(shè)H(2i-1)和H(2i)這2個bin用于嵌入水印信息M(i),1≤i≤#(H)2.根據(jù)式(2)調(diào)整bin的高度.具體如下:
(2)
閾值T控制bin之間的間隙數(shù)量,n表示從H(2i)轉(zhuǎn)移到H(2i-1)的系數(shù)的數(shù)量.當(dāng)系數(shù)需要從H(2i-1)轉(zhuǎn)移到H(2i)時,n為負(fù)數(shù).它的值可以通過式(3)計(jì)算,使轉(zhuǎn)移系數(shù)最小化.
(3)
(4)
上述方案已經(jīng)在很多方法中擴(kuò)展.然而,嵌入算法仍然相似.它們同樣面臨水印嵌入容量的問題.下面簡單介紹一種著名的基于直方圖修改水印算法.
2008年,Xiang等人[1]提出的是一種利用直方圖形狀和圖像均值進(jìn)行水印嵌入的方法.
該算法的思路如圖1所示.
假設(shè)2個bin的像素個數(shù)分別為a和b,則嵌入規(guī)則如下:
(5)
其中T是在圖像質(zhì)量和魯棒性之間取折中的1個閾值.修改直方圖,本質(zhì)上是修改圖像中的像素信息.下面舉例說明.
假設(shè)有2組bin,像素值分別為110,111和120,121,相應(yīng)像素值的個數(shù)分別為4,5和8,7,我們對其進(jìn)行水印嵌入,如圖2所示.假如嵌入信息分別為“1”和“0”,對2組bin進(jìn)行如下調(diào)整以滿足嵌入規(guī)則.
圖1 Xiang的直方圖水印嵌入方法
圖2 直方圖調(diào)整
針對嵌入容量較小的問題,本文提出了一種新的改進(jìn)直方圖水印算法,增加嵌入水印比特信息.在傳統(tǒng)的算法中,嵌入信息以“0,1”字符串的形式表示,分2種情況完成水印的嵌入和提取.本文提出的算法中嵌入信息是由“-1,0,1”這3個數(shù)字組成的字符串,相當(dāng)于三進(jìn)制,提取信息時,按照3種情況提取.
首先對圖像進(jìn)行高斯低通濾波,得到其圖像低頻部分,然后對圖像低頻部分,計(jì)算其均值并提取圖像直方圖,根據(jù)均值選定統(tǒng)計(jì)灰度區(qū)間,將統(tǒng)計(jì)區(qū)間每2個灰度級為1組,按照嵌入規(guī)則每組嵌入1 b水印信息,像素調(diào)整在同一組下的相鄰灰度級之間進(jìn)行,隨機(jī)選取像素.
嵌入規(guī)則如下:
(6)
其中T≥1是在圖像質(zhì)量和魯棒性之間取折中的一個閾值.
1) 嵌入水印比特為0.如果|a-b|≤1,不需要調(diào)整任何像素;否則,如果a>b,從bin1的像素中隨機(jī)選擇I1個進(jìn)行調(diào)整,使得它們落入bin2內(nèi).即調(diào)整后a1=a-I1,b1=b+I1,且滿足|a1-b1|≤1;如果b>a,同理.
(7)
(8)
提取算法依照嵌入規(guī)則逐個提取.首先對圖像進(jìn)行濾波,計(jì)算均值和直方圖,確定統(tǒng)計(jì)區(qū)間并進(jìn)行兩兩分組,依照規(guī)則對每組進(jìn)行水印比特信息提取.
提取算法如下:
2)提取第i組的2個bin嵌入的水印比特;
假設(shè)第i組的前后2個bin的像素個數(shù)為a′和b′,則第i位水印比特為
(9)
3) 重復(fù)步驟2),提取出所有水印信息.
前面已經(jīng)對本文提出的三進(jìn)制直方圖數(shù)字水印算法進(jìn)行了介紹,本節(jié)將對算法進(jìn)行相應(yīng)的魯棒性測試,給出實(shí)驗(yàn)結(jié)果并進(jìn)行分析和討論.
圖3 原始圖像
測試所選測試集為50幅512×512大小的灰度圖像(本文以Lena圖為例),原始圖像、嵌入水印圖像以及對應(yīng)直方圖如圖3~5所示:
圖4 嵌入水印圖像
圖5 原始直方圖和嵌入水印直方圖對比
水印信息嵌入容量測試.將該算法與文獻(xiàn)[1,10]所提出的算法進(jìn)行比較.設(shè)定2種算法中直方圖bin的數(shù)量#(H)增加,以擴(kuò)大嵌入容量.比較#(M)=32和#(M)=48情況下的所有算法,如表1所示:
表1 算法實(shí)驗(yàn)數(shù)據(jù)對比
A為直方圖灰度均值;α為嵌入閾值;π為每段中bin的個數(shù).
通過分析表1中的數(shù)據(jù)可以發(fā)現(xiàn),在嵌入容量一定的情況下,本文算法進(jìn)行水印嵌入需要更少的bin.由此得出結(jié)論,本文提出的算法嵌入容量明顯提高.
圖像質(zhì)量測試的實(shí)驗(yàn)結(jié)果用峰值信噪比(PSNR)來反映,MAX表示最大灰度級,img表示原始圖像,imgn表示嵌入水印圖像,MES表示均方差.計(jì)算公式如下,其中B表示編碼一個像素所用二進(jìn)制位.
MAX=2B-1,
假設(shè)B=8,經(jīng)計(jì)算可知PSNR= 51.717 5,該結(jié)果滿足對圖像質(zhì)量的要求.
魯棒性測試主要采用圖像壓縮、旋轉(zhuǎn)、劃線和剪切4種攻擊方法進(jìn)行.并與Xiang,Deng,Hu這3人的算法結(jié)果進(jìn)行對比分析.
對水印算法在幾種攻擊下的魯棒性,實(shí)驗(yàn)結(jié)果用誤碼率(BER)來反映.
假設(shè)水印長度為L,則
其中numerror為提取錯誤的水印的比特位數(shù).
測試內(nèi)容包括:
圖6 JPEG壓縮攻擊后BER測試
1)圖像壓縮.JPEG壓縮,壓縮系數(shù)從10~100,壓縮系數(shù)越大,圖像質(zhì)量越好.測試結(jié)果如圖6所示:
2) 旋轉(zhuǎn).圖像旋轉(zhuǎn)角度從3°~30°,間隔為3°.測試結(jié)果如圖7所示:
圖7 旋轉(zhuǎn)攻擊后BER測試
3) 劃線.劃線數(shù)量從1~8條.測試結(jié)果如圖8所示:
圖8 劃線攻擊后BER測試
4) 剪切.剪切部分所占比例逐漸增大至0.5.測試結(jié)果如圖9所示:
圖9 剪切攻擊后BER測試
從實(shí)驗(yàn)結(jié)果我們可以看出,本文算法在JPEG壓縮攻擊下提取正確率整體高于Xiang的方法,同時在旋轉(zhuǎn)攻擊和劃線攻擊下,相比于其他算法,該算法提取正確率較高.同時,本文的算法對傳統(tǒng)信號處理攻擊和幾何攻擊都具有較好的魯棒性.
本文針對圖像直方圖水印嵌入容量較小的問題,對水印嵌入信息進(jìn)行修改,將水印信息由原本的“0,1”字符串改成“-1,0,1”組成的字符串,即水印信息從二進(jìn)制變?yōu)槿M(jìn)制,并提出了一種新的基于直方圖圖像水印的算法.
實(shí)驗(yàn)結(jié)果表明,本文算法在保證嵌入后圖像高質(zhì)量的同時,在抵抗傳統(tǒng)信號處理攻擊和幾何攻擊方面也有比較好的表現(xiàn).同時,增加了水印嵌入容量,在進(jìn)行JPEG壓縮攻擊和旋轉(zhuǎn)攻擊時,算法提取正確率明顯提高.