matlab图像带阻滤波器的代码
时间: 2023-09-23 12:12:22 浏览: 61
以下是使用 MATLAB 实现图像带阻滤波器的代码示例:
```matlab
% 读取图像文件
img = imread('lena.jpg');
img = double(img)/255;
% 定义滤波器参数
D0 = 0.02;
D1 = 0.04;
n = 2;
% 构造滤波器
mask = zeros(size(img));
for i = 1:size(img,1)
for j = 1:size(img,2)
D = sqrt((i-size(img,1)/2)^2 + (j-size(img,2)/2)^2);
if(D>D0 && D<D1)
mask(i,j) = 1;
elseif(D<1 || D>n)
mask(i,j) = 0;
else
mask(i,j) = (1 - cos(pi*log(D/D0)/log(D1/D0))) / 2;
end
end
end
% 应用滤波器
fft_img = fftshift(fft2(img));
fft_filtered = mask .* fft_img;
filtered = abs(ifft2(ifftshift(fft_filtered)));
% 显示图像
subplot(1,2,1),imshow(img)
title('原图')
subplot(1,2,2),imshow(filtered)
title('带阻滤波后的图像')
```
该代码将读取名为“lena.jpg”的图像文件,并使用非常常见的带阻滤波器对其进行滤波。在这种方法中,图像的傅里叶变换可用于应用频率域滤波器。在这个例子中,我们使用阻带滤波器来滤除特定频率的噪声,并保留图像中的其他频率。