问题描述
我正在尝试使用 pydicom 获取给定 DICOM 实例的所有属性(标签)的列表。
例如:
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 是文档中执行此操作的示例。归结为:
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="")
如果您想打印自己的数据元素表示,您可以访问元素属性。 每个元素都是一个 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','AXIAL']
>>> element.VM
3
您会在 Dataset 的文档中找到类似的信息,也可能在其他示例中找到。
请注意,还有一个 command line interface 用于显示 DICOM 文件的内容。