李偉岸,熊祥光,夏道勛
(貴州師范大學大數據與計算機科學學院,貴州 貴陽 550001)
隨著信息和網絡技術的飛速發展,多媒體數字產品在計算機網絡和移動網絡上大量傳播,給人們的日常工作和生活帶來了極大的便利,提高了工作效率。然而,多媒體數字產品具有修改容易和修改不易被察覺等特點,極易被篡改及出現盜版、侵權等行為,已成為多媒體信息安全領域關注的焦點,而數字水印技術正是解決該問題的一項有效技術。目前,眾多學者已提出許多穩健的數字水印算法來解決這些問題。在數字水印領域,根據是否將水印信號嵌入到載體信號中,水印技術被劃分為非零水印技術[1 - 10]和零水印技術[11 - 13]2類。當前研究人員主要研究的是非零水印技術,其基本過程是先對載體信號進行某種變換,之后在頻域嵌入水印信號。常見的變換域有離散余弦變換、離散小波變換和離散傅里葉變換等。
近年來,基于奇異值分解設計的數字水印算法具有較好的不可感知性和抗攻擊能力。但是,與Schur分解相比,奇異值分解計算復雜度較高,尤其是對大圖進行奇異值分解的速度較慢。2011年,劉鵬等[1]基于Contourlet域和Schur分解混合域提出一種新的數字水印算法,采用量化方法嵌入水印信號。實驗結果表明,該水印算法具有較好的不可感知性和抗攻擊的能力,與奇異值分解算法相比,嵌入水印和提取水印的速度都較快。Su等[2]在Schur域采用關系嵌入方法將彩色水印圖像嵌入到彩色載體圖像中,實驗結果表明,該方法具有抵抗常規信號處理攻擊的能力。劉凡等[3]在Schur域采用量化嵌入方法嵌入水印信號,實現了盲提取,具有較好的不可感知性和魯棒性。王曉紅等[4]提出一種基于QR碼和Schur分解的感興趣區域盲水印算法,采用自適應嵌入方法嵌入水印信號,具有較好的抗攻擊能力。王春霞等[5]在離散小波變換和Schur分解混合域中嵌入水印信號,能抵抗常規信號處理和打印掃描攻擊。Su等[6]基于Schur分解提出一種改進的彩色圖像水印算法,與文獻[2]方法相比,不可感知性和抗攻擊能力都有所提高。孫彥飛等[7]在Schur分解和Radon混合域提出一種能抵抗旋轉攻擊的彩色圖像水印算法,采用量化方法嵌入水印信號,具有較好的不可感知性和抗攻擊能力,但是該算法需要進行非下采樣Contourlet變換、Schur分解、Radon變換和幾何校正等運算,算法的計算復雜度相對較高。郭鵬飛等[8]在冗余離散小波變換和Schur分解混合域中采用量化嵌入方法嵌入水印信號,對常規信號處理攻擊具有較好的抵抗能力。Liu等[9]基于Schur分解和量化嵌入方法嵌入水印信號,具有較好的不可感知性和魯棒性。Su等[10]基于Schur分解,同時采用量化和關系嵌入方法嵌入水印信號,具有良好的魯棒性。
為進一步提高水印算法的魯棒性能,本文結合混沌置亂和Schur分解的優點,提出一種基于Schur分解的彩色圖像魯棒水印算法,采用量化嵌入方法嵌入水印信號,實現了盲提取。實驗結果表明,嵌入水印后的隱秘圖像具有較好的不可感知性,對多種攻擊具有較強的魯棒性。
本文的組織結構如下:第2節簡要闡述Schur分解;第3節詳細闡述本文提出的彩色圖像加密算法、水印嵌入和提取算法;第4節對提出的算法進行仿真實驗,并與相似算法進行性能比較;第5節對全文進行總結。
Schur分解作為一種常見的數學方法,在矩陣理論分析中具有非常重要的意義。對任一矩陣A∈Rn×n,則存在一個酉矩陣U∈Rn×n和一個上三角矩陣T∈Rn×n使得A=U×T×UT(符號T表示轉置運算),且矩陣T的主對角線元素是矩陣A的特征值[1]。Schur分解具有Schur向量子空間不變性、縮放不變性、擾動穩定性和計算復雜度低等特性[13]。
(1)Schur向量子空間不變性。假設u1,u2,u3,…,un是矩陣U的列向量,稱ui(i=1,2,3,…,n)為Schur分解向量。由A×U=U×T可知Schur向量子空間具有不變性。
(2)Schur向量縮放不變性。當對矩陣A進行放大或縮小倍數時,僅特征值被放大或縮小相同的倍數,Schur向量具有縮放不變性。
(3)擾動穩定性。當矩陣A受到輕微的擾動時,Schur分解后矩陣T的元素變化不大,具有一定的穩定性。
(4)計算復雜度低。奇異值分解作為一種經典的矩陣分解方法,計算復雜度為O(11n3),Schur分解的計算復雜度僅為O(8n3/3)。因此,與奇異值分解相比,在計算復雜度方面Schur分解具有更優越的性能。
因為Schur分解具有上述重要性質,所以采用Schur矩陣分解來設計新型的魯棒水印算法,不僅計算復雜度低,運算速度快,而且抗攻擊的能力也較強。
為提高嵌入水印圖像和算法的安全性能,需對水印圖像進行加密處理。為了簡單,本文選擇Logistic映射產生混沌信號,其動力學方程為:
xk+1=μxk(1-xk),k=0,1,2,3,…
(1)
其中,xk∈(0,1),當μ∈(3.5699,4]時該映射處于混沌狀態。
基于Logistic混沌映射和Arnold置亂,對彩色水印圖像進行加密的主要過程如下所示:
步驟1讀入彩色水印圖像,將彩色水印圖像的3個分量進行分離。
步驟2對每一個分量進行Arnold置亂。
步驟3選擇Logistic混沌映射的初值,利用式(1)生成混沌序列xk。
步驟4按式(2)將序列xk轉換到[0,255]:

(2)

步驟5按式(3)將序列yk轉換為二值序列:
(3)
步驟6將置亂后每個分量的每個像素轉換為8 bit的二進制序列,利用ek對得到的序列進行異或運算,得到待嵌入的水印信號。
需對提取的水印信號進行解密時,大致過程與加密過程相同,先進行異或解密,再進行Arnold逆置亂即可。
本文提出的彩色圖像水印算法是基于Schur分解將彩色水印圖像嵌入到彩色載體圖像中,水印嵌入算法流程如圖1所示。

Figure 1 Flow chart of watermarking embedding algorithm圖1 水印嵌入算法流程圖
水印嵌入算法主要步驟如下所示:
步驟1水印圖像加密。讀入彩色水印圖像W,采用3.1節的方法對彩色水印圖像W進行預處理得到最終待嵌入的3個二值水印信號。為了方便,分別將彩色水印圖像中的一個分量嵌入到彩色載體圖像的一個分量中。
步驟2圖像分塊。讀入待嵌入水印信號的原始彩色圖像I,將其分離為3個分量R,G和B。根據待嵌入水印信號的彩色圖像與原始彩色水印圖像的大小,計算圖像分塊大小并對每個分量進行不重疊分塊Hh,k(表示第h個分量的第k個分塊,h∈{R,G,B})。仿真實驗時選擇的原始彩色圖像大小為512×512×3,原始的彩色水印圖像大小32×32×3,因此圖像分塊大小設置為4×4。
步驟3選擇分塊。對于大小為512×512×3的彩色圖像,將其分成大小為4×4的分塊時,可得到49 152塊。對于大小為32×32×3的彩色水印圖像,轉換為二進制后共有24 576 bit。因為所提算法僅在每個分塊中嵌入1 bit水印信號,所以僅需在每個分量中隨機選擇8 192個分塊進行Schur分解即可(3個分量共24 576分塊)。具體做法是選擇key,調用Matlab 2010a平臺提供的rand(′seed′,key)函數和randperm( )函數產生一個可重復的隨機序列來選擇待嵌入水印信號的分塊。
步驟4進行Schur分解。對步驟3中選擇的每個圖像分塊Hh,k進行Schur分解,得到酉矩陣Uh,k和上三角矩陣Th,k。
[Uh,k,Th,k]=schur(Hh,k)
(4)
其中,schur(·)表示Schur分解函數。
步驟5查找絕對值最大元素。利用式(4)得到上三角矩陣Th,k后,查找矩陣Th,k所有元素絕對值的最大值。若矩陣Th,k中存在2個或多個相同大小的最大值,則選擇第1個最大值作為待嵌入元素,設為Tmax。
步驟6水印嵌入。設水印嵌入強度為Q,令X=Tmax+Q/2,Y=(Tmax-3Q)/4,Z=(Tmax+3Q)/4,按如下的方法來嵌入1 bit水印信號:
(1)假設待嵌入的1 bit水印信號等于0,則Tmax=X-Y%Q。
(2)假設待嵌入的1 bit水印信號等于1,則Tmax=X-Z%Q。
其中,%表示求余數運算。水印嵌入強度Q影響隱秘圖像質量和算法魯棒性。一般地,Q越大,算法魯棒性越好,但隱秘圖像質量越差;反之,算法魯棒性越差,但隱秘圖像質量越好。為平衡隱秘圖像質量和算法魯棒性,在本文算法中,以隱秘圖像質量PSNR(Peak Signal-to-Noise Ratio)約為40 dB確定水印嵌入強度Q的大小。
步驟7逆Schur分解。對嵌入水印信號后的分塊Hh,k進行逆Schur分解,生成含水印信號的圖像分塊H′h,k:
(5)

