使用3D Slicer的Python Interactor 命令批量载入dicom文件(load DicomData)

使用3D Slicer的Python Interactor 命令批量载入dicom文件(load DicomData)

博主最近在研究医学影像相关内容,也阅读了官方文档和很多博客,发现3d slicer内置python命令行对批量载入dicom文件和批量保存scene很有帮助。
3D slicer软件

1、优质的3D Slicer操作、编程博客

  1. 3d slicer软件的入门与基本控制
    https://blog.csdn.net/shenziheng1/article/details/76392120
  2. slicer官方文档 (网站加载速度很慢,纯英文,阅读能有更好的理解)
    https://www.slicer.org/wiki/Slicer3:python
    https://www.slicer.org/wiki/Documentation/Nightly
    https://www.slicer.org/wiki/Documentation/4.10/ScriptRepository#Toolbar_functions(这个是最完整最详细的DICOM模块文档)
  3. 在slicer中编程
    https://blog.csdn.net/liaopiankun0618/article/details/84455220
  4. 介绍3D Slicer的另一个身份:医学影像IDE
    https://cloud.tencent.com/developer/news/304961

2、Load(载入)功能

(1)官方文档说明

此代码将所有DICOM对象从文件夹加载到场景中。将评估所有已注册的插件,并使用置信度最高的插件来加载数据。文件被导入到临时DICOM数据库中,因此当前的Slicer DICOM数据库不会受到影响。

 官方文档说明

(2)python代码

dicomDataDir = "c:/my/folder/with/dicom-files" #dicom源文件夹
loadedNodeIDs = [] # this list will contain the list of all loaded node IDs
from DICOMLib import DICOMUtils
with DICOMUtils.TemporaryDICOMDatabase() as db:
  DICOMUtils.importDicom(dicomDataDir, db)
  patientUIDs = db.patients()
  for patientUID in patientUIDs:
    loadedNodeIDs.extend(DICOMUtils.loadPatientByUID(patientUID))

运行代码截图
回车,执行命令。(如果文件数过多,或者电脑配置较低,运行速度很慢)
运行结果截图
运行结果会报错,但是不影响影像的形成和slicer软件中dicomData的正常导入。

3、Save功能(保存为各种格式,如mhd.)

此部分官方文档没有对应代码,博主还没有认真阅读完全部文档,to be continued…

参考文献

[1]https://www.slicer.org/wiki/Documentation/Nightly

发布了8 篇原创文章 · 获赞 4 · 访问量 1447

猜你喜欢

转载自blog.csdn.net/qq_43575939/article/details/105055881