本代码是超分或者复原任务中,想找出PSNR差距较大的区域的代码

import os
import math
import numpy as np
import cv2
import glob
from skimage import transform
from skimage import measure
from collections import OrderedDictimport matplotlib.pyplot as plt
import matplotlib.patches as patchesdef bgr2ycbcr(img, only_y=True):'''same as matlab rgb2ycbcronly_y: only return Y channelInput:uint8, [0, 255]float, [0, 1]'''in_img_type = img.dtypeimg.astype(np.float32)if in_img_type != np.uint8:img *= 255.# convertif only_y:rlt = np.dot(img, [24.966, 128.553, 65.481]) / 255.0 + 16.0else:rlt = np.matmul(img, [[24.966, 112.0, -18.214], [128.553, -74.203, -93.786],[65.481, -37.797, 112.0]]) / 255.0 + [16, 128, 128]if in_img_type == np.uint8:rlt = rlt.round()else:rlt /= 255.return rlt.astype(in_img_type)def calculate_psnr(img1, img2):# img1 and img2 have range [0, 255]img1 = img1.astype(np.float64)img2 = img2.astype(np.float64)mse = np.mean((img1 - img2)**2)if mse == 0:return float('inf')return 20 * math.log10(255.0 / math.sqrt(mse))def mse2psnr(mse):if mse == 0:return float('inf')return 20 * math.log10(1.0 / math.sqrt(mse))def plot_heatmap(image, heat_map, alpha=0.5, display=False, save=None, cmap='viridis', axis='on', dpi=80, verbose=False):height = image.shape[0]width = image.shape[1]# resize heat mapheat_map_resized = transform.resize(heat_map, (height, width))# normalize heat mapmax_value = np.max(heat_map_resized)min_value = np.min(heat_map_resized)normalized_heat_map = (heat_map_resized - min_value) / (max_value - min_value)if display:# displayplt.imshow(image)plt.imshow(255 * normalized_heat_map, alpha=alpha, cmap=cmap)plt.axis(axis)plt.show()if save is not None:if verbose:print('save image: ' + save)H, W, C = image.shapefigsize = W / float(dpi), H / float(dpi)fig = plt.figure(figsize=figsize)ax = fig.add_axes([0, 0, 1, 1])ax.axis('off')ax.imshow(image)ax.imshow(255 * normalized_heat_map, alpha=alpha, cmap=cmap)ax.set(xlim=[0, W], ylim=[H, 0], aspect=1)fig.savefig(save, dpi=dpi, transparent=True)def to_bin(img, lower, upper):return (lower < img) & (img < upper)def plot_diffmap(im_BSL, im_OCT, im_GT, heatmap, thres=0.4, alpha=0.5, display=False, save=None, cmap='viridis', axis='on', dpi=80, verbose=False):height, width, _ = im_BSL.shape# resize heat mapheatmap_resized = transform.resize(heatmap, (height, width))# normalize heat mapmax_value = np.max(heatmap_resized)min_value = np.min(heatmap_resized)normalized_heatmap = (heatmap_resized - min_value) / (max_value - min_value)# capture regionsbin_map = to_bin(normalized_heatmap, thres, 1.0)label_map = measure.label(bin_map, connectivity=2)props = measure.regionprops(label_map)plot_im = im_BSL.copy()plot_im[~bin_map] = 0if save is not None:if verbose:print('save image: ' + save)H, W, C = im_BSL.shapefigsize = W / float(dpi), H / float(dpi)fig = plt.figure(figsize=figsize)ax = fig.add_axes([0, 0, 1, 1])ax.axis('off')ax.imshow(im_BSL)ax.imshow(normalized_heatmap, alpha=alpha)
#         ax.imshow(plot_im, alpha=alpha)ax.axis(axis)for i in range(len(props)):if props[i].bbox_area >= 100:bbox_coord = props[i].bboxax.add_patch(patches.Rectangle((bbox_coord[1], bbox_coord[0]),bbox_coord[3] - bbox_coord[1],bbox_coord[2] - bbox_coord[0],edgecolor='y',linewidth = 6,fill=False))psnr = calculate_psnr(im_OCT[bbox_coord[0]:bbox_coord[2], bbox_coord[1]:bbox_coord[3], :]*255., \im_GT[bbox_coord[0]:bbox_coord[2], bbox_coord[1]:bbox_coord[3], :]*255.) - \calculate_psnr(im_BSL[bbox_coord[0]:bbox_coord[2], bbox_coord[1]:bbox_coord[3], :]*255., \im_GT[bbox_coord[0]:bbox_coord[2], bbox_coord[1]:bbox_coord[3], :]*255.)h_aln = 'right' if W - bbox_coord[1] < 50 else 'left'if bbox_coord[0] < 20:ax.text(bbox_coord[1], bbox_coord[2], "{:+.2f}".format(psnr), color='r', verticalalignment='top', horizontalalignment=h_aln, fontsize=26)else:ax.text(bbox_coord[1], bbox_coord[0], "{:+.2f}".format(psnr), color='r',verticalalignment='bottom', horizontalalignment=h_aln, fontsize=26)ax.set(xlim=[0, W], ylim=[H, 0], aspect=1)fig.savefig(save, dpi=dpi, transparent=True)
#     plt.show()def plot_diff_patch(im_BSL, im_OCT, im_GT, heatmap, thres=0.4, alpha=0.5, display=False, save=None, cmap='viridis', axis='on', dpi=80, verbose=False):H, W, C = im_BSL.shape# resize heat mapheatmap_resized = transform.resize(heatmap, (H, W))# normalize heat mapmax_value = np.max(heatmap_resized)min_value = np.min(heatmap_resized)normalized_heatmap = (heatmap_resized - min_value) / (max_value - min_value)# capture regionsbin_map = to_bin(normalized_heatmap, 0.4, 1.0)label_map = measure.label(bin_map, connectivity=2)props = measure.regionprops(label_map)bbox_err = []for i in range(len(props)):if props[i].bbox_area >= 100:bbox_coord = props[i].bboxerr = np.mean(normalized_heatmap[bbox_coord[0]:bbox_coord[2], bbox_coord[1]:bbox_coord[3]])psnr = calculate_psnr(im_OCT[bbox_coord[0]:bbox_coord[2], bbox_coord[1]:bbox_coord[3], :]*255., \im_GT[bbox_coord[0]:bbox_coord[2], bbox_coord[1]:bbox_coord[3], :]*255.) - \calculate_psnr(im_BSL[bbox_coord[0]:bbox_coord[2], bbox_coord[1]:bbox_coord[3], :]*255., \im_GT[bbox_coord[0]:bbox_coord[2], bbox_coord[1]:bbox_coord[3], :]*255.)bbox_err.append((i, err, psnr))bbox_err.sort(key=lambda x:x[1], reverse=True)im_diff = np.clip(im_OCT - im_BSL + 0.5, 0.0, 1.0)save_dir20= '/data1/cropimage/diff6_cvpr'save_path20 = os.path.join(save_dir20, base_name.replace('Layer_HRLRadd_SRResNet_16B64C_alpha=0.5', '')+'.png')im_diff20=im_diff*255cv2.imwrite(save_path20,im_diff20[:, :, [2, 1, 0]])num_bbox = min(len(bbox_err), 5)# Plot patchesfig, axes = plt.subplots(nrows=num_bbox, ncols=4, figsize=(15,15))if axes.ndim == 1:axes = [axes]for i in range(num_bbox):ind, err, psnr = bbox_err[i]bbox_coord = props[ind].bboxaxes[i][0].imshow(im_GT[bbox_coord[0]:bbox_coord[2], bbox_coord[1]:bbox_coord[3], :])axes[i][1].imshow(im_BSL[bbox_coord[0]:bbox_coord[2], bbox_coord[1]:bbox_coord[3], :])axes[i][2].imshow(im_OCT[bbox_coord[0]:bbox_coord[2], bbox_coord[1]:bbox_coord[3], :])axes[i][3].imshow(im_diff[bbox_coord[0]:bbox_coord[2], bbox_coord[1]:bbox_coord[3], :])
# ###################################################################################################
#         im_GT1=im_GT[bbox_coord[0]:bbox_coord[2], bbox_coord[1]:bbox_coord[3], :]
#         im_BSL1=im_BSL[bbox_coord[0]:bbox_coord[2], bbox_coord[1]:bbox_coord[3], :]
#         im_OCT1=im_OCT[bbox_coord[0]:bbox_coord[2], bbox_coord[1]:bbox_coord[3], :]
#         im_diff1=im_diff[bbox_coord[0]:bbox_coord[2], bbox_coord[1]:bbox_coord[3], :]#         axes[i][0].imshow(im_GT1)
#         axes[i][1].imshow(im_BSL1)
#         axes[i][2].imshow(im_OCT1)
#         axes[i][3].imshow(im_diff1)#         save_dir1= '/data1/cropimage/diff/im_GT1'
#         save_path1 = os.path.join(save_dir1, base_name.replace('Layer_HRLRadd_SRResNet_16B64C_alpha=0.5', '')+str(i+1) + '.png')
#         im_GT1=cv2.resize(im_GT1*255,(100, 100))
#         cv2.imwrite(save_path1,im_GT1[:, :, [2, 1, 0]])#         save_dir2= '/data1/cropimage/diff/im_BSL1'
#         save_path2 = os.path.join(save_dir2, base_name.replace('Layer_HRLRadd_SRResNet_16B64C_alpha=0.5', '')+str(i+1) + '.png')
#         #im_BSL1=im_BSL1*255
#         im_BSL1=cv2.resize(im_BSL1*255,(100, 100))
#         cv2.imwrite(save_path2,im_BSL1[:, :, [2, 1, 0]])#         save_dir3= '/data1/cropimage/diff/im_OCT1'
#         save_path3 = os.path.join(save_dir3, base_name.replace('Layer_HRLRadd_SRResNet_16B64C_alpha=0.5', '')+str(i+1) + '.png')
#         #im_OCT1=im_OCT1*255
#         im_OCT1=cv2.resize(im_OCT1*255,(100, 100))
#         cv2.imwrite(save_path3,im_OCT1[:, :, [2, 1, 0]])#         save_dir4= '/data1/cropimage/diff/im_diff1'
#         save_path4 = os.path.join(save_dir4, base_name.replace('Layer_HRLRadd_SRResNet_16B64C_alpha=0.5', '')+str(i+1) + '.png')
#         #im_diff1=im_diff1*255
#         im_diff1=cv2.resize(im_diff1*255,(100, 100))
#         cv2.imwrite(save_path4,im_diff1[:, :, [2, 1, 0]])axes[i][3].text(bbox_coord[3]-bbox_coord[1], bbox_coord[2]-bbox_coord[0], \"{:+.2f}".format(psnr), color='r', fontsize=16)axes[i][3].text(bbox_coord[3]-bbox_coord[1], 0, \"{}".format(bbox_coord), color='r', fontsize=16)fig.savefig(save_path, dpi=300, bbox_inches='tight', transparent=False)# plt.show()folder_BSL = "/data1/results10.09/(v1)Layer_HRLR_withoutconnection_SRResNet_16B64C_alpha=0.5/DIV2K_VAL/"
folder_OCT = "/data1/results/(ture)_1X1_directshare_SRResNet_44B64C_alpha=0.5/DIV2K_VAL/"
folder_GT = '/data1/data/DIV2K_VAL/DIV2K_valid_HR/'crop_border = 4
suffix = ''  # suffix for Gen images
test_Y = False  # True: test Y channel only; False: test RGB channelsPSNR_all = []
SSIM_all = []
img_list = sorted(glob.glob(folder_OCT + '/*'))[:100]if test_Y:print('Testing Y channel.')
else:print('Testing RGB channels.')patch_size = 32
stride = 10for img_path in img_list:base_name = os.path.splitext(os.path.basename(img_path))[0]im_OCT = cv2.imread(img_path)[:, :, [2, 1, 0]] / 255.im_BSL = cv2.imread(os.path.join(folder_BSL, base_name.replace('Layer_HRLRadd_SRResNet_16B64C_alpha=0.5', 'SRResNet_16B64C') + suffix + '.png'))[:, :, [2, 1, 0]] / 255.im_GT = cv2.imread(os.path.join(folder_GT, base_name.replace('Layer_HRLRadd_SRResNet_16B64C_alpha=0.5', '').replace('_bicLRx4', '') + suffix + '.png'))[:, :, [2, 1, 0]] / 255.H, W, C = im_OCT.shapeH_axis = np.arange(0, H - patch_size, stride)W_axis = np.arange(0, W - patch_size, stride)err_map = np.zeros((len(H_axis), len(W_axis)))inv_map = np.zeros((len(H_axis), len(W_axis)))total_err = np.mean((im_OCT - im_BSL)**2)for i, h in enumerate(H_axis):for j, w in enumerate(W_axis):patch_OCT = im_OCT[h:h+patch_size, w:w+patch_size, :]patch_BSL = im_BSL[h:h+patch_size, w:w+patch_size, :]patch_err = np.sum((patch_OCT - patch_BSL)**2) / (H*W*C)err_map[i, j] = mse2psnr(patch_err)inv_map[i, j] = mse2psnr(total_err- patch_err)save_dir = '/data1/cropimage/diff_cvpr/'save_path = os.path.join(save_dir, base_name.replace('Layer_HRLRadd_SRResNet_16B64C_alpha=0.5', '') + '.png')save_dir6 = '/data1/cropimage/heatdiff_cvpr/'save_path6 = os.path.join(save_dir6, base_name.replace('Layer_HRLRadd_SRResNet_16B64C_alpha=0.5', '') + '.png')#plot_heatmap(im_BSL, inv_map, alpha=0.7, save=save_path, axis='off', display=False)plot_diffmap(im_BSL, im_OCT, im_GT, inv_map, alpha=0.5, save=save_path6, axis='off', display=False)plot_diff_patch(im_BSL, im_OCT, im_GT, inv_map, alpha=0.5, save=save_path, axis='off', display=False)

