Method for encoding and decoding a 3D point cloud, encoder, decoder

WO2025000562A1PCT designated stage expired Publication Date: 2025-01-02BEIJING XIAOMI MOBILE SOFTWARE CO LTD
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
PCT/CN2023/105439
Authority / Receiving Office
WO · WO
Patent Type
Applications
Current Assignee / Owner
Filing Date
2023-06-30
Publication Date
2025-01-02

Smart Images

  • Figure CN2023105439_02012025_PF_FP_ABST
    Figure CN2023105439_02012025_PF_FP_ABST
Patent Text Reader

Abstract

Method for decoding, from a bitstream, the geometry of a 3D point cloud, preferably implemented in a decoder, including: receiving a bitstream, wherein the bitstream contains vertex information including information about position of a vertex on edges of cuboids of leaf nodes of the octree structure of the point cloud; obtaining the vertex information to determine positions of vertices, wherein at least one vertex is adjusted towards an average position of surface points; determining points of the point cloud based on the at least one adjusted vertex, characterized in that the at least one vertex being adjusted towards the average position of surface points is based on the vertex information of at least one neighboring leaf node.
Need to check novelty before this filing date? Find Prior Art

Description

Method for encoding and decoding a 3D point cloud, encoder, decoderTechnical Field

[0001] The present invention relates to a method for encoding and decoding a 3D point cloud, encoder, and decoder.Background

[0002] As a format for the representation of 3D data, point clouds have recently gained traction as they are versatile in their capability in representing all types of 3D objects or scenes. However, as for all compression schemes, the quality of reconstruction of the points of the point cloud is essential.SUMMARY

[0003] Thus, it is an object of the present invention to provide a method for decoding the geometry of a 3D point cloud from a bitstream as well as encoding a 3D point cloud into a bitstream with increased efficiency.

[0004] The problem is solved by a method for decoding according to claim 1, a method for encoding according to claim 2, an encoder according to claim 19, a decoder according to claim 20, a bitstream according to claim 21 and software according to claim 22.

[0005] In a first aspect a method for decoding the geometry of a 3D point cloud from a bitstream is provided preferably implemented in a decoder. The method includes: receiving a bitstream, wherein the bitstream contains vertex information including information about position of a vertex on edges of cuboids of leaf nodes of the octree structure of the point cloud; obtaining the vertex information to determine positions of vertices, wherein at least one vertex is adjusted towards an average position of surface points, ; determining points of the point cloud based on the at least one adjusted vertex,characterized in that the at least one vertex being adjusted towards the average position of surface points is based on the of at least one neighboring leaf node.

[0006] Preferably, the obtaining the vertex information to determine positions of vertices, wherein at least one vertex is adjusted towards an average position of surface points comprises: determining a virtual position based on the positions of vertices of one cuboid relating to a leaf node of the octree structure; constructing triangles based on the vertices of one cuboid and the virtual position; determining a normal vector of the cuboid based on the constructed triangle; determining a centroid position based on the normal vector; adjusting at least one vertex towards the centroid position.

[0007] Thus, in a first step, a bitstream is received and the bitstream may contain information regarding the octree structure of the volume of the point cloud which may be decoded. Preferably, the geometry of the Point cloud is GPCC-encoded. Thus, preferably by decoding from the bitstream the octree information about the volume of the point could is provided. Further, the bitstream includes vertex information including position of a vertex on edges of the cuboids relating to leaf nodes in the octree structure. Preferably, further including information about vertex presence. Thus, the vertex information may be provided by receiving and / or decoding the bitstream. The obtained vertex information may be used to determine the position of the vertices before further adjustment. Therein the bitstream is preferably encoded by a TriSoup encoding scheme at the encoder.

[0008] After decoding vertex information and preferably also the octree information from the bitstream which is described in the previous step, in a further step, for reconstructing the point cloud geometry, triangles may be determined for each cuboid. In particular, a virtual position may be first determined based on the positions of vertices of one cuboid relating to a leaf node of the octree structure, preferably by averaging the positions of vertices of one cuboid. Then, a first set of triangles are constructed based on the vertices of one cuboid and the virtual position, preferably by connecting clockwise two consecutive vertices on the edges of a cuboid and the determined virtual position. Thus, the surfaces of the first set of triangles are determined by the position of the vertices included in the bitstream and the determined virtual position (i.e., the mean position of the vertices) .

[0009] Subsequently, a normal vector of the cuboid may be determined based on the constructed triangle. Therein, a normal vector is a vector that is perpendicular to a given object. Thus, the normal vector of each of the first set of triangles can be determined respectively. Then, the normal vector of the cuboid may be determined based on the sum of the determined normal vectors of the first set of triangles. Then a centroid position may be determined based on the virtual position and the normal vector of the cuboid. With such adjustment, the determined centroid position might be closer to the original positions of the point cloud in the leaf node. In addition, according to the present invention, at least one vertex may be adjusted towards the corresponding average position of surface points. Surface points are the points that constitute the exterior surface of the 3D point cloud, being specifically positioned on the edges converging at a vertex within the original point cloud. The surface points, which are derived from the original point cloud are utilized to establish the original vertex information. Surface points is a subset of 3D point cloud. In particular, a vertex may be related to target surface, namely, different vertices may correspond to different surface. Surface points , for example 1405 of figure 14, may be the points that correspond to the target surface. In particular, in figure 14, vertices 1401 may correspond to the surface points 1405. Therein the corresponding surface points are original points of the point cloud close to an edge where the at least one vertex belongs. Preferably, this refers to the subset of original points in the point cloud that are located within a distance less than 1 / 4 of the leaf node's width from its edge. More preferably, less than 1 / 8 (of the leaf node’s width. Preferably, the at least one vertex may be adjusted towards the determined centroid position to get a better modelling of the original point cloud surface. In particular, vertices that are on the edges along an axis where the vector has maximum value may be adjusted along the edges to which they belong, to make the reconstructed surface more natural. Therein, the vector is the vector from Cmean to C. More specifically, it may first determine an axis along which the vector has its maximum value. Then it may find vertices that are on edges parallel to the determined axis in the leaf node. According to the present invention, the above-described adjustment may be further based on the vertex information of at least one neighboring leaf node, for example, the information can be centroid residual vector (drift) . Therein, neighboring leaf nodes in an octree structure refer to leaf nodes that share a common boundary, in particular, an edge with the given leaf node. A 'neighbour leaf node' with respect to a given 'leaf node' is defined as a leaf node that shares at least one common boundary with the given leaf node. A 'neighbour leaf node' is therefore adjacent to a given leaf node within the 3D spatial configuration defined by the octree structure. Finally, these vertices may be adjusted based on of the current leaf node and the of the neighboring leaf node (s) . The triangles are then constructed according to the adjusted vertices and the centroid in a similar manner as previously described.

[0010] To reconstruct the points of the point cloud from the reconstructed triangles, voxelization may be performed, preferably by a ray-tracing process wherein in the ray-tracing process rays are launched along the three directions parallel to any of the three axes. Their origin is a point of integer coordinates corresponding to the sampling precision wanted for the rendering. The intersection point (if any) of the ray with one of the reconstructed triangles is then determined and added to the list of rendered points, i.e., added to the points of the point cloud. The surface of the reconstructed triangles is sampled by the rays during voxelization to determine the points of the point cloud.

[0011] Preferably the at least one vertex is adjusted only if the difference between the virtual position and the centroid position exceeds a threshold, preferably the threshold is based on the leaf node size, preferably a scale s of the leaf node size, wherein  preferably s = 1 / 128. Thus, before performing the method according to the present invention, it is first determined whether the prominence degree of the modelling surface in the leaf node is large enough. For example, by comparing the centroid residual with a threshold. This constraint reduces unnecessary adjustments, leading to computational efficiency and reduced complexity.

[0012] Preferably, the at least one vertex is adjusted according to a fixed value, preferably the fixed value is determined based on the type of the point could and is coded into or from the bitstream. In particular, the fixed value may be determined according to the statistic of input point cloud sequences indicating properties, characteristics, or features of a sequence of 3D point clouds (e.g., plain or not) . The statistic of input point cloud sequences may include various measures and attributes, such as: Descriptive statistics: These include measures such as mean, median, mode, variance, and standard deviation of point coordinates (x, y, z) and other properties such as color, intensity, or normal vectors. Geometric properties: Characteristics like point density, spatial distribution, or the extent of the point cloud can be quantified and summarized. Temporal properties: For time-varying point cloud sequences, properties such as motion or deformation of the point cloud can be analyzed and summarized. Topological properties: The connectivity or relationships between points in the point cloud can be studied, providing insights into the underlying structure of the data. This approach offers simplicity and consistency across similar point cloud types.

[0013] Preferably, the at least one vertex is adjusted based on the difference between the virtual position and the centroid position, preferably further based on the edge boundary of the leaf node. As previously explained, the vertices may be adjusted towards the centroid position along certain determined edges. In addition, the adjustment may further be based on the edge boundary of the leaf node so that it can be assured that the adjusted vertices will not exceed the leaf node to which it belongs. Thus, this technique allows for more precise vertex adjustments, leading to a more accurate representation of the point cloud geometry.

[0014] Preferably, the at least one vertex being adjusted towards the average position of surface points is based on the vertex information of at least one neighboring leaf node comprises: determining eligibility for the adjusting of the vertex based on the vertex information of the current leaf node and the neighboring leaf node; adjusting the vertex if eligible. Thus, the method involves the adjustment of a vertex's position based on vertex information from a neighboring leaf node. This is in addition to the original position of the vertex, as stated in the previously described embodiments. The key of this preferred feature is the introduction of an "eligibility" condition that governs whether a vertex shall be adjusted or not. This eligibility condition is determined by considering the vertex information of both the current and the neighboring leaf node. Thus, by considering the vertex information of neighboring leaf nodes, the method can more accurately reflect the original spatial relations and geometry of the objects in the 3D point cloud. This makes the encoded and subsequently decoded 3D point cloud more representative of the original spatial arrangement and geometrical features of the object or scene.

[0015] Preferably, the determining eligibility for the adjusting of the vertex based on the vertex information of the current leaf node and the neighboring leaf node comprises: determining a first vector pointing from the virtual position of the current leaf node to the centroid position of the current leaf node; determining a second vector pointing from the virtual position of the neighboring leaf node to the centroid position of the neighboring leaf node; determining that the at least one vertex is eligible for adjusting if the inner product of the first vector and the second vector is a positive number. This preferred feature introduces an eligibility criterion for adjusting the vertex based on vector mathematics. Two vectors are established, one from the virtual position to the centroid of the current leaf node, and another from the virtual position to the centroid of the neighboring leaf node. The eligibility for adjusting the vertex is determined by whether the inner product of these two vectors is a positive number. The technical effect of this feature lies in its ability to provide a quantitative, geometrically sound method for determining whether a vertex is eligible for adjustment. The use of the inner product effectively measures the alignment of the two vectors. If the inner product is positive, it means the two vectors point in generally the same direction, implying that the neighboring leaf nodes have similar geometric characteristics, thus making it meaningful and appropriate to adjust the vertex.

[0016] Preferably, the adjusting the vertex if eligible comprises: adjusting the vertex based on the weighted sum of the magnitude of first vector and the magnitude of the second vector, preferably the weight of the first vector is heavier than the weight of the second vector. According to the above preferred feature, once the vertex is deemed eligible for adjustment, the invention specifies the manner of this adjustment. It states that the adjustment should be based on the weighted sum of the magnitudes of the two vectors from the embodiments of claim 7. Additionally, it suggests that the weight of the first vector (from the current leaf node) should be higher than that of the second vector (from the neighboring leaf node) . The primary technical effect here is the nuanced control it affords over the vertex adjustment process. The weighting provides a way to preferentially consider the geometric characteristics of the current leaf node over the neighboring one when adjusting the vertex. This allows the vertex adjustment to respect the local geometric characteristics more, which can lead to a more accurate representation of the 3D object or scene in the encoded and decoded point cloud data.

[0017] In another aspect of the present invention, a method for encoding a 3D point cloud into a bitstream is provided preferably implemented in an encoder. The method for encoding the 3D point cloud includes: obtaining vertex information from surfaces of the point cloud for each cuboid relating to a leaf node, wherein the vertex information includes information about position of a vertex on edges of cuboids of leaf nodes of the octree structure of the point cloud; encoding the vertex information into the bitstream, wherein at least one vertex is adjusted towards an average position of surface points; determining points of the point cloud based on the encoded vertex information; characterized in that the at least one vertex being adjusted towards the original position of the vertex is based on the vertex information of at least one neighboring leaf node.

[0018] Thus, by the method for encoding, the vertex information and preferably the octree information are generated. This information may be encoded into the bitstream. Subsequently, at the encoder side, a reconstruction step may be performed. In this reconstruction step, the point cloud geometry information is reconstructed, wherein the steps of reconstructing are the same as that in the method for decoding as described above. The reconstructed geometry of the point cloud at the encoder side is then used to encode attributes (color, reflectance…) of the points of the point cloud for example by RAHT (Region-Adaptive Hierarchical Transform) , predicting transform or lifting transform being used in order to encode the attributes of the points of the point cloud.

[0019] Preferably, the geometry of the point cloud is encoded into the bitstream by Geometry-based Point Cloud Compression (G-PCC) .

[0020] Preferably, the bitstream is an MPEG G-PCC compliant bitstream.

[0021] Preferably, the method for encoding is further built according to the features described before in connection with the method for decoding.

