用于将dicom文件读取为simpleitk图像的dicom工具包

SimpleDicomToolkit的Python项目详细描述


#简单工具包 为文件夹中的所有dicom文件构建sqlite3数据库。DICOM文件可以 通过搜索dicom字段快速找到。最后(一些)图像和图像 卷可以直接读取。simpledicomtoolkit提供了一个干净的pythonic 用于处理大量DICOM文件的接口

##用法

生成或加载数据库:

`python db = SimpleDicomToolkit(path='/mydicomfolder') `

数据库只需构建一次。数据库被保存到一个文件中,并且 下次自动加载。simpledicomtoolkit每次都会搜索 为指定路径内的新文件夹并将其添加到数据库中。远离的 路径中的文件将从数据库中删除,随后 加载。

查询数据库:

`python db = db.select(PatientName='MyPatient',StudyDescription='MyStudy') `

这将选择与上面指定的patientname和 研究名称。任何有效的dicom文件都可以用来查询/选择文件。

`python db.files and db.files_with_fullpath `

将给出数据库中当前选定文件的列表 以及这些文件的完整路径。如果没有选择,它将给出一个列表 所有文件。

`python db.selection `

将返回当前用于选择文件的筛选器。

`python db.reset() `

将删除当前选择筛选器

`python db.SeriesDescription `

将给出当前所选内容的(唯一)系列说明列表。这个 适用于所有DICOM字段(PatientName、StudyDescription等)

##读取图像

`python myscript(db.files_with_path) `

您可以使用自己的脚本通过传递文件名来读取dicom文件 当前选择的。

`python db.image `

此外,在选择单个DICOM系列之后,这可能会返回一个simpleitk a 形象。它可能适用于CT、PET、SPECT和平面成像 做核磁共振检查。

`python db.array `

将返回给定选择的numpy数组。

##高级用法

`python db = SimpleDicomToolkit(path='/mydicomfolder', scan=False) ` 将加载当前存储的数据库,但不会扫描新文件。

`python db = SimpleDicomToolkit(path='/mydicomfolder', force_rebuild=True) `

将删除现有数据库并从头开始重建数据库

`python db = SimpleDicomToolkit(path='/mydicomfolder', in_memory=True) `

不要创建数据库文件,而只在内存中创建临时数据库。 将不保存数据库。

`python db = SimpleDicomToolkit(path='/myfolder', SUV=True) `

将在使用db.image和db.array时将图像转换为SUV。这可能行得通 对于西门子宠物,由于可能的不同 SUV值的DICOM实现。

`python db.reset('SeriesDescription') `

将只从当前选择中删除指定的DICOM字段。

##限制

高达10GB的小型数据库需要几分钟的时间来构建,并且可以 在生成后的几秒钟内被访问。高达100GB的数据库工作得很好,但是 windows上的性能比linux/macos要好得多。sqlite3更好 似乎是为windows优化的。由于数据库设计很差(根本没有)。 超过100GB的数据库访问速度可能非常慢。simpledicomtoolkit主要是 用于相对较小的项目。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
带有接口参数的java反射和构造函数   java Spring Thymeleaf如何通过Thymeleaf表单编辑(更新)用户选择的实体(对象)?   Java Tapestry中不同类之间的静态、非静态和调用   java如何使用dojo 1.9显示地理地图   安卓如何在java中简化这个代码片段?   尝试将java spring应用程序部署到Oracle weblogic群集java时出错。lang.ArrayIndexOutofBounds异常:52304   java如何在标头中包含SOAP身份验证详细信息?   java使用流删除一个列表中的元素(如果存在于另一个列表中)   java如何将包含UTC时间的字符串(如“193526”(19:35:26)转换为本地时区?   java部署Grailsgenerated WAR文件的最简单方法是什么?   java使用两种类型向通用列表添加对象   java如何在安卓应用程序中保存应用程序数据?   java有人能帮我弄清楚如何从“:”(不包括)读取我的文件直到行尾吗?   java在org上找不到javadoc。日食团队svn anywhere