08. Vegetation - VUKOZ-OEL/3d-forest-classic GitHub Wiki
After the terrain extraction, there are two types of clouds in the project: the terrain and the vegetation clouds. However, the vegetation cloud needs to be further segmented into single trees to get the desired information about tree attributes. Right now there are two methods implemented in the 3D Forest, automatic and manual segmentation.
Automatic Segmentation - version 0.5 and higher
The automated segmentation is called via Vegetation → Automatic tree segmentation. There are ten inputs needed to start. The vegetation and terrain clouds of interests are obvious. The voxel size, descriptor type, descriptor threshold value (%), amount of iterations, number of voxels in element, and the distance from terrain are explained in detail in the next paragraphs, as well as the method itself. The cloud prefix and non-segmented points output name define the output. The algorithm used in version 0.5 and higher is based on searching neighboring voxels according to the chosen descriptor. At first, voxels of a given size (voxel size in cm) are made through the whole vegetation cloud. Each voxel is then evaluated by user-defined descriptor: Principal Component Analysis (PCA), slope, intensity, and PCA-slope multiplication. PCA computes Principal Component Analysis of x,y,z coordinates of all points inside each voxel. The ratio of different PCA axes is then used as the descriptor. Based on our experiences, the PCA descriptor usually gives the best segmentation results for TLS data. The threshold value is defined as a percentile of the descriptor value. The range is 0-100% and represents the lower limit of the used voxels for segmentation. For example, if the input threshold value is 70 then only the voxels whose descriptor value is at 70% of the actual value range or higher are used for the tree extraction. The higher the threshold is, the more similar and compact surfaces are represented. The ideal values of the input parameters are highly dependent on the point density and structure of the forest stand (see Tips below this paragraph). Resulting representations are the surfaces of a stem or big branches. All voxels above the descriptor threshold value and within the voxel size are then grouped. This means that these groups of voxels contain points of similar topological characteristics and the voxels are neighbors (connected without interruption). Such groups of voxels are called elements if they satisfy the condition of a minimal number of voxels in an element. Within these elements, the tree bases are classified by complying with the given distance above terrain points. As branches or stems may be interrupted by occlusions bigger than the voxel size and/or small sprigs do not always fill the descriptor threshold value, it is needed to add more voxels to make the tree complete. The established tree bases are thus gradually connected with voxels forming the rest of the tree parts during the iterative process. This allows us to find all free voxels that are onward from the voxel size. The iterative method is automatic and has two parts. It starts by omitting the descriptor condition. Thus all voxels that are up to the voxel size are considered as belonging to the tree. The surrounding of every added voxel is instantly searched for the neighbors. Once all neighbors are added, the voxel size is increased by its value, i.e. plus the voxel size, and the new surrounding of established tree bases are searched again. If the free voxels or elements within this space have the descriptor value up to the threshold they are added to the tree. Afterward, all free voxels laying within the doubled voxel size are added to the enlarged tree as well as their neighbors. These two steps are repeated iteratively according to the number of iterations. The appropriate number of iterations thus depends on your data quality and forest characteristics. The data with minor occlusions can be segmented well with few iterations. On the other hand, too few iterations can lead to omission errors (missing treetops), too many iterations can lead to commission errors, especially in very dense forests. When the iteration is finished, segmented trees are saved into the project folder as separate clouds with a given prefix and number of the tree. All points that are not selected as a tree are saved in vegetation as a “rest cloud”.
Tips:
- Voxels should have a size to incorporate at least 3 points from the point cloud. If the point cloud is dense enough, a smaller voxel size can be used and vice versa.
- For dense forest stands smaller voxel size is advised to maximize the number of segmented trees. On the other hand, with small voxel size trees might not be complete after segmentation.
- For sparse/even forest stands larger voxels can be used.
- If neighboring trees are merged after segmentation, try to increase the threshold of the descriptor value or/and use smaller voxels.
- If you want to avoid segmentation of small trees increase the distance from terrain and voxel size.
- It is better to use fewer iterations for deciduous trees scanned in the leaf-off state (lower occlusion is anticipated). On the contrary, for coniferous (evergreen) trees usually, more iterations are required due to occlusions in crowns.
- In some cases, two iterations of segmentation can be useful, first run the segmentation with finer parameters. Then segment the rest-of-vegetation point cloud with coarser parameters.
Manual Segmentation; Segmentation of Alternative Vegetation
Manual tree segmentation or segmentation of additional vegetation is done via Vegetation → Manual tree selection. The source cloud with vegetation can be selected in the dialog window as well as the name of the cloud where the rest of unsegmented points will be saved. The name of the cloud with a segmented tree (i.e. the tree cloud) is set after actual segmentation. The segmentation itself is done via the "x" button that activates the selection mode. The selection box is drawn using the left mouse button. Selected points are removed from the view. There is an “undo” key if needed. The goal is to remove all points that do not belong to the target tree. After editing, i.e. the target tree is shown only, the “Stop EDIT” icon ends editing mode. The filename of the new tree cloud has to be set. Once the segmented tree is saved, another segmentation process can be started (all the removed but unsegmented points will reappear) or terminated. Some points of vegetation belonging to trees, e.g. isolated branches, may remain in the unsegmented vegetation file after segmentation. These points may be attributed to any of the segmented trees by the “Cloud merge” function.
Tips:
- Larger areas are recommended to split into smaller tiles for improved visibility and easier handling. This may be done by employing additional software, e.g. LAStools.
- The segmented trees are removed from the edited vegetation cloud. This leads to gradual simplification. Thus, the easy shaped and/or stand-alone trees are suggested to be segmented first and the complex parts afterward.
- If the tree position and DBH are the only required variables, it is not necessary to segment the whole trees. For these variables, it's enough to separate the bottom part of the stem only (approximately 2 meters above the terrain).
- The neighboring tree clouds, and/or the vegetation cloud can be displayed by checking the box in the tree widget. This may help to decide on the controversial points.