# Overview

The DGtal library is composed of several main packages focusing on specific topics in Digital Geometry. Such packages are introduced below and are also documented in the DGtal documentation main pages

• Preliminaries
• This package describes the main DGtal philosophy, its design and several technical comments to download, compile and install DGtal.
• David Coeurjolly, Bertrand Kerautret
• LGPL

• Base Package
• This package gathers many concepts and stand-alone classes that are used in other packages, likes basic types, functions, functors, iterators, ranges, containers, concept check, trace and exception, timings, and smart pointers.
• David Coeurjolly, Jacques-Olivier Lachaud, Tristan Roussillon
• LGPL

• Kernel Package

]4 3D Domain visualization with some elements (domain displayed in “Grid” mode)

• This package contains core concepts, objects and methods which are used in other higher level packages. For example, it defines number types considered in DGtal, fundamental structures such as the digital space, the digital domain, as well as basic linear algebra tools.
• Jacques-Olivier Lachaud, David Coeurjolly, Guillaume Damiand, Sebastien Fourey
• LGPL

• Arithmetic Package
• This package gathers tools to perform arithmetic computations. Standard arithmetic

]6 Arithmetic view of standard digital straight lines

computations are provided: greatest common divisor, Bézout vectors, continued fractions, convergent, intersection of integer half-spaces. Several representations of irreducible fractions are provided. They are based on the Stern-Brocot tree structure. With these fractions, amortized constant time operations are provided for computing reduced fractions. A representation of digital standard line in the first quadrant is provided, as well as fast algorithms to recognize digital straight subsegments. Furthermore, it provides classes for representing 2D lattice polytopes (convex integer polygons) as well as methods to perform linear integer programming in the plane.
• Jacques-Olivier Lachaud, Xavier Provençal, Mouhammad Said, Emilie Charrier, Lilian Buzer
• LGPL

• Topology Package

]8 Tracking 2D surfel boundary from single surfel Cell of 3D Khalimsky Space

• This package contains digital topology related concepts, objects and methods which are used in other higher level packages. For example, it contains the classical topology tools (à la Rosenfeld), cartesian cellular topology, and digital surface topology (à la Herman). Generic tools and methods are provided for extracting connected components, identifying simple points, determining the neighborhood over a digital surface, tracking the boundary of a shape, defining cells and incidence operations. Several types of digital surfaces are provided (implicit, explicit, boundary, frontier) and the user can use them in a unified way. This package is notably used by the geometry package, especially to define curves and surfaces.
• Jacques-Olivier Lachaud, Bertrand Kerautret
• LGPL

• Geometry Package
• This package contains geometry related concepts, objects and methods which are used in other higher level packages. It provides a generic framework for the segmentation of one-dimensional discrete structures, like strings, contours of 2d digital objects or nd digital curves. It has also limited support for digital plane recognition in 3d. It also provides a generic framework for the estimation of geometrical quantities, either global, like length, or local, like normal or curvature. Several estimators are built from some well chosen segmentations. On the other hand, this package contains tools for the analysis of volumes of arbitrary dimension, by the means of separable and incremental distance transforms.
• Tristan Roussillon, David Coeurjolly, Jacques-Olivier Lachaud, Bertrand Kerautret
• LGPL

]10 Example of the decomposition of a simple 4-connected curve into maximal Discrete Straight Segments (greedy algorithm).

Distance Transformation using the Euclidean distance

• DEC Package
• Discrete exterior calculus (DEC) provides an easy and efficient way to describe linear operator over various structure. Basic operators, such as Hodge duality operator or exterior derivative, can be combined to create classical vector analysis operator such as gradient, curl and divergence.
• David Coeurjolly, Pierre Gueth
• LGPL

• Boards & Viewers
• This package gathers tools and utilities to import/export images and visualize digital

]14 Volume rendering of the lobster image

data using interactive (viewers) and non-interactive (boards) mechanisms, in 2D and in 3D.
• Bertrand Kerautret, Jacques-Olivier Lachaud, Nicolas Normand, Martial Tola, David Coeurjolly
• LGPL (GPL if QGLViewer is used)

• Image Package

]16 Visualisation of some iso contours

• This package aims to implement Image models and data-structures.
• Tristan Roussillon, David Coeurjolly
• LGPL

• Shapes Package
• This package contains shape related concepts, models and algorithms. It provides a

]18 Digitization of a parametric 2D shape.

generic framework and tools to construct multigrid shapes in DGtal. More precisely, this package contains analytical objects (parametric, implicit, from point sets,…) with digitization schemes to make concrete such objects in a given grid step grid.
• David Coeurjolly, Jacques-Olivier Lachaud
• LGPL

• Graph Package
• This package gathers concepts and classes related to graphs. Simple visitors are

]21 Breadth-first traversal of a digital object, which is a model of finite simple graph.

provided to traverse the graph. For more elaborate graph algorithm, this package offers wrappers to boost::graph.
• Jacques-Olivier Lachaud, David Coeurjolly
• LGPL

• Mathematical Package
• This package gathers various mathematical subpackages and modules. For now, it

]23 Triangulation of a 3D implicit surface, a 3-variate polynomial.

consists essentially in a module for defining multivariate polynomials.
• Jacques-Olivier Lachaud, Felix Fontein
• LGPL