Encoding method and apparatus, decoding method and apparatus, and encoder, decoder, bit stream and storage medium
By dynamically adjusting the sampling parameters based on the point cloud density information in the point cloud encoding and decoding technology, the problem of uneven point cloud density caused by the global fixed sampling rate is solved, and higher quality point cloud geometric reconstruction is achieved.
Patent Information
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- SHANGHAI JIAOTONG UNIV
- Filing Date
- 2024-10-24
- Publication Date
- 2026-04-30
AI Technical Summary
Existing point cloud encoding and decoding technologies use a globally fixed sampling rate during the reconstruction process, resulting in uneven density distribution of the reconstructed point cloud. This fails to effectively reflect the dense and sparse areas of the original point cloud, affecting the quality of geometric reconstruction.
A method is adopted to dynamically adjust the sampling parameters based on the point cloud density information. The point cloud density information of the current node is determined by the decoder, and the sampling rate is dynamically adjusted according to the information to generate a reconstructed point cloud that is closer to the original point cloud density distribution.
It improves the geometric reconstruction quality of point clouds, making the density distribution of the reconstructed point cloud closer to the original point cloud, and enhances encoding and decoding performance.
Smart Images

Figure CN2024127185_30042026_PF_FP_ABST
Abstract
Description
Encoding and decoding methods and devices, codecs, bitstreams, and storage media Technical Field
[0001] This application relates to point cloud encoding and decoding technology, including but not limited to encoding and decoding methods and apparatus, codecs, bitstreams, and storage media. Background Technology
[0002] Point clouds are a three-dimensional data format composed of a large number of discrete points distributed in space. Each point in a point cloud contains geometric information describing its spatial coordinates and accompanying attribute information, such as color, reflectivity, and normal vectors. With the development of 3D sensing and 3D reconstruction technologies, point clouds are widely used in various fields such as computer vision, virtual reality, and autonomous driving.
[0003] However, point clouds often contain a large number of points, and each point contains rich attribute information. The massive amount of data poses a significant challenge to the storage, transmission, and processing of point clouds. Point cloud compression coding can significantly reduce the data volume of point clouds while preserving data features. Therefore, achieving high-quality geometric reconstruction remains significant for enhancing point cloud encoding and decoding performance.
[0004] Summary of the Invention
[0005] The encoding / decoding method, apparatus, codec, bitstream, and storage medium provided in this application can improve the geometric reconstruction quality of point clouds. The encoding / decoding method, apparatus, codec, bitstream, and storage medium provided in this application are implemented as follows:
[0006] In a first aspect, embodiments of this application provide a decoding method applied to a decoder. The method includes: decoding a bitstream to determine vertex information in a current node of a current point cloud; determining one or more triangles based on the vertex information; the one or more triangles representing the point cloud surface of the current node; determining point cloud density information of the current node; determining a first sampling parameter based on the point cloud density information of the current node; and obtaining a reconstructed point cloud in the current node based on the first sampling parameter and the one or more triangles.
[0007] Secondly, embodiments of this application provide an encoding method applied to an encoder. The method includes: determining vertex information in a current node of a current point cloud; generating a bitstream based on the vertex information; determining a point cloud density parameter of a first node of the current point cloud; wherein the first node includes the current node; and generating a bitstream based on the point cloud density parameter of the first node.
[0008] Thirdly, embodiments of this application provide a decoding method applied to a decoder. The method includes: decoding a bitstream to determine vertex information in a current node of a current point cloud; determining one or more triangles based on the vertex information; the one or more triangles representing the point cloud surface of the current node; determining point cloud density parameters of the current node based on the vertex information; determining a third sampling parameter based on the point cloud density parameter of the current node; and obtaining a reconstructed point cloud in the current node based on the third sampling parameter and the one or more triangles.
[0009] Fourthly, embodiments of this application provide a decoding device applied to a decoder. The device includes: a first decoding module configured to decode a bitstream and determine vertex information in a current node of a current point cloud; a first determining module configured to determine one or more triangles based on the vertex information; the one or more triangles representing the point cloud surface of the current node; a second determining module configured to determine point cloud density information of the current node; a third determining module configured to determine a first sampling parameter based on the point cloud density information of the current node; and a first reconstruction module configured to obtain a reconstructed point cloud in the current node based on the first sampling parameter and the one or more triangles.
[0010] Fifthly, embodiments of this application provide a decoding device applied to a decoder. The device includes: a second decoding module configured to decode a bitstream and determine vertex information in a current node of a current point cloud; a fourth determining module configured to determine one or more triangles based on the vertex information; the one or more triangles representing the point cloud surface of the current node; a fifth determining module configured to determine point cloud density parameters of the current node based on the vertex information; a sixth determining module configured to determine a third sampling parameter based on the point cloud density parameter of the current node; and a second reconstruction module configured to obtain a reconstructed point cloud in the current node based on the third sampling parameter and the one or more triangles.
[0011] In a sixth aspect, embodiments of this application provide a decoder, including a first memory and a first processor; wherein the first memory is used to store a computer program capable of running on the first processor; and the first processor is used to execute the method described in the first, second, or third aspect when running the computer program.
[0012] In a seventh aspect, embodiments of this application provide an encoding device applied to an encoder, the device comprising: a seventh determining module configured to determine vertex information in a current node of a current point cloud; a first encoding module configured to generate a bitstream based on the vertex information; an eighth determining module configured to determine a point cloud density parameter of a first node of the current point cloud; wherein the first node includes the current node; and a second encoding module configured to generate a bitstream based on the point cloud density parameter of the first node.
[0013] Eighthly, embodiments of this application provide an encoder, including a second memory and a second processor; wherein the second memory is used to store a computer program capable of running on the second processor; and the second processor is used to execute the method described in the first, second, or third aspect when running the computer program.
[0014] Ninthly, embodiments of this application provide a bitstream obtained by the encoding method described in the second aspect.
[0015] In a tenth aspect, embodiments of this application provide an electronic device, comprising: a processor adapted to execute a computer program; and a computer-readable storage medium storing a computer program, wherein the computer program, when executed by the processor, implements the method described in the first, second, or third aspect.
[0016] Eleventhly, embodiments of this application provide a computer-readable storage medium, wherein the computer-readable storage medium stores a computer program, which, when executed, implements the method described in the first, second, or third aspect.
[0017] In a twelfth aspect, embodiments of this application provide a computer program product, including a computer program or instructions, which, when executed by a processor, implement the method described in the first, second, or third aspect.
[0018] In a thirteenth aspect, embodiments of this application provide a computer program product including computer program instructions that cause a computer to perform the methods described in the first, second, or third aspect.
[0019] In a fourteenth aspect, embodiments of this application provide a computer program that causes a computer to perform the methods described in the first, second, or third aspect.
[0020] It should be understood that the above general description and the following detailed description are exemplary and explanatory only, and do not limit this application. Attached Figure Description
[0021] The accompanying drawings, which are incorporated in and form part of this specification, illustrate embodiments consistent with this application and, together with the specification, serve to explain the technical solutions of this application. Obviously, the drawings described below are merely some embodiments of this application, and those skilled in the art can obtain other drawings based on these drawings without any inventive effort.
[0022] The flowcharts shown in the accompanying drawings are merely illustrative and do not necessarily include all content and operations / steps, nor do they necessarily have to be performed in the described order. For example, some operations / steps can be broken down, while others can be combined or partially combined; therefore, the actual execution order may change depending on the specific circumstances.
[0023] Figure 1 is a schematic diagram of a point cloud geometric coding framework based on Trisoup;
[0024] Figure 2 is a schematic diagram of a point cloud geometry decoding framework based on Trisoup;
[0025] Figure 3 is a schematic diagram of the implementation flow of the decoding method provided in the embodiment of this application;
[0026] Figure 4 is a schematic diagram of the implementation flow of the triangle determination method provided in the embodiment of this application;
[0027] Figure 5 is a schematic diagram of the implementation flow of the method for determining the value of the first syntax element provided in the embodiments of this application;
[0028] Figure 6 is a schematic diagram of the implementation flow of the encoding method provided in the embodiments of this application;
[0029] Figure 7 is a schematic diagram of the implementation process of the point cloud density parameter determination method provided in the embodiments of this application;
[0030] Figure 8 is a schematic diagram of the triangle in the first node provided in the embodiment of this application;
[0031] Figure 9 is a schematic diagram of the triangle in the first node provided in the embodiment of this application;
[0032] Figure 10 is a schematic diagram of the implementation flow of the point cloud density parameter encoding method provided in the embodiments of this application;
[0033] Figure 11 is a schematic diagram of the implementation process of the decoding method provided in the embodiment of this application;
[0034] Figure 12 is a schematic diagram of the encoding and decoding framework based on point cloud geometric dynamic local reconstruction provided in an embodiment of this application;
[0035] Figure 13 is a schematic diagram of the point cloud geometric coding framework based on Trisoup provided in the embodiments of this application;
[0036] Figure 14 is a schematic diagram of the point cloud geometric decoding framework based on Trisoup provided in the embodiments of this application;
[0037] Figure 15 is a schematic diagram of the structure of the decoding device provided in an embodiment of this application;
[0038] Figure 16 is a second structural schematic diagram of the decoding device provided in an embodiment of this application;
[0039] Figure 17 is a schematic diagram of the structure of the encoding device provided in an embodiment of this application;
[0040] Figure 18 is a schematic diagram of the decoder provided in an embodiment of this application;
[0041] Figure 19 is a schematic diagram of the encoder provided in an embodiment of this application. Detailed Implementation
[0042] To make the objectives, technical solutions, and advantages of the embodiments of this application clearer, the specific technical solutions of this application will be further described in detail below with reference to the accompanying drawings of the embodiments of this application. The following embodiments are used to illustrate this application, but are not intended to limit the scope of this application.
[0043] Unless otherwise defined, all technical and scientific terms used herein have the same meaning as commonly understood by one of ordinary skill in the art to which this application belongs. The terminology used herein is for the purpose of describing embodiments of this application only and is not intended to limit this application.
[0044] In the following description, exemplary descriptions such as “some embodiments”, “in other embodiments”, or “in one example” describe a subset of all possible embodiments. However, it is understood that “some embodiments” may be the same subset or different subset of all possible embodiments and may be combined with each other without conflict.
[0045] It should be noted that the terms "first", "second", "third", etc., used in the embodiments of this application are used to distinguish similar or different objects and do not represent a specific order of objects. It is understood that "first", "second", "third", etc., can be interchanged in a specific order or sequence where permitted, so that the embodiments of this application described herein can be implemented in an order other than that illustrated or described herein.
[0046] The encoder and decoder framework and business scenarios described in the embodiments of this application are for the purpose of more clearly illustrating the technical solutions of the embodiments of this application, and do not constitute a limitation on the technical solutions provided in the embodiments of this application. Those skilled in the art will understand that, with the evolution of encoders and decoders and the emergence of new business scenarios, the technical solutions provided in the embodiments of this application are also applicable to similar technical problems.
[0047] G-PCC is an efficient point cloud compression coding framework. G-PCC first encodes the point cloud geometry, and then encodes the point cloud attributes based on the reconstructed geometry. For different data and coding conditions, G-PCC provides three geometric coding methods: octree, Trisoup, and prediction tree. Among them, Trisoup, based on octree partitioning, uses triangular patches to approximate the local surface of the point cloud, achieving high-quality geometric reconstruction while saving bitrate; it is an efficient lossy geometric coding method.
[0048] Figure 1 is a schematic diagram of a point cloud geometric coding framework based on Trisoup. As shown in Figure 1, at the encoding end, Trisoup consists of two steps: octree division 102 and vertex construction 103. First, the encoder 100 calculates a minimum cube bounding box (level 0) containing the input point cloud 101. This cube bounding box serves as the root node for the division and is recursively used for octree division. During the octree division process, each level of nodes is divided into eight child nodes, and an 8-bit binary occupancy code is generated to indicate whether each child node contains points of the point cloud. An occupancy code of 1 indicates that the child node is occupied and the division should continue; an occupancy code of 0 indicates that the child node is empty and the division stops. The division stops when a certain preset level is reached, and all nodes at that level are considered leaf nodes, which are the basic coding units of Trisoup (such as the minimum cube in level L). For each leaf node, the encoder 100 determines the number and position of vertices based on the point cloud inside the leaf node. Specifically, when the point cloud inside a leaf node intersects with one of the edges of that leaf node, the encoder 100 constructs an edge vertex at the intersection. Since a leaf node has 12 edges, there can be a maximum of 12 edge vertices. The centroids of all edge vertices in a leaf node are constructed as centroid vertices. To more accurately fit the point cloud surface, the centroid vertex is displaced along a direction determined by a specific algorithm to the position closest to the input point cloud inside the leaf node. Finally, the octree occupancy code, the existence of edge vertices on each edge of the leaf node, the position information of the edge vertices, and the displacement distance of the centroid vertex are all encoded into the bitstream.
[0049] Figure 2 is a schematic diagram of the point cloud geometric decoding framework based on Trisoup. As shown in Figure 2, at the decoding end, the geometric reconstruction of Trisoup also includes two steps: surface approximation 201 and ray tracing sampling 202. First, the Trisoup-based decoder 200 reconstructs leaf nodes 203 and edge vertices 204 using the decoded bitstream information. Then, based on the position information of the edge vertices 204, it calculates the position information of the centroid vertex, and thus obtains the position of the centroid vertex after displacement (i.e., vertex 205). In the leaf nodes 203, the decoder 200 selects edge vertices pairwise according to the circular queue order. Every two edge vertices and the displacement centroid vertex 205 together construct a triangle. After traversing all edge vertices, the decoder 200 will construct multiple triangles, and the face of the triangle is the approximate reconstructed point cloud surface. In the ray tracing sampling 202 stage, the decoder 200 first determines the coordinate plane with the highest parallelism to each triangle face. Subsequently, the decoder 200 projects triangle 206 onto the corresponding coordinate plane to determine a rectangular sampling range. Within this sampling range, rays 207 are uniformly emitted along the normal direction of the corresponding coordinate plane at a certain sampling rate (i.e., sampling interval). The intersection of ray 207 and triangle face 206 represents the reconstructed point, and the sampling rate determines the spacing between the reconstructed points. Repeating the above process, a complete reconstructed point cloud 208 is finally obtained.
[0050] The inventors of this application, through research and analysis of the aforementioned Trisoup geometric reconstruction method for point clouds, discovered that the sampling rate during the ray tracing sampling stage is a crucial parameter in the Trisoup geometric reconstruction process, as it directly controls the output point count and distribution density of the reconstructed point cloud, thus significantly affecting the reconstruction quality. This sampling rate is determined by the Trisoup point count control module, which selects the minimum integer sampling rate that ensures the output point count of the reconstructed point cloud meets the maximum limit. In one implementation, this sampling rate is a globally fixed value; that is, for triangles in different leaf nodes of the point cloud, the decoder uses the same / fixed sampling rate for sampling and reconstruction. This mechanism results in a point cloud distribution density that is essentially the same in different regions, tending towards uniformity. However, in reality, the original point cloud typically has distinctions between dense and sparse regions; therefore, using a globally fixed sampling rate is a rather coarse method with significant room for improvement.
[0051] Based on the analysis of the above problems, this application provides a decoding method, which is applied to a decoder. Figure 3 is a schematic diagram of the implementation flow of the decoding method provided in this application; as shown in Figure 3, the method includes the following steps 301 to 305:
[0052] Step 301: Decode the bitstream to determine the vertex information in the current node of the current point cloud;
[0053] Step 302: Based on the vertex information, determine one or more triangles; the one or more triangles are used to represent the point cloud surface of the current node;
[0054] Step 303: Determine the point cloud density information of the current node;
[0055] Step 304: Determine the first sampling parameters based on the point cloud density information of the current node;
[0056] Step 305: Based on the first sampling parameters and the one or more triangles, obtain the reconstructed point cloud in the current node.
[0057] It is understood that in the embodiments of this application, all nodes in the current point cloud do not use the same predefined fixed sampling parameter. That is, the first sampling parameter used to reconstruct the point cloud in the current node is not a parameter shared by all other nodes in the current point cloud. The magnitude of the first sampling parameter is a parameter adapted to the point cloud density information of the current node. In this way, the density distribution of the finally obtained reconstructed point cloud is closer to the original point cloud, which is beneficial to improving the geometric reconstruction quality of the point cloud.
[0058] The following sections will describe further optional implementation methods for each of the above steps, as well as related terms.
[0059] For step 301, decode the bitstream and determine the vertex information in the current node of the current point cloud.
[0060] In this embodiment of the application, the current node is the smallest processing unit, and the current node can also be understood as the current leaf node.
[0061] It is understood that the vertex information in the current node includes the position information of some vertices of the triangles representing the point cloud surface in the current node. Exemplarily, in some embodiments, the vertex information includes the position information of edge vertices. As mentioned above, the edge vertices include points where the point cloud in the current node intersects with the edges of the current node, such as the vertices on the edges of the current node as shown in Figure 2.
[0062] For step 302, one or more triangles are determined based on the vertex information; the one or more triangles are used to represent the point cloud surface of the current node.
[0063] In some embodiments, as shown in FIG4, step 302 may further include steps 401 to 404 as follows:
[0064] Step 401: Determine the position information of the first centroid of the edge vertex based on the position information of the edge vertex.
[0065] In the embodiments of this application, the first centroid can also be understood as the first centroid vertex.
[0066] Step 402: Decode the bitstream and determine the first offset information;
[0067] Step 403: Determine the position information of the second centroid based on the position information of the first centroid and the first offset information.
[0068] In some embodiments, the first offset information may include positional offset information between the first centroid and the second centroid. It can be understood that the decoder can easily obtain the positional information of the first centroid after offset (i.e., the positional information of the second centroid) based on this positional offset information.
[0069] In one possible implementation, the position offset information includes the coordinate offset value and offset direction between the first centroid and the second centroid. In this embodiment, the second centroid can also be understood as a second centroid vertex, such as centroid vertex 205 shown in Figure 2.
[0070] Step 404: Determine one or more triangles based on the position information of the edge vertices and the position information of the second centroid; wherein the vertices of the triangles include the second centroid and two edge vertices.
[0071] It is understandable that the number of triangles contained in the current node is related to the number of edge vertices. In one possible implementation, the second centroid and every two edge vertices together construct a triangle. For example, as shown in Figure 2, the current leaf node 203 has 4 edge vertices, so it can construct 4 triangles together with the centroid vertex 205.
[0072] Of course, in other embodiments, the encoder may also generate a bitstream based on the position information of the second centroid, and the decoder decodes the second centroid's position information instead of the first offset information.
[0073] For step 303, determine the point cloud density information of the current node;
[0074] In this embodiment, point cloud density information can also be understood as representing the sparsity or density of the point cloud of the current node, or as the point cloud density distribution of the current node. In one possible implementation, step 303, determining the point cloud density information of the current node, may further include: decoding the bitstream to determine the point cloud density information of the current node.
[0075] Further, in some embodiments, the decoding of the bitstream to determine the point cloud density information of the current node includes: decoding the bitstream to determine the value of a first syntax element; wherein the value of the first syntax element is used to indicate the point cloud density information of the current node; or, the value of the first syntax element is used to indicate the point cloud density information of multiple nodes, the multiple nodes being nodes at the same level and including the current node; or, the value of the first syntax element is used to indicate the point cloud density information of higher-level nodes of the current node, the current node being included by the higher-level nodes.
[0076] It is understood that in some embodiments, the value of the first syntax element is used to indicate the point cloud density information of the current node, and the first syntax element is valid for the current node;
[0077] In other embodiments, the value of the first syntax element is used to indicate the point cloud density information of multiple nodes, which are nodes at the same level and include the current node, and the first syntax element is valid for the multiple nodes.
[0078] In this embodiment, the point cloud density information of the plurality of nodes can be understood as the point cloud density information of the point cloud jointly formed by the plurality of nodes. The plurality of nodes includes the current node. There is no restriction on the hierarchy of the plurality of nodes; the plurality of nodes can be leaf nodes or nodes at a higher hierarchy than leaf nodes. In this embodiment, the plurality of nodes can be nodes with consecutive processing order or nodes with discontinuous processing order; this application does not impose any restrictions on this.
[0079] In some other embodiments, the value of the first syntax element is used to indicate the point cloud density information of the higher-level nodes of the current node, and the first syntax element is valid for the higher-level nodes. For example, the higher-level node is the parent node or grandparent node of the current node.
[0080] In one possible implementation, the value of the first syntax element can be one bit or more bits. For example, if the length of the first syntax element is one bit, a value of 1 indicates that the point cloud density information / sparseness / density is dense; a value of 0 indicates that the point cloud density information / sparseness / density is sparse. As another example, if the length of the first syntax element is two bits, a value of 11 indicates the densest point cloud density information; a value of 10 indicates the second densest; a value of 01 indicates the second sparsest; and a value of 00 indicates the sparsest. In short, different values of the first syntax element indicate different point cloud density information / sparseness / density.
[0081] For the decoded bitstream mentioned above, determining the value of the first syntax element, further, in some embodiments, as shown in Figure 5, may include the following step 501:
[0082] Step 501: Decode the bitstream based on the length of the value of the first syntax element to determine the value of the first syntax element.
[0083] In some embodiments, the length of the value of the first syntax element can be a preset fixed length, and the decoder defaults to the length of the value of the first syntax element being a specific length. For example, this specific length is 1 bit or 2 bits, etc.
[0084] In other embodiments, the decoder may also determine the length of the value of the first syntax element from the bitstream. That is, the decoding method further includes: decoding the bitstream to determine the value of the second syntax element; and determining the length of the value of the first syntax element based on the value of the second syntax element.
[0085] In some embodiments, the value of the second syntax element is used to indicate the length of the value of the first syntax element used by the current point cloud. The second syntax element can be a global variable, and its value is valid for the entire current point cloud. The length of the value of the first syntax element used by each smallest processing unit (such as a leaf node) in the current point cloud is the same, i.e., the length indicated by the value of the second syntax element. In one possible implementation, decoding the bitstream and determining the value of the second syntax element includes: decoding the bitstream using a bypass decoding method to determine the value of the second syntax element. For example, a value of 0 for the second syntax element indicates that the length of the value of the first syntax element is 1 bit; a value of 1 for the second syntax element indicates that the length of the value of the first syntax element is 2 bits. Of course, the correspondence between the value of the second syntax element and the number of bits is not limited to this.
[0086] Of course, in some embodiments, the second syntax element can also be a local variable, for example, the level targeted by the second syntax element is the same as the level targeted by the first syntax element.
[0087] In some embodiments, the value of the second syntax element is used to indicate the length of the value of the first syntax element of the current node, and the second syntax element is valid for the current node;
[0088] In other embodiments, the value of the second syntax element is used to indicate the length of the value of the first syntax element of the plurality of nodes, the plurality of nodes being nodes at the same level and including the current node, and the second syntax element being valid for the plurality of nodes;
[0089] In some other embodiments, the value of the second syntax element is used to indicate the length of the value of the first syntax element of the higher-level node of the current node, and the second syntax element is valid for the higher-level node.
[0090] As mentioned earlier in step 501, the value of the first syntax element is determined by decoding the bitstream based on the length of the value of the first syntax element.
[0091] At the encoding end, the encoding method may be different for different lengths of the value of the first syntax element. Further, in some embodiments, step 501 may include: determining the decoding method of the first syntax element based on the length of its value; decoding the bitstream based on the decoding method of the first syntax element to determine the value of the first syntax element.
[0092] For example, in some embodiments, determining the decoding method of the first syntax element based on the length of its value includes: when the length of the first syntax element's value is a first length or a second length, the decoding method of the first syntax element is an entropy decoding method based on a context model. For example, the first length is 1 bit, and the second length is 2 bits or more.
[0093] For example, in some embodiments, determining the decoding method of the first syntax element based on the length of its value includes: when the length of the first syntax element's value is a first length, the decoding method of the first syntax element is a run-length decoding method based on a context model. For example, the first length is 1 bit.
[0094] For step 304, the first sampling parameter is determined based on the point cloud density information of the current node;
[0095] In some embodiments, step 304 further includes: determining the first sampling parameter based on the value of the first syntax element.
[0096] In one possible implementation, the decoder can determine the first sampling parameter corresponding to the value of the first syntax element according to a preset first mapping relationship; wherein, the preset first mapping relationship includes the first sampling parameters corresponding to the values of multiple different first syntax elements.
[0097] In another possible implementation, determining the first sampling parameter based on the value of the first syntax element includes: determining the first sampling parameter based on the value of the first syntax element and a second sampling parameter of the current point cloud; wherein the second sampling parameter is a global variable, i.e., valid for the entire current point cloud.
[0098] Furthermore, in some embodiments, determining the first sampling parameter based on the value of the first syntax element and the second sampling parameter includes: determining an adjustment method based on the value of the first syntax element; and obtaining the first sampling parameter based on the adjustment method and the second sampling parameter.
[0099] It is understood that in this embodiment, different values of the first syntax element correspond to different adjustment methods. Based on the adjustment method and the second sampling parameter, the first sampling parameter is obtained. The final result is: the denser the point cloud density indicated by the value of the first syntax element, the smaller the value of the first sampling parameter; the sparser the point cloud density indicated by the value of the first syntax element, the larger the value of the first sampling parameter.
[0100] For example, the first and second sampling parameters refer to the sampling rate (i.e., sampling interval) in the ray tracing sampling method. In an embodiment where the length of the first syntax element's value is 1 bit, the second sampling parameter is assumed to be represented as R. base ,but:
[0101] (1) A value of 1 for the first syntax element indicates that the local point cloud distribution is dense, and the corresponding adjustment method is max(R). base -1,1), the second sampling parameter R base Input to max(R) base In the range -1,1), the output is the value of the first sampling parameter; where the max operator takes the larger of the two values.
[0102] (2) A value of 0 for the first syntax element indicates that the local point cloud distribution is sparse, and the corresponding adjustment method is R. base +1, the second sampling parameter R base Input to R baseIn +1, the output result is the value of the first sampling parameter.
[0103] For example, the first and second sampling parameters refer to the sampling rate (i.e., sampling interval) in the ray tracing sampling method. In an embodiment where the length of the first syntax element value is 2 bits, the second sampling parameter is assumed to be represented as R. base ,but:
[0104] (1) The value of the first syntax element is 11, indicating that the local point cloud distribution is the densest, and the corresponding adjustment method is max(R). base -2,1), the second sampling parameter R base Input to max(R) base In the range -2,1), the output is the value of the first sampling parameter; where the max operator takes the larger of the two values.
[0105] (2) The value of the first syntax element is 10, indicating that the local point cloud distribution is sub-dense, and the corresponding adjustment method is max(R). base -1,1), the second sampling parameter R base Input to max(R) base In the range -1,1), the output is the value of the first sampling parameter; where the max operator takes the larger of the two values.
[0106] (3) The value of the first syntax element is 0 or 1, indicating that the local point cloud distribution is less sparse, and the corresponding adjustment method is R. base +1, the second sampling parameter R base Input to R base In +1, the output result is the value of the first sampling parameter;
[0107] (4) A value of 00 for the first syntax element indicates that the local point cloud distribution is the sparsest, and the corresponding adjustment method is R. base +2, the second sampling parameter R base Input to R base In +2, the output result is the value of the first sampling parameter.
[0108] Of course, in the embodiments of this application, the implementation of determining the adjustment method based on the value of the first syntax element is not limited to the above example. In short, the final result should meet the following criteria: the denser the point cloud density indicated by the value of the first syntax element, the smaller the value of the first sampling parameter; the sparser the point cloud density indicated by the value of the first syntax element, the larger the value of the first sampling parameter.
[0109] As mentioned earlier, the second sampling parameter of the current point cloud is a global variable. This value can be a preset value or indicated by the bitstream. In some embodiments, the decoding method further includes: decoding the bitstream to determine the value of a third syntax element; and determining the second sampling parameter of the current point cloud based on the value of the third syntax element.
[0110] In some embodiments, the encoding method mentioned below further includes: determining the value of a third syntax element based on a second sampling parameter of the current point cloud; and generating a bitstream based on the value of the third syntax element.
[0111] For step 305, the reconstructed point cloud in the current node is obtained based on the first sampling parameters and the one or more triangles.
[0112] In this embodiment, no further implementation of step 305 is limited. In one possible implementation, the decoder can use ray tracing sampling to obtain the reconstructed point cloud in the current node. For example, as shown in Figure 2, the decoder samples the surface of one or more triangles according to the first sampling parameters to obtain the reconstructed point cloud in the current node.
[0113] This application embodiment further provides an encoding method, which is applied to an encoder. Figure 6 is a schematic diagram of the implementation flow of the encoding method provided in this application embodiment; as shown in Figure 6, it includes the following steps 601 to 604:
[0114] Step 601: Determine the vertex information in the current node of the current point cloud;
[0115] Step 602: Generate a bitstream based on the vertex information;
[0116] Step 603: Determine the point cloud density parameters of the first node of the current point cloud; wherein, the first node includes the current node;
[0117] Step 604: Generate a bitstream based on the point cloud density parameters of the first node.
[0118] It is understood that in the encoding method provided in this application embodiment, a bitstream is generated based on the point cloud density parameter of the first node. Thus, for the decoding end, all nodes in the current point cloud do not use the same predefined fixed sampling parameter. That is, the first sampling parameter used to reconstruct the point cloud in the current node is not a parameter shared by all other nodes in the current point cloud. The magnitude of the first sampling parameter is a parameter adapted to the point cloud density parameter. In this way, the density distribution of the finally obtained reconstructed point cloud is closer to the original point cloud, which is beneficial to improving the geometric reconstruction quality of the point cloud.
[0119] The following sections will describe further optional implementation methods for each of the above steps, as well as related terms.
[0120] For step 601, determine the vertex information in the current node of the current point cloud;
[0121] In this embodiment of the application, the current node is the smallest processing unit, and the current node can also be understood as the current leaf node.
[0122] It can be understood that the vertex information in the current node refers to the position information of some vertices of the triangles on the point cloud surface of the current node. Exemplarily, in some embodiments, the vertex information includes the position information of edge vertices. As mentioned above, the edge vertices include points where the point cloud in the current node intersects with an edge of the current node, such as the vertices on the edges of the current node as shown in Figure 1. For each leaf node, the encoder 100 determines the number and position of vertices based on the point cloud inside the leaf node. Specifically, when the point cloud inside the leaf node intersects with an edge of the leaf node, the encoder 100 constructs an edge vertex at the intersection point.
[0123] For step 602, a bitstream is generated based on the vertex information;
[0124] In one possible implementation, the occupancy code of the octree, the existence of edge vertices on each edge of the leaf nodes and the position information of the edge vertices, and the displacement distance of the centroid vertex (i.e., an example of the first offset information) are all encoded into the bitstream.
[0125] For step 603, determine the point cloud density parameter of the first node of the current point cloud; wherein, the first node includes the current node.
[0126] In some embodiments, the first node is the current node; or, the first node is multiple nodes, the multiple nodes are nodes at the same level and the multiple nodes include the current node; or, the first node is at a higher level than the current node. Exemplarily, in some embodiments, the processing order of the multiple nodes is consecutive.
[0127] In this embodiment, the point cloud included in the first node can be a part or all of the current point cloud; in short, the first node includes the current node. That is, the point cloud in the first node includes the point cloud in the current node. In this embodiment, there is no limitation on the first node.
[0128] In some embodiments, the first node may be the current node; that is, the point cloud density parameter of the first node may be understood as the point cloud density parameter of the current node.
[0129] In other embodiments, the first node may be multiple nodes, which are nodes at the same level and include the current node; that is, the point cloud density parameter of the first node can be understood as the point cloud density parameter of the point cloud jointly formed by the multiple nodes. In this embodiment, the multiple nodes include the current node, and there is no limitation on the level of the multiple nodes. The multiple nodes may be leaf nodes or nodes at a higher level than leaf nodes. In this embodiment, the multiple nodes may be nodes with consecutive processing order or nodes with discontinuous processing order; this application does not impose any limitation in this regard.
[0130] In some other embodiments, the first node may also be a node at a higher level than the current node, that is, the first node is at a higher level than the current node. For example, the first node is the parent node or grandparent node of the current node, etc.
[0131] In some embodiments, as shown in FIG7, step 603 may further include the following steps 701 and 702:
[0132] Step 701: Determine one or more triangles based on the vertex information of the first node; the one or more triangles mentioned in step 701 are used to represent the point cloud surface of the first node.
[0133] In some embodiments, step 701 may further include: determining the position information of the third centroid of the edge vertex of the first node based on the position information of the edge vertex of the first node; determining the position information of the fourth centroid based on the point cloud in the first node and the position information of the third centroid; determining one or more triangles as described in step 701 based on the position information of the edge vertex of the first node and the position information of the fourth centroid; wherein the vertices of the triangles described herein include the fourth centroid and two edge vertices of the first node.
[0134] Furthermore, in the embodiment where the first node is the current node, the third centroid can be understood as the first centroid, and the fourth centroid can be understood as the second centroid.
[0135] Furthermore, in an embodiment where the first node is one of the plurality of nodes, the edge vertices of the first node may include the edge vertices of the plurality of nodes, the third centroid of the edge vertices of the first node may include the centroid of the edge vertices of each of the plurality of nodes, and the fourth centroid of the first node may include the centroid of the edge vertices of each of the plurality of nodes after offset (the determination method is the same as the determination method of the second centroid). The one or more triangles mentioned in step 701 include the triangles in each of the plurality of nodes. For example, as shown in Figure 8, the plurality of nodes include nodes 801-803, and the one or more triangles mentioned in step 701 are all the triangles in nodes 801-803.
[0136] Furthermore, in embodiments where the first node is at a higher level than the current node (i.e., a higher-level node as described in the decoding end), the edge vertices of the first node may include vertices on the edges of the first node (the method for determining these vertices is the same as the method for determining the edge vertices of the current node), the third centroid of the edge vertices of the first node is determined in the same way as the first centroid of the current node, and the method for determining the fourth centroid of the first node is the same as the method for determining the second centroid. The one or more triangles mentioned in step 701 are constructed based on the edge vertices and the fourth centroid of the first node. For example, as shown in Figure 9, the first node 901 is the parent node of the current node 902, and the one or more triangles mentioned in step 701 are triangles constructed from the edge vertices and the fourth centroid of the first node 901.
[0137] It's understandable that the number of triangles contained in the first node is related to the number of edge vertices. In one possible implementation, the fourth centroid and every two edge vertices of the first node together construct a triangle.
[0138] In some embodiments, the encoding method further includes: determining the position information of a first centroid of the edge vertex of the current node based on the position information of the edge vertex in the current node; determining the position information of a second centroid based on the point cloud in the current node and the position information of the first centroid; determining first offset information based on the position information of the first centroid and the position information of the second centroid of the current node; and generating a bitstream based on the first offset information.
[0139] In some embodiments, the first offset information may include positional offset information between the first centroid and the second centroid. It can be understood that the decoder can easily obtain the positional information of the first centroid after offset (i.e., the positional information of the second centroid) based on this positional offset information.
[0140] In one possible implementation, the position offset information includes the coordinate offset value and offset direction between the first centroid and the second centroid. In this embodiment, the second centroid can also be understood as the second centroid vertex.
[0141] Of course, in other embodiments, the encoder may also generate a bitstream based on the position information of the second centroid, and the decoder decodes the second centroid's position information instead of the first offset information.
[0142] Step 702: Determine the point cloud density parameters of the first node based on the number of points in the point cloud of the first node and the one or more triangles (i.e., the one or more triangles mentioned in step 701).
[0143] In this embodiment of the application, there are no restrictions on the possible implementation of step 702. In short, the point cloud density parameters of the first node can be obtained based on the number of points in the point cloud of the first node and one or more triangles described in step 701.
[0144] For example, in some embodiments, step 702 may further include: determining the cumulative sum of the areas of one or more triangles mentioned in step 701; and determining the point cloud density parameter of the first node based on the number of points in the point cloud of the first node and the cumulative sum.
[0145] In one possible implementation, as shown in the following formula (1), the ratio between the number of points in the point cloud within the first node and the total area of the triangles within the first node is calculated, and this ratio is used as the density index (i.e., an example of the point cloud density parameter of the first node); the larger the density index, the denser the distribution of points within the first node.
[0146] In equation (1), D is the density index of the first node, N is the number of points in the point cloud within the first node, K is the total number of triangles constructed within the first node based on the Trisoup surface approximation method, and S is the area of the triangle.
[0147] The method for calculating the area of a triangle can be described as follows: as shown in the formula (2), two vectors with the same starting point are constructed using the coordinates of the vertices of the triangle, the cross product vector of the two vectors is calculated, and half of the magnitude of the cross product vector is taken as the area of the triangle; the specific formula is as follows;
[0148] In equation (2), assuming the triangle is composed of three vertices A, B, and C, then It is a vector pointing from A to B. It is a vector pointing from A to C; the ||2 operator calculates the Euclidean norm of the vector.
[0149] Exemplarily, in some other embodiments, step 702 may further include: determining the projected area of the triangle described in step 701 on a first coordinate plane; and determining a point cloud density parameter of the first node based on the cumulative sum of the projected areas of one or more triangles described in step 701 and the number of points in the point cloud of the first node. In some embodiments, the first coordinate plane is the coordinate plane with the highest parallelism to the triangle.
[0150] In one possible implementation, as shown in the following formula (3), the triangles in the first node are first projected onto the coordinate plane with the highest parallelism. Then, the sum of the areas of the projected triangles in the first node is calculated. The ratio of the number of point cloud points in the first node to the total area of the projected triangles is then calculated, and this ratio is used as the density index (i.e., an example of the point cloud density parameter of the first node). The larger the density index, the denser the local point cloud distribution in the first node.
[0151] In equation (2), D is the density exponent of the first node, N is the number of points in the point cloud within the first node, K is the total number of triangles constructed within the first node based on the Trisoup surface approximation method, and S... proj It is the area of the projected triangle;
[0152] The method for calculating the area of the projected triangle can be described as follows: as shown in the following formula (4), two vectors with the same starting point are constructed using the vertex coordinates of the triangle. The two vectors are projected onto the coordinate plane with the highest parallelism. Then, the cross product vector of the two projected vectors is calculated, and half of the magnitude of the cross product vector is taken as the area of the projected triangle. The specific mathematical formula is as follows:
[0153] In equation (2), and Let there be two projected vectors; assuming the two unprojected vectors are... And since the coordinate plane with the highest parallelism to the triangle is the xy plane, then the two projected vectors The || ||2 operator calculates the Euclidean norm of a vector;
[0154] For step 604, a bitstream is generated based on the point cloud density parameters of the first node.
[0155] In some embodiments, as shown in FIG10, step 604 may further include the following steps 1001 and 1002:
[0156] Step 1001: Determine the value of the first syntax element based on the point cloud density parameter of the first node;
[0157] In some embodiments, step 1001 may further include: determining the value of the first syntax element based on the point cloud density parameter of the first node, one or more preset density parameter thresholds, and the preset length of the value of the first syntax element.
[0158] In one possible implementation, for an embodiment where the length of the value of the first syntax element is 1 bit, a preset density parameter threshold is a first threshold. When the point cloud density parameter of the first node is greater than the first threshold, the value of the first syntax element is equal to a first value (e.g., the first value is 1); when the point cloud density parameter of the first node is less than or equal to the first threshold, the value of the first syntax element is equal to a second value (e.g., the second value is 0).
[0159] For example, a first syntax element with a length of one bit is set, and the density index of the leaf node is compared with a preset threshold. If the density index is greater than the threshold, it means that the local point cloud distribution in the leaf node is dense, and the value of the first syntax element is 1. If the density index is less than or equal to the threshold, it means that the local point cloud distribution in the leaf node is sparse, and the value of the first syntax element is 0.
[0160] In another possible implementation, for an embodiment where the length of the first syntax element's value is 2 bits, preset density parameter thresholds are a second threshold, a third threshold, and a fourth threshold. When the point cloud density parameter of the first node is greater than the second threshold, the value of the first syntax element is equal to the third value (e.g., the third value is 11); when the point cloud density parameter of the first node is less than or equal to the second threshold and greater than the third threshold, the value of the first syntax element is equal to the fourth value (e.g., the fourth value is 10); when the point cloud density parameter of the first node is less than or equal to the third threshold and greater than the fourth threshold, the value of the first syntax element is equal to the fifth value (e.g., the fifth value is 01); when the point cloud density parameter of the first node is less than or equal to the fourth threshold, the value of the first syntax element is equal to the sixth value (e.g., the sixth value is 00).
[0161] For example, a first syntax element with a length of two bits is set, and the density index of the leaf node is compared with three preset thresholds to divide the density index of the leaf node into four levels (i.e., different density index ranges). If the density index is at the highest level, it means that the local point cloud distribution in the leaf node is the densest, and the density flag is 11. If the density index is at the second highest level, it means that the local point cloud distribution in the leaf node is the second densest, and the density flag is 10. If the density index is at the second lowest level, it means that the local point cloud distribution in the leaf node is the second sparsest, and the density flag is 01. If the density index is at the lowest level, it means that the local point cloud distribution in the leaf node is the sparsest, and the density flag is 00.
[0162] Step 1002: Generate a bitstream based on the value of the first syntax element.
[0163] In some embodiments, the value of the first syntax element may be encoded according to a default encoding method. In other embodiments, step 1002 may further include: encoding the value of the first syntax element according to the length of the value of the first syntax element to generate a bitstream.
[0164] Furthermore, in some embodiments, encoding the value of the first syntax element according to the length of the value of the first syntax element to generate a bitstream includes: determining the encoding method of the first syntax element according to the length of the value of the first syntax element; and encoding the value of the first syntax element according to the encoding method of the first syntax element to generate a bitstream.
[0165] For example, in some embodiments, determining the encoding method of the first syntax element based on the length of the value of the first syntax element includes: when the length of the value of the first syntax element is a first length, the encoding method of the first syntax element is an entropy encoding method based on a context model.
[0166] For example, when the value of the first syntax element is one bit long, a context is assigned to it to dynamically update the probabilities of each encoded symbol, instructing the arithmetic encoder to entropy encode the value of the first syntax element.
[0167] For example, in some embodiments, determining the encoding method of the first syntax element based on the length of the value of the first syntax element includes: when the length of the value of the first syntax element is a second length, the encoding method of the first syntax element is an entropy encoding method based on a context model.
[0168] For example, when the length of the value of the first syntax element is two bits, two contexts are assigned to it to dynamically update the probabilities of the high-bit and low-bit encoded symbols, and the arithmetic encoder is instructed to entropy encode the value of the first syntax element.
[0169] For example, in some embodiments, determining the encoding method of the first syntax element based on the length of the value of the first syntax element includes: when the length of the value of the first syntax element is a first length, the encoding method of the first syntax element is a run-length encoding method based on a context model.
[0170] For example, when the length of the value of the first syntax element is one bit, the run-length encoding method is used to encode the zero run and non-zero values of the density flag, and contexts are assigned to the zero run and non-zero values respectively.
[0171] In some embodiments, the length of the value of the first syntax element can be valid for the entire current point cloud, meaning that the length of the value of the first syntax element corresponding to all first nodes in the entire current point cloud is the same. Of course, the length of the value of the first syntax element can also be valid for some first nodes in the current point cloud, such that the length of the value of the first syntax element corresponding to different first nodes may be different.
[0172] In some embodiments, the encoding method further includes: determining the value of a second syntax element based on the length of the value of the first syntax element; the value of the second syntax element being used to indicate the length of the value of the first syntax element used by the current point cloud; and generating a bitstream based on the value of the second syntax element.
[0173] Furthermore, in some embodiments, generating a bitstream based on the value of the second syntax element includes: encoding the value of the second syntax element using a bypass encoding method to generate a bitstream.
[0174] This application provides a decoding method. Figure 11 is a schematic diagram of the implementation flow of the decoding method provided in this application. As shown in Figure 11, the method includes the following steps 1101 to 1105:
[0175] Step 1101: Decode the bitstream to determine the vertex information in the current node of the current point cloud;
[0176] Step 1102: Determine one or more triangles based on the vertex information; wherein, the one or more triangles in step 1102 are used to represent the point cloud surface of the current node;
[0177] Step 1103: Determine the point cloud density parameters of the current node based on the vertex information;
[0178] Step 1104: Determine the third sampling parameter based on the point cloud density parameter of the current node;
[0179] Step 1105: Based on the third sampling parameters and the one or more triangles, obtain the reconstructed point cloud in the current node.
[0180] It is understood that in this embodiment, all nodes in the current point cloud do not use the same predefined fixed sampling parameter. That is, the third sampling parameter used to reconstruct the point cloud in the current node is not a parameter shared by all other nodes in the current point cloud. The magnitude of the third sampling parameter is a parameter adapted to the point cloud density parameter of the current node. Furthermore, the point cloud density information corresponding to the point cloud density parameter of the current node is not indicated in the bitstream, but is determined based on the vertex information in the current node. In this way, while saving bitstream overhead, the density distribution of the finally obtained reconstructed point cloud is closer to the original point cloud, which is beneficial to improving the geometric reconstruction quality of the point cloud.
[0181] The following sections will describe further optional implementation methods for each of the above steps, as well as related terms.
[0182] For step 1101, decode the bitstream and determine the vertex information in the current node of the current point cloud.
[0183] In some embodiments, the vertex information includes the position information of the edge vertices; for the relevant description of step 1101 and further implementations, please refer to the relevant description of step 301 and further implementations above for understanding.
[0184] For step 1102, one or more triangles are determined based on the vertex information; the one or more triangles in step 1102 are used to represent the point cloud surface of the current node;
[0185] In some embodiments, step 1102 further includes: determining the position information of the first centroid of the edge vertex based on the position information of the edge vertex; decoding the bitstream to determine the first offset information; determining the position information of the second centroid based on the position information of the first centroid and the first offset information; and determining one or more triangles based on the position information of the edge vertex and the position information of the second centroid; wherein the vertices of the triangle include the second centroid and two edge vertices.
[0186] For a detailed explanation of step 1102 and further implementation methods, please refer to the above explanation of step 302 and further implementation methods.
[0187] For step 1103, the point cloud density parameters of the current node are determined based on the vertex information;
[0188] In one possible implementation, the point cloud density parameters of the current node can be determined based on the sparsity of the edge vertices in the vertex information.
[0189] For step 1104, the third sampling parameter is determined based on the point cloud density parameter of the current node.
[0190] In some embodiments, a third sampling parameter can be determined based on the relationship between the point cloud density parameter of the current node and one or more preset density parameter thresholds; different relationships correspond to different third sampling parameters; however, the general principle is: the denser the point cloud density represented by the point cloud density parameter of the current node, the smaller the value of the third sampling parameter; the sparser the point cloud density represented by the point cloud density parameter of the current node, the larger the value of the third sampling parameter.
[0191] In some embodiments, step 1104 may further include: determining the third sampling parameter based on the point cloud density parameter of the current node and the second sampling parameter of the current point cloud.
[0192] Furthermore, in some embodiments, determining the third sampling parameter based on the point cloud density parameter of the current node and the second sampling parameter of the current point cloud includes: determining an adjustment method based on the point cloud density parameter of the current node and a preset density parameter threshold; and obtaining the third sampling parameter based on the adjustment method and the second sampling parameter.
[0193] For example, the third and second sampling parameters refer to the sampling rate (i.e., sampling interval) in the ray tracing sampling method. The preset density parameter threshold is the first threshold, and the second sampling parameter is denoted as R. base ,but:
[0194] (1) If the point cloud density parameter of the current node is greater than the first threshold, it indicates that the local point cloud distribution is dense, and the corresponding adjustment method is max(R). base -1,1), the second sampling parameter R base Input to max(R) base In the range -1,1), the output is the value of the third sampling parameter; where the max operator takes the larger of the two values.
[0195] (2) If the point cloud density parameter of the current node is less than or equal to the first threshold, it indicates that the local point cloud distribution is sparse, and the corresponding adjustment method is R. base +1, the second sampling parameter R base Input to R base In +1, the output result is the value of the third sampling parameter.
[0196] For example, the preset density parameter thresholds include a second threshold, a third threshold, and a fourth threshold. The third and second sampling parameters refer to the sampling rate (i.e., sampling interval) in the ray tracing sampling method. Let's assume the second sampling parameter is represented as R. base ,but:
[0197] (1) If the point cloud density parameter of the current node is greater than the second threshold, it indicates that the local point cloud distribution is the densest, and the corresponding adjustment method is max(R). base -2,1), the second sampling parameter R base Input to max(R) base In -2,1), the output result is the value of the third sampling parameter; where the max operator takes the larger value of the two.
[0198] (2) If the point cloud density parameter of the current node is less than or equal to the second threshold and greater than the third threshold, it indicates that the local point cloud distribution is less dense, and the corresponding adjustment method is max(R). base -1,1), the second sampling parameter R base Input to max(R) base In the range -1,1), the output is the value of the third sampling parameter; where the max operator takes the larger of the two values.
[0199] (3) If the point cloud density parameter of the current node is less than or equal to the third threshold and greater than the fourth threshold, it indicates that the local point cloud distribution is sub-sparse, and the corresponding adjustment method is R. base +1, the second sampling parameter R base Input to R base In +1, the output result is the value of the third sampling parameter;
[0200] (4) If the point cloud density parameter of the current node is less than or equal to the fourth threshold, it indicates that the local point cloud distribution is the sparsest, and the corresponding adjustment method is R. base +2, the second sampling parameter R base Input to R base In +2, the output result is the value of the third sampling parameter.
[0201] In some embodiments, the decoding method further includes: decoding the bitstream to determine the value of a third syntax element; and determining a second sampling parameter of the current point cloud based on the value of the third syntax element.
[0202] For step 1105, the reconstructed point cloud in the current node is obtained based on the third sampling parameters and the one or more triangles.
[0203] In this embodiment, no further implementation of step 1105 is limited. In one possible implementation, the decoder can use ray tracing sampling to obtain the reconstructed point cloud in the current node. For example, as shown in Figure 2, the decoder samples the surface of one or more triangles according to the third sampling parameter to obtain the reconstructed point cloud in the current node.
[0204] It should be noted that for any technical details not disclosed in the method embodiments of the encoding end similar to the decoding end described above, please refer to the description of the decoding method embodiments of this application for understanding.
[0205] The following examples illustrate possible implementation schemes of the encoding and decoding methods described in one or more of the above embodiments.
[0206] This application provides a method for dynamic local reconstruction of point cloud geometry, which can adaptively adjust the ray tracing sampling rate (i.e., an example of a first sampling parameter) according to the local point cloud distribution density during the geometric reconstruction process. At the encoding end, the distribution density of the local point cloud in each leaf node is analyzed, and the density flag (i.e., an example of a first syntax element) is encoded into the bitstream. At the decoding end, based on the decoded point cloud density information, the sampling rate of the ray tracing sampling stage is dynamically adjusted in each leaf node to generate a local representation with similar distribution characteristics to the original point cloud, thereby improving the overall reconstruction quality.
[0207] Figure 12 is a schematic diagram of the encoding and decoding framework based on dynamic local reconstruction of point cloud geometry provided in this application embodiment. As shown in Figure 12, at the encoding end, Trisoup is divided into octree partitioning 1202, vertex construction 1203, local density analysis 1204, density flag encoding 1205, and geometric encoding 1206. First, the original point cloud 1201 is partitioned into an octree 1202. The partitioning stops when a certain preset level is reached. All nodes at this level are considered as leaf nodes, which are the basic encoding units of Trisoup. For each leaf node, the number and position of vertices are determined according to the point cloud inside the leaf node. The distribution density of the local point cloud in each leaf node is analyzed by local density analysis 1204, and the density flag is encoded into the bitstream 1206 through density flag encoding 1205. In addition, geometric information (such as octree occupancy code, the existence of edge vertices on each edge of the leaf node and the position information of the edge vertices, and the displacement distance of the centroid vertex) is encoded into the bitstream 1208 through geometric encoding 1207. At the decoding end, geometric decoding 1209 is performed on the bitstream 1208 to obtain the geometric information. Based on the geometric information, surface approximation is performed to obtain one or more triangles. Density flag decoding is performed on the bitstream 1206. Based on the decoded point cloud density information, the sampling rate of the ray tracing sampling stage 1211 is dynamically adjusted in each leaf node. Based on the ray tracing sampling method, one or more triangles obtained by surface approximation are sampled to generate a local representation with similar distribution characteristics to the original point cloud 1201, i.e., reconstructed point cloud 1212; thereby improving the overall reconstruction quality.
[0208] This application provides a method for dynamic local reconstruction of point cloud geometry, which can be described as follows:
[0209] Encoding end:
[0210] 1. At the encoding end, after the original point cloud is partitioned by an octree, multiple leaf nodes will be generated. Each leaf node contains a local part of the original point cloud. Each leaf node is used as a basic processing unit to perform local density analysis on the input point cloud therein.
[0211] The method for point cloud local density analysis can be described as follows:
[0212] At the encoding end, as shown in Figure 13, based on the Trisoup surface approximation method, a set of triangles (e.g., triangle ABC) approximate the surface of the point cloud are constructed within leaf node 1301 or leaf node 1302. Subsequently, the point cloud density analysis module 1303 calculates a density index based on the number of points and the area of the triangles within leaf node 1301 or leaf node 1302 to indicate the local density of the point cloud.
[0213] A density index calculation method can be described as follows: calculate the ratio of the number of point clouds in the leaf node to the total area of the triangle, and use this ratio as the density index; the larger the density index, the denser the local point cloud distribution in the leaf node; the specific formula is as follows (5);
[0214] In equation (5), D is the density index of the current leaf node, N is the number of point cloud points in the current leaf node, K is the total number of triangles constructed in the current leaf node based on the Trisoup surface approximation method, and S is the area of the triangle.
[0215] The method for calculating the area of a triangle can be described as follows: Construct two vectors with the same starting point using the coordinates of the vertices of the triangle, calculate the cross product of these two vectors, and take half of the magnitude of the cross product vector as the area of the triangle; the specific formula is as follows (6);
[0216] In equation (6), as shown in Figure 13, assuming the triangle is composed of three vertices A, B, and C, then... It is a vector pointing from A to B. It is a vector pointing from A to C; the ||2 operator calculates the Euclidean norm of the vector;
[0217] A density index calculation method can be described as follows: First, project the triangles in the leaf node onto the coordinate plane with the highest parallelism, then calculate the sum of the areas of the projected triangles in the leaf node, then calculate the ratio of the number of point cloud points in the leaf node to the total area of the projected triangles, and use this ratio as the density index; the larger the density index, the denser the local point cloud distribution in the leaf node; the specific formula is as follows (7);
[0218] In equation (7), D is the density exponent of the current leaf node, N is the number of points in the point cloud within the current leaf node, K is the total number of triangles constructed within the current leaf node based on the Trisoup surface approximation method, and S... proj It is the area of the projected triangle;
[0219] The method for calculating the area of the projected triangle can be described as follows: Construct two vectors with the same starting point using the coordinates of the triangle's vertices, project the two vectors onto the coordinate plane with the highest parallelism, then calculate the cross product vector of the two projected vectors, and take half of the magnitude of the cross product vector as the area of the projected triangle; the specific mathematical formula is as follows (8);
[0220] In equation (8), and Let there be two projected vectors; assuming the two unprojected vectors are... And since the coordinate plane with the highest parallelism to the triangle is the xy plane, then the two projected vectors The ||||2 operator calculates the Euclidean norm of a vector.
[0221] 2. At the encoding end, the density index is quantized;
[0222] One method for quantifying density index can be described as follows: set a density flag of length one bit, and compare the density index of leaf nodes with a preset threshold.
[0223] If the density index is greater than the threshold, it indicates that the local point cloud distribution within the leaf node is dense, and the density flag is set to 1.
[0224] If the density index is less than the threshold, it indicates that the local point cloud distribution within the leaf node is sparse, and the density flag is set to 0.
[0225] One method for quantifying density index can be described as follows: set a two-digit density flag, compare the density index of leaf nodes with three preset thresholds, and divide the density index of leaf nodes into four levels.
[0226] If the density index is at the highest level, it means that the local point cloud distribution within that leaf node is the densest, and the density value is set to 11.
[0227] If the density index is at the second-highest level, it indicates that the local point cloud distribution within the leaf node is relatively dense, and the density flag is set to 10.
[0228] If the density index is at the second lowest level, it indicates that the local point cloud distribution within the leaf node is relatively sparse, and the density flag is set to 0 or 1.
[0229] If the density index is at the lowest level, it means that the local point cloud distribution within that leaf node is the sparsest, and the density flag is set to 00.
[0230] 3. At the encoding end, as shown in Figure 13, the flag indicating the length of the density flag and the density flag are encoded into the bit stream through the density flag encoding module 1304.
[0231] The method of encoding the density flag length into the bitstream can be described as follows: since the flag is globally applicable to the entire frame of point cloud, only one bit needs to be encoded using the bypass coding method.
[0232] One method for encoding density flags into a bitstream can be described as follows: when the density flag is one bit long, a context is assigned to it to dynamically update the probability of each encoded symbol, instructing the arithmetic encoder to perform entropy encoding;
[0233] A method for encoding density flags into a bitstream can be described as follows: when the density flag length is one bit, use run-length encoding to encode the zero run and non-zero values of the density flag, and assign context to the zero run and non-zero values respectively;
[0234] One method for encoding density flags into a bitstream can be described as follows: when the density flag is two bits long, two contexts are assigned to it to dynamically update the probabilities of the high-order and low-order encoded symbols, instructing the arithmetic encoder to perform entropy encoding.
[0235] Decoding end:
[0236] 4. At the decoding end, as shown in Figure 14, decode the bitstream according to the method corresponding to the encoding end to obtain the flag indicating the length of the density flag and the density flag;
[0237] 5. At the decoding end, as shown in Figure 14, dynamic ray tracing sampling 1401 is performed based on the indicator of the density marker length and the density marker to generate a reconstructed point cloud with density distinction in different regions.
[0238] A method for dynamic ray tracing sampling can be described as follows:
[0239] When the density flag length of a leaf node is one bit, the following judgment and decision are made; assuming the original sampling rate is R. base ;
[0240] If the density flag is 1, it indicates that the local point cloud distribution is dense, and the sampling rate is adjusted to max(R). base -1,1), perform high-density sampling;
[0241] If the density flag is 0, it indicates that the local point cloud distribution is sparse, and the sampling rate should be adjusted to R. base +1, perform low-density sampling; where the max operator takes the larger of the two values;
[0242] A method for dynamic ray tracing sampling can be described as follows:
[0243] When the density label length of the leaf node is two bits, the following judgment and decision are made; assuming the original sampling rate is R. base ;
[0244] If the density flag is 11, it indicates that the local point cloud distribution is the densest, and the sampling rate is adjusted to max(R). base -2,1);
[0245] If the density flag is 10, it indicates that the local point cloud distribution is relatively dense, and the sampling rate should be adjusted to max(R). base -1,1);
[0246] If the density flag is 0 or 1, it indicates that the local point cloud distribution is relatively sparse, and the sampling rate should be adjusted to R. base +1;
[0247] If the density flag is 00, it indicates that the local point cloud distribution is the sparsest, and the sampling rate should be adjusted to R. base +2; Perform sampling at different densities based on the sampling rate; where the max operator takes the larger of the two values;
[0248] This application proposes a dynamic local reconstruction method for point cloud geometry, which adaptively adjusts the ray tracing sampling rate during geometric reconstruction based on the distribution density of the local point cloud. At the encoding end, the distribution density of the local point cloud in each leaf node is first analyzed, and the density information is encoded into the bitstream. At the decoding end, the sampling rate of each leaf node during the ray tracing sampling stage is dynamically adjusted using the decoded density information, generating a local representation similar to the distribution characteristics of the original point cloud, thereby improving the overall quality of the reconstructed point cloud. Through simple and effective local density analysis of the point cloud, the encoder can accurately judge and distinguish the density of different regions of the point cloud; only the density flag needs to be encoded into the bitstream, ensuring no pressure on the transmission bandwidth; after dynamic ray tracing sampling, the density distribution of the reconstructed point cloud is closer to the original point cloud, improving both the geometric reconstruction quality and providing a higher quality benchmark for attribute encoding, thus improving the attribute reconstruction quality.
[0249] The proposed method is integrated with the MPEG G-PCC standard coding reference software TMC13v26.0. Table 1 shows the performance improvement and time complexity changes of the proposed method compared to the original TMC13v26.0, illustrating the rate-distortion performance improvement and encoding / decoding time changes. C2 test conditions are geometrically lossy compression and attribute lossy compression. Trisoup is the baseline geometric coding method of this application, while RAHT and Predlift are two attribute coding methods supported by TMC13v26.0. The rate-distortion comprehensive performance (BD-Rate) is used to measure coding efficiency, where geometry includes two metrics (D1 and D2), and attributes include three channels: Luma, Chroma Cb, and Chroma Cr.
[0250] Table 1
[0251] This application provides a dynamic local reconstruction method for point cloud geometry. A method for analyzing local point cloud density and a corresponding method for encoding density flags into the bitstream are designed at the encoding end. A method for dynamic reconstruction based on the density flags is designed at the decoding end. This achieves performance gains in both geometric and attribute rate-distortion while saving encoding and decoding time.
[0252] In one possible implementation, leaf nodes of an octree are used as the basic processing unit, requiring the encoding of a density flag at each leaf node. In another possible implementation, the basic processing unit can be expanded to multiple leaf nodes. The expanded basic processing unit can be a higher level of the octree, or several leaf nodes processed consecutively during the encoding process. This expansion scheme can reduce the number of density flags that need to be encoded, thereby further compressing the bitstream; however, it also reduces the granularity of local density analysis and lowers the quality of the reconstructed point cloud.
[0253] It should be noted that although the steps of the method in this application are described in a specific order in the accompanying drawings, this does not require or imply that the steps must be performed in that specific order, or that all the steps shown must be performed to achieve the desired result. Additional or alternative steps may be omitted, multiple steps may be combined into one step, and / or one step may be broken down into multiple steps; or steps from different embodiments may be combined into a new technical solution.
[0254] Based on the foregoing embodiments, this application provides a decoding device applied to a decoder. Figure 15 is a schematic diagram of the structure of the decoding device provided in this application. As shown in Figure 15, the decoding device 150 includes:
[0255] The first decoding module 1501 is configured to decode the bitstream and determine the vertex information in the current node of the current point cloud.
[0256] The first determining module 1502 is configured to: determine one or more triangles based on the vertex information; the one or more triangles are used to represent the point cloud surface of the current node;
[0257] The second determining module 1503 is configured to: determine the point cloud density information of the current node;
[0258] The third determining module 1504 is configured to: determine the first sampling parameters based on the point cloud density information of the current node;
[0259] The first reconstruction module 1505 is configured to obtain the reconstructed point cloud in the current node based on the first sampling parameters and the one or more triangles.
[0260] In some embodiments, determining the point cloud density information of the current node includes: decoding the bitstream to determine the point cloud density information of the current node.
[0261] Further, in some embodiments, the decoding of the bitstream to determine the point cloud density information of the current node includes: decoding the bitstream to determine the value of a first syntax element; wherein: the value of the first syntax element is used to indicate the point cloud density information of the current node; or, the value of the first syntax element is used to indicate the point cloud density information of multiple nodes, the multiple nodes being nodes at the same level and including the current node; or, the value of the first syntax element is used to indicate the point cloud density information of higher-level nodes of the current node.
[0262] In some embodiments, the processing order of the plurality of nodes is sequential.
[0263] In some embodiments, decoding the bitstream and determining the value of the first syntax element includes: decoding the bitstream based on the length of the value of the first syntax element to determine the value of the first syntax element.
[0264] Furthermore, in some embodiments, the second determining module 1503 is also configured to: decode the bitstream, determine the value of the second syntax element, and determine the length of the value of the first syntax element based on the value of the second syntax element.
[0265] For example, in some embodiments, decoding the bitstream and determining the value of the second syntax element includes: decoding the bitstream using a bypass decoding method to determine the value of the second syntax element.
[0266] In some embodiments, the step of decoding the bitstream based on the length of the value of the first syntax element to determine the value of the first syntax element includes: determining the decoding method of the first syntax element based on the length of the value of the first syntax element; and decoding the bitstream based on the decoding method of the first syntax element to determine the value of the first syntax element.
[0267] For example, in some embodiments, determining the decoding method of the first syntax element based on the length of the value of the first syntax element includes: when the length of the value of the first syntax element is a first length or a second length, the decoding method of the first syntax element is an entropy decoding method based on a context model.
[0268] For example, in some embodiments, determining the decoding method of the first syntax element based on the length of the value of the first syntax element includes: when the length of the value of the first syntax element is a first length, the decoding method of the first syntax element is a run-length decoding method based on a context model.
[0269] In some embodiments, determining the first sampling parameter based on the point cloud density information of the current node includes: determining the first sampling parameter based on the value of the first syntax element.
[0270] In some embodiments, determining the first sampling parameter based on the value of the first syntax element includes: determining the first sampling parameter based on the value of the first syntax element and a second sampling parameter of the current point cloud.
[0271] Furthermore, in some embodiments, determining the first sampling parameter based on the value of the first syntax element and the second sampling parameter includes: determining an adjustment method based on the value of the first syntax element; and obtaining the first sampling parameter based on the adjustment method and the second sampling parameter.
[0272] In some embodiments, the first decoding module 1501 is further configured to: decode the bitstream, determine the value of the third syntax element, and determine the second sampling parameter of the current point cloud based on the value of the third syntax element.
[0273] In some embodiments, the vertex information includes the position information of edge vertices; determining one or more triangles based on the vertex information includes: determining the position information of a first centroid of the edge vertex based on the position information of the edge vertex; decoding the bitstream to determine first offset information; determining the position information of a second centroid based on the position information of the first centroid and the first offset information; determining one or more triangles based on the position information of the edge vertex and the position information of the second centroid; wherein the vertices of the triangle include the second centroid and two edge vertices.
[0274] Based on the foregoing embodiments, this application provides a decoding device applied to a decoder. Figure 16 is a second schematic diagram of the structure of the decoding device provided in this application. As shown in Figure 16, the decoding device 160 includes:
[0275] The second decoding module 1601 is configured to: decode the bitstream and determine the vertex information in the current node of the current point cloud;
[0276] The fourth determining module 1602 is configured to: determine one or more triangles based on the vertex information; the one or more triangles are used to represent the point cloud surface of the current node;
[0277] The fifth determining module 1603 is configured to: determine the point cloud density parameters of the current node based on the vertex information;
[0278] The sixth determining module 1604 is configured to: determine the third sampling parameter based on the point cloud density parameter of the current node;
[0279] The second reconstruction module 1605 is configured to obtain the reconstructed point cloud in the current node based on the third sampling parameters and the one or more triangles.
[0280] In some embodiments, determining the third sampling parameter based on the point cloud density parameter of the current node includes: determining the third sampling parameter based on the point cloud density parameter of the current node and the second sampling parameter of the current point cloud.
[0281] Furthermore, in some embodiments, determining the third sampling parameter based on the point cloud density parameter of the current node and the second sampling parameter of the current point cloud includes: determining an adjustment method based on the point cloud density parameter of the current node and a preset density parameter threshold; and obtaining the third sampling parameter based on the adjustment method and the second sampling parameter.
[0282] In some embodiments, the second decoding module 1601 is further configured to: decode the bitstream, determine the value of the third syntax element, and determine the second sampling parameter of the current point cloud based on the value of the third syntax element.
[0283] In some embodiments, the vertex information includes the position information of edge vertices; determining one or more triangles based on the vertex information includes: determining the position information of a first centroid of the edge vertex based on the position information of the edge vertex; decoding the bitstream to determine first offset information; determining the position information of a second centroid based on the position information of the first centroid and the first offset information; determining one or more triangles based on the position information of the edge vertex and the position information of the second centroid; wherein the vertices of the triangle include the second centroid and two edge vertices.
[0284] The description of the decoding device embodiments above is similar to the description of the encoding / decoding method embodiments above, and has similar beneficial effects. For technical details not disclosed in the device embodiments of this application, please refer to the description of the encoding / decoding method embodiments of this application for understanding.
[0285] This application provides an encoding device applied to an encoder. Figure 17 is a schematic diagram of the structure of the encoding device provided in this application embodiment. As shown in Figure 17, the encoding device 170 includes:
[0286] The seventh determining module 1701 is configured to: determine the vertex information in the current node of the current point cloud;
[0287] The first encoding module 1702 is configured to generate a bitstream based on the vertex information;
[0288] The eighth determining module 1703 is configured to: determine the point cloud density parameters of the first node of the current point cloud; wherein the first node includes the current node;
[0289] The second encoding module 1704 is configured to generate a bitstream based on the point cloud density parameters of the first node.
[0290] In some embodiments, determining the point cloud density parameter of the first node of the current point cloud includes: determining one or more triangles based on the vertex information of the first node; the one or more triangles being used to represent the point cloud surface of the first node; and determining the point cloud density parameter of the first node based on the number of points in the point cloud of the first node and the one or more triangles.
[0291] Furthermore, in some embodiments, determining the point cloud density parameter of the first node based on the number of points in the point cloud of the first node and the one or more triangles includes: determining the cumulative sum of the areas of the one or more triangles; and determining the point cloud density parameter of the first node based on the number of points in the point cloud of the first node and the cumulative sum.
[0292] For example, in some embodiments, determining the point cloud density parameter of the first node based on the number of points in the point cloud of the first node and the one or more triangles includes: determining the projected area of the triangles in the first coordinate plane; and determining the point cloud density parameter of the first node based on the cumulative sum of the projected areas of the one or more triangles and the number of points in the point cloud of the first node.
[0293] In some embodiments, generating a bitstream based on the point cloud density parameters of the first node includes: determining the value of a first syntax element based on the point cloud density parameters of the first node; and generating a bitstream based on the value of the first syntax element.
[0294] In some embodiments, the first node is the current node; or, the first node is multiple nodes, the multiple nodes being nodes at the same level; or, the first node is at a higher level than the current node.
[0295] In some embodiments, the processing order of the plurality of nodes is sequential.
[0296] Furthermore, in some embodiments, determining the value of the first syntax element based on the point cloud density parameter of the first node includes: determining the value of the first syntax element based on the point cloud density parameter of the first node, one or more preset density parameter thresholds, and the preset length of the value of the first syntax element.
[0297] In some embodiments, generating a bitstream based on the value of the first syntax element includes: encoding the value of the first syntax element according to the length of the value of the first syntax element to generate a bitstream.
[0298] In some embodiments, the second encoding module 1704 is further configured to: determine the value of a second syntax element based on the length of the value of the first syntax element; the value of the second syntax element is used to indicate the length of the value of the first syntax element used by the current point cloud; and generate a bitstream based on the value of the second syntax element.
[0299] Furthermore, in some embodiments, generating a bitstream based on the value of the second syntax element includes: encoding the value of the second syntax element using a bypass encoding method to generate a bitstream.
[0300] Furthermore, in some embodiments, encoding the value of the first syntax element according to its length to generate a bitstream includes: determining the encoding method of the first syntax element according to its length; and encoding the value of the first syntax element according to its encoding method to generate a bitstream.
[0301] For example, in some embodiments, determining the encoding method of the first syntax element based on the length of the value of the first syntax element includes: when the length of the value of the first syntax element is a first length or a second length, the encoding method of the first syntax element is an entropy encoding method based on a context model.
[0302] For example, in some embodiments, determining the encoding method of the first syntax element based on the length of the value of the first syntax element includes: when the length of the value of the first syntax element is a first length, the encoding method of the first syntax element is a run-length encoding method based on a context model.
[0303] In some embodiments, the second encoding module 1704 is further configured to: determine the value of a third syntax element based on the second sampling parameters of the current point cloud; and generate a code stream based on the value of the third syntax element.
[0304] In some embodiments, the vertex information of the first node includes the position information of the edge vertices; determining one or more triangles based on the vertex information of the first node includes: determining the position information of the third centroid of the edge vertices of the first node based on the position information of the edge vertices of the first node; determining the position information of the fourth centroid based on the point cloud in the first node and the position information of the third centroid; determining one or more triangles based on the position information of the edge vertices of the first node and the position information of the fourth centroid; wherein the vertices of the triangle include the fourth centroid and two edge vertices.
[0305] In some embodiments, the first encoding module 1702 is further configured to: determine the position information of the first centroid of the edge vertex of the current node based on the position information of the edge vertex in the current node; determine the position information of the second centroid based on the point cloud in the current node and the position information of the first centroid; determine the first offset information based on the position information of the first centroid and the position information of the second centroid of the current node; and generate a bitstream based on the first offset information.
[0306] The description of the encoding device embodiments above is similar to the description of the encoding / decoding method and decoding device embodiments above, and has similar beneficial effects as the encoding / decoding method embodiments and decoding devices above. For technical details not disclosed in the device embodiments of this application, please refer to the description of the encoding / decoding method embodiments and decoding devices of this application for understanding.
[0307] It should be noted that the module division of the apparatus described in the embodiments of this application is illustrative and only represents one logical functional division. In actual implementation, other division methods may be used. Furthermore, the functional units in the various embodiments of this application can be integrated into one processing unit, exist as separate physical units, or have two or more units integrated into one unit. The integrated units can be implemented in hardware, as software functional units, or a combination of software and hardware.
[0308] It should be noted that, in the embodiments of this application, if the above-described methods are implemented as software functional modules and sold or used as independent products, they can also be stored in a computer-readable storage medium. Based on this understanding, the technical solutions of the embodiments of this application, or the parts that contribute to related technologies, can be embodied in the form of a software product. This computer software product is stored in a storage medium and includes several instructions to cause an electronic device to execute all or part of the methods described in the various embodiments of this application. The aforementioned storage medium includes various media capable of storing program code, such as USB flash drives, portable hard drives, read-only memory (ROM), magnetic disks, or optical disks. Thus, the embodiments of this application are not limited to any specific hardware and software combination.
[0309] This application provides a decoder, and Figure 18 is a schematic diagram of the decoder provided in this application embodiment. As shown in Figure 18, the decoder 180 includes: a first communication interface 1801, a first memory 1802, and a first processor 1803; the various components are coupled together through a first bus system 1804. It can be understood that the first bus system 1804 is used to realize the connection and communication between these components. In addition to a data bus, the first bus system 1804 also includes a power bus, a control bus, and a status signal bus. However, for clarity, all buses are labeled as the first bus system 1804 in Figure 18.
[0310] The first communication interface 1801 is used for receiving and sending signals during the process of sending and receiving information with other external network elements;
[0311] The first memory 1802 is used to store computer programs that can run on the first processor 1803;
[0312] The first processor 1803 is configured to execute the decoding method described in the embodiments of this application when running the computer program.
[0313] It is understood that the first memory 1802 in the embodiments of this application can be volatile memory or non-volatile memory, or may include both volatile and non-volatile memory. The non-volatile memory can be read-only memory (ROM), programmable read-only memory (PROM), erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), or flash memory. The volatile memory can be random access memory (RAM), which is used as an external cache. By way of example, but not limitation, many forms of RAM are available, such as Static Random Access Memory (SRAM), Dynamic Random Access Memory (DRAM), Synchronous DRAM (SDRAM), Double Data Rate SDRAM (DDRSDRAM), Enhanced Synchronous DRAM (ESDRAM), Synchlink DRAM (SLDRAM), and Direct Rambus RAM (DRRAM). The first memory 1802 of the system and method described in this application is intended to include, but is not limited to, these and any other suitable types of memory.
[0314] The first processor 1803 may be an integrated circuit chip with signal processing capabilities. In implementation, each step of the above method can be completed by the integrated logic circuitry in the hardware of the first processor 1803 or by instructions in software form. The first processor 1803 may be a general-purpose processor, a digital signal processor (DSP), an application-specific integrated circuit (ASIC), a field-programmable gate array (FPGA), or other programmable logic devices, discrete gate or transistor logic devices, or discrete hardware components. It can implement or execute the methods, steps, and logic block diagrams disclosed in the embodiments of this application. The general-purpose processor may be a microprocessor or any conventional processor. The steps of the methods disclosed in the embodiments of this application can be directly embodied in the execution of a hardware decoding processor, or executed by a combination of hardware and software modules in the decoding processor. The software modules may reside in random access memory, flash memory, read-only memory, programmable read-only memory, electrically erasable programmable memory, registers, or other mature storage media in the art. The storage medium is located in the first memory 1802. The first processor 1803 reads the information in the first memory 1802 and completes the steps of the above method in conjunction with its hardware.
[0315] It is understood that the embodiments described in this application can be implemented using hardware, software, firmware, middleware, microcode, or a combination thereof. For hardware implementation, the processing unit can be implemented in one or more application-specific integrated circuits (ASICs), digital signal processors (DSPs), digital signal processing devices (DSPDs), programmable logic devices (PLDs), field-programmable gate arrays (FPGAs), general-purpose processors, controllers, microcontrollers, microprocessors, other electronic units for performing the functions described in this application, or combinations thereof. For software implementation, the technology described in this application can be implemented through modules (e.g., procedures, functions, etc.) that perform the functions described in this application. Software code can be stored in memory and executed by a processor. The memory can be implemented in the processor or external to the processor.
[0316] Alternatively, as another embodiment, the first processor 1803 is also configured to execute any of the aforementioned method embodiments on the decoder side when running the computer program.
[0317] This application provides an encoder. Figure 19 is a schematic diagram of the encoder provided in an embodiment of this application. As shown in Figure 19, the encoder 190 includes: a second communication interface 1901, a second memory 1902, and a second processor 1903; the components are coupled together through a second bus system 1904. It is understood that the second bus system 1904 is used to realize the connection and communication between these components. In addition to a data bus, the second bus system 1904 also includes a power bus, a control bus, and a status signal bus. However, for clarity, all buses are labeled as the second bus system 1904 in Figure 19.
[0318] The second communication interface 1901 is used for receiving and sending signals during the process of sending and receiving information with other external network elements;
[0319] The second memory 1902 is used to store computer programs that can run on the second processor 1903;
[0320] The second processor 1903 is used to execute the encoding method described in the embodiments of this application when running the computer program.
[0321] It is understood that the second memory 1902 has similar hardware functions to the first memory 1802, and the second processor 1903 has similar hardware functions to the first processor 1803; these will not be described in detail here.
[0322] This application provides an electronic device, including: a processor adapted to execute a computer program; and a computer-readable storage medium storing the computer program, which, when executed by the processor, implements the encoding and / or decoding methods described in this application. The electronic device can be various types of devices with video encoding and / or video decoding capabilities, such as mobile phones, tablets, laptops, personal computers, televisions, projection devices, or monitoring devices.
[0323] This application provides a computer-readable storage medium storing a computer program that, when executed, implements a method such as that on the encoder side or a method such as that on the decoder side.
[0324] This application provides a computer program product, including computer program instructions that cause a computer to execute the encoding or decoding method provided in this application.
[0325] This application provides a computer program that causes a computer to execute the encoding or decoding method provided in this application.
[0326] This application provides a bitstream obtained through the encoding method described in this application.
[0327] In some embodiments, the bitstream is generated based on the values of one or more syntax elements mentioned above.
[0328] It should be noted that the descriptions of the above-described codecs, devices, storage media, computer program products, computer programs, and bitstream embodiments are similar to the descriptions of the above-described method embodiments and have similar beneficial effects. For technical details not disclosed in the codec, storage media, and device embodiments of this application, please refer to the descriptions of the method embodiments of this application for understanding.
[0329] It should be understood that the phrases "one embodiment," "an embodiment," or "some embodiments" mentioned throughout the specification mean that a specific feature, structure, or characteristic related to an embodiment is included in at least one embodiment of this application. Therefore, "in one embodiment," "in one embodiment," or "in some embodiments" appearing throughout the specification do not necessarily refer to the same embodiment. Furthermore, these specific features, structures, or characteristics can be combined in any suitable manner in one or more embodiments. It should be understood that in the various embodiments of this application, the sequence numbers of the above-described processes do not imply a sequential order of execution; the execution order of each process should be determined by its function and internal logic, and should not constitute any limitation on the implementation process of the embodiments of this application. The sequence numbers of the above-described embodiments are merely for descriptive purposes and do not represent the superiority or inferiority of the embodiments. The descriptions of the various embodiments above tend to emphasize the differences between the various embodiments; their similarities or commonalities can be referred to mutually, and for the sake of brevity, they will not be repeated here.
[0330] In this article, the term "and / or" is merely a description of the relationship between related objects, indicating that there can be three kinds of relationships. For example, object A and / or object B can represent three situations: object A exists alone, object A and object B exist simultaneously, and object B exists alone.
[0331] It should be noted that, in this document, the terms "comprising," "including," or any other variations thereof are intended to cover non-exclusive inclusion, such that a process, method, article, or apparatus that comprises a list of elements includes not only those elements but also other elements not expressly listed, or elements inherent to such a process, method, article, or apparatus. Unless otherwise specified, an element defined by the phrase "comprising one..." does not exclude the presence of other identical elements in the process, method, article, or apparatus that includes that element.
[0332] In the several embodiments provided in this application, it should be understood that the disclosed devices and methods can be implemented in other ways. The embodiments described above are merely illustrative. For example, the division of modules is only a logical functional division, and in actual implementation, there may be other division methods, such as: multiple modules or components can be combined, or integrated into another system, or some features can be ignored or not executed. In addition, the coupling, direct coupling, or communication connection between the various components shown or discussed can be through some interfaces, and the indirect coupling or communication connection between devices or modules can be electrical, mechanical, or other forms.
[0333] The modules described above as separate components may or may not be physically separate. The components shown as modules may or may not be physical modules. They may be located in one place or distributed across multiple network units. Some or all of the modules may be selected to achieve the purpose of this embodiment according to actual needs.
[0334] In addition, each functional module in the various embodiments of this application can be integrated into one processing unit, or each module can be a separate unit, or two or more modules can be integrated into one unit; the integrated modules can be implemented in hardware or in the form of hardware plus software functional units.
[0335] Those skilled in the art will understand that all or part of the steps of the above method embodiments can be implemented by hardware related to program instructions. The aforementioned program can be stored in a computer-readable storage medium. When the program is executed, it performs the steps of the above method embodiments. The aforementioned storage medium includes various media that can store program code, such as mobile storage devices, read-only memory (ROM), magnetic disks, or optical disks.
[0336] Alternatively, if the integrated units described above are implemented as software functional modules and sold or used as independent products, they can also be stored in a computer-readable storage medium. Based on this understanding, the technical solutions of the embodiments of this application, or the parts that contribute to related technologies, can be embodied in the form of a software product. This computer software product is stored in a storage medium and includes several instructions to cause an electronic device to execute all or part of the methods described in the various embodiments of this application. The aforementioned storage medium includes various media capable of storing program code, such as mobile storage devices, ROMs, magnetic disks, or optical disks.
[0337] The methods disclosed in the several method embodiments provided in this application can be arbitrarily combined without conflict to obtain new method embodiments.
[0338] The features disclosed in the several product embodiments provided in this application can be arbitrarily combined without conflict to obtain new product embodiments.
[0339] The features disclosed in the several method or device embodiments provided in this application can be arbitrarily combined without conflict to obtain new method or device embodiments.
[0340] The above description is merely an embodiment of this application, but the scope of protection of this application is not limited thereto. Any changes or substitutions that can be easily conceived by those skilled in the art within the scope of the technology disclosed in this application should be included within the scope of protection of this application.
Claims
1. A decoding method, the method being applied to a decoder, the method comprising: Decode the bitstream to determine the vertex information in the current node of the current point cloud; Based on the vertex information, determine one or more triangles; The one or more triangles are used to represent the point cloud surface of the current node; Determine the point cloud density information of the current node; Based on the point cloud density information of the current node, determine the first sampling parameters; Based on the first sampling parameters and the one or more triangles, the reconstructed point cloud in the current node is obtained.
2. The method according to claim 1, wherein, Determining the point cloud density information of the current node includes: Decode the bitstream to determine the point cloud density information of the current node.
3. The method according to claim 2, wherein, The decoded bitstream determines the point cloud density information of the current node, including: Decode the bitstream to determine the value of the first syntax element; where: The value of the first syntax element is used to indicate the point cloud density information of the current node; Alternatively, the value of the first syntax element is used to indicate the point cloud density information of multiple nodes, which are nodes at the same level and include the current node. Alternatively, the value of the first syntax element may be used to indicate the point cloud density information of the higher-level nodes of the current node.
4. The method according to claim 3, wherein, The processing order of the multiple nodes is sequential.
5. The method according to claim 3, wherein, The decoded bitstream determines the value of the first syntax element, including: The value of the first syntax element is determined by decoding the bitstream based on the length of the value of the first syntax element.
6. The method according to claim 5, wherein, The method further includes: Decode the bitstream to determine the value of the second syntax element; and determine the length of the value of the first syntax element based on the value of the second syntax element.
7. The method according to claim 6, wherein, The decoded bitstream determines the value of the second syntax element, including: The bitstream is decoded using a bypass decoding method to determine the value of the second syntax element.
8. The method according to any one of claims 5-7, wherein, Determining the value of the first syntax element by decoding the bitstream based on the length of the value of the first syntax element includes: The decoding method of the first syntax element is determined based on the length of the value of the first syntax element; The value of the first syntax element is determined by decoding the bitstream according to the decoding method of the first syntax element.
9. The method according to claim 8, wherein, Determining the decoding method of the first syntax element based on the length of its value includes: When the length of the value of the first syntax element is a first length or a second length, the decoding method of the first syntax element is an entropy decoding method based on the context model.
10. The method according to claim 8, wherein, Determining the decoding method of the first syntax element based on the length of its value includes: When the length of the value of the first syntax element is a first length, the decoding method of the first syntax element is a run-length decoding method based on the context model.
11. The method according to claim 3, wherein, The step of determining the first sampling parameter based on the point cloud density information of the current node includes: The first sampling parameter is determined based on the value of the first syntax element.
12. The method according to claim 11, wherein, Determining the first sampling parameter based on the value of the first syntax element includes: The first sampling parameter is determined based on the value of the first syntax element and the second sampling parameter of the current point cloud.
13. The method according to claim 12, wherein, Determining the first sampling parameter based on the value of the first syntax element and the second sampling parameter includes: The adjustment method is determined based on the value of the first syntax element; The first sampling parameter is obtained based on the adjustment method and the second sampling parameter.
14. The method according to claim 12, wherein, The method further includes: Decode the bitstream to determine the value of the third syntax element; The second sampling parameter of the current point cloud is determined based on the value of the third syntax element.
15. The method according to any one of claims 1-14, wherein, The vertex information includes the position information of the edge vertices; The step of determining one or more triangles based on the vertex information includes: Based on the position information of the edge vertex, determine the position information of the first centroid of the edge vertex; Decode the bitstream and determine the first offset information; The position information of the second centroid is determined based on the position information of the first centroid and the first offset information; Based on the position information of the edge vertices and the position information of the second centroid, one or more triangles are determined; wherein the vertices of the triangles include the second centroid and two edge vertices.
16. An encoding method, the method being applied to an encoder, the method comprising: Determine the vertex information in the current node of the current point cloud; Generate a bitstream based on the vertex information; Determine the point cloud density parameters of the first node of the current point cloud; wherein, the first node includes the current node; A bitstream is generated based on the point cloud density parameters of the first node.
17. The method according to claim 16, wherein, Determining the point cloud density parameters of the first node of the current point cloud includes: Based on the vertex information of the first node, one or more triangles are determined; the one or more triangles are used to represent the point cloud surface of the first node. The point cloud density parameter of the first node is determined based on the number of points in the point cloud and the one or more triangles in the first node.
18. The method according to claim 17, wherein, Determining the point cloud density parameter of the first node based on the number of points in the point cloud and the one or more triangles includes: Determine the cumulative sum of the areas of the one or more triangles; The point cloud density parameter of the first node is determined based on the number of points in the point cloud of the first node and the cumulative sum.
19. The method of claim 17, wherein, Determining the point cloud density parameter of the first node based on the number of points in the point cloud and the one or more triangles includes: Determine the projected area of the triangle in the first coordinate plane; The point cloud density parameter of the first node is determined based on the cumulative sum of the projected areas of the one or more triangles and the number of points in the point cloud of the first node.
20. The method according to any one of claims 16-19, wherein, The step of generating a bitstream based on the point cloud density parameters of the first node includes: The value of the first syntax element is determined based on the point cloud density parameter of the first node; Generate a bitstream based on the value of the first syntax element.
21. The method according to claim 20, wherein, The first node is the current node; or, The first node can be multiple nodes, and these multiple nodes are nodes at the same level; or, The first node is at a higher level than the current node.
22. The method according to claim 21, wherein, The processing order of the multiple nodes is sequential.
23. The method of claim 20, wherein, Determining the value of the first syntax element based on the point cloud density parameter of the first node includes: The value of the first syntax element is determined based on the point cloud density parameter of the first node, one or more preset density parameter thresholds, and the preset length of the value of the first syntax element.
24. The method according to any one of claims 20-23, wherein, The step of generating a code stream based on the value of the first syntax element includes: The value of the first syntax element is encoded according to its length to generate a bitstream.
25. The method according to claim 24, wherein, The method further includes: The value of the second syntax element is determined based on the length of the value of the first syntax element; the value of the second syntax element is used to indicate the length of the value of the first syntax element used by the current point cloud. The bitstream is generated based on the value of the second syntax element.
26. The method of claim 25, wherein, The step of generating a bitstream based on the value of the second syntax element includes: The value of the second syntax element is encoded using a bypass encoding method to generate a bitstream.
27. The method according to claim 24, wherein, The step of encoding the value of the first syntax element according to the length of the value of the first syntax element to generate a bitstream includes: The encoding method of the first syntax element is determined based on the length of its value. The value of the first syntax element is encoded according to the encoding method of the first syntax element to generate a bitstream.
28. The method according to claim 27, wherein, Determining the encoding method of the first syntax element based on the length of its value includes: When the length of the value of the first syntax element is a first length or a second length, the encoding method of the first syntax element is an entropy encoding method based on the context model.
29. The method according to claim 27, wherein, Determining the encoding method of the first syntax element based on the length of its value includes: When the length of the value of the first syntax element is a first length, the encoding method of the first syntax element is a run-length encoding method based on the context model.
30. The method according to any one of claims 16-29, wherein, The method further includes: The value of the third syntax element is determined based on the second sampling parameters of the current point cloud; A code stream is generated based on the value of the third syntax element.
31. The method according to claim 17, wherein, The vertex information of the first node includes the position information of the edge vertices; The step of determining one or more triangles based on the vertex information of the first node includes: Based on the position information of the edge vertices of the first node, determine the position information of the third centroid of the edge vertices of the first node; The position information of the fourth centroid is determined based on the point cloud in the first node and the position information of the third centroid. Based on the position information of the edge vertices of the first node and the position information of the fourth centroid, one or more triangles are determined; wherein the vertices of the triangles include the fourth centroid and the two edge vertices of the first node.
32. The method according to any one of claims 16-29, wherein, The vertex information in the current node includes the position information of the edge vertices; the method further includes: Based on the position information of the edge vertices in the current node, determine the position information of the first centroid of the edge vertex of the current node; The position information of the second centroid is determined based on the point cloud in the current node and the position information of the first centroid. Based on the position information of the first centroid and the position information of the second centroid, the first offset information is determined; A bitstream is generated based on the first offset information.
33. A decoding method, the method being applied to a decoder, the method comprising: Decode the bitstream to determine the vertex information in the current node of the current point cloud; Based on the vertex information, determine one or more triangles; The one or more triangles are used to represent the point cloud surface of the current node; Based on the vertex information, determine the point cloud density parameters of the current node; The third sampling parameter is determined based on the point cloud density parameter of the current node; Based on the third sampling parameters and the one or more triangles, the reconstructed point cloud in the current node is obtained.
34. The method according to claim 33, wherein, The step of determining the third sampling parameter based on the point cloud density parameter of the current node includes: The third sampling parameter is determined based on the point cloud density parameter of the current node and the second sampling parameter of the current point cloud.
35. The method according to claim 34, wherein, The step of determining the third sampling parameter based on the point cloud density parameter of the current node and the second sampling parameter of the current point cloud includes: The adjustment method is determined based on the point cloud density parameters of the current node and the preset density parameter threshold. The third sampling parameter is obtained based on the adjustment method and the second sampling parameter.
36. The method according to claim 34, wherein, The method further includes: Decode the bitstream to determine the value of the third syntax element; The second sampling parameter of the current point cloud is determined based on the value of the third syntax element.
37. The method according to any one of claims 33-36, wherein, The vertex information includes the position information of the edge vertices; The step of determining one or more triangles based on the vertex information includes: Based on the position information of the edge vertex, determine the position information of the first centroid of the edge vertex; Decode the bitstream and determine the first offset information; The position information of the second centroid is determined based on the position information of the first centroid and the first offset information; Based on the position information of the edge vertices and the position information of the second centroid, one or more triangles are determined; wherein the vertices of the triangles include the second centroid and two edge vertices.
38. A decoding apparatus for use with a decoder, the apparatus comprising: The first decoding module is configured to decode the bitstream and determine the vertex information in the current node of the current point cloud; The first determining module is configured to determine one or more triangles based on the vertex information; the one or more triangles are used to represent the point cloud surface of the current node. The second determining module is configured to determine the point cloud density information of the current node; The third determining module is configured to determine the first sampling parameters based on the point cloud density information of the current node; The first reconstruction module is configured to obtain the reconstructed point cloud in the current node based on the first sampling parameters and the one or more triangles.
39. A decoding apparatus for use with a decoder, the apparatus comprising: The second decoding module is configured to decode the bitstream and determine the vertex information in the current node of the current point cloud; The fourth determining module is configured to determine one or more triangles based on the vertex information; the one or more triangles are used to represent the point cloud surface of the current node; The fifth determining module is configured to determine the point cloud density parameters of the current node based on the vertex information; The sixth determining module is configured to determine the third sampling parameter based on the point cloud density parameter of the current node; The second reconstruction module is configured to obtain the reconstructed point cloud in the current node based on the third sampling parameters and the one or more triangles.
40. A decoder, comprising a first memory and a first processor; wherein, The first memory is used to store computer programs that can run on the first processor; The first processor is configured to, when running the computer program, perform the method as described in any one of claims 1-15, or perform the method as described in any one of claims 33-37.
41. An encoding device applied to an encoder, the device comprising: The seventh module is configured to determine the vertex information in the current node of the current point cloud; The first encoding module is configured to generate a bitstream based on the vertex information; The eighth determining module is configured to determine the point cloud density parameters of the first node of the current point cloud; wherein the first node includes the current node; The second encoding module is configured to generate a bitstream based on the point cloud density parameters of the first node.
42. An encoder, comprising a second memory and a second processor; wherein, The second memory is used to store computer programs that can run on the second processor; The second processor is configured to perform the method as described in any one of claims 16-32 when running the computer program.
43. A bitstream obtained by the encoding method according to any one of claims 16 to 32.
44. An electronic device, comprising: A processor, adapted to execute computer programs; A computer-readable storage medium storing a computer program that, when executed by the processor, implements the method as described in any one of claims 1-15, or when executed by the processor, implements the method as described in any one of claims 16-32, or when executed by the processor, implements the method as described in any one of claims 33-37.
45. A computer-readable storage medium, wherein, The computer-readable storage medium stores a computer program that, when executed, implements the method as described in any one of claims 1-15, or the method as described in any one of claims 16-32, or the method as described in any one of claims 33-37.
46. A computer program product comprising a computer program or instructions which, when executed by a processor, implement the method as described in any one of claims 1-15, or the computer program or instructions which, when executed by a processor, implement the method as described in any one of claims 16-32, or the computer program or instructions which, when executed by a processor, implement the method as described in any one of claims 33-37.
Citation Information
Patent Citations
Method and device for processing point cloud data
US20220224940A1
Point cloud processing method, point cloud processing apparatus, mobile platform, and computer storage medium
WO2022126427A1
Point cloud data transmission device and method, and point cloud data reception device and method
WO2023068846A1
Method for encoding and decoding a 3D point cloud, encoder, decoder
WO2023184393A1
Method for encoding and decoding a 3D point cloud, encoder, decoder
WO2024082109A1