如何移除小于给定半径的岛屿并指定岛屿之间的最小间隙
How to remove islands smaller than a given radius and specify minimum gap between islands
我有一些数据在 Python 3.5 中被分割成多个 类。生成的图像如下
原图
我要删除的数据中有很多小岛。我在下面圈出一些来给出一个想法,但是有很多。
带有一些噪点的原图
我的想法是,我希望能够指定一个最小半径,低于该半径应删除噪声岛。
我尝试了几种使用 scikit 图像形态过滤器的不同方法。我已经尝试组合灰度关闭和打开过滤器(如下图所示),我也尝试使用 remove_small_objects 过滤器并分别处理每对 类 并在最后组合它们。他们确实致力于消除噪声岛(如下所示),但这会产生一个新问题。一些岛屿之间的边界很薄,我也不想要!
应用了灰度开放并圈出薄区域的图像
基本上,我想移除噪声岛,但每个岛之间的间隙也要最小。
如有任何帮助,我们将不胜感激。
编辑:
对预期结果的一些说明:
期望的结果是获得一个图像,其中没有小于特定半径的斑点,并且填充或去除了特定厚度以下的斑点之间的细边界。此处显示了我正在寻找的模型:
想要的结果
膨胀和腐蚀(通过打开和关闭执行的过程)是过滤小噪声块的标准方法,但对于长而弯曲的区域,它们可能会导致您在创建薄区域时遇到的问题,并且界限。您可以尝试根据显式连接组件大小进行过滤,而不是膨胀和腐蚀。 Skimage 的函数 skimage.morphology.label
可以标记连接的组件,而 skimage.morphology.remove_small_objects
可以删除任何尺寸低于特定阈值的连接组件。
我有一些数据在 Python 3.5 中被分割成多个 类。生成的图像如下
原图
我要删除的数据中有很多小岛。我在下面圈出一些来给出一个想法,但是有很多。
带有一些噪点的原图
我的想法是,我希望能够指定一个最小半径,低于该半径应删除噪声岛。
我尝试了几种使用 scikit 图像形态过滤器的不同方法。我已经尝试组合灰度关闭和打开过滤器(如下图所示),我也尝试使用 remove_small_objects 过滤器并分别处理每对 类 并在最后组合它们。他们确实致力于消除噪声岛(如下所示),但这会产生一个新问题。一些岛屿之间的边界很薄,我也不想要!
应用了灰度开放并圈出薄区域的图像
基本上,我想移除噪声岛,但每个岛之间的间隙也要最小。
如有任何帮助,我们将不胜感激。
编辑:
对预期结果的一些说明: 期望的结果是获得一个图像,其中没有小于特定半径的斑点,并且填充或去除了特定厚度以下的斑点之间的细边界。此处显示了我正在寻找的模型:
想要的结果
膨胀和腐蚀(通过打开和关闭执行的过程)是过滤小噪声块的标准方法,但对于长而弯曲的区域,它们可能会导致您在创建薄区域时遇到的问题,并且界限。您可以尝试根据显式连接组件大小进行过滤,而不是膨胀和腐蚀。 Skimage 的函数 skimage.morphology.label
可以标记连接的组件,而 skimage.morphology.remove_small_objects
可以删除任何尺寸低于特定阈值的连接组件。