# mln::registration Namespace Reference

Namespace of "point-wise" expression tools. More...

## Classes

class  closest_point_basic
Closest point functor based on map distance. More...
class  closest_point_with_map
Closest point functor based on map distance. More...

## Functions

template<typename P , typename F >
algebra::quat get_rot (const p_array< P > &P_, const vec3d_f &mu_P, const vec3d_f &mu_Yk, const F &closest_point, const algebra::quat &qR, const vec3d_f &qT)
FIXME: work only for 3d images.
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)
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)
Base version of the ICP algorithm. It is called in other variants.
template<typename P >
composed< translation< P::dim,
float >, rotation< P::dim,
float > >
registration1 (const box< P > &domain, const p_array< P > &P_, const p_array< P > &X)
Call ICP once and return the resulting transformation.
template<typename P >
composed< translation< P::dim,
float >, rotation< P::dim,
float > >
registration2 (const box< P > &domain, const p_array< P > &P_, const p_array< P > &X)
Call ICP 10 times.
template<typename P >
composed< translation< P::dim,
float >, rotation< P::dim,
float > >
registration3 (const box< P > &domain, const p_array< P > &P_, const p_array< P > &X)
Call ICP 10 times.

## Detailed Description

Namespace of "point-wise" expression tools.

## Function Documentation

template<typename P , typename F >
 algebra::quat mln::registration::get_rot ( const p_array< P > & P_, const vec3d_f & mu_P, const vec3d_f & mu_Yk, const F & closest_point, const algebra::quat & qR, const vec3d_f & qT ) ` [inline]`

FIXME: work only for 3d images.

References mln::p_array< P >::nsites().

template<typename P , typename F >
 composed< translation,rotation > mln::registration::icp ( const p_array< P > & P_, const p_array< P > & X, const F & closest_point ) ` [inline]`

Register point in `c` using a function of closest points `closest_point`.

Parameters:
 [in] P_ The cloud of points. [in] X the reference surface. [in] closest_point The function of closest points.
Returns:
the rigid transformation which may be use later to create a registered image.

template<typename P , typename F >
 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 ) ` [inline]`

Base version of the ICP algorithm. It is called in other variants.

Register point in `c` using a function of closest points `closest_point`. This overload allows to specify initial transformations.

Parameters:
 [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.
Returns:
the rigid transformation which may be use later to create a registered image.
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.

Precondition:
`P_` and `X` must not be empty.
Reference article: "A Method for Registration of 3-D Shapes", Paul J. Besl and Neil D. McKay, IEEE, 2, February 1992.

template<typename P >
 composed< translation< P::dim, float >, rotation< P::dim, float > > mln::registration::registration1 ( const box< P > & domain, const p_array< P > & P_, const p_array< P > & X ) ` [inline]`

Call ICP once and return the resulting transformation.

template<typename P >
 composed< translation< P::dim, float >, rotation< P::dim, float > > mln::registration::registration2 ( const box< P > & domain, const p_array< P > & P_, const p_array< P > & X ) ` [inline]`

Call ICP 10 times.

Do the first call to ICP with all sites then work on a subset of which size is decreasing. For each call, a distance criterion is computed on a subset. Sites part of the subset which are too far or too close are removed. Removed sites are *NOT* reused later in the subset.

template<typename P >
 composed< translation< P::dim, float >, rotation< P::dim, float > > mln::registration::registration3 ( const box< P > & domain, const p_array< P > & P_, const p_array< P > & X ) ` [inline]`

Call ICP 10 times.

Do the first call to ICP with all sites then work on a subset. For each call, a distance criterion is computed on a subset. A new subset is computed from the whole set of points according to this distance. It will be used in the next call. Removed Sites *MAY* be reintegrated.

Generated on Tue Jul 14 16:33:13 2009 for Milena (Olena) by  1.5.9