Coding method, decoding method, device and equipment

Through the non-manifold structure splitting and identification processing of the three-dimensional grid, the problems of lossless coding and bit overhead in the prior art are solved, and efficient three-dimensional grid coding and decoding are realized.

CN119228915APending Publication Date: 2024-12-31VIVO MOBILE COMM CO LTD
View PDF 0 Cites 2 Cited by

Patent Information

Application Number
CN202310802552.3
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Filing Date
2023-06-30
Publication Date
2024-12-31

AI Technical Summary

Technical Problem

When encoding a three-dimensional grid, the non-manifold structure needs to be split into a manifold structure, resulting in the decoding terminal outputting more points than the original grid input, and lossless encoding cannot be achieved. Setting the identification for each vertex causes a large bit overhead, affecting the encoding efficiency.

Method used

By splitting the non-manifold structure in the original mesh, a manifold mesh is obtained, and only non-manifold identification information is added to the repeated vertices in the manifold mesh, the index information of the first repeated vertices is determined, and the process of performing the following: Encoding to indicate whether the vertex is a duplicate vertex generated by non-manifold structure splitting, reducing encoding redundancy.

Benefits of technology

Lossless encoding of three-dimensional grids is realized, which reduces bit overhead and improves coding efficiency, so that the decoding end can accurately restore the non-manifold structure of the original grid.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119228915A_ABST
    Figure CN119228915A_ABST
Patent Text Reader

Abstract

The invention discloses a coding method, a decoding method, a device and equipment, and belongs to the technical field of coding and decoding, and the coding method comprises the steps that a coding end carries out the splitting of a non-manifold structure in an original grid, and obtains a manifold grid; the coding end adds non-manifold identification information to repetitive vertexes in the manifold grid and determines index information of a first repetitive vertex in the repetitive vertexes, the non-manifold identification information being used for indicating whether the repetitive vertexes are repetitive vertexes generated when the non-manifold structure is split, and the index information being used for indicating whether the repetitive vertexes are not the repetitive vertexes generated when the non-manifold structure is split. The first repetitive vertex is a repetitive vertex generated when the non-manifold structure is split; and the encoding end encodes the non-manifold identification information and the index information of the first repeated vertex to obtain a first code stream.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] 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

[0002] 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 the related art, in order to achieve lossless encoding of three-dimensional meshes, when encoding three-dimensional meshes containing non-manifold structures, it is necessary to set an identifier for each vertex in the manifold mesh obtained by splitting the three-dimensional mesh except for the manifold structure 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. Summary of the invention

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

[0004] In a first aspect, a coding method is provided, comprising:

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

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

[0007] 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 there is a non-manifold structure in the original mesh.

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

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

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

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

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

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

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

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

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

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

[0018] In a fifth aspect, a coding device is provided, comprising a processor and a communication interface, wherein the processor is used to split a non-manifold structure in an original mesh to obtain a manifold mesh; add non-manifold identification information to 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; encode the non-manifold identification information and the index information of the first repeated vertex to obtain a first code stream.

[0019] 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 comprising non-manifold identification information and index information of a first repeated vertex, 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; according to the decoding information, the non-manifold structure in the original mesh is restored.

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

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

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

[0023] 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 a program or instruction to implement the method described in the first aspect, or to implement the method described in the second aspect.

[0024] In the eleventh aspect, a computer program / program product is provided, wherein the computer program / program product is stored in a storage medium, and the computer program / program product 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.

[0025] In an embodiment of the present application, the encoding end performs a splitting process on 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. Because 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, instead of adding non-manifold identification to each vertex in the manifold mesh, it can more efficiently achieve lossless encoding of the three-dimensional mesh. BRIEF DESCRIPTION OF THE DRAWINGS

[0026] Figure 1 A diagram showing the five modes of Edgebreaker encoding methods;

[0027] Figure 2 A schematic diagram showing a flow chart of an encoding method according to an embodiment of the present application;

[0028] Figure 3 A schematic diagram showing a three-dimensional grid lossless coding framework according to an embodiment of the present application;

[0029] Figure 4 A schematic diagram showing the correspondence between edges and corners in a manifold grid according to an embodiment of the present application;

[0030] Figure 5 A schematic diagram showing the angle relationship in the embodiment of the present application;

[0031] Figure 6 A schematic diagram showing traversal rules of five modes of the Edgebreaker encoding method in an embodiment of the present application;

[0032] Figure 7 A schematic diagram showing two adjacent triangles in a grid according to an embodiment of the present application;

[0033] Figure 8A schematic diagram showing UV coordinate prediction based on three-dimensional to two-dimensional projection in an embodiment of the present application;

[0034] Fig. 9 A schematic diagram showing a flow chart of a decoding method according to an embodiment of the present application;

[0035] Fig.10 A schematic diagram showing a three-dimensional grid lossless decoding framework according to an embodiment of the present application;

[0036] Fig.11 A schematic diagram showing a module of an encoding device according to an embodiment of the present application;

[0037] Fig.12 A schematic diagram showing a module of a decoding device according to an embodiment of the present application;

[0038] Fig.13 A structural block diagram showing an electronic device according to an embodiment of the present application;

[0039] Fig.14 A structural block diagram showing an encoding device or a decoding device according to an embodiment of the present application. DETAILED DESCRIPTION

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

[0041] The terms "first", "second", etc. of the present 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 one type, and the number of objects is not limited, for example, the first object can be one or more. In addition, "or" in the present application represents at least one of the connected objects. For example, "A or B" covers three schemes, namely, Scheme 1: including A but not including B; Scheme 2: including B but not including A; Scheme 3: including both A and B. The character " / " generally indicates that the objects associated with each other are in an "or" relationship.

[0042] The term "indication" in this application can be 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, operations to be performed, or request results in the sent indication; an indirect indication can be understood as the receiver determining the corresponding information according to the indication sent by the sender, or making a judgment and determining the operation to be performed or the request result according to the judgment result.

[0043] 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 above-mentioned systems and radio technologies as well as other systems and radio technologies. The following description describes a new radio (NR) system for example purposes, and NR terms are used in most of the following descriptions, but these technologies can also be applied to systems other than NR systems, such as 6th Generation (6G) communication systems.

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

[0045] 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 a new generation of digital media after audio, images, and videos. Three-dimensional grids and point clouds are two commonly used ways to represent three-dimensional models. Compared with traditional multimedia such as images and videos, three-dimensional grid models have stronger interactivity and realism, making them more and more widely used in various fields such as commerce, manufacturing, construction, education, medicine, entertainment, art, and military.

[0046] With the increasing demand for visual effects of 3D mesh models and the emergence of more mature 3D scanning technologies and 3D modeling software, the data size and complexity of 3D mesh models obtained by 3D scanning equipment or 3D modeling software are also growing rapidly. Therefore, how to efficiently compress 3D mesh data is the key to conveniently transmit, store and process 3D mesh data.

[0047] 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 facets in the mesh; geometric information is the 3D coordinates of all vertices in the mesh; attribute information records other information attached to the mesh, such as normal vectors, texture coordinates (i.e. UV coordinates), and colors. The compression of 3D mesh data is often based on the compression of 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.

[0048] Draco is a library for compressing and decompressing 3D geometric meshes and point clouds. It aims to improve the storage and transmission of 3D graphics and greatly accelerate the encoding, transmission and decoding of 3D data. Draco supports the compression of 3D mesh geometry information, connection information and attribute information. Draco supports lossy mode and near-lossless mode. In addition, the Edgebreaker compression method used by Draco to encode connection relationships is currently one of the most efficient methods for encoding 3D mesh connection information.

[0049] However, Edgebreaker requires the mesh to be encoded to be a manifold structure. For meshes with non-manifold structures, Draco must split them into manifold structures to encode them correctly. However, Draco does not merge the split structures at the decoding end, which makes the mesh output by the decoding end have more split points than the original mesh input by the encoding end. This will cause Draco to be unable to losslessly encode such meshes with non-manifold structures.

[0050] The Moving Pictures Experts Group (MPEG), an international standards organization in the video image field, is developing a new dynamic 3D mesh compression standard (Video-based Dynamic Mesh Coding, V-DMC). Currently, it also chooses to use an Edgebreaker-based solution when encoding static 3D meshes and temporarily reuses the Draco codec. At the same time, MPEG is also trying to implement the Edgebreaker-based 3D mesh codec provided by MPEG to achieve compression of 3D mesh geometry information, connection information, and attribute information. Since Edgebreaker requires the mesh to be encoded to be a manifold structure, the currently proposed solution will split the 3D mesh with a non-manifold structure into a manifold structure and then encode it. Therefore, for the lossless mode, the Edgebreaker-based 3D mesh codec provided by MPEG will record and encode the index information of duplicate points generated by the removal of non-manifolds at the encoding end, and add an identifier to each vertex of the manifold mesh after the removal to indicate whether it is a duplicate point generated by the removal of non-manifolds, so that the non-manifold structure of the original 3D mesh can be restored at the decoding end based on the identifier and the index information of duplicate points generated by the removal of non-manifolds 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 information and attribute information, in the decoded 3D mesh, only the duplicate points may be the points newly added due to the removal of non-manifolds. If a flag is set for each vertex to determine whether it is a point generated by the removal of non-manifolds, it will cause certain coding redundancy.

[0051] The above two solutions are three-dimensional mesh compression solutions based on Edgebreaker, and both have the problem of splitting the non-manifold structure that may exist in the input mesh. For lossless compression, it is necessary to restore the non-manifold structure that may exist in the original three-dimensional mesh at the decoding end. Therefore, a new lossless encoding method based on Edgebreaker that can achieve non-manifold three-dimensional mesh is proposed, which is of great significance for achieving lossless encoding of non-manifold meshes more efficiently.

[0052] The Edgebreaker-based 3D mesh compression tool currently provided by MPEG encodes and stores the connection information, geometric information and attribute information of the 3D mesh separately. The core module, i.e. the module for encoding the connection information, uses the Edgebreaker algorithm. Conventional compression methods are used for encoding the geometric information and attribute information, i.e. data quantization, predictive compression (e.g. parallelogram prediction) and entropy coding. Since the tool uses a connection relationship driven coding method, the coding of geometric information and attribute information will follow the coding order of the connection information. In this way, the vertex order of the connection relationship coding is implicitly included in the vertex order of the geometric information to avoid the separate transmission of the vertex order of the connection relationship coding, thereby saving this part of the bit overhead.

[0053] The Edgebreaker method is a 3D mesh connection relationship encoding method with the advantages of good compression performance, easy implementation, and the ability to provide an upper limit for compression ratio. The Edgebreaker method itself only describes the compression method of 3D mesh connection information, and the compression of 3D meshes can only be achieved through geometric information compression and entropy coding.

[0054] Edgebreaker encoding technology can compress triangular meshes that are homeomorphic to the sphere to 2 bits or less per triangle. 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 marked according to the mode it is in, and a CLERS string is generated to obtain a compact representation of the mesh connectivity.

[0055] The five modes of the Edgebreaker method are: Figure 1As shown. The Edgebreaker method divides the mesh into a traversed part and an untraversed part, and the boundary between the two parts is called the active boundary. In the Edgebreaker encoding process, the triangle to be traversed is accessed through the active edge on the active boundary, and the mode to be used is selected according to the relationship between the active edge and the triangle in which it is located. The other vertex in the triangle where the active edge is located is called the third vertex. If the third vertex is not on the active boundary, the current triangle is marked as C mode. If the third vertex is on the active boundary and is the next vertex of the current active edge vertex in counterclockwise order, the current triangle is marked as R mode. If the third vertex is on the active boundary and is the previous vertex of the current active edge vertex in counterclockwise order, the current triangle is marked as L mode. If the third vertex is on the active boundary and is both the previous vertex of the current active edge vertex and the next vertex of the current active edge in counterclockwise order, the current triangle is marked as E mode. If the third vertex is on the active boundary, but is neither the previous vertex of the current active edge vertex nor the next vertex of the current active edge in counterclockwise order, the current triangle is marked as S mode.

[0056] 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 obtain higher compression efficiency.

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

[0058] like Figure 2 As shown, the embodiment of the present application provides an encoding method, including:

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

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

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

[0062] The non-manifold edge mentioned above refers to an edge in the mesh that exists in at least three triangles at the same time.

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

[0064] First, build a corner table to establish the correspondence between each vertex in the original mesh and the corner of the vertex. Starting from a corner corresponding to a vertex, traverse all corners adjacent to the corner and forming a fan, and mark the vertex and the traversed corners as traversed. If there are still untraversed corners of a vertex after executing the above process, it means that the vertex is a non-manifold point.

[0065] Optionally, in an embodiment of the present application, if each edge of a 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.

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

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

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

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

[0070] 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

[0071] 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 first duplicate vertices mentioned above). 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 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.

[0072] In an embodiment of the present application, the encoding end performs a splitting process on 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. Because 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, instead of adding non-manifold identification to each vertex in the manifold mesh, it can more efficiently achieve lossless encoding of the three-dimensional mesh.

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

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

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

[0076] The encoding end obtains a total bitstream of the original grid according to the first bitstream and the second bitstream.

[0077] In an embodiment of the present application, when restoring a non-manifold structure, the decoding end requires, in addition to the non-manifold identification information and the index information of the first repeated vertex, the above-mentioned manifold mesh. 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.

[0078] Optionally, the encoding end encodes the manifold grid to obtain a second bitstream, including:

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

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

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

[0082] 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, and the pattern string can be compressed using entropy coding to obtain a connection relationship sub-code stream (which can also be described as a connection relationship code stream); the geometric information of the grid can be encoded using methods such as parallelogram prediction to obtain a geometric information sub-code stream (which can also be described as a geometric information code stream); the UV coordinates in the attribute information of the grid can be encoded using methods such as similar triangle prediction to obtain an attribute information sub-code stream (which can also be described as an attribute information code stream). Based on the connection relationship sub-code stream, the geometric information sub-code stream and the attribute information sub-code stream, the above-mentioned second code stream is obtained.

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

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

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

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

[0087] 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,

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

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

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

[0091] Optionally, the total bitstream of the original grid further includes:

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

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

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

[0095] A 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 geometric information and attribute information of the repeated vertices are repeatedly encoded.

[0096] 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 encoded, so that the decoding end can decode and obtain the corresponding repeated vertices.

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

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

[0099] Here, encoding the connection relationship, geometric information and attribute information simultaneously means that when encoding, the encoding order of the three is not in particular order, and they are encoded simultaneously.

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

[0101] Optionally, the total bitstream of the original grid further includes:

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

[0103] In the embodiment of the present application, the texture map information may be encoded by a video encoder to obtain a sixth bitstream, namely a texture map sub-bitstream (which may also be described as a texture map bitstream).

