A bit of “how the sausage gets made” — in other words, some of the gory details. You might want to just skip to the non-technical conclusion. This is also the last Arcolnets posting, at least for now.
Back at the beginning of the Month of Arcolnets, I promised more technical details of how Arcolnets are made, so now it’s time to make good on that promise.
To refresh your memory, Arcolnets build on the arbitrary numbers from images, just as Cyclartcy does. The basic idea is simple, and has three parts:
- Select points/pixels from an image in some way
- Construct an abstract network/graph, by connecting points/pixels based on some criteria
- Draw (=visualize) the abstract network in some way
For all 3 parts, it is possible to do them in a random fashion. However, given that I am “Mr. Arbitrary not Random”, I do not use random techniques (though I have experimented with them as a baseline), so I won’t discuss those possibilities any further here.
Selecting points/pixels from an image
The first step is to select some points and their corresponding pixels from an image. Although it is possible to select points in some other way (as you can do on the DIY Arcolnets page), since Arcolnets are part of my Revisualizing the Visual project (see some early examples here), I use images, which have the added advantage of providing color information to work with in parts (2) and (3).
Selecting the points/pixels can be done in either a purely geometric fashion, a purely arbitrary fashion, or a combination of the two. An example of a purely geometric method is to select the points/pixels at the intersections of the lines of a grid. An example of a purely arbitrary method is to pick points/pixels arbitrarily (like throwing darts at a dartboard). In practice, I don’t use purely geometric methods (though again, I have experimented with them), and I use purely arbitrary methods only sporadically.
Most of the time I combine geometric and arbitrary aspects by using a modified version of the Poisson Disk algorithm for sampling points from the plane to provide an even distribution of the points. When we sample points randomly/arbitrarily, they tend to “clump together”, so the Poisson Disk algorithm adds a check to make sure that no two points are too close. You can see a couple nice illustrations (not by me) of the algorithm here and here. Since the basic algorithm uses random points, I modified it to use arbitrary points instead.
Construct an abstract network/graph, by connecting points/pixels
The result of part (1) is a set of potential nodes in the network that will be visualized in part (3). A point/pixel is included in the network if it is connected to another point/pixel. Any point/pixel that is not connected to another point/pixel is not included in the network (and so isn’t in the visualization). The criteria for connecting points/pixels can be geometric, arbitrary, or they can refer to some color property of the pixels. An example of a purely geometric method is to connect two points/pixels if they are within a certain distance of each other. This is the method on the DIY page. An example of a purely arbitrary method is to connect two points/pixels an arbitrary portion of the time. This is similar to an Erdős–Rényi graph model, but I generate arbitrary numbers from the image and use them instead of random numbers.
To use color properties, I use various color-related distances instead of a geometric one. For example, two points/pixels might be connected if the pixels’ hues (in HSV) are close enough, or if the pixels’ RGB values are close enough (using Euclidean distance), etc.
There are a couple variations for the geometric and color distance methods. For example, we can connect points/pixels to all the points/pixels that are the closest to (alternatively, furthest from) them (this is similar to nearest/furthest neighbor graphs). We can also connect two points/pixels if there is no other point that is closer to both of them than they are to each other (this is similar to relative neighborhood graphs).
In practice, I do not use the purely arbitrary method very often, and I use the neighbor(hood) graphs sparingly.
Draw (=visualize) the abstract network
The result of part (2) is a network (=graph). While there are lots of ways to draw/visualize networks, since I want to use the original point locations, I use visual variations on the standard node-link diagram: draw nodes as shapes (I use circles and squares, either solid or outlines) and draw their connections (network edges) as lines (I use straight lines and two types of curved lines, and they can be either solid or dashed). The colors of the nodes can be the colors of the original pixels or manually fixed; the colors of the lines are manually fixed, as is the background color.
As we have seen, there are two “tricks” that I use. The first trick is to not draw the nodes. In this case, the nodes of the graph are visually implicit as the endpoints of the lines. The second trick is to not draw the connections, just the nodes. In this case, the result is not a “fair” visualization of the network since the connections are not visible. However, the results can still be aesthetically interesting.
While all of my Revisualizing the Visual tools have parts or parameters, they typically produce a small number of visual types (intuitively) of visualizations, each with a large range of variation themselves. A good example is the Color from Shapes series, where there are basically two types of visualizations: using rectangles and using ovals. The variety comes from both the parameters and the source images.
What is striking to me is that the 3 parts of constructing Arcolnets and the relatively few variations within them give rise to a tremendous range of visual types of visualizations. As you saw in the Month of Arcolnets, a single image gave rise to 24 Arcolnets (= 16 + 2×3 (the triptychs) + 2 (the two examples in the first post)) which are, with the exception of the components of the triptychs and perhaps a couple quibbles, different types, and there are even more types that I have created from that same image but which I did not include in these posts.
Perhaps now you’ll have a better understanding of why I felt like a visual gourmand as I did my initial explorations of the possibilities of Arcolnets. Of course, I hope that we all have become Arcolnet gourmets.
You might wonder which variations of the 3 parts were used in the Arcolnets, but I’m going to leave that up to you to ponder. There must be some mystery in art, don’t you think?