李永寧,鐘小莉,謝旻旻
(青海民族大學(xué) 計(jì)算機(jī)學(xué)院,青海 西寧 810007)
隨著互聯(lián)網(wǎng)的迅速發(fā)展和普及,數(shù)字圖像、數(shù)字音頻、數(shù)字視頻等數(shù)字媒體的傳播變得越來越方便快捷。由于數(shù)字媒體具有易被復(fù)制、傳播、修改等特點(diǎn),使得產(chǎn)品的所有權(quán)問題已經(jīng)成為嚴(yán)重的社會問題。數(shù)字水印作為一種版權(quán)保護(hù)技術(shù)應(yīng)運(yùn)而生并迅速發(fā)展起來,成為信息安全和多媒體信號處理領(lǐng)域的研究熱點(diǎn)。本文探討了一種應(yīng)用于圖像保護(hù)的基于DFT域的有意義水印算法。
離散傅立葉變換建立了離散空間域和頻域之間的聯(lián)系。數(shù)字圖像經(jīng) DFT變換后,圖像的空間域處理可轉(zhuǎn)變?yōu)轭l域處理,最明顯的優(yōu)點(diǎn)是算術(shù)運(yùn)算次數(shù)大大減少。
對于一幅M*N圖像f(x,y),F(xiàn)(u,v)是其頻率譜,則DFT正變換和逆變換定義如下:
正變換:
逆變換:
基于離散傅立葉變換的研究方向主要有兩大類:一類是基于 DFT域的平移、縮放和旋轉(zhuǎn)的幾何不變性,將載體圖像進(jìn)行Fouier-Millin變換實(shí)現(xiàn)水印的嵌入來抵抗幾何攻擊。另一類是利用傅立葉域的頻譜信息來嵌入水印[1],研究發(fā)現(xiàn)水印應(yīng)嵌入在最重要的分量以獲得較好的魯棒性,嵌入的方法主要有相位譜、幅度譜、相位和幅度譜結(jié)合幾種,本文采用的是幅度譜水印算法。
傅立葉變換是復(fù)數(shù)范圍內(nèi)的變換,如果在計(jì)算機(jī)上按照其定義式來計(jì)算的話,計(jì)算量將非常大。由此人們提出了快速傅立葉變換算法FFT[2]。它與原始算法的計(jì)算量之比為N/ log2N。當(dāng)N比較大時,計(jì)算量的節(jié)省將相當(dāng)可觀。
1.2.1 定義
Arnold變換是Arnold在遍歷理論中提出的一種變換,俗稱貓臉變換。設(shè)想在單位正方形上的點(diǎn)(x,y),將其變到另一點(diǎn)(x′,y′)的變換為[3]:
此變換稱作Arnold變換。將Arnold變換應(yīng)用在數(shù)字圖像上,可以通過像素坐標(biāo)的改變而改變圖像灰度值的布局。經(jīng)過Arnold變換后的圖像會變得“混亂不堪”,但繼續(xù)使用Arnold變換,會出現(xiàn)一幅與原圖相同的圖像,說明 Arnold變換具有周期性。
對于大小為N*N的圖像F,可進(jìn)行離散化Arnold變換:
其中,x ,y∈{0,1,2,…,N-1},(x,y)表示圖像矩陣的某個元素未變換時的位置,(x′,y′)表示變換后新的位置。對圖像F中所有的像素進(jìn)行Arnold變換就完成了一次Arnold變換。
1.2.2 Arnold變換周期
設(shè)有一幅2*2的圖像,其數(shù)字矩陣為
經(jīng)過幾次Arnold變換過程如下:
即該圖像經(jīng)過3次變換恢復(fù)了原圖,可見當(dāng)N=2時,Arnold變換的周期為3。本算法采用的水印圖像尺寸為40*40,變換周期為30,即迭代進(jìn)行30次Arnold置亂后,水印圖像將恢復(fù)原來面目。對于不同的圖像矩陣階數(shù)N,Arnold變換有不同的周期,表1為不同階下二維Arnold變換的周期。
表1 Arnold變換周期
可以看出,矩陣階數(shù)N與Arnold變換的周期并不成正比。因此,在設(shè)計(jì)數(shù)字水印圖像大小的時候,如果從減少運(yùn)算量的角度出發(fā),盡量選擇變換周期較小階數(shù)的圖像。
Arnold變換具有算法簡單、計(jì)算花費(fèi)少、置亂后的圖像總像素個數(shù)不變等特點(diǎn),因此加密效果較好。
本算法包括水印嵌入和提取過程,所使用的水印為二值圖像,載體是256*256的灰度級lena圖像。
設(shè)X為原始圖像,待隱藏的二值圖像為W,首先將原始圖像劃分子塊,對每一圖像塊進(jìn)行DFT變換,將二值水印圖像用 Arnold變換置亂。產(chǎn)生兩個偽隨機(jī)序列。置亂水印矩陣值為 0時用一個偽隨機(jī)序列與原始圖像的幅度譜進(jìn)行乘性疊加,矩陣值為1時,用另一個偽隨機(jī)序列與原始圖像幅度譜進(jìn)行乘性疊加。
(1)子塊劃分,將原始圖像分成8*8的圖像子塊。
(2)對每一圖像塊進(jìn)行DFT變換。
(3)對二值水印圖像W進(jìn)行Arnold變換。
(4)產(chǎn)生兩個不相關(guān)的偽隨機(jī)序列。
(5)修改相應(yīng)幅度譜值。
由于 DFT域的幅度譜具有對稱性,為了保持水印嵌入后對稱性不變,嵌入水印時采用對稱嵌入。
(6)對每一圖像塊進(jìn)行DFT逆變換,得到含水印圖像。
(1)子塊劃分,將嵌入水印圖像分成8*8的圖像子塊。
(2)對每一圖像塊進(jìn)行DFT變換。
(3)產(chǎn)生兩個不相關(guān)的偽隨機(jī)序列。
(4)計(jì)算嵌入水印幅度譜與偽隨機(jī)序列的相關(guān)性,并按照嵌入時的規(guī)則產(chǎn)生水印矩陣。
(5)將水印矩陣用Arnold變換進(jìn)行置亂得到提取水印。
在matlab7.0環(huán)境下對提出的算法進(jìn)行仿真。仿真實(shí)驗(yàn)采用 256*256的灰度級 lena圖像作為載體圖像,用一幅40*40大小、“青海民大”字樣的二值圖像作為水印圖像,如圖1所示。添加水印后的圖像質(zhì)量、水印信息的失真程度分別用峰值信噪比(PSNR)和相似比(NC)來衡量。
圖1 仿真實(shí)驗(yàn)對象
按照嵌入算法,取嵌入強(qiáng)度k=1.0進(jìn)行信息隱藏得到隱藏后的圖像如圖2所示。水印的不可見性是數(shù)字水印必備的特性之一,不可見性通常使用PSNR指標(biāo)進(jìn)行衡量,一般情況下,如果 PSNR指標(biāo)大于 30dB,則認(rèn)為水印不可見[4]。實(shí)驗(yàn)表明嵌入信息后的圖像相對于原圖像有較高的峰值信噪比PSNR=41.6484dB。從嵌入水印的圖像及相應(yīng)指標(biāo)可以看出,嵌入水印圖像與原載體圖像幾乎沒有差別,人眼無法區(qū)分其差異,所得到的PSNR大于40dB,這說明該算法嵌入水印的不可見性很好。
根據(jù)水印提取算法,對圖2進(jìn)行算法提取。得到圖3所示的提取水印信息,相似比NC=0.99305。NC指標(biāo)接近于1,說明算法所嵌入的水印能夠被很好地提取,實(shí)際的水印提取結(jié)果也說明了這一點(diǎn)。進(jìn)一步測試表明水印嵌入強(qiáng)度越大,提取的水印效果會越好,但相應(yīng)的嵌入水印圖像的失真會比較明顯。在實(shí)際應(yīng)用中可按不同的情況均衡嵌入強(qiáng)度與水印不可感知性之間的矛盾。
圖2 嵌入水印圖像
圖3 提取的水印
3.2.1 JPEG壓縮測試
將含有水印的圖像以質(zhì)量因子Q進(jìn)行JPEG壓縮。質(zhì)量因子Q表示壓縮比,Q的取值范圍是0~100之間,取值越大,圖像壓縮失真越小,圖像效果越好,但圖像文件就越大。Q越小表示壓縮比越高,攻擊強(qiáng)度也越大。圖4是Q=90時Lena的壓縮圖像和為其提取的水印,NC=0.84824。從檢測出的水印以及實(shí)驗(yàn)數(shù)據(jù)可看出,該算法對JPEG壓縮有比較強(qiáng)的魯棒性,表現(xiàn)出了一定的抗JPEG壓縮攻擊的能力。
圖4 Q=90的JPEG有損壓縮攻擊
3.2.2 旋轉(zhuǎn)攻擊測試
對含水印圖像進(jìn)行旋轉(zhuǎn),提取出的水印圖像和相應(yīng)的實(shí)驗(yàn)檢測結(jié)果如圖5所示。
圖5 旋轉(zhuǎn)15度的含水印圖像及提取的水印圖像
由實(shí)驗(yàn)結(jié)果可知,通過對含水印圖像旋轉(zhuǎn),提取的水印圖像質(zhì)量受到嚴(yán)重影響NC值只有0.78118,說明該算法抵抗旋轉(zhuǎn)的能力較弱。
3.2.3 抗噪聲攻擊
對含水印圖像添加噪聲密度為 0.01的椒鹽噪聲后提取的水印如圖6所示。
圖7 加噪后(0.01)含水印圖像及提取的水印圖像
從實(shí)驗(yàn)結(jié)果可以看出,隨著噪聲強(qiáng)度的加大,含水印圖像以及提取的水印的失真變大,抗攻擊能力降低。
文中把置亂算法和 DFT相結(jié)合能夠進(jìn)一步提高對數(shù)字信息的保護(hù),Arnold變換中的參數(shù)k和水印圖像的置亂次數(shù)可以作為提取水印的密鑰,提高了水印的安全性。仿真結(jié)果證明該算法復(fù)雜度較低,能抵抗常見的對圖像的惡意攻擊,實(shí)用性較強(qiáng),且具有較好的魯棒性和透明性。算法不足之處在于當(dāng)攻擊強(qiáng)度加大時,提取的水印效果不理想,因此還可做更進(jìn)一步的研究。