Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Registration between a sparse and a dense point cloud #97

Open
ttsesm opened this issue Oct 25, 2022 · 3 comments
Open

Registration between a sparse and a dense point cloud #97

ttsesm opened this issue Oct 25, 2022 · 3 comments

Comments

@ttsesm
Copy link

ttsesm commented Oct 25, 2022

I have a set of two point clouds where the source is much more dense in comparison to the target one. See examples below:
image
and in case I load the source pcd with some noise:
image

Now I want to register the two point clouds so that I get the best overlap as shown here:
image

Initially I used the cpd registration tf_param, _, _ = probreg.cpd.registration_cpd(A_pcd, B_pcd, update_scale=False, maxiter=20000, use_cuda=False, tol=0.000001, tf_type_name='rigid') with the following results (without the noise):
image
and with noise:
image

While the registration in the without noise case is not that bad, it is still a bit far from the desired result while the output with the noise is totally bad.

Thus, @neka-nat I wanted to ask if you think that with any of the provided algorithms it would be possible to improve the result or if there is any other suggestion that would help towards that.

filterreg, gmm and svr didn't really seem to do any better and mostly the results were worse.

Thanks.

pcds.zip

@neka-nat
Copy link
Owner

neka-nat commented Nov 3, 2022

Hi,
In cases such as this, where the target is rotated nearly 90 degrees, it may be better to use a local registration such as CPD after roughly registering the target with the global registration.
In probreg, FPFH filterreg corresponds to the global registration.
https://github.com/neka-nat/probreg/blob/master/examples/filterreg_feature.py

@ttsesm
Copy link
Author

ttsesm commented Nov 7, 2022

@neka-nat thanks for the feedback. I will try to give it a try.

@ttsesm
Copy link
Author

ttsesm commented Nov 7, 2022

@neka-nat I've tried your suggestion but it didn't really change much. The problem that I see is not that really the rotation of the 90 degrees but rather that I have only a few points for my target pcd. For example there is a nice paper describing exactly the same problem here https://journals.sagepub.com/eprint/mPn3IP2gnkaWF6pzDaVQ/full where the authors describe a corresponding pipeline. From the results CPD seems to be close to the proposed solution that's why I was thinking how possibly could be parametrized in order to possibly eliminate the error.

By the way does probreg has any method for measuring the rotation and translation error between two point clouds?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants