File failed to load: https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.3/config/TeX-MML-AM_CHTML/MathJax.js
DGtal 2.0.0
DGtal::ShortcutsGeometry< TKSpace > Class Template Reference

Aim: This class is used to simplify shape and surface creation. With it, you can create new shapes and surface in a few lines. The drawback is that you use specific types or objects, which could lead to faster code or more compact data structures. More...

#include <DGtal/helpers/ShortcutsGeometry.h>

Inheritance diagram for DGtal::ShortcutsGeometry< TKSpace >:
[legend]

Public Types

typedef Shortcuts< TKSpace > Base
typedef ShortcutsGeometry< TKSpace > Self
typedef TKSpace KSpace
 Digital cellular space.
typedef KSpace::Space Space
 Digital space.
typedef Space::Integer Integer
 Integer numbers.
typedef Space::Point Point
 Point with integer coordinates.
typedef Space::Vector Vector
 Vector with integer coordinates.
typedef Space::RealVector RealVector
 Vector with floating-point coordinates.
typedef Space::RealPoint RealPoint
 Point with floating-point coordinates.
typedef RealVector::Component Scalar
 Floating-point numbers.
typedef HyperRectDomain< SpaceDomain
 An (hyper-)rectangular domain.
typedef unsigned char GrayScale
 The type for 8-bits gray-scale elements.
typedef MPolynomial< Space::dimension, ScalarScalarPolynomial
 defines a multi-variate polynomial : RealPoint -> Scalar
typedef ImplicitPolynomial3Shape< SpaceImplicitShape3D
typedef GaussDigitizer< Space, ImplicitShape3DDigitizedImplicitShape3D
 defines the digitization of an implicit shape.
typedef ImageContainerBySTLVector< Domain, bool > BinaryImage
 defines a black and white image with (hyper-)rectangular domain.
typedef ImageContainerBySTLVector< Domain, GrayScaleGrayScaleImage
 defines a grey-level image with (hyper-)rectangular domain.
typedef ImageContainerBySTLVector< Domain, float > FloatImage
 defines a float image with (hyper-)rectangular domain.
typedef ImageContainerBySTLVector< Domain, double > DoubleImage
 defines a double image with (hyper-)rectangular domain.
typedef KSpace::SurfelSet SurfelSet
 defines a set of surfels
typedef LightImplicitDigitalSurface< KSpace, BinaryImageLightSurfaceContainer
typedef ::DGtal::DigitalSurface< LightSurfaceContainerLightDigitalSurface
 defines a connected digital surface over a binary image.
typedef SetOfSurfels< KSpace, SurfelSetExplicitSurfaceContainer
 defines a heavy container that represents any digital surface.
typedef ::DGtal::DigitalSurface< ExplicitSurfaceContainerDigitalSurface
 defines an arbitrary digital surface over a binary image.
typedef IndexedDigitalSurface< ExplicitSurfaceContainerIdxDigitalSurface
 defines a connected or not indexed digital surface.
typedef LightDigitalSurface::Surfel Surfel
typedef LightDigitalSurface::Cell Cell
typedef LightDigitalSurface::SCell SCell
typedef LightDigitalSurface::Vertex Vertex
typedef LightDigitalSurface::Arc Arc
typedef LightDigitalSurface::Face Face
typedef LightDigitalSurface::ArcRange ArcRange
typedef IdxDigitalSurface::Vertex IdxSurfel
typedef IdxDigitalSurface::Vertex IdxVertex
typedef IdxDigitalSurface::Arc IdxArc
typedef IdxDigitalSurface::ArcRange IdxArcRange
typedef std::set< IdxSurfelIdxSurfelSet
typedef std::vector< SurfelSurfelRange
typedef std::vector< CellCellRange
typedef std::vector< IdxSurfelIdxSurfelRange
typedef std::vector< ScalarScalars
typedef std::vector< RealVectorRealVectors
typedef std::vector< RealPointRealPoints
typedef ::DGtal::Statistic< ScalarScalarStatistic
typedef sgf::ShapePositionFunctor< ImplicitShape3DPositionFunctor
typedef sgf::ShapeNormalVectorFunctor< ImplicitShape3DNormalFunctor
typedef sgf::ShapeMeanCurvatureFunctor< ImplicitShape3DMeanCurvatureFunctor
typedef sgf::ShapeGaussianCurvatureFunctor< ImplicitShape3DGaussianCurvatureFunctor
typedef sgf::ShapeFirstPrincipalCurvatureFunctor< ImplicitShape3DFirstPrincipalCurvatureFunctor
typedef sgf::ShapeSecondPrincipalCurvatureFunctor< ImplicitShape3DSecondPrincipalCurvatureFunctor
typedef sgf::ShapeFirstPrincipalDirectionFunctor< ImplicitShape3DFirstPrincipalDirectionFunctor
typedef sgf::ShapeSecondPrincipalDirectionFunctor< ImplicitShape3DSecondPrincipalDirectionFunctor
typedef sgf::ShapePrincipalCurvaturesAndDirectionsFunctor< ImplicitShape3DPrincipalCurvaturesAndDirectionsFunctor
typedef functors::IIPrincipalCurvaturesAndDirectionsFunctor< Space >::Quantity CurvatureTensorQuantity
typedef std::vector< CurvatureTensorQuantityCurvatureTensorQuantities
typedef CorrectedNormalCurrentComputer< RealPoint, RealVectorCNCComputer
typedef TrueDigitalSurfaceLocalEstimator< KSpace, ImplicitShape3D, PositionFunctorTruePositionEstimator
typedef TrueDigitalSurfaceLocalEstimator< KSpace, ImplicitShape3D, NormalFunctorTrueNormalEstimator
typedef TrueDigitalSurfaceLocalEstimator< KSpace, ImplicitShape3D, MeanCurvatureFunctorTrueMeanCurvatureEstimator
typedef TrueDigitalSurfaceLocalEstimator< KSpace, ImplicitShape3D, GaussianCurvatureFunctorTrueGaussianCurvatureEstimator
typedef TrueDigitalSurfaceLocalEstimator< KSpace, ImplicitShape3D, FirstPrincipalCurvatureFunctorTrueFirstPrincipalCurvatureEstimator
typedef TrueDigitalSurfaceLocalEstimator< KSpace, ImplicitShape3D, SecondPrincipalCurvatureFunctorTrueSecondPrincipalCurvatureEstimator
typedef TrueDigitalSurfaceLocalEstimator< KSpace, ImplicitShape3D, FirstPrincipalDirectionFunctorTrueFirstPrincipalDirectionEstimator
typedef TrueDigitalSurfaceLocalEstimator< KSpace, ImplicitShape3D, SecondPrincipalDirectionFunctorTrueSecondPrincipalDirectionEstimator
typedef TrueDigitalSurfaceLocalEstimator< KSpace, ImplicitShape3D, PrincipalCurvaturesAndDirectionsFunctorTruePrincipalCurvaturesAndDirectionsEstimator
typedef ::DGtal::Mesh< RealPointMesh
typedef ::DGtal::TriangulatedSurface< RealPointTriangulatedSurface
typedef ::DGtal::PolygonalSurface< RealPointPolygonalSurface
typedef std::map< Surfel, IdxSurfelSurfel2Index
typedef std::map< Cell, IdxVertexCell2Index
Public Types inherited from DGtal::Shortcuts< TKSpace >
typedef TKSpace KSpace
 Digital cellular space.
typedef KSpace::Space Space
 Digital space.
typedef Space::Integer Integer
 Integer numbers.
typedef Space::Point Point
 Point with integer coordinates.
typedef Space::Vector Vector
 Vector with integer coordinates.
typedef Space::RealVector RealVector
 Vector with floating-point coordinates.
typedef Space::RealPoint RealPoint
 Point with floating-point coordinates.
typedef RealVector::Component Scalar
 Floating-point numbers.
typedef HyperRectDomain< SpaceDomain
 An (hyper-)rectangular domain.
typedef unsigned char GrayScale
 The type for 8-bits gray-scale elements.
typedef MPolynomial< Space::dimension, ScalarScalarPolynomial
 defines a multi-variate polynomial : RealPoint -> Scalar
typedef ImplicitPolynomial3Shape< SpaceImplicitShape3D
typedef GaussDigitizer< Space, ImplicitShape3DDigitizedImplicitShape3D
 defines the digitization of an implicit shape.
typedef ImageContainerBySTLVector< Domain, bool > BinaryImage
 defines a black and white image with (hyper-)rectangular domain.
typedef ImageContainerBySTLVector< Domain, GrayScaleGrayScaleImage
 defines a grey-level image with (hyper-)rectangular domain.
typedef ImageContainerBySTLVector< Domain, float > FloatImage
 defines a float image with (hyper-)rectangular domain.
typedef ImageContainerBySTLVector< Domain, double > DoubleImage
 defines a double image with (hyper-)rectangular domain.
typedef KSpace::SurfelSet SurfelSet
 defines a set of surfels
typedef LightImplicitDigitalSurface< KSpace, BinaryImageLightSurfaceContainer
typedef ::DGtal::DigitalSurface< LightSurfaceContainerLightDigitalSurface
 defines a connected digital surface over a binary image.
typedef SetOfSurfels< KSpace, SurfelSetExplicitSurfaceContainer
 defines a heavy container that represents any digital surface.
typedef ::DGtal::DigitalSurface< ExplicitSurfaceContainerDigitalSurface
 defines an arbitrary digital surface over a binary image.
typedef IndexedDigitalSurface< ExplicitSurfaceContainerIdxDigitalSurface
 defines a connected or not indexed digital surface.
typedef LightDigitalSurface::Surfel Surfel
typedef LightDigitalSurface::Cell Cell
typedef LightDigitalSurface::SCell SCell
typedef LightDigitalSurface::Vertex Vertex
typedef LightDigitalSurface::Arc Arc
typedef LightDigitalSurface::Face Face
typedef LightDigitalSurface::ArcRange ArcRange
typedef IdxDigitalSurface::Vertex IdxSurfel
typedef IdxDigitalSurface::Vertex IdxVertex
typedef IdxDigitalSurface::Arc IdxArc
typedef IdxDigitalSurface::ArcRange IdxArcRange
typedef std::set< IdxSurfelIdxSurfelSet
typedef std::vector< SCellSCellRange
typedef std::vector< CellCellRange
typedef CellRange PointelRange
typedef SCellRange SurfelRange
typedef std::vector< IdxSurfelIdxSurfelRange
typedef std::vector< ScalarScalars
typedef std::vector< RealVectorRealVectors
typedef std::vector< RealPointRealPoints
typedef IdxVertex Idx
typedef std::vector< IdxVertexIdxRange
typedef ::DGtal::Mesh< RealPointMesh
typedef ::DGtal::TriangulatedSurface< RealPointTriangulatedSurface
typedef ::DGtal::PolygonalSurface< RealPointPolygonalSurface
typedef ::DGtal::SurfaceMesh< RealPoint, RealPointSurfaceMesh
typedef std::map< Surfel, IdxSurfelSurfel2Index
typedef std::map< Cell, IdxVertexCell2Index
typedef ::DGtal::Color Color
typedef std::vector< ColorColors
typedef GradientColorMap< ScalarColorMap
typedef TickedColorMap< Scalar, ColorMapZeroTickedColorMap

Public Member Functions

Standard services
 ShortcutsGeometry ()=delete
 ~ShortcutsGeometry ()=delete
 ShortcutsGeometry (const ShortcutsGeometry &other)=delete
 ShortcutsGeometry (ShortcutsGeometry &&other)=delete
ShortcutsGeometryoperator= (const ShortcutsGeometry &other)=delete
ShortcutsGeometryoperator= (ShortcutsGeometry &&other)=delete
Public Member Functions inherited from DGtal::Shortcuts< TKSpace >
 Shortcuts ()=delete
 ~Shortcuts ()=delete
 Shortcuts (const Shortcuts &other)=delete
 Shortcuts (Shortcuts &&other)=delete
Shortcutsoperator= (const Shortcuts &other)=delete
Shortcutsoperator= (Shortcuts &&other)=delete
void selfDisplay (std::ostream &out) const
bool isValid () const

Static Public Member Functions

