【问题标题】:The equivalent function of Matlab imfilter in PythonPython中matlab imfilter的等效函数
【发布时间】:2014-04-04 05:48:10
【问题描述】:

我知道MATLAB的conv2corr2的等效函数是scipy.signal.correlatescipy.signal.convolve。但是函数imfilter 具有处理数组边界之外的属性。比如symmetricreplicatecircular。 Python 能做到这些吗

【问题讨论】:

    标签: python matlab scipy


    【解决方案1】:

    我需要在 Python 中为 Matlab 中的高斯滤波器复制完全相同的结果,并得出以下结果:

    Matlab:

    A = imfilter(A, fspecial('gaussian',12,3));
    

    Python:

    A = scipy.ndimage.correlate(A, matlab_style_gauss2D((12,12),3), mode='constant', origin=-1)
    

    其中matlab_style_gauss2D 可以取自How to obtain a gaussian filter in python

    【讨论】:

      【解决方案2】:

      对我来说,之前的选项与 MATLAB 的 imfilter 的工作方式不同,而是我使用了 cv2.filter2D。代码是:

      import cv2
      
      filtered_image = cv2.filter2D(image, -1, kernel)
      

      原图是:

      使用 MATLAB 的imfilter

      使用scipy.ndimage.convolvescipy.ndimage.correlate

      还有cv2.filter2D

      由于我从 MATLAB 和 cv2 保存图像的方式,它们在这里看起来并不完全相同,但相信我,它们是。

      【讨论】:

        【解决方案3】:

        只是为了添加一些可靠的代码,我希望 imfilter(A, B) 在 python 中等效于简单的二维图像和过滤器(内核)。我发现以下结果与 MATLAB 相同:

        import scipy.ndimage
        import numpy as np
        scipy.ndimage.correlate(A, B, mode='constant').transpose()
        

        对于给定的问题,这将起作用:

        scipy.ndimage.correlate(A, B, mode='nearest').transpose()
        

        请注意,由于某种原因,MATLAB 会返回预期答案的转置。

        有关更多选项,请参阅文档 here

        编辑 1:

        MATLAB 提供了更多选项,如 here 所述。具体来说,如果我们希望使用 'conv' 选项,我们有 MATLAB 代码(例如):

        imfilter(x, f, 'replicate', 'conv')
        

        这与 python 等价:

        scipy.ndimage.convolve(x, f, mode='nearest')
        

        注意 MATLAB 中的 'replicate' 与 Python 中 SciPy 中的 'nearest' 相同。

        【讨论】:

          【解决方案4】:

          使用函数scipy.ndimage.filters.correlatescipy.ndimage.filters.convolve

          【讨论】:

          • 您能详细说明一下吗?我正在尝试完全复制profil2 = imfilter(profil,h,'replicate');
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2021-04-22
          • 2014-03-06
          • 1970-01-01
          • 2020-03-17
          • 2019-10-04
          • 2013-03-29
          • 2014-04-02
          相关资源
          最近更新 更多