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 |