File Exchange

Optimal Step Nonrigid ICP

version 1.2.0.0 (7.54 MB) by
Matlab implementation of non-rigid iterative closest point

Updated 04 Apr 2018

Optimal Step Nonrigid ICP is a MATLAB implementation of a non-rigid variant of the iterative closest point algorithm. It can be used to register 3D surfaces. The method is described in the following paper:
'Optimal Step Nonrigid ICP Algorithms for Surface Registration', Amberg, Romandhani and Vetter, CVPR, 2007.
Features:
* Non-rigid and local deformations of a template surface or point cloud.
* Iterative stiffness reduction allows for global intitial transformations that become increasingly localised.
* Optional initial rigid registration using standard iterative closest point.
* Optional bi-directional distance metric which encourages surface deformations to cover more of the target surface.
* Handles missing data in the target surface by ignoring correspondences with points on target edges.
https://github.com/charlienash/nricp

Cite As

Charlie Nash (2020). Optimal Step Nonrigid ICP (https://github.com/charlienash/nricp), GitHub. Retrieved .

Alessandro Borghi

my only question is: in the sample data, each mesh has a number of normals which is equal to the number of nodes as opposed to the number of faces. Shouldn't it be the other way round? the code - to work using normals - seems to only work under this condition

Peixin Li

MatlabNeuling2017

How to use this for point cloud registration ?

if anyone has a solution for my question please write me: auer5@hm.edu

Steven Lewis

Is there a video, or tutorial on how to use this, or at least directions on how to? Can this be used on a mesh of faces and vertices, or do you have to alter it to a point cloud?

Chaitanya Patel

How to use this for point cloud registration ?

James Farrell

Rui Gu

Sheon yan

Gaurav

Awesome code , Thank you :)

Gaurav

Gaurav

anusha gorrila

Hello Charlie, Thanks for the code. I run this code again my 2 stl files, with 10,000 * 3 faces and 30000 * 3 vertices, but I get an error which is Index exceeds Matrix Dimensions at Line 213 ie.,
Error in nricp (line 213)
N(j,(4 * j-3):(4 * j)) = [normalsSource(j,:) 1];

can you please guide me on how to resolve this?

Hi, Does it work on point cloud data? And do we need Matlab 2015b ?

feng liu

Hi Charlie.When I tried to align my data, the inner loop did not stop. Could you please tell me what should I do to with this problem.

btw, excellent code! thank you very much! It's really inspiring!

Charlie Nash

Hi Xiaolong, the method is best described in the paper:

'Optimal Step Nonrigid ICP Algorithms for Surface Registration', Amberg, Romandhani and Vetter, CVPR, 2007.

It seems to be freely available here:

http://gravis.cs.unibas.ch/publications/2007/CVPR07_Amberg.pdf

Xiaolong Zhang

Hi Charlie.It's a wonderful code, but could you please provide a detailed documentation(or any link) which explains the code.Thank you very much!

YanFei Gao

 23 Jan 2016 1.2.0.0 Bug fix in nricp.m 8 Jan 2016 1.1.0.0 Now handles missing target surface data by ignoring correspondences to points lying on edge of target. Added option to reject correspondences where surface normals are not close. Added demo for missing data. 28 Nov 2015 1.0.0.0 Name change. 19 Nov 2015 1.0.0.0 More minor formatting changes. 19 Nov 2015 1.0.0.0 Minor formatting changes.
MATLAB Release Compatibility
Created with R2015a
Compatible with any release
Platform Compatibility
Windows macOS Linux