From 07f99bada2390f25bba85d1821a3c76d8002ebea Mon Sep 17 00:00:00 2001 From: Robin Lamy Date: Fri, 25 Jun 2021 13:55:56 +0200 Subject: [PATCH 01/19] pour pull request --- ChangeLog.md | 1 + 1 file changed, 1 insertion(+) diff --git a/ChangeLog.md b/ChangeLog.md index 5f860dc75f..372e39b1ce 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -1,4 +1,5 @@ # DGtal 1.3(beta) +# Pour pull request ## Bug fixes From 3ab2cebee195d2609c0af8c18c56483bd1f5e846 Mon Sep 17 00:00:00 2001 From: David Coeurjolly Date: Fri, 25 Jun 2021 15:11:54 +0200 Subject: [PATCH 02/19] Changelog edit --clean-- --- ChangeLog.md | 1 - 1 file changed, 1 deletion(-) diff --git a/ChangeLog.md b/ChangeLog.md index 372e39b1ce..5f860dc75f 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -1,5 +1,4 @@ # DGtal 1.3(beta) -# Pour pull request ## Bug fixes From 4a3a4be4765bf9078bf1773613e8802412a74a40 Mon Sep 17 00:00:00 2001 From: Robin Lamy Date: Fri, 25 Jun 2021 15:22:57 +0200 Subject: [PATCH 03/19] ChangeLog edit --- ChangeLog.md | 1 + 1 file changed, 1 insertion(+) diff --git a/ChangeLog.md b/ChangeLog.md index 5f860dc75f..2b6164bbd0 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -1,5 +1,6 @@ # DGtal 1.3(beta) + ## Bug fixes - *General* From 5f3c90a74eeb516ef0198745687be9f8bf1fb1a4 Mon Sep 17 00:00:00 2001 From: Robin Lamy Date: Tue, 29 Jun 2021 14:57:58 +0200 Subject: [PATCH 04/19] Scale Medial Axis dimension d, Lambda Medial Axis dimension 2 --- .../volumes/distance/LambdaMedialAxis.h | 182 ++++++++++++++++++ .../volumes/distance/ScaleMedialAxis.h | 156 +++++++++++++++ 2 files changed, 338 insertions(+) create mode 100644 src/DGtal/geometry/volumes/distance/LambdaMedialAxis.h create mode 100644 src/DGtal/geometry/volumes/distance/ScaleMedialAxis.h diff --git a/src/DGtal/geometry/volumes/distance/LambdaMedialAxis.h b/src/DGtal/geometry/volumes/distance/LambdaMedialAxis.h new file mode 100644 index 0000000000..21942698c1 --- /dev/null +++ b/src/DGtal/geometry/volumes/distance/LambdaMedialAxis.h @@ -0,0 +1,182 @@ +/** + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + **/ + +#pragma once + +/** + * @file LambdaMedialAxis.h + * @brief Linear in time distance transformation + * @author David Coeurjolly (\c david.coeurjolly@liris.cnrs.fr ) + * Laboratoire d'InfoRmatique en Image et Systèmes d'information - LIRIS (CNRS, UMR 5205), CNRS, France + * + * @date 2012/12/08 + * + * Header file for module + * + * This file is part of the DGtal library. + * + * @see testReducedMedialAxis.cpp, testReducedMedialAxisND.cpp, testReverseDT.cpp + */ + +#if defined(LambdaMedialAxis_RECURSES) +#error Recursive header files inclusion detected in ReducedMedialAxis.h +#else // defined(ReducedMedialAxis_RECURSES) +/** Prevents recursive inclusion of headers. */ +#define LambdaMedialAxis_RECURSES + +#if !defined LambdaMedialAxis_h +/** Prevents repeated inclusion of headers. */ +#define LambdaMedialAxis_h + +////////////////////////////////////////////////////////////////////////////// +// Inclusions +#include +#include +#include "DGtal/base/Common.h" +#include "DGtal/helpers/StdDefs.h" +#include "DGtal/kernel/NumberTraits.h" +#include "DGtal/geometry/volumes/distance/PowerMap.h" +#include "DGtal/kernel/domains/HyperRectDomain.h" +#include "DGtal/images/ImageContainerBySTLMap.h" +#include "DGtal/images/Image.h" +#include "DGtal/geometry/volumes/distance/DistanceTransformation.h" +#include "DGtal/geometry/volumes/distance/VoronoiMap.h" +#include "DGtal/kernel/sets/CDigitalSet.h" +#include "DGtal/geometry/tools/ImplicitBallTools.h" +////////////////////////////////////////////////////////////////////////////// + +namespace DGtal +{ + + ///////////////////////////////////////////////////////////////////////////// + // template class LambdaMedialAxis + /** + * Description of template class 'LambdaMedialAxis'

