PointCloudLibrary / PointCloudLibrary/pcl

[ppf_registration] Incorrect calculation of Point Pair Feature

Open
#4,701 8 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

kind: bug module: features
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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.