【问题标题】:Segmenting 3D shapes out of thick "lines"从粗“线”中分割出 3D 形状
【发布时间】:2011-10-27 12:45:00
【问题描述】:

我正在寻找一种在 matlab 中查找 3D 图像中的形状的方法。我现在没有真正的 3D 示例图像;事实上,我的 3D 图像实际上是一组量化的 2D 图像。

下图是我想要完成的:

虽然上面的示例图是 2D 图像,但请理解我正在尝试在 3D 中进行此操作。 输入形状有这些“触手”,我必须在其中寻找不规则形状他们。触手的大小从一个点到另一个点可以变化,但以“一致和平滑”的速度变化——也就是说它一开始可能很大,然后逐渐变小。但如果突然,形状只是变大而不是逐渐变大,就像上图中的红色右下区域,那么这就是感兴趣的体积之一。请注意,这些形状更倾向于圆形和球形,但其中一些是完全任意和随机的。

到目前为止,我已经尝试了以下方法:

  1. 腐蚀 n 次并扩张 n 次:鉴于“触手”总是小于感兴趣的体积,只要体积不太小,此方法就可以工作。而且,我们需要有一种机制来处理以某种方式变成误报的触手的较粗部分。

  2. 霍夫变换:虽然我之前已经建议过这种方法(来自Segmenting circle-like shapes out of Binary Image),但我发现它适用于一些更圆的情况,但同时也适用于更困难的情况,例如不太圆润、扭曲和/或任意形状可能会通过此方法。

  3. 等值面:由于我的输入是一组 2D 量化图像,因此使用等值面可以重建 3D 图像并看得更清楚。但是,我不确定在这种情况下可以做些什么。

那么任何人都可以提出一些其他技术来从这些“触手”中分割出这种形状吗?

【问题讨论】:

  • 我尝试了 imerode 并能够“侵蚀”掉留下一些小球部分的链接。虽然有一个误报(最左端)。至少,这会给你一个起点。你能多说一下图片的来源吗?也许您开始使用具有更多信息并因此更适合分割小球的东西?
  • 实际上,我正在尝试在肺部 CT 扫描中分割附着在血管上的癌症。

标签: matlab image-processing shape image-segmentation


【解决方案1】:

图像上的每个点都有一个属性,即它要么是触手的一部分,要么是感兴趣的体积的一部分。如果事先不知道预期的触手周长是多少,那么 1 将不起作用,因为我们将无法设置 n。但是,我们知道擦除触手的 n 小于擦除节点的 n。您可以将每个点替换为表示到边缘距离的整数。实际上,这可以通过连续的单个像素腐蚀来完成,并将每个像素替换为它被擦除的迭代计数。让我们称之为像素的厚度,但我生锈的老头脑告诉我,这有一个艺术术语。

现在我们要搜索与边界具有比典型形态距离更高的区域。我会通过首先骨架化图像(http://www.mathworks.com/help/toolbox/images/ref/bwmorph.html)然后沿着骨架搜索局部最大厚度来做到这一点。这些是骨架上厚度大于相邻点的点。

最后,我将按厚度对局部最大值进行排序,这是一个阈值,有助于将感兴趣的体积与误报区分开来。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-02
    • 2020-11-01
    • 2019-03-03
    • 2016-07-07
    相关资源
    最近更新 更多