Atelier Clockwork

Dithering

Not the Procrastinating Kind Though

In an attempt to batch process some images to a printable black and white format, I tried to use ImageMagick to resize the content, then dither from grayscale to true black and white. After a lot of fiddling, I got an OK process working using random dithering, but I’d really like to have a system that applies a more advanced dither, so I’m tooling around with core image and wrote a basic thresholding function, and can write thresholded colors back to the image.

The next step is going to be working out the error diffusion, which seems relatively straightforward from the math that I read, and I’ll be interested to actually implement the diffusion. There’s a lot of potential for later optimization as right now I’m iterating over a pointer of RGBA values and brute forcing the math. Hopefully by next week I’ll have a playground with with dithering working and ready to show off.

Gradient

Thresholded Gradient