基于Arnold图像置乱和离散傅立叶交换相结合的数字水印加密算法,首先将原始图像划分子块,对每一图像块进行DFT变换,将二值水印图像用Arnold交换置乱,然后按一定规则把水印信患分散嵌入到数字产品中。本图像加密算法复杂度较低,实用性较强。

一、离散傅立叶变换和Arnold图像置乱算法

1、离散傅立叶变换

离散傅立叶变换建立了离散空间域和频域之间的联系。数字图像经DFT变换后,图像的空间域处理可转变为频域处理,最明显的优点是算术运算次数大大减少。

对于一幅M*N图像f(x,y),用玩砂是其频率f(u,v),则DFT变换和逆变换定义如下:

正变幻:

图像加密算法之Arnold置乱和离散傅立叶变换

逆变换:

图像加密算法之Arnold置乱和离散傅立叶变换

基于离散傅立叶变换的研究方向主要有两大类:一类是基于DFT域的平移、缩放和旋转的几何不变性,将载体图像进行Fouier-Millin变换实现水印的嵌入来抵抗几何攻击。另一类是利用傅立叶域的频谱信息来嵌入水印,研究发现水印应嵌入在最重要的分量以获得较好的鲁棒性,嵌入的方法主要有相位谱、幅度谱、相位和幅度谱结合几种,本文采用的是幅度谱水印算法。

傅立叶变换是复数范围内的变换,如果在计算机上按照其定义式来计算的话,计算量将非常大。由此人们提出了快速傅立叶交换算法FFT。它与原始算法的计算量之比为N/log2N。当N比较大时,计算量的节省将相当可观。

2、Arnold变换

(1)定义

Arnold变换是Arnold在遍历理论中提出的一种变换,俗称猫脸变换。设想在单位正方形上的点(x,y),将其变到另一点(x',y')的变换为:

图像加密算法之Arnold置乱和离散傅立叶变换

此变换称作Arnold变换。将Arnold变换应用在数字图像上,可以通过像素坐标的改变而改变图像灰度值的布局。经过Arnold变换后的图像会变得“混乱不堪”但继续使用Arnold变换,会出现一幅与原图相同的图像,说明Arnold变换具有周期性。

对于大小为N*N的图像F,可进行离散化Arnold变换:

图像加密算法之Arnold置乱和离散傅立叶变换

