PointCloudLibrary / pcl

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

[compression] Can we support GPU to accelerate? #4967

Open whatisor opened 3 years ago

whatisor commented 3 years ago

Current evaluation: Environment: Windows 10 Intel(R) Core(TM) i7-8750H CPU @ 2.20GHz 2.21 GH PointCloud: Realsense

Input: pcl::io::compression_Profiles_e compressionProfile = pcl::io::MANUAL_CONFIGURATION; const double pointResolution_arg = 0.005; const double octreeResolution_arg = 0.005; bool doVoxelGridDownDownSampling_arg = true; const unsigned int iFrameRate_arg = 30; bool doColorEncoding_arg = true; const unsigned char colorBitResolution_arg = 5;

Result: Frame ID: 773 Encoding Frame: Prediction frame Number of encoded points: 135760 XYZ compression percentage: 3.664678% XYZ bytes per point: 0.439761 bytes Color compression percentage: 36.146324% Color bytes per point: 1.445853 bytes Size of uncompressed point cloud: 2121.250000 kBytes Size of compressed point cloud: 249.991211 kBytes Total bytes per point: 1.885614 bytes Total compression percentage: 11.785089% Compression ratio: 8.485298

Encode time 133 ms Decode time 47 ms

Can we implement by GPU such as Cuda, WebGL?

mvieth commented 3 years ago

Could be possible to make encoding and decoding faster by using the GPU or using multiple CPU threads. We maintainers probably don't have the time right now to look into this, but you are of course welcome to investigate and share your findings or open a pull request. Or maybe someone else sees this and is interested. Starting points could be Octree2BufBase and the octree implementation in the gpu module.