def index_results(dist_filelist, ref_filelist): psnr_list = [] ssim_list = [] uiqm_list = [] for dist_file in dist_filelist: #遍历 dist_file_dir = os.path.join(dist_path, dist_file) #参考文件绝对路径 if os.path.isdir(dist_file_dir): #如果是文件夹,跳过 continue dist_img = scipy.misc.imread(dist_file_dir, flatten=True).astype(numpy.float32) #filename = os.path.splitext(dist_file)[0] + os.path.splitext(dist_file)[1] #ref filename filename = os.path.splitext(dist_file)[0] + '.jpg' #ref filename ref_img = scipy.misc.imread(ref_path + '\\' + filename, flatten=True).astype( numpy.float32) #读取参考图像对应的测试图像 psnr_data = psnr.psnr(ref_img, dist_img) #psnr指标 ssim_data = ssim.ssim_exact(ref_img / 255, dist_img / 255) #ssim指标 dist_img = cv2.imread(dist_path + '\\' + os.path.splitext(dist_file)[0] + '.jpg') #UIQM指标 uiqm_data = uqim_utils.getUIQM(dist_img) #UIQM print("img:" + str(filename) + " psnr:" + str(psnr_data) + " ssim:" + str(ssim_data) + " UIQM:" + str(uiqm_data)) data = str(filename) + " psnr:" + str(psnr_data) + " ssim:" + str( ssim_data) + " UIQM:" + str(uiqm_data) psnr_list.append(psnr_data) ssim_list.append(ssim_data) uiqm_list.append(uiqm_data) average = "psnr_average:" + str( sum(psnr_list) / len(psnr_list)) + " ssim_average:" + str( sum(ssim_list) / len(ssim_list)) + " UIQM:" + str( sum(uiqm_list) / len(uiqm_list)) return average
if os.path.isdir(dist_file_dir): #如果是文件夹,跳过 continue dist_img = scipy.misc.imread(dist_file_dir, flatten=True).astype(numpy.float32) #filename = os.path.splitext(dist_file)[0] + os.path.splitext(dist_file)[1] #ref filename filename = os.path.splitext(dist_file)[0] + '.png' #ref filename ref_img = scipy.misc.imread(ref_path + '\\' + filename, flatten=True).astype( numpy.float32) #读取参考图像对应的测试图像 psnr_data = psnr.psnr(ref_img, dist_img) #psnr指标 ssim_data = ssim.ssim_exact(ref_img / 255, dist_img / 255) #ssim指标 dist_img = cv2.imread(dist_path + '\\' + os.path.splitext(dist_file)[0] + '.png') #UIQM指标 uiqm_data = uqim_utils.getUIQM(dist_img) #UIQM print("img:" + str(filename) + " psnr:" + str(psnr_data) + " ssim:" + str(ssim_data) + " UIQM:" + str(uiqm_data)) data = str(filename) + " psnr:" + str(psnr_data) + " ssim:" + str( ssim_data) + " UIQM:" + str(uiqm_data) psnr_list.append(psnr_data) ssim_list.append(ssim_data) uiqm_list.append(uiqm_data) average = "psnr_average:" + str(
reco_values = [] plt.figure(figsize=(8, 8)) for quality in range(0, 101, 1): subprocess.check_call('gm convert %s -quality %d %s' % (ref_file, quality, dist_file), shell=True) file_size = os.path.getsize(dist_file) dist = scipy.misc.imread(dist_file, flatten=True).astype(numpy.float32) quality_values.append(quality) size_values.append(int(file_size / 1024)) vifp_values.append(vifp.vifp_mscale(ref, dist)) ssim_values.append(ssim.ssim_exact(ref / 255, dist / 255)) psnr_values.append(psnr.psnr(ref, dist)) # niqe_values.append( niqe.niqe(dist/255) ) reco_values.append(reco.reco(ref / 255, dist / 255)) plt.plot(quality_values, vifp_values, label='VIFP') plt.plot(quality_values, ssim_values, label='SSIM') # plt.plot(niqe_values, label='NIQE') plt.plot(quality_values, reco_values, label='RECO') plt.plot(quality_values, numpy.asarray(psnr_values) / 100.0, label='PSNR/100') plt.legend(loc='lower right') plt.xlabel('JPEG Quality') plt.ylabel('Metric') plt.savefig('jpg_demo_quality.png') plt.figure(figsize=(8, 8))
args = parse_args() pred_imgs_path = os.path.join(args.output_path, args.model_flag + '_' + args.exp_num) imgs_list_file = '/home/chenli/code/SRN-Deblur/test_datalist.txt' imgs_datalist = open(imgs_list_file, 'rt').read().splitlines() imgs_datalist = list(map(lambda x: x.split(' '), imgs_datalist)) imgsName = [x[1] for x in imgs_datalist] psnr_values = [] ssim_values = [] for imgName in imgsName: real = scipy.misc.imread(imgName, flatten=True).astype(numpy.float32) split_name = imgName.split('/') pred_imgName = os.path.join(pred_imgs_path, split_name[-3], split_name[-2], split_name[-1]) pred = scipy.misc.imread(pred_imgName, flatten=True).astype(numpy.float32) ssim_value = ssim.ssim_exact(real / 255, pred / 255) psnr_value = psnr.psnr(real, pred) print('psnr:%.5f ssim:%.5f' % (psnr_value, ssim_value)) ssim_values.append(ssim_value) psnr_values.append(psnr_value) final_psnr_value = numpy.mean(psnr_values) final_ssim_value = numpy.mean(ssim_values) print('final psnr:%.5f final ssim:%.5f' % (final_psnr_value, final_ssim_value))
# cps_img = scipy.misc.imread(cps_path, flatten=False, mode='RGB').astype(numpy.float32) # reconst_img = scipy.misc.imread(reconst_path, flatten=False, model='RGB').astype(numpy.float32) # cps_path = name = os.path.splitext(os.path.basename(reconst_path))[0] cps_path = glob.glob(os.path.join(stream_dir, model, name+'*'))[0] stream_file_size = os.path.getsize(cps_path) reconst_img = cv2.imread(reconst_path).astype(numpy.float32) # print cps_img.shape #exit() path_list.append(reconst_path) size_values.append( int(stream_file_size/1024) ) ## kb # vifp_values.append( vifp.vifp_mscale(ref_img, cps_img) ) ssim_values.append( ssim.ssim_exact(ref_img/255, reconst_img/255) ) psnr_values.append( psnr.psnr(ref_img, reconst_img) ) # reco_values.append( reco.reco(ref_img/255, cps_img/255) ) # cps_path_list = glob.glob(os.path.join(stream_dir, model, ref_name+'*')) # # print ref_path # for cps_path in cps_path_list: # file_size = os.path.getsize(cps_path) # # reconst_path = os.path.join(reconst_dir, model, ref_name) ## have to be same format with reference image # print size_values;exit() for i in range(len(size_values)): # csv_writer.writerow
dist1_file): print(dist1_file) dist1 = scipy.misc.imread( dist1_file, flatten=True).astype(numpy.float32) dist2 = scipy.misc.imread( dist2_file, flatten=True).astype(numpy.float32) dist3 = scipy.misc.imread( dist3_file, flatten=True).astype(numpy.float32) dist4 = scipy.misc.imread( dist4_file, flatten=True).astype(numpy.float32) sharp = scipy.misc.imread( sharp_file, flatten=True).astype(numpy.float32) # print(ref_file + ' ' + dist_file + ':') num += 1 # vifp1 = vifp.vifp_mscale(ref, dist) ssim1 = ssim.ssim_exact(sharp / 255, dist1 / 255) ssim2 = ssim.ssim_exact(sharp / 255, dist2 / 255) ssim3 = ssim.ssim_exact(sharp / 255, dist3 / 255) ssim4 = ssim.ssim_exact(sharp / 255, dist4 / 255) psnr1 = psnr.psnr(sharp, dist1) psnr2 = psnr.psnr(sharp, dist2) psnr3 = psnr.psnr(sharp, dist3) psnr4 = psnr.psnr(sharp, dist4) # reco1 = reco.reco(ref / 255, dist / 255) # vifp_sum += vifp1 # reco_sum += reco1 # ref_values.append(ref_file) # dist_values.append(dist_file) # vifp_values.append(vifp1) # ssim_values.append(ssim1) # psnr_values.append(psnr1)
print "Frame=%d VIFP=%f SSIM=%f" % (frame_num, vifp_value, ssim_value) frame_num += 1 else: # Inputs are image files ref = scipy.misc.imread(ref_file, flatten=True).astype(numpy.float32) dist = scipy.misc.imread(dist_file, flatten=True).astype(numpy.float32) width, height = ref.shape[1], ref.shape[0] print "Comparing %s to %s, resolution %d x %d" % (ref_file, dist_file, width, height) vifp_value = vifp.vifp_mscale(ref, dist) print "VIFP=%f" % (vifp_value) ssim_value = ssim.ssim_exact(ref / 255, dist / 255) print "SSIM=%f" % (ssim_value) # FIXME this is buggy, disable for now # ssim_value2 = ssim.ssim(ref/255, dist/255) # print "SSIM approx=%f" % (ssim_value2) psnr_value = psnr.psnr(ref, dist) print "PSNR=%f" % (psnr_value) # niqe_value = niqe.niqe(dist/255) # print "NIQE=%f" % (niqe_value) reco_value = reco.reco(ref / 255, dist / 255) print "RECO=%f" % (reco_value)
ssim_value = ssim.ssim(ref, dist) print "Frame=%d VIFP=%f SSIM=%f" % (frame_num, vifp_value, ssim_value) frame_num += 1 else: # Inputs are image files ref = scipy.misc.imread(ref_file, flatten=True).astype(numpy.float32) dist = scipy.misc.imread(dist_file, flatten=True).astype(numpy.float32) width, height = ref.shape[1], ref.shape[0] print "Comparing %s to %s, resolution %d x %d" % (ref_file, dist_file, width, height) vifp_value = vifp.vifp_mscale(ref, dist) print "VIFP=%f" % (vifp_value) ssim_value = ssim.ssim_exact(ref / 255, dist / 255) print "SSIM=%f" % (ssim_value) # FIXME this is buggy, disable for now # ssim_value2 = ssim.ssim(ref/255, dist/255) # print "SSIM approx=%f" % (ssim_value2) psnr_value = psnr.psnr(ref, dist) print "PSNR=%f" % (psnr_value) # niqe_value = niqe.niqe(dist/255) # print "NIQE=%f" % (niqe_value) reco_value = reco.reco(ref / 255, dist / 255) print "RECO=%f" % (reco_value)
print type(ref_img), ref_img.shape, ori_shape = ref_img.shape ori_size = 1 for dim in ori_shape: ori_size = ori_size * dim ori_size = int(ori_size / 1024) print cps_path_list for cps_path in cps_path_list: file_size = os.path.getsize(cps_path) cps_img = scipy.misc.imread(cps_path, flatten=False, mode='RGB').astype(numpy.float32) print cps_img.shape #exit() size_values.append(int(file_size / 1024)) ## kb # vifp_values.append( vifp.vifp_mscale(ref_img, cps_img) ) ssim_values.append(ssim.ssim_exact(ref_img / 255, cps_img / 255)) psnr_values.append(psnr.psnr(ref_img, cps_img)) # reco_values.append( reco.reco(ref_img/255, cps_img/255) ) # print size_values;exit() for i in range(len(size_values)): csv_writer.writerow output_row = [ os.path.basename(ref_path), os.path.basename(cps_path_list[i]), str(ori_shape), str(ori_size), str(size_values[i]), str(float(ori_size) / size_values[i]), str(psnr_values[i]), str(ssim_values[i]) ]
if '_Restored_Train.png' in os.path.split(name)[1]: ref_file = os.path.join(root, name) dist_file = ref_file.replace('Restored', 'Blurred') sharp_file = ref_file.replace('Restored', 'Sharp') if os.path.isfile(ref_file) and os.path.isfile( dist_file) and os.path.isfile(sharp_file): ref = scipy.misc.imread(ref_file, flatten=True).astype( numpy.float32) dist = scipy.misc.imread( dist_file, flatten=True).astype(numpy.float32) sharp = scipy.misc.imread( sharp_file, flatten=True).astype(numpy.float32) # print(ref_file + ' ' + dist_file + ':') num += 1 # vifp1 = vifp.vifp_mscale(ref, dist) ssim1 = ssim.ssim_exact(sharp / 255, ref / 255) psnr1 = psnr.psnr(sharp, ref) ssim2 = ssim.ssim_exact(sharp / 255, dist / 255) psnr2 = psnr.psnr(sharp, dist) # reco1 = reco.reco(ref / 255, dist / 255) # vifp_sum += vifp1 ssim1_sum += ssim1 psnr1_sum += psnr1 ssim2_sum += ssim2 psnr2_sum += psnr2 # reco_sum += reco1 # ref_values.append(ref_file) # dist_values.append(dist_file) # vifp_values.append(vifp1) # ssim_values.append(ssim1) # psnr_values.append(psnr1)
psnr_values = [] niqe_values = [] reco_values = [] plt.figure(figsize=(8, 8)) for quality in range(0, 101, 1): subprocess.check_call('gm convert %s -quality %d %s'%(ref_file, quality, dist_file), shell=True) file_size = os.path.getsize(dist_file) dist = scipy.misc.imread(dist_file, flatten=True).astype(numpy.float32) quality_values.append( quality ) size_values.append( int(file_size/1024) ) vifp_values.append( vifp.vifp_mscale(ref, dist) ) ssim_values.append( ssim.ssim_exact(ref/255, dist/255) ) psnr_values.append( psnr.psnr(ref, dist) ) # niqe_values.append( niqe.niqe(dist/255) ) reco_values.append( reco.reco(ref/255, dist/255) ) plt.plot(quality_values, vifp_values, label='VIFP') plt.plot(quality_values, ssim_values, label='SSIM') # plt.plot(niqe_values, label='NIQE') plt.plot(quality_values, reco_values, label='RECO') plt.plot(quality_values, numpy.asarray(psnr_values)/100.0, label='PSNR/100') plt.legend(loc='lower right') plt.xlabel('JPEG Quality') plt.ylabel('Metric') plt.savefig('jpg_demo_quality.png') plt.figure(figsize=(8, 8))