CortidQCT  1.2.2.52
MeshFitterImpl.h
Go to the documentation of this file.
1 
12 #pragma once
13 
14 #include "DisplacementOptimizer.h"
15 #include "MeshFitter.h"
16 #include "MeshHelpers.h"
17 #include "WeightedARAPFitter.h"
18 
19 namespace CortidQCT {
20 
22 
23  friend class MeshFitter;
24 
25 public:
26  inline explicit Impl(MeshFitter &meshFitter) : fitter_(meshFitter) {}
27 
28  ~Impl() noexcept = default;
29 
30  Impl(Impl const &) = delete;
31  inline Impl(Impl &&) noexcept = delete;
32 
33  Impl &operator=(Impl const &) = delete;
34  Impl &operator=(Impl &&) = delete;
35 
36  inline Impl(Impl const & /*unused*/, MeshFitter &rhsFitter)
37  : fitter_(rhsFitter) {}
38  inline Impl(Impl && /*unused*/, MeshFitter &rhsFitter) noexcept
39  : fitter_(rhsFitter) {}
40 
41 protected:
42  MeshFitter::Result fit(VoxelVolume const &volume) const;
43  MeshFitter::State init(VoxelVolume const &volume) const;
44  void fitOneIteration(MeshFitter::State &state) const;
45 
46  void findOptimalDisplacements(MeshFitter::State &state) const;
47  void findOptimalDeformation(MeshFitter::State &state) const;
48  void sampleVolume(MeshFitter::State &state) const;
49  void computeLogLikelihood(MeshFitter::State &state) const;
50  void checkConvergence(MeshFitter::State &state) const;
51 
52  MeshFitter &fitter_;
53 
54  std::optional<Result> result_;
55 };
56 
57 } // namespace CortidQCT
Name namespace for CortidQCT library.
Definition: CortidQCT.h:23
This file contains the definition of the DisplacementOptimizer class.
Definition: MeshFitter.h:30
This file contains the definition of the WeightedARAPFitter class.
Type representing a voxel volume.
Definition: VoxelVolume.h:32
This header contains mesh related helper functions.
Internal State type.
Definition: MeshFitter.h:159
Result type.
Definition: MeshFitter.h:120
Definition: MeshFitterImpl.h:21