Methods, apparatus, equipment and media for processing point cloud data

By using point cloud streaming and distributed parallel processing to construct voxel meshes and hierarchical bounding box trees, the memory limitations and low efficiency of laser SLAM equipment when processing large-scale point cloud data are solved, enabling fast and accurate generation of static environment 3D structures.

CN119596270BActive Publication Date: 2025-11-14REALSEE (BEIJING) TECHNOLOGY CO LTD
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
CN202411640549.7
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Filing Date
2024-11-15
Publication Date
2025-11-14
Estimated Expiration
2044-11-15

AI Technical Summary

Technical Problem

Existing laser SLAM equipment suffers from memory limitations and low processing efficiency when processing large-scale point cloud data due to interference from dynamic object point cloud data, especially when acquiring data with high line count lidar, making it difficult to quickly and robustly generate 3D structures of static environments.

Method used

A point cloud streaming block processing method is adopted, and a voxel mesh and hierarchical bounding box tree are constructed using a distributed system parallel processing approach. By measuring the number of intersections between the light segment and the voxel mesh and the number of scan points, it is possible to quickly determine whether the voxel mesh belongs to a dynamic object and output the voxel mesh that does not belong to a dynamic object.

Benefits of technology

It reduces the memory capacity requirements of the data processing terminal, improves judgment efficiency, and can quickly and accurately generate 3D scene images of static environments.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119596270B_ABST
    Figure CN119596270B_ABST
Patent Text Reader

Abstract

This disclosure provides a method, apparatus, device, and medium for processing point cloud data. The method includes: performing point cloud streaming block processing on input point cloud data to obtain multiple point cloud blocks; determining multiple light segments between multiple laser emission point locations and multiple point cloud locations based on the point cloud data; constructing voxelized meshes for each point cloud block based on the density information of scan points in the point cloud data to obtain multiple voxel meshes; determining the number of intersections between multiple light segments and each voxel mesh based on the hierarchical bounding box tree of each voxel mesh; determining whether each voxel mesh belongs to a dynamic object based on the number of intersections between multiple light segments and each voxel mesh, and the number of scan points within each voxel mesh; and outputting voxel meshes that do not belong to dynamic objects. This disclosure requires low memory capacity from the data processing terminal and can output voxel meshes that do not belong to dynamic objects.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] This disclosure relates to point cloud processing technology, and in particular to a method, apparatus, device, and medium for processing point cloud data. Background Technology

[0002] Laser SLAM (Simultaneous Localization and Mapping) is widely used in robotics, geographic information systems, surveying and mapping, and other fields as an efficient method for acquiring 3D point cloud data.

[0003] Common laser SLAM devices include handheld SLAM, backpack SLAM, vehicle-mounted SLAM, and drone SLAM. However, the presence of dynamic objects such as pedestrians or vehicles in the acquisition environment often interferes with the collected point cloud data. On the other hand, with the rapid advancement of laser sensors, such as 32-line, 64-line, and even 128-line LiDAR, as well as some non-repetitive scanning LiDAR, the amount of laser point cloud data has exploded.

[0004] Because laser SLAM devices may collect point cloud data containing dynamic objects, and the number of scan points in the point cloud data collected per unit time increases significantly with the increase in the line count of the laser SLAM device, there is a significant challenge in quickly and robustly processing large-scale point cloud data when generating a 3D structure of a static environment based on the point cloud data collected by laser SLAM devices. Current methods for removing dynamic object voxels from point cloud data construct a voxel structure based on the point cloud data and then determine whether each voxel belongs to a dynamic object. However, this method requires loading all the point cloud data, which, due to memory limitations, cannot be processed quickly. Summary of the Invention

[0005] This disclosure provides a method, apparatus, device, and medium for processing point cloud data to solve the above-mentioned problems.

[0006] A first aspect of this disclosure provides a method for processing point cloud data, including:

[0007] The input point cloud data is processed into point cloud blocks using a point cloud streaming method to obtain multiple point cloud blocks.

[0008] Based on the point cloud data, multiple light segments are determined between multiple laser emission point positions and multiple point cloud positions;

[0009] Using a distributed system and parallel processing, based on the density information of scan points in the point cloud data, a voxelized grid is constructed for each point cloud block in the multiple point cloud blocks, resulting in multiple voxel grids and the number of scan points in each voxel grid.

[0010] Using the distributed system and employing parallel processing, a hierarchical bounding box tree is constructed for each voxel grid in the plurality of voxel grids. Based on the hierarchical bounding box tree of each voxel grid, the number of intersections between the plurality of ray segments and each voxel grid in the plurality of voxel grids is determined.

[0011] Using the distributed system and employing parallel processing, based on the number of intersections between the multiple light segments and each voxel grid, and the number of scan points within each voxel grid, it is determined whether each voxel grid belongs to the voxel grid of a dynamic object.

[0012] Output voxel meshes that are not part of dynamic objects.

[0013] In some embodiments of this disclosure, the step of performing point cloud streaming block processing on the input point cloud data to obtain multiple point cloud blocks includes:

[0014] Based on the point cloud data, determine the bounding box of the scene corresponding to the point cloud data;

[0015] The bounding box of the scene is divided into blocks to obtain the multiple point cloud blocks.

[0016] In some embodiments of this disclosure, the step of constructing a voxelized mesh for each of the plurality of point cloud blocks based on the density information of scan points in the point cloud data, to obtain a plurality of voxel meshes and the number of scan points within each voxel mesh, includes:

[0017] Based on a preset point cloud resolution, a sparse mesh is constructed for the scene to obtain multiple sparse meshes;

[0018] The average point cloud density of the plurality of sparse grids is determined based on the number of scan points in the point cloud data.

[0019] Based on the average point cloud density, the plurality of sparse grids are divided into grids to obtain the plurality of voxel grids;

[0020] Based on the positions of the multiple voxel grids and the multiple point cloud positions, the number of scan points within each voxel grid is determined.

[0021] In some embodiments of this disclosure, the step of dividing the plurality of sparse grids based on the average point cloud density to obtain the plurality of voxel grids includes:

[0022] The multiple sparse grids are divided into multiple voxel grids based on the average point cloud density and a preset scaling factor.

[0023] In some embodiments of this disclosure, determining the number of scan points within each voxel grid based on the positions of the plurality of voxel grids and the plurality of point cloud positions includes:

[0024] Obtain the spatial coordinate range of each voxel mesh, and obtain the spatial coordinates of multiple points, wherein the multiple point cloud positions include the spatial coordinates of multiple points;

[0025] Based on the spatial coordinate range of each voxel grid and the spatial coordinates of the multiple points, the number of scan points within each voxel grid is determined.

[0026] In some embodiments of this disclosure, between the step of determining multiple light segments between multiple laser emission point positions and multiple point cloud positions based on the point cloud data, and the step of determining whether each voxel grid belongs to the voxel grid of a dynamic object based on the number of intersections between the multiple light segments and each voxel grid, and the number of scan points within each voxel grid, the following method is further included:

[0027] Intersection detection is performed between the plurality of point cloud blocks and the plurality of light segments, and at least one candidate light segment corresponding to each point cloud block is determined from the plurality of light segments based on the intersection detection results;

[0028] Obtain the number of intersections between at least one candidate ray segment corresponding to each point cloud block and each voxel mesh of the corresponding point cloud block;

[0029] The number of intersections between the multiple light segments and the voxel grids of the corresponding point cloud block is determined based on the number of intersections between at least one candidate light segment corresponding to each point cloud block and each voxel grid of the corresponding point cloud block, and the number of scan points in each voxel grid of the corresponding point cloud block.

[0030] In some embodiments of this disclosure, determining whether each voxel grid belongs to the voxel grid of a dynamic object based on the number of intersections between the plurality of light segments and each voxel grid, and the number of scan points within each voxel grid, includes:

[0031] Obtain a single voxel mesh from each voxel mesh;

[0032] If the ratio between the number of intersections between the plurality of light segments and the currently acquired voxel grid and the number of scan points within the currently acquired voxel grid is greater than a preset threshold, it is determined that the currently acquired voxel grid belongs to the voxel grid of a dynamic object.

[0033] If the ratio between the number of intersections between the plurality of light segments and the currently acquired voxel grid and the number of scan points within the currently acquired voxel grid is less than or equal to the preset threshold, it is determined that the currently acquired voxel grid does not belong to the voxel grid of the dynamic object.

[0034] A second aspect of this disclosure provides a point cloud data processing apparatus, comprising:

[0035] The streaming point cloud segmentation module is used to perform streaming point cloud segmentation on the input point cloud data to obtain multiple point cloud blocks;

[0036] A light segment determination module is used to determine multiple light segments between multiple laser emission point positions and multiple point cloud positions based on the point cloud data;

[0037] The voxel grid construction module is used to construct voxel grids for each point cloud block in the multiple point cloud blocks based on the density information of scan points in the point cloud data using a distributed system and parallel processing, thereby obtaining multiple voxel grids and the number of scan points in each voxel grid.

[0038] The intersection count determination module is used to construct a hierarchical bounding box tree for each voxel grid in the multiple voxel grids using the distributed system in a parallel processing manner, and determine the intersection count between the multiple light segments and each voxel grid in the multiple voxel grids based on the hierarchical bounding box tree of each voxel grid.

[0039] The voxel type determination module is used to determine whether each voxel grid belongs to the voxel grid of a dynamic object by using the distributed system in a parallel processing manner, based on the number of intersections between the multiple light segments and each voxel grid, and the number of scan points in each voxel grid.

[0040] The output module is used to output voxel meshes that are not part of a dynamic object.

[0041] In some embodiments of this disclosure, the streaming point cloud segmentation module is used to determine the bounding box of the scene corresponding to the point cloud data based on the point cloud data; the streaming point cloud segmentation module is also used to segment the bounding box of the scene to obtain the plurality of point cloud blocks.

[0042] In some embodiments of this disclosure, the voxel grid construction module is used to construct a sparse grid for the scene based on a preset point cloud resolution, thereby obtaining multiple sparse grids; the voxel grid construction module is also used to determine the average point cloud density of the multiple sparse grids based on the number of scan points in the point cloud data; the voxel grid construction module is also used to perform grid division on the multiple sparse grids based on the average point cloud density, thereby obtaining multiple voxel grids; the voxel grid construction module is also used to utilize the distributed system to adopt a parallel processing method to determine the number of scan points within each voxel grid based on the positions of the multiple voxel grids and the multiple point cloud positions.

[0043] In some embodiments of this disclosure, the voxelized mesh construction module is used to divide the plurality of sparse meshes based on the average point cloud density and a preset scaling factor to obtain the plurality of voxel meshes.

[0044] In some embodiments of this disclosure, the voxel grid construction module is used to obtain the spatial coordinate range of each voxel grid and the spatial coordinates of multiple points by using the distributed system in a parallel processing manner, wherein the multiple point cloud locations include the spatial coordinates of multiple points; the voxel grid construction module is also used to determine the number of scan points in each voxel grid based on the spatial coordinate range of each voxel grid and the spatial coordinates of the multiple points by using the distributed system in a parallel processing manner.

[0045] In some embodiments of this disclosure, the intersection count determination module is used to perform intersection detection between the plurality of point cloud blocks and the plurality of light segments using the distributed system in a parallel processing manner, and determine at least one candidate light segment corresponding to each point cloud block from the plurality of light segments based on the intersection detection results; the intersection count determination module is also used to obtain the intersection count between the at least one candidate light segment corresponding to each point cloud block and each voxel grid of the corresponding point cloud block using the distributed system in a parallel processing manner; the intersection count determination module is also used to determine the intersection count between the plurality of light segments and each voxel grid of the corresponding point cloud block based on the intersection count between the at least one candidate light segment corresponding to each point cloud block and each voxel grid of the corresponding point cloud block, and the number of scan points in each voxel grid of the corresponding point cloud block using the distributed system in a parallel processing manner.

[0046] In some embodiments of this disclosure, the voxel type determination module is used to acquire a voxel grid from each voxel grid using the distributed system in a parallel processing manner; the voxel type determination module is further used to determine that the currently acquired voxel grid belongs to the voxel grid of a dynamic object in response to a ratio between the number of intersections between the plurality of light segments and the currently acquired voxel grid and the number of scan points in the currently acquired voxel grid being greater than a preset threshold; the voxel type determination module is further used to determine that the currently acquired voxel grid does not belong to the voxel grid of a dynamic object in response to a ratio between the number of intersections between the plurality of light segments and the currently acquired voxel grid and the number of scan points in the currently acquired voxel grid being less than or equal to the preset threshold.

[0047] A third aspect of this disclosure provides an electronic device, comprising:

[0048] Memory, used to store computer program products;

[0049] A processor is configured to execute a computer program product stored in the memory, and when the computer program product is executed, to implement the above-described point cloud data processing method.

[0050] A fourth aspect of this disclosure provides a computer-readable storage medium having computer program instructions stored thereon, which, when executed by a processor, implement the above-described method for processing point cloud data.

[0051] A fifth aspect of this disclosure provides a computer program product, including computer program instructions, which, when executed by a processor, cause the processor to perform the above-described point cloud data processing method.

[0052] The point cloud data processing method, apparatus, device, and medium of this disclosure address the issue that after acquiring point cloud data of the surrounding environment using a laser SLAM device, if the data processing terminal loads all point cloud data and determines whether a voxel belongs to a dynamic object on a voxel-by-voxel basis, it not only places extremely high demands on the memory capacity of the data processing terminal but also results in low efficiency in determining whether a voxel belongs to a dynamic object. Therefore, by performing point cloud streaming block processing on the input point cloud data to obtain multiple point cloud blocks, and using a distributed system to adopt a parallel processing approach, a hierarchical bounding box tree of each voxel grid is generated based on the multiple point cloud blocks. Multiple ray segments between multiple laser emission point positions and multiple point cloud positions are obtained. Then, based on the number of intersections between the multiple ray segments and each voxel grid, and the number of points within each voxel grid, it is possible to quickly and accurately determine whether each voxel grid belongs to a voxel grid of a dynamic object, and only output voxel grids that do not belong to dynamic objects, which helps to quickly generate a 3D scene image of the surrounding static environment. This embodiment of the present disclosure performs streaming block division on real-time input point cloud data, streaming construction of hierarchical bounding box trees for each voxel mesh, and streaming determination of whether each voxel mesh belongs to the voxel mesh of a dynamic object. This not only has low memory capacity requirements for the data processing terminal, but also can quickly determine which voxels in the real-time input point cloud data belong to dynamic objects.

