何 冰 端木直
(渭南師范學院數理學院 渭南 714099)
社會數字信息化發展的越來越快,信息安全保密問題也越來越嚴重。正是因為如此,數字水印技術(DigitalWatermarking)發展得很快,在信息安全維護及版權保護等方面起著重要作用。水印技術主要是指通過信號處理的方法在載體中加入指定的隱蔽信息,當然隱蔽信息不可見,通過水印提取可以顯示個人加入的信息,從而達到保護個人版權等一系列安全隱私問題。近幾年,數字水印技術在信息隱藏領域已經成為一個熱門而且不斷發展,相信未來會有更加廣闊的發展潛力。
其中,安全問題主要表現在以下方面。首先體現在數字作品的知識產權保護方面,數字作品形式很多,例如圖像、視頻等。與此同時,作品的版權保護也成為重中之重。因為數字作品的復制修改甚至竊密非常容易,這樣原創者的產品權益便得不到保證,這已經成為當下的熱點問題。其次,經濟流通中的票據防偽。因為高質量圖像輸入輸出設備很多,這樣便使得貨幣以及支票的偽造變得很簡單,由此引發的經濟犯罪也越來越明顯,這樣便迫切地促進了水印技術的發展與更新。再例如,音頻與攝像類數據的隱藏標識和篡改提示。眾所周知,數據的標識信息極其珍貴,在我們的生活細節當中起著至關重要的作用,不過將表示信息嵌入到載體圖像上又是極其危險的,很容易在經過攻擊之后造成個人隱私泄露或者信息丟失。數字水印技術剛剛為這種風險形成了一種屏障,即可以將標識信息隱藏,人們通過肉眼在原始文件上無法察覺。這種隱蔽通信的安全問題在軍事上顯得更加重要,尤其是密碼安全與情報安全,正是因為水印技術先進的隱藏手段,成功地保證了軍事戰略中密碼與情報的安全傳輸,由此引起了密碼情報的傳輸方式在軍事及網絡信息安全中的極大變革。
數字水印的簡單模型如圖1所示。

圖1 數字水印嵌入的過程
頻域法加入數字水印首先將原始信號轉換到頻域,變換一般有離散小波變換(DWT)、離散余弦變換(DCT)、離散傅里葉變換(DFT)等,隨后對加入了水印信息的信號進行頻域反變化,便能夠得到含有水印信息的信號。

圖2 數字水印提取的過程
如圖2所示,頻域法的檢測原理是將原始信號與待檢測信號同時進行變換域變換,比較兩者的區別,然后進行嵌入水印的逆運算,得出水印信息。這時候會出現兩種情況。第一種情況,如果是可讀水印,那么結束。反之,如果水印讀不出來,就將得到的水印與已知水印作比較,進行相關性判斷,得出結論。
目前,對于數字水印有很多種分類方法,不同的分類角度導致了不同的分類形式,它們之間有各有異同,大致分類包括以下幾種。
空間域算法:1)最低有效位法(LSB)是空間域數據隱藏算法的一種,該方法是通過原始數據的最低位來隱蔽信息的。LSB方法的優點是有較大的信息隱藏量,但采用此方法實現的數字水印是很脆弱的,無法經受一些無損和有損的信息處理,而且如果確切地知道水印隱藏在幾位LSB中,數字水印很容易被擦除或繞過。2)patchwork方法的核心思想在于統計,嵌入方法簡單,即選擇H對圖像點,在放大一點亮度的同時減小另一點的亮度。良好的隱藏性便是這種算法的優點。除此之外,對各種旋轉攻擊等操作具有較強的抵抗能力,不過必須對具有大量紋理的任意區域的圖像進行操作,而且不能完全自動完成。3)文檔圖像微波方法。通過在通用文檔圖像中隱藏特定二進制信息,數字水印信息經過輕微調整文檔構造來實現編碼,最明顯的特點在于,基于這種方法的數字水印可以抵抗一些文檔輕微調整操作,不過很容易被破壞,而且有一定局限性。4)變換域算法。變換域技術的最明顯的特征在于,可嵌入大量比特率數據,而不會刺激人的感性系統使人有所察覺。常常使用例如擴頻水印技術來掩護數字水印信息,這些變換包括離散余弦變換(DCT)、離散小波變換(DWT)、傅里葉變換(FT或FFT)還有哈達碼變換等。
Matlab(矩陣實驗室)是由美國公司出品的商業數學軟件,功能極其強大,主要包括Matlab和simulink兩部分。Matlab語言體系是Matlab重要組成成分,為用戶提供了豐富的調用函數,數據的輸入輸出及面向對象等特性的高層次和極其完備的編程語言。同時,Matlab有設計程序所必需的結構,即順序結構,循環結構及分支結構。并在很大程度上擺脫了傳統上不是交互式程序語言的編寫與運行模式,是當今國際科學計算軟件的先進水平。
Matlab的基本數據單位是矩陣,它的指令表達式與其它領域上形式有許多共同之處,故用Matlab來解決問題要比用其它語言完成相同的事情簡單高效得多。而且Matlab有函數解釋與命令功能,可以通過命令向Matlab發出請求,解釋自己想要調用函數的功能及具體運行方法。除此之外,Matlab也吸收了其他軟件的優點,在新的版本中也加入了對C、FORTRAN、C++、JAVA的支持,可以直接調用。用戶也可以將自己編寫的實用程序導入到Matlab函數庫中方便自己以后調用,此外許多的Matlab愛好者都編寫了一些經典的程序,用戶可以直接進行下載就可以用。
DCT變換公式是頻域中常用的幾種變換之一。DCT正反變換公式是在離散余弦變換的基礎上轉變來的,主要特點是計算速度快,二維的DCT變化是從一維拓展而來,二維DCT正變換公式為

其中:

二維DCT反變換公式為

其中x,y為空間采樣值,m,n為頻域采樣值。
因為數字圖像多用像素方陣來標識,即M=N。此時,二維DCT正反變換可以簡化為

其中:

數字圖像水印算法選擇導入的二值圖像作為水印圖像,根據水印圖像的二值性不同,進行不同嵌入系數的選擇,并將載體圖像進行8×8的分塊,將數字水印的灰度值直接植入到載體灰度圖像的DCT頻域中。
實現水印的嵌入,具體方法如下:
步驟一:從桌面讀入一副原始圖像和二值化水印圖像到二維數組E與T。
步驟二:將原始圖像E分割為互不覆蓋的圖像塊block(x,y),x<1,y<8。對block(x,y)進行DCT變換,得到block-dct(x,y)。
步驟三:取水印圖像中的一個元素W(p,q)嵌入原始圖像塊的低頻系數中。
步驟四:對嵌入水印信息后的圖像塊block-dct(x,y)進行逆DCT變換。
步驟五:重新組合圖像塊,得到嵌入水印后的圖像。操作過程如圖3所示。

圖3 水印嵌入算法框圖
步驟一:讀取嵌入水印后的圖像,并對圖像進行分塊。
步驟二:對每一個圖像塊進行逆DCT變換,得到嵌入水印后的圖像塊block-dct(x,y)。
步驟三:從每一個圖像塊block-dct(x,y)提取出水印元素W(p,q)進行逆DCT變換。
步驟四:重新組合圖像塊,得到原來的水印圖像,操作過程如圖4所示。

圖4 水印提取算法框圖

圖5 離散余弦變換水印嵌入與提取結果
從實驗結果來看,本設計中水印的提取與嵌入實驗結果是比較成功的。其對傳輸過程中的噪聲影響有著一定程度的抵抗能力,而且對于一些非刻意的攻擊具備較強的抵抗能力,例如高斯濾波攻擊等,不過也具有一定的缺陷,在幾何性攻擊如旋轉,縮放等易造成嵌入水印的提取不出來,水印嚴重失真。
結論:整體來說,在不經過攻擊時,提取的水印圖像比較清晰,然而對于旋轉、壓縮及縮放等,水印提取過程就不太理想,提取出來的水印清晰度效果較差。因此若要完善這種水印提取的效果,我們需要進一步改進數字圖像水印的方法。