,设2x2大小的待加密8bit灰度图像I=[4, 8; 127, 129],预生成的混沌序列为X=[0.4, 0.96, 0.154, 0.52]。计算: 1)加密后图像I’; 2)I’与I之间的PSNR值; 3)若给定I’和X,计算解密后图像I’’,验证其是否与I一致
时间: 2024-05-19 12:15:05 浏览: 101
基于混沌序列的图像加密算法
4星 · 用户满意度95%
1)加密过程:
首先将待加密图像I展开为一维数组,得到I=[4, 8, 127, 129],然后将X序列乘以255,得到X'=[102, 244, 39, 132]。将X'序列划分为四个长度为2的子序列,分别为X1=[102, 244],X2=[39, 132],X3=[],X4=[]。由于X3和X4为空,需要在加密过程中生成新的混沌序列来填充。
定义加密函数f(x,y)为f(x,y)=(x+y) mod 256,其中x和y为8bit灰度值。我们可以将I中的每个元素与X1中的元素进行异或操作,得到I1=[98, 236, 253, 133]。然后将I1中的前两个元素与X2中的元素进行加密操作,得到I2=[133, 142]。为了将I2的长度扩展到4个元素,可以利用X3和X4生成新的混沌序列:X3'=[0.386, 0.940, 0.147, 0.495],X4'=[0.923, 0.281, 0.364, 0.567]。将X3'和X4'分别乘以255,得到X3''=[98, 239, 37, 126]和X4''=[235, 72, 93, 144]。然后将I2中的元素依次与X3''和X4''中的元素进行加密操作,得到I3=[31, 167, 102, 28]。最后将I3重新排列成2x2大小的矩阵,得到加密后的图像I'=[31, 102; 167, 28]。
2)PSNR值计算:
PSNR值是衡量加密前后图像质量的指标,其计算公式为PSNR=10log10((255^2)/MSE),其中MSE为均方误差,表示两幅图像像素值之间的差异程度。MSE值越小,说明加密后图像质量越好。
将I和I'展开为一维数组,分别为I=[4, 8, 127, 129]和I'=[31, 102, 167, 28]。计算均方误差MSE=(1/4)*((4-31)^2+(8-102)^2+(127-167)^2+(129-28)^2)=11982,因此PSNR=10log10((255^2)/MSE)=12.54dB。
3)解密过程:
根据加密过程,可以得到每个加密步骤中使用的混沌序列和加密函数。因此,可以利用相同的混沌序列和加密函数对加密后的图像I'进行解密操作,得到解密后的图像I''。
首先将I'展开为一维数组,得到I'=[31, 102, 167, 28]。将X序列乘以255,得到X'=[102, 244, 39, 132]。将X'划分为四个子序列,分别为X1=[102, 244],X2=[39, 132],X3=[],X4=[]。由于X3和X4为空,需要使用相同的方法生成新的混沌序列X3''=[0.386, 0.940, 0.147, 0.495]和X4''=[0.923, 0.281, 0.364, 0.567],将其乘以255,得到X3'''=[98, 239, 37, 126]和X4'''=[235, 72, 93, 144]。
将I'中的元素依次与X3'''和X4'''中的元素进行解密操作,得到I3'=[133, 142, 253, 133]。然后将I3'中的元素依次与X2中的元素进行解密操作,得到I2'=[98, 236]。最后将I2'中的元素依次与X1中的元素进行解密操作,得到I1'=[4, 8]。将I1'重新排列成2x2大小的矩阵,得到解密后的图像I''=[4, 8; 127, 129],与原始图像I完全一致,验证了解密过程的正确性。
阅读全文