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

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

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

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

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

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

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

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








