【问题标题】:matlab image frequency domain filteringmatlab图像频域滤波
【发布时间】:2013-12-12 17:28:03
【问题描述】:

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

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

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

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

【问题讨论】:

  • 你想在频域还是时域做?

标签: matlab image-processing filtering frequency


【解决方案1】:

频域滤波:

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

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

时域过滤:

resultImage = conv2(originalImage, filter);

【讨论】:

    【解决方案2】:
    ImageFreDomain = fft2(ImageTimeDomain);
    FilteredImageFreDomain = ImageFreDomain .* H;
    FilteredImageTimeDomain = real(ifft(FilteredImageFreDomain));
    imagesc(FilteredImageTimeDomain)
    

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

    【讨论】:

    • 谢谢。那么对于sin can vectorized multiply cos,是不是意味着它们的行列数应该是XY和YZ,而X、Z就是图像的行数和列数?跨度>
    • 是的。而且我还建议您使用 H=exp(-(u.^2+v.^2)/a) 来比较两个低通滤波器
    【解决方案3】:

    在频域中应用滤波器意味着应用Fourier Transform of Convolution. 这就像将 Filter 和 Signal 相乘一样简单。

    filteredImage = H.*Image
    

    【讨论】:

      【解决方案4】:

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

      FilterImage = imfilter(Image, H) 
      

      【讨论】:

        猜你喜欢
        • 2015-06-08
        • 2014-12-02
        • 2014-05-26
        • 1970-01-01
        • 2013-12-05
        • 1970-01-01
        • 2017-05-28
        • 2021-02-01
        • 2013-10-29
        相关资源
        最近更新 更多