[0104] The three-dimensional grid coding framework in the embodiment of the present application is as follows: Figure 3 As shown, in the preprocessing step, first find and record the duplicate points (i.e., the second duplicate points) of the original mesh, split the original mesh with non-manifold structure to obtain a manifold mesh, and record the duplicate points (i.e., the first duplicate points) generated by removing the non-manifold structure; then, for the manifold mesh, use the Edgebreaker method to encode the connection information, obtain the pattern string, and perform entropy encoding on it; encode the geometric information of the manifold mesh, for example, the parallelogram prediction encoding method can be used, and the encoding method of the geometric information is not limited here; if the mesh has attribute information such as UV coordinates, it can be encoded using methods such as similar triangle prediction encoding, and the encoding method of the attribute information is not limited here; when encoding the non-manifold structure information, first encode the indication information of whether there is a non-manifold structure in the mesh. 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 removing the non-manifold structure are further encoded according to the encoding order of the vertices. Here, the non-manifold identification information about the duplicate points is encoded by encoding a flag bit for each duplicate vertex in the split manifold mesh to identify whether the duplicate point is generated by removing the non-manifold structure. Finally, multiple code streams are mixed to obtain the final output code stream (i.e., the total code stream).

[0105] The specific implementation of the encoding process is described as follows:

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

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

[0108] Input: original mesh;

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

[0110] The preprocessing step can also include filtering out duplicate points, adding virtual points, and other preprocessing modules required for encoding. Figure 3 Only the modules for splitting non-manifold structures targeted by this application are listed.

[0111] Before removing the non-manifold structure, first find and record the duplicate points in the original input grid, for example, you can use a hash table or other methods to find. Take the hash table as an example, create a hash table, the key of the hash table is the three-dimensional coordinates of the vertex, the value is the number of occurrences of the vertex with the three-dimensional coordinates, and the number of occurrences greater than 1 indicates that it is a duplicate point, so as to find, judge and record the duplicate points in the original grid.

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

[0113] 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. The specific implementation method is: you can create a data structure to store the triangles where each edge is located, and find the non-manifold edge by querying the number of triangles corresponding to the edge; you can also construct a Corner Table to establish the correspondence between corners and edges in the grid, and then find the non-manifold edge. Specifically, for a manifold grid, each edge is opposite to at most two corners, and the two opposite corners are called opposite corners. Figure 4 As shown in the figure, angle a and angle d are opposite to side 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.

[0114] The second step of splitting non-manifold edges is to add vertices and modify the connection relationship. After finding the non-manifold edge, create duplicate vertices for the two vertices of the non-manifold edge, select a triangle t where the non-manifold edge is located, make the third vertex in the triangle and the two newly added vertices form a new triangle t', replace the original triangle t with t', and iterate this process until the non-manifold edge is converted into a manifold edge.

[0115] To split non-manifold points, you first need to build a Corner Table and establish a corresponding relationship between each vertex and the corner of the vertex. Perform two steps for each vertex. In the first step, starting from a certain corner of the vertex, traverse all the corners adjacent to the corner and forming a fan in turn, 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, 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, connect the corners that have not been traversed in the first step to the newly added duplicate point, and split the non-manifold point into two manifold vertices. Repeat this process until all vertices are converted into manifold points.

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

[0117] 2) Connection relationship encoding;

[0118] Input: connectivity of the manifold mesh;

[0119] Output: the encoded connection relationship sub-code stream and vertex encoding order;

[0120] This application uses the Edgebreaker method to encode the connection relationship of the three-dimensional mesh, establishes a Corner Table to represent the connection relationship of the mesh, and uses the CornerTable to traverse all triangles in the mesh to generate the Edgebreaker CLERS pattern string.

[0121] Corner Table is used to represent the relationship between corners, vertices and triangles in a mesh. Before building CornerTable, 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 triangle number of the current corner can be calculated through the corner number, as shown in Formula 1; you can also calculate the previous corner c of the current corner c in a counterclockwise direction. p and the next angle c n , as shown in Formula 2 and Formula 3.

[0122] f i=c / 3 (1)

[0123] 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 integer division, and the result is rounded down.

[0124] c p =(f i *3)+(c-1)%3 (2)

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

[0126] c 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] Corner Table consists of four parts: V, O, U, and M. V stores the vertex index corresponding to each corner, O stores the diagonal index of each corner, U stores the flag of whether each triangle has been traversed during the traversal process, and M stores the flag of whether each vertex has been traversed during the traversal process.

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

[0130] After using the Corner Table to build the relationship between corners, vertices and triangles, the mesh can be traversed in a spiral order to obtain the CLERS pattern string of Edgebreaker that represents the mesh connection relationship. At this time, the judgment conditions and traversal rules of the five modes are as follows: Figure 6As shown. The current 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, but the triangles where xl and xr are located have not been visited, the current triangle is in S mode, and the traversal path will generate two branches. Using the principle of depth-first traversal, the first triangle traversed is the triangle where xr is located, and the triangle where xl is located is stored in the stack. After the traversal of the branch where xr is located is completed, 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 traversal has reached the end of the current traversal path branch.

