韓 悅,金晅宏,郭 旭,劉 鑫,楊小萱
(上海理工大學 光電信息與計算機工程學院,上海 200093)
水印技術距今已有700多年的發展歷史,最早出現的水印是印在紙張上,如紙幣、郵票等,在光的映照下能夠看到其隱藏的圖像,以證明其內容的合法性。18世紀,紙張水印開始廣泛用于文件和紙幣的防偽措施。19世紀,水印技術逐漸被用于數字環境下,主要是用于音頻防偽。直到20世紀90年代,數字水印才真正作為研究課題受到足夠的重視[1]。
如今隨著網絡技術的飛速發展,人們獲得音頻、圖像、視頻的途徑越來越多,盜用、侵權等這類不良行為常有發生,版權保護[2]的難度日益增大,與此同時,人們對于產品的版權保護意識也越來越強。在這種情況下,數字盲水印技術成為解決這類問題的一種有效方法[3],它把具有一定意義的數字水印嵌入并隱藏在載體圖像中,以此來證明產品的所有權。之所以稱之為盲水印,不僅僅是因為水印嵌入后具有透明性,也是因為在進行水印檢測時不需要用到原始數據或者任何預留的信息,這一點和傳統的非盲水印相比更先進。
基于小波域的數字水印算法是一種經常被使用的水印算法,它是把小波系數分塊并計算平均值,通過對平均值進行量化來嵌入水印。文獻[4]中提到的基于小波域的自適應圖像盲水印算法對圖像壓縮和濾波具有良好的抗性,但在圖像抗剪切和抗噪聲方面稍有不足。
本文提出的基于分塊的DCT變換域算法[5]是一種頻域數字水印算法,該算法在抗剪切、壓縮、濾波及抗噪聲方面均具有良好的效果。
一般來說,人眼視覺中感覺重要的那部分都攜帶著比較多的信息,變換到DCT域上就對應著中低頻系數。我們將水印圖嵌入到這部分中,可以確保即使圖片失真也能留下圖像的重要信息。與此同時,水印嵌入還需要保持圖片的透明性,在不影響視覺的前提下,還保持提取水印的穩定性,因此,為了滿足這兩種需求,我們選擇將水印嵌入圖像的中頻系數部分。
本文提出的算法首先需要置亂水印圖,然后把宿主圖像分成N×N小塊,分塊進行DCT變換[6],再把水印按照算法要求嵌入宿主圖像,最后再通過DCT逆變換提取得到水印圖,算法流程如圖1所示。

圖1 算法流程Fig.1 Process of the algorithm
為了降低計算復雜度,需對圖像進行分塊處理[7]。將一張圖分為N×N的子塊,對每一小塊子圖像都進行DCT變換,變換的表達式為

式中:S(x,y)表示圖像對應坐標為(x,y)的空域中的值,x的取值是 0 ,1,···,M-1,y的取值是0,1,···,N-1;S(u,v)表示變換后對應的值在頻域上的點(u,v)的系數;C(u)和C(v)表示幅值系數函數,其表達式為:

為了增強圖片的安全性,選擇置亂技術作為圖像加密的方法[8],因為圖像置亂的方法多種多樣,即使是同一種方法,選擇不同的參數,得到的結果也是不同的,從理論上說可以為圖像增強安全性[9]。
設一張二值水印圖像K的大小為A×B,為了得到置亂水印Wt,我們{首先需要按行將}矩陣排列成一維序列W,W=W{(k),1≤k≤A×B,}然后用一維秘鑰序列M(M=M(i),1≤i≤A×B)對水印序列W進行偽隨機排列,M序列中是將從1到A×B的數字隨機排序,作為W序列中值的新位置信息,如:W={151,152,153,154},M={3,4,2,1},那么按照新的位置信息進行置亂,Wt={153,154,152,151},這樣就得到了需要的置亂后的水印Wt。然后將Wt恢復成A×B大小的二維圖像,得到置亂水印圖,如圖2所示。

圖2 水印及其置亂后的水印圖Fig.2 Watermark and its scrambled watermark
水印的嵌入過程首先是將原圖像和置亂后的水印圖都不重疊得分成N×N的子圖,這些子圖之間存在著一一對應的關系。為了計算每個子圖DCT變換后的DC系數,需要得到原始圖像的新量化值,而新的量化值是通過在原始圖像中比較相鄰塊的大小來得到的[10]。
計算規則是:如果當前塊的中頻系數大于前面塊,量化值為0;如果當前塊的中頻系數小于前面塊,量化值為1。然后將當前塊的值與對應的水印塊中的值進行異或,從而得到新的量化值。接著設定一個限定值,新量化值需要與對應的原量化值相減,得到的差小于限定值時就完成了對DCT系數的修改,最后逆變換新的DCT系數,即得到了含有水印信息的子塊圖像。當所有的子塊圖像處理完成,即得到完整的嵌入水印的圖像。
水印的提取過程可以看作是對水印嵌入過程進行逆操作。首先對嵌入水印后的圖像進行DCT變換,然后根據標志矩陣找到水印嵌入的位置并提取出相應的水印信息并對這些信息進行反置亂,就可以得到水印圖像。
為了檢驗算法的可靠性,本文進行了透明性、魯棒性檢驗,以及與小波域數字水印算法的魯棒性對比實驗。
本實驗采用的宿主圖像是一幅分辨率為512×512的二值辦公室圖像,水印圖也是一張二值圖,大小為64×64。為了版面清晰,實驗結果圖都縮小后排版(由于縮小顯示,有些圖像變化視覺上表現得并不明顯)。
水印嵌入后的宿主圖像與原始圖像如圖3所示。

圖3 透明性實驗結果圖Fig.3 Experiment results for testing transparency
為了檢驗嵌入水印之后圖像的透明性,本實驗使用了峰值信噪比(PSNR)作為判斷嵌入水印后的圖像透明性好壞的標準[11],PSNR的計算過程如下:

式中:MSE為原圖像與待處理圖像之間的均方誤差;m×n表示圖像的大小;I(i,j)表示原始圖像中坐標為(i,j)的像素值;K(i,j)表示處理后坐標為(i,j)的像素值。一般以30 dB為基準,PSNR值越大,表示圖像質量越高,本文可以表示水印嵌入后的透明性越好。計算得出,本實驗中嵌入水印后的圖的PSNR值為52.588 3 dB,說明嵌入水印后圖像的透明性良好。
在實現透明性的基礎上,本實驗還對嵌入水印后的圖像進行了加噪、剪切、JPEG壓縮[12]等攻擊,得到的受攻擊圖像如圖4所示(圖中QF是質量因子的簡稱)。提取到的水印圖分別如圖5所示。
除了肉眼辨別,本文還計算了歸一化相似度(normalized correlation, NC)作為魯棒性的檢驗標準,計算公式為

式中:P(i,j)表示原始水印圖像;P′(i,j)表示提取到的水印圖;NC值的取值區間為[0, 1],其值越接近1,表示與原始水印圖的相似程度越高。實驗得到的結果通過折線圖展示出來,如圖6所示。

圖4 受攻擊圖像Fig.4 Images under attack

圖5 遭攻擊后提取的水印圖Fig.5 Extracted watermark after attack

圖6 本文算法提取的水印NC值折線圖Fig.6 Watermark NC value extracted by the algorithm
由圖6可以看出,NC值均大于0.93,說明相似度高,魯棒性好。在遭受高斯噪聲攻擊時,即使方差變大較多,結果相差也并不大。而受到JPEG壓縮攻擊時,圖像的品質因子越大,NC值越高,提取到的水印圖越清晰,但即使品質因子只有10,提取出的水印圖還是可以辨認。
基于小波域的數字水印算法也是常被使用的一種水印算法,它在抗濾波和抗壓縮方面具有很好的效果。這里也將該算法進行了實驗,得到的結果如圖7所示。
從提取出的水印圖可以明顯地看出,基于小波域的水印算法在抗剪切和抗噪聲方面表現得不理想。本實驗還繪制了基于小波域的數字水印算法與本文算法提取到的水印NC值對比折線圖,如圖8所示。

圖7 基于小波域水印算法提取的水印圖Fig.7 Watermark image extracted based on wavelet domain watermark algorithm

圖8 NC 值對比折線圖Fig.8 NC value contrast
由折線圖可以看出,本文提出的算法比基于小波域的數字水印算法得到的結果更穩定,且在剪切和噪聲的攻擊下優勢更為明顯。而在抗壓縮和抗濾波方面,兩種算法的差別不大。
基于DCT變換域的圖像盲水印算法,將水印嵌入宿主圖像的中低頻系數部分,保證了圖像的透明性。而在遭受了剪切、加噪、壓縮等攻擊后仍然可以保持比較高的NC值,說明該算法可靠性高,實用性強,合理加以利用,可以有效地解決版權保護難等問題。