要获取所有标签,您只需迭代数据集中的所有元素即可。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)