Encoding point data representing multiple points in three-dimensional space

By partitioning 3D point clouds into overlapping slices to share necessary point data, the method ensures consistent vertex point determination across slice boundaries, addressing discontinuities and enhancing the accuracy and efficiency of 3D point cloud compression.

JP2026500583APending Publication Date: 2026-01-07TELEFONAKTIEBOLAGET LM ERICSSON (PUBL)
View PDF 1 Cites 0 Cited by

Patent Information

Application Number
JP2025539786
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Priority Date
2023-01-06
Filing Date
2024-01-05
Publication Date
2026-01-07

AI Technical Summary

Technical Problem

Current 3D point cloud compression methods, such as trie soup coding, face challenges in determining consistent vertex points across slice boundaries, leading to discontinuities in reconstructed surfaces due to incomplete point data access during encoding.

Method used

The method involves partitioning 3D point clouds into overlapping slices to ensure that each slice contains necessary point data for calculating vertex points, ensuring consistent vertex points across slice boundaries by sharing points between adjacent slices.

Benefits of technology

This approach eliminates discontinuities in reconstructed surfaces by ensuring identical vertex points are determined for adjacent slices, improving the accuracy and efficiency of 3D point cloud compression and reconstruction.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2026500583000001_ABST
    Figure 2026500583000001_ABST
Patent Text Reader

Abstract

A method for encoding point data indicative of a plurality of points in a three-dimensional (3D) environment is provided. The method includes obtaining point data and grouping the plurality of points into a plurality of slices, including a first slice and a second slice, where i) the first slice includes a first set of points and a second set of points, and ii) the second slice includes the first set of points and the second set of points. The method further includes encoding the point data using the plurality of slices. Encoding the point data using the plurality of slices includes, for the first slice, encoding first point data indicative of the first set of points to thereby generate a first encoding point, and encoding second point data indicative of the second set of points for the second slice to thereby generate a second encoding point, where the first encoding point is identical to the second encoding point.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] SUMMARY OF THE INVENTION Embodiments are disclosed that relate to encoding point data representing multiple points in three-dimensional (3D) space. [Background technology]

[0002] Currently, 3D reconstruction of spaces is widely used in various fields. For example, in a residential renovation, one or more cameras capable of capturing a 360-degree view may be used to capture multiple shots of a kitchen to be renovated, and the captured images may be used to reconstruct the kitchen in a 3D virtual space. The generated 3D reconstruction of the kitchen may be displayed on a screen, and a user may manipulate the displayed reconstruction to help the user visualize how the kitchen will be renovated. In the 3D virtual space, there are multiple 3D points that identify objects or structures in the 3D virtual space. In the present disclosure, the multiple 3D points are also referred to as a 3D point cloud.

[0003] A 3D point cloud is an unstructured collection of coordinates of points in 3D space, typically used to understand the geometry and scale of a scene (i.e., to represent 3D structures from the physical world). In addition to storing a set of point coordinates in 3D space, a 3D point cloud can store additional information about the 3D points. This additional information is also called attributes. Typical attributes include color information, reflectance, normal vectors, etc.

[0004] Although embodiments of the present disclosure are applicable to point clouds with attributes, for simplicity of explanation, we will focus on geometry compression without attributes (i.e., a collection of 3D points). Compression of TIFF2026500583000002.tif6170, where K is the number of points, X K is the X coordinate of the kth 3D point, and Y K is the Y coordinate of the kth 3D point, Z K is the Z coordinate of the k-th 3D point).

[0005] Typical point cloud sizes range from a few kB to several GB, which creates stress for any application that requires the storage and / or transmission of such point clouds. Therefore, efficient point cloud compression solutions are needed for all industrial applications that rely on such point clouds.

[0006] Geometry-based Point Cloud Compression (G-PCC) is a current Moving Picture Expert Group (MPEG) standard targeted at static point cloud use cases, as disclosed in Reference 1 at the end of this disclosure. It uses octree coding to compress the geometry of 3D points. Before using this method, the coordinates of each 3D point in the point cloud are quantized to integer coordinates and placed inside a volume 1502 (e.g., a cube) with dimensions D×D×D, as shown in FIG. 15A. This volume can be segmented into eight subcubes 1512 with dimensions D / 2×D / 2×D / 2. If a subcube 1512 contains at least one 3D point, the subcube 1512 is segmented into eight smaller subcubes 1522 with dimensions D / 4×D / 4×D / 4. If the smaller sub-cube 1522 contains at least one 3D point, the smaller sub-cube 1522 may be segmented into eight micro sub-cubes 1532. This segmentation process may be repeated until a sub-cube of a predetermined size (e.g., D / 16 x D / 16 x D / 16) containing a 3D point is identified. On the other hand, if the sub-cube does not contain a 3D point, the segmentation process for this sub-cube branch may end.

[0007] The above process generates a tree structure (octree) (shown in FIG. 15B) in which each node can be represented using 8 bits, with each bit indicating the occupancy status of one subcube. For example, the 8 bits 00010000 can indicate that the fourth subcube 1512 contains 3D point data, and the 8 bits 00000011 can indicate that the seventh and eighth smaller subcubes 1522 each contain a 3D point. In lossy compression, the octree is coded as predetermined levels, thereby producing a sparser reconstruction, and the corresponding sequence of 8-bit words is entropy coded.

[0008] G-PCC also includes a module called trisoup, which is described in Reference 1. The trisoup module was developed to handle surface point clouds, i.e., point clouds that are dense enough to capture surface structures. Similar to octree G-PCC, this compression module (also known as trisoup coding) uses octree coding to partition the point cloud into blocks (also known as trisoup nodes). However, when using this module, octree partitioning typically stops at a high level in the tree, resulting in large blocks. This level is predetermined and set by the user / encoder. Instead of setting a fixed depth, the user can also set the node size of the trisoup (nodeSize=2 n ,n=2,...), where the size of each node corresponds to the depth. The goal of this module is to encode the point cloud at a lower bitrate without significant loss of accuracy. Compared to octree G-PCC, the reconstructed point cloud is denser when using trisoup, which favors the distortion metrics typically used in MPEG. Summary of the Invention

[0009] In trie soup coding, the points in each trie soup node are coded into a group of vertex points that define the plane on which the point is located, or a plane close to where the point is located. More specifically, as shown in FIG. 16A, point 1602 in trie soup node 1604 can be coded into vertex point 1606 and vertex point 1608. As shown in FIG. 16A, vertex point 1606 and vertex point 1608 are located on a boundary surface between two adjacent trie soup nodes. Each vertex point on the boundary surface can be determined based on the points in the two adjacent trie soup nodes on either side of the boundary surface. For example, vertex point 1608, which is located on boundary surface 1610, can be determined based on point 1602 in trie soup node 1604 and point 1612 in trie soup node 1614.

