How to get accurate transformation between two 2D point cloud?

asked 2020-07-17 04:41:23 -0500

opencvr gravatar image

I am using OpenCV ICP algorithm to find Transformation matrix(pose) between one scan 2D data with respect to reference 2D data (CAD DATA) of object.

Reference data: image description

Scan data: image description

Approach to filter out points:

Here for better matching, as shown in below image one imaginary straight points are created(black) in reference data and only points used which are right side of the red line (left sides of points are variable).

filtered reference data: image description

Also, in scan data as shown in below image points taken which are right side of the line and imaginary points created. Additionally to match points at the starting (because of convex) in scan data some straight points are created at top (black dots in image) in straight lines(using highest points from that region) and some additional points were removed.

filtered scan data: image description

But, OpenCV ICP is not giving accurate result for translation and rotation every time. is there any way to get better transformation matrix or pose for datasets of 2D point cloud? what can be possible approach with or without ICP?

edit retag flag offensive close merge delete