+ * \brief Aim: Implementation of the separable medial axis + * extraction. + * + * This utility struct extract medial axis balls from a + * PowerMap. Basically, each (weighted) site of the PowerMap defines + * a digital maximal ball if its digital power cell restricted to + * the input shape is not empty @cite dcoeurjo_pami_RDMA . + * + * Optimal Separable Algorithms to Compute the Reverse + * Euclidean Distance Transformation and Discrete Medial Axis in + * Arbitrary Dimension, D. Coeurjolly and A. Montanvert, IEEE + * Transactions on Pattern Analysis and Machine Intelligence, + * 29(3):437-448, 2007. + * + * The output is an image associating ball radii (weight of the + * power map site) to maximal ball centers. Most methods output a + * lightweight proxy to an image container (of type ImageContainer, + * see below). + * + * @note Following ReverseDistanceTransformation, the input shape is + * defined as points with negative power distance. + * + * @tparam TPowerMap any specialized PowerMap type @tparam + * TImageContainer any model of CImage to store the medial axis + * points (default: ImageContainerBySTLVector). + * + * @see testReducedMedialAxis.cpp + */ + + + + template > + struct LambdaMedialAxis + { + //MA Container + typedef + typename DigitalSetSelector < typename TDistanceTransformation::Domain, + SMALL_DS + HIGH_ITER_DS >::Type SmallSet; + typedef Image Type; + typedef TDistanceTransformation DT; + typedef VoronoiMap VMap; + typedef PowerMap PMap; + //typedef ImplicitBall ImplicitBall; + + /** + * Extract reduced medial axis from a power map. + * This methods is in @f$ O(|powerMap|)@f$. + * + * @param aPowerMap the input powerMap + * + * @return a lightweight proxy to the ImageContainer specified in + * template arguments. + */ + static + Type getLambdaMedialAxis(TSet & set, typename DT::SeparableMetric & metric, double lambda) { + + SmallSet smallSet(set.domain()); + for (auto it : set) { + if (set(it)) { + smallSet.insert(it); + } + } + TImageContainer *computedMA = new TImageContainer( smallSet.domain() ); + TImageContainer *squaredDT = new TImageContainer( smallSet.domain() ); + Z2i::SmallObject8_4 setSmallObject(Z2i::dt8_4, smallSet); + VMap vmap(smallSet.domain(), smallSet, metric); + DT dt(smallSet.domain(), smallSet, metric); + for (typename DT::Domain::ConstIterator it = dt.domain().begin(); it != dt.domain().end(); it++) { + squaredDT->setValue((*it), pow(dt(*it), 2)); + } + PMap aPowerMap(squaredDT->domain(), squaredDT, Z2i::l2PowerMetric); + for (typename PMap::Domain::ConstIterator it = aPowerMap.domain().begin(), + itend = aPowerMap.domain().end(); it != itend; ++it) + { + const auto v = aPowerMap( *it ); + const auto pv = aPowerMap.projectPoint( v ); + + if ( aPowerMap.metricPtr()->powerDistance( *it, v, aPowerMap.weightImagePtr()->operator()( pv ) ) + < NumberTraits::ZERO ) { + + Z2i::Point vmapPoint(vmap(*it)); + double vMapDistance = pow(vmapPoint[0] - (*it)[0], 2) + pow(vmapPoint[1] - (*it)[1], 2); + std::vector setForPotential; + SmallSet neighborhood(setSmallObject.neighborhood(*it).pointSet()); + for (auto itbis : neighborhood) { + Z2i::Point vMapDuVoisin(vmap(itbis)); + double distanceAuVmapDuVoisin = pow(vMapDuVoisin[0] - (*it)[0], 2) + pow(vMapDuVoisin[1] - (*it)[1], 2); + if (distanceAuVmapDuVoisin == vMapDistance) { + setForPotential.push_back(vMapDuVoisin); + } + } + SmallSet R(set.domain()); + ImplicitBall enclosing(smallestEuclideanEnclosingBall(setForPotential, R)); + if (enclosing.radius() > lambda) { + computedMA->setValue( v, aPowerMap.weightImagePtr()->operator()( pv ) ); + } + + } + } + return Type( computedMA ); + } + }; // end of class LambdaMedialAxis + +} // namespace DGtal + +// // +/////////////////////////////////////////////////////////////////////////////// + +#endif // !defined LambdaMedialAxis_h + +#undef LambdaMedialAxis_RECURSES +#endif // else defined(LambdaMedialAxisdesign pa_RECURSES) diff --git a/src/DGtal/geometry/volumes/distance/ScaleMedialAxis.h b/src/DGtal/geometry/volumes/distance/ScaleMedialAxis.h new file mode 100644 index 0000000000..5fb2ff771b --- /dev/null +++ b/src/DGtal/geometry/volumes/distance/ScaleMedialAxis.h @@ -0,0 +1,156 @@ +/** + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + **/ + +#pragma once + +/** + * @file ScaledMedialAxis.h + * @brief Linear in time distance transformation + * @author David Coeurjolly (\c david.coeurjolly@liris.cnrs.fr ) + * Laboratoire d'InfoRmatique en Image et Systèmes d'information - LIRIS (CNRS, UMR 5205), CNRS, France + * + * @date 2012/12/08 + * + * Header file for module + * + * This file is part of the DGtal library. + * + * @see testReducedMedialAxis.cpp, testReducedMedialAxisND.cpp, testReverseDT.cpp + */ + +#if defined(ScaledMedialAxis_RECURSES) +#error Recursive header files inclusion detected in ScaledMedialAxis.h +#else // defined(ScaledMedialAxis_RECURSES) +/** Prevents recursive inclusion of headers. */ +#define ScaledMedialAxis_RECURSES + +#if !defined ScaledMedialAxis_h +/** Prevents repeated inclusion of headers. */ +#define ScaledMedialAxis_h + +////////////////////////////////////////////////////////////////////////////// +// Inclusions +#include +#include +#include +#include "DGtal/base/Common.h" +#include "DGtal/kernel/NumberTraits.h" +#include "DGtal/geometry/volumes/distance/CPowerSeparableMetric.h" +#include "DGtal/geometry/volumes/distance/PowerMap.h" +#include "DGtal/geometry/volumes/distance/DistanceTransformation.h" +#include "DGtal/geometry/volumes/distance/ReducedMedialAxis.h" +#include "DGtal/images/DefaultConstImageRange.h" +#include "DGtal/kernel/domains/HyperRectDomain.h" +#include "DGtal/images/ImageContainerBySTLMap.h" +#include "DGtal/images/CImage.h" +#include "DGtal/images/Image.h" +#include "DGtal/images/ImageSelector.h" +////////////////////////////////////////////////////////////////////////////// + +namespace DGtal +{ + + ///////////////////////////////////////////////////////////////////////////// + // template class ReducedMedialAxis + /** + * Description of template class 'ReducedMedialAxis'

+ * \brief Aim: Implementation of the separable medial axis + * extraction. + * + * This utility struct extract medial axis balls from a + * PowerMap. Basically, each (weighted) site of the PowerMap defines + * a digital maximal ball if its digital power cell restricted to + * the input shape is not empty @cite dcoeurjo_pami_RDMA . + * + * Optimal Separable Algorithms to Compute the Reverse + * Euclidean Distance Transformation and Discrete Medial Axis in + * Arbitrary Dimension, D. Coeurjolly and A. Montanvert, IEEE + * Transactions on Pattern Analysis and Machine Intelligence, + * 29(3):437-448, 2007. + * + * The output is an image associating ball radii (weight of the + * power map site) to maximal ball centers. Most methods output a + * lightweight proxy to an image container (of type ImageContainer, + * see below). + * + * @note Following ReverseDistanceTransformation, the input shape is + * defined as points with negative power distance. + * + * @tparam TPowerMap any specialized PowerMap type @tparam + * TImageContainer any model of CImage to store the medial axis + * points (default: ImageContainerBySTLVector). + * + * @see testReducedMedialAxis.cpp + */ + template > + struct ScaledMedialAxis + { + //MA Container + typedef Image Type; + typedef TDistanceTransformation DT; + + /** + * Extract the scaled medial axis from a distance transformation. + * This methods is in @f$ O(|distanceTransformation|)@f$. + * + * @param dt the input DistanceTransformation + * @param alpha the double ratio we use to expand and compress the RDMA + * + * @return a lightweight proxy to the ImageContainer specified in + * template arguments. + */ + + static Type getScaleAxisFromWeightedMap(DT & dt, double alpha, TPowerSeparableMetric powerSeparableMetric) { + + TImageContainer *computedMA = new TImageContainer( dt.domain() ); + TImageContainer *bigdt = new TImageContainer( dt.domain() ); + + for (typename DT::Domain::ConstIterator it = dt.domain().begin(); it != dt.domain().end(); it++) { + bigdt->setValue((*it), pow(dt(*it), 2)*alpha); + } + + PowerMap power(bigdt->domain(), bigdt, powerSeparableMetric); + + Type BigRdma = ReducedMedialAxis, TImageContainer >::getReducedMedialAxisFromPowerMap(power); + + for (typename Type::Domain::ConstIterator it = BigRdma.domain().begin(); it != BigRdma.domain().end(); it++) { + const auto v = BigRdma(*it); // Value of distance in BigRdma + //std::cout << v << std::endl; + const auto compressedValue = v/alpha; + computedMA->setValue((*it), compressedValue); + + } + /* + for (typename Type::Domain::ConstIterator it = computedMA->domain().begin(); it != computedMA->domain().end(); it++) { + const auto x = (*computedMA)(*it); + std::cout << x << std::endl; + } + */ + return Type( computedMA ); + } + }; // end of class ScaledMedialAxis + +} // namespace DGtal + +// // +/////////////////////////////////////////////////////////////////////////////// + +#endif // !defined ScaledMedialAxis_h + +#undef ScalededMedialAxis_RECURSES +#endif // else defined(ScaledMedialAxisdesign pa_RECURSES) From 0fff67d644a3ad97ad4c4c001d7768f57b9af405 Mon Sep 17 00:00:00 2001 From: Robin Lamy Date: Thu, 1 Jul 2021 15:55:04 +0200 Subject: [PATCH 05/19] test for ImplicitBallTools.h functions --- .../geometry/tools/testImplicitBallTools.cpp | 93 +++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 tests/geometry/tools/testImplicitBallTools.cpp diff --git a/tests/geometry/tools/testImplicitBallTools.cpp b/tests/geometry/tools/testImplicitBallTools.cpp new file mode 100644 index 0000000000..0e3f94574b --- /dev/null +++ b/tests/geometry/tools/testImplicitBallTools.cpp @@ -0,0 +1,93 @@ +/** + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + **/ + +/** + * @file + * @ingroup Tests + * @author + * + * + * @date 30/06/2021 + * + * This file is part of the DGtal library + */ + +/** + * Description of testPointVector-catch'

+ * Aim: simple test of \ref ImplicitBallTools functions with Catch unit test framework. + */ + +#include +#include +#include +#include "DGtal/base/Common.h" +#include "DGtal/helpers/StdDefs.h" +#include "DGtal/kernel/NumberTraits.h" +#include "DGtal/kernel/domains/HyperRectDomain.h" +#include "DGtal/images/ImageContainerBySTLMap.h" +#include "DGtal/kernel/sets/CDigitalSet.h" +#include "DGtal/shapes/implicit/ImplicitBall.h" +#include "DGtal/geometry/tools/ImplicitBallTools.h" + +#include "DGtalCatch.h" + +TEST_CASE( "Testing ImplicitBallTools functions" ) { + + typedef ImplicitBall > ImplicitBall2D; + typedef ImplicitBall > ImplicitBall3D; + + typedef Z2i::Point Point2D; + typedef Z2i::RealPoint RealPoint2D; + typedef Z3i::Point Point3D; + typedef Z3i::RealPoint RealPoint3D; + + SECTION( "Ball From 2 Points Dimension 2 and 3" ) { + ImplicitBall2D ball = ballFrom2Points(Point2D(0, 0), Point2D(5, 5)); + CHECK(ball.center() == RealPoint2D(2.5, 2.5)); + + ImplicitBall2D ball = ballFrom2Points(Point2D(4, 4), Point2D(8, 8)); + CHECK(ball.center() == RealPoint2D(6, 6)); + + ImplicitBall2D ball = ballFrom2Points(Point2D(2, 2), Point2D(2, 2)); + CHECK(ball.center() == RealPoint2D(2, 2)); + + ImplicitBall3D ball = ballFrom2Points(Point3D(0, 0, 0), Point3D(5, 5, 5)); + CHECK(ball.center() == RealPoint3D(2.5, 2.5, 2.5)); + + ImplicitBall3D ball = ballFrom2Points(Point3D(4, 5, 1), Point3D(2, 3, 7)); + CHECK(ball.center() == RealPoint3D(3, 4, 4)); + + ImplicitBall3D ball = ballFrom2Points(Point3D(2, 2, 2), Point3D(2, 2, 2)); + CHECK(ball.center() == RealPoint3D(2, 2, 2)); + } + + SECTION( "Ball From 3 Points Dimension 2 and 3" ) { + ImplicitBall2D ball = ballFrom3Points(Point2D(0, 0), Point2D(1, 0), Point2D(0, 1)); + CHECK(ball.center() == RealPoint2D(0.5, 0.5)); + + ImplicitBall3D ball = ballFrom3Points(Point3D(0, 0, 0), Point3D(1, 0, 0), Point3D(0, 1, 0)); + CHECK(ball.center() == RealPoint3D(0.5, 0.5, 0.5)); + } + + SECTION( "Ball From 4 Points") { + ImplicitBall2D ball = ballFrom4Points(Point3D(0, 0, 0), Point3D(1, 1, 1), Point3D(1, 0, 0), Point3D(0, 1, 0)); + CHECK(ball.center() == RealPoint3D(0.5, 0.5, 0.5)); + } + + SECTION( "Trivial Circle" ) { + + } +} \ No newline at end of file From ddf8cc0a2e7d292d2e8ef457173279bae5adc974 Mon Sep 17 00:00:00 2001 From: Robin Lamy Date: Thu, 1 Jul 2021 15:56:37 +0200 Subject: [PATCH 06/19] Tools functions for Lambda Medial Axis in dimension 2 and 3 --- src/DGtal/geometry/tools/ImplicitBallTools.h | 188 +++++++++++++++++++ 1 file changed, 188 insertions(+) create mode 100644 src/DGtal/geometry/tools/ImplicitBallTools.h diff --git a/src/DGtal/geometry/tools/ImplicitBallTools.h b/src/DGtal/geometry/tools/ImplicitBallTools.h new file mode 100644 index 0000000000..a6dbd633d7 --- /dev/null +++ b/src/DGtal/geometry/tools/ImplicitBallTools.h @@ -0,0 +1,188 @@ +#include +#include +#include +#include "DGtal/base/Common.h" +#include "DGtal/helpers/StdDefs.h" +#include "DGtal/kernel/NumberTraits.h" +#include "DGtal/kernel/domains/HyperRectDomain.h" +#include "DGtal/images/ImageContainerBySTLMap.h" +#include "DGtal/kernel/sets/CDigitalSet.h" +#include "DGtal/shapes/implicit/ImplicitBall.h" + + +namespace DGtal { + + /** + * @param aPoint one point + * @param otherPoint other point + * + * @return the smallest ImplicitBall that goes + * through the 2 points + */ + template + ImplicitBall > ballFrom2Points(TPoint & aPoint, TPoint & otherPoint) { + typename SpaceND::RealPoint center((aPoint + otherPoint)/2); + double radius = (aPoint - otherPoint).norm()/2; + return ImplicitBall >(center, radius); + } + + /** + * @param p1 one point of dimension 2 + * @param p2 second point of dimension 2 + * @param p3 third point of dimension 2 + * + * @return the smallest ImplicitBall of dimension 2 that goes + * through the 3 points + */ + template + ImplicitBall > ballFrom3Points(const TPoint & p1, const TPoint & p2,const TPoint & p3) { + BOOST_ASSERT(TPoint::dimension == 2 || TPoint::dimension == 3); + + if (TPoint::dimension == 3) { + return getBallFrom4Point3D(p1, p2, p3, p3); + } + /** + * Formule d'après : Centre et rayon d’un cerclepassant par trois points donnés(Phm 2006/02/05) + * https://cral-perso.univ-lyon1.fr/labo/fc/Ateliers_archives/ateliers_2005-06/cercle_3pts.pdf + */ + double x1, x2, x3, y1, y2, y3; + // Cas d'un côté parallèle à l'axe des abscisses pour éviter la division par 0, ici [P1, P2] + if (!(p1[1] - p2[1])) { + x1 = p1[0]; + y1 = p1[1]; + x3 = p2[0]; + y3 = p2[1]; + x2 = p3[0]; + y2 = p3[1]; + } else if (!(p2[1] - p3[1])) { // Ici [P2, P3] + x1 = p2[0]; + y1 = p2[1]; + x3 = p3[0]; + y3 = p3[1]; + x2 = p1[0]; + y2 = p1[1]; + } else { + x1 = p1[0]; + y1 = p1[1]; + x2 = p2[0]; + y2 = p2[1]; + x3 = p3[0]; + y3 = p3[1]; + } + //Fin de gestion des cas particuliers + + double X1 = pow(x1, 2); + double X2 = pow(x2, 2); + double X3 = pow(x3, 2); + double Y1 = pow(y1, 2); + double Y2 = pow(y2, 2); + double Y3 = pow(y3, 2); + + double centerX = -((X3-X2+Y3-Y2)/(2*(y3-y2)) - (X2-X1+Y2-Y1)/(2*(y2-y1))) / ((x2-x1)/(y2-y1) - (x3-x2)/(y3-y2)); + double centerY = -((x2-x1)/(y2-y1)) * centerX + (X2-X1+Y2-Y1)/(2*(y2-y1)); + double radius = sqrt(pow(centerX - x1, 2) + pow(centerY - y1, 2)); + typename SpaceND::RealPoint center(centerX, centerY); + return ImplicitBall >(center, radius); + } + + /** + * Return the smallest enclosing ball from 4 points in 3D + */ +template +ImplicitBall > +getBallFrom4Point3D(TPoint & A, TPoint & B, TPoint & C, TPoint & D) { + BOOST_ASSERT_MSG(TPoint::dimension == 3, "Point dimension must be 3"); + Eigen::Matrix3f M; + Eigen::Vector3f b; + int b1, b2, b3; + + b1 = -(pow(B[0], 2) - pow(A[0], 2) + pow(B[1], 2) - pow(A[1], 2) + pow(B[2], 2) - pow(A[2], 2)); + b2 = -(pow(C[0], 2) - pow(A[0], 2) + pow(C[1], 2) - pow(A[1], 2) + pow(C[2], 2) - pow(A[2], 2)); + b3 = -(pow(D[0], 2) - pow(A[0], 2) + pow(D[1], 2) - pow(A[1], 2) + pow(D[2], 2) - pow(A[2], 2)); + b << b1, b2, b3; + + M << 2*(A[0] - B[0]) , 2*(A[1] - B[1]) , 2*(A[2] - B[2]) , + 2*(A[0] - C[0]) , 2*(A[1] - C[1]) , 2*(A[2] - C[2]) , + 2*(A[0] - D[0]) , 2*(A[1] - D[1]) , 2*(A[2] - D[2]); + + Eigen::Vector3f centerVector = M.colPivHouseholderQr().solve(b); + typename SpaceND::RealPoint center(centerVector(0), centerVector(1), centerVector(2)); + float x, y, z; + x = center[0]; + y = center[1]; + z = center[2]; + float radius = sqrt(pow(x-A[0], 2) + pow(y-A[1], 2) + pow(z-A[2], 2)); + ImplicitBall > ball(center, radius); + return ball; +} + + /** + * @param R a set (DigitalSet, SmallSet etc) of size 3 or less + * + * @return the smallest ball with R on its border + */ + template + ImplicitBall trivialCircle(TSet & R) { + BOOST_ASSERT_MSG(R.size() < 5, "Set size must be 4 or less to find the trivial ball"); + BOOST_CONCEPT_ASSERT(( concepts::CDigitalSet )); + typedef typename TSet::Space::RealPoint RealPoint; + typedef ImplicitBall ImplicitBall; + double x, y, r; + + switch (R.size()) { + case 1 : + return ImplicitBall(*(R.begin()), 0); + case 2 : + return ballFrom2Points(*(R.begin()), *(R.begin()+1)); + case 3 : + return ballFrom3Points(*(R.begin()), *(R.begin()+1), *(R.begin()+2)); + case 4 : + return getBallFrom4Point3D(*(R.begin()), *(R.begin()+1), *(R.begin()+2), *(R.begin()+3)); + default : + return ImplicitBall(RealPoint(0.5, 0.5), 0); + } + } + + /** + * @param P the points we want to put in the + * smallest enclosing ball. The type is necessary to use + * random access, to generalize later... + * @param R the points that are on the border of + * the ball, initially empty. + * + * @return the smallest enclosing ImplicitBall of Point dimension + */ + template + ImplicitBall smallestEuclideanEnclosingBall(std::vector & P, TSet & R) + { + //This methods has trivialCircle code only in 2d. + //In higher dimensions, use ........ + typedef typename TSet::Point Point; + typedef typename TSet::Space::RealPoint RealPoint; + typedef ImplicitBall ImplicitBall; + + BOOST_STATIC_ASSERT_MSG( Point::dimension == 2, "Point dimension must be 2"); + BOOST_CONCEPT_ASSERT(( concepts::CDigitalSet )); + + double x, y, r; + if (P.empty() || R.size() == Point::dimension) { + ImplicitBall ball(trivialCircle(R)); + return ball; + } + int random = std::rand()%P.size(); + Point p = P[random]; + P.erase(P.begin()+random); + ImplicitBall D = smallestEuclideanEnclosingBall(P, R); + RealPoint center(D.center()); + r = D.radius(); + if ( (p-center).squaredNorm() < r*r ) { + P.insert(P.begin(), p); + return D; + } + R.insert(p); + ImplicitBall ball(smallestEuclideanEnclosingBall(P, R)); + R.erase(p); + P.insert(P.begin(), p); + return ball; + } +} \ No newline at end of file From e0335f34be1e8fe3a10aca78a1cde97b146a9dd2 Mon Sep 17 00:00:00 2001 From: Robin Lamy Date: Thu, 1 Jul 2021 15:57:46 +0200 Subject: [PATCH 07/19] update of Medial Axis Algorithms, 3D lambda medial axis still missing --- .../geometry/volumes/distance/LambdaMedialAxis.h | 14 ++++++++++---- .../geometry/volumes/distance/ReducedMedialAxis.h | 7 +++++-- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/src/DGtal/geometry/volumes/distance/LambdaMedialAxis.h b/src/DGtal/geometry/volumes/distance/LambdaMedialAxis.h index 21942698c1..040c73ff5d 100644 --- a/src/DGtal/geometry/volumes/distance/LambdaMedialAxis.h +++ b/src/DGtal/geometry/volumes/distance/LambdaMedialAxis.h @@ -110,6 +110,7 @@ namespace DGtal typedef TDistanceTransformation DT; typedef VoronoiMap VMap; typedef PowerMap PMap; + typedef typename TSet::Point Point; //typedef ImplicitBall ImplicitBall; /** @@ -132,7 +133,12 @@ namespace DGtal } TImageContainer *computedMA = new TImageContainer( smallSet.domain() ); TImageContainer *squaredDT = new TImageContainer( smallSet.domain() ); - Z2i::SmallObject8_4 setSmallObject(Z2i::dt8_4, smallSet); + + Z3i::SmallObject18_6 setSmallObject(Z3i::dt18_6, smallSet); + //Z2i::SmallObject8_4 setSmallObject(Z2i::dt8_4, smallSet); + /*if (TSet::Space::dimension == 3) { + Z3i::SmallObject18_6 setSmallObject(Z3i::dt18_6, smallSet); + }*/ VMap vmap(smallSet.domain(), smallSet, metric); DT dt(smallSet.domain(), smallSet, metric); for (typename DT::Domain::ConstIterator it = dt.domain().begin(); it != dt.domain().end(); it++) { @@ -148,12 +154,12 @@ namespace DGtal if ( aPowerMap.metricPtr()->powerDistance( *it, v, aPowerMap.weightImagePtr()->operator()( pv ) ) < NumberTraits::ZERO ) { - Z2i::Point vmapPoint(vmap(*it)); + Point vmapPoint(vmap(*it)); double vMapDistance = pow(vmapPoint[0] - (*it)[0], 2) + pow(vmapPoint[1] - (*it)[1], 2); - std::vector setForPotential; + std::vector setForPotential; SmallSet neighborhood(setSmallObject.neighborhood(*it).pointSet()); for (auto itbis : neighborhood) { - Z2i::Point vMapDuVoisin(vmap(itbis)); + Point vMapDuVoisin(vmap(itbis)); double distanceAuVmapDuVoisin = pow(vMapDuVoisin[0] - (*it)[0], 2) + pow(vMapDuVoisin[1] - (*it)[1], 2); if (distanceAuVmapDuVoisin == vMapDistance) { setForPotential.push_back(vMapDuVoisin); diff --git a/src/DGtal/geometry/volumes/distance/ReducedMedialAxis.h b/src/DGtal/geometry/volumes/distance/ReducedMedialAxis.h index 6e152f2ebb..8385a699e9 100644 --- a/src/DGtal/geometry/volumes/distance/ReducedMedialAxis.h +++ b/src/DGtal/geometry/volumes/distance/ReducedMedialAxis.h @@ -116,12 +116,15 @@ namespace DGtal for (typename TPowerMap::Domain::ConstIterator it = aPowerMap.domain().begin(), itend = aPowerMap.domain().end(); it != itend; ++it) { + const auto v = aPowerMap( *it ); const auto pv = aPowerMap.projectPoint( v ); - + if ( aPowerMap.metricPtr()->powerDistance( *it, v, aPowerMap.weightImagePtr()->operator()( pv ) ) - < NumberTraits::ZERO ) + < NumberTraits::ZERO ) + computedMA->setValue( v, aPowerMap.weightImagePtr()->operator()( pv ) ); + } return Type( computedMA ); From 21c303abfd84e4a03ec7cc88906b14dadb80f7bb Mon Sep 17 00:00:00 2001 From: Robin Lamy Date: Thu, 1 Jul 2021 15:59:44 +0200 Subject: [PATCH 08/19] beginning of documentation for medial axis algorithms --- src/DGtal/geometry/doc/moduleMedialAxis.dox | 503 ++++++++++++++++++++ 1 file changed, 503 insertions(+) create mode 100644 src/DGtal/geometry/doc/moduleMedialAxis.dox diff --git a/src/DGtal/geometry/doc/moduleMedialAxis.dox b/src/DGtal/geometry/doc/moduleMedialAxis.dox new file mode 100644 index 0000000000..cd69f01074 --- /dev/null +++ b/src/DGtal/geometry/doc/moduleMedialAxis.dox @@ -0,0 +1,503 @@ +/** + * @file moduleMedialAxis.dox + * @author David Coeurjolly (\c david.coeurjolly@liris.cnrs.fr ) + * Laboratoire d'InfoRmatique en Image et Systèmes d'information - LIRIS (CNRS, UMR 5205), CNRS, France + * + * @date 15/06/2021 + * + * Documentation file for feature medialAxis files + * + * This file is part of the DGtal library. + */ + +/* + * Useful to avoid writing DGtal:: in front of every class. + * Do not forget to add an entry in src/DGtal/base/Config.h.in ! + */ +namespace DGtal { +//---------------------------------------- +/*! +@page moduleMedialAxis nD Volumetric Analysis using Separable Processes + +[TOC] + +@author David Coeurjolly, Roland Denis + +This part of the manual describes the DGtal Medial Axis module. We +focus here on describing the Reduced Medial Axis Extraction from a Power Map, +and on describing some variant algorithm such as Scale Medial Axis Extraction. + + +\section Medial Axis Introduction + +The Medial Axis of a digital binary shape is a subset +of points from the original shape. Coming from a PowerMap, we only keep +the subset of points which associated balls is not fully contained into +another subset of balls. +(Hence there is no loss of informations when time of reconstruction comes) +The Medial Axis as been used in many situations such as shape analysis, shape matching, +shape-based interpolation, motion planning, image registration, or +differential measurement estimation. + +The Reduced Medial Axis algorithm is available in all dimensions + +\section Reduced Medial Axis + +For now, we get the Reduced Medial Axis from a +static function of the ReducedMedialAxis struct. + +In DGtal, the reduced medial axis is parametrized by the following objects : + +Template : +- A PowerMap Type + +Arguments : +- A powermap + +@code + typedef PowerMap< ... > PMap; + typedef ReducedMedialAxis RMA; + + PMap power( ... ); // A power map + + RMA::Type rdma = RMA::getReducedMedialAxisFromPowerMap(power); +@endcode + +This provides us the following 2D images : + +@image html flower_5.png +@image latex flower_5.png + +@image html flower_5_reduced.png +@image latex flower_5_reduced.png + +And 3D images : + +@image html Alcapone3D.png +@image latex Alcapone3D.png + +@image html Alcapone3D_reduced.png +@image latex Alcapone3D_reduced.png + +\section Reduced Medial Axis Filter + +The Reduced Medial Axis is really sensitive to the shape border, +and noise might make it a lot more furnished that it could be. +Hence, we might want to filter it in order to trade a little bit +of details on the border for simplicity. +Of course, the reconstruction will not be exactly the same, but +with a well-choosen parameter we can keep the original shape and +simplify a lot our set of balls. + +\section Scale Medial Axis + +In order to compute the Scale Medial Axis, we start from a +Distance Transformation (refers to @ref distanceTransformation) +of the considered shape. The goal is to multiply all balls radius +by a coefficient alpha, then compute the Reduced Medial Axis on +this set of balls, and finally divide all the Reduced Medial Axis +balls radius by alpha. It helps to erase the shape border imperfections. + +In DGtal, the Scale Medial Axis is parametrized by the following objects : + +Template : +- A Distance Transformation Type +- A Power Separable Metric Type + +Arguments : +- A distance transformation +- coefficient alpha (double) +- A power separable metric + +@code + typedef DistanceTransformation< ... > DTL2; + typedef ScaledMedialAxis SMA; + + DTL2 dt( ... ) // A distance transformation + double alpha = 1.3 + + SMA::Type sma = SMA::getScaleAxisFromWeightedMap(dt, alpha, Z2i::l2PowerMetric); + +@endcode + +Examples of Scale Medial Axis with different alpha : + +Original Medial Axis (alpha = 1) : + +@image html Alcapone3D_reduced.png +@image latex Alcapone3D_reduced.png + +alpha = 1.1 : + +@image html scale_Alcapone3D_1.1.png +@image latex scale_Alcapone3D_1.1.png + +alpha = 1.3 : + +@image html scale_Alcapone3D_1.3.png +@image latex scale_Alcapone3D_1.3.png + +alpha = 1.7 : + +@image html scale_Alcapone3D_1.7.png +@image latex scale_Alcapone3D_1.7.png + +alpha = 4 : + +@image html scale_Alcapone3D_4.png +@image latex scale_Alcapone3D_4.png + +@warning : According to the shape considered, a relatively too big +coefficient alpha might completely destroy the shape, especially +if there are thin and close details that you want to keep. + +\section Lambda Medial Axis + +In order to filter what can be consider secondary ball, you can +use the Lambda Medial Axis Filter, which is based on the idea +that the further its contact points with outside are, the more +important the ball becomes. Hence, we filter the balls computed by +the reduced medial axis by the size of the ball enclosing its contact +points. + +Here are example of the shapes computed : + + + + + + + + + + + + +In DGtal, we have chosen to implement such volumetric tools such that +the underlying metric could be specified independently. As an +example, we illustrate the distance maps from a single source point +for various metrics in 2D using the generic DistanceTransformation method: + +@image html DTmetrics-small.png "Distance maps for metrics L_1, L_2, L_4, L_80 and Chamfer masks M_{3−4} and M_{5−7−11}." +@image latex DTmetrics-small.png "Distance maps for metrics L_1, L_2, L_4, L_80 and Chamfer masks M_{3−4} and M_{5−7−11}." + +For a complete discussion of metric concepts in DGtal, please refer to +@ref moduleMetrics. + + +\section voronoiSect Digital Voronoi Diagram Computation + +The generic distance transformation is based on a prior Voronoi map +construction. Indeed, if we compute the Voronoi diagram of background +points, the distance transformation at an object point is exactly its +distance to the site associated with the Voronoi cell it belongs to. + +The core of the implementation is based on a separable approach: For +example, in dimension 2, partial digital Voronoi maps of dimension one are +first computed in each row independently. Then such partial Voronoi +maps are updated using independent processes along the columns, +leading to a valid Voronoi map of dimension 2. In an algorithmic point +of view, the 1D processes used for both columns and rows are +the same. In higher dimensions, the other dimensions are processed +similarly. + +@note We say digital Voronoi map instead of Voronoi diagram since the +output of the result is the intersection between the Voronoi diagram +of exterior points with @f$ \mathbb{Z}^d @f$. Furthermore, along +Voronoi faces (@e e.i. when two sites are equidistant), only one sites +is considered when intersection with @f$ \mathbb{Z}^d @f$. + + +In DGtal, the class VoronoiMap implements such digital Vornoi map +extraction. Such class is parametrized by the following types: +- a type representing the underlying digital space (model of CSpace); +- a type representing the object @f$ X @f$ as a point predicate (model + of concepts::CPointPredicate) ; +- a type representing the underlying metric (model of +CSeparableMetric, see below) +- and an optional image container to store the resulting Voronoi map +(by default, the type is +ImageContainerBySTLVector,typename +TSpace::Vector>). + +The VoronoiMap constructor is parametrized by +- an instance of Domain (the Domain type associated with the image +container); +- an instance of the PointPredicate ; +- and an instance of the separable metric. + +The VoronoiMap will be computed on the specified and will use the +point predicate to decide if a point of such domain is in the object +or note. + +@warning The point predicate must be valid for each point in the +specified domain. Basically, the domain can a sub-domain of the point +predicate definition domain. + + +Once the VoronoiMap object is created, the voronoi map is computed and +the class itself is a model of CConstImage. In other words, you can +access to the VoronoiMap value at a point @a p and iterate of values +using image ranges (see @ref moduleImages). For example + +@code + VoronoiMap<....> myVoronoiMap( .... ); //object construction + VoronoiMap<....>::Point p(12,34); + + VoronoiMap<....>::Value vectorToClosestSiteAtP = myVoronoiMap( p ); + for(VoronoiMap<....>::Domain::ConstIterator it = myVoronoiMap.domain().begin() , itend = myVoronoiMap.domain().end(); + it != itend ; ++it) + //do something on myVoronoiMap(it) +@endcode + +Since we are constructing a VoronoiMap, the value type of the map is a +vector (pointing to the closest site) of type Space::Vector (if Space +was the underlying digital space type used when specifying VoronoiMap +template parameters). + +Let us illustrate the construction in dimension 2 (see +voronoimap2D.cpp). Other examples can be found in distancetransform2D.cpp and distancetransform3D.cpp. + + First of all, we need couple of includes: + +@snippet geometry/volumes/distance/voronoimap2D.cpp Voro2D-header + +We will discuss later about the metric definition but let us consider +a classical Euclidean @f$ l_2 @f$ metric: + +@snippet geometry/volumes/distance/voronoimap2D.cpp Voro2D-Metric + +We now consider an object in a [0,0]x[16,16] domain with three +background points. To construct such point predicate, we first define +a set containing the three points, then we consider the point +predicate defined on this set (which returns true at a point if the +point is inside the set) and we consider the negation of such predicate +in order to return true for object points. Here you have the +construction: + +@snippet geometry/volumes/distance/voronoimap2D.cpp Voro2D-SmallImage + +and the resulting set: + +@image html voronoimap-inputset.png "Input set." +@image latex voronoimap-inputset.png "Input set." + + +The voronoi map is simply given by: + +@snippet geometry/volumes/distance/voronoimap2D.cpp Voro2D-Voro + +At each point of the object, we thus have a vector to the closest +background point. We can display this information as follows: + +@snippet geometry/volumes/distance/voronoimap2D.cpp Voro2D-trace + +To obtain: + +@image html voronoimap-voro.png "Voronoi map." +@image latex voronoimap-voro.png "Voronoi map." + +Changing the board output, we can see the Voronoi cells accordingly: + +@snippet geometry/volumes/distance/voronoimap2D.cpp Voro2D-traceCell + +To get: + +@image html voronoimap-cells.png "Voronoi map cells." +@image latex voronoimap-cells.png "Voronoi map cells." + +We could easily change the metric (here to the @f$ l_8 @f$) and get a +new Voronoi map: +@snippet geometry/volumes/distance/voronoimap2D.cpp Voro2D-l8Metric + +@image html voronoimap-vorol8.png "Voronoi map for the l_8 metric." +@image latex voronoimap-vorol8.png "Voronoi map for the l_8 metric." + +@section DTsec Distance Transformation + +As discussed earlier, the distance transformation is given by +computing distances once the Voronoi map is obtained. In DGtal, the +class DistanceTransformation simply adapts the VoronoiMap class in +order to override output image getters to return the distance for the +given metric to the closest site instead of the vector. + +As a consequence, the DistanceTransformation class simply inherits from the +VoronoiMap class and overrides methods required by +the concepts::CConstImage concept. Note that the DistanceTransformation::Value +type is double. If you want to get the underlying vector instead of +the distance to perform exact computations, you can use the +DistanceTransformation::getVoronoiVector method. + +In the following example, we consider the previous small image and use +a colormap to display distance values for the @f$ l_2 @f$ mertic: + +@snippet geometry/volumes/distance/voronoimap2D.cpp Voro2D-DT + +@image html voronoimap-dt.png "Distance transformation for the l_2 metric." +@image latex voronoimap-dt.png "Distance transformation for the l_2 metric." + + + +@section RDTSec Digital Power Map and Reverse Distance Transformation + +Similarly to Voronoi diagram and digital Voronoi maps, digital Power +maps are defined as the intersection between the integer grid and a +power diagram. Given a set of weighed points, power diagram can be +seen as Voronoi diagram where the metric is modified with additive +weights. For example, considering the @f$ l_2@f$ metric, the power +distance between a point @f$p@f$ and a weighted point @f$(q,w)@f$ is +defined by +@f[ pow(p,q) = \| p - q\|_2^2 - w @f] + +Hence, similarly to Voronoi diagram, the power diagram is a +decomposition of the space ino cells from weighed sites where each +cell (maybe empty) is associated with a site and each point in the +cell has got minimal power distance to the cell site (compared to its +power distance to all other sites) @cite Aurenhammer1987 . + + +Separable algorithms similar to VoronoiMap/DistanceTransformation can +be designed to compute respectively PowerMap and +ReverseDistanceTransformation. The only difference is that the input of +PowerMap is a weighted set of points instead of a point predicate. + +@note for @f$l_p@f$ metrics, the power distance is defined by @f$ +pow(p,q) = \| p - q\|_p^p - w @f$. Hence, both the distance and the weight value type +capacity must be able to represent d-sums of power p numbers (if d is +the dimension of the space). + + +Hence such class is parametrized by the following types: +- a type representing the mapping between points and weights (WeightImage, model of concepts::CImage); +- a type representing the underlying power metric (model of concepts::CPowerSeparableMetric, see below) +- and an optional image container to store the resulting Power map (by default, the type is ImageContainerBySTLVector). + +The PowerMap constructor is parametrized by +- an instance of Domain (the Domain type associated with the image container); +- an instance of PowerMap::WeightImage; +- and an instance of the power separable metric. + +Similarly to DistanceTransformation, ReverseDistanceTransformation +remaps the PowerMap vectors to map the power metric to the closest +weighted site. + +As a consequence, for the Euclidean @f$ l_2 @f$ metric, if we consider +a set of balls @f$ B_i(p_i,r_i) @f$ and if we create an WeightImage +whose domain contains points @f$\{ p_i \}@f$ and with +values @f$ r_i^2@f$, negative (strictly) values of the +ReverseDistanceTransformation will correspond to digital points +belonging to the union @f$ \bigcup \{B_i\}@f$ (see @cite dcoeurjo_pami_RDMA). + +ReverseDistanceTransformation can thus be used to reconstructed a +binary shape from a given Medial Axis or any set of balls. Another +consequence is that given a binary shape, the pipeline +@f[ Shape \rightarrow DT \rightarrow ReverseDT \rightarrow \text{ strictly negative values }@f] +for the same metric/power metric, returns the input binary shape. + + + +@note Power separable metrics are formalized in concepts::CPowerMetric and +concepts::CPowerSeparableMetric concepts whose main model is +ExactPredicateLpPowerSeparableMetric, see @ref moduleMetrics + +@section toricVol Volumetric Analysis on Toric domains + +In some specific applications, toric domains and volumetric analysis +of shapes in toric domains are crucial. Thanks to the separability +property of VoronoiMap, PowerMap (and their associated wrappers +DistanceTransformation and ReverseDistanceTransformation), one can +easily consider volumetric transformation in arbitrary dimension on +toric domains @cite Coeurjo2008. Note that changing the periodicity +property of the domain has no impact on the computational cost. + +More precisely, VoronoiMap and DistanceTransformation classes have +constructors allowing to specify periodicity information. In dimension +@e d, such periodicity information is an array with @e d boolean flags +where the i-th value is \c true if the i-th dimension of the space is +periodic, \c false otherwise. Hence, computation can be performed +either on a full toric domain, or on a domain with toricity property +along only one axis. Similar extensions to toric domains have been +implemented for the PowerMap and ReverseDistanceTransformation +classes. + +As illustrated in the example toricdomainvolumetric.cpp, given an +input: + +@image html toric-inputShape-red.png "Input domain and sites." + +We consider the following distance transformation objects: + +@snippet geometry/volumes/distance/toricdomainvolumetric.cpp DTComputeToric + +The following results illustrate both distance transformation and +Voronoi maps. For the VoronoiMap results, points may be attached to +sites exterior to the initial domain. In fact such sites correspond to +toric replicas of existing sites within the domain. + +

+ + + + + + + + + + +
+Classical domain + +Toric domain +
+@image html toric-example-DT-L2-red.png "DT values." + +@image html toric-example-DT-L2-toric-red.png "Toric DT values." +
+@image html toric-example-Voro-L2-red.png "Voronoi map as vectors." + +@image html toric-example-Voro-L2-toric-red.png "Voronoi map as vectors." +
+
+ +Using VoronoiMap::projectPoint(Point) const, site's coordinates can be projected +into the initial domain, even for VoronoiMap calculated on toric domains: + +@image html toric-example-Voro-L2-toric-projected.png "Voronoi map on toric domain with projected sites." + +With partial periodicity specification (along the first or second dimension only): + +@snippet geometry/volumes/distance/toricdomainvolumetric.cpp DTComputePartialToric + +we obtain the following VoronoiMap: + +
+ + + + + + + + + + +
+Periodic domain along the 1th dimension. + +Periodic domain along the 2th dimension. +
+@image html toric-example-DT-L2-toricX-red.png "DT values." + +@image html toric-example-DT-L2-toricY-red.png "DT values." +
+@image html toric-example-Voro-L2-toricX-red.png "Voronoi map as vectors." + +@image html toric-example-Voro-L2-toricY-red.png "Voronoi map as vectors." +
+
+ +*/ + + +} From a411e5a5b8b59f29be2008670269916584d2a28d Mon Sep 17 00:00:00 2001 From: Robin Lamy Date: Thu, 1 Jul 2021 16:00:42 +0200 Subject: [PATCH 09/19] Images for medial axis algorithms documentation --- src/DGtal/geometry/doc/images/Alcapone3D.png | Bin 0 -> 176918 bytes .../geometry/doc/images/Alcapone3D_reduced.png | Bin 0 -> 51288 bytes src/DGtal/geometry/doc/images/flower_5.png | Bin 0 -> 144608 bytes .../geometry/doc/images/flower_5_reduced.png | Bin 0 -> 14296 bytes .../doc/images/scale_Alcapone3D_1.1.png | Bin 0 -> 42129 bytes .../doc/images/scale_Alcapone3D_1.3.png | Bin 0 -> 29697 bytes .../doc/images/scale_Alcapone3D_1.7.png | Bin 0 -> 22953 bytes .../geometry/doc/images/scale_Alcapone3D_4.png | Bin 0 -> 14352 bytes 8 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/DGtal/geometry/doc/images/Alcapone3D.png create mode 100644 src/DGtal/geometry/doc/images/Alcapone3D_reduced.png create mode 100644 src/DGtal/geometry/doc/images/flower_5.png create mode 100644 src/DGtal/geometry/doc/images/flower_5_reduced.png create mode 100644 src/DGtal/geometry/doc/images/scale_Alcapone3D_1.1.png create mode 100644 src/DGtal/geometry/doc/images/scale_Alcapone3D_1.3.png create mode 100644 src/DGtal/geometry/doc/images/scale_Alcapone3D_1.7.png create mode 100644 src/DGtal/geometry/doc/images/scale_Alcapone3D_4.png diff --git a/src/DGtal/geometry/doc/images/Alcapone3D.png b/src/DGtal/geometry/doc/images/Alcapone3D.png new file mode 100644 index 0000000000000000000000000000000000000000..dfb6204f6e208e93c8d56ffb48ae2a9b3ad3635c GIT binary patch literal 176918 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

_nFI};RlI^d1IU@MuBAVpFz8?Gvc*gDQ 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

- * \brief Aim: Implementation of the separable medial axis + * \brief Aim: Implementation of the separable lambda medial axis * extraction. * - * This utility struct extract medial axis balls from a - * PowerMap. Basically, each (weighted) site of the PowerMap defines + * This utility struct extract lambda medial axis balls from a + * Set. Basically, each (weighted) site of the PowerMap defines * a digital maximal ball if its digital power cell restricted to * the input shape is not empty @cite dcoeurjo_pami_RDMA . * @@ -87,35 +87,58 @@ namespace DGtal * @note Following ReverseDistanceTransformation, the input shape is * defined as points with negative power distance. * - * @tparam TPowerMap any specialized PowerMap type @tparam - * TImageContainer any model of CImage to store the medial axis + * @tparam TSet any set type (to be generalized as PointPredicate) + * @tparam TDistanceTransformation any DistanceTransformation type + * that has SmallSet as its PointPredicate + * @tparam TPowerMap any specialized PowerMap type + * @tparam TSmallObject a SmallObject type in dimension 2 or 3 + * @tparam TTopology a topology type that match the SmallObject + * @tparam TImageContainer any model of CImage to store the medial axis * points (default: ImageContainerBySTLVector). * - * @see testReducedMedialAxis.cpp + * @see testLambdaReducedMedialAxis.cpp //TODO */ - template > + typename TPowerMap, + typename TSmallObject, + typename TTopology, + typename TImageContainer = ImageContainerBySTLMap > struct LambdaMedialAxis { //MA Container typedef - typename DigitalSetSelector < typename TDistanceTransformation::Domain, + typename DigitalSetSelector < typename TSet::Domain, SMALL_DS + HIGH_ITER_DS >::Type SmallSet; typedef Image Type; + typedef TDistanceTransformation DT; - typedef VoronoiMap VMap; - typedef PowerMap PMap; + + typedef TPowerMap PMap; + + typedef TTopology Topology; + + typedef typename DT::SeparableMetric SeparableMetric; + + typedef typename PMap::PowerSeparableMetric PowerSeparableMetric; + + typedef typename TSet::Space Space; + typedef typename TSet::Point Point; - //typedef ImplicitBall ImplicitBall; + + typedef VoronoiMap VMap; + + typedef TSmallObject SmallObject; + + BOOST_STATIC_ASSERT((boost::is_same< typename DT::PointPredicate, SmallSet>::value)); + BOOST_STATIC_ASSERT((boost::is_same< typename SmallObject::DigitalTopology, Topology>::value)); + BOOST_STATIC_ASSERT((boost::is_same< Topology, Z2i::DT8_4>::value + || boost::is_same< Topology, Z3i::DT18_6>::value)); /** - * Extract reduced medial axis from a power map. - * This methods is in @f$ O(|powerMap|)@f$. + * Detail on algorithm * * @param aPowerMap the input powerMap * @@ -123,7 +146,11 @@ namespace DGtal * template arguments. */ static - Type getLambdaMedialAxis(TSet & set, typename DT::SeparableMetric & metric, double lambda) { + Type getLambdaMedialAxis(TSet & set, + SeparableMetric metric, + PowerSeparableMetric powerMetric, + Topology topology, + double lambda) { SmallSet smallSet(set.domain()); for (auto it : set) { @@ -134,17 +161,14 @@ namespace DGtal TImageContainer *computedMA = new TImageContainer( smallSet.domain() ); TImageContainer *squaredDT = new TImageContainer( smallSet.domain() ); - Z3i::SmallObject18_6 setSmallObject(Z3i::dt18_6, smallSet); - //Z2i::SmallObject8_4 setSmallObject(Z2i::dt8_4, smallSet); - /*if (TSet::Space::dimension == 3) { - Z3i::SmallObject18_6 setSmallObject(Z3i::dt18_6, smallSet); - }*/ + SmallObject setSmallObject(topology, smallSet); + VMap vmap(smallSet.domain(), smallSet, metric); DT dt(smallSet.domain(), smallSet, metric); for (typename DT::Domain::ConstIterator it = dt.domain().begin(); it != dt.domain().end(); it++) { squaredDT->setValue((*it), pow(dt(*it), 2)); } - PMap aPowerMap(squaredDT->domain(), squaredDT, Z2i::l2PowerMetric); + PMap aPowerMap(squaredDT->domain(), squaredDT, powerMetric); for (typename PMap::Domain::ConstIterator it = aPowerMap.domain().begin(), itend = aPowerMap.domain().end(); it != itend; ++it) { @@ -152,21 +176,21 @@ namespace DGtal const auto pv = aPowerMap.projectPoint( v ); if ( aPowerMap.metricPtr()->powerDistance( *it, v, aPowerMap.weightImagePtr()->operator()( pv ) ) - < NumberTraits::ZERO ) { + < NumberTraits::ZERO ) { Point vmapPoint(vmap(*it)); - double vMapDistance = pow(vmapPoint[0] - (*it)[0], 2) + pow(vmapPoint[1] - (*it)[1], 2); + double vMapDistance = (vmapPoint - *it).norm(); std::vector setForPotential; SmallSet neighborhood(setSmallObject.neighborhood(*it).pointSet()); for (auto itbis : neighborhood) { Point vMapDuVoisin(vmap(itbis)); - double distanceAuVmapDuVoisin = pow(vMapDuVoisin[0] - (*it)[0], 2) + pow(vMapDuVoisin[1] - (*it)[1], 2); + double distanceAuVmapDuVoisin = (vMapDuVoisin - *it).norm(); if (distanceAuVmapDuVoisin == vMapDistance) { setForPotential.push_back(vMapDuVoisin); } } SmallSet R(set.domain()); - ImplicitBall enclosing(smallestEuclideanEnclosingBall(setForPotential, R)); + ImplicitBall enclosing(smallestEuclideanEnclosingBall(setForPotential, R)); if (enclosing.radius() > lambda) { computedMA->setValue( v, aPowerMap.weightImagePtr()->operator()( pv ) ); } From efc3ec6358f5f4112d838c514d62a565784039e0 Mon Sep 17 00:00:00 2001 From: Robin Lamy Date: Mon, 5 Jul 2021 16:50:24 +0200 Subject: [PATCH 11/19] reduced medial axis now return a vector of pair --- .../volumes/distance/ReducedMedialAxis.h | 25 +++++++++++++------ 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/src/DGtal/geometry/volumes/distance/ReducedMedialAxis.h b/src/DGtal/geometry/volumes/distance/ReducedMedialAxis.h index 8385a699e9..505c08140a 100644 --- a/src/DGtal/geometry/volumes/distance/ReducedMedialAxis.h +++ b/src/DGtal/geometry/volumes/distance/ReducedMedialAxis.h @@ -97,7 +97,8 @@ namespace DGtal struct ReducedMedialAxis { //MA Container - typedef Image Type; + typedef std::pair Ball; + typedef typename TPowerMap::Point Point; /** * Extract reduced medial axis from a power map. @@ -109,9 +110,12 @@ namespace DGtal * template arguments. */ static - Type getReducedMedialAxisFromPowerMap(const TPowerMap &aPowerMap) + std::vector + getReducedMedialAxisFromPowerMap(const TPowerMap &aPowerMap) { TImageContainer *computedMA = new TImageContainer( aPowerMap.domain() ); + std::vector medialAxis; + medialAxis.push_back(Ball(*(aPowerMap.domain().begin()), 0)); //To have a non empty vector for the loop for (typename TPowerMap::Domain::ConstIterator it = aPowerMap.domain().begin(), itend = aPowerMap.domain().end(); it != itend; ++it) @@ -121,13 +125,20 @@ namespace DGtal const auto pv = aPowerMap.projectPoint( v ); if ( aPowerMap.metricPtr()->powerDistance( *it, v, aPowerMap.weightImagePtr()->operator()( pv ) ) - < NumberTraits::ZERO ) - - computedMA->setValue( v, aPowerMap.weightImagePtr()->operator()( pv ) ); - + < NumberTraits::ZERO ) { + //computedMA->setValue( v, aPowerMap.weightImagePtr()->operator()( pv ) ); + Ball ball(v, aPowerMap.weightImagePtr()->operator()( pv ) ); + if (std::find(medialAxis.begin(), medialAxis.end(), ball) == medialAxis.end()) { + medialAxis.push_back(ball); + } + } } - return Type( computedMA ); + medialAxis.erase(medialAxis.begin()); + for (auto & ball_ptr : medialAxis) { + std::cout << ball_ptr << std::endl; + } + return medialAxis; } }; // end of class ReducedMedialAxis From a36e11ca5cfded86c58ab097f8c4f214756deeb2 Mon Sep 17 00:00:00 2001 From: Robin Lamy Date: Mon, 5 Jul 2021 16:53:05 +0200 Subject: [PATCH 12/19] A few more tests for ImplicitBallTools.h --- .../geometry/tools/testImplicitBallTools.cpp | 24 ++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/tests/geometry/tools/testImplicitBallTools.cpp b/tests/geometry/tools/testImplicitBallTools.cpp index 0e3f94574b..50bfc8dcbb 100644 --- a/tests/geometry/tools/testImplicitBallTools.cpp +++ b/tests/geometry/tools/testImplicitBallTools.cpp @@ -44,6 +44,9 @@ #include "DGtalCatch.h" +using namespace std; +using namespace DGtal; + TEST_CASE( "Testing ImplicitBallTools functions" ) { typedef ImplicitBall > ImplicitBall2D; @@ -55,6 +58,7 @@ TEST_CASE( "Testing ImplicitBallTools functions" ) { typedef Z3i::RealPoint RealPoint3D; SECTION( "Ball From 2 Points Dimension 2 and 3" ) { + // Dimension 2 ImplicitBall2D ball = ballFrom2Points(Point2D(0, 0), Point2D(5, 5)); CHECK(ball.center() == RealPoint2D(2.5, 2.5)); @@ -63,7 +67,7 @@ TEST_CASE( "Testing ImplicitBallTools functions" ) { ImplicitBall2D ball = ballFrom2Points(Point2D(2, 2), Point2D(2, 2)); CHECK(ball.center() == RealPoint2D(2, 2)); - + // Dimension 3 ImplicitBall3D ball = ballFrom2Points(Point3D(0, 0, 0), Point3D(5, 5, 5)); CHECK(ball.center() == RealPoint3D(2.5, 2.5, 2.5)); @@ -72,6 +76,21 @@ TEST_CASE( "Testing ImplicitBallTools functions" ) { ImplicitBall3D ball = ballFrom2Points(Point3D(2, 2, 2), Point3D(2, 2, 2)); CHECK(ball.center() == RealPoint3D(2, 2, 2)); + + // Arbitrary Dimension + int dimension = rand()%200; + SpaceND::Point point_1; + SpaceND::Point point_2; + SpaceND::RealPoint center; + for (int i = 0; i < dimension; i++) { + point_1[dimension] = rand(); + point_2[dimension] = rand(); + center[dimension] = (point_1[dimension] + point_2[dimension]) / 2; + } + + ImplicitBall > ball = ballFrom2Points(point_1, point_2); + CHECK(ball.center() == center); + } SECTION( "Ball From 3 Points Dimension 2 and 3" ) { @@ -85,6 +104,9 @@ TEST_CASE( "Testing ImplicitBallTools functions" ) { SECTION( "Ball From 4 Points") { ImplicitBall2D ball = ballFrom4Points(Point3D(0, 0, 0), Point3D(1, 1, 1), Point3D(1, 0, 0), Point3D(0, 1, 0)); CHECK(ball.center() == RealPoint3D(0.5, 0.5, 0.5)); + + ImplicitBall2D ball = ballFrom4Points(Point3D(0, 0, 0), Point3D(1, 0, 0), Point3D(1, 1, 0), Point3D(0, 1, 0)); + CHECK(ball.center() == RealPoint3D(0.5, 0.5, 0)); } SECTION( "Trivial Circle" ) { From d3a8290657f666d44300402d70c90763e2652ae7 Mon Sep 17 00:00:00 2001 From: Robin Lamy Date: Fri, 9 Jul 2021 16:29:33 +0200 Subject: [PATCH 13/19] template simplification, change of neighborhood method for lambda medial axis --- .../volumes/distance/LambdaMedialAxis.h | 196 ++++++++++++------ .../volumes/distance/ReducedMedialAxis.h | 9 +- .../volumes/distance/ScaleMedialAxis.h | 104 +++++++--- 3 files changed, 216 insertions(+), 93 deletions(-) diff --git a/src/DGtal/geometry/volumes/distance/LambdaMedialAxis.h b/src/DGtal/geometry/volumes/distance/LambdaMedialAxis.h index 055cab795c..f18143ec8d 100644 --- a/src/DGtal/geometry/volumes/distance/LambdaMedialAxis.h +++ b/src/DGtal/geometry/volumes/distance/LambdaMedialAxis.h @@ -96,79 +96,73 @@ namespace DGtal * @tparam TImageContainer any model of CImage to store the medial axis * points (default: ImageContainerBySTLVector). * - * @see testLambdaReducedMedialAxis.cpp //TODO + * @see testLambdaMedialAxis.cpp //TODO */ - template > + template , double> > struct LambdaMedialAxis { - //MA Container - typedef - typename DigitalSetSelector < typename TSet::Domain, - SMALL_DS + HIGH_ITER_DS >::Type SmallSet; - typedef Image Type; - - typedef TDistanceTransformation DT; + typedef TSpace Space; - typedef TPowerMap PMap; + typedef DGtal::int32_t Integer; - typedef TTopology Topology; + typedef typename Space::Point Point; - typedef typename DT::SeparableMetric SeparableMetric; + typedef typename Space::RealPoint RealPoint; - typedef typename PMap::PowerSeparableMetric PowerSeparableMetric; + typedef HyperRectDomain Domain; - typedef typename TSet::Space Space; + typedef ExactPredicateLpSeparableMetric L2Metric; - typedef typename TSet::Point Point; + typedef ExactPredicateLpPowerSeparableMetric L2PowerMetric; - typedef VoronoiMap VMap; + typedef typename DigitalSetSelector< Domain, BIG_DS+HIGH_BEL_DS >::Type DigitalSet; - typedef TSmallObject SmallObject; + typedef typename DigitalSetSelector < Domain, SMALL_DS + HIGH_ITER_DS >::Type SmallSet; + + typedef Image Type; + + typedef DistanceTransformation DT; - BOOST_STATIC_ASSERT((boost::is_same< typename DT::PointPredicate, SmallSet>::value)); - BOOST_STATIC_ASSERT((boost::is_same< typename SmallObject::DigitalTopology, Topology>::value)); - BOOST_STATIC_ASSERT((boost::is_same< Topology, Z2i::DT8_4>::value - || boost::is_same< Topology, Z3i::DT18_6>::value)); + typedef PowerMap PMap; + + typedef VoronoiMap VMap; + + typedef ReverseDistanceTransformation RDT; + + typedef std::pair Ball; /** * Detail on algorithm - * - * @param aPowerMap the input powerMap - * + * + * @param set a set of points + * @param lambda the minimal radius to accept a ball in the lambda medial axis + * * @return a lightweight proxy to the ImageContainer specified in - * template arguments. + * template arguments. (soon to be a vector > instead) */ static - Type getLambdaMedialAxis(TSet & set, - SeparableMetric metric, - PowerSeparableMetric powerMetric, - Topology topology, - double lambda) { - - SmallSet smallSet(set.domain()); - for (auto it : set) { - if (set(it)) { - smallSet.insert(it); - } - } - TImageContainer *computedMA = new TImageContainer( smallSet.domain() ); - TImageContainer *squaredDT = new TImageContainer( smallSet.domain() ); - - SmallObject setSmallObject(topology, smallSet); - - VMap vmap(smallSet.domain(), smallSet, metric); - DT dt(smallSet.domain(), smallSet, metric); + std::vector computeLambdaAxisFromSet(DigitalSet & set, double lambda) { + // Initialize metrics and topology + L2Metric l2Metric; + L2PowerMetric l2PowerMetric; + + std::vector medialAxis; + + TImageContainer *computedMA = new TImageContainer( set.domain() ); + TImageContainer *squaredDT = new TImageContainer( set.domain() ); + + // Building the VoronoiMap, DistanceTransformation, + // SquaredDistanceTransformation and PowerMap for the next steps + VMap vmap(set.domain(), set, l2Metric); + DT dt(set.domain(), set, l2Metric); for (typename DT::Domain::ConstIterator it = dt.domain().begin(); it != dt.domain().end(); it++) { squaredDT->setValue((*it), pow(dt(*it), 2)); } - PMap aPowerMap(squaredDT->domain(), squaredDT, powerMetric); + PMap aPowerMap(squaredDT->domain(), squaredDT, l2PowerMetric); + for (typename PMap::Domain::ConstIterator it = aPowerMap.domain().begin(), itend = aPowerMap.domain().end(); it != itend; ++it) { @@ -176,29 +170,105 @@ namespace DGtal const auto pv = aPowerMap.projectPoint( v ); if ( aPowerMap.metricPtr()->powerDistance( *it, v, aPowerMap.weightImagePtr()->operator()( pv ) ) - < NumberTraits::ZERO ) { + < NumberTraits::ZERO ) { - Point vmapPoint(vmap(*it)); - double vMapDistance = (vmapPoint - *it).norm(); - std::vector setForPotential; - SmallSet neighborhood(setSmallObject.neighborhood(*it).pointSet()); - for (auto itbis : neighborhood) { - Point vMapDuVoisin(vmap(itbis)); - double distanceAuVmapDuVoisin = (vMapDuVoisin - *it).norm(); - if (distanceAuVmapDuVoisin == vMapDistance) { - setForPotential.push_back(vMapDuVoisin); + //Lambda Medial Axis filter + Point voronoiPoint(vmap(*it)); + double voronoiDistance = (voronoiPoint - *it).norm(); //Squared Distance to its Voronoi map point + std::vector otherVoronoiPoints; + DigitalSet box(set.domain()); + Point center = *it; + subBox(center, 2, set, box); // point neighborhood + for (auto neighbor : box) { + Point neighborVoronoiPoint(vmap(neighbor)); // Voronoi point of the neighbor + double distanceToTest = (neighborVoronoiPoint - *it).norm(); // Distance between the point, and the neighbor voronoi point + if (distanceToTest == voronoiDistance) { + otherVoronoiPoints.push_back(neighborVoronoiPoint); } } SmallSet R(set.domain()); - ImplicitBall enclosing(smallestEuclideanEnclosingBall(setForPotential, R)); + ImplicitBall enclosing(smallestEuclideanEnclosingBall(otherVoronoiPoints, R)); if (enclosing.radius() > lambda) { - computedMA->setValue( v, aPowerMap.weightImagePtr()->operator()( pv ) ); + Ball ball(v, aPowerMap.weightImagePtr()->operator()( pv ) ); + if (std::find(medialAxis.begin(), medialAxis.end(), ball) == medialAxis.end()) { + medialAxis.push_back(ball); + } } + // End of filter } } - return Type( computedMA ); + + return medialAxis; + } + + static std::vector computeLambdaAxisFromVector(std::vector & ballSet, Domain & domain, double lambda) { + + L2Metric l2Metric; + L2PowerMetric l2PowerMetric; + + //Reconstruction of the shape + TImageContainer *weightedMap = new TImageContainer( domain ); + for (Ball ball : ballSet) { + weightedMap->setValue(ball.first, ball.second); + } + + RDT rdt(domain, *weightedMap, l2PowerMetric); + DigitalSet set(domain); + for (typename RDT::Domain::ConstIterator it = rdt.domain().begin(); it != rdt.domain().end(); it++) { + if (rdt(*it) < 0) { + set.insert(*it); + } + } + + std::vector medialAxis; + + medialAxis = computeLambdaAxisFromSet(set, lambda); + + return medialAxis; } + + + /** + * @param center + * @param size the box goes from -size to +size in all dimensions + * @param set the set we want a subBox of + * + * @return a subset of type DigitalSet that contains the box + * + */ + static void subBox(Point & center, + Integer size, + DigitalSet & set, + DigitalSet & box, + Integer currentDimension = 0, + std::vector indexes = std::vector()) { + Integer dimension = Point::dimension; + if (indexes.size() == 0) { + for (Integer i = 0; i < dimension; i++) { + indexes.push_back(-size); + } + } + Point point; + for (Integer i = 0; i < dimension; i++) { + point[i] = indexes[i]; + } + + while(indexes[currentDimension] <= size) { + if (currentDimension == dimension - 1) { + if (set(center + point)) { + box.insert(center + point); + } + } else { + subBox(center, size, set, box, currentDimension+1, indexes); + } + indexes[currentDimension] += 1; + point[currentDimension] += 1; + } + + return; + } + }; // end of class LambdaMedialAxis } // namespace DGtal diff --git a/src/DGtal/geometry/volumes/distance/ReducedMedialAxis.h b/src/DGtal/geometry/volumes/distance/ReducedMedialAxis.h index 505c08140a..db5b2cb258 100644 --- a/src/DGtal/geometry/volumes/distance/ReducedMedialAxis.h +++ b/src/DGtal/geometry/volumes/distance/ReducedMedialAxis.h @@ -113,7 +113,6 @@ namespace DGtal std::vector getReducedMedialAxisFromPowerMap(const TPowerMap &aPowerMap) { - TImageContainer *computedMA = new TImageContainer( aPowerMap.domain() ); std::vector medialAxis; medialAxis.push_back(Ball(*(aPowerMap.domain().begin()), 0)); //To have a non empty vector for the loop @@ -123,10 +122,10 @@ namespace DGtal const auto v = aPowerMap( *it ); const auto pv = aPowerMap.projectPoint( v ); - + if ( aPowerMap.metricPtr()->powerDistance( *it, v, aPowerMap.weightImagePtr()->operator()( pv ) ) < NumberTraits::ZERO ) { - //computedMA->setValue( v, aPowerMap.weightImagePtr()->operator()( pv ) ); + Ball ball(v, aPowerMap.weightImagePtr()->operator()( pv ) ); if (std::find(medialAxis.begin(), medialAxis.end(), ball) == medialAxis.end()) { medialAxis.push_back(ball); @@ -135,11 +134,9 @@ namespace DGtal } medialAxis.erase(medialAxis.begin()); - for (auto & ball_ptr : medialAxis) { - std::cout << ball_ptr << std::endl; - } return medialAxis; } + }; // end of class ReducedMedialAxis diff --git a/src/DGtal/geometry/volumes/distance/ScaleMedialAxis.h b/src/DGtal/geometry/volumes/distance/ScaleMedialAxis.h index 5fb2ff771b..1d67183a25 100644 --- a/src/DGtal/geometry/volumes/distance/ScaleMedialAxis.h +++ b/src/DGtal/geometry/volumes/distance/ScaleMedialAxis.h @@ -51,6 +51,7 @@ #include "DGtal/geometry/volumes/distance/CPowerSeparableMetric.h" #include "DGtal/geometry/volumes/distance/PowerMap.h" #include "DGtal/geometry/volumes/distance/DistanceTransformation.h" +#include "DGtal/geometry/volumes/distance/ReverseDistanceTransformation.h" #include "DGtal/geometry/volumes/distance/ReducedMedialAxis.h" #include "DGtal/images/DefaultConstImageRange.h" #include "DGtal/kernel/domains/HyperRectDomain.h" @@ -95,14 +96,30 @@ namespace DGtal * * @see testReducedMedialAxis.cpp */ - template > - struct ScaledMedialAxis + template , double> > + struct ScaleMedialAxis { //MA Container - typedef Image Type; - typedef TDistanceTransformation DT; + typedef TSpace Space; + + typedef typename Space::Point Point; + + typedef typename Space::RealPoint RealPoint; + + typedef HyperRectDomain Domain; + + typedef ExactPredicateLpSeparableMetric L2Metric; + + typedef ExactPredicateLpPowerSeparableMetric L2PowerMetric; + + typedef typename DigitalSetSelector< Domain, BIG_DS+HIGH_BEL_DS >::Type DigitalSet; + + typedef DistanceTransformation DT; + + typedef ReverseDistanceTransformation RDT; + + typedef std::pair Ball; /** * Extract the scaled medial axis from a distance transformation. @@ -115,34 +132,73 @@ namespace DGtal * template arguments. */ - static Type getScaleAxisFromWeightedMap(DT & dt, double alpha, TPowerSeparableMetric powerSeparableMetric) { + static std::vector computeScaleAxisFromDT(DT & dt, double alpha) + { + std::vector medialAxis; + L2PowerMetric l2PowerMetric; - TImageContainer *computedMA = new TImageContainer( dt.domain() ); + // SquaredDT construction, there might be a better way to skip this step + // All balls get alpha times bigger TImageContainer *bigdt = new TImageContainer( dt.domain() ); - - for (typename DT::Domain::ConstIterator it = dt.domain().begin(); it != dt.domain().end(); it++) { - bigdt->setValue((*it), pow(dt(*it), 2)*alpha); + for (auto it : dt.domain()) { + bigdt->setValue(it, pow(dt(it), 2) * alpha); } + + // Medial Axis Extraction + PowerMap power(bigdt->domain(), bigdt, l2PowerMetric); + std::vector BigRdma = ReducedMedialAxis, TImageContainer >::getReducedMedialAxisFromPowerMap(power); - PowerMap power(bigdt->domain(), bigdt, powerSeparableMetric); + // alpha time reduction of all balls size + for (Ball ball : BigRdma) { + const auto v = ball.second; // Value of distance in BigRdma + const auto compressedValue = v/alpha; + Ball compressedBall(ball.first, compressedValue); - Type BigRdma = ReducedMedialAxis, TImageContainer >::getReducedMedialAxisFromPowerMap(power); + if (std::find(medialAxis.begin(), medialAxis.end(), compressedBall) == medialAxis.end()) { + medialAxis.push_back(compressedBall); + } + } + return medialAxis; + } - for (typename Type::Domain::ConstIterator it = BigRdma.domain().begin(); it != BigRdma.domain().end(); it++) { - const auto v = BigRdma(*it); // Value of distance in BigRdma - //std::cout << v << std::endl; - const auto compressedValue = v/alpha; - computedMA->setValue((*it), compressedValue); + /** + * Extract the scaled medial axis from a distance transformation. + * This methods is in @f$ O(|distanceTransformation|)@f$. + * + * @param ballSet the input std::vector > set of balls + * @param alpha the double ratio we use to expand and compress the RDMA + * + * @return a lightweight proxy to the ImageContainer specified in + * template arguments. + */ + + static std::vector computeScaleAxisFromVector(std::vector & ballSet, Domain & domain, double alpha) { + L2Metric l2Metric; + L2PowerMetric l2PowerMetric; + + //Reconstruction of the shape + TImageContainer *weightedMap = new TImageContainer( domain ); + for (Ball ball : ballSet) { + weightedMap->setValue(ball.first, ball.second); } - /* - for (typename Type::Domain::ConstIterator it = computedMA->domain().begin(); it != computedMA->domain().end(); it++) { - const auto x = (*computedMA)(*it); - std::cout << x << std::endl; + + RDT rdt(domain, *weightedMap, l2PowerMetric); + DigitalSet set(domain); + for (typename RDT::Domain::ConstIterator it = rdt.domain().begin(); it != rdt.domain().end(); it++) { + if (rdt(*it) < 0) { + set.insert(*it); + } } - */ - return Type( computedMA ); + DT dt(domain, set, l2Metric); + + std::vector medialAxis; + + medialAxis = computeScaleAxisFromDT(dt, alpha); + + return medialAxis; } + }; // end of class ScaledMedialAxis } // namespace DGtal From 1e0e160a219ca12985ea72150f793fdfe458f848 Mon Sep 17 00:00:00 2001 From: Robin Lamy Date: Fri, 9 Jul 2021 16:32:25 +0200 Subject: [PATCH 14/19] Voronoi Class for complete voronoi map computation --- .../volumes/distance/VoronoiMapComplete.h | 441 ++++++++++++++++++ .../volumes/distance/VoronoiMapComplete.ih | 364 +++++++++++++++ 2 files changed, 805 insertions(+) create mode 100644 src/DGtal/geometry/volumes/distance/VoronoiMapComplete.h create mode 100644 src/DGtal/geometry/volumes/distance/VoronoiMapComplete.ih diff --git a/src/DGtal/geometry/volumes/distance/VoronoiMapComplete.h b/src/DGtal/geometry/volumes/distance/VoronoiMapComplete.h new file mode 100644 index 0000000000..f8f5d4a1e3 --- /dev/null +++ b/src/DGtal/geometry/volumes/distance/VoronoiMapComplete.h @@ -0,0 +1,441 @@ +/** + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + **/ + +#pragma once + +/** + * @file VoronoiMap.h + * @brief Linear in time distance transformation + * @author David Coeurjolly (\c david.coeurjolly@liris.cnrs.fr ) + * Laboratoire d'InfoRmatique en Image et Systèmes d'information - LIRIS (CNRS, UMR 5205), CNRS, France + * + * @date 2012/08/14 + * + * Header file for module VoronoiMap.cpp + * + * This file is part of the DGtal library. + * + * @see testVoronoiMap.cpp + */ + +#if defined(VoronoiMap_RECURSES) +#error Recursive header files inclusion detected in VoronoiMap.h +#else // defined(VoronoiMap_RECURSES) +/** Prevents recursive inclusion of headers. */ +#define VoronoiMap_RECURSES + +#if !defined VoronoiMap_h +/** Prevents repeated inclusion of headers. */ +#define VoronoiMap_h + +////////////////////////////////////////////////////////////////////////////// +// Inclusions +#include +#include +#include +#include "DGtal/base/Common.h" +#include "DGtal/base/CountedPtr.h" +#include "DGtal/images/ImageContainerBySTLVector.h" +#include "DGtal/images/CImage.h" +#include "DGtal/kernel/CPointPredicate.h" +#include "DGtal/kernel/domains/HyperRectDomain.h" +#include "DGtal/geometry/volumes/distance/CSeparableMetric.h" +#include "DGtal/kernel/domains/HyperRectDomain.h" +#include "DGtal/base/ConstAlias.h" +////////////////////////////////////////////////////////////////////////////// + +namespace DGtal +{ + + ///////////////////////////////////////////////////////////////////////////// + // template class VoronoiMap + /** + * Description of template class 'VoronoiMap'

