WO2020237647A1 - 点云数据的编码方法、编码装置、解码方法与解码装置 - Google Patents

点云数据的编码方法、编码装置、解码方法与解码装置 Download PDF

Info

Publication number
WO2020237647A1
WO2020237647A1 PCT/CN2019/089593 CN2019089593W WO2020237647A1 WO 2020237647 A1 WO2020237647 A1 WO 2020237647A1 CN 2019089593 W CN2019089593 W CN 2019089593W WO 2020237647 A1 WO2020237647 A1 WO 2020237647A1
Authority
WO
WIPO (PCT)
Prior art keywords
point cloud
cloud data
data
data sets
code stream
Prior art date
Application number
PCT/CN2019/089593
Other languages
English (en)
French (fr)
Inventor
李璞
郑萧桢
Original Assignee
深圳市大疆创新科技有限公司
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by 深圳市大疆创新科技有限公司 filed Critical 深圳市大疆创新科技有限公司
Priority to CN201980009142.5A priority Critical patent/CN111684808A/zh
Priority to PCT/CN2019/089593 priority patent/WO2020237647A1/zh
Publication of WO2020237647A1 publication Critical patent/WO2020237647A1/zh

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/597Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding specially adapted for multi-view video sequence encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/436Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using parallelised computational arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/96Tree coding, e.g. quad-tree coding

