如何使用 pydicom 读取所有 DICOM 属性/标签?

2024-06-11

我正在尝试使用 pydicom 获取给定 DICOM 实例的所有属性(标签)的列表。

该列表应包含属性 key/id、其vr、值以及相应的名称。

例如:

Tag: (2,0)
VR: UL
Name: File Meta Information Group Length
Value: 246

我想获得一些有关如何获取此信息的指导,因为我在 pydicom 文档中找不到任何有用的信息。

我的代码如下:

import pydicom
from io import BytesIO

dicom_data = await client.download_dicom_file(image_id)
data = pydicom.dcmread(BytesIO(dicom_data))

要获取所有标签,您只需迭代数据集中的所有元素即可。Here https://pydicom.github.io/pydicom/dev/auto_examples/input_output/plot_printing_dataset.html#sphx-glr-auto-examples-input-output-plot-printing-dataset-py文档中的一个示例就是这样做的。归结为:

from pydicom import dcmread

ds = dcmread(file_name)
for element in ds:
    print(element)

该示例还展示了如何处理序列(通过递归迭代序列项)。这是一个仅使用元素的字符串表示形式处理序列项的简单示例:

def show_dataset(ds, indent):
    for elem in ds:
        if elem.VR == "SQ":
            indent += 4 * " "
            for item in elem:
                show_dataset(item, indent)
            indent = indent[4:]
        print(indent + str(elem))

def print_dataset(file_name):
    ds = dcmread(file_name)
    show_dataset(ds, indent="")

如果您想打印自己的数据元素表示,您可以访问元素属性。 每个元素都是一个数据元素 https://pydicom.github.io/pydicom/dev/reference/generated/pydicom.dataelem.DataElement.html#pydicom.dataelem.DataElement, 其中包含您需要的信息:

>>> from pydicom import dcmread
>>> ds = dcmread("ct_small.dcm")  # from the test data
>>> len(ds)
258
>>> element = ds[0x00080008]
>>> element
(0008, 0008) Image Type                          CS: ['ORIGINAL', 'PRIMARY', 'AXIAL']
>>> type(element)
<class 'pydicom.dataelem.DataElement'>
>>> element.VR
'CS'
>>> element.tag
(0008, 0008)
>>> element.name
'Image Type'
>>> element.value
['ORIGINAL', 'PRIMARY', 'AXIAL']
>>> element.VM
3

您将在以下文档中找到类似的信息Dataset https://pydicom.github.io/pydicom/dev/reference/generated/pydicom.dataset.Dataset.html,并且可能在其他示例中。

请注意,还有一个命令行界面 https://pydicom.github.io/pydicom/dev/guides/cli/cli_guide.html#pydicom-show-command显示 DICOM 文件的内容。

Edit:
正如另一个答案中所问的:如果您想访问文件元信息,例如第 2 组中的标签,您可以通过迭代来实现ds.meta_info (ds是数据集)。meta_info也是类型Dataset并可以通过相同的方式访问。注意meta_info may be None如果数据集中不存在元信息:

from pydicom import dcmread

ds = dcmread(file_name)
meta_info = ds.meta_info
if meta_info is not None:
    for element in meta_info:
        print(element)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 pydicom 读取所有 DICOM 属性/标签? 的相关文章

  • Python 解码 JSON 中的嵌套 JSON

    我正在处理一个 API 不幸的是它返回了格式错误 或 奇怪的格式 而是 感谢 fjarri JSON 但从积极的一面来看 我认为这可能是我学习一些有关递归以及JSON 这是我用来记录锻炼的应用程序 我正在尝试制作备份脚本 我可以很好地收到
  • Ubuntu 上的 Chromedriver:selenium.common.exceptions.SessionNotCreatedException:消息:会话未创建

    我在 AWS EC2 实例 的 Ubuntu 环境中使用 Selenium Chromedriver 时遇到问题 我正在使用 Chromedriver Linux64 版本 wnload chromedriver for Linux wge
  • 如何显示 pymongo.errors.OperationFailure 详细信息?

    写入 MongoDB 时 我在 python 中遇到 pymongo OperationsFailure 除了回溯之外 还有没有办法打印出详细信息或代码属性 另请参阅 http api mongodb org python current
  • 如何在 Pandas 中用多个唯一字符串替换重复值?

    import pandas as pd import numpy as np data Name Tom Tom Jack Terry Age 20 21 19 18 df pd DataFrame data 假设我有一个如下所示的数据框
  • 如何针对 Heroku 路由器的代理/缓冲情况优化 uWSGI?

    我在 Heroku 的生产中使用 uWSGI 已有一年多了 它似乎比 Gunicorn 处理所有事情都要好得多 随着我们的流量扩大 我试图更好地理解heroku的路由器和uWSGI之间的接口 以优化和防止问题 但它对我来说仍然相当不透明 我
  • 如何在不使用pygame的情况下检测按键事件和按键按住事件

    我目前正在寻找一个能够检测 监视键盘的库 我的目的是检测何时按下某个键 以及当它发生时应该发生一些事情 大多数 SO 帖子建议使用 pygame 但我发现它有点太多了 涉及一个像这样的库来完成这个简单的任务 我也尝试过pynput 这导致只
  • 对训练和测试数据帧使用相同的标签编码器

    我有 2 个不同的 csv 其中包含训练数据和测试数据 我从这些 train features df 和 test features df 创建了两个不同的数据帧 请注意 测试和训练数据有多个分类列 因此我需要对它们应用 labelEnco
  • Keras ImageDataGenerator 验证分割未从打乱的数据集中选择

    如何将图像数据集随机拆分为训练数据集和验证数据集 更具体地说 validation splitKeras 中的论证ImageDataGenerator函数不是随机地将我的图像分割为训练和验证 而是从未洗牌的数据集中分割验证样本 当指定val
  • 如何从数据存储区刷新 NDB 实体?

    我希望能够在我的代码调用的测试中断言Model put 对于已修改的实体 不幸的是 似乎正在进行一些缓存 例如以下代码 from google appengine ext import ndb class MyModel ndb Model
  • 视频的 EXIF 之类的东西

    有没有从视频文件中获取信息的标准方法 对于图像 我们有 EXIF 数据 可用于获取有关图像文件的日期 时间 大小等信息 我想知道视频是否也有这样的东西 用例是 我有很多用数码相机拍摄的视频 我想将它们重命名为更有意义的名称 例如 YYYY
  • OSMNX - 边缘的哪个“部分”被认为是最近的

    我正在使用 OSMNX 中的 returned edges 函数 我不清楚在进行此计算时使用边缘的哪个 部分 它是边缘的任何部分吗 是中间点吗 对于网络中的长边来说 这会产生很大的差异 这取决于您如何参数化该函数 来自nearest edg
  • 缓存 pandas 数据框的最佳方法?

    昨天 我经历了惨痛的教训 将 pandas 数据帧保存到 csv 以供以后使用是一个坏主意 我有一个包含 130k 条推文的数据框 其中数据框的一行是list的推文 当我将数据保存到 CSV 然后重新加载数据帧时 数据帧的行现在是字符串类型
  • python 使用曲面图和第四个变量的滑块可视化 4d 数据

    如何使用前 3 个变量和第四个变量的 3 维曲面图作为滑块来可视化 4 维数据 从 csv 文件加载 集 我写了一个非常小的示例 重点介绍了实现此目标的方法 import numpy as np import matplotlib pypl
  • 我可以使用对象(类的实例)作为 Python 中的字典键吗?

    我想使用类实例作为字典键 例如 classinstance class dictionary classinstance hello world Python似乎无法将类作为字典键处理 还是我错了 另外 我可以使用像 classinstan
  • python中matlab find函数的替换

    我正在尝试寻找合适的python函数来替代matlabfind在我的脚本和一些谷歌搜索中我看到np where 大多数时候都能解决目的 但在双重条件的情况下 我有不同的输出 有人可以告诉我这种方法有什么问题以及如何继续吗 示例代码和差异如下
  • 如何在Python中按天对时间序列数据求和? resample.sum() 没有效果

    我是Python新手 如何根据日期求和数据并绘制结果 我有一个 Series 对象 其数据如下 2017 11 03 07 30 00 NaN 2017 11 03 09 18 00 NaN 2017 11 03 10 00 00 NaN
  • Django 和 REST API 服务基于计算的请求

    我在 Django 中编写了一个机器学习应用程序 以便用户可以在表单中指定一些参数并训练模型 模型训练完成后 我想满足以下请求 curl http localhost 8000 model input XYZ 我希望 Django 返回给定
  • 使用 Python for PyQt WebEngine 授予对 Cam & Mic 的访问权限

    我正在构建一个从 Python 调用的简单 Web 应用程序 我正在使用下面的代码 加载此页面时 以编程方式授予对摄像头和麦克风的访问权限的最简单方法是什么 我只在网上找到了 C 示例 无法找到在 Python 代码中执行此操作的方法 fr
  • Numpy 相当于 if/else 不带循环

    有没有任何Pythonic方法可以删除下面代码中的for循环和if else 此代码迭代 NumPy 数组并检查条件并根据条件更改值 gt gt gt import numpy as np gt gt gt x np random rand
  • 如何在 Ansible 中更新嵌套变量

    我有一些额外的信息 例如数据库连接详细信息等 存储在 etc ansible facts d environment fact 中 这些可以作为变量使用 例如ansible local environment database name 更

随机推荐

  • 使用 Homebrew 安装 mongodb 时遇到问题

    我正在尝试让 Mongo 运行 我安装了包管理器Homebrew https brew sh 然后我使用了 Mongo 站点上的命令 brew update brew install mongodb 这似乎安装正确 我输入了mongo在新的
  • 嗅探网络请求

    我正在寻找一种方法来嗅探我的 Android 应用程序生成的网络流量 原因是我想检查并发送我在应用程序中使用的第三方跟踪库生成的流量统计数据 因此 我无法使用任何或类似的 我无法访问此跟踪库的http客户端 因此我无法拦截任何请求 我已经看
  • Microsoft.WindowsAzure.Storage 更新至 V8.2.1.0 破坏了我的代码

    我创建了一个 WebJob 将项目放入队列中 这个过程运行得很好 直到我更新Microsoft WindowsAzure 存储 to v8 2 1 0我现在收到这个错误 存储帐户 devstoreaccount1 无效 请确保您的 凭据是正
  • Angular 5 - 加载视图后加载脚本

    我有一个遗留脚本 需要将其包含在我的角度应用程序中 该脚本的特点是它与特定组件相关 并且只有在加载该组件的视图之后才必须加载它 就今天而言 我成功地将它包含在 OnInit 函数中 但有时 并非总是出于某种原因 CLI 会抛出有关它的错误
  • SELECT、SELECT COUNT 和交叉引用表是否可以仅通过一个查询来处理?

    我有一个显示项目列表的页面 每个项目都会显示从 mysqli 数据库检索到的以下数据 Title Subtitle 描述 零件编号 x 中的 1 与该项目相关的照片总数 从项目中随机选择的照片 标签列表 使用分页系统每页显示 6 个项目 由
  • 通过 npm 节点自动化 Git 提交 + 版本控制 + 标记

    我一直试图得到的是 使用 npm version 来更新 package json 并创建一个标签 然后提交我的更改 通过这种方式 我将能够按版本添加标签 自动版本控制并提交信息 我遇到的问题是 当我使用 npm 版本时 它会自动执行标记
  • 为什么快速调用时Python类的id不唯一?

    我正在Python 3 3 3 中做一些事情 我遇到了一些让我困惑的事情 因为据我了解 类每次被调用时都会获得一个新的id 假设您在某个 py 文件中包含以下内容 class someClass pass print someClass p
  • Xcode 在每次启动时修改当前的 CoreData 模型版本

    我正在使用 Xcode 4 6 来处理使用 CoreData 的项目 数据模型现在是版本13 并且使用轻量级迁移 我的问题 每次启动时 Xcode 似乎都会修改 PROJECT xcdatamodeld xccurrentversion 文
  • 没有名为 pyvirtualdisplay 的模块

    我在 python 代码中导入了这个 import time import sys from pyvirtualdisplay import Display from selenium import webdriver 当我从 centos
  • 如何在 PowerShell 中获取当前活动/前台窗口

    我知道这可以通过使用 alt tab 轻松完成 但创建此脚本的主要目的是自学一些 PowerShell 基础知识 我正在编写一个脚本 运行时会在 powershell 和当前前台窗口之间切换前台窗口 我读这个问题 https stackov
  • Spring 正在创建多个 bean 实例

    我使用 autowire Controller 创建了一个名为 RegistrationController 的 Spring 控制器 出于我自己的好奇心 我创建了一个默认构造函数 如下所示 并添加了一条记录器语句 public Regis
  • 在尊重访问控制的同时为 REST API 序列化 SQLAlchemy 模型?

    目前 我们以及大多数 Web 框架的序列化工作方式是通过某种类型的方法调用将模型转储为某种类型的格式 在我们的例子中 我们有一个to dict 每个模型上构造并返回键值字典的方法 其中键是字段名称 值是实例变量 在我们的整个代码中 我们都有
  • IBM Worklight 6.0 - 在 Liberty 配置文件上安装 WL 6.0 服务器后,Worklight 控制台不显示 - 错误 500

    IBM Worklight 6 0 安装在带有 mySQL 数据库的 Liberty Profile 8 5 5 上 部署应用程序并尝试访问 Worklight 控制台时 控制台上遇到以下错误 错误 500 javax servlet Se
  • 在 ggduo 散点图矩阵中显示相关指数

    我有这样的事情 library GGally df data frame runif 100 rnorm 100 rgamma 100 1 2 rt 100 1 rf 100 1 2 ggduo df columnsX 1 2 column
  • 重置标题/副标题后如何调整标注气泡的大小

    我创建了一个名为 PushPin 的 MKAnnotation 它有标题和副标题 我希望能够稍后动态更改标题 我已经很接近了 所以我宁愿不必制作一个全新的 AnnotationView 但如果必须的话 我想那也可以 我的问题是 一旦更改标题
  • 数据表中的最大行数

    我的 data table 中有一个包含 8 000 000 行 100 列的数据集 其中每列都是一个计数 我需要找到每行的最大计数以及该最大值位于哪一列 我可以使用以下命令快速获取每行的哪一列具有最大值 dt lt dt maxCol w
  • 无需安装即可获取给定源目录的 python3 包元数据

    我正在尝试获取一些包元数据 名称 版本 并给出源目录的路径 而不安装所述包 这些工作 使用setup py如果您位于根目录中 gt python3 setup py name my package name gt python3 setup
  • Spacy提取特定名词短语

    我可以在 python 中使用 spacy 来查找具有特定邻居的 NP 吗 我想要文本中前后都有动词的名词短语 您可以合并名词短语 这样它们就不会单独标记化 分析依存解析树 查看相邻标记的 POS gt gt gt import spacy
  • 如何通过中央 CVS 存储库在本地使用 Mercurial?

    目前我公司正在使用cvs进行版本控制 我想在本地使用 Mercurial 因为它具有灵活性和合并功 能 这将使我的工作变得更加轻松 这应该怎么做呢 First 本地获取CVS存储库 Second 在此 CVS 存储库上本地创建一个 Merc
  • 如何使用 pydicom 读取所有 DICOM 属性/标签?

    我正在尝试使用 pydicom 获取给定 DICOM 实例的所有属性 标签 的列表 该列表应包含属性 key id 其vr 值以及相应的名称 例如 Tag 2 0 VR UL Name File Meta Information Group