Encoding device, decoding device, encoding method, and decoding method

By selecting appropriate context and probability values ​​in 3D mesh encoding and performing arithmetic encoding on each face, the problem of insufficient compression ratio in existing technologies is solved, achieving more efficient encoding and decoding results.

CN120858581APending Publication Date: 2025-10-28PANASONIC INTELLECTUAL PROPERTY CORP OF AMERICA
View PDF 1 Cites 0 Cited by

Patent Information

Application Number
CN202480018115.5
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2023-03-17
Filing Date
2024-03-04
Publication Date
2025-10-28

AI Technical Summary

Technical Problem

Existing technologies struggle to improve compression rates in encoding and processing 3D mesh data, especially failing to effectively utilize the characteristics of 3D mesh information.

Method used

By using context-based arithmetic coding for each face of the 3D mesh during the encoding process, and selecting appropriate context and probability values ​​to encode the connection type, the compression ratio can be improved by leveraging the characteristics of previous connection types.

Benefits of technology

The compression rate of 3D mesh data has been improved, especially by selecting appropriate context and probability values, which enhances the utilization of the characteristics of 3D mesh information and achieves more efficient encoding and decoding.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN120858581A_ABST
    Figure CN120858581A_ABST
Patent Text Reader

Abstract

An encoding device (100) is provided with: a memory (152); and a circuit (151) capable of accessing the memory (152), the circuit (151), during operation, encodes a connection type pertaining to a connection relationship between a surface to be processed and an unprocessed surface by context-based arithmetic encoding for each of a plurality of surfaces constituting a three-dimensional grid, and, during encoding of a current connection type, which is the connection type to be encoded, encodes the current connection type to be encoded by context-based arithmetic encoding for each of the plurality of surfaces constituting the three-dimensional grid. The context to be applied to the arithmetic encoding is selected from a plurality of contexts using a previous connection type that is the connection type encoded prior to the current connection type.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] This disclosure relates to encoding devices, etc. Background Technology

[0002] Patent Document 1 discloses a method and apparatus for encoding and decoding three-dimensional mesh data. Additionally, Non-Patent Document 1 illustrates techniques related to the encoding and decoding of three-dimensional mesh data.

[0003] Prior art literature Patent Literature Patent Document 1: Japanese Patent Application Publication No. 2006-187015 Non-patent literature Non-patent literature 1: Jarek Rossignac et al., "3D Compression Made Simple: Edgebreaker on a Corner-Table", [online], [Searched January 27, 2024]<URL:https: / / www.cs.cmu.edu / ~alla / edgebreaker_simple.pdf> Summary of the Invention

[0004] The problem that the invention aims to solve There is a desire to further improve coding processes related to 3D data. The purpose of this disclosure is to improve coding processes related to 3D data.

[0005] Methods used to solve problems One aspect of the encoding method disclosed herein includes: a memory; and circuitry capable of accessing the memory. In operation, the circuitry encodes, for each face constituting a plurality of faces of a three-dimensional mesh, a connection type related to the connection relationship between the face of the processed object and unprocessed faces via context-based arithmetic encoding. In encoding the connection type of the encoded object, i.e., the current connection type, the context applied to the arithmetic encoding is selected from a plurality of contexts using a connection type encoded before the current connection type, i.e., a previous connection type.

[0006] Furthermore, these general or specific methods can be implemented either by a system, apparatus, method, integrated circuit, computer program, or a non-transitory recording medium such as a computer-readable CD-ROM, or by any combination of systems, apparatus, methods, integrated circuits, computer programs, and recording media.

[0007] Effects of the Invention This disclosure can help improve coding processes related to three-dimensional data. Attached Figure Description

[0008] Figure 1 This is a conceptual diagram representing a three-dimensional mesh related to the implementation method.

[0009] Figure 2 This is a conceptual diagram representing the basic elements of a three-dimensional mesh for a particular implementation method.

[0010] Figure 3 This is a conceptual diagram representing a mapping of implementation methods.

[0011] Figure 4 This is a block diagram illustrating an example of the configuration of an encoding / decoding system according to an implementation method.

[0012] Figure 5 This is a block diagram illustrating an example of the configuration of an encoding device according to an embodiment.

[0013] Figure 6 This is a block diagram illustrating another configuration example of the encoding device according to the relevant implementation method.

[0014] Figure 7 This is a block diagram illustrating an example of the configuration of a decoding device according to an embodiment.

[0015] Figure 8 This is a block diagram illustrating another configuration example of a decoding device according to an embodiment.

[0016] Figure 9 This is a conceptual diagram illustrating a configuration example of a bitstream for a specific implementation method.

[0017] Figure 10 This is a conceptual diagram illustrating another example of a bitstream implementation.

[0018] Figure 11 This is a conceptual diagram representing another example of the configuration of a bitstream in relation to an implementation method.

[0019] Figure 12 This is a block diagram illustrating a specific example of an encoding / decoding system according to an implementation method.

[0020] Figure 13 This is a conceptual diagram representing an example of the configuration of point group data related to the implementation method.

[0021] Figure 14 This is a conceptual diagram representing a data file example of point group data related to an implementation method.

[0022] Figure 15 This is a conceptual diagram illustrating an example of the structure of grid data for a given implementation method.

[0023] Figure 16This is a conceptual diagram representing a data file example of grid data related to an implementation method.

[0024] Figure 17 This is a conceptual diagram representing the types of three-dimensional data related to the implementation method.

[0025] Figure 18 This is a block diagram illustrating a configuration example of a three-dimensional 1D data encoder according to an embodiment.

[0026] Figure 19 This is a block diagram illustrating an example of the configuration of a three-dimensional data decoder according to an implementation method.

[0027] Figure 20 This is a block diagram illustrating another configuration example of a three-dimensional data encoder with respect to an implementation method.

[0028] Figure 21 This is a block diagram illustrating another configuration example of a three-dimensional data decoder with respect to an implementation method.

[0029] Figure 22 This is a conceptual diagram representing a specific example of the coding process related to the implementation method.

[0030] Figure 23 This is a conceptual diagram illustrating a specific example of the decoding process in a particular implementation.

[0031] Figure 24 This is a block diagram illustrating an installation example of the encoding device according to an embodiment.

[0032] Figure 25 This is a block diagram illustrating an installation example of the decoding device according to an embodiment.

[0033] Figure 26 This is a block diagram illustrating another configuration example of an encoding / decoding system according to an embodiment.

[0034] Figure 27 This is a block diagram illustrating another configuration example of the encoding device according to the relevant implementation method.

[0035] Figure 28 This is a block diagram illustrating another configuration example of the decoding apparatus according to the relevant implementation method.

[0036] Figure 29 This is a conceptual diagram representing five types of connection types related to the implementation methods.

[0037] Figure 30 This is a conceptual diagram illustrating an example of how connection types are sequentially determined in relation to implementation methods.

[0038] Figure 31 This is a flowchart illustrating the encoding and decoding processes for connection types in the implementation method.

[0039] Figure 32 This is a flowchart illustrating a first specific example of encoding related to the connection type of the implementation method.

[0040] Figure 33 This is a flowchart illustrating a first specific example of decoding the connection type related to the implementation method.

[0041] Figure 34 This is a flowchart illustrating a second specific example of encoding related to the connection type of the implementation method.

[0042] Figure 35 This is a flowchart illustrating a second specific example of decoding the connection type related to the implementation method.

[0043] Figure 36 This is a block diagram illustrating another configuration example of an encoding / decoding system according to an embodiment.

[0044] Figure 37 This is a flowchart illustrating the encoding and decoding processes for the three-dimensional coordinate positions and texture mapping coordinate positions of the relevant implementation method.

[0045] Figure 38 This is a flowchart illustrating the parameter setting process for encoding or decoding three-dimensional coordinate positions in relation to an implementation method.

[0046] Figure 39 This is a flowchart illustrating the setting process of parameters for encoding or decoding texture mapping coordinate positions in relation to an implementation method.

[0047] Figure 40 This is a flowchart illustrating an example of basic coding processes related to an implementation method.

[0048] Figure 41 This is a flowchart illustrating an example of the processing included in the basic coding process of a relevant implementation method.

[0049] Figure 42 This is a flowchart illustrating another example of the basic coding process for a given implementation method.

[0050] Figure 43 This is a flowchart illustrating an example of basic decoding processing for a particular implementation method.

[0051] Figure 44 This is a flowchart illustrating an example of the processing included in the basic decoding process of a relevant implementation method.

[0052] Figure 45 This is a flowchart illustrating another example of the basic decoding process for a particular implementation method.

[0053] Figure 46This is a block diagram illustrating another configuration example of the encoding device according to the relevant implementation method.

[0054] Figure 47 This is a block diagram illustrating another configuration example of the encoding device according to the relevant implementation method.

[0055] Figure 48 This is a block diagram illustrating another configuration example of the decoding apparatus according to the relevant implementation method.

[0056] Figure 49 This is a block diagram illustrating another configuration example of the decoding apparatus according to the relevant implementation method. Detailed Implementation

[0057] <Introduction> For example, three-dimensional (3D) meshes are used in computer graphics. For example, computer graphics can also consist of multiple frames that are different in time, and each frame is represented by a three-dimensional mesh.

[0058] Furthermore, a 3D mesh consists of vertex information representing the positions of multiple vertices in 3D space, connection information representing the connections between these vertices, and attribute information representing the properties of each vertex or face. Each face is constructed according to the connection relationships between multiple vertices. Such a 3D mesh can be used to represent a wide variety of computer graphics and images.

[0059] Furthermore, a 3D mesh consists of vertex information representing the positions of multiple vertices in 3D space, connection information representing the connections between these vertices, and attribute information representing the properties of each vertex or face. Each face is constructed according to the connection relationships between multiple vertices. Such a 3D mesh can be used to represent various computer graphics and images.

[0060] Furthermore, efficient encoding and decoding of 3D meshes are desired for their transmission and storage. Arithmetic encoding and decoding can be used for efficient 3D mesh encoding and decoding. For example, in arithmetic encoding, the probability of occurrence of values ​​contained in the information is used to compress the information. Alternatively, the probability of occurrence can be represented by the context corresponding to the surrounding conditions of the encoded object information. Therefore, the compression rate of the 3D mesh information can potentially be improved.

[0061] However, even with arithmetic coding and decoding, the compression ratio is not necessarily improved depending on the characteristics of the information in the 3D mesh. Specifically, for example, in context-based arithmetic coding, it is difficult to improve the compression ratio without applying a context corresponding to the characteristics of the information in the 3D mesh.

[0062] Therefore, the encoding device of Example 1 includes: a memory; and a circuit capable of accessing the memory, wherein, in operation, the circuit encodes, for each of the plurality of faces constituting a three-dimensional mesh, a connection type related to the connection relationship between the face of the object being processed and the unprocessed face by means of context-based arithmetic encoding, wherein in the encoding of the connection type of the object being encoded, i.e., the current connection type, the connection type encoded before the current connection type, i.e., the previous connection type, is used, and the context applied to the arithmetic encoding is selected from a plurality of contexts.

[0063] Therefore, it is sometimes possible to select the context for arithmetic encoding of the current connection type based on the previous connection type. Consequently, it is sometimes possible to perform arithmetic encoding of the current connection type, which may have different probability distributions depending on the previous connection type, based on the context selected according to the previous connection type. Therefore, it is sometimes possible to improve the compression ratio based on the characteristics of the information in the three-dimensional mesh.

[0064] Furthermore, multiple examples of connection types related to the connection relationship between the face of the processed object and the unprocessed face may also include types where the face of the processed object is not connected to the unprocessed face (e.g., type E described later).

[0065] Alternatively, the encoding device of Example 2 can also be an encoding device in which the context is used to determine the probability value used in the arithmetic encoding, and the circuit uses the probability value determined based on the context to perform the arithmetic encoding on the current connection type, wherein the context is selected using the previous connection type.

[0066] Therefore, it is sometimes possible to specify the probability value of arithmetic coding suitable for the current connection type based on the previous connection type. This can sometimes improve the compression ratio.

[0067] Alternatively, the encoding device in Example 3 can also be an encoding device in which the previous connection type is the connection type that was encoded immediately before the current connection type, in the encoding device of Example 1 or 2.

[0068] Therefore, it is sometimes possible to select the context for arithmetic encoding of the current connection type based on the preceding connection type. Consequently, it is sometimes possible to perform arithmetic encoding of the current connection type, which may have different probability distributions depending on the preceding connection type, based on the context selected according to the preceding connection type. Therefore, it is sometimes possible to improve the compression ratio based on the characteristics of the information in the three-dimensional mesh.

[0069] Alternatively, the encoding device in Example 4 can also be an encoding device in which the shape of each of the plurality of faces is a triangle, as in any of the encoding devices in Examples 1 to 3.

[0070] Therefore, it is sometimes possible to encode the connection types of multiple triangles that make up a 3D mesh. Furthermore, it is sometimes possible to improve the compression rate of information representing the connection relationships of multiple triangles.

[0071] Alternatively, the encoding device in Example 5 can also be an encoding device in which, in any of the encoding devices in Examples 1 to 4, the connection type is any one of a plurality of types including a type representing a branch, wherein the branch refers to a plurality of unprocessed face branches connected to the face of the processed object.

[0072] Therefore, it is sometimes possible to represent branching connections, such as connections between the processed object's face and two unprocessed faces, through connection types. Furthermore, it is sometimes possible to improve the compression ratio of information representing branching connection relationships.

[0073] Alternatively, the encoding device of Example 6 can also be the following encoding device: In the encoding device of Example 5, the circuit selects a first context as the context when the previous connection type is the type representing the branch, and selects a second context different from the first context as the context when the previous connection type is a type different from the type representing the branch.

[0074] Therefore, the context can sometimes be selected based on whether the previous connection type represents a branch or another type. Furthermore, the current connection type can sometimes be encoded based on the characteristic that the previous connection type represented a branch or another type. Consequently, the compression rate of information representing connection relationships including branches can sometimes be improved.

[0075] Alternatively, the encoding device in Example 7 can also be an encoding device in which the connection type is any one of a plurality of types specified by Edgebreaker in any of the encoding devices in Examples 1 to 6.

[0076] Therefore, it is sometimes possible to represent the connection relationships defined by the Edgebreaker through the connection type. Furthermore, it is sometimes possible to improve the compression ratio of information representing the connection relationships defined by the Edgebreaker.

[0077] Alternatively, the encoding device of Example 8 can also be the following encoding device: In the encoding device of Example 7, the circuit selects a first context as the context when the previous connection type is type S specified by the Edgebreaker, and selects a second context different from the first context as the context when the previous connection type is a type different from the type S.

[0078] Therefore, it is sometimes possible to select the context based on whether the previous connection type was type S or another type. Furthermore, it is sometimes possible to encode the current connection type based on the characteristic that the previous connection type was type S or another type. Consequently, it is sometimes possible to improve the compression ratio of information representing connection relationships, including type S as specified by the Edgebreaker.

[0079] Additionally, the decoding apparatus of Example 9 includes: a memory; and a circuit capable of accessing the memory, wherein, in operation, the circuit decodes, for each of the plurality of faces constituting a three-dimensional mesh, a connection type related to the connection relationship between the face of the processed object and unprocessed faces by context-based arithmetic decoding, wherein in decoding the connection type of the decoded object, i.e., the current connection type, the circuit selects the context applicable to the arithmetic decoding from a plurality of contexts using the connection type that was decoded earlier than the current connection type, i.e., the previous connection type.

[0080] Therefore, it is sometimes possible to select the context for arithmetic decoding of the current connection type based on the previous connection type. Consequently, it is sometimes possible to perform arithmetic decoding of the current connection type, which may have different probability distributions depending on the previous connection type, based on the context selected according to the previous connection type. Therefore, it is sometimes possible to improve the compression ratio based on the characteristics of the information in the 3D mesh.

[0081] Furthermore, multiple examples of connection types related to the connection relationship between the face of the processed object and the unprocessed face may also include types where the face of the processed object is not connected to the unprocessed face (e.g., type E described later).

[0082] Alternatively, the decoding device of Example 10 can also be a decoding device as follows: In the decoding device of Example 9, the context is used to determine the probability value used in the arithmetic decoding, and the circuit uses the probability value determined based on the context to perform the arithmetic decoding on the current connection type, wherein the context is selected using the previous connection type.

[0083] Therefore, it is sometimes possible to specify the probability value of arithmetic decoding that is suitable for the current connection type, based on the previous connection type. This can sometimes improve the compression ratio.

[0084] Alternatively, the decoding device in Example 11 can also be a decoding device in which the previous connection type is the connection type that was decoded immediately before the current connection type, as in the decoding device of Example 9 or 10.

[0085] Therefore, it is sometimes possible to select the context for arithmetic decoding of the current connection type based on the preceding connection type. Consequently, it is sometimes possible to perform arithmetic decoding of the current connection type, which may have different probability distributions depending on the preceding connection type, based on the context selected according to the preceding connection type. Therefore, it is sometimes possible to improve the compression ratio based on the characteristics of the information in the 3D mesh.