Definitions

  • This application relates to the field of data encoding and decoding, and more specifically, to a method and device for encoding point cloud data, and a method and device for decoding point cloud data.
  • a point cloud is a representation of a three-dimensional object or a three-dimensional scene. It is composed of a set of discrete points randomly distributed in space.
  • the discrete points are point cloud data.
  • the point cloud data is used to represent three-dimensional objects or three-dimensional scenes.
  • the spatial structure and surface attributes of a point cloud data is usually composed of position information.
  • the point cloud data also includes attribute information.
  • the position information is, for example, three-dimensional coordinates (x, y, z).
  • the attribute information is, for example, Color (R, G, B) and reflectance. In order to reduce the storage space occupied during point cloud storage and the bandwidth occupied during point cloud transmission, it is necessary to compress the point cloud.
  • a compression processing method is to encode the point cloud through an octree, that is, the space where the point cloud is located is divided into eight subspaces.
  • the point cloud data in the eight subspaces belong to the same layer. If there is point cloud data in the subspace , The subspace is further divided until the smallest division unit is obtained, and then the obtained point clouds are coded layer by layer.
  • the present application provides a method and device for encoding point cloud data, and a method and device for decoding point cloud data, which can improve the compression efficiency and decoding efficiency of point cloud data.
  • a method for encoding point cloud data including: acquiring a plurality of point cloud data; dividing the plurality of point cloud data into k data sets according to the positions of the plurality of point cloud data, wherein The k data sets include a first data set, the distance between at least two point cloud data in the first data set is less than or equal to a first distance threshold, and the k is a positive integer greater than or equal to 2; The k data sets are respectively coded.
  • the point cloud data is first processed by the clustering method, that is, the dense point cloud data is divided into a set, and then based on the location encoding method (for example, the octree encoding method)
  • the point cloud data in the collection is edged. Since the point cloud data in the set is dense point cloud data, the number of hollow sets in the subset divided by the octree coding is reduced, and the compression efficiency of the octree coding is improved.
  • a method for decoding point cloud data which includes: obtaining a point cloud data code stream; decoding the point cloud data code stream to generate k data sets, the k data sets including slaves In the point cloud data obtained by decoding in the point cloud data code stream, the k is a positive integer greater than or equal to 2; the k data sets are merged to obtain a complete point cloud.
  • decoding is performed through the inverse process of the clustering method, that is, the code stream is first decoded into multiple data sets, and then the multiple data sets are merged to obtain a complete point cloud. Since the above multiple data sets are components of the complete point cloud, each data set has fewer coding levels. Therefore, the code stream is decoded into multiple data sets and then the multiple data sets are merged, which can reduce Small decoding workload improves decoding efficiency.
  • a point cloud data encoding device is provided, and the encoding device is configured to execute the method in the above-mentioned first aspect.
  • a point cloud data encoding device in a fourth aspect, includes a memory and a processor, the memory is used to store instructions, and the processor is used to execute instructions stored in the memory, and Execution of the stored instructions causes the processor to execute the method of the first aspect.
  • a chip in a fifth aspect, includes a processing module and a communication interface, the processing module is configured to control the communication interface to communicate with the outside, and the processing module is also configured to implement the method of the first aspect.
  • a computer-readable storage medium on which a computer program is stored, and when the computer program is executed by a computer, the computer realizes the method of the first aspect.
  • the computer may be the aforementioned point cloud data encoding device.
  • the present application provides a computer program product containing instructions that when executed by a computer causes the computer to implement the method provided in the first aspect.
  • a point cloud data decoding device is provided, and the decoding device is configured to execute the method in the second aspect.
  • a point cloud data decoding device includes a memory and a processor, the memory is used to store instructions, and the processor is used to execute instructions stored in the memory, and Execution of the stored instructions causes the processor to execute the method of the second aspect.
  • a chip in a tenth aspect, includes a processing module and a communication interface, the processing module is configured to control the communication interface to communicate with the outside, and the processing module is also configured to implement the method of the second aspect.
  • a computer-readable storage medium on which a computer program is stored, and when the computer program is executed by a computer, the computer realizes the method of the second aspect.
  • the computer may be the above-mentioned point cloud data decoding device.
  • the present application provides a computer program product containing instructions, which when executed by a computer causes the computer to implement the method provided in the second aspect.
  • Fig. 1 is a schematic diagram of an encoding process provided by this application.
  • Figure 2 is a schematic diagram of an encoding process provided by this application.
  • Fig. 3 is a schematic diagram of a method for encoding point cloud data provided by the present application.
  • Fig. 4 is a schematic diagram of a method for serially encoding point cloud data provided by the present application.
  • Fig. 5 is a schematic diagram of a method for parallel encoding point cloud data provided by the present application.
  • Fig. 6 is a process of dividing a point cloud based on a k-means clustering algorithm provided by this application.
  • Fig. 7 is a schematic diagram of a method for decoding point cloud data provided by the present application.
  • Fig. 8 is a schematic diagram of a method for serially decoding point cloud data provided by the present application.
  • Fig. 9 is a schematic diagram of a method for parallel decoding of point cloud data provided by the present application.
  • Fig. 10 is a schematic diagram of an encoding device provided by the present application.
  • Fig. 11 is a schematic diagram of a decoding device provided by the present application.
  • Figure 1 shows a schematic diagram of an encoding process provided by this application.
  • the encoding system separately encodes the position information and attribute information in the input point cloud data.
  • the point cloud data may be point cloud data obtained by a sensor (such as a lidar) on a mobile platform.
  • the position information is quantized, for example, the coordinate value is rounded. It is possible to choose to perform position coding on the quantized coordinates before removing duplicate coordinates, or directly perform position coding on the quantized coordinates.
  • the position coding described above is, for example, octree coding.
  • the attribute information can be encoded after attribute conversion, or the attribute information can be directly encoded.
  • the attribute conversion needs to be performed during the attribute encoding process, for example, the attribute information corresponding to the merged coordinates is merged; if the process of removing duplicate coordinates is not performed, the attribute information can be directly encoded .
  • the attribute information is coded sequentially in the order of the position information, and the method of the attribute coding is, for example, a fixed-length code coding method or a level of detail (LOD) coding method.
  • LOD level of detail
  • the coding system performs arithmetic coding (ie, compression coding) on the position information after the position coding and the attribute information after the attribute coding in the arithmetic coding engine, and finally obtains the code stream after compression.
  • arithmetic coding ie, compression coding
  • FIG. 2 shows a schematic diagram of a decoding process provided by the present application.
  • the decoding system After obtaining the input code stream, the decoding system first performs arithmetic decoding to obtain the position information to be decoded and the attribute information to be decoded. The decoding system respectively decodes the position information to be decoded and the attribute information to be decoded.
  • the decoding system first performs position decoding to obtain quantized position information, and then performs inverse quantization processing on the quantized position information to obtain position information.
  • the decoding system can decode the attributes in the order of the quantized position information. For example, the attribute information to be decoded is decoded to obtain a binary code containing the attribute information, and then the binary code is decoded according to the binarization method used by the encoding system to obtain the attribute information.
  • the decoding system may determine the binarization method used by the encoding system according to the indication information in the header information of the bitstream, or may determine the binarization method used by the encoding system according to preset information in the decoding system.
  • the point cloud data can be obtained by combining the position information and attribute information obtained by the above decoding.
  • the point cloud data is first processed by the clustering method, that is, the dense point cloud data is divided into a set, and then based on the location encoding method (for example, the octree encoding method)
  • the point cloud data in the collection is edged. Since the point cloud data in the set is dense point cloud data, the number of hollow sets in the subset divided by the octree coding is reduced, and the compression efficiency of the octree coding is improved.
  • the decoding is performed through the inverse process of the clustering method, that is, the code stream is first decoded into multiple data sets, and then the multiple data sets are merged to obtain a complete point cloud . Since the above multiple data sets are components of the complete point cloud, each data set has fewer coding levels. Therefore, the code stream is decoded into multiple data sets and then the multiple data sets are merged, which can reduce Small decoding workload improves decoding efficiency.
  • Fig. 3 shows a point cloud coding method provided by this application.
  • the method 100 includes:
  • the density of point cloud data (ie, point cloud clusters) at different locations is usually different.
  • the point cloud data at some locations is relatively sparse, and the point cloud data at other locations is relatively dense. If the position of the point cloud is directly divided, some data sets obtained by the division may not have point cloud data, and these data sets (empty sets) still need to be coded during position encoding, which results in low compression efficiency. Therefore, the point cloud data needs to be clustered before encoding the point cloud data, that is, the dense point cloud data is divided into a data set.
  • the multiple point cloud data input to the coding system may belong to one point cloud package or multiple point cloud packages. For example, if the point cloud package obtained by lidar is larger, the lidar may split the larger point cloud package into multiple smaller point cloud packages, and input the multiple smaller point cloud packages into the code system.
  • the coding system can merge multiple point cloud packages with the same time stamp and device identification, and then merge the multiple point clouds.
  • the point cloud data in the package is clustered to improve coding and compression efficiency.
  • the multiple point cloud data input to the encoding system may also come from different lidars.
  • the multiple lidars may also merge the multiple point cloud packages before performing clustering Processing also improves the coding and compression efficiency.
  • the foregoing division based on the positions of the multiple point cloud data may be based on the distance between the multiple point cloud data to divide the multiple point cloud data. If the distance between the two point cloud data is less than or equal to the first distance threshold, the two data can be divided into one data set.
  • the first distance threshold can be set to different values according to actual conditions. For example, the current communication environment is poor. In order to reduce the amount of information transmitted, the first distance threshold can be set to a smaller value, and the compression efficiency can be improved by increasing the density of point cloud data divided into the same data set. This reduces the amount of information obtained after compression. For another example, if the parallel processing capability of the current encoding device is weak, the first distance threshold can be set to a larger value to reduce the number of data sets obtained by dividing the point cloud data, so as to reduce the computing resources required for parallel compression .
  • the distance between the point cloud data at any two adjacent positions in the first data set is less than or equal to the first distance threshold.
  • point cloud data A and any other point cloud data are greater than the first distance threshold, and the distance between point cloud data A and point cloud data B is the closest to the data set, then point cloud data A can be divided into Point cloud data B is in the data set.
  • the distance between some adjacent point cloud data in the first data set in S120 may not meet the first distance threshold.
  • the encoding device may also divide the above-mentioned special point cloud data into a data set.
  • the density of point cloud data in a point cloud cluster is relatively sparse, and the distance between any two adjacent point cloud data does not meet the first distance threshold, and the distance between the point cloud cluster and other point cloud clusters If they are far away, the point cloud data in the point cloud cluster can be divided into a data set.
  • a method of dividing based on the distance between multiple point cloud data is the k-means clustering algorithm, which will be described in detail below.
  • the division according to the positions of the multiple point cloud data may also be based on the density of the multiple point cloud data to divide the multiple point cloud data.
  • the processing procedures of the above two division methods are different, but the effect is the same or similar, and both can divide the dense point cloud data into one data Collection to improve coding and compression efficiency.
  • the density of multiple point cloud data the first data set whose density of the point cloud data meets the first density threshold is obtained, and there must be at least two point cloud data in the first data set whose distance is less than or equal to the first data set.
  • a density-based spatial clustering of applications with noise (DBSCAN) algorithm can be used to divide multiple point cloud data.
  • a grid-based clustering algorithm can also be used to divide multiple point cloud data. That is, the space is divided into grid cells, the spatial position coordinates are mapped to the grid cells, and the density of each cell is calculated. Determine whether each grid is a high-density unit according to a preset density threshold, divide the point cloud data in adjacent high-density units into a data set, and finally complete the clustering of multiple point cloud data.
  • the distance between each data set may also be limited.
  • the k data sets include the second data set and the third data set, and the distance between the second data set and the third data set needs to be greater than or equal to the second distance threshold.
  • the point cloud data in the two point cloud clusters will be divided into two data sets, avoiding the two points in the position coding
  • the blank areas between the cloud clusters are coded, thereby improving coding compression efficiency.
  • the distance between the two data sets can be determined according to the center positions of the point cloud data in the two data sets. For example, the center positions of multiple point cloud data in the second data set are determined first, and the points in the third data set The center positions of multiple point cloud data are then calculated, and the distance between the two center positions is calculated. The distance between the two center positions is the distance between the second data set and the third data set.
  • the two data sets can be used as the final division result; if the distance between the two data sets is less than the second distance threshold, the two data sets The data set needs to be further processed, for example, to merge the two data sets into one data set.
  • second data set and the “third data set” are two different data sets, and the "first data set” can be different from these two data sets, or it can be the "second data set”.
  • the coding system can execute the following steps.
  • the coding system can perform parallel coding on the k data sets; it can also perform serial coding on the k data sets.
  • Figure 4 and Figure 5 show these two encoding methods respectively.
  • This encoding method is a serial encoding method. Since only one encoder is required to complete the encoding, the use of the serial encoding method can reduce the consumption of computing resources by the encoding.
  • the k data sets are respectively input to at least two encoders for encoding. If the number of encoders is greater than or equal to k, the k data sets can be encoded at the same time; if the number of encoders is less than k, part of the data sets in the k data sets can be encoded at the same time.
  • This coding mode is a parallel coding mode. Since at least two data sets can be coded at the same time, the use of the parallel coding mode can improve coding efficiency.
  • the encoder in FIGS. 4 and 5 generates k code stream segments after arithmetic coding, and the k code stream segments need to be combined to generate a code stream.
  • the code stream contains the position indication information of k initialization spaces, which is used to indicate the position of the point cloud data in the k data sets in the point cloud, so that the decoding system can recover the k data sets from the code stream.
  • the position indication information restores the point cloud.
  • the k-means clustering algorithm can be used to divide multiple point cloud data into k data sets.
  • the steps of the k-means clustering algorithm are as follows:
  • the plurality of point cloud data are divided into the k data sets according to the k initial center of gravity positions, and the k initial center of gravity positions are in one-to-one correspondence with the k data sets.
  • the position of the center of gravity refers to the center of mass of the object, which can be obtained by the average of the position coordinates of all point cloud points in the area.
  • the density of all points in the point cluster can be reflected.
  • Fig. 6 shows the process of dividing the point cloud based on the k-means clustering algorithm provided by the present application.
  • the clustering algorithm module After the k-means clustering algorithm is executed, the clustering algorithm module obtains the value of k and multiple point cloud data in S110, and starts to execute the following steps.
  • the initial center of gravity position of each point cloud cluster can be determined by the following three schemes.
  • Solution 1 Determine the positions of the first k input point cloud data among multiple point cloud data as k initial center of gravity positions.
  • Scheme 2 Randomly determine k point cloud data from multiple point cloud data; determine the positions of the k point cloud data as k initial center of gravity positions.
  • the number of point cloud data is M
  • M is a positive integer greater than 1
  • the subscripts of each point cloud data are 0 to M-1
  • the clustering algorithm module can generate non-repetitions greater than or equal to 0 and less than or equal to M-1 Select the point cloud data whose subscript is the random integer of, and use the position of the point cloud data as the center of gravity of each point cloud cluster.
  • Solution 3 Determine reference point cloud data from multiple point cloud data; determine k index values according to the index value of the reference point cloud data and the index value step; determine the position of the k point cloud data corresponding to the k index values Is k initial center of gravity positions.
  • the number of point cloud data is M
  • M is a positive integer greater than 1
  • the subscript of each point cloud data is 0 to M-1
  • the subscript of the reference point cloud data is i
  • i is 0 to M-1.
  • the clustering algorithm module can determine the positions of k initial centers of gravity based on formula (1).
  • Index is the subscript of the point cloud data corresponding to the k initial centers of gravity, step is the step length, and j is the number of steps.
  • the clustering algorithm module After the clustering algorithm module determines the position of each initial center of gravity, it can calculate the sum of the initial distances of each point cloud cluster.
  • the initial distance sum is the sum of the distances from each point cloud data in a point cloud cluster to the initial center of gravity position of the point cloud cluster.
  • the sum of the initial distances can be calculated by formula (2).
  • the initial distance sum can be a larger value among floating-point values.
  • Di,j represents the distance between the point cloud data j and the initial center of gravity i.
  • x i , y i and z i represent the values of the three-dimensional coordinates of the initial center of gravity position i in the Cartesian coordinate system
  • x j , y j and z j represent the values of the three-dimensional coordinates of the point cloud data j in the Cartesian coordinate system.
  • the clustering algorithm module can perform the following steps.
  • adjusting a point cloud cluster refers to increasing or decreasing the point cloud data in the point cloud cluster.
  • the adjusted point cloud cluster is the current point cloud cluster.
  • the position of the center of gravity of the current point cloud cluster can be determined according to formula (3), formula (4) and formula (5).
  • totalNumber represents the total number of point cloud data in the current point cloud cluster
  • x i represents the x-axis coordinate of the point cloud data i in the current point cloud cluster
  • x represents the x-axis of the center of gravity position of the current point cloud cluster Coordinates
  • y i represents the y-axis coordinate of the point cloud data i in the current point cloud cluster
  • y represents the y-axis coordinate of the center of gravity of the current point cloud cluster
  • z i represents the z-axis of the point cloud data i in the current point cloud cluster Coordinate
  • z represents the z-axis coordinate of the center of gravity of the current point cloud cluster.
  • the clustering algorithm module can calculate the sum of the distances of the respective point cloud data of the current point cloud cluster from the position of the center of gravity according to formula (2), that is, the current sum of distances.
  • the preset condition is the termination condition of the iteration. If the current distance and the preset conditions are met, the clustering result is output, and the clustering algorithm process is terminated; if the current distance and the preset conditions are not met, the point cloud clusters are adjusted continuously, and step b) And step c), until the current distance and meet the preset conditions.
  • the aforementioned preset condition can be one or more of the following conditions.
  • Pre-condition one SUM i+1 is greater than SUM i .
  • SUM i is the sum of the distances from each point cloud data in the point cloud cluster to the initial center of gravity position of the point cloud cluster after the point cloud cluster's center of gravity position is determined for the i-th time; SUM i+1 is the i+1th determination point cloud After the center of gravity of the cluster is located, the sum of the distances from each point cloud data in the point cloud cluster to the initial center of gravity of the point cloud cluster.
  • the initial center of gravity position is the center of gravity of the point cloud cluster determined for the first time, and the initial distance sum is SUM 1. After the center of gravity of the point cloud cluster is determined for the second time, each point cloud data in the point cloud cluster reaches the point cloud cluster.
  • the sum of the distances of the initial center of gravity position is SUM 2 ; if SUM 2 is greater than SUM 1 , then SUM 2 meets the preset conditions, and the point cloud cluster corresponding to SUM 1 is output as the clustering result; if SUM 2 is less than SUM 1 , then SUM 2 Does not meet the preset condition 1, repeat step b) and step c), calculate the SUM 3 of the distance after the center of gravity position of the point cloud cluster is determined for the third time, and determine whether SUM 3 meets the preset requirements based on the relationship between SUM 3 and SUM 2 Set condition one.
  • the second preset condition the absolute value of the difference between SUM i+1 and SUM i is less than or equal to the third distance threshold.
  • the beneficial effect of the above solution is: when SUM 2 is greater than SUM 1 , if the difference between SUM 2 and SUM 1 is large, it means that SUM 1 is probably not a global minimum, but a local minimum (ie, a minimum). , Further iteration is needed to determine the global minimum of the distance sum. Therefore, the second preset condition can improve the accuracy of the clustering results.
  • the third preset condition, i+1 is equal to the preset threshold of times.
  • the clustering algorithm module can determine whether to stop iteration according to the relationship between the number of times the center of gravity is determined and the number threshold. For example, the number threshold is 3. If SUM 2 does not meet the preset conditions, you can continue to iterate to determine SUM 3. Since SUM 3 is the sum of the distances determined after the center of gravity is determined for the third time, the number of times the center of gravity is determined equals the preset number Therefore, no matter whether SUM 3 meets the preset conditions, the iteration is stopped, and the point cloud cluster corresponding to the smaller value in SUM 2 and SUM 3 is output as the clustering result.
  • the above solution can reduce the time overhead required to divide multiple point cloud data into k data sets.
  • preset condition three can be used in combination with preset condition one and/or preset condition two, and preset condition two can also be used in combination with preset condition one.
  • the point cloud coding method provided by the present application is described in detail above, and the inverse process of the point cloud decoding method and the point cloud coding method are roughly the same. For example, if the coding system merges k codestream segments to obtain a codestream, the decoding system can divide the received codestream into k codestream segments and decode the k codestream segments separately; for another example, The encoding system divides the complete point cloud into k data sets and then encodes the k data sets to generate k code stream segments. Then the decoding system can decode the k code stream segments to generate k data sets, and The k data sets are merged to obtain a complete point cloud. Therefore, even if the processing procedure of the decoding system is not clearly stated in some places below, those skilled in the art can clearly understand the processing procedure of the decoding system based on the processing procedure of the encoding system.
  • Fig. 7 shows a point cloud decoding method provided by this application.
  • the method 200 includes:
  • the above-mentioned point cloud data code stream is the code stream obtained after arithmetic coding and code stream segment merging processing in the method 100.
  • S220 Perform decoding processing on the point cloud data code stream to generate k data sets, where the k data sets include point cloud data decoded from the point cloud data code stream, and the k is greater than or equal to A positive integer of 2.
  • the k data sets in S220 are the k data sets in the method 100.
  • the k data sets are k point cloud clusters obtained by dividing the complete point cloud. Since the point cloud data density in each point cloud cluster is greater than that of the complete point cloud, the k point cloud clusters are The compression efficiency of encoding is higher than that of directly encoding the complete point cloud; correspondingly, when decoding, the decoding efficiency of parsing the code stream into k data sets is also higher than that of directly parsing the code stream into the complete point cloud. effectiveness.
  • the point cloud data code stream can be divided into k code stream segments, and then the k code stream segments are decoded separately to generate k data sets.
  • the decoding system can divide the point cloud data code stream into k code stream segments according to the k position indication information in the point cloud data code stream, and the position indication information is used to indicate that the data in the point cloud data code stream is being initialized. Position in space.
  • the foregoing indication information may be a start code + a sequence number, and the sequence number is used to identify the level to which the point cloud data belongs.
  • the level may be a sequence level, a frame level, or a data packet level.
  • the decoding system When the decoding system performs decoding processing on k code stream segments, it may perform parallel decoding processing on the k code stream segments, or may perform serial decoding processing on the k code stream segments.
  • FIG. 8 and Figure 9 respectively show these two decoding methods.
  • the decoding system After the decoding system generates k codestream segments, the k codestream segments are sequentially input to a decoder for decoding.
  • This decoding method is a serial decoding method. Since only one decoder is required to complete the decoding, the use of the serial decoding method can reduce the consumption of computing resources for decoding.
  • the k codestream segments are input to at least two decoders for decoding. If the number of decoders is greater than or equal to k, the k codestream segments can be decoded at the same time; if the number of decoders is less than k, part of the codestream segments of the k codestream segments can be decoded at the same time.
  • This decoding method is a parallel decoding method. Since at least two code stream segments can be decoded at the same time, the use of the parallel decoding method can improve decoding efficiency.
  • the difference from the decoding method shown in Fig. 2 is that after the decoders in Figs. 8 and 9 generate k data sets, the k data sets need to be merged to generate a complete point cloud.
  • k pieces of position information to be decoded are obtained, and k pieces of attribute information to be decoded may also be obtained.
  • the decoding system can respectively perform position decoding (for example, octree decoding) on the k pieces of position information to be decoded to obtain k initialization spaces containing k data sets; optionally, the decoding system can also perform position decoding on the k pieces of data to be decoded.
  • the attribute information is subjected to attribute decoding (for example, fixed-length code decoding or hierarchical decoding) to obtain k attribute information.
  • Fig. 10 is a schematic structural diagram of an encoding device provided.
  • the apparatus 1000 shown in FIG. 10 includes a memory 1010 and a processor 1020.
  • the memory 1010 can be used to store codes.
  • the processor 1020 may be used to read the code in the memory 1010 to perform the following operations: obtain multiple point cloud data; divide the multiple point cloud data into k data according to the positions of the multiple point cloud data A set, wherein the k data sets include a first data set, the distance between at least two point cloud data in the first data set is less than or equal to a first distance threshold, and the k is greater than or equal to 2 Positive integer; encode the k data sets respectively.
  • the k data sets include a second data set and a third data set, and the distance between the second data set and the third data set is greater than or equal to a second distance threshold.
  • the distance between the point cloud data at any two adjacent positions in the first data set is less than or equal to the first distance threshold.
  • the processor 1020 is specifically configured to perform: determine k initial center of gravity positions, where the k initial center of gravity positions are located in the space corresponding to the multiple point cloud data;
  • the multiple point cloud data are divided into the k data sets, and the k initial center of gravity positions correspond to the k data sets in a one-to-one correspondence.
  • the processor 1020 is specifically configured to execute: determine SUM i+1 and SUM i , where the SUM i+1 is a value from the center of gravity position i+1 to at least one point cloud data corresponding to the center of gravity position i+1
  • the SUM i is the sum of the distances from the center of gravity position i to at least one point cloud data corresponding to the center of gravity position i, wherein the center of gravity position i+1 is the i+1th time
  • the center of gravity position i is a center of gravity position determined for the i-th time
  • the center of gravity position i+1 is the center of gravity position obtained after the center of gravity position i is updated
  • the i is a positive integer
  • the preset condition includes: the SUM i+1 is greater than the SUM i .
  • the preset condition includes: the absolute value of the difference between the SUM i+1 and the SUM i is less than or equal to a third distance threshold.
  • the preset condition includes: the i+1 is equal to a preset threshold of times.
  • the processor 1020 is specifically configured to execute: determining the positions of the first k input point cloud data in the plurality of point cloud data as the k initial center of gravity positions.
  • the processor 1020 is specifically configured to perform: randomly determining k point cloud data from the multiple point cloud data; determining the positions of the k point cloud data as the k initial center of gravity positions.
  • the processor 1020 is specifically configured to execute: determine reference point cloud data from the multiple point cloud data; determine k index values according to the index value of the reference point cloud data and the index value step; determine all The positions of the k point cloud data corresponding to the k index values are the k initial center of gravity positions.
  • the processor 1020 is specifically configured to execute: obtain multiple point cloud packages, the multiple point cloud packages corresponding to the same time stamp and device identifier; and obtain the multiple point cloud packages from the multiple point cloud packages Cloud data.
  • the processor 1020 is specifically configured to perform: perform parallel coding on the k data sets; or perform serial coding on the k data sets.
  • the processor 1020 is specifically configured to execute: perform octree encoding on the location information of the k data sets; and encode the attribute information of the k data sets according to the result of the octree encoding .
  • the processor 1020 is specifically configured to perform: hierarchically encoding the attribute information of the k data sets according to the result of the octree encoding.
  • the processor 1020 is specifically configured to perform: performing fixed-length code encoding on the attribute information of the k data sets according to the result of the octree encoding.
  • the processor 1020 is specifically configured to perform: performing arithmetic coding on the result of encoding the position information and the result of encoding the attribute information to generate k codestream segments; and performing merging processing on the k codestream segments , Generate code stream.
  • the processor 1020 is specifically configured to execute: write position indication information of k initialization spaces in the code stream.
  • FIG. 11 is a schematic structural diagram of a decoding device provided by the present application.
  • the apparatus 1100 in FIG. 11 includes: a memory 1110 and a processor 1120.
  • the memory 1110 can be used to store codes.
  • the processor 1120 may be configured to read the code in the memory to perform the following operations: obtain a point cloud data code stream; decode the point cloud data code stream to generate k data sets, and the k data sets It includes the point cloud data decoded from the point cloud data code stream, where the k is a positive integer greater than or equal to 2; and the k data sets are merged to obtain a complete point cloud.
  • the processor 1120 is specifically configured to execute: divide the point cloud data code stream into k code stream segments; respectively perform decoding processing on the k code stream segments to generate the k data sets.
  • the processor 1120 is specifically configured to execute: divide the point cloud data code stream into the k code stream segments according to k position indication information in the point cloud data code stream, and the position indication information It is used to indicate the position of the data in the point cloud data code stream in the initialization space.
  • the processor 1120 is specifically configured to perform: performing parallel decoding processing on the k code stream segments; or performing serial decoding processing on the k code stream segments.
  • the processor 1120 is specifically configured to perform arithmetic decoding on the k codestream segments, respectively, to obtain k position information to be decoded and k attribute information to be decoded.
  • the processor 1120 is specifically configured to perform: octree decoding on the k pieces of position information to be decoded to obtain k pieces of position information; according to the k pieces of position information, the k pieces of position information to be decoded
  • the attribute information is respectively decoded to obtain k attribute information.
  • the processor 1120 is specifically configured to execute: hierarchically decode the k pieces of position information to be decoded according to the k pieces of position information.
  • the processor 1120 is specifically configured to execute: respectively perform fixed-length code decoding on the k pieces of position information to be decoded according to the k pieces of position information.
  • the computer program product includes one or more computer instructions.
  • the computer may be a general-purpose computer, a special-purpose computer, a computer network, or other programmable devices.
  • the computer instructions may be stored in a computer-readable storage medium or transmitted from one computer-readable storage medium to another computer-readable storage medium. For example, the computer instructions may be transmitted from a website, computer, server, or data center.
  • the computer-readable storage medium may be any available medium that can be accessed by a computer or a data storage device such as a server or a data center integrated with one or more available media.
  • the usable medium may be a magnetic medium (for example, a floppy disk, a hard disk, a magnetic tape), an optical medium (for example, a digital video disc (DVD)), or a semiconductor medium (for example, a solid state disk (SSD)), etc.
  • the disclosed system, device, and method may be implemented in other ways.
  • the device embodiments described above are only illustrative.
  • the division of the units is only a logical function division, and there may be other divisions in actual implementation, for example, multiple units or components can be combined or It can be integrated into another system, or some features can be ignored or not implemented.
  • the displayed or discussed mutual coupling or direct coupling or communication connection may be indirect coupling or communication connection through some interfaces, devices or units, and may be in electrical, mechanical or other forms.
  • the units described as separate components may or may not be physically separated, and the components displayed as units may or may not be physical units, that is, they may be located in one place, or they may be distributed on multiple network units. Some or all of the units may be selected according to actual needs to achieve the objectives of the solutions of the embodiments.
  • each unit in each embodiment of the present application may be integrated into one processing unit, or each unit may exist alone physically, or two or more units may be integrated into one unit.

Abstract

一种编码点云数据的方法,其包括:在对点云数据的位置信息进行编码的过程中,先通过聚类方法对点云数据进行处理,即:将密集的点云数据划分为一个集合,再基于八叉树编码方法或其它位置编码方法对该集合中的点云数据进行编码。由于该集合中的点云数据为密集的点云数据,从而减小了八叉树编码划分的子集合中空集合的数量,提高了八叉树编码的压缩效率。

Description

点云数据的编码方法、编码装置、解码方法与解码装置
版权申明
本专利文件披露的内容包含受版权保护的材料。该版权为版权所有人所有。版权所有人不反对任何人复制专利与商标局的官方记录和档案中所存在的该专利文件或者该专利披露。
技术领域
本申请涉及数据编解码领域,并且更为具体地,涉及一种编码点云数据的方法与装置,以及一种解码点云数据的方法与装置。
背景技术
点云(point cloud)是三维物体或三维场景的一种表现形式,由空间中一组无规则分布的离散点构成,该离散点即点云数据,点云数据用于表征三维物体或三维场景的空间结构和表面属性,一个点云数据通常由位置信息组成,在一些示例中,点云数据还包括属性信息,该位置信息例如是三维坐标(x,y,z),该属性信息例如是颜色(R,G,B)和反射率。为了减少点云存储时占用的存储空间和点云传输时占用的带宽,需要对点云进行压缩处理。
一种压缩处理方法是通过八叉树对点云进行编码,即,将点云所在的空间划分为八个子空间,该八个子空间内的点云数据属于同一层,若子空间内存在点云数据,则对该子空间进行进一步划分,直到得到最小分割单元为止,随后对得到的各个点云进行逐层编码。
由于点云所在的空间中可能存在一些稀疏的点云数据,直接使用八叉树对点云进行编码存在压缩效率较低的问题。
发明内容
本申请提供了一种编码点云数据的方法与装置,以及一种解码点云数据的方法与装置,能够提高点云数据的压缩效率和解码效率。
第一方面,提供了一种编码点云数据的方法,包括:获取多个点云数据;根据所述多个点云数据的位置将所述多个点云数据划分为k个数据集合,其中,所述k个数据集合包括第一数据集合,所述第一数据集合中至少两个点云数据之间的距离小于或等于第一距离阈值,所述k为大于或等于2的正整 数;对所述k个数据集合分别进行编码。
在对位置信息进行编码的过程中,先通过聚类方法对点云数据进行处理,即,将密集的点云数据划分为一个集合,再基于位置编码方法(例如,八叉树编码方法)对该集合中的点云数据进行边。由于该集合中的点云数据为密集的点云数据,从而减小了八叉树编码划分的子集合中空集合的数量,提高了八叉树编码的压缩效率。
第二方面,提供了一种解码点云数据的方法,包括:获取点云数据码流;对所述点云数据码流进行解码处理,生成k个数据集合,所述k个数据集合包括从所述点云数据码流中解码得到的点云数据,所述k为大于或等于2的正整数;对所述k个数据集合进行合并处理,获取完整点云。
在本申请提供的解码系统中,通过聚类方法的逆过程进行解码,即,首先将码流解码为多个数据集合,再对该多个数据集合进行合并处理,获得完整点云。由于上述多个数据集合为完整点云的组成部分,每个数据集合具有较少的编码层次,因此,先将码流解码为多个数据集合再将该多个数据集合进行合并处理,能够减小解码工作量,提高解码效率。
第三方面,提供一种点云数据编码装置,所述编码装置用于执行上述第一方面中的方法。
第四方面,提供一种点云数据编码装置,所述编码装置包括存储器和处理器,所述存储器用于存储指令,所述处理器用于执行所述存储器存储的指令,并且对所述存储器中存储的指令的执行使得所述处理器执行第一方面的方法。
第五方面,提供一种芯片,所述芯片包括处理模块与通信接口,所述处理模块用于控制所述通信接口与外部进行通信,所述处理模块还用于实现第一方面的方法。
第六方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被计算机执行时使得所述计算机实现第一方面的方法。具体地,所述计算机可以为上述点云数据编码装置。
第七方面,本申请提供一种包含指令的计算机程序产品,所述指令被计算机执行时使得所述计算机实现第一方面提供的方法。
第八方面,提供一种点云数据解码装置,所述解码装置用于执行上述第二方面中的方法。
第九方面,提供一种点云数据解码装置,所述解码装置包括存储器和处理器,所述存储器用于存储指令,所述处理器用于执行所述存储器存储的指令,并且对所述存储器中存储的指令的执行使得所述处理器执行第二方面的方法。
第十方面,提供一种芯片,所述芯片包括处理模块与通信接口,所述处理模块用于控制所述通信接口与外部进行通信,所述处理模块还用于实现第二方面的方法。
第十一方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被计算机执行时使得所述计算机实现第二方面的方法。具体地,所述计算机可以为上述点云数据解码装置。
第十二方面,本申请提供一种包含指令的计算机程序产品,所述指令被计算机执行时使得所述计算机实现第二方面提供的方法。
附图说明
图1是本申请提供的一种编码流程的示意图。
图2是本申请提供的一种编码流程的示意图。
图3是本申请提供的一种编码点云数据的方法的示意图。
图4是本申请提供的一种串行编码点云数据的方法的示意图。
图5是本申请提供的一种并行编码点云数据的方法的示意图。
图6是本申请提供的一种基于k均值聚类算法划分点云的流程。
图7是本申请提供的一种解码点云数据的方法的示意图。
图8是本申请提供的一种串行解码点云数据的方法的示意图。
图9是本申请提供的一种并行解码点云数据的方法的示意图。
图10是本申请提供的一种编码装置的示意图。
图11是本申请提供的一种解码装置的示意图。
具体实施方式
下面将结合附图,对本申请实施例中的技术方案进行描述。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中在本申请的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本申请。
图1示出了本申请提供的一种编码流程的示意图。
编码系统对输入的点云数据中的位置信息和属性信息分别进行编码。该点云数据可以是传感器(例如激光雷达)在移动平台上所获取到的点云数据。
对于位置信息,在一个示例中,对位置信息进行量化,例如,对坐标值进行取整处理。可以选择对量化后的坐标先进行去除重复坐标处理再进行位置编码,也可以直接对量化后的坐标进行位置编码,上述位置编码例如是八叉树编码。
对于属性信息,可以对属性信息进行属性转换后在进行属性编码,也可以直接对属性信息进行编码。其中,若执行了去除重复坐标处理,则在属性编码过程中需要进行属性转换,例如,将合并的坐标对应的属性信息进行合并;若未执行去除重复坐标处理,则可以直接对属性信息进行编码。随后按照位置信息的顺序依次对属性信息进行属性编码,属性编码的方法例如是定长码编码方法或层次(level of detail,LOD)编码方法。经过属性编码的属性信息被转换为二进制码。
随后,编码系统在算术编码引擎中对经过位置编码的位置信息和经过属性编码的属性信息进行算术编码(即,压缩编码),最终得到压缩编码后的码流。
点云数据的解码流程与编码流程的逆过程大致相同。图2示出了本申请提供的一种解码流程的示意图。
解码系统对获取输入的码流后,首先进行算术解码,得到待解码的位置信息和待解码的属性信息。解码系统对待解码的位置信息和待解码的属性信息分别进行解码。
解码系统首先进行位置解码,得到量化的位置信息,随后对该量化的位置信息进行逆量化处理,得到位置信息。
在获取量化的位置信息后,解码系统即可按照量化的位置信息的顺序进行属性解码。例如,对待解码的属性信息解码得到包含属性信息的二进制码,随后,根据编码系统使用的二值化方法对二进制码进行解码,得到属性信息。其中,解码系统可以根据码流的头信息中的指示信息确定编码系统使用的二值化方法,也可以根据解码系统中预设的信息确定编码系统使用的二值化方法。
最后,将上述解码得到的位置信息和属性信息合并后即可得到点云数据。
在对位置信息进行编码的过程中,先通过聚类方法对点云数据进行处理,即,将密集的点云数据划分为一个集合,再基于位置编码方法(例如,八叉树编码方法)对该集合中的点云数据进行边。由于该集合中的点云数据为密集的点云数据,从而减小了八叉树编码划分的子集合中空集合的数量,提高了八叉树编码的压缩效率。
类似地,在本申请提供的解码系统中,通过聚类方法的逆过程进行解码,即,首先将码流解码为多个数据集合,再对该多个数据集合进行合并处理,获得完整点云。由于上述多个数据集合为完整点云的组成部分,每个数据集合具有较少的编码层次,因此,先将码流解码为多个数据集合再将该多个数据集合进行合并处理,能够减小解码工作量,提高解码效率。
下面,将详细描述本申请提供的基于聚类方法进行编码和解码的过程。
图3示出了本申请提供的一种点云编码的方法。该方法100包括:
S110,获取多个点云数据。
对于一个点云,其不同位置的点云数据(即,点云簇)的密度通常情况下是不同的,一些位置的点云数据较为稀疏,另一些位置的点云数据较为密集。若直接对点云进行位置划分,则划分得到的一些数据集合中可能不存在点云数据,而在位置编码时仍然需要对这些数据集合(空集合)进行编码,从而导致压缩效率较低。因此,在对点云数据进行编码前需要对点云数据进行聚类处理,即,将密集的点云数据划分为一个数据集合。
输入编码系统的多个点云数据可能属于一个点云包,也可能属于多个点云包。例如,激光雷达获取的点云包较大,则激光雷达可能会将该较大的点云包拆分为多个较小的点云包,并将该多个较小的点云包输入编码系统。
为了避免一些密集的点云数据可能会被划分至不同的聚类中,编码系统可以对具有相同的时间戳和设备标识的多个点云包进行合并处理,再对合并后的多个点云包中的点云数据进行聚类处理,以提高编码压缩效率。
可选地,输入编码系统的多个点云数据还可以来自不同的激光雷达。例如,自动驾驶车辆或者无人机上安装了多个激光雷达,该多个激光雷达在同一时刻生成了多个点云包,编码系统还可以对该多个点云包进行合并后再进行聚类处理,同样提高了编码压缩效率。
编码系统获取多个点云数据后,可以执行下述步骤。
S120,根据所述多个点云数据的位置将所述多个点云数据划分为k个数 据集合,其中,所述k个数据集合包括第一数据集合,所述第一数据集合中至少两个点云数据之间的距离小于或等于第一距离阈值,所述k为大于或等于2的正整数。
上述根据多个点云数据的位置进行划分,可以是基于多个点云数据之间的距离对多个点云数据进行划分。若两个点云数据之间的距离小于或等于第一距离阈值,则可以将这两个数据划分至一个数据集合中。
第一距离阈值可以根据实际情况设定不同的取值。例如,当前通信环境较差,为了减小传输的信息量,可以将第一距离阈值设定为较小的数值,通过增大划分至相同的数据集合中的点云数据的密度提高压缩效率,进而减小了压缩后得到的信息量。又例如,当前编码装置的并行处理能力较弱,则可以将第一距离阈值设定为较大的数值,减少划分点云数据得到的数据集合的数量,以减小并行压缩所需的计算资源。
一些情况下,第一数据集合中任意两个相邻位置的点云数据之间的距离小于或等于所述第一距离阈值。
另一些情况下,点云中可能存在一些特殊的点云数据,这些特殊的点云数据中每个点云数据与点云中任意一个点云数据的距离均大于第一距离阈值,则编码装置可以将这些特殊的点云划分至距离最近的数据集合中。例如,点云数据A与其它任意一个点云数据的距离均大于第一距离阈值,并且,点云数据A与点云数据B所在的数据集合的距离最近,则可以将点云数据A划分至点云数据B所在的数据集合中。
因此,S120中的第一数据集合中可能存在一些相邻的点云数据之间的距离不满足第一距离阈值。
可选地,编码装置也可以将上述特殊的点云数据划分为一个数据集合。例如,一个点云簇中的点云数据的密度较为稀疏,其中任意两个相邻的点云数据之间的距离均不满足第一距离阈值,并且该点云簇距离其它点云簇的距离均较远,则可以将该点云簇中的点云数据划分为一个数据集合。
因此,S120中的k个数据集合中可能存在一个或多个特殊的数据集合,这些特殊的数据集合中任意两个相邻的点云数据之间的距离均不满足第一距离阈值。
一种基于多个点云数据之间的距离进行划分的方法是k均值聚类(k-means clustering)算法,下文会详细描述该算法。
除了上述基于点云数据之间的距离进行划分的方案之外,根据多个点云数据的位置进行划分,还可以是基于多个点云数据的密度对多个点云数据进行划分。
由于点云数据之间的距离能够反映点云数据的密度,因此,上述两种划分方式的处理过程有所不同,但效果是相同或相近的,均能够将密集的点云数据划分为一个数据集合,提高编码压缩效率。例如,根据多个点云数据的密度进行划分,得到点云数据的密度满足第一密度阈值的第一数据集合,则第一数据集合中必然存在至少两个点云数据的距离小于或等于第一距离阈值,该第一距离阈值与第一密度阈值之间存在关联关系。
可以采用基于密度的噪声应用空间聚类(density-based spatial clustering of applications with noise,DBSCAN)算法对多个点云数据进行划分。
还可以采用基于网格的聚类算法对多个点云数据进行划分。即,将空间划分成网格单元,将空间位置坐标映射到网格单元中,并计算每个单元的密度。根据预设的密度阈值判断每个网格是否为高密度单元,将邻近的高密度单元中的点云数据划分至一个数据集合中,最终完成对多个点云数据的聚类。
上述划分方法仅是举例说明,适用于本申请的聚类方法不限于此。
可选地,在将多个点云数据划分为k个数据集合的过程中,还可以对各个数据集合之间的距离做出限定。
例如,k个数据集合包括第二数据集合和第三数据集合,第二数据集合与第三数据集合之间的距离需要大于或等于第二距离阈值。
应用该方案后,若两个点云簇之间的距离较大,则该两个点云簇中的点云数据会被划分至两个数据集合中,避免在位置编码时对该两个点云簇之间的空白区域进行编码,从而提高了编码压缩效率。
可以根据两个数据集合中的点云数据的中心位置确定两个数据集合之间的距离,例如,首先确定第二数据集合中的多个点云数据的中心位置,以及第三数据集合中的多个点云数据的中心位置,随后,计算该两个中心位置之间的距离,该两个中心位置之间距离即第二数据集合与第三数据集合之间的距离。
若两个数据集合之间的距离大于或等于第二距离阈值,则该两个数据集合可以作为最终的划分结果;若该两个数据集合之间的距离小于第二距离阈值,则该两个数据集合需要被进一步处理,例如,将该两个数据集合合并为 一个数据集合。
需要说明的是,“第二数据集合”和“第三数据集合”为两个不同的数据集合,而“第一数据集合”可以与这两个数据集合相异,也可以是“第二数据集合”和“第三数据集合”中的一个。
k个数据集合划分完成后,编码系统即可执行下列步骤。
S130,对所述k个数据集合分别进行编码。
编码系统可以对该k个数据集合进行并行编码;也可以对该k个数据集合进行串行编码。
图4和图5分别示出了这两种编码方式。
如图4所示,编码系统生成k个数据集合后,将该k个数据集合依次输入一个编码器进行编码。该编码方式即串行编码方式,由于仅需一个编码器即可完成编码,因此,使用串行编码方式能够减小编码对计算资源的消耗。
如图5所示,编码系统生成k个数据集合后,将该k个数据集合分别输入至少两个编码器进行编码。若编码器的数量大于或等于k,则可以同时对该k个数据集合进行编码;若编码器的数量小于k,则可以对k个数据集合中的部分数据集合同时进行编码。该编码方式即并行编码方式,由于可以对至少两个数据集合同时进行编码,因此,使用并行编码方式能够提高编码效率。
对k个数据集合进行编码的大部分流程与图1所示的编码方法相同,在此不再赘述。
与图1所示的编码方法不同的是,图4和图5中的编码器在经过算术编码后生成了k个码流片段,需要对该k个码流片段进行合并,生成码流。此外,码流中包含k个初始化空间的位置指示信息,用于指示k个数据集合中的点云数据在点云中的位置,以便于解码系统从码流中恢复k个数据集合后,根据位置指示信息还原点云。
上文对本申请的编码流程做了详细描述,下面,将详细描述本申请提供的基于k均值聚类算法划分点云的方法。需要说明的是,下文所述的方法仅是举例说明,适用于本申请的划分点云的方法不限于此。
基于k均值聚类算法划分点云首先需要确定需要将点云划分为几部分,即,确定k的值(该值可以由技术人员确定)。确定k的值后,即可使用k均值聚类算法将多个点云数据划分为k个数据集合。k均值聚类算法的步骤 如下:
确定k个初始重心位置,所述k个初始重心位置位于所述多个点云数据对应的空间内;
根据所述k个初始重心位置将所述多个点云数据划分为所述k个数据集合,所述k个初始重心位置与所述k个数据集合一一对应。
其中,重心位置指的是物体的质量中心,可通过区域内所有点云点的位置坐标的平均值求得。通过计算点簇内的点到重心位置的距离可以反映点簇内所有点的密集程度。
图6示出了本申请提供的基于k均值聚类算法划分点云的流程。
k均值聚类算法开始执行后,聚类算法模块获取k的取值和S110中的多个点云数据,开始执行下列步骤。
a)初始化每个点云簇的重心位置,计算初始距离和。
各个点云簇的初始重心位置可以通过以下三种方案确定。
方案一:确定多个点云数据中前k个输入的点云数据的位置为k个初始重心位置。
方案二:从多个点云数据中随机确定k个点云数据;确定该k个点云数据的位置为k个初始重心位置。
例如,点云数据的数量为M,M为大于1的正整数,各个点云数据的下标为0至M-1;聚类算法模块可以生成大于等于0且小于等于M-1的不重复的随机整数,选择下标为该随机整数的点云数据,并将该点云数据的位置作为各个点云簇的重心。
方案三:从多个点云数据中确定基准点云数据;根据基准点云数据的索引值以及索引值步长确定k个索引值;确定该k个索引值对应的k个点云数据的位置为k个初始重心位置。
例如,点云数据的数量为M,M为大于1的正整数,各个点云数据的下标为0至M-1,基准点云数据的下标为i,i为0至M-1中的一个数;则聚类算法模块可以基于公式(1)确定k个初始重心的位置。
Index=i+step*j,0≤j≤k(1)
公式(1)中,Index为k个初始重心对应的点云数据的下标,step为步长,j为步数。
聚类算法模块确定各个初始重心位置后,即可计算各个点云簇的初始距 离和,初始距离和为一个点云簇中各个点云数据到该点云簇的初始重心位置的距离的和。可以通过公式(2)计算初始距离和。初始距离和可以是浮点型数值中的一个较大的值。
Figure PCTCN2019089593-appb-000001
公式(2)中,D i,j表示点云数据j与到初始重心位置i的距离。x i、y i和z i表示初始重心位置i在笛卡尔坐标系下的三维坐标的值,x j、y j和z j表示点云数据j在笛卡尔坐标系下的三维坐标的值。
随后,聚类算法模块可以执行下述步骤。
b)调整点云簇。
以k个点云簇中的一个点云簇为例,调整点云簇指的是增加或者减少该点云簇中的点云数据。调整后的点云簇即当前点云簇。
c)确定当前点云簇的重心位置,计算当前距离和。
由于点云簇中的点云数据发生了变化,因此,需要重新确定当前点云簇的重心位置。可以根据公式(3)、公式(4)和公式(5)确定当前点云簇的重心位置。
Figure PCTCN2019089593-appb-000002
Figure PCTCN2019089593-appb-000003
Figure PCTCN2019089593-appb-000004
上述3个公式中,totalNumber表示当前点云簇中全部点云数据的数量,x i表示当前点云簇中的点云数据i的x轴坐标,x表示当前点云簇的重心位置的x轴坐标,y i表示当前点云簇中的点云数据i的y轴坐标,y表示当前点云簇的重心位置的y轴坐标,z i表示当前点云簇中的点云数据i的z轴坐标,z表示当前点云簇的重心位置的z轴坐标。
确定当前点云簇的重心位置之后,聚类算法模块可以按照公式(2)计算当前点云簇的各个点云数据距离重心位置的距离的和,即,当前距离和。
d)确定当前距离和是否满足预设条件。
预设条件即迭代终止条件,若当前距离和满足预设条件,则输出聚类结果,终止聚类算法流程;若当前距离和不满足预设条件,则继续调整点云簇,重复步骤b)和步骤c),直至当前距离和满足预设条件。
上述预设条件可以是以下几种条件中的一种或多种。
预设条件一,SUM i+1大于SUM i
SUM i为第i次确定点云簇的重心位置后,点云簇中各个点云数据到该点云簇的初始重心位置的距离的和;SUM i+1为第i+1次确定点云簇的重心位置后,点云簇中各个点云数据到该点云簇的初始重心位置的距离的和。
例如,初始重心位置是第一次确定的点云簇的重心位置,初始距离和为SUM 1,第二次确定点云簇的重心位置后,点云簇中各个点云数据到该点云簇的初始重心位置的距离的和为SUM 2;若SUM 2大于SUM 1,则SUM 2符合预设条件,将SUM 1对应的点云簇作为聚类结果输出;若SUM 2小于SUM 1,则SUM 2不符合预设条件一,重复步骤b)和步骤c),计算第三次确定点云簇的重心位置后的距离的SUM 3,根据SUM 3与SUM 2的大小关系确定SUM 3是否满足预设条件一。
预设条件二,SUM i+1与SUM i的差值的绝对值小于或等于第三距离阈值。
例如,若SUM 2与SUM 1的差值的绝对值大于第三距离阈值,则确定SUM 2不符合预设条件二,重复步骤b)和步骤c),计算第三次确定点云簇的重心位置后的距离的SUM 3,根据SUM 3与SUM 2的差值的绝对值与第三距离阈值的大小关系确定SUM 3是否满足预设条件二。
上述方案的有益效果在于:当SUM 2大于SUM 1时,若SUM 2与SUM 1的差值较大,则说明SUM 1很可能不是全局最小值,只是局部的最小值(即,极小值),需要进一步迭代以确定距离和的全局最小值。因此,预设条件二可以提高聚类结果的精度。
预设条件三,i+1等于预设的次数阈值。
聚类算法模块可以根据确定重心的次数与次数阈值之间的关系确定是否停止迭代。例如,次数阈值为3,若SUM 2不满足预设条件,则可以继续迭代,确定SUM 3,由于SUM 3是第三次确定重心位置后确定的距离和,确定重心的次数等于预设的次数阈值,因此,无论SUM 3是否满足预设条件,均停止迭代,将SUM 2与SUM 3中数值较小的一个值对应的点云簇作为聚类结果输出。上述方案能够减小将多个点云数据划分为k个数据集合所需的时间开销。
需要说明的是,预设条件三能够结合预设条件一和/或预设条件二使用,预设条件二也能够结合预设条件一使用。
上文详细介绍了本申请提供的点云编码方法,点云解码方法与点云编码方法的逆过程大致相同。例如,编码系统对k个码流片段进行合并处理后得 到码流,则解码系统可以将接收到的码流分为k个码流片段并对该k个码流片段分别进行解码;又例如,编码系统将完整点云划分为k个数据集合后分别对该k个数据集合进行编码,生成k个码流片段,则解码系统可以对k个码流片段进行解码,生成k个数据集合,并将该k个数据集合进行合并处理,得到完整点云。因此,即使下文个别地方未明确写明解码系统的处理过程,本领域技术人员也可以基于编码系统的处理过程清楚地了解解码系统的处理过程。
图7示出了本申请提供的一种点云解码方法。该方法200包括:
S210,获取点云数据码流。
上述点云数据码流即方法100中经过算术编码以及码流片段合并处理后得到的码流。
S220,对所述点云数据码流进行解码处理,生成k个数据集合,所述k个数据集合包括从所述点云数据码流中解码得到的点云数据,所述k为大于或等于2的正整数。
S220中的k个数据集合即方法100中的k个数据集合。该k个数据集合为完整点云被划分得到的k个点云簇,由于每个点云簇中的点云数据密度大于完整点云的点云数据密度,因此,对k个点云簇进行编码的压缩效率高于直接对完整点云进行编码的压缩效率;相应地,在解码时,将码流解析为k个数据集合的解码效率也高于直接将码流解析为完整点云的解码效率。
解码系统生成k个数据集合后,即可执行下列步骤。
S230,对所述k个数据集合进行合并处理,获取完整点云。
在对点云数据码流进行解码处理的过程中,可以先将点云数据码流划分为k个码流片段,再对k个码流片段分别进行解码处理,生成k个数据集合。其中,解码系统可以根据点云数据码流中的k个位置指示信息将点云数据码流划分为k个码流片段,所述位置指示信息用于指示点云数据码流中的数据在初始化空间中的位置。
上述指示信息可以是起始码+序列号,序列号用于标识点云数据所属的层级,例如,所述层级可以是序列级别,或者帧级别,或者数据包级别。
解码系统在对k个码流片段进行解码处理时,可以对所述k个码流片段进行并行解码处理,也可以对所述k个码流片段进行串行解码处理。
图8和图9分别示出了这两种解码方式。
如图8所示,解码系统生成k个码流片段后,将该k个码流片段依次输入一个解码器进行解码。该解码方式即串行解码方式,由于仅需一个解码器即可完成解码,因此,使用串行解码方式能够减小解码对计算资源的消耗。
如图9所示,解码系统生成k个码流片段后,将该k个码流片段分别输入至少两个解码器进行解码。若解码器的数量大于或等于k,则可以同时对该k个码流片段进行解码;若解码器的数量小于k,则可以对k个码流片段中的部分码流片段同时进行解码。该解码方式即并行解码方式,由于可以对至少两个码流片段同时进行解码,因此,使用并行解码方式能够提高解码效率。
对k个码流片段进行解码的大部分流程与图2所示的解码方法相同,在此不再赘述。
与图2所示的解码方法不同的是,图8和图9中的解码器在生成k个数据集合后,还需要对该k个数据集合进行合并处理,才能够生成完整点云。
此外,解码系统通过算术解码处理k个码流片段后,得到k个待解码的位置信息,还可能得到k个待解码的属性信息。解码系统可以对k个待解码的位置信息分别进行位置解码(例如,八叉树解码),得到包含k个数据集合的k个初始化空间;可选地,解码系统还可以对k个待解码的属性信息进行属性解码(例如,定长码解码或层次解码),得到k个属性信息。
上文结合图1至图9,详细描述了本申请的方法实施例,下面结合图10和图11,详细描述本申请的装置实施例。应理解,方法实施例的描述与装置实施例的描述相互对应,因此,未详细描述的部分可以参见前面方法实施例。
图10是提供的一种编码装置的示意性结构图。图10所示的装置1000包括:存储器1010和处理器1020。
存储器1010可用于存储代码。处理器1020可用于读取所述存储器1010中的代码,以执行如下操作:获取多个点云数据;根据所述多个点云数据的位置将所述多个点云数据划分为k个数据集合,其中,所述k个数据集合包括第一数据集合,所述第一数据集合中至少两个点云数据之间的距离小于或等于第一距离阈值,所述k为大于或等于2的正整数;对所述k个数据集合分别进行编码。
可选地,所述k个数据集合包括第二数据集合和第三数据集合,所述第二数据集合与所述第三数据集合之间的距离大于或等于第二距离阈值。
可选地,所述第一数据集合中任意两个相邻位置的点云数据之间的距离小于或等于所述第一距离阈值。
可选地,处理器1020具体用于执行:确定k个初始重心位置,所述k个初始重心位置位于所述多个点云数据对应的空间内;根据所述k个初始重心位置将所述多个点云数据划分为所述k个数据集合,所述k个初始重心位置与所述k个数据集合一一对应。
可选地,处理器1020具体用于执行:确定SUM i+1和SUM i,所述SUM i+1为重心位置i+1到与所述重心位置i+1对应的至少一个点云数据之间的距离的和,所述SUM i为重心位置i到与所述重心位置i对应的至少一个点云数据之间的距离的和,其中,所述重心位置i+1为第i+1次确定的一个重心位置,所述重心位置i为第i次确定的一个重心位置,并且,所述重心位置i+1是所述重心位置i经过更新后得到的重心位置,所述i为正整数;当所述SUM i+1满足预设条件时,确定所述SUM i+1和所述SUM i中较小的值对应的点云数据属于一个数据集合。
可选地,所述预设条件包括:所述SUM i+1大于所述SUM i
可选地,所述预设条件包括:所述SUM i+1与所述SUM i的差值的绝对值小于或等于第三距离阈值。
可选地,所述预设条件包括:所述i+1等于预设的次数阈值。
可选地,处理器1020具体用于执行:确定所述多个点云数据中前k个输入的点云数据的位置为所述k个初始重心位置。
可选地,处理器1020具体用于执行:从所述多个点云数据中随机确定k个点云数据;确定所述k个点云数据的位置为所述k个初始重心位置。
可选地,处理器1020具体用于执行:从所述多个点云数据中确定基准点云数据;根据所述基准点云数据的索引值以及索引值步长确定k个索引值;确定所述k个索引值对应的k个点云数据的位置为所述k个初始重心位置。
可选地,处理器1020具体用于执行:获取多个点云包,所述多个点云包对应相同的时间戳和设备标识;从所述多个点云包中获取所述多个点云数据。
可选地,处理器1020具体用于执行:对所述k个数据集合进行并行编码;或者,对所述k个数据集合进行串行编码。
可选地,处理器1020具体用于执行:对所述k个数据集合的位置信息 分别进行八叉树编码;根据所述八叉树编码的结果对所述k个数据集合的属性信息进行编码。
可选地,处理器1020具体用于执行:根据所述八叉树编码的结果对所述k个数据集合的属性信息进行层次编码。
可选地,处理器1020具体用于执行:根据所述八叉树编码的结果对所述k个数据集合的属性信息进行定长码编码。
可选地,处理器1020具体用于执行:对所述位置信息编码的结果和所述属性信息编码的结果进行算术编码,生成k个码流片段;对所述k个码流片段进行合并处理,生成码流。
可选地,处理器1020具体用于执行:在所述码流中写入k个初始化空间的位置指示信息。
图11是本申请提供的一种解码装置的示意性结构图。图11的装置1100包括:存储器1110和处理器1120。
存储器1110可用于存储代码。处理器1120可用于读取所述存储器中的代码,以执行如下操作:获取点云数据码流;对所述点云数据码流进行解码处理,生成k个数据集合,所述k个数据集合包括从所述点云数据码流中解码得到的点云数据,所述k为大于或等于2的正整数;对所述k个数据集合进行合并处理,获取完整点云。
可选地,处理器1120具体用于执行:将所述点云数据码流划分为k个码流片段;对所述k个码流片段分别进行解码处理,生成所述k个数据集合。
可选地,处理器1120具体用于执行:根据所述点云数据码流中的k个位置指示信息将所述点云数据码流划分为所述k个码流片段,所述位置指示信息用于指示所述点云数据码流中的数据在初始化空间中的位置。
可选地,处理器1120具体用于执行:对所述k个码流片段进行并行解码处理;或者,对所述k个码流片段进行串行解码处理。
可选地,处理器1120具体用于执行:对所述k个码流片段分别进行算术解码,得到k个待解码的位置信息和k个待解码的属性信息。
可选地,处理器1120具体用于执行:对所述k个待解码的位置信息分别进行八叉树解码,得到k个位置信息;根据所述k个位置信息对所述k个待解码的属性信息分别进行解码,得到k个属性信息。
可选地,处理器1120具体用于执行:根据所述k个位置信息对所述k 个待解码的位置信息分别进行层次解码。
可选地,处理器1120具体用于执行:根据所述k个位置信息对所述k个待解码的位置信息分别进行定长码解码。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其他任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如数字视频光盘(digital video disc,DVD))、或者半导体介质(例如固态硬盘(solid state disk,SSD))等。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作 为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

Claims (50)

  1. 一种编码点云数据的方法,其特征在于,包括:
    获取多个点云数据;
    根据所述多个点云数据的位置将所述多个点云数据划分为k个数据集合,其中,所述k个数据集合包括第一数据集合,所述第一数据集合中至少两个点云数据之间的距离小于或等于第一距离阈值,所述k为大于或等于2的正整数;
    对所述k个数据集合分别进行编码。
  2. 根据权利要求1所述的方法,其特征在于,所述k个数据集合包括第二数据集合和第三数据集合,所述第二数据集合与所述第三数据集合之间的距离大于或等于第二距离阈值。
  3. 根据权利要求1或2所述的方法,其特征在于,所述第一数据集合中任意两个相邻位置的点云数据之间的距离小于或等于所述第一距离阈值。
  4. 根据权利要求1至3中任一项所述的方法,其特征在于,所述根据所述多个点云数据的位置将所述多个点云数据划分为k个数据集合,包括:
    确定k个初始重心位置,所述k个初始重心位置位于所述多个点云数据对应的空间内;
    根据所述k个初始重心位置将所述多个点云数据划分为所述k个数据集合,所述k个初始重心位置与所述k个数据集合一一对应。
  5. 根据权利要求4所述的方法,其特征在于,所述根据所述k个初始重心位置将所述多个点云数据划分为k个数据集合,包括:
    确定SUM i+1和SUM i,所述SUM i+1为重心位置i+1到与所述重心位置i+1对应的至少一个点云数据之间的距离的和,所述SUM i为重心位置i到与所述重心位置i对应的至少一个点云数据之间的距离的和,其中,所述重心位置i+1为第i+1次确定的一个重心位置,所述重心位置i为第i次确定的一个重心位置,并且,所述重心位置i+1是所述重心位置i经过更新后得到的重心位置,所述i为正整数;
    当所述SUM i+1满足预设条件时,确定所述SUM i+1和所述SUM i中较小的值对应的点云数据属于一个数据集合。
  6. 根据权利要求5所述的方法,其特征在于,所述预设条件包括:所述SUM i+1大于所述SUM i
  7. 根据权利要求5或6所述的方法,其特征在于,所述预设条件包括:所述SUM i+1与所述SUM i的差值的绝对值小于或等于第三距离阈值。
  8. 根据权利要求5至7中任一项所述的方法,其特征在于,所述预设条件包括:所述i+1等于预设的次数阈值。
  9. 根据权利要求4至8中任一项所述的方法,其特征在于,所述确定k个初始重心位置,包括:
    确定所述多个点云数据中前k个输入的点云数据的位置为所述k个初始重心位置。
  10. 根据权利要求4至8中任一项所述的方法,其特征在于,所述确定k个初始重心位置,包括:
    从所述多个点云数据中随机确定k个点云数据;
    确定所述k个点云数据的位置为所述k个初始重心位置。
  11. 根据权利要求4至8中任一项所述的方法,其特征在于,所述确定k个初始重心位置,包括:
    从所述多个点云数据中确定基准点云数据;
    根据所述基准点云数据的索引值以及索引值步长确定k个索引值;
    确定所述k个索引值对应的k个点云数据的位置为所述k个初始重心位置。
  12. 根据权利要求1至11中任一项所述的方法,其特征在于,所述获取多个点云数据,包括:
    获取多个点云包,所述多个点云包对应相同的时间戳和设备标识;
    从所述多个点云包中获取所述多个点云数据。
  13. 根据权利要求1至12中任一项所述的方法,其特征在于,所述对所述k个数据集合分别进行编码,包括:
    对所述k个数据集合进行并行编码或者串行编码。
  14. 根据权利要求1至13中任一项所述的方法,其特征在于,所述对所述k个数据集合分别进行编码,包括:
    对所述k个数据集合的位置信息分别进行编码;
    和/或,
    分别对所述k个数据集合的属性信息进行编码。
  15. 根据权利要求14所述的方法,其特征在于,所述分别对所述k个 数据集合的属性信息进行编码,包括:
    分别对所述k个数据集合的属性信息进行层次编码或者进行定长码编码。
  16. 根据权利要求14所述的方法,其特征在于,对所述k个数据集合的位置信息分别进行编码,包括:
    生成分别包含所述k个数据集合的k个初始化空间;
    分别对所述k个初始化空间进行空间划分,得到k个划分结果。
  17. 根据权利要求16所述的方法,其特征在于,对所述k个数据集合的位置信息分别进行编码,包括:
    在所述码流中写入所述k个初始化空间的位置指示信息。
  18. 根据权利要求1至17中任一项所述的方法,其特征在于,对所述k个数据集合分别进行编码,包括:
    对所述k个数据集合中每个数据集合的所述位置信息编码的结果和/或所述属性信息编码的结果进行算术编码,生成k个码流片段;
    对所述k个码流片段进行合并处理,生成码流。
  19. 一种解码点云数据的方法,其特征在于,包括:
    获取点云数据码流;
    对所述点云数据码流进行解码处理,生成k个数据集合,所述k个数据集合包括从所述点云数据码流中解码得到的点云数据,所述k为大于或等于2的正整数;
    对所述k个数据集合进行合并处理,获取完整点云。
  20. 根据权利要求19所述的方法,其特征在于,所述对所述点云数据码流进行解码处理,生成k个数据集合,包括:
    将所述点云数据码流划分为k个码流片段;
    对所述k个码流片段分别进行解码处理,生成所述k个数据集合。
  21. 根据权利要求20所述的方法,其特征在于,所述将所述点云数据码流划分为k个码流片段,包括:
    根据所述点云数据码流中的k个位置指示信息将所述点云数据码流划分为所述k个码流片段,所述位置指示信息用于指示所述点云数据码流中的数据在初始化空间中的位置。
  22. 根据权利要求20或21所述的方法,其特征在于,所述对所述k个码流片段分别进行解码处理,包括:
    对所述k个码流片段进行并行解码处理;或者,
    对所述k个码流片段进行串行解码处理。
  23. 根据权利要求20至22中任一项所述的方法,其特征在于,所述对所述k个码流片段分别进行解码处理,包括:
    对所述k个码流片段分别进行算术解码,得到k个待解码的位置信息和/或k个待解码的属性信息。
  24. 根据权利要求23所述的方法,其特征在于,所述对所述k个码流片段分别进行解码处理,还包括:
    对所述k个待解码的位置信息分别进行位置解码,得到包含所述k个数据集合的k个初始化空间。
  25. 根据权利要求23所述的方法,其特征在于,所述对所述k个码流片段分别进行解码处理,包括:
    对所述k个待解码的属性信息分别进行层次解码或定长码解码。
  26. 一种点云数据编码装置,其特征在于,包括:
    存储器,用于存储代码;
    处理器,用于读取所述存储器中的代码,以执行如下操作:
    获取多个点云数据;
    根据所述多个点云数据的位置将所述多个点云数据划分为k个数据集合,其中,所述k个数据集合包括第一数据集合,所述第一数据集合中至少两个点云数据之间的距离小于或等于第一距离阈值,所述k为大于或等于2的正整数;
    对所述k个数据集合分别进行编码。
  27. 根据权利要求26所述的装置,其特征在于,所述k个数据集合包括第二数据集合和第三数据集合,所述第二数据集合与所述第三数据集合之间的距离大于或等于第二距离阈值。
  28. 根据权利要求26或27所述的装置,其特征在于,所述第一数据集合中任意两个相邻位置的点云数据之间的距离小于或等于所述第一距离阈值。
  29. 根据权利要求26至28中任一项所述的装置,其特征在于,所述根据所述多个点云数据的位置将所述多个点云数据划分为k个数据集合,包括:
    确定k个初始重心位置,所述k个初始重心位置位于所述多个点云数据 对应的空间内;
    根据所述k个初始重心位置将所述多个点云数据划分为所述k个数据集合,所述k个初始重心位置与所述k个数据集合一一对应。
  30. 根据权利要求29所述的装置,其特征在于,所述根据所述k个初始重心位置将所述多个点云数据划分为k个数据集合,包括:
    确定SUM i+1和SUM i,所述SUM i+1为重心位置i+1到与所述重心位置i+1对应的至少一个点云数据之间的距离的和,所述SUM i为重心位置i到与所述重心位置i对应的至少一个点云数据之间的距离的和,其中,所述重心位置i+1为第i+1次确定的一个重心位置,所述重心位置i为第i次确定的一个重心位置,并且,所述重心位置i+1是所述重心位置i经过更新后得到的重心位置,所述i为正整数;
    当所述SUM i+1满足预设条件时,确定所述SUM i+1和所述SUM i中较小的值对应的点云数据属于一个数据集合。
  31. 根据权利要求30所述的装置,其特征在于,所述预设条件包括:所述SUM i+1大于所述SUM i
  32. 根据权利要求30或31所述的装置,其特征在于,所述预设条件包括:所述SUM i+1与所述SUM i的差值的绝对值小于或等于第三距离阈值。
  33. 根据权利要求30至32中任一项所述的装置,其特征在于,所述预设条件包括:所述i+1等于预设的次数阈值。
  34. 根据权利要求29至33中任一项所述的装置,其特征在于,所述确定k个初始重心位置,包括:
    确定所述多个点云数据中前k个输入的点云数据的位置为所述k个初始重心位置。
  35. 根据权利要求29至33中任一项所述的装置,其特征在于,所述确定k个初始重心位置,包括:
    从所述多个点云数据中随机确定k个点云数据;
    确定所述k个点云数据的位置为所述k个初始重心位置。
  36. 根据权利要求29至33中任一项所述的装置,其特征在于,所述确定k个初始重心位置,包括:
    从所述多个点云数据中确定基准点云数据;
    根据所述基准点云数据的索引值以及索引值步长确定k个索引值;
    确定所述k个索引值对应的k个点云数据的位置为所述k个初始重心位置。
  37. 根据权利要求26至36中任一项所述的装置,其特征在于,所述获取多个点云数据,包括:
    获取多个点云包,所述多个点云包对应相同的时间戳和设备标识;
    从所述多个点云包中获取所述多个点云数据。
  38. 根据权利要求26至37中任一项所述的装置,其特征在于,所述对所述k个数据集合分别进行编码,包括:
    对所述k个数据集合进行并行编码或者串行编码。
  39. 根据权利要求26至38中任一项所述的装置,其特征在于,所述对所述k个数据集合分别进行编码,包括:
    对所述k个数据集合的位置信息分别进行编码;
    和/或,
    分别对所述k个数据集合的属性信息进行编码。
  40. 根据权利要求39所述的装置,其特征在于,所述分别对所述k个数据集合的属性信息进行编码,包括:
    分别对所述k个数据集合的属性信息进行层次编码或者进行定长码编码。
  41. 根据权利要求39所述的装置,其特征在于,对所述k个数据集合的位置信息分别进行编码,包括:
    生成分别包含所述k个数据集合的k个初始化空间;
    分别对所述k个初始化空间进行空间划分,得到k个划分结果。
  42. 根据权利要求41所述的装置,其特征在于,对所述k个数据集合的位置信息分别进行编码,包括:
    在所述码流中写入所述k个初始化空间的位置指示信息。
  43. 根据权利要求26至42中任一项所述的装置,其特征在于,对所述k个数据集合分别进行编码,包括:
    对所述k个数据集合中每个数据集合的所述位置信息编码的结果和/或所述属性信息编码的结果进行算术编码,生成k个码流片段;
    对所述k个码流片段进行合并处理,生成码流。
  44. 一种点云数据解码装置,其特征在于,包括:
    存储器,用于存储代码;
    处理器,用于读取所述存储器中的代码,以执行如下操作:
    获取点云数据码流;
    对所述点云数据码流进行解码处理,生成k个数据集合,所述k个数据集合包括从所述点云数据码流中解码得到的点云数据,所述k为大于或等于2的正整数;
    对所述k个数据集合进行合并处理,获取完整点云。
  45. 根据权利要求44所述的装置,其特征在于,所述对所述点云数据码流进行解码处理,生成k个数据集合,包括:
    将所述点云数据码流划分为k个码流片段;
    对所述k个码流片段分别进行解码处理,生成所述k个数据集合。
  46. 根据权利要求45所述的装置,其特征在于,所述将所述点云数据码流划分为k个码流片段,包括:
    根据所述点云数据码流中的k个位置指示信息将所述点云数据码流划分为所述k个码流片段,所述位置指示信息用于指示所述点云数据码流中的数据在初始化空间中的位置。
  47. 根据权利要求45或46所述的装置,其特征在于,所述对所述k个码流片段分别进行解码处理,包括:
    对所述k个码流片段进行并行解码处理或者串行编码处理。
  48. 根据权利要求45至47中任一项所述的装置,其特征在于,所述对所述k个码流片段分别进行解码处理,包括:
    对所述k个码流片段分别进行算术解码,得到k个待解码的位置信息和/或k个待解码的属性信息。
  49. 根据权利要求48所述的装置,其特征在于,所述对所述k个码流片段分别进行解码处理,还包括:
    对所述k个待解码的位置信息分别进行位置解码,得到包含所述k个数据集合的k个初始化空间。
  50. 根据权利要求48所述的装置,其特征在于,所述对所述k个码流片段分别进行解码处理,包括:
    对所述k个待解码的属性信息分别进行层次解码或定长码解码。
