EP-4740466-A1 - SYSTEMS AND METHODS FOR POINT CLOUD COMPRESSION
Abstract
A method for use in encoding a slice containing a point cloud. The method includes selecting, from a set of candidate split directions comprising a first split direction and a second split direction, a split direction for splitting the slice. The step of selecting the split direction includes comparing a score for the first candidate split direction with a score for the second candidate split direction to determine whether the score for the first candidate satisfies a condition. If the score for the first candidate satisfies the condition, then selecting the first candidate split direction, otherwise selecting the second candidate. The score for the first candidate split direction indicates a first number of points within the point cloud that are within a threshold distance of a boundary that results from splitting the slice in the first candidate split direction.
Inventors
- SVENSSON, NICLAS
- STRÖM, Jacob
- Sjöberg, Rickard
Assignees
- Telefonaktiebolaget LM Ericsson (publ)
Dates
- Publication Date
- 20260513
- Application Date
- 20240701
Claims (20)
- 1. An apparatus (1000) configured to perform a method (900) for use in encoding a slice (600) containing a point cloud (602), wherein the method comprises: selecting (s902), from a set of candidate split directions comprising a first split direction and a second split direction, a split direction for splitting the slice, wherein selecting the split direction for splitting the slice comprises: determining (s911) a score for the first candidate split direction; determining (s912) a score for the second candidate split direction; comparing (s913) the score for the first candidate split direction with the score for the second candidate split direction to determine whether the score for the first candidate split direction satisfies a condition; and if the score for the first candidate split direction satisfies the condition, then selecting (s914) the first candidate split direction for splitting the slice, otherwise selecting (s915) the second candidate split direction for splitting the slice, wherein the score for the first candidate split direction indicates a first number of points within the point cloud that are within a threshold distance of a boundary that results from splitting the slice in the first candidate split direction, and the score for the second candidate split direction indicates a second number of points within the point cloud that are within the threshold distance of a boundary that results from splitting the slice in the second candidate split direction.
- 2. The apparatus of claim 1, wherein the method further comprises, prior to comparing the score for the first candidate split direction with the score for the second candidate split direction: determining a score for a third candidate split direction; and determining that the score for a third candidate split direction is worse than the score for the second candidate direction or determining that the score for a third candidate split direction is equal to the score for the second candidate direction, wherein the score for the third candidate split direction indicates a third number of points within the point cloud that are within the threshold distance of a boundary that results from splitting the slice in the third candidate split direction..
- 3. The apparatus of claim 2, wherein determining that the score for a third candidate split direction is worse than the score for the second candidate direction comprises determining that the score for the third candidate split direction is greater than the score for the second candidate direction, or determining that the score for a third candidate split direction is worse than the score for the second candidate direction comprises determining that the score for the third candidate split direction is less than the score for the second candidate direction.
- 4. The apparatus of any one of claims 1-3, wherein the score for the first candidate split direction specifies the first number of points, and the score for the second candidate split direction specifies the second number of points.
- 5. The apparatus of any one of claims 1-4, wherein determining the score for the first candidate split direction comprises: for a first point within the point cloud determining a distance between the first point and a first slice boundary associated with the first candidate split direction; determining whether the distance between the first point and the first slice boundary satisfies a distance condition; and as a result of determining that the distance between the first point and the first slice boundary satisfies the distance condition, incrementing a first counter value.
- 6. The apparatus of claim 5, wherein determining the score for the first candidate split direction further comprises setting the score equal to the first counter value or a value that is a function of the first counter value.
- 7. The apparatus of any one of claims 5-6, wherein determining the score for the second candidate split direction comprises: for the first point within the point cloud determining a distance between the first point and a second slice boundary associated with the second candidate split direction; and determining whether the distance between the first point and the second slice boundary satisfies the distance condition.
- 8. The apparatus of claim 7, wherein as a result of determining that the distance between the first point and the second slice boundary satisfies the distance condition, incrementing a counter value.
- 9. The apparatus of any one of claims 1-8, further comprising encoding the slice using the selected split direction.
- 10. An apparatus (1000) for use in encoding a slice (600) containing a point cloud (602), the apparatus comprising: memory (1042); and processing circuitry (1002) coupled to the memory, wherein the memory stores a computer program (1043) comprising instructions (1044) which when executed by the processing circuitry (1002) causes the apparatus to perform the method of any one of claims 1-9.
- 11. A method (900) for use in encoding a slice (600) containing a point cloud (602), the method comprising: selecting (s902), from a set of candidate split directions comprising a first split direction and a second split direction, a split direction for splitting the slice, wherein selecting the split direction for splitting the slice comprises: determining (s911) a score for the first candidate split direction; determining (s912) a score for the second candidate split direction; comparing (s913) the score for the first candidate split direction with the score for the second candidate split direction to determine whether the score for the first candidate split direction satisfies a condition; and if the score for the first candidate split direction satisfies the condition, then selecting (s914) the first candidate split direction for splitting the slice, otherwise selecting (s915) the second candidate split direction for splitting the slice, wherein the score for the first candidate split direction indicates a first number of points within the point cloud that are within a threshold distance of a boundary that results from splitting the slice in the first candidate split direction, and the score for the second candidate split direction indicates a second number of points within the point cloud that are within the threshold distance of a boundary that results from splitting the slice in the second candidate split direction.
- 12. The method of claim 11, wherein the method further comprises, prior to comparing the score for the first candidate split direction with the score for the second candidate split direction: determining a score for a third candidate split direction; and determining that the score for a third candidate split direction is worse than the score for the second candidate direction or determining that the score for a third candidate split direction is equal to the score for the second candidate direction, wherein the score for the third candidate split direction indicates a third number of points within the point cloud that are within the threshold distance of a boundary that results from splitting the slice in the third candidate split direction..
- 13. The method of claim 12, wherein determining that the score for a third candidate split direction is worse than the score for the second candidate direction comprises determining that the score for the third candidate split direction is greater than the score for the second candidate direction, or determining that the score for a third candidate split direction is worse than the score for the second candidate direction comprises determining that the score for the third candidate split direction is less than the score for the second candidate direction.
- 14. The method of any one of claims 11-13, wherein the score for the first candidate split direction specifies the first number of points, and the score for the second candidate split direction specifies the second number of points.
- 15. The method of any one of claims 11-14, wherein determining the score for the first candidate split direction comprises: for a first point within the point cloud determining a distance between the first point and a first slice boundary associated with the first candidate split direction; determining whether the distance between the first point and the first slice boundary satisfies a distance condition; and as a result of determining that the distance between the first point and the first slice boundary satisfies the distance condition, incrementing a first counter value.
- 16. The method of claim 15, wherein determining the score for the first candidate split direction further comprises setting the score equal to the first counter value or a value that is a function of the first counter value.
- 17. The method of any one of claims 15-16, wherein determining the score for the second candidate split direction comprises: for the first point within the point cloud determining a distance between the first point and a second slice boundary associated with the second candidate split direction; and determining whether the distance between the first point and the second slice boundary satisfies the distance condition.
- 18. The method of claim 17, wherein as a result of determining that the distance between the first point and the second slice boundary satisfies the distance condition, incrementing a counter value.
- 19. The method of any one of claims 11-18, further comprising encoding the slice using the selected split direction.
- 20. A computer program (1043) comprising instructions (1044) which when executed by processing circuitry (1002) of an apparatus causes the apparatus to perform the method of any one of claims 11-19.
Description
SYSTEMS AND METHODS FOR POINT CLOUD COMPRESSION TECHNICAL FIELD [001] Disclosed are embodiments related to point cloud (a.k.a., “pointcloud”) compression. BACKGROUND [002] A three-dimensional (3D) point cloud is a set of coordinates (a.k.a., “points”) in a 3D space, which is typically used to capture scene geometry and scale (e.g., to represent 3D structures from the physical world). In addition to geometry, 3D point clouds (or “point clouds” for short) can store additional information about the 3D points, so-called attributes. Typical attributes are color information, reflectance, normal vectors, etc. [003] Typical point clouds range in size from a few kilobytes (KBs) to several gigabytes (GBs), which puts stress on any application requiring storage and/or transmission of such point clouds. Therefore, an efficient point cloud compression solution is an important enabler for all industrial applications relying on such point clouds. [004] Geometry based point cloud compression (G-PCC) is the current MPEG standard that targets the use case of static point clouds (see, e.g., reference [1]). G-PCC uses octree coding to compress the geometry. In advance of applying this method, it is assumed that the coordinate values of the points in the point cloud have been quantized into integer coordinates and is contained within a volume D x D x D. The point cloud is then partitioned into 8 sub-cubes with dimensions D/2 x D/2 x D/2. If a sub-cube does not contain any points, it is unoccupied, and the partitioning process for this branch of the tree is terminated. This generates a tree structure (an octree) where each node can be represented using 8 bits, where each bit indicates the occupancy status of one sub-cube. [005] FIG. 1 which illustrates how the position of two points are represented by an octree. For lossy compression, octree partitioning is stopped at a pre-determined level, generating a sparser reconstruction, and the corresponding sequence of 8-bit words is entropy coded. [006] G-PCC also contains a module called trisoup, which was developed to favor surface point clouds (i.e., point clouds that are dense enough to capture surface structures) (see, e.g, reference [1]). Similar to regular octree G-PCC, this method uses octree coding to partition the point cloud into nodes (blocks with width larger than 1). However, when using the trisoup module, the octree partitioning typically stops at a higher level in the tree, making the nodes larger. This level is pre-determined and set by the user/encoder. However, instead of setting a fixed depth, the user sets a trisoup node size (e.g.,. nodeSize = 2n, n=2, ...), where each node size corresponds to a depth. To represent the surfaces within the trisoup nodes, triangles are modeled based on where the original surface crosses the edges of the corresponding trisoup node. [007] FIG. 2A illustrates vertices that are generated where the plane of points are intersecting the edges of the node. [008] As shown in FIG. 2B, in the decoder, the points are connected in triangles via a centroid point (not filled). The intersection points are encoded as trisoup vertices and signaled to the decoder. [009] When decoding the point cloud, surfaces of each block are reconstructed by populating all positions for points (called voxels) that intersect the modelled triangles (connected by trisoup vertices and a centroid point). Since the reconstructed point cloud will be quantized, the number of positions that could be occupied is fixed to integer positions. The purpose of the trisoup module is to encode the point cloud at a lower bit rate without losing much accuracy. Compared to octree G-PCC, the reconstructed point cloud will be denser when using trisoup, which typically favors the distortion metrics used in MPEG. [0010] In the current MPEG G-PCC Common Test Conditions (CTC), uniform square partitioning of point clouds into partitions is performed, before starting the octree partitioning. Uniform square partitioning operates by partitioning the point cloud into uniform squares, where the side of the cubes is determined by the smallest side (the minEdge) of the bounding box of the point cloud (see, e.g., FIG. 3 and reference [2]). [0011] FIG. 3 shows an example of how the point cloud is partitioned into uniform squares. The side of these squares are determined as the shortest side of the bounding box encapsulating the entire point cloud. [0012] These partitions are called slices in G-PCC. A point cloud fl partitioned into M slices can therefore be described as fl = U^Q1 fit, where flt represents the set of points in a specific slice. To make sure that the slices have sides that are multiples of nodeSize (making it easier to partition each slice into an octree where the full range of voxels are occupied), the side of the slices are rounded up to the closest integer divisible by nodeSize. This rounded number is called the sliceSize and determines the longest possible bounding box side of a