-
-
Notifications
You must be signed in to change notification settings - Fork 4.6k
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
[features] Fix ShapeContext3DEstimation #6050
Comments
As a result, every point in the output cloud that supposed to store the feature at a size 1980 may overflow. So how to deal with this? |
Maybe |
In this commit, The A possible solution is to add a new point type to store point-wise features(1980x12) for
Even if we implement the shift feature, determining if two features are very similar is challenging since rotation does not guarantee the order of L descriptors. Matching a query to an existing dataset requires comparing all L descriptors. One approach to measure similarity is by calculating the distance between two features; for example, we could calculate the minimum distances from a query to features from two runs and check if they are close enough. |
Okay, this seems to be not as straightforward as I initially thought. I also had not checked how There are some assumptions that feature implementations have to meet in PCL to work well with other PCL classes (e.g. registration methods):
By the way, the 3D Shape Context feature has an extension, the Unique Shape Context (USC, https://dl.acm.org/doi/10.1145/1877808.1877821). That one does not use random x- and y-axes, but computes a reference frame instead. I think the best solution for the 3D Shape Context would be to deviate slightly from the paper, and not do L rotations, but just do one specific rotation on the result of |
Currently, the x-axis (and consequently also the y-axis) are chosen randomly, which makes this feature useless without further processing.
The paper by Frome et al says in section 2.1:
It seems like the PCL implementation is missing this additional step. There is a so far unimplemented function, seemingly for this purpose: https://github.com/PointCloudLibrary/pcl/blob/master/features/include/pcl/features/3dsc.h#L224 The task is to implement this function and call it in
computeFeature
, aftercomputePoint
.When the implementation is fixed, the test in test_shot_estimation.cpp probably has to be updated. Ideally, a new test should be added where this feature is computed twice on the same cloud, and the outputs should be very similar.
The text was updated successfully, but these errors were encountered: