matlab的imregionalmax()和scipy.ndimage.filters.maximum_filter有什么区别

问题描述 投票:0回答:2

我需要找到图像的区域最大值以获得用于分水岭分割的前景标记。我在matlab中看到使用函数

imregionalmax()
。由于我没有matlab软件,所以我使用函数
scipy.ndimage.filters.maximum_filter()
代替。然而,
imregionalmax()
scipy.ndimage.filters.maximum_filter()
的结果是不同的。

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

python matlab image-processing computer-vision image-segmentation
2个回答
9
投票

看起来好像 scipy 的

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

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

应该会给出与 Matlab 类似的结果。


4
投票

我是Python新手,但我花了很多时间找到Matlab的100%等效的

imregionalmax()
。对于我来说,由于我有巨大的 3D 数组,上面的
msk = (img == lm)
不起作用。我改为使用
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)

© www.soinside.com 2019 - 2024. All rights reserved.