使用Matlab对图像进行频域滤波的代码
时间: 2024-02-15 15:04:07 浏览: 23
下面是使用Matlab对图像进行频域滤波的代码示例:
```matlab
% 读取图像
I = imread('lena.jpg');
% 转换为灰度图像
I = rgb2gray(I);
% 对图像进行傅里叶变换
F = fft2(I);
% 将零频分量移到频谱中心
F = fftshift(F);
% 构造滤波器
[M, N] = size(I);
H = zeros(M, N);
D0 = 40; % 截止半径
for i = 1:M
for j = 1:N
D = sqrt((i-M/2)^2 + (j-N/2)^2);
H(i,j) = exp(-(D^2)/(2*D0^2));
end
end
% 将滤波器应用于频谱
G = H .* F;
% 将零频分量移到频谱左上角
G = ifftshift(G);
% 对频谱进行反傅里叶变换
J = ifft2(G);
% 显示原图和滤波后的图像
figure;
subplot(1,2,1); imshow(I); title('原图');
subplot(1,2,2); imshow(abs(J),[]); title('滤波后');
```
在这个示例中,我们使用了高斯滤波器来对图像进行频域滤波。通过调整截止半径D0的值,可以控制滤波器的截止频率,从而达到不同的滤波效果。滤波后的图像可以通过取绝对值并进行灰度化来显示。
相关问题
Matlab图像增强—频域滤波代码
以下是一段 Matlab 中的频域滤波代码,用于图像增强:
```matlab
% 读取图像
img = imread('lena.png');
% 将图像转换为灰度图像
img = rgb2gray(img);
% 对图像进行傅里叶变换
fft_img = fft2(double(img));
% 将零频分量移到中心位置
fft_img = fftshift(fft_img);
% 滤波器
D0 = 20; % 截止频率
[M, N] = size(img);
H = zeros(M, N);
for i = 1:M
for j = 1:N
D = sqrt((i-M/2)^2 + (j-N/2)^2);
H(i, j) = exp(-(D^2)/(2*D0^2));
end
end
% 进行频域滤波
fft_img_filtered = fft_img .* H;
% 将零频分量移回原位置
fft_img_filtered = ifftshift(fft_img_filtered);
% 对滤波后的图像进行傅里叶反变换
img_filtered = real(ifft2(fft_img_filtered));
% 显示原图像和滤波后的图像
subplot(121), imshow(img);
title('Original Image');
subplot(122), imshow(img_filtered, []);
title('Filtered Image');
```
该代码使用了高斯低通滤波器,可以通过调整截止频率 D0 来控制滤波效果。滤波后的图像将会显示在右侧的图像窗口中。
matlab图像频域滤波代码
以下是matlab中进行图像频域滤波的示例代码:
```matlab
% 读入图像,转换为灰度图像
im = imread('lena.png');
if size(im, 3) == 3
im = rgb2gray(im);
end
% 进行二维傅里叶变换
f = fft2(double(im));
% 对频谱进行中心化,将低频部分移到图像中心
fshift = fftshift(f);
% 构造一个低通滤波器
[M, N] = size(im);
D0 = 50; % 滤波器半径
H = zeros(M, N);
for i = 1:M
for j = 1:N
D = sqrt((i-M/2)^2 + (j-N/2)^2);
if D <= D0
H(i, j) = 1;
end
end
end
% 将滤波器应用于频谱
G = H .* fshift;
% 对滤波后的频谱进行反变换,得到滤波后的图像
g = real(ifft2(ifftshift(G)));
% 显示原图和滤波后的图像
figure;
subplot(1, 2, 1);imshow(im);title('原图');
subplot(1, 2, 2);imshow(g, []);title('滤波后的图像');
```
在上述代码中,我们首先读入图像并将其转换为灰度图像,然后利用`fft2`函数对图像进行二维傅里叶变换,得到图像的频谱。接着,我们对频谱进行中心化,将低频部分移到图像中心。然后,我们构造一个低通滤波器,将其应用于频谱。最后,我们对滤波后的频谱进行反变换,得到滤波后的图像,并显示原图和滤波后的图像。