MATLAB中逆滤波图像复原的代码
时间: 2024-04-14 15:07:05 浏览: 131
逆滤波在图像处理中是一种常用的图像复原技术,MATLAB中可以采用以下代码实现逆滤波图像复原:
```matlab
% 读取图像
img = imread('image.jpg');
% 添加模糊和噪声
PSF = fspecial('motion', 20, 45);
blurred = imfilter(img, PSF, 'conv', 'circular');
noise_mean = 0;
noise_var = 0.0001;
blurred_noisy = imnoise(blurred, 'gaussian', noise_mean, noise_var);
% 设置逆滤波参数
LEN = 21;
THETA = 11;
PSF = fspecial('motion', LEN, THETA);
J = deconvwnr(blurred_noisy, PSF);
% 显示图像
subplot(131), imshow(img), title('原始图像');
subplot(132), imshow(blurred_noisy), title('模糊和噪声图像');
subplot(133), imshow(J), title('逆滤波图像复原');
```
以上代码中,通过`imread`函数读取图像,并通过`fspecial`函数创建运动模糊点扩散函数,模拟图像的模糊效果。然后,通过`imnoise`函数添加高斯噪声。接着,设置逆滤波参数,使用`deconvwnr`函数进行逆滤波图像复原,并通过`subplot`和`imshow`函数显示原始图像、模糊和噪声图像以及逆滤波图像复原结果。
阅读全文