Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
self.data_io.interface.three_dim)
else : patches_seg = None
# Skip blank patches (only background)
if training and self.patchwise_skip_blanks:
# Iterate over each patch
for i in reversed(range(0, len(patches_seg))):
# IF patch DON'T contain any non background class -> remove it
if not np.any(patches_seg[i][...,self.patchwise_skip_class] != 1):
del patches_img[i]
del patches_seg[i]
# Concatenate a list of patches into a single numpy array
img_data = np.stack(patches_img, axis=0)
if training : seg_data = np.stack(patches_seg, axis=0)
# Pad patches if necessary
if img_data.shape[1:-1] != self.patch_shape and training:
img_data = pad_patch(img_data, self.patch_shape,return_slicer=False)
seg_data = pad_patch(seg_data, self.patch_shape,return_slicer=False)
elif img_data.shape[1:-1] != self.patch_shape and not training:
img_data, slicer = pad_patch(img_data, self.patch_shape,
return_slicer=True)
self.cache["slicer_" + str(sample.index)] = slicer
# Run data augmentation
if data_aug:
img_data, seg_data = self.data_augmentation.run(img_data, seg_data)
# Create tuple of preprocessed data
if training:
ready_data = list(zip(img_data, seg_data))
else:
ready_data = list(zip(img_data))
# Return preprocessed data tuple
return ready_data
# IF patch DON'T contain any non background class -> remove it
if not np.any(patches_seg[i][...,self.patchwise_skip_class] != 1):
del patches_img[i]
del patches_seg[i]
# Select a random patch
pointer = np.random.randint(0, len(patches_img))
img = patches_img[pointer]
seg = patches_seg[pointer]
# Expand image dimension to simulate a batch with one image
img_data = np.expand_dims(img, axis=0)
seg_data = np.expand_dims(seg, axis=0)
# Pad patches if necessary
if img_data.shape[1:-1] != self.patch_shape:
img_data = pad_patch(img_data, self.patch_shape,
return_slicer=False)
seg_data = pad_patch(seg_data, self.patch_shape,
return_slicer=False)
# Run data augmentation
if data_aug:
img_data, seg_data = self.data_augmentation.run(img_data,
seg_data)
# If skipping blank is not active -> random crop
else:
# Access image and segmentation data
img = sample.img_data
seg = sample.seg_data
# If no data augmentation should be performed
# -> create Data Augmentation instance without augmentation methods
if not data_aug or self.data_augmentation is None:
cropping_data_aug = Data_Augmentation(cycles=1,
scaling=False, rotations=False,
elastic_deform=False, mirror=False,
if training and self.patchwise_skip_blanks:
# Iterate over each patch
for i in reversed(range(0, len(patches_seg))):
# IF patch DON'T contain any non background class -> remove it
if not np.any(patches_seg[i][...,self.patchwise_skip_class] != 1):
del patches_img[i]
del patches_seg[i]
# Concatenate a list of patches into a single numpy array
img_data = np.stack(patches_img, axis=0)
if training : seg_data = np.stack(patches_seg, axis=0)
# Pad patches if necessary
if img_data.shape[1:-1] != self.patch_shape and training:
img_data = pad_patch(img_data, self.patch_shape,return_slicer=False)
seg_data = pad_patch(seg_data, self.patch_shape,return_slicer=False)
elif img_data.shape[1:-1] != self.patch_shape and not training:
img_data, slicer = pad_patch(img_data, self.patch_shape,
return_slicer=True)
self.cache["slicer_" + str(sample.index)] = slicer
# Run data augmentation
if data_aug:
img_data, seg_data = self.data_augmentation.run(img_data, seg_data)
# Create tuple of preprocessed data
if training:
ready_data = list(zip(img_data, seg_data))
else:
ready_data = list(zip(img_data))
# Return preprocessed data tuple
return ready_data
else : patches_seg = None
# Skip blank patches (only background)
if training and self.patchwise_skip_blanks:
# Iterate over each patch
for i in reversed(range(0, len(patches_seg))):
# IF patch DON'T contain any non background class -> remove it
if not np.any(patches_seg[i][...,self.patchwise_skip_class] != 1):
del patches_img[i]
del patches_seg[i]
# Concatenate a list of patches into a single numpy array
img_data = np.stack(patches_img, axis=0)
if training : seg_data = np.stack(patches_seg, axis=0)
# Pad patches if necessary
if img_data.shape[1:-1] != self.patch_shape and training:
img_data = pad_patch(img_data, self.patch_shape,return_slicer=False)
seg_data = pad_patch(seg_data, self.patch_shape,return_slicer=False)
elif img_data.shape[1:-1] != self.patch_shape and not training:
img_data, slicer = pad_patch(img_data, self.patch_shape,
return_slicer=True)
self.cache["slicer_" + str(sample.index)] = slicer
# Run data augmentation
if data_aug:
img_data, seg_data = self.data_augmentation.run(img_data, seg_data)
# Create tuple of preprocessed data
if training:
ready_data = list(zip(img_data, seg_data))
else:
ready_data = list(zip(img_data))
# Return preprocessed data tuple
return ready_data
# Skip blank patches (only background)
for i in reversed(range(0, len(patches_seg))):
# IF patch DON'T contain any non background class -> remove it
if not np.any(patches_seg[i][...,self.patchwise_skip_class] != 1):
del patches_img[i]
del patches_seg[i]
# Select a random patch
pointer = np.random.randint(0, len(patches_img))
img = patches_img[pointer]
seg = patches_seg[pointer]
# Expand image dimension to simulate a batch with one image
img_data = np.expand_dims(img, axis=0)
seg_data = np.expand_dims(seg, axis=0)
# Pad patches if necessary
if img_data.shape[1:-1] != self.patch_shape:
img_data = pad_patch(img_data, self.patch_shape,
return_slicer=False)
seg_data = pad_patch(seg_data, self.patch_shape,
return_slicer=False)
# Run data augmentation
if data_aug:
img_data, seg_data = self.data_augmentation.run(img_data,
seg_data)
# If skipping blank is not active -> random crop
else:
# Access image and segmentation data
img = sample.img_data
seg = sample.seg_data
# If no data augmentation should be performed
# -> create Data Augmentation instance without augmentation methods
if not data_aug or self.data_augmentation is None:
cropping_data_aug = Data_Augmentation(cycles=1,