The process of representing a bigger colour palette by combining small dots of a limited number of colours together, fooling the eye into seeing more shades.
Trades spatial resolution for colour.
Most image editing programs will have some dithering options.
Useful Apps
- PhotoDemon (free, for windows) offers the largest number of dithering algorithms and options of all programs Julian has tried.
- https://www.tinrocket.com/content/hyperdither/
- VectoRaster8 for Mac - amazing!
- Node Based Image Editors let you save your workflow(!)
- Gimel Studio (v2 missing most needed nodes)
- Cascade (GitHub,
ttddee/Cascade
) very fast, becoming full featured; Unsharp mask has no control for radius (due GLSL limitations?!)
- For Lasers: https://www.imag-r.com
- For CNC: https://www.inventables.com/projects/cnc-halftoning-step-by-step
Dithering Technical Reference
- Optimal Parallel Error-Diffusion Dithering - has a good intro/explainer
- Ditherpunk - really good explainer
- https://tannerhelland.com/2011/10/01/grayscale-image-algorithm-vb6.html
- https://www.crisluengo.net/archives/355/
- https://alessandrina.com/2013/06/25/gimp-and-dithering-color-reductions-for-b-w-portraits/
- https://en.wikipedia.org/wiki/Dither
- http://mike.teczno.com/notes/atkinson.html
- https://tannerhelland.com/2012/12/28/dithering-eleven-algorithms-source-code.html
- http://www.iro.umontreal.ca/~ostrom/publications/pdf/SIGGRAPH94_RotatedDither.pdf
- Structure Aware Error Diffusion - looks the best! Pseudocode is in appendix A
- Riemersma dither - dither along a Hilbert curve. C code is short and very understandable.
- http://www2.units.it/ramponi/teaching/DIP/DIPmaterials/z05_halftone_ErrorDiffusion.pdf
- thoughts on DaBig Gimping plug in: https://forum.lightburnsoftware.com/t/da-big-gimping-plug-in/17277/14
Libraries and APIs
- Python APIs of interest
- GLSL, SeeExpr, and other Shader implementations
- Generally, fragment shaders are for a single thing that could end up onscreen (as a single) pixel. Don’t typically have access to full texture buffer. Have to explicitly pass in data from surrounding pixels via vertex shader code(?!)
- https://pippin.gimp.org/spachrotyzer/
Half-Toning
The process of representing shades or colours using patterns of differently sized “dots”.
- using processing
- processing sketches for cartesian and isometric half tones
- Gimp has a good (but limited) newspaper screen/half-toning feature.