相位掩膜+傅立叶变换进行图像加密

本文通过使用傅立叶变换及随机相位掩膜的方式对图像进行加密和解密。首先将图像转换为double格式并进行傅立叶变换,然后利用预设的随机数作为密钥生成相位掩膜,对图像进行加密。最后通过逆变换实现图像的解密。
I=imread('1.jpg');% 载入图像
A=im2double(I);% 将图像转为double格式
figure,imshow(A);title('The original image');% 显示图像
 
%加密部分
Y=fftshift(A);% 傅立叶变换部分调整整幅图像,将零频点移到频谱的中间
figure,imshow(Y);title('shifted image');%显示
B=fft2(Y);% 二维傅立叶变换
figure,imshow(B);title('FFT imagea');%显示

%M1=rand(255/255);% 随机生成密钥
M1=0.814%这里你自己更改你想要的值,只要是0~1范围内就好

M11=exp(i*2*pi*M1);%M11为根据随机相位生成的图像掩膜
M111=B.*M11; %将要加密的图像和掩膜相乘
figure,imshow(M111);title('phase mask');%显示加密图像
 
D=fft2(M111); % 再次傅立叶变换
figure,imshow(D);title('FFT image b');
 
C=abs(D);%对经过两次傅立叶变化的图像像素灰度取绝对值
 
 
%解密部分
C1=ifft2(C); % 二维傅立叶逆变换
figure,imshow(C1);title('2-D IFFT b');%显示进行一次傅立叶逆变换的图像
C11=C1.*exp(-i*2*pi*M1); % 移除掩膜,这个M1就是信息发送方和接收方事先约定好的密钥,接收加密图像的人必须知道M1才能正确解密。
%这个程序只是演示加密解密过程,就随机生成的M1,不然应该是有一个密钥文件记录M1,双方保留。
figure,imshow(C11);title('remove mask');%显示移除掩膜后的图像
C111=ifft2(C11); %二维傅立叶逆变换
figure,imshow(C111);title('2-D IFFT a');%显示去除掩膜和进行两次傅立叶变换的图像
C1111=ifftshift(C111); %将零频点还原到原始位置
F=abs(C1111); %取绝对值
figure,imshow(F);title('The decrypted image');%显示,得到了最终解密后到图像

评论 10
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值