跳转到主要内容

一个用于计算3D厚度的ITK模块

项目描述

一个用于计算3D厚度的ITK模块

Build Status PyPI Version License

概述

这是一个为Insight Toolkit (ITK)提供的模块,它提供计算3D图像骨架和厚度变换的过滤器。

ITK目前没有提供针对3D厚度评估的直观解决方案。这项贡献实现了基于欧几里得距离变换和二值骨架的多个滤波器,以填补这一空白。

二值细化

使用高效的曲线细化算法提供1像素细的线状骨架。

本模块中使用的细化算法来自Insight Journal文章

Homann H.
Implementation of a 3D thinning algorithm
The Insight Journal - 2007 July - December.
https://hdl.handle.net/1926/1292
https://insight-journal.org/browse/publication/181

中值厚度

本模块中实现的中值厚度的思想是对象中值轴到外壳的最短距离的两倍(即局部最大拟合球的直径)

与局部厚度变换相比,这种定义提供了一个无偏的厚度评估方法,因为后者会导致厚部分有更多的点。骨架化确保以最小的测量集来全面描述对象。

滤波器

安装

Python

二值Python包适用于Linux、macOS和Windows。可以使用以下命令安装:

python -m pip install --upgrade pip
python -m pip install itk-thickness3d

C++

您需要从源代码构建ITK才能使用此模块。

在ITK的新版本中,此模块作为ITK源代码中的远程模块提供。使用CMake选项:Module_Thickness3D构建它,这可以通过CMake图形界面ccmake或直接通过命令行:-DModule_Thickness3D:BOOL=ON来切换。

对于旧版本的ITK,请将其手动添加为ITK源代码的外部远程模块

外部:

cd ${itk_src}/Modules/External
git clone https://github.com/InsightSoftwareConsortium/ITKThickness3D

远程:

${itk_src}/Modules/Remote中创建一个名为Thickness3D.remote.cmake的文件(见这个GitHub gist)并包含以下内容

itk_fetch_module(Thickness3D
  "Tools for 3D thickness measurement"
  GIT_REPOSITORY ${git_protocol}://github.com/InsightSoftwareConsortium/ITKThickness3D.git
  GIT_TAG <replace with the latest stable commit tag>
)

使用方法

Python

一旦导入ITK,您就可以像使用任何其他ITK方法一样使用itk.MedialThicknessImageFilter3D

skeleton = itk.BinaryThinningImageFilter3D.New(image)

以下是一个简单的Python脚本,它读取图像,应用中值厚度滤波器,并将结果图像写入文件

import itk

input_filename = sys.argv[1]
output_filename = sys.argv[2]

image = itk.imread(input_filename)
thickness_map = itk.MedialThicknessImageFilter3D.New(image)

itk.imwrite(thickness_map, output_filename)

许可

本软件根据Apache 2.0许可证分发。请参阅LICENSE文件以获取详细信息。

支持者:

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面