[0086] Alternatively, the decoding device in Example 12 can also be a decoding device in which the shape of each of the plurality of faces is a triangle, as in any of Examples 9 to 11.

[0087] Therefore, it is sometimes possible to decode the connection types of multiple triangles that make up a 3D mesh. Furthermore, it is sometimes possible to improve the compression rate of information representing the connection relationships of multiple triangles.

[0088] Alternatively, the decoding device in Example 13 can also be a decoding device in which, in any of the decoding devices in Examples 9 to 12, the connection type is any one of a plurality of types including a type representing a branch, wherein the branch refers to a plurality of unprocessed face branches connected to the face of the processed object.

[0089] Therefore, it is sometimes possible to represent branching connections, such as connections between the processed object's face and two unprocessed faces, through connection types. Furthermore, it is sometimes possible to improve the compression ratio of information representing branching connection relationships.

[0090] Alternatively, the decoding device of Example 14 can also be a decoding device as follows: In the decoding device of Example 13, the circuit selects a first context as the context when the previous connection type is the type representing the branch, and selects a second context different from the first context as the context when the previous connection type is a type different from the type representing the branch.

[0091] Therefore, the context can sometimes be selected based on whether the previous connection type represents a branch or another type. Furthermore, the current connection type can sometimes be decoded based on the characteristic that the previous connection type represented a branch or another type. Consequently, the compression rate of information representing connection relationships including branches can sometimes be improved.

[0092] Alternatively, the decoding device in Example 15 can also be a decoding device in which the connection type is any one of a plurality of types specified by Edgebreaker in any of the decoding devices in Examples 9 to 14.

[0093] Therefore, it is sometimes possible to represent the connection relationships defined by the Edgebreaker through the connection type. Furthermore, it is sometimes possible to improve the compression ratio of information representing the connection relationships defined by the Edgebreaker.

[0094] Alternatively, the decoding device of Example 16 can be a decoding device as follows: In the decoding device of Example 15, the circuit selects a first context as the context when the previous connection type is type S specified by the Edgebreaker, and selects a second context different from the first context as the context when the previous connection type is a type different from the type S.

[0095] Therefore, it is sometimes possible to select the context based on whether the previous connection type was type S or another type. Furthermore, it is sometimes possible to decode the current connection type based on the characteristic that the previous connection type was type S or another type. Consequently, it is sometimes possible to improve the compression ratio of information representing connection relationships, including type S as specified by the Edgebreaker.

[0096] In addition, in the encoding method of Example 17, for each of the multiple faces constituting the three-dimensional mesh, the connection type related to the connection relationship between the face of the processed object and the unprocessed face is encoded by context-based arithmetic encoding. In the encoding of the connection type of the encoded object, i.e. the current connection type, the connection type that was encoded before the current connection type, i.e. the previous connection type, is used to select the context applied to the arithmetic encoding from multiple contexts.

[0097] Therefore, it is sometimes possible to select the context for arithmetic encoding of the current connection type based on the previous connection type. Consequently, it is sometimes possible to perform arithmetic encoding of the current connection type, which may have different probability distributions depending on the previous connection type, based on the context selected according to the previous connection type. Therefore, it is sometimes possible to improve the compression ratio based on the characteristics of the information in the three-dimensional mesh.

[0098] In addition, the decoding method of Example 18, for each face among the multiple faces constituting the three-dimensional mesh, decodes the connection type related to the connection relationship between the face of the processed object and the unprocessed face through context-based arithmetic decoding. In the decoding of the connection type of the decoded object, i.e. the current connection type, the context applied to the arithmetic decoding is selected from multiple contexts using the connection type that was decoded before the current connection type, i.e. the previous connection type.

[0099] Therefore, it is sometimes possible to select the context for arithmetic decoding of the current connection type based on the previous connection type. Consequently, it is sometimes possible to perform arithmetic decoding of the current connection type, which may have different probability distributions depending on the previous connection type, based on the context selected according to the previous connection type. Therefore, it is sometimes possible to improve the compression ratio based on the characteristics of the information in the 3D mesh.

[0100] Furthermore, the information of a 3D mesh can include the 3D coordinates of vertices in 3D space, and the texture-mapped coordinates of vertices mapped to the corresponding 2D plane. The 3D coordinates and texture-mapped coordinates can have different characteristics.

[0101] Furthermore, the encoding device of Example 19 includes a memory; and a circuit capable of accessing the memory, wherein, in operation, the circuit performs arithmetic encoding of the three-dimensional coordinate positions according to a first order obtained by subtracting a first predetermined value from the bit precision of the three-dimensional coordinate positions of the vertices constituting the three-dimensional mesh, and performs arithmetic encoding of the texture mapping coordinate positions of the vertices according to a second order obtained by subtracting a second predetermined value from the bit precision of the texture mapping coordinate positions.

[0102] Therefore, sometimes it is possible to perform arithmetic encoding of the 3D coordinate position according to the first order of arithmetic encoding suitable for the 3D coordinate position, and arithmetic encoding of the texture mapping coordinate position according to the second order of arithmetic encoding suitable for the texture mapping coordinate position. Thus, sometimes it is possible to perform arithmetic encoding of the 3D coordinate position according to the characteristics of the 3D coordinate position, and arithmetic encoding of the texture mapping coordinate position according to the characteristics of the texture mapping coordinate position. Therefore, compression ratio can sometimes be improved.

[0103] Furthermore, the encoding device of Example 20 can also be an encoding device in which, in the encoding device of Example 19, exponential Golomb codes are used in both the arithmetic encoding of the three-dimensional coordinate position and the arithmetic encoding of the texture mapping coordinate position.

[0104] This can sometimes improve the compression rate of information that can be efficiently represented by exponential Golomb codes.

[0105] Furthermore, the encoding device of Example 21 can also be an encoding device in which the first order is applied to the exponential Golomb code used in the arithmetic encoding of the three-dimensional coordinate position, and the second order is applied to the exponential Golomb code used in the arithmetic encoding of the texture mapping coordinate position.

[0106] Therefore, it is sometimes possible to perform arithmetic encoding using first-order exponential Golomb codes that can efficiently represent 3D coordinate positions, and it is also possible to perform arithmetic encoding using second-order exponential Golomb codes that can efficiently represent texture mapping coordinate positions. Consequently, it is sometimes possible to improve the compression ratio of information about 3D coordinate positions and texture mapping coordinate positions.

[0107] Alternatively, the encoding device of Example 22 may also be an encoding device in which the first specified value is greater than or equal to the second specified value in the encoding device of Example 21.

[0108] Therefore, the characteristic that the variance of multiple 3D coordinate positions in 3D space is relatively small, while the variance of multiple texture mapping coordinate positions in 2D plane is relatively large, can sometimes be reflected in the first and second orders. Thus, the compression ratio of information about 3D coordinate positions and texture mapping coordinate positions can sometimes be improved.

[0109] Furthermore, the decoding device of Example 23 includes a memory; and a circuit capable of accessing the memory. In operation, the circuit performs arithmetic decoding of the three-dimensional coordinate positions according to a first order obtained by subtracting a first predetermined value from the bit precision of the three-dimensional coordinate positions of the vertices constituting the three-dimensional mesh, and performs arithmetic decoding of the texture mapping coordinate positions of the vertices according to a second order obtained by subtracting a second predetermined value from the bit precision of the texture mapping coordinate positions.

[0110] Therefore, sometimes it is possible to perform arithmetic decoding of the 3D coordinate position according to the first order of arithmetic decoding suitable for the 3D coordinate position, and arithmetic decoding of the texture map coordinate position according to the second order of arithmetic decoding suitable for the texture map coordinate position. Consequently, sometimes it is possible to perform arithmetic decoding of the 3D coordinate position according to the characteristics of the 3D coordinate position, and arithmetic decoding of the texture map coordinate position according to the characteristics of the texture map coordinate position. Therefore, compression ratio can sometimes be improved.

[0111] Furthermore, the decoding device of Example 24 can also be a decoding device in which exponential Golomb codes are used in both the arithmetic decoding of the three-dimensional coordinate position and the arithmetic decoding of the texture mapping coordinate position, as in the decoding device of Example 23.

[0112] This can sometimes improve the compression rate of information that can be efficiently represented by exponential Golomb codes.

[0113] Furthermore, the decoding device of Example 25 can also be a decoding device as follows: in the decoding device of Example 24, the first order is applied to the exponential Golomb code used in the arithmetic decoding at the three-dimensional coordinate position, and the second order is applied to the exponential Golomb code used in the arithmetic decoding at the texture mapping coordinate position.

[0114] Therefore, it is sometimes possible to perform arithmetic decoding of first-order exponential Golomb codes that can efficiently represent 3D coordinate positions, and it is also possible to perform arithmetic decoding of second-order exponential Golomb codes that can efficiently represent texture map coordinate positions. Consequently, it is sometimes possible to improve the compression ratio of information about 3D coordinate positions and texture map coordinate positions.

[0115] Alternatively, the decoding device of Example 26 may also be a decoding device in which the first specified value is greater than or equal to the second specified value in the decoding device of Example 25.

[0116] Therefore, the characteristic that the variance of multiple 3D coordinate positions in 3D space is relatively small, while the variance of multiple texture mapping coordinate positions in 2D plane is relatively large, can sometimes be reflected in the first and second orders. Thus, the compression ratio of information about 3D coordinate positions and texture mapping coordinate positions can sometimes be improved.

[0117] Furthermore, the encoding method of Example 27 performs arithmetic encoding of the three-dimensional coordinate positions of the vertices of the face constituting the three-dimensional mesh according to the first order obtained by subtracting a first predetermined value from the bit precision of the three-dimensional coordinate positions, and performs arithmetic encoding of the texture mapping coordinate positions of the vertices according to the second order obtained by subtracting a second predetermined value from the bit precision of the texture mapping coordinate positions.

[0118] Therefore, sometimes it is possible to perform arithmetic encoding of the 3D coordinate position according to the first order of arithmetic encoding suitable for the 3D coordinate position, and arithmetic encoding of the texture mapping coordinate position according to the second order of arithmetic encoding suitable for the texture mapping coordinate position. Thus, sometimes it is possible to perform arithmetic encoding of the 3D coordinate position according to the characteristics of the 3D coordinate position, and arithmetic encoding of the texture mapping coordinate position according to the characteristics of the texture mapping coordinate position. Therefore, compression ratio can sometimes be improved.

[0119] Furthermore, the decoding method of Example 28 performs arithmetic decoding of the three-dimensional coordinate positions of the vertices of the face constituting the three-dimensional mesh according to the first order obtained by subtracting a first predetermined value from the bit precision of the three-dimensional coordinate positions, and performs arithmetic decoding of the texture mapping coordinate positions of the vertices according to the second order obtained by subtracting a second predetermined value from the bit precision of the texture mapping coordinate positions.

[0120] Therefore, sometimes it is possible to perform arithmetic decoding of the 3D coordinate position according to the first order of arithmetic decoding suitable for the 3D coordinate position, and arithmetic decoding of the texture map coordinate position according to the second order of arithmetic decoding suitable for the texture map coordinate position. Consequently, sometimes it is possible to perform arithmetic decoding of the 3D coordinate position according to the characteristics of the 3D coordinate position, and arithmetic decoding of the texture map coordinate position according to the characteristics of the texture map coordinate position. Therefore, compression ratio can sometimes be improved.

[0121] Furthermore, these general or specific methods can be implemented by non-transitory recording media such as systems, devices, methods, integrated circuits, computer programs, or computer-readable CD-ROMs, or by any combination of systems, devices, methods, integrated circuits, computer programs, and recording media.

[0122] <Performance and Terminology> Here, the following expressions and terms are used.

[0123] (1) Three-dimensional mesh A 3D mesh is a collection of faces, representing, for example, a 3D object. Furthermore, a 3D mesh primarily consists of vertex information, connectivity information, and attribute information. 3D meshes sometimes appear as polygonal meshes or grids. Additionally, 3D meshes can vary over time. A 3D mesh can contain metadata related to vertex, connectivity, and attribute information, as well as other additional information.

[0124] (2) Vertex information Vertex information represents information about vertices. For example, vertex information indicates the position of a vertex in three-dimensional space. Furthermore, vertices correspond to the vertices of the faces that make up a three-dimensional mesh. Vertex information is sometimes represented as "geometric information." Additionally, vertex information can sometimes be represented as positional information.

[0125] (3) Connection information Connection information represents the connections between vertices. For example, connection information represents the connections between faces or edges used to form a 3D mesh. Connection information is sometimes expressed as "Connectivity". Furthermore, connection information can sometimes be expressed as face information.

[0126] (4) Attribute information Attribute information represents the properties of a vertex or face. For example, attribute information represents attributes such as color, image, and normal vector that correspond to a vertex or face. Attribute information is sometimes represented as "Texture".

[0127] (5) face A face is an element that makes up a 3D mesh. Specifically, a face is a polygon on a plane in 3D space. For example, a face can be defined as a triangle in 3D space.

[0128] (6) Plane A plane is a two-dimensional plane in three-dimensional space. For example, a polygon can be formed on a plane, and multiple polygons can be formed on multiple planes.

[0129] (7) Bit stream A bitstream corresponds to encoded information. A bitstream can also be represented as a stream, an encoded bitstream, a compressed bitstream, or an encoded signal.

[0130] (8) Encoding and Decoding Encoding can be replaced by other representations such as storing, containing, writing, recording, signaling, sending, notifying, saving, or compressing, and these representations can also be interchanged. For example, encoding information can also mean including information in a bitstream. Furthermore, encoding information into a bitstream can also mean encoding information to generate a bitstream containing the encoded information.

[0131] Furthermore, the act of decoding can be replaced by acts such as reading, interpreting, reading, inputting, exporting, obtaining, receiving, extracting, restoring, reconstructing, decompressing, or expanding, and these acts can also be interchanged. For example, decoding information can also mean obtaining information from a bitstream. Additionally, decoding information from a bitstream can also refer to decoding a bitstream to obtain the information contained within it.

[0132] (9) Ordinal number In the description, constituent elements are sometimes assigned ordinal numbers such as 1st and 2nd. These ordinal numbers can also be changed appropriately. Furthermore, constituent elements can be either newly assigned ordinal numbers or removed from their ordinal numbers. In addition, regarding these ordinal numbers, sometimes they are assigned to elements for identification purposes, and sometimes they do not correspond to a meaningful order.

[0133] 3D Mesh Figure 1 This is a conceptual diagram illustrating a three-dimensional mesh according to this embodiment. The three-dimensional mesh is composed of multiple faces. For example, each face is a triangle. The vertices of these triangles are defined in three-dimensional space. Furthermore, the three-dimensional mesh represents a three-dimensional object. Each face may also have color or an image.

[0134] Figure 2 This is a conceptual diagram representing the basic elements of a 3D mesh for a specific implementation. The 3D mesh consists of vertex information, connection information, and attribute information. Vertex information represents the position of the vertices of a face in 3D space. Connection information represents the connections between vertices. Faces can be determined from vertex information and connection information. That is, colorless 3D objects are formed in 3D space using vertex information and connection information.

[0135] Attribute information can be mapped to vertices or faces. Attribute information mapped to vertices is sometimes represented as "Attribute Per Point". Attribute information mapped to vertices can represent the attributes of the vertex itself or the attributes of the faces connected to the vertex.

[0136] For example, color can be used as an attribute to establish a correspondence with vertices. The color corresponding to a vertex can be either the vertex's color or the color of the face connected to that vertex. The color of a face can also be the average of multiple colors corresponding to multiple vertices of that face. Furthermore, normal vectors can also be used as attribute information to establish a correspondence with vertices or faces. Such normal vectors can represent the front and back faces of a face.

[0137] Alternatively, a 2D image can be mapped to a face as attribute information. The 2D image mapped to a face is also represented as a texture image or an "Attribute Map". Furthermore, information representing the mapping between a face and a 2D image can also be mapped to a face as attribute information. This mapping information is sometimes represented as mapping information, vertex information of a texture image, or "Attribute UV Coordinate".

[0138] Furthermore, information such as color, image, and motion image used as attribute information is sometimes represented as "ParametricSpace".

[0139] This attribute information allows textures to be reflected in three-dimensional objects. That is, by using vertex information, connectivity information, and attribute information, colored three-dimensional objects can be formed in three-dimensional space.

[0140] In addition, as described above, attribute information is associated with vertices or faces, but it can also be associated with edges.

[0141] Figure 3 This is a conceptual diagram illustrating the mapping method used in this embodiment. For example, a region of a two-dimensional image in a two-dimensional plane can be mapped onto the surface of a three-dimensional mesh in three-dimensional space. Specifically, the coordinate information of a region in the two-dimensional image is mapped to the surface of the three-dimensional mesh. Thus, the image of the region mapped in the two-dimensional image is reflected onto the surface of the three-dimensional mesh.

[0142] By using mapping, a two-dimensional image used as attribute information can be separated from a three-dimensional mesh. For example, in the encoding of a three-dimensional mesh, a two-dimensional image can also be encoded using image encoding or video encoding methods.

[0143] <System Composition> Figure 4 This is a block diagram illustrating an example of the configuration of the encoding / decoding system according to this embodiment. Figure 4 The encoding and decoding system includes an encoding device 100 and a decoding device 200.

[0144] For example, encoding device 100 acquires a three-dimensional mesh and encodes it into a bitstream. Furthermore, encoding device 100 outputs the bitstream to network 300. For example, the bitstream contains the encoded three-dimensional mesh and control information used to decode the encoded three-dimensional mesh. By encoding the three-dimensional mesh, the information of the three-dimensional mesh is compressed.

[0145] Network 300 transmits the bit stream from encoding device 100 to decoding device 200. Network 300 can be the Internet, a wide area network (WAN), a local area network (LAN), or a combination thereof. Network 300 is not necessarily limited to two-way communication; it can also be a one-way communication network used for terrestrial digital broadcasting or satellite broadcasting, etc.

[0146] Alternatively, the Network 300 can be replaced by recording media such as DVD (Digital Versatile Disc) or BD (Blu-Ray Disc (registered trademark)).

[0147] Decoding device 200 acquires a bitstream and decodes the 3D mesh from the bitstream. Through decoding the 3D mesh, the information of the 3D mesh is unfolded. For example, decoding device 200 decodes the 3D mesh according to a decoding method corresponding to the encoding method used by encoding device 100 to encode the 3D mesh. That is, encoding device 100 and decoding device 200 encode and decode according to their respective encoding and decoding methods.

[0148] Furthermore, the 3D mesh before encoding can also be represented as the original 3D mesh. Additionally, the 3D mesh after decoding can also be represented as a reconstructed 3D mesh.

[0149] <Encoding device> Figure 5 This is a block diagram illustrating a configuration example of the encoding apparatus 100 according to this embodiment. For example, the encoding apparatus 100 includes a vertex information encoder 101, a connection information encoder 102, and an attribute information encoder 103.

[0150] Vertex information encoder 101 is an electrical circuit that encodes vertex information. For example, vertex information encoder 101 encodes vertex information into a bit stream according to a specified format for vertex information.

[0151] The connection information encoder 102 is an electrical circuit that encodes connection information. For example, the connection information encoder 102 encodes the connection information into a bit stream according to a format specified for the connection information.

[0152] The attribute information encoder 103 is an electrical circuit that encodes attribute information. For example, the attribute information encoder 103 encodes attribute information into a bit stream according to a format specified for the attribute information.

[0153] In encoding vertex information, connectivity information, and attribute information, both variable-length and fixed-length encoding can be used. Variable-length encoding can also correspond to Huffman coding or context-adaptive binary arithmetic coding (CABAC).

[0154] The vertex information encoder 101, the connection information encoder 102, and the attribute information encoder 103 can also be integrated. Alternatively, the vertex information encoder 101, the connection information encoder 102, and the attribute information encoder 103 can each be further refined into multiple constituent elements.

[0155] Figure 6 This is a block diagram illustrating another configuration example of the encoding device 100 according to this embodiment. For example, the encoding device 100, in addition to... Figure 5 In addition to the configuration shown, it also includes a preprocessor 104 and a postprocessor 105.

[0156] The preprocessor 104 is an electrical circuit that processes vertex information, connectivity information, and attribute information before encoding. For example, the preprocessor 104 can also perform transformation, separation, or reuse processing on the 3D mesh before encoding. More specifically, the preprocessor 104 can also separate vertex information, connectivity information, and attribute information from the 3D mesh before encoding.

[0157] The post-processor 105 is an electrical circuit that processes the encoded vertex information, connectivity information, and attribute information. For example, the post-processor 105 can also perform transformation, separation, or multiplexing processing on the encoded vertex information, connectivity information, and attribute information. More specifically, for example, the post-processor 105 can also multiplex the encoded vertex information, connectivity information, and attribute information into a bitstream. Furthermore, for example, the post-processor 105 can further perform variable-length encoding on the encoded vertex information, connectivity information, and attribute information.

[0158] <Decoding device> Figure 7 This is a block diagram illustrating a configuration example of the decoding apparatus 200 according to this embodiment. For example, the decoding apparatus 200 includes a vertex information decoder 201, a connection information decoder 202, and an attribute information decoder 203.

[0159] Vertex information decoder 201 is an electrical circuit that decodes vertex information. For example, vertex information decoder 201 decodes vertex information from a bitstream according to a specified format for vertex information.

[0160] The connection information decoder 202 is an electrical circuit that decodes connection information. For example, the connection information decoder 202 decodes connection information from a bitstream according to a format specified for the connection information.

[0161] The attribute information decoder 203 is an electrical circuit that decodes attribute information. For example, the attribute information decoder 203 decodes attribute information from a bitstream according to a format specified for the attribute information.

[0162] In decoding vertex information, connectivity information, and attribute information, both variable-length decoding and fixed-length decoding can be used. Variable-length decoding can also correspond to Huffman coding or context-adaptive binary arithmetic coding (CABAC).

[0163] The vertex information decoder 201, the connection information decoder 202, and the attribute information decoder 203 can also be integrated. Alternatively, the vertex information decoder 201, the connection information decoder 202, and the attribute information decoder 203 can each be further refined into multiple constituent elements.

[0164] Figure 8 This is a block diagram illustrating another configuration example of the decoding apparatus 200 according to this embodiment. For example, the decoding apparatus 200, in addition to... Figure 7 In addition to the configuration shown, it also includes a preprocessor 204 and a postprocessor 205.

[0165] The preprocessor 204 is an electrical circuit that processes vertex information, connectivity information, and attribute information before decoding. For example, the preprocessor 204 can also perform transformation, separation, or multiplexing processing on the bitstream before decoding vertex information, connectivity information, and attribute information.

[0166] More specifically, for example, preprocessor 204 can also separate sub-bitstreams corresponding to vertex information, connection information, and attribute information from the bitstream. Furthermore, for example, preprocessor 204 can also perform variable-length decoding on the bitstream before decoding the vertex information, connection information, and attribute information.

[0167] The post-processor 205 is an electrical circuit that processes vertex information, connectivity information, and attribute information after decoding. For example, the post-processor 205 can also perform transformation, separation, or multiplexing processing on the decoded vertex information, connectivity information, and attribute information. More specifically, the post-processor 205 can also multiplex the decoded vertex information, connectivity information, and attribute information into a 3D mesh.

[0168] <Bitstream> Vertex information, connectivity information, and attribute information are encoded and stored in a bitstream. The following illustrates the relationship between this information and the bitstream.

[0169] Figure 9 This is a conceptual diagram illustrating a configuration example of a bitstream according to this embodiment. In this example, connection information, vertex information, and attribute information are integrated within the bitstream. For example, connection information, vertex information, and attribute information may also be contained in a single file.

[0170] Alternatively, multiple parts of this information can be stored sequentially, such as the first part of the connection information, the first part of the vertex information, the first part of the attribute information, the second part of the connection information, the second part of the vertex information, the second part of the attribute information, and so on. These multiple parts can correspond to multiple parts that are different in time, multiple parts that are different in space, or multiple different faces.

[0171] Furthermore, the storage order of connection information, vertex information, and attribute information is not limited to the examples above, and a different storage order can also be used.

[0172] Figure 10 This is a conceptual diagram illustrating another configuration example of the bitstream according to this embodiment. In this example, the bitstream contains multiple files, and connection information, vertex information, and attribute information are stored in different files. Here, a file containing connection information, a file containing vertex information, and a file containing attribute information are shown, but the storage format is not limited to this example. For example, two types of information—connection information, vertex information, and attribute information—may be contained in one file, and the remaining type of information may be contained in other files.

[0173] Alternatively, this information can be split and stored in more files. For example, multiple parts of connection information, multiple parts of vertex information, and multiple parts of attribute information can be stored in multiple files. These multiple parts can correspond to multiple parts that differ in time, multiple parts that differ in space, or multiple faces.

[0174] Furthermore, the storage order of connection information, vertex information, and attribute information is not limited to the examples above, and a different storage order can also be used.

[0175] Figure 11 This is a conceptual diagram illustrating another configuration example of the bitstream according to this embodiment. In this example, the bitstream is composed of multiple separable sub-bitstreams, with connection information, vertex information, and attribute information stored in different sub-bitstreams.

[0176] Here, sub-bit streams containing connection information, sub-bit streams containing vertex information, and sub-bit streams containing attribute information are represented, but the storage format is not limited to this example.

[0177] For example, two types of information—connection information, vertex information, and attribute information—can be contained in one sub-bitstream, while the remaining type is contained in other sub-bitstreams. Specifically, the attribute information of a two-dimensional image, etc., can be stored in a sub-bitstream based on the image encoding method, different from the sub-bitstreams containing connection information and vertex information.

[0178] Furthermore, each sub-bitstream can contain multiple files. For example, multiple parts of connection information, multiple parts of vertex information, or multiple parts of attribute information can be stored in multiple files.

[0179] Furthermore, the storage order of connection information, vertex information, and attribute information is not limited to... Figure 9 , Figure 10 as well as Figure 11 The examples above can also use a different storage order. For instance, vertex information, connection information, and attribute information can be stored in the bitstream in the order of vertex information, connection information, and attribute information. Alternatively, any other order can be used in the bitstream, such as connection information, attribute information, and vertex information; vertex information, attribute information, and connection information; attribute information, connection information, and vertex information; or attribute information, vertex information, and connection information.

[0180] Alternatively, connection information, vertex information, and attribute information can be divided into multiple data segments, and these multiple data segments can be stored in a bitstream in a periodic or random order.

[0181] <Specific example> Figure 12 This is a block diagram illustrating a specific example of the encoding / decoding system according to this embodiment. Figure 12 The encoding and decoding system includes a three-dimensional data encoding system 110, a three-dimensional data decoding system 210, and an external connector 310.

[0182] The 3D data encoding system 110 includes a controller 111, an input / output processor 112, a 3D data encoder 113, a 3D data generator 115, and a system multiplexer 114. The 3D data decoding system 210 includes a controller 211, an input / output processor 212, a 3D data decoder 213, a system inverse multiplexer 214, a prompter 215, and a user interface 216.

[0183] In the 3D data encoding system 110, sensor data is input from the sensor terminal to the 3D data generator 115. The 3D data generator 115 generates 3D data, such as point group data or mesh data, based on the sensor data and inputs it to the 3D data encoder 113.

[0184] For example, the 3D data generator 115 generates vertex information and corresponding connection and attribute information. The 3D data generator 115 can also process vertex information while generating connection and attribute information. For example, the 3D data generator 115 can reduce the amount of data by deleting duplicate vertices or perform transformations on vertex information (position shifting, rotation, or normalization, etc.). Furthermore, the 3D data generator 115 can also render attribute information.

[0185] In addition, the 3D data generator 115 in Figure 12 The middle part is a component of the three-dimensional data encoding system 110, but it can also be configured independently outside the three-dimensional data encoding system 110.

[0186] Sensor terminals that provide sensor data for generating 3D data can be, for example, mobile objects such as cars, flying objects such as airplanes, portable terminals, or cameras. Additionally, distance sensors such as LiDAR, millimeter-wave radar, infrared sensors or rangefinders, stereo cameras, or combinations of multiple monocular cameras can also be used as sensor terminals.

[0187] Sensor data can also include the distance (position) of an object, images from a single-lens reflex camera, images from a stereo camera, color, reflectivity, sensor pose, orientation, gyroscope, sensed position (GPS information or altitude), speed, acceleration, sensed time, temperature, air pressure, humidity, or magnetism, etc.

[0188] 3D data encoder 113 corresponds to Figure 5 The encoding device 100 is shown in the figure. For example, the three-dimensional data encoder 113 encodes three-dimensional data to generate encoded data. In addition, the three-dimensional data encoder 113 generates control information in the encoding of the three-dimensional data. Furthermore, the three-dimensional data encoder 113 inputs the encoded data and the control information together to the system multiplexer 114.

[0189] Encoding 3D data can be done using either geometric methods or video codecs. Geometric encoding can be further categorized as geometry-based encoding, while video codec encoding can be categorized as video-based encoding.

[0190] The system multiplexer 114 multiplexes the encoded data and control information input from the 3D data encoder 113, generating multiplexed data using a prescribed multiplexing method. The system multiplexer 114 can also multiplex other media such as images, audio, subtitles, application data, or document files, or reference timing information, along with the encoded data and control information of the 3D data. Furthermore, the system multiplexer 114 can also multiplex attribute information associated with sensor data or 3D data.

[0191] For example, multiplexed data can be in file form for storage or packet form for transmission. ISOBMFF or ISOBMFF-based methods can also be used. Additionally, MPEG-DASH, MMT, MPEG-2 TSSystems, or RTP can also be used.

[0192] Furthermore, the input / output processor 112 outputs the multiplexed data as a transmission signal to the external connector 310. The multiplexed data, as a transmission signal, can be transmitted via wired or wireless means. Alternatively, the multiplexed data can be stored in internal memory or a storage device. The multiplexed data can also be transmitted to a cloud server via the Internet or stored in an external storage device.

[0193] For example, the transmission or storage of multiplexed data is carried out through methods corresponding to the medium used for transmission or storage, such as broadcasting or communication. As communication protocols, HTTP, FTP, TCP, UDP, IP, or combinations thereof can also be used. Furthermore, PULL-type communication methods and PUSH-type communication methods can also be used.

[0194] Wired transmission can utilize Ethernet (registered trademark), USB, RS-232C, HDMI (registered trademark), or coaxial cables. Wireless transmission can utilize 3GPP (registered trademark), IEEE-standard 3G / 4G / 5G, wireless LAN, Wi-Fi, Bluetooth, or millimeter wave. Furthermore, broadcast methods can include DVB-T2, DVB-S2, DVB-C2, ATSC 3.0, or ISDB-S3.

[0195] Alternatively, sensor data can be input to the 3D data generator 115 or the system multiplexer 114. Furthermore, 3D data or encoded data can be output as a transmission signal to the external connector 310 via the input / output processor 112. The transmission signal output from the 3D data encoding system 110 is input to the 3D data decoding system 210 via the external connector 310.

[0196] Furthermore, the various actions of the three-dimensional data encoding system 110 can also be controlled by the controller 111 that executes the application program.

[0197] In the 3D data decoding system 210, a transmission signal is input to the input / output processor 212. The input / output processor 212 decodes multiplexed data in file or packet form from the transmission signal and inputs the multiplexed data to the system inverse multiplexer 214. The system inverse multiplexer 214 obtains encoded data and control information from the multiplexed data and inputs it to the 3D data decoder 213. The system inverse multiplexer 214 can also obtain other media or reference time information from the multiplexed data.

[0198] 3D data decoder 213 corresponds to Figure 7 The decoding device 200 is shown in the figure. For example, the 3D data decoder 213 decodes 3D data from encoded data based on a predefined encoding method. Then, the prompter 215 displays the 3D data to the user.

[0199] In addition, additional information such as sensor data can be input to the prompter 215. The prompter 215 can also prompt 3D data based on the additional information. Furthermore, user instructions can be input from the user terminal to the user interface 216. And the prompter 215 can also prompt 3D data based on the input instructions.

[0200] In addition, the input / output processor 212 can also obtain three-dimensional data and encoded data from the external connector 310.

[0201] Furthermore, the various actions of the 3D data decoding system 210 can also be controlled by the controller 211 that executes the application program.

[0202] Figure 13 This is a conceptual diagram illustrating an example of the configuration of point group data in this embodiment. Point group data is data representing a group of points of a three-dimensional object.

[0203] Specifically, a point cloud consists of multiple points, possessing positional information representing the three-dimensional coordinates of each point, as well as attribute information representing the attributes of each point. The positional information is also represented by geometric information.

[0204] The categories of attribute information can be, for example, color or reflectivity. A mapping can be established between a single point and attribute information of one category, multiple different categories, or multiple values ​​for the same category for a single point.

[0205] Figure 14This is a conceptual diagram illustrating an example of a data file representing point group data according to this embodiment. In this example, there is a one-to-one correspondence between location information items and attribute information items, showing the location and attribute information of N points constituting the point group data. In this example, the location information is information representing three-dimensional coordinate positions using the x, y, and z axes, and the attribute information is information representing colors using RGB. A representative data file for point group data could be a PLY file, etc.

[0206] Figure 15 This is a conceptual diagram illustrating an example of the structure of the mesh data in this embodiment. The mesh data is data used in CG (Computer Graphics) and the like, and is three-dimensional mesh data that represents the three-dimensional shape of an object using multiple faces. Each face is also represented as a polygon, having a polygonal shape such as a triangle or quadrilateral.

[0207] Specifically, a 3D mesh consists of multiple points forming a point group, as well as multiple edges and faces. Each point is represented as a vertex or position. Each edge corresponds to a line segment connecting two vertices. Each face corresponds to a region enclosed by three or more edges.

[0208] In addition, 3D meshes possess positional information representing the 3D coordinates of vertices. This positional information is also represented as vertex information or geometric information (Geometory). Furthermore, 3D meshes have connectivity information, which represents the relationships between multiple vertices that constitute an edge or face. This connectivity information is also represented as connectivity. Moreover, 3D meshes possess attribute information representing properties for vertices, edges, or faces. This attribute information of 3D meshes is also represented as texture.

