2013-10-27 71 views
0

在下面的图像中,我已经计算了图像的傅里叶变换。现在我想在DO = 50的同一图像上应用理想的高通滤波器。傅立叶变换的代码在Image中提到。 enter image description here傅里叶变换滤波器

+0

如果你有信号处理工具箱,那么你可以使用的FDATool设计滤波器,后来,你可以在过滤器命令中使用的滤波器系数。 – User1551892

+0

我不想使用工具箱。我想通过代码来完成。 –

回答

1

我不知道什么理想的高通滤波器。所以,我认为HPF是一个圆形滤波器。 这是我的代码。

lena = im2double(rgb2gray(imread('lena.bmp'))); 
D0 = 50; 
lpf = zeros(size(lena)); 
base_x = linspace(-size(lena,1)/2,size(lena,1)/2,size(lena,1)); 
base_y = linspace(-size(lena,2)/2,size(lena,2)/2,size(lena,2)); 
[x,y] = meshgrid(base_x, base_y); 
lpf(x.^2+y.^2<D0^2) = 1; 
hpf = 1-lpf; 

LENA = fftshift(fft2(lena)); 
RESULT = LENA.*hpf; 
result = abs(ifft2(RESULT)); 
figure, imshow(result,[]) 

首先,我使用1-LPF制造HPF。 (LPF的形状是圆形的)。 由HPF按像素乘以图像。 最后,ifft IMAGE。

当您运行上述代码时,您可以获得此结果。

original image 原始图像 HPF image HPF图片 result image结果图像

+1

你为什么不在HPF之后'fftshift'回来? – Shai

+1

哦!我忘记了应用fftshift! 'result = ifft2(ifftshift(RESULT)); '是更正确的答案。谢谢! –