其中,x,y∈{0,1,2,...,N-1},(x,y)表示图像矩阵的某个元素未变换时的位置,(x’,y')表示变换后新的位置。对图像F中所有的像素进行Arnold变换就完成了一次Arnold变换。

(2)Arnold变换周期

设有一幅2*2的图像,其数字矩阵为:

图像加密算法之Arnold置乱和离散傅立叶变换

经过几次Arnold变换过程如下:

图像加密算法之Arnold置乱和离散傅立叶变换

即该图像经过3次变换恢复了原图,可见当N=2时,Arnold变换的周期为3。本算法采用的水印图像尺寸为40*40,变换周期为30,即迭代进行30次Arnold置乱后,水印图像将恢复原来面目。对于不同的图像矩阵阶数N,Arnold变换有不同的周期,表1为不同阶下二维Arnold变换的周期。

图像加密算法之Arnold置乱和离散傅立叶变换

可以看出,矩阵阶数N与Arnold变换的剧期并不成正比。因此,在设计数字水印图像大小的时候,如果从减少运算量的角度出发,尽量选择变换周期较小阶数的图像。
Arnold变换具有算法简单、计算花费少、置乱后的图像总像素个数不变等特点,因此加密效果较好。

二、图像加密算法分析

图像加密算法包括水印嵌入和提取过程,所使用的水印为二值图像,载体是256*256的灰度级lena图像。

1、水印嵌入算法

设X为原始图像,待隐藏的二值图像为W,首先将原始图像划分子块,对每一图像块进行DFT变换,将二值水印图像用Amold变换置乱。产生两个伪随机序列。置乱水
印矩阵值为0时用一个伪随机序列与原始图像的幅度谱进行乘性叠加,矩阵值为l时,用另一个伪随机序列与原始图像幅度谱进行乘性叠加。

(1)子块划分,将原始图像分成8*8的图像子块。

图像加密算法之Arnold置乱和离散傅立叶变换

(2)对每一图像块进行DFT变换。

图像加密算法之Arnold置乱和离散傅立叶变换

(3)对二值水印图像W进行Arnold变换。

(4)产生两个不相关的伪随机序列。

(5)修改相应幅度谱值。

由于DFT域的幅度谱具有对称性,为了保持水印嵌入后对称性不变,嵌入水印时采用对称嵌入。

(6)对每一图像块进行DFT逆变换,得到含水印图像。

图像加密算法之Arnold置乱和离散傅立叶变换

2、水印提取

(1)子块划分,将嵌入水印图像分成8*8的图像子块。

(2)对每一图像块进行DFT变换。

(3)产生两个不相关的伪随机序列。

(4)计算嵌入水印幅度谱弓伪随机序列的相关性,并按照嵌入时的规则产生水印矩阵。

(5)将水印矩阵用Arnold变换进行置乱得到提取水印。

三、实验结果与分析

1、嵌入和提取实验

在matlab7.0环境下对提出的算法进行仿真。仿真实验采用256*256的灰度级lena图像作为载体图像,用一幅40*40大小、“青海民大”字样的二值图像作为水印图像,
如图1所示。添加水印后的图像质量、水印信息的失真程度分别用峰值信噪比(PSNR)和相似比(NC)来衡量。

图像加密算法之Arnold置乱和离散傅立叶变换

按照嵌入算法,取嵌入强度k= 1.0进行信息隐藏得到隐藏后的图像如图2所示。水印的不可见性是数字水印必备的特性之一,不可见性通常使用PSNR指标进行衡量,一般情况下,如果PSNR指标大于30dB,则认为水印不可见。

图像加密算法之Arnold置乱和离散傅立叶变换

实验表明嵌入信息后的图像相对于原图像有较高的峰值信噪比PSNR-41 .6484dB。从嵌入水印的图像及相应指标可以看出,嵌入水印图像与原载体图像几乎没有差别,人眼无法区分其差异,所得到的PSNR大于40dB,这说明该算法嵌入水印的不可见性很好。

根据水印提取算法,对图2进行算法提取。得到图3所示的提取水印信息,相似比NC=o.99305。NC指标接近于1,说明算法所嵌入的水印能够被很好地提取,实际的水印提取结果也说明了这一点。进一步测试表明水印嵌入强度越大,提取的水印效果会越好,但相应的嵌入水印图像的失真会比较明显。在实际应用中可按不同的情况均衡嵌入强度与水印不可感知性之间的矛盾。

2、攻击测试

(1)JPEG压缩测试

将含有水印的图像以质量因子Q进行JPEG压缩。质量因子Q表示压缩比,Q的取值范围是0~100之间,取值越大,图像压缩失真越小,图像效果越好,但图像文件就越大。Q越小表示压缩比越高,攻击强度也越大。图4是Q=90时Lena的压缩图像和为其提取的水印,NC=0.84824。从检测出的水印以及实验数据可看出,该算法对JPEG压缩有比较强的鲁棒性,表现出了一定的抗JPEG压缩攻击的能力。

图像加密算法之Arnold置乱和离散傅立叶变换

(2)旋转攻击测试

对含水印图像进行旋转,提取出的水印图像和相应的实验检测结果如图5所示。

图像加密算法之Arnold置乱和离散傅立叶变换

由实验结果可知,通过对含水印图像旋转,提取的水印图像质最受到严重影响NC值只有0.78118,说明该图像加密算法抵抗旋转的能力较弱。

(3)抗噪声攻击

对含水印图像添加噪声密度为0.01的椒盐噪声后提取的水印如图6所示。

图像加密算法之Arnold置乱和离散傅立叶变换

从实验结果可以看出,随着噪声强度的加大,含水印图像以及提取的水印的失真变大,抗攻击能力降低。

小知识之离散傅里叶变换

离散傅里叶变换(DFT),是连续傅里叶变换在时域和频域上都离散的形式,将时域信号的采样变换为在离散时间傅里叶变换(DTFT)频域的采样。在形式上,变换两端(时域和频域上)的序列是有限长的,而实际上这两组序列都应当被认为是离散周期信号的主值序列。即使对有限长的离散信号作DFT,也应当将其看作经过周期延拓成为周期信号再作变换。在实际应用中通常采用快速傅里叶变换以高效计算DFT。