王麗麗
目前數(shù)字水印的研究重點包括水印的預處理和水印的嵌入算法兩方面。常用的算法分為空間域法和變換域法。典型的空間域法有最低有效位算法、兩分法、Patchwork方法等[1]。典型的變換域算法有離散余弦變換[2]、離散小波變換[3]等算法。變換域算法對于空域算法來說,具有更強的魯棒性,能夠更好的抵抗常見圖像處理和幾何變換的攻擊。
嵌入圖像數(shù)字水印面臨的兩個問題:
(1)嵌入水印圖像的魯棒性和水印信息不可見性的平衡。一般來說,嵌入水印強度越大,載體圖像的魯棒性越強,但同時影響到載體圖像質量,使水印圖像不可見性降低;要使水印信息能較好的隱藏在載體圖像中,嵌入的水印強度必然會降低,但會影響圖像的不可見性。圖像遭到攻擊后,提取出的水印會無法識別。因此算法對于魯棒性和不可見性的平衡,在水印嵌入過程中要綜合考慮。
(2)水印算法的安全性問題,即攻擊者獲取嵌入信息的能力。
Contourlet變換[4]具有多方向特性,能夠較好的描述圖像的輪廓和方向性紋理信息,克服了小波變換后圖像僅有三個方向的缺點,將圖像更多的細節(jié)信息通過多方向特性表現(xiàn)出來。在嵌入水印信息時,能夠將水印信息隱藏在更多的細節(jié)信息中,增強了嵌入水印圖像的透明性和抗攻擊性能。本文提出了基于Contourlet域能量和交換系數(shù)的圖像水印算法,通過計算圖像分解后的能量大小,確定嵌入水印的方向子圖,并通過交換系數(shù)的嵌入算法,將水印信息嵌入載體圖像。該算法在保證圖像不可見性的同時,具有較強魯棒性,而且嵌入過程中多個密匙組成的密匙空間保證了水印系統(tǒng)的安全性。
圖像經(jīng)過Contourlet變換后,經(jīng)過兩層LP分解和DFB多方向分解,產(chǎn)生了一個低頻子帶和多個方向子帶。由于這唯一的一個低頻子帶是圖像的逼真子帶,含有圖像的重要信息不適合嵌入水印。否則容易引起圖像的失真而被人感知。本文將水印信息嵌入第二層分解后能量最大的細節(jié)子帶。這樣嵌入水印后的載體圖像對 JPEG 壓縮和普通的圖像處理如直方圖均衡化、改變圖像亮度等具有較好的魯棒性,并且具有很好的透明性,很好地協(xié)調(diào)了魯棒性與不可見性的矛盾[5]。
下面是將水印信息通過交換系數(shù)的方式嵌入Contourlet分解的第一層 4個方向子塊中能量最大的子塊和第二層 4個方向子塊中能量最大的子塊的效果圖,如圖1所示:
圖1 水印信息嵌入Contourlet分解的第一層4個方向子塊中能量最大的子塊中
從圖1中可以明顯看到嵌入水印后的圖像質量下降,影響了圖像的視覺效果。如圖2所示:
圖2 水印信息嵌入Contourlet分解的第二層4個方向子塊中能量最大的子塊中
可以看出,圖像分解兩層后再將水印信息嵌入,就能夠滿足不可見性的要求,所以本文將圖像進行了Contourlet變換的兩層分解。
以大小為M×N的灰度圖像A作為載體圖像,大小為p×q的二值圖像B作為水印信息,來描述水印嵌入算法。步驟如下:
(1)將原始的載體圖像進行 Contourlet分解,分解層數(shù)為兩層,每一層分解的方向數(shù)均為四個方向。分解層數(shù)和每層分解的方向數(shù)可以作為水印嵌入算法的兩個密匙。
(2)分別計算 Contourlet分解的第二層的四個方向的圖像的能量大小,在能量最大的方向圖上嵌入水印。記能量最大的方向圖為A3maxE,大小為m×n。圖像能量的計算公式如公式(1):
其中,Ek和Ak(i,j)分別為Contourlet分解的第二層的第k個方向的能量和像素值大小。
選擇低頻系數(shù)嵌入水印,能夠使嵌入水印的圖像具有較好魯棒性,但是,會降低載體圖像的不可見性,而高頻系數(shù)嵌入水印,使得載體圖像具有較好的不可見性,但是魯棒性較差。為了同時滿足嵌入水印的載體圖像的不可見性和魯棒性,算法在嵌入水印的位置上選擇了Contourlet分解后第二層能量較大的方向。
由于嵌入水印后,圖像的能量值發(fā)生變化,再次分解計算這4個方向圖能量大小時,不一定是嵌入水印選擇的那個方向圖的能量仍為最大。所以,在此算法嵌入過程中,需要記錄選擇的是哪個方向圖,以此作為嵌入算法的第三個密匙保存。
(3)將A3maxE分塊,塊個數(shù)為(m× n)/(p× q),塊大小為d1×d2。
(4)通過交換系數(shù)[6]的嵌入方法,將水印信息嵌入載體圖像中,具體步驟如下:
第一:選擇每一塊的兩個固定位置的系數(shù),記為L1,L2。選擇固定位置的系數(shù)是為了實現(xiàn)盲水印提取,即提取水印圖像時不需要原始的水印圖像;
第二:將L1和L2做差,k為設定的嵌入強度,當時,分為兩種情況:①若嵌入的水印像素值為0,如果L1<L2,交換L1和L2,如果L1≥L2,L1和L2的位置保持不變;②若嵌入的水印像素值為 1,如果L1>L2,交換L1和L2,如果L1≤L2,L1和L2的位置保持不變。當時,L1和L2的位置保持不變。
其中嵌入強度k的設定,是根據(jù)選擇的圖像本身和所選擇的嵌入算法確定,在后面的仿真實驗中選擇的嵌入強度k=20。
(5)對嵌入水印后的方向子圖和其它方向子圖一起進行Contourlet逆變換,得到嵌入水印信息的載體圖像。對于嵌入水印后的載體圖像的質量除了人眼主觀評價外,還采用了峰值信噪比psnr對圖像質量進行了評價。
圖像數(shù)字水印的提取過程是將嵌入載體圖像的水印信息恢復出來,提取出來水印信息效果的好壞一般除了人眼是否能夠辨別外,還可通過計算歸一化相關系數(shù)NC值來衡量。提取算法是嵌入算法的逆過程,算法步驟如下:
(1)對嵌入水印的載體圖像進行Contourlet變換分解,分解層數(shù)為2層,每一層分解的方向數(shù)均為4個方向。由于Contourlet分解的層數(shù)和每層分解的方向數(shù),都已經(jīng)在嵌入算法中作為兩個密匙保存,如果不能正確得到這兩個密匙,也就無法正確提取出水印信息。
(2)根據(jù)在水印嵌入算法中保存的第三個密匙,確定水印信息嵌入的子帶,并對該子帶進行分塊。分塊的大小和嵌入算法時載體圖像的分塊大小一致。
第三個密匙確定了水印信息嵌入子帶,若無法正確得到第三個密匙,那么也就不能準確得到該子帶,選擇其余水印信息并不存在的子帶進行水印提取,必然無法提取出水印信息。
(3)選擇每一塊的兩個固定位置系數(shù)L1,L2,這兩個系數(shù)的位置和嵌入時是一致的。然后進行水印提?。罕容^L1和L2大小,若 L1>L2,則提取數(shù)值為0,否則,提取數(shù)值為1。
(4)將提取出的0-1序列重新排列,從而得到提取的二值水印信息。
對于提取的水印信息不僅能通過主觀的評判,還能通過計算客觀評價標準,相似度NC值來評判提取出的水印信息的效果,NC越接近1,說明提取的水印信息和原始嵌入的水印信息越接近,提取的效果越好。
本算法在Matlab 7.0平臺上運行,原始的載體圖像采用256× 256的“l(fā)ena.bmp”灰度圖像,原始的水印圖像為32× 32的“XD.bmp”二值水印圖像如圖3所示:
圖3 圖像水印的嵌入和提取
圖3是嵌入水印的載體效果圖及對載體圖像無任何攻擊情況下提取的水印信息。從效果圖和客觀評價標準可以看出,提出的水印嵌入算法具有較高的不可見性,lena圖像的峰值信噪比psnr=40.4594dB ,并且在載體圖像沒有受到任何攻擊的情況下,能夠完整的提取出嵌入的水印信息,其相似度NC=1,說明該算法具有較好的不可見性和可逆性。
對嵌入水印的載體圖像進行各種常見的圖像處理和幾何變換的攻擊,再從被攻擊后的圖像中提取水印信息。圖3.2~3.10是對載體圖像進行各種攻擊和從受到攻擊的載體中提取出的水印的實驗結果圖。
(1)JPEG壓縮
如圖4所示:
圖4 JPEG壓縮
圖4(a)是對嵌入水印的載體圖像進行JPEG壓縮后的圖像,壓縮過程中圖像的品質會遭到破壞,從而響圖像的視覺效果,也會破壞其中的水印信息。圖4(b)是從被壓縮的圖像中提取出來的水印圖像。從JPEG壓縮后的載體圖像中提取出的水印圖像和原始水印圖像的NC值為0.7398,基本可以辨別出原始的水印信息。
(2)椒鹽噪聲
椒鹽噪聲是由傳感器,傳輸信道,解碼處理等產(chǎn)生的黑白相間的亮暗點噪聲。給載體圖像加入椒鹽噪聲,易對水印信息噪聲干擾,從而影響水印的提取,如圖5所示:
圖5 椒鹽噪聲
圖5(a)是對原始載體圖像增加了椒鹽噪聲,圖5(b)是從加噪的載體圖像中提取出來的水印信息。提取水印和原始水印圖像的NC值為0.7425。
(3)高斯噪聲
所謂高斯噪聲是指它的概率密度函數(shù)服從高斯分布(即正態(tài)分布)的一類噪聲。高斯噪聲與椒鹽噪聲類似,給載體加入高斯噪聲,會干擾其中的水印信息,影響正常的水印信息提取,如圖6所示:
圖6 高斯噪聲
圖6(a)是對原始載體圖像增加了高斯噪聲,圖6(b)是從加噪的載體圖像中提取出來的水印信息。提取水印和原始水印圖像的NC值為0.8831。
(4)高斯低通濾波
實質上是一種信號的濾波器,用于信號的平滑處理。由于本文算法是將水印信息嵌入到圖像Contourlet分解后的細節(jié)子帶中,高斯低通濾波處理的就是高頻細節(jié)子帶,從而會將一部分水印信息除去,增加水印信息提取的難度,如圖7所示:
圖7 高斯低通濾波
圖7(a)是對原始載體圖像進行了高斯低通濾波處理,圖7(b)是從濾波后的載體圖像中提取出來的水印信息。盡管提取的水印信息受到了一些干擾,但基本可以識別,并且提取水印和原始水印圖像的NC值達到了0.7147,所以,本文算法能夠有效的抵抗高斯低通濾波。
(5)直方圖均衡化
直方圖均衡化是通過對比度拉伸對直方圖進行調(diào)整,從而擴大前景和背景灰度的差別,以達到增強對比度的目的。均衡化后圖像的灰度級減少,使某些細節(jié)消失,而水印信息嵌入的高頻部分正好對應載體圖像的細節(jié)。所以,直方圖均衡化會干擾對水印信息的提取,如圖8所示:
圖8 直方圖均衡化
圖8(a)是對原始載體圖像進行了直方圖均衡化處理,圖8(b)是從處理后的載體圖像中提取出來的水印信息。提取水印和原始水印圖像的NC值為0.9579,提取的水印信息和原始水印信息基本上相同。
(6)圖像增亮與變暗
圖像增亮是將原始載體圖像的灰度范圍壓縮到較高的部分,圖像變暗是將圖像灰度范圍壓縮到較低的部分,如圖9所示:
圖9 圖像增亮
圖9(a)是將圖像的灰度范圍壓縮到[0.4,1]的范圍內(nèi)后的載體圖像,圖9(b)是從壓縮灰度后的載體圖像中提取出來的水印信息。提取水印和原始水印圖像的 NC值為1.0000,如圖10所示:
圖10 圖像變暗
圖10(a)是將圖像的灰度范圍壓縮到[0,0.85]的范圍內(nèi)后的載體圖像,圖10(b)是從壓縮灰度后的載體圖像中提取出來的水印信息。提取水印和原始水印圖像的 NC值為1.0000。從提取水印的效果圖和NC值可以看出,嵌入水印的載體圖像進行增亮和變暗的處理,對水印信息沒有任何的損失,還是能夠完全提取出原始的水印信息。
(7)增加圖像對比度
此方法可以分成兩類:直接對比度增強方法和間接對比度增強方法。前面的直方圖均衡化屬于間接對比度增強,而增加圖像對比度屬于直接對比度增強。通過改變載體圖像的對比度,能夠去除圖像中的一部分水印信息,如圖11所示:
圖11 增加圖像對比度
圖11(a)是對通過對原始載體圖像的灰度范圍進行壓縮,從而增加載體圖像的對比度,灰度壓縮范圍為[0.2,0.8]。圖11(b)是從增加了對比度的載體圖像中提取出來的水印信息,提取水印和原始水印圖像的NC值為0.8575。
(8)裁剪圖像
對嵌入水印信息的載體圖像進行裁剪,必然會丟失這部分嵌入的水印信息,從而提高提取水印信息的難度,如圖12所示:
圖12 裁剪圖像
圖12(a)是對原始載體圖像進行了隨機的裁剪,圖中白色的部分是被裁減過的部分,圖12(b)是從被裁減的載體圖像中提取出來的水印信息。提取水印和原始水印圖像的NC值為0.7249。從數(shù)值和提取出的水印的效果圖可以看出,本文算法對裁剪具有較好的抵抗性。如表1所示:
表1 載體圖像受攻擊后的客觀性能分析
從表1中可以看出,各個受攻擊圖像中,嵌入水印的載體圖像的psnr值小了很多,圖像在受到攻擊后能量損失較多,嵌入其中的水印信息也必然受到損失。但是,本算法從受攻擊后的圖像中提取的水印仍然具有較好的辨識度以及較高的NC值,全部都在0.7以上,屬于人眼可以接受的差異。
本文提出了一種基于Contourlet域能量和交換系數(shù)的圖像水印算法,對圖像進行Contourlet變換的兩層LP分解,并對第二層分解的系數(shù)進行四個方向的多方向變換,形成四個方向子帶,通過計算每個子帶圖像的能量,確定水印嵌入的子帶,并且通過交換系數(shù)的嵌入算法,將水印信息嵌入載體圖像。該算法特點如下:
(1)以二值圖像作為水印,使水印信息更具直觀性和可理解性。
(2)在水印檢測過程中不需要原始水印圖像,實現(xiàn)了盲水印提取。
(3)嵌入?yún)^(qū)域的選擇。Contourlet分解可以將圖像進行多個尺度和多個方向的分解,選擇嵌入?yún)^(qū)域至關重要。算法通過對分解子帶圖像計算能量值的方式選擇嵌入的子帶。實驗證明,在選擇的子帶中嵌入水印圖像能夠使載體圖像具有更好的不可見性和魯棒性。
(4)基于交換系數(shù)的嵌入算法。在選擇的子帶中嵌入水印信息的過程是通過交換子帶系數(shù)來實現(xiàn)的。實驗證明算法能夠抵抗多種常見圖像處理和幾何變換的攻擊,具有較強的魯棒性。
(5)在水印信息嵌入過程中,算法保存了 Contourlet分解載體圖像的層數(shù)、每層分解的方向數(shù),以及嵌入水印信息選擇的子帶三個密匙,所以具有較高的安全性。
[1]金聰.數(shù)字水印理論與技術[M].北京:清華大學出版社.2008.50-72.
[2]劉方.變換域加密圖像數(shù)字水印算法研究[D].山東師范大學碩士學位論文.2009,5.
[3]吳玲玲.變換域數(shù)字水印技術研究[D].南京信息工程大學碩士學位論文.2009,5.
[4]李海峰,宋巍巍,王樹勛.基于 Contoudet變換的穩(wěn)健性圖像水印算法[J].通信學報.2009,27(4).87-94.
[5]梁棟等.基于非抽樣 Contourlet變換的彩色圖像數(shù)字水印算法[J].光學學報.2008,28(8).1469-1474.
[6]汪曉華.基于小波域的二值圖像數(shù)字水印算法研究[D].西北大學碩士學位論文.2009,7.