【发布时间】:2013-12-12 17:28:03
【问题描述】:
例如,我有一个任意过滤器:
H = 12*(sin(PI*u)*cos(PI*v))
如何将此滤镜应用于图像?我在网上搜索了关于应用过滤器的内容,就像使用matlab内部过滤器模型一样,不是这样的。
我是图像处理的新手,感谢您的帮助。
【问题讨论】:
-
你想在频域还是时域做?
标签: matlab image-processing filtering frequency
例如,我有一个任意过滤器:
H = 12*(sin(PI*u)*cos(PI*v))
如何将此滤镜应用于图像?我在网上搜索了关于应用过滤器的内容,就像使用matlab内部过滤器模型一样,不是这样的。
我是图像处理的新手,感谢您的帮助。
【问题讨论】:
标签: matlab image-processing filtering frequency
频域滤波:
originalImage_fft = fft2(originalImage);
filter_fft = fft2(filter);
resultImage_fft = originalImage_fft .* filter_fft;
resultImage = ifft2(resultImage_fft);
时域过滤:
resultImage = conv2(originalImage, filter);
【讨论】:
ImageFreDomain = fft2(ImageTimeDomain);
FilteredImageFreDomain = ImageFreDomain .* H;
FilteredImageTimeDomain = real(ifft(FilteredImageFreDomain));
imagesc(FilteredImageTimeDomain)
我建议您使用sin(pi*a*u)*cos(pi*b*v),您可能需要调整a 和b 的值,以最好地滤除图像中的高频噪声,同时仍保留这些边缘特征。
【讨论】:
在频域中应用滤波器意味着应用Fourier Transform of Convolution. 这就像将 Filter 和 Signal 相乘一样简单。
filteredImage = H.*Image
【讨论】:
您可以为此目的使用图像处理工具箱imfilter 的过滤器。您的应用程序的语法是:
FilterImage = imfilter(Image, H)
【讨论】: