Coding method, decoding method, apparatus, and device

By splitting and encoding the non-manifold structure of the three-dimensional mesh, only adding identification information to the manifold mesh, solving the problem of too many repetitive vertices caused by the non-manifold structure splitting, achieving efficient lossless coding and accurate recover.

WO2025002018A1PCT designated stage expired Publication Date: 2025-01-02VIVO MOBILE COMM CO LTD
View PDF 4 Cites 0 Cited by

Patent Information

Application Number
PCT/CN2024/100834
Authority / Receiving Office
WO · WO
Patent Type
Applications
Current Assignee / Owner
Priority Date
2023-06-30
Filing Date
2024-06-24
Publication Date
2025-01-02

AI Technical Summary

Technical Problem

In the prior art, when encoding a three-dimensional grid, the splitting of the non-manifold structure leads to too many repeated vertices, resulting in large bit overhead and making it difficult to achieve efficient lossless encoding.

Method used

By splitting the non-manifold structure in the original mesh, only the non-manifold identification information is added to the repeated vertices in the manifold mesh, and the non-manifold identification information and the index information of the first repeated vertex are encoded to generate the A code stream to indicate the presence of a non-manifold structure and the repeated vertices generated by the split.

Benefits of technology

It realizes efficient lossless encoding of three-dimensional grids, reduces bit overhead, improves coding efficiency, and can accurately restore the non-manifold structure in the original grid.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN2024100834_02012025_PF_FP_ABST
    Figure CN2024100834_02012025_PF_FP_ABST
Patent Text Reader

Abstract

The present application belongs to the technical field of coding and decoding. Disclosed are a coding method, a decoding method, an apparatus, and a device. The coding method in the embodiments of the present application comprises: a coding end performing splitting processing on a non-manifold structure in an original mesh, so as to obtain a manifold mesh; the coding end adding non-manifold identification information to repeated vertices in the manifold mesh, and determining index information of a first repeated vertex among the repeated vertices, wherein the non-manifold identification information is used for indicating whether a repeated vertex is a repeated vertex generated when splitting processing is performed on the non-manifold structure, and the first repeated vertex is a repeated vertex generated when splitting processing is performed on the non-manifold structure; and the coding end coding the non-manifold identification information and the index information of the first repeated vertex, so as to obtain a first code stream.
Need to check novelty before this filing date? Find Prior Art

Description

Coding method, decoding method, device and equipment

[0001] CROSS-REFERENCE TO RELATED APPLICATIONS

[0002] This application claims priority to Chinese Patent Application No. 202310802552.3 filed in China on June 30, 2023, the entire contents of which are incorporated herein by reference. Technical Field

[0003] The present application belongs to the field of coding and decoding technology, and specifically relates to a coding method, a decoding method, a device and equipment. Background Art

[0004] With the increasing demand for visual effects of three-dimensional mesh models and the emergence of many more mature three-dimensional scanning technologies and three-dimensional modeling software, the data size and complexity of three-dimensional mesh models obtained by three-dimensional scanning equipment or three-dimensional modeling software are also growing rapidly. Therefore, how to efficiently encode three-dimensional mesh data is the key to conveniently transmitting, storing and processing three-dimensional mesh data. In related technologies, in order to achieve lossless encoding of three-dimensional meshes, when encoding a three-dimensional mesh containing a non-manifold structure, it is necessary to set an identifier for each vertex in the manifold mesh obtained by splitting the three-dimensional mesh into non-manifold structures to determine whether it is a point generated by splitting the non-manifold structure. When the number of vertices in the manifold mesh is large, this encoding method will cause a large bit overhead, which is not conducive to efficiently achieving lossless encoding of three-dimensional meshes.

[0005] Summary of the Invention

[0006] The embodiments of the present application provide an encoding method, a decoding method, an apparatus and a device, which can solve the problem of how to efficiently achieve lossless encoding of three-dimensional meshes.

[0007] In a first aspect, an encoding method is provided, comprising:

[0008] The encoder splits the non-manifold structure in the original grid to obtain a manifold grid;

[0009] The encoder adds non-manifold identification information to repeated vertices in the manifold mesh, and determines index information of a first repeated vertex among the repeated vertices, wherein the non-manifold identification information is used to indicate whether the repeated vertex is a repeated vertex generated when the non-manifold structure is split, and the first repeated vertex is a repeated vertex generated when the non-manifold structure is split;

[0010] The encoding end encodes the non-manifold identification information and the index information of the first repeated vertex to obtain a first code stream, and the first indication information is used to indicate whether a non-manifold structure exists in the original mesh.

[0011] In a second aspect, a decoding method is provided, comprising:

[0012] The decoding end decodes the first bitstream to obtain decoding information, the decoding information including non-manifold identification information and index information of a first repeated vertex, the first repeated vertex being a repeated vertex generated by splitting a non-manifold structure in an original mesh, and the non-manifold identification information being used to indicate whether the repeated vertex is a repeated vertex generated by splitting the non-manifold structure;

[0013] The decoding end restores the non-manifold structure in the original grid according to the decoding information.

[0014] In a third aspect, an encoding device is provided, comprising:

[0015] The first acquisition module is used to split the non-manifold structure in the original grid to obtain a manifold grid;

[0016] a first processing module, configured to add non-manifold identification information to repeated vertices in the manifold mesh, and determine index information of a first repeated vertex among the repeated vertices, wherein the non-manifold identification information is used to indicate whether the repeated vertex is a repeated vertex generated when the non-manifold structure is split, and the first repeated vertex is a repeated vertex generated when the non-manifold structure is split;

[0017] The second acquisition module is configured to encode the non-manifold identification information and the index information of the first repeated vertex to obtain a first code stream.

[0018] In a fourth aspect, a decoding device is provided, comprising:

[0019] a fifth acquisition module, configured to decode the first code stream to obtain decoded information, the decoded information including non-manifold identification information and index information of a first repeated vertex, the first repeated vertex being a repeated vertex generated by splitting a non-manifold structure in an original mesh, the non-manifold identification information being used to indicate whether the repeated vertex is a repeated vertex generated by splitting the non-manifold structure;

[0020] The second processing module is configured to restore the non-manifold structure in the original grid according to the decoded information.

[0021] In a fifth aspect, an encoding device is provided, comprising a processor and a communication interface, wherein the processor is used to split the non-manifold structure in the original mesh to obtain a manifold mesh; add non-manifold identification information to the repeated vertices in the manifold mesh, and determine the index information of the first repeated vertex among the repeated vertices, the non-manifold identification information is used to indicate whether the repeated vertex is a repeated vertex generated when the non-manifold structure is split, and the first repeated vertex is a repeated vertex generated when the non-manifold structure is split; the non-manifold identification information and the index information of the first repeated vertex are encoded to obtain a first code stream.

[0022] In a sixth aspect, a decoding device is provided, comprising a processor and a communication interface, wherein the processor is used to decode a first code stream to obtain decoding information, the decoding information including non-manifold identification information and index information of a first repeated vertex, the first repeated vertex being a repeated vertex generated by splitting the non-manifold structure in the original mesh, and the non-manifold identification information being used to indicate whether the repeated vertex is a repeated vertex generated when the non-manifold structure is split; and the non-manifold structure in the original mesh is restored according to the decoding information.

[0023] In the seventh aspect, an electronic device is provided, which includes a processor and a memory, wherein the memory stores programs or instructions that can be run on the processor, and when the program or instructions are executed by the processor, the steps of the method described in the first aspect or the second aspect are implemented.

[0024] In an eighth aspect, a coding and decoding system is provided, comprising: a coding device and a decoding device, wherein the coding device can be used to execute the steps of the coding method as described in the first aspect, and the decoding device can be used to execute the steps of the decoding method as described in the second aspect.

[0025] In the ninth aspect, a readable storage medium is provided, on which a program or instruction is stored. When the program or instruction is executed by a processor, the steps of the method described in the first aspect are implemented, or the steps of the method described in the second aspect are implemented.

[0026] In the tenth aspect, a chip is provided, comprising a processor and a communication interface, wherein the communication interface is coupled to the processor, and the processor is used to run programs or instructions to implement the method described in the first aspect, or to implement the method described in the second aspect.

[0027] In the eleventh aspect, a computer program / program product is provided, which is stored in a storage medium and is executed by at least one processor to implement the steps of the method described in the first aspect, or to implement the steps of the method described in the second aspect.

[0028] In an embodiment of the present application, the encoding end splits the non-manifold structure in the original mesh to obtain a manifold mesh; adds non-manifold identification information to the repeated vertices in the manifold mesh, and determines the index information of the first repeated vertex in the repeated vertices, the non-manifold identification information is used to indicate whether the repeated vertex is a repeated vertex generated when the non-manifold structure is split, and the first repeated vertex is a repeated vertex generated when the non-manifold structure is split; the encoding end encodes the non-manifold identification information and the index information of the first repeated vertex to obtain a first code stream. Through the above scheme, the decoding end can restore the non-manifold structure of the original mesh based on the non-manifold identification information and the index information of the first repeated vertex obtained by decoding the first code stream, thereby achieving the purpose of lossless encoding of the original mesh. Since the encoding end only adds non-manifold identification to the repeated points in the manifold mesh when encoding the mesh containing the non-manifold structure, rather than adding non-manifold identification to each vertex in the manifold mesh, it can achieve lossless encoding of the three-dimensional mesh more efficiently. BRIEF DESCRIPTION OF THE DRAWINGS

[0029] Figure 1 shows a schematic diagram of the five modes of the Edgebreaker encoding method;

[0030] FIG2 is a schematic diagram showing a flow chart of an encoding method according to an embodiment of the present application;

[0031] FIG3 is a schematic diagram showing a three-dimensional grid lossless coding framework according to an embodiment of the present application;

[0032] FIG4 is a schematic diagram showing the correspondence between edges and corners in a manifold mesh according to an embodiment of the present application;

[0033] FIG5 is a schematic diagram showing the angle relationship in an embodiment of the present application;

[0034] FIG6 is a schematic diagram showing traversal rules of five modes of the Edgebreaker encoding method in an embodiment of the present application;

[0035] FIG7 is a schematic diagram showing two adjacent triangles in a grid according to an embodiment of the present application;

[0036] FIG8 is a schematic diagram showing UV coordinate prediction based on three-dimensional to two-dimensional projection in an embodiment of the present application;

[0037] FIG9 is a schematic flow chart showing a decoding method according to an embodiment of the present application;

[0038] FIG10 is a schematic diagram showing a three-dimensional grid lossless decoding framework according to an embodiment of the present application;

[0039] FIG11 is a schematic diagram showing a module of an encoding device according to an embodiment of the present application;

[0040] FIG12 is a schematic diagram showing a module of a decoding device according to an embodiment of the present application;

[0041] FIG13 is a block diagram showing a structure of an electronic device according to an embodiment of the present application;

[0042] FIG14 shows a structural block diagram of an encoding device or a decoding device according to an embodiment of the present application. DETAILED DESCRIPTION

[0043] The following will be combined with the accompanying drawings in the embodiments of this application to clearly describe the technical solutions in the embodiments of this application. Obviously, the embodiments described are part of the embodiments of this application, not all of the embodiments. Based on the embodiments in this application, all other embodiments obtained by ordinary technicians in this field are within the scope of protection of this application.

[0044] The terms "first", "second", etc. in this application are used to distinguish similar objects, and are not used to describe a specific order or sequence. It should be understood that the terms used in this way are interchangeable where appropriate, so that the embodiments of the present application can be implemented in an order other than those illustrated or described herein, and the objects distinguished by "first" and "second" are generally of the same type, and do not limit the number of objects, for example, the first object can be one or more. In addition, "or" in this application represents at least one of the connected objects. For example, "A or B" covers three options, namely, Option 1: including A but not including B; Option 2: including B but not including A; Option 3: including both A and B. The character " / " generally indicates that the objects associated before and after are in an "or" relationship.

[0045] The term "indication" in this application can be either a direct indication (or explicit indication) or an indirect indication (or implicit indication). A direct indication can be understood as the sender explicitly informing the receiver of specific information, the operation to be performed, or the requested result, etc. in the instruction sent; an indirect indication can be understood as the receiver determining the corresponding information based on the instruction sent by the sender, or making a judgment and determining the operation to be performed or the requested result, etc. based on the judgment result.

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

[0047] In order to enable those skilled in the art to better understand the embodiments of the present application, the following description is first given.

[0048] With the rapid development of multimedia technology, related research results have been rapidly industrialized and have become an indispensable part of people's lives. Three-dimensional models have become the next generation of digital media, following audio, images, and video. Three-dimensional meshes and point clouds are two commonly used representations of 3D models. Compared to traditional multimedia such as images and videos, 3D mesh models offer greater interactivity and realism, leading to their increasing application in various fields, including commerce, manufacturing, construction, education, medicine, entertainment, art, and the military.

[0049] With the increasing demand for visually appealing 3D mesh models and the emergence of more sophisticated 3D scanning technologies and 3D modeling software, the size and complexity of 3D mesh data captured by 3D scanning equipment or 3D modeling software are rapidly increasing. Therefore, efficiently compressing 3D mesh data is crucial for its convenient transmission, storage, and processing.

[0050] A 3D mesh often contains three main types of information: topological information, geometric information, and attribute information. Topological information, also known as connectivity information, is used to describe the connection between elements such as vertices and patches in the mesh; geometric information is the three-dimensional coordinates of all vertices in the mesh; and attribute information records other information attached to the mesh, such as normal vectors, texture coordinates (i.e., UV coordinates), and color. Compression of 3D mesh data often involves compressing these three types of information according to their data characteristics. In addition, for 3D meshes with texture maps, the texture maps also need to be compressed.

[0051] Draco is a library for compressing and decompressing three-dimensional (3D) geometric meshes and point clouds. It aims to improve the storage and transmission of 3D graphics and significantly accelerate the encoding, transmission, and decoding of 3D data. Draco supports compression of 3D mesh geometry, connectivity, and attribute information. Draco supports both lossy and near-lossless modes. Furthermore, Draco's Edgebreaker compression method for encoding connectivity relationships is currently one of the most efficient methods for encoding 3D mesh connectivity information.

[0052] However, Edgebreaker requires the mesh to be encoded to have a manifold structure. For meshes with non-manifold structures, Draco must split them into manifold structures to correctly encode them. However, Draco does not merge these split structures at the decoder end. This results in the decoder outputting meshes with more split points than the original mesh input to the encoder. This prevents Draco from losslessly encoding these meshes with non-manifold structures.

[0053] The Moving Pictures Experts Group (MPEG), an international standards organization specializing in video and image processing, is developing a new standard for dynamic 3D mesh compression (Video-based Dynamic Mesh Coding, V-DMC). Currently, they are also using an Edgebreaker-based solution for encoding static 3D meshes, temporarily reusing the Draco codec. MPEG is also exploring the implementation of an Edgebreaker-based 3D mesh codec provided by MPEG to compress 3D mesh geometry, connectivity, and attribute information. Because Edgebreaker requires the mesh to be encoded to be a manifold structure, the currently proposed solution involves splitting 3D meshes with non-manifold structures into manifold structures for encoding. Therefore, for lossless mode, the Edgebreaker-based 3D mesh codec provided by MPEG records and encodes the index information of duplicate points generated by non-manifold removal at the encoding end. It also adds an identifier to each vertex of the manifold mesh after the removal to indicate whether it is a duplicate point generated by non-manifold removal. Based on this identifier and the index information of duplicate points generated by non-manifold removal, the non-manifold structure of the original 3D mesh is restored at the decoding end to achieve lossless encoding of the 3D mesh. Since the removal of the non-manifold structure is achieved by adding duplicate points with the same geometric and attribute information, the only points in the decoded 3D mesh that may be newly added due to non-manifold removal are duplicate points. Setting an identifier for each vertex to determine whether it is a point generated by non-manifold removal would result in a certain amount of coding redundancy.

[0054] Both of the aforementioned 3D mesh compression schemes are based on Edgebreaker, and both require disassembling any non-manifold structures present in the input mesh. Lossless compression, however, requires restoring any non-manifold structures present in the original 3D mesh at the decoder. Therefore, a new Edgebreaker-based lossless encoding method for non-manifold 3D meshes is proposed, which is crucial for achieving more efficient lossless encoding of non-manifold meshes.

[0055] The Edgebreaker-based 3D mesh compression tool currently provided by MPEG encodes and stores the connectivity, geometry, and attribute information of a 3D mesh separately. The core module, encoding the connectivity information, uses the Edgebreaker algorithm. Conventional compression methods are used to encode the geometry and attribute information, namely, data quantization, predictive compression (e.g., parallelogram prediction), and entropy coding. Because the tool uses a connectivity-driven encoding method, the encoding of the geometry and attribute information follows the encoding order of the connectivity information. This approach implicitly embeds the vertex order of the connectivity encoding within the vertex order of the geometry information, avoiding the need to transmit the vertex order of the connectivity encoding separately, thereby saving this bit overhead.

[0056] The Edgebreaker method is a 3D mesh connectivity encoding method with advantages such as good compression performance, ease of implementation, and an upper limit on the compression ratio. The Edgebreaker method itself only describes how to compress the 3D mesh connectivity information; further compression is achieved through geometric information compression and entropy coding.

[0057] Edgebreaker encoding can compress triangular meshes that are homeomorphic to a sphere to a compression efficiency of 2 bits per triangle or less. The encoding algorithm uses five different modes (called C, L, E, R, and S) to access each triangle of the mesh in depth-first order. Each triangle is labeled according to the mode it is in, generating a CLERS string that provides a compact representation of the mesh's connectivity.

[0058] Figure 1 shows the five modes of the Edgebreaker method. The Edgebreaker method divides the mesh into a traversed portion and an untraversed portion, with the boundary between the two portions being called the active boundary. During the Edgebreaker encoding process, the triangle to be traversed is accessed through the active edges on the active boundary, and the mode to be used is determined based on the relationship between the active edge and the triangle in which it resides. The other vertex in the triangle containing the active edge is called the third vertex. If the third vertex is not on the active boundary, the current triangle is marked in C mode. If the third vertex is on the active boundary and is the next vertex of the current active edge in counterclockwise order, the current triangle is marked in R mode. If the third vertex is on the active boundary and is the previous vertex of the current active edge in counterclockwise order, the current triangle is marked in L mode. If the third vertex is on the active boundary and is both the previous vertex and the next vertex of the current active edge in counterclockwise order, the current triangle is marked in E mode. If the third vertex is on the active edge, but is neither the previous vertex nor the next vertex of the current active edge in counterclockwise order, then the current triangle is marked as S mode.

[0059] After marking each triangle, the active boundary is updated and the next active edge is selected according to certain rules. After traversing all triangles, the obtained CLERS string is entropy encoded to achieve higher compression efficiency.

[0060] The encoding method provided in the embodiments of the present application is described in detail below through some embodiments and their application scenarios in conjunction with the accompanying drawings.

[0061] As shown in FIG2 , an embodiment of the present application provides an encoding method, including:

[0062] Step 201: The encoder splits the non-manifold structure in the original mesh to obtain a manifold mesh.

[0063] Optionally, the original grid is a three-dimensional grid, which can be understood as a three-dimensional grid corresponding to any video frame.

[0064] The non-manifold structure in the embodiment of the present application includes at least one of a non-manifold edge and a non-manifold point.

[0065] The non-manifold edges mentioned above refer to edges that exist in at least three triangles at the same time in the mesh.

[0066] The above non-manifold points can be determined by:

[0067] First, a corner table is constructed, establishing a correspondence between each vertex and its corresponding corner in the original mesh. Starting from a corner corresponding to a vertex, all adjacent corners that form a sector are traversed, marking the vertex and the traversed corners as traversed. If, after completing this process, a vertex still has untraversed corners, it is considered a non-manifold point.

[0068] Optionally, in an embodiment of the present application, if each edge of the mesh is shared by at most two facets and there are no non-manifold points, then the mesh is a manifold mesh; otherwise, it is called a non-manifold mesh.

[0069] In this step, the original mesh is split into manifold meshes to facilitate subsequent encoding based on an encoding scheme in related technologies, for example, encoding is performed using a three-dimensional mesh encoder based on Edgebreaker.

[0070] Step 202: The encoding end adds non-manifold identification information to the repeated vertices in the manifold mesh, and determines the index information of the first repeated vertex among the repeated vertices, wherein the non-manifold identification information is used to indicate whether the repeated vertex is a repeated vertex generated when the non-manifold structure is split, and the first repeated vertex is a repeated vertex generated when the non-manifold structure is split.

[0071] The repeated vertices include the first repeated vertices and the second repeated vertices. The second repeated vertices are repeated vertices in the original mesh before the non-manifold structure is split.

[0072] In an embodiment of the present application, non-manifold identification information is used to indicate whether the repeated vertices (i.e., repeated points) in the manifold mesh are repeated vertices generated when the non-manifold structure is split. For example, when the non-manifold identification information is 1, it indicates that the repeated vertices are repeated vertices generated when the non-manifold structure is split. When the non-manifold identification information is 0, it indicates that the repeated vertices are not repeated vertices generated when the non-manifold structure is split.

[0073] Step 203: The encoding end encodes the non-manifold identification information and the index information of the first repeated vertex to obtain a first code stream

[0074] Since the splitting of non-manifold structures is achieved by adding duplicate points with the same geometric information and attribute information, the manifold mesh contains two types of duplicate points: one is the duplicate points existing in the original input mesh itself (i.e., the second duplicate vertices in this application), and the other is the duplicate points newly generated due to the splitting of the non-manifold structure (i.e., the above-mentioned first duplicate vertices). In the case where there is a non-manifold structure in the original mesh, it is necessary to encode the non-manifold identification information of the above-mentioned two duplicate points and the index information of the first duplicate point, so that the decoding end can merge the duplicate vertices generated due to the splitting of the non-manifold structure according to the non-manifold identification information and index information, and adjust the connection relationship, thereby restoring the non-manifold structure in the original mesh and realizing lossless encoding of the three-dimensional mesh containing the non-manifold structure.

[0075] In an embodiment of the present application, the encoding end splits the non-manifold structure in the original mesh to obtain a manifold mesh; adds non-manifold identification information to the repeated vertices in the manifold mesh, and determines the index information of the first repeated vertex in the repeated vertices, the non-manifold identification information is used to indicate whether the repeated vertex is a repeated vertex generated when the non-manifold structure is split, and the first repeated vertex is a repeated vertex generated when the non-manifold structure is split; the encoding end encodes the non-manifold identification information and the index information of the first repeated vertex to obtain a first code stream. Through the above scheme, the decoding end can restore the non-manifold structure of the original mesh based on the non-manifold identification information and the index information of the first repeated vertex obtained by decoding the first code stream, thereby achieving the purpose of lossless encoding of the original mesh. Since the encoding end only adds non-manifold identification to the repeated points in the manifold mesh when encoding the mesh containing the non-manifold structure, rather than adding non-manifold identification to each vertex in the manifold mesh, it can achieve lossless encoding of the three-dimensional mesh more efficiently.

[0076] Optionally, the first code stream further includes encoding information of first indication information, where the first indication information is used to indicate whether a non-manifold structure exists in the original grid.

[0077] Optionally, the method of the embodiment of the present application further includes:

[0078] The encoding end encodes the manifold grid to obtain a second code stream.

[0079] The encoding end obtains a total code stream of the original grid according to the first code stream and the second code stream.

[0080] In an embodiment of the present application, when the decoding end restores the non-manifold structure, in addition to the non-manifold identification information and the index information of the first repeated vertex, the above-mentioned manifold mesh is also required. By encoding the manifold mesh, the decoding end can restore the non-manifold structure based on the manifold mesh, the non-manifold identification information and the index information of the first repeated vertex.

[0081] Optionally, the encoding end encodes the manifold grid to obtain a second code stream, including:

[0082] The encoding end encodes the second target information of the manifold grid to obtain the second code stream;

[0083] The second target information includes connection relationship, geometric information and attribute information.

[0084] Optionally, the attribute information includes UV coordinates, ie, texture coordinates. UV coordinates are information describing the texture of vertices of a three-dimensional mesh.

[0085] In an embodiment of the present application, the edgebreaker method can be used to encode the connection relationship to obtain a CLERS pattern string that can concisely represent the connection relationship. The pattern string is then compressed using entropy coding to obtain a connection relationship sub-codestream (also described as a connection relationship codestream). A method such as parallelogram prediction is used to encode the geometric information of the mesh to obtain a geometric information sub-codestream (also described as a geometric information codestream). A method such as similar triangle prediction is used to encode the UV coordinates in the attribute information of the mesh to obtain an attribute information sub-codestream (also described as an attribute information codestream). The second codestream described above is obtained based on the connection relationship sub-codestream, the geometric information sub-codestream, and the attribute information sub-codestream.

[0086] Optionally, determining index information of a first repeated vertex among the repeated vertices includes:

[0087] The index information of the first repeated vertex is determined according to the encoding order of at least one of the geometric information and the attribute information in the manifold mesh.

[0088] The above-mentioned first repeated vertices include geometric repeated vertices and attribute repeated vertices. When the geometric vertices and the attribute vertices in the manifold mesh have the same connection relationship, the index information of the first repeated vertices can be obtained according to the encoding order of the encoded geometric information or the attribute information. If the geometric vertices and the attribute vertices in the manifold mesh have different connection relationships, the index information of the geometric repeated vertices in the first repeated vertices can be obtained according to the encoding order of the geometric information, and the index information of the attribute repeated vertices in the first repeated vertices can be obtained according to the encoding order of the attribute information.

[0089] Optionally, the first repeated vertices include geometric repeated vertices and attribute repeated vertices;

[0090] In the case where the geometric vertices and the attribute vertices in the manifold mesh have the same connection relationship, the geometric repeated vertices and the attribute repeated vertices share a set of non-manifold structure information, and the non-manifold structure information includes non-manifold identification information and index information; or

[0091] In the case where the geometric vertices and the attribute vertices in the manifold mesh have different connection relationships, the geometric repeated vertices correspond to a first group of non-manifold structure information, and the attribute repeated vertices correspond to a second group of non-manifold structure information, and the first group of non-manifold structure information and the second group of non-manifold structure information both include non-manifold identification information and index information.

[0092] In the embodiment of the present application, the geometric vertices and the attribute vertices in the manifold mesh have the same connection relationship, which means that the geometric vertices and the attribute vertices in the manifold mesh have a one-to-one correspondence. The geometric vertices and the attribute vertices in the manifold mesh have different connection relationships, which means that the geometric vertices and the attribute vertices in the manifold mesh do not have a one-to-one correspondence.

[0093] It should be noted that the attribute vertices in the embodiments of the present application can also be described as UV vertices.

[0094] Optionally, the total code stream of the original grid further includes:

[0095] The third code stream is obtained by encoding the second indication information, and the second indication information is used to indicate whether the geometric vertices and attribute vertices in the manifold mesh have the same connection relationship.

[0096] Here, the second indication information is encoded so that the decoding end can know whether to obtain one set of non-manifold structure information or two sets of non-manifold structure information.

[0097] Optionally, the total code stream of the original grid further includes:

[0098] A fourth code stream is obtained by encoding third indication information of repeated vertices in the manifold mesh, where the third indication information is used to indicate whether geometric information and attribute information of the repeated vertices are repeatedly encoded.

[0099] In the embodiment of the present application, by encoding the third indication information, the decoding end can know whether the geometric information and attribute information of the repeated vertices are repeatedly / multiple times encoded, so that the decoding end can decode and obtain the corresponding repeated vertices.

[0100] Optionally, when the encoding end encodes the connection relationship, geometric information, and attribute information simultaneously, the total code stream of the original grid further includes:

[0101] A fifth code stream is obtained by encoding fourth indication information of vertices in the manifold mesh, where the fourth indication information is used to indicate whether the vertex is a repeated vertex.

[0102] Here, encoding the connection relationship, geometric information and attribute information simultaneously means that the three are encoded in no particular order and are encoded simultaneously.

[0103] Here, by encoding the fourth indication information, the decoding end can determine which are repeated vertices during the decoding process, and then determine which are repeated vertices generated by splitting the non-manifold structure based on the non-manifold identifiers of the repeated vertices.

[0104] Optionally, the total code stream of the original grid further includes:

[0105] The sixth code stream is obtained by encoding the texture map information of the original grid.

[0106] In the embodiment of the present application, a video encoder may be used to encode the texture map information to obtain a sixth code stream, namely a texture map sub-code stream (which may also be described as a texture map code stream).

[0107] The three-dimensional grid coding framework in the embodiment of the present application is shown in FIG3. In the preprocessing step, the repeated points (i.e., the second repeated points) of the original grid are first found and recorded, and the original grid with non-manifold structure is split to obtain a manifold grid, and the repeated points (i.e., the first repeated points) generated by the removal of the non-manifold structure are recorded; then, the connection information of the manifold grid is encoded using the Edgebreaker method to obtain a pattern string, and entropy encoding is performed on it; the geometric information of the manifold grid is encoded, for example, a parallelogram prediction coding method can be used, and the encoding method of the geometric information is not limited here; if the grid has attribute information such as UV coordinates, it can be encoded using methods such as similar triangle prediction coding, and the encoding method of the attribute information is not limited here; when encoding the non-manifold structure information, the indication information of whether there is a non-manifold structure in the grid is first encoded. If there is a non-manifold structure in the grid, the non-manifold identification information of the repeated points and the index information of the repeated points generated by the removal of the non-manifold structure are further encoded according to the coding order of the vertices. The non-manifold identification information for duplicate points is generated by encoding a flag bit for each duplicate vertex in the split manifold mesh to indicate whether the duplicate point is generated by splitting the non-manifold structure. Finally, the multiple streams are mixed to obtain the final output stream (i.e., the total stream).

[0108] The specific implementation of the encoding process is described below:

[0109] As shown in Figure 3, the 3D mesh lossless coding framework of this application is mainly divided into five parts: splitting non-manifold structures in preprocessing, connection relationship coding, geometric information coding, attribute information coding, and non-manifold structure information coding. The following are introduced respectively:

[0110] 1) Splitting non-manifold structures in preprocessing;

[0111] Input: original mesh;

[0112] Output: manifold mesh and duplicate points (including duplicate points in the original mesh and duplicate points generated by removing non-manifold structures);

[0113] The preprocessing step may also include filtering out duplicate points, adding virtual points, and other preprocessing modules required for encoding. For ease of explanation, FIG3 only lists the modules for splitting non-manifold structures targeted by this application.

[0114] Before removing non-manifold structures, first find and record duplicate points in the original input mesh. For example, a hash table can be used to find duplicate points. For example, a hash table is created where the key is the 3D coordinate of the vertex and the value is the number of occurrences of the vertex with that 3D coordinate. If the number of occurrences is greater than 1, it indicates a duplicate point. This is used to find, identify, and record duplicate points in the original mesh.

[0115] Splitting non-manifold structures is mainly divided into two parts: splitting non-manifold edges and splitting non-manifold points.

[0116] The first step in splitting non-manifold edges is to find them. The criterion for determining a non-manifold edge is that an edge exists in three or more triangles at the same time. Specific implementation methods include: establishing a data structure to store the triangles where each edge resides, and finding the non-manifold edge by querying the number of triangles corresponding to the edge; or constructing a Corner Table to establish a correspondence between angles and edges in the mesh, and then finding the non-manifold edge. Specifically, for a manifold mesh, each edge is opposite to at most two angles, and the two opposite angles are called opposite angles. As shown in Figure 4, angle a and angle d are opposite to edge bc, and angle a and angle d are opposite angles; for non-manifold edges, there will be three or more opposite angles. Therefore, non-manifold edges can also be found through the correspondence between angles and edges.

[0117] The second step in splitting a non-manifold edge is to add vertices and modify the connectivity. After finding a non-manifold edge, duplicate vertices are created for each of the two vertices of the non-manifold edge. A triangle t containing the non-manifold edge is selected, and the third vertex of that triangle forms a new triangle t' with the two newly added vertices. This process is then repeated until the non-manifold edge is converted to a manifold edge.

[0118] To split non-manifold points, you first need to build a Corner Table and establish a correspondence between each vertex and the corner of the vertex. Perform two steps for each vertex. In the first step, starting from a corner of the vertex, traverse all the corners adjacent to the corner and forming a fan in sequence, and mark the vertex and the traversed corners as traversed. If after executing the above process, there are still vertices that have not been traversed, then it means that the vertex is a non-manifold point. In the second step, for each non-manifold point, create a duplicate point and modify the connection relationship, connecting the corners that were not traversed in the first step to the newly added duplicate point, and splitting the non-manifold point into two manifold vertices. Repeat this process until all vertices are converted into manifold points.

[0119] In the above process, it is necessary to record the repeated points generated when dismantling the non-manifold structure.

[0120] 2) Connection relationship encoding;

[0121] Input: connectivity of the manifold mesh;

[0122] Output: Encoded connection relationship sub-code stream and vertex encoding order;

[0123] This application uses the Edgebreaker method to encode the connection relationship of a three-dimensional mesh. It represents the connection relationship of the mesh by establishing a Corner Table and uses the CornerTable to traverse all triangles in the mesh to generate the Edgebreaker CLERS pattern string.

[0124] Corner Table is used to represent the relationship between corners, vertices and triangles in a mesh. Before building the Corner Table, you first need to number the corners, traverse the triangles in the order of the triangle patches in the mesh, and number the corners of each triangle in counterclockwise order. If the mesh has f triangle patches, then the mesh will have 3f corners. The advantage of this numbering is that the number of the triangle where the current corner is located can be calculated through the number of the corner, as shown in Formula 1; you can also calculate the numbers of the previous corner c_p and the next corner c_n of the current corner c in the counterclockwise direction, as shown in Formula 2 and Formula 3. i =c / 3 (1)

[0125] Among them, c is the index of the current angle, f i is the number of the triangle where the current angle c is located. " / " is integer division, and the result is rounded down. p =(f i*3)+(c-1)%3 (2)

[0126] Among them, c is the index of the current angle, f i is the number of the triangle where the current angle c is located, "*" is multiplication, and "%" is modulo operation. p =(f i *3)+(c+1)%3 (3)

[0127] Among them, c is the index of the current angle, f i is the serial number of the triangle where the current angle c is located, "*" is multiplication, and "%" is modulo operation.

[0128] The Corner Table consists of four parts: V-table, O-table, U-table, and M-table. The V-table stores the vertex index corresponding to each corner, the O-table stores the diagonal index of each corner, the U-table stores the flags indicating whether each triangle has been traversed during the traversal process, and the M-table stores the flags indicating whether each vertex has been traversed during the traversal process.

[0129] Using the Corner Table, we can construct the relationship shown in Figure 5, where c represents the current corner, cp represents the previous corner of the current corner (counterclockwise), and cn represents the next corner of the current corner. co is the opposite corner of the current corner c, which can be obtained by querying the O table. ct is the serial number of the triangle in which c is located, which can be calculated using Formula 1. cv represents the vertex of the current corner, which can be obtained by querying the V table. cl represents the corner to the left of the current corner c, which is obtained by querying the opposite corner of cp in the O table; cr represents the corner to the right of the current corner c, which is obtained by querying the opposite corner of cn in the O table.

[0130] After using the Corner Table to establish the relationships between corners, vertices, and triangles, we can traverse the mesh in a spiral order to obtain the Edgebreaker CLERS pattern string representing the mesh connectivity. The judgment conditions and traversal rules for the five patterns are shown in Figure 6. The currently traversed angle is x. If the vertex xv corresponding to x has not been visited, the current triangle is in C mode, and the next triangle to be traversed is the triangle where xr is located; otherwise, if the triangle where xl is located has been visited, the current triangle is in L mode, and the next triangle to be traversed is the triangle where xr is located; if the triangle where xr is located has been visited, the current triangle is in R mode, and the next triangle to be traversed is the triangle where xl is located; if the vertex xv has been visited, and the triangles where xl and xr are located have not been visited, then the current triangle is in S mode. At this time, the traversal path will produce two branches. The depth-first traversal principle is adopted. The first triangle traversed is the triangle where xr is located, and the triangle where xl is located is stored in the stack. After waiting for the branch where xr is located to be traversed, the triangle where xl is located is traversed; if the triangles where xl and xr are located have been visited, the mode of the current triangle is E, and the end point of the current traversal path branch has been traversed.

[0131] Randomly select an initial triangle in the mesh, traverse the triangles in the mesh according to the above rules, and generate a CLERS pattern string. When the traversal path ends but there are still untraversed triangles in the mesh, randomly select an untraversed triangle and start the next traversal until all triangles in the mesh have been traversed.

[0132] Entropy coding is used to compress the CLERS pattern string to obtain the final connection information code stream.

[0133] 3) Geometric information encoding;

[0134] Input: Geometric information and connection relationship encoding order of manifold mesh;

[0135] Output: geometric information sub-code stream and geometric information coding order;

[0136] There are many methods for encoding geometric information, such as differential prediction coding, parallelogram prediction coding, and multi-parallelogram prediction coding. The specific encoding method is not emphasized here. For example, consider the parallelogram prediction coding algorithm: Assume that four vertices, a, b, c, and d, form two adjacent triangles in the mesh shown in Figure 7.

[0137] The geometric information of points a, b, and c has been encoded, and the geometric information of point d is yet to be encoded. Then, the predicted value d' of the geometric coordinates of point d can be calculated using Formula 4. d'(x,y,z)=b(x,y,z)+c(x,y,z)-a(x,y,z) (4)

[0138] After obtaining d', the difference Δd between d' and the three-dimensional coordinates of point d is calculated using Formula 5: Δd(x,y,z)=d(x,y,z)-d′(x,y,z) (5)

[0139] Perform entropy coding on Δd to obtain a code stream of geometric information.

[0140] For triangles that cannot be predicted using parallelograms, such as those at the mesh boundary, a difference encoding method is used to encode the geometric information. This method uses the coordinates of adjacent encoded vertices as the predicted values ​​of the current vertex coordinates, and calculates and predicts the residual.

[0141] 4) Attribute information encoding;

[0142] Input: attribute information and connection relationship encoding order of manifold mesh;

[0143] Output: attribute information sub-code stream and encoding order of attribute information;

[0144] 3D mesh attribute information generally includes UV coordinates and normal vectors. Taking UV coordinates as an example, there are many ways to encode UV coordinates, including differential prediction coding, parallelogram prediction coding, and similar triangle prediction coding. The specific encoding methods are not discussed here. The following describes the similar triangle prediction algorithm.

[0145] First, select a triangle in a three-dimensional mesh as the initial triangle, directly encode the UV coordinates of the three vertices of the initial triangle without predicting them, and store the edges of the initial triangle in an edge set. This set can be a data structure that meets certain access criteria. Then take out an edge τ from a set and predict the UV coordinates of the vertex opposite to τ in the next new triangle. And put the two sides of the new triangle except τ into the set. Let the point to be predicted be point C, the two end points of the edge τ be N and P respectively, the vertex opposite to the triangle adjacent to the new triangle through τ be O, and the projection point of C on τ be X. As shown in Figure 8, since the UV coordinates of points N, P, and O are encoded before point C, these three points can be used to predict the UV coordinates of point C. The specific calculation process is as follows:

[0146] Let C uv , X uv , N uv , P uv , O uvThe UV coordinates C of each point are G , X G , N G , P G , O G are the geometric coordinates of each point.

[0147] First calculate the UV coordinate of point X:

[0148] in, are the vector representations of the geometric coordinates between the corresponding points, for example, The vector representation of the geometric coordinates between point N and point P, The vector representation of the geometric coordinates between point N and point C, The vector representation of the geometric coordinates between point N and point X, A vector representation of the geometric coordinates between point X and point C;

[0149] They are vector representations of the UV coordinates between the corresponding points, for example, The vector representation of the UV coordinates between point N and point X, A vector representation of the UV coordinates between point X and point C.

[0150] Calculate the vector, Rotated() means flipping the vector 90 degrees:

[0151] Finally calculate the predicted UV coordinates Pred of point C C :

[0152] in, and Both represent the vectors of the UV coordinates between point C and point O, but in different value representations.

[0153] After obtaining the UV coordinate prediction value, subtract it from the original UV coordinate to obtain the residual value.

[0154] The steps to encode UV coordinates are as follows:

[0155] (1) Select an initial triangle from the connectivity relationship and directly encode the UV coordinates of the three vertices of the initial triangle without prediction. Store the edges of the initial triangle in the edge set.

[0156] (2) Select an edge τ from the set according to the access criteria and encode the UV coordinates of the vertices of the new triangle formed by τ. Using the projection relationship of the triangle from 3D to 2D, calculate the predicted value of the point to be encoded according to the UV coordinate prediction value calculation process described above. Subtract the predicted value from the original UV coordinate value to obtain the residual.

[0157] (3) Add the two edges of the new triangle to the edge set and remove the edge τ at the top of the set. Take the next edge from the set and continue encoding the UV coordinates of the vertices of the triangles adjacent to this edge. Return to step (3) until the UV coordinates of all vertices are encoded.

[0158] Entropy encodes the UV coordinate residual and outputs the UV coordinate code stream.

[0159] 5) Non-manifold structural information encoding;

[0160] Input: information indicating whether there is a non-manifold structure in the grid, non-manifold identification of duplicate points, index information of duplicate points generated by removing non-manifolds, encoding order of geometric information, encoding order of attribute information;

[0161] Output: non-manifold structure information sub-code stream;

[0162] First, encode information indicating whether there is a non-manifold structure in the grid (i.e., the first indication information). This information can be indicated by setting a flag indicating whether there is a non-manifold structure in the grid, or by the number of duplicate points generated by removing the non-manifold structure in the grid. The method of expression is not limited here. Take the flag of whether there is a non-manifold structure as an example: if there is no non-manifold structure in the grid, that is, the number of duplicate points generated by removing the non-manifold is 0, set the flag to 0, and there is no need to encode the non-manifold flag of the duplicate points and the index information of the duplicate points (i.e., the first duplicate vertex) generated by removing the non-manifold; if there is a non-manifold structure in the grid, that is, the number of duplicate points generated by removing the non-manifold is greater than 0, set the flag to 1, and then encode the non-manifold flag of the duplicate points and the index information of the duplicate points generated by removing the non-manifold.

[0163] The duplicate points generated by removing non-manifolds include geometric duplicate points and attribute duplicate points. If we consider whether the geometric vertices and attribute vertices (such as UV vertices) have the same connection relationship, there are two cases: the first case is when the geometric vertices and attribute vertices in the mesh have the same connection relationship, then directly encode the non-manifold identifiers of a group of duplicate points and the index information of the duplicate points generated by removing the non-manifold. The index information can be obtained according to the encoding order of the geometric information and attribute information on the encoding end; the second case is when the geometric vertices and attribute vertices in the mesh have different connection relationships, then encode the non-manifold identifiers of two groups of duplicate points and the index information of the duplicate points generated by removing the non-manifold. The index information can be obtained according to the encoding order of the geometric information and the attribute information on the encoding end. The representation method for the index information of the duplicate points generated by removing the non-manifold structure can be the target vertex index that needs to be merged when restoring the non-manifold structure, or it can be the duplicate point group index: points with the same index belong to the same duplicate point group, that is, they have the same vertex information. The representation method is not limited here.

[0164] The specific implementation is: a flag is set for each repeated vertex in the manifold mesh to indicate whether the point at the current position is a repeated point caused by removing the non-manifold, and the index information of the repeated points caused by removing the non-manifold is recorded; then the binary string sequence obtained by arranging the flags in the corresponding coding order and the index information of the repeated points caused by removing the non-manifold structure are entropy encoded to obtain the non-manifold structure information code stream.

[0165] The non-manifold structure information bitstream can be stored in multiple ways within the total bitstream: one is to store the non-manifold structure information bitstream as a separate sub-codestream; another is to store the geometric non-manifold structure information bitstream within the geometric information sub-codestream, and the attribute non-manifold structure information bitstream within the attribute information sub-codestream; or, alternatively, to store the geometric non-manifold structure information bitstream and the attribute non-manifold structure information bitstream as two sub-codestreams within the total bitstream. The storage method of the non-manifold structure information bitstream within the total bitstream is not emphasized here.

[0166] It should be noted that when encoding the geometric information and attribute information of vertices, the geometric information and attribute information of duplicate points can be skipped, that is, only encoded once, or can not be skipped. Whether the encoding of the geometric information and attribute information of duplicate points is skipped is not emphasized here. However, if the encoding of the geometric information and attribute information of duplicate points is skipped, additional information needs to be transmitted to indicate whether the geometric information and attribute information of the vertex is skipped. Otherwise, the geometric information and attribute information of the skipped coded vertex cannot be decoded, and the duplicate points cannot be found at the decoding end. Specifically, an identifier can be set for each vertex to indicate whether its geometric information and attribute information are skipped for encoding. The representation method is not limited here.

[0167] In the embodiment of the present application, the order of encoding the three-dimensional mesh connection relationship and the vertex information is not limited. It can be that the geometric information, attribute information and non-manifold structure information are encoded at the same time as the connection relationship is encoded; or it can be that after the connection relationship is encoded, the geometric information, attribute information and non-manifold structure information are encoded in sequence according to the encoding order of the connection relationship. However, if the geometric information, attribute information and non-manifold structure information are encoded at the same time as the connection relationship, it is necessary to add information indicating whether the vertex is a duplicate point, so that it can be determined which are duplicate points during the decoding process, and then the duplicate points generated by the removal of the non-manifold can be determined based on the non-manifold identifier of the duplicate point. As for the information indicating whether the vertex is a duplicate point, a duplicate point identifier can be set for each vertex to indicate whether the vertex is a duplicate point. Its representation method is not limited here.

[0168] If the case where the geometric vertex and the UV vertex have the same connection relationship is considered, information indicating whether the geometric vertex and the UV vertex have the same connection relationship must also be encoded. The representation of this information can be a flag indicating whether the geometric vertex and the UV vertex have the same connection relationship. The representation method is not limited here.

[0169] In the above-mentioned scheme of the embodiment of the present application, the encoding end splits the non-manifold structure in the original mesh to obtain a manifold mesh; adds non-manifold identification information to the repeated vertices in the manifold mesh, and determines the index information of the first repeated vertex in the repeated vertices, the non-manifold identification information is used to indicate whether the repeated vertex is a repeated vertex generated when the non-manifold structure is split, and the first repeated vertex is a repeated vertex generated when the non-manifold structure is split; the encoding end encodes the non-manifold identification information and the index information of the first repeated vertex to obtain a first code stream. Through the above-mentioned scheme, the decoding end can restore the non-manifold structure of the original mesh based on the non-manifold identification information and the index information of the first repeated vertex obtained by decoding the first code stream, thereby achieving the purpose of lossless encoding of the original mesh. Since the encoding end only adds non-manifold identification to the repeated points in the manifold mesh when encoding the mesh containing the non-manifold structure, rather than adding non-manifold identification to each vertex in the manifold mesh, it can more efficiently achieve lossless encoding of the three-dimensional mesh.

[0170] As shown in FIG9 , the embodiment of the present application further provides a decoding method, including:

[0171] Step 901: The decoding end decodes the first code stream to obtain decoding information, wherein the decoding information includes non-manifold identification information and index information of the first repeated vertex, wherein the first repeated vertex is a repeated vertex generated by splitting the non-manifold structure in the original mesh, and the non-manifold identification information is used to indicate whether the repeated vertex is a repeated vertex generated when the non-manifold structure is split.

[0172] Step 902: The decoding end restores the non-manifold structure in the original grid according to the decoding information.

[0173] In an embodiment of the present application, the decoding end decodes the first code stream to obtain non-manifold identification information and index information of the first repeated vertex; based on the index information of the first repeated vertex and the non-manifold identification information, the non-manifold structure in the original mesh is restored. In this solution, the non-manifold structure of the original mesh can be restored based on the non-manifold identification information and the index information of the first repeated vertex obtained by decoding the first code stream, thereby achieving the purpose of lossless encoding of the original mesh. Since non-manifold identification is only added to the repeated points in the manifold mesh, rather than to each vertex in the manifold mesh, lossless encoding and decoding of the three-dimensional mesh can be achieved more efficiently.

[0174] Optionally, the decoding information further includes first indication information, where the first indication information is used to indicate whether a non-manifold structure exists in the original grid;

[0175] The decoding end restores the non-manifold structure in the original grid according to the decoded information, including:

[0176] When the first indication information indicates that a non-manifold structure exists in the original mesh, the non-manifold structure in the original mesh is restored according to the index information of the first repeated vertices and the non-manifold identification information.

[0177] Optionally, restoring the non-manifold structure in the original mesh according to the index information of the first repeated vertex and the non-manifold identification information includes:

[0178] reconstructing the manifold mesh according to second target information of the manifold mesh, wherein the second target information is obtained by decoding the second bitstream, and the second target information includes connection relationship, geometric information, and attribute information;

[0179] The non-manifold structure in the original mesh is restored according to the reconstructed manifold mesh, the index information of the first repeated vertex, and the non-manifold identification information.

[0180] In an embodiment of the present application, the decoding end decodes the second code stream to obtain the second target information of the manifold mesh. For example, entropy decoding obtains a CLERS pattern string, and the pattern string is used to reconstruct the connection relationship. The geometric information of the mesh is decoded using methods such as parallelogram inverse prediction, and the UV coordinates in the mesh attribute information are decoded using methods such as similar triangle inverse prediction. When decoding non-manifold structure information, the information indicating whether there is a non-manifold structure in the mesh (i.e., the first indication information) is first decoded. If there is a non-manifold structure in the mesh, the non-manifold identification information of the duplicate points and the index information of the duplicate points generated by disassembling the non-manifold structure are further decoded to obtain the duplicate points. The duplicate points generated by disassembling the non-manifold structure are merged, and the connection relationship is adjusted to restore the non-manifold structure in the mesh, thereby realizing lossless encoding and decoding of meshes containing non-manifold structures.

[0181] Optionally, restoring the non-manifold structure in the original mesh according to the reconstructed manifold mesh, the index information of the first repeated vertex, and the non-manifold identification information includes:

[0182] Restoring the non-manifold structure in the original mesh according to the reconstructed manifold mesh, the index information of the first repeated vertex, the non-manifold identification information, and the fourth indication information;

[0183] The fourth indication information is obtained by decoding the fifth code stream, and the fourth indication information is used to indicate whether a vertex in the manifold mesh is a repeated vertex.

[0184] Here, the fourth indication information obtained by decoding at the decoding end can determine which are repeated vertices when the geometric information, attribute information and connection relationship of the manifold mesh are encoded at the same time, and then determine which are repeated vertices caused by splitting the non-manifold structure based on the non-manifold identifier of the repeated vertices.

[0185] Optionally, the decoding end decodes the second code stream to obtain second target information of the manifold grid, including:

[0186] decoding the second code stream according to third indication information of repeated vertices in the manifold mesh to obtain geometric information and attribute information of the manifold mesh;

[0187] The third indication information is obtained by decoding the fourth code stream, and the third indication information is used to indicate whether the geometric information and attribute information of the repeated vertices are repeatedly encoded.

[0188] In the embodiment of the present application, the decoding end can know whether the geometric information and attribute information of the repeated vertices are repeatedly / multiple times encoded through the third indication information obtained by decoding, so that the decoding end can decode and obtain the corresponding repeated vertices.

[0189] Optionally, the first repeated vertices include geometric repeated vertices and attribute repeated vertices;

[0190] In the case where the geometric vertices and the attribute vertices in the manifold mesh have the same connection relationship, the geometric repeated vertices and the attribute repeated vertices share a set of non-manifold structure information, and the non-manifold structure information includes non-manifold identification information and index information; or

[0191] In the case where the geometric vertices and the attribute vertices in the manifold mesh have different connection relationships, the geometric repeated vertices correspond to a first group of non-manifold structure information, and the attribute repeated vertices correspond to a second group of non-manifold structure information, and the first group of non-manifold structure information and the second group of non-manifold structure information both include non-manifold identification information and index information.

[0192] In the embodiment of the present application, the geometric vertices and the attribute vertices in the manifold mesh have the same connection relationship, which means that the geometric vertices and the attribute vertices in the manifold mesh have a one-to-one correspondence. The geometric vertices and the attribute vertices in the manifold mesh have different connection relationships, which means that the geometric vertices and the attribute vertices in the manifold mesh do not have a one-to-one correspondence.

[0193] Optionally, the method of the embodiment of the present application further includes:

[0194] Decoding the third code stream to obtain second indication information, where the second indication information is used to indicate whether the geometric vertices and the attribute vertices in the manifold mesh have the same connection relationship;

[0195] According to the second indication information, it is determined whether the geometric vertices and the attribute vertices in the manifold mesh have the same connection relationship.

[0196] Optionally, the method of the embodiment of the present application further includes:

[0197] The sixth code stream is decoded to obtain texture map information of the original grid.

[0198] The three-dimensional mesh decoding framework in the embodiment of the present application is shown in Figure 10. Entropy decoding is performed on the connection relationship sub-code stream to obtain a pattern string and reconstruct the connection relationship; the geometric information of the mesh is decoded using the decoding method corresponding to the encoding end; the attribute information of the mesh is decoded using the decoding method corresponding to the encoding end; when decoding the non-manifold structure information, the information on whether there is a non-manifold structure in the mesh is first decoded (i.e., the first indication information). If there is a non-manifold structure in the mesh, the non-manifold identification of the duplicate points and the duplicate point index information generated by removing the non-manifold are further decoded. (Note: The order of decoding the connection relationship of the three-dimensional mesh and decoding the vertex information is not emphasized here, and it can be kept corresponding to the encoding end method.) When recovering the non-manifold structure in the post-processing, the duplicate points generated by removing the non-manifold will be merged, and the connection relationship will be adjusted to restore the non-manifold structure in the mesh. Lossless encoding and decoding of the mesh containing the non-manifold structure is completed. Note that the post-processing step can also include post-processing modules required for correct decoding, such as restoring filtered duplicate points and deleting added virtual vertices. For ease of explanation, Figure 10 only lists the modules for recovering the non-manifold structure targeted by this application.

[0199] The specific implementation of the decoding process is described below:

[0200] As shown in Figure 10, the 3D mesh lossless decoding framework of this application is mainly divided into six parts: connection relationship decoding, geometric information decoding, attribute information decoding, non-manifold structure information decoding, manifold mesh reconstruction, and non-manifold structure recovery in post-processing. The following are introduced separately:

[0201] 1) Connection relationship decoding:

[0202] Input: the connection relationship sub-code stream to be decoded;

[0203] Output: connectivity of the manifold mesh and the decoded vertex order;

[0204] First, decode the connection relationship sub-code stream to obtain a pattern string. Then traverse the pattern string in a certain order (forward or reverse order) and reconstruct the connection relationship based on the corresponding pattern in the string. In addition, the vertex traversal order is output to the geometry information and attribute information decoding module.

[0205] 2) Geometric information decoding:

[0206] Input: Geometric information sub-code stream, decoding order of connection relationship;

[0207] Output: Geometric information of the manifold mesh.

[0208] The decoding process of the mesh geometric coordinates is the inverse of the encoding process: first, entropy decoding is performed to obtain the coordinate prediction residual. Then, based on the decoded triangle, the predicted coordinates of the point to be decoded are predicted according to the parallelogram law. The predicted coordinates are added to the residual value obtained by entropy decoding to obtain the geometric coordinate position to be decoded. The vertex traversal order here is the same as the vertex order of the encoded geometric information. Note that the geometric coordinates of the initial triangle do not use predictive coding, but directly encode their geometric coordinate values. After the geometric coordinates of the triangle are decoded at the decoding end, it is used as the initial triangle to start traversing and decoding the geometric coordinates of the vertices of other triangles. In addition, other decoding methods may also be used here. The specific decoding method is not emphasized, as long as it corresponds to the encoding end.

[0209] 3) Attribute information decoding:

[0210] Input: attribute information code stream to be decoded, decoding order of connection relationship;

[0211] Output: attribute information of manifold mesh reconstruction.

[0212] Taking UV coordinates as an example, the decoding method corresponding to the UV coordinates and the encoding end is not emphasized here. The following describes the decoding process using the similar triangle prediction algorithm.

[0213] The steps to decode UV coordinates are as follows:

[0214] (1) Entropy decoding of UV coordinate code stream.

[0215] (2) Decode the UV coordinates of the three vertices of the initial triangle. The prediction value is not calculated here. The initial triangle directly encodes its UV coordinates instead of encoding the residual. Store the edges of the initial triangle in the edge set.

[0216] (3) Select an edge τ from the set according to the access criteria and decode the UV coordinates of the vertices of the new triangle formed by τ. First, use the 3D to 2D mapping relationship of the triangle to calculate the UV coordinate prediction value of the point to be decoded in the same calculation method as the encoder. Then, add the prediction value to the residual of entropy decoding to obtain the reconstructed UV coordinate.

[0217] (4) Add the two edges of the new triangle to the edge set and remove the edge τ at the top of the set. Take the next edge from the set and continue decoding the UV coordinates of the vertices of the triangles adjacent to the edge. Return to step (3) until the UV coordinates of all vertices are decoded.

[0218] 4) Non-manifold structural information decoding:

[0219] Input: non-manifold structure information sub-code stream, geometric information decoding order, and attribute information decoding order;

[0220] Output: information indicating whether there is a non-manifold structure in the grid, the non-manifold identification of duplicate points, and the index information of duplicate points generated by removing the non-manifold structure.

[0221] First, decode the information indicating whether a non-manifold structure exists in the mesh. For example, if this information is an indicator of whether a non-manifold structure exists, then if the indicator is 0, then there is no need to decode the non-manifold identifiers of the duplicate points and the index information of the duplicate points generated by removing the non-manifold structure, and the subsequent module for recovering the non-manifold structure is skipped. If the indicator is 1, then decode the non-manifold identifiers of the duplicate points and the index information of the duplicate points generated by removing the non-manifold structure. (Note: If considering whether the geometric vertices and UV vertices have the same connection relationship, then determine whether it is necessary to decode the non-manifold identifiers of the geometric vertices and UV vertices and the index information of the duplicate points generated by removing the non-manifold structure separately based on the decoded information indicating whether the geometric vertices and UV vertices have the same connection relationship.)

[0222] The decoding of the non-manifold identifiers of duplicate points and the index information of duplicate points generated by removing the non-manifold structure follows a method similar to that used by the encoder. First, entropy decoding is performed to obtain the non-manifold identifiers of duplicate points. Then, the index information of duplicate points generated by removing the non-manifold structure is decoded and recorded. This information is then output to the non-manifold structure recovery module.

[0223] 5) Reconstruct the manifold mesh:

[0224] Input: connection relationship of manifold mesh, geometric information of manifold mesh, attribute information of manifold mesh;

[0225] Output: manifold mesh;

[0226] The manifold mesh can be directly reconstructed by using the connection relationship, geometric information, and attribute information of the manifold mesh.

[0227] 6) Restore non-manifold structure:

[0228] Input: manifold mesh, non-manifold identifiers of duplicate points, and index information of duplicate points generated by removing non-manifold structures;

[0229] Output: Reconstructed non-manifold mesh

[0230] The recovery process for non-manifold edges and non-manifold points is the same. First, duplicate points are found in the manifold mesh, for example using a hash table or kd-tree. For example, a hash table is created with the key being the vertex coordinates and the value being the number of occurrences of the vertex with those coordinates. This is used to identify and record duplicate points. Then, all duplicate points are traversed and, based on the duplicate point's non-manifold identifier, a determination is made as to whether the current duplicate point is a duplicate point generated by splitting the non-manifold. If the current duplicate point is not a duplicate point generated by splitting the non-manifold, the current vertex is aligned with the current vertex's index, meaning its index is not updated. If the current vertex is a duplicate point generated by splitting the non-manifold, the index information of the duplicate point generated by the splitting non-manifold is used to determine whether it is the target vertex to be merged with the point with the current vertex information. If it is the target vertex to be merged with, the current vertex is aligned with the current vertex's index, meaning its index is not updated. If it is not the target vertex to be merged with, the duplicate point generated by the splitting non-manifold is merged, meaning the current point's index is updated to the index of the target vertex to be merged with. Finally, the geometric information list and the attribute information list are updated, and the index values ​​of the geometric points and attribute points in the connection relationship are updated to obtain the reconstructed non-manifold mesh.

[0231] It should be noted that, if the case of whether the geometric vertices and the attribute vertices have the same connection relationship is considered, when the geometric vertices and the attribute vertices have different connection relationships, the geometric vertices and the attribute vertices respectively perform the above steps to obtain a reconstructed non-manifold mesh.

[0232] If the geometry, attribute, and non-manifold structure information are decoded simultaneously with the connectivity, additional information indicating whether vertices are duplicates must also be decoded. In this case, the decoding process must identify and determine whether duplicate points are due to the removal of the non-manifold structure. The non-manifold structure must then be restored by merging duplicate points, updating the geometry and attribute lists, and updating the indices of the geometric and attribute vertices in the connectivity. After possible post-processing operations such as removing virtual points, the final reconstructed non-manifold mesh is obtained.

[0233] In an embodiment of the present application, the decoding end decodes the first code stream to obtain non-manifold identification information and index information of the first repeated vertex; based on the index information of the first repeated vertex and the non-manifold identification information, the non-manifold structure in the original mesh is restored. In this solution, the non-manifold structure of the original mesh can be restored based on the non-manifold identification information and the index information of the first repeated vertex obtained by decoding the first code stream, thereby achieving the purpose of lossless encoding of the original mesh. Since non-manifold identification is only added to the repeated points in the manifold mesh, rather than to each vertex in the manifold mesh, lossless encoding and decoding of the three-dimensional mesh can be achieved more efficiently.

[0234] The encoding method provided in the embodiment of the present application can be executed by an encoding device. In the embodiment of the present application, the encoding device provided in the embodiment of the present application is described by taking the encoding method executed by the encoding device as an example.

[0235] As shown in FIG11 , an embodiment of the present application further provides an encoding device 1100, including:

[0236] A first acquisition module 1101 is used to split the non-manifold structure in the original mesh to obtain a manifold mesh;

[0237] A first processing module 1102 is configured to add non-manifold identification information to repeated vertices in the manifold mesh, and determine index information of a first repeated vertex among the repeated vertices, wherein the non-manifold identification information is used to indicate whether the repeated vertex is a repeated vertex generated when the non-manifold structure is split, and the first repeated vertex is a repeated vertex generated when the non-manifold structure is split;

[0238] The second acquisition module 1103 is configured to encode the non-manifold identification information and the index information of the first repeated vertex to obtain a first code stream.

[0239] Optionally, the first code stream further includes encoding information of first indication information, where the first indication information is used to indicate whether a non-manifold structure exists in the original grid.

[0240] Optionally, the device of the embodiment of the present application further includes:

[0241] A third acquisition module is used to encode the manifold grid to obtain a second code stream;

[0242] The fourth acquisition module is configured to obtain a total code stream of the original grid according to the first code stream and the second code stream.

[0243] Optionally, the third acquisition module is used to encode the second target information of the manifold grid to obtain the second code stream;

[0244] The second target information includes connection relationship, geometric information and attribute information.

[0245] Optionally, the first repeated vertices include geometric repeated vertices and attribute repeated vertices;

[0246] In the case where the geometric vertices and the attribute vertices in the manifold mesh have the same connection relationship, the geometric repeated vertices and the attribute repeated vertices share a set of non-manifold structure information, and the non-manifold structure information includes non-manifold identification information and index information; or

[0247] In the case where the geometric vertices and the attribute vertices in the manifold mesh have different connection relationships, the geometric repeated vertices correspond to a first group of non-manifold structure information, and the attribute repeated vertices correspond to a second group of non-manifold structure information, and the first group of non-manifold structure information and the second group of non-manifold structure information both include non-manifold identification information and index information.

[0248] Optionally, the total code stream of the original grid further includes:

[0249] The third code stream is obtained by encoding the second indication information, and the second indication information is used to indicate whether the geometric vertices and attribute vertices in the manifold mesh have the same connection relationship.

[0250] Optionally, the total code stream of the original grid further includes:

[0251] A fourth code stream is obtained by encoding third indication information of repeated vertices in the manifold mesh, where the third indication information is used to indicate whether geometric information and attribute information of the repeated vertices are repeatedly encoded.

[0252] Optionally, when the encoding end encodes the connection relationship, geometric information, and attribute information simultaneously, the total code stream of the original grid further includes:

[0253] A fifth code stream is obtained by encoding fourth indication information of vertices in the manifold mesh, where the fourth indication information is used to indicate whether the vertex is a repeated vertex.

[0254] The encoding device of the embodiment of the present application splits the non-manifold structure in the original mesh to obtain a manifold mesh; adds non-manifold identification information to the repeated vertices in the manifold mesh, and determines the index information of the first repeated vertex in the repeated vertices, the non-manifold identification information is used to indicate whether the repeated vertex is a repeated vertex generated when the non-manifold structure is split, and the first repeated vertex is a repeated vertex generated when the non-manifold structure is split; the encoding end encodes the non-manifold identification information and the index information of the first repeated vertex to obtain a first code stream. Through the above scheme, the decoding end can restore the non-manifold structure of the original mesh based on the non-manifold identification information and the index information of the first repeated vertex obtained by decoding the first code stream, thereby achieving the purpose of lossless encoding of the original mesh. Since the encoding end only adds non-manifold identification to the repeated points in the manifold mesh when encoding the mesh containing the non-manifold structure, rather than adding non-manifold identification to each vertex in the manifold mesh, it can achieve lossless encoding of the three-dimensional mesh more efficiently.

[0255] As shown in FIG12 , the embodiment of the present application further provides a decoding device 1200, including:

[0256] a fifth acquisition module 1201, configured to decode the first bitstream to obtain decoding information, the decoding information including non-manifold identification information and index information of a first repeated vertex, the first repeated vertex being a repeated vertex generated by splitting a non-manifold structure in an original mesh, the non-manifold identification information being used to indicate whether the repeated vertex is a repeated vertex generated by splitting the non-manifold structure;

[0257] The second processing module 1202 is configured to restore the non-manifold structure in the original mesh according to the decoded information.

[0258] Optionally, the decoding information further includes first indication information, where the first indication information is used to indicate whether a non-manifold structure exists in the original grid;

[0259] The second processing module is configured to restore the non-manifold structure in the original mesh according to the index information of the first repeated vertices and the non-manifold identification information when the first indication information indicates that the original mesh has a non-manifold structure.

[0260] Optionally, the second processing module includes:

[0261] a reconstruction submodule, configured to reconstruct the manifold mesh according to second target information of the manifold mesh, wherein the second target information is obtained by decoding the second bitstream, and the second target information includes connection relationship, geometric information, and attribute information;

[0262] A restoration submodule is configured to restore the non-manifold structure in the original mesh based on the reconstructed manifold mesh, the index information of the first repeated vertices, and the non-manifold identification information.

[0263] Optionally, the restoration submodule is configured to restore the non-manifold structure in the original mesh according to the reconstructed manifold mesh, the index information of the first repeated vertex, the non-manifold identification information, and the fourth indication information;

[0264] The fourth indication information is obtained by decoding the fifth code stream, and the fourth indication information is used to indicate whether a vertex in the manifold mesh is a repeated vertex.

[0265] Optionally, the device of the embodiment of the present application further includes:

[0266] The sixth acquisition module is configured to decode the second code stream to acquire second target information of the manifold grid.

[0267] Optionally, the sixth acquisition module is configured to decode the second code stream according to third indication information of repeated vertices in the manifold mesh, and acquire geometric information and attribute information of the manifold mesh;

[0268] The third indication information is obtained by decoding the fourth code stream, and the third indication information is used to indicate whether the geometric information and attribute information of the repeated vertices are repeatedly encoded.

[0269] Optionally, the first repeated vertices include geometric repeated vertices and attribute repeated vertices;

[0270] In the case where the geometric vertices and the attribute vertices in the manifold mesh have the same connection relationship, the geometric repeated vertices and the attribute repeated vertices share a set of non-manifold structure information, and the non-manifold structure information includes non-manifold identification information and index information; or

[0271] In the case where the geometric vertices and the attribute vertices in the manifold mesh have different connection relationships, the geometric repeated vertices correspond to a first group of non-manifold structure information, and the attribute repeated vertices correspond to a second group of non-manifold structure information, and the first group of non-manifold structure information and the second group of non-manifold structure information both include non-manifold identification information and index information.

[0272] Optionally, the device of the embodiment of the present application further includes:

[0273] a seventh acquisition module, configured to decode the third code stream to acquire second indication information, where the second indication information is used to indicate whether the geometric vertices and the attribute vertices in the manifold mesh have the same connection relationship;

[0274] A determination module is configured to determine, based on the second indication information, whether the geometric vertices and the attribute vertices in the manifold mesh have the same connection relationship.

[0275] The decoding device of the embodiment of the present application decodes the first code stream to obtain first indication information, non-manifold identification information and index information of the first repeated vertex; when the first indication information indicates that there is a non-manifold structure in the original mesh, the non-manifold structure in the original mesh is restored based on the index information of the first repeated vertex and the non-manifold identification information. In this solution, the non-manifold structure of the original mesh can be restored based on the non-manifold identification information and the index information of the first repeated vertex obtained by decoding the first code stream, thereby achieving the purpose of lossless encoding of the original mesh. Since non-manifold identification is only added to the repeated points in the manifold mesh, rather than adding non-manifold identification to each vertex in the manifold mesh, lossless encoding and decoding of three-dimensional meshes can be achieved more efficiently.