[0209] For example, attribute information can also represent the color, reflectivity, or normal vector of a vertex, edge, or face. The orientation of the normal vector can represent the front and back faces of a face.

[0210] As a data file format for grid data, target files, etc., can be used.

[0211] Figure 16 This is a conceptual diagram representing an example of a data file containing mesh data according to this embodiment. In this example, the data file contains position information G(1) to G(N) of N vertices constituting the 3D mesh and attribute information A1(1) to A1(N) of the N vertices. Furthermore, in this example, it contains M attribute information A2(1) to A2(M). The attribute information items may not correspond one-to-one with vertices or one-to-one with faces. Furthermore, attribute information may not exist at all.

[0212] Connection information is represented by a combination of vertex indices. n[1, 3, 4] represents the face of a triangle formed by three vertices: n=1, n=3, and n=4. Furthermore, m[2, 4, 6] represents the attribute information corresponding to m=2, m=4, and m=6 for the three vertices respectively.

[0213] In addition, the actual content of the attribute information can be recorded in other files. Furthermore, pointers to its content can be mapped to vertices or faces. For example, the attribute information representing the image of a face can be stored in a two-dimensional attribute map file. Furthermore, the filename of the attribute map and the two-dimensional coordinate values ​​in the attribute map can be recorded in attribute information A2(1) to A2(M). The methods for specifying attribute information for a face are not limited to these methods; any method can be used.

[0214] Figure 17 This is a conceptual diagram representing the types of three-dimensional data related to this embodiment. Point cluster data and grid data can represent both static and dynamic targets. Static targets are targets that do not change over time, while dynamic targets are targets that change over time. Static targets can also correspond to three-dimensional data at any point in time.

[0215] For example, point group data at any given time point is sometimes represented as a PCC frame. Similarly, grid data at any given time point is sometimes represented as a grid frame. Furthermore, both PCC frames and grid frames are sometimes represented simply as frames.

[0216] Furthermore, the target area can be limited to a certain range, as in typical imagery data, or it can be unrestricted, as in map data. Additionally, the density of points or areas can be set in various ways. Either sparse point clusters or sparse grid data, or dense point clusters or dense grid data, can be used.

[0217] Next, the encoding and decoding of point groups or 3D meshes will be described. The apparatus, processing, or syntax disclosed herein for encoding and decoding vertex information of 3D meshes can also be applied to the encoding and decoding of point groups.

[0218] Furthermore, the apparatus, processing, or syntax disclosed herein for encoding and decoding attribute information of point groups can also be applied to the encoding and decoding of connection information or attribute information of three-dimensional meshes.

[0219] Furthermore, at least some of the processing in the encoding and decoding of point group data and grid data can be shared. This allows for the reduction of the size of the circuit and software program.

[0220] Figure 18 This is a block diagram illustrating a configuration example of the 3D data encoder 113 according to this embodiment. In this example, the 3D data encoder 113 includes a vertex information encoder 121, an attribute information encoder 122, a metadata encoder 123, and a multiplexer 124. The vertex information encoder 121, the attribute information encoder 122, and the multiplexer 124 may also correspond to... Figure 6 Vertex information encoder 101, attribute information encoder 103, and post-processor 105, etc.

[0221] Furthermore, in this example, the 3D data encoder 113 encodes the 3D data using a geometry-based encoding method. In this geometry-based encoding method, the 3D structure is taken into account. Additionally, in this geometry-based encoding method, attribute information is encoded using the compositional information obtained from encoding the vertex information.

[0222] Specifically, the vertex information, attribute information, and metadata contained in the 3D data generated from the sensor data are first input to the vertex information encoder 121, attribute information encoder 122, and metadata encoder 123, respectively. Here, the connectivity information contained in the 3D data can be processed in the same way as the attribute information. Furthermore, in the case of point group data, the position information can also be processed as vertex information.

[0223] Vertex information encoder 121 encodes vertex information into compressed vertex information, and outputs the compressed vertex information as encoded data to multiplexer 124. Furthermore, vertex information encoder 121 generates metadata of the compressed vertex information and outputs it to multiplexer 124. Additionally, vertex information encoder 121 generates composition information and outputs it to attribute information encoder 122.

[0224] The attribute information encoder 122 uses the composition information generated by the vertex information encoder 121 to encode the attribute information into compressed attribute information, and outputs the compressed attribute information as encoded data to the multiplexer 124. In addition, the attribute information encoder 122 generates metadata of the compressed attribute information and outputs it to the multiplexer 124.

[0225] Metadata encoder 123 encodes compressible metadata into compressed metadata, and outputs the compressed metadata as encoded data to multiplexer 124. The metadata encoded by metadata encoder 123 can also be used for encoding vertex information and attribute information.

[0226] Multiplexer 124 multiplexes compressed vertex information, compressed vertex information metadata, compressed attribute information, compressed attribute information metadata, and compressed metadata into a bitstream. Furthermore, multiplexer 124 inputs the bitstream to the system layer.

[0227] Figure 19 This is a block diagram illustrating a configuration example of the 3D data decoder 213 according to this embodiment. In this example, the 3D data decoder 213 includes a vertex information decoder 221, an attribute information decoder 222, a metadata decoder 223, and an inverse multiplexer 224. The vertex information decoder 221, the attribute information decoder 222, and the inverse multiplexer 224 may also correspond to... Figure 8 Vertex information decoder 201, attribute information decoder 203, and preprocessor 204, etc.

[0228] Furthermore, in this example, the 3D data decoder 213 decodes the 3D data using a geometry-based encoding method. The 3D structure is considered in the geometry-based encoding decoding. Moreover, in the geometry-based encoding decoding, the attribute information is decoded using the compositional information obtained from decoding the vertex information.

[0229] Specifically, first, the bitstream is input from the system layer to the inverse multiplexer 224. The inverse multiplexer 224 separates compressed vertex information, compressed vertex information metadata, compressed attribute information, compressed attribute information metadata, and compressed metadata from the bitstream. The compressed vertex information and compressed vertex information metadata are input to the vertex information decoder 221. The compressed attribute information and compressed attribute information metadata are input to the attribute information decoder 222. The metadata is input to the metadata decoder 223.

[0230] Vertex information decoder 221 uses metadata from the compressed vertex information to decode vertex information. Furthermore, vertex information decoder 221 generates composition information and outputs it to attribute information decoder 222. Attribute information decoder 222 uses the composition information generated by vertex information decoder 221 and metadata from the compressed attribute information to decode attribute information. Metadata decoder 223 decodes metadata from the compressed metadata. The metadata decoded by metadata decoder 223 can also be used for decoding vertex information and attribute information.

[0231] Then, the vertex information, attribute information, and metadata are output as 3D data from the 3D data decoder 213. Additionally, this metadata, for example, is metadata of vertex information and attribute information, which can be used in the application.

[0232] Figure 20This is a block diagram illustrating another configuration example of the 3D data encoder 113 according to this embodiment. In this example, the 3D data encoder 113 includes a vertex image generator 131, an attribute image generator 132, a metadata generator 133, an image encoder 134, a metadata encoder 123, and a multiplexer 124. The vertex image generator 131, the attribute image generator 132, and the image encoder 134 may also correspond to... Figure 6 Vertex information encoder 101 and attribute information encoder 103, etc.

[0233] Furthermore, in this example, the 3D data encoder 113 encodes the 3D data using a video-based coding method. In this video-based coding method, multiple 2D images are generated from the 3D data, and these images are then encoded using an image coding method. Here, the image coding method could also be HEVC (High Efficiency Video Coding) or VVC (Versatile Video Coding), etc.

[0234] Specifically, the vertex and attribute information contained in the 3D data generated from the sensor data are first input into the metadata generator 133. Furthermore, the vertex and attribute information are input into the vertex image generator 131 and the attribute image generator 132, respectively. Additionally, the metadata contained in the 3D data is input into the metadata encoder 123. Here, the connectivity information contained in the 3D data can be processed in the same way as the attribute information. Furthermore, in the case of point group data, the position information can also be processed as vertex information.

[0235] Metadata generator 133 generates mapping information for multiple two-dimensional images based on vertex information and attribute information. Furthermore, metadata generator 133 inputs the mapping information into vertex image generator 131, attribute image generator 132, and metadata encoder 123.

[0236] Vertex image generator 131 generates vertex images based on vertex information and mapping information and inputs them to image encoder 134. Attribute image generator 132 generates attribute images based on attribute information and mapping information and inputs them to image encoder 134.

[0237] The image encoder 134 encodes the vertex image and attribute image into compressed vertex information and compressed attribute information respectively according to the image encoding method, and outputs the compressed vertex information and compressed attribute information as encoded data to the multiplexer 124. In addition, the image encoder 134 generates metadata of compressed vertex information and metadata of compressed attribute information, and outputs them to the multiplexer 124.

[0238] Metadata encoder 123 encodes compressible metadata into compressed metadata, and outputs the compressed metadata as encoded data to multiplexer 124. The compressible metadata contains mapping information. In addition, the metadata encoded by metadata encoder 123 can also be used for encoding vertex information and attribute information.

[0239] Multiplexer 124 multiplexes compressed vertex information, compressed vertex information metadata, compressed attribute information, compressed attribute information metadata, and compressed metadata into a bitstream. Furthermore, multiplexer 124 inputs the bitstream to the system layer.

[0240] Figure 21 This is a block diagram illustrating another configuration example of the 3D data decoder 213 according to this embodiment. In this example, the 3D data decoder 213 includes a vertex information generator 231, an attribute information generator 232, an image decoder 234, a metadata decoder 223, and an inverse multiplexer 224. The vertex information generator 231, the attribute information generator 232, and the image decoder 234 may also correspond to... Figure 8 Vertex information decoder 201 and attribute information decoder 203, etc.

[0241] Furthermore, in this example, the 3D data decoder 213 decodes the 3D data according to a video-based encoding method. In this video-based decoding, multiple 2D images are decoded according to an image encoding method to generate 3D data from the multiple 2D images. Here, the image encoding method could also be HEVC (High Efficiency Video Coding) or VVC (Versatile Video Coding), etc.

[0242] Specifically, first, the bitstream is input from the system layer to the inverse multiplexer 224. The inverse multiplexer 224 separates compressed vertex information, compressed vertex information metadata, compressed attribute information, compressed attribute information metadata, and compressed metadata from the bitstream. The compressed vertex information and compressed vertex information metadata, compressed attribute information and compressed attribute information metadata are then input to the image decoder 234. The compressed metadata is then input to the metadata decoder 223.

[0243] The image decoder 234 decodes the vertex image according to the image encoding method. At this time, the image decoder 234 uses the metadata of the compressed vertex information to decode the vertex image from the compressed vertex information. Furthermore, the image decoder 234 inputs the vertex image to the vertex information generator 231. In addition, the image decoder 234 decodes the attribute image according to the image encoding method. At this time, the image decoder 234 uses the metadata of the compressed attribute information to decode the attribute image from the compressed attribute information. Furthermore, the image decoder 234 inputs the attribute image to the attribute information generator 232.

[0244] Metadata decoder 223 decodes metadata from compressed metadata. The metadata decoded by metadata decoder 223 contains mapping information used in the generation of vertex information and attribute information. In addition, the metadata decoded by metadata decoder 223 can also be used for the decoding of vertex images and attribute images.

[0245] Vertex information generator 231 reconstructs vertex information from the vertex image according to the mapping information contained in the metadata decoded by metadata decoder 223. Attribute information generator 232 reconstructs attribute information from the attribute image according to the mapping information contained in the metadata decoded by metadata decoder 223.

[0246] Then, the vertex information, attribute information, and metadata are output as 3D data from the 3D data decoder 213. Additionally, this metadata, for example, is metadata of vertex information and attribute information, which can be used in the application.

[0247] Figure 22 This is a conceptual diagram illustrating a specific example of the encoding process related to this embodiment. Figure 22 The diagram illustrates a 3D data encoder 113 and a descriptive encoder 148. In this example, the 3D data encoder 113 includes a 2D data encoder 141 and a mesh data encoder 142. The 2D data encoder 141 includes a texture encoder 143. The mesh data encoder 142 includes a vertex information encoder 144 and a connectivity information encoder 145.

[0248] Vertex information encoder 144, connection information encoder 145, and texture encoder 143 can also correspond to Figure 6 Vertex information encoder 101, connection information encoder 102, and attribute information encoder 103, etc.

[0249] For example, the two-dimensional data encoder 141 acts as the texture encoder 143, generating a texture file by encoding the texture corresponding to the attribute information as two-dimensional data according to the image encoding method or video encoding method.

[0250] Furthermore, the mesh data encoder 142 operates as a vertex information encoder 144 and a connectivity information encoder 145, generating a mesh file by encoding vertex information and connectivity information. The mesh data encoder 142 can also encode texture mapping information. Furthermore, the encoded mapping information can be included in the mesh file.

[0251] Furthermore, the description encoder 148 can also generate a description file by encoding descriptions corresponding to metadata, such as text data. The description encoder 148 can also encode the description at the system level. For example, the description encoder 148 can also be included in... Figure 12 In the system multiplexer 114.

[0252] The above steps generate a bitstream containing texture files, mesh files, and description files. These files can also be multiplexed into the bitstream in formats such as glTF (Graphics Language Transmission Format) or USD (Universal Scene Description).

[0253] Alternatively, the 3D data encoder 113 can also have two mesh data encoders, which can function as mesh data encoders 142. For example, one mesh data encoder encodes the vertex and connection information of a static 3D mesh, while the other mesh data encoder encodes the vertex and connection information of a dynamic 3D mesh.

[0254] Furthermore, two mesh files can be included in the bitstream accordingly. For example, one mesh file corresponds to a static 3D mesh, and the other mesh file corresponds to a dynamic 3D mesh.

[0255] Furthermore, a static 3D mesh can also be an intra-frame 3D mesh using intra-frame predictive coding, and a dynamic 3D mesh can also be an inter-frame 3D mesh using inter-frame predictive coding. Additionally, as information for a dynamic 3D mesh, the difference between the vertex or connectivity information of the intra-frame 3D mesh and the vertex or connectivity information of the inter-frame 3D mesh can also be used.

[0256] Figure 23 This is a conceptual diagram illustrating a specific example of the decoding process described in this embodiment. Figure 23 The code represents a 3D data decoder 213, a description decoder 248, and a prompter 247. In this example, the 3D data decoder 213 includes a 2D data decoder 241, a mesh data decoder 242, and a mesh reconstructor 246. The 2D data decoder 241 includes a texture decoder 243. The mesh data decoder 242 includes a vertex information decoder 244 and a connectivity information decoder 245.

[0257] Vertex information decoder 244, connection information decoder 245, texture decoder 243, and mesh reconstructor 246 can also correspond to Figure 8 The vertex information decoder 201, connection information decoder 202, attribute information decoder 203, and post-processor 205, etc. The prompter 247 can also correspond to... Figure 12 The prompt device 215, etc.

[0258] For example, the two-dimensional data decoder 241 acts as the texture decoder 243, decoding the texture corresponding to the attribute information from the texture file into two-dimensional data according to the image encoding method or video encoding method.

[0259] Furthermore, the mesh data decoder 242 operates as both the vertex information decoder 244 and the connectivity information decoder 245, decoding vertex and connectivity information from the mesh file. The mesh data decoder 242 can also decode texture mapping information from the mesh file.

[0260] Furthermore, the description decoder 248 decodes descriptions corresponding to metadata, such as text data, from the description file. The description decoder 248 can also decode descriptions at the system layer. For example, the description decoder 248 may also be included in... Figure 12 In the system inverse multiplexer 214.

[0261] Mesh Reconstructor 246, as described, reconstructs the 3D mesh from vertex information, connectivity information, and textures. Hint 247, as described, renders and outputs the 3D mesh.

[0262] Through the above actions, a 3D mesh is reconstructed and output from the bitstream containing texture files, mesh files, and description files.

[0263] Alternatively, the 3D data decoder 213 can also have two mesh data decoders, which can function as mesh data decoders 242. For example, one mesh data decoder decodes the vertex and connection information of a static 3D mesh, while the other mesh data decoder decodes the vertex and connection information of a dynamic 3D mesh.

[0264] Furthermore, two mesh files can be included in the bitstream in a corresponding manner. For example, one mesh file corresponds to a static 3D mesh, and the other mesh file corresponds to a dynamic 3D mesh.

[0265] Furthermore, a static 3D mesh can also be an intra-frame 3D mesh encoded using intra-frame prediction, and a dynamic 3D mesh can also be an inter-frame 3D mesh encoded using inter-frame prediction. Additionally, as information for a dynamic 3D mesh, differential information between the vertex or connectivity information of the intra-frame 3D mesh and the vertex or connectivity information of the inter-frame 3D mesh can be used.

[0266] The coding method for dynamic 3D meshes is sometimes called DMC (Dynamic Mesh Coding). In addition, the video-based coding method for dynamic 3D meshes is sometimes called V-DMC (Video-based Dynamic Mesh Coding).