static Parameters parametersKSpace ()
static KSpace getKSpace (const Point &low, const Point &up, Parameters params=parametersKSpace())
static KSpace getKSpace (CountedPtr< BinaryImage > bimage, Parameters params=parametersKSpace())
static KSpace getKSpace (CountedPtr< GrayScaleImage > gimage, Parameters params=parametersKSpace())
template<typename TDigitalSurfaceContainer>
static KSpace getKSpace (CountedPtr< ::DGtal::DigitalSurface< TDigitalSurfaceContainer > > surface)
template<typename TDigitalSurfaceContainer>
static KSpace getKSpace (CountedPtr< ::DGtal::IndexedDigitalSurface< TDigitalSurfaceContainer > > surface)
static KSpace getKSpace (Parameters params=parametersKSpace()|parametersDigitizedImplicitShape3D())
static Parameters parametersDigitizedImplicitShape3D ()
Exact geometry services
static Parameters defaultParameters ()
static Parameters parametersShapeGeometry ()
static RealPoints getPositions (CountedPtr< ImplicitShape3D > shape, const KSpace &K, const SurfelRange &surfels, const Parameters &params=parametersShapeGeometry())
static RealPoints getPositions (CountedPtr< ImplicitShape3D > shape, const RealPoints &points, const Parameters &params=parametersShapeGeometry())
static RealVectors getNormalVectors (CountedPtr< ImplicitShape3D > shape, const KSpace &K, const SurfelRange &surfels, const Parameters &params=parametersShapeGeometry())
static Scalars getMeanCurvatures (CountedPtr< ImplicitShape3D > shape, const KSpace &K, const SurfelRange &surfels, const Parameters &params=parametersShapeGeometry())
static Scalars getCNCMeanCurvatures (CountedPtr< typename Base::SurfaceMesh > mesh, const typename Base::SurfaceMesh::Faces faces, const Parameters &params=parametersShapeGeometry())
static Scalars getCNCMeanCurvatures (CountedPtr< typename Base::SurfaceMesh > mesh, const Parameters &params=parametersShapeGeometry())
template<typename T>
static Scalars getCNCMeanCurvatures (T &digitalObject, const Parameters &params=parametersShapeGeometry())
static Scalars getGaussianCurvatures (CountedPtr< ImplicitShape3D > shape, const KSpace &K, const SurfelRange &surfels, const Parameters &params=parametersShapeGeometry())
static Scalars getCNCGaussianCurvatures (CountedPtr< typename Base::SurfaceMesh > mesh, const typename Base::SurfaceMesh::Faces &faces, const Parameters &params=parametersShapeGeometry())
static Scalars getCNCGaussianCurvatures (CountedPtr< typename Base::SurfaceMesh > mesh, const Parameters &params=parametersShapeGeometry())
template<typename T>
static Scalars getCNCGaussianCurvatures (T &digitalObject, const Parameters &params=parametersShapeGeometry())
static Scalars getFirstPrincipalCurvatures (CountedPtr< ImplicitShape3D > shape, const KSpace &K, const SurfelRange &surfels, const Parameters &params=parametersShapeGeometry())
static Scalars getSecondPrincipalCurvatures (CountedPtr< ImplicitShape3D > shape, const KSpace &K, const SurfelRange &surfels, const Parameters &params=parametersShapeGeometry())
static RealVectors getFirstPrincipalDirections (CountedPtr< ImplicitShape3D > shape, const KSpace &K, const SurfelRange &surfels, const Parameters &params=parametersShapeGeometry())
static RealVectors getSecondPrincipalDirections (CountedPtr< ImplicitShape3D > shape, const KSpace &K, const SurfelRange &surfels, const Parameters &params=parametersShapeGeometry())
static CurvatureTensorQuantities getPrincipalCurvaturesAndDirections (CountedPtr< ImplicitShape3D > shape, const KSpace &K, const SurfelRange &surfels, const Parameters &params=parametersShapeGeometry())
static std::tuple< Scalars, Scalars, RealVectors, RealVectorsgetCNCPrincipalCurvaturesAndDirections (CountedPtr< typename Base::SurfaceMesh > mesh, const typename Base::SurfaceMesh::Faces &faces, const Parameters &params=parametersShapeGeometry())
static std::tuple< Scalars, Scalars, RealVectors, RealVectorsgetCNCPrincipalCurvaturesAndDirections (CountedPtr< typename Base::SurfaceMesh > mesh, const Parameters &params=parametersShapeGeometry())
template<typename T>
static std::tuple< Scalars, Scalars, RealVectors, RealVectorsgetCNCPrincipalCurvaturesAndDirections (T &digitalObject, const Parameters &params=parametersShapeGeometry())
Geometry estimation services
static Parameters parametersGeometryEstimation ()
static RealVectors getTrivialNormalVectors (const KSpace &K, const SurfelRange &surfels)
template<typename TAnyDigitalSurface>
static RealVectors getCTrivialNormalVectors (CountedPtr< TAnyDigitalSurface > surface, const SurfelRange &surfels, const Parameters &params=parametersGeometryEstimation())
template<typename TAnyDigitalSurface>
static RealVectors getVCMNormalVectors (CountedPtr< TAnyDigitalSurface > surface, const SurfelRange &surfels, const Parameters &params=parametersGeometryEstimation())
static RealVectors getIINormalVectors (CountedPtr< BinaryImage > bimage, const SurfelRange &surfels, const Parameters &params=parametersGeometryEstimation()|parametersKSpace())
static RealVectors getIINormalVectors (CountedPtr< DigitizedImplicitShape3D > dshape, const SurfelRange &surfels, const Parameters &params=parametersGeometryEstimation()|parametersKSpace()|parametersDigitizedImplicitShape3D())
template<typename TPointPredicate>
static RealVectors getIINormalVectors (const TPointPredicate &shape, const KSpace &K, const SurfelRange &surfels, const Parameters &params=parametersGeometryEstimation()|parametersKSpace())
static Scalars getIIMeanCurvatures (CountedPtr< BinaryImage > bimage, const SurfelRange &surfels, const Parameters &params=parametersGeometryEstimation()|parametersKSpace())
static Scalars getIIMeanCurvatures (CountedPtr< DigitizedImplicitShape3D > dshape, const SurfelRange &surfels, const Parameters &params=parametersGeometryEstimation()|parametersKSpace()|parametersDigitizedImplicitShape3D())
template<typename TPointPredicate>
static Scalars getIIMeanCurvatures (const TPointPredicate &shape, const KSpace &K, const SurfelRange &surfels, const Parameters &params=parametersGeometryEstimation()|parametersKSpace())
static Scalars getIIGaussianCurvatures (CountedPtr< BinaryImage > bimage, const SurfelRange &surfels, const Parameters &params=parametersGeometryEstimation()|parametersKSpace())
static Scalars getIIGaussianCurvatures (CountedPtr< DigitizedImplicitShape3D > dshape, const SurfelRange &surfels, const Parameters &params=parametersGeometryEstimation()|parametersKSpace()|parametersDigitizedImplicitShape3D())
template<typename TPointPredicate>
static Scalars getIIGaussianCurvatures (const TPointPredicate &shape, const KSpace &K, const SurfelRange &surfels, const Parameters &params=parametersGeometryEstimation()|parametersKSpace())
static CurvatureTensorQuantities getIIPrincipalCurvaturesAndDirections (CountedPtr< BinaryImage > bimage, const SurfelRange &surfels, const Parameters &params=parametersGeometryEstimation()|parametersKSpace())
static CurvatureTensorQuantities getIIPrincipalCurvaturesAndDirections (CountedPtr< DigitizedImplicitShape3D > dshape, const SurfelRange &surfels, const Parameters &params=parametersGeometryEstimation()|parametersKSpace()|parametersDigitizedImplicitShape3D())
template<typename TPointPredicate>
static CurvatureTensorQuantities getIIPrincipalCurvaturesAndDirections (const TPointPredicate &shape, const KSpace &K, const SurfelRange &surfels, const Parameters &params=parametersGeometryEstimation()|parametersKSpace())
AT approximation services
static Parameters parametersATApproximation ()
template<typename TAnyDigitalSurface, typename VectorFieldInput>
static VectorFieldInput getATVectorFieldApproximation (CountedPtr< TAnyDigitalSurface > surface, const SurfelRange &surfels, const VectorFieldInput &input, const Parameters &params=parametersATApproximation()|parametersGeometryEstimation())
template<typename TAnyDigitalSurface, typename VectorFieldInput, typename CellRangeConstIterator>
static VectorFieldInput getATVectorFieldApproximation (Scalars &features, CellRangeConstIterator itB, CellRangeConstIterator itE, CountedPtr< TAnyDigitalSurface > surface, const SurfelRange &surfels, const VectorFieldInput &input, const Parameters &params=parametersATApproximation()|parametersGeometryEstimation())
template<typename TAnyDigitalSurface>
static Scalars getATScalarFieldApproximation (CountedPtr< TAnyDigitalSurface > surface, const SurfelRange &surfels, const Scalars &input, const Parameters &params=parametersATApproximation()|parametersGeometryEstimation())
template<typename TAnyDigitalSurface, typename CellRangeConstIterator>
static Scalars getATScalarFieldApproximation (Scalars &features, CellRangeConstIterator itB, CellRangeConstIterator itE, CountedPtr< TAnyDigitalSurface > surface, const SurfelRange &surfels, const Scalars &input, const Parameters &params=parametersATApproximation()|parametersGeometryEstimation())
Error measure services
static void orientVectors (RealVectors &v, const RealVectors &ref_v)
static ScalarStatistic getStatistic (const Scalars &v)
static Scalars getVectorsAngleDeviation (const RealVectors &v1, const RealVectors &v2)
static Scalars getScalarsAbsoluteDifference (const Scalars &v1, const Scalars &v2)
static Scalar getScalarsNormL2 (const Scalars &v1, const Scalars &v2)
static Scalar getScalarsNormL1 (const Scalars &v1, const Scalars &v2)
static Scalar getScalarsNormLoo (const Scalars &v1, const Scalars &v2)
Static Public Member Functions inherited from DGtal::Shortcuts< TKSpace >
static Parameters defaultParameters ()
static std::map< std::string, std::string > getPolynomialList ()
static Parameters parametersImplicitShape3D ()
static CountedPtr< ImplicitShape3DmakeImplicitShape3D (const Parameters &params=parametersImplicitShape3D())
static Parameters parametersKSpace ()
static KSpace getKSpace (const Point &low, const Point &up, Parameters params=parametersKSpace())
static KSpace getKSpace (CountedPtr< BinaryImage > bimage, Parameters params=parametersKSpace())
static KSpace getKSpace (CountedPtr< GrayScaleImage > gimage, Parameters params=parametersKSpace())
template<typename TDigitalSurfaceContainer>
static KSpace getKSpace (CountedPtr< ::DGtal::DigitalSurface< TDigitalSurfaceContainer > > surface)
template<typename TDigitalSurfaceContainer>
static KSpace getKSpace (CountedPtr< ::DGtal::IndexedDigitalSurface< TDigitalSurfaceContainer > > surface)
template<typename TDigitalSurfaceContainer>
static const KSpacerefKSpace (CountedPtr< ::DGtal::DigitalSurface< TDigitalSurfaceContainer > > surface)
template<typename TDigitalSurfaceContainer>
static const KSpacerefKSpace (CountedPtr< ::DGtal::IndexedDigitalSurface< TDigitalSurfaceContainer > > surface)
static CanonicCellEmbedder< KSpacegetCellEmbedder (const KSpace &K)
static CanonicSCellEmbedder< KSpacegetSCellEmbedder (const KSpace &K)
static Parameters parametersDigitizedImplicitShape3D ()
static KSpace getKSpace (Parameters params=parametersKSpace()|parametersDigitizedImplicitShape3D())
static CountedPtr< DigitizedImplicitShape3DmakeDigitizedImplicitShape3D (CountedPtr< ImplicitShape3D > shape, Parameters params=parametersDigitizedImplicitShape3D())
static Parameters parametersBinaryImage ()
static CountedPtr< BinaryImagemakeBinaryImage (Domain shapeDomain)
static CountedPtr< BinaryImagemakeBinaryImage (CountedPtr< DigitizedImplicitShape3D > shape_digitization, Parameters params=parametersBinaryImage())
static CountedPtr< BinaryImagemakeBinaryImage (CountedPtr< DigitizedImplicitShape3D > shape_digitization, Domain shapeDomain, Parameters params=parametersBinaryImage())
static CountedPtr< BinaryImagemakeBinaryImage (CountedPtr< BinaryImage > bimage, Parameters params=parametersBinaryImage())
static CountedPtr< BinaryImagemakeBinaryImage (std::string input, Parameters params=parametersBinaryImage())
static CountedPtr< BinaryImagemakeBinaryImage (CountedPtr< GrayScaleImage > gray_scale_image, Parameters params=parametersBinaryImage())
static bool saveBinaryImage (CountedPtr< BinaryImage > bimage, std::string output)
static Parameters parametersGrayScaleImage ()
static CountedPtr< GrayScaleImagemakeGrayScaleImage (Domain aDomain)
static CountedPtr< GrayScaleImagemakeGrayScaleImage (std::string input)
static CountedPtr< GrayScaleImagemakeGrayScaleImage (CountedPtr< BinaryImage > binary_image, std::function< GrayScale(bool) > const &bool2grayscale=[](bool v) { return v ?(unsigned char) 255 :(unsigned char) 0;})
static bool saveGrayScaleImage (CountedPtr< GrayScaleImage > gray_scale_image, std::string output)
static CountedPtr< GrayScaleImagemakeGrayScaleImage (CountedPtr< FloatImage > fimage, Parameters params=parametersGrayScaleImage())
static CountedPtr< GrayScaleImagemakeGrayScaleImage (CountedPtr< DoubleImage > fimage, Parameters params=parametersGrayScaleImage())
static CountedPtr< FloatImagemakeFloatImage (Domain aDomain)
static CountedPtr< FloatImagemakeFloatImage (std::string input)
static CountedPtr< FloatImagemakeFloatImage (CountedPtr< ImplicitShape3D > shape, Parameters params=parametersDigitizedImplicitShape3D())
static CountedPtr< DoubleImagemakeDoubleImage (Domain aDomain)
static CountedPtr< DoubleImagemakeDoubleImage (std::string input)
static CountedPtr< DoubleImagemakeDoubleImage (CountedPtr< ImplicitShape3D > shape, Parameters params=parametersDigitizedImplicitShape3D())
static Parameters parametersDigitalSurface ()
template<typename TDigitalSurfaceContainer>
static CanonicCellEmbedder< KSpacegetCellEmbedder (CountedPtr< ::DGtal::DigitalSurface< TDigitalSurfaceContainer > > surface)
template<typename TDigitalSurfaceContainer>
static CanonicSCellEmbedder< KSpacegetSCellEmbedder (CountedPtr< ::DGtal::DigitalSurface< TDigitalSurfaceContainer > > surface)
template<typename TDigitalSurfaceContainer>
static CanonicCellEmbedder< KSpacegetCellEmbedder (CountedPtr< ::DGtal::IndexedDigitalSurface< TDigitalSurfaceContainer > > surface)
template<typename TDigitalSurfaceContainer>
static CanonicSCellEmbedder< KSpacegetSCellEmbedder (CountedPtr< ::DGtal::IndexedDigitalSurface< TDigitalSurfaceContainer > > surface)
static CountedPtr< LightDigitalSurfacemakeLightDigitalSurface (CountedPtr< BinaryImage > bimage, const KSpace &K, const Parameters &params=parametersDigitalSurface())
static std::vector< CountedPtr< LightDigitalSurface > > makeLightDigitalSurfaces (CountedPtr< BinaryImage > bimage, const KSpace &K, const Parameters &params=parametersDigitalSurface())
static std::vector< CountedPtr< LightDigitalSurface > > makeLightDigitalSurfaces (SurfelRange &surfel_reps, CountedPtr< BinaryImage > bimage, const KSpace &K, const Parameters &params=parametersDigitalSurface())
template<typename TPointPredicate>
static CountedPtr< DigitalSurfacemakeDigitalSurface (CountedPtr< TPointPredicate > bimage, const KSpace &K, const Parameters &params=parametersDigitalSurface())
static CountedPtr< DigitalSurfacemakeDigitalSurface (CountedPtr< IdxDigitalSurface > idx_surface, const Parameters &params=parametersDigitalSurface())
static CountedPtr< IdxDigitalSurfacemakeIdxDigitalSurface (CountedPtr< BinaryImage > bimage, const KSpace &K, const Parameters &params=parametersDigitalSurface())
template<typename TSurfelRange>
static CountedPtr< IdxDigitalSurfacemakeIdxDigitalSurface (const TSurfelRange &surfels, ConstAlias< KSpace > K, const Parameters &params=parametersDigitalSurface())
template<typename TDigitalSurfaceContainer>
static CountedPtr< IdxDigitalSurfacemakeIdxDigitalSurface (CountedPtr< ::DGtal::DigitalSurface< TDigitalSurfaceContainer > > surface, const Parameters &params=parametersDigitalSurface())
static CountedPtr< IdxDigitalSurfacemakeIdxDigitalSurface (const std::vector< CountedPtr< LightDigitalSurface > > &surfaces, const Parameters &params=parametersDigitalSurface())
template<typename TDigitalSurfaceContainer>
static CellRange getCellRange (Cell2Index &c2i, CountedPtr< ::DGtal::DigitalSurface< TDigitalSurfaceContainer > > surface, const Dimension k)
template<typename TDigitalSurfaceContainer>
static PointelRange getCellRange (CountedPtr< ::DGtal::DigitalSurface< TDigitalSurfaceContainer > > surface, const Dimension k)
template<typename TDigitalSurfaceContainer>
static PointelRange getPointelRange (Cell2Index &c2i, CountedPtr< ::DGtal::DigitalSurface< TDigitalSurfaceContainer > > surface)
template<typename TDigitalSurfaceContainer>
static PointelRange getPointelRange (CountedPtr< ::DGtal::DigitalSurface< TDigitalSurfaceContainer > > surface)
static PointelRange getPointelRange (const KSpace &K, const SCell &surfel)
template<typename TDigitalSurfaceContainer>
static SurfelRange getSurfelRange (CountedPtr< ::DGtal::DigitalSurface< TDigitalSurfaceContainer > > surface, const Parameters &params=parametersDigitalSurface())
template<typename TDigitalSurfaceContainer>
static SurfelRange getSurfelRange (CountedPtr< ::DGtal::DigitalSurface< TDigitalSurfaceContainer > > surface, const Surfel &start_surfel, const Parameters &params=parametersDigitalSurface())
static IdxSurfelRange getIdxSurfelRange (CountedPtr< IdxDigitalSurface > surface, const Parameters &params=parametersDigitalSurface())
static IdxSurfelRange getIdxSurfelRange (CountedPtr< IdxDigitalSurface > surface, const IdxSurfel &start_surfel, const Parameters &params=parametersDigitalSurface())
template<typename TDigitalSurfaceContainer, typename TCellEmbedder>
static bool saveOFF (CountedPtr< ::DGtal::DigitalSurface< TDigitalSurfaceContainer > > digsurf, const TCellEmbedder &embedder, std::string off_file, const Color &face_color=DGtal::Color::None)
template<typename TDigitalSurfaceContainer, typename TCellEmbedder>
static bool saveOBJ (CountedPtr< ::DGtal::DigitalSurface< TDigitalSurfaceContainer > > digsurf, const TCellEmbedder &embedder, const RealVectors &normals, const Colors &diffuse_colors, std::string objfile, const Color &ambient_color=Color(32, 32, 32), const Color &diffuse_color=Color(200, 200, 255), const Color &specular_color=Color::White)
template<typename TDigitalSurfaceContainer>
static bool saveOBJ (CountedPtr< ::DGtal::DigitalSurface< TDigitalSurfaceContainer > > digsurf, const RealVectors &normals, const Colors &diffuse_colors, std::string objfile, const Color &ambient_color=Color(32, 32, 32), const Color &diffuse_color=Color(200, 200, 255), const Color &specular_color=Color::White)
template<typename TDigitalSurfaceContainer>
static bool saveOFF (CountedPtr< ::DGtal::DigitalSurface< TDigitalSurfaceContainer > > digsurf, std::string off_file, const Color &face_color=Color(32, 32, 32))
template<typename TDigitalSurfaceContainer>
static bool saveOBJ (CountedPtr< ::DGtal::DigitalSurface< TDigitalSurfaceContainer > > digsurf, std::string objfile, const Color &ambient_color=Color(32, 32, 32), const Color &diffuse_color=Color(200, 200, 255), const Color &specular_color=Color::White)
static bool saveVectorFieldOBJ (const RealPoints &positions, const RealVectors &vf, double thickness, const Colors &diffuse_colors, std::string objfile, const Color &ambient_color=Color(32, 32, 32), const Color &diffuse_color=Color(200, 200, 255), const Color &specular_color=Color::White)
static Parameters parametersMesh ()
static CountedPtr< TriangulatedSurfacemakeTriangulatedSurface (CountedPtr< Mesh > aMesh)
static CountedPtr< MeshmakeMesh (CountedPtr< TriangulatedSurface > triSurf, const Color &aColor=Color::White)
static CountedPtr< MeshmakeMesh (CountedPtr< PolygonalSurface > polySurf, const Color &aColor=Color::White)
template<typename TContainer>
static CountedPtr< TriangulatedSurfacemakeTriangulatedSurface (Surfel2Index &s2i, CountedPtr< ::DGtal::DigitalSurface< TContainer > > aSurface)
template<typename TContainer>
static CountedPtr< TriangulatedSurfacemakeTriangulatedSurface (CountedPtr< ::DGtal::DigitalSurface< TContainer > > aSurface)
static CountedPtr< TriangulatedSurfacemakeTriangulatedSurface (CountedPtr< PolygonalSurface > polySurf, const Parameters &params=parametersMesh())
static CountedPtr< PolygonalSurfacemakePolygonalSurface (CountedPtr< Mesh > aMesh)
static CountedPtr< PolygonalSurfacemakePolygonalSurface (CountedPtr< GrayScaleImage > gray_scale_image, const Parameters &params=parametersKSpace()|parametersBinaryImage()|parametersDigitalSurface())
static CountedPtr< TriangulatedSurfacemakeTriangulatedSurface (CountedPtr< GrayScaleImage > gray_scale_image, const Parameters &params=parametersKSpace()|parametersBinaryImage()|parametersDigitalSurface())
template<typename TContainer>
static CountedPtr< PolygonalSurfacemakeDualPolygonalSurface (Surfel2Index &s2i, CountedPtr< ::DGtal::DigitalSurface< TContainer > > aSurface)
template<typename TContainer>
static CountedPtr< PolygonalSurfacemakeDualPolygonalSurface (CountedPtr< ::DGtal::DigitalSurface< TContainer > > aSurface)
template<typename TContainer>
static CountedPtr< PolygonalSurfacemakeDualPolygonalSurface (CountedPtr< ::DGtal::IndexedDigitalSurface< TContainer > > aSurface)
template<typename TContainer>
static CountedPtr< PolygonalSurfacemakePrimalPolygonalSurface (Cell2Index &c2i, CountedPtr< ::DGtal::DigitalSurface< TContainer > > aSurface)
template<typename TContainer>
static CountedPtr< PolygonalSurfacemakePrimalPolygonalSurface (CountedPtr< ::DGtal::DigitalSurface< TContainer > > aSurface)
template<typename TContainer>
static CountedPtr< PolygonalSurfacemakePrimalPolygonalSurface (CountedPtr< ::DGtal::IndexedDigitalSurface< TContainer > > aSurface)
template<typename TContainer>
static CountedPtr< SurfaceMeshmakePrimalSurfaceMesh (Cell2Index &c2i, CountedPtr< ::DGtal::DigitalSurface< TContainer > > aSurface)
template<typename TContainer>
static CountedPtr< SurfaceMeshmakePrimalSurfaceMesh (CountedPtr< ::DGtal::DigitalSurface< TContainer > > aSurface)
template<typename TContainer>
static CountedPtr< SurfaceMeshmakePrimalSurfaceMesh (CountedPtr< ::DGtal::IndexedDigitalSurface< TContainer > > aSurface)
static CountedPtr< SurfaceMeshmakeSurfaceMesh (const std::string &path)
template<typename TPoint, typename TVector>
static bool saveOBJ (CountedPtr< ::DGtal::SurfaceMesh< TPoint, TVector > > surf, const std::string &objfile)
template<typename TPoint>
static bool saveOBJ (CountedPtr< ::DGtal::PolygonalSurface< TPoint > > polysurf, const std::string &objfile)
template<typename TPoint>
static bool saveOFF (CountedPtr< ::DGtal::PolygonalSurface< TPoint > > polysurf, std::string off_file, const Color &face_color=DGtal::Color::None)
template<typename TPoint>
static bool saveOBJ (CountedPtr< ::DGtal::TriangulatedSurface< TPoint > > trisurf, const std::string &objfile)
template<typename TPoint>
static bool saveOBJ (CountedPtr< ::DGtal::PolygonalSurface< TPoint > > polysurf, const RealVectors &normals, const Colors &diffuse_colors, std::string objfile, const Color &ambient_color=Color(32, 32, 32), const Color &diffuse_color=Color(200, 200, 255), const Color &specular_color=Color::White)
template<typename TPoint>
static bool saveOBJ (CountedPtr< ::DGtal::TriangulatedSurface< TPoint > > trisurf, const RealVectors &normals, const Colors &diffuse_colors, std::string objfile, const Color &ambient_color=Color(32, 32, 32), const Color &diffuse_color=Color(200, 200, 255), const Color &specular_color=Color::White)
template<typename TPoint, typename TVector>
static bool saveOBJ (CountedPtr< ::DGtal::SurfaceMesh< TPoint, TVector > > surf, const RealVectors &normals, const Colors &diffuse_colors, std::string objfile, const Color &ambient_color=Color(32, 32, 32), const Color &diffuse_color=Color(200, 200, 255), const Color &specular_color=Color::White)
template<typename TPoint>
static bool saveOFF (CountedPtr< ::DGtal::TriangulatedSurface< TPoint > > trisurf, std::string off_file, const Color &face_color=DGtal::Color::None)
static Parameters parametersUtilities ()
template<typename TValue>
static IdxRange getRangeMatch (const std::vector< TValue > &s1, const std::vector< TValue > &s2, bool perfect=false)
template<typename TValue>
static std::vector< TValue > getMatchedRange (const std::vector< TValue > &range, const IdxRange &match)
static ColorMap getColorMap (Scalar min, Scalar max, const Parameters &params=parametersUtilities())
static ZeroTickedColorMap getZeroTickedColorMap (Scalar min, Scalar max, const Parameters &params=parametersUtilities())
template<typename TCellEmbedder = CanonicCellEmbedder< KSpace >>
static bool outputSurfelsAsObj (std::ostream &output, const SurfelRange &surfels, const TCellEmbedder &embedder)
template<typename TAnyDigitalSurface>
static bool outputPrimalDigitalSurfaceAsObj (std::ostream &output, CountedPtr< TAnyDigitalSurface > surface)
template<typename TAnyDigitalSurface, typename TCellEmbedder = CanonicCellEmbedder< KSpace >>
static bool outputPrimalDigitalSurfaceAsObj (std::ostream &output, CountedPtr< TAnyDigitalSurface > surface, const TCellEmbedder &embedder)
static bool outputPrimalIdxDigitalSurfaceAsObj (std::ostream &output, CountedPtr< IdxDigitalSurface > surface)
template<typename TCellEmbedder = CanonicCellEmbedder< KSpace >>
static bool outputPrimalIdxDigitalSurfaceAsObj (std::ostream &output, CountedPtr< IdxDigitalSurface > surface, const TCellEmbedder &embedder)
template<typename TDigitalSurfaceContainer>
static bool outputDualDigitalSurfaceAsObj (std::ostream &output, CountedPtr< ::DGtal::DigitalSurface< TDigitalSurfaceContainer > > surface, const Parameters &params=parametersMesh())
template<typename TDigitalSurfaceContainer, typename TCellEmbedder = CanonicCellEmbedder< KSpace >>
static bool outputDualDigitalSurfaceAsObj (std::ostream &output, CountedPtr< ::DGtal::DigitalSurface< TDigitalSurfaceContainer > > surface, const TCellEmbedder &embedder, const Parameters &params=parametersMesh())
template<typename TSCellMap, typename TValueWriter>
static bool outputSCellMapAsCSV (std::ostream &output, const KSpace &K, const TSCellMap &anyMap, const TValueWriter &writer)
template<typename TCellMap, typename TValueWriter>
static bool outputCellMapAsCSV (std::ostream &output, const KSpace &K, const TCellMap &anyMap, const TValueWriter &writer)
static CellRange getPrimalCells (const KSpace &K, const SCell &s, const Dimension k)
static CellRange getPrimalVertices (const KSpace &K, const SCell &s)
static CellRange getPrimalVertices (const KSpace &K, const Surfel &s, bool ccw)

Private Member Functions

 BOOST_CONCEPT_ASSERT ((concepts::CCellularGridSpaceND< TKSpace >))

Detailed Description

template<typename TKSpace>
class DGtal::ShortcutsGeometry< TKSpace >

