$extrastylesheet
Namespaces | |
namespace | impl |
Functions | |
template<typename P , typename F > | |
std::pair< algebra::quat, mln_vec(P)> | icp (const p_array< P > &P_, const p_array< P > &X, const F &closest_point, const algebra::quat &initial_rot, const mln_vec(P)&initial_translation) |
template<typename P , typename F > | |
composed< translation< P::dim, float >, rotation< P::dim, float > > | icp (const p_array< P > &P_, const p_array< P > &X, const F &closest_point) |
Namespace of registrationional routines.
std::pair<algebra::quat,mln_vec(P)> mln::registration::icp | ( | const p_array< P > & | P_, |
const p_array< P > & | X, | ||
const F & | closest_point, | ||
const algebra::quat & | initial_rot, | ||
const mln_vec(P)& | initial_translation | ||
) |
Register point in c
using a function of closest points closest_point
. This overload allows to specify initial transformations.
[in] | P_ | The cloud of points. |
[in] | X | the reference surface. |
[in] | closest_point | The function of closest points. |
[in] | initial_rot | An initial rotation. |
[in] | initial_translation | An initial translation. |
WARNING: the function closest_point
MUST take float/double vector as arguments. Otherwise the resulting transformation may be wrong due to the truncation of the vector coordinate values.
P_
and X
must not be empty.This implementation is based on besl1992pami.
composed< translation<P::dim,float>,rotation<P::dim,float> > mln::registration::icp | ( | const p_array< P > & | P_, |
const p_array< P > & | X, | ||
const F & | closest_point | ||
) |
Register point in c
using a function of closest points closest_point
.
[in] | P_ | The cloud of points. |
[in] | X | the reference surface. |
[in] | closest_point | The function of closest points. |