[0022] In another aspect of the present invention, an encoder is provided for encoding a 3D point cloud into a bitstream. The encoder comprises a memory and a processor, wherein instructions are stored in the memory, which when executed by the processor, performs the steps of the method for encoding described before.

[0023] In another aspect of the present invention, a decoder is provided for decoding a 3D point cloud from a bitstream. The decoder comprises a memory and a processor, wherein instructions are stored in the memory, which when executed by the processor, performs the steps of the method for decoding described before.

[0024] In another aspect of the present invention, a bitstream is provided, wherein the bitstream is encoded by the steps of the method for encoding described before.

[0025] In another aspect of the present invention, a computer-readable storage medium is provided comprising instructions to perform the steps of the method for encoding a 3D point cloud into a bitstream as described above.

[0026] In another aspect of the present invention, a computer-readable storage medium is provided comprising instructions to perform the steps of the method for decoding a 3D point cloud from a bitstream as described above.

[0027] FIGURES

[0028] In the following the present invention is described in more detail with reference to the accompanying figures.

[0029] The figures show:

[0030] Figure 1 a flow diagram of the method for decoding a 3D point cloud geometry according to the present invention,

[0031] Figure 2 an example for generation of the octree structure,

[0032] Figure 3 an octree according to Figure 2,

[0033] Figure 4 an example for determining vertices on edges of a cuboid,

[0034] Figure 5 an example for generating triangles,

[0035] Figure 6 an example of vertices on the edges of a cuboid,

[0036] Figure 7 a generation of the triangle by vertices,

[0037] Figure 8 an example of determining the order of the triangles according to Figure 7, Figure 9 a schematic drawing for the step of voxelization,

[0038] Figure 10 an example of reconstruction of triangles using the centroid point C as a pivoting point,

[0039] Figure 11 an example of a normal vector,

[0040] Figure 12 an example of a 1D residual along the normal vector,

[0041] Figure 13 an example of a smooth convex surface in a leaf node with modelling triangles constructed by vertices and centroid point,

[0042] Figure 14 an example of a refined surface,

[0043] Figure 15 examples of visible hole generated on the common face of two neighbour leaf nodes,

[0044] Figure 16 an example of vertices on a face F that do not satisfy one of the conditions according to the present invention,

[0045] Figure 17 an example of vertices on a face F that satisfies one of the conditions according to the present invention,

[0046] Figure 18 an example of refined vertices on a face F between two neighbouring leaf nodes A and B,

[0047] Figure 19 a decoder or encoder.DETAILED DESCRIPTION

[0048] As a format for the representation of 3D data, point clouds have recently gained traction as they are versatile in their capability in representing all types of 3D objects or scenes.

[0049] Therefore, many use cases can be addressed by point clouds, among which are

[0050] ● movie post-production,

[0051] ● real-time 3D immersive telepresence or VR / AR applications,

[0052] ● free viewpoint video (for instance for sports viewing) ,

[0053] ● Geographical Information Systems (aka cartography) ,

[0054] ● culture heritage (storage of scans of rare objects into a digital form) ,

[0055] ● Autonomous driving, including 3D mapping of the environment and real-time Lidar data acquisition

[0056] A point cloud is a set of points located in a 3D space, optionally with additional values attached to each of the points. These additional values are usually called point attributes. Consequently, a point cloud is a combination of a geometry (the 3D position of each point) and attributes.

[0057] Attributes may be, for example, three-component colours, material properties like reflectance and / or two-component normal vectors to a surface associated with the point.

[0058] Point clouds may be captured by various types of devices like an array of cameras, depth sensors, Lidars, scanners, or may be computer-generated (in movie post-production for example) . Depending on the use cases, points clouds may have from thousands to up to billions of points for cartography applications.

[0059] Raw representations of point clouds require a very high number of bits per point, with at least a dozen of bits per spatial component X, Y or Z, and optionally more bits for the attribute (s) , for instance three times 10 bits for the colours. Practical deployment of point-cloud-based applications requires compression technologies that enable the storage and distribution of point clouds with reasonable storage and transmission infrastructures.

[0060] Compression may be lossy (like in video compression) for the distribution to and visualization by an end-user, for example on AR / VR glasses or any other 3D-capable device. Other use cases do require lossless compression, like medical applications or autonomous driving, to avoid altering the results of a decision obtained from the analysis of the compressed and transmitted point cloud.

[0061] Until recently, point cloud compression (aka PCC) was not addressed by the mass market and no standardized point cloud codec was available. In 2017, the standardization working group ISO / JCT1 / SC29 / WG11, also known as Moving Picture Experts Group or MPEG, has initiated work items on point cloud compression. This has led to two standards, namely

[0062] ● MPEG-I part 5 (ISO / IEC 23090-5) or Video-based Point Cloud Compression (V-PCC)

[0063] ● MPEG-I part 9 (ISO / IEC 23090-9) or Geometry-based Point Cloud Compression (G-PCC)

[0064] Both V-PCC and G-PCC standards have finalized their first version in late 2020.

[0065] The V-PCC coding method compresses a point cloud by performing multiple projections of a 3D object to obtain 2D patches that are packed into an image (or a video when dealing with moving point clouds) . Obtained images or videos are then compressed using already existing image / video codecs, allowing for the leverage of already deployed image and video solutions. By its very nature, V-PCC is efficient only on dense and continuous point clouds because image / video codecs are unable to compress non-smooth patches as would be obtained from the projection of, for example, Lidar-acquired sparse geometry data.

[0066] The G-PCC coding method has two schemes for the compression of the geometry. The first scheme is based on an occupancy tree (octree / quadtree / binary tree) representation of the point cloud geometry. Occupied nodes are split down until a certain size is reached, and occupied leaf nodes provide the location of points, typically at the centre of these nodes. By using neighbour-based prediction techniques, high level of compression can be obtained for dense point clouds. Sparse point clouds are also addressed by directly coding the position of point within a node with non-minimal size, by stopping the tree construction when only isolated points are present in a node; this technique is known as Direct Coding Mode (DCM) .

[0067] The second scheme is based on a predictive tree, each node representing the 3D location of one point and the relation between nodes is spatial prediction from parent to children. This method can only address sparse point clouds and offers the advantage of lower latency and simpler decoding than the occupancy tree. However, compression performance is only marginally better, and the encoding is complex, relatively to the first occupancy-based method, intensively looking for the best predictor (among a long list of potential predictors) when constructing the predictive tree.

[0068] In both schemes, attribute (de) coding is performed after complete geometry (de) coding, leading to a two-pass coding. Thus, low latency is obtained by using slices that decompose the 3D space into sub-volumes that are coded independently, without prediction between the sub-volumes. This may heavily impact the compression performance when many slices are used.

[0069] An important use case is the transmission of dynamic AR / VR point clouds. Dynamic means that the point cloud evolves with respect to time. Also, AR / VR point clouds are typically locally 2D as they most of time represent the surface of an object. As such, AR / VR point clouds are highly connected (or said to be dense) in the sense that a point is rarely isolated and, instead, has many neighbours.

[0070] Dense (or solid) point clouds represent continuous surfaces with a resolution such that volumes (small cubes called voxels) associated with points touch each other without exhibiting any visual hole in the surface.

[0071] Such point clouds are typically used in AR / VR environments and are viewed by the end user through a device like a TV, a smartphone or a headset. They are transmitted to the device or stored locally. Many AR / VR applications use moving point clouds, as opposed to static point clouds, that vary with time. Therefore, the volume of data is huge and must be compressed. Nowadays, lossless compression based on an octree representation of the geometry of the point cloud can achieve down to slightly less than a bit per point (1 bpp) . This may not be sufficient for real time transmission that may involve several millions of points per frame with a frame rate as high as 50 frames per second (fps) , thus leading to hundreds of megabits of data per second.

[0072] Consequently, lossy compression may be used with the usual requirement of maintaining an acceptable visual quality while compressing sufficiently to fit within the bandwidth provided by the transmission channel while maintaining real time transmission of the frames. In many applications, bitrates as low as 0.1 bpp (10x more compressed than lossless coding) would already make possible real time transmission.

[0073] The codec VPCC based on MPEG-I part 5 (ISO / IEC 23090-5) or Video-based Point Cloud Compression (V-PCC) can achieve such low bitrates by using lossy compression of video codecs that compress 2D frames obtained from the projection of the point cloud on a plane. The geometry is represented by a series of projection patches assembled into a frame, each patch being a small local depth map. However, VPCC is not versatile and is limited to a narrow type of point clouds that do not exhibit locally complex geometry (like trees, hair) because the obtained projected depth map would not be smooth enough to be efficiently compressed by a video codec.

[0074] Purely 3D compression techniques can handle any type of point clouds. It is still an open question whether 3D compression techniques can compete with VPCC (or any projection + image coding scheme) on dense point clouds. Standardization is still under its way toward offering an extension (an amendment) of GPCC that would provide competitive lossy compression that would compress dense point clouds as good as VPCC intra while maintaining the versatility of GPCC that can handle any type of point clouds (dense, Lidar, 3D maps) . This extension is likely to use the so-called TriSoup coding scheme that works over to an octree, as detailed in next sections. TriSoup is under exploration in the standardization working group JTC1 / SC29 / WG7 of ISO / IEC.

[0075] Referring to Figure 1 showing a schematic diagram for the method of decoding geometry information of a 3D point cloud from a bitstream.

[0076] The method for decoding the geometry of a 3D point cloud from a bitstream, preferably implemented in a decoder, includes the steps:

[0077] S11: receiving a bitstream, wherein the bitstream contains vertex information;

[0078] S12: obtaining the vertex information to determine positions of vertices, wherein at least one vertex is adjusted towards average position of surface points;

[0079] S13: determining points of the point cloud based on the at least one adjusted vertex, characterized in that the at least one vertex being adjusted towards average position of surface points is based on the vertex information of at least one neighboring leaf node.

[0080] The first step of the geometry encoding process to determine the octree information is to build and encode an octree, as illustrated in Figures 2 and 3. The bounding box is the main volume 100 that contains all the points, and is associated to the root node 112 (i.e. single node at the top of the tree 110) . This volume 100 is first divided into 8 sub-volumes 102 called octants, each is represented by a node 114 in the tree 110. The octants 106 that are occupied by at least one point, which are shaded in Figures 2 and 3, are then recursively split into sub-volumes 104 until a target level is reached. The target level is a level that the volumes shall not be splitted anymore, and it may be determined based on the compression rate.

[0081] Each octant (or node) is represented by an occupancy byte that contains one bit per child octant, set to one if it is occupied by at least one point, or to zero otherwise. The occupancy bytes 118 such as” 1000100 00001000 11000011” of all the octants are serialized (in breadth-first order) and entropy coded with a binary arithmetic encoder.

[0082] Figure 4 illustrates a blocking representation of a 3D surface 210, as well as an example of a block 220 in a TriSoup. The surface 210 intersects the block 220, which is therefore an occupied block, and the block 220 exists among multiple blocks 200 in 3D space. Within the block 220, the enclosed portion of the surface 210 intersects the edges of the block at six illustrated vertices 232 of a polygon 230. An edge of the block 220 is said to be selected if it contains a vertex.

[0083] Figure 5 illustrates the block 220 in the TriSoup, omitting the surface 210 for clarity, and showing a non-selected edge 270, a selected edge 260, and the ith edge 250. Suppose the ith edge 250 is selected. To specify a vertex vi on edge i, one specifies a scalar value to indicate a corresponding fraction of the length of the edge 250.

[0084] As illustrated in Figures 4 and 5, within each octant 220 in the target level of the octree, the trisoup represents the original surface 210 as a set of triangles 245. This surface is encoded and used to obtain the positions of the reconstructed (or decoded) points. First, the intersections of the surface represented by the original points with the edges of the octants are estimated by averaging the positions of the points that are the closest to those edges within the octant. Secondly, the twelve edges of all the octants and their associated intersections (if any) are stored as segments and vertices respectively. Each (unique) segment is then encoded as follows. A first single bit is arithmetically coded, set to one if the segment is occupied by a vertex and zero otherwise. If it is occupied, the relative position of the vertex on the segment is also arithmetically coded.

[0085] Vertices 310 of triangles are coded along the edges 320 of volumes associated with leaf nodes 300 of the tree, as depicted in Figure 6. These vertices 310 on edge 320 are shared among leaf nodes 300 having a common edge 320. This means that at most one vertex is coded per edge belonging to at least one leaf node. By doing so, the continuity of the model is ensured through leaf nodes.

[0086] As mentioned above, the encoding of the TriSoup vertices may require two pieces of information per edge: a vertex flag indicating if a TriSoup vertex is present on the edge, and when present, the vertex position along the edge.

[0087] Consequently, the coded data consists in the octree data plus the TriSoup data.

[0088] The vertex flag is coded by an adaptive binary arithmetic coder that uses one specific context for coding vertex flags. The position of a vertex on an edge of length N=2^s might be coded with unitary precision by pushing (bypassing / not entropy coding) s bits into the bitstream.

[0089] Inside a leaf node, triangles are constructed from the TriSoup vertices if at least three vertices 310 are present on the edges 320 of the leaf node 300. Reconstructed triangles 330, and 340 are depicted in Figure 7.

[0090] Obviously, other combinations of triangles 330, and 340 are possible. The choice of triangles comes from a three-step process

[0091] 1. determining a dominant direction along one of the three axes

[0092] 2. ordering TriSoup vertices depending on the dominant direction

[0093] 3. constructing triangle based on the ordered list of vertices

[0094] Knowledge about the exact position of the triangles within the current leaf is not necessary and can be deduced from the vertices.

[0095] Figure 8 will be used to explain this process. Each of the three axes is tested and the one maximizing the total surfaces of the triangle is kept as dominant axis. For simplicity of the figure, only the test over two axes is depicted in Figure 8.

[0096] A first test (top) along the vertical axis is performed by projecting the cube and the Trisoup vertices 310 vertically on a 2D plane. The vertices 310 are then ordered following a clockwise order relative to the center of the projected node (a square) . Then, triangles 330, and 340 are constructed following a fixed rule based on the ordered vertices. Here, triangles 123 and 134 are constructed systematically when 4 vertices are involved. When 3 vertices are present, the only possible triangle is 123. When 5 vertices are present, a fixed rule may be to construct triangles 123, 134 and 451. And so on, up to 12 vertices.

[0097] A second test (left) along a horizontal vertical axis is performed by projecting the cube and the Trisoup vertices horizontally on a 2D plane.

[0098] The vertical projection exhibits the 2D total surface of triangles that is maximum, thus the dominant axis is selected as vertical, and the constructed TriSoup triangles are obtained from the order of the vertical projection, as in Figure 8 inside the node. It is to be noted that taking the horizontal axis as dominant would have led to another construction of triangles.

[0099] The adequate selection of the dominant axis by maximizing the projected surface leads to a continuous reconstruction of the point cloud without holes.

[0100] The rendering of TriSoup triangles into points may be performed by ray tracing. The set of all rendered points by ray tracing will make the decoded point cloud.

[0101] For ray tracing as shown in Figure 9, rays may be launched along the three directions parallel to an axis. Their origin is a point of integer (voxelized) coordinates of precision corresponding to the sampling precision wanted for the rendering. The intersection (if any, dashed point) with one of the Trisoup triangles is then voxelized (= rounded to the closest point at the wanted sampling precision) and added to the list of rendered points.

[0102] After applying Trisoup to all leaf nodes, i.e., constructing triangles and obtaining points, preferably by ray tracing, copies of same points in the list of all rendered points are discarded (i.e. only one voxel is kept among all voxels sharing the same position and volume) to obtain a set of decoded (unique) points.

[0103] Based on the above-deprescribed concepts, improvements might be applied to the Trisoup coding. For example, by computing a centroid point whose coordinates are the mean coordinates of all (ordered) vertices Vi, see Figure 10 where the centroid point C is depicted using checkboard filling. The centroid point is used as a pivoting point. The triangle are constructed from the ordered vertices (V1, V2, …, VM) by pivoting around the centroid point C. The following M triangles are constructed: V1V2C, V2V3C, …, VM-1VMC, VMV1C.

[0104] Therein, the vertices may be ordered clockwise and is not important which of the vertices is chosen as V1.

[0105] This construction preserves the natural symmetries of the model without privileging arbitrary some triangles. Moreover, it provides an additional degree of freedom to improve the accuracy of the model, namely the position of the centroid point C.

[0106] Consequently, the position of the centroid point C might be further improved by coding a residual position in the bitstream such that the position of centroid point C is closer to the original points of the point cloud.

[0107] For example, C = Cmean + Cres

[0108] where Cmean is the mean position obtained by averaging coordinates of all (ordered) vertices, and Cres is a coded residual.

[0109] The coded residual may be a 3D residual. However, it is observed that a 3D residual is rarely advantageous because it requires many bits to be coded and this many bits are not fully compensated by the better accuracy of the model. Therefore, it is preferred to code a 1D residual Cres.

[0110] For example, a normal vector  may be constructed, as shown in Figure 11, and the residual may be determined by the following equation:

[0111] where α is a 1D signed scalar value coded in the bitstream, see Figure 12. The normal vector may be derived by the following two steps

[0112] 1.

[0113] 2. and then normalization

[0114] where × is the cross product (also named vector (cross) product) between two vectors, and the edges are:

[0115] It will be u nderstood that the vector may be taken parallel to an axis to simplify the computation of its determination and the value α. The vector may be taken parallel to the dominant axis as a good approximation of the vector computed above.

[0116] The value α is determined by the encoder, encoded into the bitstream and obtained by the decoder by decoding the bitstream. The value α may be binarized and each bit may be encoded by using a binary entropy coder such as an arithmetic coder or a context adaptive binary coder like CABAC.

[0117] The value α may be binarized into

[0118] ● a flag f0 indicating if α is equal to 0,

[0119] ● a sign that indicates if α>0 or α<0,

[0120] ● a flag f1 indicating if |α| is equal to 1,

[0121] ● a remainder |α|-2 coded by an expGolomb coder.

[0122] The value α may be determined by the encoder by considering all points Pk of the point cloud belonging to a current leaf node. For each point Pk, its distance dk from the line (Cmean,  ) is found by

[0123] and in case this distance dk is below a pre-defined threshold th (e.g., th =2) , the point Pk is used to compute the value α. The 1D residual rk of a point Pk relative to the mean point Cmean is obtained by the scalar product (also named inner product or dot product)

[0124] The value α is thus obtained by

[0125] where S is the set of points Pk such that their distance dk is below the threshold th, and |S| is the number of points belonging to this set.

[0126] In current trisoup coding, as is described in relation to the previous figures, the determined centroid point C and vertices (V0, …, Vi) of a leaf node may be used to construct triangles, then a ray tracing method may be applied to the constructed triangles to get reconstructed points.

[0127] The point cloud data captured in natural scenes tend to have smooth surface even in concave or convex areas. However, in current trisoup coding, to model concave or convex areas by triangles in leaf nodes, the generated centroid residual Cres might be big, (for example, Cres can be around half of the leaf node width) , then the modelled surface using the constructed triangles (by using centroid point C and vertices (V0, …, Vi) ) within a leaf node might have a big protrusion, and the generated surface will be far from natural smooth and have artifacts effects. As is shown in Figure 13, points 1301 represent vertices along edges in a leaf node, and points 1303 represent centroid point C in a leaf node, small points 1305 represent points on the original surface (for the sake of clarity, only one of these small points is marked with reference 1305) , and it can be seen that the modelled surface with pointy protrusions cannot model original surface well enough, and the reconstructed surface may not keep the smooth characteristics of original surface, which may make the reconstructed point cloud having bad visual quality, especially at lower compression rate when the leaf node size is relatively big. Thus, the compression efficiency of current trisoup coding in MPEG G-PCC is not optimal.

[0128] Thus, it is preferred to improve the compression efficiency of the point cloud by reducing the non-smooth degree of the reconstructed surface at the decoder side.

[0129] It is possible to refine the triangle modelling in leaf nodes to make the reconstructed surface closer to the original surface at the decoder side. To be detailed, for example, after obtaining the decoded vertices and decoded centroid point C at the decoder side, it is possible to adjust the positions of vertices towards the direction of the vector  in leaf nodes of convex or concave areas, this method can reduce the non-smooth degree of reconstructed point cloud and the bitstream size will not increase.