[0010] However, trie soup coding currently presents several challenges. If two trie soup nodes (e.g., 1604 and 1614) that define a boundary surface (e.g., 1610) on which a vertex point (e.g., 1608) is located belong to the same slice (e.g., slice 1), determining the vertex point is easy because all points to be used to determine the vertex point are contained in the same slice, and the encoder can therefore access point data representing the points when processing the slice. On the other hand, if two trie soup nodes (e.g., 1614 and 1616) that define a boundary surface (e.g., 1618) on which a vertex point (e.g., 1620) is located belong to different slices (e.g., slices 1 and 2), the encoder may not have all the information (e.g., point data representing point 1612) and must determine the vertex point (e.g., 1620) when processing one of the slices (e.g., slice 2) because the slices are processed independently of each other.

[0011] For example, when determining vertex point 1620, the encoder needs point data indicating point 1612 contained in trie soup node 1614 of slice 1 and point data indicating point 1622 contained in trie soup node 1616 of slice 2. However, in processing slice 1, the encoder does not have access to point data indicating point 1622 contained in trie soup node 1616 of slice 2. Similarly, in processing slice 2, the encoder does not have access to point data indicating point 1612 contained in trie soup node 1614 of slice 1. As a result, the vertex points determined by the encoder while processing slice 1 may not be the same as the vertex points determined by the encoder while processing slice 2. For example, in processing slice 1, the encoder may determine that the vertex points of slice 1 include vertex point 1620A, but in processing slice 2, the encoder may determine that the vertex points of slice 2 include vertex point 1620B, which is different from vertex point 1620A. This difference leads to a discontinuity in the surface of the reconstructed point cloud.

[0012] Accordingly, in one aspect, a method for encoding point data indicative of a plurality of points in a three-dimensional (3D) environment is provided. The method includes obtaining point data, grouping the plurality of points into a plurality of slices including a first slice and a second slice, where i) the first slice includes a first set of points and a second set of points, and ii) the second slice includes the first set of points and the second set of points, and encoding the point data using the plurality of slices. Encoding the point data using the plurality of slices includes, for the first slice, encoding first point data indicative of the first set of points to thereby generate a first encoding point, and encoding second point data indicative of the second set of points for the second slice to thereby generate a second encoding point, wherein the first encoding point is identical to the second encoding point.

[0013] In another aspect, an apparatus is provided for encoding point data indicative of a plurality of points in a three-dimensional (3D) environment. The apparatus is configured to: acquire point data; group the plurality of points into a plurality of slices, including a first slice and a second slice, where i) the first slice includes a first set of points and a second set of points, and ii) the second slice includes the first set of points and the second set of points; and encode the point data using the plurality of slices. Encoding the point data using the plurality of slices includes, for the first slice, encoding first point data indicative of the first set of points to thereby generate a first encoding point, and encoding second point data indicative of the second set of points for the second slice to thereby generate a second encoding point, wherein the first encoding point is identical to the second encoding point.

[0014] In another aspect, there is provided a computer program comprising instructions which, when executed by a processing circuit, cause the processing circuit to perform a method according to any one of the embodiments described above.

[0015] In another aspect, there is provided a carrier containing the computer program of any of the above embodiments, the carrier being one of an electronic signal, an optical signal, a radio signal, and a computer readable storage medium.

[0016] In another aspect, an apparatus is provided for encoding point data indicative of a plurality of points in a three-dimensional (3D) environment. The apparatus is configured to: acquire point data; group the plurality of points into a plurality of slices including a first slice and a second slice, where i) the first slice includes a first set of points and a second set of points, and ii) the second slice includes the first set of points and the second set of points; and encode the point data using the plurality of slices. Encoding the point data using the plurality of slices includes, for the first slice, encoding first point data indicative of the first set of points to thereby generate a first encoding point, and encoding second point data indicative of the second set of points for the second slice to thereby generate a second encoding point, where the first encoding point is identical to the second encoding point.

[0017] In another aspect, there is provided an apparatus comprising a processing circuit and a memory containing instructions executable by the processing circuit that cause the apparatus to perform a method of any of the embodiments described above.

[0018] Some embodiments of the present disclosure ensure that for two adjacent slices, the same vertex points are obtained for encoding point data at the boundary of the two slices, so that there are no visible discontinuities between the slices in the reconstructed surface.

[0019] The accompanying drawings, which are incorporated in and form a part of this specification, illustrate various embodiments. [Brief explanation of the drawings]

[0020] [Figure 1] FIG. 1 illustrates an example scenario in which embodiments of the present disclosure can be applied. [Figure 2A] FIG. 1 illustrates an apparatus, according to some embodiments. [Figure 2B]FIG. 1 illustrates an example of a virtual reality scene. [Figure 3] FIG. 1 illustrates a process according to some embodiments. [Figure 4A] FIG. 1 illustrates a bounding box surrounding a 3D point cloud. [Figure 4B] FIG. 1 illustrates multiple slices of a bounding box. [Figure 5A] FIG. 1 illustrates a slice of a bounding box. [Figure 5B] FIG. 1 illustrates a slice of a bounding box. [Figure 6] FIG. 1 illustrates a process according to some embodiments. [Figure 7A] FIG. 1 illustrates a method for partitioning, according to some embodiments. [Figure 7B] FIG. 1 illustrates a method for partitioning, according to some embodiments. [Figure 8A] FIG. 1 illustrates a method for encoding point data according to some embodiments. [Figure 8B] FIG. 1 illustrates a method for decoding point data according to some embodiments. [Figures 9A-9F] FIG. 1 illustrates a padding process according to some embodiments. [Figure 10A] FIG. 1 illustrates a padding process according to some embodiments. [Figure 10B] FIG. 10 illustrates the results of a padding process, according to some embodiments. [Figure 11] FIG. 1 illustrates a process for determining vertex points according to some embodiments. [Figure 12A] FIG. 1 shows the original boundaries of a slice. [Figure 12B] FIG. 10 illustrates how extra vertices can be added to the bitstream apart from duplicated vertices on slice boundaries. [Figure 13] FIG. 1 illustrates a process according to some embodiments. [Figure 14]FIG. 1 illustrates an apparatus, according to some embodiments. [Figure 15A] FIG. 1 illustrates an octree coding method. [Figure 15B] FIG. 1 illustrates an octree coding method. [Figure 16A] FIG. 1 illustrates a method for calculating vertex points. [Figure 16B] FIG. 1 illustrates a method for calculating vertex points. DETAILED DESCRIPTION OF THE INVENTION

[0021] 1 illustrates an example scenario 100 in which embodiments of the present disclosure may be implemented. In scenario 100, imaging device 112 is used to capture a view of kitchen 150, which is equipped with oven 152, picture frame 154, and refrigerator 156. As shown in FIG. 1 , oven 152 is installed against a first wall 160, picture frame 154 is installed against a second wall 162, and refrigerator 156 is installed against second wall 162 and third wall 164.

[0022] The imaging device 112 includes a camera and a Light Detection and Ranging (LiDAR) sensor. The camera is set to capture a view of the kitchen 150. An example of a camera is a 360-degree camera, which can capture a 360-degree view of a real-world environment.

[0023] The LiDAR sensor is configured to collect depth values ​​of various real-world points (e.g., points 171-178) in the kitchen 150. In this case, the depth value of a particular real-world point refers to the distance between the viewpoint 158 ​​of the imaging device 112 and the particular real-world point. For example, the depth value of real-world point 173 refers to the distance 180 between point 173 and viewpoint 158. An example of viewpoint 158 ​​is the center point of the camera.

[0024] Once the camera has captured a view of kitchen 150 and the LiDAR sensor has measured depth values ​​of real-world points included in the view of kitchen 150, imaging device 112 may transmit the captured and / or measured data to a computing device 190 connected (wirelessly or via a wired connection) to imaging device 112. After receiving the data, computing device 190 may combine the data collected by the camera with the data collected by the LiDAR sensor, thereby generating three-dimensional (3D) point data indicative of a plurality of 3D points.

[0025] In some embodiments, the 3D point data indicative of the 3D points may be used to reconstruct the real-world environment captured by the imaging device 112. For example, the 3D point data indicative of the 3D points may be used to generate an extended reality (XR) (including virtual reality, mixed reality, or augmented reality) scene using the XR display 202 shown in FIG. 2A. The view 200 shown in FIG. 2B is an example of what a viewing user 204 sees through the XR display 202. The 3D point data for each 3D point may include 3D coordinates of the 3D point and / or attributes, such as color / brightness values ​​of the 3D point.

[0026] The 3D point data representing the plurality of 3D points generated by the computing device 190 may be stored in storage (e.g., included within the computing device 190). However, a typical size of the 3D point data ranges from 1 GB to several GB, and therefore, storing the 3D point data requires a significant amount of storage space.

[0027] Additionally, in some scenarios, point data of 3D points needs to be transmitted from one entity to another. For example, a homeowner wants to renovate kitchen 150, but the kitchen designer is far away from the home. In such a case, once a view of kitchen 150 is captured and point data identifying 3D points of kitchen 150 is generated by computing device 190, the point data can be transmitted from computing device 190 to XR display device 202 so that the kitchen designer can view the reconstructed 3D view of kitchen 150. However, due to the large size of the point data, transmitting the 3D point data consumes a significant amount of data bandwidth.

[0028] Therefore, there is a need to efficiently compress and decompress 3D point data representing multiple 3D points.

[0029] FIG. 3 illustrates a process 300 for compressing (i.e., encoding) 3D point data representing a set of 3D points (also known as a "3D point cloud" or "point cloud") under the MPEG Geometry-based Point Cloud Compression (G-PCC) Common Test Condition (CTC). Process 300 may begin at step s302, which includes determining a bounding box that encloses the set of 3D points. For example, in FIG. 4A, the set of 3D points forms the shape of a frog 402, and via step s302, a bounding box 404 that encloses the frog 402 is obtained. As shown in FIG. 4A, the bounding box 404 has a first dimension value 412 (e.g., width in the X direction), a second dimension value 414 (e.g., depth in the Y direction), and a third dimension value 416 (e.g., height in the Z direction).

[0030] After determining the bounding box 404, the process 300 may proceed to step s304, which includes identifying the smallest dimension value among the first dimension value 412, the second dimension value 414, and the third dimension value 416. In the example shown in FIG. 4A, the second dimension value 414 is the smallest.

[0031] After identifying the smallest dimension value, process 300 can proceed to step s306, which includes determining the cube with the smallest dimension value. For example, because second dimension value 414 is smallest, step s306 results in cube 420 having second dimension value 414 (the bottom left box of the four boxes separated by dotted lines), as shown in FIG. 4B.

[0032] After determining the cube 420, the process 300 may proceed to step s308, which includes partitioning the cube 420 into multiple slices. For example, FIG. 5A shows an XZ-plane view of the bounding box 404, where the cube 420 has been partitioned into multiple slices 452, 454, and 456. Thus, the point cloud Ω partitioned into M slices may be expressed as: It can be written as TIFF2026500583000003.tif6170, where Ω i represents the set of points in a particular slice. Thus, a point cloud Ω partitioned into M slices is given by It can be written as TIFF2026500583000004.tif6170. However, Ω i represents the set of points in a particular slice.

[0033] 6 shows a process 600 for partitioning a cube 420 into multiple slices 452, 454, and 456 according to some embodiments. Process 600 may begin at step s602, which includes determining a minimum boundary of the 3D points included in cube 420. For example, as shown in FIG. 5B, the minimum boundary of the 3D points included in cube 420 (corresponding to the shape of frog 402) is a box 470 (rectangular in the view in the xz plane) that is smaller than cube 420.

[0034] Next, in step s604, it is determined along which axis box 420 has the largest dimension. For example, in FIG. 5B, box 470's dimension along the x-axis (i.e., width) is greater than its dimension along the z-axis (i.e., height). Therefore, in step s604, the x-axis is identified. The axis determined in step s604 corresponds to the direction along which cube 420 will be partitioned (i.e., the direction along which cube 420 will be partitioned into multiple slices 452, 454, and 456 arranged along the x-axis).

[0035] After determining the direction (also known as the slice or division direction) for partitioning the cube 402, step s606 can be performed. Step s606 involves sorting the 3D points contained in the cube 402 along the x-axis. More specifically, the 3D points can be sorted so that they are arranged in order from the 3D point with the smallest x-coordinate to the 3D point with the largest x-coordinate. For example, for simplicity's sake, assume there are three 3D points p1 (x1, y1, z1), p2 (x2, y2, z2), and p3 (x3, y3, x3) in the cube 402, where x2 > x1 > x3. Then, via step s606, the 3D points are sorted in the order p3, p1, and p2.

[0036] 6, after sorting the 3D points in step s606, step s608 can be performed. Step s608 includes partitioning cube 420 into slices along the axis determined in step s604 (i.e., the x-axis) such that each slice contains a number of 3D points less than or equal to a threshold value. In this case, the threshold value indicates the maximum number of 3D points that each slice can contain. The threshold value may be a predefined value or may be set by a user.

[0037] To ensure that slices have sides that are multiples of nodeSize (making it easier to partition each slice into an octree where the full range of voxels is occupied), slice sides may be rounded up to the nearest integer that is divisible by nodeSize. This rounded-up number is called sliceSize and defines the longest possible bounding box side of the slice. These uniform cubic slices may be further divided to ensure that a certain point threshold (Nth, set to 1100000 in G-PCC CTC) is not exceeded within each slice. When an existing slice is further divided into smaller slices along a particular direction, this is called partitioning. However, partitioning does not result in cubic slices. Instead, the slice is split along its longest axis (the maxEdge of the slice).

[0038] To be clear, maxEdge is the dimension of the longest axis, not the size of the longest axis. If the points are largest in the x direction, then maxEdge is 0. If instead the points are largest in the y dimension, then maxEdge is 1, and if they are largest in the z direction, then maxEdge is 2. Thus maxEdge will always be 0, 1, or 2. If there are node boundaries, the slice is partitioned (see Figure 7B) to again ensure that the slice thickness is a multiple of nodeSize. Slices can be coded independently of each other.

[0039] 7A is a diagrammatic representation of the sorted 3D points obtained in step s606. After obtaining the sorted list of 3D points, a first slice 452 is determined that contains up to the maximum allowed number of 3D points. For example, if the threshold is 5, then a boundary 702 of the first slice 452 is determined such that the first slice 452 contains at most five 3D points. Similarly, a boundary 704 of the second slice 454 is determined such that the second slice 454 contains at most five 3D points.

[0040] If the dimensions of each of the first slice 452, second slice 454, and third slice 456 are an integer multiple of the size of a trie soup node, then each of the slices is encoded using one or more trie soup nodes, as shown in Figure 7B. For example, Figure 7 shows that three trie soup nodes 712, 714, and 716 are included in the first slice 452, and the 3D points included in each of the trie soup nodes 702, 704, and 706 can be grouped and encoded together.

[0041] 8A shows how the 3D points included in a trie soup node can be coded together. As shown in FIG. 8A, first, a point surface 802 on which the 3D points 804 (very small dots included in the surface 802) are located is determined. The point surface 802 may be a curved surface or a flat surface (depending on the distribution of the 3D points). Once the point surface 802 is determined, intersection points (also known as "vertex points") 812, 814, 816, and 818 where the point surface 802 intersects with the boundary of the trie soup node are determined. In addition, a center point 830 of the point surface 802 can be determined. The vertex points may be determined by a method described below.

[0042] Based on the number of nodes in a slice (numNodes), the number of points in the same slice (numPoints), node size (nodeSize), and distance (distanceSearchEncoder) are calculated as follows: TIFF2026500583000005.tif16170This distance represents the maximum perpendicular distance from an edge that a point must be to be considered to intersect that edge. If a point is within that distance from an edge, it can be added to the set of points that intersect with that edge. However, since an edge can only have one vertex point, the position of the vertex point can be calculated as the average position of the points that intersect with the edge.

[0043] After determining the vertex points 812, 814, 816, and 818 and the center point 830 of the point surface 802, data corresponding to the vertex points 812, 814, 816, and 820 and the center point 830 is generated and sent to a decoding entity. Upon receiving the data, the decoding entity can be configured to use the data to reconstruct the point surface 802 and use the reconstructed surface to reconstruct the 3D points of the trie soup nodes.

[0044] One method for reconstructing point surface 802 in the decoding entity is shown in Figure 8B. As shown in Figure 8B, point surface 802 can be reconstructed by using the vertex points and center points to find multiple triangular areas 852, 854, 856, and 858. For example, triangular area 852 is formed by vertex points 816 and 818 and center point 830, triangular area 854 is formed by vertex points 814 and 816 and center point 830, triangular area 856 is formed by intersection points 812 and 814 and center point 830, and triangular area 858 is formed by vertex points 812 and 818 and center point 830. When decoding the point cloud, the surface of each block is reconstructed by filling in all locations of points (called voxels) that intersect with the modeled triangles.

[0045] As described with reference to Figures 16A and 16B, to calculate vertex point 1620a for encoding point data representing point 1612 included in trie soup node 1614, both point data representing point 1612 and point data representing point 1622 are required. However, in cases where trie soup node 1614 including point 1612 and trie soup node 1616 including point 1622 do not belong to the same slice, all point data required to calculate the correct vertex point 1620a may not be available. For example, when calculating vertex point 1620a for encoding point data representing point 1612 for slice 1, point data representing point 1622 may not be available. Similarly, when calculating vertex point 1620b for encoding point data representing point 1622 for slice 2, point data representing point 1612 may not be available. In this manner, the unavailability of some point data may result in inconsistent vertex points (e.g., 1620a and 1620b) at slice boundaries.

[0046] Therefore, according to some embodiments of the present disclosure, the point cloud is divided into slices such that adjacent slices overlap each other and thereby share certain points. By configuring adjacent slices to overlap each other, each slice ensures that it contains all the point data necessary to calculate the vertex points on the boundary surface between the two adjacent slices. For example, according to some embodiments, slice 1 shown in FIG. 16B may be configured to include point data representing point 1622, and slice 2 shown in FIG. 16B may be configured to include point data representing point 1612. Then, when encoding slice 1, vertex point 1620a can be determined based on the point data representing point 1612 and the point data representing point 1622. Similarly, when encoding slice 2, vertex point 1620b can be determined based on the point data representing point 1612 and the point data representing point 1622. Since the same point data indicating the same points (i.e., 1612 and 1622) is used to determine the vertex points when encoding slice 1 and when encoding slice 2, the vertex points determined for slice 1 are the same as the vertex points determined for slice 2, thereby solving the problem of inconsistency mentioned above.

[0047] To set adjacent slices to overlap, according to some embodiments, during partitioning of the point cloud into slices, a check is made as to whether a current point belonging to the current slice falls within the extension area (also known as padding area) of an adjacent slice adjacent to the current slice. If so, this point is also added to the adjacent slice. Figures 9A-9E illustrate this concept.

[0048] 9A shows an unpartitioned point cloud, FIG. 9B shows the result of partitioning the point cloud in the x-direction without applying the above concepts, and FIG. 9C shows the result of partitioning the point cloud in the x-direction with applying the above concepts. In FIG. 9B, there is no overlapping area between slices 1 and 2. In contrast, in FIG. 9C, point 902 belonging to slice 1 is within the extended area 904 of slice 2, so point 902 is added to slice 2 (which increases the size of slice 2 so that it now overlaps with slice 1). Note that slice 1 can be increased in size in the same manner so that it overlaps with slice 2.

[0049] Similarly, Figure 9D shows the result of partitioning the point cloud in the y direction without applying the above concepts, and Figure 9E shows the result of partitioning the point cloud in the y direction with applying the above concepts. In Figure 9D, there is no overlapping area between slices 11 and 12, and there is no overlapping area between slices 21 and 22. Conversely, in Figure 9E, point 912 belonging to slice 11 is added to slice 12 because it is within the extended area 914 of slice 12. Similarly, point 922 belonging to slice 21 is added to slice 22 because it is within the extended area 924 of slice 22. Figure 9E shows the result of padding (i.e., adding slice points from adjacent slices).