Aim: This class is used to simplify shape and surface creation. With it, you can create new shapes and surface in a few lines. The drawback is that you use specific types or objects, which could lead to faster code or more compact data structures.

Description of template class 'ShortcutsGeometry'

Template Parameters
TKSpaceany cellular grid space, a model of concepts::CCellularGridSpaceND like KhalimskySpaceND.

Definition at line 75 of file ShortcutsGeometry.h.

Member Typedef Documentation

â—† Arc

template<typename TKSpace>
typedef LightDigitalSurface::Arc DGtal::ShortcutsGeometry< TKSpace >::Arc

Definition at line 143 of file ShortcutsGeometry.h.

â—† ArcRange

template<typename TKSpace>
typedef LightDigitalSurface::ArcRange DGtal::ShortcutsGeometry< TKSpace >::ArcRange

Definition at line 145 of file ShortcutsGeometry.h.

â—† Base

template<typename TKSpace>
typedef Shortcuts< TKSpace > DGtal::ShortcutsGeometry< TKSpace >::Base

Definition at line 79 of file ShortcutsGeometry.h.

â—† BinaryImage

template<typename TKSpace>
typedef ImageContainerBySTLVector<Domain, bool> DGtal::ShortcutsGeometry< TKSpace >::BinaryImage

defines a black and white image with (hyper-)rectangular domain.

Definition at line 119 of file ShortcutsGeometry.h.

â—† Cell

template<typename TKSpace>
typedef LightDigitalSurface::Cell DGtal::ShortcutsGeometry< TKSpace >::Cell

Definition at line 140 of file ShortcutsGeometry.h.

â—† Cell2Index

template<typename TKSpace>
typedef std::map<Cell, IdxVertex> DGtal::ShortcutsGeometry< TKSpace >::Cell2Index

Definition at line 198 of file ShortcutsGeometry.h.

â—† CellRange

template<typename TKSpace>
typedef std::vector< Cell > DGtal::ShortcutsGeometry< TKSpace >::CellRange

Definition at line 152 of file ShortcutsGeometry.h.

â—† CNCComputer

template<typename TKSpace>
typedef CorrectedNormalCurrentComputer<RealPoint, RealVector> DGtal::ShortcutsGeometry< TKSpace >::CNCComputer

Definition at line 173 of file ShortcutsGeometry.h.

â—† CurvatureTensorQuantities

template<typename TKSpace>
typedef std::vector< CurvatureTensorQuantity > DGtal::ShortcutsGeometry< TKSpace >::CurvatureTensorQuantities

Definition at line 171 of file ShortcutsGeometry.h.

â—† CurvatureTensorQuantity

template<typename TKSpace>
typedef functors::IIPrincipalCurvaturesAndDirectionsFunctor<Space>::Quantity DGtal::ShortcutsGeometry< TKSpace >::CurvatureTensorQuantity

Definition at line 170 of file ShortcutsGeometry.h.

â—† DigitalSurface

template<typename TKSpace>
typedef ::DGtal::DigitalSurface< ExplicitSurfaceContainer > DGtal::ShortcutsGeometry< TKSpace >::DigitalSurface

defines an arbitrary digital surface over a binary image.

Definition at line 136 of file ShortcutsGeometry.h.

â—† DigitizedImplicitShape3D

template<typename TKSpace>
typedef GaussDigitizer< Space, ImplicitShape3D > DGtal::ShortcutsGeometry< TKSpace >::DigitizedImplicitShape3D

defines the digitization of an implicit shape.

Definition at line 117 of file ShortcutsGeometry.h.

â—† Domain

template<typename TKSpace>
typedef HyperRectDomain<Space> DGtal::ShortcutsGeometry< TKSpace >::Domain

An (hyper-)rectangular domain.

Definition at line 105 of file ShortcutsGeometry.h.

â—† DoubleImage

template<typename TKSpace>
typedef ImageContainerBySTLVector<Domain, double> DGtal::ShortcutsGeometry< TKSpace >::DoubleImage

defines a double image with (hyper-)rectangular domain.

Definition at line 125 of file ShortcutsGeometry.h.

â—† ExplicitSurfaceContainer

template<typename TKSpace>
typedef SetOfSurfels< KSpace, SurfelSet > DGtal::ShortcutsGeometry< TKSpace >::ExplicitSurfaceContainer

defines a heavy container that represents any digital surface.

Definition at line 134 of file ShortcutsGeometry.h.

â—† Face

template<typename TKSpace>
typedef LightDigitalSurface::Face DGtal::ShortcutsGeometry< TKSpace >::Face

Definition at line 144 of file ShortcutsGeometry.h.

â—† FirstPrincipalCurvatureFunctor

template<typename TKSpace>
typedef sgf::ShapeFirstPrincipalCurvatureFunctor<ImplicitShape3D> DGtal::ShortcutsGeometry< TKSpace >::FirstPrincipalCurvatureFunctor

Definition at line 164 of file ShortcutsGeometry.h.

â—† FirstPrincipalDirectionFunctor

template<typename TKSpace>
typedef sgf::ShapeFirstPrincipalDirectionFunctor<ImplicitShape3D> DGtal::ShortcutsGeometry< TKSpace >::FirstPrincipalDirectionFunctor

Definition at line 166 of file ShortcutsGeometry.h.

â—† FloatImage

template<typename TKSpace>
typedef ImageContainerBySTLVector<Domain, float> DGtal::ShortcutsGeometry< TKSpace >::FloatImage

defines a float image with (hyper-)rectangular domain.

Definition at line 123 of file ShortcutsGeometry.h.

â—† GaussianCurvatureFunctor

template<typename TKSpace>
typedef sgf::ShapeGaussianCurvatureFunctor<ImplicitShape3D> DGtal::ShortcutsGeometry< TKSpace >::GaussianCurvatureFunctor

Definition at line 163 of file ShortcutsGeometry.h.

â—† GrayScale

template<typename TKSpace>
typedef unsigned char DGtal::ShortcutsGeometry< TKSpace >::GrayScale

The type for 8-bits gray-scale elements.

Definition at line 107 of file ShortcutsGeometry.h.

â—† GrayScaleImage

template<typename TKSpace>
typedef ImageContainerBySTLVector<Domain, GrayScale> DGtal::ShortcutsGeometry< TKSpace >::GrayScaleImage

defines a grey-level image with (hyper-)rectangular domain.

Definition at line 121 of file ShortcutsGeometry.h.

â—† IdxArc

template<typename TKSpace>
typedef IdxDigitalSurface::Arc DGtal::ShortcutsGeometry< TKSpace >::IdxArc

Definition at line 148 of file ShortcutsGeometry.h.

â—† IdxArcRange

template<typename TKSpace>
typedef IdxDigitalSurface::ArcRange DGtal::ShortcutsGeometry< TKSpace >::IdxArcRange

Definition at line 149 of file ShortcutsGeometry.h.

â—† IdxDigitalSurface

template<typename TKSpace>
typedef IndexedDigitalSurface< ExplicitSurfaceContainer > DGtal::ShortcutsGeometry< TKSpace >::IdxDigitalSurface

defines a connected or not indexed digital surface.

Definition at line 138 of file ShortcutsGeometry.h.

â—† IdxSurfel

template<typename TKSpace>
typedef IdxDigitalSurface::Vertex DGtal::ShortcutsGeometry< TKSpace >::IdxSurfel

Definition at line 146 of file ShortcutsGeometry.h.

â—† IdxSurfelRange

template<typename TKSpace>
typedef std::vector< IdxSurfel > DGtal::ShortcutsGeometry< TKSpace >::IdxSurfelRange

Definition at line 153 of file ShortcutsGeometry.h.

â—† IdxSurfelSet

template<typename TKSpace>
typedef std::set< IdxSurfel > DGtal::ShortcutsGeometry< TKSpace >::IdxSurfelSet

Definition at line 150 of file ShortcutsGeometry.h.

â—† IdxVertex

template<typename TKSpace>
typedef IdxDigitalSurface::Vertex DGtal::ShortcutsGeometry< TKSpace >::IdxVertex

Definition at line 147 of file ShortcutsGeometry.h.

â—† ImplicitShape3D

template<typename TKSpace>
typedef ImplicitPolynomial3Shape<Space> DGtal::ShortcutsGeometry< TKSpace >::ImplicitShape3D

defines an implicit shape of the space, which is the zero-level set of a ScalarPolynomial.

Definition at line 115 of file ShortcutsGeometry.h.

â—† Integer

template<typename TKSpace>
typedef Space::Integer DGtal::ShortcutsGeometry< TKSpace >::Integer

Integer numbers.

Definition at line 93 of file ShortcutsGeometry.h.

â—† KSpace

template<typename TKSpace>
typedef TKSpace DGtal::ShortcutsGeometry< TKSpace >::KSpace

Digital cellular space.

Definition at line 89 of file ShortcutsGeometry.h.

â—† LightDigitalSurface

template<typename TKSpace>
typedef ::DGtal::DigitalSurface< LightSurfaceContainer > DGtal::ShortcutsGeometry< TKSpace >::LightDigitalSurface

defines a connected digital surface over a binary image.

Definition at line 132 of file ShortcutsGeometry.h.

â—† LightSurfaceContainer

template<typename TKSpace>
typedef LightImplicitDigitalSurface< KSpace, BinaryImage > DGtal::ShortcutsGeometry< TKSpace >::LightSurfaceContainer

defines a light container that represents a connected digital surface over a binary image.

Definition at line 130 of file ShortcutsGeometry.h.

â—† MeanCurvatureFunctor

template<typename TKSpace>
typedef sgf::ShapeMeanCurvatureFunctor<ImplicitShape3D> DGtal::ShortcutsGeometry< TKSpace >::MeanCurvatureFunctor

Definition at line 162 of file ShortcutsGeometry.h.

â—† Mesh

template<typename TKSpace>
typedef ::DGtal::Mesh<RealPoint> DGtal::ShortcutsGeometry< TKSpace >::Mesh

Definition at line 194 of file ShortcutsGeometry.h.

â—† NormalFunctor

template<typename TKSpace>
typedef sgf::ShapeNormalVectorFunctor<ImplicitShape3D> DGtal::ShortcutsGeometry< TKSpace >::NormalFunctor

Definition at line 161 of file ShortcutsGeometry.h.

â—† Point

template<typename TKSpace>
typedef Space::Point DGtal::ShortcutsGeometry< TKSpace >::Point

Point with integer coordinates.

Definition at line 95 of file ShortcutsGeometry.h.

â—† PolygonalSurface

template<typename TKSpace>
typedef ::DGtal::PolygonalSurface<RealPoint> DGtal::ShortcutsGeometry< TKSpace >::PolygonalSurface

Definition at line 196 of file ShortcutsGeometry.h.

â—† PositionFunctor

template<typename TKSpace>
typedef sgf::ShapePositionFunctor<ImplicitShape3D> DGtal::ShortcutsGeometry< TKSpace >::PositionFunctor

Definition at line 160 of file ShortcutsGeometry.h.

â—† PrincipalCurvaturesAndDirectionsFunctor

template<typename TKSpace>
typedef sgf::ShapePrincipalCurvaturesAndDirectionsFunctor<ImplicitShape3D> DGtal::ShortcutsGeometry< TKSpace >::PrincipalCurvaturesAndDirectionsFunctor

Definition at line 168 of file ShortcutsGeometry.h.

â—† RealPoint

template<typename TKSpace>
typedef Space::RealPoint DGtal::ShortcutsGeometry< TKSpace >::RealPoint

Point with floating-point coordinates.

Definition at line 101 of file ShortcutsGeometry.h.

â—† RealPoints

template<typename TKSpace>
typedef std::vector< RealPoint > DGtal::ShortcutsGeometry< TKSpace >::RealPoints

Definition at line 156 of file ShortcutsGeometry.h.

â—† RealVector

template<typename TKSpace>
typedef Space::RealVector DGtal::ShortcutsGeometry< TKSpace >::RealVector

Vector with floating-point coordinates.

Definition at line 99 of file ShortcutsGeometry.h.

â—† RealVectors

template<typename TKSpace>
typedef std::vector< RealVector > DGtal::ShortcutsGeometry< TKSpace >::RealVectors

Definition at line 155 of file ShortcutsGeometry.h.

â—† Scalar

template<typename TKSpace>
typedef RealVector::Component DGtal::ShortcutsGeometry< TKSpace >::Scalar

Floating-point numbers.

Definition at line 103 of file ShortcutsGeometry.h.

â—† ScalarPolynomial

template<typename TKSpace>
typedef MPolynomial< Space::dimension, Scalar > DGtal::ShortcutsGeometry< TKSpace >::ScalarPolynomial

defines a multi-variate polynomial : RealPoint -> Scalar

Definition at line 112 of file ShortcutsGeometry.h.

â—† Scalars

template<typename TKSpace>
typedef std::vector< Scalar > DGtal::ShortcutsGeometry< TKSpace >::Scalars

Definition at line 154 of file ShortcutsGeometry.h.

â—† ScalarStatistic

template<typename TKSpace>
typedef ::DGtal::Statistic<Scalar> DGtal::ShortcutsGeometry< TKSpace >::ScalarStatistic

Definition at line 158 of file ShortcutsGeometry.h.

â—† SCell

template<typename TKSpace>
typedef LightDigitalSurface::SCell DGtal::ShortcutsGeometry< TKSpace >::SCell

Definition at line 141 of file ShortcutsGeometry.h.

â—† SecondPrincipalCurvatureFunctor

template<typename TKSpace>
typedef sgf::ShapeSecondPrincipalCurvatureFunctor<ImplicitShape3D> DGtal::ShortcutsGeometry< TKSpace >::SecondPrincipalCurvatureFunctor

Definition at line 165 of file ShortcutsGeometry.h.

â—† SecondPrincipalDirectionFunctor

template<typename TKSpace>
typedef sgf::ShapeSecondPrincipalDirectionFunctor<ImplicitShape3D> DGtal::ShortcutsGeometry< TKSpace >::SecondPrincipalDirectionFunctor

Definition at line 167 of file ShortcutsGeometry.h.

â—† Self

template<typename TKSpace>
typedef ShortcutsGeometry< TKSpace > DGtal::ShortcutsGeometry< TKSpace >::Self

Definition at line 80 of file ShortcutsGeometry.h.

â—† Space

template<typename TKSpace>
typedef KSpace::Space DGtal::ShortcutsGeometry< TKSpace >::Space

Digital space.

Definition at line 91 of file ShortcutsGeometry.h.

â—† Surfel

template<typename TKSpace>
typedef LightDigitalSurface::Surfel DGtal::ShortcutsGeometry< TKSpace >::Surfel

Definition at line 139 of file ShortcutsGeometry.h.

â—† Surfel2Index

template<typename TKSpace>
typedef std::map<Surfel, IdxSurfel> DGtal::ShortcutsGeometry< TKSpace >::Surfel2Index

Definition at line 197 of file ShortcutsGeometry.h.

â—† SurfelRange

template<typename TKSpace>
typedef std::vector< Surfel > DGtal::ShortcutsGeometry< TKSpace >::SurfelRange

Definition at line 151 of file ShortcutsGeometry.h.

â—† SurfelSet

template<typename TKSpace>
typedef KSpace::SurfelSet DGtal::ShortcutsGeometry< TKSpace >::SurfelSet

defines a set of surfels

Definition at line 127 of file ShortcutsGeometry.h.

â—† TriangulatedSurface

template<typename TKSpace>
typedef ::DGtal::TriangulatedSurface<RealPoint> DGtal::ShortcutsGeometry< TKSpace >::TriangulatedSurface

Definition at line 195 of file ShortcutsGeometry.h.

â—† TrueFirstPrincipalCurvatureEstimator

template<typename TKSpace>
typedef TrueDigitalSurfaceLocalEstimator< KSpace, ImplicitShape3D, FirstPrincipalCurvatureFunctor > DGtal::ShortcutsGeometry< TKSpace >::TrueFirstPrincipalCurvatureEstimator

Definition at line 184 of file ShortcutsGeometry.h.

â—† TrueFirstPrincipalDirectionEstimator

template<typename TKSpace>
typedef TrueDigitalSurfaceLocalEstimator< KSpace, ImplicitShape3D, FirstPrincipalDirectionFunctor > DGtal::ShortcutsGeometry< TKSpace >::TrueFirstPrincipalDirectionEstimator

Definition at line 188 of file ShortcutsGeometry.h.

â—† TrueGaussianCurvatureEstimator

template<typename TKSpace>
typedef TrueDigitalSurfaceLocalEstimator< KSpace, ImplicitShape3D, GaussianCurvatureFunctor > DGtal::ShortcutsGeometry< TKSpace >::TrueGaussianCurvatureEstimator

Definition at line 182 of file ShortcutsGeometry.h.

â—† TrueMeanCurvatureEstimator

template<typename TKSpace>
typedef TrueDigitalSurfaceLocalEstimator< KSpace, ImplicitShape3D, MeanCurvatureFunctor > DGtal::ShortcutsGeometry< TKSpace >::TrueMeanCurvatureEstimator

Definition at line 180 of file ShortcutsGeometry.h.

â—† TrueNormalEstimator

template<typename TKSpace>
typedef TrueDigitalSurfaceLocalEstimator< KSpace, ImplicitShape3D, NormalFunctor > DGtal::ShortcutsGeometry< TKSpace >::TrueNormalEstimator

Definition at line 178 of file ShortcutsGeometry.h.

â—† TruePositionEstimator

template<typename TKSpace>
typedef TrueDigitalSurfaceLocalEstimator< KSpace, ImplicitShape3D, PositionFunctor > DGtal::ShortcutsGeometry< TKSpace >::TruePositionEstimator

Definition at line 176 of file ShortcutsGeometry.h.

â—† TruePrincipalCurvaturesAndDirectionsEstimator

template<typename TKSpace>
typedef TrueDigitalSurfaceLocalEstimator< KSpace, ImplicitShape3D, PrincipalCurvaturesAndDirectionsFunctor > DGtal::ShortcutsGeometry< TKSpace >::TruePrincipalCurvaturesAndDirectionsEstimator

Definition at line 192 of file ShortcutsGeometry.h.

â—† TrueSecondPrincipalCurvatureEstimator

template<typename TKSpace>
typedef TrueDigitalSurfaceLocalEstimator< KSpace, ImplicitShape3D, SecondPrincipalCurvatureFunctor > DGtal::ShortcutsGeometry< TKSpace >::TrueSecondPrincipalCurvatureEstimator

Definition at line 186 of file ShortcutsGeometry.h.

â—† TrueSecondPrincipalDirectionEstimator

template<typename TKSpace>
typedef TrueDigitalSurfaceLocalEstimator< KSpace, ImplicitShape3D, SecondPrincipalDirectionFunctor > DGtal::ShortcutsGeometry< TKSpace >::TrueSecondPrincipalDirectionEstimator

Definition at line 190 of file ShortcutsGeometry.h.

â—† Vector

template<typename TKSpace>
typedef Space::Vector DGtal::ShortcutsGeometry< TKSpace >::Vector

Vector with integer coordinates.

Definition at line 97 of file ShortcutsGeometry.h.

â—† Vertex

template<typename TKSpace>
typedef LightDigitalSurface::Vertex DGtal::ShortcutsGeometry< TKSpace >::Vertex

Definition at line 142 of file ShortcutsGeometry.h.

Constructor & Destructor Documentation

â—† ShortcutsGeometry() [1/3]

template<typename TKSpace>
DGtal::ShortcutsGeometry< TKSpace >::ShortcutsGeometry ( )
delete

Default constructor.

â—† ~ShortcutsGeometry()

template<typename TKSpace>
DGtal::ShortcutsGeometry< TKSpace >::~ShortcutsGeometry ( )
delete

Destructor.

â—† ShortcutsGeometry() [2/3]

template<typename TKSpace>
DGtal::ShortcutsGeometry< TKSpace >::ShortcutsGeometry ( const ShortcutsGeometry< TKSpace > & other)
delete

Copy constructor.

Parameters
otherthe object to clone.

â—† ShortcutsGeometry() [3/3]

template<typename TKSpace>
DGtal::ShortcutsGeometry< TKSpace >::ShortcutsGeometry ( ShortcutsGeometry< TKSpace > && other)
delete

Move constructor.

Parameters
otherthe object to move.

Member Function Documentation

â—† BOOST_CONCEPT_ASSERT()

template<typename TKSpace>
DGtal::ShortcutsGeometry< TKSpace >::BOOST_CONCEPT_ASSERT ( (concepts::CCellularGridSpaceND< TKSpace >) )
private

â—† defaultParameters()

template<typename TKSpace>
Parameters DGtal::ShortcutsGeometry< TKSpace >::defaultParameters ( )
inlinestatic
Returns
the parameters used in ShortcutsGeometry.

Definition at line 209 of file ShortcutsGeometry.h.

