matlab图像频域滤波

时间:2013-11-27 07:25:42

标签: matlab image-processing filtering frequency

例如,我有一个任意过滤器:

H = 12*(sin(PI*u)*cos(PI*v))

如何将此滤镜应用于图像?我在互联网上搜索过关于应用过滤器的内容,就像使用matlab内部过滤器模型一样,不像这个。

我是图像处理的新手,感谢您的帮助。

4 个答案:

答案 0 :(得分:3)

在频域过滤:

originalImage_fft = fft2(originalImage);
filter_fft = fft2(filter);

resultImage_fft = originalImage_fft .* filter_fft;
resultImage = ifft2(resultImage_fft);

在时域中过滤:

resultImage = conv2(originalImage, filter);

答案 1 :(得分:1)

ImageFreDomain = fft2(ImageTimeDomain);
FilteredImageFreDomain = ImageFreDomain .* H;
FilteredImageTimeDomain = real(ifft(FilteredImageFreDomain));
imagesc(FilteredImageTimeDomain)

我建议您使用sin(pi*a*u)*cos(pi*b*v),您可能需要调整ab的值,以便最好地滤除图像中的高频噪声,同时仍保留这些边缘特征

答案 2 :(得分:0)

在频域中应用过滤器意味着应用Fourier Transform of Convolution. 这就像乘以滤波器和信号一样简单。

filteredImage = H.*Image

答案 3 :(得分:0)

您可以使用图像处理工具箱imfilter的过滤器来实现此目的。您的应用程序的语法是:

FilterImage = imfilter(Image, H)