siavashk / pycpd

Pure Numpy Implementation of the Coherent Point Drift Algorithm
MIT License
513 stars 115 forks source link

Enable deformable transformation of arbitrary sized point clouds. #38

Closed gattia closed 4 years ago

gattia commented 4 years ago

More elaborate comments included in commits. Essentially, this pull request changes the gaussian_kernel so that it accepts X & Y instead of just Y. If (default) there is no Y, then it makes Y=X. If X & Y provided and they aren't the same shape it enables making a gaussian_kernel that is rectangular. This rectangular gaussian_kernal is needed to enable the transformation of point clouds that aren't the same shape as the original point cloud used for performing the registration.

One major benefit of this is that a subset of the original points can be selected and registered (for memory and performance reasons) and then the transformation can be applied to the entire point cloud.

The other benefit is that you may have points that are not relevant for the registration but that you want to move with the same transformation. This could be used to register the appropriate points and then transform the additional ones as well (either together or independently).

gattia commented 4 years ago

@siavashk I added this one along with the other pull request to enable low-rank as I came across this problem recently while trying to register something with a subset of data and then apply to the larger dataset. It's an easy enough addition that improves functionality.

Let me know if you have any thoughts about either and we can sort them out. And thanks again for adding me as as collaborator here, it made much of this process easier.

siavashk commented 4 years ago

I have been sick since Friday. I will look at this when I feel better. Thank you for adding this.

gattia commented 4 years ago

No rush. Hope you're feeling better.