Encoding method, decoding method, encoders, decoders, and storage medium

By using the rate-distortion cost of a single coordinate dimension to determine whether a motion vector skips encoding in 3D mesh encoding and decoding, the problem of low encoding and decoding efficiency in existing technologies is solved, and a more efficient encoding and decoding process is achieved.

WO2026143542A1PCT designated stage Publication Date: 2026-07-09GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP LTD

Patent Information

Authority / Receiving Office
WO · WO
Patent Type
Applications
Current Assignee / Owner
GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP LTD
Filing Date
2024-12-31
Publication Date
2026-07-09

Smart Images

  • Figure CN2024144637_09072026_PF_FP_ABST
    Figure CN2024144637_09072026_PF_FP_ABST
Patent Text Reader

Abstract

Provided in embodiments of the present application are an encoding method, a decoding method, encoders, decoders, and a storage medium. The decoding method comprises: decoding a code stream, and determining first identification information (S910), the first identification information being used for indicating whether to derive a component motion vector as a preset value, and the component motion vector being the motion vector of a vertex of the current group of the current frame; on the basis of the first identification information, determining geometric information of the vertex of the current group (S920); and, on the basis of the geometric information of the vertex of the current group, reconstructing a first basic mesh of the current frame (S930).
Need to check novelty before this filing date? Find Prior Art

Description

Encoding and decoding methods, codecs, and storage media Technical Field

[0001] This application relates to the field of three-dimensional mesh encoding and decoding technology, and in particular to an encoding and decoding method, an encoding and decoding codec, and a storage medium. Background Technology

[0002] Within the encoding and decoding framework of video dynamic mesh coding (V-DMC), when performing inter-frame prediction on the geometric information of a 3D mesh, it is necessary to encode and decode the motion vectors of the underlying mesh. Improving the encoding and decoding efficiency of the underlying mesh is a problem that needs to be solved. Summary of the Invention

[0003] This application provides an encoding / decoding method, an encoding / decoding method, and a storage medium. The various aspects covered in this application are described below.

[0004] In a first aspect, a decoding method is provided, applied to a decoder, comprising: decoding a bitstream; determining first identification information, the first identification information being used to indicate whether the derived component motion vector is a preset value, the component motion vector being a motion vector of a vertex in the current group of the current frame; determining the geometric information of the vertices in the current group based on the first identification information; and reconstructing a first basic mesh of the current frame based on the geometric information of the vertices in the current group.

[0005] In a second aspect, an encoding method is provided, applied to an encoder, comprising: determining the motion vector of the vertices of the current group in the current frame, the motion vector including at least one component motion vector; determining a first rate-distortion cost of the component motion vector according to a first prediction mode; and determining whether to derive a preset value for the component motion vector according to the first rate-distortion cost.

[0006] Thirdly, a decoder is provided, comprising: a first determining unit configured to decode a bitstream and determine first identification information, the first identification information being used to indicate whether the derived component motion vector is a preset value, the component motion vector being a motion vector of a vertex in the current group of the current frame; a second determining unit configured to determine the geometric information of the vertices in the current group based on the first identification information; and a reconstruction unit configured to reconstruct a first base mesh of the current frame based on the geometric information of the vertices in the current group.

[0007] Fourthly, a decoder is provided, comprising: a memory for storing a computer program; and a processor for executing the method of the first aspect when running the computer program.

[0008] Fifthly, an encoder is provided, comprising: a first determining unit configured to determine motion vectors of vertices of a current group in a current frame, the motion vectors including at least one component motion vector; a second determining unit configured to determine a first rate-distortion cost of the component motion vectors according to a first prediction mode; and a third determining unit configured to determine whether to derive a preset value for the component motion vectors according to the first rate-distortion cost.

[0009] In a sixth aspect, an encoder is provided, the encoder comprising: a memory for storing a computer program; and a processor for executing the method of the second aspect when running the computer program.

[0010] In a seventh aspect, a computer-readable storage medium is provided, wherein the computer-readable storage medium stores a computer program that, when executed, implements the method as described in the first or second aspect.

[0011] Eighthly, a non-volatile computer-readable storage medium is provided for storing a bit stream, the bit stream being generated by an encoding method using an encoder, or the bit stream being decoded by a decoding method using a decoder, wherein the decoding method is as described in the first aspect and the encoding method is as described in the second aspect.

[0012] Ninth aspect, a computer-readable storage medium is provided, which stores a bitstream generated according to the method of the second aspect.

[0013] When encoding motion vectors, related technologies determine whether to skip encoding a motion vector based on the total rate-distortion cost across its three coordinate dimensions. If encoding a motion vector is skipped, then no further encoding of motion vectors in a single coordinate dimension will be performed. This method cannot determine whether skipping encoding a motion vector in a single coordinate dimension is appropriate. In this embodiment, when encoding motion vectors for the base mesh, the determination of whether to skip encoding a motion vector in a single coordinate dimension is based on the rate-distortion cost corresponding to that dimension. This makes the determination of whether to skip encoding a motion vector in a single coordinate dimension more accurate, thereby helping to improve the encoding and decoding efficiency of the base mesh. Attached Figure Description

[0014] Figure 1A is a schematic diagram of a three-dimensional mesh image.

[0015] Figure 1B is a magnified view of a portion of the three-dimensional mesh image.

[0016] Figure 2 is a schematic diagram of the connection method of the three-dimensional mesh.

[0017] Figure 3A is a schematic diagram of a three-dimensional mesh image.

[0018] Figure 3B is a schematic diagram of the grid data storage format.

[0019] Figure 3C shows the attribute map of the three-dimensional mesh image.

[0020] Figure 4A is a schematic diagram of the mesh preprocessing process.

[0021] Figure 4B is a schematic diagram of how the shift coefficient is generated.

[0022] Figure 5A is an example diagram of the subdivision process of the basic grid.

[0023] Figure 5B is another example diagram of the subdivision process of the basic grid.

[0024] Figure 5C is another example diagram of the subdivision process of the basic grid.

[0025] Figure 6A is a schematic diagram of intra-frame coding.

[0026] Figure 6B is a schematic diagram of intra-frame decoding.

[0027] Figure 7A is a schematic diagram of inter-frame coding.

[0028] Figure 7B is a schematic diagram of the inter-frame decoding method.

[0029] Figure 8A is a schematic diagram of the base grid of the current frame.

[0030] Figure 8B is a schematic diagram of the base grid of the reference frame.

[0031] Figure 9 is a flowchart illustrating the decoding method provided in an embodiment of this application.

[0032] Figure 10 is a flowchart illustrating the encoding method provided in an embodiment of this application.

[0033] Figure 11 is a schematic diagram of the structure of a decoder provided in an embodiment of this application.

[0034] Figure 12 is a schematic diagram of the decoder provided in another embodiment of this application.

[0035] Figure 13 is a schematic diagram of the encoder provided in an embodiment of this application.

[0036] Figure 14 is a schematic diagram of the encoder provided in another embodiment of this application. Detailed Implementation

[0037] In order to gain a more detailed understanding of the features and technical content of the embodiments of this application, the implementation of the embodiments of this application 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 application.

[0038] Unless otherwise defined, all technical and scientific terms used herein have the same meaning as commonly understood by one of ordinary skill in the art to which this application belongs. The terminology used herein is for the purpose of describing embodiments of this application only and is not intended to limit this application.

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

[0040] It should also be noted that the terms "first, second, and third" used in the embodiments of this application are only used to distinguish similar objects and do not represent a specific order of objects. It is understood that "first, second, and third" can be interchanged in a specific order or sequence where permitted, so that the embodiments of this application described herein can be implemented in an order other than that illustrated or described herein.

[0041] 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 extremely large. Therefore, how to effectively store, transmit, and render them has become a problem facing the development of 3D dynamic meshes. Furthermore, spatial scalability of the mesh needs to be supported for different user terminals (computers, laptops, portable devices, mobile phones); different network bandwidths (broadband, narrowband, wireless) require support for quality scalability of the mesh. Therefore, 3D dynamic mesh compression is a very critical issue.

[0042] A 3D mesh is the surface of a 3D object composed of several polygons in space. A polygon can be composed of vertices and edges. Figure 1A shows an image of a 3D mesh, and Figure 1B shows a magnified view of a portion of the 3D mesh image. As can be seen from Figures 1A and 1B, the mesh surface is typically composed of multiple closed polygons.

[0043] Two-dimensional images have a regular pixel distribution, so there's no need to record their geometric information (or positional information). However, the distribution of vertices in a mesh in three-dimensional space is random and irregular, and the way the polygons are constructed requires additional recording. Therefore, for three-dimensional meshes, it's necessary to record not only the positions of the vertices in space but also the connection information of the polygons to fully represent a mesh image. As shown in Figure 2, with the same number of vertices and vertex positions, different connection methods result in completely different surfaces.

[0044] In addition to the information above, since 3D mesh images are typically encoded using existing 2D image / video coding methods, a transformation from 3D space to 2D space is required. 3D mesh encoding usually uses UV coordinates to define this transformation process.

[0045] Similar to two-dimensional images, each vertex may have corresponding attribute information. This attribute information is typically RGB color values ​​to reflect the object's color. For three-dimensional mesh images, in addition to color, a common attribute for each vertex is reflectance, which reflects the object's surface material. The attribute information of a three-dimensional mesh image can be stored using a two-dimensional image, and its mapping from two-dimensional to three-dimensional is defined by UV coordinates.

[0046] Therefore, 3D mesh data typically includes 3D geometric position information (x, y, z), the connectivity of geometric position triangular patches, texture coordinates (u, v), the connectivity of texture coordinates, and an attribute graph. Figure 3A shows a 3D mesh image, Figure 3B shows the mesh data storage format including 3D geometric position information, texture coordinates, and connectivity information, and Figure 3C shows the corresponding attribute graph.

[0047] Current methods for compressing 3D dynamic meshes include space-time prediction methods that improve compression efficiency by eliminating spatial and temporal correlations; principal component analysis (PCA) techniques that project energy into the eigenvector space; and wavelet-based methods that support both spatial and mass scalability.

[0048] Figure 4A is a schematic diagram of the two-dimensional curve preprocessing process. Figure 4B is a schematic diagram of the generation of shift coefficients. Currently, in the Moving Picture Experts Group (MPEG) dynamic mesh coding, at the encoding end, the base mesh and shift coefficients are first generated through preprocessing. The preprocessing process of the three-dimensional mesh can be compared with the two-dimensional curve preprocessing process. At the encoding end, it is mainly divided into two parts: preprocessing and encoding. First, the base mesh and shift coefficients can be generated through preprocessing. The preprocessing process includes: first, downsampling the original mesh to generate a simplified mesh (decimated mesh), or base mesh, with a significantly reduced number of vertices. Then, the simplified mesh is subdivided, and newly generated vertices are inserted on the edges of the simplified mesh to obtain the subdivided mesh (or initial mesh). Finally, for each vertex in the subdivided mesh, the point in the original mesh that is closest to it is found, and the displacement value between these two points is calculated. After preprocessing, the simplified mesh and shift coefficients are input into the encoder to generate the bitstream. Since the subdivision grid can be automatically generated at the encoder and decoder once the subdivision algorithm and the number of subdivision iterations are determined, after preprocessing, the original grid only needs to be represented as a simple basic grid and a series of shift coefficients. This can greatly reduce the amount of data and does not affect the reconstruction at the decoder.

[0049] The processing of the 3D base mesh is similar to that of the 2D mesh described above. Figures 5A to 5C illustrate a schematic diagram of the base mesh subdivision process. Figure 5A shows a base mesh containing only one triangle, and the vertices in Figure 5A are the vertices of the 3D base mesh. As shown in Figure 5B, the vertices added after one upsampling of the base mesh are the new vertices added in the first subdivision. As shown in Figure 5C, the vertices added after another upsampling of the base mesh are the new vertices added in the second subdivision. Figures 5A to 5C demonstrate a uniform bisection subdivision algorithm, where each subdivision divides one edge of the triangle in half from its midpoint, thus subdividing one triangle into four triangles. Other subdivision methods exist, such as dividing in half from a non-midpoint position or dividing one edge in three.

[0050] The current V-DMC encoding is mainly divided into two encoding test conditions: intra-frame encoding and decoding and inter-frame encoding and decoding (low latency, currently there is no RA test environment). The following text will introduce these two encoding and decoding methods in detail.

[0051] Figure 6A illustrates intra-frame coding. As shown in Figure 6A, in the intra-frame encoder, a common static mesh encoder can be used to encode the simplified mesh, generating the corresponding compressed base mesh bitstream. Next, the displacement coefficients are updated using the reconstructed simplified mesh. The updated displacement coefficients are then subjected to wavelet transform and quantization to obtain the final displacement coefficients. After image packing and 2D mapping, high-efficiency video coding (HEVC) is used for encoding, generating the compressed displacements bitstream. For attribute map encoding, the feature map is first transformed based on the difference between the reconstructed geometric information and the original geometric information. Then, it is padded, color space converted, and encoded using a video encoder to form the compressed attribute bitstream. Figure 6B is a schematic diagram of intra-frame decoding. As shown in Figure 6B, at the decoding end, the base grid bitstream is decoded to generate the decoded base grid. The shift coefficients are decoded by HEVC decoding, inverse 2D mapping, inverse quantization, and inverse transform to generate the decoded shift coefficients. Then, the decoded base grid and the decoded shift coefficients are used together to generate the reconstructed 3D grid geometry. The attribute bitstream is decoded by HEVC to generate the reconstructed attribute map.

[0052] Figure 7A is a schematic diagram of inter-frame coding. As shown in Figure 7A, at the encoding end, the inter-frame encoder process is roughly the same as the intra-frame encoder process. Since inter-frame mode is used, for the basic mesh part, it is not necessary to encode its connection information. It is only necessary to encode the motion vector between the vertex geometric coordinates of the current frame and the vertex geometric coordinates of the reference frame. The remaining modules are consistent with intra-frame coding, and the corresponding compressed motion bitstream is generated. Figure 7B is a schematic diagram of inter-frame decoding. As shown in Figure 7B, at the decoding end, the motion vector is decoded from the bitstream and combined with the connection information of the reference frame to obtain the basic mesh. The remaining modules are consistent with intra-frame decoding.

[0053] General test conditions for MPEG DMC

[0054] 1) There are two test conditions for MPEG DMC:

[0055] Condition 1: lossless all intra-geometric lossless, attribute lossless;

[0056] Condition 2: lossy all intra-geometric lossy and attribute lossy;

[0057] Condition 3: lossy random access is geometrically and attribute-lossy.

[0058] 2) The general test sequences include five categories: Cat1-A, Cat1-B, and Cat1-C, all of which contain geometric and color attribute information.

[0059] To facilitate understanding, the concepts involved in the encoding and decoding process of inter-frame prediction will be explained in detail below.

[0060] As mentioned above, motion vectors need to be encoded during inter-frame coding. These motion vectors are the differences in geometric coordinates between the vertices of the current frame and their corresponding vertices in the reference frame (e.g., vertices with the same index in the reference frame as the current frame's vertex). For example, taking vertex i as an example, the vertex corresponding to vertex i in the reference frame is i', and the motion vector of vertex i can be expressed as: (m ix ,m iy ,m iz )=(P ix ,P iy ,P iz )―P′ ix ,P′ iy ,P′ iz ).

[0061] The base meshes of the current frame and the reference frame have the same connectivity information; the only difference is their vertex coordinates. For example, Figure 8A shows the base mesh of the current frame, and Figure 8B shows the base mesh of the reference frame. As can be seen from Figures 8A and 8B, the base meshes of the current frame and the reference frame have the same connectivity relationships.

[0062] In the basic mesh, there are some vertices with the same coordinate values; these vertices can be called repeating points.

[0063] Vertex coordinates in the base mesh are encoded and decoded in groups. Assume the base mesh has a total of N vertices, with vertex indices from 0, 1, 2, ..., N-2, N-1, and a group size of G, where G represents the number of non-repeating vertices in each group; the number of non-repeating vertices in the last group is an integer from 1 to G. The group size is a set value, written to the bitstream from the encoding end, and read from the bitstream by the decoding end.

[0064] At the encoding end, the three coordinate dimensions of the motion vectors of all vertices in the same group are determined by group to see if encoding is skipped. If encoding is skipped, the motion vector values ​​of all vertices in the group do not need to be encoded, and the motion vectors of all vertices in the group are set to 0. If encoding is not skipped, the prediction mode of the three coordinate dimensions of all vertices in the same group is determined by group, the predicted value of the motion vector is calculated according to the prediction mode, thereby determining the motion vector residual, and the motion vector residual value is encoded.

[0065] At the decoding end, the three coordinate dimensions of the motion vectors of all vertices within the same group are determined to determine whether decoding should be skipped. If decoding is skipped, there is no need to parse the bitstream to determine the motion vector values ​​of all vertices within the group; the motion vectors of all vertices within the group are directly set to 0. If decoding is not skipped, the prediction mode of the three coordinate dimensions of all vertices within the same group is determined, the predicted value of the motion vector is calculated based on the prediction mode, and the motion vector residual value is determined by parsing the bitstream, thereby determining the decoded value of the motion vector. Finally, the relevant syntax elements are encoded and decoded according to whether the three coordinate dimensions of the motion vector are skipped. The specific implementation methods at the encoding and decoding end are described in detail below.

[0066] Encoding end

[0067] The first step is to calculate the rate-distortion cost based on the motion vector residuals under different coding modes. cost[i][k] represents the rate-distortion cost of the coding mode corresponding to index i in the k-th coordinate dimension, expressed as: cost[i][k]=r+λ×D (1)

[0068] Where r represents the bitrate cost calculated based on the motion vector residual, and the motion vector residual res[i][k] is the difference between the original motion vector value and the predicted motion vector value; D represents the distortion cost calculated based on the original motion vector value and the decoded motion vector value m'[k]; λ is a predefined constant. res[i][k] can be expressed as: res[i][k]=m[k]―p[i][k] (2)

[0069] In the second step, for the skip encoding mode, the motion vector is not encoded, and the decoding value of the motion vector is directly set to 0. At this time, the rate cost is 0, and the rate distortion cost corresponding to the skip encoding mode is simplified to: cost[i][k]=λ×D (3)

[0070] For different prediction modes, the decoded value of the motion vector is the same as the original value of the motion vector, that is, there is no distortion. At this time, the rate-distortion cost corresponding to different prediction modes is simplified to: cost[i][k]=r (4)

[0071] The above rate-distortion cost is calculated on a group basis, that is, the rate-distortion cost corresponding to a group is the sum of the rate-distortion costs of all vertices in the group, and λ is a constant value of 560.

[0072] The third step is to determine the encoding pattern with the minimum rate-distortion cost based on the total rate-distortion cost cost[i][0] + cost[i][1] + cost[i][2] across the three coordinate dimensions for each encoding pattern. If the total rate-distortion cost of the skip encoding pattern is the minimum, then the overall skip encoding syntax element is determined to indicate skip encoding (e.g., a value of 1), and the overall skip encoding syntax element is encoded.

[0073] If the total rate-distortion cost is not minimized by skipping the coding pattern, then the overall skip coding syntax element is determined to indicate that the coding is not skipped in all three coordinate dimensions (e.g., the value is 0), and for k = 0, 1, 2 (corresponding to x, y, and z coordinates respectively), the coding pattern with the minimum rate-distortion cost is determined respectively.

[0074] If the rate-distortion cost of skipping the coding mode is minimized, then the skip coding syntax element for the motion vector in the k-coordinate dimension is determined to indicate skipping coding (e.g., a value of 1). If the rate-distortion cost of skipping the coding mode is not minimized, then the skip coding syntax element for the motion vector in the k-coordinate dimension is determined to indicate not skipping coding (e.g., a value of 0), and the prediction mode syntax element for the motion vector in the k-coordinate dimension is determined to indicate the coding mode with the minimum rate-distortion cost.

[0075] If the skip encoding syntax elements corresponding to the motion vectors in the first two coordinate dimensions both indicate skipping (e.g., a value of 1), then the skip encoding syntax elements of the overall motion vector and the skip encoding syntax elements corresponding to the motion vectors in the first two coordinate dimensions are encoded. And according to the skip encoding syntax elements corresponding to the motion vectors in each coordinate dimension, when they indicate not to skip encoding (e.g., a value of 0), the prediction mode syntax element of the motion vector in that coordinate dimension is encoded.

[0076] If the skip encoding syntax elements corresponding to the motion vectors in the first two coordinate dimensions do not all indicate skip encoding, then the overall motion vector skip encoding syntax elements and the skip encoding syntax elements corresponding to the motion vectors in the three coordinate dimensions are encoded. And according to the skip encoding syntax element of the motion vector in each coordinate dimension, when it indicates no skip encoding (e.g., a value of 0), the prediction mode syntax element of the motion vector in that coordinate dimension is encoded.

[0077] Decoding end

[0078] The skip encoding syntax element for decoding the overall motion vector is determined as follows: If the syntax element indicates no skipping of decoding (e.g., a value of 0), then for the motion vector in the k-coordinate dimension (k = 0, 1, 2 corresponding to x, y, and z coordinates respectively), the skip encoding syntax elements corresponding to the motion vectors in the first two coordinate dimensions are decoded first. If both syntax elements indicate skipping of decoding (e.g., a value of 1), then the skip encoding syntax elements for the motion vector in the third coordinate dimension are deduced to indicate no skipping of decoding (e.g., a value of 0). Based on the skip encoding syntax elements for each coordinate dimension, when they indicate no skipping of decoding (e.g., a value of 0), the prediction mode syntax element for the motion vector in that coordinate dimension is decoded. If the skip encoding syntax elements corresponding to the motion vectors in the first two coordinate dimensions do not both indicate skipping of decoding, then the skip encoding syntax element for the motion vector in the third coordinate dimension is decoded. Based on the skip encoding syntax elements for each coordinate dimension, when they indicate no skipping of decoding (e.g., a value of 0), the prediction mode syntax element for the motion vector in that coordinate dimension is decoded.

[0079] As described above, related technologies determine whether to skip encoding a motion vector based on the total rate-distortion cost across its three coordinate dimensions. If encoding the motion vector is skipped, then no further encoding of motion vectors in a single coordinate dimension will be performed. This approach cannot determine whether skipping encoding motion vectors in a single coordinate dimension is appropriate, thus reducing the encoding and decoding efficiency of the underlying mesh.

[0080] For ease of understanding, Table 1 is used as an example below to describe the problems with the encoding methods of motion vectors in related technologies.

[0081] Table 1

[0082] If relevant techniques are used, the total rate-distortion cost of motion vectors in the three coordinate dimensions for each encoding mode is first calculated. As shown in Table 1, the total rate-distortion cost is 7 for prediction modes 1 to 3; and 6 for skip encoding mode. In other words, for the motion vector as a whole (including the three coordinate dimensions), the total rate-distortion cost corresponding to the skip encoding mode is less than that of the prediction mode, thus determining the overall skip encoding syntax element to indicate skip encoding; simultaneously, skip encoding syntax elements for motion vectors in each coordinate dimension are not encoded, meaning that motion vectors in each coordinate dimension are not encoded by default.

[0083] However, as shown in Table 1, when the coordinate dimension K=2, the rate-distortion cost corresponding to prediction based on prediction mode 2 is the minimum. If judged based on the rate-distortion cost of a single coordinate dimension, motion vectors with coordinate dimension K=2 should not be skipped in encoding. However, in related technologies, the encoding of motion vectors in that coordinate dimension is skipped based on the total rate-distortion cost. This approach is clearly unreasonable and reduces the encoding and decoding efficiency of the base mesh.

[0084] To address the aforementioned issues, this application provides an encoding method comprising: determining the motion vector of the vertices of the current group in the current frame, the motion vector including at least one component motion vector; determining a first rate-distortion cost of the component motion vector according to a first prediction mode; and determining whether to derive the component motion vector as a preset value based on the first rate-distortion cost.

[0085] This application embodiment also provides a decoding method, including: decoding a bitstream, determining first identification information, the first identification information being used to indicate whether the component motion vector is derived to a preset value, the component motion vector being a motion vector of a vertex in the current group of the current frame; determining the geometric information of the vertices in the current group based on the first identification information; and reconstructing a first base mesh of the current frame based on the geometric information of the vertices in the current group.

[0086] In this embodiment, when encoding the motion vectors of the base mesh, the method determines whether to skip encoding the motion vector in a single coordinate dimension based on the rate-distortion cost corresponding to that motion vector. This makes the determination of whether to skip encoding a motion vector in a single coordinate dimension more accurate, thereby improving the encoding and decoding efficiency of the base mesh.

[0087] The decoding method provided in the embodiments of this application will be described in detail below with reference to the accompanying drawings.

[0088] Figure 9 is a flowchart of a decoding method provided in an embodiment of this application. The method in Figure 9 can be executed by a decoder. This decoder can be a decoder that supports V-DMC.

[0089] Referring to Figure 9, in step S910, the bitstream is decoded, and the first identification information is determined. The first identification information is used to indicate whether the derived component motion vector is a preset value. Here, the component motion vector belongs to the motion vector of the vertex of the current group in the current frame.

[0090] It should be understood that the preset value for the derived component motion vector in this embodiment can be interpreted as meaning that the component motion vector does not need to be encoded into the bitstream at the encoding end, nor does it need to be parsed from the bitstream at the decoding end. That is, the preset value here can be set to 0, or other values ​​close to 0, i.e., the residual value of the component motion vector does not need to be encoded or decoded. Alternatively, the preset value for the derived component motion vector can also be understood as skipping the encoding and decoding of the component motion vector.

[0091] The component motion vector is the motion vector belonging to the vertices of the current group. The motion vector of the vertices in the current group can be understood as the motion vector of all vertices in the current group. Here, the vertices of the current group belong to the first base grid of the current frame. The vertices in the first base grid can be divided into one or more groups of vertices. The vertices of the current group can belong to any group of vertices within that one or more groups.

[0092] The first base mesh can be determined based on the 3D mesh of the current frame. For example, the 3D mesh of the current frame can generate the base mesh and shift coefficients.

[0093] Taking the first base mesh of the current frame as including the first group of vertices and the second base mesh of the reference frame as including the second group of vertices as an example, the motion vector mentioned above can be related to the geometric information of the first group of vertices and the geometric information of the second group of vertices.

[0094] The second set of vertices can be a set of vertices based on a second base mesh derived from a reference frame. Points in the second set of vertices can correspond to points in the first set. This correspondence can mean a one-to-one correspondence between the indices of points in the first base mesh and the indices of points in the second base mesh.

[0095] For example, the motion vector of the first group of vertices can be determined based on the difference between the coordinate values ​​of the first group of vertices and the coordinate values ​​of the second group of vertices.

[0096] For example, taking vertex i as an example, the vertex corresponding to vertex i in the reference frame is i', and the motion vector of vertex i can be expressed as: (m ix ,m iy ,m iz )=(P ix ,P iy ,P iz )―(P′ ix ,P′ iy ,P′ iz ).

[0097] The motion vector of the vertices in the current group can have one or more component motion vectors, such as a first component motion vector, a second component motion vector, and a third component motion vector. Component motion vectors can also be understood as motion vectors in each coordinate dimension; for example, a component motion vector can include a motion vector in the x-coordinate dimension, a motion vector in the y-coordinate dimension, and a motion vector in the z-coordinate dimension. The component motion vector mentioned in step S910 can be any one of multiple coordinate dimensions. It should be understood that the terms "component" and "coordinate dimension" are used interchangeably in the following text.

[0098] In some implementations, if the first identification information indicates that the derived component motion vector is not a preset value, the bitstream is decoded to determine the first index information. The first index information is used to indicate the target prediction mode of the component motion vector. The target prediction mode is used to predict the component motion vector, thereby determining the predicted value of the component motion vector.

[0099] If the first identification information indicates that the derived component motion vector is a preset value, then the component motion vector is set to 0. In other words, there is no need to encode or decode the residual value of the component motion vector.

[0100] The decoding method provided in this application will be described in detail below with reference to Embodiment 1.

[0101] Example 1

[0102] Decode the motion vector in the k-coordinate dimension (k = 0, 1, 2 correspond to the x-coordinate dimension, y-coordinate dimension, and z-coordinate dimension, respectively). First, decode the skip encoding syntax element of the motion vector in the k-coordinate dimension. When the syntax element indicates not to skip decoding (e.g., a value of 0), decode the prediction mode syntax element of the motion vector in that coordinate dimension and determine the predicted value of the motion vector in that coordinate dimension through prediction. When the syntax element indicates to skip decoding (e.g., a value of 1), directly set the motion vector in that coordinate dimension to 0.

[0103] In this embodiment, when decoding motion vectors of the base grid, the method determines whether to skip decoding of a single coordinate dimension's motion vector based on the syntax element corresponding to that motion vector. This makes the determination of whether to skip decoding a single coordinate dimension's motion vector more accurate, thereby improving the decoding efficiency of motion vectors. Furthermore, a syntax element can also be set for a whole motion vector (i.e., including all three coordinate dimensions) to determine whether to skip decoding of that whole motion vector. In some cases, such as at the encoding end, if it is determined that none of the three coordinate dimensions' motion vectors need to be encoded, a single syntax element can be set to indicate that all three coordinate dimensions' motion vectors should be skipped. In this case, compared to setting syntax elements for three individual coordinate dimension motion vectors, setting a syntax element for a whole motion vector saves codewords, thereby improving encoding and decoding efficiency.

[0104] In some implementations, the second identifier information can be decoded before the first identifier information. This second identifier information can be used to indicate whether to derive the overall motion vector to a preset value, or in other words, whether to skip decoding the overall motion vector.

[0105] Furthermore, if the second identifier indicates that the overall motion vector is not derived to a preset value, then the first identifier can be decoded to determine whether to derive the component motion vector to a preset value. Alternatively, if the second identifier indicates that the overall motion vector is derived to a preset value, then decoding the first identifier can be skipped, i.e., decoding the component motion vectors can be skipped, meaning that the motion vector for each coordinate dimension is no longer decoded.

[0106] The decoding method provided in this application will be described in detail below with reference to Embodiment 2.

[0107] Example 2

[0108] The code snippet defines the skip encoding syntax element for decoding the overall motion vector. If this element indicates skip decoding (e.g., a value of 1), then for motion vectors in the k-coordinate dimension (k = 0, 1, 2 corresponding to the x, y, and z coordinate dimensions respectively), the corresponding skip encoding syntax element is not decoded further, and the motion vector in each coordinate dimension is set to 0. If this element indicates not to skip decoding (e.g., a value of 0), then for motion vectors in the k-coordinate dimension, the skip encoding syntax element for that motion vector is decoded. If this element indicates not to skip decoding (e.g., a value of 0), the prediction mode syntax element for the motion vector in that coordinate dimension is decoded; if this element indicates skip decoding (e.g., a value of 1), then the motion vector in that coordinate dimension is set to 0.

