Python - 3D 医学图像配准库

问题描述 投票:0回答:2

Python 中有哪些库能够读取带有

.vtk
.stl
等扩展名的 CT 模型文件,并与普通视频执行 3D 图像配准。我发现很多软件都有这种能力,但我要找的不是一个程序,而是一个Python库,比如Numpy或OpenCV,我需要做的就是
import numpy
import cv2

编造我想做的事的例子

  • 第 1 步 - 获取人头骨的 3D CT 模型
  • 第 2 步 - 将 3D CT 模型读入 Python
  • 第 3 步 - 获取一个人静止不动的正常视频
  • 第 4 步 - 执行 3D CT 头骨配准 普通视频中的人头
  • 第 5 步 - 显示注册输出

我发现了几个Python库“似乎”可以做这类事情,但它们的库描述中没有足够的信息来确保这就是我想要的。我也愿意使用多个库。有没有人做过类似的事情,如果有任何图书馆经验的人能给我一些建议,那就太好了,谢谢。如果没有,我也会考虑其他语言的库。

到目前为止我考虑过什么

  1. C++ 中的 FW4SPL 库
  2. C++ 中的 MITK 库
  3. Python 中的 MeVisLab 软件
  4. C++ 中的 Elastix 库
  5. Python 中的 SimpleElastix 库
  6. C++ 中的 ITK 库
  7. Python 中的 SimpleITK 库

对于

FW4SPL
MITK
,我一直无法成功编译源代码,因为在调试旧错误后不断出现新错误。看来新的错误不会停止发生(我已经花了很多时间这样做,不想再继续了)。

对于

MeVisLab
,这不是一个Python库,如
numpy
opencv
,但它是一个GUI,据说也是可编程的。

对于

Elastix
SimpleElastix
ITK
SimpleITK
,它们确实是看起来很完美的 C++ 和 Python 库,但我不确定它们是否提供了上述应用程序的要求。另外,我对彼此之间的关系也很困惑。

python image-processing medical image-registration
2个回答
3
投票

我是第一次使用 vtk 和 stl 文件。你的问题让我很好奇,但我显然没有经验。在上述评论之前我就开始研究这个问题。我没有意识到我们偏离了主题,抱歉。所以我现在给你我的结论,因为它们是为了共享而构建的。

1) 对于 .vtk 文件 事实证明,我看到的大多数库都是针对 python 2.7 的,而我更喜欢最新版本(目前是 3.5)。 对于 3.5,我最终采用了看起来很有前途的“woodscn”版本,在我看来,编码所需的所有信息都在使用 python 读取 .vtk 文件

2) 对于 .stl 文件 来自“conda-forge”的“nestly”包看起来不错,在https://github.com/fhcrc/nestly/blob/master/examples/basic_nest/make_nest.py

上有一个典型的例子

那么你只需在Python脚本中编写

import vtk
import nestly
即可。

希望这有帮助


0
投票

我将提供更多关于 python/elastix 业务的意见,因为我自己刚刚解决了这个问题,这并不容易。以下是它的使用方法:

  1. SimpleITK-SimpleElastix。 pypi 上预编译的二进制文件。 pypi 上的 Linux 二进制文件最近没有更新,并且缺少一些较新的 SimpleITK 功能,但 SimpleElastix 功能可能足够了。 macos 二进制文件上个月刚刚更新。
  2. 简单ITK。一个二进制 python 模块,在 ImageRegistrationMethod() 中具有自己的一些注册功能。我认为这可能是Elastix的一个实现,或者类似于Elastix,但没有深入确认。无论出于何种原因,我无法找出处理我的特定数据集所需的许多选项。
  3. github上的SimpleITK源代码。重新编译并启用 Elastix 选项。此过程是您获取更新的 SimpleITK 功能以及实际 Elastix 代码的方式。编译在四个核心上运行了一个多小时,我知道我还必须弄清楚在 Windows 上的编译,所以我放弃了这个。
  4. github 上的 SimpleElastix 源代码。本质上与上面#3 的方法相同,唯一的区别是在这个源发行版中,Elastix 不是几个选项之一,而是要点。如上所述,编译可能需要几个小时。
  5. ITKElastix。 python 的预编译二进制文件。对于 Python 用户来说,ITK 可能不像 SimpleITK 那样熟悉,但语法上有很多重叠,并且 Elastix 的注册代码是相同的。我在使用 F 连续 numpy 数组时遇到的一个问题:itk elastix 注册给出了无意义的结果。当我切换到 C-连续时,事情就成功了。对于经验丰富的 ITK/C++ 程序员来说,这可能是显而易见的,但作为一个纯粹的 Python 用户,这对我来说却不是。
© www.soinside.com 2019 - 2024. All rights reserved.