Point cloud data downsampling method, electronic device, perception system, and storage medium

By splitting point cloud data into high-bit and low-bit segments, and sorting and identifying voxel representative points based on the high-bit segments, the problems of large point cloud data size and low computational efficiency are solved, achieving efficient point cloud downsampling and storage optimization.

CN122492843APending Publication Date: 2026-07-31ANHUI SHENJI TECHNOLOGY CO LTD
View PDF 0 Cites 0 Cited by

Patent Information

Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
ANHUI SHENJI TECHNOLOGY CO LTD
Filing Date
2026-05-21
Publication Date
2026-07-31

AI Technical Summary

Technical Problem

The large size and uneven spatial distribution of raw point cloud data lead to high storage and computational overhead, and existing point cloud simplification methods are inefficient.

Method used

The point cloud data is split into high-bit data and low-bit data. The high-bit data is sorted, points of the same voxel are identified and representative points are calculated, and the downsampled point cloud data is output.

Benefits of technology

It reduces memory bandwidth requirements, improves sorting and geometric calculation efficiency, and outputs point cloud data with good spatial locality, thereby improving the performance of subsequent processing algorithms.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN122492843A_ABST
    Figure CN122492843A_ABST
Patent Text Reader

Abstract

This application relates to the field of point cloud data processing technology, and more specifically to a point cloud data downsampling method, electronic device, sensing system, and storage medium. The method includes: receiving raw point cloud data containing multiple points, each point having three-dimensional coordinates; splitting the three-dimensional coordinates of each point into high-bit data and low-bit data according to a preset voxel size, wherein the high-bit data is used to characterize the voxel to which the point belongs, and the low-bit data is used to characterize the relative position of the point within its voxel; sorting all points in the raw point cloud data based on the high-bit data, such that points belonging to the same voxel are arranged consecutively in the sorted sequence; traversing the sorted sequence, for each voxel, calculating a representative point of the voxel using the low-bit data of each point within the voxel; and outputting the representative points corresponding to each voxel as downsampled point cloud data.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] This application relates to the field of point cloud data processing technology, and more specifically to a point cloud data downsampling method, an electronic device, a sensing system, and a computer-readable storage medium capable of implementing the method. Background Technology

[0002] With the widespread application of sensors such as LiDAR, structured light, and multi-view vision, the scale of point cloud data in fields such as autonomous driving, robotics, and 3D reconstruction is constantly increasing. Raw point clouds are typically characterized by a large number of points, uneven spatial distribution, and high storage and computational costs. Voxel downsampling is a commonly used point cloud simplification method that reduces the number of points by dividing the space into regular voxels and selecting representative points within each voxel.

[0003] It should be noted that the information disclosed in the background section above is only used to enhance the understanding of the background of this application, and therefore may include information that does not constitute prior art known to those skilled in the art. Summary of the Invention

[0004] Embodiments of this application provide a point cloud data downsampling method, which can be implemented by electronic devices, sensing systems, and computer-readable storage media.

[0005] According to a first aspect of this application, a point cloud data downsampling method is provided, comprising the following steps: receiving raw point cloud data, the raw point cloud data containing multiple points, each point having three-dimensional coordinates; according to a preset voxel size, splitting the three-dimensional coordinates of each point into high-bit data and low-bit data, wherein the high-bit data is used to characterize the voxel to which the point belongs, and the low-bit data is used to characterize the relative position of the point within its voxel; sorting all points in the raw point cloud data based on the high-bit data, such that points belonging to the same voxel are arranged consecutively in the sorted sequence; traversing the sorted sequence, for each voxel, calculating a representative point of the voxel using the low-bit data of each point within the voxel; and outputting the representative point corresponding to each voxel as downsampled point cloud data.

[0006] As an alternative or supplement to the above solutions, in a method according to an embodiment of this application, the number of bits occupied by the high-bit data and the number of bits occupied by the low-bit data are dynamically determined based on the preset voxel size and the coordinate range of the original point cloud data.

[0007] As an alternative or supplement to the above solutions, in a method according to an embodiment of this application, sorting all points in the original point cloud data based on the high-bit data includes: for each point, spatially encoding the high-bit data of that point to obtain a one-dimensional spatial encoding value for that point, wherein the spatial encoding values ​​corresponding to neighboring voxels in three-dimensional space are also numerically adjacent; and sorting all points according to the magnitude of the spatial encoding values.

[0008] As an alternative or supplement to the above solutions, in a method according to an embodiment of this application, sorting all points in the original point cloud data based on the high-bit data includes: dividing all points into multiple data blocks; independently performing bitonic sorting on the points within each data block to obtain multiple locally ordered data blocks; and performing multi-level merge sorting on the multiple locally ordered data blocks to obtain a globally ordered sequence.

