3 ms·
Guetzli was already mentioned and roughly does what you are talking about. MozJPEG [1] includes several quantization tables that are optimized for different co
by jncraton 4y ago
Guetzli was already mentioned and roughly does what you are talking about.
MozJPEG [1] includes several quantization tables that are optimized for different contexts (see the quant-table flag and source code for specific tables[2]), and the default quantization table has been optimized to outperform the recommended quantization tables in the original JPEG spec (Annex K).
It's also worth noting that MozJPEG uses Trellis quantization [3] to help improve quality without a per-image quantization table search. Basically rather than determining an optimal quantization table for the image, it minimizes rate distortion on a per-block level by tuning the quantized coefficients.
Both the SSIM and PSNR tuned quantization tables (2 and 4) provided by MozJPEG use a lower value in the first position of the quantization just like this article suggests (9 and 12 vs the libjpeg default of 16).
[1] https://github.com/mozilla/mozjpeg https://github.com/mozilla/mozjpeg
[2] https://github.com/mozilla/mozjpeg/blob/5c6a0f0971edf1ed3cf318d7b32308754305ac9a/jcparam.c#L74 https://github.com/mozilla/mozjpeg/blob/5c6a0f0971edf1ed3cf3...
[3] https://en.wikipedia.org/wiki/Trellis_quantization https://en.wikipedia.org/wiki/Trellis_quantization
- homm 4y ago> MozJPEG use a lower value in the first position of the quantization just like this article suggests It has lower value in the first position of the base table, i.e. the table which is used for q=50. With lower qualities this value scales up. This delays color banding from q=50 to roughly say q=40, after that the same effect is appears.