|
|
import matplotlib.pyplot as plt
|
|
|
import numpy as np
|
|
|
from PIL import Image
|
|
|
import argparse
|
|
|
|
|
|
parser = argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter)
|
|
|
parser.add_argument('--image', type=str, help='input image')
|
|
|
parser.add_argument('--output', type=str, help='output file')
|
|
|
parser.add_argument('--mask', type=str, default='', help='ground truth mask (optional)')
|
|
|
args = parser.parse_args()
|
|
|
|
|
|
image_path = args.image
|
|
|
output_path = args.output
|
|
|
mask_path = args.mask
|
|
|
|
|
|
result = np.load(output_path)
|
|
|
|
|
|
cols = 3
|
|
|
if mask_path != '':
|
|
|
cols += 1
|
|
|
mask = Image.open(mask_path)
|
|
|
else:
|
|
|
mask = None
|
|
|
|
|
|
if 'np++' in result:
|
|
|
cols += 1
|
|
|
noisepr = result['np++']
|
|
|
else:
|
|
|
noisepr = None
|
|
|
|
|
|
fig, axs = plt.subplots(1, cols)
|
|
|
fig.suptitle('score: %.3f' % result['score'])
|
|
|
|
|
|
for ax in axs:
|
|
|
ax.axis('off')
|
|
|
|
|
|
index = 0
|
|
|
ax = axs[index]
|
|
|
ax.imshow(Image.open(image_path)), ax.set_title('Image')
|
|
|
|
|
|
if mask is not None:
|
|
|
index += 1
|
|
|
ax = axs[index]
|
|
|
ax.imshow(mask, cmap='gray'), ax.set_title('Ground Truth')
|
|
|
ax.set_yticks(list()), ax.set_xticks(list()), ax.axis('on')
|
|
|
|
|
|
if noisepr is not None:
|
|
|
index += 1
|
|
|
ax = axs[index]
|
|
|
|
|
|
ax.imshow(noisepr[16:-16:5, 16:-16:5], cmap='gray'), ax.set_title('Noiseprint++')
|
|
|
|
|
|
index += 1
|
|
|
ax = axs[index]
|
|
|
ax.imshow(result['map'], cmap='RdBu_r', clim=[0,1]), ax.set_title('Localization map')
|
|
|
|
|
|
index += 1
|
|
|
ax = axs[index]
|
|
|
ax.imshow(result['conf'], cmap='gray', clim=[0,1]), ax.set_title('Confidence map')
|
|
|
ax.set_yticks(list()), ax.set_xticks(list()), ax.axis('on')
|
|
|
|
|
|
plt.show()
|
|
|
|