Encoding, decoding method, apparatus and device

CN116934880BActive Publication Date: 2026-10-09VIVO MOBILE COMM CO LTD
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
CN202210370125.8
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Filing Date
2022-04-08
Publication Date
2026-10-09
Estimated Expiration
2042-04-08

AI Technical Summary

Technical Problem

[0003]本申请实施例提供一种编码、解码方法、装置及设备,能够解决现有技术的三维网格生成机制会造成部分几何重复点,这些几何重复点会引起三维网格不连续,造成降低三维网格的连接性关系的编码效率的问题

Benefits of technology

[0028] Eleventhly, a chip is provided, the chip including a processor and a communication interface, the communication interface being coupled to the processor, the processor being used to run programs or instructions to implement the method as described in the first aspect, or to implement the method as described in the third aspect.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN116934880B_ABST
    Figure CN116934880B_ABST
Patent Text Reader

Abstract

The application discloses an encoding, decoding method, device and equipment, and relates to the technical field of coding and decoding. The encoding method comprises the following steps: an encoding end decodes and reconstructs the geometric information of an encoded target three-dimensional grid, and obtains first geometric information after reconstruction; the encoding end performs repeated vertex screening on the first geometric information, and obtains repeated vertex information, wherein the repeated vertex is a vertex except a first vertex in a plurality of vertices with the same position coordinates, and the first vertex is one of the plurality of vertices with the same position coordinates; the encoding end performs reordering of a first connection relationship of the target three-dimensional grid according to the repeated vertex information, and obtains second connection relationship after reordering; and the encoding end encodes the second connection relationship.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] This application belongs to the field of encoding and decoding technology, specifically relating to an encoding and decoding method, apparatus and device. Background Technology

[0002] Considering that the vertices of a 3D mesh and a point cloud are both discrete sets of points randomly distributed in space, they share similar characteristics. Therefore, the geometric information in a 3D mesh can also be compressed using video-based point cloud compression standards. However, the vertices of a 3D mesh are spatially sparser and more unevenly distributed, resulting in lower compression efficiency when directly using video-based point cloud compression methods. Furthermore, video-based point cloud compression standards do not involve the compression of mesh vertex connectivity, mesh UV coordinate attributes, and texture maps. Due to the generation mechanism of 3D meshes, some geometrically repeated points exist. These repeated points have the same geometric coordinates but different UV coordinates. Geometrically repeated points can cause discontinuities in the 3D mesh, resulting in many edges that are only adjacent to a single edge of a triangle. Each single edge requires extra codewords for identification, thus reducing the efficiency of encoding connectivity relationships. Summary of the Invention

[0003] This application provides an encoding and decoding method, apparatus, and device that can solve the problem that the existing three-dimensional mesh generation mechanism causes some geometric repetition points, which can lead to discontinuities in the three-dimensional mesh and reduce the encoding efficiency of the connectivity relationship of the three-dimensional mesh.

[0004] Firstly, an encoding method is provided, including:

[0005] The encoding end decodes and reconstructs the geometric information of the encoded target 3D mesh to obtain the first reconstructed geometric information;

[0006] The encoding end performs duplicate vertex filtering on the first geometric information to obtain duplicate vertex information. The duplicate vertex is a vertex other than the first vertex among a plurality of vertices with the same position coordinates. The first vertex is one of the vertices among a plurality of vertices with the same position coordinates.

[0007] The encoding end reorders the first connection relationship of the target 3D mesh based on the repeated vertex information, and obtains the reordered second connection relationship;

[0008] The encoding end encodes the second connection relationship.

[0009] Secondly, an encoding device is provided, comprising:

[0010] The first acquisition module is used to decode and reconstruct the geometric information of the encoded target 3D mesh to obtain the reconstructed first geometric information;

[0011] The second acquisition module is used to filter duplicate vertices in the first geometric information and acquire duplicate vertex information. The duplicate vertex is a vertex other than the first vertex among a plurality of vertices with the same position coordinates. The first vertex is one of the vertices among a plurality of vertices with the same position coordinates.

[0012] The third acquisition module is used to reorder the first connection relationship of the target 3D mesh according to the repeated vertex information, and acquire the reordered second connection relationship.

[0013] The first encoding module is used to encode the second connection relationship.

[0014] Thirdly, a decoding method is provided, including:

[0015] The decoding end decodes and reconstructs the first geometric information based on the bitstream corresponding to the acquired target 3D mesh;

[0016] The decoding end performs duplicate vertex filtering on the first geometric information to obtain duplicate vertex information. The duplicate vertex is a vertex other than the first vertex among a plurality of vertices with the same position coordinates. The first vertex is one of the vertices among a plurality of vertices with the same position coordinates.

[0017] The decoding end decodes the first connection relationship bitstream of the target 3D mesh based on the repeated vertex information.

[0018] Fourthly, a decoding device is provided, comprising:

[0019] The reconstruction module is used to decode and reconstruct the first geometric information based on the bitstream corresponding to the acquired target 3D mesh.

[0020] The fifth acquisition module is used to filter duplicate vertices in the first geometric information and acquire duplicate vertex information. The duplicate vertex is a vertex other than the first vertex among a plurality of vertices with the same position coordinates. The first vertex is one of the vertices among a plurality of vertices with the same position coordinates.

[0021] The first decoding module is used to decode the connection relationship bitstream of the target 3D mesh based on the repeated vertex information.

[0022] Fifthly, an encoding device is provided, including a processor and a memory, the memory storing a program or instructions executable on the processor, the program or instructions, when executed by the processor, implementing the steps of the method described in the first aspect.

[0023] In a sixth aspect, an encoding device is provided, including a processor and a communication interface, wherein the processor is used to decode and reconstruct the geometric information of the encoded target three-dimensional mesh to obtain reconstructed first geometric information; to filter duplicate vertices in the first geometric information to obtain duplicate vertex information, wherein the duplicate vertex is a vertex other than the first vertex among a plurality of vertices with the same position coordinates, and the first vertex is one of the plurality of vertices with the same position coordinates; to reorder the first connection relationship of the target three-dimensional mesh according to the duplicate vertex information to obtain the reordered second connection relationship; and to encode the second connection relationship.

[0024] In a seventh aspect, a decoding device is provided, including a processor and a memory, the memory storing a program or instructions executable on the processor, the program or instructions, when executed by the processor, implementing the steps of the method described in the third aspect.

[0025] Eighthly, a decoding device is provided, including a processor and a communication interface, wherein the processor is configured to decode and reconstruct first geometric information according to the bitstream corresponding to the acquired target three-dimensional mesh; perform duplicate vertex filtering on the first geometric information to obtain duplicate vertex information, wherein the duplicate vertex is a vertex other than the first vertex among a plurality of vertices with the same position coordinates, and the first vertex is one of the vertices among a plurality of vertices with the same position coordinates; and decode the connection relationship bitstream of the target three-dimensional mesh according to the duplicate vertex information.

[0026] A ninth aspect provides a communication system comprising: an encoding device and a decoding device, the encoding device being configured to perform the steps of the method described in the first aspect, and the decoding device being configured to perform the steps of the method described in the third aspect.

[0027] In a tenth aspect, a readable storage medium is provided, on which a program or instructions are stored, which, when executed by a processor, implement the steps of the method described in the first aspect, or implement the steps of the method described in the third aspect.

[0028] Eleventhly, a chip is provided, the chip including a processor and a communication interface, the communication interface being coupled to the processor, the processor being used to run programs or instructions to implement the method as described in the first aspect, or to implement the method as described in the third aspect.

[0029] In a twelfth aspect, a computer program / program product is provided, which is stored in a storage medium and is executed by at least one processor to perform the steps of the method as described in the first aspect.

[0030] In this embodiment, by decoding and reconstructing the geometric information of the encoded target 3D mesh to obtain the reconstructed first geometric information, repeating vertex filtering is performed on the first geometric information to obtain repeating vertex information, and the first connection relationship of the target 3D mesh is reordered based on the repeating vertex information to obtain the reordered second connection relationship, and the second connection relationship is encoded. The above scheme avoids the problem of discontinuity of the 3D mesh caused by repeating vertices by using the reconstructed geometric information to filter repeating vertices, and then reorders and encodes the connection relationship based on the repeating vertex information. This improves the encoding efficiency of the connection relationship of the 3D mesh. Attached Figure Description

[0031] Figure 1 This is a flowchart illustrating the encoding method of an embodiment of this application;

[0032] Figure 2 This is a schematic diagram of the vertex merging process in mesh simplification;

[0033] Figure 3 This is a schematic diagram of the fine mesh division process;

[0034] Figure 4 This is a diagram showing the eight possible directions for arranging patches;

[0035] Figure 5 This is a schematic diagram of the encoding process for high-precision geometric information;

[0036] Figure 6 This is a diagram of a raw patch;

[0037] Figure 7 This is one of the schematic diagrams of the encoding connection relationship in the embodiments of this application;

[0038] Figure 8 This is the second schematic diagram of the encoding connection relationship in the embodiments of this application;

[0039] Figure 9 This is a geometric diagram illustrating the prediction principle;

[0040] Figure 10 This is a schematic diagram of a video-based 3D mesh encoding framework;

[0041] Figure 11 This is a schematic diagram of the encoding device according to an embodiment of this application;

[0042] Figure 12 This is a schematic diagram of the structure of the encoding device according to an embodiment of this application;

[0043] Figure 13 This is a flowchart illustrating the decoding method according to an embodiment of this application;

[0044] Figure 14 It is a geometric information reconstruction diagram;

[0045] Figure 15 This is a schematic diagram of a video-based 3D mesh decoding framework;

[0046] Figure 16 This is a schematic diagram of the module of the decoding device according to an embodiment of this application;

[0047] Figure 17 This is a schematic diagram of the structure of a communication device according to an embodiment of this application. Detailed Implementation

[0048] The technical solutions of the embodiments of this application will be clearly described below with reference to the accompanying drawings. Obviously, the described embodiments are only some, not all, of the embodiments of this application. All other embodiments obtained by those skilled in the art based on the embodiments of this application are within the scope of protection of this application.

[0049] The terms "first," "second," etc., used in the specification and claims of this application are used to distinguish similar objects and not to describe a specific order or sequence. It should be understood that such terms can be used interchangeably where appropriate so that embodiments of this application can be implemented in orders other than those illustrated or described herein, and the objects distinguished by "first" and "second" are generally of the same class, not limited in number; for example, a first object can be one or more. Furthermore, in the specification and claims, "and / or" indicates at least one of the connected objects, and the character " / " generally indicates that the preceding and following objects are in an "or" relationship.

[0050] It is worth noting that the technologies described in this application are not limited to Long Term Evolution (LTE) / LTE-Advanced (LTE-A) systems, but can also be used in other wireless communication systems, such as Code Division Multiple Access (CDMA), Time Division Multiple Access (TDMA), Frequency Division Multiple Access (FDMA), Orthogonal Frequency Division Multiple Access (OFDMA), Single-carrier Frequency Division Multiple Access (SC-FDMA), and other systems. The terms "system" and "network" in this application are often used interchangeably, and the described technologies can be used with the systems and radio technologies mentioned above, as well as with other systems and radio technologies. The following description describes New Radio (NR) systems for illustrative purposes, and the term NR is used in most of the following description; however, these technologies can also be applied to applications other than NR systems, such as 6th generation (6G) radio systems. th Generation 6G communication system.

[0051] The encoding and decoding methods, apparatuses, and devices provided in this application will be described in detail below with reference to the accompanying drawings and through some embodiments and application scenarios.

[0052] like Figure 1 As shown, this application provides an encoding method, including:

[0053] Step 101: The encoding end decodes and reconstructs the geometric information of the encoded target 3D mesh to obtain the reconstructed first geometric information;

[0054] It should be noted that the target three-dimensional mesh mentioned in this application can be understood as the three-dimensional mesh corresponding to any video frame, and the geometric information of the target three-dimensional mesh can be understood as the coordinates of the vertices in the three-dimensional mesh, which usually refers to three-dimensional coordinates.

[0055] Step 102: The encoding end performs duplicate vertex filtering on the first geometric information to obtain duplicate vertex information;

[0056] It should be noted that by filtering out duplicate vertices, information about the duplicate vertices can be obtained, as well as second geometric information. The second geometric information is the mesh geometry information excluding duplicate vertices. The duplicate vertices are vertices other than the first vertex among a group of vertices with the same position coordinates, and the first vertex is one of the vertices with the same position coordinates.

[0057] Step 103: The encoding end reorders the first connection relationship of the target 3D mesh according to the repeated vertex information, and obtains the reordered second connection relationship;

[0058] It should be noted that the connection relationship mentioned in the embodiments of this application is used to describe the connection relationship between elements such as vertices and patches in a three-dimensional mesh, and can also be called a connectivity relationship.

[0059] Step 104: The encoding end encodes the second connection relationship.

[0060] It should be noted that, in this embodiment of the application, by removing duplicate vertices from the reconstructed geometric information and then reordering the connection relationships, and then encoding the reordered connection relationships, the problem of discontinuity in the 3D mesh caused by duplicate vertices can be avoided, thereby improving the encoding efficiency of the connection relationships of the 3D mesh.

[0061] It should be noted that in order to obtain the reconstructed geometric information, the geometric information first needs to be encoded. In one embodiment of this application, the specific method for encoding the geometric information of the three-dimensional mesh may include the following process:

[0062] Step S21: Before encoding geometric information, the target 3D mesh can be simplified to obtain a simplified mesh.

[0063] It should be noted that this process is an optional step.

[0064] Specifically, the encoding end simplifies the target 3D mesh based on quantization parameters to obtain a simplified mesh.

[0065] It should be noted that the quantization parameters mentioned in this application mainly include quantization parameters in the X, Y and Z components.

[0066] Optionally, based on quantization parameters, the target 3D mesh is simplified to obtain the simplified mesh. The specific implementation method is as follows:

[0067] When merging vertices in the target 3D mesh, the encoding end adjusts the position coordinates of some or all vertices in the merged target 3D mesh to a multiple of the quantization parameter to obtain a simplified mesh.

[0068] It should be noted that by considering the quantization parameter when setting the position of the merged points, and setting it to a multiple of the quantization parameter, which can be any value that meets the requirements, it can be ensured that the original position can be recovered without additional information during dequantization, thereby reducing the amount of data consumed by high-precision geometric information.

[0069] The specific implementation method of the simplification process is explained below.

[0070] For the input original mesh, a mesh simplification operation is first performed. The focus of mesh simplification is on the simplification operation itself and the corresponding error metric. This mesh simplification operation can be edge-based. For example... Figure 2 As shown, the number of faces and vertices can be reduced by merging two vertices of an edge. Furthermore, the mesh can be simplified using point-based mesh simplification methods.

[0071] During mesh simplification, it's necessary to define a simplification error metric. For example, the sum of the equation coefficients of all adjacent faces of a vertex can be chosen as the error metric for that vertex; similarly, the error metric for an edge is the sum of the error metrics of the two vertices on that edge. After determining the simplification method and error metric, mesh simplification can begin. For instance, the mesh can be divided into one or more local meshes. First, the vertex errors of the initial mesh within the mesh are calculated to obtain the error for each edge. Then, all edges within the mesh are arranged according to their errors using a certain rule, such as ascending order. Each simplification step can merge edges according to a certain rule, such as selecting the edge with the smallest error for merging. Simultaneously, the position of the merged vertex is calculated, and the errors of all edges related to the merged vertex are updated, along with the edge arrangement order. Through iteration, the mesh faces are simplified to a desired number.

[0072] The specific process includes:

[0073] 1. Calculation of vertex error

[0074] Vertex error can be defined as the sum of the coefficients of the equations of all adjacent faces of a vertex. For example, each adjacent face defines a plane, which can be expressed by Equation 1:

[0075] Formula 1: D 2 =(n T v+d) 2 =v T (nn T )v+2dn T v+d 2 ;

[0076] Where D is the distance from any vertex to the plane, n is the unit normal vector of the plane, v is the position vector of the vertex, and d is a constant. Expressed in quadratic surface form as Equation 2: Q = (A, b, c) = (nn) R ,dn,d 2 );

[0077] Where Q is the vertex error, and A, b, and c are coefficients representing the corresponding symbols in Formula 1.

[0078] From formula two, we can derive formula three: Q(v) = v T Av+2b T v+c;

[0079] Since the vertex error is the sum of the coefficients of the equations of all adjacent faces of that vertex, we can set Formula 4 as: Q1(v) + Q2(v) = (Q1 + Q2)(v) = (A1 + A2, b1 + b2, c1 + c2)(v). Here, Q(v) is the vertex error, v is the corresponding vertex, Q1(v) is the equation of plane 1 adjacent to v, Q2(v) is the equation of plane 2 adjacent to v, and A1, A2, b1, b2, c1, and c2 are their respective coefficients. Of course, if there are multiple adjacent faces, corresponding plane error equations can be added to Formula 4.

[0080] 2. Merge vertices

[0081] A key step in the vertex merging process is determining the positions of the merged vertices. According to Error Formula 3, vertex positions that minimize the error can be selected. For example, by taking the partial derivative of Formula 3, we can obtain Formula 4:

[0082] Formula 5:

[0083] As shown in the above equation, the point that minimizes the error can only be found if matrix A is invertible. Therefore, there are multiple ways to choose the position of the merged vertex. If considering the quality of mesh simplification, the vertex position that minimizes the error is selected when matrix A is invertible; if matrix A is not invertible, one of the points on the edge, including both endpoints, can be chosen to minimize the error. If considering the complexity of mesh simplification, either the midpoint or one of the endpoints of the edge can be directly selected as the position of the merged vertex. If considering the efficiency of quantization after mesh simplification, the positions of the merged vertices also need to be adjusted. Since high-precision information needs to be encoded separately after quantization, adjusting some of the merged vertex positions to multiples of the corresponding quantization parameters ensures that the original position can be recovered without additional information during dequantization, thus reducing the amount of data consumed by high-precision geometric information.

[0084] Once the selection of the merged vertex positions is determined, the vertex merging process can begin. For example, the error of all edges in the initial mesh can be calculated first, and they can be arranged according to a certain specification, such as ascending error. In each iteration, the edge whose error satisfies a certain rule, such as the edge with the smallest error, is selected. The two endpoints of the edge are removed from the mesh vertices and the merged vertex is added to the set of mesh vertices. All or some adjacent vertices of the two vertices before merging are taken as adjacent vertices of the merged vertex, and then the error metric of all points connected to the merged vertex is updated, thus obtaining the error of the newly generated edge. Then, the edge arrangement order is updated globally for the slice. This process is repeated until the required number of faces for lossy encoding is reached.

[0085] 3. Update connection relationships

[0086] After merging vertices, because some vertices have been deleted from the vertex set while many new vertices have been added, it is necessary to update the connectivity relationships between vertices. For example, during the vertex merging process, the two vertices corresponding to the merged vertices before the merge can be identified. Simply replace the indices of all the two vertices before the merge that appear in a face with the indices of the merged vertex, and then delete the faces with duplicate indices, thus achieving the goal of updating the connectivity relationships.

[0087] The above is the main process of mesh simplification. Meanwhile, 3D meshes may also carry attribute information, which may also need simplification. For meshes with attribute information, such as texture coordinates, color, and normal vectors, vertex coordinates can be extended to higher dimensions to calculate the vertex error with attribute information. Taking texture coordinates as an example, let the vertex coordinates be (x, y, z) and the texture coordinates be (u, v), then the extended vertex is (x, y, z, u, v). Let the extended triangle T = (p, q, r). To determine the error metric in higher-dimensional space, we first calculate two orthogonal vectors, namely:

[0088] Formula Six:

[0089] Formula 7:

[0090] Where e1 and e2 are two vectors on the plane containing T, q is and e2 is , and "·" represents the dot product of vectors, which defines a coordinate axis on this high-dimensional plane with p as the origin. Consider an arbitrary point v, and let u = pv, from formula eight: ‖u‖ 2 =(u·e1) 2 +…+(μ·e n ) 2 ;

[0091] That is, Formula Nine: (u·e3) 2+…+(u·e n ) 2 =‖μ‖ 2 -(μ·e1) 2 -(u·e2) 2 .

[0092] Since e1 and e2 are two vectors on the plane containing T, the left-hand side of Formula Nine is the square of the distance from the vertex to the plane containing T, which is Formula Ten: D 2 =‖μ‖ 2 -(μ·e1) 2 -(u·e2) 2 ;

[0093] Expanding and combining these equations yields an equation similar to Equation 3, where:

[0094] Formula 11:

[0095] Formula 12: b = (p·e1)e1 + (p·e2)e2 - p;

[0096] Formula 13: c = p·e - (p·e1) 2 -(p·e2) 2 .

[0097] Once the above error metric is obtained, the same subsequent steps as with the previous 3D information can be performed, thereby simplifying the mesh with attribute information.

[0098] Generally, the edges of an image attract more attention, thus influencing how people perceive its quality. The same applies to 3D meshes; people tend to notice the boundaries more readily. Therefore, whether or not boundaries are preserved is a factor affecting quality during mesh simplification. Mesh boundaries are generally geometric boundaries and texture boundaries. When an edge belongs to only one face, that edge is a geometric boundary. When a vertex has two or more texture coordinates, that vertex is a texture coordinate boundary. During mesh simplification, none of these boundaries should be merged. Therefore, in each simplification iteration, we can first determine if a vertex on an edge is a boundary point; if it is, skip it and proceed directly to the next iteration.

[0099] Step S22: Quantize the geometric information of the simplified mesh to obtain first information;

[0100] It should be noted that the geometric information of this simplified mesh can be understood as the coordinates of the vertices in the 3D mesh, which usually refers to 3D coordinates.

[0101] Specifically, the first information includes at least one of the following:

[0102] A11, First-precision geometric information;

[0103] It should be noted that the first precision geometric information can be understood as low precision geometric information, that is, low precision geometric information refers to the geometric information after the target three-dimensional mesh is quantized, that is, the three-dimensional coordinate information of each vertex of the target three-dimensional mesh after quantization.

[0104] A12, Second-precision geometric information;

[0105] It should be noted that the second precision geometric information can be understood as high precision geometric information, which can be regarded as the geometric information lost during the quantization process, that is, the lost three-dimensional coordinate information.

[0106] A13. Supplementary information;

[0107] It should be noted that the information of the supplementary points refers to the information of points that need to be processed additionally during the quantization process. In other words, the supplementary points are points that need to be processed additionally during the quantization process, such as duplicate points with overlapping coordinate positions. By processing the duplicate points, the vertices with overlapping coordinate positions during quantization can be restored to their original positions after dequantization.

[0108] Optionally, the information in this supplementary point includes at least one of the following:

[0109] A131, the index of the vertex in the first-precision geometric information corresponding to the supplementary point;

[0110] It should be noted that by identifying the index, we can know which points in the quantized mesh are identified as multiple points in the original 3D mesh. That is, multiple points in the original 3D mesh overlap after quantization. The low-precision geometric information of the supplementary points can be determined by the vertex index.

[0111] A132, Supplementary point third-precision geometric information;

[0112] It should be noted that this third-precision geometric information can be understood as the low-precision geometric information of the supplementary points, that is, the quantized three-dimensional coordinate information of the supplementary points.

[0113] A133, Supplementary point fourth-precision geometric information;

[0114] It should be noted that this fourth precision geometric information can be understood as the high precision geometric information of the supplementary points, that is, the three-dimensional coordinate information of the supplementary points that were lost during the quantization process.

[0115] It should be noted that, in practical use, the hidden points after quantization can be determined by using A131 and A133 or by using A132 and A133.

[0116] Optionally, in one embodiment of this application, step S22 is specifically implemented as follows:

[0117] The encoding end quantizes each vertex in the simplified mesh according to the quantization parameters of each component to obtain first-precision geometric information.

[0118] It should be noted that the quantization parameters for each component can be flexibly set according to usage requirements.

[0119] Generally, for quantization with low precision requirements, only low-precision geometric information can be retained after quantization; however, for quantization with high precision requirements, both low-precision and high-precision geometric information need to be recorded during quantization to achieve accurate mesh recovery during decoding. In other words, the specific implementation of step S22 above should also include:

[0120] The encoding end obtains the second precision geometric information based on the first precision geometric information and the quantization parameters of each component.

[0121] For example, suppose the three-dimensional coordinates of a vertex are (x, y, z), and the quantization parameter is (QP). x QP y QP z Low-precision geometric information (x) l ,y l ,z l ) and high-precision geometric information (x h ,y h ,z h The calculation process for ) is shown in formulas fourteen to nineteen:

[0122] Formula Fourteen: x l =f1(x,QP) x );

[0123] Formula 15: y l =f1(y,QP y );

[0124] Formula 16: z l =f1(z,QP z );

[0125] Formula 17: x h =f2(x,x l QP x );

[0126] Formula 18: y h =f2(y,y l QP y );

[0127] Formula 19: z h =f2(z,z) l QP z );

[0128] Among them, the f1 function in Formulas 14 to 16 is a quantization function. The input of the quantization function is the coordinates of a certain dimension and the quantization parameter of that dimension, and the output is the quantized coordinate value. The f2 function in Formulas 17 to 19 takes the original coordinate value, the quantized coordinate value and the quantization parameter of that dimension as input, and outputs the high-precision coordinate value.

[0129] The f1 function can be calculated in several ways. A common method, as shown in formulas 20 to 22, involves dividing the original coordinates of each dimension by the quantization parameter of that dimension. Here, ' / ' represents the division operator, and the result of the division operation can be rounded in different ways, such as rounding to the nearest integer, rounding down, or rounding up. The f2 function also has several calculation methods, the corresponding implementations of formulas 17 to 19, as shown in formulas 23 to 25, where '*' represents the multiplication operator.

[0130] Formula 20: x l =x / QP x ;

[0131] Formula 21: y l =y / QP y ;

[0132] Formula 22: z l =z / QP z ;

[0133] Formula 23: x h =xx l *QP x ;

[0134] Formula 24: y h =yy l *QP y ;

[0135] Formula 25: z h =zz l *QP z ;

[0136] When the quantization parameter is an integer power of 2, the f1 and f2 functions can be implemented using bitwise operations, as shown in formulas 26 to 31:

[0137] Formula 26: x l =x >> log2QP x ;

[0138] Formula 27: y l =y>>log2QP y ;

[0139] Formula 28: z l =z>>log2QP z ;

[0140] Formula 29: x h =x&(QP x -1);

[0141] Formula 30: y h =y&(QP y -1);

[0142] Formula 31: z h =z&(QP z -1);

[0143] It is worth noting that regardless of the calculation method used for the f1 and f2 functions, the quantization parameter QP x QP y and QP z Both can be flexibly configured. Firstly, the quantization parameters for different components are not necessarily equal; therefore, the correlation between the quantization parameters of different components can be used to establish a QP (Quantization Process). x QP y and QP z The relationship between the components is such that different quantization parameters are set for different components; secondly, the quantization parameters for different spatial regions are not necessarily equal, and the quantization parameters can be adaptively set according to the sparsity of the vertex distribution in the local region.

[0144] It should be noted that high-precision geometric information includes detailed information about the contour of the 3D mesh. To further improve compression efficiency, the high-precision geometric information (x... h ,y h ,z h Further processing is required. In a 3D mesh model, the importance of high-precision geometric information of vertices varies in different regions. For regions with sparse vertex distribution, distortion of high-precision geometric information will not significantly affect the visual effect of the 3D mesh. In this case, to improve compression efficiency, one can choose to further quantize the high-precision geometric information or retain only the high-precision geometric information of a subset of points.

[0145] Optionally, during the quantization process, multiple points may overlap at the same location after quantization. In other words, in this case, the specific implementation of step S22 above should also include:

[0146] The encoding end determines the information of the supplementary points based on the geometric information of the simplified grid and the first precision geometric information.

[0147] In other words, after obtaining the low-precision geometric information of all vertices, points with repeated low-precision geometric information are treated as supplementary points and encoded separately. The geometric information of the supplementary points can also be divided into low-precision and high-precision geometric information. Depending on the application's requirements for compression distortion, it is possible to retain all supplementary points or only a portion of them. The high-precision geometric information of the supplementary points can also be further quantized, or only the high-precision geometric information of a subset of points can be retained.

[0148] It should be noted that after quantizing the geometric information of the target 3D mesh to obtain the first information, the first information needs to be encoded to obtain the final bitstream. Optionally, the specific implementation process of encoding the first information as described in the embodiments of this application includes:

[0149] Step S221: The encoding end processes the first information to obtain second information, the second information including at least one of a placeholder image and a geometric image;

[0150] Step S222: The encoding end encodes the second information.

[0151] It should be noted that, since the first information contains different types of information, when processing the first information, different types of information will be processed separately. The implementation process of step S221 will be explained from the perspective of different types of information below.

[0152] I. The first information includes first-precision geometric information.

[0153] Optionally, in this case, the specific implementation process of step S221 includes:

[0154] Step S2211: The encoding end performs three-dimensional patch division on the first precision geometric information;

[0155] It should be noted that in this case, the main task is to divide the low-precision geometric information into patches to obtain multiple 3D patches. The specific implementation of this step is as follows: the encoder determines the projection plane of each vertex contained in the first-precision geometric information; the encoder divides the vertices contained in the first-precision geometric information into patches based on the projection planes; the encoder clusters the vertices contained in the first-precision geometric information to obtain each patch. In other words, the patch division process mainly includes: first, estimating the normal vector of each vertex, and selecting the candidate projection plane with the smallest angle between the plane normal vector and the vertex normal vector as the projection plane of that vertex; then, performing an initial partitioning of the vertices based on the projection planes, grouping vertices with the same and connected projection planes into patches; finally, using a fine-grained partitioning algorithm to optimize the clustering results, obtaining the final 3D patch.

[0156] The specific implementation of the process of obtaining a 3D patch from the first-precision geometric information is explained in detail below.

[0157] First, the normal vector of each point is estimated. The tangent plane and its corresponding normal are defined based on the nearest neighbor vertex m of each point within a predefined search distance. A KD-tree is used to separate the data and at point p... i Find neighboring points nearby; the centroid of this set. Used to define the normal. The centroid c is calculated as follows:

[0158] Formula 32:

[0159] The vertex normal vector is estimated using the eigenvalue decomposition method, and the calculation process is shown in formula 33:

[0160] Formula 33:

[0161] In the initial partitioning phase, a preliminary projection plane is selected for each vertex. Let the estimated value of the vertex normal vector be... The normal vector of the candidate projection plane is The plane whose normal vector direction is closest to the vertex's normal vector direction is selected as the projection plane of that vertex. The calculation process for plane selection is shown in Formula 34:

[0162] Formula 34:

[0163] The fine-grained partitioning process can employ a grid-based algorithm to reduce its time complexity. The flow of a grid-based fine-grained partitioning algorithm is as follows: Figure 3 As shown, it specifically includes:

[0164] First, set the loop count (numer) to 0. Then, check if the loop count is less than the maximum loop count (note that this maximum loop count can be set according to usage requirements). If it is less, proceed with the following process:

[0165] Step S301: Divide the (x,y,z) geometric coordinate space into voxels.

[0166] It should be noted that the geometric coordinate space here refers to the geometric coordinate space constituted by the first-precision geometric information obtained by quantization. For example, for a 10-bit mesh using a voxel size of 8, the number of voxels at each coordinate will be 1024 / 8 = 128, and the total number of voxels in this coordinate space will be 128 × 128 × 128.

[0167] Step S302: Locate the fill voxels. A fill voxel is a voxel in the mesh that contains at least one point.

[0168] Step S303: Calculate the smoothing score of each filled voxel on each projection plane, denoted as voxScoreSmooth. The voxel smoothing score of a voxel on a projection plane is the number of points aggregated to that projection plane through the initial segmentation process.

[0169] Step S304: Use KD-Tree partitioning to find the nearest filled voxels, denoted as nnFilledVoxels, which is the nearest filled voxel of each filled voxel (within the search radius and / or limited to the maximum number of neighboring voxels).

[0170] Step S305: Using the voxel smoothing scores of the nearest-neighbor filled voxels on each projection plane, calculate the smoothing score (scoreSmooth) for each filled voxel. The calculation process is shown in Formula 35:

[0171] Formula thirty-five:

[0172] Where p is the index of the projection plane, and v is the index of the nearest neighbor filled voxel. All points within a voxel have the same scoreSmooth.

[0173] Step S306: Calculate the normal score, denoted as scoreNormal, using the normal vector of the vertex and the normal vector of the candidate projection plane. The calculation process is shown in Formula 36.

[0174] Formula 36: scoreNormal[i][p] = normal[i]·orientation[p];

[0175] Where p is the index of the projection plane and i is the index of the vertex.

[0176] Step S307: Use scoreSmooth and scoreNormal to calculate the final score of each voxel on each projection plane. The calculation process is shown in Formula 37.

[0177] Formula thirty-seven:

[0178] Where i is the vertex index, p is the index of the projection plane, and v is the voxel index of vertex i.

[0179] Step S308: Use the scores from step 307 to cluster the vertices to obtain finely divided patches.

[0180] Repeat the above process multiple times until a relatively accurate patch is obtained.

[0181] Step S2212: The encoding end performs two-dimensional projection on the divided three-dimensional pieces to obtain two-dimensional pieces;

[0182] It should be noted that this process involves projecting a 3D patch onto a 2D plane to obtain a 2D patch.

[0183] Step S2213: The encoding end packages the two-dimensional slices to obtain two-dimensional image information;

[0184] It should be noted that this step implements patch packing. The purpose of patch packing is to arrange 2D patches on a 2D image. The basic principle of patch packing is to arrange patches on the 2D image without overlap or to arrange the non-pixel parts of the patches on the 2D image with partial overlap. Through algorithms such as priority sorting and temporal consistency sorting, the patches are arranged more tightly and have temporal consistency, thereby improving coding performance.

[0185] Suppose that the resolution of the 2D image is WxH, and the minimum block size of the patch arrangement is defined as T, which specifies the minimum distance between different patches placed on this 2D grid.

[0186] First, patches are inserted onto the 2D grid without overlapping. Each patch occupies an area consisting of an integer number of TxT blocks. Furthermore, adjacent patches must be at least one TxT block apart. When there is insufficient space to place the next patch, the image height doubles, and patch placement continues.

[0187] To make the patches more compact, patches can be arranged in several different directions. For example, eight different directions can be used, such as... Figure 4 As shown, it includes 0 degrees, 180 degrees, 90 degrees, 270 degrees, and mirror images of the first four directions.

[0188] To better adapt to the inter-frame prediction characteristics of the video encoder, a temporally consistent patch arrangement method is adopted. In a Group of Frames (GOF), all patches of the first frame are arranged in descending order. For other frames in the GOF, the temporally consistent algorithm is used to adjust the patch arrangement order.

[0189] It should also be noted that after obtaining the two-dimensional image information, the patch information can be obtained based on the information obtained during the process of obtaining the two-dimensional image information. Then, the slice information can be encoded to obtain the slice information sub-bit stream.

[0190] It should be noted that during the process of obtaining 2D image information, it is necessary to record the information of patch division, patch projection plane, and patch packing position. Therefore, the patch information records the information of each step in the process of obtaining 2D image, that is, the patch information includes: patch division information, patch projection plane, and patch packing position.

[0191] Step S2214: The encoding end obtains a placeholder map of first precision and a geometric map of first precision based on the two-dimensional image information;

[0192] It's important to note that the process of obtaining the placeholder image mainly involves: using the patch arrangement information obtained from patch packing, setting the positions of vertices in the 2D image to 1 and the rest to 0, thus obtaining the placeholder image. The process of obtaining the geometry image mainly involves: during the process of obtaining the 2D patch through projection, the distance from each vertex to the projection plane is saved; this distance is called depth. The low-precision geometry image compression part involves arranging the depth values ​​of each vertex in the 2D patch to their positions in the placeholder image, thus obtaining the low-precision geometry image.

[0193] II. The first information includes second-precision geometric information.

[0194] Optionally, in this case, the specific implementation process of step S221 includes:

[0195] Step S2215: The encoding end obtains the arrangement order of the vertices contained in the first precision geometric information;

[0196] In step S2216, the encoding end arranges the second-precision geometric information corresponding to the vertices contained in the first-precision geometric information in the two-dimensional image to generate a second-precision geometric map.

[0197] It should be noted that the high-precision geometric information is generated using a raw patch arrangement method. The high-precision geometric information corresponding to the vertices in the low-precision geometric image is arranged in the 2D image to obtain the raw patch, thus generating the high-precision geometric image. This mainly involves three steps, as follows: Figure 5 As shown, it includes:

[0198] Step 501: Obtain the vertex arrangement order. Scan the low-precision geometry line by line from left to right, and use the scanning order of each vertex as the vertex arrangement order in the raw patch.

[0199] Step 502: Generate raw patch.

[0200] It should be noted that a raw patch modifies the 3D coordinates of vertices according to... Figure 6 Arrange the vertices row by row as shown to form a rectangular patch. Following the vertex arrangement order obtained in the first step, arrange the high-precision geometric information of the vertices sequentially to obtain the high-precision geometric information raw patch.

[0201] Step 503: Place the high-precision geometric information into a two-dimensional image to generate a high-precision geometric map.

[0202] It should be noted that when encoding to obtain the geometric sub-bitstream, the encoding end encodes the first-precision geometric figure and the second-precision geometric figure to obtain the geometric sub-bitstream.

[0203] III. The first information includes information about supplementary points.

[0204] Optionally, in this case, the specific implementation process of step S221 includes:

[0205] Step S2217: The encoding end arranges the third precision geometric information of the supplementary points into a first original piece;

[0206] Step S2218: The encoding end arranges the fourth precision geometric information of the supplementary points into a second original piece according to the same arrangement order as the first original piece;

[0207] In step S2219, the encoding end compresses the first original slice and the second original slice to obtain the geometric map of the supplementary points.

[0208] It should be noted that in this embodiment, the geometric information of the supplementary points is divided into low-precision and high-precision parts, which are encoded separately. First, the low-precision geometric information of the supplementary points is arranged in any order to form a low-precision raw patch; then, the high-precision geometric information is arranged in the same order as the low-precision raw patch to form a high-precision raw patch; finally, the low-precision raw patch and the high-precision raw patch are compressed, and various compression methods can be used. One method is to encode the values ​​in the raw patch using run-length encoding, entropy encoding, etc. Another method is to add the low-precision raw patch to the blank area of ​​the low-precision geometric diagram and add the high-precision raw patch to the blank area of ​​the high-precision geometric diagram to obtain the geometric diagram of the supplementary points.

[0209] It should be noted that after obtaining the encoded geometric information, geometric information reconstruction can be performed to obtain the reconstructed first geometric information. Then, duplicate vertex filtering is performed on the first geometric information to obtain duplicate vertex information. Optionally, in one embodiment of this application, the method for obtaining the duplicate vertex information includes:

[0210] The encoding end obtains the repeated vertices in the first geometric information and records the index of the repeated vertices to form repeated vertex information;

[0211] The repeated vertex information includes the index of the repeated vertex and the texture coordinate index of the first vertex and the repeated vertex.

[0212] It should be noted that by obtaining each repeated vertex one by one and recording its index, it is possible to obtain relatively accurate information about the repeated vertices.

[0213] Optionally, step 103 can be implemented in the following ways:

[0214] Step 1031: The encoding end rearranges the vertex texture coordinates of the target 3D mesh according to the index of the repeated vertices to obtain the rearranged texture coordinate information;

[0215] Optionally, this step can be implemented as follows: the encoding end moves the texture coordinates corresponding to the repeated vertices to the end of the list corresponding to the texture coordinates in the order in which the repeated vertices appear in the first geometric information, thereby forming reordered texture coordinate information.

[0216] For example, the texture coordinates of 10 vertices (vertices 1 to 10) from front to back are: coordinate 1, coordinate 2, coordinate 3, coordinate 4, coordinate 5, coordinate 6, coordinate 7, coordinate 8, coordinate 9, coordinate 10. Since vertex 1 and vertex 6 are duplicates, after reordering, the texture coordinates of the 10 vertices from front to back are: coordinate 1, coordinate 2, coordinate 3, coordinate 4, coordinate 5, coordinate 7, coordinate 8, coordinate 9, coordinate 10, coordinate 6.

[0217] It should be noted that by utilizing the order of repeated vertices in the first geometric information to reorder the texture coordinate information, it can be ensured that the reordered texture coordinate information, except for the tail, does not contain texture coordinate information of repeated vertices, which facilitates the adjustment of subsequent connection relationships.

[0218] Step 1032: The encoding end adjusts the first connection relationship of the target 3D mesh according to the reordered texture coordinate information and the repeated vertex information to obtain the reordered second connection relationship;

[0219] It should be noted that by reordering the connectivity relationships, the processed connectivity relationships do not contain information about duplicate vertices. This avoids the problem of discontinuity in the 3D mesh caused by duplicate vertices during connectivity relationship encoding, thereby improving the encoding efficiency of the connectivity relationships in the 3D mesh.

[0220] It should be noted that since the connection relationship consists of a texture coordinate index part and a geometric index part, these two parts need to be adjusted separately when adjusting the connection relationship. Optionally, in one embodiment of this application, the specific implementation process of step 1032 is as follows:

[0221] Step 10321: The encoding end modifies the texture coordinate index portion of the first connection relationship of the target three-dimensional mesh according to the reordered texture coordinate information;

[0222] Step 10322: The encoding end traverses the geometric index portion of the first connection relationship of the target 3D mesh, and replaces the index of the repeated vertex of the first connection relationship of the target 3D mesh with the index of the first vertex according to the repeated vertex information, so as to obtain the second connection relationship after reordering.

[0223] For example, the connection relationship of 10 vertices (vertices 1 to 10) is represented from front to back as: (1,1), (2,2), (3,3), (4,4), (5,5), (6,6), (7,7), (8,8), (9,9), (10,10). Here, the first value in the parentheses represents the geometric index of the vertex, and the second value represents the texture coordinate index. Since vertex 1 and vertex 6 are duplicates, the reordered connection relationship is represented from front to back as: (1,1), (2,2), (3,3), (4,4), (5,5), (1,10), (6,6), (7,7), (8,8), (9,9).

[0224] It should be noted that the specific implementation process of encoding the second connection relationship in this embodiment is as follows:

[0225] Step S31: The encoding end determines the vertices to be sorted within a first spatial range based on the spatial angle between adjacent triangular faces in the three-dimensional mesh. The first spatial range is the spatial range where the target vertex of the triangle to be encoded in the three-dimensional mesh is located, and the vertices to be sorted include the target vertex.

[0226] The connection relationship encoding in this application embodiment is a geometry-driven connection relationship encoding method, where the reconstructed geometry information includes the index information of vertices in the 3D mesh.

[0227] In this embodiment of the application, the above-mentioned three-dimensional network can be divided into at least one triangular facet, and each triangular facet contains at least one triangle.

[0228] In this step, based on the spatial angle between adjacent triangular faces in the 3D mesh, some vertices within the first spatial range can be filtered out, and the remaining vertices are used as vertices to be sorted.

[0229] Optionally, the first spatial range includes:

[0230] The spatial range between the first sphere and the second sphere;

[0231] Wherein, the first sphere and the second sphere have the same center, the radius of the first sphere and the radius of the second sphere are different, and the center of the sphere is the target position in the first side of the triangle to be encoded, such as the center of the sphere being the midpoint of the first side of the triangle to be encoded.

[0232] Step S32: The encoding end sorts the vertices to be sorted to obtain the sorting information of the target vertices.

[0233] In this step, the vertices to be sorted are sorted according to a preset sorting criterion. For example, the sorting criterion could be based on the distance between the vertex and the midpoint of the first side of the triangle to be encoded, or it could be based on the radius of the circumcircle of the triangle formed by the vertex and the first side. Of course, other criteria can also be used, and no specific limitation is made here.

[0234] Here, by using the spatial angle between adjacent triangular facets, vertices within the first spatial range are further removed, reducing the number of vertices to be sorted. This reduces the bit information used for sorting the target vertices.

[0235] Step S33: The encoding end obtains the encoding information of the triangle to be encoded based on the encoding information corresponding to the sorting information of the target vertices.

[0236] Optionally, the encoding end encodes the sorting information of the target vertices when the target conditions are met, obtaining the encoded information; when the target conditions are not met, it encodes the index of the target vertices, obtaining the aforementioned encoded information. For example, the target conditions are that the number of vertices to be sorted within the first spatial range is less than a preset threshold, and / or, the sorting number of the target vertex is less than a preset value. Since the encoded information corresponding to the sorting information occupies a small number of bits when the number of vertices to be sorted within the first spatial range is small or the sorting number of the target vertex is small, encoding the sorting information of the target vertex can effectively reduce the number of encoding bits. However, when the number of vertices to be sorted is large or the sorting number of the target vertex is large, encoding the index of the target vertex can effectively reduce the number of encoding bits compared to encoding the sorting information.

[0237] In this embodiment of the application, some vertices are excluded within a first spatial range based on the spatial angle between adjacent triangular faces in the three-dimensional mesh, and the vertices to be sorted are determined based on the excluded vertices, which reduces the number of vertices to be sorted. In this way, when encoding the sorting information of the target vertices, the number of bits occupied by the encoded information can be further reduced, thereby effectively improving the encoding efficiency.

[0238] Optionally, before the encoding end determines the first spatial range, it further includes:

[0239] The encoding end selects a first edge from the edge set corresponding to the three-dimensional mesh, wherein the edge set is the set of at least one edge of the encoded triangle in the three-dimensional mesh;

[0240] The encoding end determines the triangle to be encoded based on the first edge and the vertex corresponding to the first edge. The target vertex of the triangle to be encoded is the vertex other than the two vertices connected to the first edge among the vertices corresponding to the first edge. The target vertex can also be described as the opposite vertex of the first edge.

[0241] Optionally, the encoding end determines the vertices to be sorted within a first spatial range based on the spatial angle between adjacent triangular faces in the three-dimensional mesh, including:

[0242] When the triangle to be encoded is a triangle other than the preset category triangle, the encoding end determines the vertices to be sorted within the first spatial range based on the spatial angle between adjacent triangular faces in the three-dimensional mesh.

[0243] Optionally, the preset category triangle includes at least one of the following:

[0244] Triangles whose angle with the coded triangle is less than a preset angle;

[0245] A triangle with two vertices coinciding or three vertices collinear. Specifically, it refers to a triangle in which two vertices coincide or three vertices are collinear.

[0246] Optionally, the method in this application embodiment further includes:

[0247] When the triangle to be encoded is a triangle of the aforementioned preset category, the encoding end obtains the encoding information of the triangle to be encoded based on the encoding information corresponding to the target vertex information of the triangle to be encoded.

[0248] For example, if the triangle to be encoded is a triangle of the preset category, the index of the target vertex of the triangle to be encoded is directly encoded, and the encoding information of the triangle to be encoded is obtained according to the encoding information corresponding to the index of the target vertex.

[0249] In this embodiment of the application, when encoding the vertex index, binary representation can be used directly or encoding algorithms such as Huffman coding can be used. No specific limitation is made on the encoding method here.

[0250] Optionally, after obtaining the encoding information of the triangle to be encoded, the method further includes:

[0251] The encoding end updates the edge set according to a first preset rule;

[0252] The encoding end re-determines the triangles to be encoded based on the updated edge set until all triangles in the three-dimensional mesh have obtained encoding information;

[0253] The first preset rule includes: adding the two sides of the triangle to be encoded, excluding the first side, to the edge set, and removing the first side from the edge set.

[0254] Optionally, the encoding end determines the vertices to be sorted within a first spatial range based on the spatial angle between adjacent triangular faces in the three-dimensional mesh, including:

[0255] The encoding end excludes all vertices of the first target triangle from the vertices within the first spatial range to obtain the remaining vertices;

[0256] The encoding end determines the vertices to be sorted within the first spatial range based on the remaining vertices;

[0257] Wherein, the first target triangle is a triangle whose included angle with an adjacent encoded triangle is less than the included angle threshold, and one side of the first target triangle is the same as the first side of the triangle to be encoded.

[0258] Optionally, the encoding information of the triangle to be encoded may further include the encoding information of the included angle threshold.

[0259] Here, by encoding the included angle threshold, the decoding end can obtain the included angle threshold based on the encoded information, and determine the vertices to be sorted within the first spatial range based on the included angle threshold. In this method, the encoding end can flexibly set the included angle threshold.

[0260] Of course, a fixed included angle threshold can be agreed upon in advance. The encoding and decoding ends determine the vertices to be sorted within the first spatial range based on the pre-agreed included angle threshold, and the encoding end does not need to encode the included angle threshold.

[0261] Optionally, the method in this application embodiment further includes: encoding the target vertex information of the triangle to be encoded within a second spatial range to obtain the encoded information of the triangle to be encoded, wherein the second spatial range is the range in the three-dimensional mesh other than the first spatial range.

[0262] Optionally, the encoding information of the triangle to be encoded may also include the encoding information of the first spatial range.

[0263] For example, the radii of the first and second spheres mentioned above can be encoded, and the first spatial range can be flexibly set in this implementation.

[0264] Of course, the encoding and decoding ends can also pre-determine the size of the first spatial range. In this method, the encoding end does not need to encode the first spatial range.

[0265] In one specific embodiment of this application, the input 3D mesh is divided into one or more slices at the encoding end, and an initial triangle is selected in each slice. The vertex indices of the initial triangle are encoded, and the edges of the initial triangle are placed into a set of edges (i.e., the edge set). An edge in the edge set is selected, and its opposite vertex is determined. The triangle formed by this edge and its opposite vertex is the triangle to be encoded. For example, the edge selected in each iteration can be denoted as τ, its opposite vertex as v, and the adjacent triangles to be encoded are encoded. Figure 7 and Figure 8 As shown, the process of encoding connection relationships can specifically include:

[0266] (1) Under the condition of satisfying the preset conditions, the vertex index of the triangle can be directly encoded, or the triangle can be encoded in other ways. The preset conditions may be that the triangle to be encoded belongs to several special triangles, such as a degenerate face (two points coincide or three points are collinear) or the angle between the triangle and the encoded triangle is less than a certain angle, or the preset conditions are that the number of vertices in the first space is greater than the preset number, or the preset conditions are that the target vertex is outside the second space, such as within the second space, or the preset conditions are that the sorting number of the target vertex in the first space is greater than or equal to the preset value. The preset conditions can be flexibly set according to the needs. Add the two edges of the triangle to be encoded except edge τ to the edge set, and remove edge τ from the set. Then, take the other edge of the triangle to be encoded (the edge other than edge τ) from the edge set according to certain criteria, and continue to encode the triangle adjacent to the edge. For example, the access order can be used to select the next edge τ.

[0267] (2) If the above preset conditions are not met, determine the spatial range of vertex v (i.e., the first spatial range mentioned above) and encode the spatial range. Traverse all vertices within the spatial range of the slice, filter out all vertices of the new triangle formed with edge τ that has an angle less than a certain angle with the already encoded adjacent triangle, and encode the angle value.

[0268] The spatial extent can be determined using the geometric properties of adjacent triangular facets, spatial angles, or other criteria. For example, the spatial extent can be defined by taking the midpoint of side τ as the center of a sphere and using the minimum radius R. min and maximum radius R max Combination {R min ,R max The portion between the two concentric spheres is encoded as {R}. min ,R max}Group.

[0269] Optionally, the above angle values ​​can also be encoded.

[0270] (3) Traverse all vertices within the spatial range and sort them according to a certain sorting criterion. For example, the sorting criterion could be the distance from vertex v to the midpoint of edge τ; or the radius of the circumcircle of the triangle formed by vertex v and edge τ. Encode the index of vertex v in the sorting.

[0271] (4) Add the two sides of the newly encoded triangle except for side τ to the edge set, and remove side τ from the edge set. Then, take the other side of the newly encoded triangle from the set according to certain criteria, and continue to encode the triangle adjacent to that side.

[0272] The encoding process is iterated for each patch of the 3D mesh until all triangles in each patch are encoded. If the edge set is empty but there are unencoded triangles, an initial triangle is selected from the remaining unencoded triangles, and the encoding process is repeated.

[0273] It should also be noted that, in order to ensure the consistency of the connection relationship, in one embodiment of this application, the encoding end adjusts the part of the connection relationship of the target three-dimensional mesh that has changed according to the reconstructed first geometric information, and then performs the second connection relationship after reordering based on the adjusted connection relationship, and then encodes the second connection relationship.

[0274] It should be noted that the embodiments of this application also include encoding of repeated vertices, specifically implemented as follows:

[0275] During the encoding process of the second connection relationship, the encoding end checks whether there are duplicate vertices for each of the three vertices of the triangle facet based on the duplicate vertex information.

[0276] The encoding end identifies the duplicate vertices when they exist.

[0277] After completing the encoding of the second connection relationship, the encoding end encodes according to the identifier of the repeating vertex to obtain the repeating vertex identifier bitstream.

[0278] It should be noted that by marking the repeated vertices in the connection relationship based on the repeated vertex information, and then using the markings for encoding, the accuracy of the repeated vertex encoding can be guaranteed.

[0279] In other words, during the encoding of the connection relationship of the 3D mesh, for the three vertices of each triangular facet, the system checks whether there are duplicate vertices based on the duplicate vertex information. If there are duplicate vertices, the duplicate vertex is marked. After the connection relationship is encoded, the duplicate vertex mark is encoded into a duplicate point mark bitstream using an entropy encoder.

[0280] It should also be noted that this application requires encoding of texture coordinates (UV coordinates). UV coordinates are information describing the vertex texture of a 3D mesh. The 3D mesh first projects its surface texture into a 2D texture map. The UV coordinates represent the position of the 3D vertex texture within this 2D texture map and correspond one-to-one with geometric information. Optionally, in one embodiment of this application, the UV coordinate encoding process is as follows:

[0281] The encoding end restores the repeated vertices in the second geometric information and the second connection relationship according to the order of the repeated vertices in the reordered texture coordinate information;

[0282] The encoding end traverses the second connection relationship of the recovered duplicate vertices and records the traversal order.

[0283] The encoding end encodes the texture coordinates of the vertices according to the traversal order.

[0284] It should be noted that, since the process described above involves removing duplicate vertices from the connection relationships, and the texture coordinate encoding is based on the connection relationships containing duplicate vertices and geometric information, it is necessary to first restore the duplicate vertices in the second connection relationships and geometric information to ensure the accuracy of the texture coordinate encoding.

[0285] It should be noted that in this embodiment, the reordered texture coordinate information is used to encode the texture coordinates of the vertices by recovering the third geometric information (the geometric information corresponding to the second geometric information after recovering the second geometric information by repeating the vertices) and the third connection relationship (the connection relationship corresponding to the second connection relationship after recovering the second connection relationship by repeating the vertices) obtained by recovering the second geometric information and the second connection relationship.

[0286] The specific implementation process includes:

[0287] Step S41: The encoding end determines the target triangle according to the third connection relationship. The target triangle is composed of the first side and the vertex to be encoded.

[0288] Optionally, in this embodiment of the application, this step can be implemented as follows:

[0289] The encoding end selects a first edge from the edge set, which is the set of edges of the triangle constructed by the third connection relationship; the encoding end determines the target triangle based on the first edge.

[0290] Optionally, before selecting the first edge from the edge set at the encoding end, the following is also included:

[0291] The encoding end selects an initial triangle based on the third connection relationship; the encoding end encodes the texture coordinates of the three vertices of the initial triangle and adds the three sides of the initial triangle to the edge set.

[0292] Typically, the initial triangle is the first triangle in the connection relationship. In this embodiment, the vertices of the initial triangle are not predicted. Instead, the texture coordinates are directly encoded. After encoding the texture coordinates of each vertex of the initial triangle (it should be noted that the texture coordinates refer to the original texture coordinates obtained directly from the target 3D mesh), each edge of the initial triangle is added to the edge set to form an initial edge set. Then, the subsequent vertices are predicted based on this initial edge set.

[0293] Step S42: The encoding end performs texture coordinate prediction on the vertex to be encoded based on the reconstructed geometric information corresponding to the three vertices of the target triangle and the real texture coordinates of the vertices on the first side, and obtains the predicted texture coordinates of the vertex to be encoded.

[0294] Step S43: The encoding end encodes the texture coordinates of the vertex to be encoded based on the difference between the actual texture coordinates and the predicted texture coordinates of the vertex to be encoded.

[0295] It should be noted that after obtaining the predicted texture coordinates of the vertex to be encoded, the difference between the predicted texture coordinates and the actual texture coordinates can be obtained, and then encoding can be performed based on the difference. Optionally, the difference can be encoded directly, or the difference can be processed first, and then the processed difference can be encoded. For example, the processing can be normalization. Encoding the vertex to be encoded by encoding based on the difference can reduce the number of bits for texture coordinate encoding.

[0296] It should be noted that the difference described in this application embodiment can be obtained by subtracting the predicted texture coordinates from the actual texture coordinates, or by subtracting the actual texture coordinates from the predicted texture coordinates. The specific method used is acceptable as long as the encoding and decoding ends understand it consistently. The difference in this application embodiment can also be referred to as the residual.

[0297] Optionally, in one embodiment of this application, the implementation method of the encoding end predicting the texture coordinates of the vertex to be encoded based on the reconstructed geometric information corresponding to the three vertices of the target triangle and the real texture coordinates of the vertices on the first side, and obtaining the predicted texture coordinates of the vertex to be encoded, includes:

[0298] Step S51: The encoding end obtains the texture coordinates of the projection point of the vertex to be encoded on the first side based on the geometric information corresponding to each vertex of the target triangle and the real texture coordinates of the vertices on the first side.

[0299] It should be noted that, as Figure 9 As shown, edge NP is an edge selected from the edge set, which can be considered as the first edge mentioned above. Vertices N and P are the two vertices of the first edge, and vertex C is the vertex to be encoded. Vertices N, P, and C form the target triangle mentioned above. Point X is the projection of vertex C onto edge NP, and vertex O is the encoded point. The triangle formed by vertices O, N, and P shares NP edges with the triangle formed by vertices N, P, and C. Based on the above... Figure 9 Optionally, the specific method for obtaining the texture coordinates of the projection point of the vertex on the first side in the embodiments of this application is as follows:

[0300] According to the formula: Get the texture coordinates of the projection point of the vertex onto the first side;

[0301] Among them, X uv N represents the texture coordinates of the projection point of the vertex C to be encoded onto the first edge. uv Let N be the true texture coordinates of the vertex N on the first side of the target triangle. The vector of texture coordinates from vertex N on the first side of the target triangle to the projection point X of the vertex C to be encoded on the first side; is a vector of the reconstructed geometric information corresponding to vertices N and P on the first edge; The vector represents the reconstructed geometric information from vertex N on the first edge to vertex C to be encoded. It is a vector of reconstructed geometric information corresponding to the projection points X of the vertex N on the first side to the vertex C to be encoded on the first side.

[0302] Step S52: The encoding end obtains the predicted texture coordinates of the vertex to be encoded based on the texture coordinates of the projection point;

[0303] Optionally, the predicted texture coordinates of the vertex to be encoded include:

[0304] According to the formula: Obtain the predicted texture coordinates of the vertex to be encoded;

[0305] Among them, Pred C The predicted texture coordinates of the vertex C to be encoded. The first vector value is assigned to the vector of the texture coordinates of the vertex C to be encoded and the first vertex O corresponding to the first edge, where O is the first vector value. uv The texture coordinates of the first vertex corresponding to the first side of the target triangle are given. The first vertex O is the opposite vertex of the first side of the first triangle (i.e., the vertex opposite to the first side in the first triangle). The first triangle and the target triangle share a common first side. The vector from the projection point X of the vertex C to be encoded on the first edge to the texture coordinates of the vertex C to be encoded; The second vector value is taken for the vector of the texture coordinates of the vertex C to be encoded and the first vertex O corresponding to the first edge.

[0306] It should be noted that, based on the above process, the predicted texture coordinates of the point to be encoded are obtained, and the encoding of the point to be encoded can be realized based on the predicted texture coordinates; Optionally, after encoding the point to be encoded based on one edge in the edge set, the encoding end adds the second edge of the target triangle to the edge set and deletes the first edge from the edge set, where the second edge is an edge of the target triangle that is not included in the edge set, thereby realizing the update of the edge set.

[0307] It should be noted that, in the embodiments of this application, the residuals of the vertices to be encoded can be obtained and encoded simultaneously, or all residuals can be obtained first and then encoded uniformly.

[0308] It should also be noted that, in order to ensure the consistency of texture coordinates, in one embodiment of this application, the encoding end needs to adjust the values ​​and arrangement order of some texture coordinates according to the reconstructed first geometric information.

[0309] It should be noted that one embodiment of this application also includes the encoding of the texture map. Specifically, for the texture map, a video encoder can typically be used to encode the texture map frame by frame, such as using High Efficiency Video Coding (HEVC), Multi-Functional Codec (VVC), or other encoders to form a texture map sub-stream. Any video encoder can be used here.

[0310] It should be noted that after obtaining the various sub-streams, the sub-streams are mixed to form the output grid-coded stream.

[0311] In summary, for the encoding end, the encoding involves encoding the mesh's geometric information, connectivity, UV coordinates, and texture map. The main implementation process is as follows:

[0312] 1) In lossy mode, optional simplification operations are performed on the 3D mesh, that is, the number of mesh vertices and edges is reduced while maintaining the mesh structure as much as possible, thereby reducing the amount of data in the 3D mesh.

[0313] 2) For the simplified mesh, its geometric information is quantized to reduce the spacing between vertices, which is beneficial for subsequent video-based geometric information compression.

[0314] It should be noted that quantization may yield low-precision geometric information, high-precision geometric information, and supplementary point information. Low-precision geometric information refers to the quantized 3D coordinates; high-precision geometric information is the geometric information lost from the low-precision mesh after quantization; supplementary points refer to points generated during quantization that require further processing, such as overlapping points. For the low-precision geometric information generated by quantization, a projection method similar to V-PCC is used to project it onto a 2D plane, followed by video compression. High-precision geometric information and supplementary points can be encoded using special point processing methods in V-PCC, such as compression using the raw patch method. The resulting sub-streams are then mixed, preparing to further mix them with concatenated streams and other streams to obtain the final output stream. The representation and encoding of different precision information and supplementary points here balances lossless and lossy modes, particularly ensuring lossless compression while reducing coding bit overhead.

[0315] 3) Decode the encoded geometric information bitstream to reconstruct the geometric information, which is then used as auxiliary information for connectivity encoding. After updating the connectivity of the original mesh, the updated connectivity information is encoded. Finally, the obtained connectivity bitstream is mixed with the geometric information and other attribute information bitstreams that need to be encoded.

[0316] 4) Reconstruct the UV coordinates using the reconstructed geometric information and UV coordinate information, and encode the UV coordinates to form a UV coordinate sub-code stream. The encoding method here can use predictive coding, that is, predict the position of the UV coordinates to be encoded and then encode the residual between the predicted coordinates and the real coordinates to save bit overhead (the number of bits of the residual is less than the number of bits of the original UV coordinates).

[0317] 5) Perform video encoding on the texture map to form a texture map sub-stream.

[0318] 6) Mix the obtained sub-streams to form the encoder's output stream.

[0319] For example, the video-based 3D mesh encoding framework of this application embodiment is as follows: Figure 10As shown, the overall encoding process is as follows: First, before quantization, it is possible to choose whether to sample and simplify the 3D mesh; then, the 3D mesh is quantized, which may generate three parts: low-precision geometric information, high-precision geometric information, and supplementary point information; for low-precision geometric information, patch division and arrangement are performed using projection to generate patch sequence compressed information (patch division information), placeholder map, and low-precision geometric map; for possible high-precision geometric information, raw patch arrangement can be used to generate high-precision geometric map; for possible supplementary points, the geometric information of the supplementary points can be divided into low-precision and high-precision parts, and raw patches are arranged separately and encoded into a separate bitstream, or the raw patches are added to the geometric map; then, the patch sequence compressed information, placeholder map, and geometric map are encoded. For connectivity relationships, the encoded geometric information bitstream is decoded to reconstruct the geometric information as auxiliary information for connectivity relationship encoding. After updating the connectivity relationships of the original mesh, the updated connectivity information is encoded to obtain the connectivity relationship sub-bitstream. For UV coordinates, the reconstructed geometric information and UV coordinate information are used to reconstruct the UV coordinates, and then the UV coordinates are encoded to form a UV coordinate sub-stream. In some cases, such as when the texture map is fragmented, it is possible to regenerate more complete UV coordinates for each fragment and encode them. For texture maps, video encoding can be directly performed on the texture map to form a texture map sub-stream. Finally, the multiple sub-streams are mixed to obtain the final output stream.

[0320] It should be noted that the embodiments of this application provide an encoding framework for video-based 3D meshes. For the decoding end, it is only necessary to perform decoding according to the reverse process of the encoding end. In this application, meshes containing repeated vertices with geometric information are specifically marked and encoded separately. In the process of encoding connection relationships, because the encoding of repeated vertices is removed, the encoding of 3D meshes can be made more efficient.

[0321] The encoding method provided in this application can be executed by an encoding device. This application uses an encoding device executing the encoding method as an example to illustrate the encoding device provided in this application.

[0322] like Figure 11 As shown, this application embodiment provides an encoding device 1100, including:

[0323] The first acquisition module 1101 is used to decode and reconstruct the geometric information of the encoded target three-dimensional mesh to obtain the reconstructed first geometric information;

[0324] The second acquisition module 1102 is used to filter duplicate vertices in the first geometric information and acquire duplicate vertex information. The duplicate vertex is a vertex other than the first vertex among a plurality of vertices with the same position coordinates. The first vertex is one of the vertices among a plurality of vertices with the same position coordinates.

[0325] The third acquisition module 1103 is used to reorder the first connection relationship of the target three-dimensional mesh according to the repeated vertex information, and obtain the reordered second connection relationship.

[0326] The first encoding module 1104 is used to encode the second connection relationship.

[0327] Optionally, the method for obtaining the repeated vertex information includes:

[0328] Obtain the duplicate vertices in the first geometric information and record the indices of the duplicate vertices to form duplicate vertex information;

[0329] The repeated vertex information includes the index of the repeated vertex and the texture coordinate index of the first vertex and the repeated vertex.

[0330] Optionally, the third acquisition module 1103 includes:

[0331] The first acquisition unit is used to rearrange the vertex texture coordinates of the target 3D mesh according to the index of the duplicate vertices, and acquire the rearranged texture coordinate information.

[0332] The second acquisition unit is used to adjust the first connection relationship of the target 3D mesh according to the reordered texture coordinate information and the repeated vertex information, and acquire the reordered second connection relationship.

[0333] Optionally, the first acquisition unit is configured to:

[0334] Based on the order in which the repeated vertices appear in the first geometric information, the texture coordinates corresponding to the repeated vertices are sequentially moved to the end of the list corresponding to the texture coordinates, forming reordered texture coordinate information.

[0335] Optionally, the second acquisition unit is configured to:

[0336] The texture coordinate index portion of the first connection relationship of the target 3D mesh is modified according to the reordered texture coordinate information;

[0337] The geometric index portion of the first connection relationship of the target 3D mesh is traversed, and the index of the repeated vertex in the first connection relationship of the target 3D mesh is replaced with the index of the first vertex according to the repeated vertex information, so as to obtain the second connection relationship after reordering.

[0338] Optionally, the device further includes:

[0339] The first query module is used to query whether there are duplicate vertices for each of the three vertices of a triangle facet during the encoding of the second connection relationship, based on the duplicate vertex information.

[0340] The identification module is used to identify the duplicate vertices when they exist.

[0341] The fourth acquisition module is used to encode the repeating vertex identifier bitstream based on the identifier of the repeating vertex after the encoding of the second connection relationship is completed.

[0342] Optionally, after the first acquisition module 1101 decodes and reconstructs the geometric information of the encoded target 3D mesh to obtain the reconstructed first geometric information, the method further includes:

[0343] The adjustment module is used to adjust the values ​​and arrangement order of partial texture coordinates based on the reconstructed first geometric information.

[0344] Optionally, the device further includes:

[0345] The first recovery module is used to recover the repeated vertices in the second geometric information and the second connection relationship according to the order of the repeated vertices in the reordered texture coordinate information, wherein the second geometric information is the mesh geometric information excluding repeated vertices;

[0346] The first recording module is used to traverse the second connection relationship of the recovered duplicate vertices and record the traversal order;

[0347] The second encoding module is used to encode the texture coordinates of the vertices according to the traversal order.

[0348] Optionally, before the third acquisition module 1103 reorders the first connection relationships of the target 3D mesh based on the repeated vertex information and obtains the reordered second connection relationships, the method further includes:

[0349] The adjustment module is used to adjust the parts of the target three-dimensional mesh where the first connection relationship has changed, based on the reconstructed first geometric information.

[0350] This device embodiment corresponds to the above-described encoding method embodiment. All implementation processes and methods of the above-described method embodiment can be applied to this device embodiment and can achieve the same technical effect.

[0351] This application embodiment also provides an encoding device, including a processor and a communication interface, wherein the processor is used to decode and reconstruct the geometric information of the encoded target 3D mesh to obtain reconstructed first geometric information; to filter duplicate vertices in the first geometric information to obtain duplicate vertex information, wherein the duplicate vertex is a vertex other than the first vertex among a plurality of vertices with the same position coordinates, and the first vertex is one of the plurality of vertices with the same position coordinates; to reorder the first connection relationship of the target 3D mesh according to the duplicate vertex information to obtain the reordered second connection relationship; and to encode the second connection relationship.

[0352] Optionally, the processor is used to:

[0353] Obtain the duplicate vertices in the first geometric information and record the indices of the duplicate vertices to form duplicate vertex information;

[0354] The repeated vertex information includes the index of the repeated vertex and the texture coordinate index of the first vertex and the repeated vertex.

[0355] Optionally, the processor is used to:

[0356] The encoding end rearranges the vertex texture coordinates of the target 3D mesh according to the index of the repeated vertices, and obtains the rearranged texture coordinate information;

[0357] The encoding end adjusts the first connection relationship of the target 3D mesh based on the reordered texture coordinate information and the repeated vertex information to obtain the reordered second connection relationship.

[0358] Optionally, the processor is used to:

[0359] The encoding end moves the texture coordinates corresponding to the repeated vertices to the end of the list corresponding to the texture coordinates in the order in which the repeated vertices appear in the first geometric information, forming reordered texture coordinate information.

[0360] Optionally, the processor is used to:

[0361] The encoding end modifies the texture coordinate index portion of the first connection relationship of the target 3D mesh according to the reordered texture coordinate information;

[0362] The encoding end traverses the geometric index portion of the first connection relationship of the target 3D mesh, and replaces the index of the repeated vertex in the first connection relationship of the target 3D mesh with the index of the first vertex according to the repeated vertex information, so as to obtain the second connection relationship after reordering.

[0363] Optionally, the processor is further configured to:

[0364] During the encoding process of the second connection relationship, the encoding end checks whether there are duplicate vertices for each of the three vertices of the triangle facet based on the duplicate vertex information.

[0365] The encoding end identifies the duplicate vertices when they exist.

[0366] After completing the encoding of the second connection relationship, the encoding end encodes according to the identifier of the repeating vertex to obtain the repeating vertex identifier bitstream.

[0367] Optionally, the processor is further configured to:

[0368] The encoding end adjusts the values ​​and arrangement order of some texture coordinates based on the reconstructed first geometric information.

[0369] Optionally, the processor is further configured to:

[0370] The encoding end recovers the repeated vertices in the second geometric information and the second connection relationship according to the order of the repeated vertices in the reordered texture coordinate information. The second geometric information is the mesh geometric information that does not include repeated vertices.

[0371] The encoding end traverses the second connection relationship of the recovered duplicate vertices and records the traversal order.

[0372] The encoding end encodes the texture coordinates of the vertices according to the traversal order.

[0373] Optionally, the processor is further configured to:

[0374] The encoding end adjusts the parts of the target 3D mesh where the first connection relationship has changed based on the reconstructed first geometric information.

[0375] Specifically, embodiments of this application also provide an encoding device, such as... Figure 12 As shown, the encoding device 1200 includes a processor 1201, a network interface 1202, and a memory 1203. The network interface 1202 is, for example, a common public radio interface (CPRI).

[0376] Specifically, the encoding device 1200 in this application embodiment further includes: instructions or programs stored in memory 1203 and executable on processor 1201, wherein processor 1201 calls the instructions or programs in memory 1203 to execute. Figure 11 The methods executed by each module shown achieve the same technical effect, and to avoid repetition, they will not be described in detail here.

[0377] Corresponding to the implementation process at the encoding end, such as Figure 13 As shown in the embodiments of this application, a decoding method is also provided, including:

[0378] Step 1301: The decoding end decodes and reconstructs the first geometric information based on the bitstream corresponding to the acquired target 3D mesh.

[0379] Step 1302: The decoding end performs duplicate vertex filtering on the first geometric information to obtain duplicate vertex information. The duplicate vertex is a vertex other than the first vertex among multiple vertices with the same position coordinates. The first vertex is one of the multiple vertices with the same position coordinates.

[0380] Step 1303: The decoding end decodes the connection relationship bitstream of the target 3D mesh according to the repeated vertex information.

[0381] Optionally, the method for obtaining the repeated vertex information includes:

[0382] The decoding end obtains the repeated vertices in the first geometric information and records the index of the repeated vertices to form repeated vertex information;

[0383] The repeated vertex information includes the index of the repeated vertex and the texture coordinate index of the first vertex and the repeated vertex.

[0384] Optionally, the method further includes:

[0385] During the decoding process of the connection relationship bitstream, the decoding end checks whether there are duplicate vertices for each triangle facet based on the duplicate vertex information.

[0386] In the case of duplicate vertices, the decoding end decodes the index of the duplicate vertex from the duplicate identifier bitstream.

[0387] Optionally, the method further includes:

[0388] The decoding end recovers the repeated vertices based on the index of the repeated vertices, the second geometric information and the decoded connection relationship, and the second geometric information is the mesh geometric information excluding repeated vertices;

[0389] The decoding end traverses the connection relationships of the repeated vertices and records the traversal order.

[0390] The decoding end decodes the texture coordinate bitstream of the vertices according to the traversal order.

[0391] Optionally, the video-based 3D mesh geometric information decoding process in this embodiment includes: decomposing the bitstream into patch information sub-bitstreams, placeholder map bitstreams, and geometric map bitstreams; then, decoding these three sub-bitstreams respectively to obtain patch information, placeholder maps, and geometric maps; finally, reconstructing the geometric information using the patch information, placeholder maps, and geometric maps. Specifically, as shown... Figure 14 As shown, the most crucial aspect is the specific process of geometric information reconstruction:

[0392] Step S111: Obtain the 2D patch;

[0393] It should be noted that obtaining 2D patches refers to segmenting the placeholder and depth information of 2D patches from placeholder and low-precision geometry maps using patch information. Patch information contains the position and size of the bounding box of each 2D patch within the placeholder and low-precision geometry maps. The placeholder and low-precision geometric information of the 2D patch can be directly obtained using the patch information, placeholder map, and low-precision geometry map. For high-precision geometric information, the vertex distribution of the low-precision geometry map is used to map the high-precision geometric information values ​​within the high-precision geometric information region to the vertices of the low-precision geometry map. Then, the xyz 3D geometric information is separated from this according to the preset arrangement rules used by the encoder, thus obtaining the high-precision geometric information. For the geometric information of supplementary points, the low-precision raw patch and high-precision raw patch of the supplementary point can be directly decoded to obtain the low-precision and high-precision geometric information of the supplementary point.

[0394] Step S112, Reconstruct the 3D patch;

[0395] It's important to note that reconstructing a 3D patch refers to using placeholder information and low-precision geometric information from a 2D patch to reconstruct the vertices of that 2D patch into a low-precision 3D patch. The placeholder information in the 2D patch includes the position of the vertices relative to the origin in the local coordinate system of the patch's projection plane, while the depth information includes the depth value of the vertices along the normal direction of the projection plane. Therefore, using the placeholder and depth information, a 2D patch can be reconstructed into a low-precision 3D patch in the local coordinate system.

[0396] Step S113: Reconstruct the low-precision geometric model;

[0397] It should be noted that reconstructing a low-precision geometric model refers to using the reconstructed low-precision 3D patches to rebuild the entire low-precision 3D geometric model. The patch information contains the transformation relationship between the 3D patch and the global coordinate system of the 3D geometric model. By using the coordinate transformation relationship to transform all 3D patches to the global coordinate system, the low-precision 3D geometric model is obtained. In addition, for supplementary points, the geometric information in the low-precision raw patch is directly used to obtain the low-precision coordinate values ​​of the supplementary points in the global coordinate system, thus obtaining the complete low-precision 3D geometric model.

[0398] Step S114: Reconstruct the high-precision geometric model;

[0399] It should be noted that reconstructing a high-precision geometric model refers to the process of rebuilding a high-precision geometric model based on a low-precision geometric model, using high-precision geometric information. During the acquisition of the 2D patch, high-precision geometric information is mapped to low-precision geometric information. Based on the high-precision and low-precision geometric information of the vertices, the high-precision 3D coordinates of the vertices can be reconstructed. Depending on the application requirements, it is possible to choose to reconstruct the high-precision 3D coordinates of all vertices or only a portion of the vertices. High-precision 3D coordinates (x... r ,y r ,z r The calculation process is shown in formulas 38 to 40:

[0400] Formula 38: x r =f3(x l ,x h QP x );

[0401] Formula 39: y r =f3(y l ,y h QP y );

[0402] Formula 40: z r =f3(z l ,z h QP z );

[0403] The f3 function is the reconstruction function. The calculation process of the reconstruction function corresponds to the calculation process of the quantization function at the encoding end, and it has multiple implementation methods. If the f1 function is implemented using formulas 20 to 25, then the implementation methods of the reconstruction function are as shown in formulas 41 to 43:

[0404] Formula 41: x r =x l *QPx +x h ;

[0405] Formula 42: y r =y l *QP y +y h ;

[0406] Formula 43: z r =z l *QP z +z h ;

[0407] If the f1 function is implemented using formulas 26 to 31, then the reconstruction function is implemented as shown in formulas 44 to 46:

[0408] Formula 44: x r =(x l <<log2QP x )|x h ;

[0409] Formula 45: y r =(y l <<log2QP y )|y h ;

[0410] Formula 46: z r =(z l <<log2QP z )|z h .

[0411] It should be noted that, in the embodiments of this application, when decoding the connection relationship, it is necessary to first find the duplicate vertices in the reconstructed geometric information, remove the duplicate vertices, and record the index of the duplicate vertices to form duplicate vertex information. Specifically, the process of decoding the connection relationship may include:

[0412] (1) Decode the vertices of the initial triangle and store the edges of the initial triangle in the edge set. Take the edge τ from the edge set according to the criteria used in the encoder. If the codeword to be decoded is a vertex index, directly decode the vertex and use it as the pair vertex v. Form a new decoded triangle with vertex v and edge τ, and add the two edges of the triangle other than edge τ to the edge set. Remove edge τ from the set according to a certain rule, such as removing edge τ according to the criterion of the top of the queue. Take the next edge according to a certain rule and continue decoding the triangle adjacent to the edge. For example, the edge at the top of the queue can be taken as the rule.

[0413] (2) If the codeword to be decoded is not a vertex index, then decode it and determine the spatial range of vertex v. For example, decode the radii {R} of the two concentric spheres at the midpoint of τ. min ,R max}, traverse all vertices within the range of concentric spheres, and filter out all vertices of the new triangle formed by the edge τ and the decoded triangle with an angle smaller than a certain angle.

[0414] (3) For the remaining vertices within the spatial range of vertex v, sort the vertices according to the same sorting criteria as the encoder. Decode the index corresponding to vertex v in the triangle to be decoded, and look up the vertex v in the table to construct the decoding triangle. Add the two edges of the new decoding triangle, excluding edge τ, to the edge set, and remove edge τ from the set according to a certain rule, such as removing edge τ according to the criterion of the top of the queue. Take the next edge according to a certain rule and continue to decode the triangle adjacent to that edge, for example, the edge at the top of the queue can be taken as the rule.

[0415] The decoding process is iterated for each slice's bitstream until all triangles in each slice have been decoded. Finally, the slices are merged into a complete grid.

[0416] It should be noted that during the decoding of connection relationships, for each triangle, according to the duplicate point lookup table, if the current triangle has a duplicate vertex, the current duplicate vertex index is decoded from the duplicate identifier bitstream. Specifically, this duplicate vertex identifier is first decoded and placed into an array. Then, based on the duplicate vertex information, if the current vertex is a duplicate vertex, the duplicate vertex identifier is removed from the array to form the duplicate vertex index.

[0417] It should be noted that the decoding process of UV coordinates in a 3D mesh is the reverse of the encoding process. In a specific embodiment of this application, the coordinate prediction residual is first decoded using entropy. Then, the repeated vertices in the geometric information and connectivity relationships are recovered, the connectivity relationships are iterated, and the connection order of the points is recorded. Based on this order, the UV coordinates of the vertices are predicted. This prediction process utilizes the 3D-to-2D projection mapping relationship of triangles, and predicts the current point according to the encoding end prediction rules based on the already decoded UV coordinates, to obtain the predicted UV coordinates. Adding the residual value decoded by entropy to the predicted coordinates yields the UV coordinate position to be decoded.

[0418] It should be noted that the UV coordinates of the initial triangle are not predicted and encoded directly. Instead, their UV coordinate values ​​are encoded directly. After the UV coordinates of the initial triangle are decoded at the decoding end, it is used as the initial triangle to start traversing and decoding the UV coordinates of the vertices of other triangles.

[0419] In one specific embodiment of this application, the texture map is decoded directly using a video decoder to obtain frame-by-frame texture maps. The file format of the texture map is not emphasized here; the format can be jpg, png, etc.

[0420] In summary, the 3D mesh decoding process can be divided into:

[0421] 1. After destreaming, each sub-stream is decoded. Specifically, the occupancy map, geometry map, and texture map are decoded using a video decoder, while the connection relationship and UV coordinate sub-streams are decoded using a decoder corresponding to the encoding method at the encoding end.

[0422] 2. For geometric information, the bitstream is first decomposed into patch information sub-bitstream, placeholder image bitstream, and geometric image bitstream; then, these three sub-bitstreams are decoded respectively to obtain patch information, placeholder image, and geometric image; finally, the geometric information is reconstructed using patch information, placeholder image, and geometric image.

[0423] 3. For connection relationships, decode the connection relationship sub-stream and reconstruct the connection relationship.

[0424] 4. For UV coordinates, decode the connection relationship sub-stream and reconstruct the UV coordinates.

[0425] 5. For texture maps, decode the texture map sub-stream to obtain frame-by-frame texture maps.

[0426] It should be noted that the decoding process in this embodiment is the reverse of the encoding process, and the decoding block diagram is as follows. Figure 15 As shown, firstly, the bitstream is decomposed into patch information sub-stream, placeholder map sub-stream, geometry map sub-stream, connection relationship sub-stream, UV coordinate sub-stream, and texture map sub-stream, and each is decoded separately. The geometric information of the low-precision mesh can be reconstructed using the placeholder map and low-precision geometry map, and the geometric information of the high-precision mesh can be reconstructed using the placeholder map, low-precision geometry map, and high-precision geometry map. The connection relationship sub-stream is used to decode the mesh's connection relationships. The UV coordinates of the mesh are decoded from the UV coordinate sub-stream. The frame-by-frame texture map is decoded from the texture map sub-stream. Finally, the reconstructed geometric information, connection information, UV coordinate information, and texture map information are used to reconstruct the 3D mesh.

[0427] It should be noted that the embodiments of this application are the counterpart method embodiments corresponding to the above-described encoding method embodiments. The decoding process is the reverse process of encoding. All the implementation methods on the encoding side described above are applicable to the embodiments on the decoding side and can achieve the same technical effect. They will not be described again here.

[0428] like Figure 16 As shown, this application embodiment also provides a decoding device 1600, including:

[0429] The reconstruction module 1601 is used to decode and reconstruct the first geometric information based on the bitstream corresponding to the acquired target 3D mesh.

[0430] The fifth acquisition module 1602 is used to filter duplicate vertices in the first geometric information and acquire duplicate vertex information. The duplicate vertex is a vertex other than the first vertex among a plurality of vertices with the same position coordinates. The first vertex is one of the vertices among a plurality of vertices with the same position coordinates.

[0431] The decoding module 1603 is used to decode the connection relationship bitstream of the target three-dimensional mesh based on the repeated vertex information.

[0432] Optionally, the method for obtaining the repeated vertex information includes:

[0433] Obtain the duplicate vertices in the first geometric information and record the indices of the duplicate vertices to form duplicate vertex information;

[0434] The repeated vertex information includes the index of the repeated vertex and the texture coordinate index of the first vertex and the repeated vertex.

[0435] Optionally, the device further includes:

[0436] The second query module is used to query whether there are duplicate vertices for each triangle facet during the decoding of the connection relationship bitstream, based on the duplicate vertex information.

[0437] The second decoding module is used by the decoding end to decode the index of the duplicate vertex from the duplicate identifier bitstream when duplicate vertices exist.

[0438] Optionally, the device further includes:

[0439] The second recovery module is used to recover the repeated vertices based on the index of the repeated vertices, the second geometric information being the mesh geometric information excluding the repeated vertices.

[0440] The second recording module is used to traverse the connection relationships of the recovered duplicate vertices and record the traversal order;

[0441] The third decoding module is used to decode the texture coordinate bitstream of the vertices according to the traversal order.

[0442] It should be noted that this device embodiment is a device corresponding to the above method. All implementation methods in the above method embodiments are applicable to this device embodiment and can achieve the same technical effect, so they will not be described again here.

[0443] Preferably, this application embodiment also provides a decoding device, including a processor, a memory, and a program or instructions stored in the memory and executable on the processor. When the program or instructions are executed by the processor, they implement the various processes of the above-described decoding method embodiments and achieve the same technical effect. To avoid repetition, they will not be described again here.

[0444] This application also provides a readable storage medium on which a program or instruction is stored. When the program or instruction is executed by a processor, it implements the various processes of the above-described decoding method embodiments and achieves the same technical effect. To avoid repetition, it will not be described again here.

[0445] The computer-readable storage medium mentioned above includes, for example, a read-only memory (ROM), a random access memory (RAM), a magnetic disk, or an optical disk.

[0446] This application embodiment also provides a decoding device, including a processor and a communication interface, wherein the processor is used to decode and reconstruct first geometric information according to the bitstream corresponding to the acquired target three-dimensional mesh; to perform duplicate vertex filtering on the first geometric information to obtain duplicate vertex information, wherein the duplicate vertex is a vertex other than the first vertex among a plurality of vertices with the same position coordinates, and the first vertex is one of the vertices among a plurality of vertices with the same position coordinates; and to decode the connection relationship bitstream of the target three-dimensional mesh according to the duplicate vertex information.

[0447] Optionally, the processor is configured to:

[0448] Obtain the duplicate vertices in the first geometric information and record the indices of the duplicate vertices to form duplicate vertex information;

[0449] The repeated vertex information includes the index of the repeated vertex and the texture coordinate index of the first vertex and the repeated vertex.

[0450] Optionally, the processor is configured to:

[0451] During the decoding of the connection relationship bitstream, for each triangle, the system checks whether there are duplicate vertices based on the duplicate vertex information.

[0452] In the case of duplicate vertices, decode the index of the duplicate vertex from the duplicate identifier bitstream.

[0453] Optionally, the processor is configured to:

[0454] The repeated vertices are recovered based on the index of the repeated vertices, the second geometric information and the decoded connection relationship are used to recover the repeated vertices, and the second geometric information is the mesh geometric information that does not include the repeated vertices;

[0455] Traverse the connection relationships of the duplicate vertices to restore the traversal order;

[0456] The texture coordinate bitstream of the vertices is decoded according to the traversal order.

[0457] This decoding device embodiment corresponds to the above-described decoding method embodiment. All implementation processes and methods of the above-described method embodiment can be applied to this decoding device embodiment and can achieve the same technical effect.

[0458] Specifically, this application also provides a decoding device. Specifically, the structure of the decoding device is as follows: Figure 12 As shown, the details will not be repeated here. Specifically, the decoding device in this application embodiment further includes: instructions or programs stored in the memory and executable on the processor, wherein the processor calls the instructions or programs in the memory to execute... Figure 16 The methods executed by each module shown achieve the same technical effect, and to avoid repetition, they will not be described in detail here.

[0459] This application also provides a readable storage medium storing a program or instructions. When the program or instructions are executed by a processor, they implement the various processes of the above-described decoding method embodiments and achieve the same technical effect. To avoid repetition, they will not be described again here.

[0460] The processor is the processor in the decoding device described in the above embodiments. The readable storage medium includes computer-readable storage media, such as computer read-only memory (ROM), random access memory (RAM), magnetic disk, or optical disk.

[0461] Optional, such as Figure 17 As shown in the illustration, this application also provides a communication device 1700, including a processor 1701 and a memory 1702. The memory 1702 stores a program or instructions that can run on the processor 1701. For example, when the communication device 1700 is an encoding device, the program or instructions executed by the processor 1701 implement the various steps of the above-described encoding method embodiment and achieve the same technical effect. When the communication device 1700 is a decoding device, the program or instructions executed by the processor 1701 implement the various steps of the above-described decoding method embodiment and achieve the same technical effect. To avoid repetition, further details are omitted here.

[0462] This application embodiment also provides a chip, which includes a processor and a communication interface. The communication interface is coupled to the processor. The processor is used to run programs or instructions to implement the various processes of the above-described encoding or decoding method embodiments and can achieve the same technical effect. To avoid repetition, it will not be described again here.

[0463] It should be understood that the chip mentioned in the embodiments of this application may also be referred to as a system-on-a-chip, system chip, chip system, or system-on-a-chip, etc.

[0464] This application also provides a computer program / program product, which is stored in a storage medium and executed by at least one processor to implement the various processes of the above-described encoding or decoding method embodiments, and can achieve the same technical effect. To avoid repetition, it will not be described again here.

[0465] This application also provides a communication system, comprising at least an encoding device and a decoding device. The encoding device is used to perform the steps of the encoding method described above, and the decoding device is used to perform the steps of the decoding method described above. Furthermore, it achieves the same technical effect, and to avoid repetition, it will not be described again here.

[0466] It should be noted that, in this document, the terms "comprising," "including," or any other variations thereof are intended to cover non-exclusive inclusion, such that a process, method, article, or apparatus that comprises a list of elements includes not only those elements but also other elements not expressly listed, or elements inherent to such a process, method, article, or apparatus. Without further limitations, an element defined by the phrase "comprising one..." does not exclude the presence of other identical elements in the process, method, article, or apparatus that includes that element. Furthermore, it should be noted that the scope of the methods and apparatuses in the embodiments of this application is not limited to performing functions in the order shown or discussed, but may also include performing functions substantially simultaneously or in the reverse order, depending on the functions involved. For example, the described methods may be performed in a different order than described, and various steps may be added, omitted, or combined. Additionally, features described with reference to certain examples may be combined in other examples.

[0467] Through the above description of the embodiments, those skilled in the art can clearly understand that the methods of the above embodiments can be implemented by means of software plus necessary general-purpose hardware platforms. Of course, they can also be implemented by hardware, but in many cases the former is a better implementation method. Based on this understanding, the technical solution of this application, in essence, or the part that contributes to the prior art, can be embodied in the form of a computer software product. This computer software product is stored in a storage medium (such as ROM / RAM, magnetic disk, optical disk) and includes several instructions to cause a terminal (which may be a mobile phone, computer, server, air conditioner, or network device, etc.) to execute the methods described in the various embodiments of this application.

[0468] The embodiments of this application have been described above with reference to the accompanying drawings. However, this application is not limited to the specific embodiments described above. The specific embodiments described above are merely illustrative and not restrictive. Those skilled in the art can make many other forms under the guidance of this application without departing from the spirit and scope of the claims, and all of these forms are within the protection scope of this application.

Claims

1. An encoding method, characterized in that, include: The encoding end decodes and reconstructs the geometric information of the encoded target 3D mesh to obtain the first reconstructed geometric information; The encoding end performs duplicate vertex filtering on the first geometric information to obtain duplicate vertex information. The duplicate vertex is a vertex other than the first vertex among a plurality of vertices with the same position coordinates. The first vertex is one of the vertices among a plurality of vertices with the same position coordinates. The encoding end reorders the first connection relationship of the target 3D mesh based on the repeated vertex information, and obtains the reordered second connection relationship; The encoding end encodes the second connection relationship; The method further includes: During the encoding process of the second connection relationship, the encoding end checks whether there are duplicate vertices for the three vertices of each triangular facet based on the duplicate vertex information. The encoding end identifies the duplicate vertices when they exist. After completing the encoding of the second connection relationship, the encoding end encodes according to the identifier of the repeating vertex to obtain the repeating vertex identifier bitstream.

2. The method according to claim 1, characterized in that, The method for obtaining the duplicate vertex information includes: The encoding end obtains the repeated vertices in the first geometric information and records the index of the repeated vertices to form repeated vertex information; The repeated vertex information includes the index of the repeated vertex and the texture coordinate index of the first vertex and the repeated vertex.

3. The method according to claim 1, characterized in that, The encoding end reorders the first connection relationship of the target 3D mesh based on the repeated vertex information, and obtains the reordered second connection relationship, including: The encoding end rearranges the vertex texture coordinates of the target 3D mesh according to the index of the repeated vertices, and obtains the reordered texture coordinate information; The encoding end adjusts the first connection relationship of the target 3D mesh based on the reordered texture coordinate information and the repeated vertex information to obtain the reordered second connection relationship.

4. The method according to claim 3, characterized in that, The encoding end rearranges the vertex texture coordinates of the target 3D mesh according to the index of the repeating vertices, and obtains the rearranged texture coordinate information, including: The encoding end moves the texture coordinates corresponding to the repeated vertices to the end of the list corresponding to the texture coordinates in the order in which the repeated vertices appear in the first geometric information, forming reordered texture coordinate information.

5. The method according to claim 3, characterized in that, The encoding end adjusts the first connectivity relationship of the target 3D mesh based on the reordered texture coordinate information and the repeated vertex information to obtain the reordered second connectivity relationship, including: The encoding end modifies the texture coordinate index portion of the first connection relationship of the target 3D mesh according to the reordered texture coordinate information; The encoding end traverses the geometric index portion of the first connection relationship of the target 3D mesh, and replaces the index of the repeated vertex in the first connection relationship of the target 3D mesh with the index of the first vertex according to the repeated vertex information, so as to obtain the second connection relationship after reordering.

6. The method according to claim 1, characterized in that, After decoding and reconstructing the geometric information of the encoded target 3D mesh at the encoding end to obtain the reconstructed first geometric information, the method further includes: The encoding end adjusts the values ​​and arrangement order of some texture coordinates based on the reconstructed first geometric information.

7. The method according to claim 3, characterized in that, Also includes: The encoding end recovers the repeated vertices in the second geometric information and the second connection relationship according to the order of the repeated vertices in the reordered texture coordinate information. The second geometric information is the mesh geometric information that does not include repeated vertices. The encoding end traverses the second connection relationship of the recovered duplicate vertices and records the traversal order. The encoding end encodes the texture coordinates of the vertices according to the traversal order.

8. The method according to claim 1, characterized in that, Before the encoding end reorders the first connection relationship of the target 3D mesh based on the repeated vertex information and obtains the reordered second connection relationship, the following steps are also included: The encoding end adjusts the parts of the target 3D mesh where the first connection relationship has changed based on the reconstructed first geometric information.

9. A decoding method, characterized in that, include: The decoding end decodes and reconstructs the first geometric information based on the bitstream corresponding to the acquired target 3D mesh; The decoding end performs duplicate vertex filtering on the first geometric information to obtain duplicate vertex information. The duplicate vertex is a vertex other than the first vertex among a plurality of vertices with the same position coordinates. The first vertex is one of the vertices among a plurality of vertices with the same position coordinates. The decoding end decodes the connection relationship bitstream of the target 3D mesh based on the repeated vertex information; The method further includes: During the decoding process of the connection relationship bitstream, the decoding end checks whether there are duplicate vertices for each triangle facet based on the duplicate vertex information. In the case of duplicate vertices, the decoding end decodes the index of the duplicate vertex from the duplicate identifier bitstream.

10. The method according to claim 9, characterized in that, The method for obtaining the duplicate vertex information includes: The decoding end obtains the repeated vertices in the first geometric information and records the index of the repeated vertices to form repeated vertex information; The repeated vertex information includes the index of the repeated vertex and the texture coordinate index of the first vertex and the repeated vertex.

11. The method according to claim 9, characterized in that, Also includes: The decoding end recovers the repeated vertices based on the index of the repeated vertices, the second geometric information and the decoded connection relationship, and the second geometric information is the mesh geometric information excluding repeated vertices; The decoding end traverses the connection relationships of the repeated vertices and records the traversal order. The decoding end decodes the texture coordinate bitstream of the vertices according to the traversal order.

12. An encoding device, characterized in that, include: The first acquisition module is used to decode and reconstruct the geometric information of the encoded target 3D mesh to obtain the reconstructed first geometric information; The second acquisition module is used to filter duplicate vertices in the first geometric information and acquire duplicate vertex information. The duplicate vertex is a vertex other than the first vertex among a plurality of vertices with the same position coordinates. The first vertex is one of the vertices among a plurality of vertices with the same position coordinates. The third acquisition module is used to reorder the first connection relationship of the target 3D mesh according to the repeated vertex information, and acquire the reordered second connection relationship. The first encoding module is used to encode the second connection relationship; The device further includes: The first query module is used to query whether there are duplicate vertices for each of the three vertices of a triangle facet during the encoding of the second connection relationship, based on the duplicate vertex information. An identification module is used to identify the duplicate vertices when they exist. The fourth acquisition module is used to encode the repeating vertex identifier bitstream based on the identifier of the repeating vertex after the encoding of the second connection relationship is completed.

13. The apparatus according to claim 12, characterized in that, The method for obtaining the duplicate vertex information includes: Obtain the duplicate vertices in the first geometric information and record the indices of the duplicate vertices to form duplicate vertex information; The repeated vertex information includes the index of the repeated vertex and the texture coordinate index of the first vertex and the repeated vertex.

14. The apparatus according to claim 12, characterized in that, The third acquisition module includes: The first acquisition unit is used to rearrange the vertex texture coordinates of the target 3D mesh according to the index of the duplicate vertices, and acquire the rearranged texture coordinate information. The second acquisition unit is used to adjust the first connection relationship of the target 3D mesh according to the reordered texture coordinate information and the repeated vertex information, and acquire the reordered second connection relationship.

15. The apparatus according to claim 14, characterized in that, The first acquisition unit is used for: Based on the order in which the repeated vertices appear in the first geometric information, the texture coordinates corresponding to the repeated vertices are sequentially moved to the end of the list corresponding to the texture coordinates, forming reordered texture coordinate information.

16. The apparatus according to claim 14, characterized in that, The second acquisition unit is used for: The texture coordinate index portion of the first connection relationship of the target 3D mesh is modified according to the reordered texture coordinate information; The geometric index portion of the first connection relationship of the target 3D mesh is traversed, and the index of the repeated vertex in the first connection relationship of the target 3D mesh is replaced with the index of the first vertex according to the repeated vertex information, so as to obtain the second connection relationship after reordering.

17. The apparatus according to claim 12, characterized in that, After the first acquisition module decodes and reconstructs the geometric information of the encoded target 3D mesh to obtain the reconstructed first geometric information, the method further includes: The adjustment module is used to adjust the values ​​and arrangement order of partial texture coordinates based on the reconstructed first geometric information.

18. The apparatus according to claim 14, characterized in that, Also includes: The first recovery module is used to recover the repeated vertices in the second geometric information and the second connection relationship according to the order of the repeated vertices in the reordered texture coordinate information, wherein the second geometric information is the mesh geometric information excluding repeated vertices; The first recording module is used to traverse the second connection relationship of the recovered duplicate vertices and record the traversal order; The second encoding module is used to encode the texture coordinates of the vertices according to the traversal order.

19. The apparatus according to claim 12, characterized in that, Before the third acquisition module reorders the first connection relationships of the target 3D mesh based on the repeated vertex information and obtains the reordered second connection relationships, the method further includes: The adjustment module is used to adjust the parts of the target three-dimensional mesh where the first connection relationship has changed, based on the reconstructed first geometric information.

20. An encoding device, characterized in that, It includes a processor and a memory, the memory storing a program or instructions that can run on the processor, the program or instructions being executed by the processor to implement the steps of the encoding method as described in any one of claims 1 to 8.

21. A decoding device, characterized in that, include: The reconstruction module is used to decode and reconstruct the first geometric information based on the bitstream corresponding to the acquired target 3D mesh. The fifth acquisition module is used to filter duplicate vertices in the first geometric information and acquire duplicate vertex information. The duplicate vertex is a vertex other than the first vertex among a plurality of vertices with the same position coordinates. The first vertex is one of the vertices among a plurality of vertices with the same position coordinates. The first decoding module is used to decode the connection relationship bitstream of the target 3D mesh based on the repeated vertex information; The device further includes: The second query module is used to query whether there are duplicate vertices for each triangle facet during the decoding of the connection relationship bitstream, based on the duplicate vertex information. The second decoding module is used by the decoding end to decode the index of the duplicate vertex from the duplicate identifier bitstream when duplicate vertices exist.

22. A decoding device, characterized in that, It includes a processor and a memory, the memory storing a program or instructions that can run on the processor, the program or instructions being executed by the processor to implement the steps of the decoding method as described in any one of claims 9 to 11.

23. A readable storage medium, characterized in that, The readable storage medium stores a program or instructions that, when executed by a processor, implement the steps of the encoding method as described in any one of claims 1 to 8 or the steps of the decoding method as described in any one of claims 9 to 11.

Citation Information

Patent Citations

  • Method for configuring vertex of three-dimensional object model

    KR101551741B1

  • Encoding and decoding of texture mapping data in textured 3D mesh models

    US20180253867A1