ColorMNet / util /transforms.py
root
add test code
d01f62c
from dataset.range_transform import inv_im_trans, inv_lll2rgb_trans
from skimage import color, io
import cv2
import numpy as np
def detach_to_cpu(x):
return x.detach().cpu()
def tensor_to_np_float(image):
image_np = image.numpy().astype('float32')
return image_np
def lab2rgb_transform_PIL(mask):
flag_test = False
mask_d = detach_to_cpu(mask)
if flag_test: print('before inv', mask_d.size(), torch.max(mask_d), torch.min(mask_d))
mask_d = inv_lll2rgb_trans(mask_d)
if flag_test: print('after inv', mask_d.size(), torch.max(mask_d), torch.min(mask_d));assert 1==0
im = tensor_to_np_float(mask_d)
if len(im.shape) == 3:
im = im.transpose((1, 2, 0))
else:
im = im[:, :, None]
im = color.lab2rgb(im)
return im.clip(0, 1)
def calculate_psnr(img1, img2):
mse_value = ((img1 - img2)**2).mean()
if mse_value == 0:
result = float('inf')
else:
result = 20. * np.log10(255. / np.sqrt(mse_value))
return result
def calculate_psnr_for_folder(gt_folder, result_folder):
result_clips = sorted(os.listdir(result_folder))
psnr_values = []
for clip in result_clips:
path_clip = os.path.join(result_folder, clip)
test_files = sorted(os.listdir(path_clip))
for img in test_files:
gt_path = os.path.join(gt_folder, clip, img)
result_path = os.path.join(path_clip, img)
gt_img = np.array(Image.open(gt_path))
result_img = np.array(Image.open(result_path))
psnr = calculate_psnr(gt_img, result_img)
psnr_values.append(psnr)
avg_psnr = np.mean(psnr_values)
return avg_psnr