Method for decoding and encoding a 3D point cloud

The method addresses the lack of flexibility in existing 3D point cloud decoding and encoding by incorporating a surface refine flag, enabling decoders to adjust complexity based on device capabilities, thus optimizing performance across varying computational capacities.

WO2025073098A1PCT designated stage expired Publication Date: 2025-04-10BEIJING XIAOMI MOBILE SOFTWARE CO LTD
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
PCT/CN2023/123117
Authority / Receiving Office
WO · WO
Patent Type
Applications
Current Assignee / Owner
Filing Date
2023-10-06
Publication Date
2025-04-10

AI Technical Summary

Technical Problem

Existing methods for decoding and encoding 3D point clouds lack flexibility, as they do not account for varying computational capabilities of decoders, leading to suboptimal performance on both high-performance and low-performance devices.

Method used

A method that includes a surface refine flag in the bitstream, allowing decoders to choose between a simpler decoding process for lower precision and higher computational speed, or a more complex process for higher precision and lower speed, depending on the device's capabilities.

Benefits of technology

This approach provides flexibility in decoding complexity, allowing for optimized performance on a wide range of devices, from those with limited computational capacity to those with higher capabilities.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN2023123117_10042025_PF_FP_ABST
    Figure CN2023123117_10042025_PF_FP_ABST
Patent Text Reader

Abstract

The present invention relates to a method for decoding a 3D point cloud from a bitstream, the method comprising the following method steps: receiving a bitstream, wherein the bitstream comprises - point cloud data representing the geometry of the point cloud based on an occupancy tree, wherein the point cloud data comprises trisoup information describing the geometry of individual leaf nodes of the point cloud; and - a surface refine flag, wherein the surface refine flag is a flag indicating whether a surface refinement process shall be conducted; constructing triangles from the received bitstream and the trisoup information comprised therein, wherein reconstructing one triangle comprises determining at least three vertices of the triangle located on at least three edges of a cuboid volume defining a leaf node; evaluating the surface refine flag and, - if the surface refine flag is set to a first predetermined value, conducting a surface refinement process to refine the determined vertices, and setting target vertices equal to the refined vertices; - if the surface refine flag is set to a second predetermined value, setting the target vertices equal to the original and non-refined vertices; constructing triangles of leaf nodes from the target vertices, and constructing a point cloud based on constructed triangles. (Fig. 1)
Need to check novelty before this filing date? Find Prior Art

Description

Method for decoding and encoding a 3D point cloudTechnical field

[0001] The present invention relates to a method for decoding a 3D point cloud from a bitstream, and a method for encoding a 3D point could into a bitstream. In addition, the present invention relates to a decoder, an encoder, a bitstream and a computer-readable storage medium.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.

[0003] The capabilities of decoders or encoders on different devices vary. Applying the same encoding and decoding methods to decoders or encoders with different capabilities not only fails to leverage the capabilities of high-performance decoders, but also greatly deteriorates the performance of low-performance decoders.

[0004] Summary of the present invention

[0005] In view of the above-discussed problem, the present invention provides a method for decoding a 3D point cloud from a bitstream as defined in independent claim 1 and, in addition, a method for encoding a point cloud into a bitstream, a decoder, an encoder, a bitstream and a computer-readable storage medium as defined in the independent claims.

[0006] According to the method for decoding a 3D point cloud from a bitstream, the method is implemented on a decoder and comprises the following method steps: receiving a bitstream, wherein the bitstream comprises:

[0007] - point cloud data representing the geometry of the point cloud based on an occupancy tree, wherein the point cloud data comprises trisoup information describing the geometry of individual leaf nodes of the occupancy tree; and

[0008] - a surface refine flag, wherein the surface refine flag is a flag indicating whether a surface refinement process shall be conducted by the decoder;

[0009] constructing triangles from the received bitstream and the trisoup information comprised therein, wherein reconstructing a triangle comprises determining at least three vertices of the triangle located on at least three edges of a cuboid volume defining a leaf node;evaluating the surface refine flag and,

[0010] - if the surface refine flag is set to a first predetermined value, conducting a surface refinement process to refine the determined vertices, and setting target vertices equal to the refined vertices;

[0011] - if the surface refine flag is set to a second predetermined value, setting target vertices equal to the original and non-refined vertices;

[0012] constructing triangles of leaf nodes from the target vertices, and reconstructing point cloud based on the constructed triangles.

[0013] The present invention allows more flexibility by providing the additional surface refine flag, which may, according to some embodiments of the invention, comprise one Bit of information, indicating whether a surface refinement process shall be conducted by the decoder. This surface refine flag (also referred to as the surface refinement flag, the refinement flag or the first flag) allows to switch between a computationally simpler decoding process and a computationally more complex decoding process. Hence, the decoding complexity can be set depending on the current application, or depending on the specific decoding device and its computational capacity.

[0014] As will be described in the following, several approaches for the surface refinement can be implemented according to the present invention. For instance, in addition to providing the vertices of the triangles representing a leaf node, an additional centroid point may be provided in the bitstream. The centroid point describes the mean coordinates of the vertices. Different approaches can be chosen for providing the centroid point within the bitstream, wherein the present invention is neither limited to a specific approach. For instance, the coordinates of the centroid point can be directly encoded in to the bitstream. According to some embodiments of the present invention, the centroid point may be encoded by a residual Cres, wherein the centroid point C can be described as C = Cmean +Cres, Cmean being the mean position obtained by averaging the coordinates of all  (ordered) vertices, and Cres is a coded residual. Hence, at the decoder side, Cmean can be calculated from the decoded vertices and the centroid point can be calculated using the calculated mean position Cmean and the decoded residual Cres. Thus, a rather efficient encoding of the centroid point C can be achieved by providing the residual Cres in the bitstream (compared to the direct encoding of the centroid point into the bitstream) . Subsequently, at the decoder side, the centroid point can be used to refine the vertices by shifting them towards the centroid point, as will be discussed in the following sections. As mentioned above, different approaches can be applied for the surface refinement process and the present invention is not limited to a specific approach for the surface refinement process.

[0015] According to some embodiments of the present invention, reconstructing a triangle comprises determining at least three vertices of the triangle located on at least three edges of a cuboid volume defining a leaf node, and

[0016] - a centroid point C describing the mean coordinates of the vertices, or

[0017] - a centroid residual Cres describing the distance between a centroid point C and a mean centroid position Cmean obtained by averaging the coordinates of the vertices.

[0018] Utilizing the additional information with regard to the centroid point C (i.e. the centroid point C or a centroid residual Cres) allow to improve the precision of the decoded point cloud.

[0019] According to some embodiments of the present invention, reconstructing a leaf node comprises reconstructing a leaf node by applying ray tracing on an obtained triangle of the corresponding leaf node.

[0020] According to some embodiments of the present invention, the occupancy tree is formed as an octree. Alternatively, other data structures such as a quadtree or a binary tree can be implemented according to the present invention.

[0021] According to some embodiments of the present invention, the surface refine flag is implemented as a binary flag, wherein

[0022] - the binary flag is configured to be set to values of "true" and "false" , the first predetermined value being equal to "true" , or

[0023] - the binary flag is configured to be set to values of "1" and "0" , the first predetermined value being equal to "1" .

[0024] Hence, the increased flexibility of the method according to the present invention can be achieved without introducing a larger amount of overhead within the bitstream.

[0025] According to some embodiments of the present invention, the surface refine flag is implemented as a non-binary flag, wherein the non-binary flag is configured to indicate whether a surface refinement process shall be conducted and, in addition, in case a surface refinement process shall be conducted, which of a plurality of surface refinement processes shall be conducted. For instance, the surface refine flag may be implemented as a 4-Bit flag, wherein the flag is configured to be set to 16 different values, one of said values indicating that no surface refinement process shall be conducted, and the other 15 values indicating that different approaches may be applied for the surface refinement process. As indicated above, some values may be associated with an approach where the centroid point C is directly encoded, and some other values may be associated with an approach where the centroid point is encoded by a residual Cres being encoded into the bitstream. In this way, several surface refinement processes can be provided, wherein the surface refinement process most suitable for a specific application (or for a specific decoding device) can be applied in order to provide a decoding scheme being optimized for a specific application (or a specific decoder) . In this manner, it is enabled to consider the specific hardware specifications of a decoder or a display device (such as a TV or Head Mounted Device) comprising a decoder, such that the optimal decoding approach can be provided.

[0026] According to some embodiments of the present invention, the surface refine flag is comprised in the geometry parameter set, GPS, of the bitstream.

[0027] According to some further embodiments of the present invention, the surface refinement process comprises the following steps:

[0028] determining at least three vertices and a residual centroid point Cres from the received bitstream;

[0029] determining the mean centroid position Cmean from the determined vertices;

[0030] determining a normal vector wherein the product of Cres and defines a mean centroid vector

[0031] determining if the residual centroid position Cres is larger than a predetermined residual threshold Cres, thr;

[0032] shifting the determined vertices along an axis in order to obtain the target vertices, in case Cres is larger than the predetermined residual threshold Cres, thr.

[0033] However, as mentioned above, the present invention is not limited to a specific surface refinement process and can be easily combined with different surface refinement processes known from the prior art (and with surface refinement processes that will be developed in future works) .

[0034] According to a further aspect of the present invention, a method for encoding a 3D point cloud into a bitstream is provided, wherein the method comprises the following method steps:

[0035] encoding the point cloud into point cloud data of a bitstream, wherein the point cloud data represents the geometry of the point cloud based on an occupancy tree, and wherein the point cloud data comprises trisoup information describing the geometry of individual leaf nodes of the occupancy tree; and

[0036] encoding a surface refine flag into the bitstream, wherein the surface refine flag is a flag indicating whether a surface refinement process shall be conducted by a decoder.

[0037] Encoding the point cloud data into point cloud data of a bitstream can be performed in accordance with different approaches known from the prior art. The additional provision of the surface refine flag allows an increased flexibility, thereby allowing to efficiently provide different decoding approaches at the decoder side, depending on the specific application or the specific decoder.

[0038] According to some embodiments of the encoding method according to the present invention, the occupancy tree is formed as an octree.

[0039] According to some embodiments of the encoding method according to the present invention, the surface refine flag is implemented as a binary flag, wherein

[0040] - the binary flag is configured to be set to values of "true" and "false" , the value "true" indicating that a surface refinement process shall be conducted by the decoder and the value "false" indicating that no surface refinement process shall be conducted by the decoder; or

[0041] - the binary flag is configured to be set to values of "1" and "0" , the value "1" indicating that a surface refinement process shall be conducted by the decoder and the value "0" indicating that no surface refinement process shall be conducted by the decoder.

[0042] According to some embodiments of the encoding method according to the present invention, the surface refine flag is implemented as a non-binary flag, wherein the non-binary flag is configured to indicate whether a surface refinement process shall be conducted by the decoder and, in addition, in case a surface refinement process shall be conducted by the decoder, which of a plurality of surface refinement processes shall be conducted by the decoder.

[0043] According to some embodiments of the encoding method according to the present invention, the surface refine flag is encoded into the geometry parameter set, GPS, of the bitstream.

[0044] According to some embodiments of the encoding method according to the present invention, the method comprises the following method steps: encoding the vertices of triangles and a residual centroid point Cres into the bitstream.

[0045] According to some embodiments of the encoding method according to the present invention, the surface refine flag is set depending on a specific application or depending on a specific hardware parameter. Hence, the surface refine flag can be set to a first value indicating a low-complexity (and low-precision) decoding scheme for a first type of a Head Mounted Display (HMD)  comprising a low computational capacity, and can be set to a second value indicating a high-complexity (and high-precision) decoding scheme for a second type of an HMD comprising a high computational capacity.

[0046] According to a further aspect of the present invention, a decoder is provided being configured to encode a 3D point cloud into a bitstream, wherein the decoder comprises a processing unit and a memory unit, and wherein the decoder is configured to perform the steps of any of the decoding methods as described above.

[0047] According to a further aspect of the present invention, an encoder is provided being configured to decode a 3D point cloud from a bitstream, wherein the encoder comprises a processing unit and a memory unit, and wherein the encoder is configured to perform the steps of any of the encoding methods as described above.

[0048] According to a further aspect of the present invention, a bitstream is provided comprising:

[0049] - point cloud data representing the geometry of a 3D point cloud based on an occupancy tree, wherein the point cloud data comprises trisoup information describing the geometry of individual leaf nodes of the occupancy tree; and

[0050] - a surface refine flag, wherein the surface refine flag is a flag indicating whether a surface refinement process shall be conducted by a decoder.

[0051] According to some embodiments of the bitstream according to the present invention, the surface refine flag is implemented as a binary flag, wherein

[0052] - the binary flag is configured to be set to values of "true" and "false" , the first predetermined value being equal to "true" , or

[0053] - the binary flag is configured to be set to values of "1" and "0" , the first predetermined value being equal to "1" .

[0054] According to some embodiments of the bitstream according to the present invention, the surface refine flag is implemented as a non-binary flag, wherein the non-binary flag is configured to indicate whether a surface refinement  process shall be conducted and, in addition, in case a surface refinement process shall be conducted, which of a plurality of surface refinement processes shall be conducted.

[0055] According to yet a further aspect of the present invention, a computer-readable storage medium is provided, comprising instructions stored thereon, wherein the instructions are configured to perform the steps of any of the decoding methods described above, or to perform the steps of any of the encoding methods as described above.

[0056] Figures

[0057] In the following, specific embodiments of the present invention are described in more detail with reference to the accompanying figures. The figures show the following:

[0058] Figure 1 an embodiment of the present decoding method,

[0059] Figure 2 an embodiment of a decoder according to the present invention,

[0060] Figure 3 an embodiment of an encoder according to the present invention,

[0061] Figure 4 a cubic volume divided into sub-cubes,

[0062] Figure 5 an octree data structure,

[0063] Figure 6 an example for determining vertices on the edges of a cuboid,

[0064] Figure 7 TriSoup vertices along the edges of a volume associated with a leaf node,

[0065] Figure 8 TriSoup triangles inside a leaf node,

[0066] Figure 9 the process of projecting a cube and the TriSoup vertices on different 2D planes,

[0067] Figure 10 an alternative construction of triangles when using another axis as the dominant axis,

[0068] Figure 11 ray tracing to render TriSoup triangles during the decoding process,

[0069] Figure 12 a proposed reconstruction approach of triangles using the centroid point C as a pivoting point,

[0070] Figure 13 the normal vector obtained from the ordered vertices Vi and the mean point Cmean,

[0071] Figure 14 an example of a 1D residual α along the line constructed from the mean point Cmean and the normal vector

[0072] Figure 15A an example for a surface refinement process,

[0073] Figure 15B an example for a surface refinement process.Detailed Description

[0074] In general, many use cases can be addressed by point clouds, among which are

[0075] ● movie post-production,

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

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

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

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

[0080] ● autonomous driving, including 3D mapping of the environment and real-time Lidar data acquisition.

[0081] 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 combination of a geometry (the 3D position of each point) and attributes.

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

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

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

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

[0086] Point cloud compression in MPEG

[0087] 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

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

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

[0090] Both V-PCC and G-PCC standards have finalized their first version in late 2020 and will soon be available to the market.

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

[0092] The G-PCC coding method has two schemes for the compression of the geometry.

[0093] 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) .

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

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

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

[0097] Lossy compression of dense / solid point cloud

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

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

[0100] 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 (i.e. 10x more compressed than lossless coding) would already make possible real time transmission.

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

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

[0103] Obtaining a lossy scheme from GPCC

[0104] There are basically three main approaches to obtain a lossy scheme over the octree representation as done by the codec GPCC.

[0105] 1. down-sampling + lossless + re up-sampling

[0106] 2. modifying the voxels locally on the encoder side

[0107] 3. modelling the point cloud locally.

