Skip to content

DGtal dev meeting (June 25th, 2014)

David Coeurjolly edited this page Jun 19, 2018 · 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:: ? DGtal::functions DGtal::functors DGtal::concepts DGtal::details DGtal::experimental:: (concepts/functions/functors/details) DGtal::deprecated::(concepts/functions/functors/details)
  • 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
  • Changelog

    • (S) Action Changelog -> Changelog.md
    • (S) Action: refactor into "New features / Improvements / Bug fixes"

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)
    • everything except PointVector moved to math/linalg package.
  • 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 ?
  • (S)Volumetric/Distances: update the concepts

  • 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

  • dependency to Lemon for graph algorithms

    • wrapper (DGtal graph to Lemon graph) ?
    • doc, examples
  • boost::graph

    • DigitalSurface is wrapped for boost::graph
    • Action (M) wrap Object
  • algorithms

    • (S) add watershed

Mathematical package

  • statistics

    • (?) missing user doc for Histogram, Statistic, SimpleRegression
    • (S) add generic least-square fitting
  • linalg

    • concept CLinearAlgebra : Matrix, Vector, mult
    • concepts related to dynamic matrices, vectors and static matrices, vectors.
    • concept CLinearAlgebraSolver (solve linear problem, factorization)
    • full model with Eigen
    • move EigenDecomposition to math/linalg and check concepts.

Image package

  • image transformations

    • Action (M) (quasi)affine/rotations/shears
  • visiting images

    • Action (S) update doc on image to point on space Domain iterators when one wish to visit images on subdomains
    • (S) add example of subdomain traversal for images
    • question: have specialized span iterators for ImageContainerBySTLVector
    • smart foreach generic function
  • image processing

    • concepts : algorithms, morphers, (look at milena)
    • add image adapters (local neighborhoods)
    • (S) create other doc page with image adapters
    • (M) image filtering (FFTw dependency)
  • large image handling

    • (S) identity 2-3 image/volume tools and migrate them to huge images
  • math morphology

    • erosion, dilation, opening as image processing algorithms

IO package

  • export, visualization

    • Action (M) embedding in Display3D
    • GLFW: to remove dependency with Qt
  • interaction

    • RIP: OGRE branch

DGtalTools

Converters

  • RAS
  • (S) 2D vectorization tool

DistanceTransform

  • (SM) Add DT, RDT, and so-forth
  • change name of LUTxxx

Estimators

  • are tangentBC and curvatureBC included in 2dLocalEstimators ?
  • refactoring of 2dLocalEstimators and 3dLocalEstimators
  • upgrade vol2normalField with newer estimators
  • add generic3dCurvaturexxx

ShapeGenerator

  • need 3d vol generator (ball, ellipsoid, etc)
  • implicit polynomial x gridstep -> volume (2d and 3d)
  • tool : mesh x gridstep -> volume

Visualization

  • a simple volume slice viewer
  • a simple image viewer

Volumetric

  • vol2off and 3dVolMarchingCubes are the same, keep second in volumetric
  • affine transformations

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