Encoding method, decoding method, code stream, encoder, decoder, medium and program product
By employing a nonlinear subdivision method in dynamic grid coding, the problem of redundant displacement coefficients in existing technologies is solved, the encoding and decoding efficiency is improved, and the number of encoding bits for displacement coefficients is reduced.
Patent Information
- Application Number
- CN202480027912.X
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2023-06-15
- Filing Date
- 2024-06-17
- Publication Date
- 2025-12-02
AI Technical Summary
In the Moving Picture Experts Group's dynamic mesh coding standard, the subdivision process is not fully considered, resulting in redundancy in the encoding of displacement coefficients, which reduces encoding and decoding efficiency.
A non-linear subdivision method is adopted. By adding a first syntax element to indicate that the current mesh uses non-linear subdivision, the vertex displacement coefficients close to the basic layer are set to 0 during the encoding stage and inferred to be equal to 0 during the decoding stage, thereby reducing the encoding bits of the displacement coefficients.
It improves the redundancy problem of high-level shift coefficients, enhances encoding and decoding efficiency, and saves encoding bits for shift coefficients.
Smart Images

Figure CN121058043A_ABST
Abstract
Description
Cross-references to related applications
[0001] This application is based on and claims priority to U.S. Patent Application No. 63 / 521,327, filed June 15, 2021, the entire contents of which are incorporated herein by reference. Technical Field
[0002] This disclosure relates to the field of video encoding and decoding technology, and in particular to an encoding and decoding method, a bitstream, an encoder, a decoder, a storage medium, and a program product. Background Technology
[0003] In the standard reference software for Dynamic Mesh Coding (DMC) provided by the Moving Picture Experts Group (MPEG), the following operations are performed when encoding and decoding the geometric information of the mesh: First, the original mesh is preprocessed to obtain a base mesh. This base mesh is then encoded using a general coding method (e.g., "edgebreaker"). Next, the base mesh is subdivided to obtain a subdivided mesh. Then, displacement coefficients are determined based on the differences between approximate points of the subdivided mesh and the original mesh. Finally, the displacement coefficients are packed into a two-dimensional image and encoded using a lossless video coding method such as High Efficiency Video Coding (HEVC).
[0004] However, during the encoding and decoding of the geometric information of the mesh, the subdivision process is not fully considered, resulting in redundancy in the encoding of displacement coefficients, which reduces the encoding and decoding efficiency. Summary of the Invention
[0005] This disclosure provides an encoding method, a decoding method, a bitstream, an encoder, a decoder, a medium, and a product that can reduce the number of coded bits with shift coefficients, thereby improving encoding and decoding efficiency.
[0006] The technical solution disclosed herein can be implemented as follows.
[0007] In a first aspect, embodiments of this disclosure provide a decoding method applied to a decoder. The method includes: decoding a bitstream and determining the value of a first syntax element; when the value of the first syntax element indicates that the current grid uses a non-linear subdivision method, determining the reconstructed grid of the current LOD in the current grid, and subdividing the reconstructed grid of the current LOD to determine the subdivision grid of the current LOD; when the current LOD is the i-th LOD, determining the displacement coefficient of the first point of the current LOD to be 0; wherein i is an integer greater than a preset value; the first point includes the vertex of the reconstructed base grid corresponding to the current grid; and determining the reconstructed grid of the next LOD in the current grid based on the subdivision grid of the current LOD and the displacement coefficient of the first point of the current LOD.
[0008] Secondly, embodiments of this disclosure provide an encoding method applied to an encoder. The method includes: when the current grid uses a non-linear subdivision method, determining the value of a first syntax element and writing the first syntax element into the bitstream; determining the reconstructed grid of the current LOD in the current grid and subdividing the reconstructed grid of the current LOD to determine the subdivision grid of the current LOD; when the current LOD is the i-th LOD, determining the displacement coefficient of the first point of the current LOD to be 0; wherein i is an integer greater than a preset value; the first point includes the vertex of the reconstructed base grid corresponding to the current grid; and determining the reconstructed grid of the next LOD in the current grid based on the subdivision grid of the current LOD and the displacement coefficient of the first point of the current LOD.
[0009] Thirdly, embodiments of this disclosure provide a bitstream generated by bit encoding based on information to be encoded; wherein the information to be encoded includes at least one of the following: the base grid of the current grid, the displacement coefficient of at least one LOD of the current grid, the quantization parameter of at least one LOD of the current grid, the quantization parameter increment of at least one LOD of the current grid, the value of a first syntax element, the value of a second syntax element, and the value of a third syntax element.
[0010] Fourthly, embodiments of this disclosure provide an encoder, including a first determining unit, configured to: when the current grid uses a non-linear subdivision method, determine the value of a first syntax element and write the first syntax element into the bitstream; determine the reconstructed grid of the current LOD in the current grid; and subdivide the reconstructed grid of the current LOD to determine the subdivision grid of the current LOD; when the current LOD is the i-th LOD, determine the displacement coefficient of the first point of the current LOD to be 0; where i is an integer greater than a preset value; the first point includes the vertex of the reconstructed base grid corresponding to the current grid; and determine the reconstructed grid of the next LOD in the current grid based on the subdivision grid of the current LOD and the displacement coefficient of the current LOD.
[0011] Fifthly, embodiments of this disclosure provide an encoder, including a memory and a processor. The memory is used to store a computer program capable of running on the processor. The processor is used to execute the method described in the second aspect when running the computer program.
[0012] In a sixth aspect, embodiments of this disclosure provide a decoder, including a determining unit. The determining unit is configured to: decode a bitstream; determine the value of a first syntax element; when the value of the first syntax element indicates that the current grid uses a non-linear subdivision method, determine the reconstructed grid of the current LOD in the current grid, and subdivide the reconstructed grid of the current LOD to determine the subdivision grid of the current LOD; if the current LOD is the i-th LOD, determine the displacement coefficient of the first point of the current LOD to be 0; where i is an integer greater than a preset value; the first point includes the vertex of the reconstructed base grid corresponding to the current grid; and determine the reconstructed grid of the next LOD in the current grid based on the subdivision grid of the current LOD and the displacement coefficient of the first point of the current LOD.
[0013] In a seventh aspect, embodiments of this disclosure provide a decoder, including a memory and a processor. The memory is used to store a computer program capable of running on the processor; the processor is used to execute the method described in the first aspect when running the computer program.
[0014] Eighthly, embodiments of this disclosure provide a computer-readable storage medium storing a computer program that, when executed, implements the method described in the first aspect or the method described in the second aspect.
[0015] In a ninth aspect, embodiments of this disclosure provide a computer program product, including a computer program or instructions that, when executed by at least one processor, implement the method described in the first aspect or the method described in the second aspect.
[0016] This disclosure provides an encoding method, a decoding method, a bitstream, an encoder, a decoder, a storage medium, and a program product. At the decoding end, the bitstream is decoded, and the value of a first syntax element is determined. When the first syntax element indicates that the current grid uses a non-linear subdivision method, the reconstructed grid of the current LOD in the current grid is determined, and the reconstructed grid of the current LOD is subdivided to determine the subdivided grid of the current LOD. If the current LOD is the i-th LOD, the displacement coefficient of the first point of the current LOD is determined to be 0; where i is an integer greater than a preset value; the first point includes the vertex of the reconstructed base grid corresponding to the current grid. Based on the subdivided grid of the current LOD and the displacement coefficient of the first point of the current LOD, the reconstructed grid of the next LOD in the current grid is determined. At the encoding end, when the current grid uses a non-linear subdivision method, the value of the first syntax element is determined and written into the bitstream. The reconstructed grid of the current LOD in the current grid is determined, and the reconstructed grid of the current LOD is subdivided to determine the subdivided grid of the current LOD. If the current LOD is the i-th LOD, the displacement coefficient of the first point of the current LOD is determined to be 0. Here, i is an integer greater than a preset value. The first point includes the vertex of the reconstructed base grid corresponding to the current grid. Based on the subdivided grid of the current LOD and the displacement coefficient of the current LOD, the reconstructed grid of the next LOD in the current grid is determined. That is, in the embodiments of this disclosure, by adding a first syntax element to indicate that the current grid uses a non-linear subdivision method, during the encoding stage, the displacement coefficients of vertices close to the base layer can be removed from the displacement list. During the decoding stage, the displacement coefficients of vertices close to the base layer are inferred to be equal to 0. Therefore, in the subsequent process of recursively applying the displacement coefficients to the previously reconstructed Level of Details (LOD), the redundancy problem of displacement coefficients at higher levels can be improved, the coding bits of displacement coefficients can be reduced, and thus the encoding and decoding efficiency can be improved. Attached Figure Description
[0017] The accompanying drawings, which are incorporated in and form part of this specification, illustrate embodiments consistent with this disclosure and, together with the description, serve to explain the principles of this disclosure. In the drawings: Figure 1 This is a flowchart illustrating a geometric coding process; Figure 2 This is a schematic diagram illustrating the generation process of a displacement component. Figure 3 This is a schematic diagram of the decomposition of displacement components in a local coordinate system. Figure 4 This is a schematic diagram of a recursive subdivision method using displacement in the direction perpendicular to the surface normal. Figure 5 This is a schematic diagram of a grid subdivision process; Figure 6 This is a schematic diagram of a mesh subdivision result with 2 LODs and one-dimensional displacement; Figure 7 This is a schematic diagram of the encoding process for a parametric mesh. Figure 8 This is a schematic diagram of geometric information in a mesh frame. Figure 9 A schematic diagram of a surface consisting of a mesh with four vertices and three faces; Figure 10 A schematic diagram of a data structure for a grid consisting of four vertices and three faces; Figure 11 This is a schematic diagram of a data structure consisting of a parameterized mesh with attribute texture maps; Figure 12 This is a schematic diagram of a mesh with attribute mapping features, consisting of four vertices and three triangular faces; Figure 13A This is a schematic diagram of a manifold mesh; Figure 13B This is a schematic diagram of a non-manifold mesh; Figure 14 This is a schematic diagram of the mapping of a displacement component; Figure 15A A schematic diagram of displacement component filling in a two-dimensional image; Figure 15B A schematic diagram of filling displacement components into another two-dimensional image; Figure 16 A flowchart illustrating a decoding method provided in this embodiment of the present disclosure. Figure 1 ; Figure 17 A flowchart illustrating a decoding method provided in this embodiment of the present disclosure. Figure 2 ; Figure 18 A flowchart illustrating a decoding method provided in this embodiment of the present disclosure. Figure 3 ; Figure 19 A flowchart illustrating a decoding method provided in this embodiment of the present disclosure. Figure 4 ; Figure 20 A schematic diagram illustrating a recursive subdivision result of a mesh provided in an embodiment of this disclosure; Figure 21 A detailed flowchart illustrating a recursive subdivision provided for an embodiment of this disclosure; Figure 22 This is a schematic diagram of a nonlinear subdivision result of a mesh provided in an embodiment of the present disclosure; Figure 23A detailed flowchart illustrating a nonlinear subdivision method provided for embodiments of this disclosure; Figure 24 A flowchart illustrating a decoding method provided in this embodiment of the present disclosure. Figure 5 ; Figure 25 A flowchart illustrating an encoding method provided in this embodiment of the disclosure. Figure 1 ; Figure 26 A flowchart illustrating an encoding method provided in this embodiment of the disclosure. Figure 2 ; Figure 27 A flowchart illustrating an encoding method provided in this embodiment of the disclosure. Figure 3 ; Figure 28 A flowchart illustrating an encoding method provided in this embodiment of the disclosure. Figure 4 ; Figure 29A This is a schematic diagram illustrating a method for filling displacement coefficients in a two-dimensional image according to an embodiment of the present disclosure; Figure 29B This is a schematic diagram illustrating another method of filling displacement coefficients in a two-dimensional image, as provided in an embodiment of this disclosure. Figure 30 This is a schematic diagram of the composition structure of an encoder provided in an embodiment of this disclosure; Figure 31 This is a schematic diagram of the specific hardware structure of an encoder provided in an embodiment of the present disclosure; Figure 32 A schematic diagram of the composition structure of a decoder provided in an embodiment of this disclosure; Figure 33 This is a schematic diagram of a specific hardware structure of a decoder provided in an embodiment of the present disclosure; Figure 34 This is a schematic diagram of the composition structure of an encoding / decoding system provided in an embodiment of this disclosure. Detailed Implementation
[0018] To gain a more detailed understanding of the features and technical content of the embodiments of this disclosure, the implementation of the embodiments of this disclosure will be described in detail below with reference to the accompanying drawings. The accompanying drawings are for reference and illustration only and are not intended to limit the embodiments of this disclosure.
[0019] 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 disclosure belongs. The terminology used herein is for the purpose of describing embodiments of this disclosure only and is not intended to be limiting of this disclosure.
[0020] In the following description, references are made to “some embodiments,” which describe a subset of all possible embodiments. However, it is understood that “some embodiments” may be the same subset or different subsets of all possible embodiments and may be combined with each other without conflict.
[0021] It should also be noted that the terms "first, second, third" used in the embodiments of this disclosure are only used to distinguish similar objects and do not represent a specific order of objects. It is understood that "first, second, third" can be interchanged in a specific order or sequence where permitted, so that the embodiments of this disclosure described herein can be implemented in an order other than that illustrated or described herein.
[0022] In this embodiment of the disclosure, it is possible to decode and synthesize bitstreams of different data formats within the same video scene. These data formats may include at least image formats, point cloud formats, and mesh formats. In this way, real-time immersive video interactive services can be provided for multiple data formats (e.g., mesh, point cloud, image, etc.) from different sources.
[0023] In this embodiment of the disclosure, the data format-based method allows for independent processing at the bitstream level of the data format. That is, similar to tiles or slices in video coding, different data formats in this scenario can be encoded independently, thus enabling independent encoding and decoding based on the data format.
[0024] Generally, 3D animation content uses a keyframe-based representation, where each frame is a static mesh. Static meshes at different times have the same topological structure but different geometric structures. However, the data volume of keyframe-based 3D dynamic meshes is particularly large, so how to effectively store, transmit, and render them becomes a problem facing the development of 3D dynamic meshes. Furthermore, spatial scalability of the mesh needs to be supported for different user terminals (e.g., computers, laptops, portable devices, mobile phones); different network bandwidths (e.g., broadband, narrowband, wireless) need to support quality scalability of the mesh. Therefore, 3D dynamic mesh compression is a very critical issue. Here, "one frame" can be understood as an image. For example, a keyframe can be understood as a key image in a 3D animation.
[0025] Before providing a more detailed description of the embodiments of this disclosure, the key terms and related technologies involved in the embodiments of this disclosure will be introduced first.
[0026] (1) Key terms.
[0027] The terms used in the embodiments of this disclosure are to be interpreted as follows: A mesh is a collection of vertices, edges, and faces that define the shape / topology of a polyhedral object. Faces are typically composed of triangles (triangular meshes).
[0028] Base mesh – A mesh with fewer vertices but maintaining similarity to the original surface.
[0029] A dynamic mesh is a type of mesh in which at least one of its five components (connectivity, geometry, mapping, vertex properties, and property graph) changes over time.
[0030] Animated mesh – a type of mesh whose topology is defined by mapped components.
[0031] A parametric mesh is a mesh whose topology is defined as a mapping component.
[0032] Connectivity – A set of vertex indices that describes how mesh vertices are connected to create a 3D surface. (Geometry and all properties share the same unique connectivity information).
[0033] Geometry – A set of 3D (x, y, z) coordinates of a vertex describing its position relative to a mesh vertex. The coordinates (x, y, z) representing the position should have finite precision and dynamic range.
[0034] Mapping describes how a mesh surface is mapped to a 2D region of a plane. This mapping is described by a set of UV parameters / texture [mapping] coordinates associated with the mesh vertices and connectivity information.
[0035] Vertex attribute – A scalar of vector attribute values associated with mesh vertices.
[0036] Attribute Map – Attributes associated with the mesh surface and stored as a 2D image / video. The mapping between the video (i.e., parameter space) and the surface is defined by the mapping information.
[0037] Vertex – position (usually in 3D space) and other information such as color, normal vector and texture coordinates.
[0038] An edge is a connection between two vertices.
[0039] A face is a set of closed edges, where a triangular face has three edges defined by its three vertices. The orientation of a face is determined using a right-handed coordinate system.
[0040] Surface – A collection of faces that separate a three-dimensional object from its environment.
[0041] Bits per point (bpp) – This describes the amount of information (in bits) at a point in a grid.
[0042] Displacements are the differences between the geometry of the original mesh and the geometry of the mesh reconstructed due to the underlying mesh subdivision process.
[0043] LOD (Level of Details) – A scalable representation of mesh reconstruction. Each LOD contains enough information to reconstruct the mesh with the indicated precision or spatial resolution. Each subsequent LOD is a refinement on top of multiple previously reconstructed meshes.
[0044] (2) Related technologies The current algorithm can be applied to a two-stage coding process to encode geometric information. First, geometric information is extracted to create a base mesh encoded using a general geometric coding method (e.g., "edgebreaker"). Then, the base mesh is subdivided layer by layer, and the difference between the subdivision points and approximations of the original mesh is stored as a geometric displacement component. This displacement component is packed (or "filled") into the 2D image and encoded using a lossless video coding method such as High Efficiency Video Coding (HEVC). The flow of the two-stage geometric coding process is as follows: Figure 1 As shown.
[0045] exist Figure 1 In the process, a static or dynamic mesh input preprocessing module is used to extract geometric information to generate a base mesh and displacement components. The extracted base mesh is then encoded using a general mesh encoder (e.g., an "edgebreaker"), and the displacement components are packed into a 2D image. The displacement information is then encoded using a video encoder such as HEVC, and the resulting encoded bits are written into the bitstream.
[0046] Figure 2 This describes the process of generating the displacement of a face in the base mesh using a refinement step. Here, PB1, PB2, and PB3 represent base mesh points, PS1, PS2, and PS3 represent refinement points, and PSD1, PSD2, and PSD3 represent the repositioned refinement points. The refinement point PS1 is calculated as the midpoint between PB1 and PB2. This process can be recursively repeated.
[0047] exist Figure 3 In the diagram, each vector of PS1 and PSD1 can be described by three components in the directions of normal, tangent, and double tangent. These three components can be further processed using wavelet transform, and the corresponding transform coefficients can be mapped to color planes (e.g., the Y, U, and V components in the YUV 444 color space), or sequentially mapped to a single color plane (e.g., the Y plane component in the YUV 420 or YUV 400 color space), or packed using an interleaving method between color planes (e.g., the Y, U, and V components in the YUV 420 color space).
[0048] The subdivision process is repeated recursively until the desired point density is achieved. Figure 4 This describes an example of recursive subdivision using displacements in a direction perpendicular to the surface's normal in 2D space. For example... Figure 4 As shown, in this iterative subdivision process, (a), (c) and (e) are the three-level subdivision processes of the convex continuous surface, and (b), (d) and (f) are the three-level subdivision processes of the oscillating surface.
[0049] For example, there are three LOD refinements here, and the refinement process includes the following steps.
[0050] In step 1, an edge is defined using two adjacent points PB0 and PB1 in the reconstructed base mesh.
[0051] In step 2, the normals of the edges are calculated using the face containing points PB0 and PB1.
[0052] In step 3, the base mesh for reconstruction is subdivided at point PS1_1.
[0053] In step 4, the displacement d1_1 is applied to point PS1_1 along the normal defined in step 2.
[0054] In step 5, create two edges: PB0 PS1_1 and PS1_1 PB1, as follows: Figure 4 (a) and (b) in the example.
[0055] In step 6, steps 3-5 are applied to each new edge from step 5 until the desired LOD is generated, such as... Figure 4 (c) and (e) in the middle and Figure 4 (d) and (f) in the text.
[0056] It is important to note that the normals are always calculated with reference to the reconstructed base mesh. Additionally, the displacements are calculated with reference to the subdivision edges generated in step 5, not the reconstructed base edges obtained in step 1.
[0057] Furthermore, the flowchart of the subdivision process is as follows: Figure 5 As shown. In Figure 5 In it, in step S501, first, the original grid is simplified to obtain a base grid. In step S502, the base grid is quantized. In step S503, the quantized base grid is encoded. In step S504, the base network is decoded from the bitstream to obtain a reconstructed base grid. In step S505, n = 0 is initialized, and the reconstructed base grid is subdivided to obtain a subdivided grid. In step S506, it is judged whether n is less than L - 1. If the judgment result is yes, that is, n < L - 1, then n = n + 1 (S507), and steps S505 to S506 are continued. If the judgment result of step S506 is no, that is, n < L - 1 does not hold, it indicates that the subdivision is completed, and then steps S508 and S509 are executed. That is to say, after the subdivision is completed, the obtained subdivided grid and the original grid are subjected to displacement calculation to obtain displacement coefficients, and the displacement coefficients are encoded into the bitstream.
[0058] Among them, n represents the number of iterative subdivisions, and n is an integer indexed from zero. L represents the number of LODs, and L is an integer indexed from one.
[0059] Exemplarily, Figure 6 The subdivision result of a three-dimensional content with 2 LODs and 1D displacement is provided. Among them, the black solid line (composed of vertices PB_1, PB_2, and PB_3) represents the base grid, the black dashed line represents the subdivided grid, the first bold solid line is LOD1 to which the displacement is applied, and the second bold solid line is LOD2 to which the displacement is applied.
[0060] Furthermore, Figure 7 A schematic diagram of the encoding process of the parametric grid is provided, and the encoding process is as follows.
[0061] The base grid frame is quantized and encoded using a static grid encoder. This process is independent of the type of encoding scheme used to compress the base grid.
[0062] The displacement is generated using a hierarchical subdivision process and represents the difference between the original grid topology and the previously reconstructed subdivision LOD. The first iteration of the displacement uses the base grid as input.
[0063] The displacement is processed by a hierarchical wavelet transform (or other transform processing), and this transform recursively applies the LOD to the reconstructed base grid.
[0064] Then, the wavelet coefficients are quantized, packed into a 2D image / video, and can be compressed by using a traditional image / video encoder.
[0065] The reconstructed version of the wavelet coefficients is obtained by applying image unpacking and inverse quantization to the reconstructed wavelet coefficient image / video generated during image / video decoding.
[0066] Then, the reconstructed displacement is calculated by applying inverse wavelet transform to the reconstructed wavelet coefficients.
[0067] Wavelet coefficients are calculated in floating-point format and can be both positive and negative. In some systems, to generate a 2D image, the coefficients are first converted to positive values and mapped to a given bit depth.
[0068] c'(i)=2^[bit_depth-1]+[c(i)*2^bit_depth] / [c_max-c_min], Where c′(i) is the integral displacement coefficient value, c(i) is the current displacement coefficient value, c_max is the maximum displacement coefficient value, c_min is the minimum displacement coefficient value, and bit_depth is a value that defines the number of fixed levels used for image encoding.
[0069] exist Figure 8 The image shows an example of geometric information in a mesh framework, specifically an example of a mesh data structure where each vertex has attributes.
[0070] exist Figure 9 The image shows a surface example of a mesh consisting of four vertices and three faces. Figure 10 The example shown is a data structure of a mesh consisting of four vertices and three faces. Specifically, for... Figure 9 The displayed mesh consists of four vertices and three faces, each with a color-per-vertex characteristic. Figure 8 The following is an example of a surface, represented by (). Each vertex in space is described by its X, Y, Z position coordinates and three color attributes R, G, B. As shown below, each face is defined by the indices of the three vertices that form a triangle.
[0071] # --------------------------------- #Part 1: #Geometric Information #XYZ a_1 a_2 a_3 #Vertex 0 (v_idx_0) v 0.0 0.0 0.0 127 127 127 #Vertex 1 (v_idx_1) v 1.0 0.0 0.0 127 127 127 #Vertex 2 (v_idx_2) v 0.0 1.0 0.0 127 127 127 #Vertex 3 (v_idx_3) v 0.0 0.0 1.0 127 127 127 # --------------------------------- #Part 2: #Connectivity Information #v_idx, v_idx, v_idx #face0 (f_idx_0) f 0 12 #Interview 1 (f_idx_1) f 0 31 #Interview 2 (f_idx_2) f 0 23 # --------------------------------- exist Figure 11 The example shown is a data structure consisting of a parameterized mesh with attribute texture maps.
[0072] exist Figure 12 The image shows a grid with attribute mapping characteristics. Figure 11 The example surface is represented by (U, V), which consists of four vertices and three faces. Each vertex in space is described by its X, Y, Z position coordinates. (U, V) represent the attribute coordinates in the 2D texture vertex graph. Each face is defined by three pairs of vertex indices and texture vertex coordinates, which form a triangle in 3D space and a triangle in the 2D texture graph.
[0073] # --------------------------------- #Part 1: #Geometric Information #XYZ #Vertex 0 (v_idx_0) v 0.0 0.0 0.0 #Vertex 1 (v_idx_1) v 1.0 0.0 0.0 #Vertex 2 (v_idx_2) v 0.0 1.0 0.0 #Vertex 3 (v_idx_3) v 0.0 0.0 1.0 # --------------------------------- #Part 2: #Mapping Information #UV #Texture vertex 0 (vt_0) vt 0.500000 0.500000 #Texture Vertex 1 (vt_1) vt 0.0000000.500000 #Texture Vertex 2 (vt_2) vt 0.5000001.000000 #Texture Vertex 3 (vt_3) vt 1.0000000.500000 #Texture Vertex 4 (vt_4) vt 0.5000000.000000 # --------------------------------- #Part 3: #Connectivity Information #v_idx / vt_idx #face0 (f_idx_0) f 0 / 0 1 / 2 2 / 1 #Interview 1 (f_idx_1) f 0 / 0 3 / 2 1 / 3 #Interview 2 (f_idx_2) f 0 / 0 2 / 3 3 / 4 In this embodiment of the disclosure, the orientation of a face can be determined using a right-handed coordinate system. A face consists of three vertices belonging to three edges, and the three vertex indices describe each face.
[0074] A manifold mesh is a mesh in which an edge belongs to at most two distinct faces, such as... Figure 13A As shown. A non-manifold mesh is a mesh where one edge belongs to more than two faces, such as... Figure 13B As shown.
[0075] Furthermore, in order to encode the displacement components using existing video coding standards, the transformed displacement components can be mapped from a one-dimensional array to a two-dimensional image, such as... Figure 14 As shown.
[0076] Each unit vector component is associated with a different color plane. For example, the normal unit vector is mapped to the Y-plane; the tangent unit vector is mapped to the U-plane; and the bitangent unit vector is mapped to the V-plane. In this case, the YUV444 color mapping is used for encoding. Figure 15A and Figure 15B As shown, this provides an example of an 8×8 padding block for the shift coefficients of video components. Wherein, Figure 15A Indicates positive fill. Figure 15B This indicates reverse fill.
[0077] The properties of the lifting transform used in displacement coefficient encoding result in independent subdivision levels, each with a separate set of coefficients for reconstruction.
[0078] In related technologies, such as Figure 5 As shown, shift coefficients are applied to the previously reconstructed LOD. In some cases, shift coefficients often exhibit redundancy at higher levels, leading to high coded bit overhead and reduced encoding / decoding efficiency.
[0079] Based on this, embodiments of this disclosure provide an encoding / decoding method. By adding a first syntax element to indicate that the current grid uses a non-linear subdivision method, when it is determined that the current grid uses a non-linear subdivision method, the reconstructed grid of the current LOD in the current grid is subdivided to determine the subdivision grid of the current LOD; the displacement coefficient of the first point of the current LOD (the point that coincides with or is adjacent to the base point) is directly set to 0, that is, the displacement adjacent to the base point (e.g., PB_1, PB_2, and PB_3) is inferred to be equal to 0; based on the subdivision grid of the current LOD and the displacement coefficient of the current LOD, the reconstructed grid of the next LOD in the current grid is determined. In this way, when the current grid uses a non-linear subdivision method, the redundancy problem of displacement coefficients at higher levels can be further improved, saving the encoding bits of displacement coefficients, thereby improving the encoding / decoding efficiency.
[0080] In other words, in the embodiments of this disclosure, by adding a first syntax element to indicate that the current mesh uses a non-linear subdivision method, during the encoding stage, the displacement coefficients of vertices close to the base layer can be removed from the displacement list, and during the decoding stage, the displacement coefficients of vertices close to the base layer are inferred to be equal to 0. Therefore, in the subsequent process of recursively applying the displacement coefficients to the previously reconstructed LOD, the redundancy problem of displacement coefficients at higher levels can be improved, the number of encoded bits of displacement coefficients can be reduced, and thus the encoding and decoding efficiency can be improved.
[0081] To facilitate understanding of the technical solutions of the embodiments of this disclosure, the technical solutions of this disclosure are described in detail below through specific embodiments. The above-mentioned related technologies are optional solutions and can be arbitrarily combined with the technical solutions of the embodiments of this disclosure, all of which fall within the protection scope of the embodiments of this disclosure. The embodiments of this disclosure include at least some of the following contents.
[0082] Figure 16 A flowchart illustrating a decoding method provided in this embodiment of the present disclosure. Figure 1 .like Figure 16 As shown, the method may include the following steps.
[0083] In step 101, the bitstream is decoded to determine the value of the first syntax element.
[0084] It should be noted that, in the embodiments disclosed herein, the decoding method may refer to a grid subdivision method, specifically a recursive subdivision method for dynamic grid decoding, which can improve encoding and decoding efficiency.
[0085] It should also be noted that, in this embodiment, Video-based Dynamic Mesh Coding (VDMC) is a standard for compressing 3D meshes, which mainly utilizes the existing Visual Volumetric Video-based Coding (V3C) standard to compress the 3D mesh. In this embodiment, the subdivision method shares functionality across all LODs and is defined by two syntax elements in the Atlas sequence parameter set VDMC extended RBSP syntax structure: asps_vdmc_ext_subdivision_method and asps_vdmc_ext_subdivision_iteration_count.
[0086] Table 1 provides an illustrative syntax structure for the Atlas sequence parameter set VDMC extension.
[0087] Table 1
[0088] In Table 1, asps_vdmc_ext_subdivision_method is used to indicate the subdivision method identifier of the mesh associated with the current Atlas sequence parameter set, asps_vdmc_ext_subdivision_iteration_count is used to indicate the number of subdivision iterations of the mesh, asps_vdmc_ext_displacement_coordinate_system is used to indicate the coordinate system identifier of the mesh, and asps_vdmc_ext_transform_method is used to indicate the wavelet transform identifier of the mesh.
[0089] For asps_vdmc_ext_subdivision_method, Table 2 describes a list of the supported subdivision methods and their correspondence with asps_vdmc_ext_subdivision_method.
[0090] Table 2
[0091] For asps_vdmc_ext_subdivision_iteration_count, if it does not exist, it is inferred that the value of asps_vdmc_ext_subdivision_iteration_count is equal to 0.
[0092] For asps_vdmc_ext_displacement_coordinate_system, Table 3 describes a list of the supported coordinate systems and their correspondence with asps_vdmc_ext_displacement_coordinate_system.
[0093] Table 3
[0094] For asps_vdmc_ext_transform_method, Table 4 describes the list of supported wavelet transform methods and their correspondence with asps_vdmc_ext_transform_method.
[0095] Table 4
[0096] In this embodiment of the disclosure, the first syntax element can be represented by asps_vdmc_ext_subdivision_method, which indicates the subdivision method of the grid, such as midpoint subdivision, loop subdivision, etc.
[0097] Due to the specific nature of the subdivision, higher-level LODs typically degenerate into "0" shifts, thereby introducing significant redundancy in signaling and coded information.
[0098] Based on this, in order to effectively encode the geometric components of the mesh representation of volumetric content, redundant displacements such as edges of the base mesh and inherited values from previous LODs can be removed. Embodiments of this disclosure propose a novel adaptive subdivision scheme, wherein at higher LOD levels, edges adjacent to the base point are always equal to 0.
[0099] It is understood that in this embodiment of the disclosure, based on the aforementioned Table 2, new values are added to the first syntax element so that the first syntax element can be used to indicate whether the current mesh uses a nonlinear subdivision method. Here, the nonlinear subdivision method can create subdivisions similar to those in related techniques, but the displacements adjacent to the base points (e.g., PB_1, PB_2, and PB_3) are inferred to be equal to 0. Simply put, for each LOD, the displacement is calculated based on the subdivision vertices in the previously reconstructed LOD, thus enabling the displacements to be recursively used in the previously reconstructed LOD. Therefore, this adaptive subdivision method is called a "recursive subdivision method." Taking midpoint subdivision as an example, this recursive subdivision method can be called a midpoint recursive subdivision method.
[0100] In one possible implementation, as shown in Table 5, a new asps_vdmc_ext_subdivision_method equal to 2 and 3 is added. This new asps_vdmc_ext_subdivision_method will create the same subdivision as the related techniques, but the shifts adjacent to the base points (e.g., PB_1, PB_2, and PB_3) are inferred to be equal to zero, thus saving the coded bits of the shifts.
[0101] Table 5
[0102] In step 102, when the first syntax element indicates that the current mesh uses a non-linear subdivision method, the reconstructed mesh of the current LOD in the current mesh is determined, and the reconstructed mesh of the current LOD is subdivided to determine the subdivision mesh of the current LOD.
[0103] It should be noted that, in this embodiment of the disclosure, the first syntax element is used to indicate whether the current mesh uses a non-linear subdivision method. Specifically, when the value of the first syntax element is a first value, it is determined that the first syntax element indicates that the current mesh does not use a subdivision method; when the value of the first syntax element is a second value, it is determined that the first syntax element indicates that the current mesh uses a midpoint subdivision method; when the value of the first syntax element is a third value, it is determined that the first syntax element indicates that the current mesh uses a recursive subdivision method; and when the value of the first syntax element is a fourth value, it is determined that the first syntax element indicates that the current mesh uses a non-linear subdivision method.
[0104] Here, the first, second, third, and fourth values are all different. For example, the first value can be set to 0, the second value can be set to 1, the third value can be set to 2, and the fourth value can be set to 3. That is, based on the different values of the first syntax element, it can be determined whether the current mesh uses a non-linear subdivision method.
[0105] In one embodiment, if the value of the first syntax element is 0, it can be determined that the current grid does not use any subdivision method, such as midpoint subdivision, recursive subdivision, non-linear subdivision, etc.; if the value of the first syntax element is 1, it can be determined that the current grid uses midpoint subdivision; if the value of the first syntax element is 2, it can be determined that the current grid uses recursive subdivision; if the value of the first syntax element is 3, it can be determined that the current grid uses non-linear subdivision.
[0106] It should also be noted that, in this embodiment of the disclosure, when the current grid uses a nonlinear subdivision method, the reconstructed grid of the current grid can be obtained by recursively reconstructing at least one LOD. Specifically, after obtaining the reconstructed grid of the current LOD in the current grid, the reconstructed grid of the current LOD can be subdivided to determine the subdivided grid of the current LOD. Then, based on the subdivided grid of the current LOD and a pre-set displacement coefficient or a displacement coefficient in the bitstream, the reconstructed grid of the next LOD can be recursively obtained.
[0107] In some embodiments, the reconstructed grid of the first LOD in the current grid is first determined. The method may include: decoding the bitstream to determine the reconstructed base grid; subdividing the reconstructed base grid to determine the initial subdivision grid; decoding the bitstream to determine the displacement coefficients of the initial subdivision grid; and determining the reconstructed grid of the first LOD in the current grid based on the initial subdivision grid and the displacement coefficients of the initial subdivision grid.
[0108] In this disclosure, the base mesh may also be referred to as a "simplified mesh". In some embodiments, the reconstructed base mesh is determined by decoding the base mesh bitstream. Exemplarily, the reconstructed base mesh may be obtained by decoding the base mesh bitstream using a mesh decoder (e.g., EdgeBreaker).
[0109] In some embodiments, after determining the reconstructed grid of the first LOD in the current grid, the reconstructed grid of the first LOD is subdivided to determine the subdivided grid of the second LOD; the bitstream is decoded to determine the displacement coefficients of the subdivided grid of the second LOD; based on the subdivided grid of the second LOD and the displacement coefficients of the subdivided grid of the second LOD, the reconstructed grid of the next LOD in the current grid is determined; and the subdivision operation continues until the reconstructed grid of the Lth LOD in the current grid is determined. The value of L is related to the number of subdivision iterations of the current grid.
[0110] In this embodiment, for the first LOD, the displacement coefficient refers to the difference between the vertex coordinate information of the original mesh and the vertex coordinate information of the initial subdivided mesh. Thus, after decoding to obtain the displacement coefficient of the initial subdivided mesh, corresponding displacement calculations are performed on the vertex coordinate information of the initial subdivided mesh based on this displacement coefficient to obtain the reconstructed mesh of the first LOD, i.e., the reconstructed mesh of LOD1. Then, based on the reconstructed mesh of LOD1, further subdivision is performed to obtain the subdivided mesh on LOD1. Then, based on the subdivided mesh on LOD1 and the corresponding displacement coefficient, the reconstructed mesh of LOD2 can be determined, and so on, until reconstruction is complete.
[0111] In step 103, when the current LOD is the i-th LOD, the displacement coefficient of the first point of the current LOD is determined to be 0; where i is an integer greater than 2; the first point includes the vertex of the reconstructed base mesh corresponding to the current mesh.
[0112] It should be noted that, in the embodiments of this disclosure, the displacement coefficient may include displacement components in one or more directions, such as... Figure 3 As shown, the displacement coefficient includes displacement components in three directions: normal direction, tangent direction, and double tangent direction. The displacement coefficient of the first LOD is calculated relative to the subdivision vertices of the base mesh, while the displacement coefficients of subsequent levels are calculated relative to the subdivision vertices of the reconstructed LOD from the previous LOD, thus enabling recursive subdivision of the displacement coefficients.
[0113] It should be noted that, in this embodiment of the disclosure, if the current LOD is the i-th LOD, where i is an integer greater than 2, that is, the current LOD satisfies that the LOD is greater than 2, then the displacement coefficient of the first point of the current LOD can be determined to be 0.
[0114] It should be noted that, in the embodiments of this disclosure, the first point of the current LOD includes the vertex of the reconstructed base mesh corresponding to the current mesh, that is, the first point can be understood as a point that coincides with or is adjacent to the base point (e.g., PB_1, PB_2, PB_3).
[0115] In other words, in the embodiments of this disclosure, if the first syntax element indicates that the current mesh uses a non-linear subdivision method and the current LOD is greater than 2, then the displacement coefficient of the first point of the current LOD can be directly set to 0, and the displacement coefficient can be used for subsequent mesh reconstruction.
[0116] In step 104, the reconstructed mesh of the next LOD in the current mesh is determined based on the subdivision mesh of the current LOD and the displacement coefficient of the first point of the current LOD.
[0117] It should be noted that, in this embodiment of the disclosure, the reconstructed mesh of the next LOD in the current mesh is determined based on the subdivision mesh of the current LOD and the displacement coefficient of the first point of the current LOD. Specifically, the vertex coordinate information of the subdivision mesh of the current LOD is subjected to corresponding displacement calculation based on the displacement coefficient of the first point to obtain the reconstructed mesh of the next LOD in the current mesh.
[0118] In other words, in this embodiment of the disclosure, the displacement coefficients are recursively applied to the previously reconstructed LOD. Specifically, the displacement coefficients obtained by decoding are added sequentially to each vertex of the subdivided mesh of the current LOD, thereby obtaining the reconstructed mesh of the next LOD.
[0119] It is understood that in the embodiments of this disclosure, when the first syntax element indicates that the current mesh uses a non-linear subdivision method, if the current LOD is greater than 2, then the displacement coefficient of the first point of the current LOD is set to 0, that is, the displacement of the point (the first point) that coincides with or is adjacent to the base point is set to 0. At this time, when the reconstructed mesh is obtained, for the first point, the subdivision mesh of the current LOD is actually subjected to displacement operation with 0.
[0120] In some embodiments, the method may further include: after determining the reconstruction grid of the next LOD in the current grid, using the reconstruction grid of the next LOD as the reconstruction grid of the current LOD, returning to the step of subdividing the reconstruction grid of the current LOD and determining the subdivided grid of the current LOD, until the reconstruction grid of the Lth LOD in the current grid is determined; wherein, the value of L is related to the number of subdivision iterations of the current grid.
[0121] It should also be noted that, in this embodiment of the disclosure, the number of subdivision iterations of the current grid can be indicated by a second syntax element in the bitstream. In one embodiment, the method may include: decoding the bitstream to determine the value of the second syntax element; and determining the number of subdivision iterations of the current grid based on the value of the second syntax element.
[0122] In this embodiment of the disclosure, the second syntax element can be represented by asps_vmc_ext_subdivision_iteration_count. That is, the number of subdivision iterations of the current grid can be the value indicated by asps_vmc_ext_subdivision_iteration_count in the bitstream.
[0123] Additionally, L represents the LOD level corresponding to the current mesh. The value of L can be determined by the number of subdivision iterations of the current mesh, that is, the value of L is equal to the value indicated by asps_vmc_ext_subdivision_iteration_count.
[0124] Furthermore, Figure 17 A flowchart illustrating a decoding method provided in this embodiment of the present disclosure. Figure 2 .like Figure 17 As shown, after step 102, the method may include the following steps.
[0125] In step 105, if the current LOD is the i-th LOD, the bitstream is decoded to determine the displacement coefficient of the second point of the current LOD. The second point does not include the vertices of the reconstructed base mesh corresponding to the current mesh. In other words, the second point is any point in the reconstructed base mesh corresponding to the current mesh, excluding the first point.
[0126] It should be noted that, in this embodiment, if the current LOD is the i-th LOD, where i is an integer greater than 2 (i.e., the current LOD satisfies LOD greater than 2), then the displacement coefficient of the first point of the current LOD can be determined to be 0, while the displacement coefficient of the second point can be obtained by decoding the bitstream. Here, the bitstream can be a displacement bitstream. There can be various specific decoding methods for the displacement bitstream, such as video decoding, entropy decoding, etc. That is, in this embodiment, displacement information can be obtained by decoding using a video decoder or an entropy decoder; no limitation is made here.
[0127] It should be noted that in the embodiments disclosed herein, the second point of the current LOD does not include the vertices of the reconstructed base mesh corresponding to the current mesh. That is, the second point can be understood as a point that is not close to the base point (e.g., PB_1, PB_2, PB_3).
[0128] In other words, in the embodiments of this disclosure, if the first syntax element indicates that the current grid uses a non-linear subdivision method and the number of layers of the current LOD is greater than 2, on the one hand, the displacement coefficient of the first point of the current LOD can be set to 0, and on the other hand, the displacement coefficient of the second point of the current LOD can be determined by decoding the bitstream.
[0129] In step 106, the reconstructed mesh of the next LOD in the current mesh is determined based on the subdivision mesh of the current LOD and the displacement coefficient of the second point of the current LOD.
[0130] It should be noted that, in this embodiment of the disclosure, determining the reconstructed mesh of the next LOD in the current mesh based on the subdivision mesh of the current LOD and the displacement coefficient of the second point of the current LOD may include: performing corresponding displacement calculations on the vertex coordinate information of the subdivision mesh of the current LOD based on the displacement coefficient of the second point to obtain the reconstructed mesh of the next LOD in the current mesh.
[0131] In other words, in this embodiment of the disclosure, the displacement coefficients are recursively applied to the previously reconstructed LOD. Specifically, the displacement coefficients obtained by decoding are added sequentially to each vertex of the subdivided mesh of the current LOD, thereby obtaining the reconstructed mesh of the next LOD.
[0132] Furthermore, in the embodiments of this disclosure, Figure 18 A flowchart illustrating a decoding method provided in this embodiment of the present disclosure. Figure 3 .like Figure 18 As shown, after step 102, the method may include the following steps.
[0133] In step 107, if the current LOD is the second LOD, the bitstream is decoded to determine the shift coefficient of the current LOD.
[0134] It should be noted that, in this embodiment of the disclosure, if the current LOD is the second LOD, i.e., the current LOD is LoD 2, then the displacement coefficient of the current LOD can be obtained by decoding the bitstream. Here, the bitstream can be a displacement bitstream. There can be various specific decoding methods for the displacement bitstream, such as video decoding, entropy decoding, etc. That is to say, in this embodiment of the disclosure, displacement information can be obtained by decoding with a video decoder or by decoding with an entropy decoder, and no limitation is made here.
[0135] In step 108, the reconstructed mesh of the next LOD in the current mesh is determined based on the subdivision mesh of the current LOD and the displacement coefficient of the current LOD.
[0136] It should be noted that, in this embodiment of the disclosure, the reconstructed mesh of the next LOD in the current mesh is determined based on the subdivision mesh of the current LOD and the displacement coefficient of the current LOD. Specifically, the vertex coordinate information of the subdivision mesh of the current LOD is subjected to corresponding displacement calculation based on the displacement coefficient to obtain the reconstructed mesh of the next LOD in the current mesh.
[0137] In other words, in this embodiment of the disclosure, the displacement coefficients are recursively applied to the previously reconstructed LOD. Specifically, the displacement coefficients obtained by decoding are added sequentially to each vertex of the subdivided mesh of the current LOD, thereby obtaining the reconstructed mesh of the next LOD.
[0138] In some embodiments, the method may further include: after determining the reconstruction grid of the next LOD in the current grid, using the reconstruction grid of the next LOD as the reconstruction grid of the current LOD, returning to the step of subdividing the reconstruction grid of the current LOD and determining the subdivided grid of the current LOD, until the reconstruction grid of the Lth LOD in the current grid is determined; wherein, the value of L is related to the number of subdivision iterations of the current grid.
[0139] It should also be noted that, in this embodiment of the disclosure, the number of subdivision iterations of the current grid can be indicated by a second syntax element in the bitstream. In one embodiment, the method may include: decoding the bitstream to determine the value of the second syntax element; and determining the number of subdivision iterations of the current grid based on the value of the second syntax element.
[0140] In this embodiment of the disclosure, the second syntax element can be represented by asps_vmc_ext_subdivision_iteration_count. That is, the number of subdivision iterations of the current grid can be the value indicated by asps_vmc_ext_subdivision_iteration_count in the bitstream.
[0141] Additionally, L represents the LOD level corresponding to the current mesh. The value of L can be determined by the number of subdivision iterations of the current mesh, that is, the value of L is equal to the value indicated by asps_vmc_ext_subdivision_iteration_count.
[0142] Furthermore, in the embodiments of this disclosure, Figure 19 A flowchart illustrating a decoding method provided in this embodiment of the present disclosure. Figure 4 .like Figure 19 As shown, after step 101, the method may include: In step 109, when the first syntax element indicates that the current mesh uses a recursive subdivision method, the reconstructed mesh of the current LOD in the current mesh is determined, and the reconstructed mesh of the current LOD is subdivided to determine the subdivided mesh of the current LOD.
[0143] It should be noted that, in this embodiment of the disclosure, the first syntax element can also be used to indicate whether the current mesh uses a recursive subdivision method. Specifically, when the value of the first syntax element is a first value, it is determined that the first syntax element indicates that the current mesh does not use a subdivision method; when the value of the first syntax element is a second value, it is determined that the first syntax element indicates that the current mesh uses a midpoint subdivision method; when the value of the first syntax element is a third value, it is determined that the first syntax element indicates that the current mesh uses a recursive subdivision method; and when the value of the first syntax element is a fourth value, it is determined that the first syntax element indicates that the current mesh uses a non-linear subdivision method.
[0144] Here, the first, second, third, and fourth values are all different. For example, the first value can be set to 0, the second value can be set to 1, the third value can be set to 2, and the fourth value can be set to 3. That is, based on the different values of the first syntax element, it can be determined whether the current grid uses a recursive subdivision method.
[0145] In one embodiment, if the value of the first syntax element is 0, it can be determined that the current grid does not use any subdivision method, such as midpoint subdivision, recursive subdivision, non-linear subdivision, etc.; if the value of the first syntax element is 1, it can be determined that the current grid uses midpoint subdivision; if the value of the first syntax element is 2, it can be determined that the current grid uses recursive subdivision; if the value of the first syntax element is 3, it can be determined that the current grid uses non-linear subdivision.
[0146] It should also be noted that, in this embodiment of the disclosure, when the current grid uses a recursive subdivision method, the reconstructed grid of the current grid can be obtained by recursively reconstructing at least one LOD. Specifically, after obtaining the reconstructed grid of the current LOD in the current grid, the reconstructed grid of the current LOD can be subdivided to determine the subdivided grid of the current LOD. Then, based on the subdivided grid and the displacement coefficients in the bitstream, the reconstructed grid of the next LOD of the current LOD can be recursively obtained.
[0147] In some embodiments, the reconstructed grid of the first LOD in the current grid is first determined. The method may include: decoding the bitstream to determine the reconstructed base grid; subdividing the reconstructed base grid to determine the initial subdivision grid; decoding the bitstream to determine the displacement coefficients of the initial subdivision grid; and determining the reconstructed grid of the first LOD in the current grid based on the initial subdivision grid and the displacement coefficients of the initial subdivision grid.
[0148] In this disclosure, the base mesh may also be referred to as a "simplified mesh". In some embodiments, the reconstructed base mesh is determined by decoding the base mesh bitstream. Exemplarily, the reconstructed base mesh may be obtained by decoding the base mesh bitstream using a mesh decoder (e.g., EdgeBreaker).
[0149] In this embodiment, for the first LOD, the displacement coefficient refers to the difference between the vertex coordinate information of the original mesh and the vertex coordinate information of the initial subdivided mesh. Thus, after decoding to obtain the displacement coefficient of the initial subdivided mesh, corresponding displacement calculations are performed on the vertex coordinate information of the initial subdivided mesh based on this displacement coefficient to obtain the reconstructed mesh of the first LOD, i.e., the reconstructed mesh of LOD1. Then, based on the reconstructed mesh of LOD1, further subdivision is performed to obtain the subdivided mesh on LOD1. Then, based on the subdivided mesh on LOD1 and the corresponding displacement coefficient, the reconstructed mesh of LOD2 can be determined, and so on, until reconstruction is complete.
[0150] In step 110, the bitstream is decoded to determine the displacement coefficient of the current LOD.
[0151] It should be noted that, in the embodiments of this disclosure, the displacement coefficient may include displacement components in one or more directions, such as... Figure 3 As shown, the displacement coefficient includes displacement components in three directions: normal direction, tangent direction, and double tangent direction. The displacement coefficient of the first LOD is calculated relative to the subdivision vertices of the base mesh, while the displacement coefficients of subsequent levels are calculated relative to the subdivision vertices of the reconstructed LOD from the previous LOD, thus enabling recursive subdivision of the displacement coefficients.
[0152] It should also be noted that, in this embodiment of the disclosure, the displacement coefficient of the current LOD is obtained by decoding the bitstream. Here, the bitstream can be a displacement bitstream. There can be various specific decoding methods for the displacement bitstream, such as video decoding, entropy decoding, etc. That is to say, in this embodiment of the disclosure, displacement information can be obtained by decoding with a video decoder or by decoding with an entropy decoder, and no limitation is made here.
[0153] In some embodiments, the method for determining the shift coefficients of the current LOD involved in any of steps 105, 107, and 110 may specifically include: decoding the bitstream to determine the decoded shift coefficients of the current LOD; dequantizing the decoded shift coefficients of the current LOD according to the quantization parameters of the current LOD to determine the dequantized shift coefficients of the current LOD; and performing an inverse wavelet transform on the dequantized shift coefficients of the current LOD to determine the shift coefficients of the current LOD.
[0154] It should be noted that, in this embodiment of the disclosure, after decoding to obtain the decoded shift coefficients of the current LOD, the decoded shift coefficients of the current LOD can be preprocessed to determine the shift coefficients of the current LOD. The preprocessing may include inverse quantization, inverse wavelet transform, and other similar processes.
[0155] In one embodiment, the decoding shift coefficients of the current LOD are preprocessed to determine the shift coefficients of the current LOD. Specifically, the quantization parameters of the current LOD are determined; the decoding shift coefficients of the current LOD are dequantized according to the quantization parameters of the current LOD to determine the dequantized shift coefficients of the current LOD; and the dequantized shift coefficients of the current LOD are subjected to inverse wavelet transform to determine the shift coefficients of the current LOD.
[0156] It should be noted that in this embodiment, inverse quantization is the reverse process of quantization, used to convert quantized fixed-point numbers into floating-point numbers; while inverse wavelet transform is the reverse process of wavelet transform, used to restore the signal in the wavelet domain to the original time domain, thereby obtaining the displacement coefficient of the current LOD.
[0157] It should also be noted that in this embodiment, the quantizer parameter (QP) reflects the spatial detail compression. A smaller value indicates finer quantization, higher image quality, and a longer bitstream. If QP is small, most details are preserved; if QP is large, some details are lost, the bitrate decreases, but image distortion increases and quality deteriorates. Specifically, QP is the sequence number of the quantization step size Qstep. A QP value of 0 indicates the finest quantization; conversely, a QP value of 51 indicates coarser quantization.
[0158] In one possible implementation, for the quantization parameters of the current LOD, the method may include: decoding the bitstream to determine the quantization parameters of the current LOD.
[0159] In another possible implementation, for the quantization parameters of the current LOD, the method may include: determining the quantization parameters of the previous LOD; decoding the bitstream to determine the quantization parameter increment of the current LOD; and determining the quantization parameters of the current LOD based on the quantization parameters of the previous LOD and the quantization parameter increment.
[0160] In other words, the encoder can directly write the quantization parameters into the bitstream, so that the decoder can obtain the corresponding quantization parameters through decoding; or the encoder can write the quantization parameter increment into the bitstream, and then the decoder can obtain the corresponding quantization parameters based on the quantization parameter increment obtained from decoding and the quantization parameters of the previous LOD.
[0161] For example, assuming the quantization parameter of the current LOD can be represented by QP(i), the quantization parameter of the previous LOD can be represented by QP(i-1), and the quantization parameter increment can be represented by ΔQP, then QP(i) = QP(i-1) + ΔQP. For the quantization parameter of the first LOD, the corresponding quantization parameter QP(1) can be directly written into the bitstream.
[0162] It should be noted that, in this embodiment, a reference quantization parameter can also be set at both the encoding and decoding ends, and then the quantization parameter increment between the quantization parameter of each LOD and the reference quantization parameter can be written into the bitstream. In this way, after the decoding end determines the quantization parameter increment of the current LOD by decoding the bitstream, it can determine the quantization parameter of the current LOD based on the quantization parameter increment of the current LOD and the reference quantization parameter, thereby saving signaling overhead for decoding the quantization parameter.
[0163] In some embodiments, decoding the bitstream and determining the decoding displacement coefficients of the current LOD may include: decoding the bitstream and determining a two-dimensional image; extracting displacement coefficients from the two-dimensional image according to a preset filling method to obtain the decoding displacement coefficients of the current LOD.
[0164] In this embodiment of the disclosure, the decoding shift coefficient of the current LOD can be determined by decoding the shift bitstream. Additionally, the preset padding method includes either forward padding or reverse padding. The preset padding method can be determined by setting the same padding method at both the decoding and encoding ends, or it can be indicated by a third syntax element in the bitstream.
[0165] In one embodiment, the method may include: decoding the bitstream to determine the value of a third syntax element; and determining a preset padding method based on the value of the third syntax element.
[0166] In this embodiment of the disclosure, the third syntax element can be represented by dmsps_packing_order. That is, the preset padding method can be the padding method indicated by dmsps_packing_order in the bitstream.
[0167] Thus, in this embodiment, the displacement bitstream can be decoded by a displacement decoder. If the encoder compresses the displacement using video encoding, the decoder decodes it using a corresponding video decoder and recovers it from the two-dimensional image in the corresponding order according to a preset padding method. Then, it performs operations such as inverse quantization and inverse wavelet transform to recover the displacement coefficients consistent with those of the encoder. Otherwise, if the encoder uses entropy encoding for the displacement coefficients, the decoder can directly perform entropy decoding, followed by subsequent inverse quantization, inverse wavelet transform, and other operations to obtain the displacement coefficients of the current LOD.
[0168] Step 1011: Determine the reconstructed mesh of the next LOD in the current mesh based on the subdivision mesh of the current LOD and the displacement coefficient of the current LOD.
[0169] It should be noted that, in this embodiment of the disclosure, the reconstructed mesh of the next LOD in the current mesh is determined based on the subdivision mesh of the current LOD and the displacement coefficient of the current LOD. Specifically, the vertex coordinate information of the subdivision mesh of the current LOD is subjected to corresponding displacement calculation based on the displacement coefficient to obtain the reconstructed mesh of the next LOD in the current mesh.
[0170] In other words, in this embodiment of the disclosure, the displacement coefficients are recursively applied to the previously reconstructed LOD. Specifically, the displacement coefficients obtained by decoding are added sequentially to each vertex of the subdivided mesh of the current LOD, thereby obtaining the reconstructed mesh of the next LOD.
[0171] In some embodiments, the method may further include: after determining the reconstruction grid of the next LOD in the current grid, using the reconstruction grid of the next LOD as the reconstruction grid of the current LOD, returning to the step of subdividing the reconstruction grid of the current LOD and determining the subdivided grid of the current LOD, until the reconstruction grid of the Lth LOD in the current grid is determined; wherein, the value of L is related to the number of subdivision iterations of the current grid.
[0172] It should also be noted that, in this embodiment of the disclosure, the number of subdivision iterations of the current grid can be indicated by a second syntax element in the bitstream. In one embodiment, the method may include: decoding the bitstream to determine the value of the second syntax element; and determining the number of subdivision iterations of the current grid based on the value of the second syntax element.
[0173] In this embodiment of the disclosure, the second syntax element can be represented by asps_vmc_ext_subdivision_iteration_count. That is, the number of subdivision iterations of the current grid can be the value indicated by asps_vmc_ext_subdivision_iteration_count in the bitstream.
[0174] Additionally, L represents the LOD level corresponding to the current mesh. The value of L can be determined by the number of subdivision iterations of the current mesh, that is, the value of L is equal to the value indicated by asps_vmc_ext_subdivision_iteration_count.
[0175] Thus, in this embodiment of the disclosure, for the case where the first syntax element indicates that the current grid uses a recursive subdivision method, such as... Figure 20As shown, first, the base mesh is subdivided to obtain an initial subdivided mesh; after decoding to obtain the displacement coefficients of the initial subdivided mesh, corresponding displacement operations are performed on the vertex coordinate information of the initial subdivided mesh according to the displacement coefficients to obtain the reconstructed mesh of the first LOD, that is, the reconstructed mesh of LOD1. Then, based on the reconstructed mesh of LOD1, subdivision is performed to obtain the subdivided mesh on LOD1; then, after decoding to obtain the displacement coefficients of LOD1, the reconstructed mesh of LOD2 can be determined according to the subdivided mesh on LOD1 and the displacement coefficients of LOD1, and so on until the reconstructed mesh of LOD L is obtained, indicating that the current mesh reconstruction is completed. Among them, in Figure 20 the black solid line (composed of vertices PB_1, PB_2, and PB_3) represents the base mesh, the black dashed line represents the subdivided mesh, the first thick solid line is LOD1 to which displacement is applied, and the second thick solid line is LOD2 to which displacement is applied.
[0176] In some embodiments, the detailed process of recursive subdivision is as Figure 21 shown, and this detailed process may include the following steps.
[0177] In step S1901, first, the original mesh is simplified to obtain the base mesh. In step S1902, the base mesh is quantized. In step S1903, the quantized base mesh is encoded. In step S1904, the code stream is parsed to decode the base network from the code stream to obtain the reconstructed base mesh. In step S1905, n = 0 is initialized, and the reconstructed base mesh is used as a temporary mesh for mesh subdivision. In step S1906, the displacement coefficients are calculated according to the subdivided mesh and the original mesh. In step S1907, the temporary mesh is updated according to the displacement coefficients and the subdivided mesh, and the displacement coefficients are saved to the memory. In step S1909, it is judged whether n is less than L - 1. If the judgment result of step S1909 is yes, that is, n < L - 1, then n = n + 1 (S1910), and then steps S1905 to S1909 are continued. If the judgment result of step S1909 is no, that is, n < L - 1 does not hold, it indicates that the subdivision is completed. Finally, the displacement coefficients are encoded into the code stream.
[0178] Thus, in the embodiments of the present disclosure, for the case where the first syntax element indicates that the current mesh uses a non - linear subdivision method, such as Figure 22As shown, the base mesh is first subdivided to obtain an initial subdivided mesh. After decoding the displacement coefficients of the initial subdivided mesh, the vertex coordinates of the initial subdivided mesh are subjected to corresponding displacement calculations based on these displacement coefficients to obtain the reconstructed mesh of the first LOD, i.e., the reconstructed mesh of LOD1. Then, the reconstructed mesh of LOD1 is subdivided to obtain the subdivided mesh on LOD1. After decoding the displacement coefficients of LOD1, the reconstructed mesh of LOD2 can be determined based on the subdivided mesh on LOD1 and the displacement coefficients of LOD1. For the reconstructed meshes from LOD3 to LOD L, such as LODi (i is greater than a preset value, which can be, for example, 2), the displacement coefficients of the adjacent base grid vertices (the first point) in LOD i can be set to 0, while the displacement coefficients of other points (the second point) can still be decoded. Based on the subdivided mesh on LOD i and the displacement coefficients of LOD i, the reconstructed mesh of the next LOD can be determined. This process continues until the reconstructed mesh of LOD L is obtained, indicating that the current mesh reconstruction is complete. Figure 22 In the diagram, the solid black lines (composed of vertices PB_1, PB_2, and PB_3) represent the base mesh, the dashed black lines represent the subdivision mesh, the first bold solid line is the LOD1 with applied displacement, and the second bold solid line is the LOD2 with applied displacement. Although the preset value can be, for example, 2, the embodiments are not limited to this. In various embodiments, the preset value can be 2, 3, 4, ..., or any other integer.
[0179] In some embodiments, the detailed process of nonlinear subdivision is as follows: Figure 23 As shown, the detailed process may include the following steps.
[0180] In step S1901, the original mesh is simplified to obtain a base mesh. In step S1902, the base mesh is quantized. In step S1903, the quantized base mesh is encoded. In step S1904, the code stream is parsed to decode the base network from the code stream to obtain the reconstructed base mesh. In step S1905, n = 0 is initialized, and the reconstructed base mesh is used as a temporary mesh for mesh subdivision. In step S1906, the displacement coefficients are calculated according to the subdivided mesh and the original mesh. In step S1911, in order to remove redundancy, the displacement coefficients of adjacent base grid vertices are deleted. In step S1907, the temporary mesh is updated according to the displacement coefficients and the subdivided mesh. In step S1908, the other displacement coefficients are saved to the memory. In step S1909, it is judged whether n is less than L - 1. If the judgment result in step S1909 is yes, that is, n < L - 1, then n = n + 1 (S1910), and then continue to execute S1905 to S1909. If the judgment result in step S1909 is no, that is, n < L - 1 does not hold, it means that the subdivision is completed. Finally, the other displacement coefficients also need to be encoded into the code stream.
[0181] That is to say, in the embodiments of the present disclosure, when the multi - LOD (LoD) is greater than 2 and asps_vdmc_ext_subdivision_method is 3, the displacements belonging to the edges containing the vertices of the base mesh are inferred to be equal to zero, and these displacements are added to the corresponding positions in the displacement list for base reconstruction.
[0182] It can also be understood that when the current mesh does not use the recursive subdivision method, the current mesh can use the mid - point subdivision method at this time. In some embodiments, as Figure 24 shown, the method may include the following steps.
[0183] In step 201, when the first syntax element indicates that the current mesh uses the mid - point subdivision method, the code stream is decoded to determine the reconstructed base mesh.
[0184] In step 202, the reconstructed base mesh is subdivided to determine the subdivided meshes of at least one LOD in the current mesh.
[0185] In step 203, the code stream is decoded to determine the displacement coefficients of at least one LOD in the current mesh.
[0186] In step 204, according to the subdivided meshes of at least one LOD and the displacement coefficients of at least one LOD in the current mesh, the reconstructed meshes of at least one LOD in the current mesh are determined.
[0187] It should be noted that, in this embodiment, the number of at least one LOD layer is related to the number of subdivision iterations of the current grid. Here, L represents the number of at least one LOD layer, that is, the LOD layer corresponding to the current grid, which can be equal to the value indicated by asps_vmc_ext_subdivision_iteration_count in the bitstream.
[0188] It should also be noted that, in the embodiments disclosed herein, such as Figure 5 and Figure 6 As shown, when the current mesh uses the midpoint subdivision method, the displacement coefficient of each LOD is obtained by displacement calculation using the vertex coordinate information of the subdivided mesh and the vertex coordinate information of the original mesh, rather than recursively obtained based on the previously reconstructed LOD.
[0189] This disclosure provides a decoding method, specifically a recursive subdivision method for dynamic meshes. In this embodiment, by adding a first syntax element to indicate that the current mesh uses a non-linear subdivision method, during the decoding stage, the displacement coefficients of vertices near the base layer are inferred to be equal to 0. Therefore, in the subsequent recursive application of the displacement coefficients to the previously reconstructed LOD, the redundancy problem of displacement coefficients at higher levels can be improved, saving the encoding bits of the displacement coefficients and thus improving encoding and decoding efficiency.
[0190] In another embodiment of this disclosure, Figure 25 A flowchart illustrating an encoding method provided in this embodiment of the disclosure. Figure 1 .like Figure 25 As shown, the method may include the following steps.
[0191] In step 301, when the current grid uses a non-linear subdivision method, the value of the first syntax element is determined and written into the code stream. The reconstructed grid of the current LOD in the current grid is determined and the reconstructed grid of the current LOD is subdivided to determine the subdivision grid of the current LOD.
[0192] It should be noted that, in the embodiments disclosed herein, the encoding method can be a grid subdivision method, specifically a recursive subdivision method for dynamic grid coding, which can improve encoding and decoding efficiency.
[0193] It should also be noted that, in this embodiment of the disclosure, Video-based Dynamic Mesh Coding (VDMC) is a standard for compressing 3D meshes, which mainly utilizes the existing V3C standard to compress 3D meshes. In this embodiment of the disclosure, the subdivision method shares functionality across all LODs and is defined by two syntax elements in the Atlas sequence parameter set VDMC extended RBSP syntax structure: asps_vdmc_ext_subdivision_method and asps_vdmc_ext_subdivision_iteration_count, as shown in Table 1 above.
[0194] For mesh subdivision, due to the specific nature of subdivision, higher-level LODs often degenerate into "0" displacements, introducing significant redundancy in signaling and coding information. Therefore, to effectively encode the geometric components of the mesh representation of volumetric content, redundant displacements, such as edges of the base mesh and inherited values from previous LODs, can be removed. This disclosure proposes a novel adaptive subdivision scheme where, at higher LODs, edges adjacent to the base point are always equal to 0.
[0195] In this embodiment of the disclosure, a first syntax element can be set to indicate whether the current mesh uses a non-linear subdivision method. This first syntax element can be represented by `asps_vdmc_ext_subdivision_method`, which indicates the mesh subdivision method. For example, as shown in Table 2, if the value of the first syntax element is 0, it indicates that the current mesh does not use a subdivision method; if the value of the first syntax element is 1, it indicates that the current mesh uses a midpoint subdivision method.
[0196] It is understood that in this embodiment of the disclosure, based on the aforementioned Table 2, new values are added to the first syntax element so that the first syntax element can be used to indicate whether the current mesh uses a nonlinear subdivision method. Here, the nonlinear subdivision method can create subdivisions similar to those in related techniques, but the displacements adjacent to the base points (e.g., PB_1, PB_2, and PB_3) are inferred to be equal to 0. In other words, for each LOD, the displacement is calculated based on the subdivision vertices in the previously reconstructed LOD, thus enabling the displacements to be recursively used in the previously reconstructed LOD. Therefore, this adaptive subdivision method is called a "recursive subdivision method." Taking midpoint subdivision as an example, this recursive subdivision method can be called a midpoint recursive subdivision method.
[0197] In one possible implementation, as shown in Table 5 above, a new asps_vdmc_ext_subdivision_method equal to 2 and 3 is added. This new asps_vdmc_ext_subdivision_method will create the same subdivision as the related techniques, but the shifts adjacent to the base points (e.g., PB_1, PB_2, and PB_3) are inferred to be equal to zero, thereby saving the coded bits of the shifts.
[0198] It should be noted that, in this embodiment of the disclosure, the first syntax element is used to indicate whether the current grid uses a non-linear subdivision method. In some embodiments, the method may include: determining the value of the first syntax element; encoding the value of the first syntax element and writing the encoded bits into the bitstream.
[0199] It should be noted that, in the embodiments of this disclosure, if the current grid uses a non-linear subdivision method, then the value of the first syntax element can be determined to be the fourth value.
[0200] In one embodiment, when the current grid does not use a subdivision method, the value of the first syntax element is determined to be a first value; when the current grid uses a midpoint subdivision method, the value of the first syntax element is determined to be a second value; when the current grid uses a recursive subdivision method, the value of the first syntax element is determined to be a third value; and when the current grid uses a non-linear subdivision method, the value of the first syntax element is determined to be a fourth value.
[0201] Here, the first, second, third, and fourth values are all different. For example, the first value can be set to 0, the second value can be set to 1, the third value can be set to 2, and the fourth value can be set to 3. That is, based on the different values of the first syntax element, it can be determined whether the current mesh uses a non-linear subdivision method.
[0202] In one embodiment, if the value of the first syntax element is 0, it can be determined that the current grid does not use any subdivision method, such as midpoint subdivision, recursive subdivision, non-linear subdivision, etc.; if the value of the first syntax element is 1, it can be determined that the current grid uses midpoint subdivision; if the value of the first syntax element is 2, it can be determined that the current grid uses recursive subdivision; if the value of the first syntax element is 3, it can be determined that the current grid uses non-linear subdivision.
[0203] It should also be noted that, in this embodiment of the disclosure, when the current grid uses a nonlinear subdivision method, the reconstructed grid of the current grid can be obtained by recursively reconstructing at least one LOD. Specifically, after obtaining the reconstructed grid of the current LOD in the current grid, the reconstructed grid of the current LOD can be subdivided to determine the subdivided grid of the current LOD. Then, combined with the set displacement coefficient or the displacement coefficient in the bitstream, the reconstructed grid of the next LOD of the current LOD can be recursively obtained.
[0204] In some embodiments, the reconstructed mesh of the first LOD in the current mesh is first determined. The method may include: determining the base mesh of the current mesh; encoding and decoding the base mesh to determine the reconstructed base mesh; subdividing the reconstructed base mesh to determine the initial subdivision mesh; determining the displacement coefficient of the initial subdivision mesh; and determining the reconstructed mesh of the first LOD in the current mesh based on the initial subdivision mesh and the displacement coefficient of the initial subdivision mesh.
[0205] In this embodiment of the disclosure, the base mesh may also be referred to as a "simplified mesh". In some embodiments, determining the base mesh of the current mesh may include: determining the original mesh of the current mesh; and performing downsampling processing on the original mesh to obtain the base mesh.
[0206] It should also be noted that, in this embodiment of the disclosure, the current input mesh can be referred to as the original mesh. By downsampling the input mesh, i.e., simplifying the input mesh, the base mesh can be obtained.
[0207] In some embodiments, the method may further include: encoding the base grid and writing the resulting encoded bits into the bitstream.
[0208] For example, the bitstream here can refer to the base mesh bitstream. Then, a mesh encoder (such as EdgeBreaker) can write the base mesh into the base mesh bitstream.
[0209] In some embodiments, the method for determining the displacement coefficient of the initial subdivision mesh may include: performing displacement calculations on the vertex coordinate information of the initial subdivision mesh and the vertex coordinate information of the original mesh to determine the displacement coefficient of the initial subdivision mesh.
[0210] In some embodiments, after determining the reconstructed grid of the first LOD in the current grid, the reconstructed grid of the first LOD is subdivided to determine the subdivided grid of the second LOD; the bitstream is decoded to determine the displacement coefficients of the subdivided grid of the second LOD; based on the subdivided grid of the second LOD and the displacement coefficients of the subdivided grid of the second LOD, the reconstructed grid of the next LOD in the current grid is determined; and the subdivision operation continues until the reconstructed grid of the Lth LOD in the current grid is determined. The value of L is related to the number of subdivision iterations of the current grid.
[0211] In this embodiment, for the first LOD, the displacement coefficient refers to the difference between the vertex coordinate information of the original mesh and the vertex coordinate information of the initial subdivided mesh. Thus, after decoding to obtain the displacement coefficient of the initial subdivided mesh, corresponding displacement calculations are performed on the vertex coordinate information of the initial subdivided mesh based on this displacement coefficient to obtain the reconstructed mesh of the first LOD, i.e., the reconstructed mesh of LOD1. Then, the reconstructed mesh of LOD1 is subdivided to obtain the subdivided mesh on LOD1. Based on the subdivided mesh and the corresponding displacement coefficient, the reconstructed mesh of LOD2 can be determined, and so on, until reconstruction is complete.
[0212] In step 302, when the current LOD is the i-th LOD, the displacement coefficient of the first point of the current LOD is determined to be 0; where i is an integer greater than 2; the first point includes the vertices of the reconstructed base mesh corresponding to the current mesh.
[0213] It should be noted that, in the embodiments of this disclosure, the displacement coefficient may include displacement components in one or more directions, such as... Figure 3 As shown, the displacement coefficient includes displacement components in three directions: normal direction, tangent direction, and double tangent direction. The displacement coefficient of the first LOD is calculated relative to the subdivision vertices of the base mesh, while the displacement coefficients of subsequent levels are calculated relative to the subdivision vertices of the reconstructed LOD from the previous LOD, thus enabling recursive subdivision of the displacement coefficients.
[0214] It should be noted that, in this embodiment of the disclosure, if the current LOD is the i-th LOD, where i is an integer greater than 2, that is, the current LOD satisfies that the LOD is greater than 2, then the displacement coefficient of the first point of the current LOD can be determined to be 0.
[0215] It should be noted that, in the embodiments of this disclosure, the first point of the current LOD includes the vertex of the reconstructed base mesh corresponding to the current mesh, that is, the first point can be understood as a point that coincides with or is adjacent to the base point (e.g., PB_1, PB_2, PB_3).
[0216] In other words, in the embodiments of this disclosure, if the first syntax element indicates that the current mesh uses a non-linear subdivision method and the current LOD is greater than 2, then the displacement coefficient of the first point of the current LOD can be directly set to 0, and the displacement coefficient can be used for subsequent mesh reconstruction.
[0217] In step 303, the reconstructed mesh of the next LOD in the current mesh is determined based on the subdivision mesh of the current LOD and the displacement coefficient of the first point of the current LOD.
[0218] It should be noted that, in this embodiment of the disclosure, determining the reconstructed mesh of the next LOD in the current mesh based on the subdivision mesh of the current LOD and the displacement coefficient of the first point of the current LOD may include: performing corresponding displacement calculations on the vertex coordinate information of the subdivision mesh of the current LOD based on the displacement coefficient of the first point to obtain the reconstructed mesh of the next LOD in the current mesh.
[0219] In other words, in this embodiment of the disclosure, the displacement coefficients are recursively applied to the previously reconstructed LOD. Specifically, the corresponding displacement coefficients are added to each vertex of the subdivided mesh of the current LOD in sequence, so as to obtain the reconstructed mesh of the next LOD.
[0220] It is understood that in the embodiments of this disclosure, when the first syntax element indicates that the current mesh uses a non-linear subdivision method, if the number of layers of the current LOD is greater than 2, then the displacement coefficient of the first point of the current LOD is set to 0, that is, the displacement of the point (the first point) that coincides with or is adjacent to the base point is set to 0. At this time, when the reconstructed mesh is obtained, for the first point, the subdivision mesh of the current LOD is actually subjected to the corresponding displacement operation with 0.
[0221] In some embodiments, the method may further include: after determining the reconstruction grid of the next LOD in the current grid, using the reconstruction grid of the next LOD as the reconstruction grid of the current LOD, returning to the step of subdividing the reconstruction grid of the current LOD and determining the subdivided grid of the current LOD, until the reconstruction grid of the Lth LOD in the current grid is determined; wherein, the value of L is related to the number of subdivision iterations of the current grid.
[0222] It should also be noted that, in this embodiment of the disclosure, the number of subdivision iterations of the current grid can be indicated by a second syntax element in the bitstream. In one embodiment, the method may include: decoding the bitstream to determine the value of the second syntax element; and determining the number of subdivision iterations of the current grid based on the value of the second syntax element.
[0223] In this embodiment of the disclosure, the second syntax element can be represented by asps_vmc_ext_subdivision_iteration_count. That is, the number of subdivision iterations of the current grid can be the value indicated by asps_vmc_ext_subdivision_iteration_count in the bitstream.
[0224] Additionally, L represents the LOD level corresponding to the current mesh. The value of L can be determined by the number of subdivision iterations of the current mesh, that is, the value of L is equal to the value indicated by asps_vmc_ext_subdivision_iteration_count.
[0225] Furthermore, in the embodiments of this disclosure, Figure 26 A flowchart illustrating an encoding method provided in this embodiment of the disclosure. Figure 2 .like Figure 26 As shown, after step 301, the method may include the following steps.
[0226] In step 304, if the current LOD is the i-th LOD, the displacement coefficient of the second point of the current LOD is determined and written into the bitstream. The second point does not include the vertices of the reconstructed base mesh corresponding to the current mesh. In other words, the second point is any point in the reconstructed base mesh corresponding to the current mesh, excluding the first point.
[0227] It should be noted that, in this embodiment, if the current LOD is the i-th LOD, where i is an integer greater than 2 (i.e., the current LOD is greater than 2), then the displacement coefficient of the first point of the current LOD can be set to 0, while the displacement coefficient of the second point can be obtained through corresponding displacement operations. Then, the displacement coefficient of the second point can be written into the bitstream. Here, the bitstream can be a displacement bitstream. There can be various specific encoding methods for the displacement bitstream, such as video encoding, entropy encoding, etc. That is, in this embodiment, displacement information can be written into the displacement bitstream using a video encoder or an entropy encoder; no limitation is made here.
[0228] In some embodiments, determining the displacement coefficient of the second point of the current LOD may include: performing displacement calculations on the vertex coordinate information of the subdivided mesh of the current LOD and the vertex coordinate information of the original mesh to determine the displacement coefficient of the second point of the current LOD.
[0229] Furthermore, in some embodiments, the method may further include: preprocessing the displacement coefficient of the second point of the current LOD to determine the quantized displacement coefficient of the second point of the current LOD; encoding the quantized displacement coefficient of the second point of the current LOD and writing the obtained encoded bits into the bitstream.
[0230] It should be noted that, in the embodiments disclosed herein, the second point of the current LOD does not include the vertices of the reconstructed base mesh corresponding to the current mesh. In other words, the second point is any point in the reconstructed base mesh corresponding to the current mesh other than the first point. That is, the second point can be understood as an edge that is not adjacent to the base point (e.g., PB_1, PB_2, PB_3).
[0231] In other words, in the embodiments of this disclosure, if the current mesh uses a non-linear subdivision method and the current LOD is greater than 2, the displacement coefficient of the first point of the current LOD can be set to 0, and the displacement coefficient of the second point of the current LOD can be determined by calculation and encoded.
[0232] In step 305, the reconstructed mesh of the next LOD in the current mesh is determined based on the subdivision mesh of the current LOD and the displacement coefficient of the second point of the current LOD.
[0233] It should be noted that, in this embodiment of the disclosure, the reconstructed mesh of the next LOD in the current mesh is determined based on the subdivision mesh of the current LOD and the displacement coefficient of the second point of the current LOD. Specifically, the vertex coordinate information of the subdivision mesh of the current LOD is subjected to corresponding displacement calculation based on the displacement coefficient of the second point to obtain the reconstructed mesh of the next LOD in the current mesh.
[0234] In other words, in this embodiment of the disclosure, the displacement coefficients are recursively applied to the previously reconstructed LOD layer. Specifically, the corresponding displacement coefficients are added to each vertex of the subdivided mesh of the current LOD in sequence, so as to obtain the reconstructed mesh of the next LOD.
[0235] Furthermore, in the embodiments of this disclosure, Figure 27 A flowchart illustrating an encoding method provided in this embodiment of the disclosure. Figure 3 .like Figure 27 As shown, after step 301, the method may include the following steps.
[0236] In step 306, if the current LOD is the second LOD, the displacement coefficient of the current LOD is determined and written into the bitstream.
[0237] It should be noted that, in this embodiment of the disclosure, if the current LOD is the second LOD, i.e., the current LOD is LOD 2, then the displacement coefficient of the current LOD can be determined by displacement operation, and the displacement coefficient of the current LOD can be written into the bitstream. Here, the bitstream can be a displacement bitstream.
[0238] There can be various specific encoding methods for the displacement bitstream, such as video encoding, entropy encoding, etc. That is to say, in the embodiments of this disclosure, displacement information can be written into the displacement bitstream by a video encoder or by an entropy encoder, and no limitation is made here.
[0239] In some embodiments, determining the displacement coefficient of the current LOD may include: performing displacement calculations on the vertex coordinate information of the subdivided mesh of the current LOD and the vertex coordinate information of the original mesh to determine the displacement coefficient of the current LOD.
[0240] Furthermore, in some embodiments, the method may further include: preprocessing the displacement coefficients of the current LOD to determine the quantization displacement coefficients of the current LOD; encoding the quantization displacement coefficients of the current LOD and writing the obtained encoded bits into the bitstream.
[0241] In step 307, the reconstructed mesh of the next LOD in the current mesh is determined based on the subdivision mesh of the current LOD and the displacement coefficient of the current LOD.
[0242] It should be noted that, in this embodiment of the disclosure, determining the reconstructed mesh of the next LOD in the current mesh based on the subdivision mesh of the current LOD and the displacement coefficient of the current LOD may include: performing corresponding displacement calculations on the vertex coordinate information of the subdivision mesh of the current LOD according to the displacement coefficient to obtain the reconstructed mesh of the next LOD in the current mesh.
[0243] In other words, in this embodiment of the disclosure, the displacement coefficients are recursively applied to the previously reconstructed LOD. Specifically, the displacement coefficients obtained by decoding are added sequentially to each vertex of the subdivided mesh of the current LOD, thereby obtaining the reconstructed mesh of the next LOD.
[0244] In some embodiments, the method may further include: after determining the reconstruction grid of the next LOD in the current grid, using the reconstruction grid of the next LOD as the reconstruction grid of the current LOD, returning to the step of subdividing the reconstruction grid of the current LOD and determining the subdivided grid of the current LOD, until the reconstruction grid of the Lth LOD in the current grid is determined; wherein, the value of L is related to the number of subdivision iterations of the current grid.
[0245] It should also be noted that, in this embodiment of the disclosure, the number of subdivision iterations of the current grid can be indicated by a second syntax element in the bitstream. In one embodiment, the method may include: decoding the bitstream to determine the value of the second syntax element; and determining the number of subdivision iterations of the current grid based on the value of the second syntax element.
[0246] In this embodiment of the disclosure, the second syntax element can be represented by asps_vmc_ext_subdivision_iteration_count. That is, the number of subdivision iterations of the current grid can be the value indicated by asps_vmc_ext_subdivision_iteration_count in the bitstream.
[0247] Additionally, L represents the LOD level corresponding to the current mesh. The value of L can be determined by the number of subdivision iterations of the current mesh, that is, the value of L is equal to the value indicated by asps_vmc_ext_subdivision_iteration_count.
[0248] Furthermore, in the embodiments of this disclosure, Figure 28 A flowchart illustrating an encoding method provided in this embodiment of the disclosure. Figure 4 .like Figure 28 As shown, the method may include the following steps.
[0249] In step 308, when the current grid uses the recursive subdivision method, the value of the first syntax element is determined and written into the code stream. The reconstructed grid of the current LOD in the current grid is determined and the reconstructed grid of the current LOD is subdivided to determine the subdivided grid of the current LOD.
[0250] In this embodiment of the disclosure, a first syntax element can also be set to indicate whether the current mesh uses a recursive subdivision method. This first syntax element can be represented by `asps_vdmc_ext_subdivision_method`, which indicates the mesh subdivision method. For example, as shown in Table 2, if the value of the first syntax element is 0, it indicates that the current mesh does not use a subdivision method; if the value of the first syntax element is 1, it indicates that the current mesh uses a midpoint subdivision method.
[0251] It is understood that in this embodiment of the disclosure, based on the aforementioned Table 2, new values are added to the first syntax element so that the first syntax element can be used to indicate whether the current mesh uses a recursive subdivision method. Here, the recursive subdivision method may create subdivisions identical to those in related techniques, but the displacements adjacent to the base points (e.g., PB_1, PB_2, and PB_3) are inferred to be equal to 0. In other words, for each LOD, the displacement is calculated based on the subdivision vertices in the previously reconstructed LOD, thus enabling the displacements to be recursively used in the previously reconstructed LOD. Therefore, this adaptive subdivision method is called a "recursive subdivision method." Taking midpoint subdivision as an example, this recursive subdivision method can be called a midpoint recursive subdivision method.
[0252] In one possible implementation, as shown in Table 5 above, a new asps_vdmc_ext_subdivision_method equal to 2 and 3 is added. This new asps_vdmc_ext_subdivision_method will create the same subdivision as the related techniques, but the shifts adjacent to the base points (e.g., PB_1, PB_2, and PB_3) are inferred to be equal to zero, thereby saving the coded bits of the shifts.
[0253] It should be noted that, in this embodiment of the disclosure, the first syntax element is used to indicate whether the current grid uses a recursive subdivision method. In some embodiments, the method may include: determining the value of the first syntax element; encoding the value of the first syntax element and writing the encoded bits into the bitstream.
[0254] It should be noted that, in the embodiments disclosed herein, if the current grid uses a recursive subdivision method, then the value of the first syntax element can be determined to be the third value.
[0255] In one embodiment, when the current grid does not use a subdivision method, the value of the first syntax element is determined to be a first value; when the current grid uses a midpoint subdivision method, the value of the first syntax element is determined to be a second value; when the current grid uses a recursive subdivision method, the value of the first syntax element is determined to be a third value; and when the current grid uses a non-linear subdivision method, the value of the first syntax element is determined to be a fourth value.
[0256] Here, the first, second, third, and fourth values are all different. For example, the first value can be set to 0, the second value can be set to 1, the third value can be set to 2, and the fourth value can be set to 3. That is, based on the different values of the first syntax element, it can be determined whether the current mesh uses a non-linear subdivision method.
[0257] In one embodiment, if the value of the first syntax element is 0, it can be determined that the current grid does not use any subdivision method, such as midpoint subdivision, recursive subdivision, non-linear subdivision, etc.; if the value of the first syntax element is 1, it can be determined that the current grid uses midpoint subdivision; if the value of the first syntax element is 2, it can be determined that the current grid uses recursive subdivision; if the value of the first syntax element is 3, it can be determined that the current grid uses non-linear subdivision.
[0258] It should also be noted that, in this embodiment of the disclosure, when the current grid uses a non-linear subdivision method, the reconstructed grid of the current grid can be obtained by recursively reconstructing at least one LOD. Specifically, after obtaining the reconstructed grid of the current LOD in the current grid, the reconstructed grid of the current LOD can be subdivided to determine the subdivided grid of the current LOD. Then, based on the subdivided grid and the set displacement coefficient or the displacement coefficient in the bitstream, the reconstructed grid of the next LOD of the current LOD can be recursively obtained.
[0259] In some embodiments, the reconstructed mesh of the first LOD in the current mesh is first determined. The method may include: determining the base mesh of the current mesh; encoding and decoding the base mesh to determine the reconstructed base mesh; subdividing the reconstructed base mesh to determine the initial subdivision mesh; determining the displacement coefficient of the initial subdivision mesh; and determining the reconstructed mesh of the first LOD in the current mesh based on the initial subdivision mesh and the displacement coefficient of the initial subdivision mesh.
[0260] In this embodiment of the disclosure, the base mesh may also be referred to as a "simplified mesh". In some embodiments, determining the base mesh of the current mesh may include: determining the original mesh of the current mesh; and performing downsampling processing on the original mesh to obtain the base mesh.
[0261] It should also be noted that, in this embodiment of the disclosure, the current input mesh can be referred to as the original mesh. By downsampling the input mesh, i.e., simplifying the input mesh, the base mesh can be obtained.
[0262] In some embodiments, the method may further include: encoding the base grid and writing the resulting encoded bits into the bitstream.
[0263] For example, the bitstream here can refer to the base mesh bitstream. Then, a mesh encoder (such as EdgeBreaker) can write the base mesh into the base mesh bitstream.
[0264] In some embodiments, the method for determining the displacement coefficient of the initial subdivision mesh may include: performing displacement calculations on the vertex coordinate information of the initial subdivision mesh and the vertex coordinate information of the original mesh to determine the displacement coefficient of the initial subdivision mesh.
[0265] In this embodiment, for the first LOD, the displacement coefficient refers to the difference between the vertex coordinates of the original mesh and the vertex coordinates of the initial subdivided mesh. Thus, after decoding to obtain the displacement coefficient of the initial subdivided mesh, corresponding displacement calculations are performed on the vertex coordinates of the initial subdivided mesh based on this displacement coefficient to obtain the reconstructed mesh of the first LOD, i.e., the reconstructed mesh of LOD1. Then, based on the reconstructed mesh of LOD1, further subdivision is performed to obtain the subdivided mesh on LOD1. Combined with the corresponding displacement coefficient, the reconstructed mesh of LOD2 can be determined, and so on, until reconstruction is complete.
[0266] Step 309: Determine the displacement coefficient of the current LOD and write the displacement coefficient of the current LOD into the bitstream.
[0267] It should be noted that, in the embodiments of this disclosure, the displacement coefficient may include displacement components in one or more directions, such as... Figure 3 As shown, the displacement coefficient includes displacement components in three directions: normal direction, tangent direction, and double tangent direction. The displacement coefficient of the first LOD is calculated relative to the subdivision vertices of the base mesh, while the displacement coefficients of subsequent levels are calculated relative to the subdivision vertices of the reconstructed LOD from the previous LOD, thus enabling recursive subdivision of the displacement coefficients.
[0268] In some embodiments, the method for determining the displacement coefficient of the current LOD involved in any of steps 304, 306, and 309 may specifically include: performing displacement calculations on the vertex coordinate information of the subdivided mesh of the current LOD and the vertex coordinate information of the original mesh to determine the displacement coefficient of the current LOD.
[0269] Furthermore, in some embodiments, the method may further include: preprocessing the displacement coefficients of the current LOD to determine the quantization displacement coefficients of the current LOD; encoding the quantization displacement coefficients of the current LOD and writing the obtained encoded bits into the bitstream.
[0270] In other words, in this embodiment of the disclosure, after generating the subdivided mesh, a geometric displacement vector can be calculated for each vertex of the subdivided mesh to make the shape of the subdivided mesh as close as possible to the shape of the original mesh. These geometric displacement vectors are the displacement coefficients. Specifically, there is a difference in geometric information between the vertices of the subdivided mesh and the vertices of the original mesh, and this difference is the displacement coefficient.
[0271] It should also be noted that, in this embodiment of the disclosure, after determining the quantization displacement coefficient of the current LOD, the quantization displacement coefficient of the current LOD is encoded into the bitstream, where the bitstream can be a displacement bitstream. There can be various specific encoding methods for the displacement bitstream, such as video encoding, entropy encoding, etc. That is to say, in this embodiment of the disclosure, displacement information can be written into the displacement bitstream using a video encoder, or it can be written into the displacement bitstream using an entropy encoder; no limitation is made here.
[0272] It should also be noted that, in this embodiment of the disclosure, after obtaining the displacement coefficients of the current LOD, the displacement coefficients of the current LOD can be preprocessed. Preprocessing may include wavelet transform, quantization, and other processing.
[0273] In one embodiment, preprocessing the displacement coefficients of the current LOD to determine the quantized displacement coefficients of the current LOD may include: performing wavelet transform on the displacement coefficients of the current LOD to determine the wavelet transform coefficients of the current LOD; and quantizing the wavelet transform coefficients of the current LOD to determine the quantized displacement coefficients of the current LOD.
[0274] In this embodiment of the disclosure, wavelet transform converts the displacement coefficients of the current LOD into signals in the wavelet domain, where the wavelet transform coefficients are calculated in floating-point format. Quantization converts the floating-point number into a fixed-point number with a preset precision, where the preset precision can be the precision indicated in the coded bitstream at the patch, image, or sequence level.
[0275] In some embodiments, quantizing the wavelet transform coefficients of the current LOD to determine the quantization shift coefficients of the current LOD may include: determining the quantization parameters of the current LOD; quantizing the wavelet transform coefficients of the current LOD according to the quantization parameters of the current LOD to determine the quantization shift coefficients of the current LOD.
[0276] It should be noted that in this embodiment, the quantizer parameter (QP) reflects the spatial detail compression. A smaller QP value results in finer quantization, higher image quality, and a longer bitstream. A small QP preserves most details; a larger QP leads to some detail loss, lower bitrate, but increased image distortion and reduced quality. Specifically, QP is the sequence number of the quantization step size Qstep. A QP value of 0 indicates the finest quantization; conversely, a QP value of 51 indicates coarser quantization.
[0277] In some embodiments, determining the quantization parameters of the current LOD may include: determining multiple candidate quantization parameters of the current LOD; calculating the quantization and encoding costs of the wavelet transform coefficients of the current LOD based on the multiple candidate quantization parameters, and determining the cost results of each of the multiple candidate quantization parameters; determining the minimum cost result from the cost results of each of the multiple candidate quantization parameters, and determining the candidate quantization parameter corresponding to the minimum cost result as the quantization parameter of the current LOD.
[0278] It should be noted that, in this embodiment of the disclosure, for each LOD, there may be multiple candidate quantization parameters. Based on the cost results of these multiple candidate quantization parameters, the candidate quantization parameter corresponding to the minimum cost result is selected and used as the quantization parameter of the current LOD. The cost calculation here may include at least one of the following: Rate-Distortion Optimization (RDO), Mean Square Error (MSE), Sum of Squared Difference (SSD), Sum of Absolute Difference (SAD), Sum of Absolute Transformed Difference (SATD), Peak Signal-to-Noise Ratio (PSNR), etc.
[0279] It should also be noted that, in this embodiment, the quantization parameters can be represented by `vmc_transform_lifting_quantization_parameters[ltpIndex][i][j]`. Here, the wavelet transform coefficients can be converted into fixed-point representations according to the precision indicated in the coded bitstream at the patch, image, or sequence level, based on the quantization parameters `vmc_transform_lifting_quantization_parameters[ltpIndex][i][j]` of the corresponding coordinates `i` and `j` in the bitstream, respectively. Here, `i` represents the component information of the displacement coefficients (x, y, z for the canonical coordinate system, n, t, bt for the local coordinate system); `j` represents the LOD level; and `ltpIndex` represents the level of application, where 0 represents the sequence level, 1 represents the image level, and 2 represents the patch level.
[0280] In one possible implementation, for the quantization parameters of the current LOD, the method may include: encoding the quantization parameters of the current LOD and writing the resulting encoded bits into the bitstream.
[0281] In another possible implementation, for the quantization parameters of the current LOD, the method may include: determining the quantization parameters of the previous LOD; determining the quantization parameter increment of the current LOD based on the quantization parameters of the previous LOD and the quantization parameters of the current LOD; encoding the quantization parameter increment of the current LOD; and writing the obtained encoded bits into the bitstream.
[0282] In other words, in this embodiment of the disclosure, the encoding end can directly write the quantization parameters into the bitstream, so that the decoding end can obtain the corresponding quantization parameters by decoding; or the encoding end can also write the quantization parameter increment into the bitstream, and then the decoding end can obtain the corresponding quantization parameters based on the quantization parameter increment obtained by decoding and the quantization parameters of the previous LOD.
[0283] In one embodiment, the quantization parameter increment of the current LOD can be determined by subtracting the quantization parameter of the previous LOD from the quantization parameter of the current LOD. For example, assuming the quantization parameter of the current LOD can be represented by QP(i), the quantization parameter of the previous LOD can be represented by QP(i-1), and the quantization parameter increment can be represented by ΔQP, then ΔQP = QP(i) - QP(i-1). For the quantization parameter of the first LOD, the corresponding quantization parameter QP(1) can be directly written into the bitstream.
[0284] It should also be noted that, in this embodiment of the disclosure, a reference quantization parameter can be set at both the encoding and decoding ends, and then the quantization parameter increment between the quantization parameter of each LOD and the reference quantization parameter can be written into the bitstream. In this way, after the decoding end determines the quantization parameter increment of the current LOD in the decoded bitstream, it can determine the quantization parameter of the current LOD based on the quantization parameter increment of the current LOD and the reference quantization parameter, thereby saving the encoding bits of the quantization parameter in the bitstream.
[0285] In some embodiments, the method may further include: determining the quantization displacement coefficient of at least one LOD in the current grid, wherein the at least one LOD includes the current LOD; filling the quantization displacement coefficient of the at least one LOD into the two-dimensional image according to a preset filling method; encoding the two-dimensional image and writing the obtained encoded bits into the bitstream.
[0286] In the embodiments of this disclosure, the preset padding method includes a forward padding method or a reverse padding method. The preset padding method can be determined by setting the same padding method for both the decoder and encoder, or it can be indicated by a third syntax element in the bitstream.
[0287] In one embodiment, the method may further include: determining the value of a third syntax element according to a preset padding method; encoding the value of the third syntax element; and writing the obtained encoded bits into a bitstream.
[0288] In this embodiment of the disclosure, the third syntax element can be represented by dmsps_packing_order. That is, the preset padding method can be the padding method indicated by dmsps_packing_order in the bitstream.
[0289] Thus, if the encoder compresses the displacement using video encoding, the decoder decodes it using a corresponding video decoder and recovers it from the 2D image in the corresponding order according to a preset padding method. Then, it performs operations such as inverse quantization and inverse wavelet transform to recover the displacement coefficients consistent with those of the encoder. Otherwise, if the encoder uses entropy encoding for the displacement coefficients, the decoder can directly perform entropy decoding, followed by subsequent operations such as inverse quantization and inverse wavelet transform to obtain the displacement coefficients of the current LOD.
[0290] For example, Figure 29A This is a schematic diagram illustrating a method for filling displacement coefficients in a two-dimensional image according to an embodiment of the present disclosure. Figure 29B This is a schematic diagram illustrating another method for filling displacement coefficients in a two-dimensional image, as provided in an embodiment of this disclosure. Figure 29A This is an example of a forward filling method, also known as "continuous-packing"; Figure 29B This is an example of inverse packing.
[0291] In other words, in this embodiment of the disclosure, for the quantized displacement coefficient, the quantized displacement coefficient is scanned along a 3D spatial scanning pattern (e.g., Morton, Hilbert, or along other space-filling curves) within each LOD, and each component forms three one-dimensional arrays (see...). Figure 29A and Figure 29B The quantization shift coefficients are converted into a two-dimensional image based on the LOD and the preset padding method indicated by the syntax element dmsps_packing_order. Unoccupied symbols in the Coding Tree Unit (CTU) can be filled using one of the padding methods (e.g., zero-padding).
[0292] In step 310, the reconstructed mesh of the next LOD in the current mesh is determined based on the subdivision mesh of the current LOD and the displacement coefficient of the current LOD.
[0293] It should be noted that, in this embodiment of the disclosure, the reconstructed mesh of the next LOD in the current mesh is determined based on the subdivision mesh of the current LOD and the displacement coefficient of the current LOD. Specifically, the vertex coordinate information of the subdivision mesh of the current LOD is subjected to corresponding displacement calculation based on the displacement coefficient to obtain the reconstructed mesh of the next LOD in the current mesh.
[0294] In other words, in this embodiment of the disclosure, the displacement coefficients are recursively applied to the previously reconstructed LOD. Specifically, the displacement coefficients obtained by decoding are added sequentially to each vertex of the subdivided mesh of the current LOD, thereby obtaining the reconstructed mesh of the next LOD.
[0295] In some embodiments, the method may further include: after determining the reconstruction grid of the next LOD in the current grid, using the reconstruction grid of the next LOD as the reconstruction grid of the current LOD, returning to the step of subdividing the reconstruction grid of the current LOD and determining the subdivided grid of the current LOD, until the reconstruction grid of the Lth LOD in the current grid is determined; wherein, the value of L is related to the number of subdivision iterations of the current grid.
[0296] It should also be noted that, in this embodiment of the disclosure, the number of subdivision iterations of the current grid can be indicated by a second syntax element in the bitstream. In one embodiment, the method may include: determining the number of subdivision iterations of the current grid; determining the value of the second syntax element based on the number of subdivision iterations of the current grid; encoding the value of the second syntax element; and writing the obtained encoded bits into the bitstream.
[0297] In this embodiment of the disclosure, the second syntax element can be represented by asps_vmc_ext_subdivision_iteration_count. That is, the number of subdivision iterations of the current grid can be the value indicated by asps_vmc_ext_subdivision_iteration_count in the bitstream.
[0298] Additionally, L represents the LOD level corresponding to the current mesh. The value of L can be determined by the number of subdivision iterations of the current mesh, that is, the value of L is equal to the value indicated by asps_vmc_ext_subdivision_iteration_count.
[0299] Thus, in this embodiment of the disclosure, for the case where the first syntax element indicates that the current grid uses a recursive subdivision method, such as... Figure 20As shown, first, the base mesh is subdivided to obtain an initial subdivided mesh. After decoding the displacement coefficients of the initial subdivided mesh, corresponding displacement operations are performed on the vertex coordinate information of the initial subdivided mesh according to the displacement coefficients to obtain the reconstructed mesh of the first LOD, that is, the reconstructed mesh of LOD1. Then, based on the reconstructed mesh of LOD1, subdivision is performed to obtain the subdivided mesh on LOD1. Then, after decoding the displacement coefficients of LOD1, the reconstructed mesh of LOD2 can be determined according to the subdivided mesh on LOD1 and the displacement coefficients of LOD1, and so on until the reconstructed mesh of LOD L is obtained, indicating that the current mesh reconstruction is completed. Among them, in Figure 20 the black solid line (composed of vertices PB_1, PB_2, and PB_3) represents the base mesh, the black dashed line represents the subdivided mesh, the first bold solid line is LOD1 to which displacement is applied, and the second bold solid line is LOD2 to which displacement is applied.
[0300] In some embodiments, the detailed process of recursive subdivision is as shown in Figure 21 and this detailed process may include the following steps
[0301] In step S1901, the original mesh is simplified to obtain the base mesh. In step S1902, the base mesh is quantized. In step S1903, the quantized base mesh is encoded. In step S1904, the code stream is parsed to decode the base network from the code stream to obtain the reconstructed base mesh. In step S1905, n = 0 is initialized, and the reconstructed base mesh is used as a temporary mesh for mesh subdivision. In step S1906, the displacement coefficients are calculated according to the subdivided mesh and the original mesh. In step S1907, the temporary mesh is updated according to the displacement coefficients and the subdivided mesh. In step S1908, the displacement coefficients are saved to the memory. In step S1909, it is judged whether n is less than L - 1. If the judgment result in step S1909 is yes, that is, n < L - 1, then n = n + 1 (S1910), and steps S1905 to S1909 are continued. If the judgment result in step S1909 is no, that is, n < L - 1 does not hold, it indicates that the subdivision is completed. Finally, the displacement coefficients also need to be encoded into the code stream.
[0302] Thus, in the embodiments of the present disclosure, for the case where the first syntax element indicates that the current mesh uses the non - linear subdivision method, as shown in Figure 22As shown, first, the base mesh is subdivided to obtain an initial subdivided mesh; after decoding to obtain the displacement coefficients of the initial subdivided mesh, corresponding displacement operations are performed on the vertex coordinate information of the initial subdivided mesh according to the displacement coefficients to obtain the reconstructed mesh of the first LOD, that is, the reconstructed mesh of LOD1. Then, based on the reconstructed mesh of LOD1, subdivision is performed to obtain the subdivided mesh on LOD1; then, after decoding to obtain the displacement coefficients of LOD1, the reconstructed mesh of LOD2 can be determined according to the subdivided mesh on LOD1 and the displacement coefficients of LOD1. For the reconstructed meshes of LOD3 to LOD L, such as LODi (i is greater than a preset value, and the preset value can be, for example, 2), the displacement coefficients of adjacent base grid vertices (the first point) in LOD i can be set to 0, while the displacement coefficients of other points (the second point) can still be decoded and obtained. According to the subdivided mesh on LOD i and the displacement coefficients of LOD i, the reconstructed mesh of the next LOD can be determined. And so on until the reconstructed mesh of LOD L is obtained, indicating that the current mesh reconstruction is completed. Among them, in Figure 22 the black solid line (composed of vertices PB_1, PB_2, and PB_3) represents the base mesh, the black dashed line represents the subdivided mesh, the first bold solid line is LOD1 to which displacement is applied, and the second bold solid line is LOD2 to which displacement is applied. Although the preset value can be, for example, 2, each embodiment is not limited to this. In each embodiment, the preset value can be 2, 3, 4,..., or any other integer value.
[0303] In some embodiments, the detailed process of non-linear subdivision is as Figure 23 shown, and this detailed process may include the following steps.
[0304] In step S1901, the original mesh is simplified to obtain the base mesh. In step S1902, the base mesh is quantized. In step S1903, the quantized base mesh is encoded. In step S1904, the code stream is parsed to decode the base network from the code stream to obtain the reconstructed base mesh. In step S1905, n = 0 is initialized, and the reconstructed base mesh is used as a temporary mesh for mesh subdivision. In step S1906, the displacement coefficients are calculated according to the subdivided mesh and the original mesh. In step S1911, in order to remove redundancy, the displacement coefficients of adjacent base grid vertices are deleted. In step S1907, the temporary mesh is updated according to the displacement coefficients and the subdivided mesh. In step S1908, the other displacement coefficients are saved to the memory. In step S1909, it is judged whether n is less than L - 1. If the judgment result in step S1909 is yes, that is, n < L - 1, then n = n + 1, and then steps S1905 to S1909 are continued. If the judgment result in step S1909 is no, that is, n < L - 1 does not hold, it indicates that the subdivision is completed. Finally, the other displacement coefficients also need to be encoded into the code stream.
[0305] It is also understandable that when the current mesh does not use a recursive subdivision method, the current mesh can use a midpoint subdivision method. In some embodiments, the method may include: when the current mesh uses a midpoint subdivision method, determining a reconstructed base mesh; subdividing the reconstructed base mesh to determine the subdivision mesh of at least one LOD in the current mesh; determining the displacement coefficient of at least one LOD in the current mesh; and determining the reconstructed mesh of at least one LOD in the current mesh based on the subdivision mesh of at least one LOD in the current mesh and the displacement coefficient of at least one LOD.
[0306] It should be noted that, in this embodiment, the number of at least one LOD layer is related to the number of subdivision iterations of the current grid. Here, L represents the number of at least one LOD layer, that is, the LOD layer corresponding to the current grid, which can be equal to the value indicated by asps_vmc_ext_subdivision_iteration_count in the bitstream.
[0307] It should also be noted that, in the embodiments disclosed herein, such as Figure 5 and Figure 6 As shown, when the current mesh uses the midpoint subdivision method, the displacement coefficient of each LOD is obtained by displacement calculation using the vertex coordinate information of the subdivided mesh and the vertex coordinate information of the original mesh, rather than recursively obtained based on the previously reconstructed LOD.
[0308] It is also understood that, in this embodiment of the disclosure, a bitstream is also provided, which is generated by bit encoding based on information to be encoded; wherein, the information to be encoded includes at least one of the following types of information: the base grid of the current grid, the displacement coefficient of at least one LOD of the current grid, the quantization parameter of at least one LOD of the current grid, the quantization parameter increment of at least one LOD of the current grid, the value of the first syntax element, the value of the second syntax element, and the value of the third syntax element.
[0309] This disclosure provides an encoding method, specifically a recursive subdivision method for dynamic meshes. In this embodiment, by adding a first syntax element to indicate that the current mesh uses a non-linear subdivision method, during the encoding stage, displacement coefficients near vertices in the base layer can be removed from the displacement list. Therefore, in the subsequent recursive application of displacement coefficients to the previously reconstructed LOD, the redundancy problem of displacement coefficients at higher levels can be improved, saving encoding bits for displacement coefficients and thus improving encoding / decoding efficiency.
[0310] In yet another embodiment of this disclosure, the encoding / decoding method described in the foregoing embodiments is used, such as Figure 6As shown, displacement factors are applied to the previously reconstructed LOD. In some cases, displacement factors are often redundant at higher levels of the LOD.
[0311] In some systems, the subdivision method shares functionality across all LODs and is defined by two syntax elements, asps_vdmc_ext_subdivision_method and asps_vdmc_ext_subdivision_iteration_count, in the Atlas sequence parameter set VDMC extended RBSP syntax structure, as shown in Table 1 above.
[0312] `asps_vdmc_ext_subdivision_method` indicates the subdivision method identifier for the grid associated with the current atlas sequence parameter set. Table 2 above describes the list of supported subdivision methods and their relationship to `asps_vdmc_ext_subdivision_method`.
[0313] `asps_vdmc_ext_subdivision_iteration_count` indicates the number of subdivision iterations of the mesh. If it does not exist, the value of `asps_vdmc_ext_subdivision_iteration_count` is assumed to be 0.
[0314] Due to the specific nature of subdivision, displacements at higher levels of the LOD typically degenerate to "0", introducing significant redundancy in signaling and coding information. The solution proposed in this disclosure introduces an efficient and flexible method and apparatus for efficiently encoding the geometric components of a mesh representation of volumetric content by removing redundant displacements, such as edges of the base mesh and inherited values from previous LODs.
[0315] To overcome the problem of degenerate edges transmitted via signals, embodiments of this disclosure propose a novel adaptive subdivision method, wherein at higher levels of LOD, edges adjacent to base points are always equal to 0. One way to achieve this is by adding a new `asps_vdmc_ext_subdivision_method` equal to 2 and 3. This new `asps_vdmc_ext_subdivision_method` will create the same subdivision as the original method, but displacements adjacent to base points (e.g., PB_1, PB_2, and PB_3) are inferred to be equal to zero. The specific implementation process is as follows... Figure 20 , 21 As shown in Figures 22 and 23.
[0316] In one embodiment, the method for effectively encoding geometric displacement coefficients in the mesh at the encoding end includes a subdivision process with recursive subdivision updates, wherein the displacement coefficients are calculated relative to the subdivision vertices in the previously reconstructed LOD.
[0317] Phase 1: Mesh Segmentation. This is the step of creating fragments or blocks, semantic blocks, etc., representing independent objects / regions of interest / volume map tiles, etc., of the mesh content. The number of LOD subdivisions is defined by asps_vmc_ext_subdivision_iteration_count.
[0318] The second stage is mesh simplification, which involves creating a base mesh and encoding it using an undefined static mesh encoder. The base mesh is then decoded and recursively subdivided based on the number of Levels of Distance (LODs).
[0319] The third stage: For each LOD, the mesh displacement between the previously updated subdivision LOD and the original surface of the mesh is calculated. Then, wavelet transform is used to process the displacement.
[0320] When LoD is greater than 2 and the value of the syntax element asps_vdmc_ext_subdivision_method is equal to 3, the displacement of the edge belonging to the vertex containing the base mesh is inferred to be equal to 0 and is not recorded in the displacement list for further encoding.
[0321] Fourth stage: Based on the quantization parameters vmc_transform_lifting_quantization_parameters[ltpIndex][i][j] of the LODj and corresponding coordinates I in the bitstream, the wavelet transform coefficients are converted into fixed-point representations, the accuracy of which is indicated in the coded bitstream at the patch, image, or sequence level (ltpIndex).
[0322] Fifth stage: Within each LoD, the quantized wavelet coefficients are scanned along a 3D spatial scanning pattern (e.g., Morton, Hilbert, or other space-filling curves), with each component forming three one-dimensional arrays. Figure 29A and 29B ).
[0323] The transform coefficients are converted into a 2D image based on the LoD and the selected packing order indicated by the flag dmsps_packing_order. Unoccupied symbols in the CTU are filled using one of the padding methods (e.g., zero-padding).
[0324] In one embodiment, the decoding process is the reverse of the encoding process, and the decoding end can consist of the following five stages.
[0325] Phase 1: The base grid is decoded from the geometric bitstream and recursively subdivided into LODs defined by the encoder.
[0326] The second stage involves obtaining the encoded bitstream of geometric displacement and decoding it using the codec corresponding to the dmsps_mesh_codec_id decoder.
[0327] The third stage: using the quantization parameters represented by signals in the bitstream, the shift wavelet coefficients are dequantized.
[0328] Fourth stage: Perform inverse wavelet transform using the inverse-quantized displacement wavelet coefficients.
[0329] Fifth stage: At each transformation level, mesh displacement is recursively applied to the subdivided base mesh to generate a reconstructed mesh, which consists of blocks representing independent objects / regions of interest / volume tiles, semantic blocks, etc.
[0330] In other words, in the embodiments of this disclosure, when LoD is greater than 2 and asps_vdmc_ext_subdivision_method is 3, the displacement of the edge belonging to the vertex containing the base mesh is inferred to be equal to 0, and is added to the corresponding position in the displacement list for mesh reconstruction.
[0331] The specific implementation of the aforementioned embodiments is described in detail through the above examples. It can be seen that, according to the technical solution of the aforementioned embodiments, by adding a first syntax element to indicate that the current grid uses a non-linear subdivision method, when it is determined that the current grid uses a non-linear subdivision method, the reconstructed grid of the current LOD in the current grid is subdivided to determine the subdivided grid of the current LOD; the displacement coefficient of the first point of the current LOD (the point that coincides with or is adjacent to the base point) is directly set to 0, that is, the displacement adjacent to the base point (e.g., PB_1, PB_2, and PB_3) is inferred to be equal to 0; based on the subdivided grid of the current LOD and the displacement coefficient of the current LOD, the reconstructed grid of the next LOD in the current grid is determined. Thus, when the current grid uses a non-linear subdivision method, the redundancy problem of displacement coefficients at higher levels can be further improved, saving the encoding bits of displacement coefficients, thereby improving encoding and decoding efficiency.
[0332] In other words, in the embodiments of this disclosure, by adding a first syntax element to indicate that the current mesh uses a non-linear subdivision method, during the encoding stage, the displacement coefficients of vertices close to the base layer can be removed from the displacement list, and during the decoding stage, the displacement coefficients of vertices close to the base layer are inferred to be equal to 0. Therefore, in the subsequent process of recursively applying the displacement coefficients to the previously reconstructed LOD, the redundancy problem of displacement coefficients at higher levels can be improved, the encoding bits of displacement coefficients can be saved, and the encoding and decoding efficiency can be improved.
[0333] In yet another embodiment of this disclosure, based on the same inventive concept as the foregoing embodiments, Figure 30 This is a schematic diagram illustrating the structural composition of an encoder provided in an embodiment of this disclosure. Figure 30 As shown, encoder 300 may include a first determining unit 3001.
[0334] The first determining unit 3001 is configured to, when the current mesh uses a non-linear subdivision method, determine the value of a first syntax element, write the first syntax element into the code stream, determine the reconstructed mesh of the current LOD in the current mesh, and subdivide the reconstructed mesh of the current LOD to determine the subdivision mesh of the current LOD; if the current LOD is the i-th LOD, determine the displacement coefficient of the first point of the current LOD as 0; and determine the reconstructed mesh of the next LOD in the current mesh based on the subdivision mesh of the current LOD and the displacement coefficient of the current LOD. Here, i is an integer greater than 2; the first point includes the vertex of the reconstructed base mesh corresponding to the current mesh.
[0335] Understandably, in the embodiments of this disclosure, a "unit" can be a portion of circuitry, a portion of processor, a portion of program or software, etc., and can also be a module or a non-modular component. Furthermore, the components in this embodiment can be integrated into a single processing unit, or each unit can exist physically separately, or two or more units can be integrated into a single unit. The integrated unit can be implemented in hardware or as a software functional module.
[0336] If the integrated unit is implemented as a software functional module and not sold or used as an independent product, it can be stored in a computer-readable storage medium. Based on this understanding, the technical solution of this embodiment, in essence, or the part that contributes to the prior art, or all or part of the technical solution, 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 a computer device (which may be a personal computer, server, or network device, etc.) or processor to execute all or part of the steps of the method described in this embodiment. The aforementioned storage medium includes various media capable of storing program code, such as USB flash drives, portable hard drives, read-only memory (ROM), random access memory (RAM), magnetic disks, or optical disks.
[0337] Therefore, this disclosure provides a computer-readable storage medium applied to an encoder 300, the computer-readable storage medium storing a computer program that, when executed by a first processor, implements the method described in any of the foregoing embodiments.
[0338] Based on the composition of encoder 300 and computer-readable storage medium, Figure 31 This is a schematic diagram of the specific hardware structure of an encoder provided in an embodiment of this disclosure. Figure 31 As shown, the encoder 300 may include: a first communication interface 3101, a first memory 3102, and a first processor 3103; the various components are coupled together via a first bus system 3104. It is understood that the first bus system 3104 is used to implement communication between these components. The first bus system 3104 includes a data bus, a power bus, a control bus, and a status signal bus. However, for clarity, in... Figure 31 The various buses are all labeled as the first bus system 3104.
[0339] The first communication interface 3101 is used for receiving and sending signals during the process of sending and receiving information with other external network elements.
[0340] The first memory 3102 is used to store computer programs that can run on the first processor 3103.
[0341] The first processor 3103 is configured to perform the following operations when running the computer program: when the current grid uses a non-linear subdivision method, determine the value of a first syntax element and write the first syntax element into the code stream; determine the reconstructed grid of the current LOD in the current grid; and subdivide the reconstructed grid of the current LOD to determine the subdivision grid of the current LOD; when the current LOD is the i-th LOD, determine the displacement coefficient of the first point of the current LOD to be 0; where i is an integer greater than 2; the first point includes the vertex of the reconstructed base grid corresponding to the current grid; and determine the reconstructed grid of the next LOD in the current grid based on the subdivision grid of the current LOD and the displacement coefficient of the current LOD.
[0342] It is understood that the first memory 3102 in this embodiment of the present disclosure may be volatile memory or non-volatile memory, or may include both volatile and non-volatile memory. The non-volatile memory may 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 may 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 Synchronous DRAM (DDRSDRAM), Enhanced Synchronous DRAM (ESDRAM), Synchlink DRAM (SLDRAM), and Direct Rambus RAM (DRRAM). The first memory 3102 of the systems and methods described in this disclosure is intended to include, but is not limited to, these and any other suitable types of memory.
[0343] The first processor 3103 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 3103 or by instructions in software form. The first processor 3103 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 disclosure. The general-purpose processor may be a microprocessor or any conventional processor. The steps of the methods disclosed in the embodiments of this disclosure 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 3102. The first processor 3103 reads the information in the first memory 3102 and completes the steps of the above method in conjunction with its hardware.
[0344] It is understood that the embodiments described in this disclosure 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 disclosure, or combinations thereof. For software implementation, the techniques described in this disclosure can be implemented through modules (e.g., procedures, functions, etc.) that perform the functions described in this disclosure. 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.
[0345] Alternatively, as another embodiment, the first processor 3103 is further configured to perform the method described in any of the foregoing embodiments when running the computer program.
[0346] This embodiment provides an encoder in which a first syntax element is added to indicate that the current grid uses a non-linear subdivision method. When it is determined that the current grid uses a non-linear subdivision method, the displacement coefficient of the first point is set to 0. That is, the displacements adjacent to the base points (e.g., PB_1, PB_2, and PB_3) are inferred to be equal to 0 and are recursively applied to the previously reconstructed LOD. This can improve the redundancy problem of displacement coefficients at higher levels, save the coding bits of displacement coefficients, and thus improve the encoding and decoding efficiency.
[0347] In yet another embodiment of this disclosure, based on the same inventive concept as the foregoing embodiments, Figure 32 This is a schematic diagram illustrating the structural composition of a decoder provided in an embodiment of this disclosure. Figure 32 As shown, the decoder 320 may include a second determining unit 3201.
[0348] The second determining unit 3201 is configured to decode the bitstream and determine the value of the first syntax element; when the first syntax element indicates that the current grid uses a non-linear subdivision method, it determines the reconstructed grid of the current LOD in the current grid, and subdivides the reconstructed grid of the current LOD to determine the subdivision grid of the current LOD; if the current LOD is the i-th LOD, the displacement coefficient of the first point of the current LOD is determined to be 0; based on the subdivision grid of the current LOD and the displacement coefficient of the first point of the current LOD, the reconstructed grid of the next LOD in the current grid is determined. Here, i is an integer greater than 2; the first point includes the vertex of the reconstructed base grid corresponding to the current grid.
[0349] Understandably, in this embodiment, a "unit" can be a portion of a circuit, a portion of a processor, a portion of a program or software, etc., and can also be a module or a non-modular component. Furthermore, the components in this embodiment can be integrated into one processing unit, or each unit can exist physically separately, or two or more units can be integrated into one unit. The integrated unit can be implemented in hardware or as a software functional module.
[0350] If the integrated unit is implemented as a software functional module and is not sold or used as an independent product, it can be stored in a computer-readable storage medium. Based on this understanding, this embodiment provides a computer-readable storage medium applied to the decoder 320. This computer-readable storage medium stores a computer program, which, when executed by a second processor, implements the method described in any of the foregoing embodiments.
[0351] Based on the composition of decoder 320 and computer-readable storage medium, Figure 33 This is a schematic diagram of the specific hardware structure of a decoder provided in an embodiment of this disclosure. Figure 33 As shown, the decoder 320 may include: a second communication interface 3301, a second memory 3302, and a second processor 3303; the various components are coupled together via a second bus system 3304. It is understood that the second bus system 3304 is used to implement communication between these components. In addition to a data bus, the second bus system 3304 also includes a power bus, a control bus, and a status signal bus. However, for clarity, in... Figure 33 The general designated all buses as the second bus system 3304.
[0352] The second communication interface 3301 is used for receiving and sending signals during the process of sending and receiving information with other external network elements.
[0353] The second memory 3302 is used to store computer programs that can run on the second processor 3303.
[0354] The second processor 3303 is configured to perform the following operations when running the computer program: decode the bitstream and determine the value of the first syntax element; when the first syntax element indicates that the current grid uses a non-linear subdivision method, determine the reconstructed grid of the current LOD in the current grid, and subdivide the reconstructed grid of the current LOD to determine the subdivision grid of the current LOD; when the current LOD is the i-th LOD, determine the displacement coefficient of the first point of the current LOD to be 0; where i is an integer greater than 2; the first point includes the vertex of the reconstructed base grid corresponding to the current grid; and determine the reconstructed grid of the next LOD in the current grid based on the subdivision grid of the current LOD and the displacement coefficient of the first point of the current LOD.
[0355] Alternatively, as another embodiment, the second processor 3303 is also configured to perform the method described in any of the foregoing embodiments when running the computer program.
[0356] It is understood that the second memory 3302 has similar hardware functions to the first memory 3102, and the second processor 3303 has similar hardware functions to the first processor 3103; these will not be described in detail here.
[0357] This embodiment provides a decoder in which, when it is determined that the current grid uses a nonlinear subdivision method, the displacement coefficient of the first point is set to 0. That is, the displacements adjacent to the base points (e.g., PB_1, PB_2, and PB_3) are inferred to be equal to 0 and recursively applied to the previously reconstructed LOD. This can improve the redundancy problem of displacement coefficients at higher levels, save the coding bits of displacement coefficients, and thus improve the encoding and decoding efficiency.
[0358] In yet another embodiment of this disclosure, Figure 34 This is a schematic diagram illustrating the structural composition of an encoding / decoding system provided in an embodiment of this disclosure. Figure 34 As shown, the encoding / decoding system 340 may include an encoder 3401 and a decoder 3402.
[0359] In this embodiment, encoder 3401 can be any of the encoders described in the foregoing embodiments, and decoder 3402 can be any of the decoders described in the foregoing embodiments.
[0360] It should be noted that, in the embodiments of this disclosure, 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. Without further limitations, 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.
[0361] It should also be noted that the present disclosure also provides a computer program product, including a computer program or instructions.
[0362] In some embodiments, the computer program product may be applied to a terminal device in the embodiments of this disclosure, and the computer program or instructions cause the computer to execute the corresponding processes implemented by the terminal device in the various methods of the embodiments of this disclosure. For the sake of brevity, these will not be described in detail here.
[0363] It should also be noted that the present disclosure also provides a computer program.
[0364] In some embodiments, the computer program can be applied to the terminal device in the embodiments of this disclosure. When the computer program is run on a computer, it causes the computer to execute the corresponding processes implemented by the terminal device in the various methods of the embodiments of this disclosure. For the sake of brevity, it will not be described in detail here.
[0365] Those skilled in the art will recognize that the units and algorithm steps of the various examples described in conjunction with the embodiments disclosed herein can be implemented in electronic hardware, or a combination of computer software and electronic hardware. Whether these functions are implemented in hardware or software depends on the specific application and design constraints of the technical solution. Those skilled in the art can use different methods to implement the described functions for each specific application, but such implementation should not be considered beyond the scope of this disclosure.
[0366] Those skilled in the art will clearly understand that, for the sake of convenience and brevity, the specific working process of the above-described apparatus and unit can be referred to the corresponding process in the foregoing method embodiments, and will not be repeated here.
[0367] The sequence numbers of the embodiments disclosed above are for descriptive purposes only and do not represent the superiority or inferiority of the embodiments.
[0368] The methods disclosed in the several method embodiments provided in this disclosure can be arbitrarily combined without conflict to obtain new method embodiments.
[0369] The features disclosed in the several product embodiments provided in this disclosure can be combined arbitrarily without conflict to obtain new product embodiments.
[0370] The features disclosed in the several method or device embodiments provided in this disclosure can be arbitrarily combined without conflict to obtain new method or device embodiments.
[0371] The above description is merely a specific embodiment of this disclosure, but the scope of protection of this disclosure is not limited thereto. Any variations or substitutions that can be easily conceived by those skilled in the art within the scope of the technology disclosed in this disclosure should be included within the scope of protection of this disclosure. Therefore, the scope of protection of this disclosure should be determined by the scope of the claims.
[0372] Industrial applicability This disclosure provides an encoding / decoding method, a bitstream, an encoder, a decoder, a medium, and a product. At the decoding end, the bitstream is decoded, and the value of a first syntax element is determined. When the first syntax element indicates that the current grid uses a non-linear subdivision method, the reconstructed grid of the current LOD in the current grid is determined, and the reconstructed grid of the current LOD is subdivided to determine the subdivided grid of the current LOD. If the current LOD is the i-th LOD, the displacement coefficient of the first point of the current LOD is determined to be 0; where i is an integer greater than 2; the first point includes the vertex of the reconstructed base grid corresponding to the current grid. Based on the subdivided grid of the current LOD and the displacement coefficient of the first point of the current LOD, the reconstructed grid of the next LOD in the current grid is determined. At the encoding end, when the current grid uses a non-linear subdivision method, the value of the first syntax element is determined and written into the bitstream. The reconstructed grid of the current LOD in the current grid is determined, and the reconstructed grid of the current LOD is subdivided to determine the subdivided grid of the current LOD. When the current LOD is the i-th LOD, the displacement coefficient of the first point of the current LOD is determined to be 0; where i is an integer greater than 2; the first point includes the vertex of the reconstructed base grid corresponding to the current grid. Based on the subdivided grid of the current LOD and the displacement coefficient of the current LOD, the reconstructed grid of the next LOD in the current grid is determined. That is, in the embodiments of this disclosure, by adding a first syntax element to indicate that the current grid uses a non-linear subdivision method, during the encoding stage, the displacement coefficients of vertices close to the base layer can be removed from the displacement list. During the decoding stage, the displacement coefficients of vertices close to the base layer are inferred to be equal to 0. Therefore, in the subsequent process of recursively applying the displacement coefficients to the previously reconstructed LOD, the redundancy problem of displacement coefficients at higher levels can be improved, the encoding bits of displacement coefficients can be saved, and thus the encoding and decoding efficiency can be improved.
Claims
1. A decoding method applied to a decoder, the decoding method comprising: Decode the bitstream to determine the value of the first syntax element; When the value of the first syntax element indicates that the current grid uses a non-linear subdivision method, the reconstructed grid of the current LOD in the current grid is determined, and the reconstructed grid of the current LOD is subdivided to determine the subdivision grid of the current LOD; When the current LOD is the i-th LOD, the displacement coefficient of the first point of the current LOD is determined to be 0; where i is an integer greater than a preset value; the first point includes the vertex of the reconstructed base mesh corresponding to the current mesh; as well as Based on the subdivision mesh of the current LOD and the displacement coefficient of the first point of the current LOD, the reconstruction mesh of the next LOD in the current mesh is determined.
2. The decoding method according to claim 1 further includes: When the current LOD is the i-th LOD, the bitstream is decoded to determine the displacement coefficient of the second point of the current LOD; wherein, the second point is a point in the reconstructed base grid corresponding to the current grid, excluding the first point; and Based on the subdivision mesh of the current LOD and the displacement coefficient of the second point of the current LOD, the reconstruction mesh of the next LOD in the current mesh is determined.
3. The decoding method according to claim 1 further includes: If the current LOD is the second LOD, the bitstream is decoded to determine the shift coefficient of the current LOD; as well as The reconstruction mesh of the next LOD in the current mesh is determined based on the subdivision mesh of the current LOD and the displacement coefficient of the current LOD.
4. The decoding method according to any one of claims 1-3, further comprising: Decode the bitstream to determine the underlying mesh for reconstruction; The reconstructed base grid is subdivided to determine the initial subdivision grid; Decode the bitstream to determine the displacement coefficients of the initial subdivision grid; as well as The reconstructed mesh of the first LOD in the current mesh is determined based on the initial subdivision mesh and the displacement coefficient of the initial subdivision mesh.
5. The decoding method according to claim 4 further includes: After determining the reconstructed grid of the first LOD in the current grid, the reconstructed grid of the first LOD is subdivided to determine the subdivided grid of the second LOD; Decode the bitstream to determine the displacement coefficients of the subdivision grid of the second LOD; Based on the subdivision mesh of the second LOD and the displacement coefficient of the subdivision mesh of the second LOD, determine the reconstructed mesh of the next LOD in the current mesh; as well as Continue performing the subdivision operation until the reconstructed mesh for the Lth LOD in the current mesh is determined. The value of L is related to the number of subdivision iterations of the current grid.
6. The decoding method according to claim 5 further includes: When the first syntax element indicates that the current grid uses a recursive subdivision method, the reconstructed grid of the current LOD in the current grid is determined, and the reconstructed grid of the current LOD is subdivided to determine the subdivision grid of the current LOD; Decode the bitstream to determine the displacement coefficient of the current LOD; as well as Based on the subdivision mesh of the current LOD and the displacement coefficient of the current LOD, determine the reconstruction mesh of the next LOD in the current mesh.
7. The decoding method according to claim 6 further includes: After determining the reconstruction grid of the next LOD in the current grid, the reconstruction grid of the next LOD is used as the reconstruction grid of the current LOD, and the process returns to the step of subdividing the reconstruction grid of the current LOD to determine the subdivided grid of the current LOD, until the reconstruction grid of the Lth LOD in the current grid is determined.
8. The decoding method according to claim 7 further includes: Decode the bitstream to determine the value of the second syntax element; as well as The number of subdivision iterations for the current grid is determined based on the value of the second syntax element.
9. The decoding method according to any one of claims 6 to 8, wherein, Decoding the bitstream to determine the shift coefficient of the current LOD includes: Decode the bitstream to determine the decoding shift coefficients of the current LOD; and The decoding displacement coefficients of the current LOD are preprocessed to determine the displacement coefficients of the current LOD.
10. The decoding method according to claim 9, wherein, The preprocessing of the decoding shift coefficients of the current LOD to determine the shift coefficients of the current LOD includes: Determine the quantization parameters of the current LOD; The dequantization shift coefficients of the current LOD are determined by dequantizing the decoded shift coefficients of the current LOD according to the quantization parameters of the current LOD; and The displacement coefficients of the current LOD are determined by performing an inverse wavelet transform on the inverse quantized displacement coefficients.
11. The decoding method according to claim 10, wherein, The quantization parameters for determining the current LOD include: Decode the bitstream to determine the quantization parameters of the current LOD.
12. The decoding method according to claim 10, wherein, The quantization parameters for determining the current LOD include: Determine the quantization parameters of the previous LOD of the current LOD; Decode the bitstream to determine the quantization parameter increment of the current LOD; and The quantization parameters of the current LOD are determined based on the quantization parameters of the previous LOD and the quantization parameter increment.
13. The decoding method according to claim 9, wherein, Decoding the bitstream to determine the decoding shift coefficients of the current LOD includes: Decode the bitstream to determine a two-dimensional image; and The decoding displacement coefficient of the current LOD is extracted from the two-dimensional image according to the preset filling method.
14. The decoding method according to claim 13, further comprising: Decode the bitstream to determine the value of the third syntax element; as well as The preset padding method is determined based on the value of the third syntax element.
15. The decoding method according to any one of claims 1-4, 5-8, 10-14, wherein, The step of determining the reconstructed mesh of the next LOD in the current mesh based on the subdivision mesh of the current LOD and the displacement coefficient of the first point of the current LOD includes: Based on the displacement coefficient, the vertex coordinate information of the subdivided mesh of the current LOD is used to perform displacement calculation to obtain the reconstructed mesh of the next LOD in the current mesh.
16. The decoding method according to claim 6, further comprising: When the first syntax element indicates that the current grid uses a midpoint subdivision method, the bitstream is decoded to determine the reconstructed base grid; The reconstructed base mesh is subdivided to determine the subdivision mesh of at least one LOD in the current mesh; Decode the bitstream to determine the displacement coefficient of at least one LOD in the current grid; as well as The reconstructed mesh of the at least one LOD in the current mesh is determined based on the subdivision mesh of the at least one LOD in the current mesh and the displacement coefficient of the at least one LOD.
17. The decoding method according to claim 16, wherein, The number of layers of the at least one LOD is related to the number of subdivision iterations of the current mesh.
18. The decoding method according to claim 16, further comprising: When the value of the first syntax element is the first value, it is determined that the first syntax element indicates that the current grid does not use the subdivision method; When the value of the first syntax element is the second value, it is determined that the first syntax element indicates that the current grid uses the midpoint subdivision method; When the value of the first syntax element is the third value, it is determined that the first syntax element indicates that the current grid uses a recursive subdivision method; as well as When the value of the first syntax element is the fourth value, it is determined that the first syntax element indicates that the current grid uses a non-linear subdivision method.
19. The method according to any one of claims 1-18, wherein, The preset value is 2.
20. An encoding method applied to an encoder, the encoding method comprising: When the current grid uses a non-linear subdivision method, the value of the first syntax element is determined and written into the code stream. The reconstruction grid of the current LOD in the current grid is determined, and the reconstruction grid of the current LOD is subdivided to determine the subdivision grid of the current LOD. When the current LOD is the i-th LOD, the displacement coefficient of the first point of the current LOD is determined to be 0; where i is an integer greater than a preset value; the first point includes the vertex of the reconstructed base mesh corresponding to the current mesh; as well as Based on the subdivision mesh of the current LOD and the displacement coefficient of the first point of the current LOD, the reconstruction mesh of the next LOD in the current mesh is determined.
21. The encoding method according to claim 20, further comprising: When the current LOD is the i-th LOD, the displacement coefficient of the second point of the current LOD is determined, and the displacement coefficient of the second point is written into the bitstream; wherein, the second point is a point in the reconstructed base grid corresponding to the current grid, excluding the first point; and Based on the subdivision mesh of the current LOD and the displacement coefficient of the second point of the current LOD, the reconstruction mesh of the next LOD in the current mesh is determined.
22. The encoding method according to claim 20, further comprising: If the current LOD is the second LOD, determine the displacement coefficient of the current LOD and write the displacement coefficient of the current LOD into the bitstream; as well as Based on the subdivision mesh of the current LOD and the displacement coefficient of the current LOD, determine the reconstruction mesh of the next LOD in the current mesh.
23. The encoding method according to any one of claims 20-22, further comprising: Determine the base grid of the current grid and write the base grid into the bitstream; The basic grid is encoded and decoded to determine the reconstructed basic grid; The reconstructed base mesh is subdivided to determine the initial subdivided mesh; Determine the displacement coefficients of the initial subdivision grid, and write the displacement coefficients of the initial subdivision grid into the bitstream; as well as The reconstructed mesh of the first LOD in the current mesh is determined based on the initial subdivision mesh and the displacement coefficient of the initial subdivision mesh.
24. The encoding method according to claim 23, wherein, The determination of the base grid for the current grid includes: Determine the original mesh of the current mesh; and The original mesh is downsampled to obtain the base mesh.
25. The encoding method according to claim 24, wherein, The displacement coefficients for determining the initial subdivision mesh include: The displacement coefficient of the initial subdivision mesh is determined based on the vertex coordinate information of the initial subdivision mesh and the vertex coordinate information of the original mesh.
26. The encoding method according to claim 24 or 25, further comprising: After determining the reconstructed grid of the first LOD in the current grid, the reconstructed grid of the first LOD is subdivided to determine the subdivided grid of the second LOD; Determine the displacement coefficients of the subdivision grid of the second LOD, and write the displacement coefficients of the subdivision grid of the second LOD into the bitstream; as well as Based on the subdivision mesh of the second LOD and the displacement coefficient of the subdivision mesh of the second LOD, determine the reconstructed mesh of the next LOD in the current mesh; Continue performing the subdivision operation until the reconstructed mesh for the Lth LOD in the current mesh is determined, where The value of L is related to the number of subdivision iterations of the current grid.
27. The encoding method according to claim 26, further comprising: When the current grid uses a recursive subdivision method, the value of the first syntax element is determined and written into the code stream. The reconstructed grid of the current LOD in the current grid is determined, and the reconstructed grid of the current LOD is subdivided to determine the subdivision grid of the current LOD. Determine the displacement coefficient of the current LOD and write the displacement coefficient of the current LOD into the bitstream; as well as Based on the subdivision mesh of the current LOD and the displacement coefficient of the current LOD, determine the reconstruction mesh of the next LOD in the current mesh.
28. The encoding method according to claim 27, further comprising: After determining the reconstruction grid of the next LOD in the current grid, the reconstruction grid of the next LOD is used as the reconstruction grid of the current LOD, and the process returns to the step of subdividing the reconstruction grid of the current LOD to determine the subdivided grid of the current LOD, until the reconstruction grid of the Lth LOD in the current grid is determined.
29. The encoding method according to claim 28, further comprising: Determine the number of subdivision iterations for the current grid; as well as Based on the number of subdivision iterations of the current grid, a second syntax element is determined, and the second syntax element is written into the code stream.
30. The encoding method according to claim 27, wherein, Determining the displacement coefficient of the current LOD includes: The displacement coefficient of the current LOD is determined based on the vertex coordinate information of the subdivided mesh of the current LOD and the vertex coordinate information of the original mesh.
31. The encoding method according to any one of claims 27-30, further comprising: The displacement coefficients of the current LOD are preprocessed to determine the quantized displacement coefficients of the current LOD; as well as The quantization shift coefficients of the current LOD are encoded to obtain encoded bits, and the encoded bits are written into the bitstream.
32. The encoding method according to claim 31, wherein, The preprocessing of the displacement coefficients of the current LOD to determine the quantized displacement coefficients of the current LOD includes: Perform wavelet transform on the displacement coefficients of the current LOD to determine the wavelet transform coefficients of the current LOD; and The wavelet transform coefficients of the current LOD are quantized to determine the quantization shift coefficients of the current LOD.
33. The encoding method according to claim 32, wherein, The step of quantizing the wavelet transform coefficients of the current LOD to determine the quantization shift coefficients of the current LOD includes: Determine the quantization parameters of the current LOD; and The wavelet transform coefficients of the current LOD are quantized according to the quantization parameters of the current LOD to determine the quantization shift coefficients of the current LOD.
34. The encoding method according to claim 33 further includes: The quantization parameters of the current LOD are encoded to obtain encoded bits, and the encoded bits are written into the bitstream.
35. The encoding method according to claim 33, further comprising: Determine the quantization parameters of the previous LOD of the current LOD; as well as Based on the quantization parameters of the previous LOD and the quantization parameters of the current LOD, determine the quantization parameter increment of the current LOD; as well as The quantization parameter increment of the current LOD is encoded, and the resulting encoded bits are written into the bitstream.
36. The encoding method according to claim 31, further comprising: Determine the quantization displacement coefficient of at least one LOD in the current mesh, wherein the at least one LOD includes the current LOD; The quantized displacement coefficients of at least one LOD are filled into the two-dimensional image according to a preset filling method; and The two-dimensional image is encoded, and the resulting encoded bits are written into the bitstream.
37. The encoding method according to claim 36, further comprising: The value of the third syntax element is determined according to the preset filling method; as well as The value of the third syntax element is encoded, and the resulting encoded bits are written into the bitstream.
38. The encoding method according to any one of claims 20 to 37, wherein, The step of determining the reconstructed mesh of the next LOD in the current mesh based on the subdivision mesh of the current LOD and the displacement coefficient of the current LOD includes: Based on the displacement coefficient, the vertex coordinate information of the subdivided mesh of the current LOD is used to perform displacement calculation to obtain the reconstructed mesh of the next LOD in the current mesh.
39. The encoding method according to any one of claims 20-38, further comprising: When the current grid does not use a subdivision method, the value of the first syntax element is determined to be the first value; When the current grid uses the midpoint subdivision method, the value of the first syntax element is determined to be the second value; When the current grid uses a recursive subdivision method, the value of the first syntax element is determined to be the third value; and When the current grid uses a non-linear subdivision method, the value of the first syntax element is determined to be the fourth value.
40. The encoding method according to claim 39, further comprising: When the current grid uses a midpoint subdivision method, determine the base grid to be rebuilt; The reconstructed base mesh is subdivided to determine the subdivision mesh of at least one LOD in the current mesh; Determine the displacement coefficient of at least one LOD in the current mesh; as well as The reconstructed mesh of at least one LOD in the current mesh is determined based on the subdivision mesh of at least one LOD in the current mesh and the displacement coefficient of at least one LOD.
41. The encoding method according to claim 40, wherein, The number of layers of the at least one LOD is related to the number of subdivision iterations of the current mesh.
42. The method according to any one of claims 20-41, wherein, The preset value is 2.
43. A bitstream, wherein, The bitstream is generated by bit encoding based on information to be encoded; wherein the information to be encoded includes at least one of the following: The base grid of the current grid, the displacement coefficient of at least one LOD of the current grid, the quantization parameter of at least one LOD of the current grid, the quantization parameter increment of at least one LOD of the current grid, the value of the first syntax element, the value of the second syntax element, and the value of the third syntax element.
44. An encoder, comprising: The unit is defined and configured as follows: When the current grid uses a non-linear subdivision method, the value of the first syntax element is determined and written into the code stream. The reconstruction grid of the current LOD in the current grid is determined, and the reconstruction grid of the current LOD is subdivided to determine the subdivision grid of the current LOD. When the current LOD is the i-th LOD, the displacement coefficient of the first point of the current LOD is determined to be 0; where i is an integer greater than a preset value; the first point includes the vertex of the reconstructed base mesh corresponding to the current mesh; as well as Based on the subdivision mesh of the current LOD and the displacement coefficient of the current LOD, determine the reconstruction mesh of the next LOD in the current mesh.
45. An encoder, comprising: Memory is used to store computer programs that can run on a processor; The processor is configured to execute the encoding method as described in any one of claims 20-42 when running the computer program.
46. A decoder, comprising: The unit is defined and configured as follows: Decode the bitstream to determine the value of the first syntax element; When the value of the first syntax element indicates that the current grid uses a non-linear subdivision method, the reconstructed grid of the current LOD in the current grid is determined, and the reconstructed grid of the current LOD is subdivided to determine the subdivision grid of the current LOD; When the current LOD is the i-th LOD, the displacement coefficient of the first point of the current LOD is determined to be 0; where i is an integer greater than a preset value; the first point includes the vertex of the reconstructed base mesh corresponding to the current mesh; as well as Based on the subdivision mesh of the current LOD and the displacement coefficient of the first point of the current LOD, the reconstruction mesh of the next LOD in the current mesh is determined.
47. A decoder, comprising: Memory is used to store computer programs that can run on a processor; The processor is configured to execute the decoding method as described in any one of claims 1-19 when running the computer program.
48. A computer-readable storage medium having a computer program stored thereon, wherein, When the computer program is executed by at least one processor, it implements the decoding method as described in any one of claims 1-18, or the encoding method as described in any one of claims 20-42.
49. A computer program product comprising a computer program or instructions, wherein, When the computer program or instructions are executed by at least one processor, they implement the decoding method as described in any one of claims 1-19, or the encoding method as described in any one of claims 20-42.