Three-dimensional mesh encoding method, three-dimensional mesh decoding method, and related device
By acquiring and encoding the isolated vertex information of the 3D mesh at the encoding end, generating a bitstream containing the isolated points, and recovering the isolated points at the decoding end, the problem of poor 3D mesh encoding effect is solved, and more efficient encoding and decoding are achieved.
Patent Information
- Application Number
- PCT/CN2025/089701
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2024-04-25
- Filing Date
- 2025-04-18
- Publication Date
- 2025-10-30
AI Technical Summary
Existing technologies ignore isolated points when encoding 3D meshes, resulting in poor encoding quality.
The encoding end acquires the vertex information of the isolated points and encodes it to generate a bitstream containing the isolated points. The decoding end decodes the bitstream and recovers the isolated points.
It improves the encoding effect of 3D meshes and achieves effective encoding and decoding of isolated points.
Smart Images

Figure CN2025089701_30102025_PF_FP_ABST
Abstract
Description
3D mesh encoding method, 3D mesh decoding method and related equipment
[0001] Cross-references to related applications
[0002] This application claims priority to Chinese Patent Application No. 202410508150.7, filed in China on April 25, 2024, the entire contents of which are incorporated herein by reference. Technical Field
[0003] This application belongs to the field of computer technology, specifically relating to a three-dimensional mesh encoding method, a three-dimensional mesh decoding method, and related equipment. Background Technology
[0004] With the rapid development of multimedia technology, 3D models have become a new generation of digital media following audio, images, and video. 3D meshes and point clouds are two commonly used methods for representing 3D models. Compared with traditional multimedia such as images and videos, 3D mesh models have stronger interactivity and realism, and are more widely used.
[0005] In related technologies, when encoding 3D meshes at the encoding end, the geometric and attribute information of vertices is encoded and decoded according to the traversal order of connectivity relationships. Since isolated points in a 3D mesh are not connected to any other points, they are ignored during encoding. Isolated points are points not referenced by triangles, i.e., points not connected to any points on any triangle face. Ignoring isolated points during 3D mesh encoding leads to poor encoding results. Summary of the Invention
[0006] This application provides a three-dimensional mesh encoding method, a three-dimensional mesh decoding method, and related equipment, which can solve the problem of poor encoding effect of three-dimensional meshes.
[0007] Firstly, a three-dimensional mesh encoding method is provided, the method comprising:
[0008] The encoding end obtains vertex information of isolated points in the mesh to be encoded;
[0009] The encoding end encodes the vertex information of the isolated point to obtain a first encoding result;
[0010] The encoding end generates the bitstream corresponding to the grid to be encoded;
[0011] The bitstream includes the first encoding result.
[0012] Secondly, a three-dimensional mesh decoding method is provided, including:
[0013] The decoding end decodes the first encoding result in the bitstream corresponding to the grid to be decoded to obtain the vertex information of the isolated points in the grid to be decoded.
[0014] The decoding end performs isolated point recovery processing on the mesh to be decoded based on the vertex information of the isolated points to obtain the decoded mesh.
[0015] Thirdly, a three-dimensional mesh encoding device is provided, comprising:
[0016] The acquisition module is used to acquire vertex information of isolated points in the mesh to be encoded;
[0017] The first encoding module is used to encode the vertex information of the isolated point to obtain a first encoding result;
[0018] The generation module is used to generate the bitstream corresponding to the grid to be encoded;
[0019] The bitstream includes the first encoding result.
[0020] Fourthly, a three-dimensional mesh decoding device is provided, comprising:
[0021] The first decoding module is used to decode the first encoding result in the bitstream corresponding to the grid to be decoded, and obtain the vertex information of the isolated points in the grid to be decoded.
[0022] The recovery module is used to perform isolated point recovery processing on the mesh to be decoded based on the vertex information of the isolated points, so as to obtain the decoded mesh.
[0023] Fifthly, an encoding / decoding apparatus is provided, the apparatus being configured to perform the steps of the method described in the first aspect, or to implement the steps of the method described in the second aspect.
[0024] In a sixth aspect, an electronic device is provided, comprising a processor and a memory, the memory storing a program or instructions executable on the processor, the program or instructions, when executed by the processor, implementing the steps of the method as described in the first aspect, or implementing the steps of the method as described in the second aspect.
[0025] In a seventh aspect, an electronic device is provided, including a processor and a communication interface, wherein the processor is used for:
[0026] Obtain vertex information of isolated points in the mesh to be encoded; encode the vertex information of the isolated points to obtain a first encoding result; generate a bitstream corresponding to the mesh to be encoded; wherein the bitstream includes the first encoding result;
[0027] or,
[0028] The processor is used for:
[0029] The first encoding result in the bitstream corresponding to the grid to be decoded is decoded to obtain the vertex information of isolated points in the grid to be decoded; based on the vertex information of the isolated points, isolated point recovery processing is performed on the grid to be decoded to obtain the decoded grid.
[0030] Eighthly, an electronic device is provided, comprising: a memory configured to store video data, and processing circuitry configured to implement the steps of the method described in the first aspect, or the steps of the method described in the second aspect.
[0031] A ninth aspect provides a readable storage medium on which a program or instructions are stored, which, when executed by a processor, implement the steps of the method described in the first aspect, or implement the steps of the method described in the second aspect.
[0032] In a tenth aspect, a coding / decoding system is provided, comprising: an encoding end device and a decoding end device, wherein the encoding end device is configured to perform the steps of the method described in the first aspect, and the decoding end device is configured to perform the steps of the method described in the second aspect.
[0033] Eleventhly, a chip is provided, the chip including a processor and a communication interface coupled to the processor, the processor being configured to run a program or instructions 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.
[0034] In a twelfth aspect, a computer program / program product is provided, which is stored in a storage medium and is executed by at least one processor to implement the steps of the method as described in the first aspect, or to implement the steps of the method as described in the second aspect.
[0035] In this embodiment, the encoding end acquires vertex information of isolated points in the mesh to be encoded. The encoding end encodes the vertex information of the isolated points to obtain a first encoding result. The encoding end generates a bitstream corresponding to the mesh to be encoded; wherein the bitstream includes the first encoding result. Thus, by encoding the vertex information of isolated points in the mesh to be encoded, the encoding effect of the 3D mesh can be improved. Attached Figure Description
[0036] Figure 1 is a schematic diagram of five modes of Edgebreaker in related technologies;
[0037] Figure 2 is a schematic diagram of the vertex traversal process and operation mode string in EB in related technologies;
[0038] Figure 3 is a flowchart of a three-dimensional mesh encoding method provided in an embodiment of this application;
[0039] Figure 4 is a flowchart of a three-dimensional mesh decoding method provided in an embodiment of this application;
[0040] Figure 5 is a schematic diagram of the structure of a three-dimensional mesh encoding device provided in an embodiment of this application;
[0041] Figure 6 is a schematic diagram of the structure of a three-dimensional mesh decoding device provided in an embodiment of this application;
[0042] Figure 7 is a schematic diagram of the structure of a communication device provided in an embodiment of this application;
[0043] Figure 8 is a schematic diagram of the structure of a terminal provided in an embodiment of this application. Detailed Implementation
[0044] The technical solutions of the embodiments of this application will be clearly described below with reference to the accompanying drawings. Obviously, the described embodiments are only some, not all, of the embodiments of this application. All other embodiments obtained by those skilled in the art based on the embodiments of this application are within the scope of protection of this application.
[0045] The terms "first," "second," etc., used in this application are used to distinguish similar objects and not to describe a specific order or sequence. It should be understood that such terms can be used interchangeably where appropriate so that embodiments of this application can be implemented in orders other than those illustrated or described herein, and the objects distinguished by "first" and "second" are generally of the same class, not limited in number; for example, the first object can be one or more. Furthermore, "or" in this application indicates at least one of the connected objects. For example, the scope of protection for "A or B" covers at least three scenarios: Scenario 1: including A but not B; Scenario 2: including B but not A; Scenario 3: including both A and B. In addition, the terms "A and / or B," "at least one of A and B," and "at least one of A or B" also cover at least the above three scenarios. The character " / " generally indicates that the preceding and following objects are in an "or" relationship.
[0046] For ease of understanding, the following describes some aspects of the embodiments of this application:
[0047] 1. Three-dimensional mesh
[0048] In recent years, 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 emerged as a new generation of digital media following audio, images, and video. Three-dimensional meshes and point clouds are two commonly used methods for representing three-dimensional models. Compared with traditional multimedia such as images and videos, three-dimensional mesh models have stronger interactivity and realism, leading to their increasingly widespread application in various fields such as commerce, manufacturing, construction, education, medicine, entertainment, art, and the military.
[0049] As people's demands for higher visual quality in 3D mesh models increase, and with the emergence of more mature 3D scanning technologies and 3D modeling software, the data size and complexity of 3D mesh models acquired through 3D scanning equipment or 3D modeling software are also growing rapidly. Therefore, how to efficiently compress 3D mesh data is key to achieving convenient transmission, storage, and processing of 3D mesh data.
[0050] A 3D mesh typically contains three main types of information: topological information, geometric information, and attribute information. Topological information, also known as connectivity information, describes the connections between elements such as vertices and faces in the mesh. Geometric information consists of the 3D coordinates of all vertices in the mesh. Attribute information records other information attached to the mesh, such as normal vectors, texture coordinates, and color. Compression of 3D mesh data often involves compressing these three types of information according to their respective data characteristics. Additionally, for 3D meshes with texture maps, the texture maps also need to be compressed.
[0051] Currently, the Moving Pictures Experts Group (MPEG), an international standards organization in the field of video imaging, is developing a new video-based dynamic mesh coding (V-DMC) standard and has adopted a 3D mesh coding and decoding scheme based on Edgebreaker (EB) to achieve compression of 3D mesh geometric information, connectivity information and attribute information.
[0052] 2. MPEG provides a 3D mesh compression tool based on Edgebreaker.
[0053] The MPEG Edgebreaker-based 3D mesh compression tool currently provided encodes and stores the connection information, geometric information, and UV coordinates of the 3D mesh separately. The core module, which encodes the connection information, uses the Edgebreaker algorithm. The encoding of the geometric information and UV coordinates employs conventional compression methods, namely data quantization, predictive compression (parallelogram prediction), and entropy coding. Because this tool uses a connection-driven encoding method, the encoding of geometric information and UV coordinates follows the encoding order of the connection information. This method implicitly includes the vertex order of the connection information within the vertex order of the geometric information, avoiding the separate transmission of the connection information's vertex order and thus saving bit overhead in this area.
[0054] 3. Edgebreaker
[0055] The Edgebreaker method is a 3D mesh connectivity encoding method with advantages such as good compression performance, ease of implementation, and the ability to specify an upper limit for the compression ratio. However, the Edgebreaker method itself only describes the compression method for 3D mesh connectivity information; geometric information compression and entropy encoding are also required to achieve the compression of the 3D mesh.
[0056] Edgebreaker encoding achieves compression efficiency of 2 bits or less per triangle for triangular meshes homeomorphic to a sphere. 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. Based on the mode of each triangle, it is tagged, generating a CLERS string to obtain a compact representation of the mesh connectivity.
[0057] The five modes of the Edgebreaker method are shown in Figure 1. The Edgebreaker method divides the mesh into traversed and untraversed parts, and the boundary between the two parts is called the active boundary. During the encoding process of Edgebreaker, 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 it is in. The other vertex in the triangle containing the active edge is called the third vertex. If the third vertex is not on the active boundary, the current triangle is marked as C mode. If the third vertex is on the active boundary and is the next vertex of the current active edge in counter-clockwise 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 in counter-clockwise order, the current triangle is marked as L mode. If the third vertex is on the active boundary and is both the previous vertex and the next vertex of the current active edge in counter-clockwise order, the current triangle is marked as E mode. If the third vertex is on the active boundary, but in counter-clockwise order, it is neither the previous vertex of the current active edge nor the next vertex of the current active edge, then the current triangle is marked as S mode.
[0058] 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 resulting CLERS string is entropy encoded, which can achieve higher compression efficiency.
[0059] Figure 2 shows a schematic diagram of a two-dimensional grid using EB encoding. According to the EB encoding rules, the final entropy-encoded mode codeword is CCRRSLCRSERRELCRRRCRRRE.
[0060] In current V-DMC implementations, the geometric and attribute information of vertices is encoded and decoded according to the traversal order of connectivity, making it impossible to encode and decode isolated points. Isolated points are points not referenced by triangles, i.e., points that are not connected to any points on any triangle face.
[0061] The following description, in conjunction with the accompanying drawings, details the three-dimensional mesh encoding method, three-dimensional mesh decoding method, and related equipment provided in this application through some embodiments and application scenarios.
[0062] Referring to Figure 3, which is a flowchart of a three-dimensional mesh encoding method provided in an embodiment of this application, the three-dimensional mesh encoding method can be applied to encoding end devices. As shown in Figure 3, the three-dimensional mesh encoding method includes the following steps:
[0063] Step 101: The encoding end obtains the vertex information of isolated points in the mesh to be encoded.
[0064] The mesh to be encoded can be a three-dimensional mesh. An isolated point in the mesh can be a point in the mesh that is not referenced by any triangle, i.e., a point that is not connected to any point on any triangular face of the mesh. The vertex information of the isolated point can be used to characterize the isolated point; for example, the vertex information of the isolated point can include at least one of the geometric information and attribute information of the isolated point.
[0065] In one implementation, before the encoding end obtains the vertex information of isolated points in the mesh to be encoded, the encoding end can determine the isolated points in the mesh to be encoded. Determining the isolated points in the mesh to be encoded can include: the encoding end encodes the vertex information of the mesh to be encoded and sets the second identifier corresponding to the encoded vertices to a preset value; the encoding end determines vertices in the mesh to be encoded whose second identifier is not the preset value as isolated points in the mesh to be encoded; or, the encoding end can obtain the reconstructed mesh corresponding to the mesh to be encoded; the encoding end compares the reconstructed mesh with the mesh to be encoded to obtain mesh difference information; the encoding end can determine the isolated points in the mesh to be encoded based on the mesh difference information. Taking determining the isolated points in the mesh to be encoded through mesh difference information as an example, in a lossless manner, after obtaining the reconstructed mesh, the encoding end can compare the reconstructed mesh with the original 3D mesh to obtain the missing isolated points in the reconstructed mesh, and add the vertex information of the isolated points to the list storing the vertex information of the isolated points.
[0066] Step 102: The encoding end encodes the vertex information of the isolated point to obtain the first encoding result.
[0067] It should be noted that this embodiment does not limit the encoding method for the vertex information of the isolated point. For example, the values in the vertex information of the isolated point can be directly written into the bitstream for encoding, or the vertex information of the isolated point can be compressed before being written into the bitstream.
[0068] Step 103: The encoding end generates the bitstream corresponding to the grid to be encoded;
[0069] The bitstream includes the first encoding result.
[0070] Additionally, the encoding end generating the bitstream corresponding to the mesh to be encoded may include using a 3D mesh compression tool to encode the mesh to obtain a target bitstream; the bitstream corresponding to the mesh to be encoded includes the target bitstream and a first encoding result. The target bitstream includes a geometric information bitstream and an attribute information bitstream. The encoding end using a 3D mesh compression tool to encode the mesh to be encoded may include using an Edgebreaker-based 3D mesh compression tool to encode the mesh. Since Edgebreaker encodes and decodes the geometric and attribute information of vertices according to the traversal order of the connection relationship, it cannot encode and decode isolated points. This embodiment of the application improves the encoding effect of the 3D mesh by encoding the vertex information of isolated points in the mesh to be encoded.
[0071] It should be noted that the encoding end can determine target information based on the mesh to be encoded. The target information is used to determine the repeated isolated points in the isolated points of the mesh to be encoded, so that the encoding end can encode the repeated isolated points using the target information; or, the encoding end can directly encode the vertex information of the isolated points without judging the repeated isolated points.
[0072] In this embodiment, the encoding end acquires vertex information of isolated points in the mesh to be encoded. The encoding end encodes the vertex information of the isolated points to obtain a first encoding result. The encoding end generates a bitstream corresponding to the mesh to be encoded; wherein the bitstream includes the first encoding result. Thus, by encoding the vertex information of isolated points in the mesh to be encoded, the encoding effect of the 3D mesh can be improved.
[0073] Optionally, the method further includes:
[0074] The encoding end encodes the first identifier to obtain the second encoding result;
[0075] The first identifier is used to indicate whether the decoding end needs to restore the isolated point, and the bitstream also includes the second encoding result.
[0076] The first identifier can be information indicating whether or not outliers need to be restored. This first identifier can be represented in binary, such as 0 indicating that outliers should not be restored and 1 indicating that outliers should be restored; or the first identifier can also be the number of outliers, which indicates whether or not outliers need to be restored. For example, a number of outliers of 0 indicates that outliers should not be restored, and a number of outliers other than 0 indicates that outliers should be restored.
[0077] In addition, the first identifier is used to indicate whether the decoding end needs to recover the isolated point, which can be understood or replaced as the first identifier being used to indicate whether the decoding end needs to decode the isolated point.
[0078] In this embodiment, the encoding end encodes the first identifier to obtain a second encoding result; wherein the first identifier is used to indicate whether the decoding end needs to recover the isolated point, and the bitstream also includes the second encoding result. By encoding the first identifier at the encoding end and carrying the second encoding result in the bitstream, the decoding end can determine whether isolated point recovery is needed based on the encoding result of the first identifier carried in the bitstream.
[0079] Optionally, the method further includes:
[0080] The encoding end determines target information based on the grid to be encoded, and the target information is used to determine the repeated isolated points in the isolated points of the grid to be encoded;
[0081] The encoding end encodes the target information to obtain a third encoding result;
[0082] The bitstream also includes the third encoding result.
[0083] The target information may include: index information of duplicate isolated points in the isolated points of the mesh to be encoded; the number of duplicate points to be added to the duplicate isolated points; or, vertex information of the duplicate isolated points in the isolated points of the mesh to be encoded; etc. Any information that can be used to determine the duplicate isolated points in the isolated points of the mesh to be encoded can be used as target information. This embodiment does not limit the specific implementation of the target information. A duplicate isolated point can refer to an isolated point that needs to be added to, or an isolated point that already has duplicate points.
[0084] Furthermore, this embodiment does not limit the encoding method for the target information. For example, the target information can be encoded using difference encoding. Taking the target information including the index information of duplicate isolated points as an example, the index of the first duplicate isolated point can be directly written into the bitstream. For duplicate isolated points other than the first duplicate isolated point, the difference between the index of the duplicate isolated point and the index of the previous duplicate isolated point is encoded.
[0085] In one embodiment, the third encoding result may include at least one of the encoding results of the target information of geometrically isolated points and the encoding results of the target information of attribute isolated points. Taking the target information including the index information of repeated isolated points as an example, the encoding result of the target information of geometrically isolated points may be the encoding result of the index information of repeated isolated points among the geometrically isolated points, and the encoding result of the target information of attribute isolated points may be the encoding result of the index information of repeated isolated points among the attribute isolated points.
[0086] The bitstream corresponding to the grid to be encoded may include geometric information (or be described as a geometric information bitstream), wherein the geometric information includes the encoding result of the target information of the geometrically isolated points; or, the bitstream corresponding to the grid to be encoded includes attribute information (or is described as an attribute information bitstream), wherein the attribute information includes the encoding result of the target information of the attribute isolated points; or
[0087] The bitstream corresponding to the grid to be encoded may include grid difference information (or be described as a grid difference information bitstream), and the grid difference information includes at least one of the encoding results of the target information of geometrically isolated points and the encoding results of the target information of attribute isolated points.
[0088] The mesh difference information may include geometric difference information (or be described as a geometric difference information bitstream) and attribute difference information (or be described as an attribute difference information bitstream). The geometric difference information may include the encoding result of the target information of the geometrically isolated point, and the attribute difference information may include the encoding result of the target information of the attribute isolated point.
[0089] In one embodiment, the encoding end determines target information based on the grid to be encoded, which may include: when using a first encoding algorithm, the encoding end determines target information based on the grid to be encoded; wherein, under the first encoding algorithm, the encoding end performs merging of duplicate points.
[0090] In this embodiment, the target information is encoded by the encoding end and a third encoding result is carried in the bitstream. The decoding end can determine the repeated isolated points by the encoding result of the target information carried in the bitstream, and then perform isolated point recovery processing based on the repeated isolated points, thereby further improving the encoding effect of the three-dimensional mesh.
[0091] Optionally, the target information includes at least one of the following:
[0092] The index information of the repeated isolated points;
[0093] The number of duplicate isolated points needs to be added.
[0094] The term "duplicate isolated point" can refer to an isolated point that needs to be duplicated, or an isolated point that already has duplicates. For example, if the target information includes the index information of the duplicate isolated point, and the number of duplicate isolated point A that needs to be duplicated is 2, the target information can include 2 identical index values, both being the index value of duplicate isolated point A. Alternatively, if the target information includes the number of duplicate isolated points to be added, and the number of duplicate isolated point A that needs to be duplicated is 2, the index value of duplicate isolated point A can be indicated by other information; the target information can be the number 2. Finally, if the target information includes both the index information of the duplicate isolated point and the number of duplicate isolated points to be added, and the number of duplicate isolated point A that needs to be duplicated is 2, the target information can include 1 index value, which is the index value of duplicate isolated point A, and the target information also includes the number 2. This embodiment does not limit the specific implementation of the target information.
[0095] Optionally, the encoding end determines the target information based on the grid to be encoded, including:
[0096] The encoding end obtains the reconstructed grid corresponding to the grid to be encoded;
[0097] The encoding end compares the reconstructed mesh with the mesh to be encoded to obtain mesh difference information, wherein the mesh difference information includes the target information.
[0098] The mesh to be encoded can be the original 3D mesh. Mesh difference information can be obtained by comparing the reconstructed mesh with the original 3D mesh. Taking the target information including the index information of repeated isolated points as an example, this index information can be the index of the repeated isolated point in the reconstructed mesh. The reconstructed mesh can be obtained by lossless encoding of the mesh to be encoded.
[0099] In this embodiment, the encoding end compares the reconstructed mesh with the mesh to be encoded to obtain mesh difference information, wherein the mesh difference information includes the target information. In this way, under lossless encoding, the encoding end can determine the target information by the difference between the reconstructed mesh and the original mesh, so that the decoding end can determine the repeated isolated points by the encoding result of the target information carried in the bitstream, and then perform isolated point recovery processing based on the repeated isolated points, thereby further improving the encoding effect of the three-dimensional mesh.
[0100] Optionally, the encoding end determines the target information based on the grid to be encoded, including:
[0101] The encoding end obtains the vertex information of the repeated isolated points in the isolated points of the mesh to be encoded and the number of repeated points to be added to the repeated isolated points;
[0102] The encoding end determines the target information based on the vertex information of the repeated isolated points and the number of repeated points to be added to the repeated isolated points.
[0103] The encoding end can perform duplicate point merging processing on the mesh to be encoded. During the duplicate point merging process, it obtains the vertex information of the duplicate isolated points in the isolated points of the mesh to be encoded and the number of duplicate points to be added to the duplicate isolated points.
[0104] For example, the encoding end can record the vertex information of duplicate points and the corresponding number of duplicate points being merged during the process of merging duplicate points. When identifying isolated points, it checks whether the vertex information of the vertex with the encoding identifier -1 has the same vertex information as the duplicate vertex being merged. If they have the same vertex information, then the vertex information of the vertex with the encoding identifier -1 is the vertex information of the isolated point. The encoding end can determine the number of duplicate vertices being merged corresponding to the isolated point as the number of duplicate points that need to be added to the isolated point, and record the index information of the same number of isolated points, that is, record the index information of the isolated points that need to be added to the isolated point. This index information can be the relative index of the isolated point in the isolated point list.
[0105] In this embodiment, the encoding end determines the target information based on the vertex information of the repeated isolated points and the number of repeated points to be added to the repeated isolated points. In this way, the encoding end can determine the target information by the vertex information of the repeated isolated points recorded when merging repeated points and the number of repeated points to be added to the repeated isolated points. Thus, the decoding end can determine the repeated isolated points by the encoding result of the target information carried in the bitstream, and then perform isolated point recovery processing based on the repeated isolated points, thereby further improving the encoding effect of the three-dimensional mesh.
[0106] Optionally, the first encoding result includes at least one of the geometric information encoding result of the geometrically isolated point and the attribute information encoding result of the attribute isolated point;
[0107] The bitstream corresponding to the grid to be encoded includes geometric information (or is described as a geometric information bitstream), the geometric information including the geometric information encoding results of the geometrically isolated points; or, the bitstream corresponding to the grid to be encoded includes attribute information (or is described as an attribute information bitstream), the attribute information including the attribute information encoding results of the attribute isolated points; or
[0108] The bitstream corresponding to the grid to be encoded includes grid difference information (or is described as a grid difference information bitstream), and the grid difference information includes at least one of the geometric information encoding results of the geometrically isolated points and the attribute information encoding results of the attribute isolated points.
[0109] The mesh difference information may include geometric difference information (or be described as a geometric difference information bitstream) and attribute difference information (or be described as an attribute difference information bitstream). The geometric difference information may include the geometric information encoding result of the geometrically isolated point, and the attribute difference information may include the attribute information encoding result of the attributely isolated point.
[0110] Additionally, isolated points can include at least one of geometric isolated points and attribute isolated points. A geometrically isolated point is a point that is not connected to any other point in terms of geometric information; for example, a geometrically isolated point can be a point that the encoder determines is not connected to any other point when encoding geometric information. An attribute isolated point is a point that is not connected to any other point in terms of attribute information; for example, an attribute isolated point can be a point that the encoder determines is not connected to any other point when encoding attribute information.
[0111] In one embodiment, the method further includes:
[0112] The encoding end carries a third identifier (such as mesh_adjustment_flag) in the encoding header information (such as mesh_coding_header) of the bitstream corresponding to the mesh to be encoded. The third identifier is used to indicate whether the mesh needs to be adjusted and reconstructed.
[0113] In one embodiment, the third identifier in the encoding header information can also be used to indicate the geometric information encoding result of the geometrically isolated point or the attribute information encoding result of the attribute isolated point carried in the mesh difference information.
[0114] Optionally, before the encoding end obtains the vertex information of isolated points in the mesh to be encoded, the method further includes:
[0115] The encoding end encodes the vertex information of the mesh to be encoded and sets the second identifier corresponding to the encoded vertex to a preset value;
[0116] The encoding end determines vertices in the grid to be encoded whose second identifier is not the preset value as isolated points in the grid to be encoded.
[0117] The second identifier can be described as an encoding identifier. The preset value can be -1, 1, 0, etc., and this embodiment does not limit the preset value. The encoding end encodes the vertex information of the mesh to be encoded, which may include using a 3D mesh compression tool to encode the vertex information of the mesh to be encoded; or using an encoding scheme based on the Edgebreaker algorithm to encode the vertex information of the mesh to be encoded, etc. This embodiment does not limit the encoding method for the vertex information of the mesh to be encoded. After encoding the vertex information of the mesh to be encoded, the encoding end may determine vertices in the mesh to be encoded whose second identifier is not the preset value as isolated points in the mesh to be encoded.
[0118] Taking geometric information as an example, a second identifier can be set for each vertex before geometric information encoding to indicate whether the vertex has already been encoded. The encoding end uses this second identifier to determine isolated points. For example, the initial value of the second identifier can be set to -1, and then set to 1 if the geometric information of the current vertex has already been encoded. After geometric information encoding, the second identifiers of the vertices are traversed to determine whether there is a vertex with a second identifier of -1; if so, the geometric coordinates of the vertex with a second identifier of -1 are added to the list storing the geometric information of isolated points.
[0119] In this embodiment, the encoding end encodes the vertex information of the mesh to be encoded and sets the second identifier corresponding to the encoded vertex to a preset value. The encoding end determines the vertices in the mesh to be encoded whose second identifier is not the preset value as isolated points in the mesh to be encoded. Thus, the encoding end can determine isolated points from the vertices of the mesh to be encoded through the second identifier, and then encode the vertex information of the isolated points, thereby improving the encoding effect of the three-dimensional mesh.
[0120] Referring to Figure 4, which is a flowchart of a three-dimensional mesh decoding method provided in an embodiment of this application, the three-dimensional mesh decoding method includes the following steps:
[0121] Step 201: The decoding end decodes the first encoding result in the bitstream corresponding to the grid to be decoded to obtain the vertex information of the isolated points in the grid to be decoded;
[0122] Step 202: The decoding end performs isolated point recovery processing on the mesh to be decoded based on the vertex information of the isolated points to obtain the decoded mesh.
[0123] The decoding end can receive the bitstream sent by the encoding end. For the decoding end, the bitstream is the bitstream corresponding to the grid to be decoded; for the encoding end, the bitstream is the bitstream corresponding to the grid to be encoded generated by the encoding end.
[0124] Additionally, the decoding end can add the vertex information of the isolated points to the decoded geometry information list or attribute information list. For example, the decoding end can add the geometry information of geometrically isolated points to the decoded geometry information list, and add the attribute information of attribute-isolated points to the decoded attribute information list. The decoding end generates a decoded mesh based on the added geometry information list and attribute information list.
[0125] Optionally, the method further includes:
[0126] The decoding end decodes the second encoding result in the bitstream to obtain a first identifier, which is used to indicate whether the decoding end needs to recover the isolated point;
[0127] The decoding end decodes the first encoding result in the bitstream corresponding to the grid to be decoded, including:
[0128] When the first identifier indicates that an isolated point needs to be recovered, the decoding end decodes the first encoding result in the bitstream corresponding to the grid to be decoded.
[0129] Optionally, the method further includes:
[0130] The decoding end decodes the third encoding result in the bitstream to obtain target information, which is used to determine the repeated isolated points in the isolated points of the grid to be decoded;
[0131] The decoding end performs isolated point recovery processing on the mesh to be decoded based on the vertex information of the isolated points to obtain the decoded mesh, including:
[0132] The decoding end performs isolated point recovery processing on the mesh to be decoded based on the vertex information of the isolated points and the target information to obtain the decoded mesh.
[0133] The decoding end can add the vertex information of the isolated points to the decoded geometry information list or attribute information list. For example, the decoding end can add the geometric information of geometrically isolated points to the decoded geometry information list, and the attribute information of attribute-isolated points to the decoded attribute information list. Additionally, the decoding end can determine duplicate isolated points among the isolated points of the mesh to be decoded based on the target information, and add the corresponding geometric or attribute information of the duplicate points to the decoded geometry information list or attribute information list according to the number of duplicate points that need to be added. For example, duplicate isolated points can include geometrically duplicated isolated points and attribute-repeated isolated points; geometrically duplicated isolated points can refer to geometrically isolated points that need to be added, and attribute-repeated isolated points can refer to attribute-repeated isolated points that need to be added. The decoding end can add the corresponding geometric information of the duplicate points to the decoded geometry information list according to the number of duplicate points that need to be added, and add the corresponding attribute information of the duplicate points to the decoded attribute information list according to the number of duplicate points that need to be added.
[0134] Optionally, the target information includes at least one of the following:
[0135] The index information of the repeated isolated points;
[0136] The number of duplicate isolated points needs to be added.
[0137] Optionally, the first encoding result includes at least one of the geometric information encoding result of the geometrically isolated point and the attribute information encoding result of the attribute isolated point;
[0138] The bitstream corresponding to the grid to be decoded includes geometric information, which includes the geometric information encoding result of the geometrically isolated point; or, the bitstream corresponding to the grid to be decoded includes attribute information, which includes the attribute information encoding result of the attribute isolated point; or
[0139] The bitstream corresponding to the grid to be decoded includes grid difference information, which includes at least one of the geometric information encoding results of the geometrically isolated points and the attribute information encoding results of the attribute isolated points.
[0140] It should be noted that this embodiment is an implementation method on the decoding side corresponding to the embodiment shown in Figure 3. For specific implementation methods, please refer to the relevant description of the embodiment shown in Figure 3. In order to avoid repeated descriptions, this embodiment will not be repeated, and the same beneficial effects can be achieved.
[0141] This application proposes a novel encoding and decoding method for 3D meshes containing isolated points, enabling the decoding and recovery of isolated points within the 3D mesh. The encoding and decoding system in this application may include modules for acquiring isolated point information, encoding isolated point information, decoding isolated point information, and recovering isolated points. The isolated point information may include an identifier indicating whether isolated points need to be recovered, vertex information of the isolated points, and index information for isolated points requiring duplicate entries. The vertex information of the isolated points may be one or more of geometric and attribute information. For 3D meshes containing isolated points, an identifier indicating whether isolated points need to be recovered can be set at the encoding end. This identifier can have multiple representation methods. If isolated points need to be recovered, the vertex information of the isolated points must be confirmed. This can be done by identifying unencoded points during vertex information encoding, or by comparing the reconstructed mesh with the original input mesh at the encoding end, and then encoding the isolated point information to generate a compressed bitstream. The decoding end can recover the isolated points based on the decoded identifier indicating whether isolated points need to be recovered, the vertex information of the isolated points, and the index information for isolated points requiring duplicate entries. There are also multiple methods for storing the bitstream of isolated point information.
[0142] For example, the implementation of the 3D mesh encoding method at the encoding end is as follows:
[0143] Encoding end:
[0144] The encoding module mainly consists of two parts: an outlier information acquisition module and an outlier information encoding module. These will be described in detail below:
[0145] (1) Module for acquiring isolated point information
[0146] Input: Original mesh;
[0147] Output: Isolated point information, including whether isolated points need to be restored, vertex information of isolated points, and index information of isolated points that need to be duplicated (optional).
[0148] First, a flag can be set to indicate whether outliers need to be restored. This flag can be represented in binary, such as 0 indicating no restoration and 1 indicating restoration; alternatively, the number of outliers can be used to indicate whether restoration is needed. If restoration is required, the outliers must be identified and their information recorded.
[0149] In one implementation, the identification of isolated points, taking geometric information as an example, can be achieved by assigning an encoding identifier to each vertex before encoding the geometric information. This identifier indicates whether the vertex has already been encoded, and isolated points are identified based on this identifier. For example, the initial value of the encoding identifier can be set to -1, and then set to 1 if the geometric information of the current vertex has already been encoded. After the geometric information is encoded, the encoding identifiers of the vertices are traversed to determine if there is a vertex with an encoding identifier of -1. If so, the geometric coordinates of the vertex with an encoding identifier of -1 are added to the list storing the geometric information of isolated points.
[0150] Another alternative approach, for example in a lossless manner, is to obtain the reconstructed mesh at the encoding end, compare it with the original input mesh, obtain the missing isolated points in the reconstructed mesh, and add the geometric coordinates of the isolated points to a list storing the geometric information of the isolated points.
[0151] In the presence of duplicate isolated points, one option is to directly record the geometric information of all isolated points and encode them directly afterwards. Another option is, for example, since merging duplicate points before encoding can reduce the number of encoded bits, 3D mesh encoding algorithms for merging duplicate points can be divided into lossless encoding and lossy encoding, using different methods to obtain the index information of isolated points that need to be duplicated. For lossless encoding, a method similar to that in the existing V-DMC lossless encoding / decoding framework can be used to obtain the index information of isolated points that need to be duplicated. For example, after obtaining the reconstructed mesh at the encoding end, the reconstructed mesh can be compared with the original input mesh to obtain mesh difference information, which is then encoded. This mesh difference information includes the index information of the isolated points that need to be duplicated, which can be the index of the isolated point in the reconstructed mesh. For both lossy and lossless encoding, if it is necessary to recover duplicate isolated points, the geometric coordinates of the duplicate points and the corresponding number of merged isolated points can be recorded during the merging process. When identifying isolated points, the geometric coordinates of the vertex with the code identifier -1 are checked to see if they are the same as those of the duplicate vertices being merged. If they are the same, the index information of the current isolated point is recorded in the same number of duplicate vertices being merged, i.e., the index information of the isolated point that needs to be added as a duplicate point is recorded. This index information can be the relative index of the current isolated point in the isolated point list.
[0152] It should be understood that the same method as the above-mentioned method for determining geometric isolated points can be used to obtain the isolated point information of attributes.
[0153] The encoding end obtains isolated point information, which includes identification information indicating whether isolated points need to be restored, vertex information of the isolated points, and index information of isolated points that need to be duplicated. The vertex information of the isolated point can be one or more of geometric and attribute information.
[0154] (2) Encoding module for isolated point information
[0155] Input: Isolated point information, including whether the isolated point needs to be restored, the vertex information of the isolated point, and the index information of the isolated point that needs to be added as a duplicate point (optional);
[0156] Output: Isolated point information bitstream.
[0157] First, encode whether the identification information of isolated points needs to be restored. If isolated points need to be restored, continue to encode the vertex information of the isolated points and the index information of the isolated points that need to be repeated (optional).
[0158] Encoding the identification information of whether or not isolated points need to be recovered can be achieved by directly encoding the flag bit with 1 bit, or by encoding the number of isolated points. Since isolated points are not connected to any other points and are generally few in number, the vertex information of isolated points can be encoded by directly writing each value into the bitstream. For cases with duplicate isolated points, the vertex information of all isolated points can be directly encoded in the above manner, without distinguishing between duplicates. Alternatively, additional processing can be performed separately for cases with duplicate isolated points. For example, the index information of isolated points that need to be duplicated can be encoded. This can be done using difference encoding, where the difference between each index and the previous index is encoded, except for the first index which is directly written into the bitstream. The specific encoding method for isolated point information is not limited here.
[0159] Additionally, for the isolated point information bitstream, geometric isolated point information can be placed in the geometric information bitstream, and attribute isolated point information can be placed in the attribute information bitstream; alternatively, geometric isolated point information and attribute isolated point information can be placed in the mesh difference information bitstream. Mesh difference information is used in V-DMC to adjust the reconstructed mesh.
[0160] For example, the implementation of the 3D mesh decoding method for the decoding end corresponding to the encoding end is as follows:
[0161] Decoding end:
[0162] The decoding end mainly consists of two parts: a decoding module for outlier information and a recovery module for outliers. These will be described in detail below:
[0163] (1) Decoding of isolated point information
[0164] Input: Outlier information bitstream;
[0165] Output: Isolated point information, including whether isolated points need to be restored, vertex information of isolated points, and index information of isolated points that need to be duplicated (optional).
[0166] First, decode the identifier information of whether isolated points need to be restored. If the decoding indicates that isolated points need to be restored, continue decoding the vertex information of the isolated points and the index information of the isolated points that need to be added as duplicate points.
[0167] Decoding the identification information of isolated points, whether or not it's necessary to recover them, can be done by directly reading the corresponding 1-bit data from the bitstream or by decoding the number of isolated points, using the method corresponding to the encoding end. For the vertex information of isolated points, the value at the corresponding position can be directly read from the bitstream for decoding. If the bitstream contains index information of isolated points that need to be repeated, it can be decoded using difference decoding. That is, the index information is directly read from the corresponding position in the bitstream; except for the first index which is the original index value, the difference between each index and the previous index is decoded, and the difference is accumulated to obtain the index value. The specific decoding method for isolated point information is not limited here; the decoding method corresponding to the encoding end can be used.
[0168] (2) Isolated point recovery
[0169] Input: Isolated point information, including whether the isolated point needs to be restored, the vertex information of the isolated point, and the index information of the isolated point that needs to be added as a duplicate point (optional);
[0170] Output: Decoded grid.
[0171] First, the system determines whether isolated points need to be restored based on their identifier information. If restoration is required, taking geometric information as an example, the isolated point's geometric information can be directly added to the end of the decoded geometry information list. If the decoding yields the index information of isolated points requiring duplicate entries, the geometric information of these isolated points is obtained based on this information, and the corresponding geometric information is added to the end of the decoded geometry information list. Otherwise, all isolated points to be restored can be obtained directly from the vertex information of the decoded isolated points and added to the end of the decoded geometry information list. For attribute isolated points, the same method as for restoring geometric isolated points can be used. Finally, the decoding end obtains a decoded mesh with the restored isolated points.
[0172] This application also proposes syntax and semantics related to isolated points. Based on the syntax structure of the MPEG V-DMC standard currently under development, this application proposes multiple design implementation schemes for different identifier design methods and bitstream storage methods for isolated point encoding and decoding.
[0173] Schemes 1 to 3 below differ in their design regarding whether to restore the isolated point identifier or whether an isolated point identifier exists. Schemes 4 and 5 below are other alternative schemes that are improvements upon Schemes 1 to 3.
[0174] Specifically as follows:
[0175] Option 1:
[0176] The encoding end can set the information indicating whether isolated points need to be recovered in the 3D mesh encoding header. The 3D mesh encoding header information is shown in the table below:
[0177] `mesh_reverse_unreferenced_vertices_flag` indicates whether or not outliers need to be restored. A value of 1 indicates that outliers need to be restored, while a value of 0 indicates that orliers do not need to be restored. `Descriptor` represents the descriptor.
[0178] Additionally, the encoding end can set the geometric information of isolated geometric points and the index information of isolated geometric points that need to be repeated in the 3D mesh geometry information. The 3D mesh geometry information is shown in the table below:
[0179] The mesh_position_unreferenced_count represents the number of geometrically isolated points.
[0180] mesh_position_unreferenced[i][j] represents the j-th dimension coordinate of the three-dimensional geometric coordinates of the i-th isolated point, where the value of j ranges from [0,1,2].
[0181] mesh_position_duplicate_unreferenced_idx_count represents the number of indexes of geometrically isolated points that need to be duplicated.
[0182] `mesh_position_duplicate_unreferenced_idx_delta[i]` represents the difference between the index of the i-th geometric isolated point that needs to be duplicated and the index of the (i-1)-th geometric isolated point that needs to be duplicated when `i` > 0. When `i` = 0, it represents the index of the first geometric isolated point that needs to be duplicated.
[0183] Additionally, the encoding end can set the attribute information of isolated attribute points and the index information of isolated attribute points that need to be repeated in the 3D mesh attribute information. The 3D mesh attribute information is shown in the table below:
[0184] mesh_attribute_unreferenced_count[i] represents the number of isolated points for the i-th attribute.
[0185] mesh_attribute_unreferenced[i][j][k] represents the k-th dimension attribute value of the j-th isolated point of the i-th attribute, and the range of values for k is related to the dimension of the current i-th attribute.
[0186] mesh_attribute_duplicate_unreferenced_idx_count[i] represents the number of indexes of isolated attribute points for the i-th attribute that need to be duplicated.
[0187] `mesh_attribute_duplicate_unreferenced_idx_delta[i][j]` represents the difference between the index of the j-th attribute isolated point that needs to be duplicated and the index of the (j-1)-th attribute isolated point that needs to be duplicated when j > 0. When j = 0, it represents the index of the first attribute isolated point that needs to be duplicated. Different values of i represent different attributes.
[0188] Option 2:
[0189] The encoding end can set the information indicating whether isolated points need to be recovered in the 3D mesh encoding header. The 3D mesh encoding header information is shown in the table below:
[0190] The `mesh_reverse_unreferenced_vertices_flag` indicates whether or not outliers need to be restored. A value of 1 indicates that outliers need to be restored, while a value of 0 indicates that outliers do not need to be restored.
[0191] Additionally, the encoding end can set the geometric information of isolated geometric points and the index information of isolated geometric points that need to be repeated in the 3D mesh geometry information. The 3D mesh geometry information is shown in the table below:
[0192] The value of mesh_position_unreferenced_count_minus1, when incremented by 1, represents the number of geometrically isolated points.
[0193] mesh_position_unreferenced[i][j] represents the j-th dimension coordinate of the three-dimensional geometric coordinates of the i-th isolated point, where the value of j ranges from [0,1,2].
[0194] mesh_position_duplicate_unreferenced_idx_count represents the number of indexes of geometrically isolated points that need to be duplicated.
[0195] `mesh_position_duplicate_unreferenced_idx_delta[i]` represents the difference between the index of the i-th geometric isolated point that needs to be duplicated and the index of the (i-1)-th geometric isolated point that needs to be duplicated when `i` > 0. When `i` = 0, it represents the index of the first geometric isolated point that needs to be duplicated.
[0196] Additionally, the encoding end can set the attribute information of isolated attribute points and the index information of isolated attribute points that need to be repeated in the 3D mesh attribute information. The 3D mesh attribute information is shown in the table below:
[0197] The value of mesh_attribute_unreferenced_count_minus1[i] plus 1 indicates the number of isolated points for the i-th attribute.
[0198] mesh_attribute_unreferenced[i][j][k] represents the k-th dimension attribute value of the j-th isolated point of the i-th attribute, and the range of values for k is related to the dimension of the current i-th attribute.
[0199] mesh_attribute_duplicate_unreferenced_idx_count[i] represents the number of indexes of isolated attribute points for the i-th attribute that need to be duplicated.
[0200] `mesh_attribute_duplicate_unreferenced_idx_delta[i][j]` represents the difference between the index of the j-th attribute isolated point that needs to be duplicated and the index of the (j-1)-th attribute isolated point that needs to be duplicated when j > 0. When j = 0, it represents the index of the first attribute isolated point that needs to be duplicated. Different values of i represent different attributes.
[0201] Option 3:
[0202] The encoding end can set the geometric information of isolated geometric points and the index information of isolated geometric points that need to be repeated in the 3D mesh geometry information. The 3D mesh geometry information is shown in the table below:
[0203] The mesh_position_unreferenced_count represents the number of geometrically isolated points.
[0204] mesh_position_unreferenced[i][j] represents the j-th dimension coordinate of the three-dimensional geometric coordinates of the i-th isolated point, where the value of j ranges from [0,1,2].
[0205] mesh_position_duplicate_unreferenced_idx_count represents the number of indexes of geometrically isolated points that need to be duplicated.
[0206] `mesh_position_duplicate_unreferenced_idx_delta[i]` represents the difference between the index of the i-th geometric isolated point that needs to be duplicated and the index of the (i-1)-th geometric isolated point that needs to be duplicated when `i` > 0. When `i` = 0, it represents the index of the first geometric isolated point that needs to be duplicated.
[0207] Additionally, the encoding end can set the attribute information of isolated attribute points and the index information of isolated attribute points that need to be repeated in the 3D mesh attribute information. The 3D mesh attribute information is shown in the table below:
[0208] mesh_attribute_unreferenced_count[i] represents the number of isolated points for the i-th attribute.
[0209] mesh_attribute_unreferenced[i][j][k] represents the k-th dimension attribute value of the j-th isolated point of the i-th attribute, and the range of values for k is related to the dimension of the current i-th attribute.
[0210] mesh_attribute_duplicate_unreferenced_idx_count[i] represents the number of indexes of isolated attribute points for the i-th attribute that need to be duplicated.
[0211] `mesh_attribute_duplicate_unreferenced_idx_delta[i][j]` represents the difference between the index of the j-th attribute isolated point that needs to be duplicated and the index of the (j-1)-th attribute isolated point that needs to be duplicated when j > 0. When j = 0, it represents the index of the first attribute isolated point that needs to be duplicated. Different values of i represent different attributes.
[0212] It should be noted that the syntax and semantics related to handling duplicate isolated points in the above three schemes can also be omitted. In this case, the encoding and decoding of duplicate isolated points can directly encode and decode their vertex information, without needing to encode and decode their index information. Taking Scheme 1 as an example, it can be modified as shown in Scheme 4:
[0213] Option 4:
[0214] The encoding end can set the information on whether isolated points need to be recovered in the 3D mesh encoding head. The 3D mesh encoding head information is shown in the table below:
[0215] The `mesh_reverse_unreferenced_vertices_flag` indicates whether or not outliers need to be restored. A value of 1 indicates that outliers need to be restored, while a value of 0 indicates that outliers do not need to be restored.
[0216] Additionally, the encoding end can incorporate the geometric information of isolated points into the 3D mesh geometry. The 3D mesh geometry is shown in the table below:
[0217] The mesh_position_unreferenced_count represents the number of geometrically isolated points.
[0218] mesh_position_unreferenced[i][j] represents the j-th dimension coordinate of the three-dimensional geometric coordinates of the i-th isolated point, where the value of j ranges from [0,1,2].
[0219] Additionally, the encoding end can set the attribute information of isolated points in the 3D mesh attribute information. The 3D mesh attribute information is shown in the table below:
[0220] mesh_attribute_unreferenced_count[i] represents the number of isolated points for the i-th attribute.
[0221] mesh_attribute_unreferenced[i][j][k] represents the k-th dimension attribute value of the j-th isolated point of the i-th attribute, and the range of values for k is related to the dimension of the current i-th attribute.
[0222] It should be noted that Scheme 2 and Scheme 3 can also handle duplicate outliers in a similar way to the modification of Scheme 1 in Scheme 4 above, without needing to encode or decode the index information of duplicate outliers.
[0223] For the bitstream of isolated point information described above, geometric isolated point information can be placed in the geometric information bitstream and attribute isolated point information in the attribute information bitstream, as in Schemes 1 to 4 above; or, geometric isolated point information and attribute isolated point information can be placed in the mesh difference information bitstream, as shown in Scheme 5 below. Mesh difference information is used in V-DMC to adjust and reconstruct the mesh. Taking Scheme 4 as an example, the modification method is shown in Scheme 5. In this case, for the encoding of duplicate isolated points, either the vertex information can be directly encoded and decoded as in Scheme 4, or the index of the vertex to be added can be used to encode and decode its index in the mesh difference information. The processing of duplicate isolated points in Schemes 1 to 3 can also adopt a similar modification method to Scheme 4 in Scheme 5 above, using the index of the vertex to be added in the mesh difference information to encode and decode the index of the duplicate isolated point.
[0224] Option 5:
[0225] The encoding end can set the information indicating whether isolated points need to be recovered in the 3D mesh encoding header. The 3D mesh encoding header information is shown in the table below:
[0226] The `mesh_adjustment_flag` indicates whether the reconstructed mesh needs adjustment. A value of 1 indicates that the reconstructed mesh needs adjustment, while a value of 0 indicates that the reconstructed mesh does not need adjustment.
[0227] The `mesh_reverse_unreferenced_vertices_flag` indicates whether or not outliers need to be restored. A value of 1 indicates that outliers need to be restored, while a value of 0 indicates that outliers do not need to be restored.
[0228] In addition, the encoding end can set the geometric information of geometrically isolated points in the geometric difference information of the 3D mesh.
[0229] The 3D mesh geometry information is shown in the table below:
[0230] The geometric differences in the 3D mesh are shown in the table below:
[0231] The mesh_position_unreferenced_count represents the number of geometrically isolated points.
[0232] mesh_position_unreferenced[i][j] represents the j-th dimension coordinate of the three-dimensional geometric coordinates of the i-th isolated point, where the value of j ranges from [0,1,2].
[0233] `mesh_position_added_vertices_count` represents the number of geometric vertices that need to be added.
[0234] `mesh_position_added_vertices_idx_delta[i]` represents the difference between the index of the i-th vertex to be added and the index of the (i-1)-th vertex to be added when i > 0. When i = 0, it represents the index of the first vertex to be added.
[0235] In addition, the encoding end can set the attribute information of isolated attribute points in the 3D mesh attribute difference information.
[0236] The 3D mesh attribute information is shown in the table below:
[0237] The differences in 3D mesh properties are shown in the table below:
[0238] `mesh_attribute_unreferenced_count[index]` represents the number of isolated points for the index-th attribute.
[0239] `mesh_attribute_unreferenced[index][j][k]` represents the k-th dimension attribute value of the j-th isolated point of the index-th attribute. The range of values for k is related to the dimension of the current i-th attribute.
[0240] `mesh_attribute_added_vertices_count[index]` represents the number of vertices that need to be added for the index-th attribute.
[0241] `mesh_attribute_added_vertices_idx_delta[index][i]` represents the difference between the index of the i-th vertex to be added and the index of the (i-1)-th vertex to be added when `i>0`. When `i=0`, it represents the index of the first vertex to be added. Different `index` values represent different attributes.
[0242] It should be noted that the 3D mesh encoding method provided in this application can be executed by a 3D mesh encoding device. As an example, the device can be an electronic device or a component within an electronic device, such as a chip or circuit. This application uses a 3D mesh encoding device to execute a 3D mesh encoding method as an example to illustrate the 3D mesh encoding device provided in this application.
[0243] Please refer to Figure 5, which is a structural diagram of a three-dimensional mesh encoding device provided in an embodiment of this application. The encoding end includes a three-dimensional mesh encoding device. As shown in Figure 5, the three-dimensional mesh encoding device 300 includes:
[0244] The acquisition module 301 is used to acquire vertex information of isolated points in the mesh to be encoded;
[0245] The first encoding module 302 is used to encode the vertex information of the isolated point to obtain a first encoding result;
[0246] Generation module 303 is used to generate the bitstream corresponding to the grid to be encoded;
[0247] The bitstream includes the first encoding result.
[0248] Optionally, the device further includes:
[0249] The second encoding module is used to encode the first identifier to obtain the second encoding result;
[0250] The first identifier is used to indicate whether the decoding end needs to restore the isolated point, and the bitstream also includes the second encoding result.
[0251] Optionally, the device further includes:
[0252] The first determining module is used to determine target information based on the grid to be encoded, wherein the target information is used to determine duplicate isolated points among the isolated points of the grid to be encoded;
[0253] The third encoding module is used to encode the target information to obtain a third encoding result;
[0254] The bitstream also includes the third encoding result.
[0255] Optionally, the target information includes at least one of the following:
[0256] The index information of the repeated isolated points;
[0257] The number of duplicate isolated points needs to be added.
[0258] Optionally, the determining module is specifically used for:
[0259] Obtain the reconstructed grid corresponding to the grid to be encoded;
[0260] The reconstructed mesh is compared with the mesh to be encoded to obtain mesh difference information, wherein the mesh difference information includes the target information.
[0261] Optionally, the determining module is specifically used for:
[0262] Obtain the vertex information of the duplicate isolated points in the isolated points of the mesh to be encoded, and the number of duplicate points to be added to the duplicate isolated points;
[0263] The target information is determined based on the vertex information of the repeated isolated points and the number of repeated points to be added to the repeated isolated points.
[0264] Optionally, the first encoding result includes at least one of the geometric information encoding result of the geometrically isolated point and the attribute information encoding result of the attribute isolated point;
[0265] The bitstream corresponding to the grid to be encoded includes geometric information, which includes the geometric information encoding result of the geometrically isolated point; or, the bitstream corresponding to the grid to be encoded includes attribute information, which includes the attribute information encoding result of the attribute isolated point; or
[0266] The bitstream corresponding to the grid to be encoded includes grid difference information, which includes at least one of the geometric information encoding results of the geometrically isolated points and the attribute information encoding results of the attribute isolated points.
[0267] Optionally, before the encoding end obtains the vertex information of isolated points in the mesh to be encoded, the device further includes:
[0268] The fourth encoding module is used to encode the vertex information of the mesh to be encoded, and set the second identifier corresponding to the encoded vertex to a preset value;
[0269] The second determining module is used to determine vertices in the grid to be encoded whose second identifier is not the preset value as isolated points in the grid to be encoded.
[0270] The three-dimensional mesh encoding device 300 in this embodiment can improve the encoding and decoding effect of three-dimensional meshes.
[0271] The three-dimensional mesh encoding device in this application embodiment can be a device, a device or electronic device with an operating system, or a component, integrated circuit, or chip in a terminal. The device or electronic device can be a mobile terminal or a non-mobile terminal. For example, a mobile terminal can include, but is not limited to, the types of terminals listed above, while a non-mobile terminal can be a server, network attached storage (NAS), personal computer (PC), television (TV), ATM, or self-service machine, etc. This application embodiment does not specifically limit the specific type of terminal.
[0272] The three-dimensional mesh encoding device provided in this application embodiment can implement the various processes implemented in the method embodiment of FIG3 and achieve the same technical effect. To avoid repetition, it will not be described again here.
[0273] It should be noted that the 3D mesh decoding method provided in this application can be executed by a 3D mesh decoding device. As an example, the device can be an electronic device or a component within an electronic device, such as a chip or circuit. This application uses the 3D mesh decoding device as an example to illustrate the 3D mesh decoding device provided in this application.
[0274] Please refer to Figure 6, which is a structural diagram of a three-dimensional mesh decoding device provided in an embodiment of this application. The decoding end includes a three-dimensional mesh decoding device. As shown in Figure 6, the three-dimensional mesh decoding device 400 includes:
[0275] The first decoding module 401 is used to decode the first encoding result in the bitstream corresponding to the grid to be decoded, and obtain the vertex information of the isolated points in the grid to be decoded.
[0276] The recovery module 402 is used to perform isolated point recovery processing on the mesh to be decoded based on the vertex information of the isolated points, so as to obtain the decoded mesh.
[0277] Optionally, the device further includes:
[0278] The second decoding module is used to decode the second encoding result in the bitstream to obtain a first identifier, which is used to indicate whether the decoding end needs to recover the isolated point;
[0279] The first decoding module is specifically used for:
[0280] If the first identifier indicates that an isolated point needs to be recovered, the first encoding result in the bitstream corresponding to the grid to be decoded is decoded.
[0281] Optionally, the device further includes:
[0282] The third decoding module is used to decode the third encoding result in the bitstream to obtain target information, and the target information is used to determine the repeated isolated points in the isolated points of the grid to be decoded;
[0283] The recovery module is specifically used for:
[0284] Based on the vertex information and target information of the isolated points, the isolated point recovery process is performed on the mesh to be decoded to obtain the decoded mesh.
[0285] Optionally, the target information includes at least one of the following:
[0286] The index information of the repeated isolated points;
[0287] The number of duplicate isolated points needs to be added.
[0288] Optionally, the first encoding result includes at least one of the geometric information encoding result of the geometrically isolated point and the attribute information encoding result of the attribute isolated point;
[0289] The bitstream corresponding to the grid to be decoded includes geometric information, which includes the geometric information encoding result of the geometrically isolated point; or, the bitstream corresponding to the grid to be decoded includes attribute information, which includes the attribute information encoding result of the attribute isolated point; or
[0290] The bitstream corresponding to the grid to be decoded includes grid difference information, which includes at least one of the geometric information encoding results of the geometrically isolated points and the attribute information encoding results of the attribute isolated points.
[0291] The three-dimensional mesh decoding device 400 in this embodiment can improve the encoding and decoding effect of three-dimensional meshes.
[0292] The 3D mesh decoding device in this application embodiment can be a device, a device or electronic device with an operating system, or a component, integrated circuit, or chip in a terminal. The device or electronic device can be a mobile terminal or a non-mobile terminal. For example, a mobile terminal can include, but is not limited to, the types of terminals listed above, while a non-mobile terminal can be a server, network attached storage (NAS), personal computer (PC), television (TV), ATM, or self-service machine, etc. This application embodiment does not specifically limit the specific type of terminal.
[0293] The three-dimensional mesh decoding device provided in this application embodiment can implement the various processes implemented in the method embodiment of FIG4 and achieve the same technical effect. To avoid repetition, it will not be described again here.
[0294] Optionally, as shown in FIG7, this application embodiment also provides an electronic device 500, including a processor 501 and a memory 502. The memory 502 stores a program or instructions that can be executed on the processor 501. For example, when the electronic device 500 is an encoding device, the program or instructions executed by the processor 501 implement the various steps of the above-described three-dimensional mesh encoding method embodiment and achieve the same technical effect. When the electronic device 500 is a decoding device, the program or instructions executed by the processor 501 implement the various steps of the above-described three-dimensional mesh decoding method embodiment and achieve the same technical effect. To avoid repetition, further details are omitted here.
[0295] This application also provides an electronic device, including: a memory configured to store video data; and a processing circuit configured to implement the various steps of the above-described mesh encoding processing method or mesh decoding processing method embodiments.
[0296] This application also provides an electronic device, including a processor and a communication interface. The communication interface is coupled to the processor, and the processor is used to run programs or instructions to implement the steps in the method embodiments shown in FIG3 or FIG4. This device embodiment corresponds to the above method embodiment, and all implementation processes and methods of the above method embodiments can be applied to this terminal embodiment and can achieve the same technical effect.
[0297] The processor or processing circuit in this application embodiment may include general-purpose processors, special-purpose processors, etc., such as central processing units (CPUs), microprocessors, digital signal processors (DSPs), artificial intelligence (AI) processors, graphics processing units (GPUs), application-specific integrated circuits (ASICs), network processors (NPs), field-programmable gate arrays (FPGAs), or other programmable logic devices, gate circuits, transistors, discrete hardware components, etc. The communication interface in this application embodiment may include transceivers, pins, circuits, buses, etc.
[0298] The aforementioned electronic devices can be terminals or other devices besides terminals, such as servers, network attached storage (NAS), etc.
[0299] The terminal can be a mobile phone, tablet computer, laptop computer, notebook computer, personal digital assistant (PDA), handheld computer, netbook, ultra-mobile personal computer (UMPC), mobile internet device (MID), augmented reality (AR), virtual reality (VR) device, mixed reality (MR) device, robot, wearable device, flight vehicle, vehicle user equipment (VUE), shipboard equipment, pedestrian user equipment (PUE), smart home (home devices with wireless communication capabilities, such as refrigerators, televisions, washing machines, or furniture), game console, personal computer (PC), ATM or self-service machine, etc. Wearable devices include: smartwatches, smart bracelets, smart earphones, smart glasses, smart jewelry (smart bracelets, smart chains, smart rings, smart necklaces, smart anklets, smart anklets, etc.), smart wristbands, smart clothing, etc. Among these, in-vehicle devices can also be referred to as in-vehicle terminals, in-vehicle controllers, in-vehicle modules, in-vehicle components, in-vehicle chips, or in-vehicle units, etc. It should be noted that the embodiments in this application do not limit the specific type of terminal.
[0300] A server can be a standalone physical server, a server cluster or distributed system consisting of multiple physical servers, or a cloud server. A cloud server can provide cloud services, cloud databases, cloud computing, cloud functions, cloud storage, network services, cloud communication, middleware services, domain name services, security services, content delivery networks (CDNs), or cloud computing services based on big data and artificial intelligence platforms.
[0301] Taking an electronic device as an example, Figure 8 is a schematic diagram of the hardware structure of a terminal implementing an embodiment of this application.
[0302] The terminal 600 includes, but is not limited to, at least some of the following components: radio frequency unit 601, network module 602, audio output unit 603, input unit 604, sensor 605, display unit 606, user input unit 607, interface unit 608, memory 609, and processor 610.
[0303] Those skilled in the art will understand that terminal 600 may also include a power supply (such as a battery) for powering various components. The power supply can be logically connected to processor 610 through a power management system, thereby enabling functions such as charging, discharging, and power consumption management through the power management system. The terminal structure shown in Figure 8 does not constitute a limitation on the terminal. The terminal may include more or fewer components than shown, or combine certain components, or have different component arrangements, which will not be elaborated here.
[0304] It should be understood that, in this embodiment, the input unit 604 may include a graphics processor 6041 and a microphone 6042. The graphics processor 6041 processes image data of still images or videos obtained by an image capture device (such as a camera) in video capture mode or image capture mode. The display unit 606 may include a display panel 6061, which may be configured in the form of a liquid crystal display, an organic light-emitting diode, or the like. The user input unit 607 includes at least one of a touch panel 6071 and other input devices 6072. The touch panel 6071 is also called a touch screen. The touch panel 6071 may include two parts: a touch detection device and a touch controller. Other input devices 6072 may include, but are not limited to, physical keyboards, function keys (such as volume control buttons, power buttons, etc.), trackballs, mice, and joysticks, which will not be described in detail here.
[0305] In this embodiment, after receiving downlink data from the network-side device, the radio frequency unit 601 can transmit it to the processor 610 for processing; in addition, the radio frequency unit 601 can send uplink data to the network-side device. Typically, the radio frequency unit 601 includes, but is not limited to, antennas, amplifiers, transceivers, couplers, low-noise amplifiers, duplexers, etc.
[0306] The memory 609 can be used to store software programs or instructions, as well as various data. The memory 609 may primarily include a first storage area for storing programs or instructions and a second storage area for storing data. The first storage area may store the operating system, application programs or instructions required for at least one function (such as sound playback, image playback, etc.). Furthermore, the memory 609 may include volatile memory or non-volatile memory, or both. The non-volatile memory may be read-only memory (ROM), programmable read-only memory (PROM), erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), or flash memory. Volatile memory can be random access memory (RAM), static random access memory (SRAM), dynamic random access memory (DRAM), synchronous dynamic random access memory (SDRAM), double data rate synchronous dynamic random access memory (DDRSDRAM), enhanced synchronous dynamic random access memory (ESDRAM), synchronous link dynamic random access memory (SLDRAM), and direct memory bus RAM (DRRAM). The memory x09 in the embodiments of this application includes, but is not limited to, these and any other suitable types of memory.
[0307] Processor 610 may include one or more processing units; optionally, processor 610 integrates an application processor and a modem processor, wherein the application processor mainly handles operations involving the operating system, user interface, and applications, and the modem processor mainly handles wireless communication signals, such as a baseband processor. It is understood that the aforementioned modem processor may also not be integrated into processor 610.
[0308] Where the terminal is an encoding terminal:
[0309] The processor 610 is used for:
[0310] Obtain vertex information of isolated points in the mesh to be encoded;
[0311] The vertex information of the isolated point is encoded to obtain a first encoding result;
[0312] Generate the bitstream corresponding to the grid to be encoded;
[0313] The bitstream includes the first encoding result.
[0314] Optionally, the processor 610 is used for:
[0315] Encode the first identifier to obtain the second encoding result;
[0316] The first identifier is used to indicate whether the decoding end needs to restore the isolated point, and the bitstream also includes the second encoding result.
[0317] Optionally, the processor 610 is used for:
[0318] Target information is determined based on the grid to be encoded, and the target information is used to determine the repeated isolated points among the isolated points of the grid to be encoded;
[0319] The target information is encoded to obtain a third encoding result;
[0320] The bitstream also includes the third encoding result.
[0321] Optionally, the target information includes at least one of the following:
[0322] The index information of the repeated isolated points;
[0323] The number of duplicate isolated points needs to be added.
[0324] Optionally, the processor 610 is specifically used for:
[0325] Obtain the reconstructed grid corresponding to the grid to be encoded;
[0326] The reconstructed mesh is compared with the mesh to be encoded to obtain mesh difference information, wherein the mesh difference information includes the target information.
[0327] Optionally, the processor 610 is specifically used for:
[0328] Obtain the vertex information of the duplicate isolated points in the isolated points of the mesh to be encoded, and the number of duplicate points to be added to the duplicate isolated points;
[0329] The target information is determined based on the vertex information of the repeated isolated points and the number of repeated points to be added to the repeated isolated points.
[0330] Optionally, the first encoding result includes at least one of the geometric information encoding result of the geometrically isolated point and the attribute information encoding result of the attribute isolated point;
[0331] The bitstream corresponding to the grid to be encoded includes geometric information, which includes the geometric information encoding result of the geometrically isolated point; or, the bitstream corresponding to the grid to be encoded includes attribute information, which includes the attribute information encoding result of the attribute isolated point; or
[0332] The bitstream corresponding to the grid to be encoded includes grid difference information, which includes at least one of the geometric information encoding results of the geometrically isolated points and the attribute information encoding results of the attribute isolated points.
[0333] Optionally, the processor 610 is used for:
[0334] The vertex information of the mesh to be encoded is encoded, and the second identifier corresponding to the encoded vertex is set to a preset value;
[0335] Vertices whose second identifier is not the preset value in the vertices of the grid to be encoded are identified as isolated points in the grid to be encoded.
[0336] When the terminal is a decoding end:
[0337] The processor 610 is used for:
[0338] Decode the first encoding result in the bitstream corresponding to the grid to be decoded to obtain the vertex information of the isolated points in the grid to be decoded.
[0339] Based on the vertex information of the isolated points, the isolated point recovery process is performed on the mesh to be decoded to obtain the decoded mesh.
[0340] Optionally, the processor 610 is used for:
[0341] The second encoding result in the bitstream is decoded to obtain a first identifier, which is used to indicate whether the decoding end needs to recover the isolated point;
[0342] The processor 610 is specifically used for:
[0343] If the first identifier indicates that an isolated point needs to be recovered, the first encoding result in the bitstream corresponding to the grid to be decoded is decoded.
[0344] Optionally, the processor 610 is used for:
[0345] The third encoding result in the bitstream is decoded to obtain target information, which is used to determine the repeated isolated points in the isolated points of the grid to be decoded;
[0346] The processor 610 is specifically used for:
[0347] Based on the vertex information and target information of the isolated points, the isolated point recovery process is performed on the mesh to be decoded to obtain the decoded mesh.
[0348] Optionally, the target information includes at least one of the following:
[0349] The index information of the repeated isolated points;
[0350] The number of duplicate isolated points needs to be added.
[0351] Optionally, the first encoding result includes at least one of the geometric information encoding result of the geometrically isolated point and the attribute information encoding result of the attribute isolated point;
[0352] The bitstream corresponding to the grid to be decoded includes geometric information, which includes the geometric information encoding result of the geometrically isolated point; or, the bitstream corresponding to the grid to be decoded includes attribute information, which includes the attribute information encoding result of the attribute isolated point; or
[0353] The bitstream corresponding to the grid to be decoded includes grid difference information, which includes at least one of the geometric information encoding results of the geometrically isolated points and the attribute information encoding results of the attribute isolated points.
[0354] The terminal in this embodiment can improve the encoding and decoding effect of three-dimensional meshes.
[0355] It is understood that the implementation process of each implementation method mentioned in this embodiment can refer to the relevant description of the mesh encoding processing method or mesh decoding processing method in the method embodiment, and achieve the same or corresponding technical effects. To avoid repetition, it will not be described again here.
[0356] This application also provides a readable storage medium storing a program or instructions. When the program or instructions are executed by a processor, they implement the various processes of the above-described three-dimensional mesh encoding method embodiment, or when the program or instructions are executed by a processor, they implement the various processes of the above-described three-dimensional mesh decoding method embodiment, and can achieve the same technical effect. To avoid repetition, these will not be described again here.
[0357] The processor mentioned above is the processor in the terminal described in the above embodiments. The readable storage medium includes computer-readable storage media, such as computer read-only memory (ROM), random access memory (RAM), magnetic disk, or optical disk. In some examples, the readable storage medium may be a non-transient readable storage medium.
[0358] This application embodiment also provides a chip, which includes a processor and a communication interface. The communication interface is coupled to the processor. The processor is used to run programs or instructions to implement the various processes of the above-described three-dimensional mesh encoding method embodiment, or to implement the various processes of the above-described three-dimensional mesh decoding method embodiment, and can achieve the same technical effect. To avoid repetition, it will not be described again here.
[0359] It should be understood that the chips mentioned in the embodiments of this application may include system-on-a-chip (also known as system chip, chip system, or system-on-a-chip) or discrete display chips, etc.
[0360] This application also provides a computer program / program product, which is stored in a storage medium and executed by at least one processor to implement the various processes of the above-described three-dimensional mesh encoding method or three-dimensional mesh decoding method embodiments, and can achieve the same technical effect. To avoid repetition, it will not be described again here.
[0361] This application also provides an encoding / decoding system, including an encoding end device and a decoding end device. The encoding end device can be used to perform the steps of the three-dimensional mesh encoding method described above, and the decoding end device can be used to perform the steps of the three-dimensional mesh decoding method described above.
[0362] It should be noted that, in this document, the terms "comprising," "including," or any other variations thereof are intended to cover non-exclusive inclusion, such that a process, method, article, or apparatus that comprises a list of elements includes not only those elements but also other elements not expressly listed, or elements inherent to such a process, method, article, or apparatus. Without further limitations, an element defined by the phrase "comprising one..." does not exclude the presence of other identical elements in the process, method, article, or apparatus that includes that element. Furthermore, it should be noted that the scope of the methods and apparatuses in the embodiments of this application is not limited to performing functions in the order shown or discussed, but may also include performing functions substantially simultaneously or in the reverse order, depending on the functions involved. For example, the described methods may be performed in a different order than described, and various steps may be added, omitted, or combined. Additionally, features described with reference to certain examples may be combined in other examples.
[0363] From the above description of the embodiments, those skilled in the art can clearly understand that the methods of the above embodiments can be implemented by means of computer software products plus necessary general-purpose hardware platforms, and of course, they can also be implemented by hardware. The computer software product is stored in a storage medium (such as ROM, RAM, magnetic disk, optical disk, etc.) and includes several instructions to cause the terminal or network-side device to execute the methods described in the various embodiments of this application.
[0364] The embodiments of this application have been described above with reference to the accompanying drawings. However, this application is not limited to the specific embodiments described above. The specific embodiments described above are merely illustrative and not restrictive. Those skilled in the art can make many other implementations under the guidance of this application without departing from the spirit and scope of the claims. All of these implementations are within the protection scope of this application.
Claims
1. A three-dimensional mesh encoding method, comprising: The encoding end obtains vertex information of isolated points in the mesh to be encoded; The encoding end encodes the vertex information of the isolated point to obtain a first encoding result; The encoding end generates the bitstream corresponding to the grid to be encoded; The bitstream includes the first encoding result.
2. The method according to claim 1, further comprising: The encoding end encodes the first identifier to obtain the second encoding result; The first identifier is used to indicate whether the decoding end needs to restore the isolated point, and the bitstream also includes the second encoding result.
3. The method according to claim 1 or 2, further comprising: The encoding end determines target information based on the grid to be encoded, and the target information is used to determine the repeated isolated points in the isolated points of the grid to be encoded; The encoding end encodes the target information to obtain a third encoding result; The bitstream also includes the third encoding result.
4. The method according to claim 3, wherein, The target information includes at least one of the following: The index information of the repeated isolated points; The number of duplicate isolated points needs to be added.
5. The method according to claim 3 or 4, wherein, The encoding end determines the target information based on the grid to be encoded, including: The encoding end obtains the reconstructed grid corresponding to the grid to be encoded; The encoding end compares the reconstructed mesh with the mesh to be encoded to obtain mesh difference information, wherein the mesh difference information includes the target information.
6. The method according to claim 3 or 4, wherein, The encoding end determines the target information based on the grid to be encoded, including: The encoding end obtains the vertex information of the repeated isolated points in the isolated points of the mesh to be encoded and the number of repeated points to be added to the repeated isolated points; The encoding end determines the target information based on the vertex information of the repeated isolated points and the number of repeated points to be added to the repeated isolated points.
7. The method according to any one of claims 1-6, wherein, The first encoding result includes at least one of the geometric information encoding result of the geometrically isolated point and the attribute information encoding result of the attribute isolated point; The bitstream corresponding to the grid to be encoded includes geometric information, which includes the geometric information encoding result of the geometrically isolated point; or, the bitstream corresponding to the grid to be encoded includes attribute information, which includes the attribute information encoding result of the attribute isolated point. or The bitstream corresponding to the grid to be encoded includes grid difference information, which includes at least one of the geometric information encoding results of the geometrically isolated points and the attribute information encoding results of the attribute isolated points.
8. The method according to any one of claims 1-7, wherein, Before the encoding end obtains the vertex information of isolated points in the mesh to be encoded, the method further includes: The encoding end encodes the vertex information of the mesh to be encoded and sets the second identifier corresponding to the encoded vertex to a preset value; The encoding end determines vertices in the grid to be encoded whose second identifier is not the preset value as isolated points in the grid to be encoded.
9. A three-dimensional mesh decoding method, comprising: The decoding end decodes the first encoding result in the bitstream corresponding to the grid to be decoded to obtain the vertex information of the isolated points in the grid to be decoded. The decoding end performs isolated point recovery processing on the mesh to be decoded based on the vertex information of the isolated points to obtain the decoded mesh.
10. The method of claim 9, further comprising: The decoding end decodes the second encoding result in the bitstream to obtain a first identifier, which is used to indicate whether the decoding end needs to recover the isolated point; The decoding end decodes the first encoding result in the bitstream corresponding to the grid to be decoded, including: When the first identifier indicates that an isolated point needs to be recovered, the decoding end decodes the first encoding result in the bitstream corresponding to the grid to be decoded.
11. The method according to claim 9 or 10, further comprising: The decoding end decodes the third encoding result in the bitstream to obtain target information, which is used to determine the repeated isolated points in the isolated points of the grid to be decoded; The decoding end performs isolated point recovery processing on the mesh to be decoded based on the vertex information of the isolated points to obtain the decoded mesh, including: The decoding end performs isolated point recovery processing on the mesh to be decoded based on the vertex information of the isolated points and the target information to obtain the decoded mesh.
12. The method according to claim 11, wherein, The target information includes at least one of the following: The index information of the repeated isolated points; The number of duplicate isolated points needs to be added.
13. The method according to any one of claims 9-12, wherein, The first encoding result includes at least one of the geometric information encoding result of the geometrically isolated point and the attribute information encoding result of the attribute isolated point; The bitstream corresponding to the grid to be decoded includes geometric information, which includes the geometric information encoding result of the geometric isolated point; or, the bitstream corresponding to the grid to be decoded includes attribute information, which includes the attribute information encoding result of the attribute isolated point. or The bitstream corresponding to the grid to be decoded includes grid difference information, which includes at least one of the geometric information encoding results of the geometrically isolated points and the attribute information encoding results of the attribute isolated points.
14. A three-dimensional mesh encoding device, comprising: The acquisition module is used to acquire vertex information of isolated points in the mesh to be encoded; The first encoding module is used to encode the vertex information of the isolated point to obtain a first encoding result; The generation module is used to generate the bitstream corresponding to the grid to be encoded; The bitstream includes the first encoding result.
15. The apparatus of claim 14, further comprising: The second encoding module is used to encode the first identifier to obtain the second encoding result; The first identifier is used to indicate whether the decoding end needs to restore the isolated point, and the bitstream also includes the second encoding result.
16. The apparatus according to claim 14 or 15, further comprising: The first determining module is used to determine target information based on the grid to be encoded, wherein the target information is used to determine duplicate isolated points among the isolated points of the grid to be encoded; The third encoding module is used to encode the target information to obtain a third encoding result; The bitstream also includes the third encoding result.
17. A three-dimensional mesh decoding device, comprising: The first decoding module is used to decode the first encoding result in the bitstream corresponding to the grid to be decoded, and obtain the vertex information of the isolated points in the grid to be decoded. The recovery module is used to perform isolated point recovery processing on the mesh to be decoded based on the vertex information of the isolated points, so as to obtain the decoded mesh.
18. The apparatus of claim 17, further comprising: The second decoding module is used to decode the second encoding result in the bitstream to obtain a first identifier, which is used to indicate whether the decoding end needs to recover the isolated point; The first decoding module is specifically used for: If the first identifier indicates that an isolated point needs to be recovered, the first encoding result in the bitstream corresponding to the grid to be decoded is decoded.
19. The apparatus according to claim 17 or 18, further comprising: The third decoding module is used to decode the third encoding result in the bitstream to obtain target information, and the target information is used to determine the repeated isolated points in the isolated points of the grid to be decoded; The recovery module is specifically used for: Based on the vertex information and target information of the isolated points, the isolated point recovery process is performed on the mesh to be decoded to obtain the decoded mesh.
20. An electronic device comprising a processor and a memory, the memory storing a program or instructions executable on the processor, the program or instructions, when executed by the processor, implementing the steps of the three-dimensional mesh encoding method as claimed in any one of claims 1 to 8, or implementing the steps of the three-dimensional mesh decoding method as claimed in any one of claims 9 to 13.
21. A readable storage medium storing a program or instructions that, when executed by a processor, implement the steps of the three-dimensional mesh encoding method as claimed in any one of claims 1 to 8, or the steps of the three-dimensional mesh decoding method as claimed in any one of claims 9 to 13.
22. A chip comprising a processor and a communication interface coupled to the processor, the processor being configured to run a program or instructions to implement the steps of the three-dimensional mesh encoding method as claimed in any one of claims 1 to 8, or to implement the steps of the three-dimensional mesh decoding method as claimed in any one of claims 9 to 13.
23. A computer program / program product that, when executed by at least one processor, implements the steps of the three-dimensional mesh encoding method as claimed in any one of claims 1 to 8, or implements the steps of the three-dimensional mesh decoding method as claimed in any one of claims 9 to 13.
Citation Information
Patent Citations
Three-dimensional deformation model generation method and system based on nuclear magnetic resonance data and electronic equipment
CN111080769A
Dense grid compression
CN115443485A
Coding method, decoding method and device for isolated point of point cloud
CN115474036A
Encoding and decoding of texture mapping data in textured 3D mesh models
US20180253867A1