+ * \brief Aim: Implementation of the linear in time Voronoi map + * construction. + + * The algorithm uses a seperable process to construct Voronoi maps + * which has been described in @cite Maurer2003PAMI @cite dcoeurjo_these. + * Along periodic dimensions, the algorithm is adapted following @cite Coeurjo2008. + * + * Given a domain and a point predicate, an instance returns, for + * each point in the domain, the closest point for which the + * predicate if false. Following Computational Geometry + * terminoliogy, points for which the predicate is false are "sites" + * for the Voronoi map construction. If a point is equi-distant to + * two sites (e.g. if the digital point belong to a Voronoi cell + * boundary in the Euclidean space), this Voronoi map construction + * will only keep one of them. + * + * By default, the domain is considered non-periodic but per-dimension + * periodicity can be specified in the constructor. + * When the domain has periodic dimensions, the closest point + * coordinates \c B to a given point \c A may not be between the lower + * and upper bounds of the domain, in such a way that the non-periodic + * distance between \c A and \c B is equal to their distance considering + * the periodicity. + * + * The metric is specified by a model of concepts::CSeparableMetric (for + * instance, any instance of ExactPredicateLpSeparableMetric or + * InexactPredicateLpSeparableMetric). If the separable metric has + * a complexity of O(h) for its "hiddenBy" predicate, the overall + * Voronoi construction algorithm is in @f$ O(h.d.n^d)@f$ for @f$ + * n^d@f$ domains (see class constructor). For Euclidean the @f$ + * l_2@f$ metric, the overall computation is in @f$ O(d.n^d)@f$, + * which is optimal. + * + * If DGtal has been built with OpenMP support (WITH_OPENMP flag set + * to "true"), the computation is done in parallel (multithreaded) + * in an optimal way: on @a p processors, expected runtime is in + * @f$ O(h.d.n^d / p)@f$. + * + * This class is a model of concepts::CConstImage. + * + * @see   \ref toricVol + * + * @tparam TSpace type of Digital Space (model of concepts::CSpace). + * @tparam TPointPredicate point predicate returning true for points + * from which we compute the distance (model of concepts::CPointPredicate) + * @tparam TSeparableMetric a model of concepts::CSeparableMetric + * @tparam TImageContainer any model of concepts::CImage to store the + * VoronoiMap (default: ImageContainerBySTLVector). The space of the + * image container and the TSpace should match. Furthermore the + * container value type must be TSpace::Vector. Lastly, the domain + * of the container must be HyperRectDomain. + */ + template < typename TSpace, + typename TPointPredicate, + typename TSeparableMetric, + typename TImageContainer = + ImageContainerBySTLVector, + std::vector > + > + class VoronoiMap + { + + public: + BOOST_CONCEPT_ASSERT(( concepts::CSpace< TSpace > )); + BOOST_CONCEPT_ASSERT(( concepts::CPointPredicate )); + BOOST_CONCEPT_ASSERT(( concepts::CSeparableMetric )); + BOOST_CONCEPT_ASSERT(( concepts::CImage< TImageContainer > )); + + ///Both Space points and PointPredicate points must be the same. + BOOST_STATIC_ASSERT ((boost::is_same< typename TSpace::Point, + typename TPointPredicate::Point >::value )); + + //ImageContainer::Domain::Space must match with TSpace + BOOST_STATIC_ASSERT ((boost::is_same< TSpace, + typename TImageContainer::Domain::Space >::value )); + + //ImageContainer value type must be std::vector + BOOST_STATIC_ASSERT ((boost::is_same< std::vector, + typename TImageContainer::Value >::value )); + + //ImageContainer domain type must be HyperRectangular + BOOST_STATIC_ASSERT ((boost::is_same< HyperRectDomain, + typename TImageContainer::Domain >::value )); + + ///Copy of the space type. + typedef TSpace Space; + + ///Copy of the point predicate type. + typedef TPointPredicate PointPredicate; + + ///Definition of the underlying domain type. + typedef typename TImageContainer::Domain Domain; + + ///Definition of the separable metric type + typedef TSeparableMetric SeparableMetric; + + ///Large integer type for SeparableMetricHelper construction. + typedef DGtal::int64_t IntegerLong; + + typedef typename Space::Vector Vector; + typedef typename Space::Point Point; + typedef typename Space::Dimension Dimension; + typedef typename Space::Size Size; + typedef typename Space::Point::Coordinate Abscissa; + + ///Type of resulting image + typedef TImageContainer OutputImage; + + ///Definition of the image value type. + typedef Vector Value; + + ///Definition of the image value type. + typedef typename OutputImage::ConstRange ConstRange; + + ///Self type + typedef VoronoiMap< TSpace, TPointPredicate, + TSeparableMetric,TImageContainer > Self; + + + /// Periodicity specification type. + typedef std::array< bool, Space::dimension > PeriodicitySpec; + + /** + * Constructor in the non-periodic case. + * + * This constructor computes the Voronoi Map of a set of point + * sites using a SeparableMetric metric, on a non-periodic domain. + * + * The method associates to each point satisfying the foreground predicate, + * the closest site for which the predicate is false. This algorithm is + * @f$ O(h.d.|domain size|)@f$ if the separable metric "hiddenBy" + * predicate is in @f$ O(h)@f$. + * + * @param aDomain a pointer to the (hyper-rectangular) domain on + * which the computation is performed. + * + * @param predicate a pointer to the point predicate to define the + * Voronoi sites (false points). + * + * @param aMetric a pointer to the separable metric instance. + */ + VoronoiMap(ConstAlias aDomain, + ConstAlias predicate, + ConstAlias aMetric); + + /** + * Constructor with periodicity specification. + * + * This constructor computes the Voronoi Map of a set of point + * sites using a SeparableMetric metric, on a domain with specified + * periodicity. + * + * The method associates to each point satisfying the foreground predicate, + * the closest site for which the predicate is false. This algorithm is + * @f$ O(h.d.|domain size|)@f$ if the separable metric "hiddenBy" + * predicate is in @f$ O(h)@f$. + * + * @param aDomain a pointer to the (hyper-rectangular) domain on + * which the computation is performed. + * + * @param predicate a pointer to the point predicate to define the + * Voronoi sites (false points). + * + * @param aMetric a pointer to the separable metric instance. + * + * @param aPeriodicitySpec an array of size equal to the space dimension + * where the i-th value is \c true if the i-th dimension of the + * space is periodic, \c false otherwise. + */ + VoronoiMap(ConstAlias aDomain, + ConstAlias predicate, + ConstAlias aMetric, + PeriodicitySpec const & aPeriodicitySpec); + /** + * Default destructor + */ + ~VoronoiMap() = default; + + /** + * Disabling default constructor. + */ + VoronoiMap() = delete; + + public: + // ------------------- ConstImage model ------------------------ + + /** + * Assignment operator from another Voronoi map. + * + * @param aOtherVoronoiMap another instance of Self + * @return a reference to Self + */ + Self & operator=(const Self &aOtherVoronoiMap ) = default; + + /** + * Returns a reference (const) to the Voronoi map domain. + * @return a domain + */ + const Domain & domain() const + { + return *myDomainPtr; + } + + /** + * Returns a const range on the Voronoi map values. + * @return a const range + */ + ConstRange constRange() const + { + return myImagePtr->constRange(); + } + + /** + * Access to a Voronoi value (a.k.a. vector to the closest site) + * at a point. + * + * @param aPoint the point to probe. + */ + Value operator()(const Point &aPoint) const + { + return myImagePtr->operator()(aPoint); + } + + /** + * @return Returns an alias to the underlying metric. + */ + const SeparableMetric* metric() const + { + return myMetricPtr; + } + + /** Periodicity specification. + * + * @returns the periodicity specification array. + */ + PeriodicitySpec const & getPeriodicitySpec() const + { + return myPeriodicitySpec; + } + + /** Periodicity specification along one dimensions. + * + * @param [in] n the dimension index. + * @return \c true if the n-th dimension is periodic, \c false otherwise. + */ + bool isPeriodic( const Dimension n ) const + { + return myPeriodicitySpec[ n ]; + } + + /** + * Project point coordinates into the domain, taking into account + * the periodicity. + * + * @pre The given point must come from operator()(const Point &) const (for performance reasons). + * + * @param aPoint the point to project + * @return the coordinates projected into the domain bounds accordingly + * to the periodicity specification. + */ + Point projectPoint( Point aPoint ) const; + + /** + * Self Display method. + * + * @param out output stream + */ + void selfDisplay ( std::ostream & out ) const; + + // ------------------- Private functions ------------------------ + private: + + /** + * Compute the Voronoi Map of a set of point sites using a + * SeparableMetric metric. The method associates to each point + * satisfying the foreground predicate, the closest site for which + * the predicate is false. This algorithm is O(h.d.|domain size|). + */ + void compute ( ) ; + + + /** + * Compute the other steps of the separable Voronoi map. + * + * @param [in] dim the dimension to process + */ + void computeOtherSteps(const Dimension dim) const; + /** + * Given a voronoi map valid at dimension @a dim-1, this method + * updates the map to make it consistent at dimension @a dim along + * the 1D span starting at @a row along the dimension @a + * dim. + * + * @param [in] row starting point of the 1D process. + * @param [in] dim dimension of the update. + */ + void computeOtherStep1D (const Point &row, + const Dimension dim) const; + + /** + * Project a coordinate into the domain, taking into account + * the periodicity. + * + * @pre The given coordinate must come from operator()(const Point &) const (for performance reasons). + * + * @param aCoordinate the coordinate. + * @param aDim dimension of the coordinate. + * @return the coordinates projected into the domain bounds accordingly + * to the periodicity specification. + */ + typename Point::Coordinate projectCoordinate( typename Point::Coordinate aCoordinate, const Dimension aDim ) const; + + // ------------------- Private members ------------------------ + private: + + ///Pointer to the computation domain + const Domain * myDomainPtr; + + ///Pointer to the point predicate + const PointPredicate * myPointPredicatePtr; + + ///Copy of the image lower bound + Point myLowerBoundCopy; + + ///Copy of the image lower bound + Point myUpperBoundCopy; + + ///Value to act as a +infinity value + Point myInfinity; + + /// Index of the periodic dimensions + std::vector< Dimension > myPeriodicityIndex; // Could be boost::static_vector but it needs Boost >= 1.54. + + /// Domain extent. + Point myDomainExtent; + + protected: + + ///Pointer to the separable metric instance + const SeparableMetric * myMetricPtr; + + ///Voronoi map image + CountedPtr myImagePtr; + + /// Periodicity along each dimension. + PeriodicitySpec myPeriodicitySpec; + + }; // end of class VoronoiMap + + /** + * Overloads 'operator<<' for displaying objects of class 'ExactPredicateLpSeparableMetric'. + * @param out the output stream where the object is written. + * @param object the object of class 'ExactPredicateLpSeparableMetric' to write. + * @return the output stream after the writing. + */ + template + std::ostream& + operator<< ( std::ostream & out, const VoronoiMap & object ); + + +} // namespace DGtal + + +/////////////////////////////////////////////////////////////////////////////// +// Includes inline functions. +#include "DGtal/geometry/volumes/distance/VoronoiMap.ih" + +// // +/////////////////////////////////////////////////////////////////////////////// + +#endif // !defined VoronoiMap_h + +#undef VoronoiMap_RECURSES +#endif // else defined(VoronoiMap_RECURSES) diff --git a/src/DGtal/geometry/volumes/distance/VoronoiMapComplete.ih b/src/DGtal/geometry/volumes/distance/VoronoiMapComplete.ih new file mode 100644 index 0000000000..f8fe098dd6 --- /dev/null +++ b/src/DGtal/geometry/volumes/distance/VoronoiMapComplete.ih @@ -0,0 +1,364 @@ +/** + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + **/ + +/** + * @file VoronoiMap.ih + * @author David Coeurjolly (\c david.coeurjolly@liris.cnrs.fr ) + * Laboratoire d'InfoRmatique en Image et Systèmes d'information - LIRIS (CNRS, UMR 5205), CNRS, France + * + * @date 2012/08/14 + * + * Implementation of inline methods defined in VoronoiMap.h + * + * This file is part of the DGtal library. + */ + + +////////////////////////////////////////////////////////////////////////////// +#include + +#ifdef VERBOSE +#include +#endif + +#include "DGtal/kernel/NumberTraits.h" + +////////////////////////////////////////////////////////////////////////////// + +/////////////////////////////////////////////////////////////////////////////// +// IMPLEMENTATION of inline methods. +/////////////////////////////////////////////////////////////////////////////// + +/////////////////////////////////////////////////////////////////////////////// +// ----------------------- Standard services ------------------------------ + +template +inline +void +DGtal::VoronoiMap::compute( ) +{ + //We copy the image extent + myLowerBoundCopy = myDomainPtr->lowerBound(); + myUpperBoundCopy = myDomainPtr->upperBound(); + + //Point outside the domain + for ( auto & coord : myInfinity ) + coord = DGtal::NumberTraits< typename Point::Coordinate >::max(); + + //Init + std::vector myVectorInfinity; + myVectorInfinity.push_back(myInfinity); + std::vector external_point; + for ( auto const & pt : *myDomainPtr ) + if ( (*myPointPredicatePtr)( pt )) + myImagePtr->setValue ( pt, myVectorInfinity ); + else + external_point.push_back(pt); + myImagePtr->setValue ( pt, external_point ); + external_point.pop_back(); + + //We process the remaining dimensions + for ( Dimension dim = 0; dim< S::dimension ; dim++ ) + computeOtherSteps ( dim ); +} + +template +inline +void +DGtal::VoronoiMap::computeOtherSteps ( const Dimension dim ) const +{ +#ifdef VERBOSE + std::string title = "VoronoiMap dimension " + boost::lexical_cast( dim ) ; + trace.beginBlock ( title ); +#endif + + //We setup the subdomain iterator + //the iterator will scan dimension using the order: + // {n-1, n-2, ... 1} (we skip the '0' dimension). + std::vector subdomain; + subdomain.reserve(S::dimension - 1); + for ( int k = 0; k < (int)S::dimension ; k++) + if ( static_cast(((int)S::dimension - 1 - k)) != dim) + subdomain.push_back( (int)S::dimension - 1 - k ); + + Domain localDomain(myLowerBoundCopy, myUpperBoundCopy); + +#ifdef WITH_OPENMP + //Parallel loop + std::vector subRangePoints; + //Starting point precomputation + for ( auto const & pt : localDomain.subRange( subdomain ) ) + subRangePoints.push_back( pt ); + + //We run the 1D problems in // +#pragma omp parallel for schedule(dynamic) + for (size_t i = 0; i < subRangePoints.size(); ++i) + computeOtherStep1D ( subRangePoints[i], dim); + +#else + //We solve the 1D problems sequentially + for ( auto const & pt : localDomain.subRange( subdomain ) ) + computeOtherStep1D ( pt, dim); +#endif + +#ifdef VERBOSE + trace.endBlock(); +#endif +} + +// //////////////////////////////////////////////////////////////////////: +// ////////////////////////// Other Phases +template +void +DGtal::VoronoiMap::computeOtherStep1D ( const Point &startingPoint, + const Dimension dim) const +{ + ASSERT(dim < S::dimension); + + // Default starting and ending point for a cycle + Point startPoint = startingPoint; + Point endPoint = startingPoint; + startPoint[dim] = myLowerBoundCopy[dim]; + endPoint[dim] = myUpperBoundCopy[dim]; + + // Extent along current dimension. + const auto extent = myUpperBoundCopy[dim] - myLowerBoundCopy[dim] + 1; + + // Site storage. + std::vector Sites; + + // Reserve sites storage. + // +1 along periodic dimension in order to store two times the site that is on break index. + Sites.reserve( extent + ( isPeriodic(dim) ? 1 : 0 ) ); + + // Pruning the list of sites and defining cycle bounds. + // In the periodic case, the cycle bounds depend on the so-called break index + // that defines the start point. + if ( dim == 0 ) + { + // For dim = 0, no sites are hidden. + for ( auto point = startPoint ; point[dim] <= myUpperBoundCopy[dim] ; ++point[dim] ) + { + const std::vector psite = myImagePtr->operator()( point ); + if ( psite != myVectorInfinity ) + Sites.push_back( psite ); + } + + // If no sites are found, then there is nothing to do. + if ( Sites.size() == 0 ) + return; + + // In the periodic case and along the first dimension, the break index + // is at the first site found. + if ( isPeriodic(dim) ) + { + startPoint[dim] = Sites[0][dim]; + endPoint[dim] = startPoint[dim] + extent - 1; + + // The first site is also the last site (with appropriate shift). + Sites.push_back( Sites[0] + Point::base(dim, extent) ); + } + } + else + { + // In the periodic case, the cycle depends on break index + if ( isPeriodic(dim) ) + { + // Along other than the first dimension, the break index is at the lowest site found. + auto minRawDist = DGtal::NumberTraits< typename SeparableMetric::RawValue >::max(); + + for ( auto point = startPoint; point[dim] <= myUpperBoundCopy[dim]; ++point[dim] ) + { + const std::vector psite = myImagePtr->operator()( point ); + + if ( psite != myVectorInfinity ) + { + const auto rawDist = myMetricPtr->rawDistance( point, psite[0] ); // All distances to Voronoi sites are equal, we take the first one + if ( rawDist < minRawDist ) + { + minRawDist = rawDist; + startPoint[dim] = point[dim]; + } + } + } + + // If no sites are found, then there is nothing to do. + if ( minRawDist == DGtal::NumberTraits< typename SeparableMetric::RawValue >::max() ) + return; + + endPoint[dim] = startPoint[dim] + extent - 1; + } + + // Pruning the list of sites for both periodic and non-periodic cases. + for( auto point = startPoint ; point[dim] <= myUpperBoundCopy[dim] ; ++point[dim] ) + { + const std::vector psite = myImagePtr->operator()(point); + + if ( psite != myVectorInfinity ) + { + for (Point site : psite) { + while (( Sites.size() >= 2 ) && + ( myMetricPtr->hiddenBy(Sites[Sites.size()-2], Sites[Sites.size()-1] , + site, startingPoint, endPoint, dim) )) + Sites.pop_back(); + + Sites.push_back( site ); + } + } + } + + // Pruning the remaining list of sites in the periodic case. + if ( isPeriodic(dim) ) + { + auto point = startPoint; + point[dim] = myLowerBoundCopy[dim]; + for ( ; point[dim] <= endPoint[dim] - extent + 1; ++point[dim] ) // +1 in order to add the break-index site at the cycle's end. + { + std::vector psite = myImagePtr->operator()(point); + + if ( psite != myVectorInfinity ) + { + for (Point site : psite) { + // Site coordinates must be between startPoint and endPoint. + site[dim] += extent; + + while (( Sites.size() >= 2 ) && + ( myMetricPtr->hiddenBy(Sites[Sites.size()-2], Sites[Sites.size()-1] , + site, startingPoint, endPoint, dim) )) + Sites.pop_back(); + + Sites.push_back( site ); + } + } + } + } + } + + // No sites found + if ( Sites.size() == 0 ) + return; + + // Rewriting for both periodic and non-periodic cases. + std::size_t siteId = 0; + auto point = startPoint; + + for ( ; point[dim] <= myUpperBoundCopy[dim] ; ++point[dim] ) + { + while ( ( siteId < Sites.size()-1 ) && // Enlever la seconde condition, et ajouter dans le while : if (seconde condition), alors on ajoute le site au vecteur associé au point + ( myMetricPtr->closest(point, Sites[siteId], Sites[siteId+1]) + != DGtal::ClosestFIRST )) + siteId++; + + myImagePtr->setValue(point, Sites[siteId]); // On set le vecteur de site associé au point et non pas uniquement le premier site le plus proche qu'on a rencontré + } + + // Continuing rewriting in the periodic case. + if ( isPeriodic(dim) ) + { + for ( ; point[dim] <= endPoint[dim] ; ++point[dim] ) + { + while ( ( siteId < Sites.size()-1 ) && // Idem ici en prenant en compte la périodicité + ( myMetricPtr->closest(point, Sites[siteId], Sites[siteId+1]) + != DGtal::ClosestFIRST )) + siteId++; + + myImagePtr->setValue(point - Point::base(dim, extent), Sites[siteId] - Point::base(dim, extent) ); + } + } + +} + + +/** + * Constructor. + */ +template +inline +DGtal::VoronoiMap::VoronoiMap( ConstAlias aDomain, + ConstAlias aPredicate, + ConstAlias aMetric ) + : myDomainPtr(&aDomain) + , myPointPredicatePtr(&aPredicate) + , myDomainExtent( aDomain->upperBound() - aDomain->lowerBound() + Point::diagonal(1) ) + , myMetricPtr(&aMetric) +{ + myPeriodicitySpec.fill( false ); + myImagePtr = CountedPtr( new OutputImage(aDomain) ); + compute(); +} + +template +inline +DGtal::VoronoiMap::VoronoiMap( ConstAlias aDomain, + ConstAlias aPredicate, + ConstAlias aMetric, + PeriodicitySpec const & aPeriodicitySpec ) + : myDomainPtr(&aDomain) + , myPointPredicatePtr(&aPredicate) + , myDomainExtent( aDomain->upperBound() - aDomain->lowerBound() + Point::diagonal(1) ) + , myMetricPtr(&aMetric) + , myPeriodicitySpec(aPeriodicitySpec) +{ + // Finding periodic dimension index. + for ( Dimension i = 0; i < Space::dimension; ++i ) + if ( isPeriodic(i) ) + myPeriodicityIndex.push_back( i ); + + myImagePtr = CountedPtr( new OutputImage(aDomain) ); + compute(); +} + +template +inline +typename DGtal::VoronoiMap::Point +DGtal::VoronoiMap::projectPoint( Point aPoint ) const +{ + for ( auto const & dim : myPeriodicityIndex ) + aPoint[ dim ] = projectCoordinate( aPoint[ dim ], dim ); + + return aPoint; +} + +template +inline +typename DGtal::VoronoiMap::Point::Coordinate +DGtal::VoronoiMap::projectCoordinate( typename Point::Coordinate aCoordinate, const Dimension aDim ) const +{ + ASSERT( aCoordinate - myDomainPtr->lowerBound()[aDim] + myDomainExtent[aDim] >= 0 ); + return ( aCoordinate - myDomainPtr->lowerBound()[aDim] + myDomainExtent[aDim] ) % myDomainExtent[aDim] + myDomainPtr->lowerBound()[aDim]; +} + +template +inline +void +DGtal::VoronoiMap::selfDisplay ( std::ostream & out ) const +{ + out << "[VoronoiMap] separable metric=" << *myMetricPtr ; +} + + +// // // +// /////////////////////////////////////////////////////////////////////////////// + +template +inline +std::ostream& +DGtal::operator<< ( std::ostream & out, + const VoronoiMap & object ) +{ + object.selfDisplay( out ); + return out; +} From 5986470b34cc6353c2d6ed8448fba9ece2478470 Mon Sep 17 00:00:00 2001 From: Robin Lamy Date: Thu, 15 Jul 2021 17:43:10 +0200 Subject: [PATCH 15/19] Final Scale and Lambda medial axis, and beginning of Complete Voronoi Map (not working yet) --- .../volumes/distance/ScaleMedialAxis.h | 19 +-- .../volumes/distance/VoronoiMapComplete.h | 38 ++--- .../volumes/distance/VoronoiMapComplete.ih | 138 +++++++++++++----- 3 files changed, 131 insertions(+), 64 deletions(-) diff --git a/src/DGtal/geometry/volumes/distance/ScaleMedialAxis.h b/src/DGtal/geometry/volumes/distance/ScaleMedialAxis.h index 1d67183a25..fdc4f2b187 100644 --- a/src/DGtal/geometry/volumes/distance/ScaleMedialAxis.h +++ b/src/DGtal/geometry/volumes/distance/ScaleMedialAxis.h @@ -71,10 +71,11 @@ namespace DGtal * \brief Aim: Implementation of the separable medial axis * extraction. * - * This utility struct extract medial axis balls from a - * PowerMap. Basically, each (weighted) site of the PowerMap defines - * a digital maximal ball if its digital power cell restricted to - * the input shape is not empty @cite dcoeurjo_pami_RDMA . + * This utility struct extract scale medial axis balls from a + * DistanceTransformation. Basically, each (weighted) site of the + * DistanceTransformation defines a digital ball, we make it + * alpha-bigger, extract the medial axis, and then make it + * alpha-smaller. * * Optimal Separable Algorithms to Compute the Reverse * Euclidean Distance Transformation and Discrete Medial Axis in @@ -90,11 +91,11 @@ namespace DGtal * @note Following ReverseDistanceTransformation, the input shape is * defined as points with negative power distance. * - * @tparam TPowerMap any specialized PowerMap type @tparam - * TImageContainer any model of CImage to store the medial axis + * @tparam TSpace any Space (usually SpaceND) + * @tparam TImageContainer any model of CImage to store the medial axis * points (default: ImageContainerBySTLVector). * - * @see testReducedMedialAxis.cpp + * @see testScaleMedialAxis.cpp */ template , double> > @@ -128,8 +129,8 @@ namespace DGtal * @param dt the input DistanceTransformation * @param alpha the double ratio we use to expand and compress the RDMA * - * @return a lightweight proxy to the ImageContainer specified in - * template arguments. + * @return a std::vector > that contains centers and + * radius of the Scale Medial Axis balls. */ static std::vector computeScaleAxisFromDT(DT & dt, double alpha) diff --git a/src/DGtal/geometry/volumes/distance/VoronoiMapComplete.h b/src/DGtal/geometry/volumes/distance/VoronoiMapComplete.h index f8f5d4a1e3..26a0131280 100644 --- a/src/DGtal/geometry/volumes/distance/VoronoiMapComplete.h +++ b/src/DGtal/geometry/volumes/distance/VoronoiMapComplete.h @@ -17,7 +17,7 @@ #pragma once /** - * @file VoronoiMap.h + * @file VoronoiMapComplete.h * @brief Linear in time distance transformation * @author David Coeurjolly (\c david.coeurjolly@liris.cnrs.fr ) * Laboratoire d'InfoRmatique en Image et Systèmes d'information - LIRIS (CNRS, UMR 5205), CNRS, France @@ -31,15 +31,15 @@ * @see testVoronoiMap.cpp */ -#if defined(VoronoiMap_RECURSES) -#error Recursive header files inclusion detected in VoronoiMap.h -#else // defined(VoronoiMap_RECURSES) +#if defined(VoronoiMapComplete_RECURSES) +#error Recursive header files inclusion detected in VoronoiMapComplete.h +#else // defined(VoronoiMapComplete_RECURSES) /** Prevents recursive inclusion of headers. */ -#define VoronoiMap_RECURSES +#define VoronoiMapComplete_RECURSES -#if !defined VoronoiMap_h +#if !defined VoronoiMapComplete_h /** Prevents repeated inclusion of headers. */ -#define VoronoiMap_h +#define VoronoiMapComplete_h ////////////////////////////////////////////////////////////////////////////// // Inclusions @@ -123,7 +123,7 @@ namespace DGtal ImageContainerBySTLVector, std::vector > > - class VoronoiMap + class VoronoiMapComplete { public: @@ -179,7 +179,7 @@ namespace DGtal typedef typename OutputImage::ConstRange ConstRange; ///Self type - typedef VoronoiMap< TSpace, TPointPredicate, + typedef VoronoiMapComplete< TSpace, TPointPredicate, TSeparableMetric,TImageContainer > Self; @@ -205,7 +205,7 @@ namespace DGtal * * @param aMetric a pointer to the separable metric instance. */ - VoronoiMap(ConstAlias aDomain, + VoronoiMapComplete(ConstAlias aDomain, ConstAlias predicate, ConstAlias aMetric); @@ -233,19 +233,19 @@ namespace DGtal * where the i-th value is \c true if the i-th dimension of the * space is periodic, \c false otherwise. */ - VoronoiMap(ConstAlias aDomain, + VoronoiMapComplete(ConstAlias aDomain, ConstAlias predicate, ConstAlias aMetric, PeriodicitySpec const & aPeriodicitySpec); /** * Default destructor */ - ~VoronoiMap() = default; + ~VoronoiMapComplete() = default; /** * Disabling default constructor. */ - VoronoiMap() = delete; + VoronoiMapComplete() = delete; public: // ------------------- ConstImage model ------------------------ @@ -282,7 +282,7 @@ namespace DGtal * * @param aPoint the point to probe. */ - Value operator()(const Point &aPoint) const + std::vector operator()(const Point &aPoint) const { return myImagePtr->operator()(aPoint); } @@ -411,7 +411,7 @@ namespace DGtal /// Periodicity along each dimension. PeriodicitySpec myPeriodicitySpec; - }; // end of class VoronoiMap + }; // end of class VoronoiMapComplete /** * Overloads 'operator<<' for displaying objects of class 'ExactPredicateLpSeparableMetric'. @@ -422,7 +422,7 @@ namespace DGtal template std::ostream& - operator<< ( std::ostream & out, const VoronoiMap & object ); + operator<< ( std::ostream & out, const VoronoiMapComplete & object ); } // namespace DGtal @@ -430,12 +430,12 @@ namespace DGtal /////////////////////////////////////////////////////////////////////////////// // Includes inline functions. -#include "DGtal/geometry/volumes/distance/VoronoiMap.ih" +#include "DGtal/geometry/volumes/distance/VoronoiMapComplete.ih" // // /////////////////////////////////////////////////////////////////////////////// #endif // !defined VoronoiMap_h -#undef VoronoiMap_RECURSES -#endif // else defined(VoronoiMap_RECURSES) +#undef VoronoiMapComplete_RECURSES +#endif // else defined(VoronoiMapComplete_RECURSES) diff --git a/src/DGtal/geometry/volumes/distance/VoronoiMapComplete.ih b/src/DGtal/geometry/volumes/distance/VoronoiMapComplete.ih index f8fe098dd6..ddb0d2298b 100644 --- a/src/DGtal/geometry/volumes/distance/VoronoiMapComplete.ih +++ b/src/DGtal/geometry/volumes/distance/VoronoiMapComplete.ih @@ -48,7 +48,7 @@ template inline void -DGtal::VoronoiMap::compute( ) +DGtal::VoronoiMapComplete::compute( ) { //We copy the image extent myLowerBoundCopy = myDomainPtr->lowerBound(); @@ -59,26 +59,29 @@ DGtal::VoronoiMap::compute( ) coord = DGtal::NumberTraits< typename Point::Coordinate >::max(); //Init - std::vector myVectorInfinity; - myVectorInfinity.push_back(myInfinity); - std::vector external_point; for ( auto const & pt : *myDomainPtr ) - if ( (*myPointPredicatePtr)( pt )) + if ( (*myPointPredicatePtr)( pt )) { + std::vector myVectorInfinity; + myVectorInfinity.push_back(myInfinity); myImagePtr->setValue ( pt, myVectorInfinity ); - else + } else { + std::vector external_point; external_point.push_back(pt); myImagePtr->setValue ( pt, external_point ); external_point.pop_back(); + } + //We process the remaining dimensions - for ( Dimension dim = 0; dim< S::dimension ; dim++ ) + for ( Dimension dim = 0; dim< S::dimension ; dim++ ) { computeOtherSteps ( dim ); + } } template inline void -DGtal::VoronoiMap::computeOtherSteps ( const Dimension dim ) const +DGtal::VoronoiMapComplete::computeOtherSteps ( const Dimension dim ) const { #ifdef VERBOSE std::string title = "VoronoiMap dimension " + boost::lexical_cast( dim ) ; @@ -123,7 +126,7 @@ DGtal::VoronoiMap::computeOtherSteps ( const Dimension dim ) // ////////////////////////// Other Phases template void -DGtal::VoronoiMap::computeOtherStep1D ( const Point &startingPoint, +DGtal::VoronoiMapComplete::computeOtherStep1D ( const Point &startingPoint, const Dimension dim) const { ASSERT(dim < S::dimension); @@ -134,6 +137,9 @@ DGtal::VoronoiMap::computeOtherStep1D ( const Point &startingP startPoint[dim] = myLowerBoundCopy[dim]; endPoint[dim] = myUpperBoundCopy[dim]; + std::vector myVectorInfinity; + myVectorInfinity.push_back(myInfinity); + // Extent along current dimension. const auto extent = myUpperBoundCopy[dim] - myLowerBoundCopy[dim] + 1; @@ -149,14 +155,18 @@ DGtal::VoronoiMap::computeOtherStep1D ( const Point &startingP // that defines the start point. if ( dim == 0 ) { + std::cout << "dim 0" << std::endl; // For dim = 0, no sites are hidden. for ( auto point = startPoint ; point[dim] <= myUpperBoundCopy[dim] ; ++point[dim] ) { const std::vector psite = myImagePtr->operator()( point ); - if ( psite != myVectorInfinity ) - Sites.push_back( psite ); + if ( psite != myVectorInfinity ) { + for (Point voronoiPoint : psite) { + Sites.push_back( voronoiPoint ); + } + } } - + // If no sites are found, then there is nothing to do. if ( Sites.size() == 0 ) return; @@ -174,6 +184,7 @@ DGtal::VoronoiMap::computeOtherStep1D ( const Point &startingP } else { + std::cout << "dim 1" << std::endl; // In the periodic case, the cycle depends on break index if ( isPeriodic(dim) ) { @@ -212,9 +223,11 @@ DGtal::VoronoiMap::computeOtherStep1D ( const Point &startingP for (Point site : psite) { while (( Sites.size() >= 2 ) && ( myMetricPtr->hiddenBy(Sites[Sites.size()-2], Sites[Sites.size()-1] , - site, startingPoint, endPoint, dim) )) + site, startingPoint, endPoint, dim) )) { + Sites.pop_back(); - + } + Sites.push_back( site ); } } @@ -227,7 +240,7 @@ DGtal::VoronoiMap::computeOtherStep1D ( const Point &startingP point[dim] = myLowerBoundCopy[dim]; for ( ; point[dim] <= endPoint[dim] - extent + 1; ++point[dim] ) // +1 in order to add the break-index site at the cycle's end. { - std::vector psite = myImagePtr->operator()(point); + const std::vector psite = myImagePtr->operator()(point); if ( psite != myVectorInfinity ) { @@ -248,21 +261,70 @@ DGtal::VoronoiMap::computeOtherStep1D ( const Point &startingP } // No sites found - if ( Sites.size() == 0 ) + if ( Sites.size() == 0 ) return; + // Rewriting for both periodic and non-periodic cases. std::size_t siteId = 0; auto point = startPoint; - + std::cout << "Sites :" << std::endl; + for (Point site : Sites) { + std::cout << site << std::endl; + } + std::cout << std::endl; + for ( ; point[dim] <= myUpperBoundCopy[dim] ; ++point[dim] ) { - while ( ( siteId < Sites.size()-1 ) && // Enlever la seconde condition, et ajouter dans le while : if (seconde condition), alors on ajoute le site au vecteur associé au point - ( myMetricPtr->closest(point, Sites[siteId], Sites[siteId+1]) - != DGtal::ClosestFIRST )) - siteId++; - - myImagePtr->setValue(point, Sites[siteId]); // On set le vecteur de site associé au point et non pas uniquement le premier site le plus proche qu'on a rencontré + std::cout << point << " " << point[dim] << " " << dim << std::endl; + std::vector voronoiSites; + for (Point pointSite : myImagePtr->operator()(point)) { + voronoiSites.push_back(pointSite); + } + siteId = 0; + while ( ( siteId < Sites.size()-1 ) && + ( myMetricPtr->closest(point, Sites[siteId], Sites[siteId+1]) + == DGtal::ClosestSECOND )) { + siteId++; + } + if (myMetricPtr->rawDistance(Sites[siteId], point) < myMetricPtr->rawDistance(voronoiSites[0], point)) { + std::cout << "EMPTY : " << point << " "<< myMetricPtr->rawDistance(Sites[siteId], point) << " " << myMetricPtr->rawDistance(voronoiSites[0], point) << std::endl; + while(!voronoiSites.empty()){ + voronoiSites.pop_back(); + } + if ( myMetricPtr->closest(point, Sites[siteId], Sites[siteId+1]) == DGtal::ClosestBOTH ) { + if (std::find(voronoiSites.begin(), voronoiSites.end(), Sites[siteId]) == voronoiSites.end()) { + voronoiSites.push_back(Sites[siteId]); + std::cout << "Set : " << Sites[siteId] << std::endl; + } + if (std::find(voronoiSites.begin(), voronoiSites.end(), Sites[siteId+1]) == voronoiSites.end()) { + voronoiSites.push_back(Sites[siteId+1]); + std::cout << "Set : " << Sites[siteId+1] << std::endl; + } + } else { + if (std::find(voronoiSites.begin(), voronoiSites.end(), Sites[siteId]) == voronoiSites.end()) { + voronoiSites.push_back(Sites[siteId]); + std::cout << "Set : " << Sites[siteId] << std::endl; + } + } + } else if(myMetricPtr->rawDistance(Sites[siteId], point) == myMetricPtr->rawDistance(voronoiSites[0], point)) { + if ( myMetricPtr->closest(point, Sites[siteId], Sites[siteId+1]) == DGtal::ClosestBOTH ) { + if (std::find(voronoiSites.begin(), voronoiSites.end(), Sites[siteId]) == voronoiSites.end()) { + voronoiSites.push_back(Sites[siteId]); + } + if (std::find(voronoiSites.begin(), voronoiSites.end(), Sites[siteId]) == voronoiSites.end()) { + voronoiSites.push_back(Sites[siteId+1]); + std::cout << "Set : " << Sites[siteId] << " " << Sites[siteId+1] << std::endl; + } + } else { + if (std::find(voronoiSites.begin(), voronoiSites.end(), Sites[siteId]) == voronoiSites.end()) { + voronoiSites.push_back(Sites[siteId]); + std::cout << "Set : " << Sites[siteId] << std::endl; + } + } + } + + myImagePtr->setValue(point, voronoiSites); // On set le vecteur de site associé au point et non pas uniquement le premier site le plus proche qu'on a rencontré } // Continuing rewriting in the periodic case. @@ -270,12 +332,16 @@ DGtal::VoronoiMap::computeOtherStep1D ( const Point &startingP { for ( ; point[dim] <= endPoint[dim] ; ++point[dim] ) { - while ( ( siteId < Sites.size()-1 ) && // Idem ici en prenant en compte la périodicité - ( myMetricPtr->closest(point, Sites[siteId], Sites[siteId+1]) - != DGtal::ClosestFIRST )) - siteId++; + std::vector voronoiSites; + siteId = 0; - myImagePtr->setValue(point - Point::base(dim, extent), Sites[siteId] - Point::base(dim, extent) ); + while ( siteId < Sites.size()-1 ) {// Idem ici en prenant en compte la périodicité + if ( myMetricPtr->closest(point, Sites[siteId], Sites[siteId+1]) == DGtal::ClosestFIRST ) { + voronoiSites.push_back(Sites[siteId] - Point::base(dim, extent)); + } + siteId++; + } + myImagePtr->setValue(point - Point::base(dim, extent), voronoiSites ); } } @@ -287,7 +353,7 @@ DGtal::VoronoiMap::computeOtherStep1D ( const Point &startingP */ template inline -DGtal::VoronoiMap::VoronoiMap( ConstAlias aDomain, +DGtal::VoronoiMapComplete::VoronoiMapComplete( ConstAlias aDomain, ConstAlias aPredicate, ConstAlias aMetric ) : myDomainPtr(&aDomain) @@ -302,7 +368,7 @@ DGtal::VoronoiMap::VoronoiMap( ConstAlias aDomain, template inline -DGtal::VoronoiMap::VoronoiMap( ConstAlias aDomain, +DGtal::VoronoiMapComplete::VoronoiMapComplete( ConstAlias aDomain, ConstAlias aPredicate, ConstAlias aMetric, PeriodicitySpec const & aPeriodicitySpec ) @@ -323,8 +389,8 @@ DGtal::VoronoiMap::VoronoiMap( ConstAlias aDomain, template inline -typename DGtal::VoronoiMap::Point -DGtal::VoronoiMap::projectPoint( Point aPoint ) const +typename DGtal::VoronoiMapComplete::Point +DGtal::VoronoiMapComplete::projectPoint( Point aPoint ) const { for ( auto const & dim : myPeriodicityIndex ) aPoint[ dim ] = projectCoordinate( aPoint[ dim ], dim ); @@ -334,8 +400,8 @@ DGtal::VoronoiMap::projectPoint( Point aPoint ) const template inline -typename DGtal::VoronoiMap::Point::Coordinate -DGtal::VoronoiMap::projectCoordinate( typename Point::Coordinate aCoordinate, const Dimension aDim ) const +typename DGtal::VoronoiMapComplete::Point::Coordinate +DGtal::VoronoiMapComplete::projectCoordinate( typename Point::Coordinate aCoordinate, const Dimension aDim ) const { ASSERT( aCoordinate - myDomainPtr->lowerBound()[aDim] + myDomainExtent[aDim] >= 0 ); return ( aCoordinate - myDomainPtr->lowerBound()[aDim] + myDomainExtent[aDim] ) % myDomainExtent[aDim] + myDomainPtr->lowerBound()[aDim]; @@ -344,7 +410,7 @@ DGtal::VoronoiMap::projectCoordinate( typename Point::Coordi template inline void -DGtal::VoronoiMap::selfDisplay ( std::ostream & out ) const +DGtal::VoronoiMapComplete::selfDisplay ( std::ostream & out ) const { out << "[VoronoiMap] separable metric=" << *myMetricPtr ; } @@ -357,7 +423,7 @@ template inline std::ostream& DGtal::operator<< ( std::ostream & out, - const VoronoiMap & object ) + const VoronoiMapComplete & object ) { object.selfDisplay( out ); return out; From db35a6427276423d65ca3cbe62b95daf494be8fd Mon Sep 17 00:00:00 2001 From: David Coeurjolly Date: Thu, 15 Jul 2021 21:41:32 +0200 Subject: [PATCH 16/19] edits --- src/DGtal/geometry/tools/ImplicitBallTools.h | 351 +++++++++--------- .../geometry/tools/testImplicitBallTools.cpp | 67 ++-- 2 files changed, 210 insertions(+), 208 deletions(-) diff --git a/src/DGtal/geometry/tools/ImplicitBallTools.h b/src/DGtal/geometry/tools/ImplicitBallTools.h index a6dbd633d7..bc79a07882 100644 --- a/src/DGtal/geometry/tools/ImplicitBallTools.h +++ b/src/DGtal/geometry/tools/ImplicitBallTools.h @@ -1,6 +1,5 @@ #include #include -#include #include "DGtal/base/Common.h" #include "DGtal/helpers/StdDefs.h" #include "DGtal/kernel/NumberTraits.h" @@ -9,180 +8,200 @@ #include "DGtal/kernel/sets/CDigitalSet.h" #include "DGtal/shapes/implicit/ImplicitBall.h" +#ifdef WITH_EIGEN +#include +#endif -namespace DGtal { - - /** - * @param aPoint one point - * @param otherPoint other point - * - * @return the smallest ImplicitBall that goes - * through the 2 points - */ - template - ImplicitBall > ballFrom2Points(TPoint & aPoint, TPoint & otherPoint) { - typename SpaceND::RealPoint center((aPoint + otherPoint)/2); +namespace DGtal +{ + namespace functions + { + /** + * Returns the smallest nD ball going through two points. + * + * @param aPoint one point + * @param otherPoint other point + * + * @return the smallest ImplicitBall that goes + * through the 2 points + */ + template + ImplicitBall > ballFrom2Points(const TPoint & aPoint, + const TPoint & otherPoint) + { + typename SpaceND::RealPoint center(aPoint); + center += otherPoint; double radius = (aPoint - otherPoint).norm()/2; - return ImplicitBall >(center, radius); - } - - /** - * @param p1 one point of dimension 2 - * @param p2 second point of dimension 2 - * @param p3 third point of dimension 2 - * - * @return the smallest ImplicitBall of dimension 2 that goes - * through the 3 points - */ - template - ImplicitBall > ballFrom3Points(const TPoint & p1, const TPoint & p2,const TPoint & p3) { - BOOST_ASSERT(TPoint::dimension == 2 || TPoint::dimension == 3); - - if (TPoint::dimension == 3) { - return getBallFrom4Point3D(p1, p2, p3, p3); + return ImplicitBall >(0.5*center, radius); } + + /** - * Formule d'après : Centre et rayon d’un cerclepassant par trois points donnés(Phm 2006/02/05) - * https://cral-perso.univ-lyon1.fr/labo/fc/Ateliers_archives/ateliers_2005-06/cercle_3pts.pdf + * Return the smallest enclosing ball from 4 points in 3D */ - double x1, x2, x3, y1, y2, y3; - // Cas d'un côté parallèle à l'axe des abscisses pour éviter la division par 0, ici [P1, P2] - if (!(p1[1] - p2[1])) { - x1 = p1[0]; - y1 = p1[1]; - x3 = p2[0]; - y3 = p2[1]; - x2 = p3[0]; - y2 = p3[1]; - } else if (!(p2[1] - p3[1])) { // Ici [P2, P3] - x1 = p2[0]; - y1 = p2[1]; - x3 = p3[0]; - y3 = p3[1]; - x2 = p1[0]; - y2 = p1[1]; - } else { - x1 = p1[0]; - y1 = p1[1]; - x2 = p2[0]; - y2 = p2[1]; - x3 = p3[0]; - y3 = p3[1]; + template + ImplicitBall > + getBallFrom4Point3D(const TPoint & A, const TPoint & B, const TPoint & C, const TPoint & D) + { + BOOST_ASSERT_MSG(TPoint::dimension == 3, "Point dimension must be 3"); + Eigen::Matrix3f M; + Eigen::Vector3f b; + int b1, b2, b3; + + b1 = -(pow(B[0], 2) - pow(A[0], 2) + pow(B[1], 2) - pow(A[1], 2) + pow(B[2], 2) - pow(A[2], 2)); + b2 = -(pow(C[0], 2) - pow(A[0], 2) + pow(C[1], 2) - pow(A[1], 2) + pow(C[2], 2) - pow(A[2], 2)); + b3 = -(pow(D[0], 2) - pow(A[0], 2) + pow(D[1], 2) - pow(A[1], 2) + pow(D[2], 2) - pow(A[2], 2)); + b << b1, b2, b3; + + M << 2*(A[0] - B[0]) , 2*(A[1] - B[1]) , 2*(A[2] - B[2]) , + 2*(A[0] - C[0]) , 2*(A[1] - C[1]) , 2*(A[2] - C[2]) , + 2*(A[0] - D[0]) , 2*(A[1] - D[1]) , 2*(A[2] - D[2]); + + Eigen::Vector3f centerVector = M.colPivHouseholderQr().solve(b); + typename SpaceND::RealPoint center(centerVector(0), centerVector(1), centerVector(2)); + float x, y, z; + x = center[0]; + y = center[1]; + z = center[2]; + float radius = sqrt(pow(x-A[0], 2) + pow(y-A[1], 2) + pow(z-A[2], 2)); + ImplicitBall > ball(center, radius); + return ball; } - //Fin de gestion des cas particuliers - - double X1 = pow(x1, 2); - double X2 = pow(x2, 2); - double X3 = pow(x3, 2); - double Y1 = pow(y1, 2); - double Y2 = pow(y2, 2); - double Y3 = pow(y3, 2); - - double centerX = -((X3-X2+Y3-Y2)/(2*(y3-y2)) - (X2-X1+Y2-Y1)/(2*(y2-y1))) / ((x2-x1)/(y2-y1) - (x3-x2)/(y3-y2)); - double centerY = -((x2-x1)/(y2-y1)) * centerX + (X2-X1+Y2-Y1)/(2*(y2-y1)); - double radius = sqrt(pow(centerX - x1, 2) + pow(centerY - y1, 2)); - typename SpaceND::RealPoint center(centerX, centerY); - return ImplicitBall >(center, radius); - } - - /** - * Return the smallest enclosing ball from 4 points in 3D - */ -template -ImplicitBall > -getBallFrom4Point3D(TPoint & A, TPoint & B, TPoint & C, TPoint & D) { - BOOST_ASSERT_MSG(TPoint::dimension == 3, "Point dimension must be 3"); - Eigen::Matrix3f M; - Eigen::Vector3f b; - int b1, b2, b3; - - b1 = -(pow(B[0], 2) - pow(A[0], 2) + pow(B[1], 2) - pow(A[1], 2) + pow(B[2], 2) - pow(A[2], 2)); - b2 = -(pow(C[0], 2) - pow(A[0], 2) + pow(C[1], 2) - pow(A[1], 2) + pow(C[2], 2) - pow(A[2], 2)); - b3 = -(pow(D[0], 2) - pow(A[0], 2) + pow(D[1], 2) - pow(A[1], 2) + pow(D[2], 2) - pow(A[2], 2)); - b << b1, b2, b3; - - M << 2*(A[0] - B[0]) , 2*(A[1] - B[1]) , 2*(A[2] - B[2]) , - 2*(A[0] - C[0]) , 2*(A[1] - C[1]) , 2*(A[2] - C[2]) , - 2*(A[0] - D[0]) , 2*(A[1] - D[1]) , 2*(A[2] - D[2]); - - Eigen::Vector3f centerVector = M.colPivHouseholderQr().solve(b); - typename SpaceND::RealPoint center(centerVector(0), centerVector(1), centerVector(2)); - float x, y, z; - x = center[0]; - y = center[1]; - z = center[2]; - float radius = sqrt(pow(x-A[0], 2) + pow(y-A[1], 2) + pow(z-A[2], 2)); - ImplicitBall > ball(center, radius); - return ball; -} - - /** - * @param R a set (DigitalSet, SmallSet etc) of size 3 or less - * - * @return the smallest ball with R on its border - */ - template - ImplicitBall trivialCircle(TSet & R) { - BOOST_ASSERT_MSG(R.size() < 5, "Set size must be 4 or less to find the trivial ball"); - BOOST_CONCEPT_ASSERT(( concepts::CDigitalSet )); - typedef typename TSet::Space::RealPoint RealPoint; - typedef ImplicitBall ImplicitBall; - double x, y, r; - - switch (R.size()) { - case 1 : - return ImplicitBall(*(R.begin()), 0); - case 2 : - return ballFrom2Points(*(R.begin()), *(R.begin()+1)); - case 3 : - return ballFrom3Points(*(R.begin()), *(R.begin()+1), *(R.begin()+2)); - case 4 : - return getBallFrom4Point3D(*(R.begin()), *(R.begin()+1), *(R.begin()+2), *(R.begin()+3)); - default : - return ImplicitBall(RealPoint(0.5, 0.5), 0); + + + /** + * @param p1 one point of dimension 2 + * @param p2 second point of dimension 2 + * @param p3 third point of dimension 2 + * + * @return the smallest ImplicitBall of dimension 2 that goes + * through the 3 points + */ + template + ImplicitBall > ballFrom3Points(const TPoint & p1, + const TPoint & p2, + const TPoint & p3) + { + BOOST_ASSERT(TPoint::dimension == 2 || TPoint::dimension == 3); + + if (TPoint::dimension == 3) + { + return getBallFrom4Point3D(p1, p2, p3, p3); + } + /** + * Formule d'après : Centre et rayon d’un cerclepassant par trois points donnés(Phm 2006/02/05) + * https://cral-perso.univ-lyon1.fr/labo/fc/Ateliers_archives/ateliers_2005-06/cercle_3pts.pdf + */ + double x1, x2, x3, y1, y2, y3; + // Cas d'un côté parallèle à l'axe des abscisses pour éviter la division par 0, ici [P1, P2] + if (!(p1[1] - p2[1])) { + x1 = p1[0]; + y1 = p1[1]; + x3 = p2[0]; + y3 = p2[1]; + x2 = p3[0]; + y2 = p3[1]; + } else if (!(p2[1] - p3[1])) { // Ici [P2, P3] + x1 = p2[0]; + y1 = p2[1]; + x3 = p3[0]; + y3 = p3[1]; + x2 = p1[0]; + y2 = p1[1]; + } else { + x1 = p1[0]; + y1 = p1[1]; + x2 = p2[0]; + y2 = p2[1]; + x3 = p3[0]; + y3 = p3[1]; + } + //Fin de gestion des cas particuliers + + double X1 = pow(x1, 2); + double X2 = pow(x2, 2); + double X3 = pow(x3, 2); + double Y1 = pow(y1, 2); + double Y2 = pow(y2, 2); + double Y3 = pow(y3, 2); + + double centerX = -((X3-X2+Y3-Y2)/(2*(y3-y2)) - (X2-X1+Y2-Y1)/(2*(y2-y1))) / ((x2-x1)/(y2-y1) - (x3-x2)/(y3-y2)); + double centerY = -((x2-x1)/(y2-y1)) * centerX + (X2-X1+Y2-Y1)/(2*(y2-y1)); + double radius = sqrt(pow(centerX - x1, 2) + pow(centerY - y1, 2)); + typename SpaceND::RealPoint center(centerX, centerY); + return ImplicitBall >(center, radius); } - } - - /** - * @param P the points we want to put in the - * smallest enclosing ball. The type is necessary to use - * random access, to generalize later... - * @param R the points that are on the border of - * the ball, initially empty. - * - * @return the smallest enclosing ImplicitBall of Point dimension - */ - template - ImplicitBall smallestEuclideanEnclosingBall(std::vector & P, TSet & R) - { - //This methods has trivialCircle code only in 2d. - //In higher dimensions, use ........ - typedef typename TSet::Point Point; - typedef typename TSet::Space::RealPoint RealPoint; - typedef ImplicitBall ImplicitBall; - BOOST_STATIC_ASSERT_MSG( Point::dimension == 2, "Point dimension must be 2"); - BOOST_CONCEPT_ASSERT(( concepts::CDigitalSet )); - - double x, y, r; - if (P.empty() || R.size() == Point::dimension) { - ImplicitBall ball(trivialCircle(R)); - return ball; + + + /** + * @param R a set (DigitalSet, SmallSet etc) of size 3 or less + * + * @return the smallest ball with R on its border + */ + template + ImplicitBall trivialCircle(TSet & R) { + BOOST_ASSERT_MSG(R.size() < 5, "Set size must be 4 or less to find the trivial ball"); + BOOST_CONCEPT_ASSERT(( concepts::CDigitalSet )); + typedef typename TSet::Space::RealPoint RealPoint; + typedef ImplicitBall ImplicitBall; + double x, y, r; + + switch (R.size()) { + case 1 : + return ImplicitBall(*(R.begin()), 0); + case 2 : + return ballFrom2Points(*(R.begin()), *(R.begin()+1)); + case 3 : + return ballFrom3Points(*(R.begin()), *(R.begin()+1), *(R.begin()+2)); + case 4 : + return getBallFrom4Point3D(*(R.begin()), *(R.begin()+1), *(R.begin()+2), *(R.begin()+3)); + default : + return ImplicitBall(RealPoint(0.5, 0.5), 0); + } } - int random = std::rand()%P.size(); - Point p = P[random]; - P.erase(P.begin()+random); - ImplicitBall D = smallestEuclideanEnclosingBall(P, R); - RealPoint center(D.center()); - r = D.radius(); - if ( (p-center).squaredNorm() < r*r ) { + + /** + * @param P the points we want to put in the + * smallest enclosing ball. The type is necessary to use + * random access, to generalize later... + * @param R the points that are on the border of + * the ball, initially empty. + * + * @return the smallest enclosing ImplicitBall of Point dimension + */ + template + ImplicitBall smallestEuclideanEnclosingBall(std::vector & P, TSet & R) + { + //This methods has trivialCircle code only in 2d. + //In higher dimensions, use ........ + typedef typename TSet::Point Point; + typedef typename TSet::Space::RealPoint RealPoint; + typedef ImplicitBall ImplicitBall; + + BOOST_STATIC_ASSERT_MSG( Point::dimension == 2, "Point dimension must be 2"); + BOOST_CONCEPT_ASSERT(( concepts::CDigitalSet )); + + double x, y, r; + if (P.empty() || R.size() == Point::dimension) { + ImplicitBall ball(trivialCircle(R)); + return ball; + } + int random = std::rand()%P.size(); + Point p = P[random]; + P.erase(P.begin()+random); + ImplicitBall D = smallestEuclideanEnclosingBall(P, R); + RealPoint center(D.center()); + r = D.radius(); + if ( (p-center).squaredNorm() < r*r ) { + P.insert(P.begin(), p); + return D; + } + R.insert(p); + ImplicitBall ball(smallestEuclideanEnclosingBall(P, R)); + R.erase(p); P.insert(P.begin(), p); - return D; + return ball; } - R.insert(p); - ImplicitBall ball(smallestEuclideanEnclosingBall(P, R)); - R.erase(p); - P.insert(P.begin(), p); - return ball; } -} \ No newline at end of file +} diff --git a/tests/geometry/tools/testImplicitBallTools.cpp b/tests/geometry/tools/testImplicitBallTools.cpp index 50bfc8dcbb..e9893d0e9d 100644 --- a/tests/geometry/tools/testImplicitBallTools.cpp +++ b/tests/geometry/tools/testImplicitBallTools.cpp @@ -32,7 +32,6 @@ #include #include -#include #include "DGtal/base/Common.h" #include "DGtal/helpers/StdDefs.h" #include "DGtal/kernel/NumberTraits.h" @@ -44,7 +43,7 @@ #include "DGtalCatch.h" -using namespace std; + using namespace DGtal; TEST_CASE( "Testing ImplicitBallTools functions" ) { @@ -57,59 +56,43 @@ TEST_CASE( "Testing ImplicitBallTools functions" ) { typedef Z3i::Point Point3D; typedef Z3i::RealPoint RealPoint3D; - SECTION( "Ball From 2 Points Dimension 2 and 3" ) { - // Dimension 2 - ImplicitBall2D ball = ballFrom2Points(Point2D(0, 0), Point2D(5, 5)); + SECTION( "Ball From 2 Points Dimension 2 and 3" ) + { + ImplicitBall2D ball = functions::ballFrom2Points(Point2D(0, 0), Point2D(5, 5)); CHECK(ball.center() == RealPoint2D(2.5, 2.5)); - ImplicitBall2D ball = ballFrom2Points(Point2D(4, 4), Point2D(8, 8)); - CHECK(ball.center() == RealPoint2D(6, 6)); + ImplicitBall2D ball2 = functions::ballFrom2Points(Point2D(4, 4), Point2D(8, 8)); + CHECK(ball2.center() == RealPoint2D(6, 6)); - ImplicitBall2D ball = ballFrom2Points(Point2D(2, 2), Point2D(2, 2)); - CHECK(ball.center() == RealPoint2D(2, 2)); - // Dimension 3 - ImplicitBall3D ball = ballFrom2Points(Point3D(0, 0, 0), Point3D(5, 5, 5)); - CHECK(ball.center() == RealPoint3D(2.5, 2.5, 2.5)); + ImplicitBall2D ball3 = functions::ballFrom2Points(Point2D(2, 2), Point2D(2, 2)); + CHECK(ball3.center() == RealPoint2D(2, 2)); - ImplicitBall3D ball = ballFrom2Points(Point3D(4, 5, 1), Point3D(2, 3, 7)); - CHECK(ball.center() == RealPoint3D(3, 4, 4)); + ImplicitBall3D ball3D = functions::ballFrom2Points(Point3D(0, 0, 0), Point3D(5, 5, 5)); + CHECK(ball3D.center() == RealPoint3D(2.5, 2.5, 2.5)); - ImplicitBall3D ball = ballFrom2Points(Point3D(2, 2, 2), Point3D(2, 2, 2)); - CHECK(ball.center() == RealPoint3D(2, 2, 2)); - - // Arbitrary Dimension - int dimension = rand()%200; - SpaceND::Point point_1; - SpaceND::Point point_2; - SpaceND::RealPoint center; - for (int i = 0; i < dimension; i++) { - point_1[dimension] = rand(); - point_2[dimension] = rand(); - center[dimension] = (point_1[dimension] + point_2[dimension]) / 2; - } - - ImplicitBall > ball = ballFrom2Points(point_1, point_2); - CHECK(ball.center() == center); + ImplicitBall3D ball4 = functions::ballFrom2Points(Point3D(4, 5, 1), Point3D(2, 3, 7)); + CHECK(ball4.center() == RealPoint3D(3, 4, 4)); + ImplicitBall3D ball3D2 = functions::ballFrom2Points(Point3D(2, 2, 2), Point3D(2, 2, 2)); + CHECK(ball3D2.center() == RealPoint3D(2, 2, 2)); } - SECTION( "Ball From 3 Points Dimension 2 and 3" ) { - ImplicitBall2D ball = ballFrom3Points(Point2D(0, 0), Point2D(1, 0), Point2D(0, 1)); + SECTION( "Ball From 3 Points Dimension 2 and 3" ) + { + ImplicitBall2D ball = functions::ballFrom3Points(Point2D(0, 0), Point2D(1, 0), Point2D(0, 1)); CHECK(ball.center() == RealPoint2D(0.5, 0.5)); - ImplicitBall3D ball = ballFrom3Points(Point3D(0, 0, 0), Point3D(1, 0, 0), Point3D(0, 1, 0)); - CHECK(ball.center() == RealPoint3D(0.5, 0.5, 0.5)); + ImplicitBall3D ball3D3 = functions::ballFrom3Points(Point3D(0, 0, 0), Point3D(1, 0, 0), Point3D(0, 1, 0)); + CHECK(ball3D3.center() == RealPoint3D(0.5, 0.5, 0.5)); } - SECTION( "Ball From 4 Points") { - ImplicitBall2D ball = ballFrom4Points(Point3D(0, 0, 0), Point3D(1, 1, 1), Point3D(1, 0, 0), Point3D(0, 1, 0)); - CHECK(ball.center() == RealPoint3D(0.5, 0.5, 0.5)); - - ImplicitBall2D ball = ballFrom4Points(Point3D(0, 0, 0), Point3D(1, 0, 0), Point3D(1, 1, 0), Point3D(0, 1, 0)); - CHECK(ball.center() == RealPoint3D(0.5, 0.5, 0)); - } + /*SECTION( "Ball From 4 Points") + { + ImplicitBall3D ball3D4 = functions::ballFrom4Points(Point3D(0, 0, 0), Point3D(1, 1, 1), Point3D(1, 0, 0), Point3D(0, 1, 0)); + CHECK(ball3D4.center() == RealPoint3D(0.5, 0.5, 0.5)); + }*/ SECTION( "Trivial Circle" ) { } -} \ No newline at end of file +} From 177ca5e167507a7f71f7ca68dada79dc2e46ec67 Mon Sep 17 00:00:00 2001 From: David Coeurjolly Date: Thu, 15 Jul 2021 21:56:40 +0200 Subject: [PATCH 17/19] Fixing reducedMedialAxis test --- .../distance/testReducedMedialAxis.cpp | 35 +++---------------- 1 file changed, 4 insertions(+), 31 deletions(-) diff --git a/tests/geometry/volumes/distance/testReducedMedialAxis.cpp b/tests/geometry/volumes/distance/testReducedMedialAxis.cpp index b755288acd..741382b82c 100644 --- a/tests/geometry/volumes/distance/testReducedMedialAxis.cpp +++ b/tests/geometry/volumes/distance/testReducedMedialAxis.cpp @@ -113,24 +113,11 @@ bool testReducedMedialAxis( std::array const& aPeriodicity = {{ false, trace.info()< >::Type rdma = ReducedMedialAxis< PowerMap >::getReducedMedialAxisFromPowerMap(power); - - //Reconstruction - for(unsigned int i=0; i<11; i++) - { - for(unsigned int j=0; j<11; j++) - { - Z2i::Point p(i,j); - if (rdma.domain().isInside(p) ) - trace.info()<< rdma(p); - else - trace.info()<< " - "; - - } - std::cerr< >::getReducedMedialAxisFromPowerMap(power); + for(auto &ball: rdma) + trace.info() <<"Got ball: "<< ball.first<<" r="<< ball.second< const& aPeriodicity = {{ false, << "true == true" << std::endl; trace.endBlock(); - bool isEqual = true; - for ( auto const & pt : domain ) - { - const Image::Value a = image.domain().isInside(pt) ? image(pt) : 0; - const Image::Value b = rdma.domain().isInside(pt) ? rdma(pt) : 0; - if ( a != b ) - { - isEqual = false; - break; - } - } - - trace.info() << "Equality ? " << isEqual << std::endl; - return nbok == nb; } From c1e8c6eaff76c4bd1186dc55c1231c71cc1467c0 Mon Sep 17 00:00:00 2001 From: David Coeurjolly Date: Fri, 16 Jul 2021 15:27:51 +0200 Subject: [PATCH 18/19] linking the doc page --- src/DGtal/geometry/doc/packageGeometry.dox | 1 + 1 file changed, 1 insertion(+) diff --git a/src/DGtal/geometry/doc/packageGeometry.dox b/src/DGtal/geometry/doc/packageGeometry.dox index f0b8a196c1..b55272d4ac 100644 --- a/src/DGtal/geometry/doc/packageGeometry.dox +++ b/src/DGtal/geometry/doc/packageGeometry.dox @@ -77,6 +77,7 @@ of arbitrary dimension, by the means of separable and incremental distance trans - \ref moduleVolumetric (David Coeurjolly, Roland Denis) - \ref moduleFMM (Tristan Roussillon) - \ref moduleDigitalConvexity (Jacques-Olivier Lachaud) + - \ref moduleMedialAxis (Robin Lamy, David Coeurjolly, Isabelle Sivignon) - Geometry Processing - \ref moduleRegularization (David Coeurjolly, Jacques-Olivier Lachaud, Pierre Gueth) From cc5dd1af8c92a77ab3c4264df0550e1093bb63f2 Mon Sep 17 00:00:00 2001 From: David Coeurjolly Date: Fri, 16 Jul 2021 16:04:04 +0200 Subject: [PATCH 19/19] linking the doc page --- src/DGtal/geometry/doc/moduleMedialAxis.dox | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/src/DGtal/geometry/doc/moduleMedialAxis.dox b/src/DGtal/geometry/doc/moduleMedialAxis.dox index cd69f01074..e9f9c29e1c 100644 --- a/src/DGtal/geometry/doc/moduleMedialAxis.dox +++ b/src/DGtal/geometry/doc/moduleMedialAxis.dox @@ -17,15 +17,25 @@ namespace DGtal { //---------------------------------------- /*! -@page moduleMedialAxis nD Volumetric Analysis using Separable Processes +@page moduleMedialAxis Discrete Medial Axis and its filtration [TOC] -@author David Coeurjolly, Roland Denis +@author Robin Lamy, David Coeurjolly, Isabelle Sivignon This part of the manual describes the DGtal Medial Axis module. We -focus here on describing the Reduced Medial Axis Extraction from a Power Map, -and on describing some variant algorithm such as Scale Medial Axis Extraction. +detail how to extract a discrete medial axis @f$ MA(X)@f$ (set of +Euclidean balls) of a given binary object @f$ X @f$. There are many +definitions of such strucutre, both in continuous and discrete +settings, please refer to @cite TODO and @cite TODO for an overview. + + +In our discrete setting, the discrete medial axis will be defined such that @f[ +X = \cup_{b\in MA(X)} b\cap \mathbb{Z}^d\,.@f] Furthermore, all balls +in @f$ MA(X)@f$ are @e maximal @e in the sense that for all @f$ b\in +MA(X)@f$ there is no @f$ b'\in MA(X) @f$ such that @f$ b\subset b@f$. + + \section Medial Axis Introduction

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 brlNH#mo4#ItumbW4(LWztvM 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 KkSK!~1pFUL1IT&+ literal 0 HcmV?d00001 diff --git a/src/DGtal/geometry/doc/images/flower_5.png b/src/DGtal/geometry/doc/images/flower_5.png new file mode 100644 index 0000000000000000000000000000000000000000..cc9c7c1131582a1358839bc81823b49cc05bdb42 GIT binary patch literal 144608 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 z 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 HTps>E|Bh!8 literal 0 HcmV?d00001 diff --git a/src/DGtal/geometry/doc/images/flower_5_reduced.png b/src/DGtal/geometry/doc/images/flower_5_reduced.png new file mode 100644 index 0000000000000000000000000000000000000000..d1b8376ce336b457a6cb091d343e111781de2f9f GIT binary patch literal 14296 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 DswdMlDcR@aD+(C=nsoj^E0+CSzXY>%;Y4UcHZ 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 H*N^`XfdG`I literal 0 HcmV?d00001 diff --git a/src/DGtal/geometry/doc/images/scale_Alcapone3D_1.1.png b/src/DGtal/geometry/doc/images/scale_Alcapone3D_1.1.png new file mode 100644 index 0000000000000000000000000000000000000000..ea0df51bac218c93ecf02ffedb910323ae20f4bc GIT binary patch literal 42129 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 literal 0 HcmV?d00001 diff --git a/src/DGtal/geometry/doc/images/scale_Alcapone3D_1.3.png b/src/DGtal/geometry/doc/images/scale_Alcapone3D_1.3.png new file mode 100644 index 0000000000000000000000000000000000000000..a187d7c867ac78524990ff2c8e90458bbd33211b GIT binary patch literal 29697 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 literal 0 HcmV?d00001 diff --git a/src/DGtal/geometry/doc/images/scale_Alcapone3D_1.7.png b/src/DGtal/geometry/doc/images/scale_Alcapone3D_1.7.png new file mode 100644 index 0000000000000000000000000000000000000000..0900dc764835ff52a368572737910195cc31da26 GIT binary patch literal 22953 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 literal 0 HcmV?d00001 diff --git a/src/DGtal/geometry/doc/images/scale_Alcapone3D_4.png b/src/DGtal/geometry/doc/images/scale_Alcapone3D_4.png new file mode 100644 index 0000000000000000000000000000000000000000..ebeb003e3a79e15679f1532a8d81fd26398315ba GIT binary patch literal 14352 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 Date: Mon, 5 Jul 2021 16:47:40 +0200 Subject: [PATCH 10/19] working lambda medial axis in dimension 2 and 3 --- .../volumes/distance/LambdaMedialAxis.h | 76 ++++++++++++------- 1 file changed, 50 insertions(+), 26 deletions(-) diff --git a/src/DGtal/geometry/volumes/distance/LambdaMedialAxis.h b/src/DGtal/geometry/volumes/distance/LambdaMedialAxis.h index 040c73ff5d..055cab795c 100644 --- a/src/DGtal/geometry/volumes/distance/LambdaMedialAxis.h +++ b/src/DGtal/geometry/volumes/distance/LambdaMedialAxis.h @@ -65,11 +65,11 @@ namespace DGtal // template class LambdaMedialAxis /** * Description of template class 'LambdaMedialAxis'