3 bit color being where each bit corresponds to either "100%" or "0%" for each of RGB, so there's only 8 total colors: black white red green blue cyan magenta yellow
this one is half black pixels, a quarter red, and a quarter magenta
3 bit color being where each bit corresponds to either "100%" or "0%" for each of RGB, so there's only 8 total colors: black white red green blue cyan magenta yellow
this one is half black pixels, a quarter red, and a quarter magenta
this article has a pretty good overview of various common black and white error diffusion dithering techniques, which you can pick and choose to get different aesthetics
https://tannerhelland.com/2012/12/28/dithering-eleven-algorithms-source-code.html
an easy way to do RGB dithering is to do monochrome error diffusion independently for the red, green, and blue channels and mash the results together. you can then get fancier tuning the gamma curve for each component independently, or distributing error among the components
props on writing exactly the comment I came in to write, even including the link to the same article, but also better because I never considered gamma tweaks or anything rofl
thanks! i should also say, playing with the convolution matrix itself is lots of fun too
8 doesnt go niceley into a square number but maybe u could do two 4x2 pixels per pixel?
if you happen to have iOS this app will do exactly what you want, using Atkinson dithering. free for black and white, $2 for color. Shows up as an editor option in Photos. If you like I wouldn't mind sending through a couple test images for whatever purpose, I already paid for the color upgrade lol, even if you're going to implement it yourself maybe it'd be nice to have for comparison.
I use ditherit.com, it gives a lot of control over the algorithm and what palette to use
I would also recommend this article on dithering: it primarily focuses on ordered dithering over error diffusion, but covers a lot of options for that including blue noise. Good complement to the other article: https://surma.dev/things/ditherpunk/
also good to remember that SRGB doesn't have a linear transfer function (so #83 is not 51.37% brightness, it's 22.70%)
this is unfortunately messed up as most browsers' image resizing un-dithers it with a linear average, completely hosing the displayed brightness
that does explain why all of these look too bright in browser
not only that but they look right when it's downsized incorrectly lol