Skip to content

Release 1.1

Choose a tag to compare
@dcoeurjo dcoeurjo released this 09 Oct 14:16
· 1464 commits to master since this release

Blog Post of the release 🎉

DGtal 1.1

New Features / Critical Changes

  • Project

    • For this release, we have cleaned up the git history (using bfg),
      removing old deprecated files or commit errors. For a complete description,
      please follow the discussion of Issue #1477.
      If you are doing a clean git clone of the project, or use the release archive,
      everything should be fine. If you have branches on the release 1.1beta, you
      would need to reset your current working copy. For instance, if
      you have cloned the DGtal-team/DGtal repository, just reset your
      master branch using:

      git fetch origin
      git reset --hard origin/master

      If you have cloned a fork of DGtal-team/DGtal (i.e. the origin
      remote correspond to your fork and not the DGtal-team one), Fetch
      the DGtal-team remote (nammed DGtal here):

      git fetch DGtal
      git reset --hard DGtal/master

      For advanced developers
      If there are some branches out there you want to "update" to the new history:
      First go to unmerged branch and copy the SHA of the commits you want to get. Or, if they are consecutive, copy the oldest and newest SHA.

      git checkout master #Updated to new history
      git checkout -b myOpenPR_after_new_history
      git cherry-pick oldestSha^..newestSha

      (David Coeurjolly, #1510)

  • Kernel package

    • Making HyperRectDomain_(sub)Iterator random-access iterators
      (allowing parallel scans of the domain, Roland Denis,
    • Fix bug in BasicDomainSubSampler for negative coordinates of the
      domain lower bound. (Bertrand Kerautret
  • DEC

    • Add discrete calculus model of Ambrosio-Tortorelli functional in
      order to make piecewise-smooth approximations of scalar or vector
      fields onto 2D domains like 2D images or digital surfaces
      (Jacques-Olivier Lachaud,#1421)
  • Geometry Package

    • New piecewise smooth digital surface regularization class (David Coeurjolly,
    • Provides support for digital full convexity and subconvexity (Jacques-Olivier Lachaud,
    • Implementation of Shrouds algorithm for smoothing digital surfaces:
      Nielson et al., Shrouds: optimal separating surfaces for enumerated volumes.
      In Proc. VisSym 2003, vol. 3, pp. 75-84
      (Jacques-Olivier Lachaud, #1500)
    • Updates cell geometry and digital convexity to use specialized
      unordered set data structure UnorderedSetByBlock for storing
      digital points (Jacques-Olivier Lachaud,
  • Shapes package

    • Add a new surface mesh representation for manifold or non-manifold polygonal
      surfaces in R^3 (Jacques-Olivier Lachaud,


  • General

    • DGtal can be compiled and used as a project (git) submodule (David
      Coeurjolly #1444)
    • Add .gitattributes file for github to recognize ih files as c++
      (Pablo Hernandez-Cerdan #1457)
    • Add CMake option DGTAL_ENABLE_FLOATING_POINT_EXCEPTIONS to control enabling
      feenableexcept (only applies in Linux when in Debug mode).
      (Pablo Hernandez-Cerdan, #1489)
    • Travis: Fix broken Eigen url. Update Eigen in travis to 3.3.7.
      (Pablo Hernandez, #1508)
  • Geometry

    • New Integral Invariant functor to retrieve the curvature tensor (principal curvature
      directions and values). (David Coeurjolly, #1460)
    • Add principal directions of curvature functions for implicit polynomial 3D shapes.
      (Jacques-Olivier Lachaud,#1470)
  • io

    • The GenericWriter can now export in 3D ITK format (nii, mha, mhd, tiff).
      (Bertrand Kerautret #1485)
    • New Viridis ColorGradientPreset and clean of useless template specializations in
      the GenericWriter for color image. (Bertrand Kerautret
    • Add the possibility to import images with a shifted domain in ITKReader.
      (Bertrand Kerautret and Pablo Hernandez-Cerdan
  • Kernel package

    • Add .data() function to PointVector to expose internal array data.
      (Pablo Hernandez-Cerdan, #1452)
    • Add a specialized unordered set data structure
      UnorderedSetByBlock for storing digital points, which is more
      compact and as efficient as unordered set
      (Jacques-Olivier Lachaud,#1499)
  • Helpers

    • Add vector field output as OBJ to module Shortcuts (Jacques-Olivier Lachaud,
    • Add shortcuts to Ambrosio-Tortorelli piecewise-smooth approximation
      (Jacques-Olivier Lachaud,#1421)
    • Add output as OFF to module Shortcuts (Bertrand Kerautret,
    • Add shortcuts to principal curvatures and directions of curvature for implicit polynomial
      3D shapes. (Jacques-Olivier Lachaud,#1470)
  • Tests

    • Upgrade of the unit-test framework (Catch) to the latest release Catch2.
      (David Coeurjolly #1418)
      (Roland Denis #1419)
  • Topology

    • Provides partial flip, split and merge operations for half-edge data structures
      and triangulated surfaces (Jacques-Olivier Lachaud,
    • Makes testVoxelComplex faster, reducing the size of the test fixture
      (Pablo Hernandez-Cerdan, #1451)
    • Fix bug in VoxelComplex masks when cell was at the boundary of kspace
      (Pablo Hernandez-Cerdan, #1488)
    • Fix loadTable not able to read compressed tables in Windows
      (Pablo Hernandez-Cerdan, #1505)
    • Fix fillData in CubicalComplex
      (Pablo Hernandez-Cerdan, #1519)
  • Shapes package

    • Add a moveTo(const RealPoint& point) method to implicit and star shapes
      (Adrien Krähenbühl,
    • Fix Lemniscate definition following Bernoulli's definition
      (Adrien Krähenbühl,
    • Homogenizes typedefs of all parametric shapes and fixes some bounding box
      computations (Adrien Krähenbühl,
    • Add const directives to some curve estimators on shapes.
      (Adrien Krähenbühl #1429)
  • IO

    • When the 3D built-in viewer is enabled (libqglviewer), the default
      required Qt version is now Qt5 instead of Qt4. You can revert to
      Qt4 by unsetting the WITH_QT5 cmake flag (David Coeurjolly,

Bug Fixes

  • Configuration/General

    • Fix compilation error/warnings with gcc 9.1.1 and clang 9.0
      (Boris Mansencal, #1431)
    • Disable some gcc/clang warnings in Qt5 raised by Apple clang compiler (David
      Coeurjolly, #1436)
    • Fixing Travis configuration due to syntax changes in v2
      (Roland Denis, #1465)
    • Compression of png files used in for the documentation
      (preparing 1.1 release), (David Coeurjolly, #1494)
      (Pablo Hernandez-Cerdan, #1495)
  • Mathematics

    • Put SimpleMatrix * scalar operation in DGtal namespace (Jacques-Olivier Lachaud,
  • Geometry

    • Bugfix in the testVoronoiCovarianceMeasureOnSurface (David
      Coeurjolly, #1439)
    • Defining StandardDSS4Computer & NaiveDSS8Computer as templated aliases of
      ArithmeticalDSSComputer (fix #1483). Also fixing NaiveDSS8 adjacency.
      (Roland Denis, #1491)
    • Fix initialisation in BoundedLatticePolytope when creating non full
      dimensional simplices in 3D (segments, triangles). (Jacques-Olivier Lachaud,
  • Kernel

    • Point2DEmbedderIn3D edit to recover behavior of version 0.9.4 in
      the origin point placement. (Florian Delconte and Bertrand Kerautret
  • Helpers

    • Fix Metric problem due to implicit RealPoint toward Point conversion when computing
      convolved trivial normals in ShortcutsGeometry (Jacques-Olivier Lachaud,
    • Fixing double conversion bug in class Parameters, related to
      English/French decimal point inconsistency between atof and
      boost::program_options (Jacques-Olivier Lachaud,
    • Fix bug in Shortcuts::saveVectorFieldOBJ
      (Jacques-Olivier Lachaud,#1421)
    • Fixing OBJ export: .mtl file written with relative path (Johanna
      Delanoy #1420)
    • Unify pointel ordering in Shortcuts and MeshHelper so that
      Shortcuts::getPointelRange, Shortcuts::saveOBJ and
      Shortcuts::makePrimalPolygonalSurface, as well as
      MeshHelpers::digitalSurface2PrimalPolygonalSurface, all use the
      CCW ordering by default (in 3D).
      (Jacques-Olivier Lachaud,#1445)
  • images

    • Fix the image origin that was not taken into account in class
      ImageContainerByITKImage. (Bertrand Kerautret
    • Add domainShift to ImageContainerByITKImage.
      (Pablo Hernandez-Cerdan,
  • IO

    • Removing a using namespace std; in the Viewer3D hearder file. (David
      Coeurjolly #1413)
    • Fixing cast from const to mutable iterator in GradientColorMap.
      (Roland Denis #1486)
  • Topology

    • Add missing constraint to flips in HalfEdgeDataStructure
      (Jacques-Olivier Lachaud,#1498)
  • Shapes

    • Fix bug in Astroid parameter() method : orientation correction
      (Adrien Krähenbühl,
    • Add missing constraint to flips in TriangulatedSurface
      (Jacques-Olivier Lachaud,#1498)
  • DEC

    • Fix issue (#1441)
      related to bad link in DEC/moduleAT documentation and missing
      associated example exampleSurfaceATnormals.cpp (Jacques-Olivier
    • Adding missing LGPL headers in the DEC examples (David Coeurjolly
  • Documentation

    • Promoting the Shortcuts documentation page on the main page. (David
      Coeurjolly #1417)
    • Fixing the doxyfiles to have the table of contents of module pages (David
      Coeurjolly #1424)
    • New illustration in the volumetric analysis documentation page (David
      Coeurjolly #1432)
    • Using SourceForge to download doxygen sources during Travis CI jobs.
      (Roland Denis #1424)
    • CSS edit to enhance the readability of code snippets (David
      Coeurjolly #1438)
    • Fixing various links in moduleCellularTopology. Fixing #1454.
      Removing dead links to ImaGene project.
      (Roland Denis #1455)
  • Build

    • Fix issue (#1478),
      that is a Visual Studio 2019 build error related to befriend
      template specializations
      (Jacques-Olivier Lachaud #1481)
    • Removing the homemade CPP11 checks, using cmake macro instead
      (David Coeurjolly, #1446)
    • Removes the check for CPP11 when building WITH_ITK
      (Pablo Hernandez-Cerdan, #1453)
    • Fix apple clang compilation issue with a workaround to the
      ConstIteratorAdapter class that does not satisfy the _is_forward concept of the STL:
      using boost::first_max_element instead std::max_element.
      (Bertrand Kerautret, #1437)
    • Abort compilation at configure time when the compiler is gcc 10.1 due to compiler bug.
      Fix issue #1501.
      (Pablo Hernandez-Cerdan, #1506)