List of implemented algorithms
Example usage
GrayU8 input = ...
Dithering dithering = new DitheringFactory().errorDiffusion().floydSteinberg();
DitheringOperation operation = new DitheringOperation(dithering);
GrayU8 output = operation.apply(input);
DitheringOperation
only supports GrayU8
and Planar<GrayU8>
.
Heavily based on Image Dithering: Eleven Algorithms and Source Code by tannerhelland
Wikipedia pages about Dither and Ordered dithering were also very helpful.
Other sources include:
- https://en.wikipedia.org/wiki/Error_diffusion
- https://www.visgraf.impa.br/Courses/ip00/proj/Dithering1
- https://arxiv.org/pdf/2008.05336.pdf
- https://observablehq.com/@jobleonard/ordered-error-diffusion-dithering
- https://bisqwit.iki.fi/story/howto/dither/jy/
- https://www.programmersought.com/article/9915545798/
- https://www.hindawi.com/journals/am/2016/4901609/
- ...