On Sun, Jan 25, 2015 at 07:55:22PM +0100, Clément Bœsch wrote: > --- > doc/filters.texi | 31 +++++ > libavfilter/Makefile | 1 + > libavfilter/allfilters.c | 1 + > libavfilter/vf_paletteuse.c | 282 > ++++++++++++++++++++++++++++++++++++++++++++ > 4 files changed, 315 insertions(+) > create mode 100644 libavfilter/vf_paletteuse.c >
So I did various improvements here by implementing various other error diffusion based dithering methods: Floyd/Steinberg, Sierra2 and Sierra2-4A. All of them seem better than Heckbert. You can observe Heckbert vs Sierra4 here: https://lut.im/xAxNDhk4/lGZV0BS4 This match what's being said on http://www.efg2.com/Lab/Library/ImageProcessing/DHALF.TXT about the "false" Floyd-Steinberg filter, which is actually from Heckbert paper. Somehow, Sierra4 seems to produce smaller output here (but can't be used as a generic rule, tested on only one input). Still, all these error diffusion ditherings make a huge impact on size: -rw-r--r-- 1 ux ux 37M Jan 27 12:03 out-dither-floyd_steinberg.gif -rw-r--r-- 1 ux ux 38M Jan 27 12:03 out-dither-heckbert.gif -rw-r--r-- 1 ux ux 8.5M Jan 27 12:03 out-dither-none.gif -rw-r--r-- 1 ux ux 38M Jan 27 12:03 out-dither-sierra2_4a.gif -rw-r--r-- 1 ux ux 34M Jan 27 12:03 out-dither-sierra2.gif So I'm currently trying to implement some ordered dithering to get a way more stable output for mostly still images. If you have recommendation on some dithering algorithm(s) I could test (it seems there are a bunch of them out here), I'm all hear. There are many improvement possible in this filter, notably on how the color is chosen, but I will probably push this patchset at the end of the week because the results are already good enough IMO. -- Clément B.
pgp84KX6RpNxS.pgp
Description: PGP signature
_______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel