Skip to content

Libs/Groom/Groom.h

Namespaces

Name
shapeworks
User usage reporting (telemetry)

Classes

Name
class shapeworks::Groom
High level groom API.

Source code

```cpp

pragma once

include

include

include "GroomParameters.h"

namespace shapeworks {

class Groom { public: Groom(ProjectHandle project);

bool run();

void abort();

bool get_aborted();

static double compute_landmark_distance(vtkSmartPointer one, vtkSmartPointer two);

static vtkSmartPointer compute_landmark_transform(vtkSmartPointer source, vtkSmartPointer target);

protected: std::atomic progress_ = 0; std::atomic total_ops_ = 0; std::atomic progress_counter_ = 0;

private: enum class MeshSource { Original, Groomed };

int get_total_ops();

void increment_progress(int amount = 1);

bool image_pipeline(std::shared_ptr subject, size_t domain);

bool run_image_pipeline(Image& image, GroomParameters params);

bool mesh_pipeline(std::shared_ptr subject, size_t domain);

bool run_mesh_pipeline(Mesh& mesh, GroomParameters params, const std::string& filename);

bool contour_pipeline(std::shared_ptr subject, size_t domain);

std::string get_output_filename(std::string input, DomainType domain_type);

bool run_alignment();

bool run_shared_boundaries();

void clear_unused_shared_boundaries();

void assign_transforms(std::vector> transforms, int domain, bool global = false);

Mesh check_and_fix_mesh(Mesh& mesh, const std::string& step, const std::string& filename);

static std::vector> get_icp_transforms(const std::vector meshes, Mesh reference); static std::vector> get_landmark_transforms( const std::vector> landmarks, size_t reference);

static std::vector get_identity_transform(); static void add_reflect_transform(vtkSmartPointer transform, const std::string& reflect_axis); static void add_center_transform(vtkSmartPointer transform, const Image& image); static void add_center_transform(vtkSmartPointer transform, const Mesh& mesh); static void add_center_transform(vtkSmartPointer transform, vtkSmartPointer points);

std::vector> get_combined_points();

Mesh get_mesh(int subject, int domain, bool transformed = false, MeshSource source = MeshSource::Groomed);

vtkSmartPointer get_landmarks(int subject, int domain);

int find_reference_landmarks(std::vector> landmarks);

void fix_origin(Image& image);

bool verbose_ = false;

ProjectHandle project_;

bool abort_ = false;

std::mutex mutex_;

std::set used_names_; }; } // namespace shapeworks ```


Updated on 2026-03-31 at 16:02:11 +0000