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.