[0108] The first approach basically consists in down-sampling the whole point cloud to a smaller resolution, lossless coding the down-sampled point cloud, and then re up-sampling after decoding. Many up-sampling schemes have been proposed (like super resolution, AI or learning-based 3D post-processing, etc. ) and may provide good PSNR results when the down-sampling is not too aggressive, e.g. no more than a factor 2 in each direction. However, even if the metrics show good PSNR, the visual quality is disputable and not well controlled.

[0109] A second approach is to let the encoder “adjust” the point cloud locally such that the coding of the octree requires less bitrate. For this purpose, points may be slightly moved such as to obtain occupancy information better predicted by neighbouring nodes, thus leading to a lossless encoding of a modified octree with a lowered bitrate. Unfortunately, this approach leads to only small bitrate reduction.

[0110] The third approach is the most promising, but still requires some work before reaching maturity. The basic idea is to code the geometry by using a tree (an octree) down to some resolution, e.g. down NxNxN blocks where N may be 4, 8 or 16 for example. This tree is coded using a lossless scheme, loke GPCC for example. The tree itself does not require much bitrate because it does not go down to the deepest depth and has a small number of leaf nodes compared to the number of points of the point cloud. Then, in each NxNxN block, the point cloud is modelled by some local model. For example, a model may be a mean  plane. Or it may be a set of triangles as in the so-called TriSoup scheme that is detailed in the next sections.

[0111] In summary, according to the prior art, several methods for decoding a point cloud from a bitstream and corresponding methods for encoding a point cloud into a bitstream are known. According to some methods, trisoup coding is used to encode vertices of triangles describing the geometrical properties of a cuboid volume representing a leaf node of an occupancy tree. According to some more sophisticated approaches, it has been suggested to provide additional information that can be utilized to refine the vertices in order to obtain a more precise representation of a leaf node and, as a consequence, a more precise representation of the reconstructed point cloud, when a bitstream is decoded at the decoder side. At the decoder side, a surface refinement process can then be implemented that uses the additional information (additional to the information representing the vertices) in order to calculate a refined version of the triangle surfaces. These additional steps for refining the triangles are referred to as a surface refinement process. However, implementing approaches for surface refinement at the decoder side causes a more complex computational effort which is not always acceptable. For instance, some decoders may not be suitable to implement the more sophisticated method in real-time. Hence, it can be recommendable for those decoders to refrain from the increased precision that can be achieved by the surface refinement process and to benefit from the fast computation during the decoding process. In contrast, some decoders may provide higher computational capacity, wherein it may be recommendable that they implement the rather sophisticated decoding process including the surface refinement process leading to a more precise point cloud, while the computational time is still acceptable.

[0112] In view of the above, the problem to be solved by the present invention is to provide a flexible method for decoding a point cloud from a bitstream, wherein the decoder can select between at least one decoding approach comprising a lower precision but higher computational speed and one decoding approach comprising a higher precision but lower computational speed.

[0113] In Figure 1, an embodiment of the decoding method S100 according to the present invention is schematically illustrated. In a first method step S110, a bitstream comprising point cloud data and a surface refine flag are received. The point cloud data represents the geometry of the point cloud based on an occupancy tree, wherein the point cloud data according to the present invention comprises trisoup information describing the geometry of individual leaf nodes of the occupancy tree. The surface refine flag contained in the bitstream is a flag indicating whether a surface refinement process shall be conducted by the decoder. As mentioned above, different approaches for refining the triangles at can be implemented according to the present invention. In a second method step S120, triangles are reconstructed from the received bitstream and the trisoup information comprised therein, wherein reconstructing a triangle comprises determining at least three vertices of the triangle located on at least three edges of a cuboid volume defining a leaf node. In a third method step S130, the surface refine flag contained in the bitstream is evaluated. If the surface refine flag is set to a first predetermined value (e.g. is set to "true" or "1" ) , a surface refinement process is performed to refine the determined vertices. Subsequently, target vertices are set equal to the refined vertices. Hence, decoding the point cloud leads to more precise results due to the surface refinement process. If the surface refine flag is set to a second predetermined value (e.g. is set to "false" or "0" ) , target vertices are set equal to the original and non-refined vertices. In other words, in this case, no surface refinement process is performed by the decoder, thus enabling a lower computational complexity during the decoding process. In a fourth method step S140, constructing triangles of leaf nodes from the target vertices, and reconstructing the point cloud based on the constructed triangles. Hence, in the surface refine flag is set to the first value, the triangles are constructed based on the refined vertices, while the triangles are constructed based on the non-refined vertices, if the surface refine flag is set to the second value. This provides a flexibility, such that it can conveniently be switched between higher precision (while comprising a lower computational speed) and higher computational speed (while providing a lower precision) depending on a specific application or depending on the computational capacity of a decoding device.

[0114] In Figure 2, a decoder 20 is schematically illustrated, wherein the decoder 20 comprises a processing unit 22 and a memory unit 24. The decoder 20 is configured to perform the methods steps described above in the context of the decoding method.

[0115] In Figure 3, an encoder 30 is schematically illustrated, wherein the encoder 30 comprises a processing unit 32 and a memory unit 34. The encoder 30 is configured to perform the method steps described above in the context of the encoding method.

[0116] In Figures 4 and 5, an example for generating an occupancy tree, more precisely an octree, is illustrated. The first step of the geometry encoding process to determine the octree information is to build and encode an octree, as illustrated in Figures 4 and 5. The bounding box is the main volume 100 that contains all the points to be encoded, and is associated to the root node 112 illustrated in Figure 5 (i.e. the single node at the top of the tree 110) . This volume 100 is first divided into eight sub-volumes 102 called octants, each being represented by a node 114 in the tree 110 illustrated in Figure 5. The octants 106 that are occupied by at least one point, which are shaded in Figures 4 and 5, 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 split anymore, and it may be determined based on the compression rate.

[0117] 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 can be entropy coded with a binary arithmetic encoder.

[0118] Figure 6 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.

[0119] In Figure 7, TriSoup vertices along the edges of a volume associated with a leaf node are illustrated. TriSoup models the point cloud locally by using a set of triangle without explicitely providing connectivity information, thus its name derived from “soup of triangles” .

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

[0121] The coding of the TriSoup vertices requires two information per edge:

[0122] ● a vertex flag indicating if a TriSoup vertex is present on the edge, and

[0123] ● when present, the vertex position along the edge.

[0124] Consequently, the coded data consists in the octree data plus the TriSoup data. The increase of data due to the TriSoup model is more than compensated by the improvement of the reconstruction of the point cloud by TriSoup triangles as explained hereafter.

[0125] 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=2s is coded with unitary precision by pushing (bypassing / not entropy coding) s bits into the bitstream.

[0126] Inside a leaf node, triangles are constructed from the TriSoup vertices if at least three vertices are present on the edges of the leaf node.

[0127] In Figure 8, constructed triangles inside a cuboid volume representing a leaf node are illustrated. Obviously, other combinations of triangles are possible. The choice of triangles come from a three-step process

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

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

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

[0131] In Figure 9, the process of projecting a cube and the TriSoup vertices onto different 2D planes is illustrated. Each of the three axis is tested and the one maximizing the total surfaces of triangle is kept as dominant axis. For simplicity of the figure, only the test over two axis is depicted in Figure 9.

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

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

[0134] 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 9 inside the node.

[0135] It is to be noted that taking the horizontal axis as dominant would have led to another construction of triangles as illustrated in Figure 10.

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

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

[0138] Rays are launched along the three directions parallel to an axis, as shown in Figure 11. 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.

[0139] After applying Trisoup to all leaf nodes, i.e. constructing triangles and obtaining points 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.

[0140] According to some embodiments of the present invention, the reconstruction of the triangles may be performed using a centroid point C as a pivoting point. According to these embodiments, a centroid point is computed whose coordinates are the mean coordinates of all (ordered) vertices Vi, see Figure 12 where the centroid point C is depicted using checkboard filling.

[0141] Then, the triangles are constructed from the ordered vertices (V1, V2, …, VM) by pivoting around the centroid point C. The following M triangles are constructed:

[0142] ● V1V2C

[0143] ● V2V3C

[0144] ● …

[0145] ● VM-1VMC

[0146] ● VMV1C

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

[0148] Consequently, it is also proposed to improve the position of the centroid point C by coding a residual position in the bitstream such that the position centroid point C is closer to the original points of the point cloud C = Cmean + Cres

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

[0150] The coded residual may be a 3D residual. However, it has been 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 proposed to code a 1D residual Cres.

[0151] For example, a normal vector may be constructed, as shown on Figure 13, and the residual may be equal to

[0152] where α is a 1D signed scalar value coded in the bitstream, as illustrated in Figure 14. The normal vector  may be found by the following two steps:

[0153] 1.

[0154] 2. and then normalization

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

[0156] Alternatively, the vector may be taken parallel to an axis in order to simplify 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.

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

[0158] The value α may be binarized into

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

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

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

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

[0163] 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 is found by

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

[0165] The value α can thus be obtained by

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

[0167] According to some embodiments of the present invention, it is proposed to refine the triangle modelling in the leaf nodes to make the reconstructed surface closer to original surface at decoder side. In particular, after obtaining the decoded vertices and decoded centroid point C at the decoder side, the proposed method can be used to adjust the positions of vertices towards the direction of vector  in leaf nodes of convex or concave areas.

[0168] An embodiment of the proposed refinement method of triangle modelling in trisoup coding method for point cloud data may comprise the following steps:

[0169] At the decoder side, after decoding the vertices of each leaf node from the bitstream, each leaf node may be iterated to construct triangles for obtaining a reconstructed point cloud by a ray tracing method.

[0170] In particular, for each leaf node,

[0171] · if the processed leaf node has more than 3 vertices,

[0172] · Firstly, the centroid point C may be determined to construct modelling surface consisting of triangles constructed by vertices and a centroid point C. In particular, firstly, the mean point Cmean of vertices (V0, …, Vi) in the leaf node may be determined, and unit vector of centroid residual, and then the magnitude value Cres of centroid residual may be decoded from bitstream, and finally the centroid point C may be obtained by wherein is the vector from Cmean to C, which can also be named as

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

[0174] · If the centroid residual Cres is large relative to leaf node size (it is more probably 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 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. An exemplary embodiment of the surface refinement process (wherein the surface refinement is achieved by a refinement of the vertices) will be described below) .

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

[0176] · Then all vertices in the leaf node (including the refined vertices V’ and the other non-refined vertices V) may be used to construct triangles combined with centroid point C, as described in above, and ray tracing method may be applied onto each triangle to obtain the reconstructed points in the leaf node.

[0177] · Otherwise, if the leaf node has three 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 a ray tracing method may be applied onto the triangle to obtain the reconstructed points in the leaf node.

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

[0179] Vertice refinement in the proposed method

