跳转到主要内容

统一体分割数据库。

项目描述

MHub SegDB

免责声明: 非临床用途

此软件包包含用于促进医学影像中自动生成的分割的标准化定义的工具。

为什么需要一个标准

当我们训练一个深度学习模型来描述一个结构时,我们需要定义和描述算法训练的内容以及我们可以期望得到什么样的结构。在医学影像中,这一点尤为重要且复杂。解剖结构的描绘取决于上下文,这需要详细的描述。同时,为了进行进一步的分析,我们需要确切地知道什么被描绘,什么没有被描绘,以确保没有解释的空间。以一个AI模型描述肺部为例。这听起来可能一开始很简单,但在医学领域,有许多不同的应用来表示肺部,因此模型可以以不同的方式专门化。例如,一个模型可能将肺部表示为一个整体器官,另一个模型将每个肺叶或所有肺叶分别表示,另一个模型将整个肺部或特定部分的肺结节或肿瘤组织表示。这个不完整的例子说明了在不同场景和研究领域中,一个简单的任务可以有多么多样化。这就是为什么描述算法所表示的内容及其上下文如此重要的原因。

幸运的是,有一些标准可以解决这个问题。其中之一是DICOM标准,它通过一个DICOM分割图像(DICOM SEG)对象来解决上述问题,该对象为我们提供了医学图像分割的标准化描述符。由于简单的文本或定义属性列表很难充分描述医学图像上虚拟识别对象的复杂性质和内在关系,这些字段引用了本体中的对象,例如SNOMED CT。

DCMQI库提供了转换工具itkimage2segimage有关文档在此),该工具基于NRRD或NIFTI文件生成DICOM SEG文件,这些文件是AI管道的更传统输出,但缺乏所需的标准。

虽然拥有这样强大的工具很棒,但我们意识到它带来的负担,因为它可以迅速变得难以应对。当然,没有努力就没有结果。因此,要创建标准化的DICOM SEG文件,需要查找每个结构,识别正确的代码,并将这些信息编译成元文件,以提供给DCMQI转换器所需的信息。这不是一项简单任务,需要仔细选择和额外的解剖概念和术语知识。尽管如此,提供这些信息非常重要,并且好处巨大。

通过MHub,我们希望鼓励每个人熟悉这些标准,并将它们用于每个项目。这是创建有意义的模型并在此基础上推动进一步研究的关键。因此,我们试图在可能的情况下简化流程。为此,我们创建了一个数据库,其中我们定义了我们精心挑选的结构。

安装

pip install git+https://github.com/MHubAI/segdb.git

查找分割

使用segdb.lookup工具通过指定空格分隔的关键字作为参数来搜索分割。默认情况下,它搜索包含所有指定关键字的分割。要搜索包含至少一个关键字的分割,请添加参数--or

# search for lung
python -m segdb.lookup lung

# search for left lung
python -m segdb.lookup left lung

# search for lung and heart
python -m segdb.lookup --or lung heart 

生成DCMQI json配置文件

在以下示例中,My Model是一个分割整个心脏的AI模型。它从path/to/dicom读取CT扫描作为DICOM图像,并在path/to/segmentation.nii.gz创建一个包含二值心脏分割的NIFTI文件。要生成DCMQI元JSON,我们使用segdb.tools模块中的DcmqiDsegConfigGenerator类。然后我们为每个分割文件添加一个元素,并在模型名称旁边指定逗号分隔的段ID列表。在这个示例中,只有一个文件包含一个单独的段:心脏。因此,我们查找心脏的段ID(例如,通过运行python -m segdb.lookup heart),它是HEART,并相应地设置它。要创建JSON文件,我们使用生成器实例的save(file_name: str)方法。

from segdb.tools import DcmqiDsegConfigGenerator

# generate json meta generator instance
generator = DcmqiDsegConfigGenerator(
    model_name = 'My Model',
    body_part_examined = 'CHEST'
)

# add segmentation
generator.addItem(
    file = 'path/to/segmentation.nii.gz',
    segment_ids = 'HEART',
    model_name = 'My Model'
)

# save json
generator.save('path/to/meta.json')

然后,我们可以使用生成的JSON文件运行itkimage2segimage工具来创建DICOM SEG文件。

itkimage2segimage 
 --inputImageList path/to/segmentation.nii.gz
 --inputDICOMDirectory path/to/dicom
 --outputDICOM my/standardized/heart_seg.dcm
 --inputMetadata path/to/meta.json

嵌入式结构的定义

我们可以分割的一些结构嵌入在解剖结构中,例如肿瘤或心脏钙化等组织异常。

例如,肝脏中的原发性肿瘤(恶性肿瘤)由ID为NEOPLASM_MALIGNANT_PRIMARY的描绘结构(肿瘤)定义,并嵌入ID为LIVER的上下文器官中。要注释此类结构,将两个ID与+符号组合,解剖结构ID在加号之前,嵌入结构ID在加号之后:LIVER+NEOPLASM_MALIGNANT_PRIMARY

项目详情


下载文件

下载适用于您平台的应用文件。如果您不确定该选择哪个,请了解更多关于 安装包的信息

源代码分发

segdb-0.0.3.tar.gz (24.9 kB 查看哈希值)

上传时间 源代码

构建分发

segdb-0.0.3-py3-none-any.whl (26.8 kB 查看哈希值)

上传时间 Python 3

由以下支持