用matlab写出完整代码
时间: 2023-08-23 17:22:35 浏览: 85
A完整代码matlab
好的,下面是完整的MATLAB代码:
```matlab
% 读取图像
img = imread('lena.jpg');
% 添加高斯噪声
noisy_img = imnoise(img, 'gaussian', 0, 0.01);
% 显示原图像和噪声图像
figure
subplot(1,2,1), imshow(img), title('Original')
subplot(1,2,2), imshow(noisy_img), title('Noisy')
% 生成高斯滤波器
kernel = fspecial('gaussian', [5 5], 1);
% 逆滤波复原
eps = 1e-3;
restored_img = deconvwnr(noisy_img, kernel, eps);
% 显示复原后的图像
figure, imshow(restored_img), title('Restored')
% 输出图像
imwrite(img, 'original.jpg')
imwrite(noisy_img, 'noisy.jpg')
imwrite(restored_img, 'restored.jpg')
```
其中,imread函数用于读取图像,imnoise函数用于添加高斯噪声,fspecial函数用于生成高斯滤波器,deconvwnr函数用于进行逆滤波复原。在这里,我们使用了MATLAB自带的deconvwnr函数来进行逆滤波复原,它会自动进行傅里叶变换和频域滤波。eps是一个很小的正数,用于避免除0错误。
注意,在MATLAB中,图像矩阵的像素值范围是[0,255],因此需要使用imwrite函数将图像保存为JPEG格式。如果想要保存为其他格式,可以使用imwrite函数的第三个参数来指定。
阅读全文