王菽裕,劉 璐,宋俊芳,張春玉
(西藏民族大學 信息工程學院,陜西 咸陽 712082)
數字水印技術發展迅速,出現了各種水印算法,最低有效位(Least Significant Bit,LSB)數字水印技術是最早的空域水印添加算法,它原理簡單且易實現,但魯棒性差。變換域水印算法大大提高了水印的魯棒性,常見的有基于離散余弦變換(Dual Clutch Transmission,DCT)和離散小波變換(Discrete Wavelet Transform,DWT)水印算法。黃西娟[1]、陳善學等[2]人對于數字水印算法的研究使數字水印算法不斷完善優化。綜合考慮DWT和SVD的優點,本文將DWT和SVD結合起來對原載體圖像進行水印的嵌入和提取。
與傳統的DCT變換相比,小波變換是一種時域與頻域相結合的變分辨率變換方法。時間窗口的大小隨頻率自動調整,更符合人的視覺特征并且小波分析在時域和頻域都有很好的局部性,為傳統的時域分析和頻域分析[3]提供了很好地結合方法。
目前,小波分析已廣泛應用于數字圖像和視頻壓縮編碼、紋理特征識別[4]、信息隱藏[5]等領域,出現了許多典型的基于離散小波變換的數字水印算法[6]。
在數字圖像處理中,需要將連續的小波及其小波變換離散化。實際上,離散小波變換是將連續小波變換的尺度和位移按照2的冪次離散化而得到的,故又稱二進制小波變換。
在小波分析中經常用到近似與細節,近似表示信號的高尺度,即低頻信息;細節表示信號的高尺度,即高頻信息。因此,原始信號通過兩個相互的濾波器產生兩個信號,其中高頻細節系數為LH,HL,HH 3個頻率的子帶。通過連續分解過程,將近似信號進行連續分解,可以將信號分解成多個低分辨率的成量。理論上,這種分解可以無限地進行下去。因此,在實際應用中,一般根據信號的特征或適當的準則來選擇合適的分解層數。二級離散小波分解的示意如圖1所示。
有一個m×n的實數矩陣A,想要把它分解成如下的形式:
A=U∑VT
其中,U和V均為單位正交陣,即有UUT=I和VVT=I,U稱為左奇異矩陣,V稱為右奇異矩陣,∑僅在主對角線上有值,稱為奇異值,其他元素均為0。上面矩陣的維度分別為U∈Rm×n,∑∈Rm×n,V∈Rn×n。

圖1 二級離散小波分解示意
水印的嵌入過程具體如下,具體如圖2所示。
(1)將原圖像A和水印W分別進行灰度處理。
(2)對原圖像灰度圖進行二級離散小波變換,記為LL2。
(3)對LL2進行矩陣奇異值分解,得到Ua,Va,Sa;對水印也進行矩陣奇異值分解,得到Uw,Vw,Sw。
[Ua,Sa,Va]=SVD(LL2)
[Uw,Sw,Vw]=SVD(W)
(4)加權嵌入算法公式為:Sw'=Sa+αSw,其中α表示水印嵌入強度(0<α<1)。
(5)將Sw′與步驟(3)得到Ua,Va進行SVD逆變換。
LL2′=Ua×Swv×VaT
(6)對上一步得到的LL2′進行逆小波變換。

圖2 水印嵌入流程
水印的提取過程如下:(1)利用DWT對含水印圖像A1進行二級小波變換,取出低頻小波系數,記為LL2″。(2)對LL2″進行奇異值分解。[Ua1,Sa1,Va1]=SVD(LL2″)。(3)利用公式計算出Sw′:Sw′=(Sa1-Sa)/α。(4)進行SVD逆變換,即:W′=Uw×Sw′×VwT,如圖3所示。

圖3 水印提取流程
Matlab工具箱中集成了DWT,DCT等變換域函數和可以用來做攻擊實驗的函數,既方便了研究人員,又使源程序簡潔明了、易于實現。Matlab的基本數據單元是矩陣且具有強大的數學運算功能,可以方便高效地實現圖像、音頻和視頻中的大量矩陣運算而且提供了圖像處理工具箱、小波分析工具箱、數字信號處理工具箱。因此,用來研究數字水印技術是非常好的選擇。Matlab軟件實現的水印加載和水印提取的界面如圖4所示。

圖4 軟件界面程
文章設計了一種基于DWT-SVD信息的隱藏算法,具有較強的實際意義和應用價值;運用離散小波變換與矩陣奇異值分解相結合的方法,算法數學背景清晰,對常見攻擊具有較強的魯棒性,能有效應對常見的攻擊。文章實現的圖像水印技術是考慮在灰度圖像中嵌入水印,而在現實情況中,彩色圖像比較常見且比灰度圖像信息含量也大,目前也有進行彩色圖像水印方案的實現,是以后要改進的地方。