劉 穎, 徐 偉, 朱婷鴿
(西安郵電大學(xué)通信與信息工程學(xué)院,西安 710121)
近幾年,隨著數(shù)字技術(shù)的快速發(fā)展,圖像水印成為數(shù)據(jù)版權(quán)保護(hù)的有效方法。圖像水印技術(shù)指在原始數(shù)據(jù)中嵌入數(shù)字水印的過程,嵌入的水印能夠被提取出來以便識別版權(quán)所有者[1]。
圖像水印技術(shù)的步驟包括水印嵌入和提取[2]。根據(jù)水印嵌入的域,將水印技術(shù)分為空間域和頻域[3-4]??臻g域水印的復(fù)雜度較低,但對不同的圖像處理操作魯棒性較差。相反,變換域方法具有更強(qiáng)的抗攻擊能力。常用的變換有離散小波變換(discrete wavelet transform,DWT)、離散余弦變換(discrete cosine transform,DCT)、奇異值分解(singular value decomposition,SVD)等?;谛〔ǖ姆椒ㄔ诳臻g域和頻域上的局部化都能獲得更好的安全性,所以被廣泛用于圖像水印算法。此外,SVD將圖像矩陣轉(zhuǎn)換為奇異值,使得細(xì)節(jié)更加容易處理,同時(shí)保證了一定的魯棒性[5]。文獻(xiàn)[6]提出基于DWT-DCT的混合水印算法,該方法將二值水印置亂嵌入載體圖像中,使得水印圖像具有較好的不可見性和抗攻擊能力。文獻(xiàn)[7]利用直流系數(shù)的產(chǎn)生原理和分布特征,在空域直接修改像素值嵌入水印,使得該算法對剪切、噪聲和中值濾波等攻擊具有較強(qiáng)的魯棒性,但是抗JPEG壓縮攻擊性能較差。文獻(xiàn)[8]提出一種基于DWT-SVD的盲水印算法,該算法對各種常規(guī)攻擊都具有較好的魯棒性。文獻(xiàn)[9]采用提升小波變換(lifting wavelet transform,LWT)替換文獻(xiàn)[10]中的DWT,提高了水印的不可見性與魯棒性。文獻(xiàn)[11]提出一種通過加法規(guī)則嵌入水印的算法,該方法不能較好地平衡水印圖像的不可見性與魯棒性。
綜上所述,現(xiàn)有大多數(shù)水印算法的魯棒性與不可見性不易平衡且兩種性能效果有待提高。針對這一問題,提出一種基于提升小波變換和離散余弦變換的彩色圖像水印算法,通過提取載體圖像的邊緣特征構(gòu)造水印信息,再根據(jù)算法所提嵌入規(guī)則來嵌入水印信息,在確保圖像質(zhì)量情況下提高魯棒性。
為了使得水印圖像嵌入載體圖像后具有較好的不可見性和魯棒性,這里選擇二值圖像作為水印信息嵌入Cv通道中。嵌入過程中,輸入的是載體圖像和二值水印圖像,輸出的是嵌入水印的圖像。整個(gè)算法的實(shí)現(xiàn)流程如圖1所示。
圖1 水印嵌入與提取過程
通過Canny算子邊緣檢測提取特征構(gòu)造二值水印,具體過程如下。
(1)輸入載體圖像,將其大小調(diào)整為64×64,且轉(zhuǎn)換為灰度圖像,然后進(jìn)行一級LWT分解,如圖2所示。
(2)通過Canny邊緣檢測算子分別提取HL和LH子帶的邊緣信息,令X1和X2分別表示HL和LH子帶經(jīng)過邊緣檢測得到的灰度值集合,n表示每個(gè)集合灰度值的個(gè)數(shù),則:
Xi={xi,1,xi,2,…,xi,n},i=1,2
(1)
(3)將Xi中灰度值不等于255的置為0得到:
X′i={x′i,1,x′i,2,…,x′i,n},i=1,2
(2)
可描述為
(3)
式(3)中:i=1,2;j=1,2,…,n。
(4)將X′1和X′2進(jìn)行邏輯或操作得到二值水印圖像wm,即
wm=X′1|X′2
(4)
二值水印圖像的嵌入過程如下:
步驟1將輸入的彩色載體圖像由RGB顏色空間轉(zhuǎn)為YCuCv顏色空間,對該顏色空間模型中的分量Y、Cu、Cv進(jìn)行分離,選擇Cv通道嵌入水印;
步驟2對Cv通道進(jìn)行一級LWT,即:
[ca,ch,cv,cd]=LWT2(Cv, 'haar')
(5)
式(5)中:ca為低頻系數(shù)矩陣,ch為水平系數(shù)矩陣,cv為垂直系數(shù)矩陣,cd為高頻系數(shù)矩陣。
步驟3將一級LWT后的LL子帶進(jìn)行8×8分塊,對每個(gè)子塊進(jìn)行DCT。
步驟4提取每個(gè)DCT子塊的DC系數(shù),構(gòu)造DC系數(shù)矩陣DC_block。
步驟5輸入二值水印圖像wm,先利用Arnold置亂對其進(jìn)行第一次加密,再利用Logistic混沌映射對其進(jìn)行第二次加密,得到加密后的水印圖像wm1。
步驟6通過修改DC_block中的系數(shù)值來嵌入二值水印信息,得到新的DC系數(shù)矩陣new_DC_block,規(guī)則如下。
(1)如果wm1(i,j)=0,則令:
new_DC_block(i,j)=DC_block(i,j)+T
(6)
圖2 一級LWT分解
(2)如果wm1(i,j)=1,則令:
new_DC_block(i,j)=DC_block(i,j)-T
(7)
這里,考慮水印的魯棒性與不可見性之間的平衡,取T=90。
步驟7用new_DC_block的系數(shù)依次替換每個(gè)DCT子塊的DC系數(shù)得到新的DCT子塊。對每個(gè)新的DCT子塊進(jìn)行逆DCT變換得到新的低頻系數(shù)子帶new_LL。用new_LL替換原始的LL子帶進(jìn)行逆LWT,得到嵌入水印的圖像。
二值水印圖像的提取過程如下。
步驟1輸入嵌入水印的圖像,對其執(zhí)行水印嵌入算法中的步驟1~步驟4操作,記得到的DC系數(shù)矩陣為watermarked_DC_block。
步驟2根據(jù)步驟1中的watermarked_DC_block與水印嵌入算法中的DC_block,構(gòu)造矩陣Diff,規(guī)則如下。
Diff=watermarked_DC_block-img_DC_block
(8)
步驟3通過矩陣Diff提取二值信息,構(gòu)造二值矩陣extract_wm1,方式如下。
(1)若Diff(i,j)>0,則取:
extract_wm1(i,j)=0
(9)
(2)若Diff(i,j)<0,則取:
extract_wm1(i,j)=1
(10)
步驟4對二值矩陣extract_wm1用Logistic混沌映射進(jìn)行第一次解密,再用Arnold反變換對其進(jìn)行第二次解密,得到提取的二值水印圖像。
為了驗(yàn)證所提算法的效率,采用PC端的MATLAB 2016完成全部實(shí)驗(yàn),并與該領(lǐng)域現(xiàn)有的一些先進(jìn)技術(shù)比較。所使用的載體圖像是從南加州大學(xué)USC-SIPI圖像數(shù)據(jù)庫中選取的5幅24位彩色圖像,所有載體圖像的大小都是512×512,所有二值水印圖像的大小都是32×32,如圖3所示。
圖3 載體圖像與水印圖像
為了評估該水印算法的性能,需要從不可見性和魯棒性兩個(gè)方面進(jìn)行分析。不可見性是指嵌入水印后圖像的失真程度,較低的失真表明水印方案具有較好的不可見性。魯棒性指水印圖像的抗攻擊性能。其中不可見性性能的衡量指標(biāo)有峰值信噪比(peak signal to noise ratio,PSNR)和結(jié)構(gòu)相似性(structural similarity,SSIM),而魯棒性性能的衡量指標(biāo)是歸一化相關(guān)系數(shù)(the normalized correlation coefficient,NC)。
PSNR的計(jì)算公式為
(11)
式(11)中,fc(i,j)和fwm(i,j)代表二維載體圖像和嵌入水印的圖像在位置(i,j)處的像素值;M和N表示兩個(gè)圖像的寬度和高度。
SSIM根據(jù)式(12)計(jì)算。
(12)
式(12)中:μi、μj分別表示載體圖像和嵌入水印圖像的均值,σi、σj分別表示它們的方差,σij表示兩者的協(xié)方差,C1、C2是為避免分母為零而設(shè)定的兩個(gè)變量,這里C1=(K1×L)2、C2=(K2×L)2,L是圖像像素值的動(dòng)態(tài)范圍,K1與K2的值可以分別設(shè)置為0.01和0.03。
NC的計(jì)算式為
(13)
在未進(jìn)行任何攻擊時(shí),計(jì)算載體圖像嵌入水印后的PSNR和SSIM以及所提取水印的NC值,實(shí)驗(yàn)結(jié)果如表1所示。
表1 未攻擊時(shí)算法的性能指標(biāo)
從表1的實(shí)驗(yàn)結(jié)果可以看出,在未對嵌入水印的載體圖像添加任何攻擊時(shí),PSNR的值全部都大于43 dB,SSIM的值全部都大于0.98,所以通過該算法嵌入的水印能夠較好地滿足視覺不可見性。NC值全部是1.000 0,表明水印都可以從嵌入水印的圖像中完全提取出來。
在實(shí)際應(yīng)用中,嵌入水印的圖像在到達(dá)檢測器之前都會(huì)受到各種各樣的畸變,所以對嵌入水印的圖像添加幾種常規(guī)攻擊,如剪切攻擊、高斯噪聲攻擊、椒鹽噪聲攻擊、JPEG壓縮攻擊、運(yùn)動(dòng)模糊攻擊和高斯模糊攻擊,計(jì)算受攻擊后圖像的PSNR和SSIM以及提取的水印NC值,所得結(jié)果如圖4所示。
Ⅰ是剪切大小為64×64的隨機(jī)剪切攻擊;Ⅱ和Ⅲ分別是方差為0.01和0.02的高斯噪聲攻擊;Ⅳ、Ⅴ和Ⅵ分別是方差為0.01、0.02和0.03的椒鹽噪聲攻擊;Ⅶ、Ⅷ和Ⅸ分別是質(zhì)量因子為70、50和30的JPEG壓縮攻擊;Ⅹ是運(yùn)動(dòng)像素個(gè)數(shù)為15的運(yùn)動(dòng)模糊攻擊;Ⅺ是濾波窗口大小為5×5的高斯模糊攻擊
對圖4實(shí)驗(yàn)結(jié)果進(jìn)行分析,當(dāng)嵌入水印的圖像受到各種不同攻擊時(shí),其PSNR值均可大于28 dB,且大部分的SSIM值也相對較高,所以受到攻擊后算法的不可見性較好。從結(jié)果可看出NC值接近或等于1.000 0,因此從各種攻擊下能夠提取出較為完整的水印信息,即該算法的抗攻擊性能也較好。
為了進(jìn)一步評價(jià)該方法的性能,將所提出算法的Lena圖像與文獻(xiàn)[11]和文獻(xiàn)[12]中Lena圖像的實(shí)驗(yàn)結(jié)果相比較。選用兩個(gè)文獻(xiàn)的原因是:首先兩者都是選取彩色圖像作為載體圖像,所提算法是在YCuCv顏色空間實(shí)現(xiàn)的,而文獻(xiàn)[11]和文獻(xiàn)[12]的實(shí)現(xiàn)是在YCbCr顏色空間進(jìn)行的,為了提高水印圖像的安全性,三個(gè)算法都通過Arnold變換進(jìn)行加密;其次,提出的算法是基于LWT-DCT雙變換域?qū)崿F(xiàn)的,文獻(xiàn)[11]和文獻(xiàn)[12]也是基于雙變換域;最后三者的不可見性性能都可以通過PSNR衡量,魯棒性性能都是通過NC值衡量的,結(jié)果如表2和表3所示。
表2 未受攻擊時(shí)不可見性性能比較
表3 受不同攻擊時(shí)魯棒性性能比較
從表2、表3的結(jié)果可以看出,在未對嵌入水印的圖像進(jìn)行攻擊時(shí),PSNR值略高于文獻(xiàn)[11]和文獻(xiàn)[12],表明所提算法具有較好的不可見性。而對嵌入水印的圖像添加不同攻擊時(shí),提取的水印NC值大部分略高于文獻(xiàn)[11]和文獻(xiàn)[12],說明算法的魯棒性較好。綜合兩個(gè)性質(zhì)可知,該算法的性能略優(yōu)于文獻(xiàn)[11]和文獻(xiàn)[12]。
由于水印魯棒性與不可見性難以平衡,提出一種基于提升小波變換和離散余弦變換的水印技術(shù),在二值水印上既使用Arnold變換又使用Logistic映射成功地解決了未經(jīng)授權(quán)的讀取問題。該方案的一個(gè)優(yōu)點(diǎn)是提取載體圖像邊緣特征構(gòu)造水印,再將該邊緣特征水印嵌入圖像,提高了魯棒性。方案的另一個(gè)優(yōu)點(diǎn)是將LWT和DCT相結(jié)合,在分塊DCT變換的低頻系數(shù)嵌入水印,有助于提高水印的不可見性。最后通過各種攻擊對該方案的魯棒性進(jìn)行分析,實(shí)驗(yàn)結(jié)果表明,本文所提算法在保證嵌入的水印具有不可見性的同時(shí)也能具有較高的抗攻擊性。