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