[0109] In some cases, setting a skip encoding syntax element for the overall motion vector (such as the second identifier information) can save some skip encoding syntax elements for individual coordinate dimensions of the motion vector. For example, at the encoding end, if it is determined that the motion vectors in the first two coordinate dimensions do not need to be encoded, but the motion vector in the third coordinate dimension does need to be encoded, then a skip encoding syntax element for the overall motion vector and skip encoding syntax elements corresponding to the motion vectors in the first two coordinate dimensions can be set, with the skip encoding syntax element for the third coordinate dimension set to a default value, indicating that the motion vector in the third coordinate dimension does not skip encoding. At the decoding end, by using the skip encoding syntax element for the overall motion vector to indicate that the motion vector needs to be decoded, and based on the decoding status of the motion vectors in the first two coordinate dimensions, the default value of the skip encoding syntax element for the motion vector can be derived, indicating that the motion vector needs to be decoded. Since it is no longer necessary to set a skip encoding syntax element for the motion vector in the third coordinate dimension, codewords can be saved, thereby helping to improve the efficiency of encoding and decoding.

[0110] Taking a component motion vector including a first component motion vector, a second component motion vector, and a third component motion vector as an example, in some implementations, if the second identifier information indicates that the overall motion vector is not deduced to a preset value, and if it is determined that the first identifier information of both the first and second component motion vectors indicates that the deduced value is a preset value, then the first identifier information of the third component motion vector is deduced to be a default value (such as the first value). That is, the third component motion vector is not deduced to a preset value by default, or in other words, the third component motion vector is decoded by default. It should be understood that the first identifier information of the third component motion vector here is a default value, which is not obtained from the bitstream. That is, whether the third component motion vector skips encoding and decoding does not depend on the indication of the syntax element, but can be inferred based on the decoding status of other component motion vectors and the second identifier information.

[0111] In other implementations, when the second identification information indicates that the motion vector is to be decoded, if it is determined that the first identification information of the first component motion vector and / or the second component motion vector does not derive a preset value, then the bitstream is decoded to determine the first identification information of the third component motion vector. This first identification information is used to indicate whether the third component motion vector is derived to a preset value. That is, when decoding is involved in the first two component motion vectors, the third component motion vector needs to rely on the indication of the syntax element to confirm whether to skip decoding. Further, if the first identification information indicates that the third component motion vector does not derive a preset value, then the bitstream can be decoded to determine the second index information. The second index information is used to indicate the second prediction mode of the third component motion vector.

[0112] The decoding method provided in this application will be described in detail below with reference to Embodiment 3.

[0113] Example 3

[0114] The code decodes the overall skip encoding syntax element. If the syntax element indicates no skipping of decoding (e.g., a value of 0), then for motion vectors in the k-coordinate dimension (k = 0, 1, 2 corresponding to the x, y, and z coordinate dimensions respectively), it first decodes the skip encoding syntax elements corresponding to the first two coordinate dimensions. If both of these syntax elements indicate skipping decoding (e.g., a value of 1), it derives the skip encoding syntax element for the motion vector in the third coordinate dimension to indicate no skipping of decoding (e.g., a value of 0). In other words, this skip encoding syntax element is not obtained from the bitstream, but its value is determined in a predefined manner at the encoding / decoding end. Finally, it decodes the prediction mode syntax element for this motion vector. If the skip encoding syntax elements corresponding to the motion vectors in the first two coordinate dimensions do not both indicate skipping of decoding, it decodes the skip encoding syntax element for the motion vector in the third coordinate dimension. For motion vectors in the k-coordinate dimension that do not skip decoding, it decodes the prediction mode syntax element for that motion vector.

[0115] In step S920, the geometric information of the vertices of the current group is determined based on the first identification information.

[0116] Taking the vertices of the current group as an example, which includes the vertices of the first group, the motion vectors of the vertices of the first group can be related to the geometric information of the vertices of the first group and the geometric information of the vertices of the second group.

[0117] The second set of vertices mentioned above can be determined based on a reference frame; in other words, the second set of vertices belongs to the second base grid of the reference frame. Points in the second set of vertices correspond to points in the first set of vertices. This correspondence can mean a one-to-one correspondence between the indices of points in the first base grid and the indices of points in the second base grid.

[0118] The first identifier may indicate that the derived component motion vector is a preset value, or it may indicate that the non-derived component motion vector is a preset value. In other words, the first set of vertices may include two possible determination methods.

[0119] For example, if the first identification information indicates that the deduced component motion vector is a preset value, then the bitstream can be decoded to determine the residual value of the component motion vector; then, based on the residual value and the predicted value of the component motion vector, the reconstructed value of the component motion vector is determined; finally, based on the reconstructed value of the component motion vector and the geometric information of the second group of vertices, the geometric information of the first group of vertices is determined.

[0120] The reconstructed value mentioned above can also be called the decoded value. Methods for determining this reconstructed value may include, for example, using the sum of the residual value of the component motion vector and the predicted value of the component motion vector as the reconstructed value of the component motion vector.

[0121] The method for determining the geometric information of the first group of vertices mentioned above may include, for example, determining the vertex coordinates of the first group of vertices based on the reconstructed values ​​of the component motion vectors and the vertex coordinates of the second group of vertices; and then determining the geometric information of the first group of vertices based on the vertex coordinates of the first group of vertices and the connection information between each vertex of the second group of vertices.

[0122] For example, if the first identifier indicates that the derivation component motion vector is a preset value, then the geometric information of the first group of vertices can be determined based on the geometric information of the second group of vertices. For instance, the geometric information of the second vertices, such as vertex coordinates and the connection relationships between vertices, can be used as the geometric information of the first group of vertices.

[0123] Referring again to Figure 9, in step S930, the first base mesh of the current frame is reconstructed based on the geometric information of the vertices of the current group.

[0124] For example, the geometric information of the vertices of the current group in the three coordinate dimensions can be determined through the above steps S910 and S920; then the first base mesh can be reconstructed based on the geometric information of the vertices of the current group.

[0125] Taking the first basic mesh of the current frame as including the first group of vertices and the second basic mesh of the reference frame as including the second group of vertices as an example, the method of performing step S930 may include: reconstructing the first basic mesh based on the coordinate information of the first group of vertices and the connection information of the second group of vertices.

[0126] The first basic mesh may include one or more sets of vertices. If the first basic mesh includes multiple sets of vertices, the geometric information of the multiple sets of vertices can be determined according to steps S910 to S930 above; then, the first basic mesh is reconstructed based on the geometric information of the multiple sets of vertices.

[0127] In some implementations, such as the decoding method shown in Figure 9, the method may further include: determining the three-dimensional grid of the current frame based on the shift coefficients and the first basic grid. The determination of the shift coefficients may, for example, involve: decoding the bitstream to determine the quantized shift coefficients; then performing inverse quantization on the quantized shift coefficients to determine the shift coefficients themselves.

[0128] The decoding method provided by the embodiments of this application has been described in detail above with reference to Figure 9. The encoding method provided by the embodiments of this application will be described in detail below with reference to Figure 10.

[0129] Figure 10 is a flowchart of the encoding method provided in an embodiment of this application. The method in Figure 10 can be executed by an encoder. The encoder can be an encoder that supports V-DMC.

[0130] Referring to Figure 10, in step S1010, the motion vectors of the vertices of the current group in the current frame are determined. These motion vectors include at least one component motion vector.

[0131] The component motion vector is the motion vector belonging to the vertices of the current group. The motion vector of the vertices in the current group can be understood as the motion vector of all vertices in the current group. Here, the vertices of the current group can belong to the first base grid of the current frame. The vertices in the first base grid can be divided into one or more groups of vertices. The vertices of the current group can belong to any group of vertices within that one or more groups.

[0132] The first base mesh can be determined based on the 3D mesh of the current frame. For example, the 3D mesh of the current frame can generate the base mesh and shift coefficients.

[0133] Taking the first base mesh of the current frame as including the first group of vertices and the second base mesh of the reference frame as including the second group of vertices as an example, the motion vector mentioned above can be related to the geometric information of the first group of vertices and the geometric information of the second group of vertices.

[0134] The second set of vertices can be a set of vertices based on a second base mesh derived from a reference frame. Points in the second set of vertices can correspond to points in the first set. This correspondence can mean a one-to-one correspondence between the indices of points in the first base mesh and the indices of points in the second base mesh.

[0135] For example, the motion vector of the first group of vertices can be determined based on the difference between the coordinate values ​​of the first group of vertices and the coordinate values ​​of the second group of vertices.

[0136] For example, taking vertex i as an example, the vertex corresponding to vertex i in the reference frame is i', and the motion vector of vertex i can be expressed as: (m ix ,m iy ,m iz )=(P ix ,P iy ,P iz )―(P′ ix ,P′ iy ,P′ iz ).

[0137] The motion vector of the vertices in the current group can have one or more component motion vectors, such as a first component motion vector, a second component motion vector, and a third component motion vector. A component motion vector can also be understood as a motion vector in each coordinate dimension; for example, it can include a motion vector in the x-coordinate dimension, a motion vector in the y-coordinate dimension, and a motion vector in the z-coordinate dimension. The component motion vector mentioned in step S1010 can be any one of multiple coordinate dimensions. It should be understood that the terms "component" and "coordinate dimension" are used interchangeably in the following text.

[0138] In step S1020, the first truth cost of the component motion vector is determined according to the first prediction mode.

[0139] The component motion vectors mentioned above can correspond to multiple first prediction modes. Furthermore, the first prediction mode can include a target prediction mode, which is the prediction mode corresponding to the minimum rate-distortion cost among the multiple first prediction modes. In other words, among the multiple first prediction modes, the prediction of the component motion vectors based on the target prediction mode has the minimum rate-distortion cost.

[0140] For example, the first rate-distortion cost can be determined based on the first bit rate cost and the first distortion cost. Here, the first bit rate cost can be determined based on the residual value of the component motion vector. The first distortion cost can be determined based on the reconstructed value of the component motion vector.

[0141] For example, the cost of first rate distortion can be expressed as: cost[i][k]=r+λ×D (5)

[0142] Wherein, the first rate-distortion cost, i.e., cost[i][k], represents the rate-distortion cost of the motion vector of the prediction mode corresponding to index i in the k-th coordinate dimension; r represents the bit rate cost calculated based on the residual value of the motion vector (i.e., the first bit rate cost), and the residual value of the motion vector res[i][k] is the difference between the original value of the motion vector and the predicted value of the motion vector; D represents the distortion cost calculated based on the original value of the motion vector and the reconstructed value m'[k] of the motion vector (i.e., the first distortion cost); λ is a predefined constant.

[0143] res[i][k] can be represented as: res[i][k] = m[k] - p[i][k] (6)