210 {
214 }
static Parameters parametersGeometryEstimation()
static Parameters parametersShapeGeometry()
static Parameters parametersATApproximation()

â—† getATScalarFieldApproximation() [1/2]

template<typename TKSpace>
template<typename TAnyDigitalSurface>
Scalars DGtal::ShortcutsGeometry< TKSpace >::getATScalarFieldApproximation ( CountedPtr< TAnyDigitalSurface > surface,
const SurfelRange & surfels,
const Scalars & input,
const Parameters & params = parametersATApproximation() | parametersGeometryEstimation() )
inlinestatic

Given any digital surface, a surfel range surfels, and an input scalar field input, returns a piece-smooth approximation of input using Ambrosio-Tortorelli functional.

See also
Piecewise-smooth approximation using a discrete calculus model of Ambrosio-Tortorelli functional
Template Parameters
TAnyDigitalSurfaceeither kind of DigitalSurface, like ShortcutsGeometry::LightDigitalSurface or ShortcutsGeometry::DigitalSurface.
Parameters
[in]surfacethe digital surface
[in]surfelsthe sequence of surfels at which we compute the normals
[in]paramsthe parameters:
  • at-alpha [ 0.1 ]: parameter alpha in AT (data fit)
  • at-lambda [ 0.025 ]: parameter lambda in AT (1/length of discontinuities)
  • at-epsilon [ 0.5 ]: (last value of) parameter epsilon in AT (width of discontinuities)
  • at-epsilon-start[ 2.0 ]: first value for parameter epsilon in Gamma-convergence optimization (sequence of AT optimization with decreasing epsilon)
  • at-epsilon-ratio[ 2.0 ]: ratio between two consecutive epsilon value in Gamma-convergence optimization (sequence of AT optimization with decreasing epsilon)
  • at-max-iter [ 10 ]: maximum number of alternate minization in AT optimization
  • at-diff-v-max [ 0.0001]: stopping criterion that measures the loo-norm of the evolution of v between two iterations
[in]inputthe input scalar field (a vector of scalar values)
Returns
the piecewise-smooth approximation of input.

Definition at line 1853 of file ShortcutsGeometry.h.

1858 {
1859 (void)surface; //param not used FIXME: JOL
1860
1861 int verbose = params[ "verbose" ].as<int>();
1862 Scalar alpha_at = params[ "at-alpha" ].as<Scalar>();
1863 Scalar lambda_at = params[ "at-lambda" ].as<Scalar>();
1864 Scalar epsilon1 = params[ "at-epsilon-start" ].as<Scalar>();
1865 Scalar epsilon2 = params[ "at-epsilon" ].as<Scalar>();
1866 Scalar epsilonr = params[ "at-epsilon-ratio" ].as<Scalar>();
1867 int max_iter = params[ "at-max-iter" ].as<int>();
1868 Scalar diff_v_max= params[ "at-diff-v-max" ].as<Scalar>();
1870 const auto calculus = CalculusFactory::createFromNSCells<2>( surfels.cbegin(), surfels.cend() );
1872 at_solver.initInputScalarFieldU2( input, surfels.cbegin(), surfels.cend() );
1873 at_solver.setUp( alpha_at, lambda_at );
1874 at_solver.solveGammaConvergence( epsilon1, epsilon2, epsilonr, false, diff_v_max, max_iter );
1875 auto output = input;
1876 at_solver.getOutputScalarFieldU2( output, surfels.cbegin(), surfels.cend() );
1877 return output;
1878 }
Aim: This class is used to simplify shape and surface creation. With it, you can create new shapes an...
RealVector::Component Scalar
Floating-point numbers.

â—† getATScalarFieldApproximation() [2/2]

template<typename TKSpace>
template<typename TAnyDigitalSurface, typename CellRangeConstIterator>
Scalars DGtal::ShortcutsGeometry< TKSpace >::getATScalarFieldApproximation ( Scalars & features,
CellRangeConstIterator itB,
CellRangeConstIterator itE,
CountedPtr< TAnyDigitalSurface > surface,
const SurfelRange & surfels,
const Scalars & input,
const Parameters & params = parametersATApproximation() | parametersGeometryEstimation() )
inlinestatic

Given any digital surface, a surfel range surfels, and an input scalar field input, returns a piece-smooth approximation of input using Ambrosio-Tortorelli functional. Given a range of pointels, linels or 2-cells [itB,itE), it also outputs the feature vector features, corresponding to 0-form v in AT (the average of v for linels/surfels).

See also
Piecewise-smooth approximation using a discrete calculus model of Ambrosio-Tortorelli functional
Template Parameters
TAnyDigitalSurfaceeither kind of DigitalSurface, like ShortcutsGeometry::LightDigitalSurface or ShortcutsGeometry::DigitalSurface.
CellRangeConstIteratorthe type of iterator for traversing a range of cells
Parameters
[out]featuresthe vector of scalar feature values (a scalar field where 1 means continuity and 0 discontinuity in the reconstruction), evaluated in the range[itB,itE).
[in]itBthe start of the range of cells.
[in]itEpast the end of the range of cells.
[in]surfacethe digital surface
[in]surfelsthe sequence of surfels at which we compute the normals
[in]paramsthe parameters:
  • at-alpha [ 0.1 ]: parameter alpha in AT (data fit)
  • at-lambda [ 0.025 ]: parameter lambda in AT (1/length of discontinuities)
  • at-epsilon [ 0.5 ]: (last value of) parameter epsilon in AT (width of discontinuities)
  • at-epsilon-start[ 2.0 ]: first value for parameter epsilon in Gamma-convergence optimization (sequence of AT optimization with decreasing epsilon)
  • at-epsilon-ratio[ 2.0 ]: ratio between two consecutive epsilon value in Gamma-convergence optimization (sequence of AT optimization with decreasing epsilon)
  • at-max-iter [ 10 ]: maximum number of alternate minization in AT optimization
  • at-diff-v-max [ 0.0001]: stopping criterion that measures the loo-norm of the evolution of v between two iterations
  • at-v-policy ["Maximum"]: the policy when outputing feature vector v onto cells: "Average"|"Minimum"|"Maximum"
[in]inputthe input scalar field (a vector of scalar values)
Returns
the piecewise-smooth approximation of input.

Definition at line 1918 of file ShortcutsGeometry.h.

1926 {
1927 (void)surface; //param not used FIXME: JOL
1928
1929 int verbose = params[ "verbose" ].as<int>();
1930 Scalar alpha_at = params[ "at-alpha" ].as<Scalar>();
1931 Scalar lambda_at = params[ "at-lambda" ].as<Scalar>();
1932 Scalar epsilon1 = params[ "at-epsilon-start" ].as<Scalar>();
1933 Scalar epsilon2 = params[ "at-epsilon" ].as<Scalar>();
1934 Scalar epsilonr = params[ "at-epsilon-ratio" ].as<Scalar>();
1935 int max_iter = params[ "at-max-iter" ].as<int>();
1936 Scalar diff_v_max= params[ "at-diff-v-max" ].as<Scalar>();
1937 std::string policy = params[ "at-v-policy" ].as<std::string>();
1939 const auto calculus = CalculusFactory::createFromNSCells<2>( surfels.cbegin(), surfels.cend() );
1941 at_solver.initInputScalarFieldU2( input, surfels.cbegin(), surfels.cend() );
1942 at_solver.setUp( alpha_at, lambda_at );
1943 at_solver.solveGammaConvergence( epsilon1, epsilon2, epsilonr, false, diff_v_max, max_iter );
1944 auto output = input;
1945 at_solver.getOutputScalarFieldU2( output, surfels.cbegin(), surfels.cend() );
1946 auto p = ( policy == "Average" ) ? at_solver.Average
1947 : ( policy == "Minimum" ) ? at_solver.Minimum
1949 at_solver.getOutputScalarFieldV0( features, itB, itE, p );
1950 return output;
1951 }

â—† getATVectorFieldApproximation() [1/2]

template<typename TKSpace>
template<typename TAnyDigitalSurface, typename VectorFieldInput>
VectorFieldInput DGtal::ShortcutsGeometry< TKSpace >::getATVectorFieldApproximation ( CountedPtr< TAnyDigitalSurface > surface,
const SurfelRange & surfels,
const VectorFieldInput & input,
const Parameters & params = parametersATApproximation() | parametersGeometryEstimation() )
inlinestatic

Given any digital surface, a surfel range surfels, and an input vector field input, returns a piece-smooth approximation of input using Ambrosio-Tortorelli functional.

See also
Piecewise-smooth approximation using a discrete calculus model of Ambrosio-Tortorelli functional
Template Parameters
TAnyDigitalSurfaceeither kind of DigitalSurface, like ShortcutsGeometry::LightDigitalSurface or ShortcutsGeometry::DigitalSurface.
VectorFieldInputthe type of vector field for input values (RandomAccess container)
Parameters
[in]surfacethe digital surface
[in]surfelsthe sequence of surfels at which we compute the normals
[in]paramsthe parameters:
  • at-alpha [ 0.1 ]: parameter alpha in AT (data fit)
  • at-lambda [ 0.025 ]: parameter lambda in AT (1/length of discontinuities)
  • at-epsilon [ 0.5 ]: (last value of) parameter epsilon in AT (width of discontinuities)
  • at-epsilon-start[ 2.0 ]: first value for parameter epsilon in Gamma-convergence optimization (sequence of AT optimization with decreasing epsilon)
  • at-epsilon-ratio[ 2.0 ]: ratio between two consecutive epsilon value in Gamma-convergence optimization (sequence of AT optimization with decreasing epsilon)
  • at-max-iter [ 10 ]: maximum number of alternate minization in AT optimization
  • at-diff-v-max [ 0.0001]: stopping criterion that measures the loo-norm of the evolution of v between two iterations
[in]inputthe input vector field (a vector of vector values)
Returns
the piecewise-smooth approximation of input.

Definition at line 1730 of file ShortcutsGeometry.h.

1735 {
1736 (void)surface; //param not used. FIXME: JOL
1737
1738 int verbose = params[ "verbose" ].as<int>();
1739 Scalar alpha_at = params[ "at-alpha" ].as<Scalar>();
1740 Scalar lambda_at = params[ "at-lambda" ].as<Scalar>();
1741 Scalar epsilon1 = params[ "at-epsilon-start" ].as<Scalar>();
1742 Scalar epsilon2 = params[ "at-epsilon" ].as<Scalar>();
1743 Scalar epsilonr = params[ "at-epsilon-ratio" ].as<Scalar>();
1744 int max_iter = params[ "at-max-iter" ].as<int>();
1745 Scalar diff_v_max= params[ "at-diff-v-max" ].as<Scalar>();
1747 const auto calculus = CalculusFactory::createFromNSCells<2>( surfels.cbegin(), surfels.cend() );
1749 at_solver.initInputVectorFieldU2( input, surfels.cbegin(), surfels.cend() );
1750 at_solver.setUp( alpha_at, lambda_at );
1751 at_solver.solveGammaConvergence( epsilon1, epsilon2, epsilonr, false, diff_v_max, max_iter );
1752 auto output = input;
1753 at_solver.getOutputVectorFieldU2( output, surfels.cbegin(), surfels.cend() );
1754 return output;
1755 }

â—† getATVectorFieldApproximation() [2/2]

template<typename TKSpace>
template<typename TAnyDigitalSurface, typename VectorFieldInput, typename CellRangeConstIterator>
VectorFieldInput DGtal::ShortcutsGeometry< TKSpace >::getATVectorFieldApproximation ( Scalars & features,
CellRangeConstIterator itB,
CellRangeConstIterator itE,
CountedPtr< TAnyDigitalSurface > surface,
const SurfelRange & surfels,
const VectorFieldInput & input,
const Parameters & params = parametersATApproximation() | parametersGeometryEstimation() )
inlinestatic

Given any digital surface, a surfel range surfels, and an input vector field input, returns a piece-smooth approximation of input using Ambrosio-Tortorelli functional. Given a range of pointels, linels or 2-cells [itB,itE), it also outputs the feature vector features, corresponding to 0-form v in AT (the average of v for linels/surfels).

See also
Piecewise-smooth approximation using a discrete calculus model of Ambrosio-Tortorelli functional
Template Parameters
TAnyDigitalSurfaceeither kind of DigitalSurface, like ShortcutsGeometry::LightDigitalSurface or ShortcutsGeometry::DigitalSurface.
VectorFieldInputthe type of vector field for input values (RandomAccess container)
CellRangeConstIteratorthe type of iterator for traversing a range of cells
Parameters
[out]featuresthe vector of scalar feature values (a scalar field where 1 means continuity and 0 discontinuity in the reconstruction), evaluated in the range[itB,itE).
[in]itBthe start of the range of cells.
[in]itEpast the end of the range of cells.
[in]surfacethe digital surface
[in]surfelsthe sequence of surfels at which we compute the normals
[in]paramsthe parameters:
  • at-alpha [ 0.1 ]: parameter alpha in AT (data fit)
  • at-lambda [ 0.025 ]: parameter lambda in AT (1/length of discontinuities)
  • at-epsilon [ 0.5 ]: (last value of) parameter epsilon in AT (width of discontinuities)
  • at-epsilon-start[ 2.0 ]: first value for parameter epsilon in Gamma-convergence optimization (sequence of AT optimization with decreasing epsilon)
  • at-epsilon-ratio[ 2.0 ]: ratio between two consecutive epsilon value in Gamma-convergence optimization (sequence of AT optimization with decreasing epsilon)
  • at-max-iter [ 10 ]: maximum number of alternate minization in AT optimization
  • at-diff-v-max [ 0.0001]: stopping criterion that measures the loo-norm of the evolution of v between two iterations
  • at-v-policy ["Maximum"]: the policy when outputing feature vector v onto cells: "Average"|"Minimum"|"Maximum"
[in]inputthe input vector field (a vector of vector values)
Returns
the piecewise-smooth approximation of input.

Definition at line 1792 of file ShortcutsGeometry.h.

1800 {
1801 (void)surface; //param not used FIXME: JOL
1802
1803 int verbose = params[ "verbose" ].as<int>();
1804 Scalar alpha_at = params[ "at-alpha" ].as<Scalar>();
1805 Scalar lambda_at = params[ "at-lambda" ].as<Scalar>();
1806 Scalar epsilon1 = params[ "at-epsilon-start" ].as<Scalar>();
1807 Scalar epsilon2 = params[ "at-epsilon" ].as<Scalar>();
1808 Scalar epsilonr = params[ "at-epsilon-ratio" ].as<Scalar>();
1809 int max_iter = params[ "at-max-iter" ].as<int>();
1810 Scalar diff_v_max= params[ "at-diff-v-max" ].as<Scalar>();
1811 std::string policy = params[ "at-v-policy" ].as<std::string>();
1813 const auto calculus = CalculusFactory::createFromNSCells<2>( surfels.cbegin(), surfels.cend() );
1815 at_solver.initInputVectorFieldU2( input, surfels.cbegin(), surfels.cend() );
1816 at_solver.setUp( alpha_at, lambda_at );
1817 at_solver.solveGammaConvergence( epsilon1, epsilon2, epsilonr, false, diff_v_max, max_iter );
1818 auto output = input;
1819 at_solver.getOutputVectorFieldU2( output, surfels.cbegin(), surfels.cend() );
1820 auto p = ( policy == "Average" ) ? at_solver.Average
1821 : ( policy == "Minimum" ) ? at_solver.Minimum
1823 at_solver.getOutputScalarFieldV0( features, itB, itE, p );
1824 return output;
1825 }

â—† getCNCGaussianCurvatures() [1/3]

template<typename TKSpace>
Scalars DGtal::ShortcutsGeometry< TKSpace >::getCNCGaussianCurvatures ( CountedPtr< typename Base::SurfaceMesh > mesh,
const Parameters & params = parametersShapeGeometry() )
inlinestatic

Given a SurfaceMesh, compute gaussian curvature at each face using CorrectedNormalCurrent method.

This overloads compute curvature for each face of the mesh.

Warning
In this code, only triangles with barycenters strictly inside the sphere are considered.
Parameters
meshThe surface mesh
params
  • unit_u: Whether the computed normals should be normalized or not
  • r-radius [ 3.0]: the constant for kernel radius parameter r in r(h)=r h^alpha (VCM,II,Trivial).
  • alpha [ 0.33]: the parameter alpha in r(h)=r h^alpha (VCM, II, CNC)."
  • gridstep [ 1.0]: the digitization gridstep (often denoted by h).
Returns
The curvatures for each face of the mesh, in thn the order given by the mesh

Definition at line 584 of file ShortcutsGeometry.h.

587 {
589 std::iota(allFaces.begin(), allFaces.end(), 0);
590
592 }
static Scalars getCNCGaussianCurvatures(CountedPtr< typename Base::SurfaceMesh > mesh, const typename Base::SurfaceMesh::Faces &faces, const Parameters &params=parametersShapeGeometry())

â—† getCNCGaussianCurvatures() [2/3]

template<typename TKSpace>
Scalars DGtal::ShortcutsGeometry< TKSpace >::getCNCGaussianCurvatures ( CountedPtr< typename Base::SurfaceMesh > mesh,
const typename Base::SurfaceMesh::Faces & faces,
const Parameters & params = parametersShapeGeometry() )
inlinestatic

Given a SurfaceMesh, compute gaussian curvature at each face using CorrectedNormalCurrent method.

Warning
In this code, only triangles with barycenters strictly inside the sphere are considered.
Parameters
meshThe surface mesh
facesThe faces to compute curvature at
params
  • unit_u: Whether the computed normals should be normalized or not
  • r-radius [ 3.0]: the constant for kernel radius parameter r in r(h)=r h^alpha (VCM,II,Trivial).
  • alpha [ 0.33]: the parameter alpha in r(h)=r h^alpha (VCM, II, CNC)."
  • gridstep [ 1.0]: the digitization gridstep (often denoted by h).
Returns
The curvatures for each face of the mesh, in the same order faces

Definition at line 535 of file ShortcutsGeometry.h.

539 {
540 using Face = typename Base::SurfaceMesh::Face;
541
542 bool unit_u = params["unit_u"].as<int>();
543 double radius = params["r-radius"].as<double>();
544 double alpha = params["alpha"].as<double>();
545 double h = params["gridstep"].as<double>();
546 if ( alpha != 1.0 ) radius *= pow( h, alpha-1.0 );
547
549
550 const auto& mu0 = computer.computeMu0();
551 const auto& mu2 = computer.computeMu2();
552
553 Scalars curvatures(faces.size());
554 for (size_t i = 0; i < faces.size(); ++i)
555 {
556 const auto center = mesh->faceCentroid(faces[i]);
557 const auto area = mu0.measure(center, radius, faces[i]);
558 const auto lmu2 = mu2.measure(center, radius, faces[i]);
560 }
561
562 return curvatures;
563 }
CorrectedNormalCurrentComputer< RealPoint, RealVector > CNCComputer
std::vector< Scalar > Scalars
LightDigitalSurface::Face Face
LightDigitalSurface::Face Face
Definition Shortcuts.h:167

Referenced by DGtal::ShortcutsGeometry< Z3i::KSpace >::getCNCGaussianCurvatures(), and DGtal::ShortcutsGeometry< Z3i::KSpace >::getCNCGaussianCurvatures().

â—† getCNCGaussianCurvatures() [3/3]

template<typename TKSpace>
template<typename T>
Scalars DGtal::ShortcutsGeometry< TKSpace >::getCNCGaussianCurvatures ( T & digitalObject,
const Parameters & params = parametersShapeGeometry() )
inlinestatic

Given a SurfaceMesh, compute mean curvature at each face using CorrectedNormalCurrent method.

Warning
In this code, only triangles with barycenters strictly inside the sphere are considered.
Template Parameters
TAny digital object convertible to surface mesh via Shortcuts::makePrimalSurfaceMesh
Parameters
digitalObjectA digital object
params
  • unit_u: Whether the computed normals should be normalized or not
  • r-radius [ 3.0]: the constant for kernel radius parameter r in r(h)=r h^alpha (VCM,II,Trivial).
  • alpha [ 0.33]: the parameter alpha in r(h)=r h^alpha (VCM, II, CNC)."
  • gridstep [ 1.0]: the digitization gridstep (often denoted by h).
Returns
The curvatures for each face of the triangulated surface object

Definition at line 613 of file ShortcutsGeometry.h.

615 {
618 }
static CountedPtr< SurfaceMesh > makePrimalSurfaceMesh(Cell2Index &c2i, CountedPtr< ::DGtal::DigitalSurface< TContainer > > aSurface)
Definition Shortcuts.h:2373

â—† getCNCMeanCurvatures() [1/3]

