def original_color_transform(content, generated, mask=None): generated = fromimage(toimage(generated, mode='RGB'), mode='YCbCr') # Convert to YCbCr color space if mask is None: generated[:, :, 1:] = content[:, :, 1:] # Generated CbCr = Content CbCr else: width, height, channels = generated.shape for i in range(width): for j in range(height): if mask[i, j] == 1: generated[i, j, 1:] = content[i, j, 1:] generated = fromimage(toimage(generated, mode='YCbCr'), mode='RGB') # Convert to RGB color space return generated
def test(self, config): """ Output: bicubic image and SRCNN image pairs """ self.loadModel() image_paths = prepare_data(self.sess, dataset="Test") avg_psnr_srcnn = 0 avg_psnr_bicubic = 0 for image_path in image_paths: image_dir, image_name = os.path.split(image_path) nx, ny, bicubic_img, ground_truth = input_setup(self.sess, config, image_path) data_dir = os.path.join('./{}'.format(config.checkpoint_dir), "test.h5") train_data, train_label = read_data(data_dir) # train_data(bicubic):(33, 33); train_label(gt):(21, 21) result = self.pred.eval({self.images: train_data, self.labels: train_label}) PSNR_bicubic = PSNR(train_data, train_label) PSNR_srcnn = PSNR(result, train_label) avg_psnr_bicubic += PSNR_bicubic avg_psnr_srcnn += PSNR_srcnn result = merge(result, [nx, ny]) # result(SRCNN):(21, 21) result = result.squeeze() image_dir = os.path.join(os.getcwd(), config.sample_dir) image_path = os.path.join(image_dir, image_name) bicubic_path = os.path.join(image_dir, "bicubic_"+image_name) px = 1/plt.rcParams['figure.dpi'] # pixel in inches width = max(ground_truth.shape[0], ground_truth.shape[1]) # plot image plt.figure(image_name, figsize=(2*width*px,3*width*px)) ax1 = plt.subplot(3,1,1) ax1.set_title("SRCNN - PSNR - " + str(PSNR_srcnn)) plt.imshow(toimage(result), cmap='gray') ax2 = plt.subplot(3,1,2) ax2.set_title("Bicubic - PSNR - " + str(PSNR_bicubic)) plt.imshow(toimage(bicubic_img), cmap='gray') ax3 = plt.subplot(3,1,3) ax3.set_title("Ground Truth") plt.imshow(toimage(ground_truth), cmap='gray') plt.savefig(image_path) plt.close() avg_psnr_srcnn /= len(image_paths) avg_psnr_bicubic /= len(image_paths) print("average PSNR of srcnn = {}\n average PSNR of bicubic = {}".format(avg_psnr_srcnn, avg_psnr_bicubic))
def original_color_transform(content, generated, mask=None, hist_match=0, mode='YCbCr'): generated = fromimage(toimage(generated, mode='RGB'), mode=mode) # Convert to YCbCr color space if mask is None: if hist_match == 1: for channel in range(3): generated[:, :, channel] = match_histograms(generated[:, :, channel], content[:, :, channel]) else: generated[:, :, 1:] = content[:, :, 1:] else: width, height, channels = generated.shape for i in range(width): for j in range(height): if mask[i, j] == 1: if hist_match == 1: for channel in range(3): generated[i, j, channel] = match_histograms(generated[i, j, channel], content[i, j, channel]) else: generated[i, j, 1:] = content[i, j, 1:] generated = fromimage(toimage(generated, mode=mode), mode='RGB') # Convert to RGB color space return generated
for trgimg in targetfiles: if trgimg.endswith('.png'): targetimgs.append(trgimg) # Start converting num_source_img = 0 for srcimg in sourceimgs: num_source_img += 1 im_src = Image.open(sourcepath + srcimg).convert('RGB') if RANDOM_TARGET: random_tar = random.choice(targetimgs) elif GUIDED_TARGET: random_tar = matcher_dict[srcimg] im_trg = Image.open(targetpath + random_tar).convert('RGB') w, h = im_src.size[0], im_src.size[1] im_src = im_src.resize((w, h), Image.BICUBIC) im_trg = im_trg.resize((w, h), Image.BICUBIC) im_src = np.asarray(im_src, np.float32) im_trg = np.asarray(im_trg, np.float32) im_src = im_src.transpose((2, 0, 1)) im_trg = im_trg.transpose((2, 0, 1)) src_in_trg = FDA_source_to_target_np(im_src, im_trg, L=0.01) src_in_trg = src_in_trg.transpose((1, 2, 0)) print('converting: ', srcimg, 'target: ', random_tar, "(" + str(num_source_img) + ")") toimage(src_in_trg, cmin=0.0, cmax=255.0).save(savepath + srcimg)