[0050] According to some embodiments, the size of the extension area may be set by a user or may be set to a preset value. An example of the size of the extension area is the size of a trisoup node (i.e., nodeSize). For simplicity, nodeSize and extension area size will be used interchangeably in the remainder of this disclosure.

[0051] There are various ways to add points from a first slice that lie within the extended area of ​​a second slice adjacent to the first slice to the second slice. One way is to use the following condition: (y*sliceSize-nodeSize)≦Ω x,y [i][midEdge]<((y+1)*sliceSize+nodeSize)

[0052] In this case, y corresponds to the slice index value indicating a slice, sliceSize is a value indicating the size of the slice, nodeSize is a value indicating the size of the trie soup node, and Ω x,y [i][midEdge] is the point Ω with index i in the point cloud x,y The value indicates the coordinate (on the midEdge axis) of [i]. For example, Ω x,y [0][0] can denote the value of the x-coordinate of the point with index value 0, and Ω x,y [0][1] can denote the value of the y-coordinate of the point with index value 0, and Ω x,y [0][2] can indicate the value of the z coordinate of the point with index value 0.

[0053] If the above condition is true, points can be added to the slice. As shown in FIG. 10A, adding points using the above condition increases the size of the slice. For example, in FIG. 10A, the original boundary of slice 2 corresponds to y*sliceSize and (y+1)*sliceSize, and the updated boundary of slice 2 corresponds to y*sliceSize-nodeSize and (y+1)*sliceSize+nodeSize. Updating the boundary allows slice 2 to include additional points that can be used to calculate the correct vertex points on the slice boundary.

[0054] As explained above, the width of the extension area (also known as padding area) may be any value. However, since the current reference software only uses points that are one nodeSize away from the edge to determine vertex positions, simply setting the extension area width to be the width of the trisoup node (i.e., setting the extension area width to be "nodeSize") may be enough to improve the encoding results. At least in theory, the value of distanceSearchEncoder can be larger than the value of nodeSize, but in practice this is rare and can be ignored.

[0055] If the slice to be split contains too many points, the current software sorts the points in the slice based on the coordinate of the slice's maxEdge axis. It then loops through the points, remembering the index of the previous point that the slice can be split to align the node boundary with the slice. This is the (potentially) first point in the sequence of points with the same maxEdge coordinate, Ω x,y [i][maxEdge] is divisible by nodeSize. Instead of splitting the slice at this index, the split may be performed at the previous index where this condition was true. This will also be the start index of the next slice.

[0056] In some embodiments, slices can be padded with any number less than nodeSize. For example, if you set padding to X, where X≦nodeSize, then you can pad a slice with Ω that is divisible by nodeSize. x,y Instead of storing all points in [i][maxEdge], we use Ω x,y We can store all the first points in the sorted sequence where [i][maxEdge]+X is divisible by nodeSize.

[0057] The final partitioning of the point cloud using overlapping slices is shown in Figure 10B. This overlapping of slices has some additional impact on the reconstructed point cloud. For example, including more points in a slice affects both numNodes and numPoints. In the best possible scenario, the padding nodes have similar properties to the original nodes and therefore do not noticeably change the value of distanceSearchEncoder. However, this is not guaranteed, so in some embodiments, the original values ​​of numNodes, numPoints, and nodeSize (based on the unpadded slices) are used when calculating the value of distanceSearchEncoder.

[0058] In some rare cases, two adjacent slices may encapsulate two different parts of the point cloud with very different properties, causing the two adjacent slices to have different distanceSearchEncoder values.

[0059] For example, assume that slice 1 has a distanceSearchEncoder value of 1 and slice 2 has a distanceSearchEncoder value of 2. In this example scenario, the problem is that slice 1 uses only one layer of padding from slice 2 (i.e., uses a padding area of ​​width 1) to calculate vertex points on the boundary surface between slices 1 and 2, but slice 2 uses two layers of padding from slice 1 (i.e., uses a padding area of ​​width 2) to calculate vertex points on the boundary surface between slices 1 and 2. Because slices 1 and 2 each use a different number of padding layers, the vertex points calculated by each of slices 1 and 2 may be different.

[0060] To avoid the above problem, the following method is provided to calculate the value of distanceSearchEncoder for determining vertex points on slice boundaries.

[0061] First, the distanceSearchEncoder value is calculated for each of the two different adjacent slices, and if they are not equal, the larger value is selected and used to determine the vertex points that lie on the boundary plane between the slices.To determine the vertex points that are not on the boundary plane between the slices, the distanceSearchEncoder value that is unique for each slice is used.This ensures that the vertex positions on the slice boundary are identical in both slices.

[0062] For example, in Figure 11, slice 1, which includes trie soup nodes 1112, 1114, and 1116, has a distanceSearchEncoder with a value of 1, while slice 2, which includes trie soup nodes 1118, 1120, and 1122, has a distanceSearchEncoder with a value of 2. Because slices 1 and 2 have different values ​​for distanceSearchEncoder, the larger value (here distanceSearchEncoder with a value of 2) is used to calculate vertex point 1130 (because vertex point 1130 lies on the boundary plane between slices 1 and 2), but distanceSearchEncoder with a value of 1 is used to calculate vertex point 1132 (because vertex point 1132 lies on the boundary plane that is not between the two slices). More specifically, when encoding point data representing points included in slice 1, vertex point 1130 is determined based on point 1102 included in node 1114, point 1104 included in node 1116, point 1106 included in node 1118, and point 1108 included in node 1120 (corresponding to a distanceSearchEncoder with a value of 2). Conversely, when encoding point data representing points included in slice 1, vertex point 1132 is determined based on point 1102 included in node 1114 and point 1104 included in node 1116 (corresponding to a distanceSearchEncoder with a value of 1).

[0063] This method may be preferable when each slice is padded with a padding layer with a single nodeSize, because before partitioning the point cloud, the encoder does not know what the value of distanceSearchEncoder will be. Therefore, the encoder must use a padding layer with a single contiguous nodeSize to ensure that the distanceSearchEncoder value is no larger than the user-set padding value X. However, this method may also be used when the padding layer has a user-set padding width X that is different from the nodeSize.

[0064] Note that according to some embodiments, when calculating the value of distanceSearchEncoder, the original values ​​of numNodes, numPoints, and nodeSize (i.e., the values ​​of numNodes, numPoints, and nodeSize of the slice before padding) may be used, since these values ​​do not change no matter how many layers of padding are added.

