張帥,楊雪霞
(1.太原廣播電視大學教學研究中心,太原 030024;2.太原科技大學應用科學學院,太原 030024)
網絡改變了大眾的生活方式,數字產品也為我們帶來了諸多便捷,然而非法的篡改、獲取以及惡意破壞已經對數字產品造成了嚴重的威脅。水印技術是指在數字產品中嵌入版權所有者的身份信息,當需要認證時可通過提取水印達到版權保護的目的,也可對網絡傳播的數字產品進行有效的跟蹤。
在數字水印技術中,離散小波變換(DWT)和離散余弦變換(DCT)得到了廣泛的應用和研究。張勤等人[1]在小波變換域內分別在高、低頻中嵌入了兩種水印,該水印算法表現出較強的魯棒性,但不能抵抗旋轉攻擊。陳小娥[2]提出了結合QR 碼的DCT 水印算法,該算法可以有效提取嵌入的水印信息,但提取水印的歸一化值普遍在0.9 以下,效果并不理想。徐江峰等人[3]提出了一種QR 碼與DWT 和DCT 相融合的水印算法,該算法具有較強的魯棒性,但水印信息未進行置亂處理,因此抵抗剪切攻擊方面表現不足。楊劍等人[4]提出了一種分塊的DCT 與DWT 相結合的水印算法,該算法分別在DWT 和DCT 中嵌入兩種水印信息,實現了脆弱性和魯棒性的雙重功能,但屬于非盲水印算法。
本文提出了DWT 和DCT 相融合的盲水印算法,考慮到小波變換和離散余弦變換的低頻子帶和低頻系數中都包含了圖像主要信息,在面對攻擊時具有很好的穩定性。因此首先對載體圖像進行DWT 變換,再對分解的低頻子帶進行DCT 變換。水印信息則分別通過Arnold 置亂與混沌加密預處理,并通過生成兩組隨機矩陣,將加密的水印信息嵌入到DCT 的低頻系數中。此時經過雙重加密的水印信息具備了更高的安全性,同時載體圖像中的水印信息也具有更強的魯棒性。最后通過與隨機矩陣的相關性分析實現了水印信息的盲提取。
離散小波變換(DWT)的多分辨率特性與人類視覺特性(HVS)相似,即人類的視覺對低頻信息變化較為靈敏,而對紋理、邊緣輪廓則不敏感。因此對載體圖像進行小波變換,結合HVS 特性,保證了嵌入水印在壓縮、噪聲等攻擊方面的魯棒性。離散小波變換將載體圖像分為LL、LH、HL 和HH 四個子帶[5]。其中LL 子帶為低通濾波后的系數,代表圖像的細節信息,其余子帶分別代表圖像的邊緣、輪廓信息。本文首先對載體圖像進行了一級小波分解,具體結果如圖1 所示。

圖1 原始載體圖像與一級小波分解圖像
離散余弦變換(DCT)將信號從時域轉換到頻域,在頻域中的直流分量和低頻系數中包含了圖像的主要信息,因此在低頻中選擇合適的系數嵌入水印可以保證嵌入水印圖像在濾波、不可感知性方面表現出較好的特性[6]。
本文在小波變換的基礎上,為了降低DCT 計算的復雜度,對低頻子帶進行了分塊處理,并且為了準確選擇嵌入位置,我們對DCT 的系數按照Zig-Zag 進行排序。圖2(a)為LL 子帶的第一個8×8 子塊進行DCT 變換后的系數,系數值分布較為分散,規律性較差,圖2(b)我們進行了重新排序,系數分布符合Zig-Zag 特點[7],此時我們可以根據DCT 系數的大小確定嵌入水印的準確位置。

圖2 DCT系數重新排列圖
Arnold 變換是通過對圖像像素值進行位置變換達到加密的目的,具體的變換公式如下:

根據公式(1)對變換矩陣求其逆矩陣,得到了Arnold 逆變換公式[8],如公式(2)所示。這樣我們不必計算圖像的周期性,只需根據置亂的次數,就可以將圖像還原。

考慮到Arnold 置亂的周期性,圖像經過一定次數的置亂,便可以還原為原始圖像,為了提高算法的安全性,我們對置亂后的圖像再次進行混沌加密,混沌迭代方程[9]如下:

其中xn為初始值,當M 接近4 時,N 為2.5 時,數列[ xn] 發散,呈現混沌狀態。
本實驗的水印圖像迭代次數選擇19,混沌加密的初始值選擇2,作為本算法的加密密鑰。具體實驗結果如圖3 所示。

