Exemple #1
0
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')
Exemple #2
0
    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)
Exemple #6
0
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')