PCT/CN2019/089593 2019-05-31 2019-05-31 点云数据的编码方法、编码装置、解码方法与解码装置 WO2020237647A1 (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201980009142.5A CN111684808A (zh) 2019-05-31 2019-05-31 点云数据的编码方法、编码装置、解码方法与解码装置
PCT/CN2019/089593 WO2020237647A1 (zh) 2019-05-31 2019-05-31 点云数据的编码方法、编码装置、解码方法与解码装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2019/089593 WO2020237647A1 (zh) 2019-05-31 2019-05-31 点云数据的编码方法、编码装置、解码方法与解码装置

Publications (1)

Publication Number Publication Date
WO2020237647A1 true WO2020237647A1 (zh) 2020-12-03

Family

ID=72451462

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2019/089593 WO2020237647A1 (zh) 2019-05-31 2019-05-31 点云数据的编码方法、编码装置、解码方法与解码装置

Country Status (2)

Country Link
CN (1) CN111684808A (zh)
WO (1) WO2020237647A1 (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112184840B (zh) * 2020-09-22 2022-09-02 上海交通大学 基于多尺度结构化字典学习的3d点云压缩系统
CN112581552B (zh) * 2020-12-14 2023-04-07 深圳大学 自适应分块的基于体素的点云压缩方法及装置
CN115714864A (zh) * 2021-08-23 2023-02-24 鹏城实验室 点云属性编码方法、装置、解码方法以及装置
CN114124909B (zh) * 2021-09-14 2023-03-14 福州大学 基于激光雷达的点云实时采集压缩传输系统及方法
CN114329556B (zh) * 2021-12-30 2023-03-24 江苏瞭望神州大数据科技有限公司 一种具有自带芯片数据保护功能的一体机
CN114387375B (zh) * 2022-01-17 2023-05-16 重庆市勘测院(重庆市地图编制中心) 一种海量点云数据多视图渲染方法
WO2023173238A1 (zh) * 2022-03-12 2023-09-21 Oppo广东移动通信有限公司 编解码方法、码流、编码器、解码器以及存储介质
WO2023173237A1 (zh) * 2022-03-12 2023-09-21 Oppo广东移动通信有限公司 编解码方法、码流、编码器、解码器以及存储介质
CN117635889B (zh) * 2024-01-26 2024-04-23 南京柠瑛智能科技有限公司 激光点云数据实时渲染方法及系统、装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103458032A (zh) * 2013-09-03 2013-12-18 武汉大学 一种空间数据访问规律动态统计及信息压缩的方法及系统
US20150154467A1 (en) * 2013-12-04 2015-06-04 Mitsubishi Electric Research Laboratories, Inc. Method for Extracting Planes from 3D Point Cloud Sensor Data
CN106846406A (zh) * 2017-02-24 2017-06-13 上海坤辕检测科技有限公司 一种用于物体三维坐标测量的点云坐标系构建方法
CN108171761A (zh) * 2017-12-13 2018-06-15 北京大学 一种基于傅里叶图变换的点云帧内编码方法及装置
CN109345619A (zh) * 2018-08-10 2019-02-15 华北电力大学(保定) 基于类八叉树编码的海量点云空间管理方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107798721B (zh) * 2016-08-31 2021-03-16 北京四维图新科技股份有限公司 一种点云数据的处理方法及装置和点云渲染方法及装置
US10861196B2 (en) * 2017-09-14 2020-12-08 Apple Inc. Point cloud compression
CN108632621B (zh) * 2018-05-09 2019-07-02 北京大学深圳研究生院 一种基于层次划分的点云属性压缩方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103458032A (zh) * 2013-09-03 2013-12-18 武汉大学 一种空间数据访问规律动态统计及信息压缩的方法及系统
US20150154467A1 (en) * 2013-12-04 2015-06-04 Mitsubishi Electric Research Laboratories, Inc. Method for Extracting Planes from 3D Point Cloud Sensor Data
CN106846406A (zh) * 2017-02-24 2017-06-13 上海坤辕检测科技有限公司 一种用于物体三维坐标测量的点云坐标系构建方法
CN108171761A (zh) * 2017-12-13 2018-06-15 北京大学 一种基于傅里叶图变换的点云帧内编码方法及装置
CN109345619A (zh) * 2018-08-10 2019-02-15 华北电力大学(保定) 基于类八叉树编码的海量点云空间管理方法

Also Published As

Publication number Publication date
CN111684808A (zh) 2020-09-18

Similar Documents

Publication Publication Date Title
WO2020237647A1 (zh) 点云数据的编码方法、编码装置、解码方法与解码装置
JP5932051B2 (ja) 予測位置復号
CN103918009A (zh) 预测位置编码
WO2020248177A1 (zh) 点云的编解码方法及装置
WO2022121648A1 (zh) 点云数据编码方法、解码方法、设备、介质及程序产品
CN1124563C (zh) 数据数组预测编码的方法
TW202141984A (zh) 用於在基於幾何形狀的點雲壓縮中的預測變換的預測器索引訊號傳遞
JP2022525897A (ja) ニューラルネットワークモデルの圧縮/解凍のための方法および装置
WO2022121650A1 (zh) 点云属性的预测方法、编码器、解码器及存储介质
US11004237B2 (en) Palette coding for color compression of point clouds
WO2024037244A1 (zh) 点云数据的解码方法、编码方法、装置、存储介质及设备
TW202127895A (zh) 用於深度資料之編碼方案
WO2022061785A1 (zh) 点云编码方法、点云解码方法及相关装置
WO2023131126A1 (en) Method, apparatus, and medium for point cloud coding
WO2024083194A1 (en) Method, apparatus, and medium for point cloud coding
WO2024074123A1 (en) Method, apparatus, and medium for point cloud coding
WO2024012381A1 (en) Method, apparatus, and medium for point cloud coding
WO2024074122A1 (en) Method, apparatus, and medium for point cloud coding
WO2023061420A1 (en) Method, apparatus, and medium for point cloud coding
WO2023093785A1 (en) Method, apparatus, and medium for point cloud coding
WO2023051551A1 (en) Method, apparatus, and medium for point cloud coding
WO2023066345A1 (en) Method, apparatus and medium for point cloud coding
WO2023071462A1 (zh) 点云的编解码方法、装置、设备、存储介质及程序产品
WO2023198168A1 (en) Method, apparatus, and medium for point cloud coding
WO2024051617A1 (en) Method, apparatus, and medium for point cloud coding

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 19931314

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 19931314

Country of ref document: EP

Kind code of ref document: A1