羅錦 胡桂明 季宏杰
1 廣西大學(xué)電氣工程學(xué)院 廣西 530004
2 濟(jì)南鋼鐵集團(tuán)運(yùn)輸部 山東 250101
隨著信息數(shù)字化時代的到來,數(shù)字水印技術(shù)在數(shù)字內(nèi)容的產(chǎn)權(quán)保護(hù)這一領(lǐng)域具有十分廣泛的應(yīng)用。公鑰數(shù)字水印系統(tǒng)是數(shù)字水印的一種,它設(shè)立了兩個密鑰,分別對應(yīng)兩個水印,其中一個是版權(quán)所有者的私鑰,另一個是可以公開的版權(quán)公鑰。任何人都可以利用公鑰檢驗(yàn)圖像的所有者屬于誰,這樣能使發(fā)現(xiàn)盜版產(chǎn)品的機(jī)會大大增加。
為了使兩個水印圖像能同時嵌入到載體中,而又能互不干擾地使用各自的密鑰將兩個圖像提取出來,文中提供了一種基于Arnold置亂和Hadamard變換的雙水印信號預(yù)處理算法。算法的主要步驟如圖1所示。
圖1 雙水印信號的預(yù)處理過程
Arnold置亂是經(jīng)典的置亂變換之一,它能改變信息的分布狀況,使圖像信息分布散亂化,同時,它的邏輯簡單,實(shí)現(xiàn)方便,可以有效降低系統(tǒng)的復(fù)雜度。根據(jù)所選擇不同的相位空間可分為二維、三維、四維直至N維的Arnold變換。本文針對的研究對象是二維圖像,故采用的是二維Arnold變換。其定義為:
其中,(x,y)是原圖像的像素點(diǎn),(x′,y′)是變換后新圖像的像素點(diǎn),n是圖像的階數(shù),即圖像的大小,一般考慮正方形圖像。在水印信號的生成階段,把置亂的次數(shù)作為加密的密鑰。Arnold具有周期性的特點(diǎn),即隨著迭代次數(shù)的增加,圖像趨于混亂,經(jīng)過一定的次數(shù)后,又回到原圖。其Matlab代碼如下。
function Arnold(Image,k) %k:圖像需要迭代的次數(shù)
R=imread(Image);
M=Q;
Size_Q=size(Q);
n=0;
K=Size_Q(1);
在文中,把一個大小為64×64的二值圖像作為水印圖像。迭代次數(shù)k取不同值時得到的水印信號如圖2所示。
圖2 迭代次數(shù)k取不同值時的Arnold變換結(jié)果
為了減少迭代次數(shù),優(yōu)化算法,在文獻(xiàn)中,論文作者經(jīng)過嚴(yán)謹(jǐn)?shù)臄?shù)學(xué)推導(dǎo),通過求解方程組的方法,提出了一種新的Arnold反變換算法。據(jù)此提供了Arnold反變換的Matlab代碼。
Hadamard矩陣H是由+1和-1兩個元素組成的正交方陣,它的任意兩行或者兩列都互相正交,即
在式(2)中,[H]T為[H]的轉(zhuǎn)置矩陣,N為[H]的階數(shù),[I]為單位陣。
為了將兩個水印W 1和W2同時嵌入而且能夠互不干擾地恢復(fù),需要對它們進(jìn)行正交變換,為此采用2階Hadamard正交變換,步驟為:
(1) 把W1、W2分別作迭代次數(shù)為k1、k2的Arnold置亂,得到兩個大小為64×64的置亂矩陣M1,M2,此時k1、k2即為兩個水印信號對應(yīng)的密鑰;
(2) 把矩陣M1,M2的所有元素按照行順序取出,分別置入到大小為1×4096的向量I1,I2中;
(3) 分別取 I1,I2的轉(zhuǎn)置矩陣,進(jìn)行混合編碼
得到大小為4096×2混合編碼Im;
(4) 使用2階Hadamard矩陣H2,對混合編碼 Im進(jìn)行正交變換:
此時得出的 Im為Hadamard變換的最終結(jié)果,也就是待嵌入的水印信號編碼。
恢復(fù)水印時,首先提取到 Im,根據(jù)式(5)恢復(fù)相應(yīng)的水印置亂結(jié)果:
其中,Hi為H2矩陣的第i列向量。
如果把Hadamard矩陣的列向量視為地址碼,式(5)實(shí)質(zhì)上是按地址碼的不同而區(qū)分水印,稱之為碼分多址。
通過Hadamard變換,能同時嵌入兩個數(shù)字水印。由于兩個水印互相正交,從水印信號編碼中提取公開水印時,不影響私有水印的提取,同時也只能得到私有水印置亂后的信號,只有知道私鑰的人才能從中恢復(fù)出私有水印。
根據(jù)前文論述的方法,對兩幅二值水印圖片做Arnold置亂操作,如圖3所示。
圖3 將雙水印做Arnold置亂操作后的結(jié)果
根據(jù)上文提供的步驟(1)-(4),對置亂后的兩個水印進(jìn)行混合編碼,編碼的結(jié)果再做Hadamard變換,得到需要的水印信號編碼。
然后,我們依據(jù)式(5)進(jìn)行編碼提取,得到I1,I2的轉(zhuǎn)置矩陣,將I1,I2的元素取入到大小為64×64的矩陣M1,M2中,然后對M1,M2分別作21次和29次Arnold置亂,得到的結(jié)果如圖4所示。
圖4 對M1,M2矩陣做21次和29次Arnold迭代后結(jié)果
Arnold置亂邏輯簡單,便于實(shí)現(xiàn),Hadamard變換能將兩個水印信號的混合編碼進(jìn)行正交變換,生成的信號編碼能同時嵌入到載體圖像中,并且公開水印和私有水印能互不影響地提取,給多重水印信號的預(yù)處理提供了一種新的方法。
[1] W.bender,D.Gruhl and N.Morimoto. Technique for Data Hiding[J].IBM System Journal.1996.
[2] I.J.Cox,M.L.Miller and J.A.Bloom.Digital watermarking.Morgan Kaufmann.2002.
[3] 孫圣和,陸哲明,牛夏牧等.數(shù)字水印技術(shù)及應(yīng)用[M].北京:科學(xué)出版社.2004.
[4] 楊義先,鈕心忻.數(shù)字水印理論與技術(shù)[M].北京:高等教育出版社.2006.
[5] 丁瑋,閆偉齊,齊東旭.基于 Arnold變換的數(shù)字圖像置亂技術(shù)[J].計(jì)算機(jī)輔助設(shè)計(jì)與圖形學(xué)學(xué)報(bào).2001.
[6] 李何明,張大興.一種基于 Hadamard變換的快速盲水印算法[J].杭州電子科技大學(xué)學(xué)報(bào).2009.
[7] 孔濤,張亶.Arnold反變換的一種新算法[J].軟件學(xué)報(bào).2004.
[8] 譚月輝,梁欣,張俊萍等.基于 Arnold變換和采樣理論的置亂技術(shù)研究[J].微計(jì)算機(jī)信息.2006.