% 加载原始图片
I = im2double(imread('D1原始图像.jpg'));
% 随机生成运动模糊参数
LEN = randi([100, 500], 1); % 长度密钥
THETA = randi([0, 90], 1); % 角度密钥
% 生成运动模糊核
PSF = fspecial('motion', LEN, THETA);
% 应用运动模糊核
blurred = imfilter(I, PSF, 'conv', 'circular');
% 添加高斯噪声
sigma = 0.01;
noisy_blurred = imnoise(blurred, 'gaussian', 0, sigma^2);
% 加密运动模糊图像
key = randi([0, 1], [size(I, 1), size(I, 2)]);
encrypted = xor(noisy_blurred, key);
% 保存加密后的运动模糊图像
imwrite(encrypted, 'encrypted_motion_blur.png');
% 读取加密后的运动模糊图像
encrypted = imread('encrypted_motion_blur.png');
% 解密运动模糊图像
denoised = wiener2(encrypted, [5, 5]);
% 估计运动模糊参数
[estimated_LEN, estimated_THETA] = estimate_motion_blur_params(denoised);
% 使用估计的运动模糊参数生成运动模糊核
estimated_PSF = fspecial('motion', estimated_LEN, estimated_THETA);
% 使用自适应维纳滤波器还原原始图像
deblurred = deconvwnr_adaptive(denoised, estimated_PSF, sigma);
% 解密运动模糊图像
decrypted = xor(deblurred, key);
% 显示原始图像和解密后的图像
figure
subplot(1,3,1), imshow(I), title('原始图像')
subplot(1,3,2), imshow(encrypted), title('加密后的图像')
subplot(1,3,3), imshow(decrypted), title('解密后的图像')
% 估计运动模糊参数的函数
function [estimated_LEN, estimated_THETA] = estimate_motion_blur_params(image)
% 根据图像内容估计运动模糊参数
estimated_LEN = 250;
estimated_THETA = 45;
end
% 自适应维纳滤波器的函数
function deblurred = deconvwnr_adaptive(image, PSF, sigma)
% 根据图像内容自适应选择适当的维纳滤波参数
NSR = sigma^2 / var(image(:));
deblurred = deconvwnr(image, PSF, NSR);
end
```