PointCloudLibrary / pcl

Point Cloud Library (PCL)
https://pointclouds.org/
Other
9.98k stars 4.62k forks source link

pcl::gpu::PFHRGBEstimation seems to be suitable only for organized clouds #3319

Open shomedas opened 5 years ago

shomedas commented 5 years ago

pcl::gpu::PFHRGBEstimation has member function compute (DeviceArray2D< PFHRGBSignature250 > &features) which seems to be suitable only for organized clouds(as it uses devicearray2D). The descriptor however takes pcl::devicearray as input in the following function calls

setInputCloud (const PointCloud &cloud) setSearchSurface (const PointCloud &surface)

This seems to be conflicting as it takes an unorganized cloud(pcl::devicearray) as cloud input while the decriptor is of type(pcl::devicearray2d)

Is this an intended behavior?

Your Environment

Context

I need to compute the PFHRGB descriptors for two unorganized point clouds(source, target) using the gpu. Then I need to search for nearest neighbors(k=1 as in knearest neighbors).

Expected Behavior

pcl::gpu::PFHRGBEstimation has member function compute (DeviceArray2D< PFHRGBSignature250 > &features) should take DeviceArray instead of DeviceArray2D

Current Behavior

Code to Reproduce

pcl::gpu::DeviceArray<pcl::PointXYZ> cloud_DA(cloud_XYZRGBA->size());  

// omitting details about how to create cloud_DA

// create the class to compute PFHRGB on GPU
pcl::gpu::PFHRGBEstimation pfhrgb_gpu;
pfhrgb_gpu.setSearchSurface(cloud_DA);
pfhrgb_gpu.setInputCloud (cloud_DA);
pfhrgb_gpu.setInputNormals (normals_DA);
pfhrgb_gpu.setRadiusSearch (search_radius_pfhrgb,   count_max_neighbors_for_pfhrgb);

pcl::gpu::DeviceArray2D<pcl::PFHRGBSignature250> pfhrgb_desc;
// compute the PFHRGB descriptors
pfhrgb_gpu.compute(pfhrgb_desc); 
stale[bot] commented 4 years ago

Marking this as stale due to 30 days of inactivity. It will be closed in 7 days if no further activity occurs.