Libs/Groom/Groom.h
Namespaces
Name |
---|
shapeworks User usage reporting (telemetry) |
Classes
Name | |
---|---|
class | shapeworks::Groom High level groom API. |
Source code
#pragma once
#include <Image/Image.h>
#include <Project/Project.h>
#include "GroomParameters.h"
namespace shapeworks {
class Groom {
public:
Groom(ProjectHandle project);
bool run();
void abort();
bool get_aborted();
static double compute_landmark_distance(vtkSmartPointer<vtkPoints> one, vtkSmartPointer<vtkPoints> two);
static vtkSmartPointer<vtkMatrix4x4> compute_landmark_transform(vtkSmartPointer<vtkPoints> source,
vtkSmartPointer<vtkPoints> target);
protected:
std::atomic<float> progress_ = 0;
std::atomic<int> total_ops_ = 0;
std::atomic<int> progress_counter_ = 0;
private:
int get_total_ops();
void increment_progress(int amount = 1);
bool image_pipeline(std::shared_ptr<Subject> subject, size_t domain);
bool run_image_pipeline(Image& image, GroomParameters params);
bool mesh_pipeline(std::shared_ptr<Subject> subject, size_t domain);
bool run_mesh_pipeline(Mesh& mesh, GroomParameters params);
bool contour_pipeline(std::shared_ptr<Subject> subject, size_t domain);
std::string get_output_filename(std::string input, DomainType domain_type);
bool run_alignment();
void assign_transforms(std::vector<std::vector<double>> transforms, int domain, bool global = false);
static std::vector<std::vector<double>> get_icp_transforms(const std::vector<Mesh> meshes, Mesh reference);
static std::vector<std::vector<double>> get_landmark_transforms(
const std::vector<vtkSmartPointer<vtkPoints>> landmarks, size_t reference);
static std::vector<double> get_identity_transform();
static void add_reflect_transform(vtkSmartPointer<vtkTransform> transform, const std::string& reflect_axis);
static void add_center_transform(vtkSmartPointer<vtkTransform> transform, const Image& image);
static void add_center_transform(vtkSmartPointer<vtkTransform> transform, const Mesh& mesh);
static void add_center_transform(vtkSmartPointer<vtkTransform> transform, vtkSmartPointer<vtkPoints> points);
std::vector<vtkSmartPointer<vtkPoints>> get_combined_points();
Mesh get_mesh(int subject, int domain, bool transformed = false);
vtkSmartPointer<vtkPoints> get_landmarks(int subject, int domain);
int find_reference_landmarks(std::vector<vtkSmartPointer<vtkPoints>> landmarks);
void fix_origin(Image& image);
bool verbose_ = false;
ProjectHandle project_;
bool abort_ = false;
std::mutex mutex_;
std::set<std::string> used_names_;
};
} // namespace shapeworks
Updated on 2024-03-17 at 12:58:44 -0600