Arithmetic coding of mesh attributes
By employing multiple prediction techniques and separate entropy encoding of prediction residuals using arithmetic coding, the method enhances the efficiency of mesh attribute encoding, achieving significant compression gains over existing systems.
Patent Information
- Application Number
- PCT/EP2024/077041
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2023-10-02
- Filing Date
- 2024-09-26
- Publication Date
- 2025-04-10
AI Technical Summary
Existing mesh coding systems, such as the V-DMC test model, face inefficiencies in encoding and decoding per-vertex and per-face attributes of meshes, particularly in achieving optimal compression performance.
The proposed method involves obtaining an input mesh with vertices having attributes, predicting these attributes using multiple prediction techniques, and performing separate entropy encoding of the prediction residuals using arithmetic coding with different contexts.
This approach results in improved compression efficiency, achieving an average of 0.25% to 1.3% compression gains for base mesh intra coding compared to previous methods, while simplifying the binarization and context allocation scheme.
Smart Images

Figure EP2024077041_10042025_PF_FP_ABST
Abstract
Description
ARITHMETIC CODING OF MESH ATTRIBUTESCROSS-REFERENCE
[0001] This application claims the priority of European Patent Application No. 23306660.4, filed 2 October 2023, entitled “Arithmetic Coding of Mesh Attributes,” which is incorporated herein by reference in its entirety.BACKGROUND
[0002] The present disclosure relates to systems and methods for encoding and decoding a mesh. Edgebreaker is a technology that is capable of efficiently coding the connectivity of a triangular mesh. In its most straightforward implementation, a mesh encoded using edgebreaker is represented by an ordered series made up of the symbols, C, L, E, R, and S, called the “CLERS” sequence. Generally speaking, starting with an initial triangle, these symbols describe different ways to attach a new triangle, providing information on whether or how different edges of the new triangle are connected to one or more of the existing triangles.
[0003] Following the MPEG V-Mesh (now renamed V-DMC) call for proposals the solution proposed by Apple was selected to become the foundation of the MPEG V-Mesh Test Model (TM). The proposal is described in K. Mammou, J. Kim, A. Tourapis and D. Podborski, "m59281 - [V-CG] Apple's Dynamic Mesh Coding CfP Response," Apple Inc, 2022. Summary figures from the proposal are provided in FIG. 1 and FIG. 2 of the present disclosure.
[0004] The test model, for some frames, uses a static mesh coder for the encoding of a base mesh that is then subdivided to obtain an approximation of the original mesh. Currently, the V- Mesh test model encodes a base mesh using the Google Draco implementation of an edgebreaker-based mesh encoder. Specifically, the implementation uses the “spirale reversi” version of edgebreaker as described in M. Isenburg and J. Snoeyink, "Spirale Reversi: Reverse decoding of the edgebreaker encoding," Computational Geometry, vol. 20, pp. 39- 52, 2001.
[0005] While edgebreaker coding provides an efficient way to code the connectivity of a base mesh, practical mesh coding systems also involve the coding of per-vertex and / or per-face attributes of the mesh. Such attributes may include a three dimensional spatial position (x,y,z) of each vertex and / or two dimensional texture coordinates (u,v) of the vertex in a texture map. It is desirable to improve the efficiency of the coding of such attributes.SUMMARY
[0006] A mesh encoding method according to some embodiments comprises: obtaining an input mesh comprising vertices having at least one attribute; for each of a plurality of the vertices, obtaining a prediction of the respective 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 set of prediction residuals comprising prediction residuals for each of the attributes predicted using the first prediction technique; determining a second set of prediction residuals comprising prediction residuals for each of the attributes predicted using the second prediction technique; and performing separate entropy encoding of the first set of prediction residuals and the second set of prediction residuals.
[0007] In some embodiments, the attribute comprises at least one position coordinate, and the first prediction technique comprises a multi-parallelogram prediction technique.
[0008] In some embodiments, the attribute comprises at least one texture coordinate, and the first prediction technique comprises a minimum-stretch prediction technique.
[0009] In some embodiments, the second prediction technique comprises using a previously coded attribute value as a predictor. In some embodiments, the second prediction technique comprises using an average of one or more previously coded attribute values as a predictor.
[0010] In some embodiments, the separate entropy encoding of the first set of prediction residuals and the second set of prediction residuals comprises arithmetic coding the first set of prediction residuals and the second set of prediction residuals using different contexts.
[0011] A mesh decoding method according to some embodiments comprises: obtaining at least a first set of prediction residuals and a second set of prediction residuals; for at least one vertex in a mesh, determining an attribute prediction technique for the vertex from among at least two attribute prediction techniques; obtaining a prediction of an attribute of the vertex using the determined prediction technique; based on the determined prediction technique, selecting one of the sets of prediction residuals; obtaining a residual associated with the vertex from the selected set of prediction residuals; and reconstructing the attribute of the vertex based on the obtained prediction and the obtained residual.
[0012] Some embodiments further include entropy decoding the first set of prediction residuals; and separately entropy decoding the second set of prediction residuals. In some such embodiments, the separate entropy decoding of the first set of prediction residuals andthe second set of prediction residuals comprises arithmetic decoding the first set of prediction residuals and the second set 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 storing a mesh encoded according to any of the methods described herein.
[0017] Additional embodiments include a signal conveying a mesh encoded according to any of the methods disclosed herein.BRIEF DESCRIPTION OF THE DRAWINGS
[0018] FIG. 1 is a functional block diagram of an example mesh encoding system.
[0019] FIG. 2 is a functional block diagram of an example mesh decoding system.
[0020] FIG. 3 illustrates an example of an edgebreaker mesh codec according to some embodiments.
[0021] FIG. 4 is a flow chart of an encoding process according to some embodiments.
[0022] FIG. 5 is a flow chart of a decoding process according to some embodiments.
[0023] FIG. 6 illustrates an example of a portion of a mesh illustrating information that may be stored in a corner table data structure.
[0024] FIG. 7 illustrates an example of an extended corner table to support UV coordinates attribute and normal vector attributes.
[0025] FIG. 8 illustrates an extended Corner Table data structure used in memory for the algorithmics.
[0026] FIGs. 9A-9B illustrate example computer code that may be used to perform arithmetic coding of prediction residuals according to some embodiments.
[0027] FIGs. 10A-10B illustrate example computer code that may be used to perform arithmetic decoding of prediction residuals according to some embodiments.
[0028] FIG. 11 illustrates example computer code that may be used to determine different sets of prediction residuals according to some embodiments for subsequent entropy coding.
[0029] FIG. 12 illustrates example computer code that may be used in some embodiments to select a prediction residual from different entropy-decoded sets of prediction residuals and reconstruct an attribute of a vertex.
[0030] FIG. 13 illustrates an example of compression performance of embodiments described herein versus a prior method for the encoding of base mesh in V-DMC. Results for each CTC test sequence in CO condition are each averaged over 32 frames.
[0031] FIGs. 14A-14B illustrate compression performance of the embodiments described herein versus a prior method for the encoding of base mesh in V-DMC. Results for each CTC test sequence in C1 condition are each averaged over 32 frames.
[0032] FIGs. 15A-15B illustrate compression performance of the embodiments described herein versus a prior method for the encoding of base mesh in V-DMC. Results for each CTC test sequence in C2 condition are each averaged over 32 frames.
[0033] FIG. 16 is a functional block diagram of a system that may be used to implement some embodiments.DETAILED DESCRIPTION
[0034] Edgebreaker (EB) is a technology for encoding and decoding (collectively “coding”) the topology (connectivity and handles) of the mesh, which is the core of the algorithm, and proposes the use of predictors for the positions of the vertices to generate some entropy coding efficient data.
[0035] Some embodiments include support for texture coordinates encoding using a unique index table or separate index tables.
[0036] Some embodiments include multi-parallelogram and stretch predictions. Some such embodiments further provide support for dummy points and separate index tables when needed. Multi-parallelogram prediction may be performed in some embodiments as described in D. Cohen-Or, R. Cohen and R. Irony., “Multi-way geometry encoding,” The 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. Some embodiments use min stretch prediction, e.g. for the UV coordinates, as described in I. M. and S. J., "Compressing Texture Coordinates with Selective Linear Predictions," in Computer Graphics International, Tokyo, Japan, 2003.
[0037] Some embodiments include Dirac and / or RANS arithmetic coders (ACs).
[0038] FIG. 3 illustrates an example of an edgebreaker mesh codec according to some embodiments. The top row is the encoding line, and the bottom row is the decoding line. As illustrated in FIG. 3, example embodiments include some or all of the following. During encoding, pre-processing 302 may be used to clean potential connectivity issues (nonmanifolds edges and vertices) that can exist on the input mesh. This cleanup is performed because the edgebreaker algorithm by itself does not work on meshes having such connectivity issues. In some embodiments, cleaning non manifold edges and vertices involves duplicating a number of points. Some embodiments keep track of those duplicated vertices to merge those when decoding. This enables to reduce the number of points in the decoded mesh but calls for sending some additional information in the bitstream. In some embodiments, this pre-processing 302 further includes adding some dummy points to fill potential holes on the surface because the edgebreaker algorithm alone does not handle holes. Example embodiments operate to fill the holes before encoding and recreate the holes after decoding. Example embodiments use “virtual” dummy points and generate and encode dummy triangles attached to these dummy points, but the 3D positions of those points are not encoded or decoded. In some embodiments, the vertex attributes are quantized if needed. Those attributes can be provided to the coder already quantized.
[0039] Example embodiments encode the connectivity of the mesh at 304 using a modified version of the edgebreaker algorithm which generates a CLERS table (a table made of ‘C’, ‘L’, ‘E’, ‘R’, and ‘S’ symbols). This stage also generates some tables in memory that are used for the attribute prediction stage. The vertex attributes are then predicted at 306, starting with the position attributes. Then, other attributes are predicted, eventually relying on the position predictions, which it is the case for the texture UV coordinates. Configuration and metadata are also provided in the bitstream, the CLERS table, some other connectivity and all the attribute prediction residuals are entropy coded at 310 and added to the bitstream.
[0040] In an example decoding method, all of the entropy coded sub-bitstreams are entropy decoded at 312. We reconstruct the mesh connectivity at 314 using the CLERS table and the edgebreaker algorithm. We also add some extra information to manage the handles, which describe the topology. We use the mesh connectivity as well as a minimal set of vertex positions expressed in 3D coordinates to predict all the other per-vertex positions at 316. Wethen apply the attribute residuals to correct the predictions and obtain the reconstructed vertex positions. The other attributes are also decoded at 316, potentially relying on decoded positions, as for UV coordinates. The connectivity of attributes using separate index tables is reconstructed using per a per edge binary seam information that is entropy coded.
[0041] In a post-processing stage, at 320, the dummy triangles are removed. Optionally, the non-manifold issues are re-created in case the coder is configured to perform lossless coding. Optionally, the vertex attributes are dequantized if the model was quantized by encoder.
[0042] FIG. 4 is a flow chart of an encoding process according to some embodiments.
[0043] FIG. 5 is a flow chart of a decoding process according to some embodiments.Overview of Corner Tables
[0044] A corner table data structure to represent a mesh is described in J. Rossignac, "3D compression made simple: Edgebreaker with ZipandWrap on a corner-table," in Proceedings International Conference on Shape Modeling and Applications, Genova, Italy, 2001 ; and further described in J. Rossigniac, "Course on triangle meshes and corner table," 2006.
[0045]
[0046] FIG. 6 shows a portion of a triangular mesh illustrating information that may be stored in a corner table (also referred to as an OV table). For each corner index c of a corner in the corner table, the notation c.v=3 identifies the index of the vertex at which that corner is located. The index c.t=O is the index of the triangle that includes corner c. Within that triangle, the index c.n=0 identifies the next corner (in a counterclockwise direction), and c.p=1 identifies the previous corner. The index c.o identifies the corner that is opposite to the corner c. For example, in FIG. 6, corner c.o=5 is opposite corner c=2 (and vice versa). The index c.l identifies the corner to the left of corner c, and the index c.r identifies the corner to the right of corner c. The connectivity as shown in FIG. 6 may be recorded in a corner table with entries that include the following:
[0047] The “corner index” column does not need to be stored explicitly in the table because it corresponds to the position of each row within the table. The triangle index for each corner can be calculated as c.t = INT(c / 3)
[0048] Thus, corners 0, 1 , and 2 are all in the triangle with index 0; corners 3, 4, and 5 are all in the triangle with index 1 ; and so on. Additional relationships among entries in the corner table may be expressed as follows: c.n = 3c.t + (c+1) MOD 3 c.p = c.n.n c.l = c.p.o c.r = c.n.o
[0049] In some embodiments, an additional table may be used to store position coordinates of each vertex.
[0050] FIG. 7 illustrates an example of an extended corner table to support UV coordinates attribute and normal vector attributes, both using separate indexing tables, resp. TC / OTC and N / ON. Texture coorinates and normal vectors are stored in two other separate tables.
[0051] Example embodiments extend the corner table data structure to support other attributes with or without secondary attribute indices, as illustrated in FIG. 7. In case the mesh does not have separate indices to dereference the UV coordinates attributes, example embodiments include a table of UV coordinates alongside the position table. The UV coordinates table is then dereferenced using V as for the position. Otherwise, some embodiments also add two tables TC and OTC to code the connectivity of (to dereference) the UV coordinates. TC is used to store UV coordinates indices and OTC to store the opposite corners for the UV connectivity. The same principle may be applied to add support for per vertex normal (N / ON / normal_vectors) or per vertex colors ( C I OC I colors ).
[0052] FIG. 8 illustrates an extended Corner Table data structure used in memory for the algorithmics. FIG. 8 summarizes the data structures we use to store all the information of our extended corner table. This approach can be extended for any per vertex attribute type, to use or not dedicated index tables modeled using the pair (index table I opposite table).Overview of Prediction Residual Coding
[0053] Example embodiments use arithmetic coding to reduce the bitstream size associated with several syntax elements. In some embodiments, two entropy coding engines are availablefor use to reduce the size of prediction residuals associated with attributes such as positions or texture coordinates (either dirac or rans). The encoded residuals may include a residual position coordinate, which may be expressed as mesh_position_residual[ i ][ j ]. Other residuals may be expressed using mesh_attribute_residual[ i ][ j ][ k ]. As arithmetic coding is employed in other parts of the specification (for instance in AC based displacements coding), the use of a single engine and common and rationalized binarization scheme may be preferable to the use of two entropy coding engines.
[0054] Example embodiments described herein have been found to provide an average of 0.25% compression gains of base mesh intra coding with respect to VDMC v5.0 CTCs in the C1 and C2 conditions, and 1 .3% in CO condition, while simplifying the binarization and context allocation scheme. Present techniques for encoding prediction residuals are efficient but are not necessarily optimal.
[0055] When traversing position or texture uv coordinates values, there are two main cases. First is the case where the values cannot be predicted (this is the case for the start of each connected component), so no residual is coded. Second is the case where a prediction can be determined based on previously encoded values, and the residual is produced as the difference between the value to encode and a predicted value. In the second case, it is possible to distinguish between two categories of residuals:• In the first category, the predicted value is determined using either one or multiple parallelogram predictions (for prediction of a position) or a stretch prediction (for prediction of a texture uv coordinate). In this category, the resulting residual is referred to herein as a “fine” residual.• In the second category, a parallelogram prediction (for prediction of a position) or a stretch prediction (for prediction of a texture uv coordinate) is not available, but a prediction is still made using another technique, such as using an already-coded position or uv coordinate, or an average of two or more such coordinates. In this category, the resulting residual is referred to herein as a “coarse” residual.
[0056] In example embodiments, residuals are grouped using those categories and are encoded separately in two batches. These two batches have been found to have different statistical distributions, and encoding the batches separately has been found to provide a greater level of compression. In example embodiments, encoding performance can be increased while simplifying the encoding scheme.
[0057] In some embodiments, signed values are encoded / decoded using truncated unary and k-th order exponential Golomb codes for binarization of their absolute value (the relatedparsing scheme described below applies to unsigned integers), and an additional bin element for non-null values which encodes the sign. Encoding / decoding is dependent on a set of parameters: maxOffset, k, maxTuContext, maxPfxContext, and maxSfxContext.
[0058] Such embodiments may use the following parameters for positions: maxOffset = 7- k = 2 maxTuContext = 3 (coarse gained values), or 2 (fine grained values) maxPfxContext = maxSfxContext = 12
[0059] Detailed encoding and decoding operations for position residuals are presented below (looping using the coordinate index in the outer loop and the vertex identifier in the inner loop).
[0060] Detailed encoding and decoding operations for texture uv coordinates may follow the same scheme with the following modifications:- value dimension is 2 for UVs and 3 for xyz coordinates of position values) loop through value index in the outer loop, then coordinate index (as opposed to looping through the coordinate index first, then the value index for positions)
[0061] In some embodiments, signed values are first converted to unsigned values using an 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, a number of contexts may be associated with a fixed probability of 0.5 (bypass coding, using a StaticBitModel, dirac::SchroContextFixed, with probability set to 0x8000; / / p=0.5).
[0063] Different embodiments may use different looping orders for residual coding. For example, in some embodiments, the outer loop traverses different vertices and the inner loop traverses different attribute components (e.g. different components of xyz or uv coordinates); in other embodiments, the outer loop traverses different attribute components vertices and the inner loop traverses different vertices. (It may be noted that not all vertices are traversed through these loops, only those with relevant encoded residuals.) In some embodiments, the looping orders may be different for different attributes (e.g. position versus uv texture coordinates). In some embodiments, the looping orders may be different for different sets of residuals (e.g. coarse versus fine residuals).
[0064] Examples of mesh encoding and decoding processes according to the present disclosure are presented below.
[0065] As detailed below, some embodiments encode / decode separately the residual arrays corresponding to the two defined classes (“coarse” / “fine”). Other embodimentsencode / decode residuals in those classes jointly using a single arithmetic encoder / decoder that dynamically switches binarization schemes and associated contexts depending on the successive residual classes associated with the successive residual values to encode / decode, following the order defined by the traversal used during the prediction process.
[0066] In some embodiments, this encoding / decoding is performed in-line during the prediction traversal. In other embodiments, this encoding / decoding is performed off-line after / before the prediction traversal.
[0067] In some embodiments, a third array related to position / attribute prediction is used, containing non-predicted values. In general, at the start of each connected component, the first value is not predicted. It may be stored in a specific array during position / attribute traversal for prediction (e.g. sVertices array), and encoded separately using a specific binarization scheme.
[0068] In some embodiments, the class definition could be extended to handle 3 classes (“raw’Vabsolute values, “fine” and “coarse” residuals) that could be jointly coded / decoded.
[0069] Example embodiments further include revisions to some syntax elements used for residual coding.Example Encoding Procedure for Position Residuals
[0070] Examples of the encoding and decoding processes for position residuals are described below. The same approach may be used for the encoding and decoding of texture uv coordinates.
[0071] In a mesh encoding method according to some embodiments comprises, an input mesh is obtained comprising vertices having at least one attribute, such as an xyz position and / or a uv coordinate. For each of a plurality of the vertices, a prediction is obtained of the respective attribute using one of at least two prediction techniques, the prediction techniques including a first prediction technique and a second prediction technique. The prediction techniques may be classified by the expected quality of the resulting prediction. For example, a prediction technique that is expected to provide a higher-quality prediction may be referred to as resulting in “fine” residuals, while a prediction technique that is expected to provide a lower-quality prediction may be referred to as resulting in “coarse” predictions. In a case where the relevant attribute is a position, a multi-parallelogram prediction technique may be considered to provide “fine” residuals, while other prediction techniques (generally reliant on fewer previously-coded positions) provide only “coarse” residuals. In a case where the relevant attribute is a uv coordinate, a stretch prediction technique may be considered to provide “fine”residuals, while other prediction techniques (generally reliant on fewer previously-coded coordinates) provide only “coarse” residuals. Coarse residuals and fine residuals may be expected to have different statistics.
[0072] FIG. 11 illustrates example computer code that may be used in some embodiments to determine prediction residuals. In a method as shown in FIG. 11 , the prediction residuals are stored in an array oVertices. Each of those prediction residuals is also classified as coarse or fine, and the result is stored in a Boolean vector oPosFine, which may have the same size as oVertices.
[0073] The prediction residuals marked (e.g. by oPosFine) as a fine residuals constitute a first set of prediction residuals. The first set of prediction residuals comprises prediction residuals for each of the attributes predicted using the first prediction technique (e.g. multi-parallelogram prediction). The prediction residuals marked (e.g. by oPosFine) as a coarse residuals constitute a second set of prediction residuals. The second set of prediction residuals comprises prediction residuals for each of the attributes predicted using the second prediction technique (e.g. copying a previously-coded value, or an average of previously-coded values).
[0074] Separate entropy coding is performed for the residuals in the first set (fine) and the residuals in the second set (coarse). FIGs. 9A-9B illustrate example code for implementing a method of separately entropy encoding the position residuals of the different sets according to some embodiments. In the example of FIGs. 9A-9B, the process makes two passes through the array oVertices, first performing arithmetic coding of the coarse residuals, then making a second pass and performing arithmetic coding of the fine residuals.
[0075] An alternative implementation according to some embodiments uses two tables instead of a single array oVertices. Note that this means it is not feasible to dynamically select the arithmetic encoding method for special cases where using a single class would provide better results, as could be the case for very small meshes, or for meshes with specific topologies (e.g. single component without holes).
[0076] Some alternative embodiments perform arithmetic encoding within the prediction loop of FIG. 11. Then a single coded array would contain both “coarse” and “fine” encoded residuals, reducing the number of syntax elements required for the dual decoding operation. In this case, separate contexts may be used for the separate sets of residuals. Note that using this approach means that parallel processing where arithmetic encoding / decoding is decoupled from prediction and residual evaluation / usage is not as feasible.Example Decoding Procedure for Position Residuals
[0077] In a mesh decoding method according to some embodiments, at least a first set of prediction residuals and a second set of prediction residuals is obtained. For example, FIGs. 10A-10B illustrate example code for entropy decoding a portion 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 a mesh may be encoded explicitly in the bitstream. For other vertices, the attribute may be reconstructed from a prediction and an encoded residual. For such vertices, an attribute prediction technique is determined for the vertex from among at least two attribute prediction techniques. For example, in a case where the relevant attribute is a position, a multi-parallelogram prediction technique may be selected whenever enough previously-decoded positions are available in appropriate mesh positions to permit such a prediction, while other prediction techniques (e.g. copying a previously-coded position) may be selected otherwise. In a case where the relevant attribute is a uv coordinate, a stretch prediction technique may be selected whenever enough vertices in appropriate mesh positions have previously-decoded uv texture coordinates. In some embodiments, the prediction technique may be signaled explicitly in the bitstream.
[0079] A prediction of an attribute of the vertex is obtained using the determined prediction technique. Based on the determined prediction technique, one of the sets of prediction residuals is selected, e.g. by selecting the iVertices array if the prediction technique is associated with fine residuals and selecting the iVerticesCoarse array if the prediction technique is associated with course residual. A residual associated with the vertex is obtained from the selected set of prediction residuals, and the relevant attribute of the vertex is reconstructed based on the obtained prediction and the obtained residual (e.g. by adding the residual to the prediction). Computer code for performing an example decoding method based on separate arrays of coarse and fine residuals is provided in FIG. 12. The method of FIG. 12 receives as input the two residual arrays that have already been arithmethic decoded. It predicts the vertex positions using a prediction technique. Based on the prediction technique, it determines which of the residual arrays to read the residual from, and it reconstructs the position by adding the residual to the prediction.Syntax and Semantics of Example Position Coding Embodiments
[0080] Example embodiments further include bitstreams encoded according to methods described herein. Table 1 illustrates a syntax used in some embodiments to code coarse and fine position residuals. Syntax elements that are added or revised in this embodiment, ascompared to syntax elements used in prior residual coding systems, are indicated with a dagger (f).Table 1.
[0081] In some embodiments, as shown in the example of Table 1 (and in the example of Table 2, below), the loops over the encoded residual values mesh_position_residual[ i ][ j ] and mesh_position_coarse_residual[ i ][ j ] are performed with the inner loop being a loop over the i-th predicted positions and the outer loop being a loop over the j-th components. For example, a mesh_position_residual[ i ][ j ] encoded as illustrated in Table 1 or Table 2 may be arranged to include (in arithmetically-coded format) all of the x-component residuals in that array, followed by all of the y-component residuals in that array, followed by all of the z-component residuals in that array. This arrangement is believed to improve coding efficiency as comparedto a conventional arrangement in which the inner loop is a loop over the j-th components and the outer loop is a loop over the i-th positions.
[0082] Table 2 illustrates an alternative embodiment in which it remains possible to use a single residuals array for positions if desired (e.g., all residuals may be encoded as “fine” grained residuals). When a single residuals array is used, the mesh_position_coarse_count syntax element may be omitted to reduce the overhead. In some embodiments, a value such as mesh_position_residuals_encoding_method may be signaled (or calculated from other signaled values) to identify the residuals encoding method used for position residuals.Table 2.
[0083] For example syntaxes such as those of Tables 1 and 2, the semantics of newly- introduced syntax elements may be as follows. • mesh_position_coarse_residuals_count[ i ] specifies the size of the mesh_position_coarse_residual[ i ] array containing coarse residual values for the 3 components of the predicted positions.• mesh_coded_position_coarse_residuals_size specifies the size in bytes of the arithmetically coded sequence of coarse positions residuals, including the final byte alignement.• mesh_position_coarse_residual[ i ][ j ] specifies the value of the coarse prediction residual associated with the j-th component of the i-th predicted position.Syntax and Semantics of Example Attribute Coding Embodiments
[0084] Table 3 illustrates an example syntax used in some embodiments to code coarse and fine prediction residuals for attributes of the mesh. Syntax elements that are added or revised in this embodiment, as compared to syntax elements used in prior residual coding systems, are indicated with a dagger (t).Table 3.
[0085] Table 4 illustrates an alternative embodiment in which it remains possible to use a single residuals array for attributes if desired (e.g., all residuals may be encoded as “fine” grained residuals). When a single residuals array is used, the mesh_attribute_coarse_count[ i ] syntax element may be omitted to reduce the overhead. In some embodiments, an array such as mesh_attribute_residuals_encoding_method[ i ] may be signaled (or calculated from other signaled values) to indicate an encoding method for the i-th attributes of the grid, allowing different attributes to use different residual coding methods.Table 4.
[0086] For example syntaxes such as those of Tables 3 and 4, the semantics of newly- introduced syntax elements may be as follows. • mesh_attribute_residuals_encoding_method[ i ] specifies the method used to encode values in the mesh_attribute_residual[ i ] and mesh_attribute_coarse_residual[ i ] arrays. Table 1-13 describes the list of supported methods for attributes with mesh_attribute_type equal to MESH_ATTR_TEXCOORD, Table 1-14 for attributes with mesh_attribute_type equal to MESH_ATTR_NORMAL, Table 1-15 for attributes with mesh_attribute_type equal to MESH_ATTR_COLOR,Table 1-16 for attributes with mesh_attribute_type equal to MESH_ATTR_MATERIAL_ID, Table 1-17 for attributes with mesh_attribute_type equal to MESH_ATTR_GENERIC.• mesh_attribute_coarse_residuals_count[ i ] specifies the size of the mesh_attribute_residual[ i ] array containing coarse residual values for theNumComponents[ i ] components of the i-th attribute.• mesh_coded_attribute_coarse_residuals_size[ i ] specifies the size in bytes of the arithmetically coded sequence of the i-th attribute coarse prediction residuals mesh_attribute_residual[ i ][ j ][ k ], including the final byte alignement.• 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.Example Parsing of Exponential-Golomb codes
[0087] In example embodiments, parsing is parameterized by maxOffset, the limit for the truncated unary offset encoding and k, the order of the exp-Golomb code. First, a truncated unary encoded offset may be parsed as follows: offset = 0 for (BinldxTu = 0; offset < maxOffset && dec_aebin() == 1; BinldxTu++) offset++
[0088] Second, if the value of offset is equal to maxOffset, a unary encoded prefix may be parsed:Prefix = 0 if (offset == maxOffset) for (BinldxPfx = 0; dec_aebin() 0; BinldxPfx++) prefix++
[0089] Then, if the value of offset is equal to maxOffset, a suffix comprising k + prefix bins may be parsed: suffix = 0 if (offset == maxOffset) for (BinldxSfx = 0; BinldxSfx < k + prefix; BinldxSfx++) suffix = (suffix « 1 ) + dec_aebin()
[0090] The result is the unsigned syntax element value val, constructed as: val = offset + Exp2(prefix + k) + suffix - Exp2(k)
[0091] Example embodiments allow for use a limited set of contexts for the the truncated unary part, reusing the latest context when the number of bins is larger that the number of contexts associated with this part. This corresponds to a similar modification applied to the bin-to-context allocation for the exp Golomb suffix and prefix part that is used to align the specification with the current software implementation. Additional modifications may be implemented to clarify allocation to bypass contexts when a number of bins may to encoded using “bypass” coding (equiprobable context). Some example embodiments may make use of bypass contexts, allowing some of the bins to be coded using bypass coding with a common equiprobable context.
[0092] Further embodiments may be adapted for the handling of signed values.
[0093] In some embodiments, parsing is parameterized by maxOffset, the limit for the truncated unary offset encoding and k, the order of the exp-Golomb code. Additional parameters may define the number of contexts used for- the truncated unary part : maxTuContext- the exp Golomb prefix part : maxPfxContext- the exp Golomb suffix part : maxSfxContext
[0094] Contexts may be arranged in arrays, such as the following:- tuContext [maxTuContext]- pfxContext[maxPfxContext]- sfxContext[maxSfxContext]
[0095] In some embodiments, the decoding of each bin element, producing a value 0 or 1 , is performed using a context ctx dec_aebin ( ctx )
[0096] First, a truncated unary encoded offset may be parsed: offset = 0 for (BinldxTu = 0; offset < maxOffset && dec_aebin(tuContext[min(BinldxTu, maxTuContext-1)] ) == 1 ;BinldxTu++) offset++
[0097] Second, if the value of offset is equal to maxOffset, a unary encoded prefix may be parsed:Prefix = 0 if (offset == maxOffset) for (BinldxPfx = 0; dec_aebin(pfxContext[min(BinldxPfx, maxPfxContext -1)] ) ^ 0;BinldxPfx++) prefix++
[0098] Then, if the value of offset is equal to maxOffset, a suffix comprising k + prefix bins is parsed: suffix = 0 if (offset == maxOffset) for (BinldxSfx = 0; BinldxSfx < k + prefix; BinldxSfx++) suffix = (suffix « 1) + dec_aebin(sfxContext[min(BinldxSfx, maxSfxContext -1 )])The result is the unsigned syntax element value val, constructed as: val = offset + Exp2(prefix + k) + suffix - Exp2(k)Example Results
[0099] FIG. 13 illustrates an example of compression performance of embodiments described herein versus a prior method for the encoding of base mesh in V-DMC. Results for each CTC test sequence in CO condition are each averaged over 32 frames.
[0100] FIGs. 14A-14B illustrate compression performance of the embodiments described herein versus a prior method for the encoding of base mesh in V-DMC. Results for each CTC test sequence in C1 condition are each averaged over 32 frames.
[0101] FIGs. 15A-15B illustrate compression performance of the embodiments described herein versus a prior method for the encoding of base mesh in V-DMC. Results for each CTC test sequence in C2 condition are each averaged over 32 frames.Example Systems
[0102] The encoding, decoding, processing, and rendering of mesh content as described herein may be implemented using a system such as the system of FIG. 16. FIG. 16 is a block diagram of an example of a system in which various aspects and embodiments are implemented. System 1000 can be embodied as a device including the various components described below and is configured to perform one or more of the 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, singly or in combination, can be embodied in a single integrated circuit (IC), multiple ICs, and / or discrete components. For example, in at least one embodiment, the processing and encoder / decoder elements of system 1000 are distributed across multiple ICs and / or discrete components. In various embodiments, the system 1000 is communicatively coupled to one or more other systems, or other electronic devices, via, for example, a communications bus or through dedicated input and / or output ports. In various embodiments, the system 1000 is configured to implement one or more of the aspects described in this document.
[0103] The system 1000 includes at least one processor 1010 configured to execute instructions loaded therein for implementing, for example, the various aspects described inthis document. Processor 1010 can include embedded memory, input output interface, and various other circuitries as known in the art. The 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, which can 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, magnetic disk drive, and / or optical disk drive. The storage device 1040 can include an internal storage device, an attached storage device (including detachable and non-detachable storage devices), and / or a network accessible storage device, as non-limiting examples.
[0104] System 1000 includes an encoder / decoder module 1030 configured, for example, to process data to provide an encoded mesh or decoded mesh, and the encoder / decoder module 1030 can include its own processor and memory. The encoder / decoder module 1030 represents module(s) that can be included in a device to perform the encoding and / or decoding functions. As is known, a device can include one or both of the encoding and decoding modules. Additionally, encoder / decoder module 1030 can be implemented as a separate element of system 1000 or can be incorporated within processor 1010 as a combination of hardware and software as known to those skilled in the art.
[0105] Program code to be loaded onto processor 1010 or encoder / decoder 1030 to perform the various aspects described in this document can be stored in storage device 1040 and subsequently loaded onto memory 1020 for execution by processor 1010. In accordance with various embodiments, one or more of processor 1010, memory 1020, storage device 1040, and encoder / decoder module 1030 can store one or more of various items during the performance of the processes described in this document. Such stored items can include, but are not limited to, the input mesh, the decoded mesh or portions of the decoded mesh, the bitstream, matrices, variables, and intermediate or final results from the processing of equations, formulas, operations, and operational logic.
[0106] In some embodiments, memory inside of the processor 1010 and / or the encoder / decoder module 1030 is used to store instructions and to provide working memory for processing that is needed during encoding or decoding. In other embodiments, however, a memory external to the processing device (for example, the processing device can be either the processor 1010 or the encoder / decoder module 1030) is used for one or more of these functions. The external memory can be the memory 1020 and / or the storage device 1040, for example, a dynamic volatile memory and / or a non-volatile flash memory. In several embodiments, an external non-volatile flash memory is used to store the operating system of,for example, a television. In at least one embodiment, a fast external dynamic volatile memory such as a RAM is used as working memory for video coding and decoding operations, such as for MPEG-2 (MPEG refers to the Moving Picture Experts Group, MPEG-2 is also referred to as ISO / IEC 13818, and 13818-1 is also known as H.222, and 13818-2 is also known as H.262), HEVC (HEVC refers to High Efficiency Video Coding, also known as H.265 and MPEG-H Part 2), or WC (Versatile Video Coding, a new standard being developed by JVET, the Joint Video Experts Team).
[0107] The input to the elements of system 1000 can be provided through various input devices as indicated in block 1130. Such input devices include, but are not limited to, (i) a radio frequency (RF) portion that receives an RF signal transmitted, for example, 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.
[0108] In various embodiments, the input devices of block 1130 have associated respective input processing elements as known in the art. For example, the RF portion can be associated with elements suitable for (i) selecting a desired frequency (also referred to as selecting a signal, or band-limiting a signal to a band of frequencies), (ii) downconverting the selected signal, (iii) band-limiting again to a narrower band of frequencies to select (for example) a signal frequency band which can be referred to as a channel in certain embodiments, (iv) demodulating the downconverted and band-limited signal, (v) performing error correction, and (vi) demultiplexing to select the desired stream of data packets. The RF portion of various embodiments includes one or more elements to perform these functions, for example, frequency selectors, signal selectors, band-limiters, channel selectors, filters, downconverters, demodulators, error correctors, and demultiplexers. The RF portion can include a tuner that performs various of these functions, including, for example, downconverting the received signal to a lower frequency (for example, an intermediate frequency or a near-baseband frequency) or to baseband. In one set-top box embodiment, the RF portion and its associated input processing element receives an RF signal transmitted over a wired (for example, cable) medium, and performs frequency selection by filtering, downconverting, and filtering again 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 performing similar or different functions. Adding elements can include inserting elements in between existing elements, such as, for example, inserting amplifiers and an analog-to-digital converter. In various embodiments, the RF portion includes an antenna.
[0109] Additionally, the USB and / or HDMI terminals can include respective interface processors for connecting system 1000 to other electronic devices across USB and / or HDMIconnections. It is to be understood that various aspects of input processing, for example, Reed-Solomon error correction, can be implemented, for example, within a separate input processing IC or within processor 1010 as necessary. Similarly, aspects of USB or HDMI interface processing can be implemented within separate interface ICs or within processor 1010 as necessary. The demodulated, error corrected, and demultiplexed stream is provided to various processing elements, including, for example, processor 1010, and encoder / decoder 1030 operating in combination with the memory and storage elements to process the datastream as necessary for presentation on an output device.
[0110] Various elements of system 1000 can be provided within an integrated housing, Within the integrated housing, the various elements can be interconnected and transmit data therebetween using suitable connection arrangement 1140, for example, an internal bus as known in the art, including the I nter-IC (I2C) bus, wiring, and printed circuit boards.
[0111] The system 1000 includes communication interface 1050 that enables communication with other devices via communication channel 1060. The communication interface 1050 can include, but is not limited to, a transceiver configured to transmit and to receive data over communication channel 1060. The communication interface 1050 can include, but is not limited to, a modem or network card and the communication channel 1060 can be implemented, for example, within a wired and / or a wireless medium.
[0112] Data is streamed, or otherwise provided, to the system 1000, in various embodiments, using a wireless network such as a Wi-Fi network, for example IEEE 802.11 (IEEE refers to the Institute of Electrical and Electronics Engineers). The Wi-Fi signal of these embodiments is received over the communications channel 1060 and the communications interface 1050 which are adapted for Wi-Fi communications. The communications channel 1060 of these embodiments is typically connected to an access point or router that provides access to external networks including the Internet for allowing streaming applications and other over- the-top communications. Other embodiments provide streamed data to the system 1000 using a set-top box that delivers the data over the HDMI connection of the input block 1130. Still other embodiments provide streamed data to the system 1000 using the RF connection of the input block 1130. As indicated above, various embodiments provide data in a non-streaming manner. Additionally, various embodiments use wireless networks other than Wi-Fi, for example a cellular network or a Bluetooth network.
[0113] The system 1000 can provide an output signal to various output devices, including a display 1100, speakers 1110, and other peripheral devices 1120. The display 1100 of various embodiments includes one or more of, for example, a touchscreen display, an organic lightemitting diode (OLED) display, a curved display, and / or a foldable display. The display 1100can be for a television, a tablet, a laptop, a cell phone (mobile phone), or other device. The display 1100 can also be integrated with other components (for example, as in a smart phone), or separate (for example, an external monitor for a laptop). The other peripheral devices 1120 include, in various examples of embodiments, one or more of a stand-alone digital video disc (or digital versatile disc) (DVR, for both terms), a disk player, a stereo system, and / or a lighting system. Various embodiments use one or more peripheral devices 1120 that provide a function based on the output of the system 1000. For example, a disk player performs the function of playing the output of the system 1000.
[0114] In various embodiments, control signals are communicated between the system 1000 and the display 1100, speakers 1110, or other peripheral devices 1120 using signaling such as AVLink, Consumer Electronics Control (CEC), or other communications protocols that enable device-to-device control with or without user intervention. The output devices can be communicatively coupled to system 1000 via dedicated connections through respective interfaces 1070, 1080, and 1090. Alternatively, the output devices can be connected to system 1000 using the communications channel 1060 via the communications interface 1050. The display 1100 and speakers 1110 can be integrated in a single unit with the other components of system 1000 in an electronic device such as, for example, a television. In various embodiments, the display interface 1070 includes a display driver, such as, for example, a timing controller (T Con) chip.
[0115] The display 1100 and speaker 1110 can alternatively be separate from one or more of the other components, for example, if the RF portion of input 1130 is part of a separate set- top box. In various embodiments in which the display 1100 and speakers 1110 are external components, the output signal can be provided via dedicated output connections, including, for example, HDMI ports, USB ports, or COMP outputs.
[0116] The system 1000 may include one or more sensor devices 1095. Examples of sensor devices that may be used include one or more GPS sensors, gyroscopic sensors, accelerometers, light sensors, cameras, depth cameras, microphones, and / or magnetometers. Such sensors may be used to determine information such as user’s position and orientation. Where the system 1000 is used as the control module for an augmented reality display (such as control modules 124, 1254), the user’s position and orientation may be used in determining how to render image data such that the user perceives the correct portion of a virtual object or virtual scene from the correct point of view. In the case of headmounted display devices, the position and orientation of the device itself may be used to determine the position and orientation of the user for the purpose of rendering virtual content. In the case of other display devices, such as a phone, a tablet, a computer monitor, or a television, other inputs may be used to determine the position and orientation of the user forthe purpose of rendering content. For example, a user may select and / or adjust a desired viewpoint and / or viewing direction with the use of a touch screen, keypad or keyboard, trackball, joystick, or other input. Where the display device has sensors such as accelerometers and / or gyroscopes, the viewpoint and orientation used for the purpose of rendering content may be selected and / or adjusted based on motion of the display device.
[0117] The embodiments can be carried out by computer software implemented by the processor 1010 or by hardware, or by a combination of hardware and software. As a nonlimiting example, the embodiments can be implemented by one or more integrated circuits. The memory 1020 can be of any type appropriate to the technical environment and can be implemented using any appropriate data storage technology, such as optical memory devices, magnetic memory devices, semiconductor-based memory devices, fixed memory, and removable memory, as non-limiting examples. The processor 1010 can be of any type appropriate to the technical environment, and can encompass one or more of microprocessors, general purpose computers, special purpose computers, and processors based on a multi-core architecture, as non-limiting examples.Further Embodiments
[0118] This disclosure describes a variety of aspects, including tools, features, embodiments, models, approaches, etc. Many of these aspects are described with specificity and, at least to show the individual characteristics, are often described in a manner that may sound limiting. However, this is for purposes of clarity in description, and does not limit the disclosure or scope of those aspects. Indeed, all of the different aspects can be combined and interchanged to provide further aspects. Moreover, the aspects can be combined and interchanged with aspects described in earlier filings as well.
[0119] The aspects described and contemplated in this disclosure can be implemented in many different forms. While some embodiments are illustrated specifically, other embodiments are contemplated, and the discussion of particular embodiments does not limit the breadth of the implementations. At least one of the aspects generally relates to 3D mesh encoding and decoding, and at least one other aspect generally relates to transmitting a bitstream generated or encoded. These and other aspects can be implemented as a method, an apparatus, a computer readable storage medium having stored thereon instructions for encoding or decoding mesh description data according to any of the methods described, and / or a computer readable storage medium having stored thereon a bitstream generated according to any of the methods described.
[0120] Various methods are described herein, and each of the methods comprises one or more steps or actions for achieving the described method. Unless a specific order of steps or actions is required for proper operation of the method, the order and / or use of specific steps and / or actions may be modified or combined. Additionally, terms such as “first”, “second”, etc. may be used in various embodiments to modify an element, component, step, operation, etc., such as, for example, a “first decoding” and a “second decoding”. Use of such terms does not imply an ordering to the modified operations unless specifically required. So, in this example, the first decoding need not be performed before the second decoding, and may occur, for example, before, during, or in an overlapping time period with the second decoding.
[0121] Various numeric values may be used in the present disclosure, for example. The specific values are for example purposes and the aspects described are not limited to these specific values.
[0122] Embodiments described herein may be carried out by computer software implemented by a processor or other hardware, or by a combination of hardware and software. As a nonlimiting example, the embodiments can be implemented by one or more integrated circuits. The processor can be of any type appropriate to the technical environment and can encompass one or more of microprocessors, general purpose computers, special purpose computers, and processors based on a multi-core architecture, as non-limiting examples.
[0123] When a figure is presented as a flow diagram, it should be understood that it also provides a block diagram of a corresponding apparatus. Similarly, when a figure is presented as a block diagram, it should be understood that it also provides a flow diagram of a corresponding method / process.
[0124] The implementations and aspects described herein can be implemented in, for example, a method ora process, an apparatus, a software program, a data stream, or a signal. Even if only discussed in the context of a single form of implementation (for example, discussed only as a method), the implementation of features discussed can also be implemented in other forms (for example, an apparatus or program). An apparatus can be implemented in, for example, appropriate hardware, software, and firmware. The methods can be implemented in, for example, a processor, which refers to processing devices in general, including, for example, a computer, a microprocessor, an integrated circuit, or a programmable logic device. Processors also include communication devices, such as, for example, computers, cell phones, portable / personal digital assistants (“PDAs”), and other devices that facilitate communication of information between end-users.
[0125] Reference to “one embodiment” or “an embodiment” or “one implementation” or “an implementation”, as well as other variations thereof, means that a particular feature, structure,characteristic, and so forth described in connection with the embodiment is included in at least one embodiment. Thus, the appearances of the phrase “in one embodiment” or “in an embodiment” or “in one implementation” or “in an implementation”, as well any other variations, appearing in various places throughout this disclosure are not necessarily all referring to the same embodiment.
[0126] Additionally, this disclosure may refer to “determining” various pieces of information. Determining the information can include one or more of, for example, estimating the information, calculating the information, predicting the information, or retrieving the information from memory.
[0127] Further, this disclosure may refer to “accessing” various pieces of information. Accessing the information can include one or more of, for example, receiving the information, retrieving the information (for example, from memory), storing the information, moving the information, copying the information, calculating the information, determining the information, predicting the information, or estimating the information.
[0128] Additionally, this disclosure may refer to “receiving” various pieces of information. Receiving is, as with “accessing”, intended to be a broad term. Receiving the information can include one or more of, for example, accessing the information, or retrieving the information (for example, from memory). Further, “receiving” is typically involved, in one way or another, during operations such as, for example, storing the information, processing the information, transmitting the information, moving the information, copying the information, erasing the information, calculating the information, determining the information, predicting the information, or estimating the information.
[0129] It is to be appreciated that the use of any of the following 7”, “and / or”, and “at least one of”, for example, in the cases of “A / B”, “A and / or B” and “at least one of A and B”, is intended to encompass the selection of the first listed option (A) only, or the selection of the second listed option (B) only, or the selection of both options (A and B). As a further example, in the cases of “A, B, and / or C” and “at least one of A, B, and C”, such phrasing is intended to encompass the selection of the first listed option (A) only, or the selection of the second listed option (B) only, or the selection of the third listed option (C) only, or the selection of the first and the second listed options (A and B) only, or the selection of the first and third listed options (A and C) only, or the selection of the second and third listed options (B and C) only, or the selection of all three options (A and B and C). This may be extended for as many items as are listed.
[0130] Also, as used herein, the word “signal” refers to, among other things, indicating something to a corresponding decoder. For example, in certain embodiments the encodersignals a particular one of a plurality of parameters for region-based filter parameter selection for de-artifact filtering. In this way, in an embodiment the same parameter is used at both the encoder side and the decoder side. Thus, for example, an encoder can transmit (explicit signaling) a particular parameter to the decoder so that the decoder can use the same particular parameter. Conversely, if the decoder already has the particular parameter as well as others, then signaling can be used without transmitting (implicit signaling) to simply allow the decoder to know and select the particular parameter. By avoiding transmission of any actual functions, a bit savings is realized in various embodiments. It is to be appreciated that signaling can be accomplished in a variety of ways. For example, one or more syntax elements, flags, and so forth are used to signal information to a corresponding decoder in various embodiments. While the preceding relates to the verb form of the word “signal”, the word “signal” can also be used herein as a noun.
[0131] Implementations can produce a variety of signals formatted to carry information that can be, for example, stored or transmitted. The information can include, for example, instructions for performing a method, or data produced by one of the described implementations. For example, a signal can be formatted to carry the bitstream of a described embodiment. Such a signal can be formatted, for example, as an electromagnetic wave (for example, using a radio frequency portion of spectrum) or as a baseband signal. The formatting can include, for example, encoding a data stream and modulating a carrier with the encoded data stream. The information that the signal carries can be, for example, analog or digital information. The signal can be transmitted over a variety of different wired or wireless links, as is known. The signal can be stored on a processor-readable medium.
[0132] We describe a number of embodiments. Features of these embodiments can be provided alone or in any combination, across various claim categories and types. Further, embodiments can include one or more of the following features, devices, or aspects, alone or in any combination, across various claim categories and types:• A bitstream or signal that includes one or more of the described syntax elements, or variations thereof.• A bitstream or signal that includes syntax conveying information generated according to any of the embodiments described.• Creating and / or transmitting and / or receiving and / or decoding a bitstream or signal that includes one or more of the described syntax elements, or variations thereof.• Creating and / or transmitting and / or receiving and / or decoding according to any of the embodiments described.A method, process, apparatus, medium storing instructions, medium storing data, or signal according to any of the embodiments described.
[0133] Note that various hardware elements of one or more of the described embodiments may be referred to as “modules” that carry out (i.e., perform, execute, and the like) various functions that are described herein in connection with the respective modules. As used herein, a module includes hardware (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) deemed suitable for a given implementation. Each described module may also include instructions executable for carrying out the one or more functions described as being carried out by the respective module, and it is noted that those instructions could take the form of or include hardware (i.e., hardwired) instructions, firmware instructions, software instructions, and / or the like, and may be stored in any suitable non-transitory computer- readable medium or media, such as commonly referred to as RAM, ROM, etc.
[0134] Although features and elements are described above in particular combinations, each feature or element can be used alone or in any combination with the other features and elements. In addition, the methods described herein may be implemented in a computer program, software, or firmware incorporated in a computer-readable medium for execution by a computer or processor. Examples of computer-readable storage media include, but are not limited to, a read only memory (ROM), a random access memory (RAM), a register, cache memory, semiconductor memory devices, magnetic media such as internal hard disks and removable disks, magneto-optical media, and optical media such as CD-ROM disks, and digital versatile disks (DVDs). A processor in association with software may be used to implement a radio frequency transceiver for use in a WTRU, UE, terminal, base station, RNC, or any host computer.
Claims
CLAIMS1. A mesh encoding method comprising: obtaining an input mesh comprising vertices having at least one attribute; for each of a plurality of the vertices, obtaining a prediction of the respective 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 set of prediction residuals comprising prediction residuals for each of the attributes predicted using the first prediction technique; determining a second set of prediction residuals comprising prediction residuals for each of the attributes predicted using the second prediction technique; and performing separate entropy encoding of the first set of prediction residuals and the second set of prediction residuals.
2. A mesh encoding apparatus comprising one or more processors configured to perform at least: obtaining an input mesh comprising vertices having at least one attribute; for each of a plurality of the vertices, obtaining a prediction of the respective 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 set of prediction residuals comprising prediction residuals for each of the attributes predicted using the first prediction technique; determining a second set of prediction residuals comprising prediction residuals for each of the attributes predicted using the second prediction technique; and performing separate entropy encoding of the first set of prediction residuals and the second set of prediction residuals.
3. A mesh decoding method comprising: obtaining at least a first set of prediction residuals and a second set of prediction residuals; for at least one vertex in a mesh, determining an attribute prediction technique for the vertex from among at least two attribute prediction techniques; obtaining a prediction of an attribute of the vertex using the determined prediction technique; based on the determined prediction technique, selecting one of the sets of prediction residuals;obtaining a residual associated with the vertex from the selected set of prediction residuals; and reconstructing the attribute of the vertex based on the obtained prediction and the obtained residual.
4. A mesh decoding apparatus comprising one or more processors configured to perform at least: obtaining at least a first set of prediction residuals and a second set of prediction residuals; for at least one vertex in a mesh, determining an attribute prediction technique for the vertex from among at least two attribute prediction techniques; obtaining a prediction of an attribute of the vertex using the determined prediction technique; based on the determined prediction technique, selecting one of the sets of prediction residuals; obtaining a residual associated with the vertex from the selected set of prediction residuals; and reconstructing the attribute of the vertex based on the obtained prediction and the obtained residual.
5. The method of claim 1 or 3, or the apparatus of claim 2 or 4, wherein the attribute comprises at least one position coordinate.
6. The method of claim 1 or 3, or claim 5 as it depends from claim 1 or 3, or the apparatus of claim 2 or 4, or claim 5 as it depends from claim 2 or 4, wherein the first prediction technique comprises a multi-parallelogram prediction technique.
7. The method of claim 1 or 3, or claims 5-6 as they depend from claim 1 or 3, or the apparatus of claim 2 or 4, or claims 5-6 as they depend from claim 2 or 4, wherein the attribute comprises at least one texture coordinate.
8. The method of claim 1 or 3, or claims 5-7 as they depend from claim 1 or 3, or the apparatus of claim 2 or 4, or claims 5-7 as they depend from claim 2 or 4, wherein the first prediction technique comprises a minimum-stretch prediction technique.
9. The method of claim 1 or 3, or claims 5-8 as they depend from claim 1 or 3, or the apparatus of claim 2 or 4, or claims 5-8 as they depend from claim 2 or 4, wherein the second prediction technique comprises using a previously coded attribute value as a predictor.
10. The method of claim 1 or 3, or claims 5-8 as they depend from claim 1 or 3, or the apparatus of claim 2 or 4, or claims 5-8 as they depend from claim 2 or 4, wherein the second prediction technique comprises using an average of one or more previously coded attribute values as a predictor.
11. The method of claim 1 , or claims 5-10 as they depend from claim 1 , or the apparatus of claim 2, or claims 5-10 as they depend from claim 2, wherein the separate entropy encoding of the first set of prediction residuals and the second set of prediction residuals comprises arithmetic coding the first set of prediction residuals and the second set of prediction residuals using different contexts.
12. The method of claim 3, or claims 5-10 as they depend from claim 3, or the apparatus of claim 4, or claims 5-10 as they depend from claim 4, further comprising: entropy decoding the first set of prediction residuals; and separately entropy decoding the second set of prediction residuals.
13. The method of claim 12 as it depends from claim 3, or the apparatus of claim 12 as it depends from claim 4, wherein the separate entropy decoding of the first set of prediction residuals and the second set of prediction residuals comprises arithmetic decoding the first set of prediction residuals and the second set of prediction residuals using different contexts.
14. A computer-readable medium storing instructions for performing the method of claim 1 , or claims 5-11 as they depend from claim 1 , or claim 3, or claims 5-9 or 12-13 as they depend from claim 3.
15. A signal conveying a mesh encoded according to the method of claim 1 , or claims 5-11 as they depend from claim 1 .
Citation Information
Patent Citations
New predictors to encode or decode geometry data in 3d objects
GB2551389A
Efficient end-to-end edge breaker implementation
WO2024208852A1