改进版:

import os
import math
import numpy as np
import cv2
import glob
from skimage import transform
from skimage import measure
from collections import OrderedDictimport matplotlib.pyplot as plt
import matplotlib.patches as patchesdef bgr2ycbcr(img, only_y=True):'''same as matlab rgb2ycbcronly_y: only return Y channelInput:uint8, [0, 255]float, [0, 1]'''in_img_type = img.dtypeimg.astype(np.float32)if in_img_type != np.uint8:img *= 255.# convertif only_y:rlt = np.dot(img, [24.966, 128.553, 65.481]) / 255.0 + 16.0else:rlt = np.matmul(img, [[24.966, 112.0, -18.214], [128.553, -74.203, -93.786],[65.481, -37.797, 112.0]]) / 255.0 + [16, 128, 128]if in_img_type == np.uint8:rlt = rlt.round()else:rlt /= 255.return rlt.astype(in_img_type)def calculate_psnr(img1, img2):# img1 and img2 have range [0, 255]img1 = img1.astype(np.float64)img2 = img2.astype(np.float64)mse = np.mean((img1 - img2)**2)if mse == 0:return float('inf')return 20 * math.log10(255.0 / math.sqrt(mse))def mse2psnr(mse):if mse == 0:return float('inf')return 20 * math.log10(1.0 / math.sqrt(mse))def plot_heatmap(image, heat_map, alpha=0.5, display=False, save=None, cmap='viridis', axis='on', dpi=80, verbose=False):height = image.shape[0]width = image.shape[1]# resize heat mapheat_map_resized = transform.resize(heat_map, (height, width))# normalize heat mapmax_value = np.max(heat_map_resized)min_value = np.min(heat_map_resized)normalized_heat_map = (heat_map_resized - min_value) / (max_value - min_value)if display:# displayplt.imshow(image)plt.imshow(255 * normalized_heat_map, alpha=alpha, cmap=cmap)plt.axis(axis)plt.show()if save is not None:if verbose:print('save image: ' + save)H, W, C = image.shapefigsize = W / float(dpi), H / float(dpi)fig = plt.figure(figsize=figsize)ax = fig.add_axes([0, 0, 1, 1])ax.axis('off')ax.imshow(image)ax.imshow(255 * normalized_heat_map, alpha=alpha, cmap=cmap)ax.set(xlim=[0, W], ylim=[H, 0], aspect=1)fig.savefig(save, dpi=dpi, transparent=True)def to_bin(img, lower, upper):return (lower < img) & (img < upper)def plot_diffmap(im_BSL, im_OCT, im_GT, heatmap, thres=0.4, alpha=0.5, display=False, save=None, cmap='viridis', axis='on', dpi=80, verbose=False):height, width, _ = im_BSL.shape# resize heat mapheatmap_resized = transform.resize(heatmap, (height, width))# normalize heat mapmax_value = np.max(heatmap_resized)min_value = np.min(heatmap_resized)normalized_heatmap = (heatmap_resized - min_value) / (max_value - min_value)# capture regionsbin_map = to_bin(normalized_heatmap, thres, 1.0)label_map = measure.label(bin_map, connectivity=2)props = measure.regionprops(label_map)plot_im = im_BSL.copy()plot_im[~bin_map] = 0if save is not None:if verbose:print('save image: ' + save)H, W, C = im_BSL.shapefigsize = W / float(dpi), H / float(dpi)fig = plt.figure(figsize=figsize)ax = fig.add_axes([0, 0, 1, 1])ax.axis('off')ax.imshow(im_BSL)ax.imshow(normalized_heatmap, alpha=alpha)
#         ax.imshow(plot_im, alpha=alpha)ax.axis(axis)for i in range(len(props)):if props[i].bbox_area >= 100:bbox_coord = props[i].bboxax.add_patch(patches.Rectangle((bbox_coord[1], bbox_coord[0]),bbox_coord[3] - bbox_coord[1],bbox_coord[2] - bbox_coord[0],edgecolor='y',linewidth = 6,fill=False))psnr = calculate_psnr(im_OCT[bbox_coord[0]:bbox_coord[2], bbox_coord[1]:bbox_coord[3], :]*255., \im_GT[bbox_coord[0]:bbox_coord[2], bbox_coord[1]:bbox_coord[3], :]*255.) - \calculate_psnr(im_BSL[bbox_coord[0]:bbox_coord[2], bbox_coord[1]:bbox_coord[3], :]*255., \im_GT[bbox_coord[0]:bbox_coord[2], bbox_coord[1]:bbox_coord[3], :]*255.)h_aln = 'right' if W - bbox_coord[1] < 50 else 'left'if bbox_coord[0] < 20:ax.text(bbox_coord[1], bbox_coord[2], "{:+.2f}".format(psnr), color='r', verticalalignment='top', horizontalalignment=h_aln, fontsize=26)else:ax.text(bbox_coord[1], bbox_coord[0], "{:+.2f}".format(psnr), color='r',verticalalignment='bottom', horizontalalignment=h_aln, fontsize=26)ax.set(xlim=[0, W], ylim=[H, 0], aspect=1)fig.savefig(save, dpi=dpi, transparent=True)
#     plt.show()def plot_diff_patch(im_BSL, im_OCT, im_GT, heatmap, thres=0.4, alpha=0.5, display=False, save=None, cmap='viridis', axis='on', dpi=80, verbose=False):H, W, C = im_BSL.shape# resize heat mapheatmap_resized = transform.resize(heatmap, (H, W))# normalize heat mapmax_value = np.max(heatmap_resized)min_value = np.min(heatmap_resized)normalized_heatmap = (heatmap_resized - min_value) / (max_value - min_value)# capture regionsbin_map = to_bin(normalized_heatmap, 0.4, 1.0)label_map = measure.label(bin_map, connectivity=2)props = measure.regionprops(label_map)bbox_err = []for i in range(len(props)):if props[i].bbox_area >= 100:bbox_coord = props[i].bboxerr = np.mean(normalized_heatmap[bbox_coord[0]:bbox_coord[2], bbox_coord[1]:bbox_coord[3]])psnr = calculate_psnr(im_OCT[bbox_coord[0]:bbox_coord[2], bbox_coord[1]:bbox_coord[3], :]*255., \im_GT[bbox_coord[0]:bbox_coord[2], bbox_coord[1]:bbox_coord[3], :]*255.) - \calculate_psnr(im_BSL[bbox_coord[0]:bbox_coord[2], bbox_coord[1]:bbox_coord[3], :]*255., \im_GT[bbox_coord[0]:bbox_coord[2], bbox_coord[1]:bbox_coord[3], :]*255.)bbox_err.append((i, err, psnr))bbox_err.sort(key=lambda x:x[1], reverse=True)im_diff = np.clip(im_OCT - im_BSL + 0.5, 0.0, 1.0)save_dir20= '/data1/cropimage/diff6_cvpr'save_path20 = os.path.join(save_dir20, base_name.replace('Layer_HRLRadd_SRResNet_16B64C_alpha=0.5', '')+'.png')im_diff20=im_diff*255cv2.imwrite(save_path20,im_diff20[:, :, [2, 1, 0]])num_bbox = min(len(bbox_err), 5)# Plot patchesfig, axes = plt.subplots(nrows=num_bbox, ncols=4, figsize=(15,15))if axes.ndim == 1:axes = [axes]for i in range(num_bbox):ind, err, psnr = bbox_err[i]bbox_coord = props[ind].bboxaxes[i][0].imshow(im_GT[bbox_coord[0]:bbox_coord[2], bbox_coord[1]:bbox_coord[3], :])axes[i][1].imshow(im_BSL[bbox_coord[0]:bbox_coord[2], bbox_coord[1]:bbox_coord[3], :])axes[i][2].imshow(im_OCT[bbox_coord[0]:bbox_coord[2], bbox_coord[1]:bbox_coord[3], :])axes[i][3].imshow(im_diff[bbox_coord[0]:bbox_coord[2], bbox_coord[1]:bbox_coord[3], :])
# ###################################################################################################
#         im_GT1=im_GT[bbox_coord[0]:bbox_coord[2], bbox_coord[1]:bbox_coord[3], :]
#         im_BSL1=im_BSL[bbox_coord[0]:bbox_coord[2], bbox_coord[1]:bbox_coord[3], :]
#         im_OCT1=im_OCT[bbox_coord[0]:bbox_coord[2], bbox_coord[1]:bbox_coord[3], :]
#         im_diff1=im_diff[bbox_coord[0]:bbox_coord[2], bbox_coord[1]:bbox_coord[3], :]#         axes[i][0].imshow(im_GT1)
#         axes[i][1].imshow(im_BSL1)
#         axes[i][2].imshow(im_OCT1)
#         axes[i][3].imshow(im_diff1)#         save_dir1= '/data1/cropimage/diff/im_GT1'
#         save_path1 = os.path.join(save_dir1, base_name.replace('Layer_HRLRadd_SRResNet_16B64C_alpha=0.5', '')+str(i+1) + '.png')
#         im_GT1=cv2.resize(im_GT1*255,(100, 100))
#         cv2.imwrite(save_path1,im_GT1[:, :, [2, 1, 0]])#         save_dir2= '/data1/cropimage/diff/im_BSL1'
#         save_path2 = os.path.join(save_dir2, base_name.replace('Layer_HRLRadd_SRResNet_16B64C_alpha=0.5', '')+str(i+1) + '.png')
#         #im_BSL1=im_BSL1*255
#         im_BSL1=cv2.resize(im_BSL1*255,(100, 100))
#         cv2.imwrite(save_path2,im_BSL1[:, :, [2, 1, 0]])#         save_dir3= '/data1/cropimage/diff/im_OCT1'
#         save_path3 = os.path.join(save_dir3, base_name.replace('Layer_HRLRadd_SRResNet_16B64C_alpha=0.5', '')+str(i+1) + '.png')
#         #im_OCT1=im_OCT1*255
#         im_OCT1=cv2.resize(im_OCT1*255,(100, 100))
#         cv2.imwrite(save_path3,im_OCT1[:, :, [2, 1, 0]])#         save_dir4= '/data1/cropimage/diff/im_diff1'
#         save_path4 = os.path.join(save_dir4, base_name.replace('Layer_HRLRadd_SRResNet_16B64C_alpha=0.5', '')+str(i+1) + '.png')
#         #im_diff1=im_diff1*255
#         im_diff1=cv2.resize(im_diff1*255,(100, 100))
#         cv2.imwrite(save_path4,im_diff1[:, :, [2, 1, 0]])axes[i][3].text(bbox_coord[3]-bbox_coord[1], bbox_coord[2]-bbox_coord[0], \"{:+.2f}".format(psnr), color='r', fontsize=16)axes[i][3].text(bbox_coord[3]-bbox_coord[1], 0, \"{}".format(bbox_coord), color='r', fontsize=16)fig.savefig(save_path, dpi=300, bbox_inches='tight', transparent=False)# plt.show()folder_BSL = "/data1/results10.09/(multi_scale)_SRResNet_16B64C/DIV2K_VAL0.8/"
folder_OCT ="/data1/results/(multi)1X1_directshare_SRResNet_48B64C_alpha=0.5/DIV2K_VAL0.8/"
folder_GT =   "/data1/data/multiscale_dataset/DIV2K_valid_HR_0.8/"crop_border = 4
suffix = ''  # suffix for Gen images
test_Y = False  # True: test Y channel only; False: test RGB channelsPSNR_all = []
SSIM_all = []
img_list = sorted(glob.glob(folder_OCT + '/*'))[:100]if test_Y:print('Testing Y channel.')
else:print('Testing RGB channels.')patch_size = 32
stride = 10for img_path in img_list:base_name = os.path.splitext(os.path.basename(img_path))[0]im_OCT = cv2.imread(img_path)[:, :, [2, 1, 0]] / 255.im_BSL = cv2.imread(os.path.join(folder_BSL, base_name.replace('Layer_HRLRadd_SRResNet_16B64C_alpha=0.5', 'SRResNet_16B64C') + suffix + '.png'))[:, :, [2, 1, 0]] / 255.im_GT = cv2.imread(os.path.join(folder_GT, base_name.replace('_bicLRx4', '_bicLRx0.6') + suffix + '.png'))[:, :, [2, 1, 0]] / 255.H, W, C = im_OCT.shapeH_axis = np.arange(0, H - patch_size, stride)W_axis = np.arange(0, W - patch_size, stride)err_map = np.zeros((len(H_axis), len(W_axis)))inv_map = np.zeros((len(H_axis), len(W_axis)))total_err = np.mean((im_OCT - im_BSL)**2)for i, h in enumerate(H_axis):for j, w in enumerate(W_axis):patch_OCT = im_OCT[h:h+patch_size, w:w+patch_size, :]patch_BSL = im_BSL[h:h+patch_size, w:w+patch_size, :]patch_err = np.sum((patch_OCT - patch_BSL)**2) / (H*W*C)err_map[i, j] = mse2psnr(patch_err)inv_map[i, j] = mse2psnr(total_err- patch_err)save_dir = '/data1/cropimage/heatmap/diff_DIV2K_VAL0.8/'if not os.path.exists(save_dir):os.mkdir(save_dir)save_path = os.path.join(save_dir, base_name.replace('Layer_HRLRadd_SRResNet_16B64C_alpha=0.5', '') + '.png')save_dir6 = '/data1/cropimage/heatmap/heatdiff_DIV2K_VAL0.8/'if not os.path.exists(save_dir6):os.mkdir(save_dir6)save_path6 = os.path.join(save_dir6, base_name.replace('Layer_HRLRadd_SRResNet_16B64C_alpha=0.5', '') + '.png')#plot_heatmap(im_BSL, inv_map, alpha=0.7, save=save_path, axis='off', display=False)plot_diffmap(im_BSL, im_OCT, im_GT, inv_map, alpha=0.5, save=save_path6, axis='off', display=False)plot_diff_patch(im_BSL, im_OCT, im_GT, inv_map, alpha=0.5, save=save_path, axis='off', display=False)

