upsamplingCloudPCL
upsamplingCloudPCL copied to clipboard
Upsampling method for an input cloud using mls method of PCL
upsamplingCloudPCL
Upsampling method for an input cloud using MovingLeastSquares method of PCL
Input file structure support
Format | Description |
---|---|
.pcd | Point Cloud Data file format |
.ply | Polygon file format |
.txt | Text file format |
.xyz | X Y Z Text file format |
Output file structure (.pcd)
- unsampled_cloud.pcd
Example
Command line
Usage: ./upsampling_cloud [options]
Optional arguments:
-h --help shows help message and exits [default: false]
-v --version prints version information and exits [default: false]
--cloudfile input cloud file [required]
--search-radius search radius value [default: 0.03]
--sampling-radius sampling radius value [default: 0.005]
--step-size step size [default: 0.005]
-o --output-dir output dir to save upsampled cloud [default: "-"] (not configured)
-d --display display upsampling in the pcl visualizer [default: false]
Dependencies
This projects depends on the Point Cloud Library (it works with version 1.8...1.12.1
) and its dependencies.
Package | Version | Description |
---|---|---|
VTK | 9.0.0 | Visualization toolkit |
PCL | 1.12.1 | The Point Cloud Library (PCL) |
Eigen | 3.7.7 | Eigen is a library of template headers for linear algebra |
Flann | 1.9.1 | Fast Library for Approximate Nearest Neighbors |
Boost | 1.77.0 | Provides support for linear algebra, pseudorandom number generation, multithreading |
OpenGL | 21.2.6 | Programming interface for rendering 2D and 3D vector graphics. |
Compilation
Compile from source
- Download source code
git clone https://github.com/danielTobon43/upsamplingCloudPCL
- Create a "build" folder at the top level of the upsamplingCloudPCL
cd upsamplingCloudPCL/ && mkdir build
- Compile with CMake
cd build/ && cmake ../ && make
Test
cd /build
./upsampling_cloud --cloudfile <path/to/cloud-file>
Note
You can modify the parameters to obtain better results here
mls.setComputeNormals(true);
mls.setInputCloud(input_cloud);
mls.setSearchMethod(kd_tree);
mls.setSearchRadius(search_radius);
mls.setUpsamplingMethod(pcl::MovingLeastSquares<pcl::PointXYZRGB, pcl::PointXYZRGB>::UpsamplingMethod::SAMPLE_LOCAL_PLANE);
mls.setUpsamplingRadius(sampling_radius);
mls.setUpsamplingStepSize(step_size);
mls.setPolynomialOrder(pol_order);
mls.setSqrGaussParam(gauss_param);// (the square of the search radius works best in general)
mls.setCacheMLSResults(true);//Set whether the mls results should be stored for each point in the input cloud.
mls.setNumberOfThreads(num_threats);