Adaptive search for LiDAR-based clustering
By using a density-based algorithm that adaptively adjusts clustering parameters, the shortcomings of existing LiDAR algorithms in handling objects of different densities and distances are addressed, resulting in more accurate object detection and clustering.
Patent Information
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- APTIV TECHNOLOGIES AG
- Filing Date
- 2021-01-15
- Publication Date
- 2026-06-26
Smart Images

Figure CN113128551B_ABST
Abstract
Description
Technical Field
[0001] This disclosure generally relates to processing imaging data provided by LiDAR-based systems, and more specifically to adaptive density-based systems and methods for searching and clustering points to detect objects. Background Technology
[0002] Autonomous vehicles require the ability to "see" various types of objects they encounter, including other vehicles, pedestrians, buildings, gates, and many other objects. Non-autonomous vehicles similarly benefit from the ability to detect objects. To this end, vehicles typically utilize one or more types of sensors to collect information that is analyzed to identify various objects. Specifically, light detection and ranging (LiDAR) sensors operate by illuminating a target with a laser and measuring the reflected light with the sensor to determine the range to the object causing the reflection. The output of a LiDAR system is a set of points, called a point cloud, which represents 3D shapes or features. Machine learning techniques such as clustering are used to organize individual points into sets of clusters, which can ultimately be used to detect and / or identify objects.
[0003] A variety of clustering techniques can be used, including (1) partitioning, (2) hierarchical, (3) density-based, and (4) grid-based. For example, a commonly used clustering technique is Density-Based Spatial Clustering of Applications with Noise (DBSCAN), which clusters closely packed points together and marks those points in low-density regions as outliers or noise. The advantage of DBSCAN is that it does not require prior knowledge of the number of clusters to be formed, which allows DBSCAN to detect clusters with arbitrary shapes. However, when used in LiDAR applications, DBSCAN has several drawbacks, including the inability to detect objects near and far from the sensor, the inability to cluster objects with different density levels (e.g., shrubs compared to vehicles), and the inability to utilize properties of LiDAR sensor data.
[0004] Therefore, it would be beneficial to develop clustering techniques that overcome one or more of the drawbacks associated with traditional clustering algorithms. Summary of the Invention
[0005] According to one aspect, a method for clustering spatial data includes: receiving a point cloud comprising a plurality of points defined in a three-dimensional (3D) space. The method further includes: selecting one or more adaptive clustering parameters for each of the plurality of points. The method further includes: traversing each of the plurality of points in the point cloud and selectively adding each point to one or more clusters based on the selected clustering parameters associated with each point.
[0006] According to another approach, a method for clustering spatial data includes receiving a point cloud comprising multiple points defined in a three-dimensional (3D) space. Points that have not been previously clustered are selected from the point cloud, and if a selected point is not previously clustered and is identified as a core point based on the number of neighboring points within a search radius, a new cluster is created. If a core point is identified, its neighboring points are added to a neighbor list. For each point in the neighbor list, it is determined whether a neighboring point is also a core point. For a neighboring point identified as a core point, that point is added to the cluster, and the neighbors of that neighboring point (i.e., the core point) are added to the neighbor list for analysis. For a neighboring point not identified as a core point, the azimuth and / or elevation angle between the neighboring point and its adjacent point is compared to a threshold, wherein if the azimuth or elevation angle between the neighboring point and its adjacent point is less than the threshold, then if the adjacent point has not been previously assigned to a cluster, it is added to the neighbor list.
[0007] According to another aspect, the system includes at least one processor and a clustering module configured to implement a density-based clustering algorithm when executed by the at least one processor. This density-based clustering algorithm clusters multiple points received by the system into one or more clusters. The density-based clustering algorithm is configured to: receive a point cloud comprising multiple points defined in a three-dimensional (3D) space, and apply a search algorithm to the point cloud, wherein the search algorithm selects clustering parameters including one or more of the following: a minimum point threshold and a search radius for each point in the point cloud. The density-based clustering algorithm is further configured to apply a clustering algorithm to the point cloud, wherein the clustering algorithm traverses at least some of the points in the point cloud and selectively adds points to clusters using the minimum point threshold and search radius associated with each point through the search algorithm. Attached Figure Description
[0008] Figure 1a This is a side view of a vehicle including an imaging system based on light detection and ranging (LiDAR) according to some embodiments.
[0009] Figure 1b This is a top view of a vehicle including a LiDAR-based imaging system according to some embodiments.
[0010] Figure 2a This is a block diagram of a LiDAR-based imaging system according to some embodiments.
[0011] Figure 2b This is a block diagram of components used by a LiDAR-based imaging system to search and cluster multiple points, according to some embodiments.
[0012] Figure 3 This is a flowchart illustrating steps for implementing an adaptive density-based clustering algorithm according to some embodiments.
[0013] Figure 4a and Figure 4b This is a flowchart illustrating steps for searching and clustering multiple points, according to some embodiments.
[0014] Figure 5 This is a graph illustrating the effect of a variable search radius on the identification of neighboring points and on clustering, according to some embodiments.
[0015] Figure 6 This is a graph illustrating a set of example clustered points according to some embodiments.
[0016] Figure 7 This is a diagram illustrating the effect of incident angle and resolution on the distance between adjacent points, according to some embodiments. Detailed Implementation
[0017] To utilize spatial data such as point clouds, clustering algorithms are used to group points that are close to each other. The resulting clusters are then fed into object recognition / detection algorithms to classify objects. Density-based clustering algorithms operate by classifying each point in the point cloud as a core point, boundary point, or noise point. A core point is defined as a point within a defined search radius. εCore points are those points that have neighbors with the minimum threshold (referred to as the minimum point threshold). Boundary points are those points located within the neighborhood of a core point that do not have neighbors with the minimum threshold within a defined radius ε. Noise points are those points that are neither core points nor boundary points. Clusters are created by connecting neighboring core points and adding them to the same cluster. The adaptive clustering algorithm disclosed herein allows one or more of the parameters to be modified. For example, the minimum point threshold used to determine whether a point is a core point can be adjusted based on the distance of the point from the sensor. This allows objects farther from the LiDAR sensor to be clustered, even though the density of points associated with objects at greater distances is lower. Additionally, in some embodiments, the adaptive clustering algorithm disclosed herein allows the search radius ε to be modified. Increasing the search radius increases the number of neighboring points and thus helps cluster points in lower-density regions. Finally, in some embodiments, the adaptive clustering algorithm disclosed herein considers the effect of the angle of incidence on the distance between neighboring points, an effect that sometimes prevents typical density algorithms from connecting neighboring points within the same object. In some embodiments, adaptive clustering algorithms utilize the differences between the azimuth and / or elevation angles of neighboring points to determine whether the neighbors of boundary points (adjacent to core points) should be added to the cluster. Utilizing one or more of these techniques, individually or in combination, provides a more robust density-based clustering algorithm capable of accurately clustering spatial data points.
[0018] Figure 1a This is a side view of a vehicle including a light detection and ranging (LiDAR) sensor 100 according to some embodiments. Figure 1a In the illustrated embodiment, the LiDAR sensor 100 is mounted on top of the vehicle 102. The LiDAR sensor 100 operates by emitting light (e.g., laser) pulses within the vehicle's field of view. This field of view may include, for example... Figure 1a The upward field 104 shown (i.e., in the z-direction) and as shown Figure 1b The azimuth field of view 106 is shown (i.e., in the xy plane). In some embodiments, the elevation field of view is less than 180°, in some embodiments less than 90°, and in some embodiments less than 45°. Figure 1a and Figure 1b In the illustrated embodiment, the azimuth field of view is approximately 360°. However, in some embodiments, the azimuth field of view is approximately 180°. In other embodiments, the LiDAR sensor 100 can be mounted at the front, rear, or side of the vehicle 102, and the field of view can be modified based on the mounting location.
[0019] The LiDAR sensor 100 utilizes a light source (e.g., a laser) and a detector. The light source generates light pulses, and the detector monitors reflections, where the time of flight associated with the reflection is used to estimate the distance / position of the object causing the reflection. The resulting set of spatial data comprises multiple points located in space. As discussed in more detail below, the spatial data is clustered, and the clustered data is used to detect / identify objects. In response to a detected object, the vehicle 102 can take various actions, ranging from generating an alert for the vehicle operator to generating commands to alter the vehicle's operation (e.g., for autonomous actions in an automated vehicle).
[0020] refer to Figure 2a and Figure 2b Furthermore, the components of the LiDAR-based imaging system 200 are shown in detail. Figure 2a In the block diagram shown, the LiDAR-based imaging system 200 includes a LiDAR laser 201, a detector 202, and a processing system 204. The processing system 204 includes a processor (e.g., a central processing unit (CPU) / graphics processing unit (GPU)) 206, a computer-readable medium 208, and point cloud storage 210.
[0021] LiDAR laser 201 generates light pulses for measuring distances to objects. In some embodiments, LiDAR laser 201 may generate a single light pulse (provided simultaneously in multiple directions) or multiple individual pulses provided at discrete time points in a specific direction. The generated light pulses leave the vehicle and interact with objects located in the optical path. Light reflected or backscattered from the object returns to the vehicle and is detected by detector 202. The time of flight of the light pulses provides information related to the distance between the object and detector 202. Each detected reflection provides spatial information related to the surrounding environment, referred to herein as a point. Specifically, processing system 204 receives information about the time of flight of the detected light pulses and uses the information about the pulses to determine the location of the reflection. Processing system 204 aggregates multiple points to generate a point cloud providing spatial information about the surrounding environment.
[0022] The LiDAR-based imaging system 200 can be implemented using various different types of LiDAR systems, each operating on a point cloud comprising multiple points. For example, a flash LiDAR utilizes a single light source that illuminates the entire field of view with a single pulse. The focal plane of the flash LiDAR camera includes multiple rows and columns of detectors configured to record the time it takes for a laser pulse to strike a target and return to the array to generate a 3D image of the surrounding area. In other embodiments, the LiDAR laser 201 can generate multiple individual pulses steered across the field of view, where detector 202 measures the time of flight of the reflected signal to determine the distance from the detector to the reflection point. The guidance of the pulses can be provided via mechanical, electromechanical, or electrical means. For example, microelectromechanical systems can be used to rotate a mirror, thereby steering the laser across the field of view. In other embodiments, the phased array is used to generate a cohesive signal in a specific direction by controlling the timing (phase) of each antenna in a phased array comprising multiple antennas. The detected reflections, especially the information associated with the detected reflections, are provided to the processing system 204 for analysis.
[0023] exist Figure 2a In the illustrated embodiment, the processing system 204 includes a processor 206, a computer-readable medium 208, and point cloud storage 210. The computer-readable medium stores instructions that, when executed by the processor 206, cause the processor 206 to perform various functions / operations on the data collected by the detector 202. For example, in some embodiments, this includes a point cloud module 220, a clustering module 222, and an object classification module 224 (in... Figure 2b (As shown in the figure). In some embodiments, the point cloud module 220 is configured to generate a point cloud based on reflections detected by the detector 202. The clustering module 222 analyzes the point cloud and groups multiple individual points into one or more unique clusters. Refer below to Figure 3 , Figure 4a and Figure 4b The functions performed by clustering module 222 are described in more detail. Object classification module 224 detects objects within the field of view of LiDAR-based imaging system 200 based on the received clusters. The detected objects—including information related to the object's position and / or distance to the object—can be provided as output to other systems.
[0024] Figure 3 This is a flowchart illustrating an adaptive search / LiDAR-based clustering algorithm 300 according to some embodiments. The input to the adaptive search / LiDAR-based clustering algorithm 300 includes a LiDAR laser 201 and a detector 202. Figure 2aThe point cloud collected (as shown) includes multiple individual points. At step 301, the point cloud comprising multiple points defined in three-dimensional space is received. At step 302, the multiple points are accessed and one or more adaptive clustering parameters (e.g., minimum point threshold) are selected for each point. MinPt Use the search radius ε to search for the point cloud.
[0025] In some embodiments, step 302 modifies one or more clustering parameters based on the distance of the points from the LiDAR sensor. For example, in some embodiments, if the points being analyzed are determined to be located at a short distance from the LiDAR sensor, the clustering parameters are set to a first set of values to anticipate that the points are relatively closely spaced. If the points being analyzed are determined to be located at a greater distance from the LiDAR sensor, the clustering parameters are set to a second set of values to anticipate that the points are relatively more widely spaced. For example, for points located farther from the LiDAR sensor, the search radius ε can be increased. (See also: Regarding...) Figure 4a In more detail, in some embodiments, a minimum point threshold is used during the search at step 302 to determine whether a point is a core point, and the minimum point threshold can be modified based on the distance of the point from the LiDAR sensor.
[0026] In some embodiments, step 302 modifies one or more adaptive clustering parameters in response to a first analysis that provides insufficient density information (as described with respect to step 304). For example, if the number of neighbors in the first search (based on a first search radius ε) is insufficient for meaningful density determination, a second search radius ε can be used to perform a second search on the point. Based on the larger search radius, additional neighboring points can be detected and used to determine density information associated with the point being analyzed. In some embodiments, a larger search radius... ε It is assigned to that point and utilized during subsequent clustering steps.
[0027] At step 304, density is calculated for each of the plurality of points. In some embodiments, the density level of a point is determined based on the number of points found with the search radius ε of the point being analyzed. In some embodiments, the selection of one or more adaptive clustering parameters at step 302 is also used to provide more accurate density calculations. For example, in some embodiments, the point density around a point is based not only on the object reflecting the LiDAR laser but also on the distance of the object from the LiDAR sensor. For example, a solid object can provide many densely spaced points, but other objects (e.g., leaves) can result in more sparsely spaced points. Additionally, since the spacing between adjacent LiDAR pulses increases with distance from the LiDAR sensor, the distance between adjacent points can also increase with greater distance. The modification of one or more clustering parameters at step 302 ensures that meaningful density information is obtained for each point at step 304 while maintaining good performance.
[0028] At step 306, the density determination made at step 302 is used to sort the multiple points. For example, in some embodiments, the points are sorted from most dense to least dense. Therefore, the output of step 306 is an ordered (sorted) list of points, where each point includes parameters used to analyze that point during the search step (step 302). This may include a search radius ε and a minimum point threshold for analyzing the points. MinPt ).
[0029] At step 308, multiple points in the point cloud are traversed one at a time and placed into clusters based on adaptive clustering parameters selected at step 302. These adaptive clustering parameters are used to evaluate the proximity of the points to each other. In some embodiments, the order in which the points are traversed is based on the sorting of points completed at step 306. For example, in some embodiments, the points with the highest density are analyzed first, where clustering includes reviewing the neighbors of selected points and determining whether neighboring points should be added to the same cluster. This process continues until all points are added to more than one created cluster or are identified as noise points. See below for more details. Figure 4bMore specifically, the clustering process includes classifying points as core points, boundary points, or noise points based on whether a point has the minimum number of points within a given search radius. As described with respect to step 302, in some embodiments, the minimum point threshold used is modified based on the point's distance from the LiDAR sensor. Therefore, different points can be clustered using different parameters (e.g., MinPt, search radius). Thus, the order in which points are clustered will affect the final clustering result. Conversely, if the same parameters are used for all points, there will be a bidirectional relationship in determining whether a point is added to a particular cluster (i.e., the order in which points are analyzed for clustering will not affect the assigned cluster). Therefore, in Figure 3 In the illustrated embodiment, points are sorted based on a determined density and used to determine the order in which points are clustered.
[0030] Additionally, in some embodiments, at step 308, the clustering is modified using the difference in azimuth / elevation angles between neighboring points (azimuth / elevation angles are based on the angles between the LiDAR sensor and the point). For example, even if a point is determined to be a non-core point based on the clustering algorithm, if the difference in azimuth / elevation angle between that point and its neighboring core points is less than a threshold (indicating that these points are neighbors and should be clustered together), the point can be identified as a core point for clustering purposes. The following will also be related to... Figure 4b and Figure 6 Describe the process in more detail.
[0031] The adaptive search / LiDAR-based clustering algorithm 300 outputs multiple clusters, each assigned multiple points. (See above regarding...) Figure 2b As described, multiple clusters are provided to the object classification module for object detection / classification.
[0032] Figure 4a and Figure 4b This is a flowchart illustrating an adaptive search for a LiDAR-based clustering algorithm 400, according to some embodiments. Specifically, Figure 4a The search phase of Algorithm 400 is shown, and Figure 4b The clustering stage of algorithm 400 is illustrated. The input provided to the LiDAR-based clustering algorithm 400 is a point cloud comprising multiple points. Each point is identified by its spatial position relative to the LiDAR laser 201 and detector 202. Figure 4a and Figure 4b As shown, some steps in the flowchart are marked with dashed boxes, indicating that the step can be optionally included as part of the adaptive search and clustering algorithm.
[0033] At step 402, one or more parameters are initialized, including, for example, a minimum point threshold. MinPt And the search radius ε. In some embodiments, the initial parameters are predetermined and are always initialized to specific values. In other embodiments, the parameters may be initialized after some input. For example, external conditions (e.g., rain, snow, time of day, light intensity, etc.) may be used as inputs to determine the values of one or more parameters. In some embodiments, initializing the search radius ε to a relatively small value more accurately represents the local density around the points being searched. Furthermore, a smaller search radius ε reduces the time required to complete the search because fewer points may need to be analyzed within the search radius ε.
[0034] At step 404, previously undefined points are selected from the point cloud. In some embodiments, the order in which points are selected and analyzed is not important during the search phase of the algorithm. Each point is analyzed during the search phase, and the order in which points are examined and analyzed does not affect the results of the search phase.
[0035] In some embodiments, at step 406, one or more parameters are selectively modified using the distance to the point being analyzed. In some embodiments, the modified parameters include a minimum point threshold. m One or more of inPt and the search radius ε. Minimum point threshold m `inPt` and the search radius `ε` are used to determine whether a point should be classified as a core point, a neighbor point, or a noise point. The search radius `ε` determines the region for searching neighboring points. To be classified as a core point, a point being analyzed needs to have a value greater than a minimum point threshold located within the search radius `ε`. m The number of inPt neighbors. However, the distance to the object affects the object's resolution. That is, as the light pulse extends from the LiDAR sensor, the distance between each adjacent light pulse (each with a slightly different angle of incidence) increases with distance. As a result, reflections occurring at greater distances from the LiDAR sensor may be less densely spaced depending solely on the LiDAR resolution at that distance. In some embodiments, to mitigate the variation in point density due to differences in distance to each point, a minimum point threshold is used. minPt The threshold is modified based on the distance to the point being analyzed. In some embodiments, the minimum point threshold is increased for points located close to the LiDAR sensor. minPt For points further away from the LiDAR sensor, the minimum point threshold is reduced. minPt For example, in one embodiment, for each point located within the first (proximity) range p i The minimum threshold is set to the first constant value. minPt close For each point located within the second (far) range p i The minimum point threshold is set to the second constant value. minPt far Furthermore, for each point located between the first and second ranges, the minimum point threshold is set to a value that varies based on the distance to that point. This relationship can be expressed mathematically as follows:
[0036] Equation (1)
[0037] in dist(p i (sensor) Indicates the time to go p i The distance, and range close This represents the minimum threshold distance to this point. If the distance to this point is less than the minimum threshold distance... range close ,but MinPt close It is the minimum point threshold. range far This represents the maximum threshold distance to this point, and if the distance to this point is greater than the distance... range far ,but MinPt far It is the minimum point threshold. In other embodiments, the minimum point threshold... minPt Based on the continuous change of distance to the point.
[0038] In some embodiments, the search radius can be modified individually. ε Or the minimum threshold of the modification points minPt Combined modification of search radius ε In some embodiments, if the first iteration does not return a sufficient number of points, the search radius can be modified as described at step 413 to selectively expand the search radius. ε However, in some embodiments, the search radius parameter can also be modified at step 406 based on one or more factors. ε For example, the initial search radius can be modified, at least in part, based on the distance from the point to the LiDAR sensor and / or based on the resolution of the LiDAR sensor. ε 1st,i For example, regarding the initial search radius parameter ε 1st,i The choice can be expressed mathematically as follows:
[0039] Equation (2)
[0040] Where k ε It is the constant gain of the search, and resolLiDAR resolution is expressed in radians, range ( p i ) is the distance to the point being searched, and ε 1st,I This is the search radius or first search radius used in the first iteration. In this embodiment, if the item... k ε range(p i ) resol Less than the minimum radius ε min Then use the minimum search radius ε min As shown, the search radius ε 1st,i Distance from the point to the LiDAR sensor ( range(p i ) And with the resolution of the LiDAR system ( resol Directly related. For example, when the point is at a distance from the LiDAR sensor ( range(p i ¬) As the number of digits increases, the search radius increases. ε 1st,i Increase. Similarly, when the resolution of the LiDAR sensor ( resol As the number of digits increases, the search radius increases. ε 1st,i Increase. In this way, in some embodiments, at step 406, one or more parameters (e.g., minimum point threshold) are modified based on the distance from the point to the LiDAR sensor. minPt Search radius ε ).
[0041] At step 408, the collection radius ε (In the first iteration, the search radius) ε 1st, i The neighborhood of points within ε. In step 410, based on the number of points within radius ε and the selected minimum point threshold... minPt The comparison determines whether a point is a core point. If the number of points within the radius ε of a point is greater than the minimum point threshold... minPt If so, then this point is determined as the core point, and the process continues to step 414. If the radius of the point is... εIf the number of points within the range is less than a minimum point threshold, in some embodiments, the process determines at step 412 whether this is the first search (e.g., the first iteration) or the second search. In some embodiments, instead of simply identifying the point as a noise point and continuing the search with the next point, the search radius can be modified (i.e., increased) at steps 412 and 413. ε And search that point again to find it within a newer and larger search radius. ε 2nd i The neighbors inside. Figure 4a In the illustrated embodiment, the radius parameter is modified only after the first iteration. ε That is, at step 412, it is made that this is at point... p i The first iteration of the search was still at the point. p¬ i ¬ The second iteration of the search is determined. If for the point p i The search at step 410 did not identify the core point, and it was a point-to-point search. p i The result of the second iteration of the search will no longer involve searching for points. p i The additional search continues, and the process proceeds to step 414. Conversely, if the point... p i The search at step 410 did not identify the core point, and it was a point... p i Based on the result of the first iteration of the search, the search radius parameter ε is modified (i.e., increased) at step 413, and point-to-point comparisons are performed based on the larger search radius. p i The second check (and it can be inferred that additional points were retrieved based on the modified search radius).
[0042] In some embodiments, the initial search radius is modified / increased after the initially determined point is not a core point (i.e., there are too few neighbors within the search radius). ε 1st,i This allows the algorithm to collect useful density information about low-density areas. This can include areas located further away from the LiDAR sensor and / or areas associated with objects that do not provide a large number of reflective points or surfaces. Therefore, if enough points have been collected to classify a point as a core point, there is no need to increase the search radius and collect additional information related to the neighbors of these points. Similarly, if subsequent searches of a point do not return useful density information after increasing the search radius, there is no need to increase the search radius again. ε 2nd,iThis is to prevent the search radius from becoming too large and losing its significance regarding neighboring points.
[0043] In some embodiments, at step 413, the search radius is... ε 1st,i Modify the predetermined amount. In other embodiments, at step 413, the initial search radius is modified based on the number of neighboring points located during the first iteration. ε 1st,i For example, in some embodiments, if no neighboring points are found relative to the point being analyzed, the search radius is... ε 1st,i Increase to the maximum radius (e.g., k ε ε 1st,i Otherwise, in some embodiments, the search radius is... ε 1st,i The increase is related to the number of neighboring points located during the first iteration. For example, in some embodiments, the increase in the search radius is limited by the following condition:
[0044] Equation 3
[0045] in ε 2nd,i It is the search radius used for point i in the second iteration. num ε-ngbh It is the number of points discovered during the first search, and ε 1st, i This is the search radius used in the first iteration. In this embodiment, if only a single point of itself is found (i.e., if...) num ε-ngbh = 1), then choose equal to k ε ε 1st,i The maximum search radius is used; otherwise, the search radius is set to the maximum search radius used in the first iteration. ε 1st,i Number of detected points num ε-ngbh The relevant values. For example, the equation. As indicated, the search radius is used in the first iteration. ε 1st,i The more neighboring points detected, the larger the search radius in the second iteration. ε 2nd,i The larger it increases, the smaller it becomes.
[0046] At step 408, based on the modified search radius ε2nd,i Neighboring points are retrieved, and at step 410, the point is analyzed again to determine whether it should be considered a core point. In some embodiments, after the second iteration, the process continues to step 414 regardless of whether the point is determined to be a core point or a noise point.
[0047] In step 414, the point is determined based on the search radius and the number of neighboring points within the search radius. p i The density. As discussed above, because the search radius can be modified during the search process, it is used to return the point. p i The density level is determined by the search radius of the associated neighboring points. In some embodiments, this is achieved by dividing the number of neighboring points by the square of the search radius (i.e., ...). ε 2 The density is calculated using [method name missing]. In some embodiments, [method name missing] is used. ε 2 Instead ε 3 This is because the surface reflecting light does not allow light to be reflected from behind the surface. At step 416, a determination is made as to whether all points have been searched or whether additional points must be searched and classified. If additional points need to be searched and classified, the process continues at step 404 to select new previously unclassified points. If additional points do not need to be searched and classified, the search process is complete. In some embodiments, the clustering process is initiated (… Figure 4b Before (as shown), in step 416, multiple points are sorted based on density. In some embodiments, the order in which points are clustered is important because the radius used to search for the neighbors of each point is variable. (See reference) Figure 5 This illustrates how the variable search radius introduced at steps 406 and / or 413 affects the clustering phase. Figure 5In the example shown, point 500 (labeled "x") is identified as a core point, and all points within search radius 510 are identified as neighbors. Similarly, points 502 (labeled "z") and 504 (labeled "y") are identified as core points, and points within search radii 512 and 514, respectively, are included as neighbors. In this example, point 506 (labeled "n") is outside search radius 514 and is therefore not included as a neighbor of point 504. However, searching for point 506 results in an assignment of a search radius 516, which is larger than search radii 510, 512, and 514. As a result, point 504 is identified as a neighbor of point 506. This example illustrates how a modification to the search radius parameter ε means that bidirectional relationships between points (e.g., classifying a second point as a neighbor of a first point means that classifying a first point as a neighbor of a second point) no longer applies. Consequently, the order in which points are clustered determines whether a point is included in a cluster. For example, in Figure 5 In the illustrated embodiment, clustering point 506 first will result in point 506 being assigned to a cluster that includes point 504. However, clustering point 504 first will result in point 504 being assigned to a cluster that includes points 500 and 502 but not point 506. In some embodiments, points in high-density regions should be clustered before points in low-density regions. However, in other embodiments, it may be desirable to cluster points in the reverse order (from low-density regions to high-density regions). As a result, in some embodiments, it is important that the density of each point is known and ordered to allow points in higher-density regions to be clustered first.
[0048] Figure 4b Clustering of multiple points is illustrated according to some embodiments. In some embodiments, the input provided to the clustering step includes multiple points that are sorted based on density and assigned a minimum point threshold as determined in the search phase. minPt and / or search radius ε The description of the entire clustering process references [reference needed]. Figure 6 , Figure 6 At least a portion of the clustering steps according to some embodiments is shown.
[0049] At step 422, a new previously unclustered point P is selected. Furthermore, in some embodiments, the sorting of points provided at step 418 (in...) is utilized. Figure 4a (as shown in the diagram) to select the next point to be clustered, where the next point represents the highest density point that remains unclustered.
[0050] At step 424, based on the minimum point threshold minPt Determine whether a selected point P is a core point. That is, compare the number of neighbors associated with point P with a minimum point threshold. minPtA comparison is made, wherein if the number of neighboring points is greater than a threshold, the point is identified as a core point, and the process continues at step 428. In some embodiments, the search phase provides parameters for each point to identify it as a core point or a noise point (e.g., a minimum point threshold). minPt Search radius ε), as mentioned above regarding Figure 4a That is, in some embodiments, each point may utilize a different set of parameters (e.g., a minimum point threshold). minPt and / or search radius ε) if the number of neighboring points is less than the minimum point threshold minPt If so, the point is identified as a noise point at step 426, and the process continues at step 422 by selecting a new previously unclustered point P.
[0051] At step 428, based on the identification of the core points at step 424, a new cluster is created and assigned a cluster ID. ID And a new neighbor list is created. At step 430, the neighbors of the selected core point are added to the neighbor list. In some embodiments, neighbors include points located within the search radius ε of the input point. At step 432, the selected core point is assigned a cluster ID. ID The next step is to determine the appropriate cluster ID. ID How many additional points to add. (See reference) Figure 6 The clustering of multiple points is shown in steps 600, 602, and 604. Assuming that point 606 (labeled "X") is the point selected at step 422 and identified as the core point at step 424, then at step 430, all neighbors of point 606 (i.e., all points within the search radius 608) are added to the neighbor list, including point 610 (labeled "Y").
[0052] At step 434, each point included in the neighbor list is examined to determine if it has already been assigned to another cluster. Points that have already been assigned to a cluster cannot be assigned to the current cluster ID. ID That is, the status of neighboring points that have already been assigned to a cluster remains unchanged, and no further action is taken for neighboring points that have already been assigned to a cluster. If a neighboring point is not assigned to another cluster, then at step 436, it is determined whether the neighboring point is a core point (e.g., if the number of neighboring points is greater than a minimum threshold). minPt The determination of the point is as follows: If the point is not a core point, it is marked as a boundary point in step 438, and assigned to a cluster ID in step 432. IDThat is, points identified as boundary points are included in the cluster, but are generally not further analyzed to identify neighboring points. However, in some embodiments, points identified as boundary points (i.e., not core points) at step 436 are further analyzed to determine whether any points adjacent to the boundary point are separated from each other by a relatively small (i.e., less than a threshold) azimuth / elevation angle relative to the LiDAR sensor. For points that meet the azimuth / elevation test, the points are examined at steps 448 and 450 (described in more detail below) to determine how they should be classified. The process then continues at step 434, where another neighboring point is selected from the neighbor list for analysis. Reference Figure 6 In step 602 of the example shown, neighboring point 610 (“Y”) is identified as the core point because it includes points within the search radius ε that are greater than or equal to the minimum point threshold. MinPt (For example, four in this example) number of neighbors.
[0053] If a neighboring point is identified as a core point in step 436, then each neighbor of the identified core point is analyzed. In step 432, the neighboring points identified as core points are assigned a cluster ID. ID The neighboring points of the core point are then added to the neighbor list (not specifically shown as a step, but the neighboring points of the identified core are analyzed). For clarity, the neighboring points identified as core points in step 436 are referred to herein as input points, as these points serve as input to the analysis performed in steps 440-446. In step 440, for each neighboring point of an input point, it is determined whether that neighboring point already belongs to another cluster. If the neighboring point already belongs to another cluster, it cannot be added to the current cluster ID. ID The process continues at step 440 with the next neighbor point. If it is determined at step 440 that the neighbor point does not belong to another cluster, then at step 442, a determination is made as to whether the neighbor point is a core point. If the neighbor point is not a core point, in some embodiments, the point is identified as a boundary point at step 438 and added to the cluster ID at step 432. ID However, none of the points' neighbors are added to the cluster or analyzed further. (Reference) Figure 6 In step 604, since point 610 (“Y”) is identified as the core point, the neighbors of input point 610 are analyzed sequentially in steps 440 and 442 – including point 614 (labeled “Z”). Figure 6In the example shown, point 614 (“Z”) does not belong to another cluster. At step 442, it is determined that neighbor point 614 is not a core point because it does not include enough neighboring points within a search radius 616 of point 614. In some embodiments, neighbor point 614 will be identified as a boundary point at step 438 and will be added to a cluster at step 432, but this will not cause any of the boundary point's neighbors to be added to that cluster. For example, neighbor point 620 (labeled “W”) will not be added to the neighbor list and therefore will not be added to the current cluster.
[0054] If a neighboring point is identified as a core point at step 442, then at step 446, each neighbor of the core point identified at step 442 is checked. Again, for clarity, the neighboring point identified as a core point at step 442 is referred to as the input point for step 448. At step 448, each neighboring point of the input point is checked to determine if it has been previously visited. If a neighboring point has been previously visited, then at step 450, it is determined whether that neighboring point was previously identified as a noise point. If that neighboring point was previously identified as a noise point, then at step 438, the designation is changed to a boundary point, and at step 432, the neighboring point is added to the cluster ID. ID If a neighboring point has been previously visited but not previously identified as a noise point, this means that the point was previously added to another cluster, and therefore no further action should be taken on this point. In this case, the process continues at step 446 with the next neighbor in the for-loop at step 446. If, as determined at step 448, the neighboring point has not been previously visited, then at step 452, the point is added to the neighbor list, and at step 432, the input point (identified as a core point in steps 436 and / or 442) is assigned a cluster ID. ID The process continues until all neighbor points in the neighbor list have been analyzed.
[0055] However, as discussed above with respect to step 436, in some embodiments, determining that a neighboring point is not a core point (and therefore a boundary point) may further include checking the azimuth / elevation angles between the boundary point (referred to herein as the input point) and its neighboring points (referred to as adjacent points, to distinguish them from the term "adjacent point"). At step 444, the azimuth and / or elevation angles associated with the boundary point (e.g., the input point) are compared with the azimuth and / or elevation angles of the neighboring points (i.e., adjacent points). Figure 7The diagram shows that the problem is resolved via the addition of step 444, where multiple points 702, 704, and 706 have been added to the cluster, but point 706 is identified as a boundary point. Normally, this would mean that point 708 would not be added to the same cluster. However, in this example, the distance between points 706 and 708 is a result of the distance of point 708 from the LiDAR sensor 700 and the angle (azimuth) formed by the LiDAR beam and that point. Figure 7 In the example shown, points 700-716 are all associated with a semi-truck located on the side of the vehicle; however, the distance between adjacent points increases as points move further away from the LiDAR sensor and at different azimuth angles. This is remedied by examining the difference in azimuth / elevation angle between point 706, identified as a non-core point (i.e., a boundary point), and its neighbor 708. If the difference in azimuth / elevation angle is less than a threshold, neighbor 708 can be added to the neighbor list (and thus to the cluster).
[0056] exist Figure 4b In the illustrated embodiment, at step 444, if the difference between azimuth and elevation is not less than a threshold, this indicates that the points are not adjacent to each other from the perspective of the LiDAR pulse. In this case, the process continues at 438, where the neighboring points identified as not being core points in step 442 are identified as boundary points and added to the cluster ID at step 432. Conversely, if the difference between azimuth and elevation is less than the threshold, this indicates that the points may be adjacent to each other, and at step 448, it is determined whether the point has been previously visited for clustering purposes. If it is determined at step 448 that the point has been previously visited, it is determined at step 450 whether the point has been previously identified as a noise point. If the point is identified as a noise point, it is instead identified as a boundary point at step 438, and assigned to a cluster ID at step 432. ID Conversely, if the point is not identified as noise at step 450, it means that the point was previously added to another cluster and no further action should be taken on it. In this case, the process continues at step 446 with the next neighbor in the for loop. If it is determined at step 448 that the point has not yet been visited, then at step 452, the point (i.e., the neighboring point) is added to the neighbor list, and at step 432, the point is assigned a cluster ID. ID .
[0057] refer to Figure 6Point 614 (labeled "Z") is the neighboring point analyzed at step 442. In this example, neighboring point 614 is not a core point, so in some embodiments, neighboring point 614 will be identified as a boundary point at step 438. However, in some embodiments, neighboring point 614 is provided as input to the azimuth / elevation analysis at step 444 to determine whether points adjacent to neighboring point 614 should be added to the neighbor list. At step 444, neighboring point 614 becomes the input point, and the neighbors of point 614 (i.e., adjacent points) are analyzed to determine whether the difference in elevation / azimuth between the input point 614 and the adjacent point (e.g., point 620, labeled "W") is less than a threshold. If not, the adjacent point (e.g., point 620, "W") is not identified as a boundary point or included as part of a cluster. As a result, the process continues to step 438, where, as expected, input point 614 is identified as a boundary point (as a result of the determination made at step 442). If the difference in elevation / azimuth between input point 614 and its neighboring point (e.g., point 620, labeled "W") is less than a threshold, then at step 448, it is determined whether the neighboring point (e.g., point 620, "W") has been visited previously. If the neighboring point 620 ("W") has been visited previously, then at step 450, it is determined whether the point is a noise point. If the neighboring point 620 ("W") is a noise point, then at step 438, the point is identified as a boundary point, and at step 432, the point is added to the cluster ID. ID If neighboring point 620 (“W”) is not a noise point (and therefore was previously clustered), no additional steps are taken. Since there are no other neighbors for point 614, the process continues at step 434 with the next neighbor in the neighbor list. If neighboring point 620 (e.g., “W”) has not yet been visited, point 620 is added to the neighbor list at step 438 and assigned a cluster ID at step 432. ID In this way, neighboring point 620 is added to the cluster, even though point 614 is marked as a boundary point (such marking would typically exclude adding neighboring point 620 to the same cluster).
[0058] In this way, regarding Figure 4a and Figure 4b The described adaptive search for LiDAR-based clustering provides one or more clusters as output, with each cluster assigned one or more points. (As previously discussed...) Figure 2bThe clustering is provided as input to an object classification module that uses clustering to identify objects within the field of view of the LiDAR sensor. As described above, in some embodiments, adaptive search for LiDAR-based clustering allows modification of clustering parameters, including one or more of a minimum point threshold (used to classify points as core points) and a search radius. Specifically, allowing the search radius to be modified helps identify objects with different densities or regions of different densities (e.g., a shrub with leaves may have a different point density than a car). Additionally, modification of the clustering parameters allows the clustering algorithm to take into account objects located at various distances from the LiDAR sensor. That is, the farther an object is from the LiDAR sensor, the greater the distance between two adjacent points, and the fewer points there are on the object. Modifying parameters (such as the minimum point threshold and search radius) allows the clustering algorithm to cluster points associated with both distant and near objects. In some embodiments, adaptive search clustering for LiDAR-based clustering also allows for the connection of dense clusters with sparse clusters. Specifically, differences in azimuth and / or elevation angles are examined to determine whether a connection should be established between the boundary point and the core point. In this way, the adaptive search for LiDAR-based clustering is able to cluster different types of objects located at different distances and angles relative to the LiDAR sensor.
[0059] Discussion of possible embodiments
[0060] The following is a non-exclusive description of possible embodiments of the present invention.
[0061] According to one aspect, a method for clustering spatial data includes receiving a point cloud comprising a plurality of points defined in a three-dimensional (3D) space. The method further includes selecting one or more adaptive clustering parameters, iterating through each of the plurality of points in the point cloud, and selectively adding each point to one or more clusters based on the selected clustering parameters associated with each point.
[0062] The methods described in the preceding paragraphs may optionally include (additionally and / or alternatively) any one or more of the following features, configurations, and / or additional components.
[0063] For example, selecting one or more clustering parameters may include a minimum point threshold parameter and / or a search radius parameter.
[0064] In some embodiments, the minimum point threshold parameter and / or search radius parameter are selected based on the distance to the point.
[0065] In some embodiments, the minimum point threshold parameter decreases as the determined distance to the point increases.
[0066] In some embodiments, the search radius increases as the determined distance to the point increases.
[0067] In some embodiments, the method further includes: calculating the density associated with each of the plurality of points based on the number of neighboring points within the search radius of the point.
[0068] In some embodiments, calculating the density associated with each of the plurality of points includes: identifying the point as a core point based on a comparison of the number of neighboring points within the search radius of the point with a defined minimum point threshold; and if the point is not identified as a core point, increasing the search radius and retrieving additional neighboring points based on the increased search radius, wherein the density of the point is calculated based on the increased search radius and the additional neighboring points.
[0069] In some embodiments, multiple points are sorted based on the density of each calculated point.
[0070] In some embodiments, each of the multiple points in the point cloud is traversed based on the density of the sorted multiple points, wherein the points are traversed from dense to sparse.
[0071] In some embodiments, traversing each of a plurality of points in a point cloud and selectively adding each point to one or more clusters includes: selecting previously unclustered points, and if the selected point is a core point and has not been previously clustered, creating a new cluster. If the point is a core point, neighboring points are added to a neighbor list associated with the new cluster, wherein the neighboring points are within the search radius of the core point. Each point on the neighbor list is examined and identified as either a core point or a boundary point, wherein neighboring points identified as core points are assigned to the new cluster, and the neighbors of the neighboring points identified as core points are added to the neighbor list, wherein neighboring points identified as boundary points are assigned to the new cluster, but the neighbors of the boundary points are not added to the neighbor list.
[0072] In some embodiments, in response to identifying a point as a boundary point, the angle of incidence between the boundary point and points adjacent to the boundary point is compared with a threshold, wherein if the difference is less than the threshold, the adjacent point is added to the neighbor list associated with the new cluster if the adjacent point has not been previously assigned to a cluster.
[0073] In some embodiments, the angle of incidence is an azimuth and / or an elevation angle.
[0074] According to another approach, a method for clustering spatial data includes receiving a point cloud comprising multiple points defined in a three-dimensional (3D) space. Points that have not been previously clustered are selected from the point cloud, and if a selected point is not previously clustered and is identified as a core point based on the number of neighboring points within a search radius, a new cluster is created. If a core point is identified, its neighboring points are added to a neighbor list. For each point in the neighbor list, it is determined whether a neighboring point is also a core point. For a neighboring point identified as a core point, that point is added to the cluster, and the neighbors of that neighboring point (i.e., the core point) are added to the neighbor list for analysis. For a neighboring point not identified as a core point, the azimuth and / or elevation angle between the neighboring point and its adjacent points is compared to a threshold, wherein if the azimuth and / or elevation angle between the neighboring point and its adjacent points is less than the threshold, the adjacent point is added to the neighbor list if it has not been previously assigned to a cluster.
[0075] The methods described in the preceding paragraphs may optionally include (additionally and / or alternatively) any one or more of the following features, configurations, and / or additional components.
[0076] For example, if the azimuth and / or elevation angle between a neighboring point and an adjacent point is greater than a threshold, the neighboring point is identified as a boundary point and added to the cluster, and no further action is taken on the adjacent point.
[0077] In some embodiments, the method further includes: determining whether a neighboring point has been visited, wherein if the neighboring point has not been visited, the neighboring point is added to the neighbor list.
[0078] In some embodiments, if a neighboring point has been visited and was previously identified as a noise point, then the neighboring point is identified as a boundary point and added to the cluster.
[0079] In some embodiments, if a neighboring point has already been visited and the neighboring point was not previously identified as a noise point, the second point is not added to the current cluster.
[0080] According to another aspect, the system includes at least one processor and a clustering module configured to implement a density-based clustering algorithm when executed by the at least one processor. This density-based clustering algorithm clusters multiple points received by the system into one or more clusters. The density-based clustering algorithm is configured to: receive a point cloud comprising multiple points defined in a three-dimensional (3D) space, and apply a search algorithm to the point cloud, wherein the search algorithm selects clustering parameters including one or more of the following: a minimum point threshold and a search radius for each point in the point cloud. The density-based clustering algorithm is further configured to apply a clustering algorithm to the point cloud, wherein the clustering algorithm traverses at least some of the points in the point cloud and selectively adds points to clusters using the minimum point threshold and search radius associated with each point through the search algorithm.
[0081] The methods described in the preceding paragraphs may optionally include (additionally and / or alternatively) any one or more of the following features, configurations, and / or additional components.
[0082] For example, the search algorithm may further include: determining the distance to a point, and selecting a minimum point threshold for that point based on the determined distance to the point.
[0083] In some embodiments, the application search algorithm further includes: identifying the point as a core point based on a comparison of the number of neighboring points within a defined search radius of the point with a defined minimum point threshold; and if the point is not identified as a core point, increasing the search radius and retrieving additional neighboring points based on the increased search radius.
[0084] In some embodiments, the application search algorithm further includes: calculating the density associated with each point based on the number of neighbors located within a selected search radius associated with each point.
[0085] In some embodiments, applying the clustering algorithm further includes: traversing at least some of the points in the point cloud based on the calculated density associated with each point, wherein the points are traversed from dense to sparse.
[0086] In some embodiments, applying the clustering algorithm further includes: selecting previously unclustered points, and if the selected point is a core point and has not been previously clustered, creating a new cluster. If the point is a core point, neighboring points are added to a neighbor list associated with the new cluster, wherein the neighboring points are within the search radius of the core point. Each point in the neighbor list is examined and identified as either a core point or a boundary point, wherein neighboring points identified as core points are assigned to the new cluster, and the neighbors of the neighboring points identified as core points are added to the neighbor list. Conversely, neighboring points identified as boundary points are assigned to the new cluster, but the neighbors of the boundary points are not added to the neighbor list.
Claims
1. A method for clustering spatial data, the method comprising: Receives a point cloud comprising multiple points defined in a three-dimensional (3D) space; Select one or more adaptive clustering parameters for each of the plurality of points; Iterating through each of the plurality of points in the point cloud and selectively adding each of the points to one or more clusters based on selected clustering parameters associated with each point, wherein iterating through each of the plurality of points in the point cloud and selectively adding each of the points to one or more clusters includes: Select points that were not previously clustered; If the selected point is a core point and has not been clustered before, a new cluster is created; If the point is a core point, then neighboring points are added to the neighbor list associated with the new cluster, wherein the neighboring points are within the search radius of the core point; and Each point in the neighbor list is examined and each point is identified as a core point or a boundary point. Neighbors of points identified as core points are assigned to the new cluster, and neighbors of the neighbors of the points identified as core points are added to the neighbor list. Neighbors of points identified as boundary points are assigned to the new cluster, but neighbors of the boundary points are not added to the neighbor list.
2. The method as described in claim 1, characterized in that, Choose one or more adaptive clustering parameters, including: select a minimum point threshold parameter or a search radius parameter.
3. The method as described in claim 2, characterized in that, The minimum point threshold parameter or search radius parameter is selected based on the distance to the point.
4. The method as described in claim 3, characterized in that, The minimum point threshold parameter decreases as the determined distance to the point increases.
5. The method as described in claim 3, characterized in that, The search radius increases as the determined distance to the point increases.
6. The method as described in claim 1, characterized in that, Further includes: Based on the number of neighboring points within the search radius of the point, calculate the density associated with each of the plurality of points.
7. The method as described in claim 6, characterized in that, Calculating the density associated with each of the plurality of points includes: The point is identified as a core point based on a comparison of the number of neighboring points within its search radius with a defined minimum point threshold; and If the point is not identified as a core point, the search radius is increased, and additional neighboring points are retrieved based on the increased search radius, wherein the density of the point is calculated based on the increased search radius and the additional neighboring points.
8. The method as described in claim 6, characterized in that, Further includes: The points are sorted based on the density of each calculated point.
9. The method as described in claim 8, characterized in that, Traversing each of the plurality of points in the point cloud includes: traversing the points based on the density of the plurality of points in a sorted manner, wherein the points are traversed from dense to sparse.
10. The method as described in claim 1, characterized in that, In response to identifying a point as a boundary point, the incident angle between the boundary point and the points adjacent to the boundary point is compared with a threshold, wherein if the difference is less than the threshold, the adjacent point is added to the neighbor list associated with the new cluster if the adjacent point has not been previously assigned to a cluster.
11. The method as described in claim 10, characterized in that, The incident angle is either the azimuth or the elevation angle.
12. A method for clustering spatial data, the method comprising: Receives a point cloud comprising multiple points defined in a three-dimensional (3D) space; Select previously unclustered points from the point cloud; If the selected point has not been clustered before, and the selected point is determined as a core point based on the number of neighboring points within the search radius, then a new cluster is created; Add the neighboring points of the selected point to the neighbor list; For each point in the neighbor list, determine whether the neighboring point is a core point; For the neighboring points identified as core points, add the neighboring points to the cluster; as well as For neighboring points that are not identified as core points, determine whether the azimuth or elevation angle between the neighboring point and the adjacent point is less than a threshold. If the azimuth or elevation angle between the neighboring point and the adjacent point is less than the threshold, then if the adjacent point has not been previously assigned to a cluster, the adjacent point is added to the neighbor list.
13. The method as described in claim 12, characterized in that, If the azimuth or elevation angle between the neighboring point and the adjacent point is greater than a threshold, the neighboring point is identified as a boundary point and added to the cluster, and no further action is taken on the adjacent point.
14. The method as described in claim 12, characterized in that, Further includes: Determine whether the neighboring point has been visited, and if the neighboring point has not been visited, add the neighboring point to the neighbor list.
15. The method as described in claim 14, characterized in that, If a neighboring point has been visited and was previously identified as a noise point, then the neighboring point is identified as a boundary point and added to the cluster.
16. The method as described in claim 14, characterized in that, If a neighboring point has already been visited and was not previously identified as a noise point, then the neighboring point is not added to the current cluster.
17. A system comprising: At least one processor; as well as A clustering module configured to implement a density-based clustering algorithm when executed by the at least one processor, the density-based clustering algorithm clustering multiple points received by the system into one or more clusters, the density-based clustering algorithm being configured to: Receives a point cloud comprising multiple points defined in a three-dimensional (3D) space; A search algorithm is applied to the point cloud, wherein the search algorithm selects clustering parameters including one or more of the following: a minimum point threshold and a search radius for each point in the point cloud; and A clustering algorithm is applied to the point cloud, wherein the clustering algorithm traverses at least some of the points in the point cloud and uses the minimum point threshold and search radius associated with each point by the search algorithm to selectively add points to the cluster. The application of the clustering algorithm to each point in the point cloud further includes: Select points that were not previously clustered; If the selected point is a core point and has not been clustered before, a new cluster is created; If the point is a core point, then neighboring points are added to the neighbor list associated with the new cluster, wherein the neighboring points are within the search radius of the core point; and Each point in the neighbor list is examined and each point is identified as a core point or a boundary point. Neighbors of points identified as core points are assigned to the new cluster, and neighbors of the neighbors of the points identified as core points are added to the neighbor list. Neighbors of points identified as boundary points are assigned to the new cluster, but neighbors of the boundary points are not added to the neighbor list.
18. The system as claimed in claim 17, characterized in that, Applying the search algorithm to each point in the point cloud includes: Determine the distance to the point; and Based on the determined distance to the point, a minimum point threshold is selected for the point.
19. The system as claimed in claim 17, characterized in that, The application of the search algorithm further includes: Based on a comparison of the number of neighboring points within a defined search radius of the point with a defined minimum point threshold, the point is identified as a core point; and If the point is not identified as a core point, the search radius is increased, and additional neighboring points are retrieved based on the increased search radius.
20. The system as claimed in claim 17, characterized in that, The application of the search algorithm further includes: calculating the density associated with each of the points based on the number of neighbors located within a selected search radius associated with each point.
21. The system as claimed in claim 20, characterized in that, Applying the clustering algorithm further includes: traversing at least some of the points in the point cloud based on the calculated density associated with each point, wherein the points are traversed from dense to sparse.