[0053] The technical solutions of this disclosure will be further described in detail below with reference to the accompanying drawings and embodiments. Attached Figure Description

[0054] The accompanying drawings, which form part of this specification, illustrate embodiments of this disclosure and, together with the description, serve to explain the principles of this disclosure.

[0055] This disclosure will become clearer with reference to the accompanying drawings and the following detailed description, wherein:

[0056] Figure 1 This is a flowchart illustrating a point cloud data processing method in one embodiment of the present disclosure;

[0057] Figure 2 This is a flowchart illustrating step S1 in some embodiments of this disclosure;

[0058] Figure 3 This is a flowchart illustrating step S3 in some embodiments of this disclosure;

[0059] Figure 4 This is a flowchart illustrating steps S3-4 in some embodiments of this disclosure;

[0060] Figure 5 This is a schematic diagram illustrating the generation of corresponding candidate ray segments from multiple point cloud blocks in one example of this disclosure;

[0061] Figure 6This is a flowchart illustrating step S5 in some embodiments of this disclosure;

[0062] Figure 7 This is a structural block diagram of a point cloud data processing device in one embodiment of the present disclosure;

[0063] Figure 8 This is a structural block diagram of an electronic device in one embodiment of the present disclosure. Detailed Implementation

[0064] Various exemplary embodiments of the present disclosure will now be described in detail with reference to the accompanying drawings. It should be noted that, unless otherwise specifically stated, the relative arrangement, numerical expressions, and values ​​of the components and steps set forth in these embodiments do not limit the scope of the present disclosure.

[0065] Those skilled in the art will understand that the terms "first," "second," etc., in the embodiments of this disclosure are only used to distinguish different steps, devices, or modules, and do not represent any specific technical meaning, nor do they indicate a necessary logical order between them.

[0066] It should also be understood that in the embodiments disclosed herein, "a plurality of" may refer to two or more, and "at least one" may refer to one, two or more.

[0067] It should also be understood that any component, data or structure mentioned in the embodiments of this disclosure can generally be understood as one or more unless expressly defined or given to the contrary in the context.

[0068] Furthermore, the term "and / or" in this disclosure is merely a description of the relationship between related objects, indicating that three relationships can exist. For example, A and / or B can represent: A existing alone, A and B existing simultaneously, or B existing alone. Additionally, the character " / " in this disclosure generally indicates that the preceding and following related objects have an "or" relationship.

[0069] It should also be understood that the description of the various embodiments in this disclosure emphasizes the differences between the various embodiments, and the similarities or similarities can be referred to each other. For the sake of brevity, they will not be described in detail.

[0070] The following description of at least one exemplary embodiment is merely illustrative and is in no way intended to limit this disclosure or its application or use.

[0071] Techniques, methods, and equipment known to those skilled in the art may not be discussed in detail, but where appropriate, such techniques, methods, and equipment should be considered part of the specification.

[0072] It should be noted that similar labels and letters in the following figures indicate similar items; therefore, once an item is defined in one figure, it does not need to be discussed further in subsequent figures.

[0073] The embodiments disclosed herein can be applied to electronic devices such as terminal devices, computer systems, and servers, and can operate together with a wide range of other general-purpose or special-purpose computing system environments or configurations. Examples of well-known terminal devices, computing systems, environments, and / or configurations suitable for use with electronic devices such as terminal devices, computer systems, and servers include, but are not limited to: personal computer systems, server computer systems, thin clients, thick clients, handheld or laptop devices, microprocessor-based systems, set-top boxes, programmable consumer electronics, network PCs, minicomputer systems, mainframe computer systems, and distributed cloud computing environments including any of the above systems, etc.

[0074] Electronic devices such as terminal devices, computer systems, and servers can be described in the general context of computer system executable instructions (such as program modules) executed by a computer system. Typically, program modules can include routines, programs, object programs, components, logic, data structures, etc., which perform specific tasks or implement specific abstract data types. Computer systems / servers can be implemented in distributed cloud computing environments, where tasks are executed by remote processing devices linked through communication networks. In distributed cloud computing environments, program modules can reside on local or remote computing system storage media, including storage devices.

[0075] It should be noted that in the point cloud data processing methods and apparatus of this disclosure, parallel processing can be performed using a distributed system. The following embodiments explicitly demonstrate that using a distributed system for parallel processing can significantly improve data processing efficiency; the remaining steps can also be processed using a distributed system for parallel processing to further improve data processing efficiency.

[0076] Figure 1 This is a flowchart illustrating a point cloud data processing method in one embodiment of this disclosure. Figure 1 As shown, the method for streaming point cloud data includes the following steps:

[0077] S1: Perform point cloud streaming block processing on the input point cloud data to obtain multiple point cloud blocks. The point cloud streaming block processing involves streaming the point cloud data to divide it into blocks, and can also stream the position information of the scan points in the point cloud data and write it into the corresponding point cloud blocks.

[0078] Laser SLAM equipment is used to scan the surrounding environment in real time, thereby acquiring point cloud data of the surrounding environment in real time.

[0079] For the point cloud data currently input to the laser SLAM device, the point cloud data is processed into multiple point cloud blocks using a preset point cloud segmentation method. The range of coordinates for each point cloud block in a preset 3D coordinate system (e.g., the coordinate system of the laser SLAM device) can then be obtained. The preset point cloud segmentation method is pre-defined and can be related to the effective point cloud acquisition range and point cloud positioning accuracy of the laser SLAM device.

[0080] In addition, the location information of scanned points in point cloud data can be read in stream and written into the corresponding point cloud blocks according to the location information of the scanned points.

[0081] S2: Based on point cloud data, determine multiple light segments between multiple laser emission point positions and multiple point cloud positions.

[0082] The point cloud data currently input into the laser SLAM device includes multiple laser emission point locations and multiple point cloud locations obtained through laser scanning. Each laser emission point location and each point cloud location can be represented by three-dimensional coordinates. For example, each laser emission point location and each point cloud location can be represented by the corresponding three-dimensional coordinate values ​​in the coordinate system of the laser SLAM device.

[0083] Based on the correspondence between multiple laser emission point positions and multiple point cloud positions, as well as the three-dimensional coordinates of each laser emission point position and each point cloud position, we can obtain multiple light segments generated by laser scanning between multiple laser emission point positions and multiple point cloud positions, and the expressions for multiple light segments. Furthermore, we can obtain the three-dimensional coordinates of each point on the multiple light segments.

[0084] S3: Using a distributed system and parallel processing, based on the density information of scanned points in the point cloud data, a voxelized mesh is constructed for each point cloud block in multiple point cloud blocks, resulting in multiple voxel meshes and the number of points in each voxel mesh.

[0085] This method utilizes a distributed system and parallel processing to construct a voxel grid for each of multiple point cloud blocks using a pre-defined voxel grid construction method. Based on the density information of scanned points in the point cloud data, a voxel grid is built through streaming processing, resulting in multiple voxel grids. The streaming processing method for constructing the voxel grid for each point cloud block involves streaming the point cloud data of each block and dividing it into multiple voxel grids of the same shape using the same partitioning method, with adjacent faces of adjacent voxel grids being tangent. Each voxel grid can be either a cube or a cuboid.

