基于Arnold置乱和离散傅立叶变换的图像加密算法
2010-10-26李永宁钟小莉谢旻旻
李永宁,钟小莉,谢旻旻
(青海民族大学 计算机学院,青海 西宁 810007)
随着互联网的迅速发展和普及,数字图像、数字音频、数字视频等数字媒体的传播变得越来越方便快捷。由于数字媒体具有易被复制、传播、修改等特点,使得产品的所有权问题已经成为严重的社会问题。数字水印作为一种版权保护技术应运而生并迅速发展起来,成为信息安全和多媒体信号处理领域的研究热点。本文探讨了一种应用于图像保护的基于DFT域的有意义水印算法。
1 离散傅立叶变换和Arnold图像置乱算法
1.1 离散傅立叶变换
离散傅立叶变换建立了离散空间域和频域之间的联系。数字图像经 DFT变换后,图像的空间域处理可转变为频域处理,最明显的优点是算术运算次数大大减少。
对于一幅M*N图像f(x,y),F(u,v)是其频率谱,则DFT正变换和逆变换定义如下:
正变换:
逆变换:
基于离散傅立叶变换的研究方向主要有两大类:一类是基于 DFT域的平移、缩放和旋转的几何不变性,将载体图像进行Fouier-Millin变换实现水印的嵌入来抵抗几何攻击。另一类是利用傅立叶域的频谱信息来嵌入水印[1],研究发现水印应嵌入在最重要的分量以获得较好的鲁棒性,嵌入的方法主要有相位谱、幅度谱、相位和幅度谱结合几种,本文采用的是幅度谱水印算法。
傅立叶变换是复数范围内的变换,如果在计算机上按照其定义式来计算的话,计算量将非常大。由此人们提出了快速傅立叶变换算法FFT[2]。它与原始算法的计算量之比为N/ log2N。当N比较大时,计算量的节省将相当可观。
1.2 Arnold变换
1.2.1 定义
Arnold变换是Arnold在遍历理论中提出的一种变换,俗称猫脸变换。设想在单位正方形上的点(x,y),将其变到另一点(x′,y′)的变换为[3]:
此变换称作Arnold变换。将Arnold变换应用在数字图像上,可以通过像素坐标的改变而改变图像灰度值的布局。经过Arnold变换后的图像会变得“混乱不堪”,但继续使用Arnold变换,会出现一幅与原图相同的图像,说明 Arnold变换具有周期性。
对于大小为N*N的图像F,可进行离散化Arnold变换:
其中,x ,y∈{0,1,2,…,N-1},(x,y)表示图像矩阵的某个元素未变换时的位置,(x′,y′)表示变换后新的位置。对图像F中所有的像素进行Arnold变换就完成了一次Arnold变换。
1.2.2 Arnold变换周期
设有一幅2*2的图像,其数字矩阵为
经过几次Arnold变换过程如下:
即该图像经过3次变换恢复了原图,可见当N=2时,Arnold变换的周期为3。本算法采用的水印图像尺寸为40*40,变换周期为30,即迭代进行30次Arnold置乱后,水印图像将恢复原来面目。对于不同的图像矩阵阶数N,Arnold变换有不同的周期,表1为不同阶下二维Arnold变换的周期。
表1 Arnold变换周期
可以看出,矩阵阶数N与Arnold变换的周期并不成正比。因此,在设计数字水印图像大小的时候,如果从减少运算量的角度出发,尽量选择变换周期较小阶数的图像。
Arnold变换具有算法简单、计算花费少、置乱后的图像总像素个数不变等特点,因此加密效果较好。
2 算法分析
本算法包括水印嵌入和提取过程,所使用的水印为二值图像,载体是256*256的灰度级lena图像。
2.1 水印嵌入算法
设X为原始图像,待隐藏的二值图像为W,首先将原始图像划分子块,对每一图像块进行DFT变换,将二值水印图像用 Arnold变换置乱。产生两个伪随机序列。置乱水印矩阵值为 0时用一个伪随机序列与原始图像的幅度谱进行乘性叠加,矩阵值为1时,用另一个伪随机序列与原始图像幅度谱进行乘性叠加。
(1)子块划分,将原始图像分成8*8的图像子块。
(2)对每一图像块进行DFT变换。
(3)对二值水印图像W进行Arnold变换。
(4)产生两个不相关的伪随机序列。
(5)修改相应幅度谱值。
由于 DFT域的幅度谱具有对称性,为了保持水印嵌入后对称性不变,嵌入水印时采用对称嵌入。
(6)对每一图像块进行DFT逆变换,得到含水印图像。
2.2 水印提取
(1)子块划分,将嵌入水印图像分成8*8的图像子块。
(2)对每一图像块进行DFT变换。
(3)产生两个不相关的伪随机序列。
(4)计算嵌入水印幅度谱与伪随机序列的相关性,并按照嵌入时的规则产生水印矩阵。
(5)将水印矩阵用Arnold变换进行置乱得到提取水印。
3 实验结果与分析
3.1 嵌入和提取实验
在matlab7.0环境下对提出的算法进行仿真。仿真实验采用 256*256的灰度级 lena图像作为载体图像,用一幅40*40大小、“青海民大”字样的二值图像作为水印图像,如图1所示。添加水印后的图像质量、水印信息的失真程度分别用峰值信噪比(PSNR)和相似比(NC)来衡量。
图1 仿真实验对象
按照嵌入算法,取嵌入强度k=1.0进行信息隐藏得到隐藏后的图像如图2所示。水印的不可见性是数字水印必备的特性之一,不可见性通常使用PSNR指标进行衡量,一般情况下,如果 PSNR指标大于 30dB,则认为水印不可见[4]。实验表明嵌入信息后的图像相对于原图像有较高的峰值信噪比PSNR=41.6484dB。从嵌入水印的图像及相应指标可以看出,嵌入水印图像与原载体图像几乎没有差别,人眼无法区分其差异,所得到的PSNR大于40dB,这说明该算法嵌入水印的不可见性很好。
根据水印提取算法,对图2进行算法提取。得到图3所示的提取水印信息,相似比NC=0.99305。NC指标接近于1,说明算法所嵌入的水印能够被很好地提取,实际的水印提取结果也说明了这一点。进一步测试表明水印嵌入强度越大,提取的水印效果会越好,但相应的嵌入水印图像的失真会比较明显。在实际应用中可按不同的情况均衡嵌入强度与水印不可感知性之间的矛盾。
图2 嵌入水印图像
图3 提取的水印
3.2 攻击测试
3.2.1 JPEG压缩测试
将含有水印的图像以质量因子Q进行JPEG压缩。质量因子Q表示压缩比,Q的取值范围是0~100之间,取值越大,图像压缩失真越小,图像效果越好,但图像文件就越大。Q越小表示压缩比越高,攻击强度也越大。图4是Q=90时Lena的压缩图像和为其提取的水印,NC=0.84824。从检测出的水印以及实验数据可看出,该算法对JPEG压缩有比较强的鲁棒性,表现出了一定的抗JPEG压缩攻击的能力。
图4 Q=90的JPEG有损压缩攻击
3.2.2 旋转攻击测试
对含水印图像进行旋转,提取出的水印图像和相应的实验检测结果如图5所示。
图5 旋转15度的含水印图像及提取的水印图像
由实验结果可知,通过对含水印图像旋转,提取的水印图像质量受到严重影响NC值只有0.78118,说明该算法抵抗旋转的能力较弱。
3.2.3 抗噪声攻击
对含水印图像添加噪声密度为 0.01的椒盐噪声后提取的水印如图6所示。
图7 加噪后(0.01)含水印图像及提取的水印图像
从实验结果可以看出,随着噪声强度的加大,含水印图像以及提取的水印的失真变大,抗攻击能力降低。
4 结论
文中把置乱算法和 DFT相结合能够进一步提高对数字信息的保护,Arnold变换中的参数k和水印图像的置乱次数可以作为提取水印的密钥,提高了水印的安全性。仿真结果证明该算法复杂度较低,能抵抗常见的对图像的恶意攻击,实用性较强,且具有较好的鲁棒性和透明性。算法不足之处在于当攻击强度加大时,提取的水印效果不理想,因此还可做更进一步的研究。