matlab图像处理频域降噪代码
时间: 2023-07-06 16:37:44 浏览: 187
以下是一个简单的 MATLAB 代码示例,演示如何使用傅里叶变换进行图像降噪。
```matlab
% 读入图像
img = imread('image.jpg');
% 转换为灰度图像
img = rgb2gray(img);
% 显示原始图像
figure, imshow(img), title('Original Image');
% 对图像进行傅里叶变换
F = fft2(img);
% 将零频分量移到中心
Fshift = fftshift(F);
% 取绝对值并取对数,以便于显示
S = log(1 + abs(Fshift));
% 显示傅里叶变换后的频谱
figure, imshow(S, []), title('Spectrum');
% 构造一个高斯滤波器
[M, N] = size(img);
sigma = 20;
[X, Y] = meshgrid(1:N, 1:M);
centerX = ceil(N/2);
centerY = ceil(M/2);
h = exp(-((X-centerX).^2 + (Y-centerY).^2)/(2*sigma^2));
% 对频域图像进行滤波
G = Fshift .* h;
% 将零频分量移到左上角
Gshift = ifftshift(G);
% 对滤波后的频域图像进行傅里叶反变换,得到降噪后的图像
I = real(ifft2(Gshift));
% 显示降噪后的图像
figure, imshow(I, []), title('Filtered Image');
```
在上面的代码中,我们首先读入一张图像,然后将其转换为灰度图像。接下来,我们对图像进行傅里叶变换,并将零频分量移到中心。然后,我们构造一个高斯滤波器,并将其应用于频域图像。最后,我们将零频分量移到左上角,并对滤波后的频域图像进行傅里叶反变换,以得到降噪后的图像。
阅读全文