Spaces:
Running
Running
| # ------------------------------------------------------------ # | |
| # | |
| # file : utils/learning/patch/reconstruction.py | |
| # author : CM | |
| # Function to reconstruct image from patch | |
| # | |
| # ------------------------------------------------------------ | |
| import numpy as np | |
| # ----- Image Reconstruction ----- | |
| # Recreate the image from patchs | |
| def fullPatchsToImage(image,patchs): | |
| i = 0 | |
| for x in range(0,image.shape[0], patchs.shape[1]): | |
| for y in range(0, image.shape[1], patchs.shape[2]): | |
| for z in range(0,image.shape[2], patchs.shape[3]): | |
| image[x:x+patchs.shape[1],y:y+patchs.shape[2],z:z+patchs.shape[3]] = patchs[i,:,:,:,0] | |
| i = i+1 | |
| return image | |
| def fullPatchsPlusToImage(image,patchs, dx, dy, dz): | |
| div = np.zeros(image.shape) | |
| one = np.ones((patchs.shape[1],patchs.shape[2],patchs.shape[3])) | |
| i = 0 | |
| for x in range(0,image.shape[0]-dx, dx): | |
| for y in range(0, image.shape[1]-dy, dy): | |
| for z in range(0,image.shape[2]-dz, dz): | |
| div[x:x+patchs.shape[1],y:y+patchs.shape[2],z:z+patchs.shape[3]] += one | |
| image[x:x+patchs.shape[1],y:y+patchs.shape[2],z:z+patchs.shape[3]] = patchs[i,:,:,:,0] | |
| i = i+1 | |
| image = image/div | |
| return image | |
| def dolzReconstruction(image,patchs): | |
| output = np.copy(image) | |
| count = 0 | |
| print("image shape", image.shape) | |
| print("patchs shape", patchs.shape) | |
| # todo : change 16 with patch shape | |
| for x in range(0,image.shape[0], 16): | |
| for y in range(0, image.shape[1], 16): | |
| for z in range(0,image.shape[2], 16): | |
| patch = np.argmax(patchs[count], axis=1) | |
| patch = patch.reshape(16, 16, 16) | |
| output[x:x+patch.shape[0],y:y+patch.shape[1],z:z+patch.shape[2]] = patch | |
| count += 1 | |
| return output |