Abstract Shape Generator

Help content of the IPOL interface for Abstract Shape Generator

How to get started

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.

Abstract shape model

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).

tree.png

Figure 1. Abstract shape model

Abstract shape generation

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).