張帥,楊雪霞
(1.太原廣播電視大學(xué)教學(xué)研究中心,太原 030024;2.太原科技大學(xué)應(yīng)用科學(xué)學(xué)院,太原 030024)
網(wǎng)絡(luò)改變了大眾的生活方式,數(shù)字產(chǎn)品也為我們帶來(lái)了諸多便捷,然而非法的篡改、獲取以及惡意破壞已經(jīng)對(duì)數(shù)字產(chǎn)品造成了嚴(yán)重的威脅。水印技術(shù)是指在數(shù)字產(chǎn)品中嵌入版權(quán)所有者的身份信息,當(dāng)需要認(rèn)證時(shí)可通過(guò)提取水印達(dá)到版權(quán)保護(hù)的目的,也可對(duì)網(wǎng)絡(luò)傳播的數(shù)字產(chǎn)品進(jìn)行有效的跟蹤。
在數(shù)字水印技術(shù)中,離散小波變換(DWT)和離散余弦變換(DCT)得到了廣泛的應(yīng)用和研究。張勤等人[1]在小波變換域內(nèi)分別在高、低頻中嵌入了兩種水印,該水印算法表現(xiàn)出較強(qiáng)的魯棒性,但不能抵抗旋轉(zhuǎn)攻擊。陳小娥[2]提出了結(jié)合QR 碼的DCT 水印算法,該算法可以有效提取嵌入的水印信息,但提取水印的歸一化值普遍在0.9 以下,效果并不理想。徐江峰等人[3]提出了一種QR 碼與DWT 和DCT 相融合的水印算法,該算法具有較強(qiáng)的魯棒性,但水印信息未進(jìn)行置亂處理,因此抵抗剪切攻擊方面表現(xiàn)不足。楊劍等人[4]提出了一種分塊的DCT 與DWT 相結(jié)合的水印算法,該算法分別在DWT 和DCT 中嵌入兩種水印信息,實(shí)現(xiàn)了脆弱性和魯棒性的雙重功能,但屬于非盲水印算法。
本文提出了DWT 和DCT 相融合的盲水印算法,考慮到小波變換和離散余弦變換的低頻子帶和低頻系數(shù)中都包含了圖像主要信息,在面對(duì)攻擊時(shí)具有很好的穩(wěn)定性。因此首先對(duì)載體圖像進(jìn)行DWT 變換,再對(duì)分解的低頻子帶進(jìn)行DCT 變換。水印信息則分別通過(guò)Arnold 置亂與混沌加密預(yù)處理,并通過(guò)生成兩組隨機(jī)矩陣,將加密的水印信息嵌入到DCT 的低頻系數(shù)中。此時(shí)經(jīng)過(guò)雙重加密的水印信息具備了更高的安全性,同時(shí)載體圖像中的水印信息也具有更強(qiáng)的魯棒性。最后通過(guò)與隨機(jī)矩陣的相關(guān)性分析實(shí)現(xiàn)了水印信息的盲提取。
離散小波變換(DWT)的多分辨率特性與人類(lèi)視覺(jué)特性(HVS)相似,即人類(lèi)的視覺(jué)對(duì)低頻信息變化較為靈敏,而對(duì)紋理、邊緣輪廓?jiǎng)t不敏感。因此對(duì)載體圖像進(jìn)行小波變換,結(jié)合HVS 特性,保證了嵌入水印在壓縮、噪聲等攻擊方面的魯棒性。離散小波變換將載體圖像分為L(zhǎng)L、LH、HL 和HH 四個(gè)子帶[5]。其中LL 子帶為低通濾波后的系數(shù),代表圖像的細(xì)節(jié)信息,其余子帶分別代表圖像的邊緣、輪廓信息。本文首先對(duì)載體圖像進(jìn)行了一級(jí)小波分解,具體結(jié)果如圖1 所示。
圖1 原始載體圖像與一級(jí)小波分解圖像
離散余弦變換(DCT)將信號(hào)從時(shí)域轉(zhuǎn)換到頻域,在頻域中的直流分量和低頻系數(shù)中包含了圖像的主要信息,因此在低頻中選擇合適的系數(shù)嵌入水印可以保證嵌入水印圖像在濾波、不可感知性方面表現(xiàn)出較好的特性[6]。
本文在小波變換的基礎(chǔ)上,為了降低DCT 計(jì)算的復(fù)雜度,對(duì)低頻子帶進(jìn)行了分塊處理,并且為了準(zhǔn)確選擇嵌入位置,我們對(duì)DCT 的系數(shù)按照Z(yǔ)ig-Zag 進(jìn)行排序。圖2(a)為L(zhǎng)L 子帶的第一個(gè)8×8 子塊進(jìn)行DCT 變換后的系數(shù),系數(shù)值分布較為分散,規(guī)律性較差,圖2(b)我們進(jìn)行了重新排序,系數(shù)分布符合Zig-Zag 特點(diǎn)[7],此時(shí)我們可以根據(jù)DCT 系數(shù)的大小確定嵌入水印的準(zhǔn)確位置。
圖2 DCT系數(shù)重新排列圖
Arnold 變換是通過(guò)對(duì)圖像像素值進(jìn)行位置變換達(dá)到加密的目的,具體的變換公式如下:
根據(jù)公式(1)對(duì)變換矩陣求其逆矩陣,得到了Arnold 逆變換公式[8],如公式(2)所示。這樣我們不必計(jì)算圖像的周期性,只需根據(jù)置亂的次數(shù),就可以將圖像還原。
考慮到Arnold 置亂的周期性,圖像經(jīng)過(guò)一定次數(shù)的置亂,便可以還原為原始圖像,為了提高算法的安全性,我們對(duì)置亂后的圖像再次進(jìn)行混沌加密,混沌迭代方程[9]如下:
其中xn為初始值,當(dāng)M 接近4 時(shí),N 為2.5 時(shí),數(shù)列[ xn] 發(fā)散,呈現(xiàn)混沌狀態(tài)。
本實(shí)驗(yàn)的水印圖像迭代次數(shù)選擇19,混沌加密的初始值選擇2,作為本算法的加密密鑰。具體實(shí)驗(yàn)結(jié)果如圖3 所示。
圖3 水印預(yù)處理過(guò)程
本文選擇大小為512×512 的Lena 圖像作為載體圖像,選擇32×32 的“開(kāi)”字作為水印信息,首先對(duì)載體圖像進(jìn)行一級(jí)小波變換,并對(duì)分解的LL 子帶進(jìn)行8×8 分塊處理,此時(shí)LL 子帶被分解為塊。利用MATLAB 環(huán)境生成兩個(gè)八位的隨機(jī)矩陣d1和d2,并在DCT 系數(shù)中相應(yīng)的選擇八位低頻系數(shù)作為水印的嵌入位置,本文通過(guò)大量實(shí)驗(yàn),選擇了Zig-Zag排序后的7 到15 位,并根據(jù)如下規(guī)則嵌入水印信息:
其中,Ck( x,y )表示分塊的DCT 系數(shù),( x,y )為DCT系數(shù)的坐標(biāo),其中k=1,2,…,1024,∝表示嵌入水印的強(qiáng)度因子,w 表示水印信息,為嵌入水印后的DCT 系數(shù)。水印信息提取時(shí),我們根據(jù)嵌入水印位置的DCT 系數(shù)與隨機(jī)矩陣的相關(guān)性進(jìn)行分析,如果與d1 相關(guān)性高,則說(shuō)明嵌入的水印為1,反之,嵌入的水印為0,從而實(shí)現(xiàn)了水印信息的盲提取。計(jì)算嵌入水印序列與隨機(jī)矩陣相關(guān)性[10]的公式如下:
水印的嵌入流程如圖4 所示。
圖4 水印嵌入流程圖
提取水印為嵌入水印的逆過(guò)程,根據(jù)公式(10)即可還原水印圖像,本文利用峰值信噪比(PSNR)對(duì)含水印圖像的性能進(jìn)行測(cè)試,利用歸一化值(NC)對(duì)提取的水印圖像的性能進(jìn)行評(píng)價(jià)。當(dāng)嵌入魯棒性水印時(shí),由于主要選擇低頻部分進(jìn)行嵌入,因此PSNR 的值在30~40 左右,即可保證含水印圖像的透明性,NC 值主要反映提取水印質(zhì)量,當(dāng)趨近于1 時(shí),說(shuō)明提取的質(zhì)量較好,一般來(lái)講,當(dāng)NC 值低于0.8 時(shí),提取的水印圖像則不可辨認(rèn)。
本文選擇MATLAB 2018 仿真平臺(tái),根據(jù)嵌入算法,進(jìn)行了多種類(lèi)型、多種強(qiáng)度的模擬實(shí)驗(yàn),通過(guò)仿真實(shí)驗(yàn)得知當(dāng)嵌入強(qiáng)度因子在20~35 之間,本算法均可以表現(xiàn)出較好的性能,本實(shí)驗(yàn)過(guò)程中我們使用的強(qiáng)度因子為30。原始載體圖像與含水印圖像如圖5 所示。
通過(guò)對(duì)比可以得知,含水印與原始載體圖像并無(wú)明顯差別。通過(guò)計(jì)算,峰值信噪比為38.6487,說(shuō)明嵌入的水印信息具有良好的不可見(jiàn)性,對(duì)載體圖像幾乎沒(méi)有影響。
圖5 原始載體圖像與含水印圖像對(duì)比
然后我們對(duì)載體圖像進(jìn)行多種類(lèi)型的攻擊實(shí)驗(yàn),并計(jì)算攻擊后含水印圖像與原始載體圖像的峰值信噪比(PSNR)以及提取的水印的歸一化值(NC),通過(guò)計(jì)算得到的PSNR 值與NC 值對(duì)水印算法的性能進(jìn)行評(píng)價(jià),具體實(shí)驗(yàn)過(guò)程如下。
圖6 JEPG壓縮后提取的水印
表1 JEPG 壓縮攻擊后的性能
如圖6 與表1 所示,JPEG 壓縮攻擊時(shí),當(dāng)品質(zhì)因素從80 遞減到30 時(shí),含水印圖像的PSNR 值都在30以上,因此含水印圖像透明性較好,而提取水印的歸一化值也趨近1,質(zhì)量非常理想。
圖7 椒鹽噪聲攻擊后提取的水印
如圖7 與表2 所示,當(dāng)椒鹽噪聲的強(qiáng)度從0.001 增加到0.01 時(shí),含水印圖像的PSNR 從30.5272 開(kāi)始減小,說(shuō)明載體圖像質(zhì)量下降明顯,而提取的水印信息仍在0.96 以上,性能良好。
表2 椒鹽噪聲攻擊后的性能
圖8 多種類(lèi)型攻擊后提取水印
表3 多種類(lèi)型攻擊后的性能
如圖8 與表3 所示,我們對(duì)載體圖像進(jìn)行六種類(lèi)型的模擬攻擊。其中維納濾波、縮放、中值濾波含水印圖像的PSNR 值都在30 以上,含水印圖像質(zhì)量很好,而旋轉(zhuǎn)、剪切、高斯噪聲的攻擊后,含水印圖像的PSNR值下降明顯,說(shuō)明對(duì)原圖影響較大。而整體上提取水印的NC 值都在0.9 以上,表現(xiàn)出較好的性能。
本文提出了一種在DWT_DCT 變換域內(nèi)利用隨機(jī)矩陣嵌入水印的算法,并得到以下結(jié)論。
(1)利用DWT 的多分辨率特性、DCT 系數(shù)的統(tǒng)計(jì)特性并結(jié)合HVS 的特點(diǎn),提出了一種DWT 與DCT 相融合的水印算法,保證了含水印圖像的透明性以及提取水印的魯棒性。
(2)利用Arnold 置亂算法與混沌加密的雙重加密算法,保證了嵌入水印的安全性。
(3)利于隨機(jī)矩陣嵌入水印的方式,使得系統(tǒng)每次都產(chǎn)生不同的兩個(gè)八位序列,因此每次提取水印都需要不同的密鑰,從而進(jìn)一步提高了算法的安全性。
(4)通過(guò)各種類(lèi)型、不同強(qiáng)度的模擬攻擊,本水印算法均能夠夠有效地提取到水印信息,并且實(shí)現(xiàn)了水印信息的盲提取。