#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 3/5/2018 1:32 PM # @Author : xn LI # @Site : # @File : convertDICOM.py # @Software: PyCharm from __future__ import print_function import os import sys import numpy as np import SimpleITK as sitk import matplotlib.pyplot as plt def sitk_show(img, title=None, margin=0.05, dpi=40): nda = sitk.GetArrayFromImage(img) spacing = img.GetSpacing() figsize = (1 + margin) * nda.shape[0] / dpi, (1 + margin) * nda.shape[1] / dpi extent = (0, nda.shape[1] * spacing[1], nda.shape[0] * spacing[0], 0) fig = plt.figure(figsize=figsize, dpi=dpi) ax = fig.add_axes([margin, margin, 1 - 2 * margin, 1 - 2 * margin]) plt.set_cmap("gray") ax.imshow(nda, extent=extent, interpolation=None) if title: plt.title(title) plt.show() def main(): data_directory = r"C:/Lxn/LUNG/data/CASE36" series_reader = sitk.ImageSeriesReader() series_IDs = series_reader.GetGDCMSeriesIDs(data_directory) if not series_IDs: print("ERROR: given directory \"" + data_directory + "\" does not contain a DICOM series.") sys.exit(1) series_file_names = series_reader.GetGDCMSeriesFileNames(data_directory, series_IDs[0]) image_reader = sitk.ImageFileReader() image_reader.LoadPrivateTagsOn() for file_name in series_file_names: image_reader.SetFileName(file_name) image = image_reader.Execute() window_center = image.GetMetaData("0028|1050") if image.HasMetaDataKey("0028|1050") else 0.0 window_width = image.GetMetaData("0028|1051") if image.HasMetaDataKey("0028|1051") else 0.0 rescale_interpret = image.GetMetaData("0028|1052") if image.HasMetaDataKey("0028|1052") else 0.0 rescale_slope = image.GetMetaData("0028|1053") if image.HasMetaDataKey("0028|1053") else 1.0 data = image[:, :, 0] for key in image.GetMetaDataKeys(): value = image.GetMetaData(key) print("({0}) = = \"{1}\"".format(key, value)) if __name__ == '__main__': main()
DICOM序列读入其METADATA
最新推荐文章于 2021-02-21 17:58:00 发布