[0267] Point cloud compression is sometimes referred to as PCC. Additionally, video-based point cloud compression is sometimes called V-PCC (Video-based Point Cloud Compression). Furthermore, geometry-based point cloud compression is sometimes called G-PCC (Geometry-based Point Cloud Compression).

[0268] <Installation Example> Figure 24 This is a block diagram illustrating an installation example of the encoding device 100 according to this embodiment. The encoding device 100 includes circuitry 151 and a memory 152. For example, Figure 5 The multiple components of the encoding device 100 shown are composed of... Figure 24 The circuit 151 and memory 152 shown are installed.

[0269] Circuit 151 is a circuit that performs information processing and is capable of accessing memory 152. For example, circuit 151 is a dedicated or general-purpose electrical circuit that encodes a three-dimensional mesh. Circuit 151 can also be a processor like a CPU. Furthermore, circuit 151 can also be a collection of multiple electrical circuits.

[0270] Memory 152 is a dedicated or general-purpose memory for storing information used by circuit 151 to encode a three-dimensional mesh. Memory 152 can also be an electrical circuit and can be connected to circuit 151. Furthermore, memory 152 can also be included within circuit 151. Additionally, memory 152 can be an assembly of multiple electrical circuits. Furthermore, memory 152 can also be a magnetic disk or optical disk, or can be manifested as a storage device or recording medium. Furthermore, memory 152 can be either non-volatile or volatile memory.

[0271] For example, memory 152 can store both a three-dimensional mesh and a bit stream. Furthermore, memory 152 can also store a program for circuit 151 to encode the three-dimensional mesh.

[0272] Furthermore, in the encoding device 100, it is not necessary to install... Figure 5 All of the multiple constituent elements shown here may also be exempt from the multiple processes indicated here. Figure 5A portion of the multiple constituent elements shown may also be included in other devices, and a portion of the multiple processes shown herein may also be executed by other devices. Furthermore, in the encoding device 100, the multiple constituent elements of this disclosure may be arbitrarily combined and installed, and the multiple processes of this disclosure may be arbitrarily combined and performed.

[0273] Figure 25 This is a block diagram illustrating an installation example of the decoding device 200 according to this embodiment. The decoding device 200 includes circuitry 251 and a memory 252. For example, Figure 7 The decoding device 200 shown in the figure consists of multiple components. Figure 25 The circuit 251 and memory 252 shown are installed.

[0274] Circuit 251 is a circuit that performs information processing and is capable of accessing memory 252. For example, circuit 251 is a dedicated or general-purpose electrical circuit that decodes a 3D mesh. Circuit 251 can also be a processor like a CPU. Furthermore, circuit 251 can also be a collection of multiple electrical circuits.

[0275] Memory 252 is a dedicated or general-purpose memory that stores information used by circuit 251 to decode the three-dimensional mesh. Memory 252 can be an electrical circuit or connected to circuit 251. Furthermore, memory 252 can also be included within circuit 251. Additionally, memory 252 can be an assembly of multiple electrical circuits. Furthermore, memory 252 can be a disk or optical disk, or it can be represented as a storage device or recording medium. Furthermore, memory 252 can be either non-volatile or volatile memory.

[0276] For example, memory 252 can store either a three-dimensional grid or a bit stream. Furthermore, memory 252 can also store a program for circuit 251 to decode the three-dimensional grid.

[0277] Alternatively, it is not necessary to install it in the decoding device 200. Figure 7 All of the multiple constituent elements shown here may also be exempt from the multiple processes indicated here. Figure 7 A portion of the multiple constituent elements shown may also be included in other devices, and a portion of the multiple processes shown herein may also be executed by other devices. Furthermore, in the decoding device 200, the multiple constituent elements of this disclosure may be arbitrarily combined and installed, and the multiple processes of this disclosure may be arbitrarily combined and performed.

[0278] The encoding and decoding methods, which include the steps performed by the constituent elements of the encoding apparatus 100 and decoding apparatus 200 of this disclosure, can also be executed by any device or system. For example, part or all of the encoding and decoding methods can be executed by a computer equipped with a processor, memory, and input / output circuits. In this case, the encoding and decoding methods can also be executed by the computer executing a program used to cause the computer to perform the encoding and decoding methods.

[0279] Furthermore, non-transitory computer-readable recording media such as CD-ROMs can record both programs and bit streams.

[0280] An example of a program can also be a bitstream. For instance, a bitstream containing an encoded 3D mesh contains syntactic elements that enable the decoding device 200 to decode the 3D mesh. Furthermore, the bitstream enables the decoding device 200 to decode the 3D mesh according to the syntactic elements contained in the bitstream. Therefore, a bitstream can function similarly to a program.

[0281] The bitstream mentioned above can be either an encoded bitstream containing the encoded three-dimensional grid or a multiplexed bitstream containing the encoded three-dimensional grid and other information.

[0282] Furthermore, the components of the encoding device 100 and the decoding device 200 can be constructed from dedicated hardware, general-purpose hardware that executes the aforementioned programs, or a combination thereof. Additionally, the general-purpose hardware can consist of a memory storing the program and a general-purpose processor that reads the program from the memory and executes it. Here, the memory can be a semiconductor memory or a hard disk, and the general-purpose processor can be a CPU.

[0283] Alternatively, dedicated hardware can consist of memory and a dedicated processor. For example, a dedicated processor can also execute encoding and decoding methods with reference to the memory used to record data.

[0284] Furthermore, the constituent elements of the encoding device 100 and the decoding device 200 can also be electrical circuits as described above. These electrical circuits can be configured as a single electrical circuit or as separate electrical circuits. Moreover, these electrical circuits can correspond to dedicated hardware or general-purpose hardware that executes the aforementioned programs. Furthermore, the encoding device 100 and the decoding device 200 can also be integrated as integrated circuits.

[0285] Alternatively, the encoding device 100 can also be a transmitting device for transmitting a three-dimensional mesh. The decoding device 200 can also be a receiving device for receiving a three-dimensional mesh.

[0286] Entropy Encoding and Entropy Decoding 3D models digitally represent objects, allowing users to scale, translate, and rotate the model while it's being temporarily rendered and searched in 3D. One method for constructing this representation is using polygons to build 3D meshes. Here, the model stores the positions of the polygon vertices, their connectivity, and associated properties (normals, UV mapping, etc.). Examples of polygons are triangles and quadrilaterals.

[0287] Storing all this information in uncompressed form requires a very large storage capacity, and therefore a very large bandwidth for transmission. The polygons forming the grid, especially in temporal and spatial proximity, often exhibit repeating patterns and similar properties. These repetitions can be used to develop efficient encoding and decoding methods for storage and transmission.

[0288] Figure 26 This is a block diagram illustrating another configuration example of the encoding / decoding system according to this embodiment. For example... Figure 26 As shown, the encoding and decoding system includes a pair of encoding devices 100 and decoding devices 200. The encoding and decoding system accepts a 3D mesh as input in the form of vertices' 3D coordinates (vertices information), connectivity (connection information), and associated attributes (attribute information).

[0289] Encoding device 100 encodes all relevant information into a bitstream (compressed bitstream). The bitstream can also consist of multiple bitstreams. The bitstream is transmitted to decoding device 200 via a transmission path. Decoding device 200 decodes the bitstream and uses the decoded vertices' 3D coordinates, connectivity, and association attributes to generate a 3D model (3D mesh).

[0290] Figure 27 This is a block diagram illustrating another configuration example of the encoding apparatus 100 according to this embodiment. In this example, the encoding apparatus 100 includes a preprocessor 521 and an encoding processor 522.

[0291] The preprocessor 521 reads the 3D mesh, processes it to extract the base mesh, displacement vectors, texture data, and attribute mappings, and passes them to the encoding processor 522. The encoding processor 522 compresses the base mesh, displacement vectors, texture data, and attribute mappings separately and combines them to generate a bitstream.

[0292] Figure 28 This is a block diagram illustrating another configuration example of the decoding apparatus 200 according to this embodiment. In this example, the decoding apparatus 200 includes a decoding processor 622 and a post-processor 623.

[0293] The decoding processor 622 reads the bitstream, separates the base mesh, displacement vectors, texture data, and attribute maps from the bitstream, decodes them separately, and passes them to the post-processor 623. The post-processor 623 uses the displacement vectors and attribute maps to process the base mesh to generate a 3D mesh.

[0294] For example, in the encoding method, the original 3D mesh is first decimated to obtain a base mesh containing fewer vertices. In the base mesh, vertices may not be in their original positions, and the connectivity of the vertices can also be changed through decimation.

[0295] Then, this process is repeated multiple times, adding new vertices between the existing connected vertices of the base mesh to refine it. Next, the displacement vector between the refined 3D mesh and the input 3D mesh is calculated. The displacement vector is used in the decoding device 200 with the refined vertices positioned at the predicted locations.

[0296] This information is transformed into wavelet coefficients using wavelet transform, and then encoded using a video codec by mapping the coefficients onto the plane of the video frame. The texture in the 3D mesh and the mapping used to combine all the information for reconstruction are encoded separately and combined into a bitstream.

[0297] The decoding device 200 first decodes the base mesh. This process is repeated multiple times, appending new vertices between existing connected vertices in the base mesh to refine it. Then, all vertices and their connectivity are obtained. Here, vertices can also be located at positions different from their corresponding vertices in the input 3D mesh.

[0298] Furthermore, the wavelet coefficients are decoded using a video decoder, and an inverse wavelet transform is applied to reconstruct the displacement vector. Using this information, vertices are configured at the predicted locations, textures are mapped to surfaces created based on the vertices and their connectivity, and the 3D mesh is fully decoded.

[0299] Recent advancements in the acquisition, modeling, and rendering of 3D data have revitalized the application of 3D content across various platforms and devices. 3D media offers a highly convenient method for providing users with immersive experiences in fields such as digital entertainment, healthcare, and robotics.

[0300] Three-dimensional meshes, for example, used for depicting immersive media, consist of several polygons representing the boundary surfaces of a volumetric object. Each polygon contains vertices in three-dimensional space and connection information defining how the vertices are connected. Optionally, a three-dimensional mesh may include attributes such as color, normals, and material.

[0301] A dynamic mesh is a mesh in which at least one of the following types of information—connectivity, geometry, mapping, vertex attributes, and attribute mappings—changes over time. Dynamic meshes consist of large amounts of data that change over time, and therefore may require large-capacity storage. Consequently, efficient compression solutions are essential for the proper storage and transmission of such data.

[0302] One method for encoding 3D meshes composed of triangles is called Edgebreaker. In this method, the triangles constituting the 3D mesh are classified into five types based on the patterns of adjacent triangles, and the 3D mesh is represented by a string consisting of C, L, E, R, and S. Here, S represents a branch, E represents an end, and C, L, and R represent the adjacent positions of the triangles to be encoded next.

[0303] Figure 29 This is a conceptual diagram illustrating five connection types related to this embodiment. The connection type represents the connection relationship between the triangle being processed and the triangle not being processed. Here, "processed object" corresponds to "to be visited," "processed" corresponds to "visited," and "unprocessed" corresponds to "not visited." Furthermore, the vertices of a visited triangle can also be considered as visited. Additionally, the portion of the triangle where no triangle exists, and the vertices connected to that portion, can also be considered as visited.

[0304] In type S, along the path leading to the triangle of the processed object in the processing order, multiple unprocessed triangles are separately connected to both sides of the triangle of the processed object. That is, multiple unprocessed triangles branch off and connect to both sides of the triangle of the processed object. For example, in type S, vertex v has been visited. After the processing of the triangle of type S, first, the unprocessed triangles connected to the right side of the triangle of type S are processed. Then, specifically, after the processing of the triangle of type E, the unprocessed triangles connected to the left side of the triangle of type S are processed.

[0305] In type C, along the path leading to the triangle of the processed object in the processing order, multiple unprocessed triangles are connected inseparably to both sides of the processed object's triangle. That is, the multiple unprocessed triangles are connected unbranched to both sides of the processed object's triangle. For example, in type C, vertex v is not visited. After the triangle of type C is processed, the unprocessed triangles connected to the right side of the triangle of type C are processed.

[0306] In type L, along the path leading to the triangle of the processed object in the processing order, there are no unprocessed triangles connected to the left of the processed object's triangle, but there are unprocessed triangles connected to the right of the processed object's triangle. For example, in type L, vertex v has been visited. After the triangle of type L is processed, the unprocessed triangles connected to the right of the triangle of type L are processed.

[0307] In type R, along the path leading to the triangle of the processed object in the processing order, there are no unprocessed triangles connected to the right side of the processed object's triangle, but there are unprocessed triangles connected to the left side of the processed object's triangle. For example, in type R, vertex v has been visited. After the triangle of type R is processed, the unprocessed triangles connected to the left side of the triangle of type R are processed.

[0308] In type E, along the path leading to the triangle of the processed object in the processing order, there are no unprocessed triangles connected to the right or left of the processed object's triangle. For example, in type E, vertex v has been visited. After the processing of the triangles of type E, for example, the unprocessed triangles connected to the left of the processed triangles of type S are processed. Alternatively, after the processing of type E, the series of processes ends.

[0309] Figure 30 This is a conceptual diagram illustrating an example of the connection types determined sequentially in this embodiment. For example... Figure 30 As shown, the connection types of the multiple triangles constituting the 3D mesh are determined sequentially as follows: Figure 29 Choose any of the several types shown and encode and decode them. The connection type represents the connection relationship between multiple triangles and can indicate the processing order of the triangles. Furthermore, the connection type can be used for the reconstruction of 3D models.

[0310] Additionally, bit patterns 0, 110, 111, 101, and 100 can be assigned to types C, L, E, R, and S, respectively. These bit patterns can also be encoded. Furthermore, in the initial triangle, besides types C, L, E, R, or S, information about each vertex (3D coordinate position, texture mapping coordinate position, and normal vector, etc.) can also be encoded. Additionally, in triangles of type C, information about newly added vertices can also be encoded.

[0311] For example, the Edgebreaker in this disclosure can be used in the encoding and decoding of 3D meshes, or it can be used in... Figure 27 or Figure 28The processing disclosed herein is used in the encoding and decoding of the underlying mesh. Specifically, the processing can be applied to the encoding and decoding of information representing the connection relationships of multiple faces of multiple polygons constituting a three-dimensional mesh.

[0312] Figure 31 This is a flowchart illustrating the encoding and decoding processes related to the connection type in this embodiment. Specifically, Figure 31 This represents an example of a method that establishes a corresponding type (C, L, E, R, or S) for each triangle constituting a 3D mesh and encodes them individually. Here, the encoding is entropy encoding, such as arithmetic encoding or Huffman coding.

[0313] In this method, the value of the variable `prev` is set based on the connection type of the preceding element being encoded. Furthermore, parameters controlling the entropy encoding of the triangle's connection type are determined based on `prev`. Finally, entropy encoding of the connection type of the encoded object is performed based on the determined parameters.

[0314] Specifically, first, prev is set to an initial value (e.g., 0) (S101). Then, the entropy encoding of the connection type of each triangle is repeated (S102~S109). Here, the parameters used to control the entropy encoding of the connection type of the triangle are determined according to prev, and the entropy encoding of the connection type of the encoded object is performed (S103).

[0315] For example, in the case of using arithmetic coding in entropy coding, the context used to determine the predicted probability of the information of the encoded object is determined from multiple contexts based on prev. Furthermore, in the case of using Huffman coding in entropy coding, the codeword table used for encoding is determined from multiple codeword tables based on prev.

[0316] Next, based on the encoded connection type, the value of prev, which controls the entropy encoding of the connection types to be encoded next, is set (S104~S107). Specifically, first, it is determined whether the encoded connection type is type S. If the encoded connection type is type S ("Yes" in S104), prev is set to 1 (S106).

[0317] If the encoded connection type is not type S (in S104, "No": any of C, R, L, and E), determine if the encoded connection type is type E (S105). If the encoded connection type is type E (in S105, "Yes"), set prev to 2 (S107). If the encoded connection type is not type E (in S105, "No": any of C, R, and L), set prev to 0 (S108).

[0318] The inventors gained new insights from the experiments: the probability trends of occurrence of types immediately following the encoding of type S or E differ from those of occurrence of types immediately following the encoding of type C, R, or L. Therefore, as described above, by switching the control of entropy coding according to the immediately preceding encoded connection type, the coding efficiency of entropy coding can sometimes be improved.

[0319] In addition, Figure 31 The example shown illustrates how to switch entropy encoding control by classifying connection types into three groups: group S, group E, and groups C, R, and L. However, the context can also be determined based on each of the five types.

[0320] In addition, Figure 31 In the example, the determination and setting of type E can also be omitted (S105 and S107). Furthermore, the connection type can be classified into two groups: a group of type S and a group of types C, R, L and E, and the entropy encoding control can be switched.

[0321] Therefore, coding efficiency can sometimes be improved compared to the case of only one group, and memory usage can be reduced compared to the case of three groups.

[0322] In addition, Figure 31 In this method, the value of prev is set to one of 0, 1, or 2 based on the encoded connection type. However, other methods can be used to switch the control of entropy coding, such as using groups that identify type S, type E, and types C, R, and L.

