matlab 维纳滤波复原
时间: 2024-01-07 20:22:24 浏览: 79
维纳滤波是一种常用的图像复原方法,用于去除图像中的噪声。它基于图像的功率谱和噪声功率谱之间的关系进行图像恢复。下面是一个使用Matlab进行维纳滤波复原的示例:
```matlab
% 读取原始图像
originalImage = imread('original_image.jpg');
% 添加高斯噪声
noisyImage = imnoise(originalImage, 'gaussian', 0, 0.01);
% 计算原始图像和噪声图像的功率谱
originalPowerSpectrum = abs(fftshift(fft2(originalImage)));
noisePowerSpectrum = abs(fftshift(fft2(noisyImage)));
% 计算噪声功率谱
noisePower = noisePowerSpectrum - originalPowerSpectrum;
% 计算维纳滤波器的频域表示
weinerFilter = conj(originalPowerSpectrum) ./ (originalPowerSpectrum + noisePower);
% 对噪声图像进行维纳滤波
restoredImage = real(ifft2(ifftshift(fftshift(fft2(noisyImage)) .* weinerFilter)));
% 显示结果
subplot(1, 2, 1), imshow(noisyImage), title('Noisy Image');
subplot(1, 2, 2), imshow(uint8(restoredImage)), title('Restored Image');
```
在这个示例中,我们首先读取原始图像,然后添加高斯噪声。接下来,我们计算原始图像和噪声图像的功率谱,并计算噪声功率谱。然后,我们根据维纳滤波器的频域表示对噪声图像进行滤波,最后显示复原后的图像。
阅读全文