template<typename TKSpace>
Scalars DGtal::ShortcutsGeometry< TKSpace >::getCNCMeanCurvatures ( CountedPtr< typename Base::SurfaceMesh > mesh,
const Parameters & params = parametersShapeGeometry() )
inlinestatic

Given a SurfaceMesh, compute mean curvature at each face using CorrectedNormalCurrent method.

This overloads compute curvature for each face of the mesh.

Warning
In this code, only triangles with barycenters strictly inside the sphere are considered.
Parameters
meshThe surface mesh
params
  • unit_u: Whether the computed normals should be normalized or not
  • r-radius [ 3.0]: the constant for kernel radius parameter r in r(h)=r h^alpha (VCM,II,Trivial).
  • alpha [ 0.33]: the parameter alpha in r(h)=r h^alpha (VCM, II, CNC)."
  • gridstep [ 1.0]: the digitization gridstep (often denoted by h).
Returns
The curvatures for each face of mesh, in the the order given by the mesh

Definition at line 441 of file ShortcutsGeometry.h.

444 {
446 std::iota(allFaces.begin(), allFaces.end(), 0);
447
449 }
static Scalars getCNCMeanCurvatures(CountedPtr< typename Base::SurfaceMesh > mesh, const typename Base::SurfaceMesh::Faces faces, const Parameters &params=parametersShapeGeometry())

â—† getCNCMeanCurvatures() [2/3]

template<typename TKSpace>
Scalars DGtal::ShortcutsGeometry< TKSpace >::getCNCMeanCurvatures ( CountedPtr< typename Base::SurfaceMesh > mesh,
const typename Base::SurfaceMesh::Faces faces,
const Parameters & params = parametersShapeGeometry() )
inlinestatic

Given a SurfaceMesh, compute mean curvature at each face using CorrectedNormalCurrent method.

Warning
In this code, only triangles with barycenters strictly inside the sphere are considered.
Parameters
meshThe surface mesh
facesThe faces to compute curvature at
params
  • unit_u: Whether the computed normals should be normalized or not
  • r-radius [ 3.0]: the constant for kernel radius parameter r in r(h)=r h^alpha (VCM,II,Trivial).
  • alpha [ 0.33]: the parameter alpha in r(h)=r h^alpha (VCM, II, CNC)."
  • gridstep [ 1.0]: the digitization gridstep (often denoted by h).
Returns
The curvatures for each face of the mesh, in the same order faces

Definition at line 392 of file ShortcutsGeometry.h.

396 {
397 using Face = typename Base::SurfaceMesh::Face;
398
399 bool unit_u = params["unit_u"].as<int>();
400 double radius = params["r-radius"].as<double>();
401 double alpha = params["alpha"].as<double>();
402 double h = params["gridstep"].as<double>();
403 if ( alpha != 1.0 ) radius *= pow( h, alpha-1.0 );
404
406
407 const auto& mu0 = computer.computeMu0();
408 const auto& mu1 = computer.computeMu1();
409
410 Scalars curvatures(faces.size());
411 for (size_t i = 0; i < faces.size(); ++i)
412 {
413 const auto center = mesh->faceCentroid(faces[i]);
414 const auto area = mu0.measure(center, radius, faces[i]);
415 const auto lmu1 = mu1.measure(center, radius, faces[i]);
417 }
418
419 return curvatures;
420 }

Referenced by DGtal::ShortcutsGeometry< Z3i::KSpace >::getCNCMeanCurvatures(), and DGtal::ShortcutsGeometry< Z3i::KSpace >::getCNCMeanCurvatures().

â—† getCNCMeanCurvatures() [3/3]

template<typename TKSpace>
template<typename T>
Scalars DGtal::ShortcutsGeometry< TKSpace >::getCNCMeanCurvatures ( T & digitalObject,
const Parameters & params = parametersShapeGeometry() )
inlinestatic

Given a SurfaceMesh, compute mean curvature at each face using CorrectedNormalCurrent method.

Warning
In this code, only triangles with barycenters strictly inside the sphere are considered.
Template Parameters
Anydigital object convertible to surface mesh via Shortcuts::makePrimalSurfaceMesh
Parameters
digitalObjectA digital object
params
  • unit_u: Whether the computed normals should be normalized or not
  • r-radius [ 3.0]: the constant for kernel radius parameter r in r(h)=r h^alpha (VCM,II,Trivial).
  • alpha [ 0.33]: the parameter alpha in r(h)=r h^alpha (VCM, II, CNC)."
  • gridstep [ 1.0]: the digitization gridstep (often denoted by h).
Returns
The curvatures for each face of the triangulated surface object

Definition at line 470 of file ShortcutsGeometry.h.

â—† getCNCPrincipalCurvaturesAndDirections() [1/3]

template<typename TKSpace>
std::tuple< Scalars, Scalars, RealVectors, RealVectors > DGtal::ShortcutsGeometry< TKSpace >::getCNCPrincipalCurvaturesAndDirections ( CountedPtr< typename Base::SurfaceMesh > mesh,
const Parameters & params = parametersShapeGeometry() )
inlinestatic

Given a SurfaceMesh, compute principal curvature at each face using CorrectedNormalCurrent method.

This overloads compute curvature for each face of the mesh.

Note
If no normals are provided for the faces, the normals will be computed (and set) using vertex normals if they exist and positions otherwise.
Warning
In this code, only triangles with barycenters strictly inside the sphere are considered.
Parameters
[in,out]meshThe surface mesh. The mesh will be modified if no face normals are provided.
[in]params
  • unit_u: Whether the computed normals should be normalized or not
  • r-radius [ 3.0]: the constant for kernel radius parameter r in r(h)=r h^alpha (VCM,II,Trivial).
  • alpha [ 0.33]: the parameter alpha in r(h)=r h^alpha (VCM, II, CNC)."
  • gridstep [ 1.0]: the digitization gridstep (often denoted by h).
Returns
The principal curvatures for each face of the mesh, in the same order as mesh faces. The result is a 4-element tuples: [first curvatures, second curvatures, first directions, second directions].

Definition at line 924 of file ShortcutsGeometry.h.

927 {
929 std::iota(allFaces.begin(), allFaces.end(), 0);
930
932 }
static std::tuple< Scalars, Scalars, RealVectors, RealVectors > getCNCPrincipalCurvaturesAndDirections(CountedPtr< typename Base::SurfaceMesh > mesh, const typename Base::SurfaceMesh::Faces &faces, const Parameters &params=parametersShapeGeometry())

â—† getCNCPrincipalCurvaturesAndDirections() [2/3]

template<typename TKSpace>
std::tuple< Scalars, Scalars, RealVectors, RealVectors > DGtal::ShortcutsGeometry< TKSpace >::getCNCPrincipalCurvaturesAndDirections ( CountedPtr< typename Base::SurfaceMesh > mesh,
const typename Base::SurfaceMesh::Faces & faces,
const Parameters & params = parametersShapeGeometry() )
inlinestatic

Given a SurfaceMesh, compute principal curvature at each face using CorrectedNormalCurrent method.

Note
If no normals are provided for the faces, the normals will be computed (and set) using vertex normals if they exist and positions otherwise.
Warning
In this code, only triangles with barycenters strictly inside the sphere are considered.
Parameters
[in,out]meshThe surface mesh. The mesh will be modified if no face normals are provided.
[in]facesThe faces to compute curvature at
[in]params
  • unit_u: Whether the computed normals should be normalized or not
  • r-radius [ 3.0]: the constant for kernel radius parameter r in r(h)=r h^alpha (VCM,II,Trivial).
  • alpha [ 0.33]: the parameter alpha in r(h)=r h^alpha (VCM, II, CNC)."
  • gridstep [ 1.0]: the digitization gridstep (often denoted by h).
Returns
The principal curvatures for each face of the mesh, in the same order as faces. The result is a 4-element tuples: [first curvatures, second curvatures, first directions, second directions].

Definition at line 854 of file ShortcutsGeometry.h.

858 {
859 using Face = typename Base::SurfaceMesh::Face;
860
861 bool unit_u = params["unit_u"].as<int>();
862 double radius = params["r-radius"].as<double>();
863 double alpha = params["alpha"].as<double>();
864 double h = params["gridstep"].as<double>();
865 if ( alpha != 1.0 ) radius *= pow( h, alpha-1.0 );
866
868
869 const auto& mu0 = computer.computeMu0();
870 const auto& muxy = computer.computeMuXY();
871
872 if (mesh->faceNormals().size() == 0)
873 {
874 // Try to use vertex normals if any
875 if (mesh->vertexNormals().size() == 0)
876 mesh->computeFaceNormalsFromPositions();
877 else
878 mesh->computeFaceNormalsFromVertexNormals();
879 }
880
881 const auto& normals = mesh->faceNormals();
882
883 Scalars k1(faces.size()), k2(faces.size());
884 RealVectors d1(faces.size()), d2(faces.size());
885
886 for (size_t i = 0; i < faces.size(); ++i)
887 {
888 const auto center = mesh->faceCentroid(faces[i]);
889 const auto area = mu0 .measure(center, radius, faces[i]);
890 const auto lmuxy = muxy.measure(center, radius, faces[i]);
891 std::tie(k1[i], k2[i], d1[i], d2[i]) =
893 }
894
895 return std::make_tuple(k1, k2, d1, d2);
896 }
std::vector< RealVector > RealVectors
static std::tuple< Scalar, Scalar, RealVector, RealVector > principalCurvatures(Scalar mu0, RealTensor muXY, const RealVector &N)

Referenced by DGtal::ShortcutsGeometry< Z3i::KSpace >::getCNCPrincipalCurvaturesAndDirections(), and DGtal::ShortcutsGeometry< Z3i::KSpace >::getCNCPrincipalCurvaturesAndDirections().

â—† getCNCPrincipalCurvaturesAndDirections() [3/3]

template<typename TKSpace>
template<typename T>
std::tuple< Scalars, Scalars, RealVectors, RealVectors > DGtal::ShortcutsGeometry< TKSpace >::getCNCPrincipalCurvaturesAndDirections ( T & digitalObject,
const Parameters & params = parametersShapeGeometry() )
inlinestatic

Given a SurfaceMesh, compute principal curvature at each face using CorrectedNormalCurrent method.

Warning
In this code, only triangles with barycenters strictly inside the sphere are considered.
Template Parameters
TAny digital object convertible to surface mesh via Shortcuts::makePrimalSurfaceMesh
Parameters
digitalObjectA digital object
params
  • unit_u: Whether the computed normals should be normalized or not
  • r-radius [ 3.0]: the constant for kernel radius parameter r in r(h)=r h^alpha (VCM,II,Trivial).
  • alpha [ 0.33]: the parameter alpha in r(h)=r h^alpha (VCM, II, CNC)."
  • gridstep [ 1.0]: the digitization gridstep (often denoted by h).
Returns
The curvatures for each face of the triangulated surface object

Definition at line 955 of file ShortcutsGeometry.h.

â—† getCTrivialNormalVectors()

template<typename TKSpace>
template<typename TAnyDigitalSurface>
RealVectors DGtal::ShortcutsGeometry< TKSpace >::getCTrivialNormalVectors ( CountedPtr< TAnyDigitalSurface > surface,
const SurfelRange & surfels,
const Parameters & params = parametersGeometryEstimation() )
inlinestatic

Given a digital surface surface, a sequence of surfels, and some parameters params, returns the convolved trivial normal vector estimations at the specified surfels, in the same order.

Template Parameters
TAnyDigitalSurfaceeither kind of DigitalSurface, like ShortcutsGeometry::LightDigitalSurface or ShortcutsGeometry::DigitalSurface.
Parameters
[in]surfacethe digital surface
[in]surfelsthe sequence of surfels at which we compute the normals
[in]paramsthe parameters:
  • verbose [ 1]: verbose trace mode 0: silent, 1: verbose.
  • t-ring [ 3.0]: the radius used when computing convolved trivial normals (it is a graph distance, not related to the grid step).
Returns
the vector containing the estimated normals, in the same order as surfels.

Definition at line 1034 of file ShortcutsGeometry.h.

