The main innovation here is using advanced simulation of how humans perceive distortions (<a href="https://github.com/google/butteraugli" rel="nofollow">https://github.com/google/butteraugli</a>) and optimizing to that. In principle JPEG was always about removing details humans can't see, but in practice encoders used rough approximations and fixed quality settings. This one goes all-in on accurate measurement and tuning quality settings per image automatically.<p>In lossy compression quality setting affects file size much more than choice of image format (e.g. there's 15-30% difference in best quality/filesize between old codecs like JPEG/J2K/VP8/JXR, but within each codec's settings range the file size can vary by 300%), so having a codec that picks the lowest good-enough quality is very useful.<p>Compared to MozJPEG:<p>- it's tuned for higher-quality images (butteraugli is said to be best for q=90+, MozJPEG's sweet spot is around q=75)<p>- it's much slower to compress (both produce standard JPEGs, so decoding is fast as usual)<p>- MozJPEG doesn't automagically pick quality setting, but you can find optimal quality using an external tool, e.g. <a href="https://github.com/danielgtaylor/jpeg-archive" rel="nofollow">https://github.com/danielgtaylor/jpeg-archive</a>
I tried it with my favorite test image:
<a href="https://commons.wikimedia.org/wiki/File%3ARicardo_Quaresma_%28L%29%2C_Pablo_Zabaleta_%28R%29_%E2%80%93_Portugal_vs._Argentina%2C_9th_February_2011.jpg" rel="nofollow">https://commons.wikimedia.org/wiki/File%3ARicardo_Quaresma_%...</a> downsampled to 1280x853 in ImageMagick.<p>This image is difficult for lossy compressors, because it contains some very unusual chroma signal, with the red dots on the green stripe on the red shirt. Mozjpeg does a slightly better job of preserving the dots at the almost same bitrate (as close as I can get to Guetzli quality 90), but only if you manually specify full chroma resolution. Guetzli does not allow manually choosing the chroma resolution but at least it does not totally destroy the dots by default like Mozjpeg does.
<a href="http://encode.ru/threads/2628-Guetzli-a-new-more-psychovisual-JPEG-encoder" rel="nofollow">http://encode.ru/threads/2628-Guetzli-a-new-more-psychovisua...</a><p>It seems the authors will explain the details behind soon.
I always laugh about these names. They sound so funny:<p>Butteräugli = little butter eye<p>Brötli = little bread roll<p>Zöpfli = little plaited buttery bread<p>Gipfeli = little croissant<p>Güetzli = little home-made cookie<p>And they even look more funny without the umlauts. They seem a little bit broken without them. Therefore:<p>Brotli = little bread roll but slightly damaged<p>Zopfli = little plaited buttery bread but slightly damaged<p>and so on. But this is only my personal impression.
It is amazing how much more quality improvement we can extract from an decade old codec. In video codec timeline, Jpeg is like in the era of Mpeg-1. And we have Mpeg-2, Mpeg 4 ( Divx / Xvid ), Mpeg 4 AVC, and now HEVC.<p>I really wish .bpg takes off. But with all the patents issues It seems nothing much is happening.