- The extraction of digital terrain modeling from a square plot sampled by TLS.
- The smoothing of a QSM, which results in a surface mesh, used for visualization and further computations.
- The estimation of the normals for a given point cloud (previously implemented in the plugin Toolkit)
- The reconstruction of surface from oriented points following a Poisson equation resolution scheme.
- The estimation of volume enclosed in a watertight surface mesh.

Method developed during the Ph.D of Jules Morel supported by IFP (http://www.ifpindia.org/) and LSIS (http://www.lsis.org/) .

Plugin extended with the support of AMAP (http://amap.cirad.fr) and the Computree Core Team.

The plugin IFP - LSIS is under LGPL license (http://www.gnu.org)

This step filters a point cloud to keep only the minimum points per surface unit. Even though such local minima may often correspond to non-ground points because of occlusions generated by surrounding objects, this simple filter remains interesting, especially because it drastically reduces the amount of data. In practice, the raw TLS point cloud is projected into a fine regular 2D (x, y) grid and further are selected the points of minimum elevation in each cell. The resulting set of points serves as input data for the digital terrain model (DTM) algorithm. Generally speaking, the size of the 2D grid should be selected according to the expected DTM accuracy. The smaller the grid size, the higher the point density and the finer the DTM.

*Points → Filter → IFP_stepGetMinPtsPerSurface*

**Resolution of the 2D frame:**size (in meter) of the 2D grid cells

**Point cloud:**raw point cloud of the plot

**Point cloud:**minimum points that serve as input data for the estimation of the digital terrain model

This step extracts the Digital Terrain Model (DTM) from a point cloud based on local minima coming from the step _ IFP_stepGetMinPtsPerSurface_. The result is provided as a triangulated irregular network (TIN). The high point density and the sudden shifts in this density are handled by using a quadtree division of space to adapt the scale locally. In order to handle the holes created by occlusion, the terrain is modeled as an implicit function by the combination of implicit patches merged with compactly supported radial basis functions (CSRBF). Its surface is then extracted by polygonization using a marching cube like algorithm.

The method is made of three main steps:- A quadtree construction allowing a dynamic multi-scale local approximation of the ground surface
- A refinement step dedicated to identify and correct approximation errors in the quadtree cells.

This steps consists in two filters: (1) the first one filters the vegetation points inside each quadtree cells; (2) the second one controls the difference between the approximation in a cell and the ones of its neighbors. - The computation of the implicit function and its polygonization

Figure: Overview of the method : (1) iterative build of the quadtree, (2) filtering of points using histogram,

(3) filtering of points with the distance of neighbor centroids to the local patch, (4) merge of local patches

using CSRBF and polygonization of the surface.

*Raster / Image → Digital elevation models→ IFP_stepComputeMnt*

**Error Threshold:**the threshold (in meter) on the weighted sum of squared residuals coming from the fit of the local quadratic patch. it drives the quality of the final surface result. Indeed a low value forces the division of the quadtree to get better local approximating patches.**Minimum number of points per leaf:**the minimum number of points allowed in each cell of the quatree. If the number of points in a cell is superior to this parameter, then the cell can be divided.**Minimum size of leaf:**the minimum size (in meter) of the quadtree cells. If a cell would produce children cell bigger than this paramter, then the cell can be divided.

**Range of histogram:**the size (in meter) of the histogram bin.**Size of window for histogram smoothing:**the width (in number of bins) of the median filter used to smooth the histogram distribution of points.

**Threshold on error between neighbors:**the threshold (in meter) on the averaged sum of squared values of the local patch at each centers of its neighbors. This parameter controls the difference between a local quadratic patches and the ones in its neighbors.

**Scalar field discretization:**size (in meter) of the 3D grid used for the discretization of the implicit function. This parameters controls the size of the triangles that compose the resulting triangulated surface.

**Point cloud:**minimum points of the plot

**FRBF surface:**graphical tool to debug the intermediate step of the algorithm. It renders for instance the quadtree division of space and the centers of the local frames.**DTM TIN:**triangulated irregular network representing the digital terrain model

This step aims at modeling tree structures with continuous surface models. To do so, the algorithm builds upon a TLS point cloud describing a tree and the corresponding QSM provided as a opf file. It relies on the division of space provided by the QSM to adjust smoothly and finely cylindrical quadratic shapes in place of the cylinders. The global implicit function is then computed by merging the local quadratic approximations with compactly supported radial basis functions (CSRBF). This modeling as an implicit surface appears as a lightweight alternative to smooth the noise inherent of forest TLS point clouds. Finally, a marching cube like algorithm produces the surface mesh for visualization.

*Figure: Overview of the method for two cylinders adjusted on the point cloud describing a part of the trunk: (a) cylinders of the QSM adjusted to the point cloud; (b) bounding boxes of the cylinders defining the space partition; (c) local approximations with cylindrical quadrics and their CSRBF, (d) Extraction of geometric model as the the zero levelset of the implicit function resulting of the merge of local approximations.*

*Meshes → Create / Merge → IFP_stepSmoothQSM*

**Scalar field discretization:**size (in meter) of the 3D grid used for the discretization of the implicit function. This parameters controls the size of the triangles that compose the resulting triangulated surface.**Research of half edges:**If checked, research half hedges during the mesh creation (speed up loading if unchecked).

**Tree point cloud:**point cloud describing the tree**QSM:**quantitative structure modeling of a tree

**QSM cylinders:**graphical tool to debug the intermediate step of the algorithm. it renders the cylinders of the QSM and gives a color code according to the branches.**Continuous surface:**resulting surface mesh

This steps computes a consistent normal field for each sample; it is a preliminary processing step required by the Poisson surface reconstruction. A normal field is said to be consistent if the normal of each points lying on a surface points towards the same side of the surface.

We use the method introduced by *Hoppe et al. (1992)* to compute a normal **n** at each point **p**. For each point **p**, we compute the co-variance matrix * C*. We attribute to

*Points → Normals → TK_StepNormalEstimator*

**Number of neighbors:**number of samples taken into account in the computation of the covariance matrix (usually between 8 and 10)

**Point cloud:**point cloud without normals attributes

**Point cloud:**point cloud with normals attributes

The Poisson surface reconstruction (*Kazhdan et al. (2006)*) models the surface by an indicator function whose value is 1 inside the shape and 0 elsewhere. It approximates the gradient of this function by a vector field coming from the normals of the 3D points. The indicator function is then retrieved by solving a Poisson problem. This function is finally polygonized to extract the resulting surface. *Kazhdan et al. (2013)* improve the methods by using the position of the points as constraints in the optimization to limit the over-smoothing.

Note: This approach guarantees the indicator function to have finite boundary, i.e. to define a closed portion of space. Nevertheless, because the polygonization occurs in the bonding box depending on the input points, the resulting mesh surface can be open.

This step relies on the implementation of the PCL library Poisson surface reconstruction, which is based on Kazhdan et al. (2013).

*Mesh → Create/Merge → IFP_StepPoisson*

**Reconstruction depth:**Maximum depth of the tree used for surface reconstruction. This is the main parameter of the algorithm which drives the refinement of the result. Commonly, a value of 6 or 7 gives a coarse surface and a value of 12 gives a fine surface.**Interpolation weight:**Specifies the importance that interpolation of the point samples is given in the formulation of the screened Poisson equation. The results of the original (unscreened) Poisson Reconstruction can be obtained by setting this value to 0.**Samples per node:**Minimum number of sample points that should fall within an octree node**Solver depth:**Depth of block Gauss-Seidel solver used to solve the Laplacian equation**Polygonizer depth:**Depth of block iso-surface extractor used to extract the iso-surface**Normal confidence:**Use the size of the normals as confidence information. When the flag is not enabled, all normals are normalized to have unit-length prior to reconstruction.**Research of half edges:**If checked, research half hedges during the mesh creation (speed up loading if unchecked).

**Point cloud:**point cloud with normals attributes

**Continuous surface:**resulting poisson surface mesh

This steps compute the volume of a closed triangulated mesh. To do so, it considers each tetrahedron formed by the triangles of the mesh and the centroid of the mesh, then it computes their volume, and finally sums those signed volumes. The volume can also be computed by slice. In this mode, the mesh is divided along the Oz axis in closed sub-meshes. The volume is then computed for each sub-meshes.

*Mesh → Analyse → IFP_stepComputeMeshVolume*

**Divide the mesh along the Oz axis?:**if checked, the volume is computed by slices.**Size of the divisions:**size of the slices (in meter)

**Mesh:**closed surface mesh

**Mesh:**closed surface mesh with added volume attribute**Volume helper:**graphical tool used to visualize the division of the mesh along the Oz axis (optional)