圖像加密算法之Arnold置亂和離散傅立葉變換
基于Arnold圖像置亂和離散傅立葉交換相結(jié)合的數(shù)字水印加密算法,首先將原始圖像劃分子塊,對每一圖像塊進行DFT變換,將二值水印圖像用Arnold交換置亂,然后按一定規(guī)則把水印信患分散嵌入到數(shù)字產(chǎn)品中。本圖像加密算法復(fù)雜度較低,實用性較強。
一、離散傅立葉變換和Arnold圖像置亂算法
1、離散傅立葉變換
離散傅立葉變換建立了離散空間域和頻域之間的聯(lián)系。數(shù)字圖像經(jīng)DFT變換后,圖像的空間域處理可轉(zhuǎn)變?yōu)轭l域處理,最明顯的優(yōu)點是算術(shù)運算次數(shù)大大減少。
對于一幅M*N圖像f(x,y),用玩砂是其頻率f(u,v),則DFT變換和逆變換定義如下:
正變幻:
![]()
逆變換:
![]()
基于離散傅立葉變換的研究方向主要有兩大類:一類是基于DFT域的平移、縮放和旋轉(zhuǎn)的幾何不變性,將載體圖像進行Fouier-Millin變換實現(xiàn)水印的嵌入來抵抗幾何攻擊。另一類是利用傅立葉域的頻譜信息來嵌入水印,研究發(fā)現(xiàn)水印應(yīng)嵌入在最重要的分量以獲得較好的魯棒性,嵌入的方法主要有相位譜、幅度譜、相位和幅度譜結(jié)合幾種,本文采用的是幅度譜水印算法。
傅立葉變換是復(fù)數(shù)范圍內(nèi)的變換,如果在計算機上按照其定義式來計算的話,計算量將非常大。由此人們提出了快速傅立葉交換算法FFT。它與原始算法的計算量之比為N/log2N。當(dāng)N比較大時,計算量的節(jié)省將相當(dāng)可觀。
2、Arnold變換
(1)定義
Arnold變換是Arnold在遍歷理論中提出的一種變換,俗稱貓臉變換。設(shè)想在單位正方形上的點(x,y),將其變到另一點(x',y')的變換為:
![]()
此變換稱作Arnold變換。將Arnold變換應(yīng)用在數(shù)字圖像上,可以通過像素坐標的改變而改變圖像灰度值的布局。經(jīng)過Arnold變換后的圖像會變得“混亂不堪”但繼續(xù)使用Arnold變換,會出現(xiàn)一幅與原圖相同的圖像,說明Arnold變換具有周期性。
對于大小為N*N的圖像F,可進行離散化Arnold變換:
![]()
其中,x,y∈{0,1,2,...,N-1},(x,y)表示圖像矩陣的某個元素未變換時的位置,(x’,y')表示變換后新的位置。對圖像F中所有的像素進行Arnold變換就完成了一次Arnold變換。
(2)Arnold變換周期
設(shè)有一幅2*2的圖像,其數(shù)字矩陣為:
![]()
經(jīng)過幾次Arnold變換過程如下:
![]()
即該圖像經(jīng)過3次變換恢復(fù)了原圖,可見當(dāng)N=2時,Arnold變換的周期為3。本算法采用的水印圖像尺寸為40*40,變換周期為30,即迭代進行30次Arnold置亂后,水印圖像將恢復(fù)原來面目。對于不同的圖像矩陣階數(shù)N,Arnold變換有不同的周期,表1為不同階下二維Arnold變換的周期。

可以看出,矩陣階數(shù)N與Arnold變換的劇期并不成正比。因此,在設(shè)計數(shù)字水印圖像大小的時候,如果從減少運算量的角度出發(fā),盡量選擇變換周期較小階數(shù)的圖像。
Arnold變換具有算法簡單、計算花費少、置亂后的圖像總像素個數(shù)不變等特點,因此加密效果較好。
二、圖像加密算法分析
圖像加密算法包括水印嵌入和提取過程,所使用的水印為二值圖像,載體是256*256的灰度級lena圖像。
1、水印嵌入算法
設(shè)X為原始圖像,待隱藏的二值圖像為W,首先將原始圖像劃分子塊,對每一圖像塊進行DFT變換,將二值水印圖像用Amold變換置亂。產(chǎn)生兩個偽隨機序列。置亂水
印矩陣值為0時用一個偽隨機序列與原始圖像的幅度譜進行乘性疊加,矩陣值為l時,用另一個偽隨機序列與原始圖像幅度譜進行乘性疊加。
(1)子塊劃分,將原始圖像分成8*8的圖像子塊。
![]()
(2)對每一圖像塊進行DFT變換。
![]()
(3)對二值水印圖像W進行Arnold變換。
(4)產(chǎn)生兩個不相關(guān)的偽隨機序列。
(5)修改相應(yīng)幅度譜值。
由于DFT域的幅度譜具有對稱性,為了保持水印嵌入后對稱性不變,嵌入水印時采用對稱嵌入。
(6)對每一圖像塊進行DFT逆變換,得到含水印圖像。

2、水印提取
(1)子塊劃分,將嵌入水印圖像分成8*8的圖像子塊。
(2)對每一圖像塊進行DFT變換。
(3)產(chǎn)生兩個不相關(guān)的偽隨機序列。
(4)計算嵌入水印幅度譜弓偽隨機序列的相關(guān)性,并按照嵌入時的規(guī)則產(chǎn)生水印矩陣。
(5)將水印矩陣用Arnold變換進行置亂得到提取水印。
三、實驗結(jié)果與分析
1、嵌入和提取實驗
在matlab7.0環(huán)境下對提出的算法進行仿真。仿真實驗采用256*256的灰度級lena圖像作為載體圖像,用一幅40*40大小、“青海民大”字樣的二值圖像作為水印圖像,
如圖1所示。添加水印后的圖像質(zhì)量、水印信息的失真程度分別用峰值信噪比(PSNR)和相似比(NC)來衡量。

按照嵌入算法,取嵌入強度k= 1.0進行信息隱藏得到隱藏后的圖像如圖2所示。水印的不可見性是數(shù)字水印必備的特性之一,不可見性通常使用PSNR指標進行衡量,一般情況下,如果PSNR指標大于30dB,則認為水印不可見。

實驗表明嵌入信息后的圖像相對于原圖像有較高的峰值信噪比PSNR-41 .6484dB。從嵌入水印的圖像及相應(yīng)指標可以看出,嵌入水印圖像與原載體圖像幾乎沒有差別,人眼無法區(qū)分其差異,所得到的PSNR大于40dB,這說明該算法嵌入水印的不可見性很好。
根據(jù)水印提取算法,對圖2進行算法提取。得到圖3所示的提取水印信息,相似比NC=o.99305。NC指標接近于1,說明算法所嵌入的水印能夠被很好地提取,實際的水印提取結(jié)果也說明了這一點。進一步測試表明水印嵌入強度越大,提取的水印效果會越好,但相應(yīng)的嵌入水印圖像的失真會比較明顯。在實際應(yīng)用中可按不同的情況均衡嵌入強度與水印不可感知性之間的矛盾。
2、攻擊測試
(1)JPEG壓縮測試
將含有水印的圖像以質(zhì)量因子Q進行JPEG壓縮。質(zhì)量因子Q表示壓縮比,Q的取值范圍是0~100之間,取值越大,圖像壓縮失真越小,圖像效果越好,但圖像文件就越大。Q越小表示壓縮比越高,攻擊強度也越大。圖4是Q=90時Lena的壓縮圖像和為其提取的水印,NC=0.84824。從檢測出的水印以及實驗數(shù)據(jù)可看出,該算法對JPEG壓縮有比較強的魯棒性,表現(xiàn)出了一定的抗JPEG壓縮攻擊的能力。

(2)旋轉(zhuǎn)攻擊測試
對含水印圖像進行旋轉(zhuǎn),提取出的水印圖像和相應(yīng)的實驗檢測結(jié)果如圖5所示。

由實驗結(jié)果可知,通過對含水印圖像旋轉(zhuǎn),提取的水印圖像質(zhì)最受到嚴重影響NC值只有0.78118,說明該圖像加密算法抵抗旋轉(zhuǎn)的能力較弱。
(3)抗噪聲攻擊
對含水印圖像添加噪聲密度為0.01的椒鹽噪聲后提取的水印如圖6所示。

從實驗結(jié)果可以看出,隨著噪聲強度的加大,含水印圖像以及提取的水印的失真變大,抗攻擊能力降低。
小知識之離散傅里葉變換
離散傅里葉變換(DFT),是連續(xù)傅里葉變換在時域和頻域上都離散的形式,將時域信號的采樣變換為在離散時間傅里葉變換(DTFT)頻域的采樣。在形式上,變換兩端(時域和頻域上)的序列是有限長的,而實際上這兩組序列都應(yīng)當(dāng)被認為是離散周期信號的主值序列。即使對有限長的離散信號作DFT,也應(yīng)當(dāng)將其看作經(jīng)過周期延拓成為周期信號再作變換。在實際應(yīng)用中通常采用快速傅里葉變換以高效計算DFT。









