2013-11-27 250 views
1

例如,我具有任意的过滤器:Matlab图像频域滤波

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

如何可以将此过滤器应用到图像?我在互联网上搜索有关应用滤波器的内容,就像使用matlab内部滤波器模型,它不是这样的。

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

+0

你想要在频域或时域做它吗? – ederwander

回答

0

在频域中应用滤波器意味着应用Fourier Transform of Convolution. 这与将滤波器和信号相乘一样简单。

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

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

过滤的时域:

resultImage = conv2(originalImage, filter); 
2
在频域

过滤和b以在sti图像中最佳滤除图像中的高频噪声会保留这些边缘特征。

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

我会建议你使用sin(pi*a*u)*cos(pi*b*v),你可能需要调整的a

filteredImage = H.*Image 
+0

谢谢。因此,对于sin矢量化乘法cos,是不是意味着它们的行和列应该像X * Y和Y * Z,而X,Z是图像的行数和列数? –

+0

是的。我还建议你使用H = exp( - (u。^ 2 + v。^ 2)/ a)来比较两个低通滤波器 – lennon310

0

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

FilterImage = imfilter(Image, H)