Skip to content

Libs/Optimize/RegistrationInitializer.h

Namespaces

Name
shapeworks
User usage reporting (telemetry)

Classes

Name
class shapeworks::RegistrationInitializer

Source code

#pragma once

#include <string>
#include <utility>
#include <vector>

#include <Image/Image.h>
#include <Image/ImageRegistration.h>
#include <Mesh/Mesh.h>

#include "Libs/Common/Shapeworks.h"

namespace shapeworks {

class Optimize;

class RegistrationInitializer {
 public:
  explicit RegistrationInitializer(Optimize& optimize) : optimize_(optimize) {}

  void Run();

 private:
  int ResolveRegistrationReference();

  void SpreadParticlesOnReference(int reference_shape);

  void TransferParticlesFromReference(int reference_shape);

  void RescueTransferredParticles(int domain, const std::vector<Point3>& reference_points,
                                  std::vector<Point3>& transferred) const;

  double ReportTransferQuality(int domain, const std::vector<Point3>& transferred);

  void ReportTransferSummary(const std::vector<std::pair<std::string, double>>& landings) const;

  std::string GetDomainName(int domain) const;

  std::string GetRegistrationCachePath(const ImageRegistration& registration, int reference_domain,
                                       int domain) const;

  Image GetRegistrationImage(int domain);

  double GetRegistrationBand(double spacing) const;

  Mesh GetDomainSurface(int domain);

  Optimize& optimize_;
};

}  // namespace shapeworks

Updated on 2026-08-30 at 04:03:18 +0000