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
Example #2
0
    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(
Example #3
0
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))
Example #4
0
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
Example #6
0
     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)
Example #7
0
        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])
        ]
Example #10
0
 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)
Example #11
0
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))