[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: The geometric information and connection relationship encoding order of the manifold mesh;

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

[0136] There are many ways to encode geometric information, such as difference prediction coding algorithm, parallelogram prediction coding algorithm, multi-parallelogram prediction coding algorithm, etc. The specific coding method is not emphasized here. Take the parallelogram prediction coding algorithm as an example: there are four vertices a, b, c, and d, forming the following Figure 7 Two adjacent triangles in the mesh shown.

[0137] The geometric information of points a, b, and c has been encoded, and the geometric information of point d is to be encoded. Then, the predicted value d' of the geometric coordinates of point d can be calculated using Formula 4.

[0138] d′(x,y,z)=b(x,y,z)+c(x,y,z)-a(x,y,z) (4)

[0139] After obtaining d', the difference Δd between d' and the three-dimensional coordinates of point d is calculated using formula 5:

[0140] Δd(x,y,z)=d(x,y,z)-d′(x,y,z) (5)

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

[0142] For triangles that cannot be predicted using parallelograms, such as triangles at the boundary of a mesh, the difference coding method is used to encode geometric information, that is, the coordinate values ​​of adjacent encoded vertices are used as the predicted values ​​of the current vertex coordinates to calculate and predict the residual.

[0143] 4) Attribute information encoding;

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

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

[0146] The three-dimensional mesh attribute information generally includes UV coordinates, normal vectors, etc. Taking UV coordinates as an example, there are many encoding methods that can be used for UV coordinates, including difference prediction encoding, parallelogram prediction encoding, and similar triangle prediction encoding. The specific encoding method is not emphasized here. The similar triangle prediction algorithm is described below.

[0147] 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 the set and predict the UV coordinates of the opposite vertex of τ 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 edge τ be N and P respectively, the opposite vertex of the triangle adjacent to the new triangle through τ is O, and the projection point of C on τ is X. For example Figure 8 As shown, 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:

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

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

[0150]

[0151]

[0152] in, are the vector representations of the geometric coordinates of 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, A 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;

[0153] They are vector representations of the UV coordinates between the corresponding points, for example, A 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.

[0154] Calculating vectors Rotated() means flipping the vector 90 degrees:

[0155]

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

[0157]

[0158]

[0159]

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

[0161] After obtaining the predicted UV coordinate value, subtract it from the original UV coordinate to get the residual value.

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

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

[0164] (2) Select 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 three dimensions to two dimensions, the predicted value of the point to be encoded is calculated according to the UV coordinate prediction value calculation process described above. The residual is obtained by subtracting the predicted value from the original UV coordinate value.

[0165] (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 to encode the UV coordinates of the vertices of the adjacent triangles of the edge, and return to step (3) until the UV coordinates of all vertices are encoded.

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

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

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

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

[0170] 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 using the number of duplicate points generated by removing the non-manifold structure in the grid. The representation method is not limited here. Take setting a flag indicating 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.

[0171] The duplicate points generated by the removal of non-manifolds include geometric duplicate points and attribute duplicate points. If the case of whether the geometric vertices and attribute vertices (such as UV vertices) have the same connection relationship is considered, it is divided into two cases: the first case is that when the geometric vertices and attribute vertices in the mesh have the same connection relationship, a group of duplicate points' non-manifold identifiers and the index information of the duplicate points generated by the removal of the non-manifold are directly encoded, and the index information can be obtained according to the encoding order of the geometric information and the attribute information at the encoding end; the second case is that when the geometric vertices and the attribute vertices in the mesh have different connection relationships, two groups of duplicate points' non-manifold identifiers and the index information of the duplicate points generated by the removal of the non-manifold are encoded, and the index information can be obtained according to the encoding order of the geometric information and the encoding order of the attribute information at the encoding end. The representation method of the index information of the duplicate points generated by the removal of 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 index of the duplicate point group: points with the same index belong to the same duplicate point group, that is, they have the same vertex information, and the representation method is not limited here.

[0172] The specific implementation is: a flag is set for each repeated vertex in the manifold grid to indicate whether the point at the current position is a repeated point caused by dismantling the non-manifold, and the index information of the repeated points caused by dismantling 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 generated by dismantling the non-manifold structure are entropy encoded to obtain the non-manifold structure information code stream.

[0173] There are multiple ways to store the non-manifold structure information bitstream in the total bitstream: one is to store the non-manifold structure information bitstream as a separate sub-bitstream; another is to store the geometric non-manifold structure information bitstream in the geometric information sub-bitstream, and store the attribute non-manifold structure information bitstream in the attribute information sub-bitstream; the geometric non-manifold structure information bitstream and the attribute non-manifold structure information bitstream can also be stored as two sub-bitstreams in the total bitstream. The storage method of the non-manifold structure information bitstream in the total bitstream is not emphasized here.

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

[0175] In the embodiment of the present application, the sequence of encoding the connection relationship of the three-dimensional mesh and encoding the vertex information is not limited. It can be that the geometric information, attribute information and non-manifold structure information are encoded while encoding the connection relationship; it can also be that after encoding the connection relationship, 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 while encoding 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 determine which are duplicate points caused by disassembling non-manifolds based on the non-manifold identifiers of the duplicate points. 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. The representation method is not limited here.

[0176] If the case where the geometric vertex and the UV vertex have the same connection relationship is considered, it is also necessary to encode information indicating whether the geometric vertex and the UV vertex have the same connection relationship. The information can be represented by setting an identifier to indicate whether the geometric vertex and the UV vertex have the same connection relationship, and the representation method is not limited here.

[0177] In the above 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 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. Because 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, instead of adding non-manifold identification to each vertex in the manifold mesh, it can more efficiently achieve lossless encoding of the three-dimensional mesh.

[0178] like Fig. 9 As shown, the embodiment of the present application also provides a decoding method, including:

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

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

[0181] 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 scheme, the non-manifold structure of the original mesh can be restored based on the non-manifold identification information obtained by decoding the first code stream and the index information of the first repeated vertex, 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.

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

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

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

[0185] Optionally, 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:

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

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

[0188] 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 the 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 (ie, 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 the removal of the non-manifold structure are further decoded to obtain the duplicate points. The duplicate points generated by the removal of the non-manifold structure are merged, and the connection relationship is adjusted, thereby restoring the non-manifold structure in the mesh, and realizing lossless encoding and decoding of meshes containing non-manifold structures.

[0189] Optionally, 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 includes:

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

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

[0192] 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 generated by splitting the non-manifold structure based on the non-manifold identifiers of the repeated vertices.

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

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

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

[0196] In the embodiment of the present application, the decoding end can learn whether to repeat / multiple-encode the geometric information and attribute information of the repeated vertices through the third indication information obtained through decoding, so that the decoding end can decode and obtain the corresponding repeated vertices.

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

[0198] 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,

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

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

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

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

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

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

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

[0206] The three-dimensional grid decoding framework in the embodiment of the present application is as follows Fig.10As shown. Entropy decode the connection relationship sub-code stream to obtain the pattern string and reconstruct the connection relationship; use the decoding method corresponding to the encoding end to decode the geometric information of the mesh; use the decoding method corresponding to the encoding end to decode the attribute information of the mesh; when decoding the non-manifold structure information, first decode the information whether there is a non-manifold structure in the mesh (i.e., the first indication information). If there is a non-manifold structure in the mesh, further decode to obtain the non-manifold identification of the duplicate points and the duplicate point index information generated by the non-manifold removal. (Note: The order of decoding the connection relationship of the three-dimensional mesh and decoding the vertex information is not emphasized here, and it is sufficient to keep the same as the encoding end method) In the post-processing recovery of the non-manifold structure, the duplicate points generated by the non-manifold removal will be merged, and the connection relationship will be adjusted to restore the non-manifold structure in the mesh. Complete the lossless encoding and decoding of the mesh containing the non-manifold structure. Note that the post-processing step can also include post-processing modules required for correct decoding, such as restoring the filtered duplicate points and deleting the added virtual vertices. For the convenience of explanation, Fig.10 Only the modules for restoring non-manifold structures targeted by this application are listed.

[0207] The specific implementation of the decoding process is described as follows:

[0208] like Fig.10 As shown, 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, reconstruction of manifold mesh, and recovery of non-manifold structure in post-processing. The following are introduced respectively:

[0209] 1) Connection relationship decoding:

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

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

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

[0213] 2) Geometric information decoding:

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

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

[0216] The decoding process of the mesh geometric coordinates is the inverse process of the encoding process: first, entropy decode the coordinate prediction residual. Then, based on the decoded triangle, predict the predicted coordinates of the point to be decoded according to the parallelogram law. Add the predicted coordinates to the residual value obtained by entropy decoding to get 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.

[0217] 3) Attribute information decoding:

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

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

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

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

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

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

[0224] (3) Select edge τ from the set according to the access criteria, and decode the UV coordinates of the vertices of the new triangle formed with τ. First, use the mapping relationship from three-dimensional to two-dimensional triangles to calculate the predicted value of the UV coordinate of the point to be decoded in the same way as the encoding end. Then add the predicted value to the residual of entropy decoding to obtain the reconstructed UV coordinate.

[0225] (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, and return to step (3) until the UV coordinates of all vertices are decoded.

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

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

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

[0229] First, decode the information indicating whether there is a non-manifold structure in the grid. Take the information as an example of whether there is a non-manifold structure: if the flag is 0, there is no need to decode the non-manifold flag of the duplicate points and the index information of the duplicate points generated by removing the non-manifold structure, and skip the subsequent module for recovering the non-manifold structure; if the flag is 1, decode the non-manifold flag of the duplicate points and the index information of the duplicate points generated by removing the non-manifold structure. (Note: If the case of whether the geometric vertices and UV vertices have the same connection relationship is considered, then determine whether it is necessary to decode the non-manifold flag information 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.)

[0230] The decoding of the non-manifold identification of the repeated points and the index information of the repeated points generated by removing the non-manifold structure adopts the method corresponding to the encoding end. First, entropy decoding is performed to obtain the non-manifold identification of the repeated points, and then the index information of the repeated points generated by removing the non-manifold structure is decoded and recorded. This information is output to the non-manifold structure recovery module.

[0231] 5) Reconstruct the manifold mesh:

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

[0233] Output: manifold mesh;

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

[0235] 6) Restore non-manifold structure:

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

[0237] Output: Reconstructed non-manifold mesh

[0238] The recovery process of non-manifold edges and non-manifold points is the same. First, find duplicate points in the manifold grid, for example, using hash tables or kd-tree methods. Taking the hash table as an example, a hash table is established, the key of the hash table is the coordinates of the vertex, and the value is the number of occurrences of the vertex with the coordinates, so as to find, judge and record duplicate points. Then traverse all duplicate points, and judge whether the current duplicate point is a duplicate point generated by splitting the non-manifold according to the non-manifold identifier of the duplicate point. If the current duplicate point is not a duplicate point generated by splitting the non-manifold, the current vertex corresponds to the index of the current vertex, that is, 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 splitting the non-manifold is used to judge 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, the current vertex corresponds to the index of the current vertex, and its index is not updated. If it is not the target vertex to be merged, the operation of merging the duplicate points generated by splitting the non-manifold is performed, that is, the index of the current point is updated to the index of the corresponding target vertex to be merged. 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.

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

[0240] If the geometric information, attribute information and non-manifold structure information are decoded at the same time as the connection relationship, then additional information indicating whether the vertex is a duplicate point must also be decoded. In this case, it is necessary to find and determine whether the duplicate points are duplicate points generated by disassembling the non-manifold structure during the decoding process and perform operations such as merging duplicate points, updating the geometric information list and attribute information list, and updating the index values ​​of the geometric vertices and attribute vertices in the connection relationship to restore the non-manifold structure. After other operations that may exist in post-processing, such as removing virtual points, the final reconstructed non-manifold mesh is obtained.

[0241] 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 scheme, the non-manifold structure of the original mesh can be restored based on the non-manifold identification information obtained by decoding the first code stream and the index information of the first repeated vertex, 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.

[0242] The encoding method provided in the embodiment of the present application may 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.

[0243] like Fig.11 As shown, the embodiment of the present application further provides an encoding device 1100, including:

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

[0245] A first processing module 1102 is used 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;

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

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

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

[0249] A third acquisition module, used for encoding the manifold grid to obtain a second code stream;

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

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

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

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

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

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

[0256] Optionally, the total bitstream of the original grid further includes:

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

[0258] Optionally, the total bitstream of the original grid further includes:

[0259] A 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 geometric information and attribute information of the repeated vertices are repeatedly encoded.

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

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

[0262] The encoding device of the embodiment of the present application performs a splitting process on 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, 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. 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, instead of adding non-manifold identification to each vertex in the manifold mesh, it is possible to more efficiently achieve lossless encoding of the three-dimensional mesh.

[0263] like Fig.12 As shown, the embodiment of the present application further provides a decoding device 1200, including:

[0264] A fifth acquisition module 1201 is used 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;

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

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

[0267] The second processing module is used 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 non-manifold structure exists in the original mesh.

[0268] Optionally, the second processing module includes:

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

[0270] A restoration submodule is used to restore 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.

[0271] Optionally, the restoration submodule is used to restore 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;

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

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

[0274] The sixth acquisition module is used to decode the second code stream to obtain the second target information of the manifold grid.

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

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

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

[0278] 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,

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

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

[0281] a seventh acquisition module, configured to decode the third bitstream to acquire second indication information, wherein 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;

[0282] A determination module is used to determine whether the geometric vertices and attribute vertices in the manifold mesh have the same connection relationship according to the second indication information.

[0283] 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 scheme, 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.

[0284] The encoding device or decoding device in the embodiment of the present application may be an electronic device, such as an electronic device with an operating system, or a component in an electronic device, such as an integrated circuit or a chip. The electronic device may be a terminal, or may be other devices other than a terminal. Exemplary other devices may be servers, network attached storage (NAS), etc., which are not specifically limited in the embodiment of the present application.

[0285] The encoding device provided in the embodiment of the present application can achieve Figure 2 The various processes implemented by the method embodiment and achieving the same technical effect are not described here to avoid repetition.

[0286] The decoding device provided in the embodiment of the present application can achieve Fig. 9 The various processes implemented by the method embodiment and achieving the same technical effect are not described here to avoid repetition.

[0287] Optional, such as Fig.13 As shown, an embodiment of the present application also provides an electronic device 1300, including a processor 1301 and a memory 1302, wherein the memory 1302 stores a program or instruction that can be executed on the processor 1301, and when the program or instruction is executed by the processor 1301, each step of the above-mentioned encoding method or decoding method embodiment is implemented, and the same technical effect can be achieved. To avoid repetition, it will not be repeated here.

[0288] The embodiment of the present application also provides a coding device, including a processor and a communication interface, 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, 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; encode the non-manifold identification information and the index information of the first repeated vertex 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.

[0289] The embodiment of the present application also provides a decoding device, including a processor and a communication interface, the processor is used to decode the first code stream to obtain decoding information, the decoding information includes non-manifold identification information and index information of the first repeated vertex, the first repeated vertex is a repeated vertex generated by splitting the non-manifold structure in the original mesh, 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; according to the decoding information, the non-manifold structure in the original mesh is restored. This device embodiment corresponds to the above-mentioned decoding 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.

[0290] Specifically, Fig.14 A schematic diagram of the hardware structure of an encoding device or a decoding device for implementing an embodiment of the present application.

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

[0292] Those skilled in the art will appreciate that the encoding device or decoding device may also include a power source (such as a battery) for supplying power to each component, and the power source may be logically connected to the processor 1410 through a power management system, thereby implementing functions such as managing charging, discharging, and power consumption management through the power management system. Fig.14 The device structure shown in the figure does not constitute a limitation of the device. The device may include more or fewer components than shown in the figure, or combine certain components, or arrange the components differently, which will not be described in detail here.

[0293] It should be understood that in the 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 a volume control button, a switch button, etc.), a trackball, a mouse, and a joystick, which will not be repeated here.

[0294] In the embodiment of the present application, after receiving downlink data from the network side device, the radio frequency unit 1401 can transmit the data to the processor 1410 for processing; in addition, the radio frequency unit 1401 can send uplink data to the network side device. Generally, 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, etc.

[0295] 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, an application program or instruction required for at least one function (such as a sound playback function, an image playback function, etc.), 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 memories. 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. The volatile memory may be a random access memory (RAM), a static random access memory (SRAM), a dynamic random access memory (DRAM), a synchronous dynamic random access memory (SDRAM), a double data rate synchronous dynamic random access memory (DDRSDRAM), an enhanced synchronous dynamic random access memory (ESDRAM), a synchronous link dynamic random access memory (SLDRAM) and a direct memory 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.

[0296] The processor 1410 may include one or more processing units; optionally, the processor 1410 integrates an application processor and a modem processor, wherein the application processor mainly processes operations related to an operating system, a user interface, and application programs, and the modem processor mainly processes wireless communication signals, such as a baseband processor. It is understandable that the modem processor may not be integrated into the processor 1410.

[0297] Optionally, in the case where the device is an encoding device:

[0298] The processor 1410 is used to split the non-manifold structure in the original grid to obtain a manifold grid;

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

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

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

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

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

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

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

[0306] Encoding the second target information of the manifold grid to obtain the second code stream;

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

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

[0309] 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,

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

[0311] Optionally, the total bitstream of the original grid further includes:

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

[0313] Optionally, the total bitstream of the original grid further includes:

[0314] A 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 geometric information and attribute information of the repeated vertices are repeatedly encoded.

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

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

[0317] Optionally, when the above device is a decoding device:

[0318] Processor 1410 is used to decode the first code stream to obtain decoding information, where the decoding information includes non-manifold identification information and index information of first repeated vertices, where the first repeated vertices are repeated vertices generated by splitting the non-manifold structure in the original mesh, the non-manifold identification information is used to indicate whether the repeated vertices are repeated vertices generated when the non-manifold structure is split, and the first indication information is used to indicate whether there is a non-manifold structure in the original mesh;

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

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

[0321] The processor 1410 is further configured to:

[0322] 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 according to the index information of the first repeated vertices and the non-manifold identification information.

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

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

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

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

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

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

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

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

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

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

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

[0334] 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,

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

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

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

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

[0339] 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. Because 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, instead of adding non-manifold identification to each vertex in the manifold mesh, it can more efficiently achieve lossless encoding of the three-dimensional mesh.

[0340] 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, each process of the above-mentioned encoding method or decoding method embodiment is implemented, and the same technical effect can be achieved. To avoid repetition, it will not be repeated here.

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

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

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

[0344] The embodiments of the present application further provide 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 embodiments, and can achieve the same technical effect. To avoid repetition, it will not be repeated here.

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

[0346] It should be noted that, in this article, the terms "comprise", "include" or any other variant thereof are intended to cover non-exclusive inclusion, so that the process, method, article or device including a series of elements includes not only those elements, but also includes other elements not explicitly listed, or also includes elements inherent to such process, method, article or device. In the absence of further restrictions, the elements defined by the sentence "comprise one..." do not exclude the presence of other identical elements in the process, method, article or device including the element. In addition, it should be pointed out 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 reverse 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.

[0347] 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 a necessary general hardware platform, and of course by hardware, but in many cases the former is a better implementation method. Based on such an understanding, the technical solution of the present application, or the part that contributes to the prior art, 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), and includes a number of instructions for a terminal (which can be a mobile phone, computer, server, air conditioner, or network device, etc.) to execute the methods described in each embodiment of the present application.

[0348] 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 the present application, ordinary technicians in this field can also make many forms without departing from the purpose of the present application and the scope of protection of the claims, all of which are within the protection of the present application.

Claims

1. A coding method, characterized in that: include: 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, characterized in that 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, characterized in that: 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, characterized in that: 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, characterized in that: 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, characterized in that 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, characterized in that: The total code stream of the original grid also includes: A 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 geometric information and attribute information of the repeated vertices are repeatedly encoded.

8. The method according to claim 4, characterized in that 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, characterized in that: include: 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, characterized in that 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, characterized in that: 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, characterized in that 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, characterized in that: 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, characterized in that 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, characterized in that: 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, characterized in that 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. A coding device, characterized in that: include: 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, characterized in that: include: 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, characterized in that: The method comprises 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, characterized in that: The readable storage medium stores a program or instruction, 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.

Citation Information

Cited By

  • Pprimitive coding method and device, equipment, storage medium and program product

    CN121120809A

  • Coding method, decoding method, apparatus, and device

    EP4738259A1