A tree skeleton construction and tree structure parameter extraction method based on point cloud
Patent Information
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- XINYANG NORMAL UNIVERSITY
- Filing Date
- 2023-06-21
- Publication Date
- 2026-06-26
Smart Images

Figure CN116977281B_ABST
Abstract
Description
Technical Field
[0001] This invention relates to the field of single tree skeleton construction and parameter extraction technology, and in particular to a method for tree skeleton construction and tree structure parameter extraction based on point cloud. Background Technology
[0002] A tree skeleton is a simplified representation of the complex geometry of a tree, using line segments between points to represent the tree's geometric topology. Constructing a tree skeleton that matches the tree's geometry and extracting its geometric parameters, such as trunk height, branch length, branch growth height, and the angle between branches and the trunk or other branches they grow from, is crucial for studying tree growth patterns and trends. Existing tree skeleton construction methods fail to accurately represent the tree's true geometry, cannot represent the structural information of the trunk, primary branches, and secondary branches, and cannot extract structural parameters such as trunk height, branch height and length (primary and secondary branches), number of branches (e.g., number of primary branches, number of secondary branches, number of secondary branches on primary branches), and the growth direction of the trunk or branches at a given location. Summary of the Invention
[0003] In view of this, the purpose of this invention is to provide a method for constructing a tree skeleton and extracting tree structure parameters based on point cloud, which can accurately construct a tree skeleton that reflects the geometric topology and constituent elements of the tree, and extract the tree structure parameters.
[0004] To achieve the above objectives, the present invention adopts the following technical solution:
[0005] A method for constructing a tree skeleton and extracting tree structure parameters based on point clouds includes the following steps:
[0006] Step 1: Remove noise points and obtain the traversal relationships between points;
[0007] Step 2: Generate tree point cloud blocks;
[0008] Step 3: Generate tree skeleton points;
[0009] Step 4: Connecting and classifying tree skeleton points;
[0010] Step 5, Optimize the tree skeleton;
[0011] Step 6: Extracting tree structure parameters.
[0012] Preferably, step 1, removing noise points and obtaining the traversal relationship between points, includes:
[0013] Step 101, removing noise points, includes: using the tree point cloud P0 obtained by scanning a tree with a terrestrial 3D laser scanner as input data, and using the selected neighborhood distance radius eps and the minimum number of points in the neighborhood distance radius eps minPts as parameters, performing the density-based clustering algorithm DBSCAN on the tree point cloud to obtain multiple clusters with different numbers of points; the selection of the parameters eps and minPts should be such that the cluster with the most points can cover more than 80% of the tree's height. At this time, the cluster with the most points is the tree point cloud P from which the tree skeleton is extracted, and the other clusters are noise points and are removed;
[0014] Step 102, obtaining the traversal relationship between points, including: taking the tree point cloud P as input, and executing the DBSCAN algorithm again with the parameters neighborhood distance radius eps and minPts values. The process is as follows: starting from the point with the smallest Z-axis value in the tree point cloud P, traversing each point one by one in ascending order of the Z-value of the point coordinates, and calculating the order of point traversal; specifically, for a point p i (x i ,y i ,z i If point p j Located at point p i Within the neighborhood distance radius eps, and p j If the preorder node is not labeled, then label p. j The preorder node is p i If point p i If point p is the first point to be traversed, then point p... i The preorder node is itself; since the tree point cloud P is a complete cluster obtained in step 101, each point in the tree point cloud P has a preorder node, so the traversal relationship between points in the tree point cloud P can be obtained.
[0015] Preferably, step 2, generating tree point cloud blocks, includes:
[0016] Based on the preset height parameter h and the minimum value Z of the tree point cloud P on the Z-axis. min With the maximum value Z max Divide the tree point cloud P into The system is divided into three vertical segments, each with a height of h. Then, the DBSCAN clustering algorithm with parameters eps and minPts is applied to each vertical segment, resulting in multiple clusters for each segment. Each cluster is a tree point cloud block P. i All vertically segmented clusters constitute all tree point cloud blocks, and the union of all tree point cloud blocks is the tree point cloud P.
[0017] Preferably, step 3, generating tree skeleton points, includes: for a tree point cloud block P in the kth vertical segment... i , will P i Projected onto plane Z = Z min +h*k(Z min It is the minimum value of the tree point cloud P on the Z-axis. We obtain a set of projection points P i ', calculate the projection point set P i The centroid c of the convex hull polygon of ′ i Construct a closed cubic Bezier curve interpolated at the convex hull point. Divide the length of this closed curve by 2π to obtain the radius r of the tree point cloud patch; with the centroid point c... i Let P be the inversion center and r be the inversion radius. i A point p in ′ j ′∈P i ', calculate point p j The inversion point p' j "Make c i p j ′·c i p j "=r 2 And called p j ′ is p j The corresponding point of P; i The point set P is obtained by inverting the execution point of all points. i A set of inversion points P' i ", Calculate the inversion point set P i Find the convex hull of the tree point cloud P, and then obtain the convex hull of each point in the tree point cloud P. i Find the corresponding points in the diagram and construct a polygon in that order, then calculate the centroid c of the polygon. i And as a tree point cloud block P i The tree skeleton points are calculated by performing the above calculations on all tree point cloud blocks to obtain the tree skeleton points of all tree point cloud blocks.
[0018] Preferably, step 4, tree skeleton point connection and classification, includes:
[0019] Step 401, Tree point cloud block P i It is a subset of the tree point cloud P, therefore the tree point cloud block P can be calculated based on the traversal relationship between the points in the tree point cloud P. i Tree point cloud P j By determining the sequential traversal relationship, the sequential connection relationship between tree skeleton points can be obtained, including: for tree point cloud blocks P i The number of preorder nodes of the midpoint is counted and sorted in descending order. If the tree point cloud block P iThe preorder node of the midpoint belongs to the tree point cloud block P j Arrange the numbers in descending order first, that is, the tree point cloud block P i The preorder node of the midpoint belongs to the tree point cloud block P j If the quantity is the largest, then the tree point cloud block P i The preorder tree point cloud block is P j Correspondingly, the tree point cloud block P i The tree skeleton point c i ′s preorder node is the tree point cloud block P j The tree skeleton point c j ′, that is, c i ′ is c j ′s child node, c j ′ is c i ′s parent node; perform the above operations on each tree point cloud block one by one to obtain the sequential connection relationship between tree skeleton points;
[0020] Step 402, according to the sequential connection relationship between tree skeleton points, define the weight of each tree skeleton point; for a tree skeleton point, its weight is equal to the sum of the quantities of all its child nodes and the sum of the weights of all its child nodes; if a tree skeleton point has no child nodes, its weight is 0;
[0021] Step 403, classify the tree skeleton points according to the weights of the tree skeleton points; including: the tree skeleton point with the largest weight is the first node of the tree trunk skeleton point; for a skeleton point, if it has only one child node, the child node and the parent node belong to the same category, if it has multiple child nodes, the child node with the largest weight and its parent node belong to the same category, and the categories of other child nodes are the next level of their parent node's category. If the weights of two child nodes are equal and they are both the child nodes with the largest weight, then calculate the included angle formed by the three points of the child node, the parent node, and the parent node's parent node respectively. The category of the child node with the largest included angle is the same as its parent node's category, and the categories of other child nodes are the next level of their parent node's category; through the above process, the classification of each tree skeleton point is completed.
[0022] Preferably, step 5, tree skeleton optimization, includes:
[0023] Step 501, obtain the growth direction of the tree trunk at the tree trunk skeleton point, including: for a tree trunk skeleton point c i , continuously take m parent nodes of c i , the value range of m is 3 < m < 30 / h, that is, the parent node of c i is the first one, c iThe parent node of the parent node is the second one, and so on. The principal component analysis method is used to calculate the eigenvector corresponding to the maximum eigenvalue of these m nodes, and the Z-axis direction of this eigenvector is taken as the positive direction to serve as the trunk c i The growth direction at;
[0024] Step 502, optimization of the trunk skeleton points, including: For a trunk skeleton point c i , take the parent node of c i and the child node of c i (and it is required that this child node is also a trunk skeleton point), calculate the angular value of the angle formed by these three points. If it is not less than the preset value then execute step 503; if it is less than the preset value then perform position optimization on the trunk skeleton point c i . The optimization execution process is as follows: Calculate the growth direction of the trunk at the trunk skeleton point c i , and then take the parent node of c i as the starting node, and along the trunk growth direction, take a point whose distance from the parent node of c i is h as the optimized position of c i ; Step 502 starts from the 4th trunk skeleton point and is executed one by one in the descending order of the height of the trunk skeleton points;
[0025] Step 503, position optimization at the junction of the first-level branch and the trunk, including: the first skeleton point, the second skeleton point until the mth skeleton point of the first-level branch, and the value range of m is 3 < m < 30 / h. The principal component analysis method is used to calculate the eigenvector corresponding to the maximum eigenvalue of these m nodes as the growth direction of the branch, and the Z-axis direction is positive; Calculate the growth direction of the trunk at the trunk skeleton point at the junction of the first-level branch and the trunk, and find a point along the positive or negative direction of this growth direction so that the included angle between the direction vector formed by the difference between the first skeleton point of the first-level branch and this point and the growth direction of the branch is the smallest, then this point is the best combination position of the first-level branch and the trunk.
[0026] Preferably, step 6, extraction of tree structure parameters, includes:
[0027] Step 601, according to the categories of the tree skeleton points, the trunk skeleton and the branch skeletons of the tree skeleton can be extracted respectively. The branch skeletons include the first-level branch skeleton, the second-level branch skeleton and the third-level branch skeleton;
[0028] Step 602, extract the trunk skeleton height, that is, the difference between the maximum value and the minimum value of the trunk skeleton height;
[0029] Step 603, according to the extracted branch skeletons of different categories of the tree, calculate the branch length;
[0030] Step 604, obtain the branch growth height;
[0031] Step 605, obtain the number of branches, including: traversing and counting the first-level branches, second-level branches and third-level branches in the tree skeleton to obtain the number of branches;
[0032] Step 606: Obtain the angle between the child branch and its parent branch;
[0033] Step 607: The growth direction of the trunk or branches at a specific skeletal point.
[0034] The beneficial effects of this invention are:
[0035] This invention uses tree point clouds obtained by a terrestrial 3D laser scanner as data to construct a tree skeleton that accurately reflects the geometric shape and structural features of trees, and extracts structural parameters from the skeleton. This invention can accurately construct a tree skeleton that reflects the geometric topology and constituent elements (trunk, primary branches, secondary branches, etc.) of trees, and can extract structural parameters from it. This provides technical support for accurately constructing refined tree skeletons and extracting structural parameters, provides data for studying tree growth status, growth patterns, and growth trends, and provides technical support for precise tree measurement and forest management.
[0036] Other features and advantages of the invention will be set forth in the description which follows, and will be apparent in part from the description, or may be learned by practicing the invention. The objects and other advantages of the invention may be realized and obtained by means of the structures particularly pointed out in the written description, claims, and drawings. Attached Figure Description
[0037] Figure 1 This is a schematic diagram of the method flow of the present invention.
[0038] Figure 2 This is a schematic diagram of the point inversion method used by the present invention to calculate the tree skeleton points of a tree point cloud block.
[0039] Figure 3 This is a schematic diagram illustrating the calculation of tree skeleton point weights and tree skeleton point categories in this invention.
[0040] Figure 4 This is a schematic diagram of a partial tree skeleton before the tree skeleton optimization of this invention.
[0041] Figure 5 This is a schematic diagram of a local tree skeleton after the tree skeleton optimization of the present invention.
[0042] Figure 6 This is a schematic diagram of tree point cloud and tree skeleton according to a specific embodiment of the present invention. Detailed Implementation
[0043] The present invention will be further described below with reference to the accompanying drawings and embodiments.
[0044] like Figure 1 As shown, this invention provides a method for constructing a tree skeleton and extracting tree structure parameters based on point clouds, comprising the following steps:
[0045] Step 1: Remove noise points and obtain the traversal relationships between points;
[0046] Step 2: Generate tree point cloud blocks;
[0047] Step 3: Generate tree skeleton points;
[0048] Step 4: Connecting and classifying tree skeleton points;
[0049] Step 5, Optimize the tree skeleton;
[0050] Step 6: Extracting tree structure parameters.
[0051] In one embodiment, step 1, removing noise points and obtaining the traversal relationship between points, includes:
[0052] Step 101, removing noise points: Using a tree point cloud P0 obtained from a terrestrial 3D laser scanner as input data, and with a set neighborhood radius eps = 1 cm and the minimum number of data points in the neighborhood radius minPts = 6 as parameters, the density-based clustering algorithm DBSCAN (Density-Based Spatial Clustering of Applications with Noise) is executed on the tree point cloud. This yields several clusters with different point counts. Appropriate parameter values eps and minPts are selected such that the cluster with the most points includes η = 80% of the data points in the tree point cloud. The cluster with the most points is selected as the tree point cloud P from which the tree skeleton is extracted; the other clusters are considered noise points and are removed. The parameter values eps and minPts can be preset.
[0053] Step 102, obtaining the traversal relationship between points: Taking the tree point cloud P as input, the DBSCAN algorithm is executed again with parameters eps = 1cm and minPts = 6. The process is as follows: Starting from the point with the smallest Z-axis value in the tree point cloud P, the points are traversed gradually in ascending order of Z-value, and the order of point traversal is calculated. Specifically, for a point p... i (x i ,y i ,z i ), point p j Located at point p i Within the neighborhood of eps, and pj If the preorder node is not labeled, then label p. j The preorder node is p i If point p i If point p is the first point to be traversed, then point p... i The preorder node is itself. Since the tree point cloud P is a complete cluster obtained in the previous step, each point in the tree point cloud P has a preorder node, which completes the calculation of the traversal relationship between points in the tree point cloud P.
[0054] In one embodiment, step 2, generating tree point cloud blocks, includes:
[0055] In this embodiment, the height parameter h is set to 5cm. Based on the set height parameter h = 5cm and the minimum value Z of the tree point cloud P on the Z-axis... min With the maximum value Z max Divide the tree point cloud P into The system is divided into three vertical segments, each with a height of h = 5 cm. Then, the DBSCAN clustering algorithm with parameters eps = 1 cm and minPts = 6 is applied to each vertical segment to obtain a number of clusters. Each cluster is a tree point cloud block, and all clusters of all vertical segments constitute all tree point cloud blocks.
[0056] In one embodiment, step 3, generating tree skeleton points, includes: for a tree point cloud block P in the k-th vertical segment... i Project it onto the plane Z=Z min +h*k(Z min It is the minimum value of the tree point cloud P on the Z-axis. We obtain a set of projection points P i ', calculate the projection point set P i The centroid c of the convex hull polygon i Construct a closed cubic Bezier curve interpolated at the convex hull point. The length of this closed curve divided by 2π is the radius *r* of the tree point cloud patch. Using the centroid as the inversion center and *r* as the inversion radius, for P... i A point p in ′ j ′∈P i ', calculate point p j The inversion point p' j "Make c i p j ′·c i p j "=r 2 And called p j ′ is p j The corresponding point of P. i The point set P is obtained by inverting the execution point of all points.i A set of inversion points P' i ", Calculate the inversion point set P i Find the convex hull of the tree point cloud P, and then obtain the convex hull of each point in the tree point cloud P. i Find the corresponding points in the diagram and construct a polygon in that order, then calculate the centroid c of the polygon. i And as a tree point cloud block P i The tree skeleton points. One tree point cloud block corresponds to one tree skeleton point. The above calculation is performed on all tree point cloud blocks to obtain the tree skeleton points for all tree point cloud blocks. For example... Figure 2 As shown, Figure 2 It is a tree point cloud block (black dots), a polygon (a closed shape represented by multiple black line segments) constructed from the corresponding points of the convex hull of its inversion point set, the inversion center point (black cross point), and the tree skeleton points (black rhombus points) of the tree point cloud block.
[0057] In one embodiment, step 4, connecting and classifying tree skeleton points, includes:
[0058] Step 401: Based on the traversal relationships between points in the tree point cloud P, the connection relationships between tree point cloud blocks containing tree skeleton points can be calculated. For tree point cloud block P... i The number of preorder nodes of the midpoint is counted and sorted in descending order. If the tree point cloud block P i The preorder node of the midpoint belongs to the tree point cloud block P. j The first element, arranged in descending order of the number of elements, is the tree point cloud block P. i The preorder node of the midpoint belongs to the tree point cloud block P. j If the number of trees is the largest, then the tree point cloud block P i The preorder tree point cloud block is P j Correspondingly, the tree point cloud block P i Tree skeleton point c i The preorder node of ′ is the tree point cloud block P. j Tree skeleton point c j ′, i.e., c i ′ is c j The child node of ', c j ′ is c i The parent node of '. Perform the above operation on each tree point cloud block to obtain the connection relationship between the tree skeleton points.
[0059] Step 402: Define the weight of each tree skeleton point based on the connection relationships between the tree skeleton points. For a tree skeleton point, its weight is equal to the sum of the number of all its child nodes and the sum of the weights of all its child nodes; if a tree skeleton point has no child nodes, its weight is 0.
[0060] Figure 3In the diagram, the value next to each skeleton point represents the weight of that skeleton point. Point F has no child nodes, so its weight is 0; point E has one child node F, and its weight is the sum of the number of child nodes 1 and the weight of its child node F, which is 1; point A has 3 child nodes, and its weight is the sum of the number of child nodes 3 and the weights of these 3 child nodes, which is 3+3+7+2=15.
[0061] Step 403: Based on the weights of the tree skeleton points, calculate the category of each tree skeleton point (trunk skeleton point, first-level branch skeleton point, second-level branch skeleton point, etc.). The definition method is as follows: The tree skeleton point with the highest weight is the first node of the tree trunk skeleton point; for a skeleton point, if it has only one child node, the child node and the parent node belong to the same category; if it has multiple child nodes, the child node with the highest weight belongs to the same category as its parent node, and the categories of other child nodes are the next level of their parent node's category (e.g., the next level of the trunk skeleton point is the first-level branch skeleton point, the next level of the first-level branch skeleton point is the second-level branch skeleton point, and so on). If two child nodes have equal weights and are both the child nodes with the highest weight, calculate the angle formed by the child node, the parent node, and the parent node's parent node. The category of the child node with the largest angle is the same as the category of its parent node, and the categories of other child nodes are all the next level of their parent node's category. After the above process, the classification of each tree skeleton point is completed. Figure 3 In the diagram, points A, B, and C belong to the trunk skeleton points, and points D, E, and F belong to the first-level branch skeleton points. The parent node of D is A.
[0062] In one embodiment, step 5, tree skeleton optimization, includes:
[0063] Step 501, obtain the growth direction of the tree trunk at the tree trunk skeleton point: for a tree trunk skeleton point c i Take m = 5 consecutive c i The parent node, i.e., c i The parent node is the first one, c i The parent node of the first node is the second one, ..., and so on. Principal component analysis is used to calculate the eigenvector corresponding to the largest eigenvalue of these m=5 nodes, and this eigenvector (with the Z-axis direction being positive) is used as the tree trunk c. i The direction of growth at that location.
[0064] Step 502, Optimization of Tree Trunk Skeleton Points: The tree trunk will not have significant bending within a short length range (e.g., no more than 30 cm), meaning the growth direction of the trunk will not change drastically within this range. During tree point cloud generation, tree trunk point clouds and branch point clouds may become mixed together, especially at the junction of first-level branches and the trunk. This can lead to deviations in the calculated tree trunk skeleton points and also cause discrepancies between the tree trunk skeleton and the actual tree trunk. Therefore, optimization of the tree trunk skeleton points is necessary. The optimization judgment process is as follows: For a tree trunk skeleton point c... i If its parent node, c i These three points, all child nodes of the same tree trunk category, form an angle value less than [value missing]. Then the tree trunk skeleton point c i Position optimization is required. The optimization process is as follows: Calculate the position of the tree trunk at point c on the tree trunk skeleton. i The growth direction at that point, and then with c i The parent node is the starting node, and its value is taken along the growth direction of the tree trunk, intersecting with c. i The point whose parent node is at a distance of h is taken as c. i Optimized position. Step 502 starts from the 4th trunk skeleton point and executes the above optimization judgment process one by one. If position optimization is required, the optimization execution process is executed.
[0065] Step 503, Optimization of the position of the primary branch and trunk connection: The above optimization process can ensure that the trunk skeleton points do not deviate too much in the trunk growth direction, but it cannot ensure that the connection point of the primary branch on the trunk skeleton is close to the actual connection point. Therefore, it is necessary to optimize the position of the primary branch and trunk connection. The optimization process is as follows: For the first skeleton point, the second skeleton point, up to the m=5th skeleton point of the primary branch, the principal component analysis method is used to calculate the eigenvector corresponding to the largest eigenvalue of these m=5 nodes as the growth direction of the branch (Z-axis direction is positive); calculate the growth direction of the trunk at the trunk skeleton point at the connection position of the primary branch and trunk, and find a point along the positive or negative direction of this growth direction such that the angle between the direction vector formed by the difference between the first skeleton point of the primary branch and this point and the growth direction of the branch is minimized. This point is the optimal connection position of the primary branch and trunk.
[0066] Figure 4 and Figure 5 These are before and after images showing the tree skeleton optimization. Figure 4 As can be seen, the trunk skeleton points 164, 167 and 169 do not conform to the true geometric characteristics of the trunk, and the connection points between the primary branches and the trunk also do not match the actual situation. Figure 5 The optimized results greatly reduce the discrepancy between the above-mentioned tree trunk skeleton points 164, 167, and 169 and the actual situation.
[0067] Figure 6 This is a rendering of a specific embodiment. Figure 6 (a) is a tree dot cloud. Figure 6 (b) is the tree point cloud skeleton constructed from the tree point cloud.
[0068] In one embodiment, step 6, tree structure parameter extraction, includes:
[0069] Step 601: Based on the category of tree skeleton points, the trunk skeleton and branch skeleton of the tree skeleton can be extracted separately. The branch skeleton includes primary branch skeleton, secondary branch skeleton, and tertiary branch skeleton. Extracting the hierarchical skeleton of branches, such as the trunk skeleton, primary branch skeleton, and secondary branch skeleton: Based on the category of tree skeleton points, the skeletons of different categories of branches, such as the trunk skeleton, primary branch skeleton, secondary branch skeleton, and tertiary branch skeleton, can be extracted separately.
[0070] Step 602: Extract the trunk skeleton height, which is the difference between the maximum and minimum values of the trunk skeleton height.
[0071] Step 603, Obtaining Branch Length: Based on the extraction of branch skeletons for different categories of trees, the method for calculating branch length is similar. The following description uses the calculation of the first-level branch skeleton network as an example; the calculation process for other types of branches will not be listed in detail. For a first-level branch skeleton of a tree, the distance between every two adjacent first-level branch skeleton points is calculated one by one, following the order of their weight values from largest to smallest. The sum of the distances of all skeleton points is the length of that first-level branch.
[0072] Step 604, obtain the branch growth height: The height at which the branch connects with its parent branch (trunk or branch) is the branch growth height. The height of the first-level branch, the height of the second-level branch, etc. can be extracted.
[0073] Step 605, Obtain the number of branches: Traverse the tree skeleton and count the number of first-level branches. The number of second-level and third-level branches is obtained similarly. Similarly, the number of second-level branches attached to a first-level branch, the number of third-level branches attached to a second-level branch, and so on can be calculated.
[0074] Step 606: Obtain the angle between a child branch and its parent branch. Child branches typically grow on their parent branches at a certain angle, such as a primary branch attaching to the trunk at a certain angle. The angle between a child branch and its parent branch includes the angle between the primary branch and the trunk, the angle between the secondary branch and the primary branch, and the angle between the tertiary branch and the secondary branch. The calculation methods for these angles are similar. The following example uses the angle between a primary branch and the trunk it attaches to; the calculation process for other types of angles will not be detailed. Take the first skeleton point of the primary branch. The parent node of this skeleton point is the trunk skeleton point, such as... Figure 2In the first-level branch DEF, D is the first skeletal point of the branch, and A is its parent node, which is also the skeletal point of the trunk and the junction point between the branch and the trunk. Based on the junction point, take the first k = 2 sibling nodes of the junction point (parent node and parent node's parent node), and then take the last k = 2 sibling child nodes of the junction point (child node and child node's child node). These two sibling nodes and the junction point together form 5 points. Use principal component analysis to calculate the eigenvector corresponding to the largest eigenvalue of these 5 points as the growth direction of the trunk at the junction point. Take the first 4 nodes of the junction point and the first-level branch (if there are fewer than 4, take all of them) to calculate the growth direction of the branch. The angle between these two growth directions is the angle between the branch and the trunk it is attached to.
[0075] Step 607, the growth direction of the trunk or branches at a specific skeletal point: for a skeletal point c of the trunk i (or a skeletal point c of a branch) i Take the parent and child nodes of the current node, ensuring they belong to the same category as the current node. Use principal component analysis to calculate the eigenvector corresponding to the largest eigenvalue of these three nodes. Use this eigenvector (positive Z-axis direction) as the trunk (or branch) at the skeleton point c. i The direction of growth at that location.
[0076] This invention uses tree point clouds obtained by a terrestrial 3D laser scanner as data. The method of this invention can construct a tree skeleton that accurately reflects the geometric shape and structural features of trees. Based on the skeleton, the structural parameters of the trees can be extracted. This provides technical support for accurately constructing a refined tree skeleton and extracting tree structural parameters, provides data basis for studying the growth status, growth patterns and growth trends of trees, and provides technical support for precise tree measurement and precise forest management.
[0077] It should be noted that the terms "comprising," "including," or any other variations thereof are intended to cover non-exclusive inclusion, such that a process, method, article, or apparatus that comprises a list of elements includes not only those elements but also other elements not expressly listed, or elements inherent to such a process, method, article, or apparatus. Without further limitation, an element defined by the phrase "comprising one..." does not exclude the presence of other identical elements in the process, method, article, or apparatus that includes said element.
[0078] Although embodiments of the invention have been shown and described, it will be understood by those skilled in the art that various changes, modifications, substitutions and alterations can be made to these embodiments without departing from the principles and spirit of the invention, the scope of which is defined by the appended claims and their equivalents.
Claims
1. A method for constructing a tree skeleton and extracting tree structure parameters based on point clouds, characterized in that: Includes the following steps: Step 1: Remove noise points and obtain the traversal relationships between points; Step 2: Generate tree point cloud blocks; Step 3: Generate tree skeleton points; Step 4: Connecting and classifying tree skeleton points; Step 5, Optimize the tree skeleton; Step 6, Extraction of tree structure parameters; Step 6, tree structure parameter extraction, includes: Step 601: Based on the category of tree skeleton points, the trunk skeleton and branch skeleton of the tree skeleton can be extracted respectively. The branch skeleton includes the primary branch skeleton, the secondary branch skeleton and the tertiary branch skeleton. Step 602: Extract the trunk skeleton height, which is the difference between the maximum and minimum values of the trunk skeleton height; Step 603: Calculate the branch length based on the extracted branch skeletons of different tree categories; Step 604: Obtain the tree branch growth height; Step 605, obtain the number of branches, including: traversing and counting the first-level branches, second-level branches and third-level branches in the tree skeleton to obtain the number of branches; Step 606: Obtain the angle between the child branch and its parent branch; Step 607: The growth direction of the trunk or branches at a specific skeletal point.
2. The method for constructing a tree skeleton and extracting tree structure parameters based on point clouds according to claim 1, characterized in that: Step 1, removing noise points and obtaining the traversal relationship between points, includes: Step 101, remove noise points, including: tree point cloud obtained by scanning a tree with a terrestrial 3D laser scanner. For input data, use the selected neighborhood distance radius. Distance radius from neighboring regions Minimum number of midpoints Using parameters, the density-based clustering algorithm DBSCAN is applied to the tree point cloud to obtain multiple clusters with different numbers of points; parameters and The value should be chosen such that the cluster with the most points among these clusters covers more than 80% of the tree's height. In this case, the cluster with the most points is the tree point cloud from which the tree skeleton is extracted. All other clusters were identified as noise points and were removed. Step 102, obtain the traversal relationship between points, including: using trees as points in the cloud. As input, again using the parameter neighborhood distance radius and The DBSCAN algorithm is executed, and the process is as follows: from tree point clouds... The process begins by traversing the points starting with the point with the smallest Z-axis value. Points are then traversed one by one in ascending order of their Z-values, and the order of traversal is calculated. Specifically, for a given point… If point Located at point neighborhood distance radius Within the range, and If the preorder node is not labeled, then label it. The preorder node is If point If it is the first point to start traversal, then the point... The preceding node is itself.
3. The method for constructing a tree skeleton and extracting tree structure parameters based on point clouds according to claim 2, characterized in that: Step 2, generating tree point cloud blocks, includes: According to the preset height parameters Clouds above trees Minimum value on the Z-axis With the maximum value Trees dotted with clouds Divided into There are 1 vertical segment, and the height of each vertical segment is 1. Then, for each vertical segment, execute the parameter... and The DBSCAN clustering algorithm obtains several clusters in each vertical segment, and each cluster is a tree point cloud patch. All vertically segmented clusters constitute all tree point cloud patches, and the union of all tree point cloud patches is the tree point cloud. .
4. The method for constructing a tree skeleton and extracting tree structure parameters based on point clouds according to claim 3, characterized in that: Step 3, generating tree skeleton points, includes: for the first... A tree point cloud block in a vertical segment , ,Will Projected onto a plane Obtain a set of projection points , Trees dotting the clouds Find the minimum value on the Z-axis and calculate the set of projection points. The centroid of the convex hull polygon Construct a closed cubic Bezier curve interpolated at the convex hull point, and divide the length of this closed curve by... That is, to obtain the radius of the tree point cloud. With the center of mass As the inversion center, For the inversion radius, One point Calculation points inversion point Make , yes Corresponding points; for All execution points are used to invert and calculate the point set. A set of inversion points Calculate the inversion point set Find the convex hull, and then obtain the tree point cloud block for each point in the convex hull. Find the corresponding points in the diagram and construct a polygon in that order, then calculate the centroid of the polygon. And as tree cloud blocks The tree skeleton points are calculated by performing the above calculations on all tree point cloud blocks to obtain the tree skeleton points of all tree point cloud blocks.
5. The method for constructing a tree skeleton and extracting tree structure parameters based on point clouds according to claim 4, characterized in that: Step 4, tree skeleton point connection and classification, includes: Step 401, Tree Cloud Blocks Trees dotting the clouds A subset of, based on tree cloud Calculating tree point cloud blocks based on traversal relationships between midpoints Trees and cloud blocks By determining the sequential traversal relationship, the sequential connection relationship between tree skeleton points can be obtained, including: the connection relationship between tree point cloud blocks. The number of preorder nodes of the midpoint is counted and sorted in descending order. If the tree point cloud is... The preorder node of the midpoint belongs to the tree point cloud block. The first one is the tree cloud block, arranged in descending order of the number of elements. The preorder node of the midpoint belongs to the tree point cloud block. The largest number of trees are the cloud blocks. The preorder tree point cloud is Correspondingly, tree point cloud blocks Tree skeleton points The prior node is a tree point cloud block. Tree skeleton points ,Right now yes child nodes, yes The parent node; perform the above operation on each tree point cloud block to obtain the sequential connection relationship between tree skeleton points; Step 402: Define the weight of each tree skeleton point according to the sequential connection relationship between the tree skeleton points; for a tree skeleton point, its weight is equal to the sum of the number of all its child nodes and the sum of the weights of all its child nodes; if a tree skeleton point has no child nodes, its weight is 0. Step 403: Classify the tree skeleton points according to their weights. This includes: the tree skeleton point with the highest weight is the first node of the tree trunk skeleton points; for a skeleton point, if it has only one child node, the child node and the parent node belong to the same category; if it has multiple child nodes, the child node with the highest weight belongs to the same category as its parent node, and the categories of other child nodes are the next level of their parent node's category; if two child nodes have equal weights and are both the child nodes with the highest weights, calculate the angle formed by the child node, the parent node, and the parent node's parent node, respectively. The category of the child node with the largest angle is the same as the category of its parent node, and the categories of other child nodes are the next level of their parent node's category; through the above process, the classification of each tree skeleton point is completed.
6. The method for constructing a tree skeleton and extracting tree structure parameters based on point clouds according to claim 5, characterized in that: Step 5, tree skeleton optimization, includes: Step 501, obtain the growth direction of the tree trunk at the tree trunk skeleton point, including: for a tree trunk skeleton point , take continuously indivual The parent node, The range of values is ,Right now The parent node is the first one. The parent node of the first node is the second parent node, and so on. Principal component analysis is used to calculate this... The eigenvector corresponding to the largest eigenvalue of each node, with the Z-axis direction of this eigenvector as positive, is used as the tree trunk. The direction of growth at that location; Step 502, optimization of the trunk skeleton point, includes: for a trunk skeleton point ,Pick parent node and The child node of the tree trunk is required to be a node that is also a node in the tree trunk skeleton. Calculate the angle formed by these three points. If the angle is not less than a preset value... If the value is less than the preset value, then proceed to step 503; Then for the tree trunk skeleton points Position optimization is performed, and the optimization process is as follows: Calculate the position of the tree trunk at the tree trunk skeleton point. The growth direction at that point, and then with The parent node is the starting node, and its value is taken along the growth direction of the tree trunk. The distance to the parent node is The point as Optimized position; Step 502 starts from the 4th trunk skeleton point and executes them one by one in descending order of the height of the trunk skeleton points; Step 503, optimization of the position of the junction between the primary branch and the trunk, including: the first skeletal point, the second skeletal point, and so on up to the first skeletal point of the primary branch. One skeleton point The range of values is Principal component analysis was used to calculate this. The eigenvector corresponding to the largest eigenvalue of each node is used as the growth direction of the branch, with the Z-axis direction being positive. The growth direction of the trunk at the trunk skeleton point where the first-level branch and the trunk meet is calculated. A point is found along the positive or negative direction of this growth direction such that the angle between the direction vector formed by the difference between the first skeleton point of the first-level branch and this point and the growth direction of the branch is minimized. This point is the optimal meeting point between the first-level branch and the trunk.