matlab图像频域滤波,滤除高斯白噪声,代码
时间: 2023-08-22 10:06:40 浏览: 111
频域滤波_organizedtt3_matlab;灰度图像频域滤波_beanxtv_频域滤波算法_频域延拓_
5星 · 资源好评率100%
以下是一种基于频域滤波的 MATLAB 代码,可以用于滤除高斯白噪声:
```matlab
% 读取图像
img = imread('lena.jpg');
% 添加高斯白噪声
noise = imnoise(img, 'gaussian', 0.1);
% 对傅里叶变换进行中心化
f = fftshift(fft2(noise));
% 构造高斯滤波器
[m, n] = size(noise);
sigma = 10;
[x, y] = meshgrid(1:n, 1:m);
centerX = ceil(n/2);
centerY = ceil(m/2);
gFilter = exp(-((x-centerX).^2 + (y-centerY).^2) / (2*sigma^2));
% 应用滤波器
filtered = abs(ifft2(ifftshift(f .* gFilter)));
% 显示结果
figure;
subplot(1,2,1), imshow(noise), title('添加高斯白噪声的图像');
subplot(1,2,2), imshow(filtered, []), title('滤波后的图像');
```
这段代码首先读取一张图像,然后使用`imnoise`函数添加高斯白噪声。接着,将图像的傅里叶变换进行中心化,以便于后续的频域滤波操作。然后,使用高斯函数构造一个高斯滤波器,其中`sigma`参数控制滤波器的带宽。最后,将傅里叶变换与高斯滤波器相乘,再进行反傅里叶变换,得到滤波后的图像。
阅读全文