forked from Rimehdaoudi/Tumour-Segmentation
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathLoad.py
More file actions
78 lines (66 loc) · 2.33 KB
/
Load.py
File metadata and controls
78 lines (66 loc) · 2.33 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
# Import the required libraries.
import os
import skimage.io
import nibabel as nib
from sklearn.model_selection import train_test_split
# Create the Load Data class.
class LoadData3D(object):
# Class Constructor.
def __init__(self, directoryImages=" ", directoryMask=" "):
self.dirImages = directoryImages
self.dirMask = directoryMask
# Load a single image.
def loadImage(self, dataFile):
image = nib.load(self.dirImages + dataFile)
return image
# Load the images and store in a list.
def loadImages(self):
self.files = os.listdir(self.dirImages)
data_all = []
for i in self.files:
self.images = nib.load(self.dirImages + i)
data_all.append(self.images)
return data_all
# Load a single tumour mask.
def loadMask(self, dataFile):
mask = nib.load(self.dirMask + dataFile)
return mask
# Load the tumour masks and store them as a list.
def loadMasks(self):
self.files = os.listdir(self.dir)
data_all = []
for i in self.files:
self.images = nib.load(self.dirMask + i)
data_all.append(self.images)
return data_all
# Get the data of nibabel object.
def getData(self, image):
data = image.get_fdata()
return data
# Get the data of multiple nibabel objects.
def retrieveData(self, images):
imageData = []
for i in range(len(images)):
self.data = images[i].get_fdata()
imageData.append(self.data)
return imageData
# Class for 2-Dimensional data
class LoadData2D(object):
# Read a single image.
def readImage(self, PATH):
return skimage.io.imread(PATH)
# Read in multiple images.
def readImages(self, PATH, extension):
args = [os.path.join(PATH, filename)
for filename in os.listdir(PATH)
if any(filename.lower().endswith(ext) for ext in extension)]
imgs = [self.readImage(arg) for arg in args]
return imgs
# X = Images and y = Masks (Must be arrays not objects!)
def splitData(self, images, masks, splitSize):
X_train, X_test, y_train, y_test = train_test_split(
images,
masks,
test_size=splitSize
)
return X_train, X_test, y_train, y_test