[0065] The data structure representing a slice may include a member variable indicating the bounding box of the volume the slice should represent (1202 shown in FIG. 12A compared to 1204 indicating the boundary of the slice with the padding layer) (meaning excluding the padding used to calculate the correct vertex points on the slice boundary). When determining the vertex points, all vertex points outside the bounding box may be removed and therefore not included in the bitstream. This reduces the size of the bitstream without affecting the distortion metric score. Duplicate vertices (shown in FIG. 12B) that are not on slice boundaries may also be removed. In summary, when encoding a slice, a method according to some embodiments may retain original slice information (i.e., information about the slice before padding) and use the original slice information to remove vertex points generated by padding outside the bounding box of the original slice, thereby improving encoding efficiency.

[0066] Although the above-described embodiments are described with respect to a scenario in which each vertex point on a bounding surface is determined based on points contained in two adjacent trie soup nodes on either side of the bounding surface, the embodiments are equally applicable to scenarios in which vertex points of a bounding surface are determined based on points contained in three or four adjacent trie soup nodes near the bounding surface. For example, a vertex point may be located on an edge formed by four trie soup nodes. In such a case, the vertex point may be determined based on points contained in the four trie soup nodes.

[0067] FIG. 13 illustrates a process 1300 for encoding point data representing a plurality of points in a three-dimensional (3D) environment, according to some embodiments. Process 1300 may begin at step s1302, which includes obtaining point data. Step s1304 includes grouping the plurality of points into a plurality of slices, including a first slice and a second slice, where i) the first slice includes a first set of points and a second set of points, and ii) the second slice includes the first set of points and a second set of points. Step s1306 includes encoding the point data using the plurality of slices. Encoding the point data using the plurality of slices includes, for the first slice, encoding first point data representing the first set of points to thereby generate a first encoding point, and encoding second point data representing the second set of points for the second slice to thereby generate a second encoding point. The first encoding point is identical to the second encoding point.

[0068] In some embodiments, the first slice and the second slice partially overlap.

[0069] In some embodiments, the process 1300 includes obtaining an initial slice length value indicating an initial length of a slice along a first axis, and obtaining an extended length value indicating a length of an extended area of ​​the slice along the first axis, wherein the length of each of the multiple slices along the first axis is either the sum of the initial length and the length of the extended area, or the sum of the initial length and twice the length of the extended area, and the overlapping area of ​​the first slice and the second slice is twice the length of the extended area.

[0070] In some embodiments, the first slice includes a first initial slice area containing a first set of points and a first extended area containing a second set of points, the second slice includes a second initial slice area containing the second set of points and a second extended area containing the first set of points, and the first encoding points and the second encoding points are on boundary surfaces between the first initial slice area and the first extended area, and between the second initial slice area and the second extended area.

[0071] In some embodiments, a first encoding point is generated for a first slice based on the first set of points and the second set of points, and a second encoding point is generated for a second slice based on the first set of points and the second set of points.

[0072] In some embodiments, the process 1300 includes determining, for a first slice, a first surface on which a first set of points included in the first initial slice area and a second set of points included in the first extended area are located, and determining, for a second slice, a second surface on which a second set of points included in the second initial slice area and the first set of points included in the second extended area are located, where the first encoding points are intersections of the determined first surface with a bounding surface, and the second encoding points are intersections of the determined second surface with a bounding surface, and the first and second surfaces are identical.

[0073] In some embodiments, grouping a plurality of points into a plurality of slices includes: determining dimension values, each dimension value indicating a dimension of a geometry surrounding the plurality of points, each point being defined by coordinate values, each coordinate value indicating a coordinate corresponding to a dimension of the geometry; identifying a longest dimension among the dimensions of the geometry; dividing the coordinate value of each point corresponding to the longest dimension by an initial slice length value; and determining to which of the plurality of slices each of the plurality of points belongs based on the result of dividing the coordinate value of each point corresponding to the longest dimension by the initial slice length value.

[0074] In some embodiments, grouping the plurality of points into the plurality of slices includes: identifying a second-longest dimension among the dimensions of the geometry; dividing the coordinate values ​​of each point corresponding to the second-longest dimension by the initial slice length value; and determining to which of the plurality of slices each of the plurality of points belongs based on the result of dividing the coordinate values ​​of each point corresponding to the second-longest dimension by the initial slice length value.

[0075] In some embodiments, the plurality of points includes a first point, and grouping the plurality of points into a plurality of slices includes: determining that the first point is included in the first slice; determining whether the first point is within a first adjacent area of ​​the first slice that is adjacent to a second slice; and including the first point in the second slice as a result of determining that the first point is within the first adjacent area of ​​the first slice.

[0076] In some embodiments, the plurality of points includes a first point within a second slice, and the areas of the first slice and the second slice are arranged along a first axis, and grouping the plurality of points into the plurality of slices includes: determining whether (a-(b×c))≦d, where a is the coordinate of the first point along the first axis, b is the value of the initial slice length, c is the index of the second slice along the first axis, and d is the value of the extension length; determining whether (a-(b×c))≦d; and including the first point in the first slice as a result of determining that (a-(b×c))≦d.

[0077] In some embodiments, the plurality of points includes a first point, and the areas of the first slice and the second slice are arranged along a first axis, and grouping the plurality of points into the plurality of slices includes: (b×cd)≦a≦(b×(c+1)-d) where a is the coordinate of the first point along the first axis, b is an initial slice length value, c is an index of the second slice along the first axis, and d is an extension length value.

[0078] In some embodiments, the process 1300 includes transmitting, to a decoding entity, encoded point data, the encoded point data including first encoded point data for a first slice and second encoded point data for a second slice, the first encoded point data for the first slice indicating a first encoding point and the second encoded point data for the second slice indicating neither the first encoding point nor the second encoding point.

[0079] 14 is a block diagram of an apparatus 1400 for implementing an encoder, a decoder, or components included in an encoder or decoder, according to some embodiments. When the apparatus 1400 implements a decoder, the apparatus 1400 may be referred to as a "decoding apparatus 1400," and when the apparatus 1400 implements an encoder, the apparatus 1400 may be referred to as an "encoding apparatus 1400." As shown in FIG. 14, the apparatus 1400 includes a processing circuit (PC) 1402 that may include one or more processors (P) 1455 (e.g., a general-purpose microprocessor and / or one or more other processors, such as an application-specific integrated circuit (ASIC), a field-programmable gate array (FPGA), etc.), which may be co-located in a single housing or in a single data center or geographically distributed (i.e., the apparatus 1400 may be a distributed computing device), and at least one network interface 1448, which may be connected to the network interface 1448. The PC 1402 may comprise at least one network interface 1448, and a storage unit (a.k.a., a "data storage system") 1408, which may include one or more non-volatile storage devices and / or one or more volatile storage devices. In embodiments in which the PC 1402 includes a programmable processor, a computer program product (CPP) 1441 may be provided. The CPP 1441 includes a computer-readable medium (CRM) 1442, which stores a computer program (CP) 1443 comprising computer-readable instructions (CRI) 1444.CRM 1442 may be a non-transitory computer-readable medium, such as a magnetic medium (e.g., a hard disk), an optical medium, a memory device (e.g., a random access memory, a flash memory), or the like. In some embodiments, CRI 1444 of computer program 1443, when executed by PC 1402, configures CRI to cause device 1400 to perform steps described herein (e.g., steps described herein with reference to flowcharts). In other embodiments, device 1400 may be configured to perform steps described herein without the need for code. That is, for example, PC 1402 may consist only of one or more ASICs. Thus, features of the embodiments described herein may be implemented in hardware and / or software.

[0080] Overview of the embodiment A1. A method (1300) for encoding point data indicative of a plurality of points in a three-dimensional (3D) environment, the method comprising: acquiring point data (s1302); Grouping the plurality of points into a plurality of slices (s1304), the plurality of slices including a first slice and a second slice, wherein i) the first slice includes a first set of points and a second set of points, and ii) the second slice includes the first set of points and the second set of points; encoding the point data using a plurality of slices (s1306), encoding first point data indicative of a first set of points for a first slice, thereby generating first encoded points; encoding second point data indicative of a second set of points for a second slice, thereby generating second encoded points; Including, encoding the point data using a plurality of slices, wherein the first encoding point is the same as the second encoding point (s1306); A method (1300) comprising: A2. The method of embodiment A1, wherein the first slice and the second slice partially overlap. A3.The method is obtaining an initial slice length value indicating an initial length of a slice along a first axis; obtaining an extension length value indicating a length of an extension area of ​​the slice along a first axis; Including, a length of each of the plurality of slices along the first axis is either the sum of the initial length and the length of the extended area, or the sum of the initial length and twice the length of the extended area; The method of embodiment A1 or A2, wherein the overlapping area of ​​the first slice and the second slice is twice the length of the extension area. A4. the first slice includes a first initial slice area containing a first set of points and a first extended area containing a second set of points; the second slice includes a second initial slice area containing the second set of points and a second extended area containing the first set of points; A method according to any one of embodiments A1 to A3, wherein the first encoding point and the second encoding point are on the boundary surfaces between the first initial slice area and the first extended area, and between the second initial slice area and the second extended area. A5. a first encoding point is generated for the first slice based on the first set of points and the second set of points; The method of any one of embodiments A1 to A4, wherein second encoding points are generated for the second slice based on the first set of points and the second set of points. A6.The method is For the first slice, determining a first surface on which a first set of points included in the first initial slice area and a second set of points included in the first extended area are located; For the second slice, determining a second surface on which a second set of points included in the second initial slice area and a first set of points included in the second extended area are located; Including, the first encoding point is an intersection point where the determined first surface intersects with the bounding surface; the second encoding point is an intersection point where the determined second surface intersects with the boundary surface; The method of embodiment A5 (when embodiment A5 is dependent from embodiment A4), wherein the first surface and the second surface are the same. A7. Grouping multiple points into multiple slices is determining dimension values, each dimension value indicating a dimension of a geometry that encompasses a plurality of points, each point being defined by coordinate values, each of the coordinate values ​​indicating a coordinate corresponding to the dimension of the geometry; Identifying the longest dimension of the geometry; Dividing the coordinate value of each point corresponding to the longest dimension by the initial slice length value; determining which of the plurality of slices each of the plurality of points belongs to based on a result of dividing a coordinate value of each point corresponding to the longest dimension by an initial slice length value; The method of any one of embodiments A3 to A6, comprising: A8. Grouping multiple points into multiple slices is Identifying the second longest dimension of the geometry; Dividing the coordinate value of each point corresponding to the second longest dimension by the initial slice length value; determining which of the plurality of slices each of the plurality of points belongs to based on a result of dividing a coordinate value of each point corresponding to the second longest dimension by the initial slice length value; The method of embodiment A7, comprising: A9. the plurality of points includes the first point; Grouping multiple points into multiple slices is determining that a first point is included in a first slice; determining whether the first point is within a first adjacent area of ​​a first slice that is adjacent to a second slice; including the first point in the second slice as a result of determining that the first point is within the first contiguous area of ​​the first slice; The method of any one of embodiments A3 to A8, comprising: A10. the plurality of points includes the first point within the second slice; The areas of the first slice and the second slice are arranged along a first axis; Grouping multiple points into multiple slices is determining whether (a-(b*c))≦d, where a is the coordinate of a first point along a first axis, b is an initial slice length value, c is an index of a second slice along the first axis, and d is an extension length value; If it is determined that (a-(b×c))≦d, the first point is included in the first slice. The method of any one of embodiments A3 to A8, comprising: A11. the plurality of points includes the first point; The areas of the first slice and the second slice are arranged along a first axis; Grouping multiple points into multiple slices is (b×cd)≦a≦(b×(c+1)-d), The method of any one of embodiments A3 to A8, comprising including the first point in the first slice if the condition: a x = a ⁢ ⁢ a b ⁢ ⁢ a ... b ⁢ ⁢ a ⁢ ⁢ a ⁢ ⁢ a ⁢ ⁢ a ⁢ ⁢ a ⁢ ⁢ A12.The method is Transmitting the encoded point data to a decoding entity. Including, the encoded point data includes first encoded point data for a first slice and second encoded point data for a second slice; the first encoded point data for the first slice indicates a first encoding point; The method of any one of embodiments A1 to A11, wherein the second coded point data for the second slice does not indicate either the first encoding point or the second encoding point. B1. A computer program (1400) comprising instructions (1444) that, when executed by a processing circuit (1402), cause the processing circuit to perform a method according to any one of embodiments A1 to A12. B2. A carrier containing the computer program of embodiment B2, the carrier being one of an electronic signal, an optical signal, a radio signal, and a computer-readable storage medium. C1. An apparatus (1400) for encoding point data indicative of a plurality of points in a three-dimensional (3D) environment, the apparatus comprising: acquiring point data (s1302); Grouping the plurality of points into a plurality of slices (s1304), the plurality of slices including a first slice and a second slice, wherein i) the first slice includes a first set of points and a second set of points, and ii) the second slice includes the first set of points and the second set of points; encoding the point data using a plurality of slices (s1306), encoding first point data indicative of a first set of points for a first slice, thereby generating first encoded points; encoding second point data indicative of a second set of points for a second slice, thereby generating second encoded points; Including, encoding the point data using multiple slices, where the first encoding point is identical to the second encoding point (s1306); The apparatus (1400) is configured to perform the above. C2. The apparatus of embodiment C1, wherein the apparatus is further configured to perform the method of any one of embodiments A2 to A12. D1. A processing circuit (1402); a memory (1441) containing instructions executable by the processing circuitry, whereby the apparatus is operable to perform the method of any one of embodiments A1 to A12; and An apparatus (1400) comprising:

