我需要找到图像的区域最大值以获得用于分水岭分割的前景标记。我在matlab中看到使用函数
imregionalmax()
。由于我没有matlab软件,所以我使用函数scipy.ndimage.filters.maximum_filter()
代替。然而,imregionalmax()
和scipy.ndimage.filters.maximum_filter()
的结果是不同的。
请帮助我如何找出图像的区域最大值。非常感谢您的帮助。
看起来好像 scipy 的
maximum_filter
返回实际的局部最大值,而 Matlab 的 imregionalmax
返回带有局部最大值的 locations 的掩码。 lm = scipy.ndimage.filters.maximum_filter( img, ... )
msk = (img == lm) #// convert local max values to binary mask
应该会给出与 Matlab 类似的结果。
我是Python新手,但我花了很多时间找到Matlab的100%等效的
imregionalmax()
。对于我来说,由于我有巨大的 3D 数组,上面的 msk = (img == lm)
不起作用。我改为使用 scikit-images.peak_local_max
,如下所示:
定义
conn_26
为 3x3x3 的数组。
coordinates = peak_local_max(3D_img, footprint=conn_26,indices=False,exclude_border=0)
类似于
coordinates = imregionalmax(3D_img,26)