[0144] Furthermore, the first rate distortion cost can also be determined solely based on the first bit rate cost. In other words, the first rate distortion cost can be expressed as the first bit rate cost.

[0145] For example, for different prediction modes, the reconstructed value of the motion vector is basically the same as the original value of the motion vector, which can be understood as no distortion. In this case, the first rate distortion cost corresponding to different prediction modes can be simplified to: cost[i][k]=r (7)

[0146] Wherein, the first rate-distortion cost, i.e., cost[i][k], represents the rate-distortion cost of the motion vector of the prediction mode corresponding to index i in the k-th coordinate dimension; r represents the bit rate cost (i.e., the first bit rate cost) calculated based on the motion vector residual.

[0147] In step S1030, based on the first rate distortion cost, it is determined whether to derive the component motion vector as a preset value.

[0148] It should be understood that the preset value for the derived component motion vector in this embodiment can be interpreted as meaning that the component motion vector does not need to be encoded into the bitstream at the encoding end, nor does it need to be parsed from the bitstream at the decoding end. That is, the preset value here can be set to 0, or other values ​​close to 0, i.e., the residual value of the component motion vector does not need to be encoded or decoded. Alternatively, the preset value for the derived component motion vector can also be understood as skipping the encoding and decoding of the component motion vector.

[0149] In some implementations, step S1030 may include: determining whether to derive a preset value for the component motion vector based on a first rate-distortion cost and a second rate-distortion cost. The second rate-distortion cost is the rate-distortion cost corresponding to deriving the preset value for the component motion vector.

[0150] For example, if the first rate-distortion cost is greater than or equal to the second rate-distortion cost, the derivation component motion vector is determined to be a preset value, i.e., the coded component motion vector is skipped; or, if the first rate-distortion cost is less than the second rate-distortion cost, the derivation component motion vector is determined to be a preset value, i.e., the coded component motion vector is not derived.

[0151] The second rate-distortion cost mentioned above can be determined based on the first parameter and the first distortion cost. The first distortion cost is determined based on the reconstructed value of the component motion vector.

[0152] For example, continuing to refer to formula (5) above, for the skip coding mode, where motion vectors are not encoded, the reconstructed value of the motion vector can be directly set to 0. At this time, the bit rate cost is 0, and the second rate distortion cost can be simplified to: cost[i][k]=λ×D (8)

[0153] Wherein, the second rate-distortion cost, i.e., cost[i][k], represents the rate-distortion cost of the motion vector of the prediction mode corresponding to index i in the k-th coordinate dimension; D represents the distortion cost (i.e., the first distortion cost) calculated based on the original value of the motion vector and the reconstructed value m'[k] of the motion vector; λ is the first parameter.

[0154] In related technologies, the first parameter (such as λ in formula (3)) is a predefined constant, and the above rate-distortion cost is calculated on a group basis, that is, the rate-distortion cost corresponding to each group of vertices is the sum of the rate-distortion costs of all vertices in the group. Therefore, the magnitude of the second rate-distortion cost is related to the number of vertices in the group.

[0155] Therefore, in this embodiment, the first parameter can be set to be related to the number of vertices in the current group, or in other words, positively correlated with the number of vertices in the current group, thereby improving the accuracy of the calculated rate-distortion cost, that is, improving the accuracy of the predicted motion vector, which helps to improve the efficiency of encoding and decoding.

[0156] For example, the first parameter can be determined based on the product of a first preset value and the second parameter. Here, the second parameter is used to represent the number of vertices in the current group.

[0157] For example, the first parameter can be expressed as: λ = gSize × C (9)

[0158] The first parameter is λ; C is the first preset value, such as 25, 26, 30, 35, etc.; the second parameter is gSize, which represents the number of vertices in the current group, or a value that is positively correlated with the number of vertices in the current group.

[0159] After determining whether to derive the component motion vector to a preset value based on the encoding method in Figure 10, in some implementations, the first identification information can be written into the bitstream. The first identification information is used to indicate whether to derive the component motion vector to a preset value, that is, whether to skip encoding the component motion vector.

[0160] Furthermore, if it is determined that the motion vector of the non-derived component is a preset value, that is, the motion vector of the coded component is determined, then the first index information can be written into the bitstream. The first index information is used to indicate the target prediction mode.

[0161] The encoding method provided in this application will be described in detail below with reference to Embodiment 1.

[0162] Example 1

[0163] For a motion vector with k-coordinate dimension (k = 0, 1, 2 corresponding to x-coordinate dimension, y-coordinate dimension, and z-coordinate dimension, respectively), determine the encoding mode with the minimum rate-distortion cost. If the skip encoding mode corresponds to the minimum rate-distortion cost, then determine that the skip encoding syntax element of the motion vector indicates skip encoding (e.g., a value of 1), and encode the skip encoding syntax element of the motion vector; otherwise, if the skip encoding mode does not correspond to the minimum rate-distortion cost, then determine that the skip encoding syntax element of the motion vector indicates no skip encoding (e.g., a value of 0), and determine the prediction mode with the minimum rate-distortion cost corresponding to it, and encode the skip encoding syntax element and prediction mode syntax element of the motion vector.

[0164] In this embodiment, when encoding motion vectors of the base grid, the method determines whether to skip encoding the motion vector in a single coordinate dimension based on the rate-distortion cost corresponding to that motion vector. This makes the determination of whether to skip encoding a motion vector in a single coordinate dimension more accurate, thereby helping to improve the encoding and decoding efficiency of the base grid.

[0165] Furthermore, a syntax element can be set for a single motion vector (i.e., including all three coordinate dimensions) to determine whether to skip that entire motion vector. In some cases, such as at the encoding end, if it is determined that none of the motion vectors in the three coordinate dimensions need to be encoded, a syntax element can be set to indicate that all three motion vectors in the three coordinate dimensions should be skipped. In this case, compared to setting syntax elements for three individual motion vectors, setting a syntax element for a single motion vector can save codewords, thereby helping to improve the efficiency of encoding and decoding.

[0166] In some implementations, the second identifier information can be written into the bitstream. This second identifier information can be used to indicate whether to derive the overall motion vector to a preset value, or in other words, whether to skip encoding the overall motion vector.

[0167] Furthermore, if at least one component motion vector among the multiple component motion vectors is not derived to a preset value, the second identification information indicates that the overall motion vector is not derived to a preset value, i.e., the overall motion vector is encoded; or, if none of the component motion vectors in the motion vector are derived to preset values, the second identification information indicates that the overall motion vector is derived to a preset value, i.e., the encoding of the overall motion vector is skipped. In other words, the motion vector for each coordinate dimension is no longer encoded.

[0168] The encoding method provided in this application will be described in detail below with reference to Embodiment 2.

[0169] Example 2

[0170] For a motion vector with k coordinate dimensions (k = 0, 1, 2 corresponding to the x, y, and z coordinate dimensions respectively), determine the encoding mode with the minimum rate-distortion cost. If the skip encoding mode has the minimum rate-distortion cost, then the skip encoding syntax element for that motion vector is determined to indicate skip encoding (e.g., a value of 1); otherwise, if the skip encoding mode does not have the minimum rate-distortion cost, then the skip encoding syntax element for that motion vector is determined to indicate not skip encoding (e.g., a value of 0), and the corresponding prediction mode with the minimum rate-distortion cost is determined.

[0171] If the skip coding syntax elements for motion vectors in all three coordinate dimensions indicate skip coding, then the skip coding syntax element for the overall motion vector indicates that all three coordinate dimensions should skip coding (e.g., a value of 1), and the skip coding syntax element for the overall motion vector is encoded. If the skip coding syntax element for the overall motion vector indicates that not all three coordinate dimensions should skip coding (e.g., a value of 0), then both the overall skip coding syntax element and the skip coding syntax elements corresponding to the motion vectors in each of the three coordinate dimensions are encoded. Then, for the skip coding syntax element corresponding to the motion vector in each coordinate dimension, when it indicates no skip coding (e.g., a value of 0), the prediction mode syntax element for the motion vector in that coordinate dimension is encoded.

[0172] In some cases, setting a skip encoding syntax element for the overall motion vector (such as the second identifier information) can save some skip encoding syntax elements for motion vectors in a single coordinate dimension. For example, at the encoding end, if it is determined that the motion vectors in the first two coordinate dimensions do not need encoding, but the motion vector in the third coordinate dimension does need encoding, then the skip encoding syntax element corresponding to the overall motion vector and the skip encoding syntax elements corresponding to the motion vectors in the first two coordinate dimensions can be set, and the default value of the skip encoding syntax element for the motion vector in the third coordinate dimension can be set. This default value indicates that the motion vector in the third coordinate dimension does not skip encoding. At the decoding end, by using the skip encoding syntax element corresponding to the overall motion vector to indicate that the motion vector needs to be decoded, and based on the decoding status of the first two coordinate dimensions, the default value of the skip encoding syntax element for the motion vector can be derived, indicating that decoding is required. Since it is no longer necessary to set the skip encoding syntax element for the motion vector in the third coordinate dimension, codewords can be saved, thereby helping to improve the efficiency of encoding and decoding.

[0173] Taking a component motion vector including a first component motion vector, a second component motion vector, and a third component motion vector as an example, in some implementations, if the second identifier information indicates that the overall motion vector is not deduced to a preset value, and if it is determined that both the first and second component motion vectors are deduced to preset values, then the first identifier information for deducing the third component motion vector is taken as a default value (such as the first value). That is, the third component motion vector is not deduced to a preset value by default, or in other words, the third component motion vector is encoded by default. It should be understood that the first identifier information of the third component motion vector being a default value here does not mean it is written into the bitstream. That is, whether the third component motion vector skips encoding and decoding does not depend on the indication of the syntax element, but can be inferred based on the encoding and decoding status of other component motion vectors and the second identifier information.

[0174] In some implementations, when the second identification information indicates that the motion vector is to be decoded, if it is determined that the first component motion vector and / or the second component motion vector does not derive a preset value, then the first identification information of the third component motion vector is encoded. This first identification information is used to indicate whether the third component motion vector is derived to a preset value. That is, when encoding exists in the first two component motion vectors, the third component motion vector needs to rely on the indication of the syntax element to confirm whether to skip encoding / decoding. Further, if it is determined that the third component motion vector is to be encoded, then the second index information can be written into the bitstream. The second index information is used to indicate the second prediction mode of the third component motion vector.

[0175] The encoding method provided in this application will be described in detail below with reference to Embodiment 3.

[0176] Example 3

