h1. Plugin IFP - LSIS
The *plugin IFP - LSIS* proposes several computational steps dedicated to the modeling of forest objects by continuous surfaces:
* 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.
h1. Creators
!ifpl.png! !lsis.png! !logo.png!
Method developed during the Ph.D of Jules Morel supported by IFP(French Institute of Pondicherry) (http://www.ifpindia.org/) and LSIS(Laboratoire des Sciences de l'Information et des SystÃ¨mes) (http://www.lsis.org/) .
Plugin extended with the support of AMAP (http://amap.cirad.fr) and the Computree Core Team.
h1. License
The plugin IFP - LSIS is under LGPL license (http://www.gnu.org)
h1. Step IFP_stepGetMinPtsPerSurface: Filter of minimum points
!min1.png! !min2.png! !min3.png!
h2. Description
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.
h2. Path in the step explorer
_Points -> Filter -> IFP_stepGetMinPtsPerSurface_
h2. Parameters
* *Resolution of the 2D frame:* size (in meter) of the 2D grid cells
h2. Input
* *Point cloud:* raw point cloud of the plot
h2. Output
* *Point cloud:* minimum points that serve as input data for the estimation of the digital terrain model
h1. Step IFP_stepComputeMnt: Estimate the digital terrain model (DTM)
!mnt1.png! !mnt2.png! !mnt3.png!
h2. Description
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
!mntoverview.png!
_
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._
h2. Path in the step explorer
_Raster / Image -> Digital elevation models-> IFP_stepComputeMnt_
h2. Parameters
h3. Parameters related to the quadtree division of space
* *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.
h3. Parameters controlling the histogram filtering
* *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.
h3. Parameters controlling the neighboring filtering
* *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.
h3. Parameters controlling the refinement of the polygonization
* *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.
h2. Input
* *Point cloud:* minimum points of the plot
h2. Output
* *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
h1. Step IFP_stepSmoothQSM: Transform a Quantitative structure model (QSM) into a continuous surface model
!qsm1.png! !qsm2.png! !qsm3.png!
h2. Description
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.
!smoothqsmoverview.png!
_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._
h2. Path in the step explorer
_Meshes -> Create / Merge -> IFP_stepSmoothQSM_
h2. Parameters
* *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).
h2. Input
* *Tree point cloud:* point cloud describing the tree
* *QSM:* quantitative structure modeling of a tree
h2. Output
* *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
h1. Step TK_StepNormalEstimator: Compute a consistent normal field from a point cloud
!normals1.png! !normals2.png!
h2. Description
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 *n* the eigenvector of the matrix _*C*_ corresponding to the lowest eigenvalue. By browsing a graph filled with the data set, we propagate the normals orientation. At the end of the process, the input point cloud is enriched with point-wise normals oriented consistently over the whole data set.
h2. Path in the step explorer
_Points -> Normals -> TK_StepNormalEstimator_
h2. Parameters
* *Number of neighbors:* number of samples taken into account in the computation of the covariance matrix (usually between 8 and 10)
h2. Input
* *Point cloud:* point cloud without normals attributes
h2. Output
* *Point cloud:* point cloud with normals attributes
h1. Step IFP_StepPoisson: Reconstruct a surface from an oriented point cloud
!poisson1.png! !poisson2.png! !poisson3.png!
h2. Description
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).
h2. Path in the step explorer
_Mesh -> Create/Merge -> IFP_StepPoisson_
h2. Parameters
* *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).
h2. Input
* *Point cloud:* point cloud with normals attributes
h2. Output
* *Continuous surface:* resulting poisson surface mesh
h1. Step IFP_stepComputeMeshVolume: Estimate the volume of a closed surface mesh
!volumeslices1.png! !volumeslices2.png!
h2. Description
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.
h2. Path in the step explorer
_Mesh -> Analyse -> IFP_stepComputeMeshVolume_
h2. Parameters
* *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)
h2. Input
* *Mesh:* closed surface mesh
h2. Output
* *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)
h1. .