[0009] As an alternative or supplement to the above solution, in a method according to an embodiment of this application, each data block contains a preset number of points, and the method further includes: when the preset number is not an integer power of 2, filling the number of points in each data block to the next integer power of 2 that is greater than or equal to the preset number, and discarding the filled points after completing the multi-level merge sort.

[0010] As an alternative or supplement to the above solution, in a method according to an embodiment of this application, when the total number of points in the original point cloud data cannot be divided by the preset number, the actual number of points in the last data block is less than the preset number. The method further includes: filling the last data block to the preset number using a preset extreme value, and discarding the filled preset extreme value after completing multi-level merge sorting.

[0011] As an alternative or supplement to the above scheme, in a method according to an embodiment of this application, a bitonic sort is independently performed on the points in each data block to obtain multiple locally ordered data blocks, including: treating each point in the data block as an ordered subsequence of length 1, constructing a bitonic sequence by merging adjacent ordered subsequences with opposite monotonicity, and then recursively performing a bitonic merging operation on the bitonic sequence to obtain an ordered sequence of the data block.

[0012] As an alternative or supplement to the above scheme, in a method according to an embodiment of this application, multi-level merge sort is performed on the plurality of locally ordered data blocks to obtain a globally ordered sequence, including: taking the plurality of locally ordered data blocks as the initial merge segment, repeatedly merging two adjacent merge segments in two ways to merge them into a new ordered merge segment, until a globally ordered merge segment is obtained.

[0013] As an alternative or supplement to the above scheme, in a method according to an embodiment of this application, traversing the sorted sequence, for each voxel, calculating the representative point of the voxel using the low-bit data of each point within the voxel, includes: in the sorted sequence, identifying a set of continuous points belonging to the same voxel by determining whether the high-bit data of consecutive points are the same; and performing statistical calculations on the low-bit data of each point in the set of continuous points belonging to the same voxel to obtain the representative point of the voxel.

[0014] As an alternative or supplement to the above solutions, in a method according to an embodiment of this application, the statistical calculation includes: calculating at least one of the mean, center point, and covariance matrix of the points within the voxel based on the low bit data, or extracting the geometric features within the voxel.

[0015] According to a second aspect of this application, an electronic device is provided, comprising: a memory; a processor; and a computer program stored in the memory and executable on the processor, wherein execution of the computer program causes any one of the methods according to the first aspect of this application to be performed.

[0016] According to a third aspect of this application, a sensing system is provided, comprising: a sensing unit for acquiring raw point cloud data; and an electronic device according to a second aspect of this application for downsampling the raw point cloud data.

[0017] According to a fourth aspect of this application, a computer-readable storage medium is provided, the computer-readable storage medium including instructions that, when executed, perform any one of the methods according to a first aspect of this application.

[0018] The point cloud data downsampling method according to one or more embodiments of this application splits the three-dimensional coordinates of points into high-bit data representing voxel positions and low-bit data representing relative positions within voxels. The point cloud is then sorted based on the high-bit data, ensuring that points belonging to the same voxel are arranged consecutively in the sequence. This allows for efficient identification of point sets belonging to the same voxel during subsequent traversal. Furthermore, representative points of voxels are calculated using only the low-bit data, avoiding repeated access to the original coordinates and floating-point operations. Therefore, this method significantly reduces memory bandwidth requirements, improves the overall efficiency of sorting and geometric calculations, and because the sorting result maintains the spatial proximity between voxels, the output downsampling point cloud data exhibits good spatial locality, which is beneficial for improving the performance of subsequent processing algorithms. Attached Figure Description

[0019] The above and / or other aspects and advantages of this application will become clearer and more readily understood from the following description taken in conjunction with the accompanying drawings, in which the same or similar elements are denoted by the same reference numerals. In the drawings: Figure 1 A schematic flowchart of a point cloud data downsampling method 10 according to one or more embodiments of this application is shown; Figure 2 A schematic flowchart of a bitonetic sorting method 20 according to one or more embodiments of this application is shown; Figure 3 A schematic flowchart of a sorting method 30 according to one or more embodiments of this application is shown; Figure 4 A schematic block diagram of an electronic device 40 according to one or more embodiments of this application is shown; Figure 5 A schematic block diagram of a sensing system 50 according to one or more embodiments of this application is shown. Detailed Implementation

[0020] The following detailed description is merely exemplary in nature and is not intended to limit the disclosed technology or its application and use. Furthermore, it is not intended to be bound by any express or implied theory presented in the foregoing technical fields, background art, or the following detailed description.