[0177] For a motion vector with k coordinate dimensions (k = 0, 1, 2 corresponding to the x, y, and z coordinate dimensions respectively), determine the encoding mode with the minimum rate-distortion cost. If the skip encoding mode has the minimum rate-distortion cost, then the skip encoding syntax element for that motion vector is determined to indicate skip encoding (e.g., a value of 1); otherwise, if the skip encoding mode does not have the minimum rate-distortion cost, then the skip encoding syntax element for that motion vector is determined to indicate not skip encoding (e.g., a value of 0), and the corresponding prediction mode with the minimum rate-distortion cost is determined.

[0178] If the skip encoding syntax element for the motion vector in all three coordinate dimensions indicates skip encoding, then the skip encoding syntax element for the overall motion vector indicates skip encoding in all three coordinate dimensions (e.g., a value of 1), and the skip encoding syntax element for the overall motion vector is encoded.

[0179] If the skip encoding syntax elements for motion vectors in all three coordinate dimensions do not all indicate skip encoding, then the overall skip encoding syntax element for the motion vector indicates no skip encoding (e.g., a value of 0). Further, if the skip encoding syntax elements for the motion vectors in the first two coordinate dimensions both indicate skip encoding (e.g., a value of 1), then the overall skip encoding syntax element for the motion vector and the skip encoding syntax elements for the motion vectors in the first two coordinate dimensions are encoded. The skip encoding syntax element for the motion vector in the third coordinate dimension defaults to no skip encoding (e.g., a value of 0), meaning that this skip encoding syntax element is not encoded into the bitstream, but its value is determined at the encoding / decoding end in a predefined manner. For each coordinate dimension's skip encoding syntax element, when it indicates no skip encoding (e.g., a value of 0), the prediction mode syntax element for the motion vector in that coordinate dimension is encoded. Alternatively, if the skip coding syntax elements corresponding to the motion vectors in the first two coordinate dimensions do not all indicate skip coding, then the skip coding syntax elements of the overall motion vector and the skip coding syntax elements corresponding to the three coordinate dimensions are all encoded. And according to the skip coding syntax element corresponding to the motion vector in each coordinate dimension, when it indicates no skip coding (e.g., a value of 0), the prediction mode syntax element of that coordinate dimension is encoded.

[0180] In some implementations, the encoding method shown in Figure 10 may further include: if it is determined that the component motion vector is not derived as a preset value, then the predicted value of the component motion vector can be determined according to the first prediction mode; then, the residual value of the component motion vector can be determined according to the original value of the component motion vector and the predicted value of the component motion vector; finally, the residual value of the component motion vector is written into the bitstream.

[0181] The method for determining the residual value of the component motion vector may include, for example, taking the difference between the original value and the predicted value of the component motion vector as the residual value of the component motion vector.

[0182] Tables 2 and 3 below show the test results obtained by testing the encoding and decoding method provided in the embodiments of this application. It should be noted that the data in Tables 2 and 3 are the test results obtained under the C2 test conditions, with lossy geometric information and lossless attribute information. Specifically, the data in Table 2 is the test result obtained by setting the first preset value C in formula (9) above to 26; the data in Table 3 is the test result obtained by setting the first preset value C in formula (9) above to 30.

[0183] As can be seen from Tables 2 and 3, for the inter-frame prediction mode of the basic grid, the encoding and decoding scheme provided by the embodiments of this application significantly reduces the bit rate, which can improve the efficiency of encoding and decoding.

[0184] Table 2

[0185] Table 3

[0186] This application embodiment is based on the V-DMC encoding and decoding framework, and modifies the relevant parameters of inter-frame prediction encoding and decoding of the three-dimensional mesh, as shown in Table 4:

[0187] The syntax elements in rows 20 to 27 from the bottom of Table 4 are new syntax elements introduced in this application embodiment based on the syntax elements provided by related technologies. Among them, `mcp_skip_group_flag` corresponds to the second identifier information in this application embodiment, `mcp_skip_group_comp_flag[g][k]` corresponds to the first identifier information in this application embodiment, and `mcp_mv_pred_mode_group[g][k]` corresponds to the first index information in this application embodiment. The indication methods of the above three syntax elements are described below.

[0188] mcp_skip_group_flag[g]:

[0189] When mcp_skip_group_flag[g] equals 1, it indicates that the motion vector associated with the g-th group of vertices in the current submesh is skipped (i.e. not transmitted), meaning that the motion vector of that group of vertices is inferred to be 0.

[0190] When mcp_skip_group_flag[g] equals 0, it indicates that the motion vector associated with the g-th group of vertices has not been skipped and needs to be decoded normally.

[0191] If mcp_skip_group_flag[g] does not appear in the bitstream, its value is inferred to be 0 by default.

[0192] mcp_skip_group_comp_flag[g][k]:

[0193] For a given group g and component k (e.g., x or y component), when mcp_skip_group_comp_flag[g][k] equals 1, it indicates that the kth motion vector component associated with the vertex of the g-th group is inferred to be 0.

[0194] If mcp_skip_group_comp_flag[g][k] does not appear in the bitstream, its value is inferred to be 0 by default.

[0195] Specifically, if mcp_skip_group_flag[g] is 0, and for the g-th group, both components (let's say the x and y components, corresponding to k=0 and k=1) are set to be skipped (i.e., mcp_skip_group_comp_flag[g][0] and mcp_skip_group_comp_flag[g][1] are both equal to 1), then the third component (let's say the z component, corresponding to k=2) cannot be skipped, i.e., mcp_skip_group_comp_flag[g][2] should be equal to 0.

[0196] mcp_mv_pred_mode_group[g][k]:

[0197] `mcp_mv_pred_mode_group[g][k]` indicates the prediction mode of the k-th motion vector component associated with the g-th group of vertices. The specific prediction mode is defined in the relevant table, and the index value of `mcp_mv_pred_mode_group[g][k]` can range from 0 to 2. Different index values ​​are used to determine which prediction mode to use.

[0198] The definitions of the other syntactic elements in Table 4 can be found in the relevant technical documentation, and will not be detailed here.

[0199] Table 4

[0200] [Correction based on Rule 91, 07.02.2025] The method embodiments of this application have been described in detail above with reference to Figures 1A to 10. The apparatus embodiments of this application will be described in detail below with reference to Figures 11 to 14. It should be understood that the descriptions of the method embodiments correspond to the descriptions of the apparatus embodiments. Therefore, any parts not described in detail can be referred to the foregoing method embodiments.

[0201] Figure 11 is a schematic diagram of the structure of a decoder provided in an embodiment of this application. As shown in Figure 11, the decoder 1100 may include a first determining unit 1110, a second determining unit 1120, and a reconstruction unit 1130.

[0202] The first determining unit 1110 is configured to decode the bitstream and determine the first identification information. The first identification information is used to indicate whether the component motion vector is derived to a preset value. The component motion vector belongs to the motion vector of the vertex of the current group of the current frame.

[0203] The second determining unit 1120 is configured to determine the geometric information of the vertices of the current group based on the first identification information.

[0204] Reconstruction unit 1130 is configured to reconstruct the first base mesh of the current frame based on the geometric information of the vertices of the current group.

[0205] In some possible implementations, the decoder 1100 is further configured to decode the bitstream and determine first index information if the first identification information indicates that the component motion vector is not derived to a preset value. The first index information is used to indicate the target prediction mode of the component motion vector.

[0206] In some possible implementations, before determining the first identification information in the decoded bitstream, the decoder 1100 is further configured to decode the bitstream and determine the second identification information, which is used to indicate whether the motion vector is derived to a preset value.

[0207] In some possible implementations, the first determining unit 1110 is further configured to decode the bitstream and determine the first identifying information if the second identification information indicates that the motion vector is not derived to a preset value.

[0208] In some possible implementations, the decoder 1100 is further configured to skip decoding the first identification information if the second identification information indicates that the deduced motion vector is a preset value.

[0209] In some possible implementations, the component motion vectors include a first component motion vector, a second component motion vector, and a third component motion vector. The decoder 1100 is further configured to, when the second identification information indicates that the motion vector is not derived to a preset value, if the first identification information of both the first component motion vector and the second component motion vector indicates that the motion vector is derived to a preset value, determine that the first identification information of the third component motion vector takes the value of a first value. The first value is used to indicate that the third component motion vector is not derived to a preset value.

[0210] In some possible implementations, the decoder 1100 is further configured to decode the bitstream and determine the first identification information of the third component motion vector if the first identification information of the first component motion vector and / or the second component motion vector indicates that it is not derived to a preset value. The first identification information is used to indicate whether the third component motion vector is derived to a preset value.

[0211] In some possible implementations, the vertices of the current group include a first group of vertices, the motion vectors of which are related to the geometric information of the first group of vertices and the geometric information of a second group of vertices, which are determined based on a reference frame.

[0212] In some possible implementations, the second determining unit 1110 is further configured to: decode the bitstream and determine the residual value of the component motion vector if the first identification information indicates that the component motion vector is not derived to a preset value; determine the reconstructed value of the component motion vector based on the residual value of the component motion vector and the predicted value of the component motion vector; and determine the geometric information of the first group of vertices based on the reconstructed value of the component motion vector and the geometric information of the second group of vertices.

[0213] In some possible implementations, the second determining unit 1110 is further configured to determine the geometric information of the first group of vertices based on the geometric information of the second group of vertices if the first identification information indicates that the derived component motion vector is a preset value.

[0214] In some possible implementations, the vertices of the current group include a first group of vertices, and the reconstruction unit is configured to reconstruct the first base mesh based on the coordinate information of the first group of vertices and the connection information of the second group of vertices, wherein the second group of vertices is determined based on a reference frame.

[0215] In some possible implementations, the decoder 1100 is further configured to determine the three-dimensional mesh of the current frame based on the shift coefficients and the first base mesh.

[0216] In some possible implementations, the decoder 1100 is further configured to decode the bitstream, determine the quantized shift coefficients, and dequantize the quantized shift coefficients to determine the shift coefficients.

[0217] It is understood that in the embodiments of this application, a "unit" can be a part of a circuit, a part of a processor, a part of a program or software, etc., and can also be a module or a non-modular one. Moreover, 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 in the form of a software functional module.

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

[0219] Therefore, this application provides a computer-readable storage medium for use in a decoder 1100. The computer-readable storage medium stores a computer program that, when executed by a processor, implements the decoding method described in any of the foregoing embodiments.