圖3 水印預處理過程
本文選擇大小為512×512 的Lena 圖像作為載體圖像,選擇32×32 的“開”字作為水印信息,首先對載體圖像進行一級小波變換,并對分解的LL 子帶進行8×8 分塊處理,此時LL 子帶被分解為塊。利用MATLAB 環境生成兩個八位的隨機矩陣d1和d2,并在DCT 系數中相應的選擇八位低頻系數作為水印的嵌入位置,本文通過大量實驗,選擇了Zig-Zag排序后的7 到15 位,并根據如下規則嵌入水印信息:

其中,Ck( x,y )表示分塊的DCT 系數,( x,y )為DCT系數的坐標,其中k=1,2,…,1024,∝表示嵌入水印的強度因子,w 表示水印信息,為嵌入水印后的DCT 系數。水印信息提取時,我們根據嵌入水印位置的DCT 系數與隨機矩陣的相關性進行分析,如果與d1 相關性高,則說明嵌入的水印為1,反之,嵌入的水印為0,從而實現了水印信息的盲提取。計算嵌入水印序列與隨機矩陣相關性[10]的公式如下:

水印的嵌入流程如圖4 所示。

圖4 水印嵌入流程圖
提取水印為嵌入水印的逆過程,根據公式(10)即可還原水印圖像,本文利用峰值信噪比(PSNR)對含水印圖像的性能進行測試,利用歸一化值(NC)對提取的水印圖像的性能進行評價。當嵌入魯棒性水印時,由于主要選擇低頻部分進行嵌入,因此PSNR 的值在30~40 左右,即可保證含水印圖像的透明性,NC 值主要反映提取水印質量,當趨近于1 時,說明提取的質量較好,一般來講,當NC 值低于0.8 時,提取的水印圖像則不可辨認。
本文選擇MATLAB 2018 仿真平臺,根據嵌入算法,進行了多種類型、多種強度的模擬實驗,通過仿真實驗得知當嵌入強度因子在20~35 之間,本算法均可以表現出較好的性能,本實驗過程中我們使用的強度因子為30。原始載體圖像與含水印圖像如圖5 所示。
通過對比可以得知,含水印與原始載體圖像并無明顯差別。通過計算,峰值信噪比為38.6487,說明嵌入的水印信息具有良好的不可見性,對載體圖像幾乎沒有影響。

圖5 原始載體圖像與含水印圖像對比
然后我們對載體圖像進行多種類型的攻擊實驗,并計算攻擊后含水印圖像與原始載體圖像的峰值信噪比(PSNR)以及提取的水印的歸一化值(NC),通過計算得到的PSNR 值與NC 值對水印算法的性能進行評價,具體實驗過程如下。

圖6 JEPG壓縮后提取的水印

表1 JEPG 壓縮攻擊后的性能
如圖6 與表1 所示,JPEG 壓縮攻擊時,當品質因素從80 遞減到30 時,含水印圖像的PSNR 值都在30以上,因此含水印圖像透明性較好,而提取水印的歸一化值也趨近1,質量非常理想。

圖7 椒鹽噪聲攻擊后提取的水印
如圖7 與表2 所示,當椒鹽噪聲的強度從0.001 增加到0.01 時,含水印圖像的PSNR 從30.5272 開始減小,說明載體圖像質量下降明顯,而提取的水印信息仍在0.96 以上,性能良好。

表2 椒鹽噪聲攻擊后的性能

圖8 多種類型攻擊后提取水印

表3 多種類型攻擊后的性能
如圖8 與表3 所示,我們對載體圖像進行六種類型的模擬攻擊。其中維納濾波、縮放、中值濾波含水印圖像的PSNR 值都在30 以上,含水印圖像質量很好,而旋轉、剪切、高斯噪聲的攻擊后,含水印圖像的PSNR值下降明顯,說明對原圖影響較大。而整體上提取水印的NC 值都在0.9 以上,表現出較好的性能。
本文提出了一種在DWT_DCT 變換域內利用隨機矩陣嵌入水印的算法,并得到以下結論。
(1)利用DWT 的多分辨率特性、DCT 系數的統計特性并結合HVS 的特點,提出了一種DWT 與DCT 相融合的水印算法,保證了含水印圖像的透明性以及提取水印的魯棒性。
(2)利用Arnold 置亂算法與混沌加密的雙重加密算法,保證了嵌入水印的安全性。
(3)利于隨機矩陣嵌入水印的方式,使得系統每次都產生不同的兩個八位序列,因此每次提取水印都需要不同的密鑰,從而進一步提高了算法的安全性。
(4)通過各種類型、不同強度的模擬攻擊,本水印算法均能夠夠有效地提取到水印信息,并且實現了水印信息的盲提取。