Spaces:
Runtime error
Runtime error
| import numpy as np | |
| from tqdm import tqdm | |
| def augment_patch(patch): | |
| if len(patch.shape[:-1]) == 2: | |
| patch = np.rot90(patch, k=np.random.randint(4), axes=(0, 1)) | |
| elif len(patch.shape[:-1]) == 3: | |
| patch = np.rot90(patch, k=np.random.randint(4), axes=(1, 2)) | |
| patch = np.flip(patch, axis=-2) if np.random.randint(2) else patch | |
| return patch | |
| # Below implementation of stratified sampling inherited from Noise2Void: https://github.com/juglab/n2v | |
| # Noise2void: learning denoising from single noisy images. Krull, Alexander, Tim-Oliver Buchholz, and Florian Jug. Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2019. | |
| def get_stratified_coords2D(coord_gen, box_size, shape): | |
| box_count_y = int(np.ceil(shape[0] / box_size)) | |
| box_count_x = int(np.ceil(shape[1] / box_size)) | |
| x_coords = [] | |
| y_coords = [] | |
| for i in range(box_count_y): | |
| for j in range(box_count_x): | |
| y, x = next(coord_gen) | |
| y = int(i * box_size + y) | |
| x = int(j * box_size + x) | |
| if (y < shape[0] and x < shape[1]): | |
| y_coords.append(y) | |
| x_coords.append(x) | |
| return (y_coords, x_coords) | |
| def get_stratified_coords3D(coord_gen, box_size, shape): | |
| box_count_z = int(np.ceil(shape[0] / box_size)) | |
| box_count_y = int(np.ceil(shape[1] / box_size)) | |
| box_count_x = int(np.ceil(shape[2] / box_size)) | |
| x_coords = [] | |
| y_coords = [] | |
| z_coords = [] | |
| for i in range(box_count_z): | |
| for j in range(box_count_y): | |
| for k in range(box_count_x): | |
| z, y, x = next(coord_gen) | |
| z = int(i * box_size + z) | |
| y = int(j * box_size + y) | |
| x = int(k * box_size + x) | |
| if (z < shape[0] and y < shape[1] and x < shape[2]): | |
| z_coords.append(z) | |
| y_coords.append(y) | |
| x_coords.append(x) | |
| return (z_coords, y_coords, x_coords) | |
| def rand_float_coords2D(boxsize): | |
| while True: | |
| yield (np.random.rand() * boxsize, np.random.rand() * boxsize) | |
| def rand_float_coords3D(boxsize): | |
| while True: | |
| yield (np.random.rand() * boxsize, np.random.rand() * boxsize, np.random.rand() * boxsize) |