[0323] Additionally, in the above description, the control of entropy encoding is switched, but encoding can also be replaced with decoding, and the control of entropy decoding can also be switched.

[0324] Furthermore, in the above explanation, the arithmetic encoding context was selected based on the type established with respect to the triangle immediately preceding the triangle being processed in the object being processed. However, the selection of the context is not limited to this example. That is, it is not limited to selecting the context according to the preceding type; the parameters for entropy encoding or entropy decoding of the connection information of the object being processed can also be determined based on the encoded or decoded connection information (linkage information).

[0325] Here, the encoded or decoded connection information can also be the connection information of the polygon that was encoded or decoded immediately before. Furthermore, entropy encoding or entropy decoding can also be arithmetic encoding or arithmetic decoding, in which case the parameter can be the context or a parameter used to derive the context.

[0326] As an example of context selection, the first context can be used if the connection information of the immediately preceding encoded or decoded polygon does not represent the type of branch. Conversely, the second context can be used if the connection information of the immediately preceding encoded or decoded polygon does represent the type of branch.

[0327] In other words, the context can also be determined based on whether the type of connection information of the processed polygon at a specified position relative to the polygon being processed is a type representing a branch. Furthermore, the context can also be determined based on whether the type of connection information of the processed polygon at a specified position relative to the polygon being processed is a type representing an end.

[0328] Additionally, it's possible to toggle whether the context is determined based on the type of the processed polygon. Furthermore, it's also possible to toggle the connection type used as the determination criterion. In this case, parameters indicating the appropriateness of the toggle, the context of the selected object, or the connection type of the polygon corresponding to the context can be encoded.

[0329] Furthermore, the order of the aforementioned determinations and settings can be changed, or some parts can be omitted. For example, the determinations of type S (S104) and type E (S105) can be swapped, or one can be omitted.

[0330] Figure 32 This is a flowchart illustrating a first specific example of encoding related to the connection type in this embodiment. That is, Figure 32 express Figure 31 An example of the encoding process (S103) in this example. In this example, bit patterns 0, 110, 111, 101 and 100 are assigned to types C, L, E, R and S respectively, and entropy encoding is performed sequentially starting from the most significant bit.

[0331] First, determine whether the connection type of the triangle of the object to be encoded is type C (S201). If the connection type is type C ("Yes" in S201), according to prev, entropy coding is used to encode 0 as the value of the first bit b0 (S202). If the connection type is not type C ("No" in S201: any of L, E, R, and S), entropy coding is used to encode 1 as the value of the first bit b0 according to prev (S203).

[0332] Next, it is determined whether the connection type of the triangle of the encoded object is one of type R or S. If the connection type is one of type R or S ("Yes" in S204), according to prev, 0 is used as the value of the second bit b1 and encoded by entropy coding (S205).

[0333] Furthermore, it is determined whether the connection type of the triangle of the encoded object is type S (S207). If the connection type is type S ("Yes" in S207), according to prev, 0 is used as the value of the 3rd bit b2 and entropy coding is performed (S211). If the connection type is not type S ("No" in S207: R), according to prev, 1 is used as the value of the 3rd bit b2 and entropy coding is performed (S209).

[0334] If the connection type is not one of type R or S (in S204, "No": in the case of L or E), according to prev, 1 is encoded by entropy coding as the value of the second bit b1 (S206).

[0335] Furthermore, it is determined whether the connection type of the triangle of the encoded object is type L (S208). If the connection type is type L ("Yes" in S208), according to prev, 0 is used as the value of the 3rd bit b2 and entropy coding is performed (S212). If the connection type is not type L ("No" in S208: E), according to prev, 1 is used as the value of the 3rd bit b2 and entropy coding is performed (S210).

[0336] Furthermore, in entropy coding using arithmetic coding, the context used to determine the predicted probability of the information being encoded is determined from multiple contexts based on `prev`. In entropy coding using Huffman coding, the codeword table used for encoding is determined from multiple codeword tables based on `prev`.

[0337] Furthermore, in the entropy encoding of the value of the 3rd bit b2 (S207~S212), the context or codeword table can also be determined based on the value of the 2nd bit b1, in addition to prev.

[0338] The trend of occurrence probability of each type immediately following type S or E differs from the trend of occurrence probability of each type immediately following type C, R, or L. Therefore, as described above, according to... Figure 31 The order of `prev` determines the control of entropy coding. Therefore, it can sometimes improve the coding efficiency of entropy coding.

[0339] Furthermore, the content of the event notified by the value of the third bit b2 differs depending on the value of the second bit b1 (if b1=0, it is type S or R, and if b1=1, it is type L or E). Therefore, in entropy encoding based on the value of the third bit b2, determining the context or codeword table based on the value of the second bit b1 in addition to prev can sometimes further improve encoding efficiency.

[0340] In the above, encoding bits can also involve inputting bits into an encoding engine. Furthermore, within the encoding engine, multiple bits can be compressed into fewer bits.

[0341] Figure 33 This is a flowchart illustrating a first specific example of decoding the connection type in this embodiment. That is, Figure 33 express Figure 31 An example of the decoding process (S103) in the example. In this example, the decoding is performed by using... Figure 32 The encoding method described above is used for entropy decoding of the encoded bit string. The connection type of the triangle of the decoding object is set to one of the following: C, L, E, R, and S.

[0342] First, the value of the first bit b0 is decoded using entropy decoding based on prev (S301). Then, it is determined whether the value of the first bit b0 is 0 (S302). If the value of the first bit b0 is 0 ("yes" in S302), the connection type of the triangle of the decoded object is set to type C (S303).

[0343] If the value of the first bit b0 is not 0 ("No" in S302), the value of the second bit b1 is decoded using entropy decoding based on prev (S304). Furthermore, the value of the third bit b2 is decoded using entropy decoding based on prev (S305). Then, the bit patterns of the second bit b1 and the third bit b2 are determined (S306~S308). Finally, according to the determination result, the connection type of the triangle of the decoding object is set to one of L, E, R, and S (S309~S312).

[0344] Specifically, if the value of the second bit b1 and the value of the third bit b2 are 0 and 0 respectively ("Yes" in S306 and "Yes" in S307), the connection type is set to type S (S311). If the value of the second bit b1 and the value of the third bit b2 are 0 and 1 respectively ("Yes" in S306 and "No" in S307), the connection type is set to type R (S309).

[0345] If the value of the second bit b1 and the value of the third bit b2 are 1 and 0 respectively ("No" in S306 and "Yes" in S308), the connection type is set to type L (S312). If the value of the second bit b1 and the value of the third bit b2 are 1 and 1 respectively ("No" in S306 and "No" in S308), the connection type is set to type E (S310).

[0346] Furthermore, in entropy decoding using arithmetic decoding, the context used to determine the predicted probability of information about the object to be decoded is determined from multiple contexts based on `prev`. In entropy decoding using Huffman decoding, the codeword table used for decoding is determined from multiple codeword tables based on `prev`. Additionally, in entropy decoding of the value of the 3rd bit b2, the context or codeword table can also be determined based on the value of the 2nd bit b1, in addition to `prev`.

[0347] The trend of occurrence probability of each type immediately following type S or E is different from the trend of occurrence probability of each type immediately following type C, R, or L. Therefore, as mentioned above, according to... Figure 31 The order of `prev` determines the control of entropy decoding. This can sometimes improve the coding efficiency of entropy coding.

[0348] Furthermore, the content of the event notified by the value of the third bit b2 differs depending on the value of the second bit b1 (if b1=0, it is type S or R, and if b1=1, it is type L or E). Therefore, in entropy decoding based on the value of the third bit b2, determining the context or codeword table based on the value of the second bit b1 in addition to prev can sometimes further improve coding efficiency.

[0349] Figure 34 This is a flowchart illustrating a second specific example of encoding related to the connection type in this embodiment. That is, Figure 34 express Figure 31 An example of the encoding process (S103) in this example. In this example, bit patterns 0, 10, 110, 1110 and 1111 are assigned to types C, R, E, S and L respectively, and entropy encoding is performed sequentially starting from the most significant bit.

[0350] First, determine whether the connection type of the triangle in the object to be encoded is type C (S401). If the connection type is type C ("Yes" in S401), according to prev, entropy coding is used to encode 0 as the value of the first bit b0 (S405). If the connection type is not type C ("No" in S401: any of L, E, R, and S), entropy coding is used to encode 1 as the value of the first bit b0 according to prev (S402).

[0351] Next, it is determined whether the connection type of the triangle of the encoded object is type R (S403). If the connection type is type R ("Yes" in S403), according to prev, 0 is used as the value of the second bit b1 and entropy coding is performed (S408). If the connection type is not type R ("No" in S403: any of L, E, and S), according to prev, 1 is used as the value of the second bit b1 and entropy coding is performed (S404).

[0352] Next, it is determined whether the connection type of the triangle of the encoded object is type E (S406). If the connection type is type E ("Yes" in S406), according to prev, 0 is used as the value of the 3rd bit b2 and entropy coding is performed (S410). If the connection type is not type E ("No" in S406: either L or S), according to prev, 1 is used as the value of the 3rd bit b2 and entropy coding is performed (S407).

[0353] Next, it is determined whether the connection type of the triangle of the encoded object is type S (S409). If the connection type is type S ("Yes" in S409), according to prev, 0 is used as the value of the 4th bit b3 and entropy coding is performed (S412). If the connection type is not type S ("No" in S409: L), according to prev, 1 is used as the value of the 4th bit b3 and entropy coding is performed (S411).

[0354] Furthermore, in entropy coding using arithmetic coding, the context used to determine the predicted probability of information occurring for the encoded object is determined from multiple contexts based on `prev`. In entropy coding using Huffman coding, the codeword table used for encoding is determined from multiple codeword tables based on `prev`.

[0355] The trend of occurrence probability of each type immediately following type S or E differs from the trend of occurrence probability of each type immediately following type C, R, or L. Therefore, as stated above, based on... Figure 31 The order of `prev` determines the control of entropy coding. Therefore, it can sometimes improve the coding efficiency of entropy coding.

[0356] Furthermore, in the above description, bit patterns 0, 10, 110, 1110, and 1111 were assigned to C, R, E, S, and L, respectively. However, the type of the decision object in the decision processing (S401, S403, S406, and S409) can also be set in accordance with the bit pattern allocation method. Thus, arbitrary allocation is possible.

[0357] In addition, short bit patterns can be assigned to frequently occurring types. This can sometimes improve coding efficiency. Therefore, bit patterns 0 and 10 can be assigned to frequently occurring types C and R, respectively.

[0358] Figure 35 This is a flowchart illustrating a second specific example of decoding related to the connection type in this embodiment. That is, Figure 35 express Figure 31 An example of the decoding process (S103) in the example. In this example, the decoding is performed by using... Figure 34 The encoding method described above is used for entropy decoding of the encoded bit string. The connection type of the triangle of the decoding object is set to one of the following: C, L, E, R, and S.

[0359] First, the value of the first bit b0 is decoded using entropy decoding based on prev (S501). Then, it is determined whether the value of the first bit b0 is 0 (S502). If the value of the first bit b0 is 0 ("Yes" in S502), the connection type of the triangle of the decoded object is set to type C (S505). If the value of the first bit b0 is not 0 ("No" in S502), the value of the second bit b1 is decoded using entropy decoding based on prev (S503).

[0360] Next, determine whether the value of the second bit b1 is 0 (S504). If the value of the second bit b1 is 0 ("Yes" in S504), set the connection type of the triangle of the decoding object to type R (S508). If the value of the second bit b1 is not 0 ("No" in S504), decode the value of the third bit b2 by entropy decoding according to prev (S506).

[0361] Next, it is determined whether the value of the 3rd bit b2 is 0 (S507). If the value of the 3rd bit b2 is 0 ("Yes" in S507), the connection type of the triangle of the decoding object is set to type E (S511). If the value of the 3rd bit b2 is not 0 ("No" in S507), the value of the 4th bit b3 is decoded by entropy decoding according to prev (S509).

[0362] Next, it is determined whether the value of the 4th bit b3 is 0 (S510). If the value of the 4th bit b3 is 0 ("Yes" in S510), the connection type of the triangle of the decoding object is set to type S (S513). If the value of the 4th bit b3 is not 0 ("No" in S510), the connection type of the triangle of the decoding object is set to type L (S512).

[0363] Furthermore, in entropy decoding using arithmetic decoding, the context used to determine the predicted probability of information about the object to be decoded is determined from multiple contexts based on `prev`. In entropy decoding using Huffman decoding, the codeword table used for decoding is determined from multiple codeword tables based on `prev`.

[0364] The trend of occurrence probability of each type immediately following type S or E is different from the trend of occurrence probability of each type immediately following type C, R, or L. Therefore, as mentioned above, according to... Figure 31 The order of `prev` determines the control of entropy decoding. This can sometimes improve the coding efficiency of entropy coding.

[0365] Furthermore, in the above description, bit patterns 0, 10, 110, 1110, and 1111 are assigned to C, R, E, S, and L, respectively. However, the type set in the setting process (S505, S508, S511, S513, and S512) can also be set in accordance with the bit pattern allocation method. Thus, arbitrary allocation can be performed.

[0366] In addition, short bit patterns can be assigned to frequently occurring types. This can sometimes improve coding efficiency. Therefore, bit patterns 0 and 10 can be assigned to frequently occurring types C and R, respectively.

[0367] Figure 36 This is a block diagram illustrating another configuration example of the encoding / decoding system according to this embodiment. In this example, the encoding / decoding system includes an encoding device 100 and a decoding device 200. The encoding device 100 includes a first quantizer 531, a prediction transform processor 532, a second quantizer 533, a binarizer 534, and an arithmetic encoder 535. The decoding device 200 includes a first inverse quantizer 631, a prediction inverse transform processor 632, a second inverse quantizer 633, an inverse binarizer 634, and an arithmetic decoder 635.

[0368] For example, in the encoding device 100, the first quantizer 531 quantizes the three-dimensional coordinate positions of the three-dimensional mesh and the texture mapping coordinate positions. Next, the prediction transform processor 532 performs prediction processing to reduce redundancy corresponding to the continuity of the spatiotemporal direction, and transformation processing of the prediction residuals, etc. The second quantizer 533 quantizes the prediction residuals.

[0369] Then, binarizer 534 transforms the information required for decoding the 3D mesh, such as prediction-related parameters and quantized values ​​of prediction residuals, into a binary representation. Arithmetic encoder 535 performs arithmetic encoding of the binary representation and outputs a bitstream.

[0370] In the decoding device 200, firstly, the arithmetic decoder 635 performs arithmetic decoding of the bitstream to restore the binary representation of various information. Next, the inverse binarizer 634 restores the prediction-related parameters and the quantized values ​​of the prediction residual based on the binary representation. The second inverse quantizer 633 performs inverse quantization on the quantized prediction residual. Then, the inverse prediction transform processor 632 performs prediction processing and inverse transform processing on the transformed prediction residual to restore the quantized three-dimensional mesh. Finally, the first inverse quantizer 631 performs inverse quantization and outputs the three-dimensional mesh.

[0371] Furthermore, it is not necessary to implement all the processes described in this example. For example, some processes such as the first quantization, the second quantization, or the transformation of the prediction residuals can be omitted.

[0372] Alternatively, the 3D coordinates of the vertices of the initial triangle of the 3D mesh, as well as the texture map coordinates, can be binarized using arithmetic encoding with exponential Golomb codes. The 3D coordinates of the vertices of the initial triangle of the 3D mesh, and the texture map coordinates, are mostly large depending on the bit precision of their respective values. Therefore, exponential Golomb codes of an order specified according to bit precision can also be used.

[0373] Here, the larger the order applied to exponential Golomb codes, the more suitable they are for encoding larger values, and sometimes they can efficiently encode larger values. Conversely, the smaller the order applied to exponential Golomb codes, the more suitable they are for encoding smaller values, and sometimes they can efficiently encode smaller values.

[0374] Furthermore, texture-mapped coordinate positions are two-dimensional coordinate positions determined by placing the texture corresponding to the triangles of the 3D mesh in a 2D image, thus allowing coordinate values ​​to be obtained across every corner of the 2D image. On the other hand, 3D coordinate positions represent the position on the surface of a 3D object, therefore tending to have coordinate values ​​distributed around the perimeter of the 3D object. Therefore, prediction errors tend to be smaller with 3D coordinate positions, while prediction errors tend to be larger with texture-mapped coordinate positions.

[0375] Therefore, compared to encoding three-dimensional coordinate positions, encoding texture mapping coordinate positions can use an order closer to bit precision. This can sometimes enable efficient encoding.

[0376] Specifically, the bit precision and order corresponding to the 3D coordinate position are determined as the 1st bit precision and 1st order, respectively, and the bit precision and order corresponding to the texture mapping coordinate position are determined as the 2nd bit precision and 2nd order, respectively. In this case, the 1st order and 2nd order can be set to values ​​that satisfy 1st bit precision - 1st order ≥ 2nd bit precision - 2nd order. Here, bit precision is, for example, the number of bits used to represent the coordinate position. This can sometimes enable efficient encoding.

