Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import os
- import numpy as np
- import pydicom as dicom
- from matplotlib import pyplot as plt
- root_dir = 'mydcomDir'
- def sortDcm():
- print('Given Path to the .dcm directory is: {}'.format(root_dir))
- slices = [dicom.read_file(root_dir + '/' + s) for s in os.listdir(root_dir)]
- slices.sort(key = lambda x: float(x.ImagePositionPatient[2]))
- pos1 = slices[int(len(slices)/2)].ImagePositionPatient[2]
- pos2 = slices[(int(len(slices)/2)) + 1].ImagePositionPatient[2]
- diff = pos2 - pos1
- # if diff > 0:
- # slices = np.flipud(slices)
- try:
- slice_thickness = np.abs(slices[0].ImagePositionPatient[2] - slices[1].ImagePositionPatient[2])
- except:
- slice_thickness = np.abs(slices[0].SliceLocation - slices[1].SliceLocation)
- for s in slices:
- s.SliceThickness = slice_thickness
- # print("from sorted dicom",len(slices))
- return slices
- dcms = sortDcm()
- ref_dicom = dcms[0]
- d_array = np.zeros((ref_dicom.Columns,ref_dicom.Rows, len(dcms)), dtype=ref_dicom.pixel_array.dtype)
- for dcm in dcms:
- d_array[:, :, dcms.index(dcm)] = dcm.pixel_array
- # fig = plt.figure(figsize=(12,12))
- # plt.subplot(1, 3, 1)
- # plt.title("Coronal")
- # plt.imshow(np.flipud(d_array[idx , :, :].T))
- # plt.subplot(1, 3, 2)
- # plt.title("Sagital")
- # plt.imshow(np.flipud(d_array[:, idy, :].T))
- # plt.subplot(1, 3, 3)
- plt.title("axial")
- plt.imshow(d_array[:, :, dcms.index(dcm)])
- plt.pause(0.001)
Add Comment
Please, Sign In to add comment