M3000j's picture
Upload folder using huggingface_hub
31726e5 verified
import argparse
import skimage.io
import numpy as np
from matplotlib import cm
import math
from skimage.metrics import structural_similarity as ssim
def normalize(x, min_, max_):
return (x - min_) / (max_ - min_)
def main(args):
img1 = skimage.img_as_float(skimage.io.imread(args.img1)).astype(np.float32)
img2 = skimage.img_as_float(skimage.io.imread(args.img2)).astype(np.float32)
ref = skimage.img_as_float(skimage.io.imread(args.ref)).astype(np.float32)
img1 = img1[:, :, :3]
img2 = img2[:, :, :3]
ref = ref[:, :, :3]
diff1 = np.sum(np.abs(img1 - ref), axis = 2)
diff2 = np.sum(np.abs(img2 - ref), axis = 2)
min_ = min(np.min(diff1), np.min(diff2))
max_ = max(np.max(diff1), np.max(diff2)) * 0.5
diff1 = cm.viridis(normalize(diff1, min_, max_))
diff2 = cm.viridis(normalize(diff2, min_, max_))
# MSE
print('MSE img1:', np.mean(np.power(img1 - ref, 2.0)))
print('MSE img2:', np.mean(np.power(img2 - ref, 2.0)))
# PSNR
print('PSNR img1:', 20 * math.log10(1.0 / math.sqrt(np.mean(np.power(img1 - ref, 2.0)))))
print('PSNR img2:', 20 * math.log10(1.0 / math.sqrt(np.mean(np.power(img2 - ref, 2.0)))))
# SSIM
print('SSIM img1:', ssim(img1, ref, multichannel=True))
print('SSIM img2:', ssim(img2, ref, multichannel=True))
skimage.io.imsave('diff1.png', (diff1 * 255).astype(np.uint8))
skimage.io.imsave('diff2.png', (diff2 * 255).astype(np.uint8))
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument("img1", help="img1")
parser.add_argument("img2", help="img2")
parser.add_argument("ref", help="ref")
args = parser.parse_args()
main(args)