[0276] The encoding device or decoding device in the embodiments of the present application 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 chip. The electronic device can be a terminal or other device other than a terminal. Exemplary other devices can be servers, network attached storage (NAS), etc., which are not specifically limited in the embodiments of the present application.

[0277] The encoding device provided in the embodiment of the present application can implement the various processes implemented in the method embodiment of Figure 2 and achieve the same technical effect. To avoid repetition, it will not be repeated here.

[0278] The decoding device provided in the embodiment of the present application can implement the various processes implemented in the method embodiment of Figure 9 and achieve the same technical effect. To avoid repetition, it will not be repeated here.

[0279] Optionally, as shown in Figure 13, an embodiment of the present application also provides an electronic device 1300, including a processor 1301 and a memory 1302, and the memory 1302 stores a program or instruction that can be run on the processor 1301. When the program or instruction is executed by the processor 1301, the various steps of the above-mentioned encoding method or decoding method embodiment are implemented, and the same technical effect can be achieved. To avoid repetition, it will not be repeated here.

[0280] The embodiment of the present application also provides an encoding device, including a processor and a communication interface, wherein the processor is used to split the non-manifold structure in the original mesh to obtain a manifold mesh; add non-manifold identification information to the repeated vertices in the manifold mesh, and determine the index information of the first repeated vertex in the repeated vertices, wherein the non-manifold identification information is used to indicate whether the repeated vertex is a repeated vertex generated when the non-manifold structure is split, and the first repeated vertex is a repeated vertex generated when the non-manifold structure is split; the non-manifold identification information and the index information of the first repeated vertex are encoded to obtain a first code stream. This device embodiment corresponds to the above-mentioned encoding method embodiment, and each implementation process and implementation method of the above-mentioned method embodiment can be applied to this device embodiment and can achieve the same technical effect.

[0281] The present application also provides a decoding device, including a processor and a communication interface. The processor is configured to decode a first code stream to obtain decoding information, the decoding information including non-manifold identification information and index information of a first repeated vertex, the first repeated vertex being a repeated vertex generated by splitting a non-manifold structure in an original mesh, and the non-manifold identification information being configured to indicate whether the repeated vertex is a repeated vertex generated by splitting the non-manifold structure; and the non-manifold structure in the original mesh is restored based on the decoding information. This device embodiment corresponds to the above-mentioned decoding method embodiment, and each implementation process and implementation method of the above-mentioned method embodiment are applicable to this device embodiment and can achieve the same technical effect.

[0282] Specifically, Figure 14 is a schematic diagram of the hardware structure of an encoding device or decoding device that implements an embodiment of the present application.

[0283] The encoding device or decoding device includes but is not limited to: a radio frequency unit 1401, a network module 1402, an audio output unit 1403, an input unit 1404, a sensor 1405, a display unit 1406, a user input unit 1407, an interface unit 1408, a memory 1409 and at least some of the components of the processor 1410.

[0284] Those skilled in the art will appreciate that the encoding device or decoding device may further include a power supply (such as a battery) to power each component. The power supply may be logically connected to the processor 1410 via a power management system, thereby implementing functions such as charging, discharging, and power consumption management through the power management system. The device structure shown in FIG14 does not constitute a limitation of the device. The device may include more or fewer components than shown, or combine certain components, or have different component arrangements, which will not be described in detail here.

[0285] It should be understood that in an embodiment of the present application, the input unit 1404 may include a graphics processing unit (GPU) 14041 and a microphone 14042, and the graphics processor 14041 processes the image data of a static picture or video obtained by an image capture device (such as a camera) in a video capture mode or an image capture mode. The display unit 1406 may include a display panel 14061, and the display panel 14061 may be configured in the form of a liquid crystal display, an organic light emitting diode, etc. The user input unit 1407 includes a touch panel 14071 and at least one of other input devices 14072. The touch panel 14071 is also called a touch screen. The touch panel 14071 may include two parts: a touch detection device and a touch controller. Other input devices 14072 may include, but are not limited to, a physical keyboard, function keys (such as volume control keys, switch keys, etc.), a trackball, a mouse, and an operating stick, which will not be repeated here.

[0286] In the embodiment of the present application, after receiving downlink data from a network-side device, the radio frequency unit 1401 may transmit the data to the processor 1410 for processing. Furthermore, the radio frequency unit 1401 may send uplink data to the network-side device. Typically, the radio frequency unit 1401 includes, but is not limited to, an antenna, an amplifier, a transceiver, a coupler, a low-noise amplifier, a duplexer, and the like.

[0287] The memory 1409 can be used to store software programs or instructions and various data. The memory 1409 may mainly include a first storage area for storing programs or instructions and a second storage area for storing data, wherein the first storage area may store an operating system, applications or instructions required for at least one function (such as a sound playback function, an image playback function, etc.). In addition, the memory 1409 may include a volatile memory or a non-volatile memory, or the memory 1409 may include both volatile and non-volatile memory. Among them, the non-volatile memory may be a read-only memory (ROM), a programmable read-only memory (PROM), an erasable programmable read-only memory (EPROM), an electrically erasable programmable read-only memory (EEPROM), or a 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 RAM bus random access memory (DRRAM). The memory 1409 in the embodiment of the present application includes but is not limited to these and any other suitable types of memory.

[0288] Processor 1410 may include one or more processing units. Optionally, processor 1410 integrates an application processor and a modem processor. The application processor primarily handles operations related to the operating system, user interface, and application programs, while the modem processor primarily processes wireless communication signals, such as a baseband processor. It is understood that the modem processor may not be integrated into processor 1410.

[0289] Optionally, when the device is an encoding device:

[0290] Processor 1410, configured to split the non-manifold structure in the original mesh to obtain a manifold mesh;

[0291] The encoder adds non-manifold identification information to repeated vertices in the manifold mesh, and determines index information of a first repeated vertex among the repeated vertices, wherein the non-manifold identification information is used to indicate whether the repeated vertex is a repeated vertex generated when the non-manifold structure is split, and the first repeated vertex is a repeated vertex generated when the non-manifold structure is split;

[0292] The encoding end encodes the non-manifold identification information and the index information of the first repeated vertex to obtain a first code stream.

[0293] Optionally, the first code stream further includes encoding information of first indication information, where the first indication information is used to indicate whether a non-manifold structure exists in the original grid.

[0294] Optionally, the processor 1410 is further configured to:

[0295] Encoding the manifold grid to obtain a second code stream;

[0296] A total code stream of the original grid is obtained according to the first code stream and the second code stream.

[0297] Optionally, the processor 1410 is further configured to:

[0298] encoding the second target information of the manifold grid to obtain the second code stream;

[0299] The second target information includes connection relationship, geometric information and attribute information.

[0300] Optionally, the first repeated vertices include geometric repeated vertices and attribute repeated vertices;

[0301] In the case where the geometric vertices and the attribute vertices in the manifold mesh have the same connection relationship, the geometric repeated vertices and the attribute repeated vertices share a set of non-manifold structure information, and the non-manifold structure information includes non-manifold identification information and index information; or

[0302] In the case where the geometric vertices and the attribute vertices in the manifold mesh have different connection relationships, the geometric repeated vertices correspond to a first group of non-manifold structure information, and the attribute repeated vertices correspond to a second group of non-manifold structure information, and the first group of non-manifold structure information and the second group of non-manifold structure information both include non-manifold identification information and index information.

[0303] Optionally, the total code stream of the original grid further includes:

[0304] The third code stream is obtained by encoding the second indication information, and the second indication information is used to indicate whether the geometric vertices and attribute vertices in the manifold mesh have the same connection relationship.

[0305] Optionally, the total code stream of the original grid further includes:

[0306] A fourth code stream is obtained by encoding third indication information of repeated vertices in the manifold mesh, where the third indication information is used to indicate whether geometric information and attribute information of the repeated vertices are repeatedly encoded.

[0307] Optionally, when the encoding end encodes the connection relationship, geometric information, and attribute information simultaneously, the total code stream of the original grid further includes:

[0308] A fifth code stream is obtained by encoding fourth indication information of vertices in the manifold mesh, where the fourth indication information is used to indicate whether the vertex is a repeated vertex.

[0309] Optionally, when the above-mentioned device is a decoding device:

[0310] Processor 1410 is configured to decode a first bitstream to obtain decoded information, the decoded information including non-manifold identification information and index information of a first repeated vertex, the first repeated vertex being a repeated vertex generated by splitting a non-manifold structure in an original mesh, the non-manifold identification information being used to indicate whether the repeated vertex is a repeated vertex generated by splitting the non-manifold structure, and the first indication information being used to indicate whether a non-manifold structure exists in the original mesh;

[0311] The decoding end restores the non-manifold structure in the original grid according to the decoding information.

[0312] Optionally, the decoding information further includes first indication information, where the first indication information is used to indicate whether a non-manifold structure exists in the original grid;

[0313] The processor 1410 is further configured to:

[0314] When the first indication information indicates that a non-manifold structure exists in the original mesh, the non-manifold structure in the original mesh is restored according to the index information of the first repeated vertices and the non-manifold identification information.

[0315] reconstructing the manifold mesh according to second target information of the manifold mesh, wherein the second target information is obtained by decoding the second bitstream, and the second target information includes connection relationship, geometric information, and attribute information;

[0316] The non-manifold structure in the original mesh is restored according to the reconstructed manifold mesh, the index information of the first repeated vertex, and the non-manifold identification information.

[0317] Optionally, the processor 1410 is further configured to:

[0318] Restoring the non-manifold structure in the original mesh according to the reconstructed manifold mesh, the index information of the first repeated vertex, the non-manifold identification information, and the fourth indication information;

[0319] The fourth indication information is obtained by decoding the fifth code stream, and the fourth indication information is used to indicate whether a vertex in the manifold mesh is a repeated vertex.

[0320] Optionally, the processor 1410 is further configured to:

[0321] The second code stream is decoded to obtain second target information of the manifold grid.

[0322] Optionally, the processor 1410 is further configured to:

[0323] decoding the second code stream according to third indication information of repeated vertices in the manifold mesh to obtain geometric information and attribute information of the manifold mesh;

[0324] The third indication information is obtained by decoding the fourth code stream, and the third indication information is used to indicate whether the geometric information and attribute information of the repeated vertices are repeatedly encoded.

[0325] Optionally, the first repeated vertices include geometric repeated vertices and attribute repeated vertices;

[0326] In the case where the geometric vertices and the attribute vertices in the manifold mesh have the same connection relationship, the geometric repeated vertices and the attribute repeated vertices share a set of non-manifold structure information, and the non-manifold structure information includes non-manifold identification information and index information; or

[0327] In the case where the geometric vertices and the attribute vertices in the manifold mesh have different connection relationships, the geometric repeated vertices correspond to a first group of non-manifold structure information, and the attribute repeated vertices correspond to a second group of non-manifold structure information, and the first group of non-manifold structure information and the second group of non-manifold structure information both include non-manifold identification information and index information.

[0328] Optionally, the processor 1410 is further configured to:

[0329] Decoding the third code stream to obtain second indication information, where the second indication information is used to indicate whether the geometric vertices and the attribute vertices in the manifold mesh have the same connection relationship;

[0330] According to the second indication information, it is determined whether the geometric vertices and the attribute vertices in the manifold mesh have the same connection relationship.

[0331] In an embodiment of the present application, the non-manifold structure in the original mesh is split to obtain a manifold mesh; non-manifold identification information is added to the repeated vertices in the manifold mesh, and the index information of the first repeated vertex in the repeated vertices is determined, the non-manifold identification information is used to indicate whether the repeated vertex is a repeated vertex generated when the non-manifold structure is split, and the first repeated vertex is a repeated vertex generated when the non-manifold structure is split; the encoding end encodes the non-manifold identification information and the index information of the first repeated vertex to obtain a first code stream. Through the above scheme, the decoding end can restore the non-manifold structure of the original mesh based on the non-manifold identification information and the index information of the first repeated vertex obtained by decoding the first code stream, thereby achieving the purpose of lossless encoding of the original mesh. Since the encoding end only adds non-manifold identification to the repeated points in the manifold mesh when encoding the mesh containing the non-manifold structure, rather than adding non-manifold identification to each vertex in the manifold mesh, it can achieve lossless encoding of the three-dimensional mesh more efficiently.

[0332] An embodiment of the present application also provides a readable storage medium, on which a program or instruction is stored. When the program or instruction is executed by a processor, the various processes of the above-mentioned encoding method or decoding method embodiment are implemented, and the same technical effect can be achieved. To avoid repetition, it will not be repeated here.

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

[0334] An embodiment of the present application further provides a chip, which includes a processor and a communication interface, wherein the communication interface is coupled to the processor, and the processor is used to run programs or instructions to implement the various processes of the above-mentioned encoding method or decoding method embodiment, and can achieve the same technical effect. To avoid repetition, it will not be repeated here.

[0335] It should be understood that the chip mentioned in the embodiments of the present application can also be called a system-level chip, a system chip, a chip system or a system-on-chip chip, etc.

[0336] An embodiment of the present application further provides a computer program / program product, which is stored in a storage medium. The computer program / program product is executed by at least one processor to implement the various processes of the above-mentioned encoding method or decoding method embodiment, and can achieve the same technical effect. To avoid repetition, it will not be repeated here.

[0337] An embodiment of the present application further provides a coding and decoding system, including: a coding device or a decoding device, wherein the coding device can be used to execute the steps of the coding method described above, and the decoding device can be used to execute the steps of the decoding method described above.

[0338] It should be noted that, in this article, the terms "comprise", "include" or any other variants thereof are intended to cover non-exclusive inclusion, so that a process, method, article or device comprising a series of elements includes not only those elements, but also other elements not explicitly listed, or also includes elements inherent to such process, method, article or device. In the absence of further restrictions, an element defined by the statement "comprises a ..." does not exclude the presence of other identical elements in the process, method, article or device comprising the element. In addition, it should be noted that the scope of the methods and devices in the embodiments of the present application is not limited to performing functions in the order shown or discussed, and may also include performing functions in a substantially simultaneous manner or in the opposite order according to the functions involved. For example, the described method may be performed in an order different from that described, and various steps may also be added, omitted, or combined. In addition, the features described with reference to certain examples may be combined in other examples.

[0339] Through the description of the above implementation methods, those skilled in the art can clearly understand that the above-mentioned embodiment methods can be implemented by means of software plus the necessary general hardware platform, and of course 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 the present application, or the part that contributes to the relevant technology, can be embodied in the form of a computer software product, which is stored in a storage medium (such as ROM / RAM, magnetic disk, optical disk), including a number of instructions for enabling a terminal (which can be a mobile phone, computer, server, air conditioner, or network equipment, etc.) to execute the methods described in each embodiment of the present application.

[0340] The embodiments of the present application are described above in conjunction with the accompanying drawings, but the present application is not limited to the above-mentioned specific implementation methods. The above-mentioned specific implementation methods are merely illustrative and not restrictive. Under the guidance of this application, ordinary technicians in this field can also make many forms without departing from the purpose of this application and the scope of protection of the claims, all of which are within the protection of this application.

Claims

1. A coding method, comprising: The encoder splits the non-manifold structure in the original grid to obtain a manifold grid; The encoding end adds non-manifold identification information to the repeated vertices in the manifold mesh, and determines index information of a first repeated vertex among the repeated vertices, wherein the non-manifold identification information is used to indicate whether the repeated vertex is a repeated vertex generated when the non-manifold structure is split, and the first repeated vertex is a repeated vertex generated when the non-manifold structure is split; The encoding end encodes the non-manifold identification information and the index information of the first repeated vertex to obtain a first code stream.

2. The method according to claim 1, wherein: The first code stream further includes encoding information of first indication information, where the first indication information is used to indicate whether there is a non-manifold structure in the original grid.

3. The method according to claim 1 or 2, wherein: The method further comprises: The encoding end encodes the manifold grid to obtain a second code stream; The encoding end obtains a total bitstream of the original grid according to the first bitstream and the second bitstream.

4. The method according to claim 3, wherein: The encoding end encodes the manifold grid to obtain a second code stream, including: The encoding end encodes the second target information of the manifold grid to obtain the second code stream; The second target information includes connection relationship, geometric information and attribute information.

5. The method according to any one of claims 1 to 4, wherein: The first repeated vertices include geometric repeated vertices and attribute repeated vertices; In the case where the geometric vertices and the attribute vertices in the manifold mesh have the same connection relationship, the geometric repeated vertices and the attribute repeated vertices share a set of non-manifold structure information, and the non-manifold structure information includes non-manifold identification information and index information; or, In the case where the geometric vertices and the attribute vertices in the manifold mesh have different connection relationships, the geometric repeated vertices correspond to a first group of non-manifold structure information, and the attribute repeated vertices correspond to a second group of non-manifold structure information, and the first group of non-manifold structure information and the second group of non-manifold structure information both include non-manifold identification information and index information.

6. The method according to claim 5, wherein: The total code stream of the original grid also includes: The third code stream is obtained by encoding the second indication information, and the second indication information is used to indicate whether the geometric vertices and attribute vertices in the manifold mesh have the same connection relationship.

7. The method according to any one of claims 1 to 6, wherein: The total code stream of the original grid also includes: A fourth code stream, wherein the fourth code stream is obtained by encoding third indication information of repeated vertices in the manifold mesh, wherein the third indication information is used to indicate whether the geometric information and attribute information of the repeated vertices are repeated. coding.

8. The method according to claim 4, wherein: In the case where the encoding end encodes the connection relationship, geometric information, and attribute information simultaneously, the total bitstream of the original grid further includes: A fifth code stream, wherein the fifth code stream is obtained by encoding fourth indication information of vertices in the manifold mesh, wherein the fourth indication information is used to indicate whether the vertex is a repeated vertex.

9. A decoding method, comprising: The decoding end decodes the first code stream to obtain decoding information, wherein the decoding information includes non-manifold identification information and index information of a first repeated vertex, wherein the first repeated vertex is a repeated vertex generated by splitting a non-manifold structure in an original mesh, and the non-manifold identification information is used to indicate whether the repeated vertex is a repeated vertex generated when the non-manifold structure is split; The decoding end restores the non-manifold structure in the original grid according to the decoding information.

10. The method according to claim 9, wherein: The decoded information further includes first indication information, where the first indication information is used to indicate whether there is a non-manifold structure in the original grid; The decoding end restores the non-manifold structure in the original grid according to the decoded information, including: When the first indication information indicates that a non-manifold structure exists in the original mesh, the non-manifold structure in the original mesh is restored according to the index information of the first repeated vertices and the non-manifold identification information.

11. The method according to claim 9 or 10, wherein: Restoring the non-manifold structure in the original mesh according to the index information of the first repeated vertices and the non-manifold identification information includes: Reconstructing the manifold mesh according to second target information of the manifold mesh, wherein the second target information is obtained by decoding the second bitstream, and the second target information includes connection relationship, geometric information, and attribute information; The non-manifold structure in the original mesh is restored according to the reconstructed manifold mesh, the index information of the first repeated vertices, and the non-manifold identification information.

12. The method according to claim 11, wherein: Restoring the non-manifold structure in the original mesh according to the reconstructed manifold mesh, the index information of the first repeated vertices, and the non-manifold identification information, comprising: Restoring the non-manifold structure in the original mesh according to the reconstructed manifold mesh, the index information of the first repeated vertices, the non-manifold identification information and the fourth indication information; The fourth indication information is obtained by decoding the fifth code stream, and the fourth indication information is used to indicate whether the vertices in the manifold mesh are repeated vertices.

13. The method according to claim 11 or 12, wherein: Also includes: The decoding end decodes the second code stream to obtain second target information of the manifold grid.

14. The method according to claim 13, wherein: The decoding end decodes the second code stream to obtain second target information of the manifold grid, including: Decoding the second bitstream according to third indication information of repeated vertices in the manifold mesh to obtain geometric information and attribute information of the manifold mesh; The third indication information is obtained by decoding the fourth bit stream, and the third indication information is used to indicate Whether the geometric information and attribute information of the repeated vertices are repeatedly encoded.

15. The method according to any one of claims 9 to 14, wherein: The first repeated vertices include geometric repeated vertices and attribute repeated vertices; In the case where the geometric vertices and the attribute vertices in the manifold mesh have the same connection relationship, the geometric repeated vertices and the attribute repeated vertices share a set of non-manifold structure information, and the non-manifold structure information includes non-manifold identification information and index information; or, In the case where the geometric vertices and the attribute vertices in the manifold mesh have different connection relationships, the geometric repeated vertices correspond to a first group of non-manifold structure information, and the attribute repeated vertices correspond to a second group of non-manifold structure information, and the first group of non-manifold structure information and the second group of non-manifold structure information both include non-manifold identification information and index information.

16. The method according to claim 15, wherein: Also includes: Decoding the third bitstream to obtain second indication information, where the second indication information is used to indicate whether the geometric vertices and the attribute vertices in the manifold mesh have the same connection relationship; According to the second indication information, it is determined whether the geometric vertices and the attribute vertices in the manifold mesh have the same connection relationship.

17. An encoding device, comprising: The first acquisition module is used to split the non-manifold structure in the original grid to obtain a manifold grid; A first processing module, used for adding non-manifold identification information to repeated vertices in the manifold mesh, and determining index information of a first repeated vertex among the repeated vertices, wherein the non-manifold identification information is used for indicating whether the repeated vertex is a repeated vertex generated when the non-manifold structure is split, and the first repeated vertex is a repeated vertex generated when the non-manifold structure is split; The second acquisition module is used to encode the non-manifold identification information and the index information of the first repeated vertex to obtain a first code stream.

18. A decoding device, comprising: a fifth acquisition module, configured to decode the first code stream to obtain decoding information, wherein the decoding information includes non-manifold identification information and index information of a first repeated vertex, wherein the first repeated vertex is a repeated vertex generated by splitting a non-manifold structure in an original mesh, and the non-manifold identification information is used to indicate whether the repeated vertex is a repeated vertex generated when the non-manifold structure is split; The second processing module is used to restore the non-manifold structure in the original grid according to the decoded information.

19. An electronic device comprising a processor and a memory, wherein the memory stores a program or instruction that can be run on the processor, and when the program or instruction is executed by the processor, the steps of the encoding method as described in any one of claims 1 to 8 are implemented, or the steps of the decoding method as described in any one of claims 9 to 16 are implemented.

20. A readable storage medium storing a program or instruction, wherein the program or instruction, when executed by a processor, implements the steps of the encoding method according to any one of claims 1 to 8, or implements the steps of the decoding method according to any one of claims 9 to 16.

Citation Information

Patent Citations

  • Grid coding method, grid decoding method and related equipment

    CN117915105A

  • Method and apparatus for encoding / decoding 3D mesh information including stitching information

    KR1020080066216A

  • Method and apparatus for encoding / decoding 3D mesh information including stitching information

    US20090278844A1

  • Methods and apparatus for the efficient compression of non-manifold polygonal meshes

    US6452596B1