def getLocalScore(self,SR,HR,size=16,step=8): bound = step srimg = util.rgb2ycbcr(SR) hrimg = util.rgb2ycbcr(HR) #Sliding window approach to find local psnr and ssim values srimg = np.pad(srimg,pad_width=((bound,bound),(bound,bound)),mode='symmetric') hrimg = np.pad(hrimg,pad_width=((bound,bound),(bound,bound)),mode='symmetric') h,w = hrimg.shape[:2] psnr_vals = np.zeros(hrimg.shape) ssim_vals = np.zeros(hrimg.shape) for i in range(bound,h-bound-1,1): for j in range(bound,w-bound-1,1): img1 = srimg[i-bound:i+bound+1,j-bound:j+bound+1] img2 = hrimg[i-bound:i+bound+1,j-bound:j+bound+1] psnr_vals[i,j] = util.calc_psnr(img1 * 255,img2 * 255) ssim_vals[i,j] = util.calc_ssim(img1 * 255,img2 * 255) psnr_vals = psnr_vals[bound:-bound,bound:-bound] ssim_vals = ssim_vals[bound:-bound,bound:-bound] psnr_std = np.std(psnr_vals[psnr_vals > 0]) psnr_mean = np.mean(psnr_vals[psnr_vals > 0]) ssim_std = np.std(ssim_vals[ssim_vals > 0]) ssim_mean = np.mean(ssim_vals[ssim_vals > 0]) info = {'local_psnr':psnr_vals, 'local_ssim': ssim_vals, 'psnr_std': psnr_std,'psnr_mean':psnr_mean,'ssim_std':ssim_std,'ssim_mean':ssim_mean} return info
h_min = min(sr_img.shape[0], gt_img.shape[0]) w_min = min(sr_img.shape[1], gt_img.shape[1]) sr_img = sr_img[0:h_min, 0:w_min, :] gt_img = gt_img[0:h_min, 0:w_min, :] scale = test_loader.dataset.opt['scale'] crop_border = scale + 2 cropped_sr_img = sr_img[crop_border:-crop_border, crop_border:-crop_border, :] cropped_gt_img = gt_img[crop_border:-crop_border, crop_border:-crop_border, :] psnr = util.psnr(cropped_sr_img, cropped_gt_img) ssim = util.ssim(cropped_sr_img, cropped_gt_img, multichannel=True) test_results['psnr'].append(psnr) test_results['ssim'].append(ssim) if gt_img.shape[2] == 3: # RGB image cropped_sr_img_y = util.rgb2ycbcr(cropped_sr_img, only_y=True) cropped_gt_img_y = util.rgb2ycbcr(cropped_gt_img, only_y=True) psnr_y = util.psnr(cropped_sr_img_y, cropped_gt_img_y) ssim_y = util.ssim(cropped_sr_img_y, cropped_gt_img_y, multichannel=False) test_results['psnr_y'].append(psnr_y) test_results['ssim_y'].append(ssim_y) print('{:20s} - PSNR: {:.4f} dB; SSIM: {:.4f}; PSNR_Y: {:.4f} dB; SSIM_Y: {:.4f}.'\ .format(img_name, psnr, ssim, psnr_y, ssim_y)) else: print('{:20s} - PSNR: {:.4f} dB; SSIM: {:.4f}.'.format(img_name, psnr, ssim)) else: print(img_name) save_img_path = os.path.join(dataset_dir, img_name+'.png') util.save_img_np(sr_img.squeeze(), save_img_path)