You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I have a set of two point clouds where the source is much more dense in comparison to the target one. See examples below:
and in case I load the source pcd with some noise:
Now I want to register the two point clouds so that I get the best overlap as shown here:
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):
and with noise:
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.
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
@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?
I have a set of two point clouds where the source is much more dense in comparison to the target one. See examples below:
and in case I load the source pcd with some noise:
Now I want to register the two point clouds so that I get the best overlap as shown here:
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):and with noise:
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
andsvr
didn't really seem to do any better and mostly the results were worse.Thanks.
pcds.zip
The text was updated successfully, but these errors were encountered: