【问题标题】:What is the difference between imregionalmax() of matlab and scipy.ndimage.filters.maximum_filtermatlab的imregionalmax()和scipy.ndimage.filters.maximum_filter有什么区别
【发布时间】:2015-02-20 06:45:33
【问题描述】:

我需要找到图像的区域最大值以获得用于分水岭分割的前景标记。我在 matlab 中看到使用函数imregionalmax()。由于我没有matlab软件,所以我改用scipy.ndimage.filters.maximum_filter()这个函数。但是,imregionalmax()scipy.ndimage.filters.maximum_filter() 的结果不同。

请帮助我找出图像的区域最大值。非常感谢您的帮助。

【问题讨论】:

    标签: python matlab image-processing computer-vision image-segmentation


    【解决方案1】:

    我是 Python 新手,但我花了很多时间来找到 100% 等效于 Matlab 的 imregionalmax()。对我来说,上面的msk = (img == lm) 不起作用,因为我有巨大的 3D 阵列。我改为使用scikit-images.peak_local_max,如下所示:

    1) 将 conn_26 定义为 3x3x3 数组。

    2) coordinates = peak_local_max(3D_img, footprint=conn_26,indices=False,exclude_border=0)

    类似于coordinates = imregionalmax(3D_img,26)

    希望这会有所帮助:)

    【讨论】:

      【解决方案2】:

      似乎 scipy 的 maximum_filter 返回实际的局部最大值,而 Matlab 的 imregionalmax 返回带有局部最大值的位置的掩码。
      我会期待

       lm = scipy.ndimage.filters.maximum_filter( img, ... )
       msk = (img == lm) #// convert local max values to binary mask
      

      应该给你类似 Matlab 的结果。

      【讨论】:

      • 我得到了与 Matlab 相似的结果。非常感谢。
      • 你知道这是真的,但scipy.ndimage.filters.masximum_filter(...) 不像imregionalmax 它如何使索引为布尔值,但它不一样
      猜你喜欢
      • 2013-03-26
      • 2012-12-20
      • 1970-01-01
      • 2016-02-20
      • 2012-01-14
      • 2015-05-24
      • 2013-05-17
      • 1970-01-01
      • 2011-04-26
      相关资源
      最近更新 更多