[0220] Based on the composition of the decoder 1100 described above and the computer-readable storage medium, refer to Figure 12, which shows a schematic diagram of the specific hardware structure of the decoder 1200 provided in this embodiment of the application. As shown in Figure 12, the decoder 1200 may include: a communication interface 1210, a memory 1220, and a processor 1230; the various components are coupled together through a bus system 1240. It is understood that the bus system 1240 is used to realize the connection and communication between these components. In addition to a data bus, the bus system 1240 also includes a power bus, a control bus, and a status signal bus. However, for clarity, all buses are labeled as bus system 1240 in Figure 12.

[0221] The communication interface 1210 is used for receiving and sending signals during the process of sending and receiving information with other external network elements;

[0222] Memory 1220 is used to store computer programs;

[0223] The processor 1230 is configured to, when running the computer program, perform the following: decode the bitstream; determine first identification information, the first identification information being used to indicate whether the component motion vector is derived to a preset value, the component motion vector being a motion vector of a vertex in the current group of the current frame; determine the geometric information of the vertices in the current group based on the first identification information; and reconstruct the first base mesh of the current frame based on the geometric information of the vertices in the current group.

[0224] It is understood that the memory 1220 in the embodiments of this application can be volatile memory or non-volatile memory, or may include both volatile and non-volatile memory. The non-volatile memory can be read-only memory (ROM), programmable read-only memory (PROM), erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), or flash memory. The volatile memory can be random access memory (RAM), which is used as an external cache. By way of example, but not limitation, many forms of RAM are available, such as static random access memory (SRAM), dynamic random access memory (DRAM), synchronous dynamic random access memory (SDRAM), double data rate synchronous dynamic random access memory (DDRSDRAM), enhanced synchronous dynamic random access memory (ESDRAM), synchronous linked dynamic random access memory (SLDRAM), and direct rambus RAM (DRRAM). The memory 1220 of the system and method described in this application is intended to include, but is not limited to, these and any other suitable types of memory.

[0225] The processor 1230 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 processor 1230 or by instructions in software form. The processor 1230 may be a general-purpose processor, a digital signal processor (DSP), an application-specific integrated circuit (ASIC), a field-programmable gate array (FPGA), or other programmable logic devices, discrete gate or transistor logic devices, or discrete hardware components. It can implement or execute the methods, steps, and logic block diagrams disclosed in the embodiments of this application. The general-purpose processor may be a microprocessor or any conventional processor. The steps of the methods disclosed in the embodiments of this application can be directly embodied in the execution of a hardware decoding processor, or executed by a combination of hardware and software modules in the decoding processor. The software modules may reside in random access memory, flash memory, read-only memory, programmable read-only memory, electrically erasable programmable memory, registers, or other mature storage media in the art. The storage medium is located in memory 1220. Processor 1230 reads the information in memory 1220 and completes the steps of the above method in conjunction with its hardware.

[0226] It is understood that the embodiments described in this application can be implemented using hardware, software, firmware, middleware, microcode, or a combination thereof. For hardware implementation, the processing unit can be implemented in one or more application-specific integrated circuits (ASICs), digital signal processors (DSPs), DSP devices (DSPDs), programmable logic devices (PLDs), field-programmable gate arrays (FPGAs), general-purpose processors, controllers, microcontrollers, microprocessors, other electronic units for performing the functions described in this application, or combinations thereof. For software implementation, the technology described in this application can be implemented through modules (e.g., procedures, functions, etc.) that perform the functions described in this application. Software code can be stored in memory and executed by a processor. The memory can be implemented in the processor or externally.

[0227] Alternatively, as another embodiment, the processor 1230 is further configured to execute the decoding method described in any of the foregoing embodiments when running the computer program.

[0228] Figure 13 is a schematic diagram of the structure of an encoder provided in an embodiment of this application. As shown in Figure 13, the encoder 1300 includes a first determining unit 1310, a second determining unit 1320, and a third determining unit 1330.

[0229] The first determining unit 1310 is configured to determine the motion vector of the vertices of the current group in the current frame, the motion vector including at least one component motion vector.

[0230] The second determining unit 1320 is configured to determine the first truth cost of the component motion vector according to the first prediction mode.

[0231] The third determining unit 1330 is configured to determine whether to derive the component motion vector as a preset value based on the first rate distortion cost.

[0232] In some possible implementations, the encoder 1300 is further configured to write first identification information into the bitstream, the first identification information being used to indicate whether the component motion vector is derived to a preset value.

[0233] In some possible implementations, the encoder 1300 is further configured to write first index information into the bitstream if it is determined that the component motion vector is not derived to a preset value. The first index information is used to indicate the target prediction mode.

[0234] In some possible implementations, the encoder 1300 is further configured to write second identification information into the bitstream, the second identification information being used to indicate whether the motion vector is derived to a preset value.

[0235] In some possible implementations, if it is determined that at least one component of the motion vector does not derive a preset value, then the second identification information indicates that the motion vector is not derived as a preset value.

[0236] In some possible implementations, if it is determined that all component motion vectors in the motion vector are derived to preset values, then the second identification information indicates that the motion vector is derived to a preset value.

[0237] In some possible implementations, the motion vector includes a first component motion vector, a second component motion vector, and a third component motion vector. The encoder 1300 is further configured to, if it is determined that both the first component motion vector and the second component motion vector are derived to preset values ​​when the second identification information indicates that the motion vector is not derived to a preset value, determine that the first identification information of the third component motion vector takes the value of a first value. The first value is used to indicate that the third component motion vector is not derived to a preset value.

[0238] In some possible implementations, the encoder 1300 is further configured to encode the first identification information of the third component motion vector if it is determined that the first component motion vector and / or the second component motion vector does not derive a preset value. The first identification information is used to indicate whether the third component motion vector is derived as a preset value.

[0239] In some possible implementations, the component motion vector corresponds to multiple first prediction modes, the first prediction modes including a target prediction mode, the target prediction mode being the first prediction mode with the minimum rate distortion cost.

[0240] In some possible implementations, the third determining unit 1330 is further configured to determine whether to derive the component motion vector as a preset value based on the first rate-distortion cost and the second rate-distortion cost; wherein the second rate-distortion cost is the rate-distortion cost corresponding to deriving the component motion vector as a preset value.

[0241] In some possible implementations, the third determining unit 1330 is further configured to determine that the component motion vector is derived as a preset value if the first rate distortion cost is greater than or equal to the second rate distortion cost; or, if the first rate distortion cost is less than the second rate distortion cost, determine that the component motion vector is not derived as a preset value.

[0242] In some possible implementations, the second rate-distortion cost is determined based on a first parameter and a first distortion cost, the first parameter being related to the number of vertices in the current group, and the first distortion cost being determined based on the reconstructed value of the component motion vector.

[0243] In some possible implementations, the first parameter is determined based on the product of a first preset value and a second parameter, whereby the second parameter represents the number of vertices in the current group.

[0244] In some possible implementations, the first rate-distortion cost is determined based on a first bit-rate cost, which is determined based on the residual value of the component motion vector.

[0245] In some possible implementations, the encoder 1300 is further configured to, if it is determined that the component motion vector is not derived to a preset value, determine the predicted value of the component motion vector according to the target prediction mode; determine the residual value of the component motion vector according to the original value of the component motion vector and the predicted value of the component motion vector; and write the residual value of the component motion vector into the bitstream.

[0246] In some possible implementations, the vertices of the current group include a first group of vertices, and the motion vector is related to the geometric information of the first group of vertices and the geometric information of a second group of vertices, the second group of vertices being determined based on a reference frame.

[0247] In some possible implementations, the vertices of the current group are determined based on the first base mesh of the current frame.

[0248] It is understood that in the embodiments of this application, a "unit" can be a part of a circuit, a part of a processor, a part of a program or software, etc., and can also be a module or a non-modular one. Moreover, 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 in the form of a software functional module.

[0249] 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, external hard drives, ROM, RAM, magnetic disks, or optical disks.

[0250] Therefore, this application provides a computer-readable storage medium applied to an encoder 1300, which stores a computer program that, when executed by a processor, implements the decoding method described in any of the foregoing embodiments.

[0251] Based on the composition of the encoder 1300 described above and the computer-readable storage medium, refer to Figure 14, which shows a schematic diagram of the specific hardware structure of the encoder 1400 provided in this embodiment of the application. As shown in Figure 14, the encoder 1400 may include: a communication interface 1410, a memory 1420, and a processor 1430; the various components are coupled together through a bus system 1440. It is understood that the bus system 1440 is used to realize the connection and communication between these components. In addition to a data bus, the bus system 1440 also includes a power bus, a control bus, and a status signal bus. However, for clarity, all buses are labeled as bus system 1440 in Figure 14.

[0252] The communication interface 1410 is used for receiving and sending signals during the process of sending and receiving information with other external network elements;

[0253] Memory 1420 is used to store computer programs;

[0254] The processor 1430, while running the computer program, performs the following: determining the motion vectors of the vertices of the current group in the current frame, the motion vectors including at least one component motion vector; determining a first rate-distortion cost of the component motion vectors according to a first prediction mode; and determining, based on the first rate-distortion cost, whether to derive the component motion vectors as a preset value.

[0255] It is understood that the memory 1420 in the embodiments of this application may be volatile memory or non-volatile memory, or may include both volatile and non-volatile memory. Non-volatile memory may be ROM, PROM, EPROM, EEPROM, or flash memory. Volatile memory may be RAM, which is used as an external cache. By way of example, but not limitation, many forms of RAM are available, such as SRAM, DRAM, SDRAM, DDRSDRAM, ESDRAM, SLDRAM, and DRRAM. The memory 1420 of the systems and methods described in this application is intended to include, but is not limited to, these and any other suitable types of memory.

[0256] The processor 1430 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 processor 1430 or by instructions in software form. The processor 1430 may be a general-purpose processor, DSP, ASIC, FPGA, or other programmable logic devices, discrete gate or transistor logic devices, or discrete hardware components. It can implement or execute the methods, steps, and logic block diagrams disclosed in the embodiments of this application. The general-purpose processor may be a microprocessor or any conventional processor. The steps of the methods disclosed in the embodiments of this application can be directly manifested as execution by a hardware decoding processor, or execution 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. This storage medium is located in memory 1420, and the processor 1430 reads the information in memory 1420 and, in conjunction with its hardware, completes the steps of the above method.

[0257] It is understood that the embodiments described in this application can be implemented using hardware, software, firmware, middleware, microcode, or a combination thereof. For hardware implementation, the processing unit can be implemented in one or more ASICs, DSPs, DSPDs, PLDs, FPGAs, general-purpose processors, controllers, microcontrollers, microprocessors, other electronic units for performing the functions described in this application, or combinations thereof. For software implementation, the technology described in this application can be implemented through modules (e.g., procedures, functions, etc.) that perform the functions described in this application. Software code can be stored in memory and executed by a processor. The memory can be implemented in the processor or external to the processor.

