Tagging 3D point clouds of natural scenes
The vegetation is recognised independently of its shape and size in a (x,y,z) point cloud.
Data captured with a LiDAR in St Michel's mount bay (France). Downstream sediment accumulation is clearly visible in the image.
Scale is given in meters, click on the image to enlarge. Scene visualised using CloudCompare.
Recognising automatically the elements of mountain river stream scene. Data captured with a LiDAR at the Otira river, New-Zealand, by Dimitri Lague.
Main idea
Consider a scene comprising rocks, sand, and vegetation patches. At a small scale the sand looks like a 2D surface, the rocks look 3D, and the vegetation is a mixture of small elements like stems and leaves (mostly 1D and 2D). At a larger scale the sand still looks 2D, the rocks now look more 2D than 3D, and the vegetation has become more like a 3D bush. When combining information from different scales we can thus build signatures of the scene at each point. This signature can then be used to discriminate vegetation from soil for example.
Classifier in the plane of maximal separability for the vegetation and soil. The classifier may be graphically edited in Inkscape.
Article, software, documentation and example data
The article is available here and on the ArXiv. Example data corresponding to the benchmark in the article is available.
A Mandarin translation of the article is also available, thanks to Liu Kun (刘坤).
If you are not familiar with command-line processing, I recommend using the CloudCompare plugin.
Otherwise, download the old (unmaintained) program for Linux 64 bits and/or Windows 64 bits (or for 32bits older computers or antiquities). The Linux version is the reference. Note that compiling Canupo for your system is recommended for better performances. As from 25/02/13 these packages also contain the M3C2 scene comparison utility, see the dedicated page for details.
A tutorial is included within the above packages. Please also check Dimitri Lague web site for a detailed user guide + scripts on windows, as well as more data sets, ready to use classifiers, and more information!
The source code is maintained in my source repository, check it for updates. It can be downloaded either as a tar.gz archive, or by using GIT: git clone git://nicolas.brodu.net/canupo. You will need a recent C++ compiler as well as some support libraries (boost, cairo, lapack).
Canupo is Free/Libre software released under the LGPL v2.1 or more recent