SyB3R - Synthetic Benchmark for 3D Reconstruction
FractionalICP.h
1 #ifndef FRACTIONALICP_H
2 #define FRACTIONALICP_H
3 
4 #include <Eigen/Dense>
5 #include <vector>
6 
7 namespace syb3r {
8 namespace math {
9 
10 
12 {
13  public:
14  virtual void transform(const Eigen::Vector3f *src, Eigen::Vector3f *dst, unsigned count) const = 0;
15  virtual void computeLeastSquaresTransform(const Eigen::Vector3f *src, const Eigen::Vector3f *dst, unsigned count) = 0;
16 };
17 
19 {
20  public:
21  virtual void transform(const Eigen::Vector3f *src, Eigen::Vector3f *dst, unsigned count) const override;
22  virtual void computeLeastSquaresTransform(const Eigen::Vector3f *src, const Eigen::Vector3f *dst, unsigned count) override;
23 
24  inline const Eigen::Matrix3f &getRotation() const { return m_rotation; }
25  inline float getScale() const { return m_scale; }
26  inline const Eigen::Vector3f &getOffset() const { return m_offset; }
27  protected:
28  Eigen::Matrix3f m_rotation = Eigen::Matrix3f::Identity();
29  float m_scale = 1.0f;
30  Eigen::Vector3f m_offset = Eigen::Vector3f::Zero();
31 };
32 
33 
34 void fractionalICP(const std::vector<Eigen::Vector3f> &src, const std::vector<Eigen::Vector3f> &dst, ICPTransform &transform);
35 void ICP(const std::vector<Eigen::Vector3f> &src, const std::vector<Eigen::Vector3f> &dst, ICPTransform &transform, float residualPower = 2.0f, float *residual = nullptr);
36 
37 }
38 }
39 
40 #endif // FRACTIONALICP_H
Definition: CameraPathEvaluation.cpp:10
Definition: FractionalICP.h:18
Definition: FractionalICP.h:11