2013-11-27 520 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)