Python - 3D医学图像配准库

yftpprvb  于 6个月前  发布在  Python
关注(0)|答案(2)|浏览(96)

Python中有哪些库可以读取扩展名为.vtk.stl的CT模型文件,并与普通视频进行3D图像配准。我发现许多软件都有这个功能,但我正在寻找的不是程序,而是Python库,如Numpy或OpenCV,我需要做的就是import numpyimport cv2

我想做的事情的例子

  • 第1步-获取一个人头骨的3D CT模型
  • 步骤2 -将3D CT模型读入Python
  • 步骤3 -获取一个人站着不动的正常视频
  • 步骤4 -从正常视频中执行3D CT颅骨和人头部的配准
  • 步骤5 -显示配准输出

我已经找到了几个Python库,“似乎”做这类事情,但他们没有足够的信息,在库描述,以确保这是我想要的。我也开放使用多个库。有没有人谁做了类似的事情,如果有人与任何库的经验可以给我一些建议,给予,谢谢。如果没有任何,我也会考虑其他语言的库。

到目前为止我所考虑的

  1. C++中的FW 4SPL库
  2. C++中的MITK库
  3. MeVisLab软件Python
  4. C++中的Elastix库
  5. Python中的SimpleElastix库
  6. C++中的ITK库
  7. Python中的SimpleITK库
    对于FW4SPLMITK,由于调试旧错误后不断出现新错误,我一直无法成功编译源代码。似乎新错误的出现不会停止(我花了很多时间做这件事,不想再继续下去了)。
    对于MeVisLab,这不是一个Python库,如numpyopencv,但它是一个GUI,也可以编程。
    对于ElastixSimpleElastixITKSimpleITK,它们确实是C++和Python库,看起来很完美,但我不确定它们是否提供了我上面描述的应用程序的要求。
2ic8powd

2ic8powd1#

我第一次玩vtk和stl文件。你的问题让我很好奇,但我显然没有经验。我开始研究这之前,上述评论。我没有意识到我们离题,对不起。所以我给予你我的结论在这一点上,因为有建立共享。
1)for .vtk文件事实证明,我看到的大多数库都是针对python 2.7的,而我更喜欢最新的版本(目前是3.5)。对于3.5,我最终采用了看起来很有前途的'woodscn'版本,对于编码来说,在我看来所有需要的信息都在Reading a .vtk file with python
2)对于.stl文件,'conda-forge'中的'xml'包看起来很好,在https://github.com/fhcrc/nestly/blob/master/examples/basic_nest/make_nest.py上有一个典型的例子
然后你只需要在python脚本中写import vtkimport nestly
希望这有帮助

ars1skjm

ars1skjm2#

我将提供更多关于python/elastix业务的意见,因为我自己才刚刚整理出来,这并不容易。这些是它可以使用的方式:

  1. SimpleITK.一个python模块,通常作为预编译的二进制文件提供,它具有ImageRegistrationMethod()的一些注册功能。我认为这可能是Elastix的实现,或者类似于Elastix,但没有深入确认。无论出于何种原因,我无法找出在我的特定数据集上工作所需的许多选项。
  2. SimpleITK-SimpleElastix. SimpleITK的第三方扩展,具有与elastix不同/改进的接口,包括似乎工作得很好的默认值。SimpleITK不支持此扩展。可作为pypi上的预编译二进制文件提供。然而,pypi上的Linux二进制文件最近没有更新,并且缺少一些较新的SimpleITK功能。macos二进制文件上个月刚刚更新。
  3. Github上的SimpleITK源代码。在启用Elastix选项的情况下重新编译。这个过程是您如何将新的SimpleITK功能与实际的Elastix代码一起沿着的。编译在四个核心上运行了一个多小时,看不到尽头,我知道我还必须弄清楚Windows上的编译,所以我放弃了这个。
  4. Github上的SimpleElastix源代码。基本上与上面的#3相同的方法,唯一的区别是,在这个源发行版中,Elastix不是几个选项之一,而是主要的一点。我没有具体确认这是否是上面的#2的源代码。如上所述,这可能需要几个小时来编译。
  5. ITKElastix.一个python的预编译二进制文件。ITK可能不像SimpleITK那样为python用户所熟悉,但是在语法上有很多重叠,并且对于注册Elastix代码是相同的。我在使用F连续numpy数组时遇到了一个问题:itk elastix注册给出了一个无意义的结果。当我切换到C连续的东西工作。这可能是显而易见的经验丰富的ITK/C++程序员,但作为一个python用户,我不这么认为。

相关问题