Plotting raster images
Pen plotters can only draw lines, typically in a single color, so getting them to reproduce a photograph is difficult. This page collects some ideas for how to plot images that are represented as a grid of colors, or a raster.
Resources
The Plotting page at Mitxela has a lot of ideas for accommodating raster images in plotters.
Halftone with Points And Lines has a collection of algorithms for making halftone images with vectors.
Daniel Piker tried dot clustering and line clustering.
Drawing Bot V3 is a popular Java application for preparing raster images for plotting, in a variety of styles, with support for using multiple pens to recreate full color images.
vpype-pixelart is a plugin for vpype that plots pixel artwork.
Take an image, apply contouring, and then discretize hash marks into each successive region.
Tom Duff is working on a system that uses the Canny edge detector to find edges and tried it with a SpaceX image.
linedraw is a similar project.
Geoffrey Bradwen gave a talk at Plotter People 2019 called From Monotone to Grayscale.
Stippling
Stippling puts more points in darker regions of an image.
StippleGen is the standard generator from the creators of The AxiDraw pen plotter.
Line density
This system puts more discrete lines in darker regions, and includes approaches like cross-hatching.
Ben Golder generated great cross-hatched plots of 3D fossil models and gave an explanation to Michael Fogleman.
Mycelium draws little lines in denser areas of a bitmap, like the tendrils of a fungus.
Generating TSP art from a stippled image is Evil Mad Scientist's wiki page on the subject and briefly covered by John D. Cook in Traveling salesman art.
A Raytraced sphere uses scattered raytracing and then connects the points with a Voronoi from a Delaunay triangulation.
The vpype flow imager uses streamlines of various densities for shading.
Line deviation
One way a plotter can generate a darker region is to deflect the pen's movement when entering a shaded area and add more lines in darker areas.
SquiggleDraw is the original bitmap vectorizer for pen plotters.
Use Pythagoras' Theorem to Draw Pictures relies on line variation of horizontal lines to provide shading.
Spiral Raster script is an online tool for using line movement to represent shading.
Thickness-based
These approaches rely on changing the thickness to represent density and shading. A pen plotter usually cannot vary the thickness of the lines it draws, so these will need modification to work for plotting.
Vectoraster is a macOS app that converts raster images to vectors, but which might require varying line thickness to work properly.
Vertigo is a slick demo that plots density using thicker lines or circles organized radially.
Artistic
These techniques compromise the faithful reproduction of the image for artistic purposes.
A domino representation of Joe Biden is an off-the-wall and artistic approach to plotting photographs.
Geometric squares is an example of using a grid of squares with varying density.
Image vectorization
Vectorizing raster images is a bit more loose than techniques which can only target pen plotters, but there might be useful techniques to glean from these approaches.
Differentiable Vector Graphics Rasterization for Editing and Learning is a SIGGRAPH Asia 2020 paper on image vectorization.
Using AutoTrace's centerline option for pen plotting shows an effective technique for converting line art in raster format to vectors.
VTracer uses machine learning to vectorize images.
Inkscape's bitmap vectorization finds outlines and then applies contouring to shade thresholds.
Watertight vector maps from raster images describes approaches to vectorizing maps, where edges are shared.
oneliner is a Rust program using the ideas in A Sub-Pixel Edge Detector: an Implementation of the Canny/Devernay Algorithm.
Vectorizor.ai uses AI to convert images to vectors and is free while in beta.