[0180] 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 axis where the vector has maximum value among all three axes, will be refined along the edges which they belong to, within the boundary of the edge in the leaf node, and toward direction that can make reconstructed surface more natural. In a preferred embodiment, the detailed vertice refinement process may comprise the following steps:

[0181] · Firstly, it may determine the axis axis_max along which the vector has a maximum value;

[0182] · then, it may find the vertices (V0, …, Vi) that are on edges parallel to axis axis_max in the leaf node;

[0183] · then, it may change 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

[0184] wherein offset is a shift distance from Vi, and is a unit vector pointing to the direction of the shift. In a preferred embodiment,  can be based on  and edge boundary, wherein represents the projected vector of centroid residual vector along axis_max direction, edge boundary is a constrain condition to keep the vertex not exceed the leaf node which it belongs to. And in this embodiment,  extends along the same di rection of and offset is obtained based on the magnitude value of and edge boundary of the leaf node. In a preferred embedment, offset can be half of the magnitude value of

[0185] Figures 15A and 15B show the refined surface produced by a preferred embodiment, wherein the non-refined vertices 1501 located on the edges are  vertices used to model the surfaces according to the trisoup approach without applying a surface refinement process, the shifting arrow lines 1502 represents the projecting vector and the refined vertices 1503 located on the edges describe the vertices after applying the surface refinement process, after the non-refined vertices (also referred to as the original vertices) are refined by shifting the original vertices 1501 along the direction of As can be seen, the refined surface is closer to the original surface in the leaf nodes, and the pointy protrusions artifacts have been reduced to some extent.

[0186] Further details of specific implementations of the present invention

[0187] In the following, further details of specific implementations of the present invention will be discussed for providing a more detailed understanding of the present invention.

[0188] Problems addressed by the present invention

[0189] As described above, the vertices refinement method can improve the quality of the reconstructed point cloud in trisoup coding process,

[0190] ● but in some use cases of dense point cloud coding, because of lacking memory or demanding faster reconstruction of point cloud, users may need to obtain reconstructed point cloud without vertices refinement process, so to make trisoup coding more flexible to all cases, the trisoup coding need to achieve flexibility to use / not use a surface refinement  / vertice refinement approach in combination with trisoup coding.

[0191] ● Also, to improve the quality of the reconstructed point cloud in trisoup coding process, there can be several tools (e.g. different surface refinement approaches) , so to let the user achieve quality enhancement of reconstructed point cloud in a more convenient way, a method needs to be proposed to enable / disable these tools together.

[0192] Specific features according to further preferred embodiments

[0193] According to some preferred embodiments of the present invention, it is proposed to introduce a flag (for example, a surface refine flag) to enable / disable a surface refinement tools in trisoup coding. For instance, if the flag is set to the value "true" , then a surface refinement method may be enabled; otherwise, then  the surface refinement method may be disabled, wherein the surface refinement method may include one or several vertice refinement methods. By using this proposed method, the user can have more flexibility to choose if the surface refinement method is used or not in trisoup coding.

[0194] Preferred embodiments of the proposed method

[0195] In a preferred embodiment, the surface refine flag (also referred to as a SurfaceRefineFlag) indicating if a method to improve quality of reconstructed point cloud surface (surface refinement method) is enabled or not is set during the encoding process by a user, and the flag SurfaceRefineFlag is encoded into the bitstream. Then at the decoder side, the flag SurfaceRefineFlag is decoded from the bitstream, and it is used to determine if a surface refinement method is enabled or disabled in the point cloud reconstruction process. If the flag SurfaceRefineFlag is true, then the surface refinement method may be enabled; otherwise, surface refinement method may be disabled.

[0196] In a preferred embodiment, the flag SurfaceRefineFlag is put into geometry parameter set (GPS) .

[0197] Preferred embodiments of the coding method

[0198] According to preferred embodiments of the present invention, at the decoder side, firstly, it the flag SurfaceRefineFlag may be decoded from the bitstream, and may be used in the subsequent trisoup decoding process.

[0199] During the trisoup decoding process, after decoding the vertices and the centroid information of each leaf node from the bitstream, each leaf node may be iterated to construct triangles and to subsequently obtain the reconstructed point cloud.

[0200] · During each iteration process, if the flag SurfaceRefineFlag is set to "true" , then the decoded vertices or centroids of a leaf node may be refined, and then the triangles will be constructed based on the refined vertices to better model the original point cloud. Then ray tracing may be implemented based on the constructed triangles to reconstruct the point cloud with an increased precision. Otherwise, if the flag SurfaceRefineFlag is set to "false" , then the decoded vertices of a leaf node will not be refined, and the triangles will be constructed based on decoded vertices. Then, ray tracing will be  implemented based on the original triangles to obtain a reconstructed point cloud, without the increased computational effort.

[0201] According to some embodiments of the present invention, at the encoder side, firstly, the flag SurfaceRefineFlag may be encoded into the bitstream, and it will be used in the trisoup encoding process. In the trisoup encoding process, after determining the vertices and centroid information of each leaf node and encoding them into the bitstream, each leaf node is iterated to construct triangles and to obtain the reconstructed point cloud geometry based on vertices and centroids information for later attribute coding.

[0202] · During each iteration process, if the flag SurfaceRefineFlag is set to "true" , the determined vertices of a leaf node will be refined, and then triangles will be constructed based on refined vertices to better model the original point cloud. Then, ray tracing will be implemented based on the constructed triangles to obtain an improved reconstruction of the point cloud. Otherwise, if the flag SurfaceRefineFlag is set to "false" , the determined vertices of a leaf node will not be refined, and the triangles will be constructed based on the originally determined vertices. Then, ray tracing will be implemented based on the originally constructed triangles to obtain the reconstructed point cloud.

