Arithmetic coding and decoding of mesh attributes
By using multi-parallelogram prediction and minimum stretching prediction techniques to predict mesh properties, and combining them with arithmetic encoding and decoding techniques, the efficiency of mesh encoding and decoding is improved, achieving a compression gain of 0.25% to 1.3%.
Patent Information
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- INTERDIGITAL CE PATENT HOLDINGS SAS
- Filing Date
- 2024-09-26
- Publication Date
- 2026-05-01
AI Technical Summary
Existing mesh encoding and decoding systems are inefficient in encoding and decoding the properties of each vertex and/or each face of the mesh, especially for encoding and decoding three-dimensional spatial positions and texture coordinates, where efficiency needs to be improved.
Vertex attributes are predicted using multi-parallelogram prediction and minimum stretching prediction techniques. Different contexts are used for separate entropy encoding, and arithmetic encoding and decoding techniques are combined to process the prediction residuals, including the use of separate index tables and extended corner table data structures.
It improves the efficiency of grid encoding and decoding, provides a compression gain of 0.25% to 1.3%, and simplifies binarization and context allocation schemes.
Smart Images

Figure CN121970343A_ABST
Abstract
Description
[0001] Cross-referencing This application claims priority to European Patent Application No. 23306660.4, entitled “Arithmetic Coding of Mesh Attributes”, filed on 2 October 2023, which is incorporated herein by reference in its entirety. Background Technology
[0002] This disclosure relates to systems and methods for encoding and decoding meshes. Edgebreaker is a technique capable of efficiently encoding and decoding the connectivity of triangular meshes. In its most straightforward implementation, a mesh encoded using an edgebreaker is represented by an ordered sequence of symbols C, L, E, R, and S, referred to as the "CLERS" sequence. Generally, starting from an initial triangle, these symbols describe the different ways to attach new triangles, providing information about whether and how the different edges of the new triangles are connected to one or more existing triangles.
[0003] Following the MPEG V-Mesh (now renamed V-DMC) solicitation of proposals, a solution proposed by Apple Inc. was selected as the basis for the MPEG V-Mesh Test Model (TM). This proposal is described in “m59281 - [V-CG] Apple's Dynamic Mesh Coding CfPResponse” by K. Mammou, J. Kim, A. Tourapis, and D. Podborski, Apple Inc., 2022. A schematic diagram of the proposal is included in this publication. Figure 1 and Figure 2 Provided by China.
[0004] For some frames, the test model encodes the base mesh using a static mesh codec and then subdivides it to obtain an approximation of the original mesh. Currently, the V-Mesh test model encodes the base mesh using Google Draco's edgebreaker-based mesh encoder. Specifically, this implementation uses a "spiral reversi" version of the edgebreaker, such as M. Isenburg and J. Snoeyink's "Spirale Reversi: Reverse decoding of the edgebreaker encoding". Computational Geometry As described in Volume 20, pp. 39-52, 2001.
[0005] While edgebreaker encoding provides an efficient way to encode and decode the connectivity of the underlying mesh, practical mesh encoding and decoding systems also involve encoding and decoding the properties of each vertex and / or each face of the mesh. These properties can include the three-dimensional spatial position (x, y, z) of each vertex and / or the two-dimensional texture coordinates (u, v) of the vertex in the texture map. Therefore, it is desirable to improve the efficiency of encoding and decoding these properties. Summary of the Invention
[0006] According to some embodiments, a mesh coding method includes: obtaining an input mesh, the input mesh including vertices having at least one attribute; for each of a plurality of vertices, obtaining a prediction of the corresponding attribute using one of at least two prediction techniques, the prediction techniques including a first prediction technique and a second prediction technique; determining a first prediction residual set, the first prediction residual set including prediction residuals for each of the attributes predicted using the first prediction technique; determining a second prediction residual set, the second prediction residual set including prediction residuals for each of the attributes predicted using the second prediction technique; and performing separate entropy coding on the first prediction residual set and the second prediction residual set.
[0007] In some embodiments, the attribute includes at least one location coordinate, and the first prediction technique includes a multi-parallelogram prediction technique.
[0008] In some embodiments, the attribute includes at least one texture coordinate, and the first prediction technique includes a minimum stretch prediction technique.
[0009] In some embodiments, the second prediction technique includes using previously encoded attribute values as a predictor. In some embodiments, the second prediction technique includes using the average of one or more previously encoded attribute values as a predictor.
[0010] In some embodiments, separate entropy encoding of the first and second prediction residual sets includes arithmetic encoding and decoding of the first and second prediction residual sets using different contexts.
[0011] According to some embodiments, a mesh decoding method includes: obtaining at least a first set of prediction residuals and a second set of prediction residuals; for at least one vertex in the mesh, determining an attribute prediction technique for the vertex from at least two attribute prediction techniques; obtaining an attribute prediction for the vertex using the determined prediction technique; selecting one of the sets of prediction residuals based on the determined prediction technique; obtaining residuals associated with the vertex from the selected set of prediction residuals; and reconstructing the attributes of the vertex based on the obtained predictions and the obtained residuals.
[0012] Some embodiments also include entropy decoding of the first set of prediction residuals and separate entropy decoding of the second set of prediction residuals. In some such embodiments, separate entropy decoding of the first and second sets of prediction residuals includes arithmetic decoding of the first and second sets of prediction residuals using different contexts.
[0013] Additional embodiments include an apparatus comprising one or more processors configured to perform any of the methods described herein.
[0014] Additional embodiments include an apparatus comprising at least one processor and a computer-readable medium (which may be non-transitory) storing instructions for performing any of the methods described herein.
[0015] Additional embodiments include a computer-readable medium storing instructions for performing any of the methods described herein.
[0016] Additional embodiments include a computer-readable medium that stores a grid encoded according to any of the methods described herein.
[0017] Additional embodiments include a signal that transmits a grid encoded according to any of the methods disclosed herein. Attached Figure Description
[0018] Figure 1 This is a functional block diagram of an example grid coding system.
[0019] Figure 2 This is a functional block diagram of an example grid decoding system.
[0020] Figure 3 An example of an edgebreaker mesh codec according to some embodiments is illustrated.
[0021] Figure 4 This is a flowchart of the encoding process according to some embodiments.
[0022] Figure 5 This is a flowchart of the decoding process according to some embodiments.
[0023] Figure 6 The illustration shows an example of a portion of a grid, illustrating the information that can be stored in a corner table data structure.
[0024] Figure 7 An example of an extended angle table used to support UV coordinate and normal vector attributes is shown.
[0025] Figure 8 The diagram illustrates the extended corner table data structure used by the algorithm in memory.
[0026] Figures 9A-9B The illustration shows example computer code that can be used to implement arithmetic encoding and decoding for predictive residuals according to some embodiments.
[0027] Figures 10A-10B The illustration shows example computer code that can be used to perform arithmetic decoding of predictive residuals according to some embodiments.
[0028] Figure 11 The illustration shows example computer code according to some embodiments, which can be used to determine different sets of prediction residuals for subsequent entropy encoding and decoding.
[0029] Figure 12 The illustration shows example computer code that, in some embodiments, can be used to select prediction residuals from a set of prediction residuals from different entropy decodings and reconstruct the properties of vertices.
[0030] Figure 13 The illustration shows an example of the compression performance of the embodiments described herein relative to existing methods for underlying trellis coding in V-DMC. The results for each CTC test sequence under C0 conditions are averaged over 32 frames.
[0031] Figures 14A-14B The illustration shows the compression performance of the embodiments described herein relative to existing methods for underlying mesh coding in V-DMC. The results for each CTC test sequence under C1 conditions are averaged over 32 frames.
[0032] Figures 15A-15B The illustration shows the compression performance of the embodiments described herein relative to existing methods for basic mesh coding in V-DMC. The results for each CTC test sequence under C2 conditions are averaged over 32 frames.
[0033] Figure 16 It is a functional block diagram that can be used to implement some embodiments of the system. Detailed Implementation
[0034] Edgebreaker (EB) is a technique for encoding and decoding (collectively referred to as "encoding and decoding") the topology (connectivity and handles) of a mesh. It is the core of the algorithm and proposes to use a predictor of the position of the vertices to generate some entropy-encoded data efficiently.
[0035] Some implementations include support for texture coordinate encoding using a unique index table or a separate index table.
[0036] Some embodiments include multi-parallelogram prediction and stretching prediction. Some such embodiments also provide support for dummy points and separate index tables when needed. In some embodiments, multi-parallelogram prediction can be implemented as in D. Cohen-Or, R. Cohen and R. Irony, “Multi-way geometry encoding,” School of Computer Science, Tel Aviv University, Tel Aviv, 2002; and M. Isenburg and P. Alliez, "Compressing polygon mesh geometry with parallelogram prediction," IEEE Visualization , no.doi: 10.1109 / VISUAL.2002.1183768, pp. 141-146, 2002, as described in [reference needed]. Some embodiments use minimum stretch prediction (e.g., for UV coordinates), as in [reference needed] and [reference needed], "Compressing TextureCoordinates with Selective Linear Predictions," [reference needed]. Computer Graphics International As described in Tokyo, Japan, 2003.
[0037] Some implementations include Dirac and / or RANS arithmetic codecs (AC).
[0038] Figure 3 The illustration shows an example of an edgebreaker mesh codec according to some embodiments. The top row represents the encoding lines, and the bottom row represents the decoding lines. Figure 3As illustrated, the example embodiment includes some or all of the following. During encoding, preprocessing 302 can be used to remove potential connectivity issues (non-manifold edges and vertices) that may exist on the input mesh. This removal is performed because the edgebreaker algorithm cannot handle meshes with such connectivity issues on its own. In some embodiments, removing non-manifold edges and vertices involves duplicating several points. Some embodiments keep track of those duplicated vertices to merge them during decoding. This allows for a reduction in the number of points in the decoded mesh, but requires sending some additional information in the bitstream. In some embodiments, preprocessing 302 also includes adding some virtual points to fill potential holes on the surface, since the edgebreaker algorithm cannot handle holes alone. The example embodiment fills the holes before encoding and recreates the holes after decoding. The example embodiment uses “virtual” virtual points and generates and encodes virtual triangles attached to these virtual points, but the 3D positions of those points are not encoded or decoded. In some embodiments, vertex attributes are quantized if needed. Those attributes can be provided to the codec in a quantized form.
[0039] The example implementation encodes mesh connectivity at 304 using a modified version of the edgebreaker algorithm, which generates a CLERS table (a table consisting of symbols “C”, “L”, “E”, “R”, and “S”). This stage also generates some tables in memory for the attribute prediction stage. Vertex attributes are then predicted at 306, starting with position attributes. Other attributes are then predicted, ultimately depending on the position prediction, which is the case for, for example, texture UV coordinates. Configuration and metadata are also provided in the bitstream; the CLERS table, some other connectivity data, and all attribute prediction residuals are entropy-encoded and added to the bitstream at 310.
[0040] In the example decoding method, all entropy-encoded sub-bitstreams are entropy-decoded at position 312. Mesh connectivity is reconstructed at position 314 using the CLERS table and the edgebreaker algorithm. Additional information is added to manage handles describing the topology. All other vertex positions are predicted at position 316 using the mesh connectivity and the minimum set of vertex positions represented in 3D coordinates. Attribute residuals are then applied to correct the predictions, yielding the reconstructed vertex positions. Other attributes are also decoded at position 316, potentially depending on the decoded positions (e.g., UV coordinates). The connectivity of attributes using a separate index table is reconstructed using the binary seam information of each edge from the entropy-encoded data.
[0041] In the post-processing stage, the virtual triangle is removed at position 320. Optionally, if the codec is configured to perform lossless encoding / decoding, the non-manifold problem can be recreated. Optionally, if the model is quantized by the encoder, the vertex attributes can be dequantized.
[0042] Figure 4 This is a flowchart of the encoding process according to some embodiments.
[0043] Figure 5 This is a flowchart of the decoding process according to some embodiments.
[0044] Overview of the angle table In J. Rossignac, "3D compression made simple: Edgebreaker withZipandWrap on a corner-table," in Proceedings International Conference on Shape Modeling and Applications A corner table data structure for representing meshes is described in Genoa, Italy, 2001; and further described in J. Rossigniac, "Course on triangle meshes and cornertable," 2006.
[0045] Figure 6 A portion of a triangular mesh is shown, illustrating the information that can be stored in a corner table (also known as an OV table). For each corner index c in the corner table, the notation cv=3 identifies the index of the vertex containing that corner. The index ct=0 is the index of the triangle containing corner c. Within this triangle, the index cn=0 identifies the next corner (counter-clockwise), and cp=1 identifies the previous corner. The index co identifies the corner opposite corner c. For example, in... Figure 6 In this context, angle co = 5 is opposite to angle c = 2 (and vice versa). The index cl identifies the angle to the left of angle c, and the index cr identifies the angle to the right of angle c. For example... Figure 6 The connectivity shown can be recorded in a corner table with entries, which include the following: Angular index Vertex Index Diagonal index 0 1 7 1 2 8 2 3 5 3 2 9 4 1 6 5 4 2
[0046] The "corner index" column does not need to be explicitly stored in the table, as it corresponds to the position of each row in the table. The triangle index for each corner can be calculated as follows: ct = INT(c / 3).
[0047] Therefore, angles 0, 1, and 2 are all in the triangle with index 0; angles 3, 4, and 5 are all in the triangle with index 1; and so on. The additional relationships between entries in the angle table can be represented as follows: cn = 3c.t + (c+1)MOD 3 cp = cnn cl = cpo cr = cno.
[0048] In some embodiments, an additional table may be used to store the position coordinates of each vertex.
[0049] Figure 7 The illustration shows an example of an extended corner table to support UV coordinate and normal vector attributes, which use separate index tables TC / OTC and N / ON, respectively. Texture coordinates and normal vectors are stored in two additional separate tables.
[0050] like Figure 7 As illustrated, the example embodiment extends the corner table data structure to support additional attributes with or without secondary attribute indexes. In cases where the mesh lacks a separate index to dereference UV coordinate attributes, the example embodiment includes a UV coordinate table alongside the position table. The UV coordinate table is then dereferenced using V, as for position. Furthermore, some embodiments add two tables, TC and OTC, to encode and decode UV coordinate connectivity (dereference UV coordinates). TC stores UV coordinate indices, and OTC stores the diagonal of UV connectivity. The same principle can be applied to adding support for per-vertex normals (N / ON / normal_vectors) or per-vertex colors (C / OC / colors).
[0051] Figure 8 The diagram illustrates the extended corner table data structure used by the algorithm in memory. Figure 8 This paper summarizes the data structures used to store all the information in the extended vertex table. This approach can be extended for any vertex attribute type to use or not use a dedicated index table, which models pairs (index table / relative table).
[0052] Overview of Predictive Residual Coding Example implementations use arithmetic encoding / decoding to reduce the bitstream size associated with several syntax elements. In some embodiments, two entropy encoding / decoding engines are available for reducing the size of prediction residuals associated with attributes such as position or texture coordinates (dirac or rans). The encoded residuals may include residual position coordinates, which can be represented as mesh_position_residual[i][j]. Other residuals can be represented using mesh_attribute_residual[i][j][k]. Since arithmetic encoding / decoding is used in other parts of the specification (e.g., AC-based displacement encoding / decoding), using a single engine and a general and reasonable binarization scheme may be superior to using two entropy encoding / decoding engines.
[0053] The example implementation described herein has been found to provide an average compression gain of 0.25% for basic grid intra-frame encoding and decoding under C1 and C2 conditions, and 1.3% under C0 condition, while simplifying binarization and context allocation schemes, compared to VDMC v5.0 CTC. Current techniques for encoding prediction residuals are effective, but not necessarily optimal.
[0054] When traversing position or texture UV coordinate values, there are two main cases. The first case is where the value cannot be predicted (this is the initial case for each connected component), so no encoding or decoding is performed on the residual. The second case is where the prediction can be determined based on previously encoded values, and the residual is generated as the difference between the value to be encoded and the predicted value. In the second case, it is possible to distinguish between two categories of the residual: • In the first category, the predicted values are determined using one or more parallelogram predictions (prediction for location) or stretch predictions (prediction for texture UV coordinates). The residuals obtained in this category are referred to as “fine” residuals in this paper.
[0055] • In the second category, parallelogram prediction (prediction for position) or stretch prediction (prediction for texture UV coordinates) is not available, but another technique is still used to make predictions, such as using encoded position or UV coordinates, or using the average of two or more such coordinates. In this category, the resulting residuals are referred to in this paper as “coarse” residuals.
[0056] In the example embodiment, the residuals are grouped using those categories and encoded separately in two batches. It has been found that these two batches have different statistical distributions, and that encoding the batches separately provides a higher level of compression. In this example embodiment, encoding performance can be improved while simplifying the encoding scheme.
[0057] In some embodiments, truncated unary and k-order exponent Golomb codes are used to encode / decode signed values for binarizing their absolute values (the related parsing schemes described below apply to unsigned integers), and for adding bin (binary symbol) elements to encode non-empty values of the symbols. Encoding / decoding depends on a set of parameters: maxOffset, k, maxTuContext, maxPfxContext, and maxSfxContext.
[0058] Such embodiments may use the following location-specific parameters: - maxOffset = 7 - k = 2 - maxTuContext = 3 (coarse gain value), or 2 (fine granularity value) - maxPfxContext = maxSfxContext = 12.
[0059] The following shows the detailed encoding and decoding operations of the position residual (using coordinate indexes in the outer loop and vertex identifiers in the inner loop).
[0060] The detailed encoding and decoding operations for texture UV coordinates can follow the same scheme, but the following modifications are required: - The UV coordinate values have a dimension of 2, while the xyz coordinate values have a dimension of 3. - Iterate through the value indices in the outer loop, then iterate through the coordinate indices (instead of iterating through the coordinate indices first, then iterating through the value indices of the positions).
[0061] In some embodiments, signed values are first converted to unsigned values using alternating encoding (0=>0, 1=>1, -1=>2, 2=>3, -2=>4, etc.) or (0=>0, -1=>1, 1=>2, -2=>3, 2=>4, etc.).
[0062] In some embodiments, multiple contexts can be associated with a fixed probability of 0.5 (bypass encoding / decoding, using StaticBitModel, dirac::SchroContextFixed, where the probability is set to 0x8000; / / p=0.5).
[0063] Different embodiments may use different loop orders for residual encoding and decoding. For example, in some embodiments, the outer loop iterates through different vertices, and the inner loop iterates through different attribute components (e.g., different components of xyz or uv coordinates); in other embodiments, the outer loop iterates through vertices with different attribute components, and the inner loop iterates through different vertices. (It may be noted that not all vertices are traversed by these loops; only those with associated encoded residuals are traversed.) In some embodiments, the loop order for different attributes (e.g., position coordinates versus uv texture coordinates) may be different. In some embodiments, the loop order for different sets of residuals (e.g., coarse residuals versus fine residuals) may be different.
[0064] The following section presents an example of a mesh encoding and decoding process according to this disclosure.
[0065] As detailed below, some embodiments encode / decode arrays of residuals corresponding to two defined classes (“coarse” / “fine”) separately. Other embodiments use a single arithmetic encoder / decoder to jointly encode / decode the residuals in those classes, dynamically switching the binarization scheme and associated context according to the traversal-defined order used during the prediction process, depending on the consecutive residual classes associated with the consecutive residual values to be encoded / decoded.
[0066] In some embodiments, this encoding / decoding is performed online during the prediction traversal. In other embodiments, this encoding / decoding is performed offline after / before the prediction traversal.
[0067] In some embodiments, a third array associated with location / attribute prediction is used, which contains unpredicted values. Typically, at the beginning of each connected component, the first value is not predicted. During location / attribute traversal, it can be stored in a specific array for prediction (e.g., the sVertices array) and encoded separately using a specific binarization scheme.
[0068] In some embodiments, the class definition can be extended to handle three classes ("raw" / absolute value, "fine" and "coarse" residuals) that can be jointly encoded / decoded.
[0069] The example implementation also includes modifications to some syntax elements used in residual encoding and decoding.
[0070] Example encoding process for positional residuals The following section describes an example of the encoding and decoding process for positional residuals. The same method can also be used for encoding and decoding texture UV coordinates.
[0071] A mesh encoding method according to some embodiments includes obtaining an input mesh comprising vertices having at least one attribute, such as xyz position and / or uv coordinates. For each of a plurality of vertices, a prediction for the corresponding attribute is obtained using one of at least two prediction techniques, including a first prediction technique and a second prediction technique. Prediction techniques can be categorized by the expected quality of the obtained predictions. For example, a prediction technique expected to provide higher quality predictions may be described as producing “fine” residuals, while a prediction technique expected to provide lower quality predictions may be described as producing “coarse” predictions. Where the relevant attribute is position, a multi-parallelogram prediction technique may be considered to provide “fine” residuals, while other prediction techniques (typically relying on fewer previously encoded positions) only provide “coarse” residuals. Where the relevant attribute is uv coordinates, a stretch prediction technique may be considered to provide “fine” residuals, while other prediction techniques (typically relying on fewer previously encoded coordinates) only provide “coarse” residuals. Coarse and fine residuals may be expected to have different statistical properties.
[0072] Figure 11 The illustrations show example computer code that can be used to determine prediction residuals in some embodiments. Figure 11 In the method shown, the predicted residuals are stored in an array oVertices. Each of those predicted residuals is further classified as coarse or fine, and the result is stored in a Boolean vector oPosFine, which can have the same size as oVertices.
[0073] Predictive residuals labeled (e.g., by oPosFine) as fine residuals constitute a first set of predictive residuals. The first set of predictive residuals includes the predictive residuals for each of the attributes predicted using a first prediction technique (e.g., multi-parallelogram prediction). Predictive residuals labeled (e.g., by oPosFine) as coarse residuals constitute a second set of predictive residuals. The second set of predictive residuals includes the predictive residuals for each of the attributes predicted using a second prediction technique (e.g., copying previously encoded or decoded values or averaging previously encoded or decoded values).
[0074] Separate entropy encoding and decoding are performed in the first residual set (fine) and the second residual set (coarse). Figures 9A-9B The illustration shows example code for implementing individual entropy encoding of location residuals for different sets, according to some embodiments. Figures 9A-9B In the example, the process performs two traversals on the array oVertices: first, it performs arithmetic encoding and decoding on the coarse residuals, and then it performs a second traversal and performs arithmetic encoding and decoding on the fine residuals.
[0075] According to some embodiments, an alternative implementation is to use two tables instead of a single array of `oVertices`. Note that this means that dynamically choosing an arithmetic encoding method is not feasible for special cases where using a single class would provide better results, such as for very small meshes or meshes with specific topologies (e.g., a single component without holes).
[0076] Some alternative embodiments are in Figure 11 Arithmetic coding is performed within the prediction loop. Then, a single codec array will contain both "coarse" and "fine" encoded residuals simultaneously, reducing the number of syntax elements required for the dual decoding operation. In this case, separate contexts can be used for separate sets of residuals. Note that using this approach means that parallel processing where arithmetic coding / decoding is decoupled from prediction and residual evaluation / use is not feasible.
[0077] Example decoding process of position residual In a grid decoding method according to some embodiments, at least a first set of prediction residuals and a second set of prediction residuals are obtained. For example, Figures 10A-10B The illustration shows example code for decoding a portion of the entropy of a bitstream into a first array `iVertices` containing fine-grained residuals and a second array `iVerticesCoarse` containing coarse residuals.
[0078] The attributes of some vertices in the mesh can be explicitly encoded into the bitstream. For other vertices, the attributes can be reconstructed from the prediction and encoding residuals. For such vertices, an attribute prediction technique is determined from at least two attribute prediction techniques. For example, when the relevant attribute is position, a multi-parallelogram prediction technique can be selected whenever sufficient previously decoded positions in a suitable mesh location are available to allow such prediction; otherwise, other prediction techniques (e.g., copying previously encoded / decoded positions) can be selected. When the relevant attribute is UV coordinates, a stretch prediction technique can be selected whenever sufficient vertices in a suitable mesh location have previously decoded UV texture coordinates. In some embodiments, the prediction technique can be explicitly signaled in the bitstream.
[0079] Using the determined prediction technique, predictions of the vertex's properties are obtained. Based on the determined prediction technique, one of the prediction residual sets is selected, for example, by selecting the iVertices array if the prediction technique is associated with fine residuals, and the iVerticesCoarse array if the prediction technique is associated with coarse residuals. The residuals associated with the vertex are obtained from the selected prediction residual set, and the vertex's relevant properties are reconstructed based on the obtained predictions and the obtained residuals (e.g., by adding the residuals to the predictions). Figure 12The document provides computer code for implementing an example decoding method based on separate arrays of coarse and fine residuals. Figure 12 The method in the paper takes two residual arrays that have undergone arithmetic decoding as input. It uses a prediction technique to predict vertex positions. Based on this prediction technique, it determines which residual array to read the residual from and reconstructs the position by adding the residual to the prediction.
[0080] Syntax and semantics of example location encoding / decoding implementation Example embodiments also include bitstreams encoded according to the methods described herein. Table 1 illustrates the syntaxes used for encoding and decoding coarse and fine positional residuals in some embodiments. Syntax elements added or modified in this embodiment compared to those used in existing residual encoding and decoding systems are indicated by a sword symbol (†).
[0081] In some embodiments, as illustrated in the examples in Table 1 (and in Table 2 below), a loop is implemented between the encoded residual values mesh_position_residual[i][j] and mesh_position_coarse_residual[i][j], where the inner loop loops over the i-th predicted position and the outer loop loops over the j-th component. For example, the mesh_position_residual[i][j] encoded as illustrated in Table 1 or Table 2 can be arranged (in an arithmetic codec format) to include all x-component residuals in the array, followed by all y-component residuals in the array, followed by all z-component residuals in the array. This arrangement is considered to improve encoding / decoding efficiency compared to a conventional arrangement (where the inner loop loops over the j-th component and the outer loop loops over the i-th position).
[0082] Table 2 illustrates alternative embodiments where a single residual array can still be used for position if it is desired (e.g., all residuals can be encoded as “fine-grained” residuals). When using a single residual array, the `mesh_position_coarse_count` syntax element can be omitted to reduce overhead. In some embodiments, a value such as `mesh_position_residuals_encoding_method` can be signaled (or calculated based on other signaled values) to identify the residual encoding method used for position residuals.
[0083] For example syntaxes such as those in Tables 1 and 2, the semantics of the newly introduced syntax elements may be as follows.
[0084] • mesh_position_coarse_residuals_count[i] specifies the size of the mesh_position_coarse_residual[i] array, which contains coarse residuals of the three components of the predicted position.
[0085] • mesh_coded_position_coarse_residuals_size specifies the size in bytes of the arithmetic codec sequence of coarse position residuals, including final byte alignment.
[0086] • mesh_position_coarse_residual[i][j] specifies the value of the coarse prediction residual associated with the j-th component at the i-th prediction position.
[0087] Syntax and semantics of example property encoding / decoding examples Table 3 illustrates example syntaxes used in some embodiments for encoding and decoding coarse and fine prediction residuals of grid properties. Syntax elements added or modified in this embodiment compared to those used in existing residual encoding / decoding systems are indicated by a sword symbol (†).
[0088] Table 4 illustrates alternative embodiments where a single residual array can still be used for attributes if it is desired (e.g., all residuals can be encoded as “fine-grained” residuals). When using a single residual array, the `mesh_attribute_coarse_count[i]` syntax element can be omitted to reduce overhead. In some embodiments, an array such as `mesh_attribute_residuals_encoding_method[i]` can be signaled (or calculated based on other signaled values) to indicate the encoding method for the i-th attribute of the mesh, thereby allowing different attributes to use different residual encoding / decoding methods.
[0089] For example syntaxes such as those in Tables 3 and 4, the semantics of the newly introduced syntax elements may be as follows.
[0090] • `mesh_attribute_residuals_encoding_method[i]` specifies the method used to encode the values in the arrays `mesh_attribute_residual[i]` and `mesh_attribute_coarse_residual[i]`. Table I-13 describes a list of supported methods for attributes when `mesh_attribute_type` equals `MESH_ATTR_TEXCOORD`, Table I-14 for attributes when `mesh_attribute_type` equals `MESH_ATTR_NORMAL`, Table I-15 for attributes when `mesh_attribute_type` equals `MESH_ATTR_COLOR`, Table I-16 for attributes when `mesh_attribute_type` equals `MESH_ATTR_MATERIAL_ID`, and Table I-17 for attributes when `mesh_attribute_type` equals `MESH_ATTR_GENERIC`.
[0091] • mesh_attribute_coarse_residuals_count[i] specifies the size of the mesh_attribute_residual[i] array, which contains the coarse residual values of the NumComponents[i] components of the i-th attribute.
[0092] • mesh_coded_attribute_coarse_residuals_size[i] specifies the byte size of the arithmetic codec sequence of the coarse prediction residual mesh_attribute_residual[i][j][k] of the i-th attribute, including the final byte alignment.
[0093] • mesh_attribute_coarse_residual[i][j][k] specifies the value of the coarse prediction residual associated with the k-th component of the j-th predicted value of the i-th attribute.
[0094] Example analysis of exponential-Golomb codes In the example embodiment, the parsing is performed by maxOffset and k In parameterization, maxOffset is the limit of the truncated unary offset encoding. k This is the order of the exp-Golomb code. First, the truncated unary code offset can be resolved as follows: .
[0095] Secondly, if the offset value equals maxOffset, the unary encoded prefix can be parsed: .
[0096] Then, if the offset value is equal to maxOffset, then the parsing can include... k + prefix and suffix: .
[0097] The result is the unsigned syntax element value val, constructed as follows: .
[0098] The example implementation allows for the use of a limited set of contexts for a truncated unary portion, and reuse of the latest context when the number of bins exceeds the number of contexts associated with that portion. This corresponds to a similar modification applied to the bin-to-context allocation for the exp Golomb suffix and prefix portions, intended to align the specification with current software implementations. Additional modifications can be implemented to explicitly allocate the bypass context when several bins can be encoded using “bypass” encoding / decoding (equal probability contexts). Some example implementations may use bypass contexts, thereby allowing some bins to be encoded / decoded using bypass encoding / decoding with a shared equal probability context.
[0099] Other embodiments can be adapted to handle signed values.
[0100] In some embodiments, the parsing is performed by maxOffset and k In parameterization, maxOffset is the limit of the truncated unary offset encoding. k This is the order of the exp-Golomb code. Additional parameters can define the number of contexts used for the following: - Truncated unary part: maxTuContext - exp Golomb prefix part: maxPfxContext - exp Golomb suffix part: maxSfxContext.
[0101] The context can be arranged into an array, such as the following items: - tuContext[maxTuContext] - pfxContext[maxPfxContext] - sfxContext[maxSfxContext].
[0102] In some embodiments, decoding of each bin element (producing a value of 0 or 1) is performed using the context ctx. .
[0103] First, the truncated unary encoded offset can be parsed: .
[0104] Secondly, if the offset value equals maxOffset, the unary encoded prefix can be parsed: .
[0105] Then, if the offset value is equal to maxOffset, the parsing includes... k + prefix and suffix: The result is the unsigned syntax element value val, constructed as follows: .
[0106] Example Results Figure 13 The illustration shows an example of the compression performance of the embodiments described herein relative to existing methods for underlying trellis coding in V-DMC. The results for each CTC test sequence under C0 conditions are averaged over 32 frames.
[0107] Figures 14A-14B The illustration shows the compression performance of the embodiments described herein relative to existing methods for underlying mesh coding in V-DMC. The results for each CTC test sequence under C1 conditions are averaged over 32 frames.
[0108] Figures 15A-15B The illustration shows the compression performance of the embodiments described herein relative to existing methods for basic mesh coding in V-DMC. The results for each CTC test sequence under C2 conditions are averaged over 32 frames.
[0109] Example System The encoding, decoding, processing, and rendering of mesh content, as described in this article, can use methods such as... Figure 16 This is achieved through a system. Figure 16This is a block diagram illustrating examples of systems in which various aspects and embodiments are implemented. System 1000 may be embodied as a device including the various components described below and configured to perform one or more aspects described in this document. Examples of such devices include, but are not limited to, various electronic devices such as personal computers, laptop computers, smartphones, tablet computers, digital multimedia set-top boxes, digital television receivers, personal video recording systems, connected home appliances, and servers. Elements of System 1000 may be embodied individually or in combination in a single integrated circuit (IC), multiple ICs, and / or discrete components. For example, in at least one embodiment, the processing elements and encoder / decoder elements of System 1000 are distributed across multiple ICs and / or discrete components. In various embodiments, System 1000 is communicatively coupled to one or more other systems or other electronic devices via, for example, a communication bus or through dedicated input and / or output ports. In various embodiments, System 1000 is configured to implement one or more aspects described in this document.
[0110] System 1000 includes at least one processor 1010 configured to execute instructions loaded therein for implementing various aspects, such as those described in this document. Processor 1010 may include embedded memory, input / output interfaces, and various other circuitry known in the art. System 1000 includes at least one memory 1020 (e.g., a volatile memory device and / or a non-volatile memory device). System 1000 includes a storage device 1040 that may include non-volatile memory and / or volatile memory, including but not limited to electrically erasable programmable read-only memory (EEPROM), read-only memory (ROM), programmable read-only memory (PROM), random access memory (RAM), dynamic random access memory (DRAM), static random access memory (SRAM), flash memory, disk drives, and / or optical disk drives. As a non-limiting example, storage device 1040 may include internal storage devices, attached storage devices (including removable and non-removable storage devices), and / or network-accessible storage devices.
[0111] System 1000 includes an encoder / decoder module 1030, which is configured to, for example, process data to provide an encoded trellis or a decoded trellis, and the encoder / decoder module 1030 may include its own processor and memory. The encoder / decoder module 1030 represents one or more modules that can be included in a device to perform encoding and / or decoding functions. It is well known that a device may include one or both encoding and / or decoding modules. Furthermore, as is known to those skilled in the art, the encoder / decoder module 1030 may be implemented as a separate element of system 1000, or may be incorporated into processor 1010 as a hardware and software combination.
[0112] Program code to be loaded onto processor 1010 or encoder / decoder 1030 to execute the various aspects described herein may be stored in storage device 1040 and subsequently loaded onto memory 1020 for execution by processor 1010. According to various embodiments, during execution of the processes described herein, one or more of processor 1010, memory 1020, storage device 1040, and encoder / decoder module 1030 may store one or more of various items. Such stored items may include, but are not limited to, input grids, decoded grids or portions of decoded grids, bitstreams, matrices, variables, and intermediate or final results obtained from processing equations, formulas, operations, and operational logic.
[0113] In some embodiments, the memory within the processor 1010 and / or encoder / decoder module 1030 is used to store instructions and provide working memory for processing required during encoding or decoding. However, in other embodiments, external memory (e.g., the processing device may be the processor 1010 or the encoder / decoder module 1030) is used for one or more of these functions. External memory may be memory 1020 and / or storage device 1040, such as volatile memory and / or non-volatile flash memory. In several embodiments, external non-volatile flash memory is used to store, for example, the operating system of a television. In at least one embodiment, a fast external dynamic volatile memory (such as RAM) is used as working memory for video encoding and decoding operations, such as for MPEG-2 (MPEG stands for Moving Picture Experts Group; MPEG-2 is also known as ISO / IEC 13818, and 13818-1 is also known as H.222, and 13818-2 is also known as H.262), HEVC (HEVC stands for High Efficiency Video Codec, also known as H.265 and MPEG-H Part 2), or VVC (Multi-Functional Video Codec, a new standard developed by the Joint Video Experts Group JVET).
[0114] Inputs to the components of System 1000 may be provided by various input devices as indicated in box 1130. Such input devices include, but are not limited to: (i) a radio frequency (RF) section that receives, for example, RF signals transmitted over the air by a broadcaster; (ii) a component (COMP) input terminal (or a set of COMP input terminals); (iii) a universal serial bus (USB) input terminal; and / or (iv) a high-definition multimedia interface (HDMI) input terminal. Other examples include composite video.
[0115] In various embodiments, the input device of block 1130 has associated corresponding input processing elements as known in the art. For example, the RF section may be associated with elements adapted to: (i) select a desired frequency (also referred to as selecting a signal or limiting a signal band to a certain frequency band), (ii) downconvert the selected signal, (iii) further band-limit the signal to a narrower frequency band to select, for example, a signal frequency band that may be referred to as a channel in some embodiments, (iv) demodulate the downconverted and band-limited signal, (v) perform error correction, and (vi) demultiplex to select a desired data packet stream. The RF section in various embodiments includes one or more elements for performing these functions, such as frequency selectors, signal selectors, band limiters, channel selectors, filters, downconverters, demodulators, error correctors, and demultiplexers. The RF section may include a tuner that performs various of these functions, including, for example, downconverting a received signal to a lower frequency (e.g., intermediate frequency or near-baseband frequency) or baseband. In one set-top box embodiment, the RF section and its associated input processing elements receive RF signals transmitted via a wired (e.g., cable) medium and perform frequency selection by filtering, down-converting, and re-filtering to a desired frequency band. Various embodiments rearrange the order of the above-described (and other) elements, remove some of these elements, and / or add other elements that perform similar or different functions. Adding elements may include inserting elements between existing elements, such as, for example, inserting amplifiers and analog-to-digital converters. In various embodiments, the RF section includes an antenna.
[0116] Furthermore, USB and / or HDMI terminals may include corresponding interface processors for connecting System 1000 to other electronic devices across USB and / or HDMI connections. It should be understood that various aspects of input processing (e.g., Reed-Solomon error correction) may be implemented as needed, for example, within a separate input processing IC or in processor 1010. Similarly, aspects of USB or HDMI interface processing may be implemented as needed in a separate interface IC or in processor 1010. The demodulated, error-corrected, and demultiplexed stream is provided to various processing elements, including, for example, processor 1010 and encoder / decoder 1030, which operate in combination with memory and storage elements to process the data stream as needed for presentation on the output device.
[0117] Various components of system 1000 can be provided within an integrated housing. Within the integrated housing, various components can be interconnected and transmit data using appropriate connection arrangements 1140 (e.g., internal buses known in the art, including inter-IC (I2C) buses, wiring, and printed circuit boards).
[0118] System 1000 includes a communication interface 1050 that enables communication with other devices via a communication channel 1060. The communication interface 1050 may include, but is not limited to, a transceiver configured to transmit and receive data via the communication channel 1060. The communication interface 1050 may include, but is not limited to, a modem or network interface card (NIC), and the communication channel 1060 may be implemented, for example, in a wired and / or wireless medium.
[0119] In various embodiments, a wireless network, such as a Wi-Fi network (e.g., IEEE 802.11, where IEEE stands for Institute of Electrical and Electronics Engineers), is used to stream or otherwise provide data to system 1000. In these embodiments, the Wi-Fi signal is received via a communication channel 1060 and a communication interface 1050 suitable for Wi-Fi communication. The communication channel 1060 in these embodiments is typically connected to an access point or router that provides access to external networks, including the Internet, to allow streaming applications and other over-the-top communications. Other embodiments use a set-top box to provide streaming data to system 1000, which transmits data via an HDMI connection in input box 1130. Still other embodiments use an RF connection in input box 1130 to provide streaming data to system 1000. As indicated above, various embodiments provide data in a non-streaming manner. Furthermore, various embodiments use wireless networks other than Wi-Fi, such as cellular networks or Bluetooth networks.
[0120] System 1000 can provide output signals to various output devices, including a display 1100, a speaker 1110, and other peripheral devices 1120. The display 1100 in various embodiments includes one or more of, for example, a touchscreen display, an organic light-emitting diode (OLED) display, a curved display, and / or a foldable display. The display 1100 can be used in a television, tablet, laptop, mobile phone, or other device. The display 1100 can also be integrated with other components (e.g., in a smartphone) or exist independently (e.g., as an external monitor for a laptop). In various examples of embodiments, other peripheral devices 1120 include one or more separate digital video discs (or digital versatile discs) (DVRs, for both terms), disc players, stereo systems, and / or lighting systems. Various embodiments use one or more peripheral devices 1120 that provide functionality based on the output of system 1000. For example, a disc player performs the function of playing the output of system 1000.
[0121] In various embodiments, signaling such as AV.Link, Consumer Electronics Control (CEC), or other communication protocols capable of enabling device-to-device control with or without user intervention is used to transmit control signals between system 1000 and display 1100, speaker 1110, or other peripheral devices 1120. Output devices can be communicatively coupled to system 1000 via dedicated connections through corresponding interfaces 1070, 1080, and 1090. Alternatively, output devices can be connected to system 1000 via communication interface 1050 using communication channel 1060. Display 1100 and speaker 1110 can be integrated into a single unit with other components of system 1000 in electronic devices such as, for example, televisions. In various embodiments, display interface 1070 includes a display driver, such as, for example, a timing controller (TCon) chip.
[0122] Display 1100 and speaker 1110 may alternatively be separate from one or more other components, for example, if the RF section of input 1130 is part of a separate set-top box. In various embodiments in which display 1100 and speaker 1110 are external components, the output signal may be provided via a dedicated output connection including, for example, an HDMI port, a USB port, or a COMP output.
[0123] System 1000 may include one or more sensor devices 1095. Examples of sensor devices that may be used include one or more GPS sensors, gyroscope sensors, accelerometers, light sensors, cameras, depth cameras, microphones, and / or magnetometers. Such sensors can be used to determine information such as the user's position and orientation. In the case where System 1000 is used as a control module (such as control modules 124, 1254) for an augmented reality display, the user's position and orientation can be used to determine how to render image data so that the user perceives the correct portion of a virtual object or scene from the correct perspective. In the case of a head-mounted display device, the device's own position and orientation can be used to determine the user's position and orientation for the purpose of rendering virtual content. In the case of other display devices (such as mobile phones, tablets, computer monitors, or televisions), other inputs can be used to determine the user's position and orientation for the purpose of rendering content. For example, a user may select and / or adjust the desired viewpoint and / or viewing direction when using a touchscreen, keypad, keyboard, trackball, joystick, or other input device. When the display device has sensors such as accelerometers and / or gyroscopes, the viewing angle and orientation can be selected and / or adjusted based on the movement of the display device for the purpose of rendering content.
[0124] These embodiments can be implemented by computer software implemented by processor 1010, or by hardware, or by a combination of hardware and software. As a non-limiting example, these embodiments can be implemented by one or more integrated circuits. Memory 1020 can be of any type suitable for the technical environment and can be implemented using any suitable data storage technology, such as optical memory devices, magnetic memory devices, semiconductor-based memory devices, fixed memory, and removable memory, as non-limiting examples. Processor 1010 can be of any type suitable for the technical environment and, as a non-limiting example, can encompass one or more of microprocessors, general-purpose computers, special-purpose computers, and processors based on multi-core architectures.
[0125] Other embodiments This disclosure describes a wide variety of aspects, including tools, features, embodiments, models, methods, etc. Many of these aspects are described in detail and are generally described in a manner that may sound limiting, at least to illustrate individual characteristics. However, this is for the purpose of clarity of description and does not limit the disclosure or scope of these aspects. In fact, all the different aspects can be combined and interchanged to provide other aspects. Furthermore, these aspects can also be combined and interchanged with aspects described in earlier applications.
[0126] The aspects described and contemplated in this disclosure can be implemented in many different forms. While some embodiments are specifically illustrated, other embodiments are contemplated, and the discussion of particular embodiments does not limit the breadth of implementations. At least one aspect generally relates to 3D mesh encoding and decoding, and at least one other aspect generally relates to transmitting the generated or encoded bitstream. These and other aspects can be implemented as methods, apparatus, computer-readable storage media having instructions thereon stored for encoding or decoding mesh description data according to any of the described methods, and / or computer-readable storage media having bitstreams generated according to any of the described methods stored thereon.
[0127] This document describes various methods, and each method includes one or more steps or actions for implementing the described method. The order and / or use of specific steps and / or actions may be modified or combined unless a particular order of steps or actions is necessary for the correct operation of the method. Furthermore, terms such as "first," "second," etc., may be used in various embodiments to modify elements, components, steps, operations, etc., such as, for example, "first decoding" and "second decoding." Unless specifically required, the use of such terms does not imply an ordering of the modified operations. Therefore, in this example, the first decoding need not be performed before the second decoding and may occur, for example, before, during, or within a time period overlapping with the second decoding.
[0128] For example, various numerical values may be used in this disclosure. These specific values are for illustrative purposes, and the aspects described are not limited to these specific values.
[0129] The embodiments described herein can be implemented by computer software, or by a combination of hardware and software, implemented by a processor or other hardware. As a non-limiting example, embodiments can be implemented by one or more integrated circuits. The processor can be of any type suitable for the technical environment, and as a non-limiting example, can encompass one or more of microprocessors, general-purpose computers, special-purpose computers, and processors based on multi-core architectures.
[0130] When a diagram is presented as a flowchart, it should be understood that it also provides a block diagram of the corresponding device. Similarly, when a diagram is presented as a block diagram, it should be understood that it also provides a flowchart of the corresponding method / process.
[0131] The implementations and aspects described herein can be implemented, for example, in methods or processes, apparatuses, software programs, data streams, or signals. Even if discussed only in the context of a single form of implementation (e.g., discussed only as a method), the features under discussion can be implemented in other forms (e.g., apparatuses or programs). Apparatuses can be implemented, for example, in appropriate hardware, software, and firmware. Methods can be implemented, for example, in a processor, which generally refers to a processing device, including, for example, a computer, microprocessor, integrated circuit, or programmable logic device. Processors also include communication devices, such as, for example, computers, mobile phones, portable / personal digital assistants (“PDAs”), and other devices that facilitate the transfer of information between end users.
[0132] References to "an embodiment" or "an embodiment" or "an implementation" or "an implementation" and other variations thereof mean that a particular feature, structure, characteristic, etc., described in connection with that embodiment is included in at least one embodiment. Therefore, the phrases "in an embodiment" or "in an embodiment" or "in an implementation" or "in an implementation," and any other variations appearing throughout this disclosure, do not necessarily all refer to the same embodiment.
[0133] Furthermore, this disclosure may involve “determining” various pieces of information. Determining information may include, for example, one or more of estimated information, calculated information, predicted information, or information retrieved from memory.
[0134] Furthermore, this disclosure may involve “accessing” various information fragments. Accessing information may include, for example, receiving information, retrieving information (e.g., from memory), storing information, moving information, copying information, calculating information, determining information, predicting information, or estimating information, or one or more of these.
[0135] Furthermore, this disclosure may relate to "receiving" various pieces of information. Like "access," receiving is intended to be a broad term. Receiving information may include, for example, accessing information or retrieving information (e.g., from memory) or one or more of them. Further, "receiving" is typically involved in one or more ways during operations such as, for example, storing information, processing information, transmitting information, moving information, copying information, erasing information, calculating information, determining information, predicting information, or estimating information.
[0136] It should be understood that, for example, in the cases of “A / B,” “A and / or B,” and “at least one of A and B,” the use of any of the following “ / ,” “and / or,” and “at least one of…” is intended to cover selecting only the first listed option (A), or only the second listed option (B), or both options (A and B). As another example, in the cases of “A, B, and / or C” and “at least one of A, B, and C,” this wording is intended to cover selecting only the first listed option (A), or only the second listed option (B), or only the third listed option (C), or only the first and second listed options (A and B), or only the first and third listed options (A and C), or only the second and third listed options (B and C), or all three options (A, B, and C). This can be extended to as many items as are listed.
[0137] Furthermore, as used herein, among other things, the term “signal” refers to indicating something to the corresponding decoder. For example, in some embodiments, the encoder signals a specific parameter among a plurality of parameters for region-based filter parameter selection for artifact removal filtering. In this way, in embodiments, the same parameter is used at both the encoder and decoder sides. Thus, for example, the encoder may transmit (explicit signaling) a specific parameter to the decoder so that the decoder can use the same specific parameter. Conversely, if the decoder already has that specific parameter as well as other parameters, then signaling (implicit signaling) can then be used without transmission to simply allow the decoder to know and select that specific parameter. In various embodiments, bit savings are achieved by avoiding the transmission of any actual function. It should be understood that signaling can be implemented in a variety of ways. For example, in various embodiments, one or more syntax elements, flags, etc., are used to signal information to the corresponding decoder. While the foregoing refers to the verb form of the term “signal,” the term “signal” may also be used as a noun herein.
[0138] Implementations can generate a wide variety of signals, formatted to carry information, such as information that can be stored or transmitted. The information may include, for example, instructions for performing a method or data generated by one of the described implementations. For example, the signal may be formatted to carry a bit stream of the described embodiment. Such a signal may be formatted as, for example, electromagnetic waves (e.g., using the radio frequency portion of the spectrum) or baseband signals. Formatting may include, for example, encoding the data stream and modulating a carrier wave with the encoded data stream. The information carried by the signal may be, for example, analog or digital information. It is well known that signals can be transmitted via a wide variety of different wired or wireless links. The signal may be stored on a processor-readable medium.
[0139] Several embodiments are described. Features of these embodiments may be provided individually or in any combination across various claim classes and types. Furthermore, across various claim classes and types, embodiments may include one or more of the following features, devices, or aspects, individually or in any combination: • Includes a bitstream or signal of one or more of the described syntax elements or their variants.
[0140] • Includes bit streams or signals that transmit information according to the syntax of any of the described embodiments.
[0141] • Creating and / or transmitting and / or receiving and / or decoding bitstreams or signals comprising one or more of the described syntax elements or variations thereof.
[0142] • Create and / or transmit and / or receive and / or decode according to any of the described embodiments.
[0143] • A method, process, apparatus, medium for storing instructions, medium for storing data, or signal according to any of the described embodiments.
[0144] Note that the various hardware elements in one or more of the described embodiments may be referred to as “modules”, which, in conjunction with corresponding modules, implement (i.e., perform, execute, etc.) the various functions described herein. As used herein, a module includes hardware considered suitable for a given implementation (e.g., one or more processors, one or more microprocessors, one or more microcontrollers, one or more microchips, one or more application-specific integrated circuits (ASICs), one or more field-programmable gate arrays (FPGAs), one or more memory devices). Each described module may also include instructions executable to implement one or more of the described functions implemented by the corresponding module, and note that those instructions may take the form of hardware (i.e., hardwired) instructions, firmware instructions, software instructions, etc., or include hardware (i.e., hardwired) instructions, firmware instructions, software instructions, etc., and may be stored in any suitable one or more non-transitory computer-readable media, such as commonly referred to RAM, ROM, etc.
[0145] Although features and elements are described above in specific combinations, each feature or element can be used alone or in any combination with other features and elements. Furthermore, the methods described herein can be implemented in computer programs, software, or firmware embedded in a computer-readable medium for execution by a computer or processor. Examples of computer-readable storage media include, but are not limited to: read-only memory (ROM), random access memory (RAM), registers, cache memory, semiconductor memory devices, magnetic media (such as internal hard disks and removable disks), magneto-optical media, and optical media (such as CD-ROMs and digital versatile discs (DVDs)). A processor associated with the software can be used to implement a radio frequency transceiver for use in a WTRU, UE, terminal, base station, RNC, or any host computer.
Claims
1. A grid coding method, comprising: Obtain an input mesh, the input mesh comprising vertices having at least one attribute; For each of the multiple vertices, a prediction of the corresponding attribute is obtained using one of at least two prediction techniques, including a first prediction technique and a second prediction technique. A first set of prediction residuals is determined, the first set of prediction residuals including the prediction residuals of each of the attributes predicted using the first prediction technique; Determine a second set of prediction residuals, the second set of prediction residuals comprising the prediction residuals of each of the attributes predicted using the second prediction technique; and Separate entropy coding is applied to the first and second prediction residual sets.
2. A lattice coding apparatus, the apparatus comprising one or more processors, the one or more processors being configured to perform at least the following operations: Obtain an input mesh, the input mesh comprising vertices having at least one attribute; For each of the multiple vertices, a prediction of the corresponding attribute is obtained using one of at least two prediction techniques, including a first prediction technique and a second prediction technique. A first set of prediction residuals is determined, the first set of prediction residuals including the prediction residuals of each of the attributes predicted using the first prediction technique; Determine a second set of prediction residuals, the second set of prediction residuals comprising the prediction residuals of each of the attributes predicted using the second prediction technique; and Separate entropy coding is applied to the first and second prediction residual sets.
3. A grid decoding method, comprising: Obtain at least a first set of prediction residuals and a second set of prediction residuals; For at least one vertex in the mesh, determine the attribute prediction technique for the vertex from at least two attribute prediction techniques; Using the determined prediction technique, a prediction of the properties of the vertex is obtained; Based on the determined prediction technique, select one of the prediction residuals set; Obtain the residual associated with the vertex from the selected set of predicted residuals; as well as The properties of the vertex are reconstructed based on the obtained predictions and residuals.
4. A mesh decoding apparatus, the apparatus comprising one or more processors configured to perform at least the following operations: Obtain at least a first set of prediction residuals and a second set of prediction residuals; For at least one vertex in the mesh, determine the attribute prediction technique for the vertex from at least two attribute prediction techniques; Using the determined prediction technique, a prediction of the properties of the vertex is obtained; Based on the determined prediction technique, select one of the prediction residuals set; Obtain the residual associated with the vertex from the selected set of predicted residuals; as well as The properties of the vertex are reconstructed based on the obtained predictions and residuals.
5. The method according to claim 1 or 3, or the apparatus according to claim 2 or 4, wherein, The attribute includes at least one location coordinate.
6. The method according to claim 1 or 3, or the method according to claim 5 when dependent on claim 1 or 3, or the apparatus according to claim 2 or 4, or the apparatus according to claim 5 when dependent on claim 2 or 4, wherein, The first prediction technique includes multi-parallelogram prediction technique.
7. The method according to claim 1 or 3, or the method according to any one of claims 5-6 when dependent on claim 1 or 3, or the apparatus according to claim 2 or 4, or the apparatus according to any one of claims 5-6 when dependent on claim 2 or 4, wherein, The attribute includes at least one texture coordinate.
8. The method according to claim 1 or 3, or the method according to any one of claims 5-7 when dependent on claim 1 or 3, or the apparatus according to claim 2 or 4, or the apparatus according to any one of claims 5-7 when dependent on claim 2 or 4, wherein, The first prediction technique includes the minimum stretch prediction technique.
9. The method according to claim 1 or 3, or the method according to any one of claims 5-8 when dependent on claim 1 or 3, or the apparatus according to claim 2 or 4, or the apparatus according to any one of claims 5-8 when dependent on claim 2 or 4, wherein, The second prediction technique involves using previously encoded / decoded attribute values as predictors.
10. The method according to claim 1 or 3, or the method according to any one of claims 5-8 when dependent on claim 1 or 3, or the apparatus according to claim 2 or 4, or the apparatus according to any one of claims 5-8 when dependent on claim 2 or 4, wherein, The second prediction technique involves using the average of one or more previously decoded attribute values as a predictor.
11. The method according to claim 1, or the method according to any one of claims 5-10 when dependent on claim 1, or the apparatus according to claim 2, or the apparatus according to any one of claims 5-10 when dependent on claim 2, wherein, The separate entropy encoding of the first and second prediction residual sets includes arithmetic encoding and decoding of the first and second prediction residual sets using different contexts.
12. The method according to claim 3, or the method according to any one of claims 5-10 when dependent on claim 3, or the apparatus according to claim 4, or the apparatus according to any one of claims 5-10 when dependent on claim 4, further comprising: Entropy decoding is performed on the first set of predicted residuals; as well as Perform separate entropy decoding on the second set of predicted residuals.
13. The method according to claim 12 when dependent on claim 3, or the apparatus according to claim 12 when dependent on claim 4, wherein, Separate entropy decoding of the first and second prediction residual sets involves arithmetic decoding of the first and second prediction residual sets using different contexts.
14. A computer-readable medium storing instructions for performing the method according to claim 1, or the method according to any one of claims 5-11 when dependent on claim 1, or the method according to claim 3, or the method according to any one of claims 5-9 or claims 12-13 when dependent on claim 3.
15. A signal that transmits a grid encoded according to the method of claim 1, or according to any one of claims 5-11 when dependent on claim 1.