CN116452403B - Point cloud data processing method and device, computer equipment and storage medium - Google Patents
Point cloud data processing method and device, computer equipment and storage medium Download PDFInfo
- Publication number
- CN116452403B CN116452403B CN202310714606.0A CN202310714606A CN116452403B CN 116452403 B CN116452403 B CN 116452403B CN 202310714606 A CN202310714606 A CN 202310714606A CN 116452403 B CN116452403 B CN 116452403B
- Authority
- CN
- China
- Prior art keywords
- sub
- processing
- point cloud
- cloud data
- regions
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 16
- 238000012545 processing Methods 0.000 claims abstract description 324
- 238000000034 method Methods 0.000 claims description 61
- 238000004590 computer program Methods 0.000 claims description 12
- 230000008569 process Effects 0.000 description 36
- 238000007781 pre-processing Methods 0.000 description 16
- 238000010586 diagram Methods 0.000 description 13
- 238000004891 communication Methods 0.000 description 12
- 230000006870 function Effects 0.000 description 8
- 230000009471 action Effects 0.000 description 7
- 230000008707 rearrangement Effects 0.000 description 7
- 238000004364 calculation method Methods 0.000 description 5
- 238000013135 deep learning Methods 0.000 description 5
- 238000004422 calculation algorithm Methods 0.000 description 4
- 230000001413 cellular effect Effects 0.000 description 4
- 238000005070 sampling Methods 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 238000003384 imaging method Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 238000001914 filtration Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 238000012549 training Methods 0.000 description 2
- 241000699670 Mus sp. Species 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000001627 detrimental effect Effects 0.000 description 1
- 239000011521 glass Substances 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 230000007723 transport mechanism Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Image Generation (AREA)
Abstract
The disclosure provides a point cloud data processing method, a point cloud data processing device, computer equipment and a computer readable storage medium. The implementation scheme is as follows: acquiring point cloud data corresponding to a target area; dividing the target area into a plurality of sub-areas, wherein each sub-area corresponds to sub-point cloud data, the sub-point cloud data are subsets of the point cloud data, and the sub-point cloud data corresponding to each sub-area have differences in the number of points; determining a correspondence between the plurality of sub-regions and the plurality of processing cores, wherein each processing core corresponds to a subset of the plurality of sub-regions such that a difference between a number of points corresponding to each processing core is less than a predetermined threshold; based on the corresponding relation, performing voxel processing on the corresponding point of the processing core through each processing core to obtain intermediate processing data; and combining the intermediate processing data obtained by each processing core to obtain a point cloud data processing result.
Description
Technical Field
The disclosure relates to the technical field of point cloud processing, and in particular relates to a point cloud data processing method, a point cloud data processing device, computer equipment and a computer readable storage medium.
Background
In training and application of a point cloud deep learning network model based on voxel processing, preprocessing (or called preprocessing) is generally required for point cloud data, and then the point cloud data is input into a deep learning network and is subjected to subsequent processing according to requirements. In general, preprocessing of point cloud data includes three steps of filtering out points outside the ROI (Region of Interest ), out-of-order rearrangement of points, and voxelization of points. However, since the amount of data of the point cloud data is very large, the preprocessing of the point cloud data requires multiple passes through the point cloud data, which causes a great burden on the processor. Nowadays, users put higher and higher demands on the processing efficiency of point cloud data, and how to improve the processing efficiency of point cloud data is still one of research hotspots and difficulties in the industry.
Disclosure of Invention
The present disclosure provides a point cloud data processing method, a point cloud data processing device, a computer device and a computer readable storage medium.
According to an aspect of the present disclosure, there is provided a point cloud data processing method, including: acquiring point cloud data corresponding to a target area; dividing the target area into a plurality of sub-areas, wherein each sub-area corresponds to sub-point cloud data, the sub-point cloud data are subsets of the point cloud data, and the sub-point cloud data corresponding to each sub-area have differences in the number of points; determining a correspondence between the plurality of sub-regions and the plurality of processing cores, wherein each processing core corresponds to a subset of the plurality of sub-regions such that a difference between a number of points corresponding to each processing core is less than a predetermined threshold; based on the corresponding relation, performing voxel processing on the corresponding point of the processing core through each processing core to obtain intermediate processing data; and combining the intermediate processing data obtained by each processing core to obtain a point cloud data processing result.
According to another aspect of the present disclosure, there is provided a point cloud data processing apparatus including: the point cloud data acquisition module is configured to acquire point cloud data corresponding to a target area; the target area dividing module is configured to divide the target area into a plurality of subareas, wherein each subarea corresponds to the sub-point cloud data, the sub-point cloud data is a subset of the point cloud data, and the sub-point cloud data corresponding to each subarea has a difference in the number of points; a sub-region allocation module configured to determine correspondence between a plurality of sub-regions and a plurality of processing cores, wherein each processing core corresponds to a subset of the plurality of sub-regions such that a difference between a number of points to which each processing core corresponds is less than a predetermined threshold; the voxelization processing module is configured to perform voxelization processing on the point corresponding to the processing core through each processing core based on the corresponding relation so as to obtain intermediate processing data; and a data merging module configured to merge the intermediate processing data obtained by each processing core to obtain a result of the point cloud data processing.
According to another aspect of the present disclosure, there is provided a computer apparatus comprising: at least one processor; and a memory having stored thereon a computer program which, when executed by the processor, causes the processor to perform the method of the present disclosure as provided above.
According to another aspect of the present disclosure, there is provided a computer-readable storage medium having stored thereon a computer program which, when executed by a processor, causes the processor to perform the method of the present disclosure as provided above.
According to one or more embodiments of the present disclosure, the efficiency of point cloud data processing may be improved.
These and other aspects of the disclosure will be apparent from and elucidated with reference to the embodiments described hereinafter.
Drawings
The accompanying drawings illustrate exemplary embodiments and, together with the description, serve to explain exemplary implementations of the embodiments. The illustrated embodiments are for exemplary purposes only and do not limit the scope of the claims. Throughout the drawings, identical reference numerals designate similar, but not necessarily identical, elements.
FIG. 1 is a flowchart illustrating a point cloud data processing method according to an example embodiment;
FIG. 2 is a schematic diagram illustrating dividing a target region according to an example embodiment;
fig. 3 is a schematic diagram illustrating dividing a target area according to another exemplary embodiment;
FIG. 4 is a flowchart illustrating a process of determining a correspondence of sub-regions to processing cores in accordance with an illustrative embodiment;
FIG. 5 is a schematic diagram illustrating a correspondence of sub-regions with processing cores in accordance with an example embodiment;
FIG. 6 is a schematic diagram illustrating merging rearranged points according to an example embodiment;
FIG. 7 is a schematic diagram illustrating a set of voxels corresponding to a single processing core according to an exemplary embodiment;
FIG. 8 is a flowchart illustrating a voxelization process in accordance with an exemplary embodiment;
FIG. 9 is a flowchart illustrating a process of merging intermediate process data according to an example embodiment;
FIG. 10 is a schematic block diagram illustrating a point cloud data processing apparatus according to an example embodiment;
fig. 11 is a block diagram illustrating an exemplary computer device that can be applied to exemplary embodiments.
Detailed Description
In the present disclosure, the use of the terms "first," "second," and the like to describe various elements is not intended to limit the positional relationship, timing relationship, or importance relationship of the elements, unless otherwise indicated, and such terms are merely used to distinguish one element from another. In some examples, a first element and a second element may refer to the same instance of the element, and in some cases, they may also refer to different instances based on the description of the context.
The terminology used in the description of the various illustrated examples in this disclosure is for the purpose of describing particular examples only and is not intended to be limiting. Unless the context clearly indicates otherwise, the elements may be one or more if the number of the elements is not specifically limited. As used herein, the term "plurality" means two or more, and the term "based on" should be interpreted as "based at least in part on". Furthermore, the term "and/or" and "at least one of … …" encompasses any and all possible combinations of the listed items.
In the related art, in training and application of a point cloud deep learning network model based on voxel processing, pre-processing (or called preprocessing) is generally required to be performed on point cloud data, and then the point cloud data is input to a deep learning network and is subjected to subsequent processing according to requirements. In general, preprocessing of point cloud data includes three steps of filtering out points outside the ROI (or referred to as target region), out-of-order rearrangement of points, and voxelization of points. However, since the amount of data of the point cloud data is very large, the preprocessing of the point cloud data requires multiple passes through the point cloud data, which causes a great burden on the processor. Nowadays, users put higher and higher demands on the processing efficiency of point cloud data, and how to improve the processing efficiency of point cloud data is still one of research hotspots and difficulties in the industry.
Current point cloud data preprocessing algorithms are typically developed for GPUs (Graphics Processing Unit, graphics processors) or CPUs (Central Processing Unit, central processing units), and the implementation of these algorithms may not be suitable for hardware platforms other than GPUs and CPUs, such as dedicated artificial intelligence inference chips, etc. This results in either an inefficient acceleration of the algorithm directly on these platforms or an algorithm adaptation to a specific hardware platform is required. Meanwhile, the existing point cloud data preprocessing flow is complex, the voxel-based point cloud data preprocessing flow is more, and functions are segmented and packaged among the processing modules, so that the whole preprocessing process is not facilitated.
The current point cloud data preprocessing method is realized by carrying out single-core serial processing on a large amount of point cloud data on a single processor. Specifically, the point cloud preprocessing method using a single processor generally includes traversing all points to filter out points outside the ROI, generating a set of random numbers and distributing the random numbers to points inside the ROI in a traversing manner, so as to achieve the purpose of out-of-order rearrangement of the points, and traversing all points inside the ROI once to calculate and store index values of voxels corresponding to the points. Such a method traverses a huge number of points at least three times, which has a great impact on the efficiency of point cloud data processing. Also, the need to generate a very large set of random numbers in the link that reorders the points out of order is very unfriendly to many computing hardware. Therefore, the current point cloud data preprocessing method cannot efficiently perform point cloud data processing.
In order to improve efficiency of point cloud data processing, the disclosure provides a point cloud data processing method.
Exemplary embodiments of the present disclosure are described in detail below with reference to the attached drawings.
Fig. 1 is a flowchart illustrating a point cloud data processing method 100 according to an exemplary embodiment. The point cloud data processing method 100 includes steps S110, S120, S130, S140, and S150. The point cloud data processing method 100 can be applied to scenes such as automatic driving automobiles, unmanned aerial vehicles, intelligent traffic and the like, and can be used for preprocessing point cloud data generated by sensors such as laser radars, millimeter wave radars, four-dimensional imaging radars and the like so as to be used for subsequent tasks such as target detection, object recognition, scene segmentation, three-dimensional reconstruction and the like of a voxel-based point cloud deep learning network.
Referring to fig. 1, in step S110, point cloud data corresponding to a target area is acquired.
In step S120, the target area is divided into a plurality of sub-areas. Each of these sub-regions corresponds to sub-point cloud data, which is a subset of the point cloud data, and the sub-point cloud data corresponding to each sub-region has a difference in the number of points.
In step S130, correspondence between a plurality of sub-regions and a plurality of processing cores is determined. Each of these processing cores corresponds to a subset of the plurality of sub-regions, such that the difference between the number of points corresponding to each processing core is less than a predetermined threshold.
In step S140, voxel processing is performed on the point corresponding to the processing core by each processing core based on the correspondence relationship to obtain intermediate processing data.
In step S150, the intermediate processing data obtained by each processing core is combined to obtain the result of the point cloud data processing.
Various aspects of a point cloud data processing method according to embodiments of the present disclosure are described further below.
In an example, the acquired point cloud data may be generated by a sensor of a laser radar (Lidar), millimeter wave radar, imaging radar, or the like. Taking a lidar as an example, the lidar may scan and measure an object by a laser beam, and point cloud data acquired by the lidar may correspond to a set of points stored out of a particular order, and the point cloud data may include three-dimensional coordinates of each point scanned and other attributes such as reflection intensity, signal-to-noise ratio. These points are not isolated points and when operated on in the network model, adjacent points may form a plurality of meaningful sets.
In an example, the range of the target region (or called ROI or perceived region) may be preset min , x max , y min , y max , z min , z max ]And (3) representing. That is, the target area may be a target area of length (x max -x min ) (represented by L) and a width (y) max -y min ) (represented by W) of a height (z max -z min ) Cube region (denoted by H). The point cloud data acquired by sensors such as Lidar, millimeter wave radar, imaging radar, etc. may include data corresponding to points outside of the target area, where points outside of the target area may be filtered out while only points inside the target area remain. For example, by determining whether the location of the point is at x min , x max , y min , y max , z min , z max ]Outside the range of (2) determines whether each point is a point outside the target area.
In an example, the target region may be divided into a plurality of small cubes of length l, width w, and height h, which may be referred to as voxels (voxels). In general, the length, width, and height of the target region are integer multiples of the length, width, and height of the voxels, respectively, so that the target region can be divided into just an integer number of voxels. By dividing the target region into a plurality of voxels, points located in the target region may then be assigned among these voxels, and adjacent points in the same voxel may be stored and operated as a set.
In an example, points corresponding to the point cloud data may be denser in some locations (e.g., closer objects) and sparser in some locations (e.g., farther objects), and may even be absent in some locations (e.g., occluded objects). It will then be appreciated that there may be more points in some voxels, fewer points in some voxels, and even no points in some voxels, such internally non-point voxels being empty voxels.
In an example, the position of each point in the target area may be represented by three-dimensional coordinates (x, y, z). Thus can pass through formula ID x =floor[(x-x min )/l],ID y =floor[(y-y min )/w],ID z =floor[(z-z min )/h]It is determined in which voxel each point is. In the above formula, floor [ (x-x) min )/l]Can represent the pair [ (x-x) min )/l]Rounding down, similarly floor [ (y-y) min )/w]Can represent the pair [ (y-y) min )/w]Rounding down, floor [ (z-z) min )/h]Can represent the pair [ (z-z) min )/h]Rounding down. (ID) x , ID y , ID z ) May be referred to as an index of the voxel at which the point is located, for indicating the location of the voxel in the target region. The process of voxelizing the points may include a process of determining in which voxel each point is, i.e., calculating an index of the voxel in which each point is located.
Based on the process of calculating the index of the voxels, unordered and sparse point cloud data can be converted into ordered and dense voxel data in the process of carrying out voxelization on the points, so that the point cloud data can be analyzed and processed more conveniently.
In an example, the point cloud data processing method may be performed with a plurality of processing cores, and then the process of the voxel processing described above may be allocated to the plurality of processing cores to be cooperatively performed. The target region may be divided into a plurality of sub-regions, and the processing cores may be allocated to points in the sub-regions in units of sub-regions to perform voxel processing, respectively.
Fig. 2 is a schematic diagram illustrating a division target area 200 according to an exemplary embodiment. The process of dividing the target area 200 may be combined with step S120 in fig. 1, for example.
In an example, as shown in fig. 2, the target area 200 is divided into four sub-areas 210, 220, 230, and 240.
In an example, the sub-areas 210, 220, 230, and 240 may respectively include a part of a large number of points corresponding to the acquired point cloud data, so that the sub-areas 210, 220, 230, and 240 can correspond to sub-point cloud data corresponding to the points, respectively, and the sum of the sub-point cloud data corresponding to the sub-areas 210, 220, 230, and 240 may be exactly equal to the point cloud data. The number of points in sub-areas 210, 220, 230 and 240 may have some variance.
It may be assumed that there are two processing cores for processing point cloud data. In order to make the operation time of each processing core for processing the sub-point cloud data as close as possible, the difference between the numbers of the corresponding points of each processing core may be made smaller than a predetermined threshold. For example, in some cases, the difference between the total number of points in sub-regions 210 and 240 and the total number of points in sub-regions 220 and 230 may be less than a predetermined threshold, and thus sub-regions 210 and 240 may be made to correspond to one processing core and sub-regions 220 and 230 to correspond to another processing core. Therefore, the data volume of the sub-point cloud data to be processed of each processing core is similar, the consumed operation time is similar, and the situation that a large amount of idle time is reserved for waiting for the processing cores with longer operation time to finish operation after the processing cores with shorter operation time finish operation is avoided, so that time resource waste is caused.
It will be appreciated that fig. 2 is only an example, showing an embodiment in which the target region is divided into four sub-regions having different volumes. Depending on the application, the target region may also be divided into a plurality of sub-regions having the same volume.
In an example, after each of the plurality of processing cores performs voxel processing on a point corresponding to the processing core to obtain intermediate processing data corresponding to a single processing core, one of the processing cores may be set as a main processing core, and the intermediate processing data of other processing cores than the main processing core may be output to the main processing core for merging, so as to obtain a result of processing the point cloud data.
In an example, the intermediate processing data may include a set of indices of voxels where all or part of points corresponding to a certain processing core are located and corresponding voxel data. Similarly, the results of the point cloud data processing may include a set of indices of voxels in which all or part of the points in the target region are located and corresponding voxel data.
According to the point cloud data processing method, the target area is divided into the plurality of subareas, and the subareas serve as units to distribute the points to different processing cores to respectively carry out voxelization processing, so that the data quantity required to be traversed in the voxelization processing process is greatly reduced, and the efficiency of point cloud data processing is greatly improved. In the process of determining the corresponding relation between the sub-region and the processing cores, the difference between the number of the points corresponding to each processing core is smaller than a preset threshold value, so that the data volume of the sub-point cloud data to be processed by each processing core is relatively average, the consumed operation time is relatively similar, the data volume of the sub-point cloud data to be processed by each processing core is greatly reduced relative to the original point cloud data, and the situation that the overall processing progress is influenced due to obvious hysteresis of the processing of one core is avoided. By combining the intermediate processing data obtained by each processing core, the obtained point cloud data processing result is not the data of a large number of unordered isolated points, but the main characteristics of the original point cloud data are maintained, the data comprising the interrelationship among the points are included, the complexity and the unordered of the data are greatly reduced, and the calculation and the analysis of the point cloud data processing result in various learning networks are more convenient to follow.
According to some embodiments, in step S120 as shown in fig. 1, the target area may be equally divided into a plurality of sub-areas in a predetermined direction, and a ratio of the number of the sub-areas to the number of the processing cores may be an integer greater than one.
Fig. 3 is a schematic diagram illustrating a division target area 300 according to another exemplary embodiment.
In an example, as shown in fig. 3, the target area 300 is equally divided into eight sub-areas 310, 320, 330, 340, 350, 360, 370, and 380 along its length direction M.
In an example, the length of sub-regions 310, 320, 330, 340, 350, 360, 370, and 380 may be an integer multiple of the voxel length, so that each voxel can exist completely in a certain sub-region, avoiding multiple processing cores from processing points in the same voxel at the same time, thereby affecting the efficiency of sub-point cloud data processing. In some embodiments, the closer to the sub-region of the target center, the denser the points therein, e.g., the most likely the number of points in sub-regions 340 and 350, the more points in sub-regions 330 and 360, the less the number of points in sub-regions 320 and 370, and the least the number of points in sub-regions 310 and 380.
In order to make the difference between the number of points corresponding to each processing core smaller than the predetermined threshold, a sub-region closer to the center of the target region and a sub-region closer to the edge of the target region may be made to correspond to the same processing core, for example, sub-regions 340 and 380 may be made to correspond to the same processing core, and sub-regions 350 and 310 to correspond to another processing core.
It will be appreciated that fig. 3 is only an example, showing an embodiment in which the target area is divided in the length direction to obtain the sub-areas. Depending on the application, the target area may be divided in one or more of length, width, height to obtain sub-areas. To facilitate processing of the sub-point cloud data, the length, width, and height of these sub-regions may be integer multiples of the length, width, and height of the voxel, respectively, e.g., the width of the sub-regions may be twice or four times the width of the voxel.
According to the embodiment of the disclosure, the target area is equally divided along the preset direction to obtain the plurality of sub-areas, and the sub-areas are conveniently corresponding to the plurality of processing cores based on the positions of the sub-areas in the target area, so that the data volume of the sub-point cloud data required to be processed by each processing core is relatively average, and efficient point cloud data processing is realized.
Fig. 4 is a flowchart illustrating a process 400 of determining a correspondence of a sub-region to a processing core in accordance with an example embodiment. The process 400 includes steps S410, S420, S430, and S440. The process 400 may be combined with step S130 of fig. 1, for example.
According to some embodiments, the ratio of the number of the plurality of sub-regions to the number of the plurality of processing cores is an integer multiple of two.
As shown in fig. 4, in step S410, a plurality of sub-regions and a plurality of processing cores may be sequentially numbered, respectively.
In step S420, a first sequence for a plurality of sub-regions may be generated. The length of the first sequence may be the same as the number of the plurality of sub-regions, and the first sequence may include a plurality of first elements associated with the numbers of the plurality of sub-regions, which may be sequentially arranged from a center number among the numbers of the plurality of sub-regions toward an end-to-end number among the numbers of the plurality of sub-regions.
In step S430, a second sequence for the plurality of processing cores may be generated. The length of the second sequence may be the same as the length of the first sequence, and the second sequence may include a plurality of second elements associated with numbers of the plurality of processing cores, in which the numbers of the plurality of processing cores may be arranged in a mirror-symmetrical manner.
In step S440, correspondence between the plurality of sub-regions and the plurality of processing cores may be determined based on the first sequence and the second sequence.
The process of determining the correspondence of sub-regions to processing cores is further described below in conjunction with fig. 5.
Fig. 5 is a schematic diagram illustrating correspondence of sub-regions with processing cores according to an example embodiment.
In an example, the target area may be uniformly divided in the length direction as in fig. 3 to obtain eight sub-areas, and the eight sub-areas (e.g., sub-areas 310 to 380 in fig. 3) may be sequentially given numbers 0 to 7 in position, respectively. It is also possible to assume that the number of processing cores is 4, and to assign numbers 0 to 3 to the four processing cores, respectively.
In an example, one sub-region number sequence 520 (i.e., the first sequence described above) may be generated, and since the number of sub-regions is 8, the length of the sub-region number sequence 520 may be set to 8 as well. For the eight subregions shown in fig. 3, wherein subregion 340 with subregion number 3 and subregion 350 with subregion number 4 are centered subregions, the numbers of which are also centered numbers, so that the subregion number sequence 520 can begin with subregion number 3 or 4. As shown in fig. 5, for example, sub-region number 3 may be arranged in the first bit of sub-region number sequence 520 and sub-region number 4 may be arranged in the second bit of sub-region number sequence 520. And may then be sequentially arranged toward the beginning and end of the sub-region numbers, i.e., 0 and 7. The third bit of the sub-region number sequence 520 may then be set to sub-region number 2, followed by sub-region number 5, sub-region number 1, sub-region number 6, sub-region number 0, and sub-region number 7 in that order. This results in a possible sequence of sub-region numbers 520, i.e. 3-4-2-5-1-6-0-7.
A second sequence for a plurality of processing cores, i.e., processing core number sequence 510 in fig. 5, may then be generated. The length of the second sequence may also be set to 8 and the elements in the second sequence may be the number of the processing core. The numbers of the processing cores may be arranged in a mirror-symmetrical manner. For example, processing core number 0 to processing core number 3 may be sequentially arranged to occupy the first four bits of processing core number sequence 510, and then the last four bits of processing core number sequence 510 may be determined as processing core number 3 to processing core number 0, respectively, based on a mirror symmetry manner. One possible sequence of processing core numbers 510, namely 0-1-2-3-3-2-1-0, may then be obtained.
Then, based on the determined sub-region number sequence 520 and the processing core number sequence 510, the correspondence between the sub-regions 310 to 380 and the four processing cores as shown in fig. 3 can be determined: the processing core with processing core number 0 corresponds to the subregion 340 with subregion number 3 and the subregion 380 with subregion number 7; the processing core with processing core number 1 corresponds to sub-region 310 with sub-region number 0 and sub-region 350 with sub-region number 4; the processing core with processing core number 2 corresponds to the sub-region 330 with sub-region number 2 and the sub-region 370 with sub-region number 6; the processing core with processing core number 3 corresponds to sub-region 320 with sub-region number 1 and sub-region 360 with sub-region number 5.
It can be seen that the correspondence is determined in such a way that adjacent sub-areas are allocated into processing cores that are as decentralized as possible. Due to the nature of the scanning pattern of a sensor such as a lidar, the points are denser in the central location or region and thinner at the edges, and this trend is substantially symmetrical. That is, the points in the subregions 340 and 350 having subregion numbers 3 and 4 are the most dense and the densities are relatively similar, the points in the subregions 330 and 360 having subregion numbers 2 and 5 are the more dense and the densities are relatively similar, the points in the subregions 320 and 370 having subregion numbers 1 and 6 are the more sparse and the densities are relatively similar, and the points in the subregions 310 and 380 having subregion numbers 0 and 7 are the most sparse and the densities are relatively similar. In this way, the number of points to be processed by each processing core can be made very small.
It will be appreciated that fig. 5 is only an example, and shows correspondence between one or more sub-regions having a sub-region number of 8 and a processing core number of 4 and a plurality of processing cores. The correspondence between the plurality of sub-regions and the plurality of processing cores may be not exactly the same as that shown in fig. 5, and the number of processing cores may be greater than or less than 4, and the number of sub-regions may be greater than or less than 8, depending on the actual application. However, in order to make the difference in the number of points to be processed by each processing core as small as possible, the target area may be divided into as many sub-areas as possible, so that the number of points in each sub-area is smaller, and the difference in the number of points in different sub-areas can be smaller.
According to the method and the device for determining the correspondence between the plurality of sub-areas and the plurality of processing cores, the adjacent sub-areas are distributed to the processing cores which are distributed as far as possible, so that a large number of points in the target area can be distributed to the plurality of processing cores on average, the operation time of each processing core for processing the sub-point cloud data is basically consistent, the situation that the overall processing progress is influenced due to obvious delay of a certain core processing is avoided, and the efficiency of point cloud data processing is improved.
According to some embodiments, the method for processing point cloud data may further include reordering, by each processing core, the points corresponding to the processing core in an out-of-order manner before subjecting the points corresponding to the processing core to voxel processing.
In an example, the maximum number of voxels stored and processed and the maximum number of points in each voxel may be preset during the voxelization of the points to reduce the point cloud data to be processed, which may involve traversal and sampling of the points. In order to uniformly sample each region in the sampling process, the collected points are prevented from being concentrated in a certain specific region or a certain specific regions, and the points corresponding to each processing core can be rearranged in an out-of-order manner.
According to the embodiment of the disclosure, the points corresponding to each processing core are rearranged in a disordered manner, so that each region can be uniformly sampled in the sampling process, and the reliability of the data is not affected in the process of simplifying the point cloud data to be processed.
According to some embodiments, rearranging the points corresponding to the processing cores in an out-of-order manner may include: applying a random number for the points corresponding to each sub-region associated with the processing core to reorder the points corresponding to each sub-region in an out-of-order manner; and merging the rearranged points corresponding to each sub-region.
In conventional point cloud data processing, a set of random numbers is sometimes used to correspond to a large number of points in a target area to reorder the points. This means that a very large set of random numbers needs to be generated. The generation and storage of large-scale random numbers can be detrimental to the performance of many computing hardware, and therefore, it is desirable to avoid using too large random numbers as much as possible.
In an example, the target area may be divided to obtain a very large number of sub-areas of very small size, so that the number of points in each sub-area is already much smaller than the total number of points in the target area. If the dots in each sub-area are rearranged with random numbers, the size of the random numbers required is greatly reduced. After rearranging the points in each sub-region, the rearranged points of the plurality of sub-regions corresponding to the processing core may be combined in the processing core, thus obtaining rearranged points of a single processing core. The process of merging rearranged points of the plurality of sub-regions corresponding to the processing core in the processing core may be implemented by sequentially reading and storing one or more points in each sub-region in a loop.
In an example, each sub-region may correspond to one memory space, and the points in each sub-region may be stored in the memory space corresponding to the sub-region. Therefore, when merging rearranged points of a plurality of subareas corresponding to a single processing core, a new storage space can be constructed, and one point or a plurality of points stored in the storage space corresponding to each subarea are read and stored in turn in a circulating manner. Thus, what is stored in the new memory space constructed is the rearranged point of the single processing core.
Fig. 6 is a schematic diagram illustrating merging rearranged points according to an example embodiment.
In an example, as shown in fig. 6, the plurality of sub-regions corresponding to the processing core 640 may include sub-regions 610, 620, 630 and other sub-regions not shown. Points 611, 612, 613, 614 and other points not shown may be present in sub-region 610, points 621, 622, 623, 624 and other points not shown may be present in sub-region 620, and points 631, 632, 633, 634 and other points not shown may be present in sub-region 630. The points may be stored in the memory spaces corresponding to the sub-areas 610, 620, 630, respectively, in the order shown in fig. 6, and the storage order of the points in the respective memory spaces may be determined by generating random numbers and assigning the random numbers to the points.
In an example, the processing core 640 may build a new memory space to store rearranged points throughout the processing core 640. The sub-areas 610, 620, other sub-areas not shown, and a point within the memory space corresponding to the sub-area 630 may be sequentially read and stored in a loop. First, the first point stored in the memory space corresponding to the sub-areas 610, 620, other sub-areas not shown, and sub-area 630, i.e., the first point in the other sub-areas not shown, and the point 631, may be sequentially read and stored. The sub-areas 610, 620, other sub-areas not shown and the second point stored in the memory space corresponding to sub-area 630, i.e. points 621, 622, the second point in the other sub-areas not shown and point 632, may then be read and stored again in turn. The third point stored in the memory space corresponding to the sub-areas 610, 620, other sub-areas not shown and sub-area 630, i.e. the third point 623, the third point in other sub-areas not shown and the point 633 are then sequentially read and stored. The rearranged points in each sub-region are combined according to the rule, and the adjacent points in the rearranged points of the obtained processing core 640 come from different sub-regions, so that the positions of the adjacent points can be sufficiently dispersed, and the subsequent sampling of the points is facilitated.
In an example, the number of points in the sub-areas 610, 620, 630 and other sub-areas not shown may not be the same as each other, and thus in the process of sequentially reading and storing the points of each sub-area in a loop, it may occur that the points of some sub-areas have been read and stored, but the points of other sub-areas have not been all read and stored. At this time, the points of the sub-areas may be sequentially read and stored in a loop only for the sub-areas where all the points have not been read and stored until all the points of all the sub-areas have been read and stored. Such a processing method has no influence on the reliability of rearrangement of the dots in the first half, and has only a certain influence on the reliability of rearrangement of the dots in the second half. This problem can be solved to a large extent by dividing the target area into as many sub-areas as possible, with the difference in the number of points in each sub-area being as small as possible.
According to the embodiment of the disclosure, the rearrangement of the points is realized by using the random numbers to the points in the subareas, and the rearranged points corresponding to each subarea are combined to obtain the final rearranged points, so that the number of the points which need to be disordered by the random numbers can be greatly reduced, and only a plurality of shorter random numbers are needed to be generated, so that the need of generating large-scale random numbers is avoided, the calculation resources are saved, and the efficiency of point cloud data processing is improved.
According to some embodiments, the voxel processing is performed on the point corresponding to the processing core through each processing core to obtain intermediate processing data, which may include: determining non-empty voxels associated with the point and an index of the non-empty voxels based on the point corresponding to the processing core; and determining a number of corresponding points in the non-empty voxels; wherein the intermediate processing data comprises a non-empty voxel tensor for storing non-empty voxels, an index of the non-empty voxels, and a number of corresponding points in the non-empty voxels.
Fig. 7 is a schematic diagram illustrating a voxel set 700 corresponding to a single processing core in accordance with an example embodiment. Voxel set 700 may include 54 voxels associated with points corresponding to a certain processing core.
In an example, as shown in fig. 7, each voxel in the set of voxels 700 can be represented by a cube, and the numbers in the cubes can represent the number of points in the corresponding voxel. Among these voxels, some have a number greater than 0, e.g., the number of points in voxel 701 is 8, and such voxels may be referred to as non-empty voxels. While the numbers in other voxels are 0, such as voxel 702, such voxels being empty voxels. Because of the sparsity of the point cloud data, there may be a large number of empty voxels in the voxel set 700 corresponding to a single processing core, and there may be no points in these voxels, so that when processing the point cloud data, there may be no space for storing data related to these empty voxels.
In an example, for each processing core, in generating intermediate processing data, a size N may be constructed v *N pmax *N f Non-empty voxels are stored by a non-empty voxel tensor V, where N v May represent the total number of voxels in the sub-region corresponding to the processing core, e.g. in the sub-region corresponding to the processing core shown in fig. 7The total number of voxels of (2) is 54.N (N) f The number of characteristic values of the point can be represented, for example, the data of each point can comprise three-dimensional position information and reflection intensity of the point, then N f Has a value of 4.N (N) pmax The predetermined upper limit value of the number of stored points in each voxel may be represented, and when the number of stored points in a certain voxel reaches the upper limit value, the influence of the newly added points on the point cloud data processing and calculation becomes very small, and points exceeding the upper limit value may be discarded in order to reduce the data amount. For the same reason, an upper limit value of the number of non-empty voxels stored by the non-empty voxel tensor V may also be set to further reduce the data volume.
According to the process of obtaining intermediate processing data in the embodiment of the disclosure, a large number of unordered and isolated point data are converted into the intermediate processing data which retains the main characteristics of original point cloud data and contains the interrelationships among the points, so that the complexity and the unordered degree of the data are greatly reduced, and the subsequent calculation and analysis of the results of point cloud data processing in various learning networks are more convenient.
Fig. 8 is a flowchart illustrating a voxelization process 800 in accordance with an exemplary embodiment. The process 800 may include steps S801 to S812. The process 800 may be implemented in each of a plurality of processing cores, one of which is described below as an example.
Referring to fig. 8, in step S801, the dots corresponding to the processing cores may be rearranged out of order. This process may be, for example, a process of out-of-order rearrangement of points as shown in connection with fig. 6.
Each point corresponding to the processing core may then be processed in turn starting from the first point in a traversal manner. In step S802, an index of a voxel corresponding to the current point may be determined. The index of voxels may be expressed as (ID x , ID y , ID z ) For indicating the location of the voxel in the target region.
It will be appreciated that the indices differ from one voxel to another. Therefore, step S803 may be performed based on the index value, judging whether the voxel is a new voxel.
If the index of the voxel corresponding to the current point is a new index, this means that the voxel is a new voxel, and step S804 may be performed to determine whether the number of voxels exceeds the standard. A first upper limit value for the number of non-empty voxels stored by the non-empty voxel tensor V may be preset, and may be related to a ratio of the predetermined total upper limit value of non-empty voxels to the processing core, for example, the first upper limit value may be set to 1.25 times the ratio. If the number of voxels has not reached the first upper limit at this point, then step S805 may be performed to update the number of voxels, increment the number of voxels by one, and step S806 may be performed to store an index for the voxel.
Step S807 may next be performed to determine whether the number of points for the voxel exceeds a standard. The second upper limit value N of the number of memory points in each voxel may be preset pmax If the number of points corresponding to the voxel has not reached the second upper limit value at this time, step S808 may be performed to store the current point, and step S809 may be performed to update the number of points of the voxel, the number of points corresponding to the voxel being increased by one. Step S808 may be implemented by storing data of features such as three-dimensional position information and reflection intensity of the current point in the non-empty voxel tensor V.
At this time, the processing for the current point is completed, step S810 may be executed to determine whether or not traversal is completed for all points corresponding to the processing core. If it is determined in step S804 that the number of voxels has reached or exceeded the first upper limit value, the new voxel may not be stored any more, the processing for the current point may be directly ended, and step S810 is performed. If it is determined in step S807 that the number of points corresponding to the voxel has reached or exceeded the second upper limit value, step S810 may be directly performed without storing a new point in the voxel.
In step S810, if all points corresponding to the processing core have not been traversed, step S811 may be next performed to process the next point, take the next point as a new current point, and then perform steps S802 to S809 on the new current point. If all points corresponding to the processing core have been traversed in step S810, step S812 may be performed to output intermediate processing data. The intermediate processing data may include the above-described non-empty voxel tensor V, the index of the non-empty voxels, and the number of corresponding points in the non-empty voxels.
According to some embodiments, merging intermediate processing data obtained by each processing core may include: combining non-empty voxel tensors obtained by each processing core; and merging indexes of non-empty voxels obtained by each processing core.
Fig. 9 is a flowchart illustrating a merge middle process data procedure 900 according to an example embodiment. Process 900 may include steps S910 through S950. Process 900 may be implemented in one of a plurality of processing cores.
Referring to fig. 9, in step S910, intermediate processing data generated by each of a plurality of processing cores may be input. The process by which these processing cores respectively generate intermediate processing data corresponding thereto may be, for example, combined with the process shown in fig. 8.
After obtaining the intermediate processing data for each processing core, step S920 may be performed to merge the non-zero voxel tensors and to merge the indices of the non-zero voxels. In the example, since the storage positions of the non-empty voxels in the non-empty voxel tensors respectively corresponding to the plurality of processing cores are irrelevant to the actual positions of the non-empty voxels in the space in the intermediate processing data, the actual positions of the non-empty voxels are marked by indexes of the non-empty voxels, the non-empty voxel tensors obtained by each processing core and the indexes of the non-empty voxels can be combined in a direct splicing manner without affecting the accuracy of the data.
Step S930 may then be performed to determine whether the number of voxels exceeds a standard. The third upper limit value of the number of non-empty voxels of the merged non-empty voxel tensor store (i.e., the total upper limit value of the non-empty voxels) may be preset. If the total number of non-empty voxels stored by the merged non-empty voxel tensor at this time does not exceed the third upper limit value, step S950 may be directly performed to output the result of the point cloud data processing. The result of the point cloud data processing may include the merged non-empty voxel tensor and the index of the merged non-empty voxels, and may also include the number of corresponding points in the non-empty voxels. If the total number of non-empty voxels stored in the merged non-empty voxel tensor exceeds the third upper limit value, step S940 may be performed first, to filter out the exceeding voxels, and then step S950 may be performed.
According to the embodiment of the disclosure, the process of merging the intermediate processing data can simply and efficiently obtain the result of overall point cloud data processing, so that the obtained result maintains the original data accuracy, and is convenient for further processing and operation of the subsequent point cloud data.
According to another aspect of the disclosure, a point cloud data processing device is also provided.
Fig. 10 is a schematic block diagram illustrating a point cloud data processing apparatus 1000 according to an exemplary embodiment.
As shown in fig. 10, the point cloud data processing apparatus 1000 includes: a point cloud data acquisition module 1010 configured to acquire point cloud data corresponding to a target area; a target region dividing module 1020 configured to divide the target region into a plurality of sub-regions, wherein each sub-region corresponds to sub-point cloud data, the sub-point cloud data is a subset of the point cloud data, and the sub-point cloud data corresponding to each sub-region has a difference in the number of points; a sub-region allocation module 1030 configured to determine correspondence between a plurality of sub-regions and a plurality of processing cores, wherein each processing core corresponds to a subset of the plurality of sub-regions such that a difference between a number of points to which each processing core corresponds is less than a predetermined threshold; a voxelization processing module 1040 configured to perform voxelization processing on a point corresponding to the processing core by each processing core based on the correspondence relationship to obtain intermediate processing data; and a data merging module 1050 configured to merge the intermediate processing data obtained by each processing core to obtain a result of the point cloud data processing.
According to the embodiment of the disclosure, the target area is divided into the plurality of subareas, and the subareas are used as units to distribute the points to different processing cores to respectively carry out voxelization, so that the data volume required to be traversed in the voxelization is greatly reduced, and the efficiency of point cloud data processing is greatly improved. In the process of determining the corresponding relation between the sub-region and the processing cores, the difference between the number of the points corresponding to each processing core is smaller than a preset threshold value, so that the data volume of the sub-point cloud data to be processed by each processing core is relatively average, the consumed operation time is relatively similar, the data volume of the sub-point cloud data to be processed by each processing core is greatly reduced relative to the original point cloud data, and the situation that the overall processing progress is influenced due to obvious hysteresis of the processing of one core is avoided. By combining the intermediate processing data obtained by each processing core, the obtained point cloud data processing result is not the data of a large number of unordered isolated points, but the main characteristics of the original point cloud data are maintained, the data comprising the interrelationship among the points are included, the complexity and the unordered of the data are greatly reduced, and the calculation and the analysis of the point cloud data processing result in various learning networks are more convenient to follow.
It should be appreciated that the various modules of the apparatus 1000 shown in fig. 10 may correspond to the various steps in the method 100 described with reference to fig. 1. Thus, the operations, features and advantages described above with respect to method 100 apply equally to apparatus 1000 and the modules that it comprises. For brevity, certain operations, features and advantages are not described in detail herein.
Although specific functions are discussed above with reference to specific modules, it should be noted that the functions of the various modules discussed herein may be divided into multiple modules and/or at least some of the functions of the multiple modules may be combined into a single module. The particular module performing the actions discussed herein includes the particular module itself performing the actions, or alternatively the particular module invoking or otherwise accessing another component or module that performs the actions (or performs the actions in conjunction with the particular module). Thus, a particular module that performs an action may include that particular module itself that performs the action and/or another module that the particular module invokes or otherwise accesses that performs the action.
It should also be appreciated that various techniques may be described herein in the general context of software or program modules. The various modules described above with respect to fig. 10 may be implemented in hardware or in hardware in combination with software and/or firmware. For example, the modules may be implemented as computer program code/instructions configured to be executed in one or more processors and stored in a computer-readable storage medium. Alternatively, these modules may be implemented as hardware logic/circuitry. For example, in some embodiments, one or more of the point cloud data acquisition module 1010, the target region partitioning module 1020, the sub-region allocation module 1030, the voxelization processing module 1040, and the data merge module 1050 as shown in fig. 10 may be implemented together in a System on Chip (SoC). The SoC may include an integrated circuit chip including one or more components of a processor (e.g., a central processing unit (Central Processing Unit, CPU), microcontroller, microprocessor, digital signal processor (Digital Signal Processor, DSP), etc.), memory, one or more communication interfaces, and/or other circuitry, and may optionally execute received program code and/or include embedded firmware to perform functions.
According to an aspect of the present disclosure, a computer device is provided that includes a memory, a processor, and a computer program stored on the memory. The processor is configured to execute a computer program to implement the steps of any of the method embodiments described above.
According to an aspect of the present disclosure, there is provided a non-transitory computer readable storage medium having stored thereon a computer program which, when executed by a processor, implements the steps of any of the method embodiments described above.
An illustrative example of such a computer device and non-transitory computer readable storage medium is described below in connection with fig. 11.
Fig. 11 illustrates an example configuration of a computer device 1100 that may be used to implement the methods described herein. For example, the point cloud data processing apparatus described above may be implemented, in whole or at least in part, by computer device 1100 or a similar device or system.
The computer device 1100 may be a variety of different types of devices. Examples of computer device 1100 include, but are not limited to: a desktop, server, notebook, or netbook computer, a mobile device (e.g., tablet, cellular, or other wireless telephone (e.g., smart phone), notepad computer, mobile station), a wearable device (e.g., glasses, watch), an entertainment appliance (e.g., an entertainment appliance, a set-top box communicatively coupled to a display device, a gaming machine), a television or other display device, an automotive computer, and so forth.
Computer device 1100 can include at least one processor 1102, memory 1104, communication interface(s) 1106, display device 1108, other input/output (I/O) devices 1110, and one or more mass storage devices 1112, which can communicate with each other, such as through a system bus 1114 or other suitable connection.
The processor 1102 may be a single processing unit or multiple processing units, all of which may include a single or multiple computing units or multiple cores. The processor 1102 may be implemented as one or more microprocessors, microcomputers, microcontrollers, digital signal processors, central processing units, state machines, logic circuitries, and/or any devices that manipulate signals based on operational instructions. The processor 1102 may be configured to, among other capabilities, obtain and execute computer-readable instructions stored in the memory 1104, mass storage 1112, or other computer-readable medium, such as program code for the operating system 1116, program code for the application programs 1118, program code for other programs 1120, and so forth.
Memory 1104 and mass storage 1112 are examples of computer-readable storage media for storing instructions that are executed by processor 1102 to implement the various functions as described above. For example, memory 1104 may generally include both volatile memory and nonvolatile memory (e.g., RAM, ROM, etc.). In addition, mass storage 1112 may generally include hard drives, solid state drives, removable media, including external and removable drives, memory cards, flash memory, floppy disks, optical disks (e.g., CD, DVD), storage arrays, network attached storage, storage area networks, and the like. Memory 1104 and mass storage 1112 may both be referred to herein as memory or computer-readable storage media, and may be non-transitory media capable of storing computer-readable, processor-executable program instructions as computer program code that may be executed by processor 1102 as a particular machine configured to implement the operations and functions described in the examples herein.
A number of programs may be stored on mass storage device 1112. These programs include an operating system 1116, one or more application programs 1118, other programs 1120, and program data 1122, and they may be loaded into the memory 1104 for execution. Examples of such application programs or program modules may include, for example, computer program logic (e.g., computer program code or instructions) for implementing the method 100 and/or further embodiments described herein.
Although illustrated in fig. 11 as being stored in the memory 1104 of the computer device 1100, the modules 1116, 1118, 1120, and 1122, or portions thereof, may be implemented using any form of computer readable media accessible by the computer device 1100. As used herein, "computer-readable medium" includes at least two types of computer-readable media, namely computer-readable storage media and communication media.
Computer-readable storage media includes volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer-readable instructions, data structures, program modules or other data. Computer-readable storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital Versatile Disks (DVD), or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other non-transmission medium which can be used to store information for access by a computer device. In contrast, communication media may embody computer readable instructions, data structures, program modules, or other data in a modulated data signal such as a carrier wave or other transport mechanism. Computer-readable storage media as defined herein do not include communication media.
One or more communication interfaces 1106 are used to exchange data with other devices, such as via a network, direct connection, or the like. Such communication interfaces may be one or more of the following: any type of network interface (e.g., a Network Interface Card (NIC)), a wired or wireless (such as IEEE 802.11 Wireless LAN (WLAN)) wireless interface, a worldwide interoperability for microwave access (Wi-MAX) interface, an ethernet interface, a Universal Serial Bus (USB) interface, a cellular network interface, bluetooth, etc TM An interface, a Near Field Communication (NFC) interface, etc. Communication interface 1106 may facilitate communication within a variety of network and protocol types, including wired networks (e.g., LAN, cable, etc.) and wireless networks (e.g., WLAN, cellular, satellite, etc.), the Internet, and so forth. Communication interface 1106 may also provide for communication with external storage devices (not shown) such as in a storage array, network attached storage, storage area network, or the like.
In some examples, a display device 1108, such as a monitor, may be included for displaying information and images to a user. Other I/O devices 1110 may be devices that receive various inputs from a user and provide various outputs to the user, and may include touch input devices, gesture input devices, cameras, keyboards, remote controls, mice, printers, audio input/output devices, and so on.
The techniques described herein may be supported by these various configurations of computer device 1100 and are not limited to the specific examples of techniques described herein. For example, this functionality may also be implemented in whole or in part on a "cloud" using a distributed system. The cloud includes and/or represents a platform for the resource. The platform abstracts underlying functionality of hardware (e.g., servers) and software resources of the cloud. The resources may include applications and/or data that may be used when performing computing processing on servers remote from the computer device 1100. Resources may also include services provided over the internet and/or over subscriber networks such as cellular or Wi-Fi networks. The platform may abstract resources and functions to connect the computer device 1100 with other computer devices. Thus, implementations of the functionality described herein may be distributed throughout the cloud. For example, the functionality may be implemented in part on computer device 1100 and in part by a platform that abstracts the functionality of the cloud.
While the disclosure has been illustrated and described in detail in the drawings and foregoing description, such illustration and description are to be considered illustrative and schematic and not restrictive; the present disclosure is not limited to the disclosed embodiments. Variations to the disclosed embodiments can be understood and effected by those skilled in the art in practicing the claimed subject matter, from a study of the drawings, the disclosure, and the appended claims. In the claims, the word "comprising" does not exclude other elements or steps than those listed and the indefinite article "a" or "an" does not exclude a plurality, the term "a" or "an" means two or more, and the term "based on" is to be interpreted as "based at least in part on". The mere fact that certain measures are recited in mutually different dependent claims does not indicate that a combination of these measures cannot be used to advantage.
Claims (8)
1. A point cloud data processing method, comprising:
acquiring point cloud data corresponding to a target area;
equally dividing the target area into a plurality of sub-areas along a preset direction, wherein each sub-area corresponds to sub-point cloud data, the sub-point cloud data are subsets of the point cloud data, and the sub-point cloud data corresponding to each sub-area have differences in the number of points;
determining a correspondence between the plurality of sub-regions and the plurality of processing cores, wherein each processing core corresponds to a subset of the plurality of sub-regions such that a difference between a number of points corresponding to each processing core is less than a predetermined threshold, a ratio of the number of the plurality of sub-regions to the number of the plurality of processing cores being an integer multiple of two;
based on the corresponding relation, performing voxelization processing on the point corresponding to the processing core through each processing core to obtain intermediate processing data; and
combining the intermediate processing data obtained through each processing core to obtain a point cloud data processing result;
wherein the determining the correspondence between the plurality of sub-regions and the plurality of processing cores includes:
sequentially numbering the plurality of sub-regions and the plurality of processing cores, respectively;
Generating a first sequence for the plurality of sub-regions, wherein the length of the first sequence is the same as the number of the plurality of sub-regions, and the first sequence comprises a plurality of first elements associated with the numbers of the plurality of sub-regions, the plurality of first elements being sequentially arranged from a centered number in the numbers of the plurality of sub-regions toward a beginning-to-end number in the numbers of the plurality of sub-regions;
generating a second sequence for the plurality of processing cores, wherein the second sequence has a length that is the same as a length of the first sequence, and the second sequence includes a plurality of second elements associated with numbers of the plurality of processing cores, wherein the numbers of the plurality of processing cores are arranged in a mirror-symmetrical manner; and
the correspondence between the plurality of sub-regions and the plurality of processing cores is determined based on the first sequence and the second sequence.
2. The method of claim 1, further comprising:
before the voxel processing is performed on the point corresponding to the processing core through each processing core, the point corresponding to the processing core is rearranged in an out-of-order manner.
3. The method of claim 2, wherein rearranging the corresponding points of the processing core in an out-of-order manner comprises:
Applying a random number for the points corresponding to each sub-region associated with the processing core to reorder the points corresponding to each sub-region in an out-of-order manner; and
the rearranged points corresponding to each sub-region are combined.
4. The method of claim 1, wherein the voxelizing the corresponding point of the processing core by each processing core to obtain intermediate processing data, comprising:
determining, based on a point corresponding to the processing core, a non-empty voxel associated with the point and an index of the non-empty voxel; and
determining a number of corresponding points in the non-empty voxels;
wherein the intermediate processing data comprises a non-empty voxel tensor for storing the non-empty voxels, an index of the non-empty voxels, and a number of corresponding points in the non-empty voxels.
5. The method of claim 4, wherein the merging intermediate processing data obtained by each processing core comprises:
combining the non-empty voxel tensors obtained by each processing core; and
and merging indexes of the non-empty voxels obtained by each processing core.
6. A point cloud data processing apparatus, comprising:
The point cloud data acquisition module is configured to acquire point cloud data corresponding to a target area;
a target area dividing module configured to equally divide the target area into a plurality of sub-areas along a predetermined direction, wherein each sub-area corresponds to sub-point cloud data, the sub-point cloud data is a subset of the point cloud data, and the sub-point cloud data corresponding to each sub-area has a difference in the number of points; a sub-region allocation module configured to determine a correspondence between the plurality of sub-regions and a plurality of processing cores, wherein each processing core corresponds to a subset of the plurality of sub-regions such that a difference between a number of points to which each processing core corresponds is less than a predetermined threshold, a ratio of the number of the plurality of sub-regions to the number of the plurality of processing cores being an integer multiple of two, the sub-region allocation module being further configured to:
sequentially numbering the plurality of sub-regions and the plurality of processing cores, respectively;
generating a first sequence for the plurality of sub-regions, wherein the length of the first sequence is the same as the number of the plurality of sub-regions, and the first sequence comprises a plurality of first elements associated with the numbers of the plurality of sub-regions, the plurality of first elements being sequentially arranged from a centered number in the numbers of the plurality of sub-regions toward a beginning-to-end number in the numbers of the plurality of sub-regions;
Generating a second sequence for the plurality of processing cores, wherein the second sequence has a length that is the same as a length of the first sequence, and the second sequence includes a plurality of second elements associated with numbers of the plurality of processing cores, wherein the numbers of the plurality of processing cores are arranged in a mirror-symmetrical manner; and
determining the correspondence between the plurality of sub-regions and the plurality of processing cores based on the first sequence and the second sequence;
the voxelization processing module is configured to perform voxelization processing on the point corresponding to the processing core through each processing core based on the corresponding relation so as to obtain intermediate processing data; and
and the data merging module is configured to merge the intermediate processing data obtained through each processing core to obtain the result of the point cloud data processing.
7. A computer device, comprising:
at least one processor; and
a memory on which a computer program is stored,
wherein the computer program, when executed by the processor, causes the processor to perform the method of any of claims 1-5.
8. A computer readable storage medium having stored thereon a computer program which, when executed by a processor, causes the processor to perform the method of any of claims 1-5.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310714606.0A CN116452403B (en) | 2023-06-16 | 2023-06-16 | Point cloud data processing method and device, computer equipment and storage medium |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310714606.0A CN116452403B (en) | 2023-06-16 | 2023-06-16 | Point cloud data processing method and device, computer equipment and storage medium |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116452403A CN116452403A (en) | 2023-07-18 |
CN116452403B true CN116452403B (en) | 2023-09-01 |
Family
ID=87124115
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310714606.0A Active CN116452403B (en) | 2023-06-16 | 2023-06-16 | Point cloud data processing method and device, computer equipment and storage medium |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116452403B (en) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118134748B (en) * | 2024-04-30 | 2024-07-23 | 合肥埃科光电科技股份有限公司 | Multi-line central point cloud data hardware hierarchical ordering method, system and medium |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2014052528A (en) * | 2012-09-07 | 2014-03-20 | Yahoo Japan Corp | Information processor, method and computer program |
JP2017228234A (en) * | 2016-06-24 | 2017-12-28 | 富士通株式会社 | Information processor, region division method, and region division program |
CN110706238A (en) * | 2019-09-12 | 2020-01-17 | 南京人工智能高等研究院有限公司 | Method and device for segmenting point cloud data, storage medium and electronic equipment |
WO2020155159A1 (en) * | 2019-02-02 | 2020-08-06 | 深圳市大疆创新科技有限公司 | Method for increasing point cloud sampling density, point cloud scanning system, and readable storage medium |
CN112285733A (en) * | 2020-10-21 | 2021-01-29 | 郑州中核岩土工程有限公司 | Urban and rural planning verification and mapping data processing method |
WO2021134339A1 (en) * | 2019-12-30 | 2021-07-08 | 深圳元戎启行科技有限公司 | Point cloud-based segmentation processing method and apparatus, computer device, and storage medium |
WO2021212294A1 (en) * | 2020-04-21 | 2021-10-28 | Beijing Didi Infinity Technology And Development Co., Ltd. | Systems and methods for determining a two-dimensional map |
WO2022012192A1 (en) * | 2020-07-16 | 2022-01-20 | 腾讯科技(深圳)有限公司 | Method and apparatus for constructing three-dimensional facial model, and device and storage medium |
WO2022099511A1 (en) * | 2020-11-11 | 2022-05-19 | 深圳元戎启行科技有限公司 | Method and apparatus for ground segmentation based on point cloud data, and computer device |
CN114693855A (en) * | 2022-05-31 | 2022-07-01 | 中汽创智科技有限公司 | Point cloud data processing method and device |
CN115222941A (en) * | 2022-07-21 | 2022-10-21 | 小米汽车科技有限公司 | Target detection method and device, vehicle, storage medium, chip and electronic equipment |
WO2023071273A1 (en) * | 2021-10-29 | 2023-05-04 | 上海商汤智能科技有限公司 | Point cloud data processing |
-
2023
- 2023-06-16 CN CN202310714606.0A patent/CN116452403B/en active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2014052528A (en) * | 2012-09-07 | 2014-03-20 | Yahoo Japan Corp | Information processor, method and computer program |
JP2017228234A (en) * | 2016-06-24 | 2017-12-28 | 富士通株式会社 | Information processor, region division method, and region division program |
WO2020155159A1 (en) * | 2019-02-02 | 2020-08-06 | 深圳市大疆创新科技有限公司 | Method for increasing point cloud sampling density, point cloud scanning system, and readable storage medium |
CN110706238A (en) * | 2019-09-12 | 2020-01-17 | 南京人工智能高等研究院有限公司 | Method and device for segmenting point cloud data, storage medium and electronic equipment |
WO2021134339A1 (en) * | 2019-12-30 | 2021-07-08 | 深圳元戎启行科技有限公司 | Point cloud-based segmentation processing method and apparatus, computer device, and storage medium |
WO2021212294A1 (en) * | 2020-04-21 | 2021-10-28 | Beijing Didi Infinity Technology And Development Co., Ltd. | Systems and methods for determining a two-dimensional map |
WO2022012192A1 (en) * | 2020-07-16 | 2022-01-20 | 腾讯科技(深圳)有限公司 | Method and apparatus for constructing three-dimensional facial model, and device and storage medium |
CN112285733A (en) * | 2020-10-21 | 2021-01-29 | 郑州中核岩土工程有限公司 | Urban and rural planning verification and mapping data processing method |
WO2022099511A1 (en) * | 2020-11-11 | 2022-05-19 | 深圳元戎启行科技有限公司 | Method and apparatus for ground segmentation based on point cloud data, and computer device |
WO2023071273A1 (en) * | 2021-10-29 | 2023-05-04 | 上海商汤智能科技有限公司 | Point cloud data processing |
CN114693855A (en) * | 2022-05-31 | 2022-07-01 | 中汽创智科技有限公司 | Point cloud data processing method and device |
CN115222941A (en) * | 2022-07-21 | 2022-10-21 | 小米汽车科技有限公司 | Target detection method and device, vehicle, storage medium, chip and electronic equipment |
Non-Patent Citations (1)
Title |
---|
一种并行计算的流数据Delaunay构网算法;李坚 等;武汉大学学报(信息科学版);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN116452403A (en) | 2023-07-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11037305B2 (en) | Method and apparatus for processing point cloud data | |
CN111210429B (en) | Point cloud data partitioning method and device and obstacle detection method and device | |
CN116452403B (en) | Point cloud data processing method and device, computer equipment and storage medium | |
US20150242709A1 (en) | Learning apparatus, density measuring apparatus, learning method, computer program product, and density measuring system | |
JP2022552753A (en) | Point cloud data labeling method, device, electronic device and computer readable storage medium | |
CN111553946B (en) | Method and device for removing ground point cloud and method and device for detecting obstacle | |
CN111582054A (en) | Point cloud data processing method and device and obstacle detection method and device | |
KR102511381B1 (en) | Improvement of image classification using boundary-bitmaps | |
US11281935B2 (en) | 3D object detection from calibrated 2D images | |
CN115731542A (en) | Multi-mode weak supervision three-dimensional target detection method, system and equipment | |
EP4332910A1 (en) | Behavior detection method, electronic device, and computer readable storage medium | |
CN113343725B (en) | Anti-collision method and system for multiple RFID readers | |
Singh et al. | Fotonnet: A hw-efficient object detection system using 3d-depth segmentation and 2d-dnn classifier | |
CN115115535A (en) | Depth map denoising method, device, medium and equipment | |
CN113988258A (en) | Hardware-aware differentiable neural network structure searching method and device | |
CN118042181B (en) | Video rendering method, apparatus, electronic device, computer-readable storage medium, and computer program product | |
CN114279456B (en) | Picture construction/vehicle positioning method, system, terminal and computer storage medium | |
CN111242142B (en) | Template subgraph acquisition method and device, processor and electronic device | |
CN116051848B (en) | Image feature extraction method, network model, device and equipment | |
US20230177737A1 (en) | Systems and method for adaptive filtering in patch generation for video-based point cloud coding | |
CN116310392A (en) | Method, apparatus, computer device and storage medium for processing sparse data | |
CN117671475A (en) | Image processing method, device, electronic equipment and storage medium | |
CN117292339A (en) | Lane group guide line generation method, device, equipment and readable storage medium | |
CN117314941A (en) | Image processing method, device, equipment, medium and program product | |
CN114842229A (en) | Point cloud clustering method and device, storage medium and electronic equipment |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |