PointCloudLibrary / PointCloudLibrary/pcl
[ppf_registration] Incorrect calculation of Point Pair Feature
Nobody has claimed this yet.
- Dominant language
- C++
- Stars
- 11.1k
- Forks
- 4.7k
- Avg merge
- 4d 10h
- Merged PRs (30d)
- 6
Description
Describe the bug
The classes PPFRegistration and pcl::PPFEstimation use the function pcl::computePairFeatures while feature estimation and aligning , but it issues wrong angle data.
Context
For example with this snippet
PointNormalT p1(10, 10, 10, 0, 0, 10);
PointNormalT p2(50, 10, 10, 0, 10, 0);
float f1, f2, f3, f4;
pcl::computePairFeatures(
p1.getVector4fMap(),
p1.getNormalVector4fMap(),
p2.getVector4fMap(),
p2.getNormalVector4fMap(),
f1, f2, f3, f4);
Expected behavior
f1=pi/2, f2=pi/2, f3=pi/2 is expected.
Current Behavior
f1=0, f2=10, f3=0 is issued.
Your Environment (please complete the following information):
- OS: Windows 10
- Compiler: MSVC 19
- PCL Version 1.11
Possible Solution
Fix the calculation.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by tracing pcl::computePairFeatures, then inspect how PPFRegistration and pcl::PPFEstimation consume its four outputs. Reproduce the provided PointNormalT example and compare the calculated angles with the expected values. Done means the calculation produces the expected f1, f2, and f3 values without breaking the affected registration and feature-estimation paths.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- computer-vision
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100