【图像加密】基于双随机相位结构结合菲涅尔变换实现无透镜光学加密解密附Matlab代码

以下是基于双随机相位结构结合菲涅尔变换实现无透镜光学图像加密和解密的示例Matlab代码:

图像加密:

matlab

function encrypted_image = encryptImage(image)

% 转换为灰度图像

if size(image, 3) == 3

image = rgb2gray(image);

end

复制代码
% 双随机相位结构生成
[M, N] = size(image);
random_phase1 = exp(1i * 2 * pi * rand(M, N));
random_phase2 = exp(1i * 2 * pi * rand(M, N));

% 菲涅尔变换
spectrum = fftshift(fft2(image));
encrypted_spectrum = spectrum .* random_phase1 .* random_phase2;

% 逆菲涅尔变换
encrypted_image = ifft2(fftshift(encrypted_spectrum));
encrypted_image = abs(encrypted_image);

end

图像解密:

matlab

复制

function decrypted_image = decryptImage(encrypted_image)

% 菲涅尔变换

spectrum = fftshift(fft2(encrypted_image));

复制代码
% 提取双随机相位结构
random_phase1 = angle(spectrum);
random_phase2 = angle(fftshift(ifft2(spectrum)));

% 解密
decrypted_spectrum = abs(spectrum) .* exp(1i * random_phase1) ./ exp(1i * random_phase2);

% 逆菲涅尔变换
decrypted_image = ifft2(fftshift(decrypted_spectrum));
decrypted_image = abs(decrypted_image);

end

相关推荐
友莘居士10 分钟前
创建信任所有证书的HttpClient:Java 实现 HTTPS 接口调用,等效于curl -k
java·开发语言·https·httpclient·curl -k
coding随想35 分钟前
JavaScript的三大核心组成:ECMAScript、DOM与BOM
开发语言·javascript·ecmascript
0xCC说逆向1 小时前
Windows逆向工程提升之IMAGE_EXPORT_DIRECTORY
开发语言·数据结构·windows·安全·网络安全·pe结构·逆向工程
带电的小王1 小时前
C++:动态刷新打印内容
开发语言·c++
hie988941 小时前
基于DPABI提取nii文件模板的中心点坐标
matlab
贺函不是涵1 小时前
【沉浸式求职学习day47】【JSP详解】
java·开发语言·学习
满怀10151 小时前
【Python正则表达式终极指南】从零到工程级实战
开发语言·python·正则表达式·自动化·文本处理·数据清晰
草莓熊Lotso1 小时前
【自定义类型-结构体】--结构体类型,结构体变量的创建和初始化,结构体内存对齐,结构体传参,结构体实现位段
c语言·开发语言·经验分享·笔记·其他
旋风菠萝1 小时前
八股--SSM(2)
java·开发语言·数据库·八股·八股文·复习
攻心的子乐2 小时前
Flyweight(享元)设计模式 软考 享元 和 代理属于结构型设计模式
java·开发语言