Abstract Shape Generator
Help content of the IPOL interface for Abstract Shape Generator
To start you can just click on the RUN button (at the end of the DEMO page). Each time you click on the RUN button the algorithm will create automatically a new Abstract shape which is stored as an SVG vector file and as a PNG file that you can download. This information is also stored in the archive repository. You can access such archive from the main DEMO menu (top of the DEMO page). If you like one shape generated by the algorithm, you can create similar ones by entering in the archive repository, selecting the experiment with the shape you want and clicking on reconstruct, then in the slider of the parameter named "Initial random seed generator" you select "-1" as value. In that way, each time you click in the RUN button you will create abstract shapes with similar appearance. This automatic mode can produce interesting variants: You just need to click on the RUN button and see what happens. However, to make the most of the algorithm, you need to understand and manipulate manually the parameters of the algorithm which determine the appearance of a abstract shape. In the following sections we will explain these issues in details.
We model a abstract shape by a collection of connected nodes (See the black points in Fig. 1). For each node we define a circle representing the width of the branche at this node and a smoothing factor fixing the degree of smoothness of the connections between branches at the green points (see Fig. 1).
Figure 1. Abstract shape model
We manage the creation of abstract shapes using the following collection of parameters which fully determine the abstract shape:
- A silhouette contouring the abstract shape : a silhouette is given by an image where the silhouette is in black with a white
background. You can choose one of the silhouettes proposed at the beginning of the DEMO, you can upload
your own silhouette or you can leave the algorithm use
a default silhouette. All of the shape's nodes are
then constrained to belong to the silhouette.
- Abstract shape type : We
have created 11 different abstract shape types
including abstract trees, symmetric patterns, periodic
patterns, etc.. You can select the abstract shape type
using a slider. Above the slider you can see an image
illustrating the shape type
- Initial random seed generator :
The creation of a abstract shape involves a random
seed initialization. By changing this parameter you
can obtain similar shapes.
- Average node distance :
This is the distance between the nodes. The lower this
value, the larger the number of nodes. The node
coordinates are normalized to a 1024x1024 region.
- Average width of branches :
This parameter is used to compute the width of the
branches. The witdh of the branche is affected by the
above "Average node distance": The lower the "Average
node distance" the lower the width of the branches.
- Smoothing factor : The
smoothing factor parameter determines how smooth the
connection between the branches is (branch connection
happens at the green points, as illustrated in Fig.
1). If, for instance, the smoothness parameter is
equal to zero, then there is no regularization and the
branch's contour arrives in straight line to the
contact point (the green point). The larger the value
of this parameter, the smoother the connection between
branches.
- Abstract finished in peak :
This parameter determines if the extrema of branches
of the shapes (which correspond to nodes with a single
neighbor) finish in peak or not.
- Number of rows/lines in periodic
pattern : Number of rows/lines used to show a
periodic pattern. If the abstract shape type is not
periodic, then the algorithm produces different
instances of the shape type changing the initial
random seed
- Joint extrema probability :
It is the probability of joining extrema nodes with
just one neighbor. If the value of this parameter is
0, this means that we do not join any extrema nodes
and if the value is 1, the algorithm tries to connect
all extrema nodes with other nodes of the shape.
- Max size of node neighborhood :
This parameter represents the maximum size of a node's
neighborhood, that is, the maximum number of nodes
that can be connected to a given one.
- Allow branche intersection :
If "yes", branches are allowed to overlap freely.
Otherwise they do not intersect.
- Reduction factor of a branche's
width : In most of the branch shape types we
start by selecting an initial node and then,
iteratively, new nodes connected to the previous ones.
This parameter is a width reduction ratio along the
branch from a node to the next.
- Max number of angles in a node
neighborhood : This parameter (MaxAngles)
determines the number of orientations (angles) we
allow when we try to add a new node to the
neighborhood of an existing one. For instance, if the
value of this parameter is 32, we use orientations in
the range [0,2pi]. If the value is 17, the orientation
range is [0,pi] and if this value is 9 the orientation
range is [pi/4, 3*pi/4]. Hence the smaller this
parameter, the more vertical the orientations of a new
node with respect to an existing one. The shape type 1
is slightly different. In that case we want to create
labyrinthic shapes. Hence we chose a particular
collection of angles: if MaxAngles=3, we use as
potential angles to connect new nodes
{0,2*pi/3,4*pi/3}, if MaxAngles=4, we use
{0,pi/2,pi,3*pi/2}, and if MaxAngles=8, we use
{0,pi/4,pi/2,3*pi/4,pi,5*pi/4,3*pi/2,7*pi/4}.
Notice that the way parameters affect the abstract shape depends on the abstract shape type. In fact not all parameters are active for the different types. To clarify this point in the image illustrating each abstract shape type you can see, in green, the parameters which are active for that particular shape style, and in red the ones which are not active. For instance the silhouette option is only active for the first three types. This means that for the rest of the types no matter which silhouette you use the result is going to be the same.
For any parameter controlled by a slider, moving the slider to the far left yields a negative number which means that the value of the parameter will be chosen randomly when clicking the RUN button.
To understand how a parameter affects the final shape, the best way is to proceed heuristically by modifying the value of the parameter in the DEMO interface (provided the other parameters remain fixed and are not in random mode).