As the author of the original libjpeg (back in 1991), I think this has been a long time coming! More power to Google.
Guetzli: A New Open-Source JPEG Encoder
51–60 of 135 posts
Re: Guetzli: A New Open-Source JPEG Encoder
#52Why spend a lot of time improving jpeg instead of spending time promoting a HEVC-based standard like that one? http://bellard.org/bpg/
Re: Guetzli: A New Open-Source JPEG Encoder
#53Looking at the code to that, it looks like 1500 lines of this:
double MaskDcB(double delta) {
PROFILER_FUNC;
static const double extmul = 0.349376011816;
static const double extoff = -0.894711072781;
static const double offset = 0.901647926679;
static const double scaler = 0.380086095024;
static const double mul = 18.0373825149;
static const std::array lut =
MakeMask(extmul, extoff, mul, offset, scaler);
return InterpolateClampNegative(lut.data(), lut.size(), delta);
}
The code has hundreds of high precision constants. Some even seem to be set to nonsensical values (like kGamma to 0.38) Where did all of them come from? The real science here seems to be the method by which those constants were chosen, and I see no details how it was done.Re: Guetzli: A New Open-Source JPEG Encoder
#54This seems to be optimizing for a "perceptual loss function" over in https://github.com/google/butteraugli/blob/master/butteraugl... Looking at the code to that, it looks like 1500 lines of this: double MaskDcB(double delta) { PROFILER_FUNC; static const double extmul = 0.349376011816; static const double extoff = -0.894711072781; static const double offset = 0.901647926679; static const double scaler = 0.38008609502…
Re: Guetzli: A New Open-Source JPEG Encoder
#55As the author of the original libjpeg (back in 1991), I think this has been a long time coming! More power to Google.
Careful what you wish for!
Re: Guetzli: A New Open-Source JPEG Encoder
#56This seems to be optimizing for a "perceptual loss function" over in https://github.com/google/butteraugli/blob/master/butteraugl... Looking at the code to that, it looks like 1500 lines of this: double MaskDcB(double delta) { PROFILER_FUNC; static const double extmul = 0.349376011816; static const double extoff = -0.894711072781; static const double offset = 0.901647926679; static const double scaler = 0.38008609502…
I don't know if this code is related to that but just pointing out that seemingly nonsensical constants may appear more than one would thing.
Re: Guetzli: A New Open-Source JPEG Encoder
#57Lots of Swiss German coming from Google lately. Zöpfli, Brötli and now Guetzli. I'm still hoping for a Google Now that understands Swiss German :)
Re: Guetzli: A New Open-Source JPEG Encoder
#58Lots of Swiss German coming from Google lately. Zöpfli, Brötli and now Guetzli. I'm still hoping for a Google Now that understands Swiss German :)
Re: Guetzli: A New Open-Source JPEG Encoder
#59This seems to be optimizing for a "perceptual loss function" over in https://github.com/google/butteraugli/blob/master/butteraugl... Looking at the code to that, it looks like 1500 lines of this: double MaskDcB(double delta) { PROFILER_FUNC; static const double extmul = 0.349376011816; static const double extoff = -0.894711072781; static const double offset = 0.901647926679; static const double scaler = 0.38008609502…
So... machine learning? (Sorry for buzz-wording)
Re: Guetzli: A New Open-Source JPEG Encoder
#60Sort of related, but what's the story with fractal image compression? When I was at university (~20 years ago) there was a lot of research going in to it, with great promises heralded for web-based image transfer. There was a Netscape plugin that handled them. They seemed to just disappear in the early 2000s.