[0130] In some examples, the above method follows the steps:

[0131] At the decoder side, after decoding vertices of each leaf node from a bitstream, it may iterate each leaf node to construct triangles for getting a reconstructed point cloud, preferably by the ray tracing method.

[0132] To be detailed, for each leaf node, for example,

[0133] ○ if the current (i.e., processed) leaf node has more than 3 vertices,

[0134] ● Firstly, it may determine the centroid point C to construct a modelling surface consisting of triangles constructed by vertices and centroid point C. To be detailed, firstly it may determine the mean point Cmean of vertices (V0, …, Vi) in the leaf node a nd u nit vector of centroid residual, and then it may decode the magnitude value Cres of centroid residual from the bitstream, and finally, it may obtain the centroid point C by wherein is the vector from Cmean to C, which can also be named as

[0135] ● Then it may determine a prominence degree of modelling surface in the leaf node, in a preferred embodiment, it may determine if the centroid residual Cres is large or not relative to leaf node size.

[0136] ● If the centroid residual Cres is large relative to leaf node size (it is more likely that the constructed surface based on current vertices (V0, …, Vi) ) and centroid point C will have pointy protrusions artifacts in the generated modelling surface) , then among all the vertices V (V1, …, Vi) ) in the leaf node, vertices that are on edges along the axis where the vector has maximum value among all three axes, may be refined along the edges which they belong to, within the boundary of the edge in the leaf node, and toward a direction that can make the reconstructed surface more natural. (The detail vertices refinement is described later)

[0137] ● Otherwise, all vertices (V0, …, Vi) in the leaf node may not be refined.

[0138] ● Then all vertices in the leaf node (including the refined vertices V’ and the other non-refined vertices V) are used to construct triangles combined with centroid point C, as is described in relation to the previous figures, and it may apply ray tracing method onto each triangle to get reconstructed points in the leaf node.

[0139] ○ Otherwise, if the leaf node has 3 vertices, there will be no mean point Cmean and centroid point C in the processed leaf node, and only 1 triangle V1V2V3 can be constructed, and it may apply ray tracing method onto the triangle to get reconstructed points in the leaf node.

[0140] ○ Otherwise, if the leaf node has less than 3 vertices, there will be no triangle constructed for the leaf node, so no reconstructed points will be generated for the leaf node.

[0141] At the encoder side, after encoding vertices of each leaf node into a bitstream, it may iterate each leaf node to encode information of centroid position C, and for later attribute coding, it may also need to get reconstructed geometry information of point cloud by constructing triangles based on vertices and centroid position C. And to get refined modelling surface in the leaf node, it may process the leaf nodes iteratively following same steps as described above in decoder side. Of course, additionally, information indicating whether the point cloud is plane or not is also encoded at the encoder.

[0142] In some examples, to determine if the centroid residual Cres is large or not relative to leaf node size, the centroid residual Cres may be compared with a threshold Th that is based on leaf node size N. The threshold Th may be a scale s of the leaf node size, Th=N*s, and the sale s may be 0<s≤1 / 8, for example,  And in practical implementation, to increase the precision of division / multiplication operation, Cres may be multiplied by 64 (which may be achieved by applying left shift 6 bits operation on Cres, so the compared threshold Th needs to be multiplied by 64, which becomes N / 2) . And for example, for a leaf node, if Cres> Th, then vertices in the leaf node may be refined according to the above-described method; otherwise, the proposed surface refinement method will not be applied to the leaf node.

[0143] As described above, if the centroid residual Cres is large relative to leaf node size, then among all the vertices V (V1, …, Vi) ) in the leaf node, vertices that are on edges along the axis where the vector has maximum value among all three axes, may be refined along the edges which they belong to, within the boundary of the edge in the leaf node, and toward the direction that can make the reconstructed surface more natural. Preferably, the detail vertices refinement may follow the steps:

[0144] ● Firstly, it may determine the axis axis_max along which the vector has maximum value;

[0145] ● Then, it may find vertices (V0,…,Vi) that are on edges parallel to the axis axis_max in the leaf node,

[0146] ● then it changes the axis_max-th dimension of these vertices based on the centroid residual vector of the leaf node, and the obtained vertex V’i can be described as

[0147] [Corrected under Rule 26, 18.09.2023] wherein the offset is a shift distance from Vi, and  is a unit vector pointing the direction of the shift. Preferably,  may be based on and edge boundary, wherein represents the projected vector of centroid residual vector along axis_max direction, edge boundary may be a constrain condition to keep the vertex not exceeding the leaf node which it belongs to. And in such embodiments,  may be along the same direction of  and offset may be obtained based on the magnitude value of  and edge boundary of the leaf node. In preferred embodiments, the offset can be 1 / 3 of magnitude value of Figure 14shows the refined surface produced according to the present invention, the points 1401 on the edges are vertices V used to model surface according to the trisoup method, the arrow line parallel to the X axis represents the projected vector of the centroid residual and the points 1401a are refined vertices V’ by shifting vertices V along the direction of  small points 1405 represent points on the original surface (for the sake of clarity, only one of these points have been marked with reference) as can be seen that, the refined surface are closer to the original surface in the leaf nodes, and the pointy protrusions artifacts has been reduced.

[0148] As is described above, the vertices on edges of a leaf node may be refined leaf node by leaf node following an order, the refined vertices in leaf nodes may be used to reconstruct triangles to get reconstructed point cloud. However, the refinement method is only based on the centroid drift information of current leaf node, thus, the vertices on edges belonging to two neighbouring leaf nodes may shift for different distance along direction of in following cases:

[0149] ● case(a): the directions of centroid drifts in the two neighbouring leaf nodes are opposite,

[0150] ● or case(b): the centroid drift values of the two neighbouring leaf nodes have a large difference even if their directions the directions are same.

[0151] [Corrected under Rule 26, 18.09.2023]Therefore the above cases will cause some visible holes in the surface of reconstructed point cloud, as is shown in Figure 15, wherein the square 1501 represents the adjacent face of two neighbour leaf nodes, and the points 1503 with dashed outline on the edges represent the vertices without refining,  and represent vertices shift vector (including direction and value) , and the dashed areas represent holes caused by vertices shifting. In Figure 15 the holes are generated because that the vertices shift vector and are in opposite directions in two neighbouring leaf nodes, which is corresponding to case (a) ; and in Figure 15, although the vertices shift vector and are in same direction, but their value has a large difference, which will also cause a hole, and it is corresponding to case (b) as is described above.

[0152] These visible holes may cause lower visual quality and lower compression efficiency. Thus, the problem to be solved by the present invention is to further improve the coding efficiency, preferably, by removing the holes generated by vertices refinement method.