图像超分之——寻找两张图差异的区域相关推荐

  1. python把两张图不同之处差异显示出来

    把两张图不同之处差异显示出来 原讨论帖, https://bbs.csdn.net/topics/396114473 最后找到了帖子的原帖, https://www.cnblogs.com/botoo ...

  2. OpenCV学习笔记——判断两张图的相似度

    判断两张图的相似度 方法 直方图对比法 ORB算法 实验 1.直方图对比法 参考如何使用OpenCV3直方图方法进行人脸相似度对比 因为我的环境是VS2010+OpenCV2.4.8,所以在原版的基础 ...

  3. Android 应用性能优化(5)---用两张图告诉你,为什么你的App会卡顿?

    用两张图告诉你,为什么你的App会卡顿? Cover 有什么料? 从这篇文章中你能获得这些料: 知道setContentView()之后发生了什么? 知道Android究竟是如何在屏幕上显示我们期望的 ...

  4. Python笔记-使用SSIM找两张图不同及使用Opencv显示

    运行截图如下: 这里有几点要注意的: ①对比两张图片的函数SSIM具体是structural_similarity: Ⅰ:第一个参数和第二个参数是要对比的两张图片: Ⅱ:参数中有个full,默认为Tr ...

  5. MATLAB代码: 合并两张图

    MATLAB 合并两张图,要求大小相同的图,我这里合并两张相同的图. image = imread('docia_one.png') %读取图片 c = [image, image] %图像拼接到矩阵 ...

  6. 两张图搞定IJK源码

    IJK源码两张图就可以搞定,一张是IJK从播放到停止的代码流程图,一张是IJK的线程模型图

  7. Origin使两张图重叠展示在一张图上

    目录 1.先将两张图的坐标轴修改为相同. 2.删去其中一个图的图例.坐标轴等,仅保留曲线.左轴和下轴的刻度线标签.轴线和刻度线均把显示关闭.并用Delete删去坐标轴名称. 3.选中图形,Ctrl+C ...

  8. LaTeX两张图并排显示

    一.需要引入的包 \usepackage{caption} % 图片脚注 \usepackage{graphicx} \usepackage{caption} \usepackage{subfigur ...

  9. LATEX——两张图并列排列/双栏模板中图片通栏并列布局

    LATEX--两张图并列排列/双栏模板中图片通栏并列布局 正常插入图片 并列插入两张图片 双栏模板中图片通栏并列布局1(不同图片使用不同标题,不同编号) 双栏模板中图片通栏并列布局2(不同图片使有不同 ...

  10. css 通过background将两张图合成一张图显示

    需求背景: 后台返回两张图,一张是默认背景图bgimg,另一张是显示在背景上的图案img. 在列表中,bgimg一般不变,但img会根据不同的花的类型返回不同的图片. 需求是将两张图片叠在一起,让人以 ...

最新文章

  1. 基于ZIGBEE通信的功率电子负载
  2. CCNA培训课总结笔记--配置OSPF实验(十一)
  3. jw player相关JS插件
  4. window下tomcat的内存溢出问题
  5. 有一段时间没来这里了,
  6. 解决 Ext.Ajax.request 同步请求实现问题 (Ext3.0)
  7. SaltStack 学习笔记 - 第六篇: 详解Pillar
  8. IO模型(epoll)--详解-01
  9. U盘安装Ubuntu14.04 server版 提示无法挂载cd-rom数据的解决办法
  10. C语言数据结构编程实列,数据结构C语言实现----栈的实例
  11. 固态硬盘怎么看出厂日期_固态到底怎么选?雷克沙NM610和西部数据SN500固态硬盘实测对比...
  12. 区块链 以太坊 虚拟机 EVM 详解
  13. 对象与对象之间的赋值(别名现象)
  14. netsetman使用教程_网络管理软件NetSetMan安装教程
  15. javascript-cropper插件翻译笔记
  16. 华为公司是如何做绩效考核的
  17. Redis实现手机验证码功能
  18. spritekit 动画_iOS SpriteKit 游戏
  19. 触摸屏也能编写工艺流程---台达行列式清单的应用
  20. solidity智能合约开发环境Atom下载及配置

热门文章

  1. Linux LTP (一)
  2. 互联网经典算法面试题-验证二叉搜索树
  3. 谷歌浏览器能打开网页微信_Chrome浏览器打开微信页面-Go语言中文社区
  4. Windows系统下通过文件路径进入相应DOS界面
  5. 企业微信付款到零钱,全代码讲解,包含怎么加入商户证书
  6. linux 帝国cms 刷新,帝国cms怎么自动刷新网站首页?(帝国CMS自动刷新首页的方法)...
  7. Cannot lock file hash cache (E:\blackWu\github\X5WebView\WebViewX5\.gradle\4.6\fileHashes) as it has
  8. Oracle 大表数据删除/清理方法小结
  9. EDA实验(3)计数器设计
  10. 画以载道:艺术演变的动力与社会思潮的嬗变