This repository has been archived by the owner on May 15, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 26
/
Copy pathorganize_folder_structure.py
116 lines (83 loc) · 4.02 KB
/
organize_folder_structure.py
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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
import os
import re
import argparse
import SimpleITK as sitk
import numpy as np
import random
from utils import *
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument('--images', default='./Data_folder/T2', help='path to the images')
parser.add_argument('--labels', default='./Data_folder/T2_labels', help='path to the labels')
parser.add_argument('--split_val', default=20, help='number of images for validation')
parser.add_argument('--split_test', default=19, help='number of images for testing')
parser.add_argument('--resolution', default=[0.7, 0.7, 3], help='New Resolution to resample the data to same spacing')
parser.add_argument('--smooth', default=False, help='Set True if you want to smooth a bit the binary mask')
args = parser.parse_args()
list_images = lstFiles(args.images)
list_labels = lstFiles(args.labels)
mapIndexPosition = list(zip(list_images, list_labels)) # shuffle order list
random.shuffle(mapIndexPosition)
list_images, list_labels = zip(*mapIndexPosition)
os.mkdir('./Data_folder/images')
os.mkdir('./Data_folder/labels')
# 1
if not os.path.isdir('./Data_folder/images/train'):
os.mkdir('./Data_folder/images/train/')
# 2
if not os.path.isdir('./Data_folder/images/val'):
os.mkdir('./Data_folder/images/val')
# 3
if not os.path.isdir('./Data_folder/images/test'):
os.mkdir('./Data_folder/images/test')
# 4
if not os.path.isdir('./Data_folder/labels/train'):
os.mkdir('./Data_folder/labels/train')
# 5
if not os.path.isdir('./Data_folder/labels/val'):
os.mkdir('./Data_folder/labels/val')
# 6
if not os.path.isdir('./Data_folder/labels/test'):
os.mkdir('./Data_folder/labels/test')
for i in range(len(list_images)-int(args.split_test + args.split_val)):
a = list_images[int(args.split_test + args.split_val)+i]
b = list_labels[int(args.split_test + args.split_val)+i]
print('train',i, a,b)
label = sitk.ReadImage(b)
image = sitk.ReadImage(a)
image = resample_sitk_image(image, spacing=args.resolution, interpolator='linear', fill_value=0)
image, label = uniform_img_dimensions(image, label, nearest=True)
if args.smooth is True:
label = gaussian2(label)
image_directory = os.path.join('./Data_folder/images/train', f"image{i:d}.nii")
label_directory = os.path.join('./Data_folder/labels/train', f"label{i:d}.nii")
sitk.WriteImage(image, image_directory)
sitk.WriteImage(label, label_directory)
for i in range(int(args.split_val)):
a = list_images[int(args.split_test)+i]
b = list_labels[int(args.split_test)+i]
print('val',i, a,b)
label = sitk.ReadImage(b)
image = sitk.ReadImage(a)
image = resample_sitk_image(image, spacing=args.resolution, interpolator='linear', fill_value=0)
image, label = uniform_img_dimensions(image, label, nearest=True)
if args.smooth is True:
label = gaussian2(label)
image_directory = os.path.join('./Data_folder/images/val', f"image{i:d}.nii")
label_directory = os.path.join('./Data_folder/labels/val', f"label{i:d}.nii")
sitk.WriteImage(image, image_directory)
sitk.WriteImage(label, label_directory)
for i in range(int(args.split_test)):
a = list_images[i]
b = list_labels[i]
print('test',i,a,b)
label = sitk.ReadImage(b)
image = sitk.ReadImage(a)
image = resample_sitk_image(image, spacing=args.resolution, interpolator='linear', fill_value=0)
image, label = uniform_img_dimensions(image, label, nearest=True)
if args.smooth is True:
label = gaussian2(label)
image_directory = os.path.join('./Data_folder/images/test', f"image{i:d}.nii")
label_directory = os.path.join('./Data_folder/labels/test', f"label{i:d}.nii")
sitk.WriteImage(image, image_directory)
sitk.WriteImage(label, label_directory)