王景中,張哲銘
(北方工業(yè)大學(xué) 信息工程學(xué)院,北京 100144)
計算機和網(wǎng)絡(luò)技術(shù)迅猛發(fā)展,信息媒體的數(shù)字化使得信息的使用和傳播更加便利和快捷,但是另一方面數(shù)字產(chǎn)品的不安全性也變得越來越嚴(yán)重,如:非法復(fù)制,篡改等。所以利用數(shù)字水印來保護(hù)多媒體產(chǎn)品已經(jīng)成為信息安全保護(hù)技術(shù)的一個重要的分支。此項技術(shù)的研究的目的是在原創(chuàng)作者的作品中添加不可見的標(biāo)記,用來對作品所有者的所有權(quán)益進(jìn)行保護(hù)。
根據(jù)嵌入域不同,水印算法大體分為空域和變換域兩種,變換域水印算法嵌入的水印信息較空間域大,并且具有良好的魯棒性,因此成為水印算法研究的主流方向。近些年來,有關(guān)奇異值分解SVD(singular value decomposition)的數(shù)字水印的方案引起了人們的關(guān)注。
在國內(nèi)Liu和Tan最早提出基于奇異值分解的數(shù)字水印的方案,之后又有許多專家和學(xué)者在這些理論的基礎(chǔ)上改進(jìn)了SVD奇異值分解算法,比如:DCT-SVD域、DFTSVD域等。大部分文獻(xiàn)中提出了保留了與水印相關(guān)的矩陣U和V,但是左右矩陣與提取的水印之間存在很大的相關(guān)性,即使能提出來水印,也存在相當(dāng)大的虛警率,文獻(xiàn)[1]提出了利用SVD在小波分解中的應(yīng)用,基于分塊自適應(yīng)技術(shù)實現(xiàn)數(shù)字水印嵌入和提取,有比較好的魯棒性,文獻(xiàn)[2]提出了利用載體圖像SVD正交分解的U矩陣和嵌入圖像的U矩陣的相似性作為判斷條件。文獻(xiàn)[3]還提出一種結(jié)合人類視覺技術(shù)計算嵌入強度,實現(xiàn)水印信息嵌入。有些算法沒有對數(shù)字水印做預(yù)處理,同時也沒考慮到HVS,所以存在缺陷[4],在文獻(xiàn)[5]中著重研究了水印信息預(yù)處理過程,提出了一種圖像分塊后像素值方差和像素點與4鄰域灰度差值相結(jié)合的最佳置亂度計算方法,實驗證明置亂程度與主觀視覺效果一直,文獻(xiàn)[6]創(chuàng)新的提出了對原始載體圖像分塊做DCT變換處理,將每個分塊的AC(直流分量)將組成一個新的矩陣SVD分解后,將水印信息嵌入其中。
考慮到水印圖像各像素點之間存在緊密的相關(guān)性,為了避免圖像線性密碼攻擊,將圖像按照一定規(guī)律將圖像進(jìn)行置亂。
本文首先對水印進(jìn)行置亂預(yù)處理來增加水印的安全性,這里采用了著名的數(shù)學(xué)家Arnold在研究遍歷理論是提出的Arnold變換。
Arnold變換如下方法:
實現(xiàn)圖像中任意給定位置(x y)1≤x,y≤N,這里的N指的是圖像的高或者寬,該變換表達(dá)式滿足,其目的是加密后的圖像通過變換后可恢復(fù)出原圖像。其中(x y)和(x′y′)滿足:
選取合適的參數(shù)是為了提高圖像置亂加密的安全性,可以避免線性密碼攻擊。
假設(shè)C=M*N矩陣,U是M*M矩陣,其中U的列為CCT的正交特征向量,V為N*N的矩陣,其中V是CCT的特征向量,再假設(shè)r為C矩陣的秩,則存在奇異值分解:
其中CCT和CTC的特征值相同,為λ1…λr
其余的元素為0,如圖1所示:
圖1 SVD奇異值公式分解Fig.1 SVD singular value formula decomposition
式中,U∈RM*M,V∈RN*N是正交陣,S是 ∈RM*N是非對角線上的元素都為 0 的矩陣,S=diag(l1,l2,l3,…lr),其元素滿足l1>l2>l3>,…lr。
從數(shù)學(xué)的角度分析:CCT和CTC的特征值相同,說明特征值在矩陣變換過程保持穩(wěn)定。
從圖像的角度分析:奇異值具有較強的穩(wěn)定性,圖像奇異值體現(xiàn)圖像信息的內(nèi)蘊特性,圖像發(fā)生較小變化時,圖像奇異值不會發(fā)生較大變化而且圖像的視覺效果依然很好,旋轉(zhuǎn)、縮放、平移等幾何攻擊不會使圖像的奇異值有太大的影響。這樣利用圖像的奇異值分解嵌入水印信息可以減少圖像失真和提高圖像的不可見性和魯棒性。
JPEG對圖像壓縮的核心算法是DCT變換編碼,為了適應(yīng)用于單色圖像或者彩色圖像,JPEG對每一個圖像分量單獨編碼。對于JPEG壓縮前和壓縮后的圖像的比值,我們稱之為JPEG壓縮比,利用JPEG壓縮比可以對圖像一小塊圖形進(jìn)行分析和處理。JPEG提供了4種工作模式:
1)順序編碼。每一個圖像分量按從左到右,從上到下掃描,一次掃描完成編碼。
2)累進(jìn)編碼。圖像編碼需多次掃描完成,圖像有粗糙到清晰。
3)無失真編碼。保證解碼后完全精確地恢復(fù)源圖像的采樣值。
4)分層采樣。圖像在多個空間分辨率進(jìn)行編碼。
因此不同的工作模式,不同的壓縮比也不一樣,針對不同的壓縮比,在數(shù)字水印嵌入過程中采用不同的嵌入調(diào)節(jié)因子,使嵌入水印后的圖像產(chǎn)生良好的視覺效果。
首先對圖像進(jìn)行預(yù)處理,將圖像區(qū)域劃分為L*L個互不重疊的子塊,然后通過JPEG壓縮比計算嵌入強度。
由于JPEG對圖像的壓縮有很大的伸縮性,圖像質(zhì)量與比特率的關(guān)系如下:
1)1.5~ 2.0 比特/像素:
與原始圖像基本無區(qū)別,仿真調(diào)節(jié)因子為1.3
2)0.75 ~ 1.5比特/像素:
圖像質(zhì)量很好,仿真調(diào)節(jié)因子為1.2
3)0.5 ~ 0.75比特/像素:
圖像質(zhì)量比較好,仿真調(diào)節(jié)因子為1.0
4)0.25~0.5比特/像素:
圖像質(zhì)量一般,仿真調(diào)節(jié)因子為0.8
1)將水印圖像置亂,經(jīng)過兩次小波分解后獲取二階低頻分量,并將其進(jìn)行cdma編碼調(diào)制。
2)將原始載體圖像,分解成互不重疊的8×8的圖像塊,并對圖像塊進(jìn)行DCT變換,然后在做SVD奇異值分解,選取分解的S矩陣,同時通過JPEG壓縮特性計算分塊的調(diào)節(jié)因子。
3)將水印調(diào)制后的 CDMA 序列按照公式(5)、公式(6)加入到載體圖像的每個分塊的分解后的S矩陣中去。
S′為嵌入水印后圖像的S矩陣,S為原始圖像的S矩陣,cdma為水印信息cdma調(diào)制的信息。
1)將嵌入水印后的圖像分塊提取,每個8*8的圖像塊做DCT變換、SVD分解選取S_em矩陣 。
2)S_em與原始圖像DCT變換,SVD分解的S矩陣按照公式(7)、公式(8),提取 cdma 序列。
圖2 水印嵌入算法流程圖Fig.2 Watermark embedding algorithm flow diagram
3)將cdma序列還原成比特流序列,然后反DWT重構(gòu)提取的水印圖像。
按照水印置亂的計算出水印圖像W’。用歸一化相關(guān)系數(shù)NC檢查水印的相似度
圖3 水印提取算法流程圖Fig.3 Watermark extraction algorithm flow diagram
為了檢驗本算法的可行性,采用在Matlab 2011a版本平臺上做仿真實驗。本算法使用的圖片是512*512的lena.bmp灰度圖像(如圖4所示)和64*64的水印圖像(如圖5所示)。
圖4 載體圖像Fig.4 Carrier image
圖5 嵌入水印后圖像Fig.5 Watermarked image
圖6 水印圖像Fig.6 Watermarking images
圖7 原始圖像提取Fig.7 Extracted watermark
圖8 放縮30%攻擊Fig.8 Scaling attack(30%)
圖9 旋轉(zhuǎn)90度Fig.9 Rotation(90°)
嵌入水印后圖像的PSNR=35.03 dB。在為受到攻擊的情況下,能夠完全正確的提取水印的NC=0.937 7。
為了檢測算法的魯棒性,本算法使用StirMarkBenchnark對嵌入水印的后的圖像分別進(jìn)行了JPEG壓縮、PSNR加噪、Rescale放縮、Rotation旋轉(zhuǎn)、中值濾波等。采用峰值性噪比(PSNR)來衡量提取水印圖像和原始水印的相關(guān)性。用歸一化互相關(guān)系數(shù)(NC)來衡量提取水印和原始水印的相關(guān)性。
圖10 JPEG壓縮Fig.10 JPEG compression
圖11 中值濾波攻擊Fig.11 Median filtering attack
圖12 剪切75%Fig.12 Cutting(75%)
圖13 加噪90%Fig.13 Add Noising(90%)
圖14 旋轉(zhuǎn)剪切Fig.14 Rotating cutting
實驗結(jié)果見表1.
圖15 PSNR攻擊Fig.15 PSNR attack
表1 圖像水印的相關(guān)攻擊測試結(jié)果Tab.1 image watermark attack test results
對嵌入水印的圖像加各種攻擊:PSNR (如圖15所示)、JPEG壓縮(如圖 10)、添加噪聲(如圖 13所示)、濾波(如圖11所示)、縮放(如圖 8所示),旋轉(zhuǎn)(如圖 9所示),剪切(如圖12所示),旋轉(zhuǎn)剪切(如圖14所示)等,從表1可以看出本算法對JPEG壓縮、添加噪聲、濾波、放縮、旋轉(zhuǎn)等具有較高的魯棒性。盡管在攻擊下提取水印信息有一定的干擾,但是人眼還能較好的分辨出水印信息,從而說明本算法保持水印信息具有較好的魯棒性。
本文算法借鑒了以往論文利用圖像奇異值分解特征值強穩(wěn)定性在圖像經(jīng)過離散小波變換后的圖像中完成了水印的嵌入和提取過程。本算法的優(yōu)點是在水印圖像二階小波分解基礎(chǔ)上,將低頻子帶區(qū)域信息嵌入到原始載體圖像經(jīng)過奇異值分解后的S矩陣中,同時根據(jù)圖像的源圖像的壓縮比等圖像的相關(guān)特性選擇最佳的調(diào)節(jié)因子,對水印圖像小波變換的低頻分量進(jìn)行cdma編碼調(diào)制,提取水印時采用cdma解調(diào)解碼使之增加圖像的魯棒性和安全性,此外,本算法屬于非盲提取。
[1]趙敏,王慧琴,盧麟.基于分塊SVD自適應(yīng)數(shù)字水印算法[J].計算機工程與設(shè)計,2011,32(4):84-86.ZHAO Xia,WANG Hui-qin,LU Ling.Adaptive digital watermarking algorithm based on block and SVD[J].Computer Engineering and Design,2011,32(4):84-86.
[2]錢華明,于鴻越.基于SVD-DWT域數(shù)字圖像水印算法[J].計算機仿真,2009,26(8):457-459.QIAN Hua-ming,YU Hong-ji.Digital image watermarking algorithm based on the SVD-DCT[J].Computer simulation,2009,26(8):457-459.
[3]徐慕容,樊鎖海.一種新的基于奇異值分解的圖像數(shù)字水印算法[J].計算機仿真,2011,28(5):291-341.XU Mu-rong,F(xiàn)AN Suo-hai.A new image watermarking algorithm based on[J].Computer simulation,2011,28 (5):457-459
[4]肖俊,王穎.基于塊奇異值分解的水印算法研究[J].中國科學(xué)院研究生院學(xué)報,2006,23(3):207-209.XIAO Jun,WANG Yin. Block-based SVD of the watermarking algorithm[J].Graduate School Journal of the Chinese Academy of Sciences,2006,23(3):207-209.
[5]黃永良.二值圖像Arnold變換的最佳置亂[J].計算機應(yīng)用,2009,40(2):66-69.HUANG Yong-liang.The best image scrambling degree of binary on Arnold transform.Journal of Computer Application,2006,23(3):207-209.
[6]王奔.基于DWT-DCT-SVD的圖像數(shù)字水印算法 [D].北京:北京郵電大學(xué),2010:203-205.