matlab 频域滤波
时间: 2023-11-19 08:52:00 浏览: 91
MATLAB中的频域滤波
5星 · 资源好评率100%
好的,关于 MATLAB 的频域滤波,可以通过以下步骤实现:
1. 读取图像并进行傅里叶变换:
```matlab
img = imread('image.jpg');
img_fft = fft2(img);
img_fft_shift = fftshift(img_fft);
```
2. 构造滤波器:
```matlab
[M, N] = size(img);
H = zeros(M, N);
D0 = 50; % 截止频率
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
```
这里使用了高斯低通滤波器,截止频率为 D0。
3. 将滤波器应用于频域图像:
```matlab
img_fft_filtered = img_fft_shift .* H;
```
4. 进行逆傅里叶变换并显示结果:
```matlab
img_filtered = ifft2(ifftshift(img_fft_filtered));
imshow(uint8(abs(img_filtered)));
```
这里使用了 ifftshift 和 fftshift 函数来进行频域图像的中心化和反中心化。
阅读全文