[FFmpeg-devel] Rework color quantization in palette{gen,use}
Paul B Mahol
onemda at gmail.com
Sat Nov 5 17:44:39 EET 2022
On 11/5/22, Clément Bœsch <u at pkh.me> wrote:
> Hi,
>
> This patchset essentially fixes a few core problems in these filters and
> switches to a perceptual model.
>
> I've generated a report for each key commit on this (temporary) page:
> http://big.pkh.me/pal/ (warning: heavy page, ~500M; I did try to add some
> lazy
> loading of the images but I'm not sure it's actually working as expected).
>
> It is easy for me to add specific samples and re-run the whole thing, so
> feel
> free to suggest one.
>
> A summary on a few important observed differences can be found on the page,
> but
> I'm duplicating it here for the record:
>
> - Current: current state on master
> - Paletteuse Perceptual
> + same palette but better selection: instead of rgb triplet distance,
> it uses a
> colorspace designed for uniform perceptual color differences (OkLab)
> + overall impact not that visible immediately, but it will make sure
> the
> palette is used the best way possible, meaning improvements to
> palettegen
> will be honored
> + observations (with no dither):
> * file02 (rooftops) in max_colors=8 or 16: sky pattern is more
> stable
> * file06 (parrot) in max_colors=8: better color for the parrot
> beak
> * overall seems to favor slightly brighter colors in the currently
> offered palette
> - Palettegen Linear Average
> + sRGB colors are gamma encoded, averaging them naively is incorrect,
> we
> need to do that in linear space
> + observations (with no dither):
> * file00 (colorful drawing) in max_colors=8: contrast and color
> skin
> look better
> * file07 (abstract flower) in max_color=128 or 256: this picture
> composed of 1M different colors in the source is now more
> balanced
> (better spreading of the colors)
> - Palettegen Perceptual
> + similar to the paletteuse perceptual, we use OkLab for the color
> distance
> + observations (with no dither):
> * file07 (abstract flower): in max_colors=128 or 256 we can see
> the
> picture offering a much finer grain.
> - Palettegen Variance per axis
> + When deciding on spliting a box along an axis, instead of picking
> the
> longest one, we pick the one with the most color variance
> + Not that much impact
>
> Overall, the most brutal change is probably in file07 between current and
> last,
> 256 colors no dither in particular.
>
> Finally, I do believe a lot of other color filters could at least benefit
> from
> fixing their gamma handling (I know I'm guilty of this in various other
> filters).
gamma handling depends not on pixel format but on metadata present in frame.
>
> Regards,
>
> --
> Clément B.
>
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request at ffmpeg.org with subject "unsubscribe".
>
More information about the ffmpeg-devel
mailing list