A method for mapping at least one tree in an area based on tree trunk detection
The method enhances tree mapping by using 3D point cloud data and advanced segmentation techniques for accurate and real-time tree trunk detection, addressing challenges of adaptability and processing complexity in diverse environments.
Patent Information
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- Filing Date
- 2025-09-26
- Publication Date
- 2026-04-02
AI Technical Summary
Existing automated tree mapping systems face challenges in achieving robust accuracy, adaptability to different environments, and real-time processing capabilities, particularly in distinguishing tree trunks from other objects and navigating through diverse layouts with varying tree heights and obstructions.
A method involving 3D point cloud data capture, cylindrical segmentation, multiple 2D costmap extraction, and bounding box fusion to identify and validate tree trunks, using adaptive normal distance weights and thresholds, and deep learning models for enhanced accuracy and real-time detection.
Enables precise and adaptable tree trunk detection in diverse environments, facilitating real-time mapping and navigation, even in complex layouts with varying tree sizes and obstructions.
Smart Images

Figure MY2025050063_02042026_PF_FP_ABST
Abstract
Description
[0001] A METHOD FOR MAPPING AT LEAST ONE TREE IN AN AREA BASED ON TREE TRUNK DETECTION
[0002] FIELD OF INVENTION
[0003] The present invention relates to a system and a method for mapping at least one tree in an area based on tree trunk detection.
[0004] BACKGROUND OF THE INVENTION
[0005] Automated tree mapping is implemented in a variety of contexts and locations, including forestry management, urban planning and management, and agriculture management. In forestry management, the automated tree mapping is used to monitor tree populations, assess timber resources, and manage forest health, and contribute in biodiversity research and monitoring deforestation. In urban planning and management, the automated tree mapping helps track urban or street tree inventories. In agriculture management, the automated tree mapping is used to monitor tree health, manage pests and optimise crop yield, particularly in large-scale plantations of crops such as oil palm, rubber, vineyards and orchards. Additionally, the automated tree mapping may also be implemented in navigating unmanned ground vehicles or robots through forests or plantations to autonomously avoid obstacles in their path.
[0006] In automated tree mapping, the parts of the trees such as their canopies and tree trunks are identified and detected to determine the presence of a tree in an area. Tree trunks are often used in the detection process due to their distinct structure, which can aid in identifying and mapping trees more effectively.
[0007] An example of an automated tree mapping based on tree trunk detection is provided by a Chinese Patent Publication No. CN116258857A which discloses an outdoor tree-oriented laser point cloud segmentation and extraction method. The segmentation and extraction method comprises the following steps: carrying out point cloud data preprocessing by utilising point cloud down-sampling and straight- through filtering to realise the acquisition of ground point cloud data and point cloud slices; performing European clustering segmentation, a point cloud completion algorithm, cylinder fitting and intersection inspection on the point cloud slices to realise trunk identification and extraction; and according to a trunk extraction result, realising accurate tree segmentation through a space cylinder filtering algorithm, a region growth segmentation algorithm and a minimum cut adhesion tree segmentation algorithm.
[0008] Another example of an automated tree mapping based on tree trunk detection is provided by a Chinese Patent Publication No. CN1 16129391 A which discloses a method and system for extracting street tree from vehicle-mounted laser point cloud. This method comprises the following steps: acquiring vehicle-mounted laser point cloud data and filtering the vehicle-mounted laser point cloud data to separate ground point cloud data from non-ground point cloud data; performing gridding on non-ground point cloud data by adopting a projection weighing method, performing fitting on point cloud data in grids forming a cylinder, and extracting point cloud data of the rod; dividing the non-ground point cloud data into three-dimensional grids, counting the number of grids with laser points in the grids, and extracting crown point cloud data when the number of the grids is greater than a set threshold value; and respectively segmenting the rod point cloud data and the crown point cloud data, and obtaining single street tree point cloud data in combination with the relative position relationship between the trunk and the crown.
[0009] In yet another example of an automated tree mapping based on tree trunk detection is provided by a Chinese Patent Publication No. CN1 16129391 A CN1 1791 1868A which discloses a forest land trunk extraction method and device and a model training method. The forest land trunk extraction method can automatically learn the difference between a trunk point cloud and a non-trunk point cloud through a trunk point cloud segmentation model based on deep learning. Moreover, the method automatically detects whether the point clouds are dense trunk point clouds or not. For the dense trunk point clouds, false detection that adjacent trunks are recognised as single trunks in an existing scheme can be corrected through a pre-trained adjacent trunk recognition model, missing detection is effectively reduced, and it is ensured that even in dense trunk areas, the point clouds can be accurately recognised. The point cloud of each trunk can also be effectively and independently identified and extracted.
[0010] There are several challenges associated with the existing automated tree mapping based on tree trunk detection that need to be addressed. These challenges include achieving robust accuracy, adaptability to different environments and realtime processing capabilities.
[0011] For robust accuracy, the automated tree mapping must be able to consistently and precisely identify and locate tree trunks while distinguishing them from other objects in an area. Achieving high accuracy is critical to avoid misidentification of trees within the area. The variability in tree sizes, densities, and growth patterns, combined with obstructions such as fronds and bushes, further complicate the detection of tree trunks and potentially affect the robustness of the tree trunk detection.
[0012] For adaptability to different environments, the automated tree mapping must be capable of detecting tree trunks across various environments and layouts. For instance, plantation sites may vary in their layouts, ranging from structured to unstructured layouts, and they often present environmental complexities such as varying tree heights, dense undergrowth, open fields and fallen trees. These factors can obscure or complicate the detection of tree trunks. Therefore, the automated tree mapping must be adaptable to these diverse environments and layouts to accurately recognise trees based on tree trunk detection.
[0013] For real-time processing capabilities, certain applications of the automated tree mapping require the ability to detect tree trunks instantaneously for timely decision-making and processing, especially in navigating unmanned ground vehicles or robots. However, the vast amount of data required and the complexity of the techniques employed in processing the tree trunk detection can be computationally intensive, making real-time capabilities challenging in tree trunk detection.
[0014] Therefore, there is a need to provide a method for mapping one or more trees in an area based on tree trunk detection that addresses the above-mentioned challenges.
[0015] SUMMARY OF INVENTION
[0016] The present invention provides a method (1000) for mapping at least one tree in an area based on tree trunk detection. The method (1000) comprises the steps of capturing a three-dimensional or 3D point cloud data by a sensor acquisition module (110), wherein the 3D point cloud data is a collection of data points in a three- dimensional space; and performing a cylindrical segmentation on the 3D point cloud data to identify at least one cylindrical segment, wherein an upsampled 3D point cloud dataset is obtained from performing the cylindrical segmentation. The method (1000) is characterised in that the method (1000) further includes the steps of performing a multiple two-dimensional or 2D costmap extraction on the 3D point cloud data to identify at least one connected component segment in a heatmap, wherein the multiple 2D costmap extraction is performed simultaneously with the cylindrical segmentation; performing a bounding box fusion to detect and validate at least one tree trunk based on the at least one cylindrical segment and the at least one connected component segment; and recognising each of the at least one tree trunk as a tree at its corresponding coordinates.
[0017] Preferably, the method (1000) includes the step of cropping the 3D point cloud data to define a region of interest within the 3D point cloud data prior to performing the cylindrical segmentation and multiple 2D costmap extraction.
[0018] After recognising each of the at least one tree trunk as a tree at its corresponding coordinates, the method (1000) preferably further includes the step of visualizing and displaying the mapping of the at least one tree in the area.
[0019] After recognising each of the at least one tree trunk as a tree at its corresponding coordinates, the method (1000) preferably further includes the steps of assigning a unique identification to each of the at least one tree; generating a local 3D map, wherein the local 3D map visualises a bounding box for each of the at least one tree at its coordinates and according to its size; determining whether a partial 3D map is available, wherein the partial 3D map could either be another local 3D map of another portion of the area, or at least two stitched local 3D maps of other portions of the area; storing the generated local 3D map as the partial 3D map if there is no partial 3D map available; stitching the generated local 3D map to the partial 3D map and storing the stitched 3D map as the partial 3D map if there is a partial 3D map available; determining whether the partial 3D map has covered all portions of the area; and redefining the partial 3D map as a global 3D map and visualising and displaying the global 3D map at a visualisation module (130) if all portions of the area have been covered.
[0020] After recognising each of the at least one tree trunk as a tree at its corresponding coordinates, the method (1000) preferably further includes the step of identifying a path that avoids the at least one tree, wherein the at least one tree is mapped based on a bounding box for each of the at least one tree at its coordinates and according to its size; and guiding a ground vehicle through the identified path.
[0021] Preferably, the step of performing the cylindrical segmentation on the 3D point cloud data includes downsampling the 3D point cloud data; filtering the downsampled 3D point cloud dataset to obtain a first filtered 3D point cloud dataset; computing a surface normal estimate for each data point of the first filtered 3D point cloud dataset; computing an adaptive normal distance weight and an adaptive distance threshold of the first filtered 3D point cloud dataset; defines a set of parameter settings to define a cylinder model, wherein the set of parameter settings includes the adaptive normal distance weight, the adaptive distance threshold, an axis direction of the cylinder model, an angle tolerance of the cylinder model and a radius range of the cylinder model; identifying the at least one cylindrical segment in the first filtered 3D point cloud dataset based on the cylinder model; extracting and indexing a plurality of data points in the first filtered 3D point cloud dataset corresponding to the at least one cylindrical segment, wherein the plurality of data points corresponding to the at least one cylindrical segment is classified as inliers and the rest of the data points are classified as outliers; reclassifying certain data points classified as outliers to inliers until a total of data points classified as outliers is less than a predefined percentage of a total data points in the first filtered 3D point cloud dataset; and upsampling data points in the first filtered 3D point cloud dataset by adding one or more synthetic data points, wherein the upsampling of data points is targeted at the at least one cylindrical segment in the first filtered 3D point cloud dataset.
[0022] Preferably, the adaptive normal distance weight is computed based on a normal variance of the surface normal estimates, wherein the normal variance is obtained by averaging the squared magnitudes of each surface normal vector. Preferably, the adaptive distance threshold is computed as a percentage of an average distance of neighbouring points for each data point.
[0023] Preferably, the reclassifying of certain data points classified as outliers to inliers includes identifying other cylindrical segments from the data points classified as outliers based on the cylinder model; extracting and indexing at least one data point classified corresponding to the other cylindrical segments; and reclassifying the outliers of the other cylindrical segments as inliers.
[0024] Preferably, the upsampling of the first filtered 3D point cloud dataset is performed using a pre-trained deep learning model or Generative Adversarial Network model.
[0025] Preferably, the step of performing the multiple 2D costmap extraction on the 3D point cloud data includes filtering the 3D point cloud data to obtain a second filtered 3D point cloud dataset; slicing and extracting a predetermined number of horizontal layers from the second filtered 3D point cloud dataset, wherein each horizontal layer represents a cross-sectional slice of the second filtered 3D point cloud dataset at a particular z-axis value; initialising a 2D occupancy grid map; projecting each horizontal layer to one 2D occupancy grid map, wherein each cell has a cell value that is determined based on a presence of data points at its location within the respective horizontal layer, wherein each cell value represents an occupancy level of data points at a particular cell; generating a 2D costmap for each horizontal layer based on its respective 2D occupancy grid maps, wherein each cell has a cost value that is determined based on the occupancy levels; aggregating all 2D costmaps into the heatmap; defining a 2D bounding box for each of the at least one connected component segment within the heatmap; extracting a set of local coordinates corresponding to each 2D bounding box in the heatmap; and projecting the set of local coordinates corresponding to each 2D bounding box to a set of global coordinates, wherein the global coordinates can either be real-world coordinates or coordinates derived from incremental mapping based on local coordinates.
[0026] Preferably, the initialisation of the 2D occupancy grid map includes defining grid dimensions, grid resolution and cell values. Preferably, the aggregation of all 2D costmaps includes aligning all 2D costmaps to one another based on their corresponding local coordinates; summing the cost values from all 2D costmaps at corresponding cell locations to obtain a summed cost value at each cell location; and visualizing the summed cost values according to their cell locations in a heatmap, wherein each summed cost value of the cell is converted to a pixel value that corresponds to a specific colour value on a colour scale.
[0027] Preferably, the defining of the at least one 2D bounding box for the at least one connected component segment within the heatmap includes applying thresholding and morphological techniques to the heatmap to identify the at least one connected component segment within the heatmap; and outlining a 2D bounding box enclosing each of the at least one connected component segment.
[0028] Preferably, the step of performing the bounding box fusion includes applying 3D clustering on the data points of the upsampled 3D point cloud dataset to obtain a clustered 3D point cloud dataset; removing each cluster having a total number of data points equal to or less than a minimum number of data points, wherein the minimum number of data points is predetermined; determining a vertical component of each cluster in the clustered 3D point cloud dataset, wherein the vertical component is determined by computing a range of data points along the z-axis of a particular cluster; defining a 3D bounding box for each cluster having its vertical component exceeding a height threshold, wherein the height threshold is a predetermined value; extracting and projecting a set of local coordinates for each 3D bounding box in the clustered 3D point cloud dataset to a set of global coordinates corresponding to each 3D bounding box; computing an Intersection over Union or loU between each 3D bounding box in the clustered 3D point cloud dataset and each 2D bounding box of the heatmap; filtering out each 3D bounding box having a computed loU of less than a predefined limit to obtain a first set of remaining 3D bounding boxes; computing a size for each 3D bounding box of the first set of remaining 3D bounding boxes; identifying the 3D bounding box with a largest size amongst the first set of remaining 3D bounding boxes; filtering out smaller 3D bounding boxes to obtain a second set of remaining 3D bounding boxes; defining each 3D bounding box of the second set of remaining 3D bounding boxes as the at least one tree trunk; and extracting the set of global coordinates corresponding to each 3D bounding box defined as the at least one tree trunk. Preferably, the step of performing the bounding box fusion includes applying 3D clustering on the data points of the upsampled 3D point cloud dataset to obtain a clustered 3D point cloud dataset; removing each cluster having a total number of data points equal to or less than a minimum number of data points, wherein the minimum number of data points is predetermined; determining a vertical component of each cluster in the clustered 3D point cloud dataset, wherein the vertical component is determined by computing a range of data points along the z-axis of a particular cluster; defining a 3D bounding box for each cluster having its vertical component exceeding a height threshold, wherein the height threshold is a predetermined value; extracting and projecting a set of local coordinates for each 3D bounding box in the clustered 3D point cloud dataset to a set of global coordinates corresponding to each 3D bounding box; computing an Intersection over Union or loU between each 3D bounding box in the clustered 3D point cloud dataset and each 2D bounding box of the heatmap; filtering out each 3D bounding box having a computed loU of less than a predefined limit to obtain a first set of remaining 3D bounding boxes; defining each 3D bounding box of the first set of remaining 3D bounding boxes as the at least one tree trunk; and extracting the set of global coordinates corresponding to each 3D bounding box defined as the at least one tree trunk.
[0029] BRIEF DESCRIPTION OF THE DRAWINGS
[0030] The accompanying drawings, which are incorporated in and constitute a part of the specification, illustrate embodiments of the invention and, together with the description, serve to explain the principles of the invention.
[0031] FIG. 1 shows a block diagram of a system for mapping at least one tree in an area based on tree trunk detection (100) according to an embodiment of the present invention.
[0032] FIG. 2 shows an example of an area captured by a sensor acquisition module (110) of the system (100) of FIG. 1 .
[0033] FIG. 3 shows a flowchart of a method (1000) for mapping at least one tree in an area based on tree trunk detection according to an embodiment of the present invention. FIG. 4 shows an example of a 3D point cloud data captured by a sensor acquisition module (110) of the system (100) of FIG. 1.
[0034] FIG. 5 shows an example of a cropped 3D point cloud data.
[0035] FIG. 6 shows a flowchart of a continuation of the method (1000) of FIG. 3 in a tree tagging application.
[0036] FIG. 7 shows a flowchart of the sub-steps for performing a cylindrical segmentation of the method (1000) of FIG. 3.
[0037] FIG. 8 shows an example of a downsampled 3D point cloud dataset.
[0038] FIG. 9 shows an example of a first filtered 3D point cloud dataset.
[0039] FIG. 10 shows an example of an upsampled 3D point cloud dataset.
[0040] FIG. 11 shows a flowchart of the sub-steps for performing a multiple 2D costmap extraction of the method (1000) of FIG. 3.
[0041] FIGS. 12(a-c) show examples of multiple 2D costmaps generated for three horizontal layers at different z-axis values of a second filtered 3D point cloud dataset.
[0042] FIG. 13 shows an example of a heatmap based on aggregated 2D costmaps.
[0043] FIG. 14 shows an example of a heatmap with multiple 2D bounding boxes enclosing multiple connected component segments.
[0044] FIG. 15 shows a flowchart of the sub-steps for performing a bounding box fusion of the method (1000) of FIG. 3.
[0045] FIG. 16 shows an example of a clustered 3D point cloud dataset with multiple 3D bounding boxes enclosing multiple clusters.
[0046] FIG. 17 shows an example of a first set of remaining 3D bounding boxes. FIG. 18 shows an example of a second set of remaining 3D bounding boxes.
[0047] DESCRIPTION OF THE PREFERRED EMBODIMENT
[0048] A preferred embodiment of the present invention will be described herein below with reference to the accompanying drawings. In the following description, well-known functions or constructions are not described in detail since they would obscure the description with unnecessary detail.
[0049] Referring to FIG. 1 , there is shown a block diagram of a system for mapping at least one tree in an area based on tree trunk detection (100) according to an embodiment of the present invention. The system (100) maps one or more trees within the area by detecting one or more tree trunks based on 3-dimensional or 3D data of the area. The area where the system (100) maps the trees can either be an area where a plurality of trees is planted in a structured pattern, such as in a plantation, farms and the like; or an area where a plurality of trees are grown in an unstructured pattern such as in a forest. The system (100) is capable of detecting the tree trunk of the at least one tree, even with variations in tree sizes, densities, and growth patterns, or obstructed by fronds, bushes and the like. Moreover, the system (100) is also capable of detecting at least one tree trunk in real-time so as to recognise and map one or more trees within the area.
[0050] The system (100) essentially comprises a sensor acquisition module (110), a processing module (120) and a visualisation module (130). The system (100) may be integrated into a ground vehicle such as a tractor, a mobile robot or an unmanned ground vehicle to enable mobility, allowing it to cover the entire area for tree mapping based on tree trunk detection.
[0051] The sensor acquisition module (110) is configured for capturing 3-dimensional or 3D point cloud data. The sensor acquisition module (110) includes a Light Detection and Ranging, or LiDAR, sensor or a camera. For location and positioning measurements, the sensor acquisition module (110) may further include a Global Positioning System, GPS sensor and / or an Inertial Measurement Unit, IMU sensor. The sensor acquisition module (110) is connected to the processing module (120). The 3D point cloud data captured by the sensor acquisition module (110) correspond to its current field of view of the area. The area may refer to either the entire area or a specific portion of a larger area. An example is shown in FIG. 2 whereby at a first instance, the sensor acquisition module (110) of the system (100) captures the 3D point cloud data of only a first portion (11) of the area (10) from its location. Subsequently, the sensor acquisition module (110) of the system (100) moves to another location to capture the 3D point cloud data for another portion (12, 13, 14, 15 or 16) of the area (10). Each portion (11 to 16) of the area (10) is defined by the dotted lines shown in FIG. 2.
[0052] The processing module (120) is configured for recognising one or more trees by detecting their tree trunks based on the captured 3D point cloud data. The tree trunk detection is performed by the processing module (120) using cylindrical segmentation and multiple costmap extraction. Based on the tree trunk detection, the processing module (120) recognises and locates each tree in a generated 3D map by enclosing it within a bounding box. The processing module (120) can be one or more computing devices or components capable of processing the captured 3D point cloud data using cylindrical segmentation and multiple costmap extraction, such as an edge computational device, an embedded device or the like. The processing module (120) is connected to the sensor acquisition module (110) and the visualisation module (130).
[0053] The visualisation module (130) is configured for displaying a local or a global 3D maps with trees recognised by the processing module (120), enclosed in bounding boxes. The visualisation module (130) may also include an input module such as a touch panel, keyboard, mouse, or the like, wherein the input module is used to manipulate the generated 3D map. The visualisation module (130) could be any display component or device, such as a monitor, projector, virtual reality headset, tablet or the like that is capable of displaying the generated 3D map with the recognised trees. The visualisation module (130) is connected to the processing module (120) and it may be located either with the sensor acquisition module (110) and processing module (120) on the ground vehicle or at a remote location separated from the sensor acquisition (110) and processing modules (120).
[0054] Although it has been described that the system (100) comprises the sensor acquisition module (110), the processing module (120) and the visualisation module (130), it may be apparent to a person skilled in the art that the system (100) may further include any other necessary components or equipment for mapping the trees based on tree trunk detection such as a power supply, a memory module, a database, location sensor, and a communication module.
[0055] Referring to FIG. 3, there is shown a flowchart of a method (1000) for mapping at least one tree in an area based on tree trunk detection according to an embodiment of the present invention. The method (1000) maps at least one tree within the area by detecting its tree trunk, suitably using the system (100) as shown in FIG. 1. The area where the method (1000) maps the at least one tree can either be an area where one or more trees are planted in a structured pattern, such as in a plantation, farms and the like; or an area where one or more trees are grown in an unstructured pattern such as in a forest. Moreover, the area may refer to either the entire area or a specific portion of a larger area. The method (1000) is capable of detecting the tree trunk of the at least one tree, even with variations in tree sizes, densities, and growth patterns, or obstructed by fronds, bushes and the like. Moreover, the method (1000) is also capable of detecting the tree trunk of the at least one tree in real-time so as to recognise and map one or more trees within the area. The method (1000) is preferably implemented based on Simultaneous Localization and Mapping, SLAM principles which utilise three key components - sensor fusion, localisation and mapping.
[0056] The method (1000) begins with capturing a 3D point cloud data by the sensor acquisition module (110) as in step 1100. The 3D point cloud data refers to a collection of data points in a three-dimensional space, where each data point represents a location in the environment detected by the sensor acquisition module (110) using its LiDAR sensor or camera. Each data point of the 3D point cloud data is defined by its local x, y, and z coordinates, which correspond to its position relative to the sensor acquisition module (110) at the time of capture, and may also include additional information like intensity value. FIG. 4 shows an example of the 3D point cloud data captured by the sensor acquisition module (110). The 3D point cloud data captured by the sensor acquisition module (110) correspond to its current field of view of the area. The area may refer to either the entire area or a specific portion of a larger area. As an example based on FIG. 2 whereby each portion (11 to 16) of the area (10) is defined by the dotted lines, the sensor acquisition module (110) of the system (100) captures the 3D point cloud data of only a first portion (11 ) of the area (10) from its location at a first instance. Subsequently, the sensor acquisition module (110) of the system (100) moves to another location to capture the 3D point cloud data for another portion (12, 13, 14, 15 or 16) of the area (10).
[0057] The 3D point cloud data captured by the sensor acquisition module (110) is sent to the processing module (120). The processing module (120) then crops the 3D point cloud data to define a region of interest within the 3D point cloud data as in step 1200. The processing module (120) automatically crops the 3D point cloud data based on preset cropping parameters such as cropping position, dimensions, alignment and so on. The 3D point cloud data is cropped to reduce computational time for real-time detection of any tree trunks within the 3D point cloud data. FIG. 5 shows an example of the cropped 3D point cloud data based on the 3D point cloud data of FIG. 4. Although it has been described that the processing module (120) crops the 3D point cloud data, the step of cropping the 3D point cloud data may be omitted whereby the entire 3D point cloud data is defined as the region of interest.
[0058] Thereon, the processing module (120) simultaneously performs a cylindrical segmentation and a multiple two-dimensional or 2D costmap extraction on the cropped 3D point cloud data as in steps 1300 and 1400.
[0059] The processing module (120) performs the cylindrical segmentation to isolate one or more cylindrical segments from the rest of the 3D point cloud data so as to detect any tree trunks from the cropped 3D point cloud data. The cylindrical segmentation is performed based on an adaptive normal distance weight and an adaptive distance threshold. On one hand, the adaptive normal distance weight is automatically adjusted based on the quality and reliability of the normal vectors in the cropped 3D point cloud data. The adaptive normal distance weight is specifically adjusted based on the variance of the normal vectors across the cropped 3D point cloud data, which reflects the surface smoothness or noise levels. On the other hand, the adaptive distance threshold is adjusted based on the point cloud density, specifically by considering the average distance between neighbouring points in the cropped 3D point cloud data. Both the adaptive normal distance weight and the adaptive distance threshold enhance the accuracy of cylindrical segmentation by accounting for variations in point density or noise levels. The cylindrical segmentation will be further described in relation to FIG. 7. The processing module (120) performs the multiple 2D costmap extraction to identify any connected component segments within a heatmap generated from the cropped 3D point cloud data. The heatmap is an aggregation of multiple 2D costmaps at different z-axis points of the cropped 3D point cloud data that helps isolate any connected component segments corresponding to the vertical structures of tree trunks. Thus, the multiple 2D costmap extraction detects any tree trunks within the cropped 3D point cloud data based on the identification of any connected component segments within the heatmap. The multiple 2D costmap extraction will be further described in relation to FIG. 11.
[0060] In step 1500, the processing module (120) performs a bounding box fusion to validate the tree trunks within the cropped 3D point cloud data. Specifically, the bounding box fusion is performed to enclose each tree trunk detected from the cylindrical segmentation in a 3D bounding box and validate each tree trunk detected from the cylindrical segmentation with the tree trunks detected from the multiple 2D costmap extraction. The bounding box fusion further enhances the accuracy of the tree trunk detection with the validation of the tree trunks from two different techniques. The bounding box fusion will be further described in relation to FIG. 15. As a result of the bounding box fusion performed by the processing module (120), each tree trunk is detected with the 3D bounding box and a set of global coordinates for each bounding box are identified. The set of global coordinates for each bounding box is suitably specified in its x, y, and z positions in 3D space. Moreover, the global coordinates can either be real-world coordinates or coordinates derived from incremental mapping based on local coordinates, wherein the local coordinates are relative coordinates specific to the current field of view of the sensor acquisition module (110) when capturing the 3D point cloud data.
[0061] Based on each bounding box and its set of global coordinates, the processing module (120) is able to map any trees recognised based on their tree trunks within the portion of the area as captured by the sensor acquisition module (110). Each tree is recognised by its tree trunk enclosed in the 3D bounding box. Additionally, the mapping of the trees may be further visualised by the processing module (120) and displayed by the visualisation module (130). In applying the method for tree mapping based on tree trunk detection (1000) in tree tagging as shown in FIG. 6, the method (1000) continues with step 1601 that is assigning a unique identification to each bounding box after the bounding box fusion is performed.
[0062] Then, a local 3D map is generated as in step 1602, wherein the local 3D map visualises each bounding box at its global coordinates and according to its size.
[0063] Next, the processing module (120) determines whether a partial 3D map is available or stored as in decision 1603. The partial 3D map could either be another local 3D map of another portion of the area, or at least two stitched local 3D maps of other portions of the area.
[0064] If there is no partial 3D map available or stored, the processing module (120) stores the generated local 3D map as the partial 3D map as in step 1604. Once the generated local 3D map has been stored, the method proceeds to decision 1606 to determine whether the entire area has been captured.
[0065] If there is a partial 3D map available or stored, the processing module (120) stitches the generated local 3D map to the partial 3D map so as to obtain a stitched 3D map as in step 1605. This stitching step involves aligning and merging the generated local 3D map with the partial map. By stitching together the local 3D maps of each portion of the area, a global 3D map is created which is a single, continuous 3D map that covers the entire area. The stitched 3D map is stored as the partial 3D map while the previously stored 3D partial map is removed.
[0066] Then, the processing module (120) determines whether the partial 3D map has covered all portions of the area as in decision 1606. If all portions of the area have been covered, the partial 3D map is redefined as the global 3D map and the processing module (120) visualises and displays the global 3D map at the visualisation module (130) as in decision 1607. Otherwise, the stitched 3D map is defined as the partial 3D map and the method returns to step 1100 to capture another 3D point cloud data of another portion of the area. In applying the method for tree mapping based on tree trunk detection (1000) in autonomous navigation, the method (1000) continues with the step of identifying a path that avoids the trees mapped by their bounding boxes and coordinates. The ground vehicle is then guided through the identified path.
[0067] FIG. 7 shows a flowchart of the sub-steps for performing the cylindrical segmentation as in step 1300 of the method (1000) of FIG. 3. The cylindrical segmentation begins with downsampling of the cropped 3D point cloud data as in substep 1301. This reduces the number of data points while preserving the overall structure and key features of the cropped 3D point cloud data. The downsampling of the cropped 3D point cloud data reduces the computational load of the processing module (120) while maintaining accuracy in tree trunk detection through cylindrical segmentation. The cropped 3D point cloud data is downsampled by applying either voxel downsampling, uniform sampling, random downsampling, octree downsampling, or any other downsampling techniques. Preferably, a voxel downsampling technique is used in downsampling the cropped 3D point cloud data. The downsampling of the cropped 3D point cloud data results in a downsampled 3D point cloud dataset. FIG. 8 shows an example of the downsampled 3D point cloud dataset.
[0068] Then, the downsampled 3D point cloud dataset is filtered to remove noise and irrelevant data points from the point cloud as in sub-step 1302. Preferably, the processing module (120) filters the downsampled 3D point cloud dataset by applying a z-axis pass-through filtering technique to remove one or more data points outside a first predefined range along the z-axis of the downsampled 3D point cloud dataset. The filtering of the downsampled 3D point cloud dataset results in a first filtered 3D point cloud dataset. FIG. 9 shows an example of the first filtered 3D point cloud dataset.
[0069] Next, the processing module (120) computes a surface normal estimate for each data point of the first filtered 3D point cloud dataset as in sub-step 1303. For each data point, the computation of the surface normal estimate includes identifying one or more neighbouring data points around a data point, computing a covariance matrix of the neighbouring data points, decomposing the covariance matrix into a set of eigenvalues and eigenvectors, selecting the eigenvector corresponding to the smallest eigenvalue as the surface normal estimate of the data point. The surface normal estimate for each data point is further adjusted to maintain a uniform direction across the first filtered 3D point cloud dataset. The surface normal estimate for each data point is adjusted by comparing it with the surface normal estimates of neighbouring data points, and flipping the orientation of the surface normal estimate of the data point to align with the majority of the neighbouring data points.
[0070] After the surface normal estimates have been computed, the processing module (120) computes an adaptive normal distance weight of the first filtered 3D point cloud dataset as in sub-step 1304. The adaptive normal distance weight is computed based on a normal variance of the surface normal estimates, wherein the normal variance is obtained by averaging the squared magnitudes of each surface normal vector. In this context, the normal variance is computed by summing the squared components of each normal vector, nx, ny, nz, which represents the direction of the surface normal estimate in the x, y, and z axes respectively. The computation of the normal variance is based on Equation 1 as expressed below: [Equation 1] where N is a total number of data points in the first filtered 3D point cloud dataset, while nx i, ny i, nz irefers to a surface normal vector for each data point, i.
[0071] Based on the computed normal variance, the adaptive normal distance weight is determined by an exponential function, ensuring that the weight decreases with increasing normal variance and increases when the normal variance decreases. The computation for the adaptive normal distance weight is based on Equation 2 as expressed below: adaptive normal distance weight = 0.5 x e-0 1* normal variance [Equation 2] wherein the constant 0.5 is a base weight for the normal distance and e -o.i x normal varianceensuresthat the weight decreases as the variance increases. When the surface normal estimates exhibit high variance, indicating a noisy or uneven surface, the adaptive normal distance weight is reduced, making the cylindrical segmentation less sensitive to normal discrepancies.
[0072] In parallel with sub-steps 1303, the processing module (120) computes an adaptive distance threshold of the first filtered 3D point cloud dataset as in sub-step 1305. The adaptive distance threshold is computed based on an average distance of neighbouring points for each data point. For each data point in the first filtered 3D point cloud dataset, the distance to its nearest neighbour is computed using a k-d tree search, which efficiently finds the closest data points - the data point itself and its nearest actual neighbour. The Euclidean distance to the nearest neighbour is accumulated for all data points and averaged across the first filtered 3D point cloud dataset. The average neighbour distance is computed based on Equation 3 as expressed below: [Equation 3] where N is the total number of data points in the first filtered 3D point cloud dataset, d pt, Pneighbor)isthe Euclidean distance between point ptand its nearest neighbour.
[0073] The adaptive distance threshold is computed as a percentage of the computed average neighbour distance to dynamically adjust the sensitivity of the cylindrical segmentation. The adaptive distance threshold is computed based on Equation 4 as expressed below: adapt_dist_threshold = 0.1 x avg_neighbour_dist, [Equation 4] where the constant 0.1 is a scaling factor that can be adjusted depending on the required precision. A smaller value of the adaptive distance threshold causes the cylindrical segmentation to be more sensitive to data points that are very close to each other, while a larger value of the adaptive distance threshold allows data points that are farther apart are still considered part of a same cylinder model of the cylindrical segmentation. This ensures that the adaptive distance threshold adapts based on the density of data points, making the cylindrical segmentation robust to varying point cloud environments.
[0074] Once the adaptive normal distance weight and the adaptive distance threshold have been obtained, the processing module (120) defines a set of parameter settings for the cylindrical segmentation as in sub-step 1306. The set of parameter settings is used to define a cylinder model that will be employed to identify cylindrical segments in the first filtered 3D point cloud data. The set of parameter settings includes the adaptive normal distance weight, the adaptive distance threshold, an axis direction of the cylinder model, an angle tolerance of the cylinder model and a radius range of the cylinder model.
[0075] Next, the processing module (120) identifies any cylindrical segments in the first filtered 3D point cloud dataset based on the cylinder model defined by the set of parameter settings as in sub-step 1307. A cylindrical segment is identified if a group of data points in the first filtered 3D point cloud dataset closely matches and fits the cylinder model.
[0076] If there are no cylindrical segments identified in the first filtered 3D point cloud dataset, the method (1000) ends. This indicates that there are no trees recognised within the portion of the area as captured by the sensor acquisition module (110).
[0077] If one or more cylindrical segments have been identified, the processing module (120) extracts and indexes a plurality of data points corresponding to each cylindrical segment as in decision 1308 and sub-step 1309. Thus, the processing module (120) isolates the data points forming the cylindrical segments from the rest of the data points in the first filtered 3D point cloud dataset. The data points that form the cylindrical segments are classified as inliers, whereas the rest of the data points are classified as outliers.
[0078] After sub-step 1309, the processing module (120) reclassifies certain data points classified as outliers to inliers as in sub-step 1310. This is done by identifying other cylindrical segments from the data points classified as outliers based on the cylinder model as defined by the set of parameter settings, extracting and indexing one or more data points classified as outliers that correspond to the other cylindrical segments and reclassifying the outliers of the other cylindrical segments as inliers.
[0079] Thereon, the processing module (120) determines whether the total of data points classified as outliers is less than a predefined percentage of the total data points in the first filtered 3D point cloud dataset as in decision 1311. If the total of data points classified as outliers exceeds the predefined percentage, the method (1000) returns to sub-step 1310. Otherwise, the method (1000) proceeds with sub-step 1312. In sub-step 1312, the processing module (120) performs upsampling of the first filtered 3D point cloud dataset by adding one or more synthetic data points. The upsampling of data points is specifically targeted at all cylindrical segments in the first filtered 3D point cloud dataset. The upsampling of the first filtered 3D point cloud dataset is performed preferably using a pre-trained deep learning model or Generative Adversarial Network model whereby the model is pre-trained to increase the resolution of each cylindrical segment in the first filtered 3D point cloud dataset by predicting and adding the synthetic data points based on the distribution of existing data points. The upsampling of the first filtered 3D point cloud dataset is crucial in increasing data point density and thereby, improving the quality and accuracy of clustering and defining the bounding boxes in performing the bounding box fusion. Moreover, the upsampling of the first filtered 3D point cloud dataset prevents meaningful clusters from being discarded due to insufficient data points.
[0080] As a result, an upsampled 3D point cloud dataset is obtained from the upsampling of the first filtered 3D point cloud dataset. FIG. 10 shows an example of the upsampled 3D point cloud dataset. After sub-step 1312, the method (1000) proceeds to step 1500 so as to perform bounding box fusion on the upsampled 3D point cloud dataset.
[0081] FIG. 11 shows a flowchart of the sub-steps for performing the multiple 2D costmap extraction as in step 1400 of the method (1000) of FIG. 3. The multiple 2D costmap extraction begins with filtering the cropped 3D point cloud data with a second predefined range along the z-axis as in sub-step 1401. The filtering of the cropped 3D point cloud data is to remove one or more data points outside the second predefined range along the z-axis. A second filtered 3D point cloud dataset is obtained from the filtering of the cropped 3D point cloud data. Preferably, the second predefined range along the z-axis is similar to the first predefined range along the z-axis used in substep 1302 of FIG. 7. A z-axis pass-through filtering technique is suitably applied to the cropped 3D point cloud data to remove one or more data points outside the second predefined range along the z-axis of the cropped 3D point cloud data.
[0082] Then, the processing module (120) slices and extracts a predetermined number of horizontal layers from the second filtered 3D point cloud dataset as in substep 1402. Each horizontal layer refers to a collection of data points within the second filtered 3D point cloud dataset that lies at a specific height along the z-axis. Thus, each horizontal layer represents a cross-sectional slice of the cropped 3D point cloud data at a particular z-axis value within the second predefined range. For instance, within the second predefined range of 0.0 to 7.0 in z-values, the second filtered 3D point cloud dataset is sliced into 100 horizontal layers.
[0083] Next, the processing module (120) initialises a 2D occupancy grid map as in sub-step 1403. The initialisation of the 2D occupancy grid map includes defining grid dimensions, grid resolution and cell values. Suitably, the grid dimensions and grid resolution are predetermined. The grid dimensions are the total size of the 2D occupancy grid map and they are determined based on a range of x and y coordinates in the second filtered 3D point cloud dataset. The 2D occupancy grid map is divided by a plurality of cells, wherein the grid resolution determines the number of cells within the 2D occupancy grid map. A cell value is assigned to each cell, wherein a cell value of 0.5 indicates an unexplored state, a cell value approaching zero suggests free space as in no data points detected within the cell, a cell value approaching one indicates the presence of an obstacle as in data points present within the cell. The initialisation of the 2D occupancy grid map sets each cell value as 0.5.
[0084] In sub-step 1404, the processing module (120) projects each horizontal layer to one 2D occupancy grid map as initialised in sub-step 1403. For each 2D occupancy grid map, each cell corresponds to a particular local x and y coordinates within its respective horizontal layer. Each cell has a cell value that is determined based on the presence of data points in its respective horizontal layer. The cell value approaches one if any data points are present at the local x and y coordinates corresponding to that specific cell. The cell value approaches zero in the absence of data points at the local x and y coordinates corresponding to that specific cell. Thus, each cell value represents an occupancy level of data points at a particular cell. The term ‘local x and y coordinates’ refers to the local coordinates in x and y values.
[0085] Thereon, the processing module (120) generates a 2D costmap for each horizontal layer based on the 2D occupancy grid maps as in sub-step 1405. While each 2D occupancy grid map provides an occupancy level at each cell, each 2D costmap assigns a cost value at each cell based on the occupancy level. The cost value at each cell is determined by considering its occupancy level and the occupancy level of its neighbouring cells. A high cost value represents a significant obstacle whereas a low cost value represents a free space or a minor obstacle. For example, a specific cell is assigned with a cost value of T that represents a significant obstacle due to its high occupancy level and the high occupancy levels of its neighbouring cells, while another specific cell is assigned with a cost value of ‘0.2’ that represents a minor obstacle due its low occupancy level and the low occupancy levels of its neighbouring cells. FIGS. 12(a-c) show examples of multiple 2D costmaps generated for three horizontal layers at different z-axis values of the second filtered 3D point cloud dataset. Each 2D costmap represents the same spatial area but might differ in the cost values due to the different z-axis layers.
[0086] After the 2D costmaps have been generated, the processing module (120) aggregates all 2D costmaps into a heatmap as in sub-step 1406. The aggregation of all 2D costmaps includes aligning the 2D costmaps to one another based on their corresponding local x and y coordinates, summing the cost values from all 2D costmaps at corresponding cell locations or coordinates, and visualizing the summed cost values according to their cell locations in a heatmap. The summed cost values are preferably represented on a colour scale whereby different colours represent different ranges of summed cost values. For instance, a high range of the summed cost values is represented in a yellow colour shade while a low range of the summed cost values is represented in a red colour shade. FIG. 13 shows an example of the heatmap based on the aggregated 2D costmaps. Since the summed cost values are represented on a colour scale, each summed cost value of the cell is converted to a pixel value that corresponds to a specific colour value on the colour scale. Thus, each cell of the heatmap is associated with a pixel value that reflects its colour representation.
[0087] Next, the processing module (120) defines one or more 2D bounding boxes within the heatmap in step 1407. The 2D bounding boxes are defined by applying thresholding and morphological techniques to the heatmap to identify one or more connected component segments within the heatmap, and outlining a 2D bounding box enclosing each connected component segment. The thresholding and morphological techniques applied to the heatmap include converting the heatmap into a binary representation, wherein each pixel value that exceeds a predefined threshold value is set as T or white signifying an important feature while each pixel value equals or less than the predefined threshold value is set as ‘0’ or black signifying a background or a less important feature; identifying one or more connected component segments within the heatmap, wherein a connected component segment is a region having at least two white pixels that are adjacent or contiguous to each other; and assigning a unique label to each connected component segment. FIG. 14 shows an example of the heatmap with multiple 2D bounding boxes enclosing multiple connected component segments.
[0088] Although it has been described that the pixel value exceeding the predefined threshold value is set as T or white and the pixel value equals or less than the predefined threshold value is set as ‘0’ or black, there could be a case whereby the pixel value exceeding the threshold value is set as ‘0’ or black, while the pixel value equals or less than the threshold value is set as T or white. In such case, the connected component segment is a region having at least two black pixels that are adjacent or contiguous to each other.
[0089] Thereon, the processing module (120) extracts a set of local x and y coordinates corresponding to each 2D bounding box in the heatmap as in sub-step 1408.
[0090] In sub-step 1409, the processing module (120) projects the set of local x and y coordinates corresponding to each 2D bounding box to a set of global x and y coordinates. The term ‘global x and y coordinates’ refers to the global coordinates in x and y values. The global coordinates can either be real-world coordinates or coordinates derived from incremental mapping based on the local coordinates.
[0091] Once the set of global coordinates for each 2D bounding box has been obtained, the method (1000) proceeds to perform the bounding box fusion as in step 1500 of FIG. 3.
[0092] FIG. 15 shows a flowchart of the sub-steps for performing the bounding box fusion as in step 1500 of the method (1000) of FIG. 3. The bounding box fusion begins with applying 3D clustering on the data points of the upsampled 3D point cloud dataset as in sub-step 1501. Preferably, the 3D clustering is based on an Euclidean distance between data points in the upsampled 3D point cloud dataset. A clustered 3D point cloud dataset is obtained from the application of 3D clustering. Next, the processing module (120) removes any clusters having a total number of data points equal to or less than a minimum number of data points as in sub-step 1502. The minimum number of data points is predetermined. The removal of those clusters is done to filter out noise and irrelevant data as small clusters are deemed to represent random noise, outliers, or insignificant details that do not contribute to meaningful analysis for tree trunk detection. Moreover, the removal of those clusters ensures that the processing module (120) focuses on processing and analysing clusters having a significant number of data points that are more likely to represent actual objects or features.
[0093] Thereon, the processing module (120) determines a vertical component of each cluster in the clustered 3D point cloud dataset as in sub-step 1503. For a particular cluster, the vertical component is determined by computing a range of data points along the z-axis of the particular cluster, where this range of data points represents the vertical span of the data points within the particular cluster. In other words, each vertical component corresponds to the height of a tree trunk represented by its respective cluster.
[0094] In sub-step 1504, the processing module (120) defines a 3D bounding box for each cluster having its vertical component exceeding a height threshold, wherein the height threshold is a predetermined value. This allows the processing module (120) to only detect tree trunks that exhibit vertical structures, thereby distinguishing standing tree trunks from other obstacles or even fallen tree trunks. Preferably, the processing module (120) incorporates a bounding epsilon in defining the 3D bounding box. The bounding epsilon ensures complete coverage of the data points within each cluster having its vertical component exceeding the height threshold. FIG. 16 shows an example of a clustered 3D point cloud dataset with multiple 3D bounding boxes enclosing multiple clusters, whereby there are seven 3D bounding boxes enclosing seven clusters.
[0095] In sub-step 1505, the processing module (120) extracts a set of local coordinates for each 3D bounding box in the clustered 3D point cloud dataset. Specifically, each set of local coordinates would include the local x, y and z coordinates for each 3D bounding box. Moreover, the processing module (120) also projects the set of local coordinates corresponding to each 3D bounding box to a set of global coordinates once the set of local coordinates for each 3D bounding box has been extracted. The global coordinates can either be real-world coordinates or coordinates derived from incremental mapping based on local coordinates.
[0096] In sub-step 1506, the processing module (120) computes an Intersection over Union or loU between each 3D bounding box in the clustered 3D point cloud dataset and each 2D bounding box of the heatmap. The loU is a metric for evaluating the overlap between the 3D and 2D bounding boxes. The sets of global x and y coordinates are used in evaluating the overlap between the 3D and 2D bounding boxes, wherein the term ‘global x and y coordinates’ refers to the global coordinates in x and y values. In computing the loU, the processing module (120) identifies each overlapping 3D and 2D bounding boxes based on their global x and y coordinates, and thereon, computes the loU for each overlapping 3D and 2D bounding boxes based on Equation 5 as expressed below:
[0097] , .. Area of Intersectionrl_ loU = - - -:- , Equation 5
[0098] Area of Union where Area of Intersection is a common space shared by the overlapping 3D and 2D bounding boxes, and Area of Union is the total area covered by both overlapping 3D and 2D bounding boxes. With the loU computations, the 3D bounding boxes are validated with the 2D bounding boxes.
[0099] Then, the processing module (120) filters out each 3D bounding box having a computed loU of less than a predefined limit as in sub-step 1507. For instance, if the computed loU between the specific 3D and 2D bounding boxes is 0.3 and the predefined limit is 0.5, the specific 3D bounding box is filtered out as it can be determined that there is only 30% of overlapping area between the specific 3D and 2D bounding boxes. A first set of remaining 3D bounding boxes is obtained as a result of filtering out the 3D bounding boxes having computed loUs less than the predefined limit. FIG. 17 shows an example of the first set of remaining 3D bounding boxes whereby there are only six remaining 3D bounding boxes, which is fewer than the number of 3D bounding boxes in the clustered 3D point cloud dataset of FIG. 16. After obtaining the first set of remaining 3D bounding boxes, the processing module (120) computes a size for each 3D bounding box of the first set of remaining 3D bounding boxes as in sub-step 1508.
[0100] In sub-step 1509, the processing module (120) identifies the 3D bounding box with the largest size amongst the first set of remaining 3D bounding boxes. The largest size of the 3D bounding box is preferably identified within a predefined size range. By identifying the largest size of the 3D bounding box within the predefined size range, one or more excessively large 3D bounding boxes are discarded. This is because an excessively large 3D bounding box could possibly indicate the detection of multiple objects close together within a single 3D bounding box.
[0101] Next, the processing module (120) filters out smaller 3D bounding boxes as in sub-step 1510. Thus, a second set of remaining 3D bounding boxes is obtained. FIG. 18 shows an example of the second set of remaining 3D bounding boxes whereby there is only one remaining 3D bounding box.
[0102] In sub-step 1511 , the processing module (120) defines each 3D bounding box of the second set of remaining 3D bounding boxes as a tree trunk. The global coordinates for each tree trunk are then extracted for mapping the at least one tree in the portion of the area as captured by the sensor acquisition module (110).
[0103] Sub-steps 1508 to 1510 are implemented to adapt the method (1000) to the area where trees are planted in a structured pattern, such as in a plantation, farms and the like. In such area, trees are typically the largest objects while other obstacles tend to be smaller. The trees are also planted in a space apart from each other, such as in palm oil plantation whereby the palm oil trees are planted 5m apart. By filtering out the smaller 3D bounding boxes while retaining the largest 3D bounding box as in sub-steps 1508 to 1510, the method (1000) considers only the largest 3D bounding box as being a tree while the smaller 3D bounding boxes as being obstacles.
[0104] In adapting the method (1000) to the area where one or more trees are grown in an unstructured pattern, sub-steps 1508 to 1510 are omitted while substep 1511 is adapted to define each 3D bounding box of the first set of remaining 3D bounding boxes as a tree trunk and their global coordinates are extracted accordingly. While embodiments of the invention have been illustrated and described, it is not intended that these embodiments illustrate and describe all possible forms of the invention. Rather, the words used in the specifications are words of description rather than limitation and various changes may be made without departing from the scope of the invention.
Claims
1. CLAIMS1 . A method (1000) for mapping at least one tree in an area based on tree trunk detection comprising the steps of: a) capturing a three-dimensional or 3D point cloud data by a sensor acquisition module (110), wherein the 3D point cloud data is a collection of data points in a three-dimensional space, and b) performing a cylindrical segmentation on the 3D point cloud data to identify at least one cylindrical segment, wherein an upsampled 3D point cloud dataset is obtained from the cylindrical segmentation performed; characterised in that the method (1000) further includes the steps of: c) performing a multiple two-dimensional or 2D costmap extraction on the 3D point cloud data to identify at least one connected component segment in a heatmap, wherein the multiple 2D costmap extraction is performed simultaneously with the cylindrical segmentation; d) performing a bounding box fusion to detect and validate at least one tree trunk based on the at least one cylindrical segment and the at least one connected component segment; and e) recognising each of the at least one tree trunk as a tree at its corresponding coordinates.
2. The method (1000) as claimed in claim 1 , wherein the method (1000) includes the step of cropping the 3D point cloud data to define a region of interest within the 3D point cloud data prior to performing the cylindrical segmentation and multiple 2D costmap extraction.
3. The method (1000) as claimed in claim 1 , wherein the method (1000) further includes the step of visualizing and displaying the mapping of the at least one tree in the area.
4. The method (1000) as claimed in claim 1 , wherein the method (1000) further includes the steps of: a) assigning a unique identification to each of the at least one tree;b) generating a local 3D map, wherein the local 3D map visualises a bounding box for each of the at least one tree at its coordinates and according to its size; c) determining whether a partial 3D map is available, wherein the partial 3D map could either be another local 3D map of another portion of the area, or at least two stitched local 3D maps of other portions of the area; d) storing the generated local 3D map as the partial 3D map if there is no partial 3D map available; e) stitching the generated local 3D map to the partial 3D map to obtain a stitched 3D map and storing the stitched 3D map as the partial 3D map if there is a partial 3D map available; f) determining whether the partial 3D map has covered all portions of the area; and g) redefining the partial 3D map as a global 3D map and visualising and displaying the global 3D map at a visualisation module (130) if all portions of the area have been covered.
5. The method (1000) as claimed in claim 1 , wherein the method (1000) further includes the step of: a) identifying a path that avoids the at least one tree, wherein the at least one tree is mapped based on a bounding box for each of the at least one tree at its coordinates and according to its size; and b) guiding a ground vehicle through the identified path.
6. The method (1000) as claimed in claim 1 , wherein performing the cylindrical segmentation on the 3D point cloud data includes: a) downsampling the 3D point cloud data; b) filtering the downsampled 3D point cloud dataset to obtain a first filtered 3D point cloud dataset; c) computing a surface normal estimate for each data point of the first filtered 3D point cloud dataset; d) computing an adaptive normal distance weight and an adaptive distance threshold of the first filtered 3D point cloud dataset; e) defines a set of parameter settings to define a cylinder model, wherein the set of parameter settings includes the adaptive normal distanceweight, the adaptive distance threshold, an axis direction of the cylinder model, an angle tolerance of the cylinder model and a radius range of the cylinder model; f) identifying the at least one cylindrical segment in the first filtered 3D point cloud dataset based on the cylinder model; g) extracting and indexing a plurality of data points in the first filtered 3D point cloud dataset corresponding to the at least one cylindrical segment, wherein the plurality of data points corresponding to the at least one cylindrical segment is classified as inliers and the rest of the data points are classified as outliers; h) reclassifying certain data points classified as outliers to inliers until a total of data points classified as outliers is less than a predefined percentage of a total data points in the first filtered 3D point cloud dataset; and i) upsampling data points in the first filtered 3D point cloud dataset by adding one or more synthetic data points, wherein the upsampling of data points is targeted at the at least one cylindrical segment in the first filtered 3D point cloud dataset.
7. The method (1000) as claimed in claim 6, wherein the adaptive normal distance weight is computed based on a normal variance of the surface normal estimates, wherein the normal variance is obtained by averaging the squared magnitudes of each surface normal vector.
8. The method (1000) as claimed in claim 6, wherein the adaptive distance threshold is computed as a percentage of an average distance of neighbouring points for each data point.
9. The method (1000) as claimed in claim 6, wherein the reclassifying of certain data points classified as outliers to inliers includes: a) identifying other cylindrical segments from the data points classified as outliers based on the cylinder model; b) extracting and indexing at least one data point classified corresponding to the other cylindrical segments; and c) reclassifying the outliers of the other cylindrical segments as inliers.
10. The method (1000) as claimed in claim 6, wherein the upsampling of the first filtered 3D point cloud dataset is performed using a pre-trained deep learning model or Generative Adversarial Network model.1 1 . The method (1000) as claimed in claim 1 , wherein the performing of the multiple 2D costmap extraction on the 3D point cloud data includes: a) filtering the 3D point cloud data to obtain a second filtered 3D point cloud dataset; b) slicing and extracting a predetermined number of horizontal layers from the second filtered 3D point cloud dataset, wherein each horizontal layer represents a cross-sectional slice of the second filtered 3D point cloud dataset at a particular z-axis value; c) initialising a 2D occupancy grid map; d) projecting each horizontal layer to one 2D occupancy grid map, wherein each cell has a cell value that is determined based on a presence of data points at its location within the respective horizontal layer, wherein each cell value represents an occupancy level of data points at a particular cell; e) generating a 2D costmap for each horizontal layer based on its respective 2D occupancy grid maps, wherein each cell has a cost value that is determined based on the occupancy levels; f) aggregating all 2D costmaps into the heatmap; g) defining a 2D bounding box for each of the at least one connected component segment within the heatmap; h) extracting a set of local coordinates corresponding to each 2D bounding box in the heatmap; and i) projecting the set of local coordinates corresponding to each 2D bounding box to a set of global coordinates, wherein the global coordinates can either be real-world coordinates or coordinates derived from incremental mapping based on local coordinates.
12. The method (1000) as claimed in claim 11 , wherein the initialising of the 2D occupancy grid map includes defining grid dimensions, grid resolution and cell values.
13. The method (1000) as claimed in claim 11 , wherein the aggregating of all 2D costmaps includes: a) aligning all 2D costmaps to one another based on their corresponding local coordinates; b) summing the cost values from all 2D costmaps at corresponding cell locations to obtain a summed cost value at each cell location; and c) visualizing the summed cost values according to their cell locations in a heatmap, wherein each summed cost value of the cell is converted to a pixel value that corresponds to a specific colour value on a colour scale.
14. The method (1000) as claimed in claim 11 , wherein the defining of the at least one 2D bounding box for the at least one connected component segment within the heatmap includes: a) applying thresholding and morphological techniques to the heatmap to identify the at least one connected component segment within the heatmap; and b) outlining a 2D bounding box enclosing each of the at least one connected component segment.
15. The method (1000) as claimed in claim 1 , wherein the performing of the bounding box fusion includes: a) applying 3D clustering on the data points of the upsampled 3D point cloud dataset to obtain a clustered 3D point cloud dataset; b) removing each cluster having a total number of data points equal to or less than a minimum number of data points, wherein the minimum number of data points is predetermined; c) determining a vertical component of each cluster in the clustered 3D point cloud dataset, wherein the vertical component is determined by computing a range of data points along the z-axis of a particular cluster; d) defining a 3D bounding box for each cluster having its vertical component exceeding a height threshold, wherein the height threshold is a predetermined value;e) extracting and projecting a set of local coordinates for each 3D bounding box in the clustered 3D point cloud dataset to a set of global coordinates corresponding to each 3D bounding box; f) computing an Intersection over Union or loU between each 3D bounding box in the clustered 3D point cloud dataset and each 2D bounding box of the heatmap; g) filtering out each 3D bounding box having a computed loU of less than a predefined limit to obtain a first set of remaining 3D bounding boxes; h) computing a size for each 3D bounding box of the first set of remaining 3D bounding boxes; i) identifying the 3D bounding box with a largest size amongst the first set of remaining 3D bounding boxes; j) filtering out smaller 3D bounding boxes to obtain a second set of remaining 3D bounding boxes; k) defining each 3D bounding box of the second set of remaining 3D bounding boxes as the at least one tree trunk; and l) extracting the set of global coordinates corresponding to each 3D bounding box defined as the at least one tree trunk.
16. The method (1000) as claimed in claim 1 , wherein the performing of the bounding box fusion includes: a) applying 3D clustering on the data points of the upsampled 3D point cloud dataset to obtain a clustered 3D point cloud dataset; b) removing each cluster having a total number of data points equal to or less than a minimum number of data points, wherein the minimum number of data points is predetermined; c) determining a vertical component of each cluster in the clustered 3D point cloud dataset, wherein the vertical component is determined by computing a range of data points along the z-axis of a particular cluster; d) defining a 3D bounding box for each cluster having its vertical component exceeding a height threshold, wherein the height threshold is a predetermined value; e) extracting and projecting a set of local coordinates for each 3D bounding box in the clustered 3D point cloud dataset to a set of global coordinates corresponding to each 3D bounding box;f) computing an Intersection over Union or loU between each 3D bounding box in the clustered 3D point cloud dataset and each 2D bounding box of the heatmap; g) filtering out each 3D bounding box having a computed loU of less than a predefined limit to obtain a first set of remaining 3D bounding boxes; h) defining each 3D bounding box of the first set of remaining 3D bounding boxes as the at least one tree trunk; and i) extracting the set of global coordinates corresponding to each 3D bounding box defined as the at least one tree trunk.
Citation Information
Patent Citations
Tree point cloud monomer extraction method based on three-dimensional morphological characteristics
CN116310849A
Method and system for extracting tree branch structure parameters, computer equipment and medium
CN117522945A
Instrument and Method for Measuring Structural Parameters of Forest Trees using LiDAR Technologies
KR102473799B1
Multi-modal 3-d pose estimation
US20220156965A1
Method for object recognition
US20230063306A1