**Goal**

In this project we explored the possibilities of creating procedural rules from a given structure or pattern.

The key challenge of procedural techniques is the definition of the rules. This task is not intuitive, lacks controllability, requires in-depth knowledge of procedural modeling, and resembles programming in an advanced language. Automatic generation of procedural rules, or inverse procedural

modeling, has been an open problem for more than 20 years. Its goal is to find the rules of a procedural system that would generate a given model. Applications of such an automatic system would be immense. For example, changing the rules allows generation of classes of similar models, the internal structure of the model could be modified, the model could be represented by its generative rules (compressed), the syntactic analysis of the rules could be used for image analysis, and so forth.

**Our approach**

We made an important step towards the solution of the problem of inverse procedural modeling by generating parametric context-free L-systems that represent an input 2D model. The L-system rules efficiently code the regularstructures and the parameters represent the properties of the structure transformations.

The algorithm takes as input a 2D vector image that is composed of atomic elements, such as curves and poly-lines. Similar elements are recognized and assigned terminal symbols of an L-system alphabet. The terminal symbols’ position and orientation are pair-wise compared and the transformations are stored as points in multiple 4D transformation spaces. By careful analysis of the clusters in the transformation spaces, we detect sequences of elements and code them as L-system rules. The coded elements are then removed from the clusters, the clusters are updated, and then the analysis attempts to code groups of elements in (hierarchies) the same way. The analysis ends with a single group of elements that is coded as an L-system axiom. We recognize and code branching sequences of linearly translated, scaled, and rotated elements and their hierarchies.

The L-system not only represents the input image, but it can also be used for various editing operations. By changing the L-system parameters, the image can be randomized, symmetrized, and groups of elements and regular structures can be edited. By changing the terminal and non-terminal symbols, elements or groups of elements can be replaced.

**System pipeline**