File size: 3,588 Bytes
fd601de
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
import dicom2nifti
import SimpleITK as sitk
from dicom2nifti.exceptions import ConversionValidationError
from MsSeg.SegmentationNetworkBasis.NetworkBasis import image as Image
import os
import glob
import pydicom

#dataset_path = r"C:\Users\ms97\Documents\MRF-Daten\Messdaten"

def fromrootgroupconvert(dataset_path, nii_name='test'):
    i=0
    for patient_folder in glob.glob(dataset_path + "/*/"):
        print('-------------', patient_folder, '-------------')
        i=i+1
        t1_nii_path = os.path.join(dataset_path, patient_folder, f'{nii_name}_{i}.nii')
        try:
            try:
                t1_dicom_path = os.path.join(dataset_path, patient_folder)
                dicom2nifti.dicom_series_to_nifti(t1_dicom_path, t1_nii_path)
            except OSError as err:
                print("Finished for Sequence T1Map " + patient_folder)

            t1_img = sitk.ReadImage(t1_nii_path)
            data_info = Image.get_data_info(t1_img)
            print('Data Info T1:  ', data_info)
        except (KeyError, IndexError) as err:
            print("Failed for Sequence T1Map " + patient_folder + "  ", err)

def simplepatientconvert(patient_folder, nii_name='test'):
    t1_nii_path = os.path.join(patient_folder, f'{nii_name}.nii')
    try:
        try:
            dicom2nifti.dicom_series_to_nifti(patient_folder, t1_nii_path)
        except OSError as err:
            print("Finished for Sequence Dicom " + patient_folder)

        t1_img = sitk.ReadImage(t1_nii_path)
        data_info = Image.get_data_info(t1_img)
        print('Data Info T1:  ', data_info)
    except (KeyError, IndexError) as err:
        print("Failed for Sequence Dicom " + patient_folder + "  ", err)

def itkfromrootgroupconvert(dataset_path, nii_name='test'):
    i=0
    for patient_folder in glob.glob(dataset_path + "/*/"):
        print('-------------', patient_folder, '-------------')
        i=i+1
        try:
            try:
                reader = sitk.ImageSeriesReader()
                dicom_names = reader.GetGDCMSeriesFileNames(patient_folder)
                reader.SetFileNames(dicom_names)
                image = reader.Execute()
                basefoldername=os.path.basename(os.path.normpath(patient_folder))
                t1_nii_path = os.path.join(dataset_path, f'{basefoldername}.nii.gz')
                # Added a call to PermuteAxes to change the axes of the data
                image = sitk.PermuteAxes(image, [2, 1, 0])
                sitk.WriteImage(image, t1_nii_path)
            except OSError as err:
                print("Finished for Sequence T1Map " + patient_folder)

            t1_img = sitk.ReadImage(t1_nii_path)
            data_info = Image.get_data_info(t1_img)
            print('Data Info Dicom:  ', data_info)
        except (KeyError, IndexError) as err:
            print("Failed for Sequence Dicom " + patient_folder + "  ", err)

def itkforpatientconvert(patient_folder, nii_name='test'):
    reader = sitk.ImageSeriesReader()
    dicom_names = reader.GetGDCMSeriesFileNames(patient_folder)
    reader.SetFileNames(dicom_names)
    image = reader.Execute()
    t1_nii_path = os.path.join(patient_folder, f'{nii_name}.nii.gz')
    # Added a call to PermuteAxes to change the axes of the data
    image = sitk.PermuteAxes(image, [2, 1, 0])
    sitk.WriteImage(image, t1_nii_path)

if __name__=="__main__":
    dataset_path = r"D:\Data\dataNeaotomAlpha\DICOM_Naeotom\DICOM\23072115"
    itkfromrootgroupconvert(dataset_path)
    #patient_folder = r"D:\Data\dataNeaotomAlpha\Q0Q1Q4"
    #simpleitkconvert(patient_folder,'2511')