dicomReader

  1. read a dcm file

    1
    2
    3
    4
    import SimpleITK as sitk

    image = sitk.ReadImage(dcm_file)
    image_arr = sitk.GetArrayFromImage(image)
  2. read a dcm series

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    series_IDs = sitk.ImageSeriesReader.GetGDCMSeriesIDs(series_path)

    nb_series = len(series_IDs)
    print(nb_series)

    # 默认获取第一个序列的所有切片路径
    dicom_names = sitk.ImageSeriesReader.GetGDCMSeriesFileNames(file_path)
    series_reader = sitk.ImageSeriesReader()
    series_reader.SetFileNames(dicom_names)
    image3D = series_reader.Execute()
  3. read a dcm case

    1
    2
    3
    4
    5
    6
    series_IDs = sitk.ImageSeriesReader.GetGDCMSeriesIDs(case_path)
    for series_id in series_IDs:
    dicom_names = sitk.ImageSeriesReader.GetGDCMSeriesFileNames(case_path, series_id)
    series_reader = sitk.ImageSeriesReader()
    series_reader.SetFileNames(dicom_names)
    image3D = series_reader.Execute()
  4. read tag

    1
    2
    # 首先得到image对象
    Image_type = image.GetMetaData("0008|0008") if image.HasMetaData("0008|0008") else 'Nan'
  5. 发现一种序列,每张图的尺寸不同,这样执行series_reader的时候会报错,因为series_reader会依照第一层的图像尺寸申请空间,所以要么异常要么逐张读。

    reference: http://itk-users.7.n7.nabble.com/ITK-users-Reader-InvalidRequestedRegionError-td38608.html