1038 {
1039 int verbose = params[ "verbose" ].as<int>();
1040 Scalar t = params[ "t-ring" ].as<double>();
1042 typedef LpMetric<Space> Metric;
1048 if ( verbose > 0 )
1049 trace.info() << "- CTrivial normal t-ring=" << t << " (discrete)" << std::endl;
1050 const Functor fct( 1.0, t );
1051 const KSpace & K = surface->container().space();
1052 Metric aMetric( 2.0 );
1057 estimator.attach( *surface);
1058 estimator.setParams( aMetric, surfelFct, fct, t );
1059 estimator.init( 1.0, surfels.begin(), surfels.end());
1060 estimator.eval( surfels.begin(), surfels.end(),
1062 std::transform( n_estimations.cbegin(), n_estimations.cend(), n_estimations.begin(),
1063 [] ( RealVector v ) { return -v; } );
1064 return n_estimations;
1065 }
TKSpace KSpace
Digital cellular space.
Space::RealVector RealVector
Vector with floating-point coordinates.
LightDigitalSurface::Surfel Surfel

â—† getFirstPrincipalCurvatures()

template<typename TKSpace>
Scalars DGtal::ShortcutsGeometry< TKSpace >::getFirstPrincipalCurvatures ( CountedPtr< ImplicitShape3D > shape,
const KSpace & K,
const SurfelRange & surfels,
const Parameters & params = parametersShapeGeometry() )
inlinestatic

Given a space K, an implicit shape, a sequence of principal curvatures at the specified surfels, in the same order.

Note
that the first principal curvature is approximated by projecting the surfel centroid onto the implicit 3D shape.
Parameters
[in]shapethe implicit shape.
[in]Kthe Khalimsky space whose domain encompasses the digital shape.
[in]surfelsthe sequence of surfels at which we compute the normals
[in]paramsthe parameters:
  • projectionMaxIter [ 20]: the maximum number of iteration for the projection.
  • projectionAccuracy[0.0001]: the zero-proximity stop criterion during projection.
  • projectionGamma [ 0.5]: the damping coefficient of the projection.
  • gridstep [ 1.0]: the gridstep that defines the digitization (often called h).
Returns
the vector containing the first principal curvatures, in the same order as surfels.

Definition at line 639 of file ShortcutsGeometry.h.

644 {
647 int maxIter = params[ "projectionMaxIter" ].as<int>();
648 double accuracy = params[ "projectionAccuracy" ].as<double>();
649 double gamma = params[ "projectionGamma" ].as<double>();
650 Scalar gridstep = params[ "gridstep" ].as<Scalar>();
651 true_estimator.attach( *shape );
654 true_estimator.init( gridstep, surfels.begin(), surfels.end() );
655 true_estimator.eval( surfels.begin(), surfels.end(),
657 return n_true_estimations;
658 }
TrueDigitalSurfaceLocalEstimator< KSpace, ImplicitShape3D, FirstPrincipalCurvatureFunctor > TrueFirstPrincipalCurvatureEstimator
sgf::ShapeFirstPrincipalCurvatureFunctor< ImplicitShape3D > FirstPrincipalCurvatureFunctor

â—† getFirstPrincipalDirections()

template<typename TKSpace>
RealVectors DGtal::ShortcutsGeometry< TKSpace >::getFirstPrincipalDirections ( CountedPtr< ImplicitShape3D > shape,
const KSpace & K,
const SurfelRange & surfels,
const Parameters & params = parametersShapeGeometry() )
inlinestatic

Given a space K, an implicit shape, a sequence of surfels, and a gridstep h, returns the first principal directions (corresponding to the smallest principal curvature) at the specified surfels, in the same order.

Note
that the first principal direction is approximated by projecting the surfel centroid onto the implicit 3D shape.
Parameters
[in]shapethe implicit shape.
[in]Kthe Khalimsky space whose domain encompasses the digital shape.
[in]surfelsthe sequence of surfels at which we compute the normals
[in]paramsthe parameters:
  • projectionMaxIter [ 20]: the maximum number of iteration for the projection.
  • projectionAccuracy[0.0001]: the zero-proximity stop criterion during projection.
  • projectionGamma [ 0.5]: the damping coefficient of the projection.
  • gridstep [ 1.0]: the gridstep that defines the digitization (often called h).
Returns
the vector containing the first principal directions, in the same order as surfels.

Definition at line 723 of file ShortcutsGeometry.h.

728 {
731 int maxIter = params[ "projectionMaxIter" ].as<int>();
732 double accuracy = params[ "projectionAccuracy" ].as<double>();
733 double gamma = params[ "projectionGamma" ].as<double>();
734 Scalar gridstep = params[ "gridstep" ].as<Scalar>();
735 true_estimator.attach( *shape );
738 true_estimator.init( gridstep, surfels.begin(), surfels.end() );
739 true_estimator.eval( surfels.begin(), surfels.end(),
741 return n_true_estimations;
742 }
sgf::ShapeFirstPrincipalDirectionFunctor< ImplicitShape3D > FirstPrincipalDirectionFunctor
TrueDigitalSurfaceLocalEstimator< KSpace, ImplicitShape3D, FirstPrincipalDirectionFunctor > TrueFirstPrincipalDirectionEstimator

â—† getGaussianCurvatures()

template<typename TKSpace>
Scalars DGtal::ShortcutsGeometry< TKSpace >::getGaussianCurvatures ( CountedPtr< ImplicitShape3D > shape,
const KSpace & K,
const SurfelRange & surfels,
const Parameters & params = parametersShapeGeometry() )
inlinestatic

Given a space K, an implicit shape, a sequence of surfels, and a gridstep h, returns the gaussian curvatures at the specified surfels, in the same order.

Note
that the gaussian curvature is approximated by projecting the surfel centroid onto the implicit 3D shape.
Parameters
[in]shapethe implicit shape.
[in]Kthe Khalimsky space whose domain encompasses the digital shape.
[in]surfelsthe sequence of surfels at which we compute the normals
[in]paramsthe parameters:
  • projectionMaxIter [ 20]: the maximum number of iteration for the projection.
  • projectionAccuracy[0.0001]: the zero-proximity stop criterion during projection.
  • projectionGamma [ 0.5]: the damping coefficient of the projection.
  • gridstep [ 1.0]: the gridstep that defines the digitization (often called h).
Returns
the vector containing the gaussian curvatures, in the same order as surfels.

Definition at line 497 of file ShortcutsGeometry.h.

502 {
505 int maxIter = params[ "projectionMaxIter" ].as<int>();
506 double accuracy = params[ "projectionAccuracy" ].as<double>();
507 double gamma = params[ "projectionGamma" ].as<double>();
508 Scalar gridstep = params[ "gridstep" ].as<Scalar>();
509 true_estimator.attach( *shape );
511 true_estimator.init( gridstep, surfels.begin(), surfels.end() );
512 true_estimator.eval( surfels.begin(), surfels.end(),
514 return n_true_estimations;
515 }
TrueDigitalSurfaceLocalEstimator< KSpace, ImplicitShape3D, GaussianCurvatureFunctor > TrueGaussianCurvatureEstimator
sgf::ShapeGaussianCurvatureFunctor< ImplicitShape3D > GaussianCurvatureFunctor

â—† getIIGaussianCurvatures() [1/3]

template<typename TKSpace>
template<typename TPointPredicate>
Scalars DGtal::ShortcutsGeometry< TKSpace >::getIIGaussianCurvatures ( const TPointPredicate & shape,
const KSpace & K,
const SurfelRange & surfels,
const Parameters & params = parametersGeometryEstimation() | parametersKSpace() )
inlinestatic

Given an arbitrary PointPredicate shape: Point -> boolean, a Khalimsky space K, a sequence of surfels, and some parameters params, returns the Gaussian curvature Integral Invariant (II) estimation at the specified surfels, in the same order.

Template Parameters
TPointPredicateany type of map Point -> boolean.
Parameters
[in]shapea function Point -> boolean telling if you are inside the shape.
[in]Kthe Khalimsky space where the shape and surfels live.
[in]surfelsthe sequence of surfels at which we compute the Gaussian curvatures
[in]paramsthe parameters:
  • verbose [ 1]: verbose trace mode 0: silent, 1: verbose.
  • r-radius [ 3.0]: the constant for kernel radius parameter r in r(h)=r h^alpha (VCM,II,Trivial).
  • alpha [ 0.33]: the parameter alpha in r(h)=r h^alpha (VCM, II)."
  • gridstep [ 1.0]: the digitization gridstep (often denoted by h).
Returns
the vector containing the estimated Gaussian curvatures, in the same order as surfels.
Note
The function is faster when surfels are in a specific order, as given for instance by a depth-first traversal (see getSurfelRange)

Definition at line 1512 of file ShortcutsGeometry.h.

1518 {
1522
1524 int verbose = params[ "verbose" ].as<int>();
1525 Scalar h = params[ "gridstep" ].as<Scalar>();
1526 Scalar r = params[ "r-radius" ].as<Scalar>();
1527 Scalar alpha = params[ "alpha" ].as<Scalar>();
1528 if ( alpha != 1.0 ) r *= pow( h, alpha-1.0 );
1529 if ( verbose > 0 )
1530 {
1531 trace.info() << "- II Gaussian curvature alpha=" << alpha << std::endl;
1532 trace.info() << "- II Gaussian curvature r=" << (r*h) << " (continuous) "
1533 << r << " (discrete)" << std::endl;
1534 }
1536 functor.init( h, r*h );
1538 ii_estimator.attach( K, shape );
1539 ii_estimator.setParams( r );
1540 ii_estimator.init( h, surfels.begin(), surfels.end() );
1541 ii_estimator.eval( surfels.begin(), surfels.end(),
1543 return mc_estimations;
1544 }

â—† getIIGaussianCurvatures() [2/3]

template<typename TKSpace>
Scalars DGtal::ShortcutsGeometry< TKSpace >::getIIGaussianCurvatures ( CountedPtr< BinaryImage > bimage,
const SurfelRange & surfels,
const Parameters & params = parametersGeometryEstimation() | parametersKSpace() )
inlinestatic

Given a digital shape bimage, a sequence of surfels, and some parameters vm, returns the Gaussian curvature Integral Invariant (II) estimation at the specified surfels, in the same order.

Parameters
[in]bimagethe characteristic function of the shape as a binary image (inside is true, outside is false).
[in]surfelsthe sequence of surfels at which we compute the Gaussian curvatures
[in]paramsthe parameters:
  • verbose [ 1]: verbose trace mode 0: silent, 1: verbose.
  • r-radius [ 3.0]: the constant for kernel radius parameter r in r(h)=r h^alpha (VCM,II,Trivial).
  • alpha [ 0.33]: the parameter alpha in r(h)=r h^alpha (VCM, II)."
  • gridstep [ 1.0]: the digitization gridstep (often denoted by h).
Returns
the vector containing the estimated Gaussian curvatures, in the same order as surfels.
Note
The function is faster when surfels are in a specific order, as given for instance by a depth-first traversal (see getSurfelRange)

Definition at line 1441 of file ShortcutsGeometry.h.

1446 {
1447 auto K = getKSpace( bimage, params );
1449 }
static Scalars getIIGaussianCurvatures(CountedPtr< BinaryImage > bimage, const SurfelRange &surfels, const Parameters &params=parametersGeometryEstimation()|parametersKSpace())
static KSpace getKSpace(const Point &low, const Point &up, Parameters params=parametersKSpace())
Definition Shortcuts.h:333

Referenced by DGtal::ShortcutsGeometry< Z3i::KSpace >::getIIGaussianCurvatures(), and DGtal::ShortcutsGeometry< Z3i::KSpace >::getIIGaussianCurvatures().

â—† getIIGaussianCurvatures() [3/3]

template<typename TKSpace>
Scalars DGtal::ShortcutsGeometry< TKSpace >::getIIGaussianCurvatures ( CountedPtr< DigitizedImplicitShape3D > dshape,
const SurfelRange & surfels,
const Parameters & params = parametersGeometryEstimation() | parametersKSpace() | parametersDigitizedImplicitShape3D() )
inlinestatic

Given a digitized implicit shape dshape, a sequence of surfels, and some parameters params, returns the Gaussian curvature Integral Invariant (II) estimation at the specified surfels, in the same order.

Parameters
[in]dshapethe digitized implicit shape, which is an implicitly defined characteristic function.
[in]surfelsthe sequence of surfels at which we compute the normals
[in]paramsthe parameters:
  • verbose [ 1]: verbose trace mode 0: silent, 1: verbose.
  • r-radius [ 3.0]: the constant for kernel radius parameter r in r(h)=r h^alpha (VCM,II,Trivial).
  • alpha [ 0.33]: the parameter alpha in r(h)=r h^alpha (VCM, II)."
  • gridstep [ 1.0]: the digitization gridstep (often denoted by h).
  • minAABB [ -10.0]: the min value of the AABB bounding box (domain)
  • maxAABB [ 10.0]: the max value of the AABB bounding box (domain)
  • offset [ 5.0]: the digital dilation of the digital space, useful when you process shapes and that you add noise.
  • closed [ 1]: specifies if the Khalimsky space is closed (!=0) or not (==0)
Returns
the vector containing the estimated Gaussian curvatures, in the same order as surfels.
Note
It is better to have surfels in a specific order, as given for instance by a depth-first traversal (see getSurfelRange)

Definition at line 1477 of file ShortcutsGeometry.h.

1483 {
1484 auto K = getKSpace( params );
1486 }

â—† getIIMeanCurvatures() [1/3]

template<typename TKSpace>
template<typename TPointPredicate>
Scalars DGtal::ShortcutsGeometry< TKSpace >::getIIMeanCurvatures ( const TPointPredicate & shape,
const KSpace & K,
const SurfelRange & surfels,
const Parameters & params = parametersGeometryEstimation() | parametersKSpace() )
inlinestatic

Given an arbitrary PointPredicate shape: Point -> boolean, a Khalimsky space K, a sequence of surfels, and some parameters params, returns the mean curvature Integral Invariant (II) estimation at the specified surfels, in the same order.

Template Parameters
TPointPredicateany type of map Point -> boolean.
Parameters
[in]shapea function Point -> boolean telling if you are inside the shape.
[in]Kthe Khalimsky space where the shape and surfels live.
[in]surfelsthe sequence of surfels at which we compute the mean curvatures
[in]paramsthe parameters:
  • verbose [ 1]: verbose trace mode 0: silent, 1: verbose.
  • r-radius [ 3.0]: the constant for kernel radius parameter r in r(h)=r h^alpha (VCM,II,Trivial).
  • alpha [ 0.33]: the parameter alpha in r(h)=r h^alpha (VCM, II)."
  • gridstep [ 1.0]: the digitization gridstep (often denoted by h).
Returns
the vector containing the estimated mean curvatures, in the same order as surfels.
Note
The function is faster when surfels are in a specific order, as given for instance by a depth-first traversal (see getSurfelRange)

Definition at line 1388 of file ShortcutsGeometry.h.

1394 {
1398
1400 int verbose = params[ "verbose" ].as<int>();
1401 Scalar h = params[ "gridstep" ].as<Scalar>();
1402 Scalar r = params[ "r-radius" ].as<Scalar>();
1403 Scalar alpha = params[ "alpha" ].as<Scalar>();
1404 if ( alpha != 1.0 ) r *= pow( h, alpha-1.0 );
1405 if ( verbose > 0 )
1406 {
1407 trace.info() << "- II mean curvature alpha=" << alpha << std::endl;
1408 trace.info() << "- II mean curvature r=" << (r*h) << " (continuous) "
1409 << r << " (discrete)" << std::endl;
1410 }
1412 functor.init( h, r*h );
1414 ii_estimator.attach( K, shape );
1415 ii_estimator.setParams( r );
1416 ii_estimator.init( h, surfels.begin(), surfels.end() );
1417 ii_estimator.eval( surfels.begin(), surfels.end(),
1419 return mc_estimations;
1420 }

â—† getIIMeanCurvatures() [2/3]

template<typename TKSpace>
Scalars DGtal::ShortcutsGeometry< TKSpace >::getIIMeanCurvatures ( CountedPtr< BinaryImage > bimage,
const SurfelRange & surfels,
const Parameters & params = parametersGeometryEstimation() | parametersKSpace() )
inlinestatic

Given a digital shape bimage, a sequence of surfels, and some parameters vm, returns the mean curvature Integral Invariant (II) estimation at the specified surfels, in the same order.

Parameters
[in]bimagethe characteristic function of the shape as a binary image (inside is true, outside is false).
[in]surfelsthe sequence of surfels at which we compute the mean curvatures
[in]paramsthe parameters:
  • verbose [ 1]: verbose trace mode 0: silent, 1: verbose.
  • r-radius [ 3.0]: the constant for kernel radius parameter r in r(h)=r h^alpha (VCM,II,Trivial).
  • alpha [ 0.33]: the parameter alpha in r(h)=r h^alpha (VCM, II)."
  • gridstep [ 1.0]: the digitization gridstep (often denoted by h).
Returns
the vector containing the estimated mean curvatures, in the same order as surfels.
Note
The function is faster when surfels are in a specific order, as given for instance by a depth-first traversal (see getSurfelRange)

Definition at line 1317 of file ShortcutsGeometry.h.

1322 {
1323 auto K = getKSpace( bimage, params );
1325 }
static Scalars getIIMeanCurvatures(CountedPtr< BinaryImage > bimage, const SurfelRange &surfels, const Parameters &params=parametersGeometryEstimation()|parametersKSpace())

Referenced by DGtal::ShortcutsGeometry< Z3i::KSpace >::getIIMeanCurvatures(), and DGtal::ShortcutsGeometry< Z3i::KSpace >::getIIMeanCurvatures().

â—† getIIMeanCurvatures() [3/3]

template<typename TKSpace>
Scalars DGtal::ShortcutsGeometry< TKSpace >::getIIMeanCurvatures ( CountedPtr< DigitizedImplicitShape3D > dshape,
const SurfelRange & surfels,
const Parameters & params = parametersGeometryEstimation() | parametersKSpace() | parametersDigitizedImplicitShape3D() )
inlinestatic

Given a digitized implicit shape dshape, a sequence of surfels, and some parameters params, returns the mean curvature Integral Invariant (II) estimation at the specified surfels, in the same order.

Parameters
[in]dshapethe digitized implicit shape, which is an implicitly defined characteristic function.
[in]surfelsthe sequence of surfels at which we compute the normals
[in]paramsthe parameters:
  • verbose [ 1]: verbose trace mode 0: silent, 1: verbose.
  • r-radius [ 3.0]: the constant for kernel radius parameter r in r(h)=r h^alpha (VCM,II,Trivial).
  • alpha [ 0.33]: the parameter alpha in r(h)=r h^alpha (VCM, II)."
  • gridstep [ 1.0]: the digitization gridstep (often denoted by h).
  • minAABB [ -10.0]: the min value of the AABB bounding box (domain)
  • maxAABB [ 10.0]: the max value of the AABB bounding box (domain)
  • offset [ 5.0]: the digital dilation of the digital space, useful when you process shapes and that you add noise.
  • closed [ 1]: specifies if the Khalimsky space is closed (!=0) or not (==0)
Returns
the vector containing the estimated mean curvatures, in the same order as surfels.
Note
It is better to have surfels in a specific order, as given for instance by a depth-first traversal (see getSurfelRange)

Definition at line 1353 of file ShortcutsGeometry.h.

1359 {
1360 auto K = getKSpace( params );
1362 }

â—† getIINormalVectors() [1/3]

template<typename TKSpace>
template<typename TPointPredicate>
RealVectors DGtal::ShortcutsGeometry< TKSpace >::getIINormalVectors ( const TPointPredicate & shape,
const KSpace & K,
const SurfelRange & surfels,
const Parameters & params = parametersGeometryEstimation() | parametersKSpace() )
inlinestatic

Given an arbitrary PointPredicate shape: Point -> boolean, a Khalimsky space K, a sequence of surfels, and some parameters params, returns the normal Integral Invariant (II) estimation at the specified surfels, in the same order.

Template Parameters
TPointPredicateany type of map Point -> boolean.
Parameters
[in]shapea function Point -> boolean telling if you are inside the shape.
[in]Kthe Khalimsky space where the shape and surfels live.
[in]surfelsthe sequence of surfels at which we compute the normals
[in]paramsthe parameters:
  • verbose [ 1]: verbose trace mode 0: silent, 1: verbose.
  • r-radius [ 3.0]: the constant for kernel radius parameter r in r(h)=r h^alpha (VCM,II,Trivial).
  • alpha [ 0.33]: the parameter alpha in r(h)=r h^alpha (VCM, II)."
  • gridstep [ 1.0]: the digitization gridstep (often denoted by h).
Returns
the vector containing the estimated normals, in the same order as surfels.
Note
Be careful, normals are reoriented with respect to Trivial normals. If you wish a more robust orientation, use getCTrivialNormalVectors.
It is better to have surfels in a specific order, as given for instance by a depth-first traversal (see getSurfelRange)

Definition at line 1261 of file ShortcutsGeometry.h.

1267 {
1271
1273 int verbose = params[ "verbose" ].as<int>();
1274 Scalar h = params[ "gridstep" ].as<Scalar>();
1275 Scalar r = params[ "r-radius" ].as<Scalar>();
1276 Scalar alpha = params[ "alpha" ].as<Scalar>();
1277 if ( alpha != 1.0 ) r *= pow( h, alpha-1.0 );
1278 if ( verbose > 0 )
1279 {
1280 trace.info() << "- II normal alpha=" << alpha << std::endl;
1281 trace.info() << "- II normal r=" << (r*h) << " (continuous) "
1282 << r << " (discrete)" << std::endl;
1283 }
1285 functor.init( h, r*h );
1287 ii_estimator.attach( K, shape );
1288 ii_estimator.setParams( r );
1289 ii_estimator.init( h, surfels.begin(), surfels.end() );
1290 ii_estimator.eval( surfels.begin(), surfels.end(),
1294 return n_estimations;
1295 }
static RealVectors getTrivialNormalVectors(const KSpace &K, const SurfelRange &surfels)
static void orientVectors(RealVectors &v, const RealVectors &ref_v)

â—† getIINormalVectors() [2/3]

template<typename TKSpace>
RealVectors DGtal::ShortcutsGeometry< TKSpace >::getIINormalVectors ( CountedPtr< BinaryImage > bimage,
const SurfelRange & surfels,
const Parameters & params = parametersGeometryEstimation() | parametersKSpace() )
inlinestatic

Given a digital shape bimage, a sequence of surfels, and some parameters params, returns the normal Integral Invariant (II) estimation at the specified surfels, in the same order.

Parameters
[in]bimagethe characteristic function of the shape as a binary image (inside is true, outside is false).
[in]surfelsthe sequence of surfels at which we compute the normals
[in]paramsthe parameters:
  • verbose [ 1]: verbose trace mode 0: silent, 1: verbose.
  • r-radius [ 3.0]: the constant for kernel radius parameter r in r(h)=r h^alpha (VCM,II,Trivial).
  • alpha [ 0.33]: the parameter alpha in r(h)=r h^alpha (VCM, II)."
  • gridstep [ 1.0]: the digitization gridstep (often denoted by h).
Returns
the vector containing the estimated normals, in the same order as surfels.
Note
Be careful, normals are reoriented with respect to Trivial normals. If you wish a more robust orientation, use getCTrivialNormalVectors.
It is better to have surfels in a specific order, as given for instance by a depth-first traversal (see getSurfelRange)

Definition at line 1184 of file ShortcutsGeometry.h.

1189 {
1190 auto K = getKSpace( bimage, params );
1192 }
static RealVectors getIINormalVectors(CountedPtr< BinaryImage > bimage, const SurfelRange &surfels, const Parameters &params=parametersGeometryEstimation()|parametersKSpace())

Referenced by DGtal::ShortcutsGeometry< Z3i::KSpace >::getIINormalVectors(), and DGtal::ShortcutsGeometry< Z3i::KSpace >::getIINormalVectors().

â—† getIINormalVectors() [3/3]

template<typename TKSpace>
RealVectors DGtal::ShortcutsGeometry< TKSpace >::getIINormalVectors ( CountedPtr< DigitizedImplicitShape3D > dshape,
const SurfelRange & surfels,
const Parameters & params = parametersGeometryEstimation() | parametersKSpace() | parametersDigitizedImplicitShape3D() )
inlinestatic

Given a digitized implicit shape dshape, a sequence of surfels, and some parameters params, returns the normal Integral Invariant (II) estimation at the specified surfels, in the same order.

Parameters
[in]dshapethe digitized implicit shape, which is an implicitly defined characteristic function.
[in]surfelsthe sequence of surfels at which we compute the normals
[in]paramsthe parameters:
  • verbose [ 1]: verbose trace mode 0: silent, 1: verbose.
  • r-radius [ 3.0]: the constant for kernel radius parameter r in r(h)=r h^alpha (VCM,II,Trivial).
  • alpha [ 0.33]: the parameter alpha in r(h)=r h^alpha (VCM, II)."
  • gridstep [ 1.0]: the digitization gridstep (often denoted by h).
  • minAABB [ -10.0]: the min value of the AABB bounding box (domain)
  • maxAABB [ 10.0]: the max value of the AABB bounding box (domain)
  • offset [ 5.0]: the digital dilation of the digital space, useful when you process shapes and that you add noise.
  • closed [ 1]: specifies if the Khalimsky space is closed (!=0) or not (==0)
Returns
the vector containing the estimated normals, in the same order as surfels.
Note
Be careful, normals are reoriented with respect to Trivial normals. If you wish a more robust orientation, use getCTrivialNormalVectors.
It is better to have surfels in a specific order, as given for instance by a depth-first traversal (see getSurfelRange)

Definition at line 1224 of file ShortcutsGeometry.h.

1230 {
1231 auto K = getKSpace( params );
1233 }

â—† getIIPrincipalCurvaturesAndDirections() [1/3]

template<typename TKSpace>
template<typename TPointPredicate>
CurvatureTensorQuantities DGtal::ShortcutsGeometry< TKSpace >::getIIPrincipalCurvaturesAndDirections ( const TPointPredicate & shape,
const KSpace & K,
const SurfelRange & surfels,
const Parameters & params = parametersGeometryEstimation() | parametersKSpace() )
inlinestatic

Given an arbitrary PointPredicate shape: Point -> boolean, a Khalimsky space K, a sequence of surfels, and some parameters params, returns the principal curvatures and directions using Integral Invariant (II) estimation at the specified surfels, in the same order.

Template Parameters
TPointPredicateany type of map Point -> boolean.
Parameters
[in]shapea function Point -> boolean telling if you are inside the shape.
[in]Kthe Khalimsky space where the shape and surfels live.
[in]surfelsthe sequence of surfels at which we compute the Gaussian curvatures
[in]paramsthe parameters:
  • verbose [ 1]: verbose trace mode 0: silent, 1: verbose.
  • r-radius [ 3.0]: the constant for kernel radius parameter r in r(h)=r h^alpha (VCM,II,Trivial).;
  • alpha [ 0.33]: the parameter alpha in r(h)=r h^alpha (VCM, II)."
  • gridstep [ 1.0]: the digitization gridstep (often denoted by h).
Returns
the vector containing the estimated principal curvatures and directions, in the same order as surfels.
Note
The function is faster when surfels are in a specific order, as given for instance by a depth-first traversal (see getSurfelRange)

Definition at line 1638 of file ShortcutsGeometry.h.

1644 {
1647
1649 int verbose = params[ "verbose" ].as<int>();
1650 Scalar h = params[ "gridstep" ].as<Scalar>();
1651 Scalar r = params[ "r-radius" ].as<Scalar>();
1652 Scalar alpha = params[ "alpha" ].as<Scalar>();
1653 if ( alpha != 1.0 ) r *= pow( h, alpha-1.0 );
1654 if ( verbose > 0 )
1655 {
1656 trace.info() << "- II principal curvatures and directions alpha=" << alpha << std::endl;
1657 trace.info() << "- II principal curvatures and directions r=" << (r*h) << " (continuous) "
1658 << r << " (discrete)" << std::endl;
1659 }
1661 functor.init( h, r*h );
1663 ii_estimator.attach( K, shape );
1664 ii_estimator.setParams( r );
1665 ii_estimator.init( h, surfels.begin(), surfels.end() );
1666 ii_estimator.eval( surfels.begin(), surfels.end(),
1668 return mc_estimations;
1669 }
std::vector< CurvatureTensorQuantity > CurvatureTensorQuantities

â—† getIIPrincipalCurvaturesAndDirections() [2/3]

template<typename TKSpace>
CurvatureTensorQuantities DGtal::ShortcutsGeometry< TKSpace >::getIIPrincipalCurvaturesAndDirections ( CountedPtr< BinaryImage > bimage,
const SurfelRange & surfels,
const Parameters & params = parametersGeometryEstimation() | parametersKSpace() )
inlinestatic

Given a digital shape bimage, a sequence of surfels, and some parameters vm, returns the principal curvatures and directions using an Integral Invariant (II) estimation at the specified surfels, in the same order.

Parameters
[in]bimagethe characteristic function of the shape as a binary image (inside is true, outside is false).
[in]surfelsthe sequence of surfels at which we compute the Gaussian curvatures
[in]paramsthe parameters:
  • verbose [ 1]: verbose trace mode 0: silent, 1: verbose.
  • r-radius [ 3.0]: the constant for kernel radius parameter r in r(h)=r h^alpha (VCM,II,Trivial).
  • alpha [ 0.33]: the parameter alpha in r(h)=r h^alpha (VCM, II)."
  • gridstep [ 1.0]: the digitization gridstep (often denoted by h).
Returns
the vector containing the estimated Gaussian curvatures, in the same order as surfels.
Note
The function is faster when surfels are in a specific order, as given for instance by a depth-first traversal (see getSurfelRange)

Definition at line 1566 of file ShortcutsGeometry.h.

1571 {
1572 auto K = getKSpace( bimage, params );
1574 }
static CurvatureTensorQuantities getIIPrincipalCurvaturesAndDirections(CountedPtr< BinaryImage > bimage, const SurfelRange &surfels, const Parameters &params=parametersGeometryEstimation()|parametersKSpace())

Referenced by DGtal::ShortcutsGeometry< Z3i::KSpace >::getIIPrincipalCurvaturesAndDirections(), and DGtal::ShortcutsGeometry< Z3i::KSpace >::getIIPrincipalCurvaturesAndDirections().

â—† getIIPrincipalCurvaturesAndDirections() [3/3]

template<typename TKSpace>
CurvatureTensorQuantities DGtal::ShortcutsGeometry< TKSpace >::getIIPrincipalCurvaturesAndDirections ( CountedPtr< DigitizedImplicitShape3D > dshape,
const SurfelRange & surfels,
const Parameters & params = parametersGeometryEstimation() | parametersKSpace() | parametersDigitizedImplicitShape3D() )
inlinestatic

Given a digital shape dshape, a sequence of surfels, and some parameters vm, returns the principal curvatures and directions using an Integral Invariant (II) estimation at the specified surfels, in the same order.

Parameters
[in]dshapethe digitized implicit shape, which is an implicitly defined characteristic function.
[in]surfelsthe sequence of surfels at which we compute the normals
[in]paramsthe parameters:
  • verbose [ 1]: verbose trace mode 0: silent, 1: verbose.
  • r-radius [ 3.0]: the constant for kernel radius parameter r in r(h)=r h^alpha (VCM,II,Trivial).
  • alpha [ 0.33]: the parameter alpha in r(h)=r h^alpha (VCM, II)."
  • gridstep [ 1.0]: the digitization gridstep (often denoted by h).
  • minAABB [ -10.0]: the min value of the AABB bounding box (domain)
  • maxAABB [ 10.0]: the max value of the AABB bounding box (domain)
  • offset [ 5.0]: the digital dilation of the digital space, useful when you process shapes adding some noise.
  • closed [ 1]: specifies if the Khalimsky space is closed (!=0) or not (==0)
Returns
the vector containing the estimated principal curvatures and directions, in the same order as surfels.
Note
It is better to have surfels in a specific order, as given for instance by a depth-first traversal (see getSurfelRange)

Definition at line 1603 of file ShortcutsGeometry.h.

1609 {
1610 auto K = getKSpace( params );
1612 }

â—† getKSpace() [1/6]

template<typename TKSpace>
KSpace DGtal::Shortcuts< TKSpace >::getKSpace ( const Point & low,
const Point & up,
Parameters params = parametersKSpace() )
inlinestatic

Builds a Khalimsky space that encompasses the lower and upper digital points. Note that digital points are cells of the Khalimsky space with maximal dimensions. A closed Khalimsky space adds lower dimensional cells all around its boundary to define a closed complex.

Parameters
[in]lowthe lowest point in the space
[in]upthe highest point in the space
[in]paramsthe parameters:
  • closed [1]: specifies if the Khalimsky space is closed (!=0) or not (==0).
Returns
the Khalimsky space.

Definition at line 333 of file Shortcuts.h.

335 {
336 int closed = params[ "closed" ].as<int>();
337 KSpace K;
338 if ( ! K.init( low, up, closed ) )
339 trace.error() << "[Shortcuts::getKSpace]"
340 << " Error building Khalimsky space K=" << K << std::endl;
341 return K;
342 }

Referenced by DGtal::ShortcutsGeometry< Z3i::KSpace >::getIIGaussianCurvatures(), DGtal::ShortcutsGeometry< Z3i::KSpace >::getIIGaussianCurvatures(), DGtal::ShortcutsGeometry< Z3i::KSpace >::getIIMeanCurvatures(), DGtal::ShortcutsGeometry< Z3i::KSpace >::getIIMeanCurvatures(), DGtal::ShortcutsGeometry< Z3i::KSpace >::getIINormalVectors(), DGtal::ShortcutsGeometry< Z3i::KSpace >::getIINormalVectors(), DGtal::ShortcutsGeometry< Z3i::KSpace >::getIIPrincipalCurvaturesAndDirections(), and DGtal::ShortcutsGeometry< Z3i::KSpace >::getIIPrincipalCurvaturesAndDirections().

â—† getKSpace() [2/6]

template<typename TKSpace>
template<typename TDigitalSurfaceContainer>
KSpace DGtal::Shortcuts< TKSpace >::getKSpace ( CountedPtr< ::DGtal::DigitalSurface< TDigitalSurfaceContainer > > surface)
inlinestatic
Template Parameters
TDigitalSurfaceContainereither kind of DigitalSurfaceContainer
Parameters
[in]surfacea smart pointer on a (light or not) digital surface (e.g. DigitalSurface or LightDigitalSurface).
Returns
the Khalimsky space associated to the given surface.

Definition at line 397 of file Shortcuts.h.

399 {
400 return surface->container().space();
401 }

â—† getKSpace() [3/6]

template<typename TKSpace>
template<typename TDigitalSurfaceContainer>
KSpace DGtal::Shortcuts< TKSpace >::getKSpace ( CountedPtr< ::DGtal::IndexedDigitalSurface< TDigitalSurfaceContainer > > surface)
inlinestatic
Template Parameters
TDigitalSurfaceContainereither kind of DigitalSurfaceContainer
Parameters
[in]surfacea smart pointer on any indexed digital surface.
Returns
the Khalimsky space associated to the given surface.

Definition at line 408 of file Shortcuts.h.

410 {
411 return surface->container().space();
412 }

â—† getKSpace() [4/6]

template<typename TKSpace>
KSpace DGtal::Shortcuts< TKSpace >::getKSpace ( CountedPtr< BinaryImage > bimage,
Parameters params = parametersKSpace() )
inlinestatic

Builds a Khalimsky space that encompasses the domain of the given image. Note that digital points are cells of the Khalimsky space with maximal dimensions. A closed Khalimsky space adds lower dimensional cells all around its boundary to define a closed complex.

Parameters
[in]bimageany binary image
[in]paramsthe parameters:
  • closed [1]: specifies if the Khalimsky space is closed (!=0) or not (==0).
Returns
the Khalimsky space.

Definition at line 355 of file Shortcuts.h.

357 {
358 int closed = params[ "closed" ].as<int>();
359 KSpace K;
360 if ( ! K.init( bimage->domain().lowerBound(),
361 bimage->domain().upperBound(),
362 closed ) )
363 trace.error() << "[Shortcuts::getKSpace]"
364 << " Error building Khalimsky space K=" << K << std::endl;
365 return K;
366 }

â—† getKSpace() [5/6]

template<typename TKSpace>
KSpace DGtal::Shortcuts< TKSpace >::getKSpace ( CountedPtr< GrayScaleImage > gimage,
Parameters params = parametersKSpace() )
inlinestatic

Builds a Khalimsky space that encompasses the domain of the given image. Note that digital points are cells of the Khalimsky space with maximal dimensions. A closed Khalimsky space adds lower dimensional cells all around its boundary to define a closed complex.

Parameters
[in]gimageany gray-scale image
[in]paramsthe parameters:
  • closed [1]: specifies if the Khalimsky space is closed (!=0) or not (==0).
Returns
the Khalimsky space.

Definition at line 379 of file Shortcuts.h.

381 {
382 int closed = params[ "closed" ].as<int>();
383 KSpace K;
384 if ( ! K.init( gimage->domain().lowerBound(),
385 gimage->domain().upperBound(),
386 closed ) )
387 trace.error() << "[Shortcuts::getKSpace]"
388 << " Error building Khalimsky space K=" << K << std::endl;
389 return K;
390 }

â—† getKSpace() [6/6]

template<typename TKSpace>
KSpace DGtal::Shortcuts< TKSpace >::getKSpace ( Parameters params = parametersKSpace() | parametersDigitizedImplicitShape3D())
inlinestatic

Builds a Khalimsky space that encompasses the bounding box specified by a digitization in params. It is useful when digitizing an implicit shape.

Parameters
[in]paramsthe parameters:
  • minAABB [-10.0]: the min value of the AABB bounding box (domain)
  • maxAABB [ 10.0]: the max value of the AABB bounding box (domain)
  • gridstep [ 1.0]: the gridstep that defines the digitization (often called h).
  • offset [ 5.0]: the digital dilation of the digital space, useful when you process shapes and that you add noise.
  • closed [1] : specifies if the Khalimsky space is closed (!=0) or not (==0).
Returns
the Khalimsky space.
See also
makeDigitizedImplicitShape3D

Definition at line 487 of file Shortcuts.h.

489 {
490 Scalar min_x = params[ "minAABB" ].as<Scalar>();
491 Scalar max_x = params[ "maxAABB" ].as<Scalar>();
492 Scalar h = params[ "gridstep" ].as<Scalar>();
493 Scalar offset = params[ "offset" ].as<Scalar>();
494 bool closed = params[ "closed" ].as<int>();
495 RealPoint p1( min_x - offset * h, min_x - offset * h, min_x - offset * h );
496 RealPoint p2( max_x + offset * h, max_x + offset * h, max_x + offset * h );
498 dshape->init( p1, p2, h );
499 Domain domain = dshape->getDomain();
500 KSpace K;
501 if ( ! K.init( domain.lowerBound(), domain.upperBound(), closed ) )
502 trace.error() << "[Shortcuts::getKSpace]"
503 << " Error building Khalimsky space K=" << K << std::endl
504 << "Note: if you use decimal values, check your locale for decimal point '.' or ','."
505 << std::endl;
506 return K;
507 }
GaussDigitizer< Space, ImplicitShape3D > DigitizedImplicitShape3D
defines the digitization of an implicit shape.
Space::RealPoint RealPoint
Point with floating-point coordinates.
HyperRectDomain< Space > Domain
An (hyper-)rectangular domain.

â—† getMeanCurvatures()

template<typename TKSpace>
Scalars DGtal::ShortcutsGeometry< TKSpace >::getMeanCurvatures ( CountedPtr< ImplicitShape3D > shape,
const KSpace & K,
const SurfelRange & surfels,
const Parameters & params = parametersShapeGeometry() )
inlinestatic

Given a space K, an implicit shape, a sequence of surfels, and a gridstep h, returns the mean curvatures at the specified surfels, in the same order.

Note
that the mean curvature is approximated by projecting the surfel centroid onto the implicit 3D shape.
Parameters
[in]shapethe implicit shape.
[in]Kthe Khalimsky space whose domain encompasses the digital shape.
[in]surfelsthe sequence of surfels at which we compute the normals
[in]paramsthe parameters:
  • projectionMaxIter [ 20]: the maximum number of iteration for the projection.
  • projectionAccuracy[0.0001]: the zero-proximity stop criterion during projection.
  • projectionGamma [ 0.5]: the damping coefficient of the projection.
  • gridstep [ 1.0]: the gridstep that defines the digitization (often called h).
Returns
the vector containing the mean curvatures, in the same order as surfels.

Definition at line 357 of file ShortcutsGeometry.h.

362 {
365 int maxIter = params[ "projectionMaxIter" ].as<int>();
366 double accuracy = params[ "projectionAccuracy" ].as<double>();
367 double gamma = params[ "projectionGamma" ].as<double>();
368 Scalar gridstep = params[ "gridstep" ].as<Scalar>();
369 true_estimator.attach( *shape );
371 true_estimator.init( gridstep, surfels.begin(), surfels.end() );
372 true_estimator.eval( surfels.begin(), surfels.end(),
374 return n_true_estimations;
375 }
sgf::ShapeMeanCurvatureFunctor< ImplicitShape3D > MeanCurvatureFunctor
TrueDigitalSurfaceLocalEstimator< KSpace, ImplicitShape3D, MeanCurvatureFunctor > TrueMeanCurvatureEstimator

â—† getNormalVectors()

template<typename TKSpace>
RealVectors DGtal::ShortcutsGeometry< TKSpace >::getNormalVectors ( CountedPtr< ImplicitShape3D > shape,
const KSpace & K,
const SurfelRange & surfels,
const Parameters & params = parametersShapeGeometry() )
inlinestatic

Given a space K, an implicit shape, a sequence of surfels, and a gridstep h, returns the normal vectors at the specified surfels, in the same order.

Note
that the normal vector is approximated by projecting the surfel centroid onto the implicit 3D shape.
Parameters
[in]shapethe implicit shape.
[in]Kthe Khalimsky space whose domain encompasses the digital shape.
[in]surfelsthe sequence of surfels at which we compute the normals
[in]paramsthe parameters:
  • projectionMaxIter [ 20]: the maximum number of iteration for the projection.
  • projectionAccuracy[0.0001]: the zero-proximity stop criterion during projection.
  • projectionGamma [ 0.5]: the damping coefficient of the projection.
  • gridstep [ 1.0]: the gridstep that defines the digitization (often called h).
Returns
the vector containing the true normals, in the same order as surfels.

Definition at line 318 of file ShortcutsGeometry.h.

323 {
326 int maxIter = params[ "projectionMaxIter" ].as<int>();
327 double accuracy = params[ "projectionAccuracy" ].as<double>();
328 double gamma = params[ "projectionGamma" ].as<double>();
329 Scalar gridstep = params[ "gridstep" ].as<Scalar>();
330 true_estimator.attach( *shape );
332 true_estimator.init( gridstep, surfels.begin(), surfels.end() );
333 true_estimator.eval( surfels.begin(), surfels.end(),
335 return n_true_estimations;
336 }
TrueDigitalSurfaceLocalEstimator< KSpace, ImplicitShape3D, NormalFunctor > TrueNormalEstimator
sgf::ShapeNormalVectorFunctor< ImplicitShape3D > NormalFunctor

â—† getPositions() [1/2]

template<typename TKSpace>
RealPoints DGtal::ShortcutsGeometry< TKSpace >::getPositions ( CountedPtr< ImplicitShape3D > shape,
const KSpace & K,
const SurfelRange & surfels,
const Parameters & params = parametersShapeGeometry() )
inlinestatic

Given a space K, an implicit shape, a sequence of surfels, and a gridstep h, returns the closest positions on the surface at the specified surfels, in the same order.

Note
The surfel centroids are iteratively projected onto the implicit surface through a damped Newton process.
Parameters
[in]shapethe implicit shape.
[in]Kthe Khalimsky space whose domain encompasses the digital shape.
[in]surfelsthe sequence of surfels that we project onto the shape's surface
[in]paramsthe parameters:
  • projectionMaxIter [ 20]: the maximum number of iteration for the projection.
  • projectionAccuracy[0.0001]: the zero-proximity stop criterion during projection.
  • projectionGamma [ 0.5]: the damping coefficient of the projection.
  • gridstep [ 1.0]: the gridstep that defines the digitization (often called h).
Returns
the vector containing the true normals, in the same order as surfels.

Definition at line 250 of file ShortcutsGeometry.h.

255 {
258 int maxIter = params[ "projectionMaxIter" ].as<int>();
259 double accuracy = params[ "projectionAccuracy" ].as<double>();
260 double gamma = params[ "projectionGamma" ].as<double>();
261 Scalar gridstep = params[ "gridstep" ].as<Scalar>();
262 true_estimator.attach( *shape );
264 true_estimator.init( gridstep, surfels.begin(), surfels.end() );
265 true_estimator.eval( surfels.begin(), surfels.end(),
267 return n_true_estimations;
268 }
sgf::ShapePositionFunctor< ImplicitShape3D > PositionFunctor
TrueDigitalSurfaceLocalEstimator< KSpace, ImplicitShape3D, PositionFunctor > TruePositionEstimator

â—† getPositions() [2/2]

template<typename TKSpace>
RealPoints DGtal::ShortcutsGeometry< TKSpace >::getPositions ( CountedPtr< ImplicitShape3D > shape,
const RealPoints & points,
const Parameters & params = parametersShapeGeometry() )
inlinestatic

Given an implicit shape and a sequence of points, returns the closest positions on the surface at the specified points, in the same order.

Parameters
[in]shapethe implicit shape.
[in]pointsthe sequence of points that we project onto the shape's surface.
[in]paramsthe parameters:
  • projectionMaxIter [ 20]: the maximum number of iteration for the projection.
  • projectionAccuracy[0.0001]: the zero-proximity stop criterion during projection.
  • projectionGamma [ 0.5]: the damping coefficient of the projection.
  • gridstep [ 1.0]: the gridstep that defines the digitization (often called h).
Returns
the vector containing the projected points.

Definition at line 284 of file ShortcutsGeometry.h.

288 {
289 RealPoints proj_points( points.size() );
290 int maxIter = params[ "projectionMaxIter" ].as<int>();
291 double accuracy = params[ "projectionAccuracy" ].as<double>();
292 double gamma = params[ "projectionGamma" ].as<double>();
293 for ( unsigned int i = 0; i < points.size(); ++i )
294 proj_points[ i ] = shape->nearestPoint( points[ i ], accuracy,
295 maxIter, gamma );
296 return proj_points;
297 }
std::vector< RealPoint > RealPoints

â—† getPrincipalCurvaturesAndDirections()

template<typename TKSpace>
CurvatureTensorQuantities DGtal::ShortcutsGeometry< TKSpace >::getPrincipalCurvaturesAndDirections ( CountedPtr< ImplicitShape3D > shape,
const KSpace & K,
const SurfelRange & surfels,
const Parameters & params = parametersShapeGeometry() )
inlinestatic

Given a space K, an implicit shape, a sequence of surfels, and a gridstep h, returns the principal curvatures and principal directions as a tuple (k1, k2, d1, d2) at the specified surfels, in the same order.

Note
that the second principal direction is approximated by projecting the surfel centroid onto the implicit 3D shape.
Parameters
[in]shapethe implicit shape.
[in]Kthe Khalimsky space whose domain encompasses the digital shape.
[in]surfelsthe sequence of surfels at which we compute the normals
[in]paramsthe parameters:
  • projectionMaxIter [ 20]: the maximum number of iteration for the projection.
  • projectionAccuracy[0.0001]: the zero-proximity stop criterion during projection.
  • projectionGamma [ 0.5]: the damping coefficient of the projection.
  • gridstep [ 1.0]: the gridstep that defines the digitization (often called h).
Returns
the vector containing the principal curvatures and principal directions as a tuple (k1, k2, d1, d2), in the same order as surfels.

Definition at line 808 of file ShortcutsGeometry.h.

813 {
816 int maxIter = params[ "projectionMaxIter" ].as<int>();
817 double accuracy = params[ "projectionAccuracy" ].as<double>();
818 double gamma = params[ "projectionGamma" ].as<double>();
819 Scalar gridstep = params[ "gridstep" ].as<Scalar>();
820 true_estimator.attach( *shape );
823 true_estimator.init( gridstep, surfels.begin(), surfels.end() );
824 true_estimator.eval( surfels.begin(), surfels.end(),
826 return n_true_estimations;
827 }
TrueDigitalSurfaceLocalEstimator< KSpace, ImplicitShape3D, PrincipalCurvaturesAndDirectionsFunctor > TruePrincipalCurvaturesAndDirectionsEstimator
sgf::ShapePrincipalCurvaturesAndDirectionsFunctor< ImplicitShape3D > PrincipalCurvaturesAndDirectionsFunctor

â—† getScalarsAbsoluteDifference()

template<typename TKSpace>
Scalars DGtal::ShortcutsGeometry< TKSpace >::getScalarsAbsoluteDifference ( const Scalars & v1,
const Scalars & v2 )
inlinestatic

Computes the absolute difference between each element of the two vectors.

Parameters
[in]v1any vector of values.
[in]v2any vector of values.
Returns
the vector composed of elemenst |v1[i]-v2[i]|.

Definition at line 2022 of file ShortcutsGeometry.h.

2024 {
2025 Scalars result( v1.size() );
2026 std::transform( v2.cbegin(), v2.cend(), v1.cbegin(), result.begin(),
2027 [] ( Scalar val1, Scalar val2 )
2028 { return fabs( val1 - val2 ); } );
2029 return result;
2030 }

â—† getScalarsNormL1()

template<typename TKSpace>
Scalar DGtal::ShortcutsGeometry< TKSpace >::getScalarsNormL1 ( const Scalars & v1,
const Scalars & v2 )
inlinestatic

Computes the l1-norm of v1-v2, ie the average of the absolute differences of the two vectors.

Parameters
[in]v1any vector of values.
[in]v2any vector of values.
Returns
the normL1 of v1-v2, ie. 1/n sum_i |v1[i]-v2[i]|.

Definition at line 2055 of file ShortcutsGeometry.h.

2057 {
2058 Scalar sum = 0;
2059 for ( unsigned int i = 0; i < v1.size(); i++ )
2060 sum += fabs( v1[ i ] - v2[ i ] );
2061 return sum / v1.size();
2062 }

â—† getScalarsNormL2()

template<typename TKSpace>
Scalar DGtal::ShortcutsGeometry< TKSpace >::getScalarsNormL2 ( const Scalars & v1,
const Scalars & v2 )
inlinestatic

Computes the l2-norm of v1-v2, ie the square root of the mean-squared error of the two vectors.

Parameters
[in]v1any vector of values.
[in]v2any vector of values.
Returns
the normL2 of v1-v2, ie. sqrt( 1/n sum_i (v1[i]-v2[i])^2 ).

Definition at line 2039 of file ShortcutsGeometry.h.

2041 {
2042 Scalar sum = 0;
2043 for ( unsigned int i = 0; i < v1.size(); i++ )
2044 sum += ( v1[ i ] - v2[ i ] ) * ( v1[ i ] - v2[ i ] );
2045 return sqrt( sum / v1.size() );
2046 }

â—† getScalarsNormLoo()

template<typename TKSpace>
Scalar DGtal::ShortcutsGeometry< TKSpace >::getScalarsNormLoo ( const Scalars & v1,
const Scalars & v2 )
inlinestatic

Computes the loo-norm of v1-v2, ie the maximum of the absolute differences of the two vectors.

Parameters
[in]v1any vector of values.
[in]v2any vector of values.
Returns
the normLoo of v1-v2, ie. max_i |v1[i]-v2[i]|.

Definition at line 2071 of file ShortcutsGeometry.h.

2073 {
2074 Scalar loo = 0;
2075 for ( unsigned int i = 0; i < v1.size(); i++ )
2076 loo = std::max( loo, fabs( v1[ i ] - v2[ i ] ) );
2077 return loo;
2078 }

â—† getSecondPrincipalCurvatures()

template<typename TKSpace>
Scalars DGtal::ShortcutsGeometry< TKSpace >::getSecondPrincipalCurvatures ( CountedPtr< ImplicitShape3D > shape,
const KSpace & K,
const SurfelRange & surfels,
const Parameters & params = parametersShapeGeometry() )
inlinestatic

Given a space K, an implicit shape, a sequence of surfels, and a gridstep h, returns the second (greatest) principal curvatures at the specified surfels, in the same order.

Note
that the second principal curvature is approximated by projecting the surfel centroid onto the implicit 3D shape.
Parameters
[in]shapethe implicit shape.
[in]Kthe Khalimsky space whose domain encompasses the digital shape.
[in]surfelsthe sequence of surfels at which we compute the normals
[in]paramsthe parameters:
  • projectionMaxIter [ 20]: the maximum number of iteration for the projection.
  • projectionAccuracy[0.0001]: the zero-proximity stop criterion during projection.
  • projectionGamma [ 0.5]: the damping coefficient of the projection.
  • gridstep [ 1.0]: the gridstep that defines the digitization (often called h).
Returns
the vector containing the second principal curvatures, in the same order as surfels.

Definition at line 681 of file ShortcutsGeometry.h.

686 {
689 int maxIter = params[ "projectionMaxIter" ].as<int>();
690 double accuracy = params[ "projectionAccuracy" ].as<double>();
691 double gamma = params[ "projectionGamma" ].as<double>();
692 Scalar gridstep = params[ "gridstep" ].as<Scalar>();
693 true_estimator.attach( *shape );
696 true_estimator.init( gridstep, surfels.begin(), surfels.end() );
697 true_estimator.eval( surfels.begin(), surfels.end(),
699 return n_true_estimations;
700 }
sgf::ShapeSecondPrincipalCurvatureFunctor< ImplicitShape3D > SecondPrincipalCurvatureFunctor
TrueDigitalSurfaceLocalEstimator< KSpace, ImplicitShape3D, SecondPrincipalCurvatureFunctor > TrueSecondPrincipalCurvatureEstimator

â—† getSecondPrincipalDirections()

template<typename TKSpace>
RealVectors DGtal::ShortcutsGeometry< TKSpace >::getSecondPrincipalDirections ( CountedPtr< ImplicitShape3D > shape,
const KSpace & K,
const SurfelRange & surfels,
const Parameters & params = parametersShapeGeometry() )
inlinestatic

Given a space K, an implicit shape, a sequence of surfels, and a gridstep h, returns the second principal directions (corresponding to the greatest principal curvature) at the specified surfels, in the same order.

Note
that the second principal direction is approximated by projecting the surfel centroid onto the implicit 3D shape.
Parameters
[in]shapethe implicit shape.
[in]Kthe Khalimsky space whose domain encompasses the digital shape.
[in]surfelsthe sequence of surfels at which we compute the normals
[in]paramsthe parameters:
  • projectionMaxIter [ 20]: the maximum number of iteration for the projection.
  • projectionAccuracy[0.0001]: the zero-proximity stop criterion during projection.
  • projectionGamma [ 0.5]: the damping coefficient of the projection.
  • gridstep [ 1.0]: the gridstep that defines the digitization (often called h).
Returns
the vector containing the second principal directions, in the same order as surfels.

Definition at line 765 of file ShortcutsGeometry.h.

770 {
773 int maxIter = params[ "projectionMaxIter" ].as<int>();
774 double accuracy = params[ "projectionAccuracy" ].as<double>();
775 double gamma = params[ "projectionGamma" ].as<double>();
776 Scalar gridstep = params[ "gridstep" ].as<Scalar>();
777 true_estimator.attach( *shape );
780 true_estimator.init( gridstep, surfels.begin(), surfels.end() );
781 true_estimator.eval( surfels.begin(), surfels.end(),
783 return n_true_estimations;
784 }
sgf::ShapeSecondPrincipalDirectionFunctor< ImplicitShape3D > SecondPrincipalDirectionFunctor
TrueDigitalSurfaceLocalEstimator< KSpace, ImplicitShape3D, SecondPrincipalDirectionFunctor > TrueSecondPrincipalDirectionEstimator

â—† getStatistic()

template<typename TKSpace>
ScalarStatistic DGtal::ShortcutsGeometry< TKSpace >::getStatistic ( const Scalars & v)
inlinestatic

Computes the statistic of a vector of scalars

Parameters
[in]va vector of scalars
Returns
its statistic.

Definition at line 1979 of file ShortcutsGeometry.h.

1980 {
1982 stat.addValues( v.begin(), v.end() );
1983 stat.terminate();
1984 return stat;
1985 }
::DGtal::Statistic< Scalar > ScalarStatistic

â—† getTrivialNormalVectors()

template<typename TKSpace>
RealVectors DGtal::ShortcutsGeometry< TKSpace >::getTrivialNormalVectors ( const KSpace & K,
const SurfelRange & surfels )
inlinestatic

Given a digital space K and a vector of surfels, returns the trivial normals at the specified surfels, in the same order.

Parameters
[in]Kthe Khalimsky space whose domain encompasses the digital shape.
[in]surfelsthe sequence of surfels at which we compute the normals
Returns
the vector containing the trivial normal vectors, in the same order as surfels.

Definition at line 1002 of file ShortcutsGeometry.h.

1004 {
1006 for ( auto s : surfels )
1007 {
1008 Dimension k = K.sOrthDir( s );
1009 bool direct = K.sDirect( s, k );
1011 t[ k ] = direct ? -1.0 : 1.0;
1012 result.push_back( t );
1013 }
1014 return result;
1015 }

Referenced by DGtal::ShortcutsGeometry< Z3i::KSpace >::getIINormalVectors().

â—† getVCMNormalVectors()

template<typename TKSpace>
template<typename TAnyDigitalSurface>
RealVectors DGtal::ShortcutsGeometry< TKSpace >::getVCMNormalVectors ( CountedPtr< TAnyDigitalSurface > surface,
const SurfelRange & surfels,
const Parameters & params = parametersGeometryEstimation() )
inlinestatic

Given a digital surface surface, a sequence of surfels, and some parameters params, returns the normal Voronoi Covariance Measure (VCM) estimation at the specified surfels, in the same order.

Template Parameters
TAnyDigitalSurfaceeither kind of DigitalSurface, like ShortcutsGeometry::LightDigitalSurface or ShortcutsGeometry::DigitalSurface.
Parameters
[in]surfacethe digital surface
[in]surfelsthe sequence of surfels at which we compute the normals
[in]paramsthe parameters:
  • verbose [ 1]: verbose trace mode 0: silent, 1: verbose.
  • t-ring [ 3.0]: the radius used when computing convolved trivial normals (it is a graph distance, not related to the grid step).
  • R-radius [ 10.0]: the constant for distance parameter R in R(h)=R h^alpha (VCM).
  • r-radius [ 3.0]: the constant for kernel radius parameter r in r(h)=r h^alpha (VCM,II,Trivial).
  • kernel [ "hat"]: the kernel integration function chi_r, either "hat" or "ball". )
  • alpha [ 0.33]: the parameter alpha in r(h)=r h^alpha (VCM, II)."
  • surfelEmbedding [ 0]: the surfel -> point embedding for VCM estimator: 0: Pointels, 1: InnerSpel, 2: OuterSpel.
  • gridstep [ 1.0]: the gridstep that defines the digitization (often called h).
Returns
the vector containing the estimated normals, in the same order as surfels.

Definition at line 1090 of file ShortcutsGeometry.h.

1094 {
1098 int verbose = params[ "verbose" ].as<int>();
1099 std::string kernel = params[ "kernel" ].as<std::string>();
1100 Scalar h = params[ "gridstep" ].as<Scalar>();
1101 Scalar R = params[ "R-radius" ].as<Scalar>();
1102 Scalar r = params[ "r-radius" ].as<Scalar>();
1103 Scalar t = params[ "t-ring" ].as<Scalar>();
1104 Scalar alpha = params[ "alpha" ].as<Scalar>();
1105 int embedding = params[ "embedding" ].as<int>();
1106 // Adjust parameters according to gridstep if specified.
1107 if ( alpha != 1.0 ) R *= pow( h, alpha-1.0 );
1108 if ( alpha != 1.0 ) r *= pow( h, alpha-1.0 );
1110 embedding == 1 ? InnerSpel : OuterSpel;
1111 if ( verbose > 0 )
1112 {
1113 trace.info() << "- VCM normal kernel=" << kernel << " emb=" << embedding
1114 << " alpha=" << alpha << std::endl;
1115 trace.info() << "- VCM normal r=" << (r*h) << " (continuous) "
1116 << r << " (discrete)" << std::endl;
1117 trace.info() << "- VCM normal R=" << (R*h) << " (continuous) "
1118 << R << " (discrete)" << std::endl;
1119 trace.info() << "- VCM normal t=" << t << " (discrete)" << std::endl;
1120 }
1121 if ( kernel == "hat" )
1122 {
1129 KernelFunction chi_r( 1.0, r );
1131 estimator.attach( *surface );
1132 estimator.setParams( embType, R, r, chi_r, t, Metric(), verbose > 0 );
1133 estimator.init( h, surfels.begin(), surfels.end() );
1134 estimator.eval( surfels.begin(), surfels.end(),
1136 }
1137 else if ( kernel == "ball" )
1138 {
1145 KernelFunction chi_r( 1.0, r );
1147 estimator.attach( *surface );
1148 estimator.setParams( embType, R, r, chi_r, t, Metric(), verbose > 0 );
1149 estimator.init( h, surfels.begin(), surfels.end() );
1150 estimator.eval( surfels.begin(), surfels.end(),
1152 }
1153 else
1154 {
1155 trace.warning() << "[ShortcutsGeometry::getVCMNormalVectors] Unknown kernel: "
1156 << kernel << std::endl;
1157 }
1158 return n_estimations;
1159 }

â—† getVectorsAngleDeviation()

template<typename TKSpace>
Scalars DGtal::ShortcutsGeometry< TKSpace >::getVectorsAngleDeviation ( const RealVectors & v1,
const RealVectors & v2 )
inlinestatic

Computes the statistic that measures the angle differences between the two arrays of unit vectors.

Parameters
[in]v1the first array of unit vectors (normals)
[in]v2the second array of unit vectors (normals)
Returns
the vector of angle differences.

Definition at line 1994 of file ShortcutsGeometry.h.

1996 {
1997 Scalars v( v1.size() );
1998 if ( v1.size() == v2.size() )
1999 {
2000 auto outIt = v.begin();
2001 for ( auto it1 = v1.cbegin(), it2 = v2.cbegin(), itE1 = v1.cend();
2002 it1 != itE1; ++it1, ++it2 )
2003 {
2004 Scalar angle_error = acos( (*it1).dot( *it2 ) );
2005 *outIt++ = angle_error;
2006 }
2007 }
2008 else
2009 {
2010 trace.warning() << "[ShortcutsGeometry::getVectorsAngleDeviation]"
2011 << " v1.size()=" << v1.size() << " should be equal to "
2012 << " v2.size()=" << v2.size() << std::endl;
2013 }
2014 return v;
2015 }

â—† operator=() [1/2]

template<typename TKSpace>
ShortcutsGeometry & DGtal::ShortcutsGeometry< TKSpace >::operator= ( const ShortcutsGeometry< TKSpace > & other)
delete

Copy assignment operator.

Parameters
otherthe object to copy.
Returns
a reference on 'this'.

â—† operator=() [2/2]

template<typename TKSpace>
ShortcutsGeometry & DGtal::ShortcutsGeometry< TKSpace >::operator= ( ShortcutsGeometry< TKSpace > && other)
delete

Move assignment operator.

Parameters
otherthe object to move.
Returns
a reference on 'this'.

â—† orientVectors()

template<typename TKSpace>
void DGtal::ShortcutsGeometry< TKSpace >::orientVectors ( RealVectors & v,
const RealVectors & ref_v )
inlinestatic

Orient v so that it points in the same direction as ref_v (scalar product is then non-negative afterwards).

Parameters
[in,out]vthe vectors to reorient.
[in]ref_vthe vectors having the reference orientation.

Definition at line 1966 of file ShortcutsGeometry.h.

1968 {
1969 std::transform( ref_v.cbegin(), ref_v.cend(), v.cbegin(), v.begin(),
1970 [] ( RealVector rw, RealVector w )
1971 { return rw.dot( w ) >= 0.0 ? w : -w; } );
1972 }

Referenced by DGtal::ShortcutsGeometry< Z3i::KSpace >::getIINormalVectors().

â—† parametersATApproximation()

template<typename TKSpace>
Parameters DGtal::ShortcutsGeometry< TKSpace >::parametersATApproximation ( )
inlinestatic
Returns
the parameters and their default values which are used to compute Ambrosio-Tortorelli piecewise-smooth approximation of a function.
  • at-enabled [ 1 ]: 1 if AT is enabled, 0 otherwise.
  • at-alpha [ 0.1 ]: parameter alpha in AT (data fit)
  • at-lambda [ 0.025 ]: parameter lambda in AT (1/length of discontinuities)
  • at-epsilon [ 0.5 ]: (last value of) parameter epsilon in AT (width of discontinuities)
  • at-epsilon-start[ 2.0 ]: first value for parameter epsilon in Gamma-convergence optimization (sequence of AT optimization with decreasing epsilon)
  • at-epsilon-ratio[ 2.0 ]: ratio between two consecutive epsilon value in Gamma-convergence optimization (sequence of AT optimization with decreasing epsilon)
  • at-max-iter [ 10 ]: maximum number of alternate minization in AT optimization
  • at-diff-v-max [ 0.0001]: stopping criterion that measures the loo-norm of the evolution of v between two iterations
  • at-v-policy ["Maximum"]: the policy when outputing feature vector v onto cells: "Average"|"Minimum"|"Maximum"

Definition at line 1690 of file ShortcutsGeometry.h.

1691 {
1692 return Parameters
1693 ( "at-enabled", 1 )
1694 ( "at-alpha", 0.1 )
1695 ( "at-lambda", 0.025 )
1696 ( "at-epsilon", 0.25 )
1697 ( "at-epsilon-start", 2.0 )
1698 ( "at-epsilon-ratio", 2.0 )
1699 ( "at-max-iter", 10 )
1700 ( "at-diff-v-max", 0.0001 )
1701 ( "at-v-policy", "Maximum" );
1702 }

Referenced by DGtal::ShortcutsGeometry< Z3i::KSpace >::defaultParameters().

â—† parametersDigitizedImplicitShape3D()

template<typename TKSpace>
Parameters DGtal::Shortcuts< TKSpace >::parametersDigitizedImplicitShape3D ( )
inlinestatic
Returns
the parameters and their default values which are used for digitization.
  • minAABB [-10.0]: the min value of the AABB bounding box (domain)
  • maxAABB [ 10.0]: the max value of the AABB bounding box (domain)
  • gridstep [ 1.0]: the gridstep that defines the digitization (often called h).
  • offset [ 5.0]: the digital dilation of the digital space, useful when you process shapes and that you add noise.

Definition at line 462 of file Shortcuts.h.

463 {
464 return Parameters
465 ( "minAABB", -10.0 )
466 ( "maxAABB", 10.0 )
467 ( "gridstep", 1.0 )
468 ( "offset", 5.0 );
469 }

â—† parametersGeometryEstimation()

template<typename TKSpace>
Parameters DGtal::ShortcutsGeometry< TKSpace >::parametersGeometryEstimation ( )
inlinestatic
Returns
the parameters and their default values which are used to estimate the geometry of a digital surface.
  • verbose [ 1]: verbose trace mode 0: silent, 1: verbose.
  • t-ring [ 3.0]: the radius used when computing convolved trivial normals (it is a graph distance, not related to the grid step).
  • R-radius [ 10.0]: the constant for distance parameter R in R(h)=R h^alpha (VCM).
  • r-radius [ 3.0]: the constant for kernel radius parameter r in r(h)=r h^alpha (VCM,II,Trivial).
  • kernel [ "hat"]: the kernel integration function chi_r, either "hat" or "ball". )
  • alpha [ 0.33]: the parameter alpha in r(h)=r h^alpha (VCM, II)."
  • surfelEmbedding [ 0]: the surfel -> point embedding for VCM estimator: 0: Pointels, 1: InnerSpel, 2: OuterSpel.
  • unit_u [0]: Use unit normals for (CNC) curvature computations.

Definition at line 979 of file ShortcutsGeometry.h.

980 {
981 return Parameters
982 ( "verbose", 1 )
983 ( "t-ring", 3.0 )
984 ( "kernel", "hat" )
985 ( "R-radius", 10.0 )
986 ( "r-radius", 3.0 )
987 ( "alpha", 0.33 )
988 ( "surfelEmbedding", 0 )
989 ( "unit_u" , 0 );
990 }

Referenced by DGtal::ShortcutsGeometry< Z3i::KSpace >::defaultParameters().

â—† parametersKSpace()

template<typename TKSpace>
Parameters DGtal::Shortcuts< TKSpace >::parametersKSpace ( )
inlinestatic
Returns
the parameters and their default values which are used for digitization.
  • closed [1 ]: specifies if the Khalimsky space is closed (!=0) or not (==0).
  • gridsizex[1.0]: specifies the space between points along x.
  • gridsizey[1.0]: specifies the space between points along y.
  • gridsizez[1.0]: specifies the space between points along z.

Definition at line 312 of file Shortcuts.h.

313 {
314 return Parameters
315 ( "closed", 1 )
316 ( "gridsizex", 1.0 )
317 ( "gridsizey", 1.0 )
318 ( "gridsizez", 1.0 );
319 }

â—† parametersShapeGeometry()

template<typename TKSpace>
Parameters DGtal::ShortcutsGeometry< TKSpace >::parametersShapeGeometry ( )
inlinestatic
Returns
the parameters and their default values which are used to approximate the geometry of continuous shape.
  • projectionMaxIter [ 20]: the maximum number of iteration for the projection.
  • projectionAccuracy[0.0001]: the zero-proximity stop criterion during projection.
  • projectionGamma [ 0.5]: the damping coefficient of the projection.
  • gridstep [ 1.0]: the gridstep that defines the digitization (often called h).

Definition at line 222 of file ShortcutsGeometry.h.

223 {
224 return Parameters
225 ( "projectionMaxIter", 20 )
226 ( "projectionAccuracy", 0.0001 )
227 ( "projectionGamma", 0.5 )
228 ( "gridstep", 1.0 );
229 }

Referenced by DGtal::ShortcutsGeometry< Z3i::KSpace >::defaultParameters().


The documentation for this class was generated from the following file: