Need help with CSF?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

jianboqi
159 Stars 75 Forks Apache License 2.0 127 Commits 6 Opened issues

Description

LiDAR point cloud ground filtering / segmentation (bare earth extraction) method based on cloth simulation

Services available

!
?

Need anything else?

Contributors list

# 266,582
3d-poin...
C++
Shell
point-c...
81 commits
# 501,321
Shell
The Jul...
linear-...
MATLAB
11 commits
# 136,490
R
forestr...
lidar
MATLAB
2 commits

csf1 csf2

CSF

Airborne LiDAR filtering method based on Cloth Simulation. This is the code for the article:

W. Zhang, J. Qi*, P. Wan, H. Wang, D. Xie, X. Wang, and G. Yan, “An Easy-to-Use Airborne LiDAR Data Filtering Method Based on Cloth Simulation,” Remote Sens., vol. 8, no. 6, p. 501, 2016. (http://www.mdpi.com/2072-4292/8/6/501/htm)

New feature has been implemented:

Now, We has wrapped a Python interface for CSF with swig. It is simpler to use now. This new feature can make CSF easier to be embeded into a large project. For example, it can work with Laspy (https://github.com/laspy/laspy). What you do is just read a point cloud into a python 2D list, and pass it to CSF. The following example shows how to use it with laspy. ```python

coding: utf-8

import laspy import CSF import numpy as np

inFile = laspy.file.File(r"in.las", mode='r') # read a las file points = inFile.points xyz = np.vstack((inFile.x, inFile.y, inFile.z)).transpose() # extract x, y, z and put into a list

csf = CSF.CSF()

prameter settings

csf.params.bSloopSmooth = False csf.params.cloth_resolution = 0.5

more details about parameter: http://ramm.bnu.edu.cn/projects/CSF/download/

csf.setPointCloud(xyz) ground = CSF.VecInt() # a list to indicate the index of ground points after calculation nonground = CSF.VecInt() # a list to indicate the index of non-ground points after calculation csf.dofiltering(ground, non_ground) # do actual filtering.

outFile = laspy.file.File(r"ground.las", mode='w', header=inFile.header) outFile.points = points[ground] # extract ground points, and save it to a las file. outFile.close() # do not forget this ```

Reading data from txt file:

If the lidar data is stored in txt file (x y z for each line), it can also be imported directly.

import CSF

csf = CSF.CSF() csf.readPointsFromFile('samp52.txt')

csf.params.bSloopSmooth = False csf.params.cloth_resolution = 0.5

ground = CSF.VecInt() # a list to indicate the index of ground points after calculation non_ground = CSF.VecInt() # a list to indicate the index of non-ground points after calculation csf.do_filtering(ground, non_ground) # do actual filtering. csf.savePoints(ground,"ground.txt")

How to use CSF in Python

Download the source code. under python folder:

python
python setup.py build
python setup.py install 

How to use CSF in Matlab

see more details from file

demo_mex.m
under matlab folder.

How to use CSF in R

Thanks to the nice work of @Jean-Romain, through the collaboration, the CSF has been made as a R package, the details can be found in the RCSF repository. This package can be used easily with the lidR package:

library(lidR)
las  

How to use CSF in C++

Now, CSF is built by CMake, it produces a static library, which can be used by other c++ programs.

linux

To build the library, run:

bash
mkdir build #or other name
cd build
cmake ..
make
sudo make install
or if you want to build the library and the demo executable
csfdemo
mkdir build #or other name
cd build
cmake -DBUILD_DEMO=ON ..
make
sudo make install

Windows

You can use CMake GUI to generate visual studio solution file.

Binary Version

For binary release version, it can be downloaded at: http://ramm.bnu.edu.cn/projects/CSF/download/

Note: This code has been changed a lot since the publication of the corresponding paper. A lot of optimizations have been made. We are still working on it, and wish it could be better.

Cloudcompare Pulgin

At last, if you are interested in Cloudcompare, there is a good news. our method has been implemented as a Cloudcompare plugin, you can refer to : https://github.com/cloudcompare/trunk

License

CSF is maintained and developed by Jianbo QI. It is now released under Apache 2.0.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.