你给的代码有错,读取图片的时候应该加一个im2double
时间: 2024-04-10 17:33:52 浏览: 149
非常抱歉给您带来困扰,确实在读取图片时需要使用`im2double`函数将图像转换为双精度格式。以下是修改后的代码示例:
```matlab
% 读取原始图像
originalImage = im2double(imread('input_image.jpg'));
imshow(originalImage);
title('原始图像');
% 定义离焦点扩散函数(PSF)
psf = fspecial('motion', 21, 11); % 这里使用了motion模糊函数作为示例
% 对原始图像进行离焦卷积
blurredImage = imfilter(originalImage, psf, 'conv', 'circular');
figure;
imshow(blurredImage);
title('离焦后的图像');
% 对离焦图像进行反卷积恢复
restoredImage = deconvwnr(blurredImage, psf);
figure;
imshow(restoredImage);
title('恢复后的图像');
% 可视化点扩散函数(PSF)
figure;
mesh(psf);
title('点扩散函数(PSF)可视化');
```
在这个示例中,我们在读取图像时使用了`im2double`函数将图像转换为双精度格式,以便进行后续的计算和处理。
非常抱歉之前的错误造成了困扰,希望这个修改后的代码能够解决问题。如果还有其他疑问,请随时提问。
阅读全文