We are pleased to announce the release 0.5 of the DGtal library. Here you have the complete Changelog of this release with plenty of new cool features ;) Many changes have been pushed to this release with a lot of nice tools. Before going into details component by component, we would like to focus on a couple of new cool features:

  •  new arithmetic package (fractions, models of fraction, Stern-Brocot, continued fraction,…)
  • new nD DigitalSurface model (collections of (n-1) topological cells with many  tools/utilities to track surface elements)
  • update of the build system to make easier the use of DGtal in your projects.
  • DGtal and DGtalTools (see below)
  • many bugfixes.. * Overall Project - In previous DGtal releases, tools were given in the source “tools/” folder. In this release, we have chosen to move the tools to another GitHub project (http://github.com/DGtal-team/DGtalTools) with a specific development process. Please have a look to this project to get nice tools built upon the DGtal library.

  • cmake scripts and DGtalConfig have been widely updated to make easier the use of the  library in your own code
  • We are debugging both the code and the scripts to make it compile on windows. We still have couple of issues but most of DGtal compiles.
  • Again, efforts have been done on the documentation. * Package Topology:  

  • Creation of the graph concept (see Doxygen documentation)
  • Graph tools have been added: breadth first visitor for any model of graph
  • Creation of high-level classes to represent several kinds of digital surfaces. Surfaces are n-1 dimensional objetcs and may be open or closed. There are several models of digital surface containers: boundary of a set of points, explicit set of surfels, boundary of a digital object defined by a predicate, frontier between two regions, light containers that are discovered on traversal but not stored explicitly, etc.
  • All these digital surfaces can be manipulated through the same object (DigitalSurface), whichever the container.
  • DigitalSurface is a model of a graph whose vertices are the surfels and whose arcs are the connections between surfels.
  • Definition of umbrellas over digital surfaces, that forms faces onthe surface graph.
  • In 3D, digital surface form combinatorial 2-manifolds with boundary.
  • Digital surface can be exported in OFF format.
  • Several examples using digital surfaces are provided, like extracting isosurfaces from images or volume files defining surfaces in labelled images. * Package Algebraic (new package)

  •  Definition of n-variate polynomial as a one-dimensional polynomial whose coefficients are n-1-variate polynomials. Coefficient ring and dimension are templated.
  • Creation of a reader that can transform a string representation of multivariate polynomial  into such polynomial object. Use boost::spirit.
  • Example using package Topology to extract and display implicit polynomial surfaces in 3D. * Package Arithmetic (new package)

  •  Standard arithmetic computations are provided: greatest common divisor, Bézout vectors, continued fractions, convergent.
  • 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.
  • An implementation of patterns and subpatterns is provided, based on the irreducible fractions.
  • A representation of digital standard line in the first quadrant is provided, as well as fast algorithms to recognize digital straight subsegments. * Package Image

  • Complete refactoring of Images and ImageContainers (more consistent design)
  • Documentation added
  • Graph of concepts added in the documentation * Package Geometry

  •  New SegmentComputer (a.k.a. geometrical primitives to use for recognition, curve decomposition,…) : ArithDSS3D (3D DSS), DCA (Digital Circular Arcs), CombinatorialDSSS, …
  • New normal vector field estimation based on elementary normal vector convolution in n-D
  •  Distance Transformation by Fast Marching Method added. * Package IO

  • Complete refactoring of the way a DGtal object is displayed in boards/viewers.
  • New 2D board backend: you can export your drawning in TikZ for latex includes.