Basic Image AlgorithmS Library
2.8.0
|
Computes similarity transformation between 3D point sets. More...
#include <Geometry/AbsoluteOrientation.hh>
Public Types | |
enum | RotationEstimationMethod { HORN_ALGORITHM, KABSCH_ALGORITHM } |
Methods for rotation estimation. More... | |
Public Member Functions | |
AbsoluteOrientation () | |
int | Compute (const std::vector< Vector3< double > > &X, const std::vector< Vector3< double > > &Y, RMatrix &dR, Vector3< double > &dt, double &ds, const std::vector< double > &w=std::vector< double >(0)) |
Computes rotation dR, translation dt and isometric scale ds between coordinate systems from corresponding 3D point sets X and Y. More... | |
int | Compute (const std::vector< Vector3< double > > &X, const std::vector< Vector3< double > > &Y, RMatrix &dR, Vector3< double > &dt, const std::vector< double > &w=std::vector< double >(0)) |
Computes rotation dR and translation dt between coordinate systems from corresponding 3D point sets X and Y. More... | |
int | ComputeRotation (const std::vector< Vector3< double > > &X, const std::vector< Vector3< double > > &Y, RMatrix &dR, const std::vector< double > &w=std::vector< double >(0)) |
Computes rotation dR between corresponding 3D ray sets X and Y using the currently set algorithm. More... | |
double | GetResidualErrors (std::vector< double > &errors, const std::vector< Vector3< double > > &X, const std::vector< Vector3< double > > &Y, const RMatrix &dR, const Vector3< double > &dt, const double &ds=1.0, const std::vector< double > &w=std::vector< double >(0)) |
Computes residual errors of 3D point sets X and Y with respect to given rotation dR, translation dt and isometric scale ds. More... | |
double | GetResidualErrors (std::vector< double > &errors, const std::vector< Vector3< double > > &X, const std::vector< Vector3< double > > &Y, const std::vector< Matrix3x3< double > > &CovX, const std::vector< Matrix3x3< double > > &CovY, const RMatrix &dR, const Vector3< double > &dt, const double &ds=1.0) |
Computes residual errors of 3D point sets X and Y with covariances CovX, CovY with respect to given rotation dR, translation dt and isometric scale ds. More... | |
double | GetResidualErrors (std::vector< double > &errors, const std::vector< Vector3< double > > &X, const std::vector< Vector3< double > > &Y, const RMatrix &dR, const std::vector< double > &w=std::vector< double >(0)) |
Computes residual errors of 3D point sets X and Y with respect to given rotation dR. More... | |
double | GetResidualErrors (std::vector< double > &errors, const std::vector< Vector3< double > > &X, const std::vector< Vector3< double > > &Y, const std::vector< Matrix3x3< double > > &CovX, const std::vector< Matrix3x3< double > > &CovY, const RMatrix &dR) |
Computes residual errors of 3D point sets X and Y with covariances CovX, CovY with respect to given rotation dR. More... | |
void | SetRotationAlgorithm (RotationEstimationMethod algorithm) |
Set algorithm used for rotation estimation. More... | |
~AbsoluteOrientation () | |
Static Public Attributes | |
static const unsigned int | MIN_CORRESPONDENCES = 3 |
Friends | |
class | AbsoluteOrientationRANSAC |
Computes similarity transformation between 3D point sets.
Estimates the relationship between two coordinate systems using pairs of measurements of the coordinates of a number of 3D points in both systems. A SVD-based solution to the least-squares problem for at least three points is used based on an approach proposed in:
[1] B. Horn: Closed-form Solution of Absolute Orientation Using Unit Quaternions, 1987.
Another SVD-based solution estimating a rotation matrix directly instead of using unit quaternions is given by Kabsch's algorithm:
[2] W. Kabsch: A Solution for the Best Rotation to Relate Two Sets of Vectors, 1976.
Definition at line 64 of file AbsoluteOrientation.hh.
Methods for rotation estimation.
Enumerator | |
---|---|
HORN_ALGORITHM | |
KABSCH_ALGORITHM |
Definition at line 72 of file AbsoluteOrientation.hh.
AbsoluteOrientation::AbsoluteOrientation | ( | ) |
Definition at line 15 of file AbsoluteOrientation.cpp.
AbsoluteOrientation::~AbsoluteOrientation | ( | ) |
Definition at line 20 of file AbsoluteOrientation.cpp.
|
inline |
Computes rotation dR, translation dt and isometric scale ds between coordinate systems from corresponding 3D point sets X and Y.
Definition at line 84 of file AbsoluteOrientation.hh.
|
inline |
Computes rotation dR and translation dt between coordinate systems from corresponding 3D point sets X and Y.
Definition at line 95 of file AbsoluteOrientation.hh.
int AbsoluteOrientation::ComputeRotation | ( | const std::vector< Vector3< double > > & | X, |
const std::vector< Vector3< double > > & | Y, | ||
BIAS::RMatrix & | dR, | ||
const std::vector< double > & | w = std::vector<double>(0) |
||
) |
Computes rotation dR between corresponding 3D ray sets X and Y using the currently set algorithm.
Definition at line 117 of file AbsoluteOrientation.cpp.
References HORN_ALGORITHM, and KABSCH_ALGORITHM.
double AbsoluteOrientation::GetResidualErrors | ( | std::vector< double > & | errors, |
const std::vector< Vector3< double > > & | X, | ||
const std::vector< Vector3< double > > & | Y, | ||
const RMatrix & | dR, | ||
const Vector3< double > & | dt, | ||
const double & | ds = 1.0 , |
||
const std::vector< double > & | w = std::vector<double>(0) |
||
) |
Computes residual errors of 3D point sets X and Y with respect to given rotation dR, translation dt and isometric scale ds.
Definition at line 243 of file AbsoluteOrientation.cpp.
References BIAS::Vector3< T >::ScalarProduct().
Referenced by GetResidualErrors(), and BIAS::AbsoluteOrientationRANSAC::GetResidualErrors().
double AbsoluteOrientation::GetResidualErrors | ( | std::vector< double > & | errors, |
const std::vector< Vector3< double > > & | X, | ||
const std::vector< Vector3< double > > & | Y, | ||
const std::vector< Matrix3x3< double > > & | CovX, | ||
const std::vector< Matrix3x3< double > > & | CovY, | ||
const RMatrix & | dR, | ||
const Vector3< double > & | dt, | ||
const double & | ds = 1.0 |
||
) |
Computes residual errors of 3D point sets X and Y with covariances CovX, CovY with respect to given rotation dR, translation dt and isometric scale ds.
Definition at line 276 of file AbsoluteOrientation.cpp.
References BIAS::Matrix3x3< T >::GetInverse(), BIAS::Matrix3x3< T >::Mult(), BIAS::Vector3< T >::ScalarProduct(), and BIAS::Matrix3x3< T >::Transpose().
double AbsoluteOrientation::GetResidualErrors | ( | std::vector< double > & | errors, |
const std::vector< Vector3< double > > & | X, | ||
const std::vector< Vector3< double > > & | Y, | ||
const RMatrix & | dR, | ||
const std::vector< double > & | w = std::vector<double>(0) |
||
) |
Computes residual errors of 3D point sets X and Y with respect to given rotation dR.
Definition at line 308 of file AbsoluteOrientation.cpp.
References GetResidualErrors().
double AbsoluteOrientation::GetResidualErrors | ( | std::vector< double > & | errors, |
const std::vector< Vector3< double > > & | X, | ||
const std::vector< Vector3< double > > & | Y, | ||
const std::vector< Matrix3x3< double > > & | CovX, | ||
const std::vector< Matrix3x3< double > > & | CovY, | ||
const RMatrix & | dR | ||
) |
Computes residual errors of 3D point sets X and Y with covariances CovX, CovY with respect to given rotation dR.
Definition at line 318 of file AbsoluteOrientation.cpp.
References GetResidualErrors().
|
inline |
Set algorithm used for rotation estimation.
Definition at line 113 of file AbsoluteOrientation.hh.
|
friend |
Definition at line 67 of file AbsoluteOrientation.hh.
|
static |
Definition at line 74 of file AbsoluteOrientation.hh.