matlab图像带通滤波器的代码
时间: 2023-11-03 11:03:14 浏览: 80
DFT的matlab源代码-Image-High-Pass-Filter-DFT-CUDA-:使用离散傅里叶变换的频域图像高通滤波
以下是Matlab的图像带通滤波器代码:
```matlab
% 读入图像
img = imread("image.jpg");
% 定义带通滤波器
D0 = 50; % 中心频率
W = 20; % 带宽
[n, m] = size(img);
H = zeros(n, m);
for i = 1:n
for j = 1:m
D = sqrt((i-n/2)^2 + (j-m/2)^2); % 到中心的距离
if D > D0-W/2 && D < D0+W/2 % 在带宽内
H(i, j) = 1; % 通过
end
end
end
% 频域滤波
F = fft2(img);
F = F .* H;
fimg = ifft2(F);
% 显示结果
fimg = abs(fimg);
fimg = (fimg - min(fimg(:))) / (max(fimg(:)) - min(fimg(:))); % 归一化
imshow(fimg);
```
这段代码实现了一个中心频率为50,带宽为20的带通滤波器,并将其应用于输入图像。
阅读全文