matlab对图像进行维纳滤波代码
时间: 2023-08-23 15:04:00 浏览: 92
以下是一个使用MATLAB进行维纳滤波的示例代码```matlab
% 读取输入图像
inputImage = imread('input_image.jpg');
% 转换为灰度图像
grayImage = rgb2gray(inputImage);
% 添加高噪声
noisyImage = imnoise(grayImage, 'gaussian', 0, 0.01);
% 计算图像的功率谱密度
psd = abs(fftshift(fft2(noisyImage))).^2;
% 设计维纳滤波器
K = 0.01; % 维纳滤波器参数,可以根据实际情况调整
wienerFilter = conj(fftshift(fft2(noisyImage))) ./ (psd + K);
% 对图像进行维纳滤波
filteredImage = ifft2(ifftshift(wienerFilter .* fftshift(fft2(noisyImage))));
% 显示结果图像
figure;
subplot(1, 2, 1); imshow(noisyImage); title('Noisy Image');
subplot(1, 2, 2); imshow(abs(filteredImage), []); title('Filtered Image');
```
上述代码首先读取输入图像,并将其转换为灰度图像。然后,使用imnoise函数向图像添加高斯噪声。接下来,计算图像的功率谱密度(PSD)。然后,根据维纳滤波器的公式设计维纳滤波器。最后,将维纳滤波器应用于傅里叶变换后的图像,并使用ifft2函数将其转换回空间域。最终,显示原始噪声图像和经过维纳滤波后的图像。请根据实际情况调整维纳滤波器参数K的值。
阅读全文