[0021] In the following detailed description of the embodiments, numerous specific details are set forth in order to provide a more thorough understanding of the disclosed technology. However, it will be apparent to those skilled in the art that the disclosed technology can be practiced without these specific details. In other instances, well-known features have not been described in detail to avoid unnecessarily complicating the description.

[0022] Terms such as "comprising" and "including" indicate that, in addition to the units and steps that are directly and explicitly described in the specification, the technical solution of this application does not exclude the presence of other units and steps that are not directly or explicitly described. Terms such as "first" and "second" do not indicate the order of the units in terms of time, space, size, etc., but are merely used to distinguish the units.

[0023] In the following, exemplary embodiments according to this application will be described in detail with reference to the accompanying drawings.

[0024] The point cloud data downsampling methods according to one or more embodiments of this application (such as methods 10, 20, and 30 below) can be widely applied to various real-time or near-real-time systems that require processing large-scale point cloud data. For example, in the field of autonomous driving, LiDAR typically collects hundreds of thousands to millions of 3D points per second at frequencies above 10Hz. These raw point clouds need to be rapidly downsampled before being fed into perception algorithms for obstacle detection and tracking. In the field of robot environment mapping, the 3D sensors on mobile robots continuously generate point cloud data during operation, and downsampling helps reduce the computational burden of map storage and loop closure detection. In the field of 3D scene understanding and point cloud compression, simplifying the dense point cloud obtained from high-resolution scanning can significantly improve the efficiency of subsequent feature extraction, segmentation, and encoding. The point cloud data downsampling tasks in the above application scenarios can typically be performed by electronic devices such as onboard computing platforms, robot controllers, or host devices connected to 3D scanning equipment, and the downsampled point cloud data can be output to downstream modules or saved to storage media.

[0025] Figure 1 A schematic flowchart of a point cloud data downsampling method 10 according to one or more embodiments of this application is shown.

[0026] like Figure 1 As shown, in step 101, raw point cloud data is received, which contains multiple points, each with three-dimensional coordinates.

[0027] The raw point cloud data can originate from various 3D sensors, such as LiDAR, depth cameras, structured light sensors, or stereo vision systems. In one or more embodiments, the raw point cloud data is real-time acquired streaming data. For example, in autonomous driving applications, an onboard LiDAR continuously outputs each frame of point cloud data at a preset frequency, with each frame containing hundreds of thousands to millions of points. This method can receive and process this data frame by frame. In another embodiment, the raw point cloud data can also be a static dataset pre-acquired and stored on disk or in memory, such as a point cloud of a building model obtained through a 3D scanner, which is subsequently downsampled using this method for model simplification or compression.

[0028] Each point in the raw point cloud is represented by its three-dimensional coordinates (x, y, z), typically in floating-point format (e.g., 32-bit single-precision floating-point). The coordinate values ​​can be based on a world coordinate system, a sensor coordinate system, or a local coordinate system. In one or more embodiments, necessary parameters, including voxel size, coordinate range (or calculated from the point cloud data), and the smallest unit of coordinates (i.e., precision), can be received or configured simultaneously with the raw point cloud data. Exemplarily, the voxel size can be preset according to the desired downsampling granularity or adaptively determined based on the point cloud density. After the receiving step is completed, the raw point cloud data can be loaded into the processor's memory for access and processing in subsequent steps.

[0029] In step 103, according to the preset voxel size, the three-dimensional coordinates of each point are split into high-bit data and low-bit data, wherein the high-bit data is used to characterize the voxel to which the point belongs, and the low-bit data is used to characterize the relative position of the point within its voxel.

[0030] Through the splitting operation in step 103, the geometric information of a point is decoupled into two independent parts: voxel localization and intravoxel local geometry. The high-bit data is used for subsequent sorting and grouping, while the low-bit data is used for calculating representative points within the voxel. This decoupling avoids repeated access to the original floating-point coordinates during sorting and geometric calculations, reducing memory bandwidth consumption and improving cache utilization efficiency.

[0031] In one or more embodiments, the splitting operation can directly decompose the coordinates based solely on a preset voxel size. For example, for a point's coordinate value x on a certain coordinate axis and a preset voxel size v, the voxel index idx and the voxel offset off are calculated: Here, idx serves as the source of high-bit data; off represents the offset of the point within the voxel, which, after quantization, becomes low-bit data. For three-dimensional coordinates, the above decomposition can be performed independently on the x, y, and z axes to obtain three voxel indices (idx, ... x idx y idx z ) and three offsets (off) x , off y , off z The three voxel indices can be spatially encoded and concatenated into a one-dimensional integer as the high-bit data of the whole; the three offsets can be similarly concatenated into the low-bit data of the whole. This implementation does not require prior knowledge of the global coordinate range of the point cloud and is applicable to streaming processing or scenarios where the coordinate range is unknown.

[0032] In one or more embodiments, the splitting operation can also be performed based on a preset voxel size and the coordinate range of the original point cloud data to further compress the numerical range of the voxel index. Specifically, the minimum value of the point cloud on a certain coordinate axis, coord, is first determined. min (For example, through a pre-scan or based on a known scene range), then calculate: In this embodiment, the voxel index starts from 0, which facilitates subsequent array indexing and memory access. This embodiment requires prior knowledge of the coordinate range, but it can further optimize storage efficiency and is applicable to scenarios where the point cloud range is known or does not change significantly.

[0033] Based on the above splitting method, the number of bits occupied by high-bit data and low-bit data can be dynamically determined according to the preset voxel size and the coordinate range of the original point cloud data, or a pre-fixed number of bits can be used. In one or more embodiments, if a dynamic determination method is adopted: for a certain coordinate axis, let the coordinate span be L: Among them, coord max and coord min These represent the maximum and minimum values ​​across a given coordinate axis span. At this point, the minimum number of bits required for voxel indexing is... This refers to the number of bits in the high-bit data. Meanwhile, if the minimum precision (resolution) of the coordinates is δ, then the minimum number of bits required to represent the offset is... This refers to the number of bits in the low-bit data. Dynamically determining the number of bits allows for adaptation to point clouds of different scales and voxel partitioning of different granularities, avoiding precision loss or bit waste caused by fixing the number of bits. In another embodiment, instead of dynamic calculation, a fixed number of bits (e.g., high 16 bits, low 16 bits) can be pre-set, making the partitioning method simpler.

[0034] After the split is complete, the high-bit data and low-bit data of each point can be stored separately, or packaged into an integer (high-bit data is stored in the high bits, and low-bit data is stored in the low bits). For example, if the high bits occupy H bits and the low bits occupy L bits, the two can be concatenated into a (H+L)-bit integer, where the high H bits are the voxel index and the low L bits are the quantized internal offset.

[0035] In step 105, all points in the original point cloud data are sorted based on the high-bit data, so that points belonging to the same voxel are arranged consecutively in the sorted sequence.

[0036] Through the sorting operation in step 105, the points that were originally randomly distributed in memory are reorganized: points within the same voxel are grouped into contiguous memory regions, and different voxels are arranged according to their spatial position (determined by the high-order bits). This reordering lays an efficient data access foundation for subsequent voxel traversal and representative point calculation, allowing all points of the same voxel to be obtained by sequential reading, greatly reducing cache miss rate.

[0037] In one or more embodiments, to achieve sorting, the high-bit data of each point can first be spatially encoded to obtain a one-dimensional spatially encoded value. In one specific implementation, for each voxel in three-dimensional space, its voxel index (idx) on the three coordinate axes is... x idx y idx zThe spatial encoding value can be mapped to an integer using bitwise interleaving (e.g., Morton code) or a Hilbert curve. The property of spatial encoding is that the spatial encoding values ​​of neighboring voxels in 3D space are also numerically close, meaning the encoding maintains spatial locality. Subsequently, all points can be sorted in ascending or descending order according to their spatial encoding values. Since the sorting is based on the spatial encoding values, points belonging to the same voxel (with the same spatial encoding value) are naturally arranged consecutively in the sorted sequence, and different voxels are arranged according to the traversal order of the space-filling curve, thus achieving spatial proximity. In this implementation, sorting can be achieved using algorithms such as quicksort or sorting functions from the standard library. These sorting algorithms do not require the data length to meet specific conditions, are simple to implement, and are suitable for small to medium-sized point cloud processing. When the point cloud is large, parallel versions of radix sort or sampling sort can also be used.

[0038] In one or more embodiments, to further improve sorting performance and fully utilize parallel computing capabilities, a combination of bitonic sort and multi-level merge sort can be used. In one specific implementation, all points can first be divided into multiple data blocks, each containing a preset number of points (denoted as PPC, Points Per Chunk). Bitonic sort is performed independently on the points within each data block, resulting in multiple locally ordered data blocks. Then, multi-level merge sort is performed on these locally ordered data blocks, merging adjacent merge segments to finally obtain a globally ordered sequence. This combination approach balances the high parallelism of bitonic sort and the stability of merge sort.

[0039] In the above process of dividing the data into blocks, each data block contains a preset number of points, PPC. In one or more embodiments, when PPC is not an integer power of 2, since the classic bitonic sorting algorithm usually requires the length of the sequence to be sorted to be a power of 2, each data block needs to be padded: the number of points in each data block is padded to the next integer power of 2 greater than PPC (denoted as PPC*). The padded value can be an extreme value (e.g., a maximum value for ascending order and a minimum value for descending order). After completing the bitonic sorting, the entire data block becomes an ordered sequence (e.g., a non-increasing or non-decreasing sequence), and the padded extreme value will automatically be located at one end of the sequence (e.g., at the end for ascending order). At this time, it is only necessary to discard the padded points and retain PPC valid points. In addition, if the total number of points in the original point cloud is not divisible by PPC, the actual number of points in the last data block is less than PPC. In this case, the preset extreme value can also be used to padded it to PPC, and the padded extreme value can be discarded after sorting. Through the aforementioned padding and discarding mechanism, embodiments of this method can process point cloud data of arbitrary length without being restricted by the requirement that PPC must be a power of 2, while maintaining the efficiency of the algorithm.

[0040] In one or more embodiments, the specific process of independently performing bitonic sorting for each data block is as follows: Each point in the data block is treated as an ordered subsequence of length 1. Then, a bitonic sequence is constructed by repeatedly merging adjacent ordered subsequences with opposite monotonicity. Specifically, in each round of merging, two adjacent subsequences can be concatenated into a bitonic sequence, and then a bitonic merging operation is performed on the bitonic sequence. The bitonic merging operation is performed recursively: if the length of the current bitonic sequence is greater than 2, it is divided into two equal halves, and the elements at corresponding positions are compared and swapped, such that all elements in the first half are no greater than all elements in the second half, and then the bitonic merging is recursively performed on the first half and the second half respectively; if the length of the current bitonic sequence is equal to 2, the two elements are directly compared and swapped to make it ordered. After multiple rounds of merging, the entire data block finally becomes a completely ordered sequence. Since the processing of each data block is independent, this process can be highly parallelized (the degree of parallelism is the number of points contained in the data block), and finally outputs multiple locally ordered data blocks.

[0041] In one or more embodiments, the specific process of performing multi-level merge sort on multiple locally ordered data blocks is as follows: The multiple locally ordered data blocks are used as initial merge segments. Then, adjacent merge segments are repeatedly merged in two ways: simultaneously, starting from the head of the two merge segments, the spatial encoding value (or high-order bits) of the current element is compared, the smaller one is output to an auxiliary array, and the corresponding pointer is moved; when one merge segment is completely processed, all remaining elements of the other merge segment are copied. After each round of merging, the number of merge segments is halved, and the length of each merge segment is doubled. This process is repeated until a globally ordered merge segment is obtained, which is the desired globally ordered sequence. This merging process can also be parallelized (e.g., multi-way merge), and since the initial merge segments are already ordered, the merge operation itself only requires a linear scan, making it significantly more efficient than traditional sorting.

[0042] In step 107, the sorted sequence is traversed, and for each voxel, the representative point of the voxel is calculated using the low-bit data of each point within the voxel.

[0043] Since the sorting in step 105 has already arranged points belonging to the same voxel consecutively in the sequence, the point set corresponding to each voxel can be efficiently identified with a single linear scan. Statistical calculations are then performed based on the low-bit data of these points to obtain representative points that can represent the geometric features of the voxel. This process relies only on low-bit data and does not require access to original floating-point coordinates or high-bit data, thereby reducing memory access overhead and improving computational efficiency.

[0044] In one or more embodiments, the specific method for traversing the sorted sequence and identifying voxel boundaries is as follows: Starting from the first point in the sequence, the high-bit data of each point is read sequentially. When the high-bit data of consecutive points are the same, it indicates that they belong to the same voxel; when the high-bit data changes, it indicates that the point set of the current voxel has ended and the next voxel begins. Thus, consecutive point sets belonging to the same voxel can be identified. For each identified consecutive point set, the low-bit data of each point in the point set is extracted and statistically calculated to obtain the representative point of the voxel. After completing the calculation of the representative point of the current voxel, the process continues to traverse subsequent points and repeats the above process until the entire sequence is processed.

[0045] In one or more embodiments, the statistical calculations described above include calculating the mean of points within the voxel based on low-bit data. Specifically, for each voxel, the low-bit data (quantized offset values ​​for each dimension) of all points within it are summed to obtain a total, which is then divided by the total number of points within the voxel to obtain the average offset. Then, the average offset can be converted into three-dimensional spatial coordinates, combined with the voxel's original spatial location, to serve as a representative point (i.e., the mean point) of the voxel. Since the mean calculation only involves integer addition and division, and the data volume is small, the computational efficiency is extremely high.

[0046] In another embodiment, the statistical calculation includes calculating the center point within the voxel based on low-bit data. The center point can be the median of all points within the voxel or other defined center. In yet another embodiment, the statistical calculation includes calculating the covariance matrix or normal vector of the points within the voxel based on low-bit data. Specifically, the covariance matrix of all points within the voxel can be calculated using low-bit data, and then geometric features such as normal vectors and curvature can be obtained through eigenvalue decomposition or principal component analysis. These features can be used for subsequent point cloud classification, segmentation, or scene understanding tasks. Since the calculation of the covariance matrix involves the offsets of each point and their products, using low-bit data instead of raw floating-point coordinates can achieve sufficient accuracy while reducing computational load and data movement.

[0047] In step 109, the representative points corresponding to each voxel are output as downsampled point cloud data.

[0048] After the calculation in step 107, each non-empty voxel has obtained its representative points (such as the mean point, center point, covariance matrix, and other geometric features). These representative points are then organized sequentially into the output point cloud, thus completing the downsampling of the original point cloud. Because the sorting in step 105 arranges the voxels according to their spatial encoding values, the representative points in the output point cloud are naturally arranged according to spatial proximity, exhibiting good spatial locality, which is beneficial to the caching efficiency and computation speed of subsequent processing algorithms.

[0049] In one or more embodiments, the data structure of the output point cloud can be a continuously stored three-dimensional coordinate array, where each coordinate can be represented by a floating-point number or an integer. For example, if the representative point is the mean point, the (x, y, z) coordinates of each voxel are output; if the representative point is a covariance matrix or a normal vector, the corresponding matrix or vector is output as a feature description of that voxel. The number of points in the output point cloud can be equal to the number of non-empty voxels in the original point cloud, and is typically much smaller than the number of points in the original point cloud, thus achieving downsampling.

[0050] In one or more embodiments, the output point cloud can be directly passed to subsequent perception algorithms, mapping algorithms, or compression modules, or it can be saved to a storage medium or sent to other computing nodes via a network. In autonomous driving applications, the downsampled point cloud can be sent to the obstacle detection and tracking module in real time; in robot mapping applications, it can be used to update the octree map or perform loop closure detection; in 3D scene understanding, it can be used as input features for a classifier.

[0051] In one or more embodiments, the output point cloud may also include the voxel index or spatial encoding value corresponding to each representative point, so that downstream modules can quickly obtain the spatial location information of that point. Furthermore, for empty voxels (voxels that do not contain any points), representative points may not be output, thereby maintaining the compactness of the output point cloud.

[0052] Through the coordination of steps 101 to 109 above, the embodiments of this application achieve efficient conversion from the original disordered point cloud to the downsampled spatial nearest neighbor point cloud, which significantly reduces the amount of data and optimizes the memory access mode while ensuring the preservation of geometric information.

[0053] Figure 2 A schematic flowchart of a bitonetic sorting method 20 according to one or more embodiments of this application is shown. Method 20 is used to convert a sequence of points within a data block into an ordered sequence. The number of points in the data block is denoted as N, where N is an integer power of 2 (if the original preset number PPC is not a power of 2, it has been padded to the next power of 2). Each point has high-bit data or its spatial encoding value as a sorting key.

[0054] In step 201, a data block to be sorted is obtained, which contains N points. In the first round of sorting, the number of ordered subsequences is equal to the total number of points N in the data block, and the length Q of each ordered subsequence is 1, that is, each point is considered as an ordered subsequence of length 1.

[0055] In step 203, determine whether the number N of the current ordered subsequence is greater than 1. If yes, proceed to step 205; otherwise, jump to step 211.

[0056] In step 205, two adjacent ordered subsequences (one ascending and one descending) are merged into a bitonic sequence of length 2Q.

[0057] In step 207, a bitonic merging operation is performed on the bitonic sequence obtained in step 205, converting it into an ordered sequence of length 2Q. The bitonic merging operation may include: if the length of the current bitonic sequence is greater than 2, it is divided into two equal halves, and the elements at corresponding positions are compared and swapped, ensuring that all elements in the first half are no greater than all elements in the second half. Then, bitonic merging is recursively performed on both halves. If the length of the current bitonic sequence is equal to 2, the two elements are directly compared and swapped to make it ordered. A classic bitonic merging network can be used for the specific implementation; its internal recursive process will not be detailed here.

[0058] In step 209, the ordered sequence obtained after bitonic merging is taken as the new ordered subsequence, and the state is updated: the number of ordered subsequences is halved (i.e., N / 2), and the length of each ordered subsequence is doubled (i.e., 2Q). Then, return to step 203 to continue the loop.

[0059] In step 211, when the number of ordered subsequences is 1, the entire data block has become a completely ordered sequence, and the ordered sequence is output as the result of method 20.

[0060] Figure 3 A schematic flowchart of a sorting method 30 according to one or more embodiments of this application is shown.

[0061] In step 301, all points in the original point cloud are obtained, and each point has high-bit data or its spatial encoding value as a sorting key.

[0062] In step 303, all points are divided into multiple data blocks, each containing PPC points.

[0063] In step 305, a bitonic sort is performed independently for each data block (e.g., according to...). Figure 2 Method 20 shown yields multiple locally ordered data blocks.

[0064] In step 307, the multiple locally ordered data blocks obtained in step 305 are used as initial merge segments. Let the number of current merge segments be M, and the length of each merge segment be L (initially, M equals the number of data blocks, and L equals the actual number of points in each data block, usually PPC).

[0065] In step 309, it is determined whether the number M of the current merged segments is greater than 1. If yes, proceed to step 311; otherwise, jump to step 315.

[0066] In step 311, two adjacent merged segments are merged in a two-way manner: starting from the heads of the two merged segments simultaneously, compare the spatial encoding values (or high-bit data) of the current elements, output the smaller one to the auxiliary array, and move the corresponding pointer; when one merged segment is exhausted, copy all the remaining elements of the other merged segment. After merging, a new ordered merged segment is obtained, and its length is the sum of the lengths of the two original merged segments.

[0067] In step 313, update the status of the merged segments: the number M of merged segments is halved, and the length of each merged segment is updated to the merged length. Then return to step 309 to continue the loop.

[0068] In step 315, when the number M of merged segments is 1, the current unique merged segment is the globally ordered sequence. Output this globally ordered sequence as the result of method 30.

[0069] Method 30 combines the high parallelism of bitonic sorting and the linear merging efficiency of merge sorting by first partitioning data blocks to perform bitonic sorting in parallel and then performing multi-level merging on the obtained multiple ordered blocks, achieving efficient global sorting of the original point cloud data. The space complexity of the entire sorting process is O(n) (where n is the total number of points), and the time complexity is O(mlog2m), where m = n / PPC is the number of data blocks.

[0070] Figure 4 Shows a schematic block diagram of an electronic device 40 according to one or more embodiments of the present application. As Figure 4 shown, the electronic device 40 includes a memory 410, a processor 420, and a computer program 430 stored on the memory 410 and executable on the processor 420. The running of the computer program 430 causes the above-described method 10, 20, or 30 to be executed. The electronic device 40 is the core hardware carrier for executing the foregoing method, and its physical form can be a domain controller carried by an autonomous vehicle, an embedded industrial control computer inside a robot, a data processing host supporting a three-dimensional scanner, or a graphics processing unit (GPU) acceleration card in a general server.

[0071] Figure 5 Shows a schematic block diagram of a perception system 50 according to one or more embodiments of the present application. As Figure 5 shown, the perception system 50 includes a perception unit 510 and an electronic device 520. The perception unit 510 is used to collect raw point cloud data, and its specific form can be a radar device (such as a lidar, millimeter-wave radar), a depth camera, a stereo vision sensor, or other sensors capable of outputting three-dimensional point cloud data. The electronic device 520 can be as Figure 4The illustrated electronic device 40 is configured to perform the aforementioned method 10 on the raw point cloud data collected by the sensing unit 510 to generate downsampled point cloud data. The sensing system 50 can be deployed in autonomous vehicles, mobile robots, drones, or fixed 3D monitoring equipment to process environmental perception information in real time, reducing the computational burden on subsequent obstacle detection, mapping, or recognition algorithms. Because the electronic device 520 maintains the spatial proximity of the output point cloud during downsampling, the overall data throughput and caching efficiency of the sensing system 50 are significantly improved.

[0072] Furthermore, as described above, this application can also be implemented as a computer-readable storage medium storing a program for executing the processes of methods 10, 20, or 30 described above. Here, various types of computer-readable storage media can be used, such as disks (e.g., magnetic disks, optical disks, etc.), cards (e.g., memory cards, optical cards, etc.), semiconductor memory (e.g., ROM, non-volatile memory, etc.), and tapes (e.g., magnetic tape, cassette tape, etc.).

[0073] This application can also be implemented as a computer program product, which includes a computer program that, when executed by a processor, implements the steps in methods 10, 20 or 30 described above.

[0074] Where applicable, the various embodiments provided in this application may be implemented using hardware, software, or a combination of hardware and software. Furthermore, where applicable, without departing from the scope of this application, the various hardware and / or software components described herein may be combined into composite components comprising software, hardware, and / or both. Where applicable, without departing from the scope of this application, the various hardware and / or software components described herein may be divided into sub-components comprising software, hardware, or both. Additionally, where applicable, it is contemplated that software components may be implemented as hardware components, and vice versa.

[0075] The software (such as program code and / or data) according to this application may be stored on one or more computer-readable storage media. It is also contemplated that the software identified herein may be implemented using one or more networked and / or otherwise general-purpose or special-purpose computers and / or computer systems. Where applicable, the order of the various steps described herein may be changed, combined into compound steps, and / or divided into sub-steps to provide the features described herein.

[0076] The embodiments and examples presented herein are provided to best illustrate embodiments of this application and its particular applications, thereby enabling those skilled in the art to implement and use this application. However, those skilled in the art will understand that the above description and examples are provided for ease of illustration and example only. The descriptions presented are not intended to cover all aspects of this application or to limit this application to the precise forms disclosed.

Claims

1. A method for down-sampling point cloud data, the method comprising: Includes the following steps: Receive raw point cloud data, which contains multiple points, each with three-dimensional coordinates; Based on the preset voxel size, the three-dimensional coordinates of each point are split into high-bit data and low-bit data, wherein the high-bit data is used to characterize the voxel to which the point belongs, and the low-bit data is used to characterize the relative position of the point within its voxel. Based on the high-bit data, all points in the original point cloud data are sorted so that points belonging to the same voxel are arranged consecutively in the sorted sequence. Traverse the sorted sequence, and for each voxel, calculate the representative point of the voxel using the low-bit data of each point within the voxel; as well as Output the representative points corresponding to each voxel as the downsampled point cloud data.

2. The method according to claim 1, wherein, The number of bits occupied by the high-bit data and the number of bits occupied by the low-bit data are dynamically determined based on the preset voxel size and the coordinate range of the original point cloud data.

3. The method according to claim 1, wherein, Sort all points in the original point cloud data based on the high-bit data, including: For each point, spatial encoding is performed on the high-bit data of that point to obtain a one-dimensional spatial encoding value, wherein the spatial encoding values ​​corresponding to neighboring voxels in three-dimensional space are also numerically adjacent; and Sort all points according to the size of the spatial encoding value.

4. The method according to claim 1 or 3, wherein, Sort all points in the original point cloud data based on the high-bit data, including: Divide all the points into multiple data blocks; Perform a bitonic sort independently on the points within each data block to obtain multiple locally ordered data blocks; Multi-level merge sort is performed on the multiple locally ordered data blocks to obtain a globally ordered sequence.

5. The method according to claim 4, wherein, Each data block contains a preset number of points, and the method further includes: When the preset number is not a power of 2, the number of points in each data block is filled to the next power of 2 that is greater than or equal to the preset number, and the filled points are discarded after the multi-level merge sort is completed.

6. The method according to claim 5, wherein, When the total number of points in the original point cloud data cannot be divided by the preset number, the actual number of points in the last data block is less than the preset number, and the method further includes: The last data block is filled to the preset number using a preset extreme value, and the preset extreme value is discarded after the multi-level merge sort is completed.

7. The method according to claim 4, wherein, Perform a bitonic sort independently on each data block to obtain multiple locally ordered data blocks, including: Each point in the data block is treated as an ordered subsequence of length 1. By merging adjacent ordered subsequences with opposite monotonicity, a bitone sequence is constructed. Then, the bitone sequence is recursively merged to obtain the ordered sequence of the data block.

8. The method according to claim 4, wherein, Perform multi-level merge sort on the multiple locally ordered data blocks to obtain a globally ordered sequence, including: Using the multiple locally ordered data blocks as the initial merge segment, two adjacent merge segments are repeatedly merged in two directions to form a new ordered merge segment, until a globally ordered merge segment is obtained.

9. The method according to claim 1, wherein, Traverse the sorted sequence, and for each voxel, calculate the representative point of the voxel using the low-bit data of each point within that voxel, including: In the sorted sequence, by determining whether the high-order bits of consecutive points are the same, a set of consecutive points belonging to the same voxel is identified; and Statistical calculations are performed on the low-bit data of each point in a continuous point set belonging to the same voxel to obtain the representative point of that voxel.

10. The method according to claim 9, wherein, The statistical calculations include: calculating at least one of the mean, center point, and covariance matrix of the points within the voxel based on the low-bit data, or extracting the geometric features within the voxel.

11. An electronic device, characterized in that, It comprises: a memory; a processor; and a computer program stored in the memory and executable on the processor, the execution of which causes the method according to any one of claims 1-10 to be performed.

12. A sensing system, characterized in that, include: The sensing unit is used to collect raw point cloud data; as well as The electronic device of claim 11 is used to downsample the original point cloud data.

13. A computer-readable storage medium, characterized in that, The computer-readable storage medium includes instructions that, when executed, perform the method according to any one of claims 1-10.