halftoning image processing penplotter

Spiral Halftoning

Let’s halftone an image with some overlapping wiggly spirals!

I want to draw N lines, spiraling out from the center of the image, and have them each slightly offset. With the proper offset, this will create the (approximately) proper darkness.

With image darkness k, line width w, and line spacing L, we can get a minimum darkness of k_{min}=w/L, and maximum k_{max}=Nw/L. So for the largest range of darkness, we need L=Nw and many lines. The first part is easy, but large N will result in low resolution.

To draw an Archimedean spiral, the unperturbed line is defined with r_0=L/2+tL/(2 \pi), with t large enough to make the desired number of turns. Then it’s simple enough to convert from cylindrical to Cartesian coordinates.

How do we choose the offset of the lines? The easy way is to have the i^{th} line (starting with number 1) use r_i=r0+d_i, with d_i covering the space between the lines, proportional to k and i. That is d_i=k(i-1)(L-w)/(N-1). Or the lines can be centered around r_0, however you want. The following examples have six lines.

Check out an example with two lines, which I’ve animated to show a nice MoirĂ© effect as they overlap.

This same approach can be used for each color channel, if 3*N lines are drawn. Check out the same sort of animation, but with color:

I like this one because the color in the individual spirals is so faint, but it pops out when they overlap!

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.