張 帥,楊雪霞
(1. 太原廣播電視大學 教學研究中心, 山西 太原 030024; 2. 太原科技大學 應用科學學院,山西 太原 030024)
數(shù)字水印作為一種保護數(shù)字產(chǎn)品的技術手段,是指將水印信息隱藏于載體文件中,并且不影響原始文件的可視性,當需要版權認證時可通過特定的算法,提取隱藏于載體文件中的水印信息[1]. 因此數(shù)字水印技術在解決版權糾紛、 進行數(shù)字認證方面將有著非常重要的現(xiàn)實意義.
Kang 等[2]提出了一種離散小波變換(Discrete Wavelet Transformation, DWT)和離散余弦變換(Discrete Cosine Transform, DCT)相結合的盲水印算法,對DCT系數(shù)形成的調(diào)制矩陣進行奇異值分解(Singular Value Decomposition, SVD),并實現(xiàn)了水印信息的嵌入. 湯永利等[3]使用μ律壓縮技術在DWT-SVD域內(nèi)實現(xiàn)了水印信息的嵌入與盲提取. 欒煒等[4]在小波變換內(nèi)提出了一種結合快速響應(Quick Response, QR)碼的雙重水印算法,該水印算法在安全性方面得到了提升,但仍屬于非盲水印. 上述文獻均是在小波變換域內(nèi)對方陣圖像進行的研究. 由于奇異值具有的穩(wěn)定性,一些學者在小波變換的基礎上,對子帶進行了奇異值分解,然后通過與奇異值矩陣疊加的方式嵌入水印信息[5-6]. 肖振久等[7]對載體圖像進行了三級小波變換,在低頻子帶中通過果蠅優(yōu)化算法自適應選擇嵌入強度,最后通過加性的方式疊加了水印信息. 上述文獻中水印的提取均需要原始載體圖像的參與.
考慮到載體圖像尺寸的任意性,本文將基于小波變換的水印嵌入算法拓展到了非方陣圖像. 首先對非方陣載體圖像進行規(guī)范化處理,使其能夠進行小波分解,通過SVD分解提高了嵌入水印算法的穩(wěn)定性. 并從平衡水印算法魯棒性與不可見性的角度對嵌入水印強度進行了分析,然后通過量化的思想嵌入水印信息,使其能夠實現(xiàn)盲提取. 針對置亂算法與混沌加密在剪切攻擊方面的不足,提出了嵌入雙重水印的改進算法,最后通過模擬仿真驗證了算法的有效性.
小波分析是近幾十年發(fā)展起來的一種新的數(shù)學分析方法,廣泛應用于計算機領域,如圖像處理、 信號分析、 語音識別等,以及數(shù)學和醫(yī)學成像等諸多領域[8-9]. 研究小波變換的理論基礎來源于傅里葉變換,具體變換公式如下[10]
(1)
(2)
式(1)為傅里葉變換,其中指數(shù)函數(shù)e-iω t可由歐拉公式展開,因此復雜的時域信號經(jīng)過變換之后可由一系列正余弦波形組成,但該信號只能反映頻率特性. 式(2)為小波變換的基本公式,在公式中有兩個變量,尺度α和平移量τ. 尺度對應于頻率,控制小波函數(shù)的伸縮,平移量τ對應于時間,控制小波函數(shù)的平移,即小波分析同時具備了時頻特性.
在圖像分解過程中,主要利用小波變換的多分辨率(及多尺度)特性. 對于二維圖像,會分別從水平和垂直方向進行低通和高通濾波,一級小波變換之后圖像被分為4個子帶,其中LL子帶是由兩個方向進行低通濾波后產(chǎn)生的系數(shù),包含圖像的主要信息,即能夠近似表示圖像. HL子帶、 LH子帶、 HH子帶分別表示圖像的細節(jié)或邊緣信息[11]. 具體變換如圖 1 所示.
圖 1 原始載體圖像與一級小波分解圖像Fig.1 Original carrier image and the first wavelet decomposition image
SVD分解是矩陣分析中基于特征值和特征向量變換的數(shù)學工具,由于奇異值具有良好的穩(wěn)定性,因此在數(shù)字水印嵌入技術中得到廣泛應用,具體描述如下:
設A為N×M大小的圖像,奇異值分解為[12]
A=UΣVT,
(3)
式中:A∈RN×M,U∈RN×N,Σ∈RN×M,V∈RM×M,U和V分別為左右奇異矩陣,且都是正交矩陣. 矩陣Σ=diag(σ1,σ2,…,σr},這里σ1≥σ2≥…≥σr>0,σi(i=1,…,r)為矩陣A的奇異值.
當圖像被干擾時,矩陣的奇異值具有很好的穩(wěn)定性[13]. 因此在水印算法的研究中,常在圖像分解的奇異值中嵌入水印,以抵御各類噪聲對水印信息的干擾.
混沌加密作為新的密碼學研究方向,具有對初值敏感、 偽隨機性和遍歷性等一系列特性,在數(shù)字水印的加密過程中被廣泛使用. Logistic方程為[14]
xn+1=rxn(1-xn) (r>0, 0 (4) 式中:xn為自變量;r為控制參數(shù),r取值不同時,數(shù)列{xn}具有不同的斂散性,當r趨近4時,數(shù)列呈現(xiàn)無規(guī)則化,出現(xiàn)混沌狀態(tài). 水印的混沌加密結果如圖 2 所示. 圖 2 原始水印與混沌加密水印Fig.2 Original and chaotic encryption watermark 圖像進行分解時,考慮到小波變換要滿足2N的要求才能被整除,因此水印算法基本都是對N階方陣圖像進行系列研究,而在實際應用中,圖像的尺寸具有任意性,因此本文選擇了一幅非方陣圖像進行了算法設計. 首先對載體圖像進行一級小波分解,同時為了減少維度較高時奇異值分解的運算量,對嵌入水印的子帶進行22×22分塊處理,然后再對每個分塊矩陣進行奇異值分解. 根據(jù)算法描述載體圖像要滿足被23整除. 具體運算公式如下 (5) (6) 式中:R為行,C為列,dim為分解層次;r,c分別為規(guī)范后載體圖像的行與列;rw,cw為嵌入水印圖像的行與列. 本文選擇的圖像大小為250×507,結合本算法,則R=250,C=507,dim=3. 根據(jù)式(5)計算得r=248,c=504; 根據(jù)式(6)計算得rw=31,cw=63. 根據(jù)式(5)和式(6)實現(xiàn)了載體圖像的規(guī)范化處理及嵌入水印圖像的大小計算. 本算法可以應用到任意級的小波變換及子帶的2N分塊處理中,此時只需根據(jù)實際算法設計調(diào)整參數(shù)dim的大小即可實現(xiàn). 水印嵌入之前,分別對載體圖像和水印圖像進行預處理. 本文隨機選取一幅大小為250×507圖片,經(jīng)過規(guī)范化處理后大小為248×504,如果對原圖有嚴格要求,可在水印嵌入后補充完善圖像的邊緣像素. 規(guī)范后的圖像首先進行一級小波變換,選取LL子帶按照22×22進行分塊處理,然后對每一個分塊進行奇異值分解,最后將經(jīng)過混沌加密的水印信息嵌入到每個子塊的最大奇異值中. 為了實現(xiàn)水印信息的盲提取,采用如下規(guī)則嵌入水印信息. Z=σ1modq, (7) (8) (9) 水印信息的提取是水印嵌入的逆過程,具體提取過程如下: 對嵌入水印后的載體圖像進行一級小波分解,然后對LL子帶按照22×22進行分塊,并對每一子塊進行SVD分解,按照如下規(guī)則實現(xiàn)水印信息的盲提取. (10) 本文對載體圖像的像素值進行了歸一化處理,灰度值分布在[0,1]之間. 隨著嵌入水印強度q的增大,含水印圖像的不可見性降低,水印的魯棒性提升,為了平衡二者之間的矛盾,本文通過JEPG壓縮、 濾波、 噪聲等6種攻擊對水印強度q的影響進行了分析. 6種模擬攻擊的強度為: JEPG壓縮強度80、 椒鹽噪聲0.005、 高斯噪聲 0.01、 中值濾波、 維納濾波、 高斯低通濾波為默認窗口大小. 如圖 3 和圖 4 所示,根據(jù)歸一化后載體圖像灰度值的分布,水印嵌入強度q在0~1之間考慮,步長為0.01. 隨著q的逐漸增大,含水印圖像的峰值信噪比(PSNR)降低,6種模擬攻擊后提取水印的歸一化值(NC)均值升高. 通過對實驗數(shù)據(jù)的分析,當嵌入水印強度q達到0.49時,含水印圖像的峰值信噪比為36.181 9. 提取水印的NC均值為0.96. 符合水印算法不可見性與魯棒性的要求. 隨著水印強度q的增大,6種模擬攻擊后提取水印NC值的變化如圖 5 所示. 圖 3 水印強度q與含水印圖像PSNR值Fig.3 Watermark intensity q and PSNR of watermarked image 圖 4 水印強度q與提取水印NC均值Fig.4 Watermark intensity q and mean NC of extracted watermark 圖 5 水印強度q與NC值Fig.5 Watermark intensity q and NC specific values 本文在Matlab R2018a平臺進行仿真實驗,載體圖像隨機選取一幅大小為250×507的灰度圖像,水印信息為字樣為“水印”的二值水印. 為了匹配本算法的設計要求,生成大小為31×63的二值水印信息. 原始載體圖像與水印圖像分別如圖 1 和圖 2 所示,水印嵌入強度根據(jù)2.3節(jié)分析,q取 0.49. 不同類型及不同強度攻擊下提取水印的魯棒性能如下. 如圖 6 所示,對載體圖像進行JEPG壓縮,當品質因素(QF)從70下降到20時,提取的水印信息質量僅略有下降,結果均清晰可見,水印在JEPG壓縮過程中表現(xiàn)出較強的魯棒性. 圖 6 JEPG壓縮攻擊后提取的水印信息Fig.6 Watermark extracted from JEPG compression attack 如圖 7 所示,對載體圖像進行不同強度的椒鹽噪聲攻擊,當強度從0.005增加到0.02時,提取的水印信息質量有所下降但結果依然可以辨認. 強度較大時會對提取水印的魯棒性產(chǎn)生一定的影響. 圖 7 椒鹽噪聲攻擊后提取的水印信息Fig.7 Watermark extracted from salt and pepper noise attacks 如圖 8 所示,對載體圖像進行高斯低通、 維納、 中值濾波以及強度為0.01的高斯噪聲攻擊. 濾波攻擊提取水印的性能要優(yōu)于噪聲攻擊,但總體水印信息均能被有效提取. 圖 8 多種濾波及噪聲攻擊提取的水印信息Fig.8 Watermark extracted by various filtering and noise attacks 表 1 為嵌入水印圖像在不同類型和強度攻擊下含水印圖像的PSNR值與提取水印的NC值. 表 1 攻擊后載體圖像PSNR值及提取水印NC值Tab.1 PSNR value of carrier image and NC value of watermark 在剪切攻擊中,傳統(tǒng)的水印嵌入算法首先將水印圖像進行Arnold置亂,此時水印信息被均勻分配到整幅圖片中,因此在剪切攻擊后,不會缺失整塊水印信息,仍可提取到有效的水印圖像,但提取水印圖像的質量會隨著剪切面積的增大而下降. 本文針對剪切攻擊的不足提出了改進算法,首先將水印信息進行180°旋轉,形成與原始水印的軸對稱圖形,然后根據(jù)本文所設計的算法,將水印信息嵌入到奇異值對角矩陣的第2個位置. 剪切攻擊后可以提取到2個經(jīng)過剪切的水印,由于位置變換導致剪切的內(nèi)容不同,此時將提取的第2個水印信息再次進行180°旋轉,疊加即可還原出完整的水印信息. 在實驗過程中,由于奇異值分解矩陣的奇異值急劇減小,因此在嵌入第2個水印時,強度要進行調(diào)整,通過仿真實驗,該強度取0.03. 具體實驗結果如圖 9 所示. 圖 9 改進的剪切攻擊算法提取水印全過程Fig.9 The whole process of watermarking extraction by improved cropping attack algorithm 如圖 9 所示,對載體圖像從左上角行、 列分別剪切200像素,約為載體圖像的1/3大小. 根據(jù)改進算法,提取到了完整的水印信息,由于剪切位置相同,剪切內(nèi)容不同,因此剪切攻擊中可以保證水印信息的不丟失. 與文獻中傳統(tǒng)的Arnold置亂方法相比,即使當剪切面積大于相關文獻時,水印依然表現(xiàn)出更好的魯棒性. 具體結果如表 2 所示. 表 2 剪切攻擊算法與參考文獻的對比Tab.2 Comparison of cropping attack algorithms with references 基于非方陣圖像的DWT-SVD盲水印算法得到如下結論: 1) 基于DWT與SVD的水印嵌入算法實現(xiàn)了水印信息的盲提取,通過仿真實驗驗證了嵌入水印的魯棒性. 2) 對載體圖像的規(guī)范化處理實現(xiàn)了對任意尺寸載體圖像的小波分解,并且可以根據(jù)算法設計拓展到任意級的小波分解. 3) 為了平衡水印不可見性與魯棒性之間的矛盾,通過對嵌入水印強度q的分析,找到了最佳的嵌入強度. 4) 在子帶分解的奇異值中通過位置變換的方式嵌入雙重水印,解決了在剪切攻擊中水印信息缺失的問題,并且有效地提高了提取水印的性能.2 算法設計
2.1 圖像規(guī)范化處理
2.2 水印嵌入及提取過程
2.3 水印嵌入強度分析
3 實驗過程
4 結 論