[0377] For example, the first order can be determined based on the value obtained by subtracting a first predetermined value from the first bit precision. Similarly, the second order can be determined based on the value obtained by subtracting a second predetermined value from the second bit precision. Furthermore, if both the first and second bit precisions are 12 bits, the first order can be determined to be approximately 7 to 10, and the second order to be approximately 10 or 11. In this case, the first predetermined value can be set to approximately 2 to 5, and the second predetermined value to approximately 1 or 2.

[0378] Information related to the first bit precision, second bit precision, first specified value, second specified value, quantization width of the first quantization, and quantization width of the second quantization can also be communicated through the header of a sequence, frame, or slice. Here, the quantization width of the first quantization can differ between its 3D coordinate position and its texture map coordinate position. Similarly, the quantization width of the second quantization can also differ between its 3D coordinate position and its texture map coordinate position.

[0379] Furthermore, the 3D coordinate position and texture mapping coordinate position of the encoded object can also be the quantized 3D coordinate position and texture mapping coordinate position. Moreover, the first and second specified values ​​can be modified according to the quantization width. Specifically, the number of bits required to represent the quantization width of each 3D coordinate position and texture mapping coordinate position, or a value of equivalent magnitude, can be added to the first and second specified values ​​respectively.

[0380] For example, the first specified value and the second specified value can reflect the first quantization width and the second quantization width, respectively, or they can include values ​​corresponding to the first quantization width and the second quantization width.

[0381] Furthermore, when information from other encoded 3D meshes is available, the predicted 3D coordinate positions of the vertices of the triangles initially encoded in the 3D mesh, as well as the predicted texture mapping coordinate positions, can be determined based on this information. Additionally, the differences relative to the predicted values ​​can also be encoded.

[0382] In addition, when encoding the difference, the sign can also be arithmetically encoded separately. Furthermore, the absolute value can be arithmetically encoded using the aforementioned exponential Golomb code. Alternatively, the difference value can be mapped to a positive number, etc., and arithmetic encoding can be performed using the aforementioned exponential Golomb code for difference values ​​containing a sign.

[0383] As mentioned above, arithmetic coding can sometimes be implemented using exponential Golomb codes with appropriate orders for the values ​​of the 3D coordinate positions and texture map coordinate positions. Therefore, it is sometimes possible to reduce the amount of code required for the 3D coordinate positions and texture map coordinate positions.

[0384] Figure 37 This is a flowchart illustrating the encoding and decoding processes for the three-dimensional coordinate positions and texture mapping coordinate positions in this embodiment. Specifically, Figure 37 An example of the encoding and decoding order of the starting vertex coordinates of a 3D mesh.

[0385] First, parameters for arithmetic encoding or decoding of the three-dimensional coordinate position are set (S610). Then, arithmetic encoding or decoding of the three-dimensional coordinate position is performed according to the set parameters (S620). In addition, parameters for arithmetic encoding or decoding of the texture mapping coordinate position are set (S630). Then, arithmetic encoding or decoding of one or more texture mapping coordinate positions is performed according to the set parameters (S640).

[0386] Alternatively, the processing order can be reversed. Specifically, they can be implemented in the following order: setting parameters for texture mapping coordinate positions (S630), encoding or decoding texture mapping coordinate positions (S640), setting parameters for three-dimensional coordinate positions (S610), and encoding or decoding three-dimensional coordinate positions (S620).

[0387] Alternatively, only one of the processing of the three-dimensional coordinate position (S610 and S620) and the processing of the texture mapping coordinate position (S630 and S640) may be performed. Alternatively, this processing may be performed on only a subset of the multiple components (x, y, and z, or u and v, etc.) constituting the three-dimensional coordinate position or the texture mapping coordinate position.

[0388] Figure 38 This is a flowchart illustrating the parameter setting process for encoding or decoding three-dimensional coordinate positions in this embodiment. Specifically, Figure 38 express Figure 37 An example of parameter setting processing (S610) for the three-dimensional coordinate position.

[0389] In this example, regarding the three-dimensional coordinate position of the three-dimensional grid, the bit precision, the first specified value, the first quantization width, and the second quantization width are obtained (S611~S614). Furthermore, based on these values, the order (first order) of the exponential Golomb code used for arithmetic encoding or decoding of the three-dimensional coordinate position is set (S615).

[0390] For example, the value obtained by subtracting the first specified value, the number of bits in the binary representation of the first quantization width, and the number of bits in the binary representation of the second quantization width from the bit precision can be set as the first order. Furthermore, the various information acquisition processes (S611-S614) can be implemented in any order. Additionally, one or both of the two quantization width acquisition processes (S613 and S614) can be omitted. Moreover, in the first order setting process (S615), the corresponding quantization width may not be used.

[0391] Figure 39 This is a flowchart illustrating the setting process of parameters for encoding or decoding texture mapping coordinate positions in this embodiment. Specifically, Figure 39 express Figure 37 An example of parameter setting processing (S630) for texture mapping coordinate position.

[0392] In this example, regarding the texture mapping coordinate position of the 3D mesh, the bit precision, the second specified value, the first quantization width, and the second quantization width (S631~S634) are obtained. Furthermore, based on these values, the order (second order) of the exponential Golomb code used for arithmetic encoding or arithmetic decoding of the texture mapping coordinate position is set.

[0393] For example, the value obtained by subtracting the second specified value, the number of bits in the binary representation of the first quantization width, and the number of bits in the binary representation of the second quantization width from the bit precision can be set as the second order. Furthermore, the various information acquisition processes (S631-S634) can be implemented in any order. Additionally, one or both of the two quantization width acquisition processes (S633 and S634) can be omitted. Moreover, in the second order setting process (S635), the corresponding quantization width may not be used.

[0394] Alternatively, in the decoding process, the first and second specified values ​​can also be derived by reading and decoding these data stored in the encoded stream. Or, the first and second specified values ​​can also be derived by performing calculations based on parameters or indices stored in the encoded stream or by referring to a table.

[0395] Alternatively, the first and second specified values ​​can be derived based on other parameters, or from the values ​​used during decoding of the processed coordinates. For example, in the case of texture map coordinate positions, the other parameters can also include information related to the size of the texture map. Furthermore, in at least one of the three-dimensional position coordinate positions and texture map coordinate positions, bit precision can be omitted, and the order of the exponential Golomb code can be set based on the aforementioned parameters or indices.

[0396] Furthermore, at least one of the order, first specified value, and second specified value of the exponential Golomb code can be set or derived to different values ​​in any of the following units: stream, frame, slice, object, and subgrid. In this case, the parameter or index representing the parameter storing the derivation related to the order of the exponential Golomb code can also be encoded in any of the aforementioned units.

[0397] <Representative Example> Figure 40 This is a flowchart illustrating an example of basic encoding processing related to this embodiment. For example, Figure 24 The circuit 151 of the encoding device 100 shown is in operation. Figure 40 The encoding process shown.

[0398] Specifically, circuit 151 encodes the connection type related to the connection relationship between the face of the processed object and the unprocessed face through context-based arithmetic coding for each face constituting the three-dimensional mesh (S710). Here, multiple examples of connection types related to the connection relationship between the face of the processed object and the unprocessed face may include types where the face of the processed object is not connected to the unprocessed face (e.g., type E mentioned above).

[0399] Figure 41 This is a flowchart illustrating examples of the processes included in the basic encoding process of this embodiment. For example, Figure 24 The circuit 151 of the encoding device 100 shown is in Figure 40 In the encoding process shown (S710) Figure 41 The processing shown.

[0400] Specifically, in the encoding of the current connection type, circuit 151 selects the context to be applied to the arithmetic encoding from multiple contexts using the previous connection type (S711). Here, the current connection type is the connection type of the object being encoded. The previous connection type is the connection type that was encoded before the current connection type.

[0401] Therefore, it is sometimes possible to select the context for arithmetic encoding of the current connection type based on the previous connection type. Consequently, it is sometimes possible to perform arithmetic encoding of the current connection type, which may have different probability distributions depending on the previous connection type, based on the context selected according to the previous connection type. Therefore, it is sometimes possible to improve the compression ratio based on the characteristics of the information in the three-dimensional mesh.

[0402] For example, the context can also be used to determine the probability values ​​used in arithmetic encoding. Furthermore, circuit 151 can also perform arithmetic encoding on the current connection type using probability values ​​determined based on the context, where the context was selected using a previous connection type. Thus, it is sometimes possible to specify probability values ​​suitable for arithmetic encoding of the current connection type according to the previous connection type. Therefore, compression ratios can sometimes be improved.

[0403] Furthermore, for example, the previous connection type may be a connection type that was encoded immediately before the current connection type. Therefore, it is sometimes possible to select the context for arithmetic encoding of the current connection type according to the immediately preceding connection type. Consequently, it is sometimes possible to perform arithmetic encoding of the current connection type, which may have different probability distributions depending on the immediately preceding connection type, based on the context selected according to the immediately preceding connection type. Therefore, it is sometimes possible to improve the compression ratio based on the characteristics of the information in the three-dimensional mesh.

[0404] Additionally, for example, the shape of each face can also be triangular. Therefore, it is sometimes possible to encode the connection types of the multiple triangles constituting a 3D mesh. Furthermore, it is sometimes possible to improve the compression rate of information representing the connection relationships of multiple triangles.

[0405] Alternatively, the connection type can be any of several types, including those representing branches, where a branch refers to multiple unprocessed face branches connected to the face of the processed object. Thus, sometimes the connection type can be used to represent branching connections, such as connections between the face of the processed object and two unprocessed faces. Furthermore, it can sometimes improve the compression ratio of information representing branching connection relationships.

[0406] Furthermore, for example, circuit 151 may select a first context as the context if the previous connection type is a type representing a branch. Also, circuit 151 may select a second context, different from the first context, as the context if the previous connection type is a type different from the type representing a branch.

[0407] Therefore, the context can sometimes be selected based on whether the previous connection type represents a branch or another type. Furthermore, the current connection type can sometimes be encoded based on the characteristic that the previous connection type represented a branch or another type. Consequently, the compression rate of information representing connection relationships including branches can sometimes be improved.

[0408] Additionally, for example, the connection type can be any of several types defined by the Edgebreaker. Therefore, it is sometimes possible to represent the connection relationship defined by the Edgebreaker through the connection type. Furthermore, it is sometimes possible to improve the compression ratio of information representing the connection relationship defined by the Edgebreaker.

[0409] Furthermore, for example, circuit 151 may select a first context as the context if the previous connection type is type S as defined by Edgebreaker. Also, circuit 151 may select a second context, different from the first context, as the context if the previous connection type is a different type than type S.

[0410] Therefore, it is sometimes possible to select the context based on whether the previous connection type was type S or another type. Furthermore, it is sometimes possible to encode the current connection type based on the characteristics of whether the previous connection type represented type S or another type. Consequently, it is sometimes possible to improve the compression ratio of information representing connection relationships, including type S as specified by the Edgebreaker.

[0411] Figure 42 This is a flowchart illustrating another example of the basic encoding process related to this embodiment. For example, Figure 24 The circuit 151 of the encoding device 100 shown is in operation. Figure 42 The encoding process shown.

[0412] Specifically, circuit 151 performs arithmetic encoding of the three-dimensional coordinate positions of the vertices of the faces constituting the three-dimensional mesh according to a first order obtained by subtracting a first predetermined value from the bit precision of the three-dimensional coordinate positions (S721). Additionally, circuit 151 performs arithmetic encoding of the texture mapping coordinate positions of the vertices according to a second order obtained by subtracting a second predetermined value from the bit precision of the texture mapping coordinate positions (S722).

[0413] Therefore, sometimes it is possible to perform arithmetic encoding of the 3D coordinate position according to the first order of arithmetic encoding suitable for the 3D coordinate position, and arithmetic encoding of the texture mapping coordinate position according to the second order of arithmetic encoding suitable for the texture mapping coordinate position. Thus, sometimes it is possible to perform arithmetic encoding of the 3D coordinate position according to the characteristics of the 3D coordinate position, and arithmetic encoding of the texture mapping coordinate position according to the characteristics of the texture mapping coordinate position. Therefore, compression ratio can sometimes be improved.

[0414] For example, exponential Golomb codes can be used in both the arithmetic encoding of 3D coordinate positions and the arithmetic encoding of texture map coordinate positions. This can sometimes improve the compression ratio of information that can be efficiently represented by exponential Golomb codes.

[0415] Furthermore, for example, the first order can also be applied to exponential Golomb codes used in arithmetic coding of three-dimensional coordinate positions. And the second order can also be applied to exponential Golomb codes used in arithmetic coding of texture-mapped coordinate positions.

[0416] Therefore, it is sometimes possible to perform arithmetic encoding using first-order exponential Golomb codes that can efficiently represent 3D coordinate positions, and it is also possible to perform arithmetic encoding using second-order exponential Golomb codes that can efficiently represent texture mapping coordinate positions. Consequently, it is sometimes possible to improve the compression ratio of information about 3D coordinate positions and texture mapping coordinate positions.

[0417] Furthermore, for example, the first specified value can also be a second specified value or higher. Thus, the characteristic that the variance of multiple 3D coordinate positions in 3D space is relatively small, while the variance of multiple texture mapping coordinate positions in the 2D plane is relatively large, can sometimes be reflected in the first and second orders. Therefore, the compression ratio of information about 3D coordinate positions and texture mapping coordinate positions can sometimes be improved.

[0418] Figure 43 This is a flowchart illustrating an example of the basic decoding process described in this embodiment. For example, Figure 25 The circuit 251 of the decoding device 200 shown is in operation. Figure 43 The decoding process is shown.

[0419] Specifically, circuit 251 decodes the connection type related to the connection relationship between the face of the processed object and the unprocessed face through context-based arithmetic decoding for each face constituting the three-dimensional mesh (S810). Here, multiple examples of connection types related to the connection relationship between the face of the processed object and the unprocessed face may also include types where the face of the processed object is not connected to the unprocessed face (e.g., type E mentioned above).

[0420] Figure 44 This is a flowchart illustrating examples of the processes included in the basic decoding process of this embodiment. For example, Figure 25 The circuit 251 of the decoding device 200 shown is in Figure 43 In the decoding process shown (S810) Figure 44 The processing shown.

[0421] Specifically, in decoding the current connection type, circuit 251 selects the context to be applied to arithmetic decoding from multiple contexts using the previous connection type (S811). Here, the current connection type is the connection type of the object being decoded. Furthermore, the previous connection type is the connection type that was decoded earlier than the current connection type.

[0422] Therefore, it is sometimes possible to select the context for arithmetic decoding of the current connection type based on the previous connection type. Consequently, it is sometimes possible to perform arithmetic decoding of the current connection type, which may have different probability distributions depending on the previous connection type, based on the context selected according to the previous connection type. Therefore, it is sometimes possible to improve the compression ratio based on the characteristics of the information in the 3D mesh.

[0423] For example, context can also be used to determine the probability values ​​used in arithmetic decoding. Furthermore, circuit 251 can also perform arithmetic decoding on the current connection type using probability values ​​determined based on the context, where the context was selected using the previous connection type. Thus, it is sometimes possible to specify probability values ​​suitable for arithmetic decoding of the current connection type according to the previous connection type. Therefore, compression ratios can sometimes be improved.

[0424] Furthermore, for example, the previous connection type can be a connection type that was decoded immediately before the current connection type. Therefore, sometimes the context for arithmetic decoding of the current connection type can be selected according to the immediately preceding connection type. Consequently, sometimes arithmetic decoding of the current connection type, which may have different probability distributions depending on the immediately preceding connection type, can be performed based on the context selected according to the immediately preceding connection type. Therefore, sometimes the compression ratio can be improved based on the characteristics of the information in the 3D mesh.

[0425] Additionally, for example, the shape of each face can also be triangular. Therefore, it is sometimes possible to decode the connection types of the individual triangles constituting a 3D mesh. Furthermore, it is sometimes possible to improve the compression rate of information representing the connection relationships of multiple triangles.

[0426] Alternatively, the connection type can be any of several types, including those representing branches, where a branch refers to multiple unprocessed face branches connected to the face of the processed object. Thus, sometimes the connection type can be used to represent branching connections, such as connections between the face of the processed object and two unprocessed faces. Furthermore, it can sometimes improve the compression ratio of information representing branching connection relationships.

[0427] Furthermore, for example, circuit 251 may select a first context as the context if the previous connection type is a type representing a branch. Also, circuit 251 may select a second context, different from the first context, as the context if the previous connection type is a type different from the type representing a branch.

[0428] Therefore, the context can sometimes be selected based on whether the previous connection type represents a branch or another type. Furthermore, the current connection type can sometimes be decoded based on the characteristic that the previous connection type represented a branch or another type. Consequently, the compression rate of information representing connection relationships including branches can sometimes be improved.

[0429] Additionally, for example, the connection type can be any of several types defined by the Edgebreaker. Therefore, it is sometimes possible to represent the connection relationship defined by the Edgebreaker through the connection type. Furthermore, it is sometimes possible to improve the compression ratio of information representing the connection relationship defined by the Edgebreaker.

[0430] Furthermore, for example, circuit 251 may select a first context as the context if the previous connection type is type S as defined by Edgebreaker. Also, circuit 251 may select a second context, different from the first context, as the context if the previous connection type is a different type than type S.

[0431] Therefore, it is sometimes possible to select the context based on whether the previous connection type was type S or another type. Furthermore, it is sometimes possible to decode the current connection type based on the characteristics of whether the previous connection type represented type S or another type. Consequently, it is sometimes possible to improve the compression ratio of information representing connection relationships, including type S as specified by the Edgebreaker.

[0432] Figure 45 This is a flowchart illustrating another example of the basic decoding process related to this embodiment. For example, Figure 25 The circuit 251 of the decoding device 200 shown is in operation. Figure 45 The decoding process is shown.

[0433] Specifically, circuit 251 performs arithmetic decoding of the three-dimensional coordinate positions of the vertices of the faces constituting the three-dimensional mesh according to a first order obtained by subtracting a first predetermined value from the bit precision of the three-dimensional coordinate positions (S821). In addition, circuit 251 performs arithmetic decoding of the texture mapping coordinate positions of the vertex according to a second order obtained by subtracting a second predetermined value from the bit precision of the texture mapping coordinate positions (S822).

[0434] Therefore, sometimes it is possible to perform arithmetic decoding of the 3D coordinate position according to the first order of arithmetic decoding suitable for the 3D coordinate position, and arithmetic decoding of the texture map coordinate position according to the second order of arithmetic decoding suitable for the texture map coordinate position. Consequently, sometimes it is possible to perform arithmetic decoding of the 3D coordinate position according to the characteristics of the 3D coordinate position, and arithmetic decoding of the texture map coordinate position according to the characteristics of the texture map coordinate position. Therefore, compression ratio can sometimes be improved.

[0435] For example, exponential Golomb codes can be used in arithmetic decoding of 3D coordinate positions and arithmetic decoding of texture-mapped coordinate positions, respectively. This can sometimes improve the compression ratio of information that can be efficiently represented by exponential Golomb codes.

[0436] Furthermore, for example, the first order can also be applied to exponential Golomb codes used in arithmetic decoding at three-dimensional coordinate positions. And the second order can also be applied to exponential Golomb codes used in arithmetic decoding at texture-mapped coordinate positions.

[0437] Therefore, it is sometimes possible to perform arithmetic decoding of first-order exponential Golomb codes that can efficiently represent 3D coordinate positions, and it is also possible to perform arithmetic decoding of second-order exponential Golomb codes that can efficiently represent texture map coordinate positions. Consequently, it is sometimes possible to improve the compression ratio of information about 3D coordinate positions and texture map coordinate positions.

[0438] Furthermore, for example, the first specified value can also be a second specified value or higher. Thus, the characteristic that the variance of multiple 3D coordinate positions in 3D space is relatively small, while the variance of multiple texture mapping coordinate positions in the 2D plane is relatively large, can sometimes be reflected in the first and second orders. Therefore, the compression ratio of information about 3D coordinate positions and texture mapping coordinate positions can sometimes be improved.

[0439] Figure 46 This is a block diagram illustrating yet another configuration example of the encoding apparatus 100 according to this embodiment. In this example, the encoding apparatus 100 includes an arithmetic encoder 710 and a selector 711. The selector 711 may also be included in the arithmetic encoder 710.

[0440] The arithmetic encoder 710 is, for example, an electrical circuit. The arithmetic encoder 710 may correspond to the connection information encoder 102 and the encoding processor 522 described above, or it may be installed through the circuit 151 and the memory 152 described above.

[0441] The selector 711 is, for example, an electrical circuit. The selector 711 may correspond to the connection information encoder 102 and the encoding processor 522 described above, or it may be installed through the circuit 151 and the memory 152 described above.

[0442] For example, the arithmetic encoder 710 encodes the connection types related to the connection relationship between the face of the processed object and the unprocessed face through context-based arithmetic encoding for each face constituting the three-dimensional mesh. When the arithmetic encoder 710 encodes the current connection type of the encoded object, the selector 711 selects the context to be applied to the arithmetic encoding from multiple contexts using a previously encoded connection type that was encoded before the current connection type.

[0443] Therefore, it is sometimes possible to select the context for arithmetic encoding of the current connection type based on the previous connection type. Consequently, it is sometimes possible to perform arithmetic encoding of the current connection type, which may have different probability distributions depending on the previous connection type, based on the context selected according to the previous connection type. Therefore, it is sometimes possible to improve the compression ratio based on the characteristics of the information in the three-dimensional mesh.

[0444] Figure 47 This is a block diagram illustrating another configuration example of the encoding apparatus 100 according to this embodiment. In this example, the encoding apparatus 100 includes a three-dimensional coordinate position encoder 721 and a texture mapping coordinate position encoder 722.

[0445] The three-dimensional coordinate position encoder 721 is, for example, an electrical circuit. The three-dimensional coordinate position encoder 721 can correspond to the vertex information encoder 101 and the encoding processor 522 described above, or it can be installed through the circuit 151 and the memory 152 described above.

[0446] The texture mapping coordinate position encoder 722 is, for example, an electrical circuit. The texture mapping coordinate position encoder 722 can correspond to the vertex information encoder 101, attribute information encoder 103, and encoding processor 522 mentioned above, or it can be installed through the circuit 151 and memory 152 mentioned above.

[0447] For example, the 3D coordinate position encoder 721 performs arithmetic encoding of the 3D coordinate positions of the vertices of the faces constituting the 3D mesh according to a first order obtained by subtracting a first predetermined value from the bit precision of the 3D coordinate position. Additionally, the texture mapping coordinate position encoder 722 performs arithmetic encoding of the texture mapping coordinate position of the vertex according to a second order obtained by subtracting a second predetermined value from the bit precision of the texture mapping coordinate position.

[0448] Therefore, sometimes it is possible to perform arithmetic encoding of the 3D coordinate position according to the first order of arithmetic encoding suitable for the 3D coordinate position, and arithmetic encoding of the texture mapping coordinate position according to the second order of arithmetic encoding suitable for the texture mapping coordinate position. Thus, sometimes it is possible to perform arithmetic encoding of the 3D coordinate position according to the characteristics of the 3D coordinate position, and arithmetic encoding of the texture mapping coordinate position according to the characteristics of the texture mapping coordinate position. Therefore, compression ratio can sometimes be improved.

[0449] Figure 48 This is a block diagram illustrating another configuration example of the decoding apparatus 200 according to this embodiment. In this example, the decoding apparatus 200 includes an arithmetic decoder 810 and a selector 811. The selector 811 may also be included in the arithmetic decoder 810.

[0450] The arithmetic decoder 810 is, for example, an electrical circuit. The arithmetic decoder 810 can correspond to the connection information decoder 202 and the decoding processor 622 described above, or it can be installed through the circuit 251 and the memory 252 described above.

[0451] Selector 811 is, for example, an electrical circuit. Selector 811 may correspond to the connection information decoder 202 and decoding processor 622 described above, or it may be installed through the circuit 251 and memory 252 described above.

[0452] For example, the arithmetic decoder 810 decodes the connection types related to the connection relationships between the face of the processed object and the unprocessed faces for each face constituting the 3D mesh through context-based arithmetic decoding. When the arithmetic decoder 810 decodes the current connection type of the decoded object, the selector 811 selects the context to be applied to the arithmetic decoding from multiple contexts using a previously decoded connection type that was decoded before the current connection type.

[0453] Therefore, it is sometimes possible to select the context for arithmetic decoding of the current connection type based on the previous connection type. Consequently, it is sometimes possible to perform arithmetic decoding of the current connection type, which may have different probability distributions depending on the previous connection type, based on the context selected according to the previous connection type. Therefore, it is sometimes possible to improve the compression ratio based on the characteristics of the information in the 3D mesh.

[0454] Figure 49 This is a block diagram illustrating another configuration example of the decoding apparatus 200 according to this embodiment. In this example, the decoding apparatus 200 includes a three-dimensional coordinate position decoder 821 and a texture mapping coordinate position decoder 822.

[0455] The three-dimensional coordinate position decoder 821 is, for example, an electrical circuit. The three-dimensional coordinate position decoder 821 can correspond to the vertex information decoder 201 and decoding processor 622 mentioned above, or it can be installed through the circuit 251 and memory 252 mentioned above.

[0456] The texture mapping coordinate position decoder 822 is, for example, an electrical circuit. The texture mapping coordinate position decoder 822 can correspond to the vertex information decoder 201, attribute information decoder 203, and decoding processor 622 mentioned above, or it can be installed through the circuit 251 and memory 252 mentioned above.

[0457] For example, the 3D coordinate position decoder 821 performs arithmetic decoding of the 3D coordinate positions of the vertices of the faces constituting the 3D mesh according to a first order obtained by subtracting a first predetermined value from the bit precision of the 3D coordinate position. Additionally, the texture mapping coordinate position decoder 822 performs arithmetic decoding of the texture mapping coordinate position of the vertex according to a second order obtained by subtracting a second predetermined value from the bit precision of the texture mapping coordinate position.

[0458] Therefore, sometimes it is possible to perform arithmetic decoding of the 3D coordinate position according to the first order of arithmetic decoding suitable for the 3D coordinate position, and arithmetic decoding of the texture map coordinate position according to the second order of arithmetic decoding suitable for the texture map coordinate position. Consequently, sometimes it is possible to perform arithmetic decoding of the 3D coordinate position according to the characteristics of the 3D coordinate position, and arithmetic decoding of the texture map coordinate position according to the characteristics of the texture map coordinate position. Therefore, compression ratio can sometimes be improved.

[0459] In the above explanation, a connection can also be represented as a link. Additionally, the connection type can also be represented as connection information or link information.

[0460] <Other examples> The encoding device 100 and the decoding device 200 have been described above according to the embodiments, but the manner in which the encoding device 100 and the decoding device 200 are described is not limited to the embodiments. Modifications that can be conceived by those skilled in the art can be implemented in the embodiments, and the various constituent elements of the embodiments can be arbitrarily combined.

[0461] For example, in an implementation, a process that is performed by a specific component may be performed by other components instead of that specific component. Furthermore, the order of multiple processes may be changed, or multiple processes may be performed in parallel.

[0462] Furthermore, as described above, at least a portion of the various configurations of this disclosure can be mounted as an integrated circuit. At least a portion of the various processes of this disclosure can also be used as an encoding method or a decoding method. A program for causing a computer to execute the encoding method or the decoding method can also be used. Furthermore, a non-transitory computer-readable recording medium containing the program can also be used. Additionally, a bitstream for causing the decoding device 200 to perform decoding processing can also be used.

[0463] Furthermore, at least a portion of the various configurations and processes disclosed herein can be used as a transmitting device, a receiving device, a transmitting method, and a receiving method. A program for causing a computer to execute the transmitting method or the receiving method can also be used. Additionally, a non-transitory computer-readable recording medium containing the program can also be used.

[0464] Industrial availability This disclosure includes, for example, encoding devices, decoding devices, transmitting devices, and receiving devices for three-dimensional meshes, which can be applied to computer graphics systems and three-dimensional data display systems.

[0465] Label Explanation 100 encoding device Vertex Information Encoder (101, 121, 144) 102, 145 Connect information encoder Attribute Information Encoder 103, 122 104, 204, 521 Preprocessors 105, 205, 623 post-processors 110 Three-dimensional data encoding system 111, 211 controllers 112, 212 Input / Output Processors 113 Three-dimensional data encoder 114 System Multiplexer 115 3D Data Generator 123 Metadata Encoder 124 Multiplexer 131 Vertex Image Generator 132 Attribute Image Generator 133 Metadata Generator 134 Image Encoder 141 Two-dimensional data encoder 142 Grid Data Encoder 143 Texture Encoder 148. Description of the encoder 151 and 251 circuits 152, 252 memory 200 Decoding Device Vertex information decoder 201, 221, 244 202, 245 Connection Information Decoder 203, 222 Attribute Information Decoder 210 Three-Dimensional Data Decoding System 213 3D Data Decoder 214 System Inverse Multiplexer 215, 247 prompts 216 User Interface 223 Metadata Decoder 224 Inverter 231 Vertex Information Generator 232 Attribute Information Generator 234 Image Decoder 241 Two-dimensional data decoder 242 Grid Data Decoder 243 Texture Decoder 246 Mesh Reconstructor 248 Describe the decoder 300 Network 310 External Connector 522 Encoding Processor 531 First Quantizer 532 Predictive Transform Processor 533 Second Quantizer 534 binarizer 535, 710 Arithmetic Encoders 622 Decoding Processor 631 First Inverse Quantizer 632 Predictive Inverse Transform Processor 633 Second Inverse Quantizer 634 Inverse Binarizer 635, 810 Arithmetic Decoder 711, 811 selectors 721 Three-dimensional coordinate position encoder 722 Texture Mapping Coordinate Position Encoder 821 3D Coordinate Position Decoder 822 Texture Mapping Coordinate Position Decoder

Claims

1. An encoding device, wherein, have: Memory; and The circuit is capable of accessing the memory. The circuit is in operation. For each face that constitutes a 3D mesh, the connection type related to the connection relationship between that face and unprocessed faces of the processed object is encoded using context-based arithmetic coding. In the encoding of the connection type of the encoded object, i.e. the current connection type, the context applied to the arithmetic encoding is selected from multiple contexts using the connection type that was encoded before the current connection type, i.e. the previous connection type.

2. The encoding device according to claim 1, wherein, The context is used to determine the probability value used in the arithmetic encoding. The circuit uses the probability value determined based on the context to perform the arithmetic encoding on the current connection type, the context being selected using the previous connection type.

3. The encoding device according to claim 1 or 2, wherein, The previous connection type is the connection type that was encoded immediately before the current connection type.

4. The encoding device according to claim 1 or 2, wherein, Each of the multiple faces is a triangle.

5. The encoding device according to claim 1 or 2, wherein, The connection type is any of several types, including the type representing a branch, where a branch refers to multiple unprocessed face branches connected to the face of the processed object.

6. The encoding device according to claim 5, wherein, The circuit, If the previous connection type is the type representing the branch, then the first context is selected as the context. If the previous connection type is a different type from the type representing the branch, a second context that is different from the first context is selected as the context.

7. The encoding device according to claim 1 or 2, wherein, The connection type is any one of several types specified by Edgebreaker.

8. The encoding device according to claim 7, wherein, The circuit, If the previous connection type is type S as defined by the Edgebreaker, then the first context is selected as the context. If the previous connection type is different from the type S, a second context that is different from the first context is selected as the context.

9. A decoding device, wherein, have: Memory; and The circuit is capable of accessing the memory. The circuit is in operation. For each face that makes up the 3D mesh, the connection type related to the connection relationship between that face and the unprocessed faces of the processed object is decoded through context-based arithmetic decoding. In the decoding of the connection type of the decoding object, i.e. the current connection type, the context to be applied to the arithmetic decoding is selected from multiple contexts using the connection type that was decoded before the current connection type, i.e. the previous connection type.

10. The decoding apparatus according to claim 9, wherein, The context is used to determine the probability values ​​used in the arithmetic decoding. The circuit uses the probability value determined based on the context to perform the arithmetic decoding on the current connection type, the context being selected using the previous connection type.

11. The decoding apparatus according to claim 9 or 10, wherein, The previous connection type is the connection type that was decoded immediately before the current connection type.

12. The decoding apparatus according to claim 9 or 10, wherein, Each of the multiple faces is a triangle.

13. The decoding apparatus according to claim 9 or 10, wherein, The connection type is any of several types, including the type representing a branch, where a branch refers to multiple unprocessed face branches connected to the face of the processed object.

14. The decoding apparatus according to claim 13, wherein, The circuit, If the previous connection type is the type representing the branch, then the first context is selected as the context. If the previous connection type is a different type from the type representing the branch, a second context that is different from the first context is selected as the context.

15. The decoding apparatus according to claim 9 or 10, wherein, The connection type is any one of several types specified by Edgebreaker.

16. The decoding apparatus according to claim 15, wherein, The circuit, If the previous connection type is type S as defined by the Edgebreaker, then the first context is selected as the context. If the previous connection type is different from the type S, a second context that is different from the first context is selected as the context.

17. An encoding method, wherein, For each of the multiple faces that make up the 3D mesh, the connection type related to the connection relationship between that face and the unprocessed face of the processed object is encoded by context-based arithmetic coding; In the encoding of the connection type of the encoded object, i.e. the current connection type, the context applied to the arithmetic encoding is selected from multiple contexts using the connection type that was encoded before the current connection type, i.e. the previous connection type.

18. A decoding method, wherein, For each of the multiple faces that make up the 3D mesh, the connection type related to the connection relationship between that face and the unprocessed faces of the processed object is decoded through context-based arithmetic decoding. In the decoding of the connection type of the decoding object, i.e. the current connection type, the context to be applied to the arithmetic decoding is selected from multiple contexts using the connection type that was decoded before the current connection type, i.e. the previous connection type.

Citation Information

Patent Citations

  • Progressive three-dimensional mesh information coding / decoding method, and apparatus therefor

    JP2006187015A