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.