Volume Cartographer 2.28.0
AngleBasedFlattening.hpp
Go to the documentation of this file.
1#pragma once
2
5#include <cstddef>
6#include <memory>
7
8#include <opencv2/core.hpp>
9
13
14namespace volcart::texturing
15{
30{
31public:
33 enum class Solver { SparseLU = 0, ConjugateGradient = 1 };
34
36 static constexpr std::size_t DEFAULT_ITERATIONS{10};
37
39 using Pointer = std::shared_ptr<AngleBasedFlattening>;
40
44
46 explicit AngleBasedFlattening(const ITKMesh::Pointer& m);
47
49 template <typename... Args>
50 static auto New(Args... args) -> Pointer
51 {
52 return std::make_shared<AngleBasedFlattening>(
53 std::forward<Args>(args)...);
54 }
55
57 ~AngleBasedFlattening() override = default;
67 void setUseABF(bool a);
68
70 [[nodiscard]] auto useABF() const -> bool;
71
73 void setABFMaxIterations(std::size_t i);
74
76 [[nodiscard]] auto abfMaxIterations() const -> std::size_t;
91
93 [[nodiscard]] auto solver() const -> Solver;
98 auto compute() -> ITKMesh::Pointer override;
101private:
103 bool useABF_{true};
105 Solver solver_{Solver::SparseLU};
108};
109} // namespace volcart::texturing
void setUseABF(bool a)
Whether to perform Angle-based flattening computation.
auto useABF() const -> bool
Whether Angle-based flattening is performed.
auto compute() -> ITKMesh::Pointer override
Compute the parameterization.
static constexpr std::size_t DEFAULT_ITERATIONS
std::shared_ptr< AngleBasedFlattening > Pointer
void setABFMaxIterations(std::size_t i)
The max number of ABF minimization iterations.
auto solver() const -> Solver
The numerical solver method.
void setSolver(Solver solver)
The numerical solver method.
static auto New(Args... args) -> Pointer
AngleBasedFlattening(const ITKMesh::Pointer &m)
Construct and set the input mesh.
AngleBasedFlattening()=default
Default constructor.
auto abfMaxIterations() const -> std::size_t
The max number of ABF minimization iterations.
Texturing and parameterization algorithms and utilities library.
itk::Mesh< ITKPixel, 3, ITKMeshTraits > ITKMesh
Definition: ITKMesh.hpp:22