Giter Club home page Giter Club logo

icp's Introduction

Iterative Closest Point (ICP)

A tutorial on iterative closest point using Python

The following has been implemented here:

  • Basic point to plane matching has been done using a Least squares approach and a Gauss-Newton approach
  • Point to point matching has been done using Gauss-Newton only

All the important code snippets are in basicICP.py. The main functions are:

  • icp_point_to_plane
  • icp_point_to_point_lm
  • icp_point_to_plane_lm

deformation.py has been used to deform the point cloud, so that we may validate the ICP based registration. We had only one set of point cloud and their correspinding normal vectors as the input. That was deformed using deformation.py. And then it is being registered with basicICP.py. That gives us an easy way to validate the ICP results.

transformations.py has been taken from the source code by Christoph Gohlke


An example of how to use the code has been given in basicICP.py

fileOriginal = '/icp/data/original.xyz'
deformed = '/icp/data/deformed.xyz'

source_points = read_file_original(fileOriginal)
dest_points_et_normal = read_file_deformed(deformed)

initial = np.array([[0.01], [0.05], [0.01], [0.001], [0.001], [0.001]])

# **********************************************************************
# Uncomment one of the following lines to trigger the respective module:
# **********************************************************************


#icp_point_to_plane(source_points,dest_points_et_normal,0)

#icp_point_to_point_lm(source_points,dest_points_et_normal,initial,0)

icp_point_to_plane_lm(source_points,dest_points_et_normal,initial,0)

This implementation does not use a CAD model for point-to-plane registration. You will need the two point clouds in .xyz format.

icp's People

Contributors

agnivsen avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

icp's Issues

2D/3D plot diagram

Hi, i came across your work on ICP for python.

I have tried running it however the results are given in numbers instead of plot diagram. Is there any ways the points can be plotted out into a visual diagram?

Look forward to your reply soon.

Thank you.

how to get point correspondence

hello. thanks for share your icp work.
but this is difference from the icp which can work on two set of different pointclouds.
so how do i get the point correspondence between two different cloud is the problem

how to understand your residual equation?

Your rotation is represented by Euler angle, but you directly multiply them with other variables, what does that mean?

And it seems like you are doing cross product between normal vector and source point, should it be inner product instead so as to compute distance?

how do you get normal vectors in data/deformed.xyz?

Hi, it is found each normal vector length doe not equal to 1 and lengths are different from each other. It is assumed the normal vector starts at a special point instead of the origin [0,0,0]. I wonder how to get normal vectors.

Thanks!

consult the question of ICP

Hello author, I am studying ICP algorithm recently and I have learned a lot from your work. I have some questions. I cannot understand the mean of output sucn as print (np.transpose(initial)) in basicICP.py. If I want to get R,what can I do please? I'm looking forward to hearing you.Thank you!

Rotation Matrix & XYZ file

Hi !
Thanks and appreciate your work on Python ICP.

May I ask 2 questions regarding this work?
What I have now are two different RGB and Depth images from two different angle. I want to find out the rotation and transformation.

  1. How to get XYZ file ?
  2. How to get rotation and transformation ?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.