[0203] In some embodiments of the present invention, at the decoder side, firstly, the value of the flag SurfaceRefineFlag is decoded from the bitstream. Then, after decoding the vertices and the centroids information of each leaf node from the bitstream, each leaf node may be iterated to construct triangles in order to obtain the reconstructed point cloud by applying a ray tracing method.

[0204] In particular, for each leaf node,

[0205] · if the processed leaf node comprises more than three vertices,

[0206] · Firstly, it may be judged if the flag SurfaceRefineFlag is set to "true" or not to obtain refined vertices.

[0207] · If the flag SurfaceRefineFlag is set to "true" , the centroid point information may be obtained, including centroid point C and centroid residual Cres. Then the prominence degree of modelling surface in the  leaf node may be judged to refine the vertices of the leaf node. According to preferred embodiments, it may be judged whether the centroid residual Cres is large or not relative to the leaf node size.

[0208] · If the centroid residual Cres is large relative to leaf node size (it is more probably 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, which is the same as described above. Then, for each vertex Vj, determine vertices shift offset, and then refine each of the vertices Vj to be V’j (as described above) .

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

[0210] · Otherwise, if the flag SurfaceRefineFlag is false, then it will obtain the centroid point information, and it will not implement any vertice refinement method for the leaf node.

[0211] · 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, and a ray tracing approach is applied to each triangle to obtain reconstructed points in the leaf node.

[0212] · Otherwise, if the leaf node has three vertices, there will be no mean point Cmean and centroid point C in the processed leaf node, and only one triangle V1V2V3 can be constructed, and a ray tracing approach is applied to the triangle to obtain reconstructed points in the leaf node.

[0213] · 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.

[0214] 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 obtain reconstructed geometry information of point cloud by constructing triangles based on vertices and centroid position C.  And to obtain refined modelling surface in the leaf node, it processes the leaf nodes iteratively following same steps as described above in decoder side.

[0215] Examples for obtaining a centroid point C and centroid residual Cres

[0216] At the decoder side, if the processed leaf node has more than three vertices, it needs to determine the centroid point C to construct triangles, which is the same as that in current trisoup coding. In particular, firstly, it will determine the mean point Cmean of vertices (V0, …, Vi) in the leaf node, and unit vector of the centroid residual, and then it decodes the magnitude value Cres of the centroid residual from the bitstream, and finally it can obtain the centroid point C by  wherein is the vector from Cmean to C, which can a lso be named as

[0217] Exemplary method to determine vertices shift offset

[0218] According to some embodiments of the present invention, the offset value is determined based on centroid drift magnitude of current leaf node, for example,

[0219] wherein k can be set satisfying 0<k<1, wherein axis_max is the axis along which the vector CCmean has the maximum value.

[0220] According to other embodiments, the offset value may be determined based on centroid drift magnitudes 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 processing a current leaf node, only the centroid drift information of already coded / processed leaf nodes can be known and retrieved.

[0221] According to other embodiment, the shift offset of vertices Vj is determined based on the centroid drift magnitude of adjacent leaf nodes sharing a same face F. For an example, the shift offset can be weighted by an average of centroid drift magnitudes of the two neighbouring leaf nodes A and B, which can be described as

[0222] and k+b≤1,

[0223] wherein k and b can both be set to 1 / 2.

[0224] Preferred embodiments for the vertice refinement approach

[0225] According to some preferred embodiments, refining each of the vertices Vj to V’j needs to be towards the direction of vector  (whose unit vector is  ) by offset distance, then the refined vertices V’j can be represented as below:

[0226] Further preferred aspects of the present invention

[0227] According to some preferred embodiments of the present invention, the invention may comprise the following aspects:

[0228] Aspect 1:

[0229] A method of decoding, from a bitstream, the geometry of a point cloud by decoding trisoup information constituting a geometrical representation of the geometry, and by following the steps of

[0230] ● decoding trisoup information of the cuboid volumes (including positions of at least three vertices (Vj) located on at least three edges and centroid residuals Cres) ;

[0231] ● constructing at least one triangle from the obtained ordered vertices (Vi) and, preferably, from cendroid residuals Cres;

[0232] ● reconstructing point clouds by using ray tracing on constructed triangles in the cuboid volumes,

[0233] wherein a flag (for example, a SurfaceRefineFlag) is introduced in geometry parameter set (GPS) to enable / disable the usage of a method to improve the quality of reconstructed point cloud surface (also referred to as a surface refinement method) .

[0234] Aspect 2:

[0235] Method according to aspect 1, wherein the flag can be set by an end user according to a specific application.

[0236] Aspect 3:

[0237] Method according to aspect 1, wherein if the flag is set to "true" , the method to improve the quality of the reconstructed point cloud surface (surface refinement method) is enabled; otherwise, the method to improve the quality of reconstructed point cloud surface (surface refinement method) is disabled.

[0238] Aspect 4:

[0239] Method according to aspect 2 or 3, wherein the flag is written into GPS (geometry parameter set) and encoded into the bitstream at the encoder side, and the flag is decoded from the bitstream and then used for enabling / disabling the vertices refinement method.

[0240] Aspect 5:

[0241] Method according to aspect 1, wherein the method to improve the quality of reconstructed point cloud surface (surface refinement method) may include a vertice refinement method.

[0242] Reference signs S100     decoding method S110     first method step S120     second method step S130     third method step S140     fourth method step 20       decoder 22       processing unit of the decoder 24       memory unit of the decoder 30       encoder 32       processing unit of the encoder 34       memory unit of the encoder 100      main volume 102      sub-volume 104      non-occupied octant 106      occupied octant 110      tree 112      root node 114     node 116     leaf node 118     occupancy bytes 120     occupied leaf node 200     main volume 210     3D surface 220     block 230     polygon 232     vertices 1501    non-refined vertices 1502    shifting arrow lines 1503    refined vertices

[0243] List of abbreviations

[0244] ● PCC: Point Cloud Compression

[0245] ● V-PCC: Video-based PCC

[0246] ● G-PCC: Geometry-based PCC

[0247] ● Lidar: Light Detection and Ranging = method for measuring distances (ranging) by illuminating the target with laser light and measuring the reflection with a sensor

Claims

1.A method for decoding a 3D point cloud from a bitstream, wherein the method is implemented on a decoder and comprises the following method steps:receiving a bitstream, wherein the bitstream comprises:- a surface refine flag, wherein the surface refine flag is a flag indicating whether a surface refinement process shall be conducted by the decoder;constructing triangles from the bitstream;conducting a surface refinement process to refine vertices, and setting target vertices equal to the refined vertices, wherein the surface refine flag is set to a first predetermined value; or setting target vertices equal to the original and non-refined vertices, wherein the surface refine flag is set to a second predetermined value;constructing triangles of leaf nodes from the target vertices and reconstructing a point cloud based on the constructed triangles.2.Method according to claim 1, characterized in that reconstructing a triangle comprises determining at least three vertices of the triangle located on at least three edges of a cuboid volume defining a leaf node, and- a centroid point C describing the mean coordinates of the vertices, or- a centroid residual Cres describing the distance between a centroid point C and a mean centroid position Cmean obtained by averaging the coordinates of the vertices.3.Method according to claim 1 or 2, characterized in that reconstructing a leaf node comprises reconstructing a leaf node by applying ray tracing on an obtained triangle of the corresponding leaf node.4.Method according to any of claims 1 to 3, characterized in that the surface refine flag is implemented as a non-binary flag, wherein the non-binary flag is configured to indicate whether a surface refinement process shall be conducted and, in addition, in case a surface refinement process shall be  conducted, which of a plurality of surface refinement processes shall be conducted.5.Method according to any of claims 1 to 4, characterized in that the surface refine flag is comprised in the geometry parameter set, GPS, of the bitstream.6.Method according to any of claims 1 to 5, characterized in that the surface refinement process comprises the following steps:determining at least three vertices and a residual centroid point Cres from the received bitstream;determining the mean centroid position Cmean from the determined vertices; determining a normal vectorwherein the product of Cres anddefines a mean centroid vectordetermining if the residual centroid position Cres is larger than a predetermined residual threshold Cres, thr;shifting the determined vertices along an axis in order to obtain the target vertices, in case Cres is larger than the predetermined residual threshold Cres, thr.7.Method for encoding a 3D point cloud into a bitstream, the method comprising the following method steps:encoding the point cloud into point cloud data of a bitstream, wherein the point cloud data represents the geometry of the point cloud based on an occupancy tree, and wherein the point cloud data comprises trisoup information describing the geometry of individual leaf nodes of the occupancy tree; andencoding a surface refine flag into the bitstream, wherein the surface refine flag is a flag indicating whether a surface refinement process shall be conducted by a decoder.8.Method according to claim 7, characterized in that the surface refine flag is implemented as a non-binary flag, wherein the non-binary flag is configured to indicate whether a surface refinement process shall be conducted by the  decoder and, in addition, in case a surface refinement process shall be conducted by the decoder, which of a plurality of surface refinement processes shall be conducted by the decoder.9.Method according to claim 7 or 8, characterized in that the surface refine flag is encoded into the geometry parameter set, GPS, of the bitstream.10.Method according to any of claims 7 to 9, characterized in that the method comprises the following method steps:encoding the vertices of triangles and a residual centroid point Cres into the bitstream.11.Method according to any of claims 7 to 10, characterized in that the surface refine flag is set depending on a specific application or depending on a specific hardware parameter.12.A decoder configured to encode a 3D point cloud into a bitstream, wherein the decoder comprises a processing unit and a memory unit, and wherein the decoder is configured to perform the steps of any of the methods according to claims 1 to 6.13.An encoder configured to decode a 3D point cloud from a bitstream, wherein the encoder comprises a processing unit and a memory unit, and wherein the encoder is configured to perform the steps of any of the methods according to claims 7 to 11.14.Bitstream comprising:- point cloud data representing the geometry of a 3D point cloud based on an occupancy tree, wherein the point cloud data comprises trisoup information describing the geometry of individual leaf nodes of the occupancy tree; and- a surface refine flag, wherein the surface refine flag is a flag indicating whether a surface refinement process shall be conducted by a decoder.15.Computer-readable storage medium comprising instructions stored thereon, wherein the instructions are configured to perform the steps of any of the decoding methods according to any of claims 1 to 6 or to perform the steps of any of the encoding methods according to any of claims 7 to 11.

Citation Information

Patent Citations

  • Encoding / decoding positions of points of a point cloud emcompassed in a cuboid volume

    EP4250234A1

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

    WO2023184393A1