Encoding method and terminal

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

Patent Information

Application Number
CN202210307891.X
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Filing Date
2022-03-25
Publication Date
2026-10-16
Estimated Expiration
2042-03-25

AI Technical Summary

Technical Problem

[0005]本申请实施例提供一种编码方法及终端,能够解决在对三维网格的连接信息进行编码时,容易导致编码失败的问题

Benefits of technology

[0022]In this embodiment, the first information corresponding to the target 3D mesh is encoded to obtain a first bitstream; the encoding end obtains reconstructed connectivity information and reconstructed texture coordinate information based on the reconstructed geometric information; the encoding end determines a second bitstream based on the reconstructed geometric information and reconstructed connectivity information; the encoding end determines a third bitstream based on attribute information; and the encoding end generates a target bitstream based on the first, second, and third bitstreams. In this embodiment, by obtaining reconstructed connectivity information and reconstructed texture coordinate information based on the reconstructed geometric information, a correspondence is established between the geometric information corresponding to the reconstructed vertices and the geometric information corresponding to the original vertices, thereby avoiding encoding failures in the subsequent steps of encoding the connectivity information and attribute information of the 3D mesh.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN116843855B_ABST
    Figure CN116843855B_ABST
Patent Text Reader

Abstract

The application discloses an encoding method and a terminal, and belongs to the technical field of encoding. The encoding method of the application embodiment comprises the following steps: an encoding end encodes first information corresponding to a target three-dimensional grid to obtain a first code stream; the first information is determined based on geometric information corresponding to the target three-dimensional grid; the encoding end obtains reconstructed connection information and reconstructed texture coordinate information based on reconstructed geometric information; the reconstructed geometric information is determined based on reconstruction of the geometric information; the encoding end determines a second code stream based on the reconstructed geometric information and the reconstructed connection information; the encoding end determines a third code stream based on attribute information, wherein the attribute information comprises a texture map and the reconstructed texture coordinate information; and the encoding end generates a target code stream based on the first code stream, the second code stream and the third code stream.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] This application belongs to the field of coding technology, specifically relating to a coding method and terminal. Background Technology

[0002] 3D meshes can be considered the most popular representation of 3D models over the years, playing a vital role in many applications. Their ease of representation has led to their widespread integration as hardware algorithms into the graphics processing units of computers, tablets, and smartphones, specifically for rendering 3D meshes.

[0003] In all applications using 3D meshes, such as computational simulation, entertainment, medical imaging, digital artifacts, computer-aided design, and e-commerce, the requirements for mesh accuracy are constantly increasing, and the amount of data required is also growing rapidly. Furthermore, a large number of 3D models currently need to be accessed via the internet. These issues have led to increasing complexity in the processing, visualization, transmission, and storage of 3D meshes. 3D mesh compression is an important way to solve these problems. It significantly reduces the size of the data, which is beneficial for the processing, storage, and transmission of 3D meshes.

[0004] In the process of compressing 3D meshes using lossy encoding, it is necessary to reconstruct the geometric information corresponding to the original vertices in the 3D mesh to obtain a reconstructed mesh. However, in the case of lossy encoding, some mesh information may be lost, which may lead to the inability to correctly reconstruct the connection relationships and texture coordinates in the subsequent steps of encoding the connection information and attribute information of the 3D mesh, thus causing encoding failure. Summary of the Invention

[0005] This application provides an encoding method and terminal that can solve the problem of encoding failure when encoding the connection information of a three-dimensional mesh.

[0006] Firstly, an encoding method is provided, which includes:

[0007] The encoding end encodes the first information corresponding to the target three-dimensional mesh to obtain the first bitstream; the first information is determined based on the geometric information corresponding to the target three-dimensional mesh.

[0008] The encoding end obtains reconstructed connection information and reconstructed texture coordinate information based on the reconstructed geometric information; the reconstructed geometric information is determined based on the reconstructed geometric information.

[0009] The encoding end determines the second bitstream based on the reconstructed geometric information and the reconstructed connectivity information;

[0010] The encoding end determines the third bitstream based on attribute information, which includes a texture map and the reconstructed texture coordinate information;

[0011] The encoding end generates a target bitstream based on the first bitstream, the second bitstream, and the third bitstream.

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

[0013] An encoding module is used to encode the first information corresponding to the target three-dimensional mesh to obtain a first bitstream; the first information is determined based on the geometric information corresponding to the target three-dimensional mesh.

[0014] The processing module is used to obtain reconstructed connection information and reconstructed texture coordinate information based on the reconstructed geometric information; the reconstructed geometric information is determined based on the reconstructed geometric information.

[0015] The first determining module is used to determine the second bitstream based on the reconstructed geometric information and the reconstructed connectivity information;

[0016] The second determining module is used to determine the third bitstream based on attribute information, wherein the attribute information includes a texture map and the reconstructed texture coordinate information;

[0017] The generation module is used to generate a target bitstream based on the first bitstream, the second bitstream, and the third bitstream.

[0018] Thirdly, a terminal is provided, comprising 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.

[0019] Fourthly, 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.

[0020] Fifthly, 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.

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

[0022] In this embodiment, the first information corresponding to the target 3D mesh is encoded to obtain a first bitstream; the encoding end obtains reconstructed connectivity information and reconstructed texture coordinate information based on the reconstructed geometric information; the encoding end determines a second bitstream based on the reconstructed geometric information and reconstructed connectivity information; the encoding end determines a third bitstream based on attribute information; and the encoding end generates a target bitstream based on the first, second, and third bitstreams. In this embodiment, by obtaining reconstructed connectivity information and reconstructed texture coordinate information based on the reconstructed geometric information, a correspondence is established between the geometric information corresponding to the reconstructed vertices and the geometric information corresponding to the original vertices, thereby avoiding encoding failures in the subsequent steps of encoding the connectivity information and attribute information of the 3D mesh. Attached Figure Description

[0023] Figure 1 This is a flowchart of the encoding method provided in the embodiments of this application;

[0024] Figure 2 This is a schematic diagram illustrating the adjustment of connection relationships provided in an embodiment of this application;

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

[0026] Figure 4 This is a schematic diagram of the fine mesh division process;

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

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

[0029] Figure 7 This is a diagram of a raw patch;

[0030] Figure 8 This is one of the schematic diagrams illustrating the coded connectivity relationship in the embodiments of this application;

[0031] Figure 9 This is the second schematic diagram of the encoding connectivity relationship in the embodiments of this application;

[0032] Figure 10 This is a schematic diagram of attribute information encoding in the embodiments of this application;

[0033] Figure 11 This is a structural diagram of the encoding device provided in the embodiments of this application;

[0034] Figure 12 This is a structural diagram of the communication device provided in the embodiments of this application;

[0035] Figure 13This is a schematic diagram of the hardware structure of the terminal provided in the embodiments of this application. Detailed Implementation

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

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

[0038] The encoding device corresponding to the encoding method in this application embodiment can be a terminal, which can also be called a terminal device or user equipment (UE). The terminal can be a mobile phone, tablet computer, laptop computer, personal digital assistant (PDA), handheld computer, netbook, ultra-mobile personal computer (UMPC), mobile internet device (MID), augmented reality (AR) / virtual reality (VR) device, robot, wearable device or vehicle-mounted device (VUE), pedestrian terminal (PUE), smart home (home devices with wireless communication functions, such as refrigerators, televisions, washing machines or furniture, etc.), game console, personal computer (personal Terminal devices such as computers (PCs), ATMs, or self-service machines; wearable devices include smartwatches, smart bracelets, smart earphones, smart glasses, smart jewelry (smart bracelets, smart necklaces, smart anklets, smart ankle chains, etc.), smart wristbands, smart clothing, etc. It should be noted that the embodiments in this application do not limit the specific type of terminal.

[0039] The coding method provided in this application will be described in detail below with reference to the accompanying drawings, through some embodiments and application scenarios.

[0040] Please see Figure 1 , Figure 1 This is a flowchart of the encoding method provided in this application. The encoding method provided in this embodiment includes the following steps:

[0041] S101, the encoding end encodes the first information corresponding to the target three-dimensional mesh to obtain the first bit stream.

[0042] The aforementioned target 3D mesh can be a 3D mesh corresponding to any video frame.

[0043] In this step, the first information corresponding to the target 3D mesh can be determined based on the geometric information corresponding to the target 3D mesh, and then the first information can be encoded to obtain the first bitstream. For the specific definition of the first information and the specific technical solution for obtaining the first information, please refer to the following embodiments.

[0044] S102, the encoding end obtains reconstructed connection information and reconstructed texture coordinate information based on the reconstructed geometric information.

[0045] In this step, the encoding end can reconstruct the geometric information to obtain reconstructed geometric information. It should be noted that geometric reconstruction here refers to obtaining the 3D coordinates of the reconstructed vertices through the encoded information. Furthermore, based on this reconstructed geometric information, reconstructed connectivity information and reconstructed texture coordinate information are obtained. The reconstructed connectivity information represents the connection relationship between the reconstructed vertices, and the reconstructed texture coordinate information represents the texture coordinates corresponding to all reconstructed vertices.

[0046] For details on the technical solutions for obtaining reconstructed connection information and reconstructed texture coordinate information based on reconstructed geometric information, please refer to the following embodiments.

[0047] S103, the encoding end determines the second bitstream based on the reconstructed geometric information and the reconstructed connection information.

[0048] In this step, after obtaining the reconstructed geometric information and the reconstructed connection information, the reconstructed connection information is encoded based on the reconstructed geometric information and the reconstructed connection information to obtain the second bitstream.

[0049] S104, the encoding end determines the third bitstream based on the attribute information.

[0050] In this step, the aforementioned attribute information includes the texture map and the reconstructed texture coordinate information. The encoding end encodes the texture map and the reconstructed texture coordinate information separately to obtain different sub-bitstreams. These sub-bitstreams are then mixed to obtain a third bitstream.

[0051] S105, the encoding end generates a target bitstream based on the first bitstream, the second bitstream, and the third bitstream.

[0052] In this step, after obtaining the first bitstream, the second bitstream, and the third bitstream, the first bitstream, the second bitstream, and the third bitstream are mixed to generate the target bitstream.

[0053] In this embodiment, the first information corresponding to the target 3D mesh is encoded to obtain a first bitstream; the encoding end obtains reconstructed connectivity information and reconstructed texture coordinate information based on the reconstructed geometric information; the encoding end determines a second bitstream based on the reconstructed geometric information and reconstructed connectivity information; the encoding end determines a third bitstream based on attribute information; and the encoding end generates a target bitstream based on the first, second, and third bitstreams. In this embodiment, by obtaining reconstructed connectivity information and reconstructed texture coordinate information based on the reconstructed geometric information, a correspondence is established between the geometric information corresponding to the reconstructed vertices and the geometric information corresponding to the original vertices, thereby avoiding encoding failures in the subsequent steps of encoding the connectivity information and attribute information of the 3D mesh.

[0054] Optionally, before encoding the first information corresponding to the target 3D mesh to obtain the first bitstream, the method includes:

[0055] The encoding end acquires the geometric information corresponding to the target three-dimensional mesh;

[0056] The encoding end projects the vertices contained in the target 3D mesh onto the geometry map and the placeholder map to obtain the first information.

[0057] In this embodiment, the encoding end obtains the geometric information corresponding to the target three-dimensional mesh. It should be understood that the geometric information includes the position coordinates of the vertices contained in the target three-dimensional mesh, and the vertices contained in the target three-dimensional mesh are also called the original vertices.

[0058] The vertices mentioned above are projected onto the geometric diagram and the placeholder diagram according to their arrangement order in the geometric information to obtain the first information. The position coordinates of each vertex in the placeholder diagram correspond to its arrangement order in the geometric information.

[0059] Optionally, obtaining the reconstructed connectivity information and reconstructed texture coordinate information based on the reconstructed geometric information includes:

[0060] Based on the placeholder map, the indexes of the vertices included in the connection information are updated to obtain the reconstructed connection information; the placeholder map is obtained based on decoding the first bitstream, and the position coordinates of each vertex in the placeholder map correspond to the arrangement order of the vertices in the reconstructed geometry information, and the arrangement order of the vertices in the reconstructed geometry information corresponds to the index of the vertices in the reconstructed connection information;

[0061] Based on the placeholder map, the indexes of the vertices contained in the reconstructed texture coordinate information are updated; the position coordinates of each vertex in the placeholder map correspond to the arrangement order of the vertices in the reconstructed geometry information, and the arrangement order of the vertices in the reconstructed geometry information corresponds to the index of the vertices in the reconstructed attribute information.

[0062] In this embodiment, after generating the first bitstream, the geometric information is reconstructed to obtain reconstructed geometric information; the first bitstream is decoded to obtain a placeholder map. As mentioned above, the position coordinates of each vertex in the placeholder map correspond to the arrangement order of the vertices in the geometric information.

[0063] Furthermore, after reconstructing the geometric information, a vertex reconstruction order is generated. This vertex reconstruction order corresponds to the position coordinates of each vertex in the placeholder image, and the position coordinates of each vertex in the placeholder image correspond to the arrangement order of vertices in the geometric information. Therefore, a correspondence can be established between the arrangement order of each vertex in the geometric information and its reconstruction order. That is, the correspondence between the original vertices and the reconstructed vertices can be established through the vertex positions in the placeholder image. The indexes of the vertices included in the connection information are updated according to the above correspondence. These indexes represent the reconstruction order of the vertices, thereby obtaining the reconstructed connection information. The indexes of the vertices included in the reconstructed texture coordinate information are updated according to the above correspondence, establishing a correspondence between the reconstructed vertices and the original vertex texture coordinates, i.e., UV coordinates. Based on the correspondence between the reconstructed vertices and the original vertex texture coordinates, the order of the reconstructed texture coordinates is rearranged, thereby establishing a correspondence between the reconstructed vertices and the reconstructed texture coordinates.

[0064] For easier understanding, please refer to Figure 2 ,like Figure 2 As shown, the original vertices are projected and arranged in the placeholder diagram according to their order in the geometric information (original vertex order). At this point, there is a correspondence between the vertex positions in the placeholder diagram and the original vertex order. During the encoding of the first information, the aforementioned placeholder diagram is losslessly encoded, and the number and position of the vertices in the losslessly encoded placeholder diagram remain unchanged. Then, the geometric information is reconstructed based on the placeholder diagram and the geometric diagram, generating the reconstructed vertex order. At this point, there is a correspondence between the reconstructed order and the vertex positions in the placeholder diagram. Therefore, the correspondence between the original vertices and the reconstructed vertices can be established through the vertex positions in the placeholder diagram.

[0065] Optionally, before encoding the first information corresponding to the target 3D mesh, the process includes:

[0066] In a lossy encoding mode, the 3D mesh to be encoded is simplified to obtain the target 3D mesh;

[0067] In lossless encoding mode, the 3D mesh to be encoded is identified as the target 3D mesh.

[0068] In this step, if the video encoding mode is lossy, the 3D mesh to be encoded is simplified, and the simplified 3D mesh is determined as the target 3D mesh. By simplifying the 3D mesh, the compression efficiency of the 3D mesh geometric information is improved, and the amount of data is effectively reduced.

[0069] If the video encoding mode is lossless, then the 3D mesh to be encoded can be directly identified as the target 3D mesh.

[0070] Optionally, the simplification process of the 3D mesh to be encoded to obtain the target 3D mesh includes:

[0071] The encoding end simplifies the three-dimensional mesh to be encoded based on quantization parameters to obtain the target three-dimensional mesh.

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

[0073] Optionally, the step of simplifying the target 3D mesh based on quantization parameters to obtain the target 3D mesh includes:

[0074] When merging vertices in the 3D mesh to be encoded, the encoding end adjusts the position coordinates of at least some vertices after merging to a multiple of the quantization parameter to obtain the target 3D mesh.

[0075] It should be noted that by considering the quantization parameter when setting the position coordinates of the merged vertices, 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 of the vertex can be recovered without additional information during dequantization, thereby reducing the amount of data consumed by high-precision geometric information.

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

[0077] For the input raw mesh, i.e., the 3D mesh to be encoded, 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 3As 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.

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

[0079] The specific process includes:

[0080] 1. Calculation of vertex error

[0081] 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:

[0082] Formula 1: ;

[0083] Where D is the distance from any vertex to the plane. Let be the unit normal vector of the plane. Let be the position vector of the vertex. It is a constant. Expressed in the form of a quadratic surface, it is represented by Formula 2: ;

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

[0085] From formula two, we can then derive formula three: ;

[0086] The vertex error is the sum of the coefficients of the equations of all the adjacent faces of that vertex. Formula 4 can be made: .in, For vertex error, For the corresponding vertex, for The equations of adjacent plane 1, for The equations of adjacent plane 2, , , , , , These are the corresponding coefficients. Of course, if there are multiple adjacent surfaces, corresponding plane error equations can be added to Formula 4.

[0087] 2. Merge vertices

[0088] 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: ;

[0089] Formula 5: ;

[0090] From the above equation, it can be seen that only in the matrix Only when the grid is invertible can the point that minimizes the error be found. Therefore, there are multiple ways to choose the position of the merged vertices. If we consider the quality of the mesh simplification, in the matrix... In the case of invertibility, select the vertex position that minimizes the error; in the matrix In irreversible cases, one of the edges, including both endpoints, can be chosen to minimize the error. 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 positions can be recovered without additional information during dequantization, thus reducing the amount of data consumed by high-precision geometric information.

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

[0092] 3. Update connection relationships

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

[0094] The above outlines the main process of mesh simplification. Additionally, 3D meshes may carry attribute information, which may also need simplification. For meshes with attribute information, such as texture coordinates, color, and normals, vertex coordinates can be extended to higher dimensions to calculate vertex errors with attribute information. Taking texture coordinates as an example, let the vertex coordinates be... Texture coordinates are Then the expanded vertex is Let the expanded triangle be... To determine the error metric in high-dimensional space, we first calculate two orthogonal vectors, namely:

[0095] Formula Six: ;

[0096] Formula 7: ;

[0097] in, , Let T be two vectors on the plane containing T. for, For, here The dot product of vectors defines a coordinate axis on this high-dimensional plane. Let the origin be the origin. Consider an arbitrary point. ,Other From formula eight: ;

[0098] That is, Formula Nine: .

[0099] because , Let T be two vectors on the plane containing T. Then the left-hand side of Formula 9 is the square of the distance from the vertex to the plane containing T, which is Formula 10: ;

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

[0101] Formula 11: ;

[0102] Formula 12: ;

[0103] Formula Thirteen: .

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

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

[0106] Optionally, encoding the first information corresponding to the target 3D mesh to obtain the first bitstream includes:

[0107] The encoding end quantizes the geometric information of the target three-dimensional mesh to obtain first information;

[0108] The encoding end encodes the first information to obtain the first bitstream.

[0109] The geometric information mentioned above can be understood as the coordinates of the vertices in the target 3D mesh, which usually refers to 3D coordinates.

[0110] The aforementioned first information includes at least one of the following:

[0111] A11, First-precision geometric information;

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

[0113] A12, Second-precision geometric information;

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

[0115] A13. Supplementary information;

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

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

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

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

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

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

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

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

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

[0125] It should be noted that after obtaining the first information, this first information can be encoded, and the encoded bitstream is determined as the first bitstream.

[0126] Optionally, quantizing the geometric information of the target 3D mesh to obtain first information includes:

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

[0128] It should be noted that the quantization parameters for each component can be flexibly set according to usage requirements; the quantization parameters mainly include the quantization parameters for the three components: X, Y and Z.

[0129] Generally, for quantization with low precision requirements, only low-precision geometric information can be retained after quantization; while for quantization with high precision requirements, both low-precision and high-precision geometric information need to be recorded during quantization, so as to achieve accurate mesh recovery during decoding.

[0130] Optionally, in the above scenario, quantizing the geometric information of the target three-dimensional mesh to obtain the first information includes:

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

[0132] For example, suppose the three-dimensional coordinates of a vertex are ( ), the quantization parameters are ( Low-precision geometric information ) and high-precision geometric information ( The calculation process for ) is shown in formulas fourteen to nineteen:

[0133] Formula Fourteen: = ;

[0134] Formula 15: = ;

[0135] Formula Sixteen: = ;

[0136] Formula 17: = ;

[0137] Formula 18: = ;

[0138] Formula 19: = ;

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

[0140] Functions can be calculated in various 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 multiple calculation methods, the corresponding implementations of formulas 20 to 22 shown in formulas 23 to 25, where `*` represents the multiplication operator.

[0141] Formula 20: = ;

[0142] Formula 21: = ;

[0143] Formula 22: = ;

[0144] Formula 23: = ;

[0145] Formula 24: = ;

[0146] Formula 25: = ;

[0147] 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:

[0148] Formula 26: = ;

[0149] Formula 27: = ;

[0150] Formula 28: = ;

[0151] Formula 29: = ;

[0152] Formula 30: = ;

[0153] Formula 31: = ;

[0154] It is worth noting that regardless of the calculation method used for the f1 and f2 functions, the quantization parameters... , and 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... , and 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.

[0155] 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 ( 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.

[0156] During the quantization process, multiple points may be quantized and then overlap at the same location.

[0157] Optionally, in the above scenario, quantizing the geometric information of the target three-dimensional mesh to obtain the first information includes:

[0158] The encoding end determines the information of the supplementary points based on the geometric information of the target three-dimensional mesh and the first precision geometric information.

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

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

[0161] Optionally, encoding the first information to obtain the first bitstream includes:

[0162] The encoding end processes the first information to obtain second information, which includes at least one of a placeholder image and a geometric image.

[0163] The second information is encoded to obtain the first bitstream.

[0164] It should be noted that, because the first information contains different types of information, different types of information will be processed separately when processing the first information. The implementation process of obtaining the first bitstream is explained below from the perspective of different types of information.

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

[0166] Optionally, when the first information includes first precision geometric information, processing the first information to obtain the second information includes:

[0167] The encoding end performs three-dimensional patching on the first precision geometric information;

[0168] The encoding end performs a two-dimensional projection on the divided three-dimensional slices to obtain two-dimensional slices;

[0169] The encoding end packages the two-dimensional slices to obtain two-dimensional image information;

[0170] The encoding end obtains a placeholder image of first precision and a geometric image of first precision based on the two-dimensional image information.

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

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

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

[0174] Formula 32: ;

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

[0176] Formula 33: ;

[0177] 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:

[0178] Formula 34: ;

[0179] 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 4 As shown, it specifically includes:

[0180] 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, execute the following process:

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

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

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

[0184] Step 403: 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.

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

[0186] Step 405: Calculate the smoothness score (scoreSmooth) for each filled voxel using the voxel smoothness scores of nearest-neighbor filled voxels on each projection plane. The calculation process is shown in Formula 35.

[0187] Formula thirty-five: ;

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

[0189] Step 406: Calculate the normal score, denoted as scoreNormal, using the normal vectors of the vertices and the normal vectors of the candidate projection planes. The calculation process is shown in Formula 36.

[0190] Formula 36: ;

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

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

[0193] Formula thirty-seven: ;

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

[0195] Step 408: Use the scores from step 407 to cluster the vertices to obtain a finely divided patch.

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

[0197] Furthermore, the encoding end performs a two-dimensional projection on the divided three-dimensional slices to obtain two-dimensional slices.

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

[0199] The encoding end packages the two-dimensional slices to obtain two-dimensional image information.

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

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

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

[0203] 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 5 As shown, it includes 0 degrees, 180 degrees, 90 degrees, 270 degrees, and mirror images of the first four directions.

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

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

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

[0207] It should be noted 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 remaining positions 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.

[0208] II. The first information includes the second precision geometric information.

[0209] Optionally, when the first information includes second precision geometric information, processing the first information to obtain the second information includes:

[0210] The encoding end obtains the arrangement order of the vertices contained in the first-precision geometric information;

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

[0212] It should be noted that the high-precision geometric information is generated using a raw patch arrangement. 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 process mainly consists of three steps, as follows: Figure 6 As shown, it includes:

[0213] Step 601: 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.

[0214] Step 602: Generate a raw patch.

[0215] It should be noted that a raw patch modifies the 3D coordinates of vertices according to... Figure 4Arrange 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.

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

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

[0218] III. The first information includes information from supplementary points.

[0219] Optionally, when the first information includes information about supplementary points, processing the first information to obtain the second information includes:

[0220] The encoding end arranges the third-precision geometric information of the supplementary points into a first original piece;

[0221] 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;

[0222] The encoding end compresses the first original slice and the second original slice to obtain the geometric map of the supplementary points.

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

[0224] Optionally, determining the second bitstream based on the reconstructed geometric information and the reconstructed connectivity information includes:

[0225] The encoding end determines the vertices to be sorted within a first spatial range based on the spatial angle between adjacent triangular facets represented by the reconstructed geometric information and the reconstructed connection information. The first spatial range is the spatial range where the target vertex of the triangle to be encoded, represented by the reconstructed geometric information and the reconstructed connection information, is located, and the vertices to be sorted include the target vertex.

[0226] The encoding end sorts the vertices to be sorted to obtain the sorting information of the target vertices;

[0227] 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;

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

[0229] The encoding end redetermines the triangles to be encoded based on the updated edge set until it obtains the encoding information of all triangles to be encoded.

[0230] The encoding end encodes the encoding information of all the triangles to be encoded to obtain the second bitstream;

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

[0232] The reconstructed geometric information here includes the index information of the vertices in the target 3D mesh.

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

[0234] Based on the spatial angle between adjacent triangular faces in a 3D mesh, some vertices within the first spatial range can be filtered out, and the remaining vertices can be used as vertices to be sorted.

[0235] Optionally, the first spatial range includes:

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

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

[0238] In this embodiment, the vertices to be sorted are sorted according to a preset sorting criterion. For example, the sorting criterion may be based on the distance between the vertex and the midpoint of the first side of the triangle to be encoded, or it may be based on the radius of the circumcircle of the triangle formed by the vertex and the first side. Of course, the sorting criterion may also be other criteria, which are not specifically limited here.

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

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

[0241] In this embodiment, after obtaining the encoding information of the coded triangles, the encoding end updates the edge set according to the first preset rule; the encoding end then redetermines the triangles to be encoded based on the updated edge set, until all triangles in the 3D mesh have obtained encoding information. The encoding information of all triangles to be encoded is then encoded to obtain the second bitstream.

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

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

[0244] Optionally, before determining the vertices to be sorted within the first spatial range based on the spatial angle between adjacent triangular facets characterized by the reconstructed geometric information and the reconstructed connectivity information, the method includes:

[0245] The encoding end selects a first edge from the edge set, wherein the edge set is the set of at least one edge of the encoded triangle represented by the reconstructed geometric information and the reconstructed connection information;

[0246] The encoding end determines the triangle to be encoded based on the first side and the vertices corresponding to the first side, wherein the target vertices of the triangle to be encoded are the vertices corresponding to the first side excluding the two vertices connected to the first side.

[0247] Optionally, determining the vertices to be sorted within a first spatial range based on the spatial angle between adjacent triangular facets characterized by the reconstructed geometric information and the reconstructed connectivity information includes:

[0248] When the triangle to be encoded is a triangle other than a preset category triangle, the encoding end determines the vertices to be sorted within a first spatial range based on the spatial angle between the adjacent triangular facets.

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

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

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

[0252] Optionally, the method further includes:

[0253] When the triangle to be encoded is a preset category triangle, 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.

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

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

[0256] Optionally, determining the vertices to be sorted within a first spatial range based on the spatial angle between adjacent triangular facets characterized by the reconstructed geometric information and the reconstructed connectivity information includes:

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

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

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

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

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

[0262] Of course, a fixed 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 angle threshold, and the encoding end does not need to encode the angle threshold.

[0263] Optionally, the method further includes:

[0264] The encoding end encodes the target vertex information of the triangle to be encoded within the second spatial range to obtain the encoded information of the triangle to be encoded. The second spatial range is the range other than the first spatial range.

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

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

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

[0268] 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 triangles adjacent to this edge are encoded. Figure 8 and Figure 9 As shown, the process of encoding connectivity relationships can specifically include:

[0269] (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 out 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 τ.

[0270] (2) If the above-mentioned 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.

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

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

[0273] (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.

[0274] (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.

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

[0276] Optionally, determining the third bitstream based on attribute information includes:

[0277] The encoding end performs entropy encoding on the target coordinate difference to obtain the first sub-code stream; the target coordinate difference is obtained based on the reconstructed texture coordinate information.

[0278] The encoding end encodes the texture map using a video encoder to obtain a second sub-stream;

[0279] The encoding end obtains a third bitstream based on the first sub-bitstream and the second sub-bitstream.

[0280] It should be understood that the attribute information includes reconstructed texture coordinate information and texture map. The reconstructed texture coordinate information includes the reconstructed texture coordinates corresponding to each vertex, i.e., UV coordinates. The UV coordinates are used to characterize the texture color value of the corresponding vertex.

[0281] In this embodiment, the encoded geometric information is reconstructed, and it is determined whether the UV coordinates corresponding to the reconstructed vertex are consistent with the UV coordinates corresponding to the original vertex. If they are inconsistent, the coordinate difference between the UV coordinates corresponding to the original vertex and the UV coordinates corresponding to the reconstructed vertex can be determined as the target coordinate difference. For the specific technical solution on how to determine the coordinate difference, please refer to the following embodiments.

[0282] After determining the target coordinate difference, entropy encoding is performed on the target coordinate difference to form a UV coordinate sub-code stream, which is also called the first sub-code stream.

[0283] In this embodiment, after obtaining the texture map, a video encoder can be directly used to encode the texture map to form a texture map sub-stream, which is also referred to as the second sub-stream. The video encoders mentioned above include, but are not limited to, High Efficiency Video Coding (HEVC) encoders and Versatile Video Coding (VVC) encoders.

[0284] After obtaining the first and second sub-streams, the first and second sub-streams are mixed to form the third sub-stream.

[0285] In this embodiment, by entropy encoding the target coordinate difference and encoding the texture map using a video encoder to form a third bitstream, the attribute information is effectively compressed, thereby reducing the amount of data.

[0286] Optionally, before performing entropy encoding on the target coordinate difference to obtain the first sub-bitstream, the method includes:

[0287] The encoding end selects a second side from the edge set, which is the set of at least one side of the encoded triangle represented by the reconstructed texture coordinate information;

[0288] The encoding end determines the predicted triangle based on the second side and the vertices corresponding to the second side;

[0289] The encoding end determines the vertices of the second side in the predicted triangle, excluding the two vertices connected to the second side, as predicted vertices;

[0290] The encoding end determines the coordinate difference between the predicted vertex and the real vertex as the target coordinate difference; the real vertex is the vertex of the second side in the triangle to be encoded, excluding the two vertices connected to the second side.

[0291] For easier understanding, please refer to Figure 10 ,exist Figure 10 In the illustrated scenario, τ1 represents the second side, and A1 represents the vertex corresponding to the second side. Triangle S1 can be determined based on the second side and its corresponding vertex. Then, the parallelogram prediction method is used to determine the predicted triangle S2. Further, the vertices of the predicted triangle corresponding to the second side, excluding the two vertices connected to the second side, are determined as the predicted vertices. Figure 10 Point A2 is shown.

[0292] Obtain the true vertices of the triangle to be encoded. These true vertices are the vertices of the second side within the corresponding vertices of the triangle, excluding the two vertices connected to the second side. The triangle to be encoded is... Figure 10 S3, as shown in the figure, is the aforementioned real vertex. Figure 10 Point A3 is shown in the figure. The coordinate difference between the predicted vertex and the actual vertex is calculated, and the above coordinate difference is determined as the target coordinate difference.

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

[0294] like Figure 11 As shown, the encoding device 1100 includes:

[0295] Encoding module 1101 is used to encode the first information corresponding to the target three-dimensional mesh to obtain a first bitstream; the first information is determined based on the geometric information corresponding to the target three-dimensional mesh.

[0296] Processing module 1102 is used to obtain reconstructed connection information and reconstructed texture coordinate information based on the reconstructed geometric information; the reconstructed geometric information is determined based on the reconstructed geometric information.

[0297] The first determining module 1103 is used to determine the second bitstream based on the reconstructed geometric information and the reconstructed connection information;

[0298] The second determining module 1104 is used to determine the third bitstream based on attribute information, wherein the attribute information includes a texture map and the reconstructed texture coordinate information;

[0299] The generation module 1105 is used to generate a target bitstream based on the first bitstream, the second bitstream, and the third bitstream.

[0300] Optionally, the encoding device 1100 further includes:

[0301] An acquisition module is used to acquire the geometric information corresponding to the target 3D mesh; the geometric information includes the position coordinates of the vertices contained in the target 3D mesh;

[0302] The projection module is used by the encoding end to project the vertices contained in the target 3D mesh onto the geometry map and the placeholder map to obtain the first information;

[0303] In this context, the position coordinates of each vertex in the placeholder diagram correspond to the arrangement order of the vertices in the geometric information.

[0304] Optionally, the processing module 1102 is specifically used for:

[0305] Based on the placeholder map, the indexes of the vertices included in the connection information are updated to obtain the reconstructed connection information; the placeholder map is obtained based on decoding the first bitstream, and the position coordinates of each vertex in the placeholder map correspond to the arrangement order of the vertices in the reconstructed geometry information, and the arrangement order of the vertices in the reconstructed geometry information corresponds to the index of the vertices in the reconstructed connection information;

[0306] Based on the placeholder map, the indexes of the vertices contained in the reconstructed texture coordinate information are updated; the position coordinates of each vertex in the placeholder map correspond to the arrangement order of the vertices in the reconstructed geometry information, and the arrangement order of the vertices in the reconstructed geometry information corresponds to the index of the vertices in the reconstructed attribute information.

[0307] Optionally, the encoding device 1100 further includes:

[0308] The simplification module is used to simplify the 3D mesh to be encoded in a lossy encoding mode to obtain the target 3D mesh.

[0309] The third determination module is used to determine the three-dimensional mesh to be encoded as the target three-dimensional mesh when in lossless encoding mode.

[0310] Optionally, the simplified module is specifically used for:

[0311] Based on the quantization parameters, the three-dimensional mesh to be encoded is simplified to obtain the target three-dimensional mesh.

[0312] Optionally, the simplification module is further specifically used for:

[0313] When merging vertices in the 3D mesh to be encoded, the position coordinates of at least some vertices after merging are adjusted to multiples of the quantization parameters to obtain the target 3D mesh.

[0314] Optionally, the encoding module 1101 is specifically used for:

[0315] The geometric information of the target three-dimensional mesh is quantized to obtain first information, which includes at least one of the following: first precision geometric information, second precision geometric information, and information of supplementary points;

[0316] The first information is encoded to obtain the first bitstream;

[0317] Wherein, the first precision geometric information is the geometric information of the target three-dimensional mesh after quantization, the second precision geometric information is the geometric information lost during the quantization process of the target three-dimensional mesh, and the information of the supplementary points is the information of points that need additional processing during the quantization process.

[0318] Optionally, the encoding module 1101 is further specifically used for:

[0319] Based on the quantization parameters of each component, each vertex in the target 3D mesh is quantized to obtain first-precision geometric information.

[0320] Optionally, the encoding module 1101 is further specifically used for:

[0321] Based on the first precision geometric information and the quantization parameters of each component, the second precision geometric information is obtained.

[0322] Optionally, the encoding module 1101 is further specifically used for:

[0323] Based on the geometric information of the target 3D mesh and the first precision geometric information, the information of the supplementary points is determined.

[0324] Optionally, the encoding module 1101 is further specifically used for:

[0325] The first information is processed to obtain the second information, which includes at least one of a placeholder image and a geometric image.

[0326] The second information is encoded to obtain the first bitstream.

[0327] Optionally, the encoding module 1101 is further specifically used for:

[0328] The first precision geometric information is divided into three-dimensional patches;

[0329] The three-dimensional pieces are projected into two dimensions to obtain two-dimensional pieces;

[0330] The two-dimensional pieces are packaged to obtain two-dimensional image information;

[0331] Based on the two-dimensional image information, a placeholder image with first precision and a geometric image with first precision are obtained.

[0332] Optionally, the encoding module 1101 is further specifically used for:

[0333] Based on the information obtained during the process of acquiring two-dimensional image information, slice information is obtained;

[0334] The slice information is encoded to obtain a slice information sub-code stream.

[0335] Optionally, the encoding module 1101 is further specifically used for:

[0336] Obtain the order of vertices contained in the first-precision geometric information;

[0337] Arrange 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 graph.

[0338] Optionally, the encoding module 1101 is further specifically used for:

[0339] Encode the first-precision geometry and the second-precision geometry to obtain the geometry sub-stream.

[0340] Optionally, the encoding module 1101 is further specifically used for:

[0341] Arrange the third-precision geometric information of the supplementary points into a first original piece;

[0342] Arrange the fourth precision geometric information of the supplementary points into a second original piece in the same order as the first original piece;

[0343] The first and second original slices are compressed to obtain the geometry of the supplementary points.

[0344] Optionally, the first determining module 1103 is specifically used for:

[0345] Based on the spatial angle between adjacent triangular facets represented by the reconstructed geometric information and the reconstructed connection information, vertices to be sorted within a first spatial range are determined. The first spatial range is the spatial range where the target vertex of the triangle to be encoded, represented by the reconstructed geometric information and the reconstructed connection information, is located, and the vertices to be sorted include the target vertex.

[0346] Sort the vertices to be sorted to obtain the sorting information of the target vertices;

[0347] The encoding information of the triangle to be encoded is obtained based on the encoding information corresponding to the sorting information of the target vertices;

[0348] Update the edge set according to the first preset rule;

[0349] Based on the updated edge set, the triangles to be encoded are redefined until the encoding information of all triangles to be encoded is obtained;

[0350] The encoding information of all the triangles to be encoded is encoded to obtain the second bitstream;

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

[0352] Optionally, the first determining module 1103 is further specifically used for:

[0353] Select a first edge from the edge set, wherein the edge set is the set of at least one edge of the encoded triangle represented by the reconstructed geometric information and the reconstructed connectivity information;

[0354] Based on the first side and the corresponding vertex, a triangle to be encoded is determined, wherein the target vertex of the triangle to be encoded is the vertex of the first side excluding the two vertices connected to the first side.

[0355] Optionally, the first determining module 1103 is further specifically used for:

[0356] When the triangle to be encoded is a triangle other than the preset category triangle, the vertices to be sorted within the first spatial range are determined according to the spatial angle between the adjacent triangular facets.

[0357] Optionally, the first determining module 1103 is further specifically used for:

[0358] When the triangle to be encoded is a preset category triangle, the encoding information of the triangle to be encoded is obtained according to the encoding information corresponding to the target vertex information of the triangle to be encoded.

[0359] Optionally, the first determining module 1103 is further specifically used for:

[0360] Exclude all vertices of the first target triangle from the vertices within the first spatial range to obtain the remaining vertices;

[0361] Based on the remaining vertices, determine the vertices to be sorted within the first spatial range;

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

[0363] Optionally, the first determining module 1103 is further specifically used for:

[0364] The target vertex information of the triangle to be encoded within the second spatial range is encoded to obtain the encoded information of the triangle to be encoded. The second spatial range is the range other than the first spatial range.

[0365] Optionally, the second determining module 1104 is further specifically used for:

[0366] The target coordinate difference is entropy encoded to obtain the first sub-bitstream; the target coordinate difference is obtained based on the reconstructed texture coordinate information;

[0367] The texture map is encoded using a video encoder to obtain a second sub-stream;

[0368] Based on the first sub-stream and the second sub-stream, a third sub-stream is obtained.

[0369] Optionally, the second determining module 1104 is further specifically used for:

[0370] Select a second edge from the edge set, where the edge set is the set of at least one edge of the encoded triangle represented by the reconstructed texture coordinate information;

[0371] The predicted triangle is determined based on the second side and its corresponding vertex.

[0372] The vertices of the second side in the predicted triangle, excluding the two vertices connected to the second side, are determined as predicted vertices;

[0373] The coordinate difference between the predicted vertex and the real vertex is determined as the target coordinate difference; the real vertex is the vertex of the second side in the triangle to be encoded, excluding the two vertices connected to the second side.

[0374] In this embodiment, the first information corresponding to the target 3D mesh is encoded to obtain a first bitstream; the encoding end obtains reconstructed connectivity information and reconstructed texture coordinate information based on the reconstructed geometric information; the encoding end determines a second bitstream based on the reconstructed geometric information and reconstructed connectivity information; the encoding end determines a third bitstream based on attribute information; and the encoding end generates a target bitstream based on the first, second, and third bitstreams. In this embodiment, by obtaining reconstructed connectivity information and reconstructed texture coordinate information based on the reconstructed geometric information, a correspondence is established between the geometric information corresponding to the reconstructed vertices and the geometric information corresponding to the original vertices, thereby avoiding encoding failures in the subsequent steps of encoding the connectivity information and attribute information of the 3D mesh.

[0375] The encoding device in this application embodiment can be an electronic device, such as an electronic device with an operating system, or a component in an electronic device, such as an integrated circuit or a chip. The electronic device can be a terminal or other devices besides a terminal. For example, the terminal can be, but is not limited to, the type of terminal 11 listed above, and other devices can be servers, network attached storage (NAS), etc., and this application embodiment does not specifically limit the type.

[0376] The encoding device provided in this application embodiment can achieve... Figure 1 The various processes implemented in the method embodiments achieve the same technical effect, and will not be described again here to avoid repetition.

[0377] Optionally, such as Figure 12 As shown, this application embodiment also provides a communication device 1200, including a processor 1201 and a memory 1202. The memory 1202 stores a program or instructions that can run on the processor 1201. For example, when the communication device 1200 is a terminal, when the program or instructions are executed by the processor 1201, they implement the various steps of the above-described encoding method embodiment and achieve the same technical effect.

[0378] This application embodiment also provides a terminal, including a processor and a communication interface, wherein the processor 1201 is used to perform the following operations:

[0379] Encode the first information corresponding to the target 3D mesh to obtain a first bitstream; the first information is determined based on the geometric information corresponding to the target 3D mesh.

[0380] Based on the reconstructed geometric information, reconstructed connectivity information and reconstructed texture coordinate information are obtained; the reconstructed geometric information is determined based on the reconstruction of the geometric information.

[0381] Based on the reconstructed geometric information and the reconstructed connectivity information, a second bitstream is determined;

[0382] The third bitstream is determined based on attribute information, which includes a texture map and the reconstructed texture coordinate information;

[0383] A target bitstream is generated based on the first bitstream, the second bitstream, and the third bitstream.

[0384] This terminal embodiment corresponds to the aforementioned terminal-side method embodiment. All implementation processes and methods of the aforementioned method embodiments can be applied to this terminal embodiment and achieve the same technical effect. Specifically, Figure 13 A schematic diagram of the hardware structure of a terminal to implement an embodiment of this application.

[0385] The terminal 1300 includes, but is not limited to, the following components: radio frequency unit 1301, network module 1302, audio output unit 1303, input unit 1304, sensor 1305, display unit 1306, user input unit 1307, interface unit 1308, memory 1309, and processor 1310.

[0386] Those skilled in the art will understand that the terminal 1300 may also include a power supply (such as a battery) for supplying power to various components. The power supply may be logically connected to the processor 1310 through a power management system, thereby enabling functions such as managing charging, discharging, and power consumption through the power management system. Figure 13 The terminal structure shown does not constitute a limitation on the terminal. The terminal may include more or fewer components than shown, or combine certain components, or have different component arrangements, which will not be elaborated here.

[0387] It should be understood that, in this embodiment, the input unit 1304 may include a graphics processing unit (GPU) 13041 and a microphone 13042. The GPU 13041 processes image data of still images or videos obtained by an image capture device (such as a camera) in video capture mode or image capture mode. The display unit 1306 may include a display panel 13061, which may be configured in the form of a liquid crystal display, an organic light-emitting diode, or the like. The user input unit 1307 includes a touch panel 13071 and at least one of other input devices 13072. The touch panel 13071 is also called a touch screen. The touch panel 13071 may include a touch detection device and a touch controller. Other input devices 13072 may include, but are not limited to, physical keyboards, function keys (such as volume control buttons, power buttons, etc.), trackballs, mice, and joysticks, which will not be described in detail here.

[0388] In this embodiment, after receiving downlink data from the network-side device, the radio frequency unit 1301 can transmit it to the processor 1310 for processing; the radio frequency unit 1301 can also send uplink data to the network-side device. Typically, the radio frequency unit 1301 includes, but is not limited to, antennas, amplifiers, transceivers, couplers, low-noise amplifiers, and duplexers.

[0389] The memory 1309 can be used to store software programs or instructions and various data. The memory 1309 may primarily include a first storage area for storing programs or instructions and a second storage area for storing data. The first storage area may store the operating system, application programs or instructions required for at least one function (such as sound playback, image playback, etc.). Furthermore, the memory 1309 may include volatile memory or non-volatile memory, or both. The non-volatile memory may be read-only memory (ROM), programmable read-only memory (PROM), erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), or flash memory. Volatile memory can be random access memory (RAM), static random access memory (SRAM), dynamic random access memory (DRAM), synchronous dynamic random access memory (SDRAM), double data rate synchronous dynamic random access memory (DDRSDRAM), enhanced synchronous dynamic random access memory (ESDRAM), synchronous link dynamic random access memory (SLDRAM), and direct memory bus RAM (DRRAM). The memory 1309 in this embodiment includes, but is not limited to, these and any other suitable types of memory.

[0390] Processor 1310 may include one or more processing units; optionally, processor 1310 integrates an application processor and a modem processor, wherein the application processor mainly handles operations involving the operating system, user interface, and applications, and the modem processor mainly handles wireless communication signals, such as a baseband processor. It is understood that the aforementioned modem processor may also not be integrated into processor 1310.

[0391] The processor 1310 is used to perform the following operations:

[0392] Encode the first information corresponding to the target 3D mesh to obtain a first bitstream; the first information is determined based on the geometric information corresponding to the target 3D mesh.

[0393] Based on the reconstructed geometric information, reconstructed connectivity information and reconstructed texture coordinate information are obtained; the reconstructed geometric information is determined based on the reconstruction of the geometric information.

[0394] Based on the reconstructed geometric information and the reconstructed connectivity information, a second bitstream is determined;

[0395] The third bitstream is determined based on attribute information, which includes a texture map and the reconstructed texture coordinate information;

[0396] A target bitstream is generated based on the first bitstream, the second bitstream, and the third bitstream.

[0397] 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 encoding method embodiments and achieve the same technical effect. To avoid repetition, they will not be described again here.

[0398] The processor is the processor in the terminal 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.

[0399] 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 method embodiments and can achieve the same technical effect. To avoid repetition, it will not be described again here.

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

[0401] 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 method embodiments, and can achieve the same technical effect. To avoid repetition, it will not be described again here.

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

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

[0404] 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 encodes the first information corresponding to the target 3D mesh to obtain the first bitstream; The first information is determined based on the geometric information corresponding to the target three-dimensional mesh; The encoding end obtains reconstructed connection information and reconstructed texture coordinate information based on the reconstructed geometric information; The reconstructed geometric information is determined based on the reconstruction of the geometric information; The encoding end determines the second bitstream based on the reconstructed geometric information and the reconstructed connectivity information; The encoding end determines the third bitstream based on attribute information, which includes a texture map and the reconstructed texture coordinate information; The encoding end generates a target bitstream based on the first bitstream, the second bitstream, and the third bitstream; The process of obtaining reconstructed connectivity information and reconstructed texture coordinate information based on reconstructed geometric information includes: Based on the placeholder map, the indexes of the vertices included in the connection information are updated to obtain the reconstructed connection information; the placeholder map is obtained based on decoding the first bitstream, and the position coordinates of each vertex in the placeholder map correspond to the arrangement order of the vertices in the reconstructed geometry information, and the arrangement order of the vertices in the reconstructed geometry information corresponds to the index of the vertices in the reconstructed connection information; Based on the placeholder map, the indexes of the vertices contained in the reconstructed texture coordinate information are updated; the position coordinates of each vertex in the placeholder map correspond to the arrangement order of the vertices in the reconstructed geometry information, and the arrangement order of the vertices in the reconstructed geometry information corresponds to the index of the vertices in the reconstructed attribute information.

2. The method according to claim 1, characterized in that, Before encoding the first information corresponding to the target 3D mesh to obtain the first bitstream, the method includes: The encoding end acquires the geometric information corresponding to the target 3D mesh; the geometric information includes the position coordinates of the vertices contained in the target 3D mesh; The encoding end projects the vertices contained in the target 3D mesh onto the geometric diagram and the placeholder diagram to obtain the first information; In this context, the position coordinates of each vertex in the placeholder diagram correspond to the arrangement order of the vertices in the geometric information.

3. The method according to claim 1, characterized in that, Before encoding the first information corresponding to the target 3D mesh, the process includes: In a lossy encoding mode, the 3D mesh to be encoded is simplified to obtain the target 3D mesh; In lossless encoding mode, the 3D mesh to be encoded is identified as the target 3D mesh.

4. The method according to claim 3, characterized in that, The simplification process of the 3D mesh to be encoded to obtain the target 3D mesh includes: The encoding end simplifies the three-dimensional mesh to be encoded based on quantization parameters to obtain the target three-dimensional mesh.

5. The method according to claim 4, characterized in that, The step of simplifying the target 3D mesh based on quantization parameters to obtain the target 3D mesh includes: When merging vertices in the 3D mesh to be encoded, the encoding end adjusts the position coordinates of at least some vertices after merging to a multiple of the quantization parameter to obtain the target 3D mesh.

6. The method according to claim 1, characterized in that, Encoding the first information corresponding to the target 3D mesh to obtain the first bitstream includes: The encoding end quantizes the geometric information of the target three-dimensional mesh to obtain first information, which includes at least one of the following: first precision geometric information, second precision geometric information, and supplementary point information; The encoding end encodes the first information to obtain the first bitstream; Wherein, the first precision geometric information is the geometric information of the target three-dimensional mesh after quantization, the second precision geometric information is the geometric information lost during the quantization process of the target three-dimensional mesh, and the information of the supplementary points is the information of points that need additional processing generated during the quantization process.

7. The method according to claim 6, characterized in that, The quantization of the geometric information of the target 3D mesh to obtain first information includes: The encoding end quantizes each vertex in the target 3D mesh according to the quantization parameters of each component to obtain first-precision geometric information.

8. The method according to claim 6, characterized in that, The quantization of the geometric information of the target 3D mesh to obtain first information includes: The encoding end obtains the second precision geometric information based on the first precision geometric information and the quantization parameters of each component.

9. The method according to claim 6, characterized in that, The quantization of the geometric information of the target 3D mesh to obtain first information includes: The encoding end determines the information of the supplementary points based on the geometric information of the target three-dimensional mesh and the first precision geometric information.

10. The method according to claim 6, characterized in that, Encoding the first information to obtain the first bitstream includes: The encoding end processes the first information to obtain second information, which includes at least one of a placeholder image and a geometric image. The second information is encoded to obtain the first bitstream.

11. The method according to claim 10, characterized in that, When the first information includes first-precision geometric information, the step of processing the first information to obtain the second information includes: The encoding end performs three-dimensional patching on the first precision geometric information; The encoding end performs a two-dimensional projection on the divided three-dimensional slices to obtain two-dimensional slices; The encoding end packages the two-dimensional slices to obtain two-dimensional image information; The encoding end obtains a placeholder image of first precision and a geometric image of first precision based on the two-dimensional image information.

12. The method according to claim 11, characterized in that, After packaging the two-dimensional slices to obtain two-dimensional image information, the method includes: The encoding end obtains slice information based on the information obtained during the process of acquiring two-dimensional image information; The encoding end encodes the slice information to obtain the slice information sub-code stream.

13. The method according to claim 10, characterized in that, When the first information includes second-precision geometric information, the step of processing the first information to obtain the second information includes: The encoding end obtains the arrangement order of the vertices contained in the first-precision geometric information; 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.

14. The method according to claim 10, characterized in that, The encoding of the second information includes: The encoding end encodes the first-precision geometric diagram and the second-precision geometric diagram to obtain the geometric diagram sub-code stream.

15. The method according to claim 10, characterized in that, When the first information includes supplementary point information, the step of processing the first information to obtain the second information includes: The encoding end arranges the third-precision geometric information of the supplementary points into a first original piece; 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; The encoding end compresses the first original slice and the second original slice to obtain the geometric map of the supplementary points.

16. The method according to claim 1, characterized in that, The process of determining the second bitstream based on the reconstructed geometric information and the reconstructed connectivity information includes: The encoding end determines the vertices to be sorted within a first spatial range based on the spatial angle between adjacent triangular facets represented by the reconstructed geometric information and the reconstructed connection information. The first spatial range is the spatial range where the target vertex of the triangle to be encoded, represented by the reconstructed geometric information and the reconstructed connection information, is located, and the vertices to be sorted include the target vertex. The encoding end sorts the vertices to be sorted to obtain the sorting information of the target vertices; 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; The encoding end updates the edge set according to the first preset rule; The encoding end redetermines the triangles to be encoded based on the updated edge set until it obtains the encoding information of all triangles to be encoded. The encoding end encodes the encoding information of all the triangles to be encoded to obtain the second bitstream; 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.

17. The method according to claim 16, characterized in that, Before determining the vertices to be sorted within the first spatial range based on the spatial angle between adjacent triangular faces characterized by the reconstructed geometric information and the reconstructed connectivity information, the method includes: The encoding end selects a first edge from the edge set, wherein the edge set is the set of at least one edge of the encoded triangle represented by the reconstructed geometric information and the reconstructed connection information; The encoding end determines the triangle to be encoded based on the first side and the vertices corresponding to the first side, wherein the target vertices of the triangle to be encoded are the vertices corresponding to the first side excluding the two vertices connected to the first side.

18. The method according to claim 17, characterized in that, The step of determining the vertices to be sorted within a first spatial range based on the spatial angle between adjacent triangular facets characterized by the reconstructed geometric information and the reconstructed connectivity information includes: When the triangle to be encoded is a triangle other than a preset category triangle, the encoding end determines the vertices to be sorted within a first spatial range based on the spatial angle between the adjacent triangular facets.

19. The method according to claim 17, characterized in that, The method further includes: When the triangle to be encoded is a preset category triangle, 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.

20. The method according to claim 16, characterized in that, The step of determining the vertices to be sorted within a first spatial range based on the spatial angle between adjacent triangular facets characterized by the reconstructed geometric information and the reconstructed connectivity information includes: The encoding end excludes all vertices of the first target triangle from the vertices within the first spatial range to obtain the remaining vertices; The encoding end determines the vertices to be sorted within the first spatial range based on the remaining vertices; The first target triangle is a triangle whose included angle with an adjacent encoded triangle is less than an included angle threshold, and one side of the first target triangle is the same as the first side of the triangle to be encoded.

21. The method according to claim 16, characterized in that, The method further includes: The encoding end encodes the target vertex information of the triangle to be encoded within the second spatial range to obtain the encoded information of the triangle to be encoded. The second spatial range is the range other than the first spatial range.

22. The method according to claim 1, characterized in that, The encoding end determines the third bitstream based on attribute information, including: The encoding end performs entropy encoding on the target coordinate difference to obtain the first sub-code stream; the target coordinate difference is obtained based on the reconstructed texture coordinate information. The encoding end encodes the texture map using a video encoder to obtain a second sub-stream; The encoding end obtains a third bitstream based on the first sub-bitstream and the second sub-bitstream.

23. The method according to claim 22, characterized in that, Before performing entropy encoding on the target coordinate difference to obtain the first sub-codestream, the method includes: The encoding end selects a second side from the edge set, which is the set of at least one side of the encoded triangle represented by the reconstructed texture coordinate information; The encoding end determines the predicted triangle based on the second side and the vertices corresponding to the second side; The encoding end determines the vertices of the second side in the predicted triangle, excluding the two vertices connected to the second side, as predicted vertices; The encoding end determines the coordinate difference between the predicted vertex and the real vertex as the target coordinate difference; the real vertex is the vertex of the second side in the triangle to be encoded, excluding the two vertices connected to the second side.

24. An encoding device, characterized in that, include: The encoding module is used to encode the first information corresponding to the target 3D mesh to obtain the first bitstream; The first information is determined based on the geometric information corresponding to the target three-dimensional mesh; The processing module is used to obtain reconstructed connection information and reconstructed texture coordinate information based on the reconstructed geometric information; The reconstructed geometric information is determined based on the reconstruction of the geometric information; The first determining module is used to determine the second bitstream based on the reconstructed geometric information and the reconstructed connectivity information; The second determining module is used to determine the third bitstream based on attribute information, wherein the attribute information includes a texture map and the reconstructed texture coordinate information; The generation module is used to generate a target bitstream based on the first bitstream, the second bitstream, and the third bitstream; Specifically, the processing module is used to: update the indexes of the vertices included in the connection information based on the placeholder map to obtain the reconstructed connection information; the placeholder map is obtained by decoding the first bitstream, and the position coordinates of each vertex in the placeholder map correspond to the arrangement order of the vertices in the reconstructed geometry information, and the arrangement order of the vertices in the reconstructed geometry information corresponds to the index of the vertices in the reconstructed connection information; and update the indexes of the vertices included in the reconstructed texture coordinate information based on the placeholder map; the position coordinates of each vertex in the placeholder map correspond to the arrangement order of the vertices in the reconstructed geometry information, and the arrangement order of the vertices in the reconstructed geometry information corresponds to the index of the vertices in the reconstructed attribute information.

25. A terminal, 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-23.

26. 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-23.

Citation Information

Patent Citations

  • Methods and devices for encoding and decoding three dimensional grids

    CN101626509B

  • Three dimension mode compression coding method based on octree

    CN1946180B