例如,我有一个任意过滤器:
H = 12*(sin(PI*u)*cos(PI*v))
如何将此滤镜应用于图像?我在互联网上搜索过关于应用过滤器的内容,就像使用matlab内部过滤器模型一样,不像这个。
我是图像处理的新手,感谢您的帮助。
答案 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)
,您可能需要调整a
和b
的值,以便最好地滤除图像中的高频噪声,同时仍保留这些边缘特征
答案 2 :(得分:0)
在频域中应用过滤器意味着应用Fourier Transform of Convolution. 这就像乘以滤波器和信号一样简单。
filteredImage = H.*Image
答案 3 :(得分:0)
您可以使用图像处理工具箱imfilter的过滤器来实现此目的。您的应用程序的语法是:
FilterImage = imfilter(Image, H)