步驟8合成含水印的彩色圖像。當所有的水印信號嵌入完畢后,將3個分量R′,G′和B′重新組合,生成含水印的彩色圖像I′,水印信號嵌入過程結束。
水印圖像的提取過程與嵌入過程基本相同,其算法流程如圖2所示。

Figure 2 Flow chart of watermarking extraction algorithm圖2 水印提取流程圖
水印提取算法主要步驟如下所示:
步驟1圖像分塊。讀入嵌入水印后可能已遭受到惡意或非惡意攻擊的彩色圖像I′,將其分離為3個分量,對每個分量進行大小為4×4的不重疊分塊H′h,k。
步驟2選擇分塊。基于嵌入水印信號時選擇的key,調用Matlab 2010a平臺提供的rand(′seed′,key)函數和randperm( )函數產生一個與嵌入時相同的隨機序列來選擇待提取水印信號的分塊。
步驟3進行Schur分解。對步驟2中選擇的每個圖像分塊H′h,k進行Schur分解,得到酉矩陣U′h,k和上三角矩陣T′h,k。
[U′h,k,T′h,k]=schur(H′h,k)
(6)
其中,schur( · )表示Schur分解函數。
步驟4查找絕對值最大元素。得到上三角矩陣T′h,k后,查找矩陣T′h,k所有元素絕對值的最大值,設為T′max。
步驟5水印提取。在每個圖像分塊中提取1 bit水印信號,提取方法如下:
(7)
步驟6混沌解密。當所有的水印信號位提取后,采用混沌解密方法對其進行解密,之后將其轉換為3個灰度圖像。
步驟7逆Arnold置亂。對得到的3個灰度圖像進行逆Arnold置亂,再將3個灰度圖像進行組合,得到最終提取的彩色水印圖像W′。
為了測試本文所提算法的性能,本節主要從嵌入水印信號后載體圖像的不可感知性和抵抗攻擊的能力2個方面來進行分析。嵌入水印信號后載體圖像的不可感知性采用峰值信噪比PSNR來衡量。對于彩色圖像來說,計算PSNR的方法如式(8)所示:
(8)
其中,PSNRi(i=1,2,3)分別表示彩色圖像3個分量的PSNR值,其計算方法如式(9)所示:
(9)
其中,M和N分別表示載體圖像每一個分量的寬度和高度,I(u,v,i)和I′(u,v,i)分別表示載體圖像和含水印圖像第i個分量的像素值,lg(·)表示求對數運算。
抗攻擊能力用歸一化互相關系數NC(Normalized Cross-correlation)來衡量,其計算方法如(10)所示:
NC=
(10)
其中,P和Q分別表示水印圖像每一個分量的寬度和高度,W(u,v,i)和W′(u,v,i)分別表示水印圖像和提取的水印圖像第i個分量的像素值。
一般地,PSNR值越大,表明嵌入水印信號后含水印圖像的不可感知性越好;反之,不可感知性越差。NC值越大,表明提取的水印圖像與原始水印圖像越相似,算法的抗攻擊能力越好;反之,算法的抗攻擊能力越差。
仿真實驗選擇大小為512×512的4幅標準彩色圖像Airplane、Lena、Peppers和Sailboat作為原始載體圖像,選擇大小為32×32且標識為“貴州師范大學”的彩色圖像作為水印圖像。嵌入強度Q取值為48,嵌入水印后的載體圖像如圖3所示,PSNR值分別為40.262 4 dB,40.319 3 dB,40.142 8 dB和40.324 3 dB。從圖3可以看出,嵌入水印信號后的圖像具有較好的不可感知性。圖3f是從圖3d中提取出的水印圖像,從圖3f可以看出,當嵌入水印信號后的圖像未遭受任何惡意和非惡意的攻擊時,本文提出的算法能正確地提取嵌入的彩色圖像。

Figure 3 Experiment results of transparency圖3 不可感知性實驗結果
本文選擇有意義且標識為“貴州師范大學”的彩色圖像作為水印信號,使用3.1節中的算法對其進行加密處理,加密后的彩色水印圖像如圖4所示。從圖4b可以看出,經混沌和Arnold加密后的彩色水印圖像雜亂無章,具有不可識別性和一定的安全性。在解密階段對圖4b進行解密時,若解密算法中的所有參數都正確,則能完整地還原原始的彩色水印圖像,如圖4c所示。解密后的彩色水印圖像與原始彩色水印圖像的NC值為1.000 0。若解密算法中的其他參數正確,密鑰x1錯誤時(與正確值僅相差0.000 01)還原得到的彩色水印圖像如圖4d所示。從圖4d可以看出,即使密鑰x1初值與正確的初值僅相差0.000 01,還原得到的彩色水印圖像雜亂無章,人眼不可識別,表明所提算法對密鑰x1初值的微小變動具有較好的敏感性能,算法具有較好的安全性。

Figure 4 Encryption and decryption of image圖4 圖像加密和解密
為了測試本文所提算法的優越性,本節將其與文獻[3]和文獻[9]中的算法進行比較。文獻[3]中的算法先對彩色水印圖像采用Arnold置亂算法進行置亂,然后對彩色載體圖像進行互不重疊分塊及Schur分解,最后采用量化方法嵌入水印信號。文獻[9]中的算法先對彩色水印圖像采用仿射變換對其預處理,然后對彩色載體圖像進行互不重疊分塊及選擇足夠多的分塊進行Schur分解,最后采用基于量化的方法嵌入水印信號。本文所提算法在對彩色水印圖像進行預處理時,采用Arnold置亂和混沌加密對彩色水印圖像進行預處理,在嵌入水印信號時,選擇足夠多的分塊進行Schur分解,選擇在最大值元素上嵌入水印信號。在進行性能比較時,嵌入同一個水印信號,調整3種算法的嵌入強度,使3種算法的PSNR值(約為40 dB)都基本相同。具體攻擊實驗如下所示:
(1)濾波攻擊實驗。
圖像濾波是圖像處理中常見的一種操作,目的是消除圖像中混入的噪聲。在相同的仿真實驗條件下,對嵌入水印后的4幅彩色圖像分別進行不同強度的中值濾波和維納濾波攻擊實驗,相應的實驗結果如圖5所示。

