Developer Documentation

Functions
ICP Namespace Reference

Namespace for ICP. More...

## Functions
template<typename VectorT , typename QuaternionT >
void | icp (const std::vector< VectorT > &_points1, const std::vector< VectorT > &_points2, VectorT &_cog1, VectorT &_cog2, double &_scale1, double &_scale2, QuaternionT &_rotation)
| Compute rigid transformation from first point set to second point set. More...
template<typename VectorT , typename QuaternionT >
void | icp (const std::vector< VectorT > &_points1, const std::vector< VectorT > &_points2, VectorT &_cog1, VectorT &_cog2, QuaternionT &_rotation)
| Compute rigid transformation from first point set to second point set without scaling. More...
template<typename VectorT >
VectorT | center_of_gravity (const std::vector< VectorT > &_points)

## Detailed Description

Namespace for ICP.

## Function Documentation

## ◆ icp() [1/2]

template<typename VectorT , typename QuaternionT >

void ICP::icp | ( | const std::vector< VectorT > & | _points1,
|  | const std::vector< VectorT > & | _points2,
|  | VectorT & | _cog1,
|  | VectorT & | _cog2,
|  | double & | _scale1,
|  | double & | _scale2,
|  | QuaternionT & | _rotation
| ) |  |

Compute rigid transformation from first point set to second point set.

Compute ICP Parameters ( No iteration is done ) Points are unchanged, only parameters are computed.

To transform pointset 1 into pointset 2 do the folowing:

- substract cog1 from pointset 1
- scale points with 1/scale1
- rotate with given rotation
- scale with scale2
- add cog2
  Parameters

    _points1 | first set of points
    _points2 | second set of points
    _cog1 | center of gravity first point set
    _cog2 | center of gravity second point set
    _scale1 | scaling factor of first point set
    _scale2 | scaling factor of second point set
    _rotation | Rotation between point sets ( rotation(_points1) -> _points2

Definition at line 85 of file ICPT_impl.hh.

## ◆ icp() [2/2]

template<typename VectorT , typename QuaternionT >

void ICP::icp | ( | const std::vector< VectorT > & | _points1,
|  | const std::vector< VectorT > & | _points2,
|  | VectorT & | _cog1,
|  | VectorT & | _cog2,
|  | QuaternionT & | _rotation
| ) |  |

Compute rigid transformation from first point set to second point set without scaling.

Compute ICP Parameters ( No iteration is done ) Points are unchanged, only parameters are computed.

To transform pointset 1 into pointset 2 do the folowing:

- substract cog1 from pointset 1
- rotate with given rotation
- add cog2
  Parameters

    _points1 | first set of points
    _points2 | second set of points
    _cog1 | center of gravity first point set
    _cog2 | center of gravity second point set
    _rotation | Rotation between point sets ( rotation(_points1) -> _points2

Definition at line 185 of file ICPT_impl.hh.