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 > | |
| 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 , 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 > | |
| 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. | |
Namespace of "point-wise" expression tools.
| 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 | |||
| ) |
FIXME: work only for 3d images.
Definition at line 527 of file icp.hh.
References mln::p_array< P >::nsites().
| 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.
| [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.Reference article: "A Method for Registration of 3-D Shapes", Paul J. Besl and Neil D. McKay, IEEE, 2, February 1992.
Definition at line 612 of file icp.hh.
References mln::geom::bbox(), mln::literal::black, mln::set::compute(), mln::duplicate(), mln::box< P >::enlarge(), mln::data::fill(), mln::literal::green, mln::io::ppm::save(), and mln::literal::white.
| 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. |
| 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.
Definition at line 325 of file registration.hh.
| 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.
Definition at line 345 of file registration.hh.
| 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.
Definition at line 365 of file registration.hh.
1.7.1