[0153] In some embodiments, centroid drift information of neighbouring leaf nodes (that are already been coded  / processed) may be used to guide the vertices refinement for leaf nodes, by doing so the visible hole problem can be solved. To be detail, it may iterate each leaf node, for a leaf node, if the centroid residual Cres is large relative to leaf node size, then it will determine the vertices Vj that are on edges parallel to direction  which is the same as the refinement method as described above. After determining the vertices Vj, the following steps may be performed,

[0154] ● Firstly, determine if vertices Vj in current leaf node need to be refined or not, which may be based on the centroid drift information of its neighbouring leaf nodes (that are already been coded  / processed) .

[0155] ● Then, if vertices Vj in current leaf node need to be refined, then shift each vertex via direction by an offset distance, wherein the offset is determined based on the magnitude of centroid drift of neighbouring leaf nodes, and the original vertices Vj will be updated with refined vertices Vj’; otherwise, the vertices Vj in current leaf will not be refined.

[0156] ●

[0157] After getting vertices (including refined vertices Vj’ and non-refined vertices) for the leaf node, it may construct triangles with these vertices and determined centroid point, then reconstruct point cloud preferably by using ray tracing method to these triangles in the leaf node.

[0158] [Corrected under Rule 26, 18.09.2023]The advantages of the proposed method includes: It can solve the “hole problem” as described by removing vertices shifting differences between two or more neighbouring leaf nodes, using the proposed method can make the refined vertices in a leaf node A (refined via s1) and refined vertices in A’s neighbour leaf node (refined via s2) be the same point on an edge in Figure 15.

[0159] According to the present invention, the eligibility for vertices refinement means if vertices Vj in current leaf node need to be refined or not. In a preferred embodiment,

[0160] ● firstly, select face F of current leaf node that may contain vertices that need to be refined, which is based on conditions determined by the centroid drift in neighbour leaf nodes and current leaf node, wherein the conditions may include:

[0161] (1) a face F is parallel to direction of current leaf node.

[0162] (2) find a neighbouring leaf node that is already coded / processed and shares the face F with current leaf node, and its centroid drift is not 0.

[0163] [Corrected under Rule 26, 18.09.2023](3) the inner product between the centroid drift vector in the neighbouring leaf node and the centroid drift vector in current leaf node is larger than 0. For example, the case as shown in Figure 16doesn’t satisfy this condition, and the case as shown in Figure 17 satisfies this condition. (In another embodiment, the component of centroid drift vector in the neighbouring leaf node and in current leaf node are opposite. )

[0164] ● Then, judge if vertices on the edges of face F satisfy a condition that the number of vertices Vj that on edges which are of face F and along direction  are larger than 1.

[0165] Preferably, only if vertices in current leaf node satisfy conditions described above, then eligibility for vertices refinement in current leaf node may be true.

[0166] In some embodiments, if the eligibility for vertices refinement in current leaf node is true, then vertices shift offset may be determined, and the offset value is determined based on centroid drift magnitude in neighbouring leaf nodes that are already coded / processed, because in current triosup coding, the centroid drift information is calculated leaf node by leaf node by an order, and when process current leaf node, only the centroid drift information of already coded / processed leaf nodes may be known and retrieved.

[0167] In a preferred embodiment, the shift offset of vertices Vj on a face F may be determined based on the centroid drift magnitude of adjacent leaf nodes sharing face F. For an example, the shift offset can be weighted average of centroid drift magnitude of the two neighbouring leaf nodes A and B, which can be described as

[0168] wherein k and b can both be set to 1 / 2. Preferably, k>b.

[0169] At the same time, the shift offset of vertices Vj on a face F may also be determined based on edge boundary of the leaf node, same as that in the previously described vertices refinement method, edge boundary is a constrain condition to keep the vertex not exceeding the leaf node which it belongs to.

[0170] In some embodiments, the vertices refinement method may need to follow a principle that all vertices, which are on edges parallel to direction and belong to same face of two adjacent leaf nodes, must be refined by shifting along the same direction by the same offset distance.

[0171] In some embodiments, after obtaining the eligibility for vertices refinement and vertices shift offset for vertices on faces F in a leaf node, then, refine each of the vertices Vj to be V’j towards the direction of vector (whose unit vector is  ) by offset distance, then the refined vertices V’j can be represented as below:

[0172] [Corrected under Rule 26, 18.09.2023]As is shown in Figure 18, leaf node A (left) is the leaf node which has been processed already, and leaf node B is current leaf node whose vertices need to be refined, the two vertices V3 and V4 satisfy the eligibility for refinement, the arrow line poting from V4 to V’4represents the shifted vector and they are refined to vertices V’3 and V’4 according to equation (2) . Then, the refined vertices V’3 and V’4 will be used to reconstruct triangles together with centroid point C in current leaf node.

[0173] In some embodiments, the proposed method for triangle modelling refinement in trisoup coding method for point cloud data follows the steps:

[0174] At decoder side, after decoding vertices of each leaf node from bitstream, it iterates each leaf node to construct triangles for getting reconstructed point cloud by ray tracing method.

[0175] To be detail, for each leaf node,

[0176] ○ if the processed leaf node has more than 3 vertices,

[0177] ● Firstly, it will determine the centroid point C to construct modelling surface consisted of triangles constructed by vertices and centroid point C. To be detailed, firstly it will determine the mean point Cmean of vertices (V0, …, Vi) in the leaf node, and unit vector of centroid residual, and then it decodes the magnitude value Cres of centroid residual from bitstream, and finally it can obtain the centroid point C by wherein is the vector from Cmean to C, which can also be named as

[0178] ● Then it will judge prominence degree of modelling surface in the leaf node, in preferred embodiments, it will judge if the centroid residual Cres is large or not relative to leaf node size.

[0179] ● If the centroid residual Cres is large relative to leaf node size (it is more likely that the constructed surface based on current vertices (V0, …, Vi) ) and centroid point C will have pointy protrusions artifacts in the generated modelling surface) , then find vertices Vj that are on edges along direction  among all the vertices V (V1, …, Vi) ) in the leaf node. Then, for each vertex Vj, determine its eligibility for refinement using the proposed method according to the invention described above.

[0180] ● if the eligibility for vertices refinement in current leaf node is true, then determine vertices shift offset by the method described above, and then refine each of the vertices Vj to be V’j using the method as previously described.

[0181] ● Otherwise, all vertices (V0, …, Vi) in the leaf node will not be refined.

[0182] ● Then all vertices in the leaf node (including the refined vertices V’ using the proposed method and the other non-refined vertices V) are used to construct triangles combined with centroid point C, and it applies ray tracing method onto each triangle to get reconstructed points in the leaf node.

[0183] ○ Otherwise, if the leaf node has 3 vertices, there will be no mean point Cmean and centroid point C in the processed leaf node, and only 1 triangle V1V2V3 can be constructed, and it applies ray tracing method onto the triangle to get reconstructed points in the leaf node.

[0184] ○ Otherwise, if the leaf node has less than 3 vertices, there will be no triangle constructed for the leaf node, so no reconstructed points will be generated for the leaf node.

[0185] At encoder side, after encoding vertices of each leaf node into bitstream, then it iterates each leaf node to encode information of centroid position C, and for later attribute coding, it also needs to get reconstructed geometry information of point cloud by constructing triangles based on vertices and centroid position C. And to get refined modelling surface in the leaf node, it processes the leaf nodes iteratively following same steps as described above in decoder side.

[0186] Reference is now made to Figure 19, which shows a simplified block diagram of an example embodiment of an encoder or decoder 300. The encoder or decoder 300 includes a processor 301 and a memory storage device 303. The memory storage device 303 may store a computer program or application containing instructions that, when executed, cause the processor 301 to perform operations such as those described herein. For example, the instructions may encode and output bitstreams encoded or decode bitstreams and output points of a point cloud in accordance with the methods described herein. It will be understood that the instructions may be stored on a non-transitory computer-readable medium, such as a compact disc, flash memory device, random access memory, hard drive, etc. When the instructions are executed, the processor 301 carries out the operations and functions specified in the instructions so as to operate as a special-purpose processor that implements the described process (es) . Such a processor may be referred to as a "processor circuit" or "processor circuitry" in some examples.

[0187] It will be appreciated that the decoder and / or encoder according to the present application may be implemented in a number of computing devices, including, without limitation, servers, suitably programmed general purpose computers, machine vision systems, and mobile devices. The decoder or encoder may be implemented by way of software containing instructions for configuring a processor or processors to carry out the functions described herein. The software instructions may be stored on any suitable non-transitory computer-readable memory, including CDs, RAM, ROM, Flash memory, etc.

[0188] It will be understood that the decoder and / or encoder described herein and the module, routine, process, thread, or other software component implementing the described method / process for configuring the encoder or decoder may be realized using standard computer programming techniques and languages. The present application is not limited to particular processors, computer languages, computer programming conventions, data structures, other such implementation details. Those skilled in the art will recognize that the described processes may be implemented as a part of computer-executable code stored in volatile or non-volatile memory, as part of an application-specific integrated chip (ASIC) , etc.

[0189] Certain adaptations and modifications of the described embodiments can be made. Therefore, the above-discussed embodiments are considered to be illustrative and not restrictive. In particular, embodiments can be freely combined with each other.

Claims

1.Method for decoding, from a bitstream, the geometry of a 3D point cloud, preferably implemented in a decoder, including:receiving a bitstream, wherein the bitstream contains vertex information;obtaining the vertex information to determine positions of vertices, wherein at least one vertex is adjusted towards an average position of surface points;determining points of the point cloud based on the at least one adjusted vertex, characterized in that the at least one vertex being adjusted towards the average position of surface points is based on the vertex information of at least one neighboring leaf node.2.Method for encoding a 3D point cloud into a bitstream, preferably implemented in an encoder, including:obtaining vertex information from surfaces of the point cloud for each cuboid relating to a leaf node,encoding the vertex information into the bitstream, wherein at least one vertex is adjusted towards an average position of surface points;determining points of the point cloud based on the encoded vertex information;characterized in that the at least one vertex being adjusted towards the average position of surface points is based on the vertex information of at least one neighboring leaf node.3.The method according to any of claims 1 or 2, wherein the obtaining the vertex information to determine positions of vertices, wherein at least one vertex is adjusted towards an average position of surface points comprises:determining a centroid position, wherein the centroid position is configured to approximate the average position of surface points;adjusting at least one vertex towards the centroid position.4.The method according to claim 3, wherein the determining the centroid position comprises:determining a virtual position based on the positions of vertices of one cuboid relating to a leaf node of the octree structure;determining the centroid position based on the virtual position.5.The method according to claim 4, wherein the determining the centroid position based on the virtual position comprises:constructing triangles based on the vertices of one cuboid and the virtual position;determining the centroid position based on the constructed triangle.6.The method according to claim 5, wherein the determining the centroid position based on the constructed triangle further comprises:determining a normal vector of the cuboid based on the constructed triangle;determining the centroid position based on the normal vector.7.The method according to any of claims 4 to 6, wherein the at least one vertex is adjusted only if the difference between the virtual position and the centroid position exceeds a threshold, preferably the threshold is based on the leaf node size.8.The method according to claim 7, wherein the threshold is based on a scale s of the leaf node size, wherein 9.The method according to claim 8, wherein s = 1 / 128.10.The method according to any of claims 1 to 9, wherein the at least one vertex is adjusted according to a fixed value.11.The method according to claim 10, wherein the fixed value is determined based on the type of the point could and is coded into or from the bitstream.12.The method according to any of claims 4 to 11, wherein the at least one vertex is adjusted based on the difference between the virtual position and the centroid position.13.The method according to claim 12, wherein the at least one vertex is adjusted further based on the edge boundary of the leaf node.14.The method according to any of claims 1 to 5, wherein the at least one vertex being adjusted towards the average position of surface points is based on the vertex information of at least one neighboring leaf node comprises: determining eligibility for the adjusting of the vertex based on the vertex information of the current leaf node and the neighboring leaf node; adjusting the vertex if eligible.15.The method according to any of claims 4 to 14, wherein the determining eligibility for the adjusting of the vertex based on the vertex information of the current leaf node and the neighboring leaf node comprises:determining a vector for each of the current leaf node and the neighboring leaf node;determining eligibility for the adjusting of the vertex based on the determined vectors.16.The method according to claim 15, wherein the determining eligibility for the adjusting of the vertex based on the determined vectors comprises:determining a first vector pointing from the virtual position of the current leaf node to the centroid position of the current leaf node; determining a second vector pointing from the virtual position of the neighboring leaf node to the centroid position of the neighboring leaf node; determining that the at least one vertex is eligible for adjusting if the inner product of the first vector and the second vector is a positive number.17.The method according to claim 16, wherein the adjusting the vertex if eligible comprises: adjusting the vertex based on a weighted sum of a magnitude of first vector and a magnitude of the second vector.18.The method according to claim 17, wherein the weight of the first vector is heavier than the weight of the second vector.19.Encoder to encode a 3D point cloud into a bitstream comprising at least one processor and a memory, wherein the memory stores instructions when executed by the processor perform the steps of the method according to any of claims 2 and 3 to 18 when dependent on claim 2.20.Decoder to decode a 3D point cloud from a bitstream comprising at least one processor and a memory, wherein the memory stores instructions when executed by the processor perform the steps of the method according to any of claims 1, 3 to 18 when dependent on claim 1.21.Bitstream encoded by the method according to any of claims 2 and 3 to 18 when dependent on claim 2.22.Computer-readable storage medium comprising instructions when executed by a processor to perform the steps of the method according to any of claims 1 to 18.