方春城,譚忠明,林若波,邢南亮
(1.揭陽職業(yè)技術學院機電工程系,廣東揭陽522051;2.揭陽職業(yè)技術學院圖書館,廣東揭陽522051;3.揭陽職業(yè)技術學院實訓與計算機中心,廣東揭陽522051)
隨著信息技術的發(fā)展和互聯(lián)網(wǎng)技術的廣泛應用,數(shù)字媒體使用越來越廣泛,極易被拷貝、篡改,信息安全越來越顯示其重要性,數(shù)字媒體版權保護也越來越受到人們的重視;加密技術在一定程度上已經(jīng)不能夠滿足信息安全的需求;于是,數(shù)字水印(digital watermarking)技術應運而生[1].水印技術與加密技術不同,前者要求隱蔽載體的改動在感官上是不能感知的,而后者載體的改動在感官上是可以感知的.水印算法按不同嵌入域,可分為變換域和空域[1-2],變換域算法是當前的研究熱點.如根據(jù)人類視覺模型特性的DCT域水印算法等.DCT算法與國際數(shù)據(jù)壓縮標準JPEG(Joint Photographic Experts Group,聯(lián)合圖像專家組)兼容,便于實現(xiàn),應用也較多[3].本文主要討論DCT(Discrete Cosine transformation,離散余弦變換)域的數(shù)字水印算法.
水印信息一般都是具有重要意義的信息,水印信息在嵌入數(shù)字媒體前通常都進行加密預處理,以增強水印信息的安全性.這里主要采用Arnold變換對水印信息進行預處理.該變換的原理是將水印圖像的像素進行有規(guī)律的移動[3-4],直到把水印圖像變換成視覺上無規(guī)則的圖像.Arnold變換的核心思想可以歸納為[3-5]
式(1)中,(X,Y),(X′,Y′)分別代表水印圖像進行Arnold變換前后的像素,N為水印圖像的大?。疚乃捎玫乃D像為40*40的二值圖像,圖1的(a)、(b)、(c)、(d)、(e)、(f)圖分別代表原始水印圖像經(jīng)過1次、2次、3次、5次、20次Arnold變換的水印圖像.通過圖1各圖的比較可以看出,原始水印圖像經(jīng)過5次以上的Arnold變換置亂后開始變得無規(guī)律,從圖中可以看出原始水印圖像像素之間的數(shù)值相關性隨著變換次數(shù)的增加開始下降,在感官上逐漸混亂,從而達到加密的效果.
圖1 原始水印及變換圖
為增強水印的魯棒性和穩(wěn)健性,本算法將水印信息嵌入到載體圖像的DCT域里,選擇DCT系數(shù)的中頻段系數(shù).將載體圖像C進行8*8的圖像分塊并進行DCT變換,取每一塊圖像子塊DCT變換后的系數(shù)(k1(i)+3,k2(i)+2)作為具體的水印信息嵌入位.設定一個嵌入強度因子α,以增強水印信息在提取時的精確度.按照Zizag排列,選擇要嵌入水印信息的DCT系數(shù)L1:(k1(i)+3,k2(i)+2),及其前后的兩個DCT系數(shù)L0:(k1(i)+2,k2(i)+3);L2:(k1(i)+4,k2(i)+1),并計算這三個系數(shù)的均
值mid=,比較L1與mid的大小,以L1大于mid代表信息“1”,L1小于mid代表信息“0”.嵌入步驟如下:
(1)將二值水印圖像W進行Arnold變換,得到置亂的水印信息,并轉換為一維序列M′.
(2)將載體圖像C進行8*8分塊,并進行DCT變換,得到一個二維的DCT變換系數(shù)矩陣.
(3)在每一塊圖像塊中嵌入一位水印信息,采用隨機控制方法選取圖像塊bi,表示第i個信息比特的編碼[2],而且用于控制隨機選取圖像塊的key可以當作該算法的key.
(4)按照Zizag排列,選擇要嵌入水印信息的DCT系數(shù)L1及其前后的兩個DCT系數(shù)L0,L2,計算這三個系數(shù)的均值mid.
(5)選取水印信息比特位Wi,和要嵌入的DCT系數(shù)L1,比較L1和mid的大小,如果Wi=1且L1大于mid,則不用修改DCT系數(shù)L1,否則將L1修改為mid,并加上強度因子α,即L1=mid+a;如果Wi=0且L1小于mid,則不用修改DCT系數(shù)L1,否則將L1修改為mid,并減去強度因子α,即L1=mida.
(6)水印嵌入完畢后,將載體圖像進行IDCT(Inverse Discrete Cosine transformation,離散余弦變換)變換,并得到隱蔽載體C′.
將隱蔽載體圖像C′進行8*8的圖像分塊并進行DCT變換,按照Zizag排列,計算相應的L0、L1、L2三個DCT系數(shù)的均值mid,比較L1與mid的大小關系,以L1大于mid代表信息“1”,L1小于mid代表信息“0”,提取水印信息.提取步驟如下:
(1)將隱蔽載體圖像C′進行8*8分塊,并進行DCT變換,得到一個二維的DCT變換系數(shù)矩陣.
(2)采用隨機控制方法選取圖像塊bi.
(3)按照Zizag排列,求出mid的值,并與L1比較,如果mid大于L1表示信息“1”,反之為“0”,并存于一個一維序列S.
(4)按原始水印的大小,將一維序列S轉換為二維矩陣S′.
(5)對S′進行Arnold反變換,恢復出水印圖像,并保存為二值圖像W′.
隱蔽載體圖像感官質量和水印圖像的評價分別采用峰值信噪比(Peak Signal-to-Noise Ratio,PSNR)和歸一化相關系數(shù)(Normalized Correlation Coefficient,NC)[5-8].峰值信噪比和歸一化相關系數(shù)(NC)的定義[5-8]分別如式(2)、(3).
PSNR=
式中M、N分別表示載體圖像的寬度和高度(以像素為單位);L′和L分別表示隱蔽載體圖像和原始載體圖像的像素.
式中M、N分別表示水印圖像的寬度和高度(以像素為單位);W′和W分別表示提取的水印圖像和原始水印圖像的像素.
本文采用標準圖庫的lena灰度圖像(512*512)作為原始載體C,其灰度級別為256級;以帶“水印”字樣的二值圖像(40*40)作為水印圖像W,進行實驗;將水印圖像進行5次Arnold變換,嵌入強度依次采用α=0.05和α=0.08.α越大,穩(wěn)健性越好,但不可感知性就越差[6].圖2(a)中三個圖像分別表示α=0.05時的隱蔽載體、提取出來的(加密)水印信息及經(jīng)過Arnold反變換后的水印圖像;圖2(b)是α=0.08時的實驗結果.通過實驗可以看出,在保持隱蔽性的前提下,隨著α的增大,兩幅隱蔽載體圖像在感官上的變化不明顯,但PSNR值有所減小,NC值有所增大;從實驗數(shù)據(jù)可以得出,雖然α的增大會降低圖像的質量,但可以提高水印的相似度,即提取的精度.本算法在修改嵌入位DCT系數(shù)時通過比較該位與其鄰近兩個DCT系數(shù)的均值,再進行修改,強度因子α不需要很大就能較好的提取出水印信息.
圖2 α=0.05和α=0.08時的隱蔽載體及提取出來的水印
將隱蔽載體進行攻擊實驗.如加椒鹽噪聲(0.01)、旋轉(20°)、直方圖均衡化、剪切圖像正中間1/4、中值濾波、JPEG攻擊、任意涂改等攻擊.提取出來的水印如圖3所示.受到剪切正中間1/4攻擊和任意涂改攻擊后的隱蔽載體圖像分別如圖4(a)和4(b)所示.將受各種常見攻擊前的PSNR(=44.453 4)和NC(=0.993 1)值(強度因子α=0.08)與表1的PSNR和NC值相比較.當隱蔽載體在受到椒鹽攻擊、旋轉(200)、剪切正中間1/4、任意涂改等四種攻擊時,隱蔽載體的PSNR都小于30dB,其中剪切正中間1/4攻擊甚至小于10dB,但水印的NC值還是大于0.7,仍然能夠恢復出原水印圖像,由此可見,該算法的魯棒性較強.表1列出在不同攻擊方式作用下,水印的提取效果,嵌入強度α=0.08.
圖3 攻擊后提取出來的水印
表1 在不同攻擊方式作用下,水印提取效果,嵌入強度α=0.08
圖4 剪切攻擊與涂改攻擊的隱蔽載體
文獻[2] 給出的是經(jīng)典的DCT水印嵌入算法,該算法通過比較DCT變換中相鄰兩個DCT系數(shù)的大小,并根據(jù)水印信息確定是否交換它們的位置,從而實現(xiàn)水印的嵌入.圖5(a)、5(b)分別為α=0.14時用文獻[2] 算法與本文算法嵌入水印后的隱蔽載體,從兩個圖中可以看出,本文的隱蔽載體隱蔽性比文獻[2] 的隱蔽載體較好.表2為本文算法與文獻[2] 算法的比較,(嵌入強度α=0.14),表2是隱蔽載體的PSNR和水印的NC值,從表2的PSNR值也驗證了這一點.
圖5 分別用文獻[2] 算法與本文算法嵌入水印后的隱蔽載體α=0.14
進一步比較本文算法與文獻[8] 的算法,驗證本文算法的有效性.采用文獻[8] 的水印信息,進行10次Arnold變換,嵌入強度α=0.14.從表3的PSNR值可以看出,在受到攻擊后,本文算法的隱蔽載體的圖像質量差于文獻[8] 的情況.其中受到椒鹽攻擊、旋轉攻擊、中值濾波攻擊后,提取出來的水印歸一化相關系數(shù)都比文獻[8] 的結果明顯大,但抗剪切和壓縮攻擊就稍微差一點;由此可以看出本文的算法在抗常見水印攻擊方法具有較好的魯棒性.文獻[8] 的算法通過計算圖像的灰度均值與方差,并將方差進行排序,選出若干個方差值大的中頻系數(shù)進行水印嵌入.該算法同樣具有較好的魯棒性,但該算法實現(xiàn)較為復雜,而本文算法在實現(xiàn)上比文獻[8] 的算法要簡單得多.
通過以上比較可以看出,本文算法與文獻[2] 比較,其隱蔽性較好,但提取精度要弱一點;與文獻[8] 比較,其魯棒性較好、精度較高.本算法存在的不足是在抗剪切攻擊和JPEG攻擊能力比文獻[8] 的算法要弱些.
本文所設計的算法根據(jù)各個子圖像塊(8*8)的DCT變換系數(shù)進行動態(tài)的調整,自適應修改嵌入位的DCT系數(shù)大小實現(xiàn)水印信息嵌入.同時,采用Arnold變換對水印圖像進行預處理,降低水印信息之間的相關性;另外采用隨機控制方法選取圖像塊,用于控制隨機選取塊的key可以作為該算法的一個密鑰,因此該算法具有“雙重加密”功能,大大提高了算法的安全性.從實驗結果分析可以看出該算法對常見水印攻擊方式具有較好的抗攻擊能力;采用自適應方法,提高水印的魯棒性、穩(wěn)健性和提取效果.
表2 本文算法與文獻[2] 算法比較,α=0.14
表3 本文算法與文獻[8] 的算法比較,嵌入強度α=0.14
[1] 方春城.基于WEB的信息隱藏設計與應用[D] .廣州:中山大學,2010:6-11.
[2] 王麗娜,郭遲,李鵬.信息隱藏技術實驗教程[M] .武漢:武漢大學出版社:2004:194-207.
[3] 丁镠,程顯毅,徐波.DCT域加密自適應數(shù)字水印算法[J] .計算機應用研究,2009,26(12):4768-4770.
[4] 丁瑋,閆偉齊,齊東旭.基于Arnold變換的數(shù)字圖像置亂技術[J] .計算機輔助設計與圖形學學報,2001,13(4):338-341.
[5] 趙峰,袁東風.基于DCT域的數(shù)字紋理圖像置亂評價方法[J] .吉林大學學報:信息科學版,2008,26(1):27-30.
[6] 黃武輝,劉海英,齊影虹.一種基于DCT的水印算法及其實現(xiàn)[J] .電腦知識與技術,2009,5(10):2696-2698.
[7] 袁修貴,周振.一種新的基于DWT、DCT和SVD的魯棒水印算法[J] .計算機工程與科學,2011,33(1):112-115.
[8] 閆麗君,康寶生,岳曉菊.改進的基于DCT的自適應水印算法[J] .計算機工程與應用,2011,47(8):197-200.