DGtal
2.2.0
Toggle main menu visibility
Loading...
Searching...
No Matches
exampleMaximalSegmentSliceEstimation.cpp
Go to the documentation of this file.
1
16
29
31
#include <iostream>
32
#include "ConfigExamples.h"
33
#include "DGtal/helpers/StdDefs.h"
34
#include "DGtal/base/Common.h"
35
#include "DGtal/geometry/surfaces/estimation/MaximalSegmentSliceEstimation.h"
36
#include "DGtal/helpers/Shortcuts.h"
37
#include "DGtal/io/viewers/PolyscopeViewer.h"
39
40
using namespace
std
;
41
using namespace
DGtal
;
42
43
using
KSpace
=
Z3i::KSpace
;
44
using
SH3 =
Shortcuts<KSpace>
;
45
using
Surface
=
SH3::DigitalSurface
;
46
using
Surfel
=
Surface::Surfel
;
47
using
RealPoint
=
SH3::RealPoint
;
48
using
Point
=
SH3::Point
;
49
50
RealPoint
centerSurfel
(
KSpace
const
&
K
,
SH3::SCell
const
& s)
51
{
52
auto
pointels =
SH3::getPrimalVertices
(
K
, s,
true
);
53
54
Point
p =
K
.
uCoords
(pointels[0]),
55
u =
K
.
uCoords
(pointels[1]) - p,
56
v =
K
.
uCoords
(pointels[3]) - p;
57
58
static
const
RealPoint
shift(-0.5, -0.5, -0.5);
59
60
return
p + 0.5 * u + 0.5 * v + shift;
61
}
62
64
65
int
main
()
66
{
67
auto
params =
SH3::defaultParameters
();
68
params(
"polynomial"
,
"ellipsoid"
)(
"gridstep"
,
"1.0"
);
69
auto
implicit_shape =
SH3::makeImplicitShape3D
( params );
70
auto
digitized_shape =
SH3::makeDigitizedImplicitShape3D
( implicit_shape, params );
71
auto
K
=
SH3::getKSpace
( params );
72
auto
binary_image
=
SH3::makeBinaryImage
( digitized_shape, params );
73
auto
surface
=
SH3::makeDigitalSurface
(
binary_image
,
K
, params );
74
auto
surfels =
SH3::getSurfelRange
(
surface
);
75
76
double
gridstep = params[
"gridstep"
].as<
double
>();
77
78
PolyscopeViewer<>
viewer(
K
);
79
81
// Instantiation
82
using
Estimator
=
MaximalSegmentSliceEstimation<Surface>
;
83
Estimator
estimator;
84
estimator.init(gridstep, surfels.begin(), surfels.end());
85
estimator.attach(
surface
);
86
87
// Usage
88
std::vector<Estimator::Quantity> quantities;
89
estimator.eval(surfels.begin(), surfels.end(), std::back_inserter(quantities));
91
92
Color
fillColor =
Color::White
;
93
94
for
(std::size_t i = 0; i < surfels.size(); ++i)
95
{
96
const
Surfel
& s = surfels[i];
97
const
Estimator::Quantity
& normal = quantities[i];
98
99
const
RealPoint
& n = normal.
getNormalized
();
100
RealPoint
origin =
centerSurfel
(
K
, s);
101
102
viewer.drawColor(fillColor);
103
viewer << s;
104
105
viewer.drawColor(
Color::Green
);
106
viewer.drawLine(origin, origin + 1.5 * n);
107
}
108
109
viewer.show();
110
return
0;
111
}
112
// //
DGtal::Color
Structure representing an RGB triple with alpha component.
Definition
Color.h:77
DGtal::Color::Green
static const Color Green
Definition
Color.h:426
DGtal::Color::White
static const Color White
Definition
Color.h:424
DGtal::DigitalSurface< ExplicitSurfaceContainer >::Surfel
DigitalSurfaceContainer::Surfel Surfel
Definition
DigitalSurface.h:162
DGtal::KhalimskySpaceND::uCoords
Point uCoords(const Cell &c) const
Return its digital coordinates.
DGtal::MaximalSegmentSliceEstimation
Aim:
Definition
MaximalSegmentSliceEstimation.h:66
DGtal::PlaneProbingParallelepipedEstimator< DigitalPlane, ProbingMode::R1 >::Quantity
typename TetrahedronEstimator::Quantity Quantity
Definition
PlaneProbingParallelepipedEstimator.h:77
DGtal::PointVector::getNormalized
PointVector< dim, double, std::array< double, dim > > getNormalized() const
DGtal::PolyscopeViewer
Definition
PolyscopeViewer.h:57
DGtal::Shortcuts
Aim: This class is used to simplify shape and surface creation. With it, you can create new shapes an...
Definition
Shortcuts.h:102
DGtal::Shortcuts< Z3i::KSpace >::RealPoint
Space::RealPoint RealPoint
Definition
Shortcuts.h:120
DGtal::Shortcuts< KSpace >::getKSpace
static KSpace getKSpace(const Point &low, const Point &up, Parameters params=parametersKSpace())
Definition
Shortcuts.h:329
DGtal::Shortcuts< KSpace >::makeDigitizedImplicitShape3D
static CountedPtr< DigitizedImplicitShape3D > makeDigitizedImplicitShape3D(CountedPtr< ImplicitShape3D > shape, Parameters params=parametersDigitizedImplicitShape3D())
Definition
Shortcuts.h:520
DGtal::Shortcuts< Z3i::KSpace >::Point
Space::Point Point
Definition
Shortcuts.h:114
DGtal::Shortcuts< KSpace >::getPrimalVertices
static CellRange getPrimalVertices(const KSpace &K, const SCell &s)
Definition
Shortcuts.h:3523
DGtal::Shortcuts< KSpace >::getSurfelRange
static SurfelRange getSurfelRange(CountedPtr< ::DGtal::DigitalSurface< TDigitalSurfaceContainer > > surface, const Parameters ¶ms=parametersDigitalSurface())
Definition
Shortcuts.h:1808
DGtal::Shortcuts< KSpace >::makeDigitalSurface
static CountedPtr< DigitalSurface > makeDigitalSurface(CountedPtr< TPointPredicate > bimage, const KSpace &K, const Parameters ¶ms=parametersDigitalSurface())
Definition
Shortcuts.h:1470
DGtal::Shortcuts< Z3i::KSpace >::DigitalSurface
::DGtal::DigitalSurface< ExplicitSurfaceContainer > DigitalSurface
Definition
Shortcuts.h:155
DGtal::Shortcuts< KSpace >::defaultParameters
static Parameters defaultParameters()
Definition
Shortcuts.h:200
DGtal::Shortcuts< Z3i::KSpace >::SCell
LightDigitalSurface::SCell SCell
Definition
Shortcuts.h:160
DGtal::Shortcuts< KSpace >::makeBinaryImage
static CountedPtr< BinaryImage > makeBinaryImage(Domain shapeDomain)
Definition
Shortcuts.h:558
DGtal::Shortcuts< KSpace >::makeImplicitShape3D
static CountedPtr< ImplicitShape3D > makeImplicitShape3D(const Parameters ¶ms=parametersImplicitShape3D())
Definition
Shortcuts.h:279
DGtal::Point
surface
CountedPtr< SH3::DigitalSurface > surface
Definition
dgtalCalculus-geodesic.cpp:66
binary_image
CountedPtr< SH3::BinaryImage > binary_image
Definition
dgtalCalculus-geodesic.cpp:65
Surface
SH3::DigitalSurface Surface
Definition
exampleMaximalSegmentSliceEstimation.cpp:45
centerSurfel
RealPoint centerSurfel(KSpace const &K, SH3::SCell const &s)
Definition
exampleMaximalSegmentSliceEstimation.cpp:50
Estimator
PlaneProbingParallelepipedEstimator< DigitalPlane, ProbingMode::R1 > Estimator
Definition
examplePlaneProbingParallelepipedEstimator.cpp:46
DGtal::Z3i::KSpace
KhalimskySpaceND< 3, Integer > KSpace
Definition
StdDefs.h:146
DGtal
DGtal is the top-level namespace which contains all DGtal functions and types.
Definition
ClosedIntegerHalfPlane.h:49
std
STL namespace.
Surfel
KSpace::SCell Surfel
Definition
testArithmeticalDSSComputerOnSurfels.cpp:50
KSpace
Z3i::KSpace KSpace
Definition
testArithmeticalDSSComputerOnSurfels.cpp:48
K
KSpace K
Definition
testCubicalComplex.cpp:62
main
int main(int, char **)
Definition
testIntegerComputer.cpp:331
RealPoint
PointVector< 3, double > RealPoint
Definition
testTriangulatedSurface.cpp:51
examples
geometry
surfaces
exampleMaximalSegmentSliceEstimation.cpp
Generated on
for DGtal by
1.18.0