Code covered by the BSD License  

Highlights from
estimateRigidTransform

5.0

5.0 | 2 ratings Rate this file 36 Downloads (last 30 days) File Size: 17.9 KB File ID: #28305
image thumbnail

estimateRigidTransform

by

 

26 Jul 2010 (Updated )

estimate the rigid transformation between two sets of 3D point clouds, given a set of point matches

| Watch this File

File Information
Description

This is a simple utility for estimating the rigid transformation that aligns two sets of 3D point clouds, given 3 (or more) point matches.

Input: two sets of 3D point clouds (P1 and P2)
Output: homogeneous transformation that aligns the two clouds
Assumptions:
1- point i in the first point cloud corresponds to point i in the second cloud
2- the transformation is rigid (i.e. only a rotation and a translation)
3- you need at least 3 (non-degenerate) point matches (i.e. they don't lie on a straight line)

The math is basic and well-known. The point of this upload is just to save the little bit of time it would've taken you to code it yourself.

Reference: "Computer Vision, a modern approach" by Forsyth and Ponce

Related:
1- Click3dPoint (on the File Exchange) to manually find a few point correspondences
2- ICP (e.g. Matlat implementation by A. Mian)

Acknowledgements

Click3d Point inspired this file.

MATLAB release MATLAB 7.9 (R2009b)
Tags for This File   Please login to tag files.
Please login to add a comment or rating.
Comments and Ratings (3)
26 Oct 2011 Andreas Martin  
29 Jul 2010 Babak Taati

Thanks Janti. You're correct. I fixed it.

29 Jul 2010 Janti

Great work.
Correct me if I'm wrong but I think line 28 should read

alignedP1h = estT * P1h;

instead of

alignedP1h = T * P1h;

Updates
29 Jul 2010

corrected a bug in the demo (as pointed on by Janti in the comments)

Contact us