0

I'm trying to perform point cloud registraction via ICP(Iterative closest point) and I use PCL library's pcl::IterativeClosestPoint algorithm.

But seems that it's not robust to large number of outliers. Seem area that is circled with red pen is "pulls" point cloud toward it and point cloud's not aligned perfectly. enter image description here enter image description hereenter image description here

Is there any robust variant of ICP algorithm (or other registration algorithm) that can handle it?

mrgloom
  • 20,061
  • 36
  • 171
  • 301

1 Answers1

1

Have a look to my answer here, I describe a pipeline that could be useful for your case. Basically you need to find inlier correspondences between both point clouds and get/apply an initial transformation. Then you can use ICP for a fine refinement of your registration.

Community
  • 1
  • 1
Finfa811
  • 618
  • 1
  • 8
  • 28
  • I tried 3D matching approach like here http://pointclouds.org/documentation/tutorials/template_alignment.php but result even worser (maybe it's beacuse I have two point clouds that are near the plane shape?). Also is there an option to restrict transformations in case of ICP and 3D matching? – mrgloom Jun 10 '16 at 08:38
  • Also I found this paper usefull http://lgg.epfl.ch/~ichim/registration_tutorial_ram_2015/data/registration_paper_tutorial_ram_2015.pdf – mrgloom Jun 10 '16 at 09:41
  • I may have another solution for your scenario that is more straight-forward. Since you can approximate your clouds to a plane, try to apply a [planar segmentation](http://pointclouds.org/documentation/tutorials/planar_segmentation.php) and then apply directly ICP to the inliers (points that will lie on the plane). That should achieve a good registration. – Finfa811 Jun 10 '16 at 10:18