8 #include "propagate_const.h" 17 struct PrivateStateAccessor;
21 enum class Type { absolute, relative };
23 std::array<float, 3> xyz{{0, 0, 0}};
24 Type type{Type::absolute};
34 #pragma clang diagnostic push 35 #pragma clang diagnostic ignored "-Wpadded" 40 enum class OriginType { untouched, centered };
41 using Origin = std::variant<OriginType, Coordinate3D>;
42 using ScaleVector = std::array<float, 3>;
44 using RotationVector = std::array<float, 3>;
55 std::size_t maxIterations = 100;
57 std::size_t minNonDecreasing = 10;
61 bool ignoreExteriorSamples =
false;
72 Origin referenceMeshOrigin = OriginType::untouched;
77 ScaleVector referenceMeshScale = {{1.f, 1.f, 1.f}};
84 RotationVector referenceMeshRotation = {{0.f, 0.f, 0.f}};
111 std::array<float, 3> meshTranslation(
VoxelVolume const &volume)
const;
113 #pragma clang diagnostic pop 115 #pragma clang diagnostic push 116 #pragma clang diagnostic ignored "-Wpadded" 136 float minDisNorm = std::numeric_limits<float>::max();
138 float logLikelihood = -std::numeric_limits<float>::max();
139 #pragma clang diagnostic push 140 #pragma clang diagnostic ignored "-Wdocumentation-deprecated-sync" 145 #pragma clang diagnostic pop 146 float effectiveSigmaS = .0f;
149 std::size_t iteration = 1;
151 bool converged =
false;
153 bool success =
false;
155 std::size_t nonDecreasing = 0;
173 using HiddenStatePtr = std::unique_ptr<HiddenState>;
176 HiddenStatePtr hiddenState_;
179 #pragma clang diagnostic pop 248 void fitOneIteration(
State &state)
const;
259 void volumeSamplingStep(
State &state)
const;
270 void optimalDisplacementStep(
State &state)
const;
282 void optimalDeformationStep(
State &state)
const;
293 void logLikelihoodStep(
State &state)
const;
303 void convergenceTestStep(
State &state)
const;
306 #ifndef CORTIDQCT_NO_PROPAGATE_CONST 307 std::propagate_const<std::unique_ptr<Impl>> pImpl_;
309 std::unique_ptr<Impl> pImpl_;
Configuration type for MeshFitter.
Definition: MeshFitter.h:39
Name namespace for CortidQCT library.
Definition: CortidQCT.h:23
Mesh< float > deformedMesh
The deformed mesh or nullopt if fitting failed.
Definition: MeshFitter.h:124
std::vector< std::array< float, 3 > > volumeSamplingPositions
Volume sampling positions.
Definition: MeshFitter.h:132
Configuration & loadFromFile(std::string const &filename)
Load the configuration from a file.
Definition: MeshFitterConfiguration.cpp:52
Definition: MeshFitter.h:30
Include file defining the Mesh data type.
std::vector< std::array< float, 3 > > vertexNormals
per-vertex normals
Definition: MeshFitter.h:130
Mesh< float > referenceMesh
The reference mesh.
Definition: MeshFitter.h:122
Type representing a voxel volume.
Definition: VoxelVolume.h:32
std::vector< float > weights
the weght vector
Definition: MeshFitter.h:128
Internal State type.
Definition: MeshFitter.h:159
Type representing the measurement model.
Definition: MeasurementModel.h:33
Definition: MeshFitterHiddenState.h:36
MeshFitter(std::string const &configFilename)
Convenience constructor that reads the configuration from the given configuration file...
Definition: MeshFitter.h:210
Mesh< float > referenceMesh
The reference mesh.
Definition: MeshFitter.h:49
static Configuration fromFile(std::string const &filename)
Convenience initializer to load a configuration from file.
Definition: MeshFitter.h:99
Definition: MeshFitterHiddenState.h:21
Result type.
Definition: MeshFitter.h:120
std::vector< float > volumeSamples
Volume samples.
Definition: MeshFitter.h:134
This header contains the definition of the MeasurementModel type.
This header contains the definition of the VoxelVolume type.
std::vector< float > displacementVector
The displacement vector.
Definition: MeshFitter.h:126
Definition: MeshFitterImpl.h:21
std::vector< float > perVertexLogLikelihood
Per-vertex log likelihood vector (deprecated)
Definition: MeshFitter.h:144
Definition: MeshFitter.h:20
MeasurementModel model
The measurement model.
Definition: MeshFitter.h:47
This header is a wrapper for including optional depending on the supported C++ standard version...