【图像加密解密】分数阶傅里叶变换双随机图像加密解密【含Matlab源码 3654期】

在这里插入图片描述

⛄一、分数傅里叶变换图像加密解密

1 加密原理
函数f(x,y)的二维分数傅里叶变换的数学定义式为kαx(x,u)与kβy(y,u)分别为沿x和y方向的变换核;α与β分别为x和y方向的变换阶数,c1为复常数。将(3)式中x和y分别替换为y和βy ,可以得到y方向的变换核和变换阶数。如果利用分数傅里叶变换进行图像加密,即在输入平面为一个二维的光学图像,则可以在x和y2个相互独立的方向上对数据进行加密。

输入光学系统的信息函数为g(x0,y0)的菲涅耳变换表达式的定义为,波数K=2π/λ;z为菲涅耳变换距离;λ为光波波长。将积分式中的相位因子展开,整理后得到在波长和输入、输出平面距离确定的情况下,可以忽略常数相位因子。

因此,菲涅耳变换的离散化计算可以利用快速傅里叶变换算法提高程序的效率。

待加密图像经过平行光照射后,通过与输入平面的随机相位模板(Rand phasemask,RPM)相作用,经x方向的变换透镜作用到达平面P2,完成了x方向的分数傅里叶变换。然后,经过y方向的变换透镜的作用后,在P3平面得到了经过分数傅里叶变换的输出图像。Lx和Ly分别为x方向和y方向的变换透镜,设2个透镜的变换阶数分别为αx和βy,则P1平面和透镜Lx所在平面之间的距离Z1以及P2平面和透镜Ly所在平面之间的距离z2。

式中fx和fy分别为透镜Lx和Ly的焦距。

令RPMi的相位函数为exp(iφ(x1,Y1)),则在输出平面P3得到变换后的图像。

这里,图像经过分数傅里叶变换完成图像的初步加密过程,密钥的个数为3个。如果利用菲涅耳变换的无透镜特性,使加密信息f(x3,y3)与另一RPM2作用后,再经过距离为x3的菲涅耳变换,使系统的加密密钥个数增加到了6个,在系统内的光学元件(光学透镜)没有增加的基础上,提高了系统的安全性能。

设RPM2的表达式为(exp(iφ3(x3,y3)),则经过距离为z3的菲涅耳变换后加密的图像函数fresz为距离为z3的菲涅耳变换算子。为了记录加密图像的相位信息,在输出平面加入一束与输入光相干的参考光,在P4平面上形成加密图像的全息图。设参考光为中A02是我们从通过产生光线的激光器的参数中得到的。

为了得到解密图像,首先需要通过从激光器的参数及加密信息中得到f’(x4,y4,z)。根据光路的可逆性,将加密图像的共轭图像f’(x4,y4,z)*在原系统的输出平面,经过z3距离的菲涅耳变换和随机相位模板RPM2的共轭作用后,再经过变换阶数为-αx和-βy的分数傅里叶变换与RPMi的共轭作用,最后得到解密图像。

2 安全性能分析
从上面的加密、解密过程可以看出,采用改良后的加密系统时,经过分数傅里叶变换后的图像又经过了距离为z3菲涅耳变换,因此,在不知道光波波长和菲涅耳变换距离的情况下不能正确解密图像。

具体分析如下:

由(5)式和(6)式可以得出菲涅耳变换的过程,可以近似看作是信息函数g(xo,Yo)与相位因子相作用后的傅里叶变换谱。 由于相位因子是波长λ和变换距离z的函数,也就是说如果不知道正确的波长和变换距离,是不能得到正确的相位因子的。因此,解密时,如果使用的菲涅耳变换的距离和光波的波长不正确,那么将不能得到经过分数傅里叶变换加密后的图像f(x3,y3)。假设不存在RPMz,则整个系统存在5个密钥,分别是RPM1、2,λ,α和β,比单独使用分数傅里叶变换的加密系统多了2个密钥(z和λ),而此时整个加密系统并未增加任何光学元件。因此,由上面的分析可知,采用该系统比仅使用分数傅里叶变换的加密系统多了几重密钥,大大提高了系统的安全性。

⛄二、部分源代码

close all;clear all
f=imread(‘lena.bmp’,‘bmp’);
if ndims(f) == 3
f = rgb2gray(f);
end
f=imresize(f,[256,256]);
f=round(f);
figure
imshow(uint8(f));
title(‘原始图像’);
f=double(f);
[u,v]=size(f);
x=1:u;
y=1:v;
n(x,y)=abs(rand(u,v).*2.*pi);
b(x,y)=abs(rand(u,v).*2.*pi);
g=f.*exp(i.*n(x,y));% exp(i.*n(x,y))reduce peak signal
G=frft2d(g,[1.3,1.5]);
H=G.*exp(i.*b(x,y));
h=frft2d(H,[2.4,1.2]);
figure
imshow(uint8(h));
title(‘加密图像’)% 加密图像应该是一个complex-value 矩阵
%--------------------------------------------------------------------------
% h(1:2000)=0;
x1=1.49:0.001:1.51;
H1=frft2d(h,[-2.4,-1.2]);
G1=H1.*exp(-i.*b(x,y));
for m=1:length(x1);
struct_defined(m).g1=frft2d(G1,[-1.3,-x1(m)]);
struct_defined(m).f1=struct_defined(m).g1.*exp(-1i.*n(x,y));

%imshow(abs(struct_defined(1).f1),[]);title(‘解密图像’)% 需要quantitative analysis, PSNR,relative error,corelation coefficient。
struct_defined(m).f1=abs(struct_defined(m).f1);
[struct_defined(m).PSNR,struct_defined(m).MSE] = Psnr1( f,struct_defined(m).f1 );
[struct_defined(m).T]=similar(f,struct_defined(m).f1);
psnr(m)=struct_defined(m).PSNR;
mse(m)=struct_defined(m).MSE;
similar1(m)=struct_defined(m).T;
end
figure
imshow(abs(struct_defined(10).f1),[]);title(‘解密图像’)% 需要quantitative analysis, PSNR,relative error,corelation coefficient。
figure
plot(x1,mse);
xlabel(‘分数阶数’);
ylabel(‘MSE’);
hold on;

figure
plot(x1,psnr);
xlabel(‘分数阶数’);
ylabel(‘PSNR’);
hold on;
figure
plot(x1,similar1);
xlabel(‘分数阶数’);
ylabel(‘相关系数’);
hold on;
%display(struct_defined(m).PSNR)
%display(struct_defined(m).MSE)

⛄三、运行结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

⛄四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1]陈永红,黄席樾.基于混沌序列的图像加密解密算法[J].计算机科学. 2003,(12)

3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除

  • 7
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Matlab领域

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值