Figure 5 Experiment results of filtering attack圖5 濾波攻擊實驗結果
從圖5可以看出,對于不同強度的中值濾波和維納濾波攻擊,隨著攻擊強度不斷增大,3種算法的抗攻擊能力都有所下降。但是,對于所有的攻擊,本文算法的抗攻擊性能比文獻[3]算法和文獻[9]算法的抗攻擊性能好。
(2)噪聲攻擊實驗。
給圖像添加噪聲是一種常見的攻擊方法。隨著噪聲強度的增大,圖像質量下降明顯。在相同的仿真實驗條件下,對嵌入水印后的4幅彩色圖像分別進行不同強度的椒鹽噪聲和乘性噪聲攻擊實驗,相應的實驗結果如圖6所示。從圖6可以看出,對于不同強度的椒鹽噪聲攻擊,文獻[9]算法的性能最好,本文算法的抗攻擊性能與文獻[3]算法的相當;對于不同強度的乘性噪聲攻擊,本文算法比文獻[3]和文獻[9]算法的抗攻擊性能都好。

Figure 6 Experiment results of noise attack圖6 噪聲攻擊實驗結果
(3)JPEG壓縮實驗。
為了節省圖像的存儲空間,JPEG壓縮是最基本的圖像處理操作之一。JPEG壓縮品質百分數在0~100,品質百分數越大,壓縮后圖像質量越好。在相同的仿真實驗條件下,對嵌入水印后的4幅彩色圖像分別進行不同品質百分數的JPEG壓縮攻擊實驗,相應的實驗結果如圖7所示。從圖7可以看出,隨著JPEG壓縮品質百分數的不斷提高,3種算法的抗攻擊能力越來越高,但是從整體性能來看,本文算法的性能高于文獻[3]和文獻[9]算法的性能。

Figure 7 Experiment results of JPEG compression圖7 JPEG壓縮實驗結果
(4)縮放攻擊實驗。
在相同的仿真實驗條件下,對嵌入水印后的4幅彩色圖像分別進行不同尺度的縮放攻擊實驗,相應的實驗結果如表1所示。從表1可以看出,對于不同尺度的縮放攻擊,本文算法的性能與文獻[3]算法的性能相當,但是對于所有攻擊,本文算法的性能均優于文獻[9]算法的。

Table 1 Scaling attack experiment results
(5)組合攻擊實驗。
在相同的仿真實驗條件下,對嵌入水印后的4幅彩色圖像分別進行不同的組合攻擊實驗,相應的實驗結果如表2所示。從表2可以看出,對于所有的組合攻擊,文獻[9]算法的性能最差,本文算法的抗攻擊性能最好。
本文利用Schur分解的優點,結合Arnold置亂和混沌技術,提出了一種魯棒的彩色圖像水印算法。在嵌入水印信號前,對彩色水印圖像進行加密處理,提高了水印圖像的安全性能。在嵌入水印信號時,采用量化嵌入方法將預處理后的水印信號嵌入在上三角矩陣的最大值元素中。提取水印時,不需要原始載體圖像的參與,實現了盲提取。實驗結果表明,本文算法實現較簡單,具有較好的不可感知性,對多種攻擊具有較強的魯棒性。與相似算法相比,在相同的實驗條件下,對于大多數攻擊具有更優越的抗攻擊能力。

Table 2 Combination attack experiment results