孫曉霞,佟國香
(上海理工大學 光電信息與計算機工程學院,上海 200093)
數字水印技術是一種應用計算機算法將保護信息嵌入載體文件的技術,對其起到版權保護及認證的作用.隨著數字信息時代的發展,數字作品的版權保護問題引起越來越多的關注.近年來,許多國內外的專家學者在數字水印領域做出了自己的貢獻,這些貢獻主要集中在圖像水印,音頻水印,視頻水印等,其中研究最廣泛的是圖像數字水印.
經典的圖像數字水印算法包括空域數字水印算法和變換域數字水印算法[1].常見的空域算法有LSB算法[2]、Patchwork算法、基于直方圖的算法等,空域水印算法快捷簡單、時間復雜度低,但是魯棒性和透明性較差.變換域算法將載體圖像進行相應的頻域變換,通過修改頻域系數將水印嵌入.與空域算法相比,變換域算法更復雜,但是不可見性和魯棒性也更高,是目前常用的數字水印算法.常見的變換域算法有離散余弦變換(DCT)[3]、離散傅里葉變換(DFT)和離散小波變換(DWT)[4]等.
基于DCT和分形編碼的數字圖像水印方法[5]實現了雙重加密,改進了傳統的DCT方法,提高了計算效率,但其抵抗幾何攻擊的能力較弱.與DCT相比,小波變換抵抗幾何攻擊的能力更強,文獻[6]提出了一種基于廣義卷積定理的線性正則小波變換(LCWT)的水印算法,算法將LCWT和QR分解相結合,提供了更大的靈活性,但其水印的不可見性一般.
基于變換域的方法雖然可以提高魯棒性,但其抵抗旋轉縮放等攻擊的能力整體較弱,因此一種更加穩定的變換方法奇異值分解(SVD)被引入數字水印算法.陳青等[7]將整數小波系數與SVD相結合,提出了基于模運算的SVD小波系數算法,該方法對一般的幾何攻擊尤其是旋轉攻擊有較強的魯棒性,但其算法復雜度較高.Makbol等[8]將SVD和DWT相結合選取特定塊區域嵌入水印,實驗結果表明算法對常見的圖像處理攻擊具有高透明性和高魯棒性,不足之處在于算法效率不夠高.
與一般圖像不同,醫學圖像的圖像特征通常具有重要的意義和價值,因此很多針對圖像特征的生理模型算法也逐漸被提出.文獻[9]利用指紋生物識別技術進行身份驗證,利用加密過程進行保密,并利用可逆水印實現完整性,提出了一種基于生物特征的有效醫學圖像水印的電子水印技術,但其只是針對特定領域,不適用于所有圖像.
上述方法都是數字水印算法的傳統方法,隨著機器學習的發展,許多基于機器學習的算法被應用于圖像數字水印算法領域.基于機器學習的算法可以解決參數優化和水印盲提取兩個問題[10].文獻[11]將DWT和DCT相結合,將SVM回歸模型用于幾何畸變校正,提高了算法的魯棒性,但是算法的復雜度很高.基于機器學習的水印算法雖然在不同程度上實現了更好的魯棒性與透明性,但是在參數優化以及算法復雜度等方面仍然存在很大的提升空間.
為了解決目前水印算法存在的問題,本文將DWT和SVD相結合,提出了基于機器學習的圖像數字水印算法.首先將載體圖像進行一級離散小波變換,選取低頻子帶進行分塊處理,再對分塊進行奇異值分解,并提取特征向量來訓練LS-SVM分類器.訓練好的LS-SVM用于自適應最大水印嵌入強度的計算以及水印的盲提取.
將水印進行加密可以提高算法保密性,本文采用混沌加密算法對水印進行加密,混沌加密算法具有偽隨機性、便利性和對初值敏感等特性,在水印加密中被廣泛使用[12].其邏輯方程如公式(1)所示:
xn+1=rxn(1-xn) (r>0,0 (1) 式中:xn為自變量,r為控制參數,r取值不同時,數列{xn}具有不同的斂散性,當r趨近4時,{xn}呈現無規則化,出現混沌狀態. 離散小波變換(DWT)[13]具有多分辨率和多尺度的特性,更加符合人眼視覺系統(HVS)的特點,抵抗壓縮攻擊的能力更強.將載體圖像進行一級離散小波變換得到LL,HL,LH,HH四個子帶圖像,LL子帶包含了圖像的主要信息,其他三個子帶代表了圖像的細節和邊緣信息,故選取LL子帶進行分塊處理.離散小波變換的公式如(2)所示: (2) 式中:α為尺度,τ為平移量. 奇異值分解穩定性好,具有旋轉和比例不變性.SVD基于特征值和特征向量進行變換,可以將非對稱矩陣進行對角化,不僅限于方陣[14].SVD公式如(3)所示: (3) 式中:A為n×n的矩陣,U,V為正交特征向量矩陣,S為奇異值矩陣.S的奇異值作為樣本特征來訓練LS-SVM. 水印嵌入強度指水印嵌入過程中對載體圖像的修改程度[15].水印嵌入強度越大,水印算法的魯棒性越強,透明性越差.本文將SVD的奇異值作為特征向量,與圖像子塊中心像素的最大水印嵌入強度組成樣本來訓練LS-SVM分類器,從而實現自適應的最大水印嵌入強度算法. LS-SVM是支持向量機(SVM)的改進.LS-SVM將SVM的二次規劃問題變成了求解線性方程組的問題,降低了算法的復雜度,適用性更強[16].本文利用LS-SVM來求解最大水印嵌入強度和提取水印.訓練LS-SVM的特征向量為SVD的奇異值向量.在求解自適應最大水印嵌入強度時,樣本由特征向量和圖像子塊中心像素對應的最大水印嵌入強度組成;在提取水印時,樣本由帶水印載體圖像和水印對應的樣本標簽值組成. 本文水印算法分為自適應最大水印嵌入強度、水印嵌入、LS-SVM分類器的訓練和水印提取四部分.水印嵌入前先將其進行混沌加密,利用LS-SVM分類器得到各分塊圖像的自適應最大水印嵌入強度.水印嵌入時,先對載體圖像進行一級離散小波變換,選取LL子帶圖像將其進行分塊處理,再對各分塊進行奇異值分解后嵌入加密水印.最后利用訓練好的LS-SVM分類器對奇異值向量的標簽進行估計來實現水印的盲提取.算法的流程圖如圖1所示. 圖1 基于機器學習的數字水印算法流程圖Fig.1 Flow chart of the digital watermarking algorithm based on machine learning 自適應最大水印嵌入強度算法根據不同圖像子塊的相關特征來計算對應的最大水印嵌入強度,利用LS-SVM分類器進行預測分類.本文將像素灰度值歸一化處理,故水印嵌入強度范圍為[0,1],設定步長為0.01進行分析.具體實現步驟如下: Step1.對64×64載體圖像A進行一級小波變換,選取LL子帶對其進行4×4分塊處理. Step3.將每個Sij矩陣的對角線元素作為Aij的特征向量Vij=(σ1,σ2,σ3,σ4). Step4.初始化水印嵌入強度α與結構相似度(SSIM)判斷閾值β,水印嵌入強度設定為[0.3,1],α初始化為1,β設定為0.90. (4) (5) (6) (7) (8) Step9.將特征向量Vij與最大水印嵌入強度αij組成樣本{Vij,αij},生成樣本集合An.從中隨機選取80%的樣本生成訓練樣本集ATrain,剩余20%組成測試樣本集ATest.利用ATrain訓練LS-SVM,利用ATest對訓練好的模型進行測試.輸入特征向量可得最大水印嵌入強度. 選擇512×512的圖像作為載體,64×64的圖像作為水印.首先將載體圖像進行一級離散小波變換,選取LL子帶將其進行4×4分塊處理,然后將各分塊進行奇異值分解,通過自適應最大水印嵌入強度算法計算各分塊中心像素對應的最大嵌入強度,最后嵌入混沌加密的水印.具體步驟如下: Step1.對載體圖像I進行一級小波變換,將LL子帶進行4×4分塊,并記為LLij,其中i≤N,j≤N,N為分塊的個數. Step2.對每一個LLij做SVD變換,即LLij=UijSijVijT. Step3.選取Sij的主對角線元素作為LLij的特征向量Vij=(σ1,σ2,σ3,σ4). Step4.根據自適應最大水印嵌入強度算法,輸入特征向量Vij得到圖像子塊中心像素的水印強度αij,按照按行優先原則,對特征向量的σ2進行修改以嵌入水印信息,具體操作如公式(9)所示: (9) Step3.選取S分量中的對角線向量作為特征向量Vij=(σ1,σ2,σ3,σ4)共8組. Step4.由水印圖像Wij映射得到樣本集標簽,如式(10)所示: (10) Step6.由樣本集Trainijk訓練可得LS-SVM分類器. 水印提取為水印嵌入的逆過程.首先對嵌入水印后的載體圖像進行一級小波變換,然后對LL子帶按照4×4進行分塊后進行SVD變換.利用訓練好的LS-SVM分類器提取水印.具體步驟如下: (11) 4.1.1 透明性參數 選取原始載體圖像和含水印載體圖像的平均結構相似度(MSSIM)[17]與峰值信噪比(PSNR)[18]來評價水印算法的透明性.MSSIM和PSNR均是越大代表水印透明性越好.PSNR反映了圖像數據變化的統計平均量,PSNR≥40dB時人眼無法察覺圖像是否有改動.MSSIM與PSNR的計算公式分別如式(12)和式(13)所示: (12) 式中,I為原始載體圖像,I′為含水印載體圖像,N為圖像子塊個數. (13) 式中,MSE為I與I′的平均絕對誤差[18],公式如(14)所示: (14) 式中,L和K分別代表載體圖像的長和寬. 4.1.2 魯棒性參數 魯棒性反映水印算法的抗攻擊能力,選取原始水印和提取水印的相似度系數(NC)[19]和比特錯誤率(BER)[20]對算法的魯棒性進行評價.BER反映了提取的水印信息與原始水印信息之間的差異,BER越小,算法魯棒性越強.NC代表了原始水印與提取水印的相似度,NC越大魯棒性越好.BER和NC的公式分別如式(15)和式(16)所示: (15) 式中,WL為水印信息長度. (16) 其中W為原始水印,W′為提取水印,nL、nK是水印圖像長與寬. 實驗基于python3.6在4GB RAM、1.6GHz、內核i5處理器的PC機進行來評估本文算法的性能.采用3張512×512的標準測試圖像為載體圖像,如圖2所示;采用64×64的二值圖像為水印圖像,如圖4(a)所示.圖3為本文算法嵌入水印后的載體圖像,圖4(b)和圖4(c)分別為加密水印和無攻擊時提取出的水印圖像.為了進一步評估本文算法性能,與其他3個算法進行了實驗對比. 圖4 不同階段的水印圖像Fig.4 Watermark images in different stages 4.2.1 透明性測試 選取圖2的載體圖像用于透明性測試,在未受攻擊的情況下,4種算法的透明性參數MSSIM和PSNR如表1和表2所示.圖5為MSSIM和PSNR的對比圖. 圖5 透明性參數對比圖Fig.5 Comparison of transparency parameters 表1 4種算法的MSSIM對比Table 1 Comparison of MSSIM among four algorithms 表2 4種算法的PSNR對比Table 2 Comparison of PSNR among four algorithms 4.2.2 魯棒性測試 選取Lena圖像用于魯棒性測試,對圖像添加攻擊后提取水印,4種算法的魯棒性參數BER和NC如表3和表4所示. 表3 Lena圖像的BER對比Table 3 BER comparison of Lena image 表4 Lena圖像的NC對比Table 4 NC comparison of Lena image 圖6給出了BER和NC的對比圖.本文選取7種攻擊方法,分別為高斯噪聲0.01、椒鹽噪聲0.01、剪切(左上1/8)、中值濾波3×3、逆時針旋轉5°、JPEG壓縮70和縮放0.5. 圖6 魯棒性參數對比圖Fig.6 Comparison of robustness parameters 4.2.3 算法復雜度測試 選取Lena圖像進行算法復雜度測試,將512×512Lena圖像嵌入和提取水印整個過程的運行時間作為判定標準.4個算法的運行時間對比如表5所示. 表5 4個算法的運行時間比較Table 5 Comparison of running time among four algorithms 由表1和表2可知,本文算法具有很好的透明性,未受攻擊時,透明性參數MSSIM大于0.98,PSNR達到60dB以上.由表3和表4可知,本文算法也具有很高的魯棒性.在受到不同的攻擊時,除了中值濾波,魯棒性參數BER均小于0.02,NC均大于0.95.由表5可以看出,本文的算法復雜度也占有一定的優勢,作為機器學習算法仍然保持較高的運行效率.本文的自適應最大水印嵌入強度算法,在保證水印算法透明性的前提下盡可能增加水印的嵌入強度,提高了算法的魯棒性. 與其他3個算法相比,本文算法分別表現出了一定的優勢.由圖5可以看出,本文算法的透明性明顯優于文獻[21]和文獻[23]的算法.由圖6可知,除了中值濾波,本文算法抵抗常規攻擊的能力較高且保持均衡,適用性較廣.在面對剪切、縮放等幾何攻擊時,本文算法魯棒性優于其他3個算法.在算法復雜度方面,本文算法優于文獻[21]和[22]的算法.文獻[22]雖然透明性優于本文算法,但本文算法的透明性早已超過PSNR=40dB的人眼可辨識范圍,而且文獻[22]的算法面對高斯噪聲時魯棒性不是很強.另外,本文的自適應水印嵌入強度均大于其他3個算法,這是本文的一大優勢.綜合來看,本文算法兼顧透明性、魯棒性、嵌入強度以及時間復雜度,性能最佳. 本文算法也有不足之處,如抵抗中值濾波攻擊時魯棒性較弱,有待于提高. 本文提出了一種利用機器學習方法的圖像數字水印算法,算法包括LS-SVM分類器的訓練以及水印的嵌入和提取.算法將DWT和SVD相結合嵌入水印,將LS-SVM分類器用于自適應最大水印嵌入強度算法和水印的盲提取.最大水印嵌入強度算法使得水印算法保證透明性的前提下盡可能地提高魯棒性.實驗證明,在水印嵌入強度范圍為[0.3,1]的條件下,本文算法的透明性實現了最佳PSNR=63.71dB的效果,針對JPEG壓縮、高斯噪聲,尤其是旋轉、剪切和縮放等常規攻擊手段,算法能保持較強的魯棒性. 本文算法針對中值濾波攻擊時魯棒性有待于提高,在未來的研究中,可針對中值濾波攻擊進行算法改進,通過不斷優化LS-SVM分類器參數來獲得更高的透明性與魯棒性.今后的研究也可以考慮嘗試其他機器學習算法與傳統數字水印算法的結合,使其性能更佳,適用范圍更廣.2.2 離散小波變換
2.3 奇異值分解(SVD)
2.4 最大水印嵌入強度
2.5 LS-SVM分類器
3 基于機器學習的數字水印算法

3.1 自適應最大水印嵌入強度






3.2 水印的嵌入


3.3 LS-SVM分類器的訓練




3.4 水印的提取




4 實驗分析
4.1 性能參數
4.2 實驗仿真








5 結論與展望