Capturing non-closed surfaces in trisoup nodes

By determining the centroid vertex of non-closed surfaces in trisoup nodes using adjacent node information, the method enhances the reconstruction quality of 3D point clouds, addressing the inaccuracies in existing methods.

AU2025207690A1Pending Publication Date: 2026-07-09TELEFONAKTIEBOLAGET LM ERICSSON (PUBL)

Patent Information

Authority / Receiving Office
AU · AU
Patent Type
Applications
Current Assignee / Owner
TELEFONAKTIEBOLAGET LM ERICSSON (PUBL)
Filing Date
2025-01-10
Publication Date
2026-07-09

AI Technical Summary

Technical Problem

Existing 3D reconstruction methods fail to accurately reconstruct non-closed surfaces in trisoup nodes, leading to a lower quality of point cloud reconstruction.

Method used

A method for determining the centroid vertex of a non-closed surface in a trisoup node by using information from adjacent nodes, along with edge and face vertices, to enhance the reconstruction process.

Benefits of technology

Improves both subjective and objective quality of the reconstructed point cloud by accurately representing non-closed surfaces, resulting in significant gains using MPEG metrics.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 00000000_0000_ABST
    Figure 00000000_0000_ABST
Patent Text Reader

Abstract

A method of encoding point data which indicates a plurality of points in a three-dimensional, 3D, space. The method comprises obtaining information about a first node, wherein the information about the first node identifies edge-vertices of the first node. The method further comprises obtaining information about a second node that is adjacent to the first node, wherein the information about the second node identifies edge-vertices of the second node. The method further comprises, based on the information about the first and second nodes, determining a position of a centroid vertex of the first node. The method further comprises encoding the point data using at least the position of the centroid vertex of the first node. The edge-vertices of the first node are disposed on the same face of the first node.
Need to check novelty before this filing date? Find Prior Art

Description

TECHNICAL FIELD

[0001] This disclosure relates to methods and systems for capturing non-closed surfaces in trisoup nodes. BACKGROUND

[0002] Today three-dimensional (3D) reconstruction of a space is widely used in various fields. For example, for home renovation, one or more cameras capable of capturing a 360-degree view may be used to capture multiple shots of a kitchen that is to be renovated, and the kitchen may be reconstructed in a 3D virtual space using the captured multiple images. The generated 3D reconstruction of the kitchen can be displayed on a screen, and a user may manipulate the displayed reconstruction in order to help the user to visualize how to renovate the kitchen. In a 3D virtual space, there are a plurality of points (a.k.a., “3D points”) identifying an object or a structure of the 3D virtual space.

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

[0004] Even though the embodiments of this disclosure are applicable to point clouds with attributes, for the purpose of simple explanation, the embodiments are explained in the context of geometry compression (i.e., compressing a set of 3D points fl = (Xk, Yk,Zk)k=1, where K is the number of points, Xk is the X-coordinate of a k-th 3D point, Yk is the Y-coordinate of a k-th 3D point, and Zk is the Z-coordinate of a k-th 3D point) without attributes.

[0005] Typical point clouds range in size from a few KB to several GBs, which puts at stress any application requiring storage and / or transmission of such point clouds. Therefore, an efficient point cloud compression solution is needed in all industrial applications relying on such point clouds.

[0006] Geometry based Point Cloud Compression (G-PCC) is a Moving Picture Expert Group (MPEG) standard that targets the use case of static point clouds, as disclosed in Reference [1] cited at the end of this disclosure. It uses octree coding to compress the geometry of 3D points. Before applying this method, as shown in FIG. 16A, it is assumed that a coordinate of each 3D point included in the point clouds is quantized into an integer coordinate, and is contained within a volume 1602 (e.g., a cube) having the dimension of D x D x D. The volume may be partitioned into 8 sub-cubes 1612 having the dimension of D / 2 xD / 2 x D / 2. If a sub-cube 1612 contains at least one 3D point, then sub-cube 1612 is segmented into 8 smaller sub-cubes 1622 having the dimension of £) / 4 x £) / 4 x D / ^. Then if smaller sub-cube 1622 contains at least one 3D point, then smaller sub-cube 1622 may be segmented into 8 micro sub-cubes 1632. This segmentation process can be repeated until a sub-cube of a predetermined size (e.g., £) / 16 x £) / 16 x £) / 16) containing the 3D point can be identified. On the other hand, if a sub-cube does not contain any 3D points, the segmentation process for this sub-cube branch may end.

[0007] The above process generates a tree structure (an octree) (shown in FIG. 16B) where each node can be represented using 8 bits and each bit indicates the occupancy status of one sub-cube. For example, the 8 bits 00010000 may indicate that a fourth sub-cube 1612 contains a 3D point data, and the 8 bits 00000011 may indicate that each of seventh and eighth smaller sub-cubes 1622 contains a 3D point. For lossy compression, an octree is coded up to a pre-determined level, thereby generating a sparser reconstruction, and the corresponding sequence of 8-bit words is entropy coded.

[0008] G-PCC also contains a module called trisoup, which is explained in Reference [1], The trisoup module was developed to favor surface point clouds, i.e., the point clouds that are dense enough to capture surface structures. Similar to octree G-PCC, this compression module (a.k.a., trisoup coding) uses the octree coding to partition a point cloud into trisoup nodes, i.e., blocks each having a width larger than 1. However, when using this module, the octree partitioning typically stops at a higher level in the tree, making the blocks bigger. This level is pre-determined and set by the user / encoder. Instead of setting a fixed depth, the user may set a trisoup node size (nodeSize = 2n,n = 2,...), where each node size corresponds to a depth in the octree where partitioning will stop. SG-PCC (Solid Geometrybased Point Cloud Compression) is a new standard. SG-PCC uses the same tools as G-PCC but it targets solid point clouds and is developing in a direction that may make it a leading standard on this type of content.

[0009] To represent a surface of points within a trisoup node, e.g., the shaded surface shown in FIG. 17A, vertices are determined based on the point content of a node. In the decoder, the vertices are connected to each other form a surface in the form of a triangle. In the current version of the standard, there are three types of vertices: edge vertices (or “edge-vertices”), centroid vertices (or “centroid-vertices”), and face vertices (or “face-vertices”).

[0010] Determining edge vertices of a node is straightforward. For example, the edge-vertices are determined to be the positions where the surface that is to be represented intersects the edges of the node. In FIG. 17A, the four white circles at which the shaded surface intersects the edges of the nodes correspond to the edge vertices of the node. Reference [2] cited below discloses more details on how the edge vertices of a node are determined.

[0011] In the decoder, the edge-vertices are connected via a centroid node that is the arithmetic mean position of the edge-vertices, thereby forming triangles that the trisoup name refers to, as shown in FIG. 17B.

[0012] However, signaling only the edge-vertices of a node to the decoder may limit the decoder to obtain a coarse geometrical representation of the surface of the node. Especially for low bitrates, where the node size is large, the representation will be coarse. This is illustrated in FIG. 18A where a curved surface is captured within a node. If only the edge vertices are signalled to the decoder, the curved surface would be reconstructed as a straight plane instead of an arcshape, as shown in FIG. 18A. To prevent this issue, the codec has the possibility to add an offset to the centroid vertices, as shown in FIG. 18B. Before calculating the length of this offset, the direction of the vector along which the offset will be shifted must be calculated. This is illustrated in FIG. 18C. For each triangle surrounding the centroid vertex, a normal vector will be calculated using a simple cross-product: = CEt x CEl+1 (1) where C is the position of the centroid and EL is one of the edge-vertices and Ei+1 is the upcoming vertex in decreasing angle order around the vector that points in the direction of the dominant axis (X, Y or Z) and starts in the centroid vertexThen the offset-vector may be calculated as the average of those normal vectors as follows: N =         (2) i The dominant axis is determined by sorting all the edge vertices in decreasing angle around the normal vector (starting in the centroid) for every axis (X, Y and Z) and then calculate an accumulated normal vector for each axis according to equation (1) and (2). The axis, where its corresponding normal vector projects the largest distance to the dominant axis vector, is determined as the dominant axis.

[0013] Then the offset of the centroid vertex may be calculated as the average projected position along the offset-vector for all original points Pi (not vertices) in the node that is within a certain threshold distance from the line segment that goes from the centroid to the edge of the node along in the direction of the offset-vector, as illustrated in FIG. 19. The offset along the offset-vector is calculated as: 1 offset = -^proj^^i - C) (3) i=0 where k is the number of points that are within this threshold. The distance from a point to the line segment, which has direction N and which is originating in centroid C is di = ||^x(pi- C)||2.     (4)

[0014] Hence, all points where dt < th is used in equation (3). This is illustrated in FIG. 19, where all points inside the dotted cylinder contributes towards the offset length.

[0015] When the offset is applied to the original centroid it causes the reconstructed node to have the geometrical shape that is illustrated in FIG. 18(B). Since the direction of the centroid vertex can be calculated using only the information from the edge-vertices, the only thing that needs to be signaled to the decoder is the offset of the centroid vertex.

[0016] The centroid vertex does not solve all the problems though. Instead of the reconstruction looking like an arc, or like part of a cylinder, it looks like a pyramid, as shown in FIG. 18C. Hence, recently within MPEG, the face vertex was introduced to the codec. The face vertex is positioned on the face of a node, but only on the intersection of a line segment between two centroid vertices in adjacent nodes and the face that is the boundary between two nodes.

[0017] Hence, the task of the encoder is to determine whether there are sufficiently many points in the surroundings of this intersection point between the line and the face, see the larger circles in FIG. 20A. If that is the case, for each face between two nodes where there is a centroid vertex activated in each node, one bit is signaled, telling the decoder whether to put a face vertex on this intersection point or not. In FIG. 20B, two face vertices are determined. The intersection point can be determined using the positions of the edge- and centroid-vertices, and therefore only one bit is required per face. The final reconstruction of the content of the node will look like FIG. 20C, which is significantly closer to the original arc-shape than the reconstruction in FIG. 18C.

[0018] To clarify, the above-described process is only performed for nodes with 4 or more edge-vertices. If there are 3 edge-vertices, only one triangle will be used to represent the content of the node since 3 vertices uniquely defines a plane. If there are less than 3 edge-vertices in a node, nothing will be reconstructed in this node.

[0019] When decoding the point cloud, surfaces of each node are reconstructed by populating all positions for points (called voxels) that intersect the modelled triangles using raytracing. 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. SUMMARY

[0020] Certain challenges presently exist. For example, in the existing art, in case a node includes anon-closed surface, i.e., a surface that only partially intersects the node, the non-closed surface will not be reconstructed. For example, in FIG. 4A, a node 402 includes a non-closed surface 412 which only partially intersects the node 402. As a result, only two edge vertices 404 and 406 of the node 402 are detected by the encoder. However, the two edge vertices 404 and 406 alone are not enough to reconstruct the non-closed surface 412. Thus, in the existing art, the non-closed surface of the node will not be reconstructed, which would result in lowering the quality of reconstruction of a point cloud which includes the points of the node.

[0021] Accordingly, in one aspect of some embodiments of this disclosure, there is provided a method of encoding point data which indicates a plurality of points in a threedimensional, 3D, space. The method includes obtaining information about a first node, wherein the information about the first node identifies edge-vertices of the first node. The method also includes obtaining information about a second node that is adjacent to the first node, wherein the information about the second node identifies edge-vertices of the second node. The method further includes, based on the information about the first and second nodes, determining a position of a centroid vertex of the first node. The method also includes encoding the point data using at least the position of the centroid vertex of the first node. The edge-vertices of the first node are disposed on the same face of the first node.

[0022] In another aspect, there is provided a method of decoding point data which indicates a plurality of points in a three-dimensional, 3D, space. The method comprises obtaining information about a first node, wherein the information about the first node identifies edge-vertices of the first node; and obtaining information about a second node that is adjacent to the first node, wherein the information about the second node identifies edgevertices of the second node. The method further comprises, based on the information about the first and second nodes, determining a position of a centroid vertex of the first node; and decoding the point data using at least the position of the centroid vertex of the first node. The edge-vertices of the first node are disposed on the same face of the first node.

[0023] In another 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.

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

[0025] In another aspect, there is provided an apparatus for encoding point data which indicates a plurality of points in a three-dimensional, 3D, space. The apparatus is configured to: obtain information about a first node, wherein the information about the first node identifies edge-vertices of the first node; and obtain information about a second node that is adjacent to the first node. The information about the second node identifies edgevertices of the second node. The apparatus is further configured to, based on the information about the first and second nodes, determine a position of a centroid vertex of the first node; and encode the point data using at least the position of the centroid vertex of the first node. The edge-vertices of the first node are disposed on the same face of the first node.

[0026] In another aspect, there is provided an apparatus for decoding point data which indicates a plurality of points in a three-dimensional, 3D, space. The apparatus is configured to: obtain information about a first node, wherein the information about the first node identifies edge-vertices of the first node; and obtain information about a second node that is adjacent to the first node, wherein the information about the second node identifies edge-vertices of the second node. The apparatus is further configured to, based on the information about the first and second nodes, determine a position of a centroid vertex of the first node; and decode the point data using at least the position of the centroid vertex of the first node, wherein the edge-vertices of the first node are disposed on the same face of the first node.

[0027] In another aspect, there is provided an apparatus comprising processing circuitry; and a memory, said memory containing instructions executable by said processing circuitry, whereby the apparatus is operative to perform the method of any one of the above embodiments.

[0028] Embodiments of this disclosure increase both subjective and objective quality of a reconstructed point cloud by providing a method of encoding and decoding point data indicating points corresponding to a non-closed surface of a node. As discussed above, in the existing arts, those points corresponding to a non-closed surface are not reconstructed. However, in the embodiments of this disclosure, those points are reconstructed.

[0029] Since the non-closed surface that were missing in the reconstruction of a point cloud in the existing art is visible in the embodiments of this disclosure, the embodiments increase the subjective quality of the reconstruction. The embodiments also improve the objective quality since large gains are obtained using MPEGs metrics when compared to the most recent version of the G-PCC reference software. BRIEF DESCRIPTION OF THE DRAWINGS

[0030] The accompanying drawings, which are incorporated herein and form part of the specification, illustrate various embodiments.

[0031] FIG. 1 shows an exemplary scenario where embodiments of this disclosure can be applied.

[0032] FIG. 2A shows an apparatus according to some embodiments.

[0033] FIG. 2B shows an example of a virtual reality scene.

[0034] FIG. 3 shows a process according to some embodiments.

[0035] FIG. 4A shows an example of a non-closed surface.

[0036] FIG. 4B shows an example of how to represent a non-closed surface using edge vertices, a centroid vertex, and / or face vertices.

[0037] FIGS. 5 A and 5B show exemplary nodes having two edge vertices.

[0038] FIGS. 6A and 6B illustrate how to determine the orientation of a non-closed surface.

[0039] FIGS. 7A and 7B illustrate how to determine the orientation of a non-closed surface.

[0040] FIGS. 8A, 8B, 9A, and 9B illustrate how to calculate the width of a non-closed surface.

[0041] FIGS. 10A and 10B illustrate how face vertices can be used for non-closed surface(s).

[0042] FIG. 11 shows an order of reconstructing vertices of a node.

[0043] FIG. 12 shows a process according to some embodiments.

[0044] FIG. 13 shows a process according to some embodiments.

[0045] FIG. 14 shows a process according to some embodiments.

[0046] FIG. 15 shows an apparatus according to some embodiments.

[0047] FIGS. 16A and 16B illustrate how the positions of two points are represented by an octree.

[0048] FIGS. 17A and 17B show examples of edge vertices.

[0049] FIGS. 18A-18C illustrate an offset applied to a centroid vertex of a node.

[0050] FIG. 19 illustrates how an offset of a node is determined.

[0051] FIGS. 20A-20C show examples of face vertices. DETAILED DESCRIPTION

[0052] FIG. 1 shows an exemplary scenario 100 where embodiments of this disclosure can be implemented. In the scenario 100, a capturing device 112 is used 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.

[0053] The capturing device 112 includes 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.

[0054] 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 the 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.

[0055] Once the view of the kitchen 150 is captured by the camera and the 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 three-dimensional (3D) points, i.e., a point defined in a 3D space.

[0056] 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 may be used to generate an extended-reality (XR) scene using an XR display 202 shown in FIG. 2A. A view 200 shown in FIG. 2B is an example of the view that a user 204 sees via the XR display 202.

[0057] The 3D point data of each 3D point may indicate a 3D coordinate of the 3D point and / or attributes such as color / luminance values of the 3D point. Note that the XR scene may be any one of a virtual reality (VR) scene, a mixed reality (MR) scene, or an augmented reality (AR) scene.

[0058] The 3D point data generated by the computing device 190 is stored in a storage, e.g., a memory included in the computing device or an external server.

[0059] Certain challenges presently exist. For example, 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. Also, in some scenarios, there is a need to send the 3D point data 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 the view of the kitchen 150 is captured and the 3D point data identifying the 3D points of the kitchen 150 is generated by the computing device 190, the 3D point data is sent 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 the 3D point data, transmitting the 3D point data would consume a substantial amount of data bandwidth.

[0060] Therefore, there is a need for efficiently compressing, a.k.a., “encoding,” and decompressing, a.k.a., “decoding,” 3D point data. Accordingly, in the embodiments of this disclosure, there is provided a method for efficiently encoding and decoding 3D point data. More specifically, the embodiments of this disclosure can be used for efficiently encoding and decoding 3D point data indicating 3D points which may possibly form a non-closed surface within a trisoup node, a.k.a., “node”.

[0061] In this disclosure, a non-closed surface, a.k.a., a non-closed surface segment, is defined as a surface corresponding to points within node(s), which only partially intersects the node(s). More specifically, a non-closed surface intersects only one of two opposite faces of each node. An example of a non-closed surface within a node is shown in FIG. 4A. In FIG. 4A, points 404-410 within a current node 402 form a surface 412. Since the surface 412 intersects only the side 422 of the current node 402 but not the side 424 of the current node 402, the surface 412 is a non-closed surface. Also, as a result of the surface 412 only partially overlapping the current node 402, there are only two edge vertices 404 and 406 in the current node 402.

[0062] FIG. 4B illustrates a possible way of representing the non-closed surface 412 within the current node 402. As shown in FIG. 4B, one way to represent the non-closed surface 412 is using the two edge vertices 404 and 406, and one centroid vertex 414 instead of using the two edge vertices 404 and 406 and two face vertices 408 and 410. However, even though the edge vertices 404 and 406 of the current node 402 can be determined using a process known in the existing art, the existing art does not disclose how to determine the centroid vertex 414. As explained below, the embodiments of this disclosure allow determining the centroid vertex 414 without introducing a new syntax.

[0063] FIG. 3 shows a process 300 for encoding 3D point data indicating 3D points (hereinafter, just “points”) in a node having two edge vertices. The process 300 allows representing a possible non-closed surface formed by points within a node using the already existing edge-, centroid-, and / or face vertices of the node.

[0064] The process 300 shown in FIG. 3 may begin with step s302. The step s302 comprises determining whether a node that is subject to the encoding process, a.k.a., a current node, satisfies a condition.

[0065] If the current node does not satisfy the condition, the process 300 is terminated for the current node. This means that the current node is left without any reconstructed content. In other words, none of the points within the current node will be reconstructed at the decoder. The assumption here is that the current node only has two edge vertices, and thus an existing way of encoding point data for a node having more than two edge vertices is not applicable to the current node.

[0066] On the contrary, if the current node satisfies the condition, the process 300 may proceed to step s304. This means that the points in the current node will be encoded using the remaining steps of the process 300 and will be reconstructed at the decoder.

[0067] In some embodiments, the condition is that the two edge-vertices of the current node are on the same face of the current node but are not on the same edge of the current node. This condition is needed because not all nodes having two edge-vertices are amenable to be represented.

[0068] For example, in case the two edge-vertices of the current node are not on the same face, it is likely that the surface that is being captured in the current node is not connected in the original point cloud and thus the current node should be left without any reconstructed content. An example of this scenario is illustrated in FIG. 5 A.

[0069] In another example, in case the two edge-vertices of the current node are positioned on the same edge of the current node as shown in FIG. 5B, it is likely that these two vertices are the result of a surface slightly touching the current node. Hence, the current node should also be left without any reconstructed content.

[0070] In all other cases of having two edge-vertices in a node, it is assumed that there is a non-closed surface in the node and a representation of the non-closed surface will be created.

[0071] The step s304 comprises predicting the orientation of the non-closed surface of the current node based on information about a node neighboring the current node, a.k.a., a neighboring node. The information about a neighboring node may also be called neighboring node information.

[0072] In G-PCC, in case the number of edge vertices of a node is greater than or equal to 4, the equations (1) and (2) explained above may be used to calculate the direction of an offset vector (e.g., 1802 shown in FIG. 18B) which is used for determining the centroid vertex needed for encoding and / or decoding point data for the node (in SG-PCC the threshold is 3 not 4). Thus, the encoder does not need to signal the direction of the offset vector to the decoder. The encoder only needs to signal the value of an offset that is applied along the offset vector (e.g., 610 shown in FIG. 6A).

[0073] However, in case there are only two edge vertices in a node, the equations (1) and (2) cannot be used to calculate the direction of an offset vector for the node since it requires at least three vertices to define a plane and there are an infinite number of planes which go through two vertices. Accordingly, in some embodiments of this disclosure, the direction of an offset vector of a current node is determined based on context of the current node, e.g., neighboring node information.

[0074] Note that, in this disclosure, an offset vector of a node defines a direction from a reference point to a centroid vertex of the node. For example, as shown in FIG. 18B, the offset vector of a node having four edge vertices defines a direction from a mean position of the four edge vertices of the node to the centroid vertex of the node. In another example, as shown in FIG. 6A, the offset vector of a node, e.g., 402, having two edge vertices, e.g., 404 and 406, means a direction, e.g., 610, from a mean position, e.g., 612, of the two edge vertices of the node to the centroid vertex, e.g., 614, of the node. The offset vector defines the orientation of the non-closed surface. To make upcoming projection calculations simpler, the offset vector is always normalized after being calculated. This allows projections to this vector to be calculated using one scalar product.

[0075] The direction of the offset vector of the current node may be determined based on neighboring node information as follows:

[0076] First, a mean position of the two edge-vertices of the current node is determined. More specifically, in FIG. 6B, a mean position 612 of the two edge vertices 404 and 406 of the current node 402 is determined. In one example, if the position of the edge vertex 404 is (x404, y404, Z404) and the position of the edge vertex 406 is (x406, y406, Z406), then the mean position 612 of the current node 402 may be determined as ZX404+X406 7404+7406 £4042£406\ ^2’2’2''

[0077] Then, a direction 618 from a centroid vertex 616 of a neighboring node 602 to the mean position 612 is determined. The direction 618 corresponds to the offset vector which is also the orientation of the non-closed surface of the current node.

[0078] In FIG. 6B, the centroid vertex 616 of the neighboring node 602 is determined as a result of applying an offset to a centroid vertex 608 of the neighboring node 602 - i.e., shifting the centroid vertex 608 in the direction of an offset vector, i.e., the direction of the arrow 690, by the amount of the offset value, i.e., the length of the arrow 690. Note that since the neighboring node 602 has four edge vertices, the equations (1) and (2) disclosed above can be used to determine the centroid vertex 608 of the neighboring node 602.

[0079] However, in some embodiments, the centroid vertex 608, i.e., without applying the offset, may be used in determining the orientation of the non-closed surface of the current node. More specifically, as shown in FIG. 6A, a direction 610 from the centroid vertex 608 of the neighboring node 602 to the mean position 612 is determined, and the direction 610 corresponds to the offset vector which is also the orientation of the nonclosed surface of the current node.

[0080] In some scenarios, the neighboring node 602 may not have four edge vertices. Instead, as shown in FIGS. 7A and 7B, the neighboring node 602 may only have three edge vertices. In these scenarios, the centroid vertex of the neighboring node 602 may be determined based on an arithmetic mean position of the three edge vertices.

[0081] For example, in FIG. 7A, the position of a centroid vertex of the neighboring node 602 for the purpose of determining the centroid vertex of the current node may be the arithmetic mean position of the edge vertices 404, 406, and 702 of the neighboring node 602. In other words, if the position of the edge vertex 404 is (x404, y404, Z404), the position of the edge vertex 406 is (x406, y406, Z4oe), and the position of the edge vertex 702 is (X702, y?02, Z702), then the position of the centroid vertex 704 of the neighboring node 602 may be: ,^4 04 +^4 06+^702 7404+7406+7702 z404 +z406 +z702\ '          3          '          3          '          3         ''

[0082] Then, the orientation of the non-closed surface of the current node 402 - i.e., the surface formed by the vertices 404, 406, and 706 - may be determined based on the centroid vertex 704 of the neighboring node 602. More specifically, as explained above, the orientation of the non-closed surface of the current node 402 may set to be parallel to a direction from the centroid vertex 704 of the neighboring node 602 towards the mean position 612. The new centroid vertex 706 may be positioned on a point on the line segment starting at the centroid vertex 704 and passing through the mean position 612, i.e., having the offset vector as its direction.

[0083] In another example, as shown in FIG. 7B, the centroid vertex of the neighboring node 602 to use for the purpose of determining the centroid vertex of the current node may be determined as follows:

[0084] First, the centroid vertex 704 is determined in the way discussed above. Then, the centroid vertex 704 is projected onto a plane n, thereby obtaining a projected point 708, a.k.a., a new centroid vertex 708. The plane n contains the mean point 612 of the two edge-vertices 404 and 406, and is parallel with the normal vector n^ace of the plane / face on which the two edge-vertices 402 and 404 are. The plane n is also parallel with both edges of the neighboring node 602 that the two edge-vertices 402 and 404 reside on, i.e., the plane n is parallel to vectors u and v.

[0085] Then, the orientation of the non-closed surface of the current node 402 - i.e., the surface formed by the vertices 404, 406, and 706 - may be determined based on the position of the centroid vertex 708. More specifically, as explained above, the orientation of the non-closed surface of the current node 402 may parallel to a direction from the centroid vertex 708 of the neighboring node 602 towards the mean position 612. The centroid vertex 710 may be positioned on a point on the line segment starting at the centroid vertex 708 and passing through the mean position 612, i.e. having the offset vector as its direction.

[0086] Note that if the neighboring node 602 only contains the same two edge vertices, i.e., the edge vertices 404 and 406, that are also included in the current node 402, both nodes may be left without any reconstructed content. On the other hand, if the neighboring node 602 has 4 or more edge vertices, the same method explained with respect to FIG. 7B can be applied. For example, in case the neighboring node 602 has 4 edge vertices as shown in FIG. 18A or 18B, the dot circle shown in the middle of FIG. 18A or 18B corresponds to the centroid vertex. According to the above embodiments, this centroid vertex can be projected on to the plane n, and thus a new centroid vertex can be obtained. This new centroid vertex can be used for determining the orientation of the current node.

[0087] Referring back to FIG. 3, after performing the step s304, the process 300 may proceed to step s306. The step s306 comprises calculating the width of the non-closed segment of the current node, i.e., the value of an offset (a.k.a., “offset value”). FIGS. 8A and 8B show an example of the offset value. In FIGS. 8A and 8B, the offset value defines the distance between the mean position 612 of the two edge vertices 404 and 406 of the current node 402 and the centroid 706 of the current node 402.

[0088] To calculate the offset value, the following steps may be performed.

[0089] First, an array of elements is created. FIG. 8B shows an example of an array 802._As shown in FIG. 8B, the number of the array elements is equal to a number of line segments 804-814 corresponding to an offset vector 850. Each of the array elements is associated with each of the line segments.

[0090] Then, for each of the line segments, a determination is made as to whether there is any point within a certain distance from the line segment. In FIG. 8A, the radius of a cylinder 820 corresponds to this certain distance. In other words, if a point is within the cylinder 820, the point is determined to be within the certain distance from a corresponding line segment.

[0091] If there is any point within the certain distance from a line segment, the value of the array element corresponding to the line segment is set to be 1. Otherwise, the value of the array element corresponding to the line segment is set to be 0. FIG. 8B shows exemplary values of the array elements.

[0092] After determining the values of the array elements, the first non-occupied array element, i.e., the array element having the value of 0, from the mean position 612 is identified. In the example shown in FIG. 8B, the fifth array element is the first array element having the value of 0. Then, a distance between the mean position 612 to the line segment corresponding to the fifth array element corresponds to the offset value, i.e., the width of the non-closed surface.

[0093] An alternative way that has proven to be efficient on certain sequences is, instead of setting the array elements to occupied and non-occupied, counting a number of points corresponding to each array element and determining the offset value based on the counted numbers of the array elements. FIG. 9A shows exemplary counted values of the array elements.

[0094] Then, instead of picking the first non-occupied array element to determine the offset value, a sliding average of the counted values of array elements may be calculated for a certain window size. Then, the first array element at which the sliding average no longer exceeds a predefined value is picked to determine the offset value.

[0095] For example, in FIG. 9B, for the third array element, the sliding average is (2+3+3) / 3, i.e., an average of the values of the previous array element (i.e., 2), the third array element (i.e., 3), and the next array element (i.e., 3). Similarly, for the fourth array element, the sliding average is (3+3+0) / 3. Let’s assume that the predefined value is 1.5. Then, at the fifth array element, the sliding average becomes below the predefined value because 1 < 1.5. Then, the offset value, i.e., the width of the non-closed surface, may be set to be a distance between the mean position 612 and the line segment 812. This method of selecting the width of the non-closed surface is effective for sparser point clouds, where not all adjacent voxels are occupied.

[0096] In some scenarios, a non-closed surface may stretch over multiple nodes, as shown in FIGS. 10A and 10B. In these scenarios, there are two adjacent nodes with two edge vertices. For example, in FIGS. 10A and 10B, there are two adjacent nodes 1002 and 1004. The node 1002 has two edge vertices 1012 and 1014 and the node 1004 has two edge vertices 1014 and 1016. Using the process 300 described above, a centroid vertex 1018 for the node 1002 may be encoded / decoded and a centroid vertex 1020 for the node 1004 may be encoded / decoded.

[0097] However, because it is unclear as to whether a non-closed surface within the node 1002, i.e., the triangle formed by the points 1012, 1014, and 1018, and a non-closed surface within the node 1004, i.e., the triangle formed by the points 1014, 1016, and 1020, forms the same surface, the decoder may not know whether to put a centroid vertex at the face between the nodes 1002 and 1004. Experiments have shown that always putting a face vertex in between adjacent nodes gives the best results in case each of the two adjacent nodes has two edge vertices one of which is shared by the adjacent nodes and each of the two adjacent nodes has an activated centroid vertex. Accordingly, in some embodiments, in decoding the two adjacent nodes 1002 and 1004, it is assumed that there is a face vertex 1022 between the nodes 1002 and 1004.

[0098] In other embodiments, instead of always putting a face vertex, a determination may be made as to whether a number of points in the close vicinity of the intersection point between the line segment, e.g., the line between the points 1018 and 1020, and the face between the nodes 1002 and 1004 is greater than a certain threshold value and in case the number is greater than the threshold value, the face vertex 1022 may be added and used for encoding the point data for the nodes 1002 and 1004.

[0099] As shown in FIG. 10B, in some scenarios, a node may include multiple nonclosed surface parts. For example, in FIG. 10B, each of the nodes 1002 and 1004 includes two triangles. In these scenarios, to reconstruct the non-closed surface parts of each node as intended, the edge vertices and the face vertices around the centroid vertex of each node must be ordered. Thus, according to some embodiments of this disclosure, the edge vertices and the face vertex / vertices of a node may be ordered in the following manner during the reconstruction of the non-closed surface parts.

[0100] Note that in case a node has only two edge vertices but does not include any face vertex, the two edge vertices of the node can be ordered randomly and the reconstruction of the non-closed surface will be the same. On the other hand, in case a node includes one or more face vertices, one of the face vertices is randomly selected. Then the first selected face vertex is placed into a list of vertices, e.g., an array of vertices, along with the centroid vertex of the node. Here, since the first selected face vertex is added to the array first, the first selected face vertex will be added to an array element at the index 0 of the array. The first selected face vertex and the centroid vertex of the node will form a triangle.

[0101] After placing the first selected face vertex into the array, the edge vertex that is disposed on the same face of the node on which the first selected face vertex is added to the array, i.e., to an array element at the index 1 of the array. Then, the last edge vertex, i.e., the remaining edge vertex, is added to the end of the array, e.g., to an array element at the index 2 of the array. In case there are two face vertices, after adding the last edge vertex to the array, the last face vertex may be added to the array, e.g., to an array element at the index 3 of the array. An exemplary order of adding the vertices of a node to the array is illustrated in FIG. 11.

[0102] As illustrated in FIG. 11, by ordering the edge- and face vertices of a node in the manner described above before populating the triangles, i.e., non-closed surface segments, the decoder would know that a first triangle is defined by the centroid vertex and the vertices index 0 and 1 in the array, a second triangle is defined by the centroid vertex and the vertices indexed 1 and 2 in the array, and a third triangle is defined by the centroid vertex and the vertices indexed 2 and 3 in the array.

[0103] FIG. 12 shows a process 1200 for decoding 3D point data indicating points in a current node. The process 1200 may begin with step si202.

[0104] The step s!202 comprises determining a number of edge vertices included in the current node. In case the number of the edge vertices is greater than or equal to three, then the existing process of decoding point data is used to decode the point data for the current node. On the other hand, in case the number of the edge vertices is equal to two, the process 1200 may proceed to step si204.

[0105] The step s!204 comprises obtaining the two edge vertices of the current node and the offset value of the current node. The positions of the two edge vertices and the offset value of the current node may be included in a bitstream that the decoder receives from the encoder. Then the process 1200 may proceed to step si205.

[0106] The step s!205 comprises determining whether the current node satisfies a condition. If the current node does not satisfy the condition, the process 1200 is terminated for the current node. This means that the current node is left without any reconstructed content. In other words, none of the points within the current node will be reconstructed.

[0107] On the contrary, if the current node satisfies the condition, the process 1200 may proceed to step si206. This means that the points in the current node will be decoded using the remaining steps of the process 1200 and will be reconstructed.

[0108] In some embodiments, the condition is that the two edge-vertices of the current node are on the same face of the current node but are not on the same edge of the current node. This condition is needed because not all nodes having two edge-vertices are amenable to be represented.

[0109] For example, in case the two edge-vertices of the current node are not on the same face, it is likely that the surface that is being captured in the current node is not connected in the original point cloud and thus the current node should be left without any reconstructed content. An example of this scenario is illustrated in FIG. 5 A.

[0110] In another example, in case the two edge-vertices of the current node are positioned on the same edge of the current node as shown in FIG. 5B, it is likely that these two vertices are the result of a surface slightly touching the current node. Hence, the current node should also be left without any reconstructed content.

[0111] In all other cases of having two edge-vertices in a node, it is assumed that there is a non-closed surface in the node and a representation of the non-closed surface will be created.

[0112] In the step S1206, the decoder determines the orientation of the non-closed surface of the current node based on the two edge vertices of the current node. The way that the decoder determines the orientation of the non-closed surface is same as the way that the encoder determines the orientation of the non-closed surface in the step s304.

[0113] After performing the step si206, the process 1200 may proceed to step S1208. The step s!208 comprises determining the centroid vertex of the current node based on the offset value obtained in the step si 204 and the orientation of the non-closed surface of the current node determined in the step S1206. Then the process 1200 may proceed to step S1210. The step s!210 comprises reconstructing point data indicting points included in the current node using the edge vertices obtained in the step si204 and the centroid vertex of the current node determined in the step S1208.

[0114] As explained above, in order to determine the centroid vertex of the current node having only two edge vertices, the neighboring node information is needed. However, there may be a scenario where the necessary neighboring information is not available when determining the centroid vertex of the current node. In order to prevent this scenario, according to some embodiments of this disclosure, when encoding / decoding the point cloud, the centroid vertices of all nodes having more than two edge vertices are encoded / decoded first. Then, the centroid vertices of nodes having two edge vertices are encoded / decoded. According to these embodiments, in the bitstream that the encoder sends to the decoder, the offset values of the nodes having more than two edge vertices will be coded first and then the offset values of the nodes having two edge vertices will be coded. This ensures that the necessary neighboring node information will always be available to the encoder / decoder when encoding / decoding the centroids.

[0115] FIG. 13 shows a process 1300 of encoding point data which indicates a plurality of points in a three-dimensional, 3D, space, according to some embodiments. The process 1300 may begin with step si302. The step si302 comprises obtaining information about a first node, wherein the information about the first node identifies edge-vertices of the first node. Step si304 comprises obtaining information about a second node that is adjacent to the first node, wherein the information about the second node identifies edge-vertices of the second node. Step si306 comprises, based on the information about the first and second nodes, determining a position of a centroid vertex of the first node. Step si 308 comprises encoding the point data using at least the position of the centroid vertex of the first node, wherein the edge-vertices of the first node are disposed on the same face of the first node.

[0116] In some embodiments, the edge-vertices of the first node are not disposed on the same edge of the first node, and a number of the edge-vertices of the first node is two.

[0117] In some embodiments, the edge-vertices of the first node include a first edgevertex and a second edge-vertex, and the position of the centroid vertex of the first node is determined based on a mean position of the first and second edge-vertices.

[0118] In some embodiments, the process 1300 comprises determining a centroid vertex of the second node, wherein the position of the centroid vertex of the first node is determined based on a position of the centroid vertex of the second node and the mean position of the first and second edge-vertices.

[0119] In some embodiments, the position of the centroid vertex of the first node is determined based on a direction from the position of the centroid vertex of the second node towards the mean position of the first and second edge-vertices.

[0120] In some embodiments, the edge-vertices of the second node include a third edge-vertex, a fourth edge-vertex, and a fifth edge-vertex, and the position of the centroid vertex of the second node is a mean position of the third, fourth, and fifth edge-vertices.

[0121] In some embodiments, the process 1300 comprises determining a reference vertex of the second node, wherein the reference vertex corresponds to a projection of the centroid vertex of the second node onto a plane intersecting the mean position of the first and second edge-vertices and being perpendicular to the face of the first node, on which the edgevertices of the first node are disposed, wherein the position of the centroid vertex of the first node is determined based on a direction from the reference vertex towards the mean position of the first and second edge-vertices.

[0122] In some embodiments, the process 1300 comprises applying an offset to the position of the centroid vertex of the second node, thereby determining an updated position of the centroid vertex of the second node, wherein the information about the second node comprises the offset, and the position of the centroid vertex of the first node is determined based on a direction from the updated position of the centroid vertex of the second node towards the mean position of the first and second edge-vertices.

[0123] In some embodiments, the process 1300 comprises obtaining an array of values, wherein each value in the array is associated with each of a plurality of line segments within the first node, wherein the line segments extend in a direction parallel to a direction from a certain vertex in the second node towards the mean position of the first and second edge-vertices; for each of the plurality of line segments, determining whether a point exists within a predefined distance in a particular direction from the line segment; based on the determination, determining a length of an offset line, wherein a direction of the offset line is parallel to a direction from the certain vertex in the second node towards the mean position of the first and second edge-vertices; and determining the position of the centroid vertex of the first node based on the length of the offset line.

[0124] In some embodiments, each value in the array indicates whether any point exists within the predefined distance in the particular direction from each of the plurality of line segments.

[0125] In some embodiments, the values in the array are arranged in a sequence, the process 1300 comprises, among the values in the array, identifying a first value in the sequence, which indicates that no point exists within the predefined distance in the particular direction from the line segment associated with the first value, and the length of the offset line is determined based on an index of the array corresponding to the first value.

[0126] In some embodiments, each value in the array indicates a number of points that exist within the predefined distance in the particular direction from each of the plurality of line segments.

[0127] In some embodiments, the process 1300 comprises calculating a sliding average for every N number of values in the array; comparing each of the sliding averages to a preset value; and based on the comparison, determining that one of the sliding averages is less than the preset value, wherein the length of the offset line is determined based on the above determination.

[0128] In some embodiments, the process 1300 comprises obtaining information about a third node that is adjacent to the first node, wherein the information about the third node identifies edge-vertices of the third node; determining a centroid vertex of the third node based on the information about the third node; based on the location of the centroid vertex of the first node and a location of the centroid vertex of the third node, determining a face vertex disposed on a face between the first and third nodes; encoding point data indicating a plurality of points in the first node using the edge-vertices of the first node and the face vertex; and encoding point data indicating a plurality of points in the third node using the edge-vertices of the third node and the face vertex.

[0129] In some embodiments, the edge-vertices of the third node are disposed on the same face of the third node but are not disposed on the same edge of the third node, and a number of the edge-vertices of the third node is two.

[0130] In some embodiments, the process 1300 comprises determining a number of points within a predefined distance from the face vertex, wherein the point data indicating the plurality of points in the first or third node is encoded using the face vertex based on determining that the number of points within the predefined distance from the face vertex is greater than or equal to a predefined value.

[0131] FIG. 14 shows a process 1400 of decoding point data which indicates a plurality of points in a three-dimensional, 3D, space, according to some embodiments. The process 1400 may begin with step si402. The step si402 comprises obtaining information about a first node, wherein the information about the first node identifies edge-vertices of the first node. Step si404 comprises obtaining information about a second node that is adjacent to the first node, wherein the information about the second node identifies edge-vertices of the second node. Step si406 comprises, based on the information about the first and second nodes, determining a position of a centroid vertex of the first node. Step s!408 comprises decoding the point data using at least the position of the centroid vertex of the first node, wherein the edge-vertices of the first node are disposed on the same face of the first node.

[0132] In some embodiments, the edge-vertices of the first node are not disposed on the same edge of the first node, and a number of the edge-vertices of the first node is two.

[0133] In some embodiments, the edge-vertices of the first node include a first edgevertex and a second edge-vertex, and the position of the centroid vertex of the first node is determined based on a mean position of the first and second edge-vertices.

[0134] In some embodiments, the process 1400 comprises determining a centroid vertex of the second node, wherein the position of the centroid vertex of the first node is determined based on a position of the centroid vertex of the second node and the mean position of the first and second edge-vertices.

[0135] In some embodiments, the position of the centroid vertex of the first node is determined based on a direction from the position of the centroid vertex of the second node towards the mean position of the first and second edge-vertices.

[0136] In some embodiments, the edge-vertices of the second node include a third edge-vertex, a fourth edge-vertex, and a fifth edge-vertex, and the position of the centroid vertex of the second node is a mean position of the third, fourth, and fifth edge-vertices.

[0137] In some embodiments, the process 1400 comprises determining a reference vertex of the second node, wherein the reference vertex corresponds to a projection of the centroid vertex of the second node onto a plane intersecting the mean position of the first and second edge-vertices and being perpendicular to the face of the first node, on which the edgevertices of the first node are disposed, wherein the position of the centroid vertex of the first node is determined based on a direction from the reference vertex towards the mean position of the first and second edge-vertices.

[0138] In some embodiments, the process 1400 comprises applying an offset to the position of the centroid vertex of the second node, thereby determining an updated position of the centroid vertex of the second node, wherein the information about the second node comprises the offset, and the position of the centroid vertex of the first node is determined based on a direction from the updated position of the centroid vertex of the second node towards the mean position of the first and second edge-vertices.

[0139] In some embodiments, the information about the first node includes a length of an offset line, wherein a direction of the offset line is parallel to a direction from the certain vertex in the second node towards the mean position of the first and second edgevertices; and the position of the centroid vertex of the first node is determined based on the length of the offset line.

[0140] In some embodiments, the process 1400 comprises obtaining information about a third node that is adjacent to the first node, wherein the information about the third node identifies edge-vertices of the third node; determining a centroid vertex of the third node based on the information about the third node; based on the location of the centroid vertex of the first node and a location of the centroid vertex of the third node, determining a face vertex disposed on a face between the first and third nodes; decoding point data indicating a plurality of points in the first node using the edge-vertices of the first node and the face vertex; and decoding point data indicating a plurality of points in the third node using the edge-vertices of the third node and the face vertex.

[0141] In some embodiments, the edge-vertices of the third node are disposed on the same face of the third node but are not disposed on the same edge of the third node, and a number of the edge-vertices of the third node is two.

[0142] In some embodiments, the process 1400 comprises obtaining an array comprising at least a first array element, a second array element, a third array element, and a fourth array element, which are arranged in a sequence, wherein the first array element indicates the face vertex, the second array element indicates one of the edge vertices of the first node, said one of the edge vertices indicated by the second array element and the face vertex are disposed on the same face of the first node, and the third array element indicates another one of the edge vertices of the first node, wherein identifying a first surface segment using the centroid vertex of the first node, the face vertex, and said one of the edge vertices of the first node; identifying a second surface segment using the centroid vertex of the first node, said one of the edge vertices of the first node, and said another one of the edge vertices of the first node, wherein the point data is decoded using at least the identified first surface segments and the second surface segments.

[0143] FIG. 15 is a block diagram of an apparatus 1500 for implementing an encoder, a decoder, or a component included in the encoder or the decoder, according to some embodiments. When apparatus 1500 implements a decoder, apparatus 1500 may be referred to as a “decoding apparatus 1500,” and when apparatus 1500 implements an encoder, apparatus 1500 may be referred to as an “encoding apparatus 1500.” As shown in FIG. 15, apparatus 1500 may comprise: processing circuitry (PC) 1502, which may include one or more processors (P) 1555 (e.g., a general purpose microprocessor 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 (i.e., apparatus 1500 may be a distributed computing apparatus); at least one network interface 1548 comprising a transmitter (Tx) 1545 and a receiver (Rx) 1547 for enabling apparatus 1500 to transmit data to and receive data from other nodes connected to a network 110 (e.g., an Internet Protocol (IP) network) to which network interface 1548 is connected (directly or indirectly) (e.g., network interface 1548 may be wirelessly connected to the network 110, in which case network interface 1548 is connected to an antenna arrangement); and a storage unit (a.k.a., “data storage system”) 1508, which may include one or more non-volatile storage devices and / or one or more volatile storage devices. In embodiments where PC 1502 includes a programmable processor, a computer program product (CPP) 1541 may be provided. CPP 1541 includes a computer readable medium (CRM) 1542 storing a computer program (CP) 1543 comprising computer readable instructions (CRI) 1544. CRM 1542 may be anon-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 1544 of computer program 1543 is configured such that when executed by PC 1502, the CRI causes apparatus 1500 to perform steps described herein (e.g., steps described herein with reference to the flow charts). In other embodiments, apparatus 1500 may be configured to perform steps described herein without the need for code. That is, for example, PC 1502 may consist merely of one or more ASICs. Hence, the features of the embodiments described herein may be implemented in hardware and / or software.

[0144] Summary of Embodiments

[0145] Al. A method (1300) of encoding point data which indicates a plurality of points in a three-dimensional, 3D, space, the method comprising: obtaining (si302) information about a first node, wherein the information about the first node identifies edge-vertices of the first node; obtaining (sl304) information about a second node that is adjacent to the first node, wherein the information about the second node identifies edge-vertices of the second node; based on the information about the first and second nodes, determining (s 1306) a position of a centroid vertex of the first node; and encoding (si 308) the point data using at least the position of the centroid vertex of the first node, wherein the edge-vertices of the first node are disposed on the same face of the first node.

[0146] A2. The method of embodiment Al, wherein the edge-vertices of the first node are not disposed on the same edge of the first node, and a number of the edge-vertices of the first node is two.

[0147] A3. The method of any one of embodiments A1-A2, wherein the edge-vertices of the first node include a first edge-vertex and a second edge-vertex, and the position of the centroid vertex of the first node is determined based on a mean position of the first and second edge-vertices.

[0148] A4. The method of embodiment A3, the method comprising: determining a centroid vertex of the second node, wherein the position of the centroid vertex of the first node is determined based on a position of the centroid vertex of the second node and the mean position of the first and second edge-vertices.

[0149] A5. The method of embodiment A4, wherein the position of the centroid vertex of the first node is determined based on a direction from the position of the centroid vertex of the second node towards the mean position of the first and second edge-vertices.

[0150] A6. The method of embodiment A4 or A5, wherein the edge-vertices of the second node include a third edge-vertex, a fourth edge-vertex, and a fifth edge-vertex, and the position of the centroid vertex of the second node is a mean position of the third, fourth, and fifth edge-vertices.

[0151] A7. The method of embodiment A4, the method comprising: determining a reference vertex of the second node, wherein the reference vertex corresponds to a projection of the centroid vertex of the second node onto a plane intersecting the mean position of the first and second edge-vertices and being perpendicular to the face of the first node, on which the edge-vertices of the first node are disposed, wherein the position of the centroid vertex of the first node is determined based on a direction from the reference vertex towards the mean position of the first and second edge-vertices.

[0152] A8. The method of embodiment A4, the method comprising: applying an offset to the position of the centroid vertex of the second node, thereby determining an updated position of the centroid vertex of the second node, wherein the information about the second node comprises the offset, and the position of the centroid vertex of the first node is determined based on a direction from the updated position of the centroid vertex of the second node towards the mean position of the first and second edge-vertices.

[0153] A9. The method of any one of embodiments A3-A8, the method comprising: obtaining an array of values, wherein each value in the array is associated with each of a plurality of line segments within the first node, wherein the line segments extend in a direction parallel to a direction from a certain vertex in the second node towards the mean position of the first and second edge-vertices; for each of the plurality of line segments, determining whether a point exists within a predefined distance in a particular direction from the line segment; based on the determination, determining a length of an offset line, wherein a direction of the offset line is parallel to a direction from the certain vertex in the second node towards the mean position of the first and second edge-vertices; and determining the position of the centroid vertex of the first node based on the length of the offset line.

[0154] A10. The method of embodiment A9, wherein each value in the array indicates whether any point exists within the predefined distance in the particular direction from each of the plurality of line segments. All. The method of embodiment A10, wherein the values in the array are arranged in a sequence, the method comprises, among the values in the array, identifying a first value in the sequence, which indicates that no point exists within the predefined distance in the particular direction from the line segment associated with the first value, and the length of the offset line is determined based on an index of the array corresponding to the first value.

[0155] Al 2. The method of embodiment A9, wherein each value in the array indicates a number of points that exist within the predefined distance in the particular direction from each of the plurality of line segments.

[0156] Al 3. The method of embodiment A12, the method comprising: calculating a sliding average for every N number of values in the array; comparing each of the sliding averages to a preset value; and based on the comparison, determining that one of the sliding averages is less than the preset value, wherein the length of the offset line is determined based on the above determination.

[0157] Al 4. The method of any one of embodiments Al-Al 3, the method comprising: obtaining information about a third node that is adjacent to the first node, wherein the information about the third node identifies edge-vertices of the third node; determining a centroid vertex of the third node based on the information about the third node; based on the location of the centroid vertex of the first node and a location of the centroid vertex of the third node, determining a face vertex disposed on a face between the first and third nodes; encoding point data indicating a plurality of points in the first node using the edge-vertices of the first node and the face vertex; and encoding point data indicating a plurality of points in the third node using the edge-vertices of the third node and the face vertex

[0158] Al 5. The method of embodiment A14, wherein the edge-vertices of the third node are disposed on the same face of the third node but are not disposed on the same edge of the third node, and a number of the edge-vertices of the third node is two.

[0159] Al 6. The method of embodiment Al4 or Al 5, the method comprising: determining a number of points within a predefined distance from the face vertex, wherein the point data indicating the plurality of points in the first or third node is encoded using the face vertex based on determining that the number of points within the predefined distance from the face vertex is greater than or equal to a predefined value.

[0160] Bl. A method (1400) of decoding point data which indicates a plurality of points in a three-dimensional, 3D, space, the method comprising: obtaining (sl402) information about a first node, wherein the information about the first node identifies edge-vertices of the first node; obtaining (sl404) information about a second node that is adjacent to the first node, wherein the information about the second node identifies edge-vertices of the second node; based on the information about the first and second nodes, determining (s!406) a position of a centroid vertex of the first node; and decoding (si408) the point data using at least the position of the centroid vertex of the first node, wherein the edge-vertices of the first node are disposed on the same face of the first node.

[0161] B2. The method of embodiment Bl, wherein the edge-vertices of the first node are not disposed on the same edge of the first node, and a number of the edge-vertices of the first node is two.

[0162] B3. The method of any one of embodiments B1-B2, wherein the edge-vertices of the first node include a first edge-vertex and a second edge-vertex, and the position of the centroid vertex of the first node is determined based on a mean position of the first and second edge-vertices.

[0163] B4. The method of embodiment B3, the method comprising: determining a centroid vertex of the second node, wherein the position of the centroid vertex of the first node is determined based on a position of the centroid vertex of the second node and the mean position of the first and second edge-vertices.

[0164] B5. The method of embodiment B4, wherein the position of the centroid vertex of the first node is determined based on a direction from the position of the centroid vertex of the second node towards the mean position of the first and second edge-vertices.

[0165] B6. The method of embodiment B4 or B5, wherein the edge-vertices of the second node include a third edge-vertex, a fourth edge-vertex, and a fifth edge-vertex, and the position of the centroid vertex of the second node is a mean position of the third, fourth, and fifth edge-vertices.

[0166] B7. The method of embodiment B4, the method comprising: determining a reference vertex of the second node, wherein the reference vertex corresponds to a projection of the centroid vertex of the second node onto a plane intersecting the mean position of the first and second edge-vertices and being perpendicular to the face of the first node, on which the edge-vertices of the first node are disposed, wherein the position of the centroid vertex of the first node is determined based on a direction from the reference vertex towards the mean position of the first and second edge-vertices.

[0167] B8. The method of embodiment B4, the method comprising: applying an offset to the position of the centroid vertex of the second node, thereby determining an updated position of the centroid vertex of the second node, wherein the information about the second node comprises the offset, and the position of the centroid vertex of the first node is determined based on a direction from the updated position of the centroid vertex of the second node towards the mean position of the first and second edge-vertices.

[0168] B9. The method of any one of embodiments B3-B8, wherein the information about the first node includes a length of an offset line, wherein a direction of the offset line is parallel to a direction from the certain vertex in the second node towards the mean position of the first and second edge-vertices; and the position of the centroid vertex of the first node is determined based on the length of the offset line.

[0169] BIO. The method of any one of embodiments B1-B9, the method comprising: obtaining information about a third node that is adjacent to the first node, wherein the information about the third node identifies edge-vertices of the third node; determining a centroid vertex of the third node based on the information about the third node; based on the location of the centroid vertex of the first node and a location of the centroid vertex of the third node, determining a face vertex disposed on a face between the first and third nodes; decoding point data indicating a plurality of points in the first node using the edge-vertices of the first node and the face vertex; and decoding point data indicating a plurality of points in the third node using the edge-vertices of the third node and the face vertex.

[0170] Bl 1. The method of embodiment BIO, wherein the edge-vertices of the third node are disposed on the same face of the third node but are not disposed on the same edge of the third node, and a number of the edge-vertices of the third node is two.

[0171] Bl2. The method of embodiment BIO or Bl 1, the method comprising: obtaining an array comprising at least a first array element, a second array element, a third array element, and a fourth array element, which are arranged in a sequence, wherein the first array element indicates the face vertex, the second array element indicates one of the edge vertices of the first node, said one of the edge vertices indicated by the second array element and the face vertex are disposed on the same face of the first node, and the third array element indicates another one of the edge vertices of the first node, wherein identifying a first surface segment using the centroid vertex of the first node, the face vertex, and said one of the edge vertices of the first node; identifying a second surface segment using the centroid vertex of the first node, said one of the edge vertices of the first node, and said another one of the edge vertices of the first node, wherein the point data is decoded using at least the identified first surface segments and the second surface segments.

[0172] Cl. A computer program (1500) comprising instructions (1544) which when executed by processing circuitry (1502) cause the processing circuitry to perform the method of any one of embodiments Al-Bl 2.

[0173] C2. A carrier containing the computer program of embodiment Cl, wherein the carrier is one of an electronic signal, an optical signal, a radio signal, and a computer readable storage medium.

[0174] DI. An apparatus (1500) for encoding point data which indicates a plurality of points in a three-dimensional, 3D, space, the apparatus being configured to: obtain (sl302) information about a first node, wherein the information about the first node identifies edgevertices of the first node; obtain (si 304) information about a second node that is adjacent to the first node, wherein the information about the second node identifies edge-vertices of the second node; based on the information about the first and second nodes, determine (s 1306) a position of a centroid vertex of the first node; and encode (si 308) the point data using at least the position of the centroid vertex of the first node, wherein the edge-vertices of the first node are disposed on the same face of the first node.

[0175] D2. The apparatus of embodiment DI, wherein the apparatus is further configured to perform the method of any one of embodiments A2-A16.

[0176] El. An apparatus (1500) for decoding point data which indicates a plurality of points in a three-dimensional, 3D, space, the apparatus being configured to: obtain (sl402) information about a first node, wherein the information about the first node identifies edgevertices of the first node; obtain (si404) information about a second node that is adjacent to the first node, wherein the information about the second node identifies edge-vertices of the second node; based on the information about the first and second nodes, determine (sl406) a position of a centroid vertex of the first node; and decode (si408) the point data using at least the position of the centroid vertex of the first node, wherein the edge-vertices of the first node are disposed on the same face of the first node.

[0177] E2. The apparatus of embodiment El, wherein the apparatus is further configured to perform the method of any one of embodiments B2-B12.

[0178] Fl. An apparatus (1500) comprising: processing circuitry (1502); and a memory (1541), said memory containing instructions executable by said processing circuitry, whereby the apparatus is operative to perform the method of any one of embodiments Al-Bl2.

[0179] 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 possible variations thereof is encompassed by the disclosure unless otherwise indicated herein or otherwise clearly contradicted by context.

[0180] As used herein transmitting a message “to” or “toward” an intended recipient encompasses transmitting the message directly to the intended recipient or transmitting the message indirectly to the intended recipient (i.e., one or more other nodes are used to relay the message from the source node to the intended recipient). Likewise, as used herein receiving a message “from” a sender encompasses receiving the message directly from the sender or indirectly from the sender (i.e., one or more nodes are used to relay the message from the sender to the receiving node). Further, as used herein “a” means “at least one” or “one or more.”

[0181] 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.

[0182] References

[0183] [1] Graziosi, D., Nakagami, 0., Kuma, S., Zaghetto, A., Suzuki, T. and Tabatabai, A., 2020. An overview of ongoing point cloud compression standardization activities: videobased (V-PCC) and geometry-based (G-PCC). APSIPA Transactions on Signal and Information Processing, 9(1).

[0184] [2], N. Svensson, “[G-PCC][EE13.50] Node Unique DSE,” ISO / IEC JTC1 / SC29 / WG7 m63102, Geneva, July 2023.

Claims

1. A method (1300) for encoding point data that indicates a plurality of points in a three-dimensional, 3D, space, the method comprising:obtaining (si302) information about a first node, wherein the information about the first node identifies edge-vertices of the first node;obtaining (sl304) information about a second node that is adjacent to the first node, wherein the information about the second node identifies edge-vertices of the second node;based on the information about the first and second nodes, determining (si306) a position of a centroid vertex of the first node; andencoding (si 308) the point data using at least the position of the centroid vertex of the first node, whereinthe edge-vertices of the first node are disposed on the same face of the first node.

2. The method of claim 1, whereinthe edge-vertices of the first node are not disposed on the same edge of the first node, anda number of the edge-vertices of the first node is two.

3. The method of any one of claims 1-2, whereinthe edge-vertices of the first node include a first edge-vertex and a second edgevertex, andthe position of the centroid vertex of the first node is determined based on a mean position of the first and second edge-vertices.

4. The method of claim 3, the method comprising:determining a centroid vertex of the second node, whereinthe position of the centroid vertex of the first node is determined based on a position of the centroid vertex of the second node and the mean position of the first and second edgevertices.

5. The method of claim 4, wherein the position of the centroid vertex of the first node is determined based on a direction from the position of the centroid vertex of the second node towards the mean position of the first and second edge-vertices.

6. The method of claim 4 or 5, whereinthe edge-vertices of the second node include a third edge-vertex, a fourth edge-vertex, and a fifth edge-vertex, andthe position of the centroid vertex of the second node is a mean position of the third, fourth, and fifth edge-vertices.

7. The method of claim 4, the method comprising:determining a reference vertex of the second node, whereinthe reference vertex corresponds to a projection of the centroid vertex of the second node onto a plane intersecting the mean position of the first and second edge-vertices and being perpendicular to the face of the first node, on which the edge-vertices of the first node are disposed, andthe position of the centroid vertex of the first node is determined based on a direction from the reference vertex towards the mean position of the first and second edge-vertices.

8. The method of claim 4, the method further comprising:applying an offset to the position of the centroid vertex of the second node, thereby determining an updated position of the centroid vertex of the second node, whereinthe information about the second node comprises the offset, andthe position of the centroid vertex of the first node is determined based on a direction from the updated position of the centroid vertex of the second node towards the mean position of the first and second edge-vertices.

9. The method of any one of claims 3-8, the method further comprising:obtaining an array of values, wherein each value in the array is associated with each of a plurality of line segments within the first node, wherein the line segments extend in a direction parallel to a direction from a certain vertex in the second node towards the mean position of the first and second edge-vertices;for each of the plurality of line segments, determining whether a point exists within a predefined distance in a particular direction from the line segment;based on the determination, determining a length of an offset line, wherein a direction of the offset line is parallel to a direction from the certain vertex in the second node towards the mean position of the first and second edge-vertices; anddetermining the position of the centroid vertex of the first node based on the length of the offset line.

10. The method of claim 9, wherein each value in the array indicates whether any point exists within the predefined distance in the particular direction from each of the plurality of line segments.

11. The method of claim 10, whereinthe values in the array are arranged in a sequence,the method comprises, among the values in the array, identifying a first value in the sequence, which indicates that no point exists within the predefined distance in the particular direction from the line segment associated with the first value, andthe length of the offset line is determined based on an index of the array corresponding to the first value.

12. The method of claim 9, wherein each value in the array indicates a number of points that exist within the predefined distance in the particular direction from each of the plurality of line segments.

13. The method of claim 12, the method comprising:calculating a sliding average for every N number of values in the array;comparing each of the sliding averages to a preset value; andbased on the comparison, determining that one of the sliding averages is less than the preset value, whereinthe length of the offset line is determined based on the above determination.

14. The method of any one of claims 1-13, the method comprising:obtaining information about a third node that is adjacent to the first node, wherein the information about the third node identifies edge-vertices of the third node;determining a centroid vertex of the third node based on the information about the third node;based on the location of the centroid vertex of the first node and a location of the centroid vertex of the third node, determining a face vertex disposed on a face between the first and third nodes;encoding point data indicating a plurality of points in the first node using the edgevertices of the first node and the face vertex; andencoding point data indicating a plurality of points in the third node using the edgevertices of the third node and the face vertex15. The method of claim 14, whereinthe edge-vertices of the third node are disposed on the same face of the third node but are not disposed on the same edge of the third node, anda number of the edge-vertices of the third node is two.

16. The method of claim 14 or 15, the method comprising:determining a number of points within a predefined distance from the face vertex, whereinthe point data indicating the plurality of points in the first or third node is encoded using the face vertex based on determining that the number of points within the predefined distance from the face vertex is greater than or equal to a predefined value.

17. A method (1400) of decoding point data which indicates a plurality of points in a three-dimensional, 3D, space, the method comprising:obtaining (si402) information about a first node, wherein the information about the first node identifies edge-vertices of the first node;obtaining (sl404) information about a second node that is adjacent to the first node, wherein the information about the second node identifies edge-vertices of the second node;based on the information about the first and second nodes, determining (sl406) a position of a centroid vertex of the first node; anddecoding (si 408) the point data using at least the position of the centroid vertex of the first node, whereinthe edge-vertices of the first node are disposed on the same face of the first node.

18. The method of claim 17, whereinthe edge-vertices of the first node are not disposed on the same edge of the first node, anda number of the edge-vertices of the first node is two.

19. The method of any one of claims 17-18, whereinthe edge-vertices of the first node include a first edge-vertex and a second edgevertex, andthe position of the centroid vertex of the first node is determined based on a mean position of the first and second edge-vertices.

20. The method of claim 19, the method comprising:determining a centroid vertex of the second node, whereinthe position of the centroid vertex of the first node is determined based on a position of the centroid vertex of the second node and the mean position of the first and second edgevertices.

21. The method of claim 20, wherein the position of the centroid vertex of the first node is determined based on a direction from the position of the centroid vertex of the second node towards the mean position of the first and second edge-vertices.

22. The method of claim 20 or 21, whereinthe edge-vertices of the second node include a third edge-vertex, a fourth edge-vertex, and a fifth edge-vertex, andthe position of the centroid vertex of the second node is a mean position of the third, fourth, and fifth edge-vertices.

23. The method of claim 20, the method comprising:determining a reference vertex of the second node, wherein the reference vertex corresponds to a projection of the centroid vertex of the second node onto a plane intersecting the mean position of the first and second edge-vertices and being perpendicular to the face of the first node, on which the edge-vertices of the first node are disposed, whereinthe position of the centroid vertex of the first node is determined based on a direction from the reference vertex towards the mean position of the first and second edge-vertices.

24. The method of claim 20, the method comprising:applying an offset to the position of the centroid vertex of the second node, thereby determining an updated position of the centroid vertex of the second node, whereinthe information about the second node comprises the offset, andthe position of the centroid vertex of the first node is determined based on a direction from the updated position of the centroid vertex of the second node towards the mean position of the first and second edge-vertices.

25. The method of any one of claims 19-24, whereinthe information about the first node includes a length of an offset line, wherein a direction of the offset line is parallel to a direction from the certain vertex in the second node towards the mean position of the first and second edge-vertices; andthe position of the centroid vertex of the first node is determined based on the length of the offset line.

26. The method of any one of claims 17-25, the method comprising:obtaining information about a third node that is adjacent to the first node, wherein the information about the third node identifies edge-vertices of the third node;determining a centroid vertex of the third node based on the information about the third node;based on the location of the centroid vertex of the first node and a location of the centroid vertex of the third node, determining a face vertex disposed on a face between the first and third nodes;decoding point data indicating a plurality of points in the first node using the edgevertices of the first node and the face vertex; anddecoding point data indicating a plurality of points in the third node using the edgevertices of the third node and the face vertex.

27. The method of claim 26, whereinthe edge-vertices of the third node are disposed on the same face of the third node but are not disposed on the same edge of the third node, anda number of the edge-vertices of the third node is two.

28. The method of claim 26 or 27, the method further comprising:obtaining an array comprising at least a first array element, a second array element, a third array element, and a fourth array element, which are arranged in a sequence, whereinthe first array element indicates the face vertex,the second array element indicates one of the edge-vertices of the first node,the one of the edge-vertices indicated by the second array element and the face vertex are disposed on the same face of the first node, andthe third array element indicates another one of the edge-vertices of the first node;identifying a first surface segment using the centroid vertex of the first node, the face vertex, and the one of the edge-vertices of the first node; andidentifying a second surface segment using the centroid vertex of the first node, the one of the edge-vertices of the first node, and the another one of the edge-vertices of the first node, whereinthe point data is decoded using at least the identified first surface segments and the second surface segments.

29. A computer program (1500) comprising instructions (1544) which when executed by processing circuitry (1502) cause the processing circuitry to perform the method of any one of claims 1-28.

30. A carrier containing the computer program of claim 29, wherein the carrier is one of an electronic signal, an optical signal, a radio signal, and a computer readable storage medium.

31. An apparatus (1500) for encoding point data which indicates a plurality of points in a three-dimensional, 3D, space, the apparatus being configured to:obtain (si302) information about a first node, wherein the information about the first node identifies edge-vertices of the first node;obtain (si304) information about a second node that is adjacent to the first node, wherein the information about the second node identifies edge-vertices of the second node;based on the information about the first and second nodes, determine (s 1306) a position of a centroid vertex of the first node; andencode (s 1308) the point data using at least the position of the centroid vertex of the first node, whereinthe edge-vertices of the first node are disposed on the same face of the first node.

32. The apparatus of claim 31, wherein the apparatus is further configured to perform the method of any one of claims 2-16.

33. An apparatus (1500) for decoding point data which indicates a plurality of points in a three-dimensional, 3D, space, the apparatus being configured to:obtain (si402) information about a first node, wherein the information about the first node identifies edge-vertices of the first node;obtain (si404) information about a second node that is adjacent to the first node, wherein the information about the second node identifies edge-vertices of the second node;based on the information about the first and second nodes, determine (si406) a position of a centroid vertex of the first node; anddecode (s 1408) the point data using at least the position of the centroid vertex of the first node, whereinthe edge-vertices of the first node are disposed on the same face of the first node.

34. The apparatus of claim 33, wherein the apparatus is further configured to perform the method of any one of claims 18-28.