[0258] Alternatively, as another embodiment, the processor 1430 is also configured to execute the encoding method described in any of the foregoing embodiments when running the computer program.

[0259] This application also provides a computer-readable storage medium, which is a non-volatile computer-readable storage medium for storing bit streams. The bit streams can be generated by using an encoding method of an encoder, or the bit streams can be decoded by using a decoding method of a decoder. The decoding method can be the decoding method described in any of the preceding embodiments, and the encoding method can be the encoding method described in any of the preceding embodiments.

[0260] It should be noted that, in this application, 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 limitation, 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.

[0261] The sequence numbers of the embodiments in this application are for descriptive purposes only and do not represent the superiority or inferiority of the embodiments.

[0262] The methods disclosed in the several method embodiments provided in this application can be arbitrarily combined without conflict to obtain new method embodiments.

[0263] The features disclosed in the several product embodiments provided in this application can be arbitrarily combined without conflict to obtain new product embodiments.

[0264] The features disclosed in the several method or device embodiments provided in this application can be arbitrarily combined without conflict to obtain new method or device embodiments.

[0265] The above description is merely a specific embodiment of this application, but the scope of protection of this application 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 application should be included within the scope of protection of this application. Therefore, the scope of protection of this application should be determined by the scope of the claims.

Claims

1. A decoding method, applied to a decoder, comprising: Decode the bitstream and determine the first identification information. The first identification information is used to indicate whether the derived component motion vector is a preset value. The component motion vector belongs to the motion vector of the vertex of the current group in the current frame. Based on the first identification information, determine the geometric information of the vertices of the current group; Based on the geometric information of the vertices of the current group, reconstruct the first base mesh of the current frame.

2. The method according to claim 1, wherein, The method further includes: If the first identification information indicates that the component motion vector is not derived to a preset value, then the bitstream is decoded and the first index information is determined. The first index information is used to indicate the target prediction mode of the component motion vector.

3. The method according to claim 1 or 2, wherein, Before determining the first identification information in the decoded bitstream, the method further includes: Decode the bitstream and determine the second identification information, which is used to indicate whether the motion vector is derived to a preset value.

4. The method according to claim 3, wherein, The decoded bitstream determines the first identifier information, including: If the second identification information indicates that the motion vector is not derived to a preset value, then the bitstream is decoded to determine the first identification information.

5. The method according to claim 3 or 4, wherein, The method further includes: If the second identification information indicates that the deduced motion vector is a preset value, then the decoding of the first identification information is skipped.

6. The method according to any one of claims 3 to 5, wherein, The motion vector includes a first component motion vector, a second component motion vector, and a third component motion vector; the method further includes: If the second identification information indicates that the motion vector is not derived to a preset value, and if the first identification information of both the first component motion vector and the second component motion vector indicates that the motion vector is derived to a preset value, then the first identification information of the third component motion vector is taken as a first value, which is used to indicate that the third component motion vector is not derived to a preset value.

7. The method according to claim 6, wherein: If the first identification information of the first component motion vector and / or the second component motion vector does not derive a preset value, then the bitstream is decoded, and the first identification information of the third component motion vector is determined. The first identification information is used to indicate whether the third component motion vector is derived to a preset value.

8. The method according to claim 1, wherein, The vertices of the current group include a first group of vertices, the motion vectors of the first group of vertices are related to the geometric information of the first group of vertices and the geometric information of the second group of vertices, and the second group of vertices is determined based on a reference frame.

9. The method according to claim 8, wherein, Determining the geometric information of the vertices of the current group based on the first identification information includes: If the first identification information indicates that the component motion vector is not derived to a preset value, then the bitstream is decoded to determine the residual value of the component motion vector; The reconstructed value of the component motion vector is determined based on the residual value of the component motion vector and the predicted value of the component motion vector; The geometric information of the first group of vertices is determined based on the reconstructed values ​​of the component motion vectors and the geometric information of the second group of vertices.

10. The method according to claim 8, wherein, Determining the geometric information of the vertices of the current group based on the first identification information includes: If the first identification information indicates that the deduced component motion vector is a preset value, then the geometric information of the first group of vertices is determined based on the geometric information of the second group of vertices.

11. The method according to claim 1, wherein, The vertices of the current group include the vertices of the first group. Reconstructing the first base mesh of the current frame based on the geometric information of the vertices of the current group includes: The first base mesh is reconstructed based on the coordinate information of the first group of vertices and the connection information of the second group of vertices, and the second group of vertices is determined based on the reference frame.

12. The method according to claim 1, wherein, The method further includes: The 3D mesh of the current frame is determined based on the shift coefficient and the first base mesh.

13. The method according to claim 12, wherein, The method further includes: Decode the bitstream and determine the quantized shift coefficients; The shift coefficients are dequantized to determine the shift coefficients.

14. An encoding method applied to an encoder, comprising: Determine the motion vectors of the vertices of the current group in the current frame, the motion vectors including at least one component motion vector; The first truth cost for determining the component motion vectors based on the first prediction mode; Based on the first rate distortion cost, determine whether to derive the component motion vector as a preset value.

15. The method according to claim 14, wherein, The method further includes: The first identification information is written into the bitstream. The first identification information is used to indicate whether the component motion vector is derived to a preset value.

16. The method according to claim 15, wherein, The method further includes: If it is determined that the component motion vector is not derived to a preset value, then the first index information is written into the bitstream, and the first index information is used to indicate the target prediction mode.

17. The method according to any one of claims 14 to 16, wherein, The method further includes: The second identification information is written into the bitstream, and the second identification information is used to indicate whether the motion vector is derived to a preset value.

18. The method of claim 17, wherein: If it is determined that at least one component of the motion vector is not derived to a preset value, then the second identification information indicates that the motion vector is not derived to a preset value.

19. The method of claim 17, wherein: If it is determined that all component motion vectors in the motion vector are derived to preset values, then the second identification information indicates that the motion vector is derived to a preset value.

20. The method according to any one of claims 17 to 19, wherein, The motion vector includes a first component motion vector, a second component motion vector, and a third component motion vector; the method further includes: If the second identification information indicates that the motion vector is not derived to a preset value, and if it is determined that both the first component motion vector and the second component motion vector are derived to preset values, then the value of the first identification information for deriving the third component motion vector is a first value, which is used to indicate that the third component motion vector is not derived to a preset value.

21. The method of claim 20, wherein: If it is determined that the first component motion vector and / or the second component motion vector do not derive to a preset value, then the first identification information of the third component motion vector is encoded. The first identification information is used to indicate whether the third component motion vector is derived to a preset value.

22. The method according to any one of claims 14 to 21, wherein, The component motion vector corresponds to multiple first prediction modes, and the first prediction modes include target prediction modes, which are the first prediction modes with the minimum rate distortion cost.

23. The method according to claim 22, wherein, The step of determining whether to derive the component motion vector as a preset value based on the first rate-distortion cost includes: Based on the first rate-distortion cost and the second rate-distortion cost, determine whether to derive the component motion vector as a preset value; Wherein, the second rate-distortion cost is the rate-distortion cost corresponding to the derivation of the component motion vector as a preset value.

24. The method according to claim 23, wherein, The step of determining whether to derive the component motion vector as a preset value based on the first rate-distortion cost and the second rate-distortion cost includes: If the first rate-distortion cost is greater than or equal to the second rate-distortion cost, then the derived component motion vector is determined to be a preset value; or, If the first rate distortion cost is less than the second rate distortion cost, then it is determined that the component motion vector will not be derived as a preset value.

25. The method according to claim 23 or 24, wherein, The second rate-distortion cost is determined based on a first parameter and a first distortion cost, wherein the first parameter is related to the number of vertices in the current group, and the first distortion cost is determined based on the reconstructed value of the component motion vector.

26. The method according to claim 25, wherein, The first parameter is determined based on the product of a first preset value and a second parameter, whereby the second parameter represents the number of vertices in the current group.

27. The method according to any one of claims 14 to 26, wherein, The first rate distortion cost is determined based on the first bit rate cost, which is determined based on the residual value of the component motion vector.

28. The method according to claim 14, wherein, The method further includes: If it is determined that the component motion vector is not derived to a preset value, then the predicted value of the component motion vector is determined according to the target prediction mode; The residual value of the component motion vector is determined based on the original value of the component motion vector and the predicted value of the component motion vector; The residual values ​​of the component motion vectors are written into the bitstream.

29. The method according to claim 14, wherein, The vertices of the current group include the first group of vertices. The motion vector is related to the geometric information of the first group of vertices and the geometric information of the second group of vertices. The second group of vertices is determined based on a reference frame.

30. The method of claim 14, wherein, The vertices of the current group are determined based on the first base mesh of the current frame.

31. A decoder, comprising: The first determining unit is configured to decode the bitstream and determine the first identification information. The first identification information is used to indicate whether the component motion vector is derived to a preset value. The component motion vector belongs to the motion vector of the vertex of the current group of the current frame. The second determining unit is configured to determine the geometric information of the vertices of the current group based on the first identification information; The reconstruction unit is configured to reconstruct the first base mesh of the current frame based on the geometric information of the vertices of the current group.

32. A decoder, comprising: Memory, used to store computer programs; A processor, configured to perform the method as described in any one of claims 1 to 13 when running the computer program.

33. An encoder, comprising: The first determining unit is configured to determine the motion vector of the vertices of the current group in the current frame, the motion vector including at least one component motion vector; The second determining unit is configured to determine the first truth cost of the component motion vector according to the first prediction mode; The third determining unit is configured to determine, based on the first rate distortion cost, whether to derive the component motion vector as a preset value.

34. An encoder, comprising: Memory, used to store computer programs; A processor, configured to perform the method as described in any one of claims 14 to 30 when running the computer program.

35. A non-volatile computer-readable storage medium for storing a bitstream, said bitstream being generated by an encoding method using an encoder, or said bitstream being decoded by a decoding method using a decoder, wherein, The decoding method is the method as described in any one of claims 1 to 13, and the encoding method is the method as described in any one of claims 14 to 30.

36. A computer-readable storage medium storing a bitstream generated by the method of any one of claims 14 to 30.

37. A computer-readable storage medium, wherein, The computer-readable storage medium stores a computer program that, when executed, implements the method as described in any one of claims 1 to 13, or 14 to 30.