Commit d091b809 authored by David Michael Barr's avatar David Michael Barr

Correlate od_compute_dist_8x8 with sum of squared error

Piecewise linear fit without activity masking on subset3 intra
and objective-1-fast inter, by simple linear regression.

In combination with 79c0f32c "Remove DCT from od_compute_dist_8x8",
this gives a even trade between perceptual and non-perceptual metrics.

av1_daala_dist_30f@2017-01-23T21:32:27.902Z
 -> daala_dist_scale10_30f@2017-01-31T21:52:07.635Z

  PSNR | PSNR Cb | PSNR Cr | PSNR HVS |   SSIM | MS SSIM | CIEDE 2000
2.1080 |  2.9645 |  3.4697 |  -2.2086 | 0.2541 | -2.5232 |     2.1645

Piecewise linear-quadratic fit with activity masking, by same method.

The total effect of activity masking and daala-dist changes, with PVQ:

av1_pvq_5f@2017-01-31T01:05:24.219Z
 -> av1_float_pvq_dist_scale_AM_5f_Jan31_crfix@2017-02-02T15:14:40.477Z

   PSNR | PSNR Cb | PSNR Cr | PSNR HVS |    SSIM |  MS SSIM | CIEDE 2000
22.5041 | 42.6349 | 40.8516 | -10.3510 | -6.8030 | -16.9057 |    21.2613

Change-Id: I9b513509a03aa058dc5c1479c01d62c8fc363a34
parent 9b02b0e6
......@@ -544,8 +544,6 @@ static double od_compute_dist(int qm, int activity_masking, od_coeff *x,
double sum;
sum = 0;
(void)qindex;
assert(bsize_w >= 8 && bsize_h >= 8);
if (qm == OD_FLAT_QM) {
......@@ -594,16 +592,17 @@ static double od_compute_dist(int qm, int activity_masking, od_coeff *x,
bsize_w);
}
}
/* Compensate for the fact that the quantization matrix lowers the
distortion value. We tried a half-dozen values and picked the one where
we liked the ntt-short1 curves best. The tuning is approximate since
the different metrics go in different directions. */
/*Start interpolation at coded_quantizer 1.7=f(36) and end it at 1.2=f(47)*/
// TODO(yushin): Check whether qindex of AV1 work here, replacing daala's
// coded_quantizer.
/*sum *= qindex >= 47 ? 1.2 :
qindex <= 36 ? 1.7 :
1.7 + (1.2 - 1.7)*(qindex - 36)/(47 - 36);*/
/* Scale according to linear regression against SSE, for 8x8 blocks. */
if (activity_masking) {
sum *= 2.2 + (1.7 - 2.2) * (qindex - 99) / (210 - 99) +
(qindex < 99 ? 2.5 * (qindex - 99) / 99 * (qindex - 99) / 99 : 0);
} else {
sum *= qindex >= 128
? 1.4 + (0.9 - 1.4) * (qindex - 128) / (209 - 128)
: qindex <= 43
? 1.5 + (2.0 - 1.5) * (qindex - 43) / (16 - 43)
: 1.5 + (1.4 - 1.5) * (qindex - 43) / (128 - 43);
}
}
return sum;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment