【问题标题】:Determining "bottleneck" image regions using scipy使用 scipy 确定“瓶颈”图像区域
【发布时间】:2014-05-12 13:10:06
【问题描述】:

我正在使用 进行图像处理和数学形态学,我非常喜欢它。我们的工作涉及模拟电荷在各种电影中的移动,并且我们正在尝试使用图像分析工具来估计为什么不同的形态比其他形态更好。

我很快就能够使用 ndimage.label 和 distance_transform_edt 找到连接的组件并确定它们的大小。我还实现了广度优先搜索,以找到组件和代表电极的边缘之间的最小路径。

现在,我想确定“瓶颈”或“窄渠道”区域。我什至不确定我是否在搜索正确的关键字,因为我的专业知识并不是真正的图像处理。我在下面给出了两个例子。我想找到像红色圆圈这样的特征并计算它们并确定它们的大小分布。 (考虑到收费将更容易通过更广泛的瓶颈。)

问题是我无法标记这些,因为它们不是独立的组件。距离变换在边缘给了我很小的数字。我想要通过这些瓶颈的最小距离。

有什么建议或一般策略吗?

【问题讨论】:

  • 您可以使用打开/关闭,然后从原始图像中减去结果图像。如果您提供原始图像的链接(没有红色),我可能有时间发布一个示例作为答案。
  • 我想我想要一个骨架或中轴(来自 skimage),然后查看沿结果数组的非零元素的距离分布。
  • beedot 的解决方案对我来说似乎不错,所以我不会费心去做另一个(事实上,比我的建议更好,因为它解决了全部问题,而不仅仅是找到瓶颈位置)。这不正是您想要的吗?

标签: scipy.ndimage python image-processing numpy scipy mathematical-morphology


【解决方案1】:

可以使用中轴变换来计算球拟合在 bacl 集中每个点的半径,从而获得图像中的角点。在下面的示例中,我们使用由距离函数本身加权的距离函数的分水岭来获得分隔最小值(图像中的白色分量)的轮廓。因此,这给出了一条由分隔 2 个白色分量的距离函数的最大值加权的路径。我已经在 matlab 中完成了此操作,但我认为它很容易在 Scikit 图像工具箱中复制。

图片1:

填补漏洞,因为它们不是路径:

距离函数:(热图)

距离函数的分水岭(路径):

距离函数加权的分水岭(最终路径):

图 2:

距离函数:

距离函数的分水岭(路径):

距离函数加权的分水岭(最终路径):

因此,我们已经使用距离函数的分水岭(此处使用的城市街区)按影响区域 (SKIZ) 计算了技术骨架。还必须注意,边界上的洞没有被填充,因为 imfill 忽略了边界上的洞。如果要填充,可以在周围添加一个框架,以便以后可以使用 imfill 填充它们。

【讨论】:

  • 这与我最终所做的非常相似。就我而言,填补漏洞是个坏主意,因为漏洞会影响性能。另外,我使用了中轴变换而不是分水岭。正如您在图片中看到的,分水岭不会“流向”所有地区。
  • 相反,得到距离变换的脊的中轴变换是完美的。然后我从远处拿起重量。感谢您的建议!
猜你喜欢
  • 2020-07-15
  • 1970-01-01
  • 2010-11-04
  • 1970-01-01
  • 2011-01-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多