-
Notifications
You must be signed in to change notification settings - Fork 38
Expand file tree
/
Copy pathacdc_data_processing.py
More file actions
117 lines (96 loc) · 3.64 KB
/
Copy pathacdc_data_processing.py
File metadata and controls
117 lines (96 loc) · 3.64 KB
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
116
117
# save images in slice level
import glob
import os
import h5py
import numpy as np
import SimpleITK as sitk
class MedicalImageDeal(object):
def __init__(self, img, percent=1):
self.img = img
self.percent = percent
@property
def valid_img(self):
from skimage import exposure
cdf = exposure.cumulative_distribution(self.img)
watershed = cdf[1][cdf[0] >= self.percent][0]
return np.clip(self.img, self.img.min(), watershed)
@property
def norm_img(self):
return (self.img - self.img.min()) / (self.img.max() - self.img.min())
# saving images in slice level
slice_num = 0
mask_path = sorted(
glob.glob("../data/ACDC_training/*_gt.nii.gz"))
for case in mask_path:
label_itk = sitk.ReadImage(case)
label = sitk.GetArrayFromImage(label_itk)
image_path = case.replace("_gt", "")
image_itk = sitk.ReadImage(image_path)
image = sitk.GetArrayFromImage(image_itk)
scribble_path = case.replace("_gt", "_scribble")
scribble_itk = sitk.ReadImage(scribble_path)
scribble = sitk.GetArrayFromImage(scribble_itk)
image = MedicalImageDeal(image, percent=0.99).valid_img
image = (image - image.min()) / (image.max() - image.min())
print(image.shape)
image = image.astype(np.float32)
item = case.split("/")[-1].split(".")[0].replace("_gt", "")
if image.shape != label.shape:
print("Error")
print(item)
for slice_ind in range(image.shape[0]):
f = h5py.File(
'../data/ACDC_training_slices/{}_slice_{}.h5'.format(item, slice_ind), 'w')
f.create_dataset(
'image', data=image[slice_ind], compression="gzip")
f.create_dataset('label', data=label[slice_ind], compression="gzip")
f.create_dataset(
'scribble', data=scribble[slice_ind], compression="gzip")
f.close()
slice_num += 1
print("Converted all ACDC volumes to 2D slices")
print("Total {} slices".format(slice_num))
# saving images in volume level
class MedicalImageDeal(object):
def __init__(self, img, percent=1):
self.img = img
self.percent = percent
@property
def valid_img(self):
from skimage import exposure
cdf = exposure.cumulative_distribution(self.img)
watershed = cdf[1][cdf[0] >= self.percent][0]
return np.clip(self.img, self.img.min(), watershed)
@property
def norm_img(self):
return (self.img - self.img.min()) / (self.img.max() - self.img.min())
slice_num = 0
mask_path = sorted(
glob.glob("../data/ACDC_training/*_gt.nii.gz"))
for case in mask_path:
label_itk = sitk.ReadImage(case)
label = sitk.GetArrayFromImage(label_itk)
image_path = case.replace("_gt", "")
image_itk = sitk.ReadImage(image_path)
image = sitk.GetArrayFromImage(image_itk)
scribble_path = case.replace("_gt", "_scribble")
scribble_itk = sitk.ReadImage(scribble_path)
scribble = sitk.GetArrayFromImage(scribble_itk)
image = MedicalImageDeal(image, percent=0.99).valid_img
image = (image - image.min()) / (image.max() - image.min())
print(image.shape)
image = image.astype(np.float32)
item = case.split("/")[-1].split(".")[0].replace("_gt", "")
if image.shape != label.shape:
print("Error")
print(item)
f = h5py.File(
'../data/ACDC_training_volumes/{}.h5'.format(item), 'w')
f.create_dataset(
'image', data=image, compression="gzip")
f.create_dataset('label', data=label, compression="gzip")
f.create_dataset('scribble', data=scribble, compression="gzip")
f.close()
slice_num += 1
print("Converted all ACDC volumes to 2D slices")
print("Total {} slices".format(slice_num))