0

我正在使用 ITK python 包装器(ITK 不是 simpleITK)来原型 µCT 输出自动处理。我需要计算 3D 对象厚度图,但 ITK 中不存在此功能。管道很简单:

  • 二值化对象
  • 计算距离变换
  • 提取中轴作为距离图local-max

我的问题是它的itk::RegionalMaximaImageFilter行为不符合预期(不保留分支)。所以我想编写一个自定义函数来检查中心像素是否 >= 使用 3x3x3 滑动内核与其相邻。

我的想法是利用优化的itk::RegionalMaximaImageFilter迭代器(见这里)。但是,即使这与 C++ 完美配合,我也无法找到使用 Python 的解决方法(没有用 cython 包装 c 代码)。

4

2 回答 2

1

Python 包装并不意味着访问迭代器,而是调用现有的类。你可以做的是用 C++ 编写一个类,然后按照这个创建一个可以从 Python 包装和使用的模块。

于 2018-03-29T14:08:21.030 回答
0

“我想编写一个自定义函数,使用 3x3x3 滑动内核检查中心像素是否 >= 与其相邻。”

这与灰度形态的扩张有关,它是邻域中所有像素的最大值。在 SimpleITK 中(因为你标记了帖子)你可以简单地写:

isMaximumImg = (sitk.GrayscaleDilateImageFilter(inImg, 1) == inImg)

这将导致图像中,如果像素等于邻域中的最大值,则输出值为 1,否则为 0。这也应该能够通过 ITK Python 通过组成类似的过滤器管道来实现.

于 2018-04-02T14:05:02.233 回答