I have pairs of matched 3D points (10~50 points) with outliers included. I would like to find the transformation that aligns the source points to the destination points.

To prevent reinventing the wheel, I am looking for a library or code that can process the source, destination and pairs information.

It seems like most of the ICP libraries I found on google takes source, destination points and find matched points by itself which I don't need. Furthermore, global registration performance of commonly used ICP libraries is usually poor. I have trustable pair information but with outliers. I just need RANSAC and registration without the closest point finder.

I already have the code that I wrote in Matlab using RANSAC and SVD but I need c++ version. Does anyone know such code or library?

  • 1
    $\begingroup$ "I have trustable pair information but with outliers" That's a contradiction. Either you have trustable information (x)or you have outliers. $\endgroup$
    – FooTheBar
    Sep 23, 2019 at 8:04
  • $\begingroup$ @FooBar I agree. What I meant is that because it uses some kind of feature descriptor to find matched features it is kind of better than closest point pair methods that most of ICP uses. $\endgroup$ Sep 24, 2019 at 1:10

1 Answer 1


As you pointed out you don't need to find the correspondent points in two point clouds. However, there is no such function implement in pcl or open3d, which leaves it to implement on your own. Let me give you a direction with C++ using open3d.

RegistrationRANSACBasedOnCorrespondence as implemented here takes a CorrespondenceSet which holds the indices of pairs of points that you already have. For example if (10, 50) indexed points are a match for you than you can add it to this set and directly call the function by skipping the filling the correspondence set.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.