https://www.reddit.com/r/jpegxl/comm...l_portal_page/
Sauerstoffdioxid:
Somewhat offtopic, but I have a question related to synthetic images and squoosh's encoder build in particular.
The graph on the website states that synthetic images have their own code path, yet when I try them in squoosh.app
I can notice visible artefacts similar to normal jpeg compression. As I'm not particularly keen on building the actual
encoder from source to verify, I'm assuming those artefacts stem from squoosh not using the synthetic image mode.
Would that assumption be correct? And if it is, what kind of artefacts could I expect from compressed images
using that mode?
jonsneyers:
You are correct: the current encoder heuristics only detect some limited kinds of synthetic image parts
(text on a solid background).
For synthetic images jxl has modular mode which can be used in a lossless way, or in various lossy ways
(it has various transforms that can be useful for both lossless and lossy compression). One useful transform is
delta palette, which can do what the usual png8 can do (just reduce the number of colors and compress that way),
PLUS the option to have palette entries that are deltas w.r.t. a predictor - that makes it possible to do smooth gradients
without dithering or without needing many palette entries.
The kind of artifacts: no visible ones if done right
There still is quite some room for encoder improvements in this area. I'm pretty sure we have all the possibilities
in the bitstream to do great lossy compression of synthetic images, but the encoder is by default not fully using all
the potential yet.