[0081] conclusion

[0082] While various embodiments have been described herein, it should be understood that the embodiments have been presented by way of example only, and not limitation. Thus, the breadth and scope of the present disclosure should not be limited by any of the above-described exemplary embodiments. Moreover, unless otherwise indicated herein or clearly contradicted by context, any combination of the above-described elements in all possible variations thereof is encompassed by the present disclosure.

[0083] Additionally, while the processes described above and illustrated in the figures are shown as a series of steps, this is done for illustrative purposes only, and it is therefore contemplated that some steps may be added, some steps may be omitted, the order of steps may be rearranged, and some steps may be performed in parallel.

[0084] References TIFF2026500583000006.tif27170

Claims

1. 13. A method (1300) for encoding point data indicative of a plurality of points in a three-dimensional (3D) environment, the method comprising: acquiring the point data (s1302); Grouping the plurality of points into a plurality of slices (s1304) including a first slice and a second slice, wherein i) the first slice includes a first set of points and a second set of points, and ii) the second slice includes the first set of points and the second set of points; encoding the point data using the plurality of slices (s1306), encoding first point data indicative of the first set of points for the first slice, thereby generating first encoded points; encoding second point data indicative of the second set of points for the second slice, thereby generating second encoded points; Including, encoding the point data using the plurality of slices, wherein the first encoding point is the same as the second encoding point (s1306); The method (1300) includes:

2. The method of claim 1 , wherein the first slice and the second slice partially overlap.

3. The method comprises: obtaining an initial slice length value indicating an initial length of a slice along a first axis; obtaining an extension length value indicating a length of an extension area of ​​the slice along the first axis; Including, a length of each of the plurality of slices along the first axis is either the sum of the initial length and the length of the extended area, or the sum of the initial length and twice the length of the extended area; The method of claim 1 or 2, wherein the overlapping area of ​​the first slice and the second slice is twice the length of the extension area.

4. the first slice includes a first initial slice area containing the first set of points and a first extended area containing the second set of points; the second slice includes a second initial slice area containing the second set of points and a second extended area containing the first set of points; 4. The method according to claim 1, wherein the first encoding point and the second encoding point are on boundary surfaces between the first initial slice area and the first extended area, and between the second initial slice area and the second extended area.

5. the first encoding points are generated for the first slice based on the first set of points and the second set of points; The method of claim 1 , wherein the second encoding points are generated for the second slice based on the first set of points and the second set of points.

6. When claim 5 is dependent on claim 4, the method comprises: For the first slice, determining a first surface on which the first set of points included in the first initial slice area and the second set of points included in the first extended area are located; For the second slice, determining a second surface on which the second set of points included in the second initial slice area and the first set of points included in the second extended area are located; Including, the first encoding point is an intersection point where the determined first surface intersects with the bounding surface; the second encoding point is an intersection point where the determined second surface intersects with the bounding surface; The method of claim 5 , wherein the first surface and the second surface are the same.

7. Grouping the points into the slices determining dimension values, each dimension value indicating a dimension of a geometry surrounding the plurality of points, each point being defined by coordinate values, each of the coordinate values ​​indicating a coordinate corresponding to a dimension of the geometry; identifying a longest one of said dimensions of said geometry; Dividing the coordinate value of each point corresponding to the longest dimension by the initial slice length value; determining which of the slices each of the plurality of points belongs to based on a result of dividing a coordinate value of each point corresponding to the longest dimension by the initial slice length value; 7. The method of claim 3, comprising:

8. Grouping the points into the slices identifying a second longest one of said dimensions of said geometry; Dividing the coordinate value of each point corresponding to the second longest dimension by the initial slice length value; determining which of the slices each of the plurality of points belongs to based on a result of dividing the coordinate value of each point corresponding to the second longest dimension by the initial slice length value; The method of claim 7, comprising:

9. the plurality of points includes a first point; Grouping the points into the slices determining that the first point is contained in the first slice; determining whether the first point is within a first adjacent area of ​​the first slice that is adjacent to the second slice; including the first point in the second slice as a result of determining that the first point is within the first adjacent area of ​​the first slice; 9. The method of claim 3, comprising:

10. the plurality of points includes a first point within the second slice; the areas of the first slice and the second slice are arranged along a first axis; Grouping the points into the slices determining whether (a-(b*c))≦d, where a is the coordinate of the first point along the first axis, b is the initial slice length value, c is the index of the second slice along the first axis, and d is the extension length value; As a result of determining that (a-(bxc))≦d, the first point is included in the first slice.

9. The method of claim 3, comprising:

11. the plurality of points includes a first point; the areas of the first slice and the second slice are arranged along a first axis; Grouping the points into the slices (b×c−d)≦a≦(b×(c+1)−d), 9. The method of claim 3, further comprising including the first point in the first slice if the condition: a = a coordinate of the first point along the first axis, b = b the initial slice length value, c = c the index of the second slice along the first axis, and d = d the extension length value.

12. The method comprises: Transmitting the encoded point data to a decoding entity. Including, the encoded point data includes first encoded point data for the first slice and second encoded point data for the second slice; the first encoded point data for the first slice indicates the first encoding point; 12. The method of claim 1, wherein the second encoded point data for the second slice does not indicate either the first encoding point or the second encoding point.

13. A computer program (1400) comprising instructions (1444) that, when executed by a processing circuit (1402), cause the processing circuit to perform the method of any one of claims 1 to 12.

14. 14. A carrier containing the computer program of claim 13, the carrier being one of an electronic signal, an optical signal, a radio signal, and a computer readable storage medium.

15. 1. An apparatus (1400) for encoding point data indicative of a plurality of points in a three-dimensional (3D) environment, said apparatus comprising: acquiring the point data (s1302); Grouping the plurality of points into a plurality of slices (s1304) including a first slice and a second slice, wherein i) the first slice includes a first set of points and a second set of points, and ii) the second slice includes the first set of points and the second set of points; encoding the point data using the plurality of slices (s1306), encoding first point data indicative of the first set of points for the first slice, thereby generating first encoded points; encoding second point data indicative of the second set of points for the second slice, thereby generating second encoded points; (1300), encoding the point data using the plurality of slices, wherein the first encoding point is the same as the second encoding point (s1306); The apparatus (1400) is configured to perform the following:

16. 16. Apparatus according to claim 15, further configured to carry out the method according to any one of claims 2 to 12.

17. A processing circuit (1402); Memory (1441) and 13. An apparatus (1400) comprising: said memory including instructions executable by said processing circuitry, whereby said apparatus is operable to perform the method of any one of claims 1 to 12. Apparatus (1400).

Citation Information

Patent Citations

  • Point cloud data transmitting device, point cloud data transmitting method, point cloud data receiving device, and point cloud data receiving method.

    JP2022544571A