[0086] By using a distributed system and parallel processing, after obtaining multiple voxel grids, the range of coordinates for each voxel grid can be determined based on the range of coordinates for each point cloud block in a preset 3D coordinate system and the position of each voxel grid in each point cloud block.

[0087] In one example of this disclosure, the input point cloud data is processed into multiple point cloud blocks through point cloud streaming block segmentation, including point cloud block A. Point cloud block A is equally divided into segments O in the x-axis direction, segments P in the y-axis direction, and segments Q in the z-axis direction. Here, O, P, and Q are all integers greater than 1.

[0088] The x-coordinate of point cloud block A takes values ​​in the range [x...]. m ,x n The range of values ​​for the y-coordinate is [y...]. m ,y n The range of z-coordinate values ​​is [z m ,z n ], where (x m ,y m ,z m (x) represents the three-dimensional coordinates of a vertex of point cloud block A. n ,y n ,z n ) is the distance from the vertex (x) n ,y n ,z n The three-dimensional coordinates of the other vertex that is furthest away.

[0089] Point cloud block A's point cloud block (O) i ,P i Q i The range of x-coordinate values ​​is [x...]. m* (O i -1) / O,x m* O i / O], the range of the y-coordinate is [y m* (P i -1) / P,y m* P i / P], the range of z-coordinate values ​​is [z m* (Q i -1) / Q,z m* Q i / Q]. Where 1≤O i ≤O, 1≤P i ≤P, 1≤Q i ≤Q.

[0090] By using a distributed system and parallel processing, based on the range of coordinates of each voxel grid and the three-dimensional coordinates of each point in the point cloud data, the voxel grid to which each point belongs can be obtained. By counting the number of points in each voxel grid, the total number of points in each voxel grid can be obtained.

[0091] S4: Using a distributed system and parallel processing, construct a hierarchical bounding box tree for each voxel grid in multiple voxel grids. Based on the hierarchical bounding box tree of each voxel grid, determine the number of intersections between multiple ray segments and each voxel grid in multiple voxel grids.

[0092] By utilizing a distributed system and employing parallel processing, a Bounding Volume Hierarchy (BVH) tree is constructed for each voxel grid in multiple voxel grids. The BVH uses an axis-aligned bounding box (AABB) as the basis for spatial partitioning. Since a voxel grid can be considered as an AABB, this embodiment uses the voxel grid as the basis for spatial partitioning.

[0093] Using a distributed system and parallel processing, a voxel grid is selected from multiple voxel grids. The BVH tree of this voxel grid is used to detect whether each of the multiple ray segments intersects with the voxel grid. The detection method is the same as the detection of whether a ray intersects with an AABB, which is well known to those skilled in the art, and will not be described in detail.

[0094] S5: Using a distributed system and parallel processing, based on the number of intersections between multiple light segments and each voxel mesh, and the number of points within each voxel mesh, determine whether each voxel mesh belongs to the voxel mesh of a dynamic object.

[0095] Since the number of light rays passing through a voxel of a dynamic object is much greater than the number of points within the voxel, a distributed system is used to process the data in parallel. For each voxel mesh, the number of intersections (voxel_hit_count) between multiple light rays and the voxel mesh is obtained, along with the number of points (pt_count_in_voxel) within the voxel mesh. Based on the numerical relationship between voxel_hit_count and pt_count_in_voxel, it can be quickly determined whether the voxel mesh belongs to the voxel mesh of a dynamic object.

[0096] S6: Outputs voxel meshes that do not belong to dynamic objects.

[0097] It outputs only voxel meshes that do not belong to dynamic objects, but not voxel meshes that do belong to dynamic objects, thereby achieving streaming removal of voxels of dynamic objects, which helps to quickly and accurately generate static 3D structures of scenes.

[0098] In this embodiment, after acquiring point cloud data of the surrounding environment using a laser SLAM device, if the data processing terminal loads all the point cloud data and determines whether each voxel belongs to a dynamic object, it will not only place extremely high demands on the memory capacity of the data processing terminal, but also have low efficiency in determining whether a voxel belongs to a dynamic object. Therefore, by performing point cloud streaming block processing on the input point cloud data to obtain multiple point cloud blocks, and using a distributed system to process in parallel, a hierarchical bounding box tree of each voxel grid is generated based on the multiple point cloud blocks, and multiple ray segments between multiple laser emission point positions and multiple point cloud positions are obtained. Then, based on the number of intersections between multiple ray segments and each voxel grid, as well as the number of points in each voxel grid, it is possible to quickly and accurately determine whether each voxel grid belongs to a dynamic object voxel grid, and only output voxel grids that do not belong to dynamic objects, which helps to quickly generate a 3D scene image of the surrounding static environment. This embodiment of the present disclosure performs streaming block division on real-time input point cloud data, streaming construction of hierarchical bounding box trees for each voxel mesh, and streaming determination of whether each voxel mesh belongs to the voxel mesh of a dynamic object. This not only has low memory capacity requirements for the data processing terminal, but also can quickly determine which voxels in the real-time input point cloud data belong to dynamic objects.

[0099] Figure 2 This is a flowchart illustrating step S1 in some embodiments of this disclosure. For example... Figure 2 As shown, step S1 includes the following steps:

[0100] S1-1: Based on point cloud data, determine the bounding box of the scene corresponding to the point cloud data.

[0101] Based on the location of each point in the point cloud data, the AABB generation method can be used to generate the AABB corresponding to the scene of the point cloud data.

[0102] S1-2: Divide the bounding box of the scene into blocks to obtain multiple point cloud blocks.

[0103] The scene is divided into AABBs according to the preset block size to obtain multiple point cloud blocks in the scene.

[0104] In some examples disclosed herein, the point cloud data corresponds to a scene of 100m*100m*30m, and the preset block size is 16m*16m*16m, which allows the scene to be divided into... A point cloud block. Among them, This indicates rounding up. The system reads the position of each point in the point cloud data in a streaming manner, determines the point cloud block to which each point belongs based on its 3D coordinates and the range of values ​​for each point cloud block on the three coordinate axes, and then streams the data to the corresponding point cloud file.

[0105] In this embodiment, after generating the bounding box corresponding to the scene for the real-time input point cloud data, the bounding box is streamed into multiple point cloud blocks. The streaming processing method can reduce the memory capacity requirements of the laser SLAM device, which helps to improve the efficiency of judging whether each voxel mesh in multiple point cloud blocks belongs to a dynamic object, and thus helps to quickly and accurately generate the static three-dimensional structure of the scene.

[0106] Figure 3 This is a flowchart illustrating step S3 in some embodiments of this disclosure. For example... Figure 3 As shown, step S3 includes the following steps:

[0107] S3-1: Construct a sparse mesh for the scene based on the preset point cloud resolution to obtain multiple sparse meshes.

[0108] The lower limit of the point cloud resolution can be set according to the laser ranging accuracy of the laser SLAM device. Based on the lower limit of the point cloud resolution, an appropriate point cloud resolution can be set, and then multiple sparse grids can be constructed for the scene corresponding to the real-time input point cloud data according to the set point cloud resolution.

[0109] In one example of this disclosure, if the laser ranging accuracy of the laser SLAM device is C1*C2*C3 (cm) 3 Where C1, C2, and C3 are all integers greater than 1, the lower limit of the point cloud resolution can be C1*C2*C3 (cm). 3 ).

[0110] S3-2: Determine the average point cloud density of multiple sparse grids based on the number of points in the point cloud data.

[0111] Each point in a point cloud can be viewed as a discrete sampling point in space. To calculate the number of intersections between a ray and a point, voxel sampling of the point cloud data is required. If the voxel grid is too large, although it consumes less memory when processing the point cloud data, the accuracy of determining the number of intersections between a ray and a point is low; if the voxel grid is too small, although the accuracy of determining the number of intersections between a ray and a point is high, it consumes more memory when processing the point cloud data. In this embodiment, the voxel grid size is determined based on the point cloud density, which balances the memory usage when processing the point cloud data and the accuracy of determining the number of intersections between a ray and a point.

[0112] In one example of this disclosure, the resolution can be larger than the actual point cloud resolution, for example, 1*1*1(m 3 A sparse grid is constructed using a resolution of 1 cubic meter. By statistically analyzing the average number of points within 1 cubic meter, the average point cloud density of multiple sparse grids is estimated.

[0113] S3-3: Using a distributed system and parallel processing, multiple grids are divided based on the average point cloud density to obtain multiple voxel grids.

[0114] Multiple voxel grids are obtained by dividing multiple sparse grids based on the average point cloud density. This can balance the memory usage and the accuracy of determining the number of intersections between a ray and a point when processing point cloud data.

[0115] Furthermore, by utilizing a distributed system and employing parallel processing, a unique identifier can be assigned to each voxel grid within a point cloud block based on the value range of each point cloud block on the three coordinate axes and the spatial size of the voxel grid. For example, a unique identifier can be assigned to each voxel grid in a point cloud block using the following formula (1):

[0116] id=x+dimx*y+z*(dimx*dimy) formula (1)

[0117] Where id represents the unique identifier of the voxel grid, (dimx,dimy,dimz) is the range of values ​​on the x, y, and z axes, and (x,y,z) are the coordinates of the voxel grid.

[0118] Using a distributed system and parallel processing, for the currently acquired point cloud block, a scan point in the point cloud block is read, and the following calculation is performed:

[0119] Its voxel coordinates, such as the x-coordinate, can be calculated using the following formula (2):

[0120] x = (point.x - box.min.x) / voxel_size Formula (2)

[0121] Where point.x is the x-coordinate of the scan point in the voxel grid coordinate system, box.min.x represents the minimum coordinate value of the bounding box on the x-axis, and voxel_size represents the size of the voxel grid.

[0122] The y and z coordinates of a voxel mesh are calculated in a similar way to the x coordinates of a voxel mesh; simply replace x with y or z in the formula.

[0123] S3-4: Using a distributed system and parallel processing, determine the number of points in each voxel grid based on the positions of multiple voxel grids and multiple point cloud positions.

[0124] By using a distributed system and parallel processing, the range of values ​​for each sparse grid on the three coordinate axes can be determined based on the range of values ​​for each point cloud block on the three coordinate axes. The range of values ​​for each voxel grid on the three coordinate axes can then be determined based on the range of values ​​for each voxel grid on the three coordinate axes and the three-dimensional coordinate value of each point. Thus, the number of points included in each voxel grid can be determined.

[0125] In this embodiment, each point in the point cloud can be considered a discrete sampling point in space. To calculate the number of intersections between a ray and a point, voxel sampling of the point cloud data is required. Since a large voxel grid, while requiring less memory for processing the point cloud data, results in low accuracy in determining the number of intersections, and a small voxel grid, while achieving high accuracy, requires more memory, multiple sparse grids are divided into multiple voxel grids based on the average point cloud density. This balances memory usage during point cloud data processing with the accuracy in determining the number of intersections. Statistical analysis of the number of points in each voxel grid helps quickly determine the number of intersections between ray segments and each voxel grid, thereby facilitating the rapid determination of whether each voxel grid belongs to a dynamic object and improving the speed and accuracy of generating static 3D structures of the scene.

[0126] In some embodiments of this disclosure, step S3-3 specifically includes: dividing multiple sparse grids into multiple voxel grids based on the average point cloud density and a preset scaling factor.

[0127] Since the average point cloud density of multiple sparse grids can characterize the average number of points in each sparse grid, the average space occupied by each point cloud can be determined based on this average point cloud density, and thus the scaling factor for amplifying the space occupied by each point cloud can be determined.

[0128] Each sparse grid can be divided using the following formula (3):

[0129] voxel_size=point_size*scale formula (3)

[0130] Where `voxel_size` represents the spatial size of the voxel mesh, `point_size` represents the space occupied by each point cloud, and `scale` represents the scaling factor. A scale that is too large will result in excessively large voxels, potentially causing a mosaic effect (aliasing) when detecting whether a voxel belongs to a dynamic object, or even excessive deletion of point clouds, thus reducing detection accuracy. For example, 1 <scale<10。

[0131] In this embodiment, since the average point cloud density can determine the average space occupied by each point cloud, multiple sparse grids can be divided into grids based on the average point cloud density and the scaling factor to obtain multiple voxel grids with reasonable space size.

[0132] Figure 4 This is a flowchart illustrating steps S3-4 in some embodiments of this disclosure. For example... Figure 4 As shown, step S3-4 includes the following steps:

[0133] S3-4-1: Using a distributed system and parallel processing, obtain the spatial coordinate range of each voxel grid and the spatial coordinates of multiple points. The multiple point cloud locations include the spatial coordinates of multiple points.

[0134] By using a distributed system and parallel processing, the range of values ​​for each voxel grid on the x-axis, y-axis, and z-axis can be determined based on the position of each voxel grid in each point cloud block and the spatial coordinate orientation of each point cloud block.

[0135] S3-4-2: Using a distributed system and parallel processing, the number of points in each voxel grid is determined based on the spatial coordinate range of each voxel grid and the spatial coordinates of multiple points.

[0136] By using a distributed system and parallel processing, based on the value range of each voxel grid on the x-axis, y-axis, and z-axis, as well as the coordinate value of each point, the voxel grid to which each point belongs can be quickly determined. This allows for the counting of the number of points in each voxel grid, including the input point cloud data.

[0137] In this embodiment, based on the spatial coordinate range of each voxel grid and the spatial coordinates of multiple points, the number of points included in each voxel grid can be quickly and accurately determined. This helps to quickly and accurately determine the number of intersections between multiple light segments and each voxel grid, and further helps to quickly and accurately determine whether each voxel grid belongs to the voxel grid of a dynamic object, thereby helping to quickly generate a 3D scene image of the surrounding static environment.

[0138] In some embodiments of this disclosure, the steps between steps S2 and S5 may further include: using a distributed system to perform intersection detection between multiple point cloud blocks and multiple ray segments in a parallel processing manner; determining at least one candidate ray segment corresponding to each point cloud block from the multiple ray segments based on the intersection detection results; using a distributed system to perform parallel processing to obtain the number of intersections between at least one candidate ray segment corresponding to each point cloud block and each voxel grid of the corresponding point cloud block; using a distributed system to perform parallel processing to determine the number of intersections between multiple ray segments and each voxel grid of the corresponding point cloud block based on the number of intersections between at least one candidate ray segment corresponding to each point cloud block and each voxel grid of the corresponding point cloud block, and the number of points in each voxel grid of the corresponding point cloud block.

[0139] The light ray segments between laser emission points are sparse relative to the entire space. The computational cost of a light ray segment is equivalent to the amount of point cloud data (each point has an emission point, forming a light ray). The length of the light ray segment depends on the point cloud detection distance and the distribution of objects in the space.

[0140] Generally, the distribution of a point cloud can be viewed as a sparse sampling of a spatial object, so these ray segments are inherently sparse. For each voxel grid, the number of ray segments that need to be tested to intersect with each voxel grid includes: 1. Ray segments corresponding to all points within the current voxel grid; 2. Ray segments where the point cloud is not within the current voxel grid but the ray passes through the current voxel grid. For the first type of ray segment, since it will inevitably intersect with the current voxel grid, no additional calculation is needed; the number of intersections is determined directly based on the number of points included in the current voxel grid. For the second type of ray segment, the AABB intersection algorithm can be used to quickly determine whether each ray segment intersects with the point cloud block to which the current voxel grid belongs, thereby determining at least one candidate ray segment and the number of intersections between the at least one candidate ray segment and each voxel grid.

[0141] Figure 5 This is a schematic diagram illustrating the generation of corresponding candidate ray segments from multiple point cloud blocks in one example of this disclosure. For example... Figure 5 As shown, a distributed system is used to construct corresponding bounding boxes for different point cloud blocks using parallel processing, and to obtain the ray segments corresponding to all scan points in each point cloud block. Using the distributed system and parallel processing, all ray segments corresponding to the point cloud data within each point cloud block are subjected to intersection tests with the bounding boxes corresponding to other point cloud blocks. Based on the intersection test results, candidate ray segments corresponding to each point cloud block can be identified.

[0142] By summing the number of intersections determined by the first and second light segments respectively, we can obtain the number of intersections between all light segments and the current voxel mesh.

[0143] In this embodiment, by performing intersection detection between multiple point cloud blocks and multiple light segments, at least one candidate light segment that intersects with each point cloud block can be quickly determined. Based on the number of intersections between at least one candidate light segment and the corresponding voxel grid, and the number of points in the corresponding voxel grid, the number of intersections between the multiple light segments and the corresponding voxel grid can be quickly and accurately determined.

[0144] Figure 6 This is a flowchart illustrating step S5 in some embodiments of this disclosure. For example... Figure 6 As shown, step S5 includes the following steps:

[0145] S5-1: Utilize a distributed system to obtain a single voxel grid from each voxel grid using parallel processing.

[0146] S5-2: If the ratio between the number of intersections between multiple light segments and the currently acquired voxel mesh and the number of points within the currently acquired voxel mesh is greater than a preset threshold, it is determined that the currently acquired voxel mesh belongs to the voxel mesh of a dynamic object.

[0147] S5-3: If the ratio between the number of intersections between multiple light segments and the currently acquired voxel mesh and the number of points within the currently acquired voxel mesh is less than or equal to a preset threshold, it is determined that the currently acquired voxel mesh does not belong to the voxel mesh of the dynamic object.

[0148] For each voxel grid, the calculation can be performed using the following formula (4):

[0149] factor=voxel_hit_count / pt_count_in_voxel formula (4)

[0150] Here, factor represents the ratio between the number of intersections between multiple ray segments and the currently acquired voxel mesh, and the number of points within the currently acquired voxel mesh; voxel_hit_count represents the number of intersections between the voxel mesh and the ray; and pt_count_in_voxel represents the number of points within the voxel mesh.

[0151] When the factor is greater than the preset threshold, it is determined that the currently acquired voxel mesh belongs to the voxel mesh of the dynamic object; otherwise, it is determined that the currently acquired voxel mesh does not belong to the voxel mesh of the dynamic object.

[0152] Figure 7 This is a structural block diagram of a point cloud data processing device according to one embodiment of this disclosure. Figure 7 As shown, the apparatus for streaming point cloud data includes:

[0153] The streaming point cloud segmentation module 100 is used to perform streaming point cloud segmentation on the input point cloud data to obtain multiple point cloud blocks.

[0154] The ray segment determination module 200 is used to determine multiple ray segments between multiple laser emission point positions and multiple point cloud positions based on point cloud data;

[0155] The voxel grid construction module 300 is used to construct voxel grids for each point cloud block in multiple point cloud blocks by using a distributed system and parallel processing, based on the density information of scan points in point cloud data, to obtain multiple voxel grids and the number of scan points in each voxel grid.

[0156] The intersection number determination module 400 is used to construct a hierarchical bounding box tree for each voxel grid in multiple voxel grids using a distributed system and parallel processing. Based on the hierarchical bounding box tree of each voxel grid, the number of intersections between multiple light segments and each voxel grid in multiple voxel grids is determined.

[0157] The voxel type determination module 500 is used to determine whether each voxel grid belongs to the voxel grid of a dynamic object by using a distributed system and parallel processing, based on the number of intersections between multiple light segments and each voxel grid, and the number of scan points in each voxel grid.

[0158] Output module 600 is used to output voxel meshes that are not dynamic objects.

[0159] In some embodiments of this disclosure, the streaming point cloud segmentation module 100 is used to determine the bounding box of the scene corresponding to the point cloud data based on the point cloud data; the streaming point cloud segmentation module 100 is also used to segment the bounding box of the scene to obtain multiple point cloud blocks.

[0160] In some embodiments of this disclosure, the voxel grid construction module 300 is used to construct a sparse grid for the scene based on a preset point cloud resolution, thereby obtaining multiple sparse grids; the voxel grid construction module 300 is also used to determine the average point cloud density of the multiple sparse grids based on the number of scan points in the point cloud data; the voxel grid construction module 300 is also used to perform grid division on the multiple sparse grids based on the average point cloud density, thereby obtaining multiple voxel grids; the voxel grid construction module 300 is also used to utilize a distributed system to adopt a parallel processing method, based on the positions of the multiple voxel grids and the multiple point cloud positions, to determine the number of scan points in each voxel grid.

[0161] In some embodiments of this disclosure, the voxelization mesh construction module 300 is used to divide multiple sparse meshes based on the average point cloud density and a preset scaling factor to obtain multiple voxel meshes.

[0162] In some embodiments of this disclosure, the voxel grid construction module 300 is used to obtain the spatial coordinate range of each voxel grid and the spatial coordinates of multiple points by using a distributed system in parallel processing. The multiple point cloud locations include the spatial coordinates of multiple points. The voxel grid construction module 300 is also used to determine the number of scan points in each voxel grid based on the spatial coordinate range of each voxel grid and the spatial coordinates of multiple points by using a distributed system in parallel processing.

[0163] In some embodiments of this disclosure, the intersection count determination module 400 is used to perform intersection detection between multiple point cloud blocks and multiple light segments using a distributed system in a parallel processing manner, and determine at least one candidate light segment corresponding to each point cloud block from the multiple light segments based on the intersection detection results; the intersection count determination module 400 is also used to obtain the intersection count between at least one candidate light segment corresponding to each point cloud block and each voxel grid of the corresponding point cloud block using a distributed system in a parallel processing manner; the intersection count determination module 400 is also used to determine the intersection count between multiple light segments and each voxel grid of the corresponding point cloud block based on the intersection count between at least one candidate light segment corresponding to each point cloud block and each voxel grid of the corresponding point cloud block, and the number of scan points in each voxel grid of the corresponding point cloud block using a distributed system in a parallel processing manner.

[0164] In some embodiments of this disclosure, the voxel type determination module 500 is used to acquire a voxel mesh from each voxel mesh using a distributed system and parallel processing. The voxel type determination module 500 is also used to determine that the currently acquired voxel mesh belongs to the voxel mesh of a dynamic object if the ratio between the number of intersections between multiple light segments and the currently acquired voxel mesh and the number of scan points within the currently acquired voxel mesh is greater than a preset threshold. The voxel type determination module 500 is also used to determine that the currently acquired voxel mesh does not belong to the voxel mesh of a dynamic object if the ratio between the number of intersections between multiple light segments and the currently acquired voxel mesh and the number of scan points within the currently acquired voxel mesh is less than or equal to a preset threshold.

[0165] It should be noted that the specific implementation of the apparatus for streaming point cloud data in this disclosure is similar to the specific implementation of the method for streaming point cloud data in this disclosure, and the technical effects of the apparatus for streaming point cloud data in this disclosure are similar to the technical effects of the method for streaming point cloud data in this disclosure. For details, please refer to the description of the method for streaming point cloud data. To reduce redundancy, further details will not be provided.

[0166] In addition, this disclosure also provides an electronic device, including:

[0167] Memory, used to store computer programs;

[0168] A processor is configured to execute a computer program stored in the memory, wherein when the computer program is executed, it implements the point cloud data processing method described in any of the above embodiments of the present disclosure.

[0169] Below, for reference Figure 8 To describe an electronic device according to embodiments of this disclosure. For example... Figure 8 As shown, the electronic device includes one or more processors and memory.

[0170] A processor can be a central processing unit (CPU) or other form of processing unit with data processing and / or instruction execution capabilities, and can control other components in an electronic device to perform desired functions.

[0171] The memory can store one or more computer program products, and the memory can include various forms of computer-readable storage media, such as volatile memory and / or non-volatile memory. The volatile memory may include, for example, random access memory (RAM) and / or cache memory. The non-volatile memory may include, for example, read-only memory (ROM), hard disk, flash memory, etc. One or more computer program products can be stored on the computer-readable storage medium, and the processor can run the computer program products to implement the point cloud data processing methods of the various embodiments of this disclosure described above, and / or other desired functions.

[0172] In one example, the electronic device may also include input devices and output devices, which are interconnected via a bus system and / or other forms of connection mechanism (not shown).

[0173] In addition, the input device may also include, for example, a keyboard, a mouse, etc.

[0174] This output device can output various information to the outside, including determined distance information, direction information, etc. The output device may include, for example, a display, a speaker, a printer, and a communication network and its connected remote output devices, etc.

[0175] Of course, for the sake of simplicity, Figure 8 Only some of the components of the electronic device relevant to this disclosure are shown, omitting components such as buses, input / output interfaces, etc. In addition, the electronic device may include any other suitable components depending on the specific application.

[0176] In addition to the methods and apparatus described above, embodiments of this disclosure may also be computer program products, including computer program instructions that, when executed by a processor, cause the processor to perform the steps in the point cloud data processing methods according to various embodiments of this disclosure as described in the foregoing portion of this specification.

[0177] The computer program product can be written in any combination of one or more programming languages ​​to perform the operations of the embodiments of this disclosure. The programming languages ​​include object-oriented programming languages ​​such as Java and C++, as well as conventional procedural programming languages ​​such as C or similar languages. The program code can be executed entirely on a user's computing device, partially on a user's computing device, as a standalone software package, partially on a user's computing device and partially on a remote computing device, or entirely on a remote computing device or server.

[0178] Furthermore, embodiments of this disclosure may also be computer-readable storage media storing computer program instructions thereon, which, when executed by a processor, cause the processor to perform the steps in the point cloud data processing methods according to various embodiments of this disclosure described in the foregoing portion of this specification.

[0179] The computer-readable storage medium may be any combination of one or more readable media. A readable medium may be a readable signal medium or a readable storage medium. A readable storage medium may, for example, include, but is not limited to, electrical, magnetic, optical, electromagnetic, infrared, or semiconductor systems, apparatuses, or devices, or any combination thereof. More specific examples of readable storage media (a non-exhaustive list) include: electrical connections having one or more wires, portable disks, hard disks, random access memory (RAM), read-only memory (ROM), erasable programmable read-only memory (EPROM or flash memory), optical fibers, portable compact disk read-only memory (CD-ROM), optical storage devices, magnetic storage devices, or any suitable combination thereof.

[0180] The basic principles of this disclosure have been described above with reference to specific embodiments. However, it should be noted that the advantages, benefits, and effects mentioned in this disclosure are merely examples and not limitations, and should not be considered as essential features of each embodiment of this disclosure. Furthermore, the specific details disclosed above are for illustrative and facilitative purposes only, and are not limitations. These details do not limit the scope of this disclosure to the necessity of employing the aforementioned specific details for implementation.

[0181] The various embodiments in this specification are described in a progressive manner, with each embodiment focusing on its differences from other embodiments. Similar or identical parts between embodiments can be referred to interchangeably. For system embodiments, since they largely correspond to method embodiments, the description is relatively simple; relevant parts can be referred to the descriptions in the method embodiments.

[0182] The block diagrams of devices, apparatuses, devices, and systems disclosed herein are merely illustrative examples and are not intended to require or imply that they must be connected, arranged, or configured in the manner shown in the block diagrams. As those skilled in the art will recognize, these devices, apparatuses, devices, and systems can be connected, arranged, and configured in any manner. Words such as “comprising,” “including,” “having,” etc., are open-ended terms meaning “including but not limited to,” and are used interchangeably with them. The terms “or” and “and” as used herein refer to the terms “and / or,” and are used interchangeably with them unless the context clearly indicates otherwise. The term “such as” as used herein refers to the phrase “such as but not limited to,” and is used interchangeably with it.

[0183] The methods and apparatus of this disclosure may be implemented in many ways. For example, they may be implemented by software, hardware, firmware, or any combination of software, hardware, and firmware. The above-described order of steps for the methods is for illustrative purposes only, and the steps of the methods of this disclosure are not limited to the order specifically described above unless otherwise specifically stated. Furthermore, in some embodiments, this disclosure may also be implemented as a program recorded on a recording medium, the program including machine-readable instructions for implementing the methods according to this disclosure. Thus, this disclosure also covers recording media storing programs for performing the methods according to this disclosure.

[0184] It should also be noted that in the apparatus, devices, and methods of this disclosure, the components or steps can be disassembled and / or recombined. These disassemblies and / or recombinations should be considered as equivalent solutions to this disclosure.

[0185] The above description of the disclosed aspects is provided to enable any person skilled in the art to make or use this disclosure. Various modifications to these aspects will be readily apparent to those skilled in the art, and the general principles defined herein may be applied to other aspects without departing from the scope of this disclosure. Therefore, this disclosure is not intended to be limited to the aspects shown herein, but rather to be carried out within the widest scope consistent with the principles and novel features disclosed herein.

[0186] The above description has been given for purposes of illustration and description. Furthermore, this description is not intended to limit the embodiments of this disclosure to the forms disclosed herein. Although numerous exemplary aspects and embodiments have been discussed above, those skilled in the art will recognize certain variations, modifications, alterations, additions, and sub-combinations therein.

Claims

1. A method for processing point cloud data, characterized in that, include: The input point cloud data is processed into point cloud blocks using a point cloud streaming method to obtain multiple point cloud blocks. Based on the point cloud data, multiple light segments are determined between multiple laser emission point positions and multiple point cloud positions; Using a distributed system and parallel processing, based on the density information of scan points in the point cloud data, a voxelized grid is constructed for each point cloud block in the multiple point cloud blocks, resulting in multiple voxel grids and the number of scan points in each voxel grid. The distributed system employs parallel processing to construct a hierarchical bounding box tree for each voxel grid in the plurality of voxel grids. Based on the hierarchical bounding box tree of each voxel grid, the number of intersections between the plurality of ray segments and each voxel grid in the plurality of voxel grids is determined, including: for each voxel grid, using the hierarchical bounding box tree of the voxel grid to detect whether each ray segment intersects with the voxel grid, and determining the number of intersections based on whether each voxel grid intersects with each ray segment; Using the distributed system and employing parallel processing, the system determines whether each voxel grid belongs to the voxel grid of a dynamic object based on the number of intersections between the multiple light segments and each voxel grid, and the number of scan points within each voxel grid. This includes: for each voxel grid, determining whether the voxel grid belongs to the voxel grid of a dynamic object based on the ratio between the number of intersections between the multiple light segments and the voxel grid and the number of scan points within the voxel grid, and a preset threshold. Output voxel meshes that are not part of a dynamic object.

2. The method according to claim 1, characterized in that, The input point cloud data is processed into point cloud streaming blocks to obtain multiple point cloud blocks, including: Based on the point cloud data, determine the bounding box of the scene corresponding to the point cloud data; The bounding box of the scene is divided into blocks to obtain the multiple point cloud blocks.

3. The method according to claim 2, characterized in that, Based on the density information of scan points in the point cloud data, a voxelized mesh is constructed for each of the multiple point cloud blocks to obtain multiple voxel meshes and the number of scan points within each voxel mesh, including: Based on a preset point cloud resolution, a sparse mesh is constructed for the scene to obtain multiple sparse meshes; The average point cloud density of the plurality of sparse grids is determined based on the number of scan points in the point cloud data. Based on the average point cloud density, the plurality of sparse grids are divided into grids to obtain the plurality of voxel grids; Based on the positions of the multiple voxel grids and the multiple point cloud positions, the number of scan points within each voxel grid is determined.

4. The method according to claim 3, characterized in that, The process of dividing the plurality of sparse grids based on the average point cloud density to obtain the plurality of voxel grids includes: The multiple sparse grids are divided into multiple voxel grids based on the average point cloud density and a preset scaling factor.

5. The method according to claim 3, characterized in that, The determination of the number of scan points within each voxel grid based on the positions of the multiple voxel grids and the multiple point cloud positions includes: Obtain the spatial coordinate range of each voxel mesh, and obtain the spatial coordinates of multiple points, wherein the multiple point cloud positions include the spatial coordinates of multiple points; Based on the spatial coordinate range of each voxel grid and the spatial coordinates of the multiple points, the number of scan points within each voxel grid is determined.

6. The method according to any one of claims 1-5, characterized in that, Between the step of determining multiple light segments between multiple laser emission point positions and multiple point cloud positions based on the point cloud data, and the step of determining whether each voxel grid belongs to the voxel grid of a dynamic object based on the number of intersections between the multiple light segments and each voxel grid, and the number of scan points within each voxel grid, the following further includes: Intersection detection is performed between the plurality of point cloud blocks and the plurality of light segments, and at least one candidate light segment corresponding to each point cloud block is determined from the plurality of light segments based on the intersection detection results; Obtain the number of intersections between at least one candidate ray segment corresponding to each point cloud block and each voxel mesh of the corresponding point cloud block; The number of intersections between the multiple light segments and the voxel grids of the corresponding point cloud block is determined based on the number of intersections between at least one candidate light segment corresponding to each point cloud block and each voxel grid of the corresponding point cloud block, and the number of scan points in each voxel grid of the corresponding point cloud block.

7. The method according to any one of claims 1-5, characterized in that, The step of determining whether each voxel grid belongs to the voxel grid of a dynamic object based on the number of intersections between the multiple light segments and each voxel grid, and the number of scan points within each voxel grid, includes: Obtain a single voxel mesh from each voxel mesh; If the ratio between the number of intersections between the plurality of light segments and the currently acquired voxel grid and the number of scan points within the currently acquired voxel grid is greater than a preset threshold, it is determined that the currently acquired voxel grid belongs to the voxel grid of a dynamic object. If the ratio between the number of intersections between the plurality of light segments and the currently acquired voxel grid and the number of scan points within the currently acquired voxel grid is less than or equal to the preset threshold, it is determined that the currently acquired voxel grid does not belong to the voxel grid of the dynamic object.

8. A point cloud data processing device, characterized in that, include: The streaming point cloud segmentation module is used to perform streaming point cloud segmentation on the input point cloud data to obtain multiple point cloud blocks; A light segment determination module is used to determine multiple light segments between multiple laser emission point positions and multiple point cloud positions based on the point cloud data; The voxelized mesh construction module is used to utilize a distributed system to process in parallel, based on the density information of scan points in the point cloud data, to stream voxelize each point cloud block in the multiple point cloud blocks, thereby obtaining multiple voxel grids and the number of scan points in each voxel grid in the multiple voxel grids. The intersection count determination module is used to construct a hierarchical bounding box tree for each voxel grid in the multiple voxel grids using the distributed system in a parallel processing manner, and determine the intersection count between the multiple ray segments and each voxel grid in the multiple voxel grids based on the hierarchical bounding box tree of each voxel grid, including: for each voxel grid, using the hierarchical bounding box tree of the voxel grid to detect whether each ray segment intersects with the voxel grid, and determining the intersection count based on whether each voxel grid intersects with each ray segment; The voxel type determination module is used to utilize the distributed system in a parallel processing manner to determine whether each voxel grid belongs to the voxel grid of a dynamic object based on the number of intersections between the multiple light segments and each voxel grid, and the number of scan points within each voxel grid. This includes: for each voxel grid, determining whether the voxel grid belongs to the voxel grid of a dynamic object based on the ratio between the number of intersections between the multiple light segments and the voxel grid and the number of scan points within the voxel grid, and a preset threshold. The output module is used to output voxel meshes that are not part of a dynamic object.

9. An electronic device, characterized in that, include: Memory, used to store computer program products; A processor for executing a computer program product stored in the memory, wherein when the computer program product is executed, it implements the method described in any one of claims 1-7.

10. A computer-readable storage medium having computer program instructions stored thereon, characterized in that, When the computer program instructions are executed by the processor, they implement the method described in any one of claims 1-7.

Citation Information

Patent Citations

  • Cross-country automatic trolley long-distance real-time positioning system and method based on laser radar

    CN115372989A

  • Method and device for generating three-dimensional grid, equipment, medium and program product

    CN115690120A