使用docbook格式dicom规范输入的python dicom工具

dcm-spec-tools的Python项目详细描述


DCM规范工具

dcm spec tools计划是一个简单的纯python命令行工具的集合,这些工具从 由ACR NEMA提供的docbook格式的dicom标准。

当前可用的工具:

  • validate_iods检查dicom文件中给定sop类的正确属性。
  • dump_dcm_info输出给定dicom文件的dicom标记id和值。

请注意,这仍处于开发的早期阶段。

pydicom用于读取/分析dicom 文件夹。

安装

pypi上提供了最新版本,可以通过

pip install dcm-spec-tools

用法

dump_dcm_info [-r <revision>] [-src <spec dir>] <DICOM filename>
validate_iods [-r <revision>] [-src <spec dir>] [-v] <DICOM files or directories>

为每个脚本使用--help选项以获取使用信息。

访问DICOM标准

第一次启动工具时,DICOM标准最新版本的一部分 以DocBook格式下载、解析并将所需信息保存在 json文件。这些文件随后被工具使用。定期(每年一次 月),工具检查dicom标准的更新版本并下载 如果找到的话。

也可以通过命令行使用旧版本的标准 选项,前提是它们仍然可以下载(在 写作,标准从2014a到2018b)。

DCM转储信息

这是一个非常简单的dicom转储工具,没有选项,它使用 从标准第6部分阅读的DICOM字典。输出看起来 像这样:

(py3_test) c:\dev\GitHub\dcm-spec-tools>dump_dcm_info "c:\dev\DICOM Data\SR\image12.dcm"
(0005,0010) [Unknown]                                LO    1  [AEGIS_DICOM_2.00]
(0005,1000) [Unknown]                                UN    1  [b'\x00\x05 \x08\x00\x00\x00\n  RIGHT   \x00\x05\xc1X\x00\x00\x00\x06 0.09 \x00\x05\xd1X\x00\x00\x00\x02 0']
(0008,0008) Image Type                               CS    0  []
(0008,0016) SOP Class UID                            UI    1  [Ultrasound Image Storage (Retired)]
(0008,0018) SOP Instance UID                         UI    1  [1.2.840.113680.3.103.775.2873347909.282313.2]
(0008,0020) Study Date                               DA    1  [19950119]
(0008,0030) Study Time                               TM    1  [092854.0]
(0008,0050) Accession Number                         SH    1  [ACN000001]
(0008,0060) Modality                                 CS    1  [US]
(0008,0070) Manufacturer                             LO    1  [Acuson]
(0008,0090) Referring Physician's Name               PN    1  []
(0008,1010) Station Name                             SH    1  [QV-00775]
(0008,1030) Study Description                        LO    1  [ABDOMEN]
(0008,1050) Performing Physician's Name              PN    1  [KLOFAS,EDWARD]
(0008,1060) Name of Physician(s) Reading Study       PN    1  []
(0008,1070) Operators' Name                          PN    1  [DO]
(0008,1080) Admitting Diagnoses Description          LO    1  [RSNA'95 Data Not Delete]
(0009,0010) [Unknown]                                LO    1  [AEGIS_DICOM_2.00]
...

验证IOD

这将检查给定的dicom文件,或给定的dicom文件中的所有dicom文件。 目录,以获取相关SOP类的正确标记。只有存在或
没有标记,并且检查标记值的存在,而不是 包含的值本身(稍后可能会添加对正确枚举值的检查)。 这是通过查找所有必需的和可选的模块来完成的 SOP类,并检查这些模块的标记。不允许的标记或 将列出模块中缺少的内容。使用DICOM标准的第3部分和第4部分 收集所需信息。 如有可能,评估1C和2C型模块和标签的条件。 如果评估失败,则考虑相应的模块和标记 可选。条件评估可能会失败,如果:

  • 所需信息不包含在DICOM文件中(如详细信息 “如果病人是动物”之类的描述
  • 该信息与其他DICOM文件(如参考图像)有关
  • 解析失败,因为条件太复杂,意外, 或者是因为一个错误

单个文件的输出可能如下所示:

(py3_test) c:\dev\GitHub\dcm-spec-tools>validate_iods "c:\dev\DICOM Data\SR\test.dcm"

Processing DICOM file "c:\dev\DICOM Data\SR\test.dcm"
SOP class is "1.2.840.10008.5.1.4.1.1.88.33" (Comprehensive SR IOD)

Errors
======
Module "SR Document Content":
Tag (0040,A043) (Concept Name Code Sequence) is not allowed due to condition:
  Value Type is equal to "TEXT", "NUM", "CODE", "DATETIME", "DATE", "TIME", "UIDREF" or "PNAME"
Tag (0040,A300) (Measured Value Sequence) is missing
Tag (0040,A168) (Concept Code Sequence) is missing
Tag (0008,1199) (Referenced SOP Sequence) is missing
Tag (0070,0022) (Graphic Data) is missing
Tag (0070,0023) (Graphic Type) is missing
Tag (3006,0024) (Referenced Frame of Reference UID) is missing
Tag (0040,A130) (Temporal Range Type) is missing
Tag (0040,A138) (Referenced Time Offsets) is missing due to condition:
  Referenced Sample Positions is not present and Referenced DateTime is not present
Tag (0040,A13A) (Referenced DateTime) is missing due to condition:
  Referenced Sample Positions is not present and Referenced Time Offsets is not present

注意:不保证结果的正确性。这是 前阿尔法软件,主要被认为是概念的证明。

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

推荐PyPI第三方库


热门话题
未检测到“空格”的java ASCII码   音频如何在Java中设置SourceDataLine的音量   java MyBatissSpringBoot无法使用作为bean注入的数据源   Java字谜递归列表<List<String>>仅存储空列表<Strings>   java显示30px高的JPanel,然后用minecraft填充剩余空间   java JOGL平滑度   Java:按完整与否对1d对象数组进行排序   arraylist仅当java结构不存在时才将对象添加到java结构中   无法初始化java渲染库在安卓 studio 4.1.1上出现错误   java SpringBoot ClassCastException   java解析文本文件,基于字数   java=运算符引发异常   java使点可拖动并存储新坐标JavaFx   JavaWebSphereApplicationServer:EJB模块和JMS路由器