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')
if not m: print "Could not find resolution in file name: %s" % (ref_file) exit(1) width, height = int(m.group(1)), int(m.group(2)) print "Comparing %s to %s, resolution %d x %d" % (ref_file, dist_file, width, height) ref_fh = open(ref_file, "rb") dist_fh = open(dist_file, "rb") frame_num = 0 while True: ref, _, _ = img_read_yuv(ref_fh, width, height) dist, _, _ = img_read_yuv(dist_fh, width, height) vifp_value = vifp.vifp_mscale(ref.astype(float), dist.astype(float)) 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)
m = re.search(r"(\d+)x(\d+)", ref_file) if not m: print "Could not find resolution in file name: %s" % (ref_file) exit(1) width, height = int(m.group(1)), int(m.group(2)) print "Comparing %s to %s, resolution %d x %d" % (ref_file, dist_file, width, height) ref_fh = open(ref_file, "rb") dist_fh = open(dist_file, "rb") frame_num = 0 while True: ref, _, _ = img_read_yuv(ref_fh, width, height) dist, _, _ = img_read_yuv(dist_fh, width, height) vifp_value = vifp.vifp_mscale(ref.astype(float), dist.astype(float)) 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)
#!/usr/bin/python import numpy import sys import scipy.misc import vifp ref_file = sys.argv[1] dist_file = sys.argv[2] ref = scipy.misc.imread(ref_file, flatten=True).astype(numpy.float32) dist = scipy.misc.imread(dist_file, flatten=True).astype(numpy.float32) print vifp.vifp_mscale(ref, dist)
u_img = numpy.fromfile(src_file, dtype=numpy.uint8, count=((width / 2) * (height / 2))).reshape( (height / 2, width / 2)) v_img = numpy.fromfile(src_file, dtype=numpy.uint8, count=((width / 2) * (height / 2))).reshape( (height / 2, width / 2)) return (y_img, u_img, v_img) ref_file = sys.argv[1] dist_file = sys.argv[2] # 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) psnr_value = psnr.psnr(ref, dist) print "PSNR=%f" % (psnr_value) ssim_value = ssim.ssim_exact(ref / 255, dist / 255) print "SSIM=%f" % (ssim_value) vifp_value = vifp.vifp_mscale(ref, dist) print "VIFP=%f" % (vifp_value)
ssim_values = [] 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')