[][src]Trait opencv::prelude::ICPTrait

pub trait ICPTrait {
    pub fn as_raw_ICP(&self) -> *const c_void;
pub fn as_raw_mut_ICP(&mut self) -> *mut c_void; pub fn register_model_to_scene(
        &mut self,
        src_pc: &Mat,
        dst_pc: &Mat,
        residual: &mut f64,
        pose: &mut Matx44d
    ) -> Result<i32> { ... }
pub fn register_model_to_scene_vec(
        &mut self,
        src_pc: &Mat,
        dst_pc: &Mat,
        poses: &mut Vector<Pose3DPtr>
    ) -> Result<i32> { ... } }

This class implements a very efficient and robust variant of the iterative closest point (ICP) algorithm. The task is to register a 3D model (or point cloud) against a set of noisy target data. The variants are put together by myself after certain tests. The task is to be able to match partial, noisy point clouds in cluttered scenes, quickly. You will find that my emphasis is on the performance, while retaining the accuracy. This implementation is based on Tolga Birdal's MATLAB implementation in here: http://www.mathworks.com/matlabcentral/fileexchange/47152-icp-registration-using-efficient-variants-and-multi-resolution-scheme The main contributions come from:

  1. Picky ICP: http://www5.informatik.uni-erlangen.de/Forschung/Publikationen/2003/Zinsser03-ARI.pdf
  2. Efficient variants of the ICP Algorithm: http://docs.happycoders.org/orgadoc/graphics/imaging/fasticp_paper.pdf
  3. Geometrically Stable Sampling for the ICP Algorithm: https://graphics.stanford.edu/papers/stabicp/stabicp.pdf
  4. Multi-resolution registration: http://www.cvl.iis.u-tokyo.ac.jp/~oishi/Papers/Alignment/Jost_MultiResolutionICP_3DIM03.pdf
  5. Linearization of Point-to-Plane metric by Kok Lim Low: https://www.comp.nus.edu.sg/~lowkl/publications/lowk_point-to-plane_icp_techrep.pdf

Required methods

pub fn as_raw_ICP(&self) -> *const c_void[src]

pub fn as_raw_mut_ICP(&mut self) -> *mut c_void[src]

Loading content...

Provided methods

pub fn register_model_to_scene(
    &mut self,
    src_pc: &Mat,
    dst_pc: &Mat,
    residual: &mut f64,
    pose: &mut Matx44d
) -> Result<i32>
[src]

\brief Perform registration

Parameters

  • srcPC: The input point cloud for the model. Expected to have the normals (Nx6). Currently, CV_32F is the only supported data type.
  • dstPC: The input point cloud for the scene. It is assumed that the model is registered on the scene. Scene remains static. Expected to have the normals (Nx6). Currently, CV_32F is the only supported data type.
  • residual:[out] The output registration error.
  • pose:[out] Transformation between srcPC and dstPC. \return On successful termination, the function returns 0.

\details It is assumed that the model is registered on the scene. Scene remains static, while the model transforms. The output poses transform the models onto the scene. Because of the point to plane minimization, the scene is expected to have the normals available. Expected to have the normals (Nx6).

pub fn register_model_to_scene_vec(
    &mut self,
    src_pc: &Mat,
    dst_pc: &Mat,
    poses: &mut Vector<Pose3DPtr>
) -> Result<i32>
[src]

\brief Perform registration with multiple initial poses

Parameters

  • srcPC: The input point cloud for the model. Expected to have the normals (Nx6). Currently, CV_32F is the only supported data type.
  • dstPC: The input point cloud for the scene. Currently, CV_32F is the only supported data type. @param [in,out] poses Input poses to start with but also list output of poses. \return On successful termination, the function returns 0.

\details It is assumed that the model is registered on the scene. Scene remains static, while the model transforms. The output poses transform the models onto the scene. Because of the point to plane minimization, the scene is expected to have the normals available. Expected to have the normals (Nx6).

Loading content...

Implementors

impl ICPTrait for ICP[src]

Loading content...