point-cloud-librarypoint-cloudsprinter-control-languagekeypointfeature-descriptor

PCL: PFH with ISS keypoints


Currently I try to compute PFH descriptors for ISS keypoints. I perform the following steps:

(1) Detect keypoints with pcl::ISSKeypoint3D (2) Estimate normals of the new keypoint cloud from (1) with pcl::NormalEstimation (3) Estimate PFH for the keypoints and the normals from (2) with pcl::PFHEstimation

To my understanding, the PFH estimation takes k neighbors into account and therefore has a complexity of O(n*k^2), where n denotes the number of keypoints. However, I only pass a cloud consisting of the keypoints itself to the estimator in (3).

So my question is: How can i retrieve the k neighbors for each ISS keypoint?


Solution

  • You have to put original normal as input.

    So, there are three items that should be set.

    setinputcloud(filtered one for vertices) //iss keypoints

    setinputnormals(non-filtered one for normals) //original normals using original vertices

    setSearchSurface(non-filtered one for vetices) // original vertices

    You can not use normal of keypoints and original vertices at the same time.

    PCL will show you some error.

    follow case will show you error.

    1.

    setinputcloud(filtered one for vertices) //iss keypoints

    setinputnormals(filtered one for normals) //recomputed normals using filtered vertices

    setSearchSurface(non-filtered one for vetices) // original vertices

    2.

    setinputcloud(filtered one for vertices) //iss keypoints

    setSearchSurface(non-filtered one for vetices) // original vertices