利用离散余弦变换域的Arnold变换和颜色混合运算对彩色图像进行加密
摘要
利用Arnold变换和离散余弦变换(DCT)设计了一种彩色图像加密算法。彩色图像的RGB分量在像素序列方面采用Arnold变换进行置乱处理。在一个由随机角定义的矩阵控制下,对打乱后的RGB分量进行交换和随机混合。采用DCT对彩色图像的像素值进行改变。在该加密方案中,上述操作连续执行两次。阿诺德变换参数和随机角度是彩色图像加密方法的密钥。
引言
隐藏秘密数据或信息成为图像加密和图像水印的主要目标。随机可逆过程是设计信息安全算法的核心。这里的随机操作可以分为两种格式,即随机化数据(或图像)的值和排序。双随机相位编码(DRPE)技术,利用随机相位函数对原始图像的数据进行调制和改变,将其视为秘密信息的操作随机值。此外,还考虑了一些光学处理或变换[9-23]来改变图像的像素值。利用Arnold变换、jigsaw变换等置乱操作改变图像像素序列。秘密图像可以通过由随机可逆过程组成的加密方案随机化。
本文提出了一种基于Arnold变换和离散余弦变换的彩色图像加密算法。对原始彩色图像进行分块,然后利用Arnold变换对其置乱处理。用随机角度定义的3 × 3矩阵交换彩色图像的RGB分量的像素值。然后用DCT方法置乱和交换图像。该加密方法需要进行两次Arnold变换、交换像素和DCT。随机角度的数据是加密的主要密钥,阿诺德变换的参数是提高安全性的另一个密钥。通过数值仿真验证了该彩色图像加密算法的有效性。
加密算法
在彩色图像加密的设计中,同时考虑了置乱序列和改变像素值。彩色图像加密算法的流程图如下:
首先引入Arnold变换对彩色图像的RGB分量像素位置进行置乱处理,Arnold变换 $A_N^j$定义如下:
其中,$[m_j,n_j]^t$和 $[m_{j+1},n_{j+1}]^t$分别代表图像像素移位前后的位置向量。参数N是目标图像大小,变换的周期取决于参数N。在进行Arnold变换前将原始图像分成几个子图像,如下图所示。
为了提高图像加密的安全性,将Arnold变换的执行次数固定在不同的值上。在对分块的子图像进行Arnold变换后,原始图像的三种颜色分量 $(R_0(x,y),G_0(x,y),B_0(x,y))$ 变成了 $(R_1(x,y),G_1(x,y),B_1(x,y))$。因此,原始图像的像素序列在一个局部区域被随机化。
在Arnold变换之后,引入了仿射变换并用角θ定义如下:
其中,$T(\theta)$是一个正交矩阵。事实上也可以引入其它的3*3正交矩阵来替换上式中的 $T(\theta)$。其逆矩阵可以计算如下:
图像分量 $(R_1(x,y),G_1(x,y),B_1(x,y))$用矩阵 $T(\theta)$和 $T^{-1}(\theta)$重新组合如下:
和
符号 $\theta_{xy}$是一个取决于变量x和y的随机角度函数。本文使用上述两个式子加密和解密图像,可以交换彩色图像的像素值。同时引入了随机角函数 $\theta{xy}$作为加密算法的密钥。
在图像加密过程中采用了离散余弦变换(DCT)。离散余弦变换(DCT)公式如下:
其对应的逆离散余弦变换(IDCT)公式如下:
对分块子图像进行Arnold变换后,通过不同分块图像间的边界来揭示分块方案。DCT可以改变整幅图像像素值的分布,从而获得随机的输出图案。使用DCT的另一个原因是这个变换是在实数域中定义的,因此,该加密算法可以用实数对输出数据进行编码。当三个颜色分量的DCT都完成后,就得到了$R_2,G_2,B_2$。
在接下来的步骤中,函数 $R_3,G_3,B_3$ 是通过分块操作和Arnold变换来计算的,其中分块方案和第一次相同。然后通过 $T(\theta)$得到 $R_3’,G_3’,B_3’$,利用逆DCT得到最终加密图像的颜色分量 $R_4,G_4,B_4$。解密过程则是加密过程的逆操作。
所提出的加密方法的复杂度取决于Arnold变换、DCT和上面定义的颜色混合方程式。与经典的DRPE加密方法相比,该加密方法以随机角θxy作为主要密钥,重新组合彩色图像中颜色分量的像素值。此外,阿诺德变换被认为是增强加密算法安全性的附加密钥。在DRPE方法中,将随机相位函数附加到输入图像及其变换后的频谱中(这里的变换是在傅里叶变换,分数傅里叶变换和其他光学变换之间进行的)。在随机角 $θ_{xy}$ 和随机相位函数的控制下,图像的像素值随机变化。
实验结果
实验图像采用512*512的彩色Lena图像。随机角函数 $\theta_{xy}$在[0, $2\pi$ ]上满足均匀分布。Arnold变换{j1,j2,j3,j4}的参数(Arnold变换次数)取为{32,55,63,43}。
问题
浮点型数据??
$T(\theta_{xy})$混合三元素分量和DCT操作结果是浮点型的灰度值吧,那要怎么转成图像?直接网络传输浮点型像素数组?解密时浮点型数据因为误差能够正确解密吗?图像传输时到底传输的是什么,RGB像素值?图片查看16进制源数据不是RGB值啊,前几个都是文件头数据啊,传输时是传输带有文件头的数据还是RGB像素值数据?好乱啊。。。