Skip to content

DGtal dev meeting (June 25th, 2014)

Jacques-Olivier Lachaud edited this page Jun 25, 2014 · 28 revisions

Package review

General remarks

  • namespace policy

    • create functors::, gathers all functors into this namespace
    • create functions::, gathers all functions into this namespace
    • remove detail::, keep details::
    • put all standalone functions into functions:: or details::
    • question: namespace concepts:: ?
  • cpp11 policy

    • Action (S1) check cpp11 features we need and check which compilers/version have them.
  • feedback from students

    • lack of documentation
    • backward compatibility
    • Action (S1) Beginner's guide to DGtal
      • look at ITK guide
      • elementary programs
      • thematic index pages

Base package

  • Iterators

    • some iterators are well standardized (STL/boost + DGtal): GridCurve, DSL, perhaps some image containers)
    • but most DGtal iterators are not standardized
    • Action (M1): standardize Image, Domain, DigitalSurface
  • "smart" pointers and parameter passing

    • use ConstAlias, Alias, Clone at most
    • Action (S2): unify some smart pointers
    • Action (M1): check other packages (DigitalSurface, etc)
  • Functors:

    • Action (S1) doc on basic functors and functors of other packages.
  • Exceptions ?

    • Action (M2) check some assertions and replace them by exception

Kernel package

  • basic linear algebra: for now it is mess

    • Point and Vector same class
    • SimpleMatrix (standalone)
    • EigenDecomposition (package math)
    • no usual linear transformation
    • but package dec is coming with a linalg package (based on Eigen library)
    • Action (S0) : wait for David
  • sets, domains

    • characteristic set concept

Arithmetic package

  • no mult and division for continued fractions
  • patterns are defined only in the first quadrant (StandardDSLQ0). Keep that ?
  • what about nD lattice polytope ?
  • link with ArithmeticalDSL, same primitive ? same package ?

Geometry package

  • primitive / recognition algorithms

    • Action (S1) : philosophy of primitive / recognition algorithms, concepts, models
    • Action () : upgrade some recognition algorithms to return primitives: StabbingLineComputer, StabbingCircleComputer,StandardDSS6Computer,OneBalancedWordComputer
    • Action (M) : general 3D straight segment primitive (for now only standard DSS 3D)
  • geometric estimators

    • Action () : documentation for length estimators
    • upgrade CCurveLocalGeometricEstimator, CGlobalCurveGeometricEstimator, CSegmentComputerEstimator concepts.
    • Action (S1) : documentation page for estimators, listing them, explaining global philosophy and concepts, with pointers to specialized pages
    • Action () : upgrade of estimators
    • 3d curve ? arbitrary set of points ?
  • skeletonization / thinning

    • doc
    • backport from tools
  • user tools => DGtalTools

  • package divided into directory according to input. Add digitalset (volume for now), pointcloud ?

Shapes package

  • rename Shapes to Shapes and Digitization (if other digitization schemes are implemented)

  • ShapeFactory

    • Action (S1) remove it
    • Action (S2) refactor ShapeFactory to really produce shapes according parameters
    • Action (?) create object facade to many shape types
  • shapes:

    • Action () : add list of implicit/parametric shapes
    • think again about concepts
    • half-planes, rotations/affine transformations (do we keep strong typing here)
    • add 3D (euclidean or digital) curves
    • Action (S) add principal curvatures and directions (to implicit polynomial shape)
    • polytope (with dep)
  • mesh:

    • add a user documentation for Mesh
    • Action (S1) MeshHelper to build a mesh from a digital surface (primal and dual mesh)
  • digitization:

    • Action (M) other digitization schemes
    • Action (?) 2d and 3d curve digitization scheme

Topology package

  • cubical complex

    • (S) missing CubicalComplex structure, iterators, so on, update KhalimskySpaceND ?
    • (M) builders of CubicalComplex from set of linels, surfels, digital surfaces
  • (M) fast version of KhalimskySpaceND

  • topology invariants (doc)

    • Action (M) linking number
    • Action (L) homology generators
    • (VL) persistent homology

Graph package

Mathematical package

Image package

IO package

Former feature requests

  • Linear algebra (nD) => Matrix, Vector, EigenDecomposition + package dec (linalg)
    • doc missing
  • polytopes (Rn, Qn) => few things, LatticePolytope2D
  • affine transformations => only matrices
  • bindings with morpho math packages => ?
  • image processing packages => binding ITK, DICOM reader, ImageMagick reader/writer
  • geometric primitives (fuzzy, higher degree) => Plane recognition (fuzzy in the Hausdorff sense)
  • graph algorithms => visitors (depth-first, breadth-first, euclidean distance first), watershed, binding boost::graph (DGtal graphs can be wrapped as boost graphs)
  • chamfer or graph-based distances => LUT morpho math tool (not in library)
  • medial axis => DT, Voronoi by separable algos + ?
  • partition models => LabelledMap (K different characteristic functions stored compactly),
  • video => nothing