Systems and methods for point cloud compression
By determining the optimal split direction based on the number of points near slice boundaries, the method addresses the inefficiencies in current point cloud compression techniques, enhancing compression efficiency and maintaining quality.
Patent Information
- Application Number
- PCT/EP2024/074984
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2023-09-28
- Filing Date
- 2024-09-06
- Publication Date
- 2025-04-03
AI Technical Summary
Current point cloud compression methods, such as the MPEG standard, face challenges in efficiently compressing point clouds due to the duplication of trisoup vertices on slice boundaries during splitting, which increases the bitstream size.
The proposed method determines the optimal split direction by calculating the number of points near slice boundaries in each direction, thereby minimizing the number of trisoup vertices signaled to the decoder, which reduces the bitstream size.
This approach improves compression efficiency by reducing the bits required to represent the geometry of a point cloud while maintaining the quality of the reconstructed point cloud.
Smart Images

Figure EP2024074984_03042025_PF_FP_ABST
Abstract
Description
SYSTEMS AND METHODS FOR POINT CLOUD COMPRESSIONTECHNICAL FIELD
[0001] This disclosure relates to systems and methods for point cloud compression (a.k.a., “pointcloud”).BACKGROUND
[0002] A three-dimensional (3D) point cloud is an unstructured 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.
[0003] 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.
[0004] 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 subcubes 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 (see FIGS. 6D and 6E 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.
[0005] 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 trisoupmodule, 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 (e.g., see FIG. 7A, illustrating vertices that are generated where the plane of points are intersecting the edges of the node; in the decoder the points are connected in triangles via a centroid point (not filled) as shown in FIG. 7B). The intersection points are encoded as trisoup vertices and signaled to the decoder.
[0006] 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.
[0007] 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., FIGS. 8A-8B and reference [2]). FIGS. 8A-8B show 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.
[0008] These partitions are called slices in G-PCC. A point cloud fl partitioned into M slices can therefore be described as fl =where fit 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 slice. To ensure that a certain threshold of points (Nth) are not exceeded within each slice, these uniform cubic slices are further split.
[0009] When an already existing slice is further separated into smaller slices it will be referred to as splitting. However, the result of the splitting will not be cubic slices. Instead, the slices are split along the longest axis of the slice (the maxEdge of the slice) (see, e.g., FIG. 9).
[0010] To be clear, maxEdge is not the size of the longest axis, instead maxEdge is the dimension of the longest axis. If the point cloud is largest in the x-direction, maxEdge will be 0. If the point cloud instead is largest in the y-dimension, maxEdge will be 1, and if the z-direction is the largest, maxEdge will be 2. Hence maxEdge will always be 0, 1 or 2. The slices are split where there is a node boundary as well to ensure that the thickness of the slices is a multiple of nodeSize. Slices are encoded independently of each other.
[0011] In greater detail, the splitting is performed using these 5 steps:
[0012] (1) The split axis is determined by checking in what direction the content of the slice has its longest direction.
[0013] (2) The point set is sorted based on the split axis.
[0014] (3) The number of splits is determined by SN= N / Nth], using the user set threshold Nthand N is the number of points in a slice.
[0015] (4) Calculating a split size Ssize= N / SN] .
[0016] (5) Loop through all the points. When the split size is exceeded, the slice boundary is set in between the 2 most recent points where the coordinate off the splitAxis is divisible by the nodeSize and the next point is not divisible by the nodeSize. This makes sure that the node- and slice- boundaries are aligned, which reduces distortions in the reconstructed point cloud.
[0017] FIG. 9 shows an example illustrating how the bottom left slice from FIG. 8B is split in to 3 additional slices along the maxEdge of that slice (not the maxEdge in FIG. 8B). In FIG. 9, the point cloud has been projected down to two-dimensional (2D). Slice and node boundaries are aligned.SUMMARY
[0018] Certain challenges presently exist. For instance, to maintain a complete surface over the slice boundaries in the reconstructed point clouds, vertices on slice boundaries must be signaled twice, once for each slice it is present in. The problem with the current solution is that it does not consider how many trisoup vertices that end up on slice boundaries whensplitting the slice and this can have significant impact on the size of the bitstream. For instance, if the point cloud is split along one direction, there is a risk that we split the point cloud in a “busy” region where there is great number of points. The result of this is a great number of vertices on the slice boundaries that is signaled twice to the decoder, causing worse performance than necessary.
[0019] Accordingly, in one aspect of some embodiments of this disclosure, there is provided a method for use in encoding a point cloud, the method comprising: for each boundary included in a first set of boundaries arranged along a first direction, determining a first value (the s-value) which indicates a number of points in the point cloud that are within a distance from the boundary; based on at least one of the first values determined for the first set of boundaries, determining a second value which indicates a number of points in the point cloud that are within the distance from any boundary included in a first sub-set of boundaries arranged along the first direction, wherein the first sub-set of boundaries is a subset of the first set of boundaries; and based on the second value, selecting a split direction from a set of candidate split directions that includes the first direction.
[0020] In a different aspect aspect, there is provided a computer program comprising instructions which when executed by processing circuitry cause the processing circuitry to perform the method of any one of the above embodiments.
[0021] In a different aspect, there is provided a carrier containing the computer program of any one of the above embodiments, wherein the carrier is one of an electronic signal, an optical signal, a radio signal, and a computer readable storage medium.
[0022] In a different aspect, there is provided an apparatus for use in encoding a point cloud, the apparatus being configured to: for each boundary included in a first set of boundaries arranged along a first direction, determine a first value (the s-value) which indicates a number of points in the point cloud that are within a distance from the boundary; based on at least one of the first values determined for the first set of boundaries, determine a second value which indicates a number of points in the point cloud that are within the distance from any boundary included in a first sub-set of boundaries arranged along the first direction, wherein the first subset of boundaries is a subset of the first set of boundaries; and based on the second value, select a split direction from a set of candidate split directions that includes the first direction.
[0023] In a different aspect, there is provided an apparatus comprising: a memory; and processing circuitry coupled to the memory, wherein the apparatus is configured to performthe method of any one of the above embodiments.
[0024] Embodiments of this disclosure allow finding a possible optimal split direction - i.e., the split direction where the least amount of trisoup vertices is present on the slice boundaries. Accordingly, on average, the embodiments, increase compression efficiency by decreasing the bits required to represent the geometry of a point cloud whilst not significantly changing the quality of the reconstructed point cloud.BRIEF DESCRIPTION OF THE DRAWINGS
[0025] The accompanying drawings, which are incorporated herein and form part of the specification, illustrate various embodiments.
[0026] FIG. 1 shows an exemplary scenario where some embodiments of this disclosure can be applied.
[0027] FIG. 2A shows an apparatus according to some embodiments.
[0028] FIG. 2B shows a view of an XR scene according to some embodiments.
[0029] FIG. 3 shows a process according to some embodiments.
[0030] FIG. 4A shows a visualized representation of the process shown in FIG. 3.
[0031] FIG. 4B shows a side view of node group boundary.
[0032] FIG. 5 A shows an example of a point cloud.
[0033] FIG. 5B shows a cylindrical object.
[0034] FIGS. 5C-5E show different ways of slicing the example point cloud shown in FIG 5 A.
[0035] FIGS. 6A-6C show different ways of slicing a point cloud that represents the cylindrical object in FIG. 5B.
[0036] FIGS. 6D and 6E illustrate how the positions of two points are represented by an octree.
[0037] FIG. 7A illustrates vertices that are generated where the plane of points is intersecting the edges of the node.
[0038] FIG. 7B illustrates points being connected in triangles via a centroid point.
[0039] FIGS. 8A and 8B illustrate an example of how a point cloud is partitioned into uniform squares.
[0040] FIG. 9 illustrates how the bottom left slice from FIG. 8B is split in to three additional slices along the maxEdge of that slice.
[0041] FIG. 10 shows a process according to some embodiments.
[0042] FIG. 11 shows an apparatus according to some embodiments.DETAILED DESCRIPTION
[0043] FIG. 1 shows an exemplary scenario 100 where some embodiments of this disclosure can be applied. In the scenario 100, a capturing device 112 is configured to capture a view of a kitchen 150. In the kitchen 150, an oven 152, a picture frame 154, and a refrigerator 156 are placed.
[0044] The capturing device 112 may include a camera and a Light Detection and Ranging (LiDAR) sensor. The camera is configured to capture a view of the kitchen 150. One example of the camera is a 360-degree camera - a camera that is capable of capturing a 360-degree view of a real-world environment.
[0045] The LiDAR sensor is configured to collect depth values of various real-world points (e.g., points 171-178) of the kitchen 150. Here, a depth value of a particular real-world point indicates a distance between a view point 158 of the capturing device 112 and the particular real-world point. For example, a depth value of a real-world point 173 indicates a distance 180 between the point 173 and the view point 158. One example of the view point 158 is a center point of the camera.
[0046] Once the view of the kitchen 150 is captured by the camera and depth values of the real-world points included in the view of the kitchen 150 are measured by the LiDAR sensor, the capturing device 112 may transmit the captured and / or measured data to a computing device 190 which is connected to the capturing device 112 (wirelessly or via a wired connection). After receiving the data, the computing device 190 may combine the data collected by the camera and the data collected by the LiDAR sensor, thereby generating 3D point data indicating a plurality of a 3D points (i. e. , the point cloud).
[0047] The 3D point data indicating the 3D points may be used to reconstruct the real- world environment captured by the capturing device 112. For example, the 3D point data indicating the 3D points may be used to generate an extended-reality (XR) (including a virtual-reality, a mixed-reality, or an augmented-reality) scene using an XR display 202 shown in FIG. 2A. View 200 shown in FIG. 2B is an example of the view user 204 sees via the XR display 202. The 3D point data of each 3D point may include a 3D coordinate of the 3D point and / or attributes such as color / luminance values of the 3D point.
[0048] The 3D point data indicating the plurality of 3D points generated by the computing device 190 may be stored in a storage (e.g., a memory included in the computing device 190). However, typical size of the 3D point data ranges from 1 GB to several GBs, and thus storing the 3D point data would require a substantial amount of storage space. Additionally, in some scenarios, there is a need to transmit the point data of the 3D points from one entity to another entity. For example, assume that an owner of a house wants to renovate the kitchen 150 but a kitchen designer is located far from the house. In such case, once a view of the kitchen 150 is captured and the point data identifying the 3D points of the kitchen 150 is generated by the computing device 190, the point data may be transmitted from the computing device 190 to the XR display device 202 such that the kitchen designer can see the reconstructed 3D view of the kitchen 150 via the XR display device 202. However, due to the large size of point data, transmitting the 3D point data would consume a substantial amount of data bandwidth. Therefore, there is a need to compress (i.e. , encode) the 3D point data.
[0049] In compressing the point data, the point cloud may be divided into a plurality of slices and vertices on the boundaries of the slices may be signaled such that the point cloud can be reconstructed using the vertices. But, as noted above, the vertices on the slice boundaries are signaled twice and the current solution does not consider how many trisoup vertices that end up on slice boundaries when splitting the slice, which can have significant impact on the size of the bitstream.
[0050] In order to solve the above problem, according to some embodiments, a slice is split in all three directions (x, y, z) and the number of points in the original point cloud that are near the slice boundaries are determined. By using this number as an estimate of how many vertices that will be encoded and signaled to the decoder, an improved split direction can be determined. Because the original point cloud does not give a perfect indication of the number of vertices that will be encoded, one cannot be sure that this split direction is always the best possible, nevertheless tests have revealed that this way of choosing the split direction provides an improvement on average.
[0051] While the embodiments described herein are applicable to point clouds with attributes, for the simplicity of presentation, the embodiments are presented in the context of geometry compression without attributes, i.e., compressing a set of 3D points fl = (Xfe, ^k> k)k=v where K is the number of points and Xk, Yk, Zkare coordinates for point k.
[0052] FIG. 3 shows a process 300 for determining a direction of splitting a slice (a.k.a., “a splitting direction”) according to some embodiments. The process 300 may be performed by the computing device 190 and may begin with step s302.
[0053] The step s302 comprises obtaining point data that indicates a point cloud (i.e., a plurality of points). The point cloud may be included in a bounding box. The point data may indicate a coordinate of each point. In case the point cloud is defined in a 3D space, the coordinate of each point may be defined as a 3D coordinate — Q = (Xk, Yk, Zk)k=1where K is the number of points and Xk, Yk, Zkare coordinates for point k. Similarly, in case the point cloud is defined in a 2D space, the coordinate of each point may be defined as a 2D coordinate. In this disclosure, each of Xk, Yk,Zkis referred to as a X-coordinate value, a Y-coordinate value, and a Z-coordinate value.
[0054] After obtaining the point data, the process 300 may proceed to step s304. The step s304 comprises, for each point, dividing a coordinate value (e.g., the X-coordinate value) of the point by the size of anode (a.k.a., the node size), thereby obtaining a division value for the coordinate value (e.g., the X-coordinate value) of the point. For simple explanation purpose, the X-coordinate value is used as an example of the coordinate value. But as mentioned above, steps s304-s312 may be performed for each of the coordinate values (e.g., the X-coordinate values, the Y-coordinate values, Z-coordinate values). After obtaining the division values, the process 300 may proceed to step s306.
[0055] The step s306 comprises, for each point, determining which group the point belongs to based on the division value and incrementing a count value of the group. Here, each group (a.k.a., “each node group”) (e.g., 402, 404, 406, ... 418, or 420 shown in FIG. 4A) may be associated with a range of numbers. For example, a first node group may be associated with a range of 0 < division value < 1, a second group may be associated with a range of 1 < division value < 2, a third group may be associated with a range of 2 < division value < 3, and so on. The steps s304 and s306 are explained below in detail using a simple example. Here a node group may correspond to a group of nodes. The boundary of each node group is a potential slice boundary because a boundary of the slice may be selected from the boundariesof the node groups. FIG. 4B shows a side view of a surface of the boundary of the node group 402. As shown in FIG. 4B, the node group 402 comprises a plurality of nodes 490 in which the points are located.
[0056] Let’s assume that the node size is equal to 4, and there are three points Pl, P2, and P3. The X-coordinate values of Pl, P2, and P3 are 11, 5, and 2, respectively. Note that the point data may indicate an unsorted list of points. In this example, in the step s304, each of 11, 5, and 2, is divided by 4, and the division values of 11 / 4, 5 / 4, and 2 / 4 of Pl, P2, and P3 are obtained. Then, in the step s306, depending on which range of numbers each division value falls in, it is determined as to which group each point belongs. In the above example, since 11 / 4 is within the range of 2 < division value < 3, Pl is considered to belong to the third group, and the count value n2 associated with the third group is incremented by 1. Similarly, since 5 / 4 is within the range of 1 < division value < 2, P2 is considered to belong to the second group, and the count value n2 associated with the second group is incremented by 1. Similarly, since 2 / 4 is within the range of 0 < division value < 1, P3 is considered to belong to the first group, and the count value nO associated with the first group is incremented by 1. The result of performing the steps s304 and s306 is a set of numbers (nO, nl, n2, ...) each indicating a number of points included in each group. In this disclosure, each of nO, nl, n2, ... is referred to as a first count value (i. e. , n or n-value in this disclosure).
[0057] In some embodiments, instead of being associated with a range of numbers, each node group may be associated with a value (e.g., an integer value). For example, a floor function of (the X-coordinate value of a point / the size of node) may be used to determine an integer value of (the X-coordinate value / the size of node) and if the determined integer value is determined to be equal to a certain value, the point is determined to belong a node group associated with the certain value. More specifically, in the above example, the X-coordinate value of Pl is 11 and the node size is 4. Let’s assume that the third group is associated with an integer value of 2. Then, since = 2 , Pl is determined to belong to the third group.
[0058] After performing the step s304, the process 300 may proceed to step s308. The step s308 comprises, for each point, determining, based on a threshold value, whether the point is close to the upper boundary of the group the point belongs to, and incrementing a second count value (i.e., s or s-value in this disclosure) associated with the group in response to determining that the point is close to any boundary of the group. The second count value may indicate a number of points that are within a close vicinity of the upcoming slice boundary.
[0059] In the above example, let’s further assume that the threshold value is 0.3. Then Pl is determined as being close to the upper boundary of the third group because 11 / 4 = 2.75 is within 3 - 0.3 < division value < 3 + 0.3. Then, the second count value of the third group is incremented by one. On the contrary, P2 is determined as not being close to the upper boundary of the second group because 5 / 4 = 1.25 is not within 2 — 0.3 < division value < 2 + 0.3. Similarly, P3 is determined as not being close to the upper boundary of the first group because 2 / 4 = 0.5 is not within 1 — 0.3 < division value < 1 + 0.3. In this case, the second count value of each of the first and second groups is not incremented. The combined output of the steps s306 and s308 may be a matrix (called “a node-mapping matrix” which maps points to nodes and slice boundaries) having a first column / row which includes the first count values (nO, nl, n2, ... ) of the groups and having a second column / row which includes the second count values (sO, si, s2, ... ) of the groups. The number of columns / rows of the matrix associated with the X-direction may be calculated as the size of the bounding box in the X-direction (i.e., the X-dimension of the bounding box) divided by the node size.
[0060] Note that, in some scenarios, the group to which a point belongs and the group of which the second count value is incremented due to the point may be different. For example, let’s assume that there are points P4 and P5. The X-coordinate value of P4 is 5 and the X- coordinate value of P5 is 9.
[0061] Since = [1.25] = 1, P4 belongs to the second group. But since the divisionvalue of P4 — i.e., 1.25 -- is within the range of 1 — 0.3 < division value < 1 + 0.3, which is associated with the first group, the second count value of the first group is incremented. Since = [2.25] = 2, P5 belongs to the third group. But since the division value of P5 — i.e., 2.25 — is within the range of 2 — 0.3 < division value < 2 + 0.3, which is associated with the second group, the second count value of the second group is incremented.
[0062] Another way to implement the above embodiments is using a reminder of the division of the X-coordinate value of a point by the node size. If the remainder of the division is less than or equal to a threshold value, then the second count value (i.e., the s value) of the group that is immediately before the group the point belongs to is incremented by one. In one variant, the second count value is incremented if the remainder of the division is less than or equal to the threshold value minus 1 (in other words: the value is incremented if the remainder is less than the threshold). Additionally, if the reminder of the division is greater than or equalto (the node size - the threshold value), then the second count value of the group that the point belongs to is incremented by one.
[0063] For example, let’s assume that P6, P7, P8, P9, and PIO have the X-coordinate values — 11, 7, 13, 14, and 17 — respectively, the node size is 4, and the threshold value is 1. Let’s further assume that groups gl, g2, g3, g4 are associated with the integer values of 1, 2, 3, and 4, respectively. Then the quotient and the remainder ofare as follows:
[0064] For P0, since the quotient of the division is 2, P0 belongs to g2. Also, since the remainder of the division is 3 which is greater than or equal to (the node size - the threshold value = 4 - 1 = 3), the second count value of g2 is incremented by 1.
[0065] For Pl, since the quotient of the division is 1, Pl belongs to gl. Also, since the remainder of the division is 3 which is greater than or equal to (the node size - the threshold value = 4 - 1 = 3), the second count value of gl is incremented by 1.
[0066] For P2, since the quotient of the division is 3, P2 belongs to g3. Also, since the remainder of the division is 1 which is less than or equal to the threshold value (i.e., 1), the second count value of g2 is incremented by 1.
[0067] For P3, since the quotient of the division is 3, P3 belongs to g3. But since the remainder of the division is 2 which is not less than or equal to the threshold value and is not greater than or equal to (the node size - the threshold value = 4 - 1 = 3), P4 is not counted for the second count value of any group.
[0068] For P4, since the quotient of the division is 4, P4 belongs to g4. Also, since the remainder of the division is 1 which is less than equal to the threshold value (i.e., 1), the second count value of g3 is incremented by 1.
[0069] Note that even though FIG. 3 shows that the steps s304 and s308 are separate steps, in some embodiments, they may correspond to the same step. For example, in some embodiments, the steps s304 and s308 may be performed simultaneously.
[0070] The table below shows example of the first count values (n) and the second count values (s) associated with the groups.
[0071] After obtaining the first and second count values of the groups, the process 300 may proceed to step s310. The step s310 comprises determining a score for the point data in the X-direction (a.k.a., “X-direction score”). The X-direction score of the point cloud may be determined as follows.
[0072] First, nO is compared to a threshold value (e.g., the maximum allowed point count of a slice). Note that the step of obtaining the threshold value is not shown in FIG. 3. If nO is less than the threshold value, then a sum of nO and nl is compared to the threshold value. If the sum of nO and nl is less than the threshold value, then a sum nO, nl, and n2 is compared to the threshold value. If the sum of nO, nl, and n2 is less than the threshold value, then a sum of nO, nl, n2, and n3 is compared to the threshold value. This process is repeated until the sum of no through nmbecomes greater than the threshold value. Once the sum of no through nmbecomes greater than the threshold value, the second count value of nm-i (i.e.,is set as the initial X-direction score.
[0073] Then, nmis compared to the threshold value. If nmis less than the threshold value, then a sum of nmand nm+i is compared to the threshold value. This process is repeated until the sum of nmthrough nnbecomes greater than the threshold value. Once the sum of nmthrough nnbecomes greater than the threshold value, the second count value of nn-i is added to the current X-direction score. The above process may be repeated until the process reaches npwhere p is the number of node groups in the point cloud. Then the current X-direction score at the time the process ends is the final X-direction score.
[0074] For example, let’s assume that the threshold value is 100. Then, first, nO is compared to 100. Since nO (which is 23) is less than 100, then the sum of nO and nl is compared to 100. Since nO + nl (which is 35) is less than 100, then the sum of nO, nl, and n2 is compared to 100. Since nO + nl + n2 (which is 68) is less than 100, then the sum of nO, nl, n2, and n3 is compared to 100. Since nO + nl + n2 + n3 (which is 102) is greater than 100, s2 (corresponding to n2) is set as the initial X-direction score. Thus, the initial X-direction score is 7. Then, n3 is compared to 100. Since n3 (which is 34) is less than 100, the sum of n3, n4 (which is 65) is compared to 100. Since the sum of n3 and n4 is less than 100, then the sum of n3, n4, and n5 (which is 88) is compared to 100. Since the sum of n3, n4, and n5 is less than 100, then the sum of n3, n4, n5, and n6 (which is 122) is compared to 100. Since the sum of n3, n4, n5, and n6 is greater than 100, s5 (corresponding to n5) is now added to the current X- direction score. Thus, the updated current X-direction score is 10.
[0075] Referring back to FIG. 3, while or after determining the final X-direction score in the step s310, the steps 304-310 may be performed for each of the Y-coordinate values and the Z-coordinate values of the points, thereby determining the final Y-direction score and the final Z-direction scores. Then, in step s312, the final X-direction score, the final Y-direction score, and the final Z-direction score may be compared to each other and the lowest one among the three final direction scores is selected.
[0076] Then, in step s314, the point cloud is sliced along the direction corresponding to the lowest direction score. For example, in case, the final X-direction score > the final Y- direction score > the final Z-direction score, in the step s314, the point cloud may be sliced along the Z-direction.
[0077] FIG. 4A is a visual representation of the process 300 shown in FIG. 3. In the step s304, the X-coordinate value of each point (the small black circle) included in a bounding box 400 is divided by the node size, and in the step s304, the number of points in each node group 402, 404, 406, ... , 418, and 420 is determined. In the step s306, for each node group, the number of points in the group, which are near the boundary of the group are determined. In other words, in the step s306, the number of points in each region 452, 454, 456, ... , 468, and 470 is determined. Then, in the step s308, it is determined whether the points in any of the regions 452, 454, 456, ... , 468, and 470 is in a potential slice boundary region (e.g., 456, 470),and in case they are, the number of points in such region is added to the X-direction score. This process is repeated for all node groups, thereby generating the final X-direction score.
[0078] The concept here is finding the total number of points that are near any potential slice boundary when the point cloud is split in each of the X-direction, the Y-direction, and the Z-direction. Then the total number of points for the X-direction, the Y -direction, and the Z- direction are compared, and the direction that produces the lowest number of points is selected as the splitting direction. The goal here is finding the splitting direction that results in the minimum number of points at the slice boundaries.
[0079] The embodiments above may be implemented using all or a subset of the following steps for deriving an array Nd (i.e. , one of the two columns / rows of the above disclosed matrix) and Sd (i.e., another one of the two columns / rows of the above disclosed matrix) for each dimension of the slice.
[0080] As explained above, in the step s310 of the process 300, each of the X-direction score, the Y -direction score, and the Z-direction score is calculated by summing up the number of points near each potential split boundary (e.g., in FIG. 4A, by summing up the number of points in the potential split boundary regions 456 and 470). But, in some embodiments, each of the X-direction score, the Y-direction score, and the Z-direction score may be determined by selecting the lowest number of points from among the number of points near a plurality of split boundaries (SBs).
[0081] For example, FIGS. 5C-5E shows three SBs 502, 504, and 506. Each of the SBs 502, 504, and 506 would split point cloud 500 such that a number of points included in each of slices 512 and 514 does not exceed a threshold value (Nth). In these embodiments, a score for each SB 502, 504, and 506 (e.g., a number of points that are determined to be close to each SB502, 504, and 506) is calculated. Note that the SBs 502, 504, and 506 are arranged along the same dimension (i.e., X-direction).
[0082] Then, among the scores of the SBs 502, 504, and 506, the lowest score is determined, and the SB having the lowest score (e.g., SB 504) is selected as the boundary to use for splitting the point cloud in that direction. This means that more than one score for one direction is derived, wherein the scores are the results for different possible SBs in that direction such that the threshold is never exceeded. This may be done in multiple directions and the SB with the lowest score among all scores is selected. Note that an SB specifies both the dimension (direction) of the splitting as well as the split boundaries. Thus, selecting the SB having the lowest score comprises selecting the dimension to split the point cloud.
[0083] These embodiments significantly improve the compression performance for certain concave shapes. For example, let’s assume that a slice containing 100 points forms a non-symmetric hourglass shape, and the max number of points allowed in a slice is 90. FIG. 5A shows an example of a non-symmetric hourglass shape. The dashed line in FIG. 5A represents the bounding box. Here it is assumed that the point density is roughly even within the hourglass shape and that there are no points outside the shape.
[0084] Since the number of points included in the slice is greater than the max number of allowed points, the slice need to be split into 2 slices. However, since each of these slices can contain any number of points between 10 and 90 points, it is likely that there are multiple sets of valid splits (i.e., the splits allowing that the number of points in each resulting slice does not exceed the maximum number), as illustrated in FIGS. 5C-5E. In FIGS. 5C-5E, it is obvious that the middle split 504 will be the most efficient one since barely any duplicate vertices of the slices 512 and 514 will be signaled in the bitstream.
[0085] Accordingly, in the embodiments described above, all valid splits are identified for all directions (e.g., X, Y, and Z directions) and, then for each direction, a score of each SB is determined and the SB having the lowest score is selected to represent the direction. Then, the dimension having the lowest score is selected, and the slice is split along the selected dimension.
[0086] In some embodiments, instead of determining a score of each of a plurality of SBs associated with all valid splits, only scores of some SBs associated with some valid splits may be determined, and, from among these SBs, the SB having the lowest score may be selected to represent the direction.
[0087] FIG. 5B shows a cylindrical structure that provides another exemplary point cloud of which encoding can be improved using the above embodiments. FIGS. 6A-6C shows a slice in a point cloud, which includes points forming the cylindrical structure of FIG. 5B. More specifically, in FIGS. 6A-6C, the cylindrical structure is split into 3 slices from 3 different direction and the points that are within the distance of 1 unit from slice boundaries 602-612 are extracted.
[0088] Let’s assume that the number of points that are adjacent to a slice boundary is proportional to the number of duplicate trisoup vertices that will be generated on these slice boundaries. Then one can use this result to determine the optimal split direction for this slice. Here, the score is simply the number of points that are within a certain distance from the slice boundaries created by a given split. In FIGS. 6A-6C, the score for splitting the slice in the x- direction is 14 (i.e., the number of points at the boundaries 602 and 604), the score for splitting the slice along the y direction is 24 (i.e., the number of points at the boundaries 606 and 608) and the score for splitting the slice along the z-direction is 27 (i.e., the number of points at the boundaries 610 and 612). Then, since the x-direction has the lowest score, x-direction would be selected as the direction for splitting the slice for encoding the point cloud.
[0089] Note that it is not required to use the threshold of 1 length unit to calculate the score. Rather, the threshold can be an arbitrary number. However, simulations have showed that increasing this threshold have close to zero impact on the results.
[0090] FIG. 10 shows a process 1000 for use in encoding a point cloud, according to some embodiments. The process 1000 may begin with step si 002. The step si 002 comprises, for each boundary included in a first set of boundaries arranged along a first direction, determining a first value (the s-value) which indicates a number of points in the point cloud that are within a distance from the boundary. The step si 004 comprises, based on at least one of the first values determined for the first set of boundaries, determining a second value which indicates a number of points in the point cloud that are within the distance from any boundary included in a first sub-set of boundaries arranged along the first direction. The first sub-set of boundaries is a subset of the first set of boundaries. The step si 006 comprises, based on the second value, selecting a split direction from a set of candidate split directions that includes the first direction.
[0091] In some embodiments, the process 1000 comprises encoding the point cloud using a plurality of slices resulting from splitting the point cloud in the selected split direction.
[0092] In some embodiments, the process 1000 comprises, for each boundary included in a second set of boundaries arranged along a second direction, determining a third value which indicates a number of points in the point cloud that are within the distance from the boundary; and based on at least one of the third values determined for the second set of boundaries, determining a fourth value which indicates a number of points in the point cloud that are within the distance from any boundary included in a second sub-set of boundaries arranged along the second direction. The second sub-set of boundaries is a subset of the second set of boundaries. The set of candidate split directions includes the second direction, the second direction is perpendicular to the first direction, and the split direction is selected from the set of candidate split directions based on the fourth value.
[0093] In some embodiments, for each boundary (B) included in the first set of boundaries arranged along the first direction, determining the first value comprises: determining a boundary value (e.g., the division value or the remainder of the division value) of a point based on a coordinate of the point and a node size which indicates a size of a node, wherein the coordinate of the point is a coordinate value of the point in a dimension of the first direction; based on the boundary value of the point, determining whether the point is within the distance from the boundary (B); and based on determining that the point is within the distance from the boundary (B), incrementing the first value of the boundary (B).
[0094] In some embodiments, the boundary value is determined based on the coordinate value of the point in the dimension of the first direction , , , ,- the size of a node and / or the remainder ol the coordinate value of the point in the dimension of the first direction the size of a node
[0095] In some embodiments, determining whether the point is within the distance from the boundary based on the boundary value of the point comprises: determining (1) whether the boundary value is less than or equal to a first set value (e.g., the threshold value or the threshold value - 1) and / or (2) whether the boundary value is greater than or equal to a second set value; and based on determining that the boundary value is less than or equal to the first set value and / or determining that the boundary value is greater than or equal to the second set value, determining that the point is within the distance from the boundary.
[0096] In some embodiments, the first set value is determined based on a predefined value and the second set value is determined based on the predefined value and the size of a node.
[0097] In some embodiments, the first set value is equal to the predefined value or (the predefined value - 1), and the second set value is equal to (the size of a node - the predefined value).
[0098] In some embodiments, based on determining that the point is within the distance from the boundary, incrementing the first value of the boundary.
[0099] In some embodiments, the first set of boundaries comprises a plurality of boundaries arranged in a sequence, based on determining that the boundary value is less than or equal to the first set value, incrementing the first value of a boundary that is immediately before the boundary.
[0100] In some embodiments, the process 1000 comprises comparing the second value to the fourth value; and determining that the second value is smaller than the fourth value. Selecting the split direction from the set of candidate split directions comprises selecting the second direction based on the determination that the second value is smaller than the fourth value.
[0101] In some embodiments, the process 1000 comprises, for each boundary included in a third set of boundaries arranged along a third direction, determining a fifth value which indicates a number of points in the point cloud that are within the distance from the boundary; and based on at least one of the fifth values determined for the third set of boundaries, determining a sixth value which indicates a number of points in the point cloud that are within the distance from any boundary included in a third sub-set of boundaries arranged along the third direction, wherein the third sub-set of boundaries is a subset of the third set of boundaries. The set of candidate split directions includes the third direction, the third direction is perpendicular to the first and second directions, and the split direction is selected from the set of candidate split directions based on the sixth value.
[0102] In some embodiments, the process 1000 comprises comparing the sixth value to the second value and the fourth value; and determining that the second value is smaller than the fourth value and the sixth value, wherein selecting the split direction from the set of candidate split directions comprises selecting the second direction based on the determination that the second value is smaller than the fourth value and the sixth value.
[0103] In some embodiments, the process 1000 comprises obtaining point cloud data which indicates coordinates of points included in the point cloud, wherein the coordinates ofthe points in the point cloud are defined in the first direction, and for each node group included in a plurality of node groups, determining a count value (n-value) associated with the node group based on one or more of the coordinates of the points in the point cloud. The first subset of boundaries is determined based on the count values associated with the plurality of node groups.
[0104] In some embodiments, determining, for each node group included in the plurality of node groups, the count value associated with the node group comprises: for each point included in the point cloud, determining an index value (e.g.,I the X -coordinate value of the point k , , , , , L - the node size J ) of the point based on the coordinate of the point and a node size which indicates a size of a node; based on the index value, determining to which node group the point belongs; and as a result of determining that the point belongs to a certain node group, incrementing the count value of the certain node group. The coordinate of the point is a coordinate value of the point in a dimension of the first direction.
[0105] In some embodiments, for each point included in the point cloud, the index value of the point is determined by dividing the coordinate of the point by the node size.
[0106] In some embodiments, each boundary included in the first set of boundaries is a boundary of each node group included in the plurality of node groups. The process 1000 comprises generating a first summed value by summing up the count values (the n-values) associated with first through N-th node groups included in the plurality of node groups, wherein N is an integer that is greater than or equal to 2, comparing the first summed value to a predefined value (e.g., the maximum number of points that can be included in a slice); in case the first summed value is greater than the predefined value, a boundary of the N-lth node group is set to be a boundary included in the first subset of boundaries; and in case the first summed value is not greater than the predefined value, adding the count value associated with N-th node group to the first summed value.
[0107] In some embodiments, the process 1100 comprises determining that the first summed value is greater than the predefined value; based on the above determination, setting the first value (e.g., s3) determined for the boundary of the N-l th node group as a slice boundary count value (e.g., score). The second value is determined based on the slice boundary count value.
[0108] In some embodiments, the process 1100 comprises generating a second summed value by summing up the count values associated with N-th through M-th node groups (e.g., summing up n4, n5, n6, and n7) included in the plurality of node groups, wherein M is an integer that is greater than N+l, comparing the second summed value to the predefined value; in case the second summed value is greater than the predefined value, a boundary of the M-lth node group is set to be a boundary included in the first subset of boundaries; and in case the second summed value is not greater than the predefined value, adjusting the second summed value to include the count value associated with M-th node group.
[0109] In some embodiments, the process 1100 comprises determining that the second summed value is greater than the predefined value; based on the above determination, adding the first value (e.g., s7) determined for the boundary of the M-l th node group to the slice boundary count value (e.g., score), thereby generating an updated slice boundary count value. The second value is determined based on the updated slice boundary count value.
[0110] In some embodiments, the point cloud is a 2D point cloud, a node is a rectangular area of the point cloud, and a boundary is a line that partitions the point cloud into two parts wherein the line coincides with a side of a node.
[0111] In some embodiments, the point cloud is a 3D point cloud, a node is a cuboid space of the point cloud, and a boundary is a plane that partitions the point cloud into two parts where the line coincides with a face of a node.
[0112] FIG. 11 is a block diagram of an apparatus 1100 for implementing the computing device 190, according to some embodiments. As shown in FIG. 11, the apparatus 1100 may comprise: processing circuitry (PC) 1102, which may include one or more processors (P) 1155 (e.g., one or more general purpose microprocessors and / or one or more other processors, such as an application specific integrated circuit (ASIC), field-programmable gate arrays (FPGAs), and the like), which processors may be co-located in a single housing or in a single data center or may be geographically distributed (e.g., the apparatus 1100 may be a distributed computing apparatus comprising two or more computers or a monolithic computing apparatus consisting of a single computer); at least one network interface 1148 (e.g., a physical interface or air interface) comprising a transmitter (Tx) 1145 and a receiver (Rx) 1147 for enabling the apparatus 1100 to transmit data to and receive data from other nodes connected to network 110 (e.g., an Internet Protocol (IP) network) to which network interface 1148 is connected (physically or wirelessly) (e.g., network interface 1148 may be coupled to an antennaarrangement comprising one or more antennas for enabling the apparatus 1100 to wirelessly transmit / receive data); and a storage unit (a.k.a., “data storage system”) 1108, which may include one or more non-volatile storage devices and / or one or more volatile storage devices. In embodiments where PC 1102 includes a programmable processor, a computer readable storage medium (CRSM) 1142 may be provided. CRSM 1142 may store a computer program (CP) 1143 comprising computer readable instructions (CRI) 1144. CRSM 1142 may be a non- transitory computer readable medium, such as, magnetic media (e.g., a hard disk), optical media, memory devices (e.g., random access memory, flash memory), and the like. In some embodiments, the CRI 1144 of computer program 1143 is configured such that when executed by PC 1102, the CRI causes the apparatus 1100 to perform steps described herein (e.g., steps described herein with reference to the flow charts). In other embodiments, the apparatus 1100 may be configured to perform steps described herein without the need for code. That is, for example, PC 1102 may consist merely of one or more ASICs. Hence, the features of the embodiments described herein may be implemented in hardware and / or software.
[0113] Summary of EmbodimentsAl. A method (1000) for use in encoding a point cloud, the method comprising: for each boundary included in a first set of boundaries arranged along a first direction, determining (si 002) a first value (the s-value) which indicates a number of points in the point cloud that are within a distance from the boundary; based on at least one of the first values determined for the first set of boundaries, determining (si 004) a second value which indicates a number of points in the point cloud that are within the distance from any boundary included in a first sub-set of boundaries arranged along the first direction, wherein the first sub-set of boundaries is a subset of the first set of boundaries; and based on the second value, selecting (si 006) a split direction from a set of candidate split directions that includes the first direction.A2. The method of embodiment Al, the method comprising: encoding the point cloud using a plurality of slices resulting from splitting the point cloud in the selected split direction.A3. The method of embodiment Al or A2, the method comprising:for each boundary included in a second set of boundaries arranged along a second direction, determining a third value which indicates a number of points in the point cloud that are within the distance from the boundary; and based on at least one of the third values determined for the second set of boundaries, determining a fourth value which indicates a number of points in the point cloud that are within the distance from any boundary included in a second sub-set of boundaries arranged along the second direction, wherein the second sub-set of boundaries is a subset of the second set of boundaries, wherein the set of candidate split directions includes the second direction, the second direction is perpendicular to the first direction, and the split direction is selected from the set of candidate split directions based on the fourth value.A4. The method of any one of embodiments Al -A3, wherein, for each boundary (B) included in the first set of boundaries arranged along the first direction, determining the first value comprises: determining a boundary value (e.g., the division value or the remainder of the division value) of a point based on a coordinate of the point and a node size which indicates a size of a node, wherein the coordinate of the point is a coordinate value of the point in a dimension of the first direction; based on the boundary value of the point, determining whether the point is within the distance from the boundary (B); and based on determining that the point is within the distance from the boundary (B), incrementing the first value of the boundary (B).A5. The method of embodiment A4, wherein the boundary value is determined based the coordinate value of the point in the dimension of the first direction , , , • , on - and / or the remainder of the size of a node the coordinate value of the point in the dimension of the first direction the size of a nodeA6. The method of embodiment A4 or A5, wherein determining whether the point is within the distance from the boundary based on the boundary value of the point comprises:determining (1) whether the boundary value is less than or equal to a first set value (e.g., the threshold value or the threshold value - 1) and / or (2) whether the boundary value is greater than or equal to a second set value; and based on determining that the boundary value is less than or equal to the first set value and / or determining that the boundary value is greater than or equal to the second set value, determining that the point is within the distance from the boundary.A7. The method of embodiment A6, wherein the first set value is determined based on a predefined value and the second set value is determined based on the predefined value and the size of a node.A8. The method of embodiment A7, wherein the first set value is equal to the predefined value or (the predefined value - 1), and the second set value is equal to (the size of a node - the predefined value).A9. The method of any of embodiments A6-A8, the method comprising: based on determining that the point is within the distance from the boundary, incrementing the first value of the boundary.A10. The method of any one of embodiments A6-A9, wherein the first set of boundaries comprises a plurality of boundaries arranged in a sequence, and based on determining that the boundary value is less than or equal to the first set value, incrementing the first value of a boundary that is immediately before the boundary.All. The method of any one of embodiments A3-A10, the method comprising: comparing the second value to the fourth value; and determining that the second value is smaller than the fourth value, wherein selecting the split direction from the set of candidate split directions comprises selecting the second direction based on the determination that the second value is smaller than the fourth value.A12. The method of any one of embodiments A3-A11, the method comprising:for each boundary included in a third set of boundaries arranged along a third direction, determining a fifth value which indicates a number of points in the point cloud that are within the distance from the boundary; and based on at least one of the fifth values determined for the third set of boundaries, determining a sixth value which indicates a number of points in the point cloud that are within the distance from any boundary included in a third sub-set of boundaries arranged along the third direction, wherein the third sub-set of boundaries is a subset of the third set of boundaries, wherein the set of candidate split directions includes the third direction, the third direction is perpendicular to the first and second directions, and the split direction is selected from the set of candidate split directions based on the sixth value.A13. The method of embodiment A12 when embodiment A12 depends on embodiment Al 1 , the method comprising: comparing the sixth value to the second value and the fourth value; and determining that the second value is smaller than the fourth value and the sixth value, wherein selecting the split direction from the set of candidate split directions comprises selecting the second direction based on the determination that the second value is smaller than the fourth value and the sixth value.A14. The method of any one of embodiments A1-A13, the method comprising: obtaining point cloud data which indicates coordinates of points included in the point cloud, wherein the coordinates of the points in the point cloud are defined in the first direction; and for each node group included in a plurality of node groups, determining a count value (n-value) associated with the node group based on one or more of the coordinates of the points in the point cloud, wherein the first sub-set of boundaries is determined based on the count values associated with the plurality of node groups.A15. The method of embodiment A14, wherein determining, for each node group included in the plurality of node groups, the count value associated with the node group comprises: for each point included in the point cloud,, , . . . , , , \ the X-coordinate value of the point k determining an index value (e.g., - ) ofL the node size J the point based on the coordinate of the point and a node size which indicates a size of a node; based on the index value, determining to which node group the point belongs; and as a result of determining that the point belongs to a certain node group, incrementing the count value of the certain node group, wherein the coordinate of the point is a coordinate value of the point in a dimension of the first direction.A16. The method of embodiment A15, wherein, for each point included in the point cloud, the index value of the point is determined by dividing the coordinate of the point by the node size.A17. The method of any one of embodiments A14-A16, wherein each boundary included in the first set of boundaries is a boundary of each node group included in the plurality of node groups, and the method comprises: generating a first summed value by summing up the count values (the n-values) associated with first through N-th node groups included in the plurality of node groups, wherein N is an integer that is greater than or equal to 2; comparing the first summed value to a predefined value (e.g., the maximum number of points that can be included in a slice); in case the first summed value is greater than the predefined value, a boundary of the N-lth node group is set to be a boundary included in the first subset of boundaries; and in case the first summed value is not greater than the predefined value, adding the count value associated with N-th node group to the first summedvalue.A18. The method of embodiment A17, the method comprising: determining that the first summed value is greater than the predefined value; and based on the above determination, setting the first value (e.g., s3) determined for the boundary of the N-l th node group as a slice boundary count value (e.g., score), wherein the second value is determined based on the slice boundary count value.Al 9. The method of embodiment Al 8, the method comprising: generating a second summed value by summing up the count values associated with N-th through M-th node groups (e.g., summing up n4, n5, n6, and n7) included in the plurality of node groups, wherein M is an integer that is greater than N+l; comparing the second summed value to the predefined value; in case the second summed value is greater than the predefined value, a boundary of the M-lth node group is set to be a boundary included in the first subset of boundaries; and in case the second summed value is not greater than the predefined value, adjusting the second summed value to include the count value associated with M-th node group.A20. The method of embodiment Al 9, the method comprising: determining that the second summed value is greater than the predefined value; and based on the above determination, adding the first value (e.g., s7) determined for the boundary of the M-l th node group to the slice boundary count value (e.g., score), thereby generating an updated slice boundary count value, wherein the second value is determined based on the updated slice boundary count value.A21. The method of any one of embodiments A1-A20, wherein the point cloud is a 2D point cloud, a node is a rectangular area of the point cloud, and a boundary is a line that partitions the point cloud into two parts wherein the line coincides with a side of a node.A22. The method of any one of embodiments A1-A20, wherein the point cloud is a 3D point cloud, a node is a cuboid space of the point cloud, and a boundary is a plane that partitions the point cloud into two parts where the line coincides with a face of a node.Bl . A computer program (1143) comprising instructions (1144) which when executed by processing circuitry (1102) cause the processing circuitry (1102) to perform the method of any one of embodiments A1-A22.B2. A carrier containing the computer program of embodiment Bl, wherein the carrier is one of an electronic signal, an optical signal, a radio signal, and a computer readable storage medium (1142).Cl. An apparatus (1100) for use in encoding a point cloud, the apparatus being configured to: for each boundary included in a first set of boundaries arranged along a first direction, determine (si 002) a first value (the s-value) which indicates a number of points in the point cloud that are within a distance from the boundary; based on at least one of the first values determined for the first set of boundaries, determine (si 004) a second value which indicates a number of points in the point cloud that are within the distance from any boundary included in a first sub-set of boundaries arranged along the first direction, wherein the first sub-set of boundaries is a subset of the first set of boundaries; and based on the second value, select (si 006) a split direction from a set of candidate split directions that includes the first direction.C2. The apparatus of embodiment Cl, wherein the apparatus is configured to perform the method of any one of embodiments A2-A22.DI. An apparatus (1100) comprising: a memory (1142); and processing circuitry (1102) coupled to the memory (1142), wherein the apparatus (1100) is configured to perform the method of any one of embodiments A1-A22.
[0114] While various embodiments are described herein, it should be understood that they have been presented by way of example only, and not limitation. Thus, the breadth and scope of this disclosure should not be limited by any of the above-described exemplary embodiments. Moreover, any combination of the above-described elements in all possiblevariations thereof is encompassed by the disclosure unless otherwise indicated herein or otherwise clearly contradicted by context.
[0115] As used herein “a” means “at least one” or “one or more.” Additionally, while the processes described above and illustrated in the drawings are shown as a sequence of steps, this was done solely for the sake of illustration. Accordingly, it is contemplated that some steps may be added, some steps may be omitted, the order of the steps may be re-arranged, and some steps may be performed in parallel. Also, as used herein, “based on” means “based at least on” or “based solely on.”
[0116] References
Claims
CLAIMS1. A method (1000) for use in encoding a point cloud, the method comprising: for each boundary included in a first set of boundaries arranged along a first direction, determining (si 002) a first value (the s-value) which indicates a number of points in the point cloud that are within a distance from the boundary; based on at least one of the first values determined for the first set of boundaries, determining (si 004) a second value which indicates a number of points in the point cloud that are within the distance from any boundary included in a first sub-set of boundaries arranged along the first direction, wherein the first sub-set of boundaries is a subset of the first set of boundaries; and based on the second value, selecting (si 006) a split direction from a set of candidate split directions that includes the first direction.
2. The method of claim 1, the method comprising: encoding the point cloud using a plurality of slices resulting from splitting the point cloud in the selected split direction.
3. The method of claim 1 or 2, the method comprising: for each boundary included in a second set of boundaries arranged along a second direction, determining a third value which indicates a number of points in the point cloud that are within the distance from the boundary; and based on at least one of the third values determined for the second set of boundaries, determining a fourth value which indicates a number of points in the point cloud that are within the distance from any boundary included in a second sub-set of boundaries arranged along the second direction, wherein the second sub-set of boundaries is a subset of the second set of boundaries, wherein the set of candidate split directions includes the second direction, the second direction is perpendicular to the first direction, and the split direction is selected from the set of candidate split directions based on the fourth value.
4. The method of any one of claims 1-3, wherein, for each boundary (B) included in the first set of boundaries arranged along the first direction, determining the first value comprises: determining a boundary value of a point based on a coordinate of the point and a node size which indicates a size of a node, wherein the coordinate of the point is a coordinate value of the point in a dimension of the first direction; based on the boundary value of the point, determining whether the point is within the distance from the boundary (B); and based on determining that the point is within the distance from the boundary (B), incrementing the first value of the boundary (B).
5. The method of claim 4, wherein the boundary value is determined based on the coordinate value of the point in the dimension of the first direction , , , • ,- and / or the remainder of the size of a node the coordinate value of the point in the dimension of the first direction the size of a node6. The method of claim 4 or 5, wherein determining whether the point is within the distance from the boundary based on the boundary value of the point comprises: determining (1) whether the boundary value is less than or equal to a first set value and / or (2) whether the boundary value is greater than or equal to a second set value; and based on determining that the boundary value is less than or equal to the first set value and / or determining that the boundary value is greater than or equal to the second set value, determining that the point is within the distance from the boundary.
7. The method of claim 6, wherein the first set value is determined based on a predefined value and the second set value is determined based on the predefined value and the size of a node.
8. The method of claim 7, wherein the first set value is equal to the predefined value or (the predefined value - 1), and the second set value is equal to (the size of a node - the predefined value).
9. The method of any of claims 6-8, the method comprising:based on determining that the point is within the distance from the boundary, incrementing the first value of the boundary.
10. The method of any one of claims 6-9, wherein the first set of boundaries comprises a plurality of boundaries arranged in a sequence, and based on determining that the boundary value is less than or equal to the first set value, incrementing the first value of a boundary that is immediately before the boundary.
11. The method of any one of claims 3-10, the method comprising: comparing the second value to the fourth value; and determining that the second value is smaller than the fourth value, wherein selecting the split direction from the set of candidate split directions comprises selecting the second direction based on the determination that the second value is smaller than the fourth value.
12. The method of any one of claims 3-11, the method comprising: for each boundary included in a third set of boundaries arranged along a third direction, determining a fifth value which indicates a number of points in the point cloud that are within the distance from the boundary; and based on at least one of the fifth values determined for the third set of boundaries, determining a sixth value which indicates a number of points in the point cloud that are within the distance from any boundary included in a third sub-set of boundaries arranged along the third direction, wherein the third sub-set of boundaries is a subset of the third set of boundaries, wherein the set of candidate split directions includes the third direction, the third direction is perpendicular to the first and second directions, and the split direction is selected from the set of candidate split directions based on the sixth value.
13. The method of claim 12 when claim 12 depends on claim 11, the method comprising: comparing the sixth value to the second value and the fourth value; anddetermining that the second value is smaller than the fourth value and the sixth value, wherein selecting the split direction from the set of candidate split directions comprises selecting the second direction based on the determination that the second value is smaller than the fourth value and the sixth value.
14. The method of any one of claims 1-13, the method comprising: obtaining point cloud data which indicates coordinates of points included in the point cloud, wherein the coordinates of the points in the point cloud are defined in the first direction; and for each node group included in a plurality of node groups, determining a count value (n-value) associated with the node group based on one or more of the coordinates of the points in the point cloud, wherein the first sub-set of boundaries is determined based on the count values associated with the plurality of node groups.
15. The method of claim 14, wherein determining, for each node group included in the plurality of node groups, the count value associated with the node group comprises: for each point included in the point cloud, determining an index value of the point based on the coordinate of the point and a node size which indicates a size of a node; based on the index value, determining to which node group the point belongs; and as a result of determining that the point belongs to a certain node group, incrementing the count value of the certain node group, wherein the coordinate of the point is a coordinate value of the point in a dimension of the first direction.
16. The method of claim 15, wherein, for each point included in the point cloud, the index value of the point is determined by dividing the coordinate of the point by the node size.
17. The method of any one of claims 14-16, whereineach boundary included in the first set of boundaries is a boundary of each node group included in the plurality of node groups, and the method comprises: generating a first summed value by summing up the count values (the n-values) associated with first through N-th node groups included in the plurality of node groups, wherein N is an integer that is greater than or equal to 2; comparing the first summed value to a predefined value; in case the first summed value is greater than the predefined value, a boundary of the N-lth node group is set to be a boundary included in the first subset of boundaries; and in case the first summed value is not greater than the predefined value, adding the count value associated with N-th node group to the first summed value.
18. The method of claim 17, the method comprising: determining that the first summed value is greater than the predefined value; and based on the above determination, setting the first value determined for the boundary of the N-l th node group as a slice boundary count value, wherein the second value is determined based on the slice boundary count value.
19. The method of claim 18, the method comprising: generating a second summed value by summing up the count values associated with N-th through M-th node groups included in the plurality of node groups, wherein M is an integer that is greater than N+l; comparing the second summed value to the predefined value; in case the second summed value is greater than the predefined value, a boundary of the M-lth node group is set to be a boundary included in the first subset of boundaries; and in case the second summed value is not greater than the predefined value, adjusting the second summed value to include the count value associated with M-th node group.
20. The method of claim 19, the method comprising: determining that the second summed value is greater than the predefined value; andbased on the above determination, adding the first value determined for the boundary of the M-l th node group to the slice boundary count value, thereby generating an updated slice boundary count value, wherein the second value is determined based on the updated slice boundary count value.
21. The method of any one of claims 1-20, wherein the point cloud is a 2D point cloud, a node is a rectangular area of the point cloud, and a boundary is a line that partitions the point cloud into two parts wherein the line coincides with a side of a node.
22. The method of any one of claims 1-20, wherein the point cloud is a 3D point cloud, a node is a cuboid space of the point cloud, and a boundary is a plane that partitions the point cloud into two parts where the line coincides with a face of a node.
23. A computer program (1143) comprising instructions (1144) which when executed by processing circuitry (1102) cause the processing circuitry (1102) to perform the method of any one of claims 1-22.
24. A carrier containing the computer program of claim 23, wherein the carrier is one of an electronic signal, an optical signal, a radio signal, and a computer readable storage medium (1142).
25. An apparatus (1100) for use in encoding a point cloud, the apparatus being configured to: for each boundary included in a first set of boundaries arranged along a first direction, determine (si 002) a first value (the s-value) which indicates a number of points in the point cloud that are within a distance from the boundary; based on at least one of the first values determined for the first set of boundaries, determine (si 004) a second value which indicates a number of points in the point cloud that are within the distance from any boundary included in a first sub-set of boundaries arranged along the first direction, wherein the first sub-set of boundaries is a subset of the first set of boundaries; and based on the second value, select (si 006) a split direction from a set of candidate split directions that includes the first direction.
26. The apparatus of claim 25, wherein the apparatus is configured to perform the method of any one of claims 2-22.
27. An apparatus (1100) comprising: a memory (1142); and processing circuitry (1102) coupled to the memory (1142), wherein the apparatus (1100) is configured to perform the method of any one of claims 1-22.
Citation Information
Patent Citations
Point cloud data transmission device, point cloud data transmission method, point cloud data reception device and point cloud data reception method
EP4002277A1
Point cloud data transmission device, point cloud data transmission method, point cloud data reception device, and point cloud data reception method
EP4407991A1
Point cloud data transmission device, point cloud data transmission method, point cloud data reception device, and point cloud data reception method
WO2023059136A1