Point cloud registration on a polygonal mesh using an optical tracker

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view

Point cloud registration on a polygonal mesh using an optical tracker

Dear All,
I'm a newbie users of PCL library and I'm trying to automatically register a point cloud to a polygonal mesh. I've a 3D model of a 3D printed human skull reconstructed from a CT scan of the object. I extracted the surface of the frontal bone and saved the polygonal mesh vertices into a txt file using "x y z" format and then I added the necessary header lines to convert this file in the "pcd" format (frontalBonePC.pcd in the attachment). I've 355337 points coordinates in this file but no information about normals and colors. This is my target point cloud.

The source point cloud is obtained sampling the measures of NDI Vicra optical tracker obtained by the mean of a tracker probe. I move the tracker probe tip over the model surface while the tracker acquire the probe tip position in its local reference frame. I acquired 4096 points and saved them again in "x y z" format. Then I added the header lines to obtain the "pcd" format (skullScanPC.pcd).

The problem is that I cannot manage to find the transform to register the skull scan over the mesh model using PCL. Initially i used the code proposed in "Aligning object templates to a point cloud" tutorial that seemed to be the most suitable to solve my problem. The scanned cloud was set as a template and the frontal bone model as target. From the tutorial algorithm I removed the lines of "removing distant points" because I'm sure that my points are "compact". With the proposed parameters the algorithm is not able to find a solution. It gives me a fitness score of 1.#INF00 and the algorithm seems to not converge. After many attempts I modified the algorithm parameters in the following way:
min_sample_distance_ (0.005f),
max_correspondence_distance_ (0.002),
nr_iterations_ (500)
voxel_grid_size = 0.001f;
With these parameters I have a fitness score of 0.000422 but the alignment is completely wrong. The aligned cloud is "orthogonal" to the first one!

Then I tried also to use the code proposed in the "Robust pose estimation of rigid objects". I added in this case a block for source cloud normals estimation but I didn't received any results. The alignment results in an "Alignment failed" after 236827ms.

Can somebody help me? Is it so hard to align these two datasets or I'm wrong with somethings?
I tried to look for in this mailing list archive but I didn't found something similar to my problem.

Any contribution or suggestion will be appreciated.

Thanks in advance.

[hidden email] / http://pointclouds.org

archive.zip (256K) Download Attachment
Reply | Threaded
Open this post in threaded view

Re: Point cloud registration on a polygonal mesh using an optical tracker


Do you need an automatic registration?
If not, please don't bother with algorithm and do the alignment manually with meshlab

If you need automatic alignement, the first thing I would do is compute the centroids of the meshes and make them use the same origin. The two files you provided are very far away (830 units).

Looking at the files I don't see an evident resemblance between the two files; should they align perfectly?
One of the point cloud is very spare compared to the other one, this might explain your difficulties.