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

WO2025063134A1PCT designated stage expired Publication Date: 2025-03-27PANASONIC INTELLECTUAL PROPERTY CORP OF AMERICA
View PDF 4 Cites 0 Cited by

Patent Information

Application Number
PCT/JP2024/032796
Authority / Receiving Office
WO · WO
Patent Type
Applications
Current Assignee / Owner
Priority Date
2023-09-21
Filing Date
2024-09-13
Publication Date
2025-03-27

Smart Images

  • Figure JP2024032796_27032025_PF_FP_ABST
    Figure JP2024032796_27032025_PF_FP_ABST
Patent Text Reader

Abstract

An encoding device (100) comprises a memory (152), and a circuit (151) capable of accessing the memory (152). The circuit (151) in operation encodes a connection type by context-based arithmetic encoding for each of a plurality of surfaces constituting a three-dimensional mesh (S1410), selects a context using a first preceding connection type in encoding of a current connection type (S1411), and if the first preceding connection type is a corner type, selects the context according to the number of one or more corner types continuously encoded up to the first preceding connection type.
Need to check novelty before this filing date? Find Prior Art

Description

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

[0001] The present disclosure relates to an encoding device and the like.

[0002] Patent Document 1 proposes a method and apparatus for encoding and decoding three-dimensional mesh data. Non-Patent Document 1 discloses a technique related to encoding and decoding three-dimensional mesh data.

[0003] Japanese Patent Application Laid-Open No. 2006-187015

[0004] Jarek Rossignac et al., "3D Compression Made Simple: Edgebreaker on a Corner-Table," [online], [retrieved January 27, 2024], <URL: https: / / www.cs.cmu.edu / ~alla / edgebreaker_simple.pdf>

[0005] Further improvements are desired in encoding processes etc. relating to three-dimensional data. An object of the present disclosure is to improve encoding processes etc. relating to three-dimensional data.

[0006] An encoding device according to one aspect of the present disclosure comprises a memory and a circuit capable of accessing the memory, and in operation, for each of a plurality of faces constituting a three-dimensional mesh, the circuit encodes a connection type relating to the connection relationship between the face to be processed and unprocessed faces using context-based arithmetic coding, and in encoding the current connection type, which is the connection type to be encoded, selects the context to be applied to the arithmetic coding from among a plurality of contexts using a first preceding connection type, which is the connection type encoded before the current connection type, and if the first preceding connection type is a corner type, selects the context according to the number of one or more corner types, each of which is the corner type, that have been encoded consecutively up to the first preceding connection type, and the corner type is a type in which two unprocessed faces are connected to both the right and left sides of the face to be processed along a path leading to the face to be processed in processing order, and all of the faces connected to the vertices of the face to be processed, including the two unprocessed faces, are unprocessed.

[0007] These comprehensive or specific aspects may be realized as a system, an apparatus, a method, an integrated circuit, a computer program, or a non-transitory recording medium such as a computer-readable CD-ROM, or may be realized as any combination of a system, an apparatus, a method, an integrated circuit, a computer program, and a recording medium.

[0008] The present disclosure may contribute to improvements in encoding processes and the like related to three-dimensional data.

[0009] 1 is a conceptual diagram showing a three-dimensional mesh according to an embodiment. FIG. 2 is a conceptual diagram showing basic elements of a three-dimensional mesh according to an embodiment. FIG. 3 is a conceptual diagram showing mapping according to an embodiment. FIG. 4 is a block diagram showing a configuration example of an encoding / decoding system according to an embodiment. FIG. 5 is a block diagram showing a configuration example of an encoding device according to an embodiment. FIG. 6 is a block diagram showing another configuration example of an encoding device according to an embodiment. FIG. 7 is a block diagram showing another configuration example of a decoding device according to an embodiment. FIG. 8 is a block diagram showing another configuration example of a decoding device according to an embodiment. FIG. 9 is a block diagram showing another configuration example of a decoding device according to an embodiment. FIG. 10 is a conceptual diagram showing another configuration example of a bit stream according to an embodiment. FIG. 11 is a conceptual diagram showing yet another configuration example of a bit stream according to an embodiment. FIG. 12 is a block diagram showing a specific example of an encoding / decoding system according to an embodiment. FIG. 13 is a conceptual diagram showing an example configuration of point cloud data according to an embodiment. FIG. 14 is a conceptual diagram showing an example data file of point cloud data according to an embodiment. FIG. 15 is a conceptual diagram showing an example configuration of mesh data according to an embodiment. FIG. 16 is a conceptual diagram showing an example data file of mesh data according to an embodiment. FIG. 17 is a conceptual diagram showing types of three-dimensional data according to an embodiment. FIG. 18 is a block diagram showing an example configuration of a three-dimensional data encoder according to an embodiment. FIG. 19 is a block diagram showing an example configuration of a three-dimensional data decoder according to an embodiment. FIG. 19 is a block diagram showing another configuration example of a three-dimensional data encoder according to an embodiment. FIG. 19 is a block diagram showing another configuration example of a three-dimensional data decoder according to an embodiment. FIG. 1 is a conceptual diagram showing a specific example of encoding processing according to an embodiment. FIG. 2 is a conceptual diagram showing a specific example of decoding processing according to an embodiment. FIG. 3 is a block diagram showing an implementation example of an encoding device according to an embodiment. FIG. 4 is a block diagram showing an implementation example of a decoding device according to an embodiment. FIG. 5 is a block diagram showing another configuration example of an encoding / decoding system according to an embodiment. FIG. 6 is a block diagram showing yet another configuration example of an encoding device according to an embodiment. FIG. 7 is a block diagram showing yet another configuration example of a decoding device according to an embodiment. FIG. 8 is a conceptual diagram showing five types of connection types according to an embodiment. FIG. 9 is a conceptual diagram showing an example of sequentially determined connection types according to an embodiment. FIG. 10 is a flowchart showing examples of encoding processing and decoding processing of connection types according to an embodiment. FIG. 11 is a flowchart showing a first specific example of encoding of connection types according to an embodiment.1 is a flowchart showing a first specific example of connection type decoding according to an embodiment. FIG. 2 is a flowchart showing a second specific example of connection type encoding according to an embodiment. FIG. 3 is a flowchart showing a third specific example of connection type encoding according to an embodiment. FIG. 4 is a flowchart showing a fourth specific example of connection type encoding according to an embodiment. FIG. 5 is a flowchart showing a fourth specific example of connection type decoding according to an embodiment. FIG. 6 is a flowchart showing a fourth specific example of connection type decoding according to an embodiment. FIG. 7 is a flowchart showing a fourth specific example of connection type decoding according to an embodiment. FIG. 8 is a flowchart showing a fourth specific example of connection type encoding according to an embodiment. FIG. 9 is a flowchart showing a fourth specific example of connection type decoding according to an embodiment. FIG. 10 is a flowchart showing a relationship diagram showing another example of a relationship between a second previous connection type and a value used to determine a context according to an embodiment. FIG. 11 is a flowchart showing yet another example of connection type encoding and decoding according to an embodiment. FIG. 12 is a relationship diagram showing an example of a relationship between at least one of a second previous connection type and a number of consecutive type Cs and a value used to determine a context according to an embodiment. FIG. 13 is a flowchart showing a fifth specific example of connection type encoding according to an embodiment. FIG. 14 is a flowchart showing a fifth specific example of connection type decoding according to an embodiment. FIG. 15 is a flowchart showing an example of a basic first encoding process according to an embodiment. FIG. 1 is a flowchart showing an example of processing included in a basic first encoding process according to an embodiment; FIG. 2 is a flowchart showing an example of a basic first decoding process according to an embodiment; FIG. 3 is a flowchart showing an example of processing included in a basic first decoding process according to an embodiment; FIG. 4 is a flowchart showing an example of a basic second encoding process according to an embodiment; FIG. 5 is a flowchart showing an example of processing included in a basic second encoding process according to an embodiment; FIG. 6 is a flowchart showing an example of a basic second decoding process according to an embodiment;

[0010] Introduction Three-dimensional (3D) meshes are used in computer graphics images, which may be composed of multiple temporally distinct frames, each of which may be represented by a 3D mesh.

[0011] A 3D mesh is composed of vertex information indicating the positions of each of the vertices in 3D space, connectivity information indicating the connections between the vertices, and attribute information indicating the attributes of each vertex or face. Each face is constructed according to the connectivity between the vertices. Various computer graphics images can be expressed using such 3D meshes.

[0012] Furthermore, the three-dimensional mesh is coded for transmission and storage. In coding the three-dimensional mesh, a connection type relating to the connection relationship between the processing target surface and unprocessed surfaces may be coded for each of the multiple surfaces constituting the three-dimensional mesh. The connection type of each surface is effective as information for expressing the relationship with other surfaces, and is also effective as information for sequentially processing multiple surfaces.

[0013] However, if the connection types are not coded efficiently, the amount of coding can increase.

[0014] For example, arithmetic coding and arithmetic decoding may be used for efficient encoding and decoding of a three-dimensional mesh. In arithmetic coding, information is compressed using the occurrence probability of values ​​contained in the information. Here, arithmetic coding may be performed using the occurrence probability indicated by a context corresponding to the surrounding circumstances of the information to be coded. This may improve the compression rate of the three-dimensional mesh information.

[0015] On the other hand, in context-based arithmetic coding, unless a context appropriate for the characteristics of the 3D mesh information is applied, it is difficult to improve the compression rate. In other words, even if arithmetic coding and arithmetic decoding are used, the compression rate may not necessarily be improved depending on the characteristics of the 3D mesh information.

[0016] Therefore, the encoding device of Example 1 includes a memory and a circuit that can access the memory, and in operation, for each of a plurality of faces that constitute a three-dimensional mesh, the circuit encodes a connection type related to the connection relationship between the face to be processed and unprocessed faces using context-based arithmetic coding, and in encoding the current connection type, which is the connection type to be encoded, selects the context to be applied to the arithmetic coding from a plurality of contexts using a first preceding connection type, which is the connection type encoded before the current connection type, and if the first preceding connection type is a corner type, selects the context according to the number of one or more corner types, each of which is the corner type, that have been consecutively encoded up to the first preceding connection type, and the corner type is a type in which two unprocessed faces are connected to both the right and left sides of the face to be processed along a path leading to the face to be processed in processing order, and all of the faces connected to the vertices of the face to be processed, including the two unprocessed faces, are unprocessed.

[0017] This may enable selection of a context for arithmetic coding of the current connection type, which may have different probability distributions depending on the number of consecutive corner types, according to the number of consecutive corner types. Therefore, it may be possible to improve the compression rate based on the characteristics of the information of the 3D mesh. Therefore, it may be possible to efficiently code the connection type, and it may be possible to reduce the amount of code.

[0018] In addition, the multiple examples of connection types regarding the connection relationship between the surface to be processed and the unprocessed surface may include a type in which the surface to be processed is not connected to the unprocessed surface (e.g., type E described below).

[0019] The encoding device of Example 2 may be the encoding device of Example 1, wherein the circuitry determines to which of a plurality of categories the number of the one or more corner types belongs, using the number of the one or more corner types and one or more thresholds, and selects the context according to the category to which the number of the one or more corner types belongs.

[0020] This makes it possible to appropriately determine the category corresponding to the number of consecutive corner types. Therefore, it becomes possible to appropriately select a context according to the appropriately determined category. Therefore, it may be possible to efficiently encode the connection type, and it may be possible to reduce the amount of code.

[0021] Also, the encoding device of Example 3 may be the encoding device of Example 2, in which the one or more thresholds include a first threshold and a second threshold, and the plurality of divisions include a first division, a second division, and a third division.

[0022] This makes it possible to appropriately determine the category corresponding to the number of consecutive corner types from among the three categories using two thresholds, and therefore to appropriately select a context depending on the appropriately determined category.

[0023] The encoding device of Example 4 may be the encoding device of Example 3, wherein the circuitry determines that the number of the one or more corner types belongs to the first category if the number of the one or more corner types is smaller than the first threshold, determines that the number of the one or more corner types belongs to the second category if the number of the one or more corner types is equal to or greater than the first threshold and smaller than the second threshold, and determines that the number of the one or more corner types belongs to the third category if the number of the one or more corner types is equal to or greater than the second threshold.

[0024] This makes it possible to appropriately determine the category corresponding to the number of consecutive corner types from among the three categories by comparing the number of consecutive corner types with the two thresholds, and therefore to appropriately select a context depending on the appropriately determined category.

[0025] Furthermore, the encoding device of Example 5 is the encoding device of any one of Examples 1 to 4, wherein the connection type is any one of the corner type, branch type, right type, left type, and terminal type, the branch type is a type in which two unprocessed faces are connected to both the right and left sides of the face to be processed along a path leading to the face to be processed in the processing order and is a type different from the corner type, the right type is a type in which an unprocessed face is not connected to the right side of the face to be processed along the path leading to the face to be processed in the processing order, and an unprocessed face is connected to the left side of the face to be processed, and the left type is a type in which an unprocessed face is not connected to the left side of the face to be processed along the path leading to the face to be processed in the processing order, and an unprocessed face is connected to the right side of the face to be processed. the termination type is a type in which no unprocessed faces are connected to either the left or right side of the face to be processed along a path leading to the face to be processed in the processing order, and when the first preceding connection type is the right type, the circuit selects the context according to whether a second preceding connection type, which is the connection type coded before the first preceding connection type, is (i) the corner type, (ii) the right type, or (iii) neither the corner type nor the right type, and when the first preceding connection type is any of the branch type, the left type, and the termination type, the circuit selects the context according to whether the first preceding connection type is the branch type, the left type, or the termination type.

[0026] This may allow for appropriate selection of a context for the arithmetic coding of the current connection type depending on whether the first preceding connection type is a corner type, a branch type, a right type, a left type or a termination type.

[0027] Furthermore, when the first preceding connection type is a corner type, it may be possible to appropriately select a context according to the number of consecutive corner types, and when the first preceding connection type is a right type, it may be possible to appropriately select a context according to whether the second preceding connection type is a corner type, a right type, or other.

[0028] It may therefore be possible to appropriately select a context for arithmetic coding of the current connection type, which may have different probability distributions depending on the characteristics of one or more connection types coded before the current connection type.

[0029] Furthermore, the encoding device of Example 6 may be the encoding device of Example 5, in which the connection type is a type defined by an edge breaker, the corner type is Type C defined by the edge breaker, the branch type is Type S defined by the edge breaker, the right type is Type R defined by the edge breaker, the left type is Type L defined by the edge breaker, and the termination type is Type E defined by the edge breaker.

[0030] This may enable efficient coding of the connection types defined by the edge breakers, thereby reducing the amount of coding required for the connection types defined by the edge breakers.

[0031] Furthermore, an encoding device of Example 7 includes a memory and a circuit that can access the memory, and in operation, the circuit encodes, for each of a plurality of faces that constitute a three-dimensional mesh, a connection type relating to a connection relationship between the face to be processed and an unprocessed face in a reverse order of a processing order in which the connection type is defined, and in encoding a current connection type that is the connection type to be encoded, encodes, as the current connection type, information for identifying the current connection type from a candidate set that is defined according to a preceding connection type that is the connection type encoded before the current connection type, and when the preceding connection type is a left type or a terminal type, the candidate set does not include a corner type, and when the preceding connection type is If the candidate set is neither the left type nor the terminal type, the candidate set includes the corner type, and the corner type is a type in which two unprocessed faces are connected to both the right and left sides of the face to be processed along the path leading to the face to be processed in the processing order, and all of the faces connected to the vertices of the face to be processed, including the two unprocessed faces, are unprocessed; the left type is a type in which no unprocessed face is connected to the left side of the face to be processed along the path leading to the face to be processed in the processing order, and an unprocessed face is connected to the right side of the face to be processed; and the terminal type is a type in which no unprocessed face is connected to either the left or right side of the face to be processed along the path leading to the face to be processed in the processing order.

[0032] This may make it possible to control whether or not to include a corner type in the candidate set of the current connection type depending on whether the preceding connection type is one of the left type and the terminal type. Therefore, it may be possible to narrow down the candidate set of the current connection type depending on the preceding connection type. Therefore, it may be possible to reduce the amount of information required to identify the current connection type. Therefore, it may be possible to efficiently encode the connection type, and it may be possible to reduce the amount of code.

[0033] Furthermore, the encoding device of Example 8 may be the encoding device of Example 7, in which the connection type is a type defined by an edge breaker, the corner type is Type C defined by the edge breaker, the left type is Type L defined by the edge breaker, and the termination type is Type E defined by the edge breaker.

[0034] This may enable efficient coding of the connection types defined by the edge breakers, thereby reducing the amount of coding required for the connection types defined by the edge breakers.

[0035] Further, a decoding device of Example 9 includes a memory and a circuit that can access the memory, and in operation, for each of a plurality of faces that constitute a three-dimensional mesh, the circuit decodes a connection type related to the connection relationship between the face to be processed and an unprocessed face by arithmetic decoding based on a context, and in decoding the current connection type that is the connection type to be decoded, selects the context to be applied to the arithmetic decoding from among a plurality of contexts using a first preceding connection type that is the connection type decoded before the current connection type, and if the first preceding connection type is a corner type, selects the context according to the number of one or more corner types that are each the corner type and that have been decoded consecutively up to the first preceding connection type, and the corner type is a type in which two unprocessed faces are connected to both the right and left sides of the face to be processed along a path leading to the face to be processed in processing order, and all of the plurality of faces connected to the vertices of the face to be processed, including the two unprocessed faces, are unprocessed.

[0036] This may enable selection of a context for arithmetic decoding of the current connection type, which may have different probability distributions depending on the number of consecutive corner types, according to the number of consecutive corner types. Therefore, it may be possible to improve the compression rate based on the characteristics of the information of the three-dimensional mesh. Therefore, it may be possible to efficiently decode the connection type, and it may be possible to reduce the amount of code.

[0037] In addition, the multiple examples of connection types regarding the connection relationship between the surface to be processed and the unprocessed surface may include a type in which the surface to be processed is not connected to the unprocessed surface (e.g., type E described below).

[0038] The decoding device of Example 10 may be the decoding device of Example 9, wherein the circuit determines to which of a plurality of categories the number of the one or more corner types belongs using the number of the one or more corner types and one or more thresholds, and selects the context according to the category to which the number of the one or more corner types belongs.

[0039] This makes it possible to appropriately determine the category corresponding to the number of consecutive corner types. Therefore, it becomes possible to appropriately select a context according to the appropriately determined category. Therefore, it may be possible to efficiently decode the connection type, and it may be possible to reduce the amount of coding.

[0040] Furthermore, the decoding device of Example 11 may be the decoding device of Example 10, wherein the one or more thresholds include a first threshold and a second threshold, and the multiple divisions include a first division, a second division, and a third division.

[0041] This makes it possible to appropriately determine the category corresponding to the number of consecutive corner types from among the three categories using two thresholds, and therefore to appropriately select a context depending on the appropriately determined category.

[0042] Furthermore, the decoding device of Example 12 may be the decoding device of Example 11, wherein the circuit determines that the number of the one or more corner types belongs to the first category if the number of the one or more corner types is smaller than the first threshold, determines that the number of the one or more corner types belongs to the second category if the number of the one or more corner types is equal to or greater than the first threshold and smaller than the second threshold, and determines that the number of the one or more corner types belongs to the third category if the number of the one or more corner types is equal to or greater than the second threshold.

[0043] This makes it possible to appropriately determine the category corresponding to the number of consecutive corner types from among the three categories by comparing the number of consecutive corner types with the two thresholds, and therefore to appropriately select a context depending on the appropriately determined category.

[0044] Furthermore, the decoding device of Example 13 is the decoding device of any of Examples 9 to 12, wherein the connection type is any of the corner type, branch type, right type, left type, and terminal type, the branch type is a type in which two unprocessed faces are connected to both the right and left sides of the face to be processed along a path leading to the face to be processed in the processing order and is a type different from the corner type, the right type is a type in which an unprocessed face is not connected to the right side of the face to be processed along the path leading to the face to be processed in the processing order and an unprocessed face is connected to the left side of the face to be processed, and the left type is a type in which an unprocessed face is not connected to the left side of the face to be processed along the path leading to the face to be processed in the processing order and an unprocessed face is connected to the right side of the face to be processed. the termination type is a type in which no unprocessed faces are connected to either the left or right side of the face to be processed along a path leading to the face to be processed in the processing order, and the circuit, when the first preceding connection type is the right type, selects the context according to whether a second preceding connection type, which is the connection type decoded before the first preceding connection type, is (i) the corner type, (ii) the right type, or (iii) neither the corner type nor the right type, and when the first preceding connection type is any of the branch type, the left type, and the termination type, selects the context according to whether the first preceding connection type is the branch type, the left type, or the termination type.

[0045] This may enable appropriate selection of a context for arithmetic decoding of the current connection type depending on whether the first preceding connection type is a corner type, a branch type, a right type, a left type, or a termination type.

[0046] Furthermore, when the first preceding connection type is a corner type, it may be possible to appropriately select a context according to the number of consecutive corner types, and when the first preceding connection type is a right type, it may be possible to appropriately select a context according to whether the second preceding connection type is a corner type, a right type, or other.

[0047] Thus, it may be possible to appropriately select a context for arithmetic decoding of the current connection type, which may have different probability distributions depending on the characteristics of one or more connection types decoded before the current connection type.

[0048] Furthermore, the decoding device of Example 14 may be the decoding device of Example 13, in which the connection type is a type defined by an edge breaker, the corner type is type C defined by the edge breaker, the branch type is type S defined by the edge breaker, the right type is type R defined by the edge breaker, the left type is type L defined by the edge breaker, and the termination type is type E defined by the edge breaker.

[0049] This may enable efficient decoding of the connection type defined by the edge breaker, thereby reducing the amount of code for the connection type defined by the edge breaker.

[0050] Further, a decoding device of Example 15 includes a memory and a circuit accessible to the memory, and in operation, the circuit decodes, for each of a plurality of faces constituting a three-dimensional mesh, a connection type relating to a connection relationship between the face to be processed and an unprocessed face in a reverse order to a processing order in which the connection types are defined, and in decoding a current connection type which is the connection type to be decoded, decodes, as the current connection type, information for identifying the current connection type from a candidate set defined according to a preceding connection type which is the connection type decoded before the current connection type, and when the preceding connection type is a left type or a terminal type, the candidate set does not include a corner type, and when the preceding connection type is the ... the candidate set does not include a corner type. If the candidate set is neither the corner type nor the terminal type, the candidate set includes the corner type, and the corner type is a type in which two unprocessed faces are connected to both the right and left sides of the face to be processed along a path leading to the face to be processed in the processing order, and all of the faces connected to the vertices of the face to be processed, including the two unprocessed faces, are unprocessed; the left type is a type in which no unprocessed face is connected to the left side of the face to be processed along the path leading to the face to be processed in the processing order, and an unprocessed face is connected to the right side of the face to be processed; and the terminal type is a type in which no unprocessed face is connected to either the left or right side of the face to be processed along the path leading to the face to be processed in the processing order.

[0051] This may enable control of whether or not to include a corner type in the candidate set of the current connection type depending on whether the preceding connection type is one of the left type and the terminal type. Therefore, it may be possible to narrow down the candidate set of the current connection type depending on the preceding connection type. Therefore, it may be possible to reduce the amount of information required to identify the current connection type. Therefore, it may be possible to efficiently decode the connection type and reduce the amount of coding.

[0052] Furthermore, the decoding device of Example 16 may be the decoding device of Example 15, in which the connection type is a type defined by an edge breaker, the corner type is type C defined by the edge breaker, the left type is type L defined by the edge breaker, and the termination type is type E defined by the edge breaker.

[0053] This may enable efficient decoding of the connection type defined by the edge breaker, thereby reducing the amount of code for the connection type defined by the edge breaker.

[0054] In addition, the encoding method of Example 17 encodes, for each of a plurality of faces constituting a three-dimensional mesh, a connection type relating to the connection relationship between the face to be processed and an unprocessed face by context-based arithmetic coding, and in encoding the current connection type, which is the connection type to be encoded, selects the context to be applied to the arithmetic coding from a plurality of contexts using a first preceding connection type, which is the connection type encoded before the current connection type, and if the first preceding connection type is a corner type, selects the context according to the number of one or more corner types, each of which is the corner type, that have been encoded consecutively up to the first preceding connection type, and the corner type is a type in which two unprocessed faces are connected to both the right and left sides of the face to be processed along a path leading to the face to be processed in processing order, and all of the faces connected to the vertices of the face to be processed, including the two unprocessed faces, are unprocessed.

[0055] This may enable selection of a context for arithmetic coding of the current connection type, which may have different probability distributions depending on the number of consecutive corner types, according to the number of consecutive corner types. Therefore, it may be possible to improve the compression rate based on the characteristics of the information of the 3D mesh. Therefore, it may be possible to efficiently code the connection type, and it may be possible to reduce the amount of code.

[0056] In addition, the encoding method of Example 18 encodes, for each of a plurality of faces constituting a three-dimensional mesh, a connection type relating to a connection relationship between the face to be processed and an unprocessed face in a reverse processing order to the processing order in which the connection type is defined, and in encoding the current connection type which is the connection type to be encoded, encodes, as the current connection type, information for identifying the current connection type from a candidate set defined according to a preceding connection type which is the connection type encoded before the current connection type, and when the preceding connection type is a left type or an end type, the candidate set does not include a corner type, and when the preceding connection type is neither the left type nor the end type, In this case, the candidate set includes the corner type, and the corner type is a type in which two unprocessed faces are connected to both the right and left sides of the face to be processed along the path leading to the face to be processed in the processing order, and all of the faces connected to the vertices of the face to be processed, including the two unprocessed faces, are unprocessed; the left type is a type in which no unprocessed face is connected to the left side of the face to be processed along the path leading to the face to be processed in the processing order, and an unprocessed face is connected to the right side of the face to be processed; and the terminal type is a type in which no unprocessed face is connected to either the left or right side of the face to be processed along the path leading to the face to be processed in the processing order.

[0057] This may make it possible to control whether or not to include a corner type in the candidate set of the current connection type depending on whether the preceding connection type is one of the left type and the terminal type. Therefore, it may be possible to narrow down the candidate set of the current connection type depending on the preceding connection type. Therefore, it may be possible to reduce the amount of information required to identify the current connection type. Therefore, it may be possible to efficiently encode the connection type, and it may be possible to reduce the amount of code.

[0058] In addition, the decoding method of Example 19 decodes, for each of a plurality of faces that constitute a three-dimensional mesh, a connection type related to the connection relationship between the face to be processed and an unprocessed face by arithmetic decoding based on a context, and in decoding the current connection type, which is the connection type to be decoded, selects the context to be applied to the arithmetic decoding from among a plurality of contexts using a first preceding connection type, which is the connection type decoded before the current connection type, and if the first preceding connection type is a corner type, selects the context according to the number of one or more corner types, each of which is the corner type, that have been decoded consecutively up to the first preceding connection type, and the corner type is a type in which two unprocessed faces are connected to both the right and left sides of the face to be processed along a path leading to the face to be processed in processing order, and all of the faces connected to the vertices of the face to be processed, including the two unprocessed faces, are unprocessed.

[0059] This may enable selection of a context for arithmetic decoding of the current connection type, which may have different probability distributions depending on the number of consecutive corner types, according to the number of consecutive corner types. Therefore, it may be possible to improve the compression rate based on the characteristics of the information of the three-dimensional mesh. Therefore, it may be possible to efficiently decode the connection type, and it may be possible to reduce the amount of code.

[0060] Furthermore, the decoding method of Example 20 decodes, for each of a plurality of faces constituting a three-dimensional mesh, a connection type relating to a connection relationship between the face to be processed and an unprocessed face in a reverse processing order to the processing order in which the connection type is defined, and in decoding the current connection type which is the connection type to be decoded, information for identifying the current connection type from a candidate set defined according to a preceding connection type which is the connection type decoded before the current connection type is decoded as the current connection type, and when the preceding connection type is a left type or a terminal type, the candidate set does not include a corner type, and when the preceding connection type is neither the left type nor the terminal type, The candidate set includes the corner type, and the corner type is a type in which two unprocessed faces are connected to both the right and left sides of the face to be processed along the path leading to the face to be processed in the processing order, and all of the faces connected to the vertices of the face to be processed, including the two unprocessed faces, are unprocessed; the left type is a type in which no unprocessed face is connected to the left side of the face to be processed along the path leading to the face to be processed in the processing order, and an unprocessed face is connected to the right side of the face to be processed; and the terminal type is a type in which no unprocessed face is connected to either the left or right side of the face to be processed along the path leading to the face to be processed in the processing order.

[0061] This may enable control of whether or not to include a corner type in the candidate set of the current connection type depending on whether the preceding connection type is one of the left type and the terminal type. Therefore, it may be possible to narrow down the candidate set of the current connection type depending on the preceding connection type. Therefore, it may be possible to reduce the amount of information required to identify the current connection type. Therefore, it may be possible to efficiently decode the connection type and reduce the amount of coding.

[0062] Furthermore, these comprehensive or specific aspects may be realized as a system, an apparatus, a method, an integrated circuit, a computer program, or a non-transitory recording medium such as a computer-readable CD-ROM, or may be realized as any combination of a system, an apparatus, a method, an integrated circuit, a computer program, and a recording medium.

[0063] <Expressions and Terms> The following expressions and terms are used herein.

[0064] (1) Three-dimensional Mesh A three-dimensional mesh is a collection of multiple faces, and represents, for example, a three-dimensional object. A three-dimensional mesh is mainly composed of vertex information, connectivity information, and attribute information. A three-dimensional mesh may be expressed as a polygon mesh or a mesh. A three-dimensional mesh may also vary over time. A three-dimensional mesh may include metadata related to the vertex information, connectivity information, and attribute information, and may also include other additional information.

[0065] (2) Vertex Information Vertex information is information indicating a vertex. For example, the vertex information indicates the position of a vertex in a three-dimensional space. Furthermore, a vertex corresponds to a vertex of a face that constitutes a three-dimensional mesh. Vertex information may be expressed as "geometry." Furthermore, vertex information may be expressed as position information.

[0066] (3) Connection Information Connection information is information that indicates connections between vertices. For example, connection information indicates connections for forming faces or edges of a three-dimensional mesh. Connection information may be expressed as "Connectivity." Connection information may also be expressed as face information.

[0067] (4) Attribute Information Attribute information is information that indicates attributes of a vertex or a face. For example, attribute information indicates attributes such as a color, an image, and a normal vector associated with a vertex or a face. Attribute information may be expressed as "texture."

[0068] (5) Faces A face is an element that constitutes a three-dimensional mesh. Specifically, a face is a polygon on a plane in three-dimensional space. For example, a face can be defined as a triangle in three-dimensional space.

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

[0070] (7) Bitstream: A bitstream corresponds to coded information. A bitstream may also be referred to as a stream, a coded bitstream, a compressed bitstream, or a coded signal.

[0071] (8) Encoding and Decoding The term encoding may be substituted with terms such as storing, including, writing, describing, signaling, sending, notifying, saving, or compressing, and these terms may be interchangeable. For example, encoding information may mean including the information in a bitstream. Also, encoding information into a bitstream may mean encoding the information to generate a bitstream that includes the encoded information.

[0072] Additionally, the term "decode" may be replaced with terms such as "read," "decode," "read," "load," "derive," "obtain," "receive," "extract," "reconstruct," "reconstruct," "decompress," or "decompress," and these terms may be interchangeable. For example, decoding information may mean obtaining information from a bitstream. Decoding information from a bitstream may mean decoding the bitstream to obtain information contained in the bitstream.

[0073] (9) Ordinal Numbers In the description, ordinal numbers such as first and second may be assigned to components, etc. These ordinal numbers may be changed as appropriate. Furthermore, new ordinal numbers may be assigned to components, etc., or removed. Furthermore, these ordinal numbers may be assigned to elements in order to identify them, and may not correspond to a meaningful order.

[0074] <Three-dimensional mesh> Fig. 1 is a conceptual diagram showing a three-dimensional mesh according to this embodiment. A 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. The three-dimensional mesh then represents a three-dimensional object. Each face may have a color or an image.

[0075] FIG. 2 is a conceptual diagram showing the basic elements of a three-dimensional mesh according to this embodiment. A three-dimensional mesh is composed of vertex information, connection information, and attribute information. The vertex information indicates the positions of the vertices of a face in three-dimensional space. The connection information indicates the connections between the vertices. A face can be identified by the vertex information and connection information. In other words, a colorless three-dimensional object is formed in three-dimensional space by the vertex information and connection information.

[0076] The attribute information may be associated with a vertex or a face. The attribute information associated with a vertex may be expressed as "Attribute Per Point." The attribute information associated with a vertex may indicate an attribute of the vertex itself, or may indicate an attribute of a face connected to the vertex.

[0077] For example, a color may be associated with a vertex as attribute information. The color associated with a vertex may be the color of the vertex itself, or the color of a face connected to the vertex. The color of a face may be the average of multiple colors associated with multiple vertices of the face. Furthermore, a normal vector may be associated with a vertex or a face as attribute information. Such a normal vector can represent the front and back of a face.

[0078] A two-dimensional image may be associated with a surface as attribute information. The two-dimensional image associated with a surface is also expressed as a texture image or an "Attribute Map." Information indicating mapping between the surface and the two-dimensional image may be associated with the surface as attribute information. Such information indicating mapping may be expressed as mapping information, vertex information of a texture image, or "Attribute UV Coordinate."

[0079] Furthermore, information such as color, image, and moving image used as attribute information may be expressed as "parametric space."

[0080] The attribute information allows texture to be reflected on the three-dimensional object. That is, a three-dimensional object having color is formed in three-dimensional space based on the vertex information, connection information, and attribute information.

[0081] In the above, the attribute information is associated with the vertices or faces, but it may also be associated with the edges.

[0082] 3 is a conceptual diagram illustrating mapping according to this embodiment. For example, a region of a two-dimensional image on a two-dimensional plane can be mapped onto a surface of a three-dimensional mesh in three-dimensional space. Specifically, coordinate information of the region in the two-dimensional image is associated with the surface of the three-dimensional mesh. As a result, an image of the mapped region in the two-dimensional image is reflected on the surface of the three-dimensional mesh.

[0083] By using the mapping, the 2D image used as attribute information can be separated from the 3D mesh. For example, in encoding the 3D mesh, the 2D image may be encoded by an image encoding method or a video encoding method.

[0084] <System Configuration> Fig. 4 is a block diagram showing an example of the configuration of a coding / decoding system according to this embodiment. In Fig. 4, the coding / decoding system includes a coding device 100 and a decoding device 200.

[0085] For example, the encoding device 100 obtains a three-dimensional mesh and encodes the three-dimensional mesh into a bitstream. Then, the encoding device 100 outputs the bitstream to the network 300. For example, the bitstream includes the encoded three-dimensional mesh and control information for decoding the encoded three-dimensional mesh. By encoding the three-dimensional mesh, information about the three-dimensional mesh is compressed.

[0086] The network 300 transmits a bitstream from the encoding device 100 to the decoding device 200. The network 300 may be the Internet, a wide area network (WAN), a local area network (LAN), or a combination of these. The network 300 is not necessarily limited to bidirectional communication, and may be a unidirectional communication network for terrestrial digital broadcasting, satellite broadcasting, or the like.

[0087] Furthermore, the network 300 can be replaced by a recording medium such as a DVD (Digital Versatile Disc) or a BD (Blu-Ray Disc (registered trademark)).

[0088] The decoding device 200 obtains a bitstream and decodes a three-dimensional mesh from the bitstream. By decoding the three-dimensional mesh, information about the three-dimensional mesh is expanded. For example, the decoding device 200 decodes the three-dimensional mesh according to a decoding method corresponding to the encoding method used by the encoding device 100 to encode the three-dimensional mesh. That is, the encoding device 100 and the decoding device 200 perform encoding and decoding according to encoding methods and decoding methods that correspond to each other.

[0089] The 3D mesh before encoding may also be referred to as an original 3D mesh, and the 3D mesh after decoding may also be referred to as a reconstructed 3D mesh.

[0090] 5 is a block diagram showing an example of the configuration of a coding device 100 according to this embodiment. For example, the coding device 100 includes a vertex information encoder 101, a connection information encoder 102, and an attribute information encoder 103.

[0091] The vertex information encoder 101 is an electrical circuit that encodes vertex information. For example, the vertex information encoder 101 encodes the vertex information into a bitstream according to a format defined for the vertex information.

[0092] The connection information encoder 102 is an electrical circuit that encodes the connection information, for example, the connection information encoder 102 encodes the connection information into a bitstream according to a format defined for the connection information.

[0093] The attribute information encoder 103 is an electric circuit that encodes the attribute information. For example, the attribute information encoder 103 encodes the attribute information into a bit stream in accordance with a format defined for the attribute information.

[0094] The vertex information, connectivity information, and attribute information may be coded using variable-length coding or fixed-length coding, such as Huffman coding or context-adaptive binary arithmetic coding (CABAC).

[0095] The vertex information encoder 101, the connection information encoder 102, and the attribute information encoder 103 may be integrated together, or each of the vertex information encoder 101, the connection information encoder 102, and the attribute information encoder 103 may be further subdivided into multiple components.

[0096] 6 is a block diagram showing another example of the configuration of the encoding device 100 according to this embodiment. For example, the encoding device 100 includes a pre-processor 104 and a post-processor 105 in addition to the configuration shown in FIG.

[0097] The preprocessor 104 is an electrical circuit that performs processing before encoding the vertex information, connectivity information, and attribute information. For example, the preprocessor 104 may perform a conversion process, a separation process, a multiplexing process, or the like on the 3D mesh before encoding. More specifically, for example, the preprocessor 104 may separate the vertex information, connectivity information, and attribute information from the 3D mesh before encoding.

[0098] The post-processor 105 is an electrical circuit that performs processing after the vertex information, connection information, and attribute information are encoded. For example, the post-processor 105 may perform conversion processing, separation processing, multiplexing processing, or the like on the encoded vertex information, connection information, and attribute information. More specifically, for example, the post-processor 105 may multiplex the encoded vertex information, connection information, and attribute information into a bitstream. Furthermore, for example, the post-processor 105 may further perform variable-length coding on the encoded vertex information, connection information, and attribute information.

[0099] 7 is a block diagram showing an example of the configuration of a decoding device 200 according to this embodiment. For example, the decoding device 200 includes a vertex information decoder 201, a connection information decoder 202, and an attribute information decoder 203.

[0100] The vertex information decoder 201 is an electrical circuit that decodes vertex information. For example, the vertex information decoder 201 decodes vertex information from a bitstream according to a format defined for the vertex information.

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

[0102] The attribute information decoder 203 is an electric circuit that decodes the attribute information. For example, the attribute information decoder 203 decodes the attribute information from the bitstream in accordance with a format defined for the attribute information.

[0103] The vertex information, connection information, and attribute information may be decoded using variable length decoding or fixed length decoding, which may correspond to Huffman coding, context-adaptive binary arithmetic coding (CABAC), or the like.

[0104] The vertex information decoder 201, the connection information decoder 202, and the attribute information decoder 203 may be integrated together, or each of the vertex information decoder 201, the connection information decoder 202, and the attribute information decoder 203 may be further subdivided into multiple components.

[0105] 8 is a block diagram showing another example of the configuration of the decoding device 200 according to this embodiment. For example, the decoding device 200 includes a pre-processor 204 and a post-processor 205 in addition to the configuration shown in FIG.

[0106] The preprocessor 204 is an electrical circuit that performs processing before decoding the vertex information, connection information, and attribute information. For example, the preprocessor 204 may perform conversion processing, separation processing, multiplexing processing, or the like on the bitstream before decoding the vertex information, connection information, and attribute information.

[0107] More specifically, for example, the preprocessor 204 may separate a sub-bitstream corresponding to vertex information, a sub-bitstream corresponding to connectivity information, and a sub-bitstream corresponding to attribute information from the bitstream. Also, for example, the preprocessor 204 may perform variable-length decoding on the bitstream in advance before decoding the vertex information, connectivity information, and attribute information.

[0108] The post-processor 205 is an electrical circuit that performs processing after the vertex information, connection information, and attribute information are decoded. For example, the post-processor 205 may perform conversion processing, separation processing, multiplexing processing, or the like on the decoded vertex information, connection information, and attribute information. More specifically, for example, the post-processor 205 may multiplex the decoded vertex information, connection information, and attribute information onto a three-dimensional mesh.

[0109] <Bitstream> Vertex information, connection information, and attribute information are coded and stored in a bitstream. The relationship between this information and the bitstream is shown below.

[0110] 9 is a conceptual diagram showing an example of the configuration of a bitstream according to this embodiment. In this example, connection information, vertex information, and attribute information are integrated in the bitstream. For example, the connection information, vertex information, and attribute information may be included in a single file.

[0111] Furthermore, multiple portions of this information may be stored sequentially, such as a first portion of connection information, a first portion of vertex information, a first portion of attribute information, a second portion of connection information, a second portion of vertex information, a second portion of attribute information, etc. These multiple portions may correspond to multiple portions that are different in time, multiple portions that are different in space, or multiple different faces.

[0112] Furthermore, the storage order of the connection information, vertex information, and attribute information is not limited to the above example, and a storage order different from the above example may be used.

[0113] 10 is a conceptual diagram showing another example of the configuration of a bitstream according to this embodiment. In this example, a plurality of files are included in the bitstream, 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 among the connection information, vertex information, and attribute information may be included in one file, and the remaining type of information may be included in another file.

[0114] Alternatively, the information may be split and stored in more files. For example, multiple pieces of connectivity information may be stored in multiple files, multiple pieces of vertex information may be stored in multiple files, or multiple pieces of attribute information may be stored in multiple files. These multiple pieces may correspond to multiple temporally different pieces, multiple spatially different pieces, or multiple different faces.

[0115] Furthermore, the storage order of the connection information, vertex information, and attribute information is not limited to the above example, and a storage order different from the above example may be used.

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

[0117] Here, a sub-bitstream containing connection information, a sub-bitstream containing vertex information, and a sub-bitstream containing attribute information are shown, but the storage format is not limited to this example.

[0118] For example, two types of information among the connection information, vertex information, and attribute information may be included in one sub-bitstream, and the remaining type of information may be included in another sub-bitstream. Specifically, attribute information of a two-dimensional image or the like may be stored in a sub-bitstream that complies with an image coding method, separate from the sub-bitstreams of the connection information and vertex information.

[0119] Each sub-bitstream may also include multiple files, and multiple pieces of connectivity information may be stored in multiple files, multiple pieces of vertex information may be stored in multiple files, or multiple pieces of attribute information may be stored in multiple files.

[0120] 9, 10, and 11, and a storage order different from the above examples may be used. For example, the vertex information, connection information, and attribute information may be stored in the bitstream in this order. Alternatively, the connection information, connection information, and attribute information may be stored in the bitstream in any of the following orders: 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.

[0121] Furthermore, each of the connection information, vertex information, and attribute information may be divided into a plurality of data, and the plurality of data may be stored in a cyclical or random order within the bitstream.

[0122] 12 is a block diagram showing a specific example of an encoding / decoding system according to this embodiment. In FIG. 12, the encoding / decoding system includes a three-dimensional data encoding system 110, a three-dimensional data decoding system 210, and an external connector 310.

[0123] The three-dimensional data encoding system 110 includes a controller 111, an input / output processor 112, a three-dimensional data encoder 113, a three-dimensional data generator 115, and a system multiplexer 114. The three-dimensional data decoding system 210 includes a controller 211, an input / output processor 212, a three-dimensional data decoder 213, a system demultiplexer 214, a presenter 215, and a user interface 216.

[0124] In the three-dimensional data encoding system 110, sensor data is input from a sensor terminal to a three-dimensional data generator 115. The three-dimensional data generator 115 generates three-dimensional data, such as point cloud data or mesh data, from the sensor data and inputs it to a three-dimensional data encoder 113.

[0125] For example, the three-dimensional data generator 115 generates vertex information, and generates connection information and attribute information corresponding to the vertex information. The three-dimensional data generator 115 may process the vertex information when generating the connection information and attribute information. For example, the three-dimensional data generator 115 may reduce the amount of data by deleting duplicate vertices, or may transform the vertex information (such as by shifting its position, rotating it, or normalizing it). The three-dimensional data generator 115 may also render the attribute information.

[0126] Furthermore, although the three-dimensional data generator 115 is a component of the three-dimensional data encoding system 110 in FIG. 12, it may be arranged externally and independently of the three-dimensional data encoding system 110.

[0127] The sensor terminal that provides the sensor data for generating the three-dimensional data may be, for example, a moving body such as an automobile, a flying object such as an airplane, a mobile terminal, a camera, etc. Furthermore, a distance sensor such as a LIDAR, a millimeter wave radar, an infrared sensor, or a range finder, a stereo camera, or a combination of multiple monocular cameras may also be used as the sensor terminal.

[0128] The sensor data may be the distance (position) of the object, monocular camera images, stereo camera images, color, reflectance, sensor attitude, orientation, gyro, sensing position (GPS information or altitude), speed, acceleration, sensing time, temperature, air pressure, humidity, or magnetism.

[0129] The three-dimensional data encoder 113 corresponds to the encoding device 100 shown in FIG. 5 and other figures. For example, the three-dimensional data encoder 113 encodes three-dimensional data to generate encoded data. The three-dimensional data encoder 113 also generates control information when encoding the three-dimensional data. The three-dimensional data encoder 113 then inputs the encoded data together with the control information to the system multiplexer 114.

[0130] The encoding method for the three-dimensional data may be an encoding method using geometry or an encoding method using a video codec. Here, the encoding method using geometry may also be referred to as a geometry-based encoding method. The encoding method using a video codec may also be referred to as a video-based encoding method.

[0131] The system multiplexer 114 multiplexes the encoded data and control information input from the 3D data encoder 113 to generate multiplexed data using a specified multiplexing method. The system multiplexer 114 may multiplex other media such as video, audio, subtitles, application data, or document files, or reference time information, along with the encoded data and control information of the 3D data. Furthermore, the system multiplexer 114 may multiplex attribute information related to the sensor data or the 3D data.

[0132] For example, the multiplexed data may have a file format for storage or a packet format for transmission. As these formats, ISOBMFF or a format based on ISOBMFF may be used. Also, MPEG-DASH, MMT, MPEG-2 TS Systems, RTP, or the like may be used.

[0133] The multiplexed data is then output as a transmission signal to the external connector 310 by the input / output processor 112. The multiplexed data may be transmitted as a transmission signal by wire or wirelessly. Alternatively, the multiplexed data is stored in an internal memory or a storage device. The multiplexed data may be transmitted to a cloud server via the Internet or may be stored in an external storage device.

[0134] For example, the transmission or storage of the multiplexed data is performed by a method according to the medium for transmission or storage, such as broadcasting or communication. The communication protocol may be http, ftp, TCP, UDP, IP, or a combination thereof. Furthermore, a pull-type communication method or a push-type communication method may be used.

[0135] For wired transmission, Ethernet (registered trademark), USB, RS-232C, HDMI (registered trademark), coaxial cable, etc. may be used. For wireless transmission, 3GPP (registered trademark), 3G / 4G / 5G defined by IEEE, wireless LAN, Wi-Fi, Bluetooth, or millimeter wave may be used. For broadcasting, for example, DVB-T2, DVB-S2, DVB-C2, ATSC3.0, or ISDB-S3 may be used.

[0136] The sensor data may be input to the three-dimensional data generator 115 or the system multiplexer 114. The three-dimensional data or encoded data may be output as a transmission signal directly to the external connector 310 via the input / output processor 112. The transmission signal output from the three-dimensional data encoding system 110 is input to the three-dimensional data decoding system 210 via the external connector 310.

[0137] Furthermore, each operation of the three-dimensional data encoding system 110 may be controlled by a controller 111 that executes an application program.

[0138] In the three-dimensional data decoding system 210, a transmission signal is input to an input / output processor 212. The input / output processor 212 decodes multiplexed data having a file format or a packet format from the transmission signal and inputs the multiplexed data to a system demultiplexer 214. The system demultiplexer 214 obtains coded data and control information from the multiplexed data and inputs them to a three-dimensional data decoder 213. The system demultiplexer 214 may extract other media or reference time information from the multiplexed data.

[0139] The three-dimensional data decoder 213 corresponds to the decoding device 200 shown in Fig. 7 etc. For example, the three-dimensional data decoder 213 decodes three-dimensional data from the encoded data based on a predefined encoding method. The three-dimensional data is then presented to the user by the presenter 215.

[0140] Additionally, additional information such as sensor data may be input to the presenter 215. The presenter 215 may present three-dimensional data based on the additional information. Additionally, a user instruction may be input from a user terminal to the user interface 216. Then, the presenter 215 may present three-dimensional data based on the input instruction.

[0141] The input / output processor 212 may acquire the three-dimensional data and the encoded data from the external connector 310 .

[0142] Furthermore, each operation of the three-dimensional data decoding system 210 may be controlled by a controller 211 that executes an application program.

[0143] 13 is a conceptual diagram showing an example of the configuration of point cloud data according to this embodiment. The point cloud data is data of a group of points representing a three-dimensional object.

[0144] Specifically, a point cloud is made up of a plurality of points, and has position information indicating the three-dimensional coordinate position of each point and attribute information indicating the attribute of each point. The position information is also expressed as geometry.

[0145] The type of attribute information may be, for example, color, reflectance, etc. One point may be associated with attribute information of one type, one point may be associated with attribute information of multiple different types, or one point may be associated with attribute information having multiple values ​​for the same type.

[0146] 14 is a conceptual diagram showing an example of a data file of point cloud data according to this embodiment. This example shows a case where there is a one-to-one correspondence between position information items and attribute information items, and shows position information and attribute information for N points that make up the point cloud data. In this example, the position information is information indicating a three-dimensional coordinate position using three axes, x, y, and z, and the attribute information is information indicating a color using RGB. A PLY file or the like can be used as a representative data file for point cloud data.

[0147] 15 is a conceptual diagram showing an example of the configuration of mesh data according to this embodiment. Mesh data is data used in CG (Computer Graphics) and the like, and is three-dimensional mesh data that shows the three-dimensional shape of an object using multiple surfaces. Each surface is also expressed as a polygon, and has a polygonal shape such as a triangle or a rectangle.

[0148] Specifically, a 3D mesh is composed of a plurality of points constituting a point cloud, as well as a plurality of edges and a plurality of faces. Each point is also expressed as a vertex or a position. Each edge corresponds to a line segment connected by two vertices. Each face corresponds to an area surrounded by three or more edges.

[0149] Furthermore, a three-dimensional mesh has position information indicating the three-dimensional coordinate positions of vertices. The position information is also expressed as vertex information or geometry. A three-dimensional mesh also has connection information indicating the relationship between multiple vertices that make up an edge or a face. The connection information is also expressed as connectivity. A three-dimensional mesh also has attribute information indicating the attributes of the vertices, edges, or faces. The attribute information in a three-dimensional mesh is also expressed as texture.

[0150] For example, the attribute information may indicate the color, reflectance, or normal vector for a vertex, edge, or face. The direction of the normal vector may represent the front and back of the face.

[0151] The mesh data may be stored in a data file format such as an object file.

[0152] 16 is a conceptual diagram showing an example of a data file of mesh data according to this embodiment. In this example, the data file includes position information G(1) to G(N) of N vertices that make up the three-dimensional mesh, and attribute information A1(1) to A1(N) of the N vertices. Also, in this example, M pieces of attribute information A2(1) to A2(M) are included. The attribute information items do not need to correspond one-to-one to vertices or faces. Furthermore, attribute information need not exist.

[0153] The connection information is represented by a combination of vertex indices. n[1, 3, 4] indicates a triangular face formed by three vertices, n=1, n=3, and n=4. Also, m[2, 4, 6] indicates that the attribute information of m=2, m=4, and m=6 corresponds to the three vertices, respectively.

[0154] Furthermore, the actual contents of the attribute information may be written in a separate file. A pointer to that content may be associated with a vertex, a face, or the like. For example, attribute information indicating an image for a face may be stored in a two-dimensional attribute map file. The file name of the attribute map and two-dimensional coordinate values ​​in the attribute map may be written in attribute information A2(1) to A2(M). The method of specifying attribute information for a face is not limited to these methods, and any method may be used.

[0155] 17 is a conceptual diagram showing types of three-dimensional data according to this embodiment. Point cloud data and mesh data may represent static objects or dynamic objects. A static object is an object that does not change over time, and a dynamic object is an object that changes over time. A static object may correspond to three-dimensional data for any point in time.

[0156] For example, point cloud data for a given point in time may be referred to as a PCC frame, mesh data for a given point in time may be referred to as a mesh frame, and PCC frames and mesh frames may be simply referred to as frames.

[0157] The area of ​​the object may be limited to a certain range, as in normal video data, or may not be limited, as in map data. The density of points or surfaces may be determined in various ways. Sparse point cloud data or sparse mesh data may be used, or dense point cloud data or dense mesh data may be used.

[0158] Next, encoding and decoding of a point cloud or a three-dimensional mesh will be described. The device, process, or syntax for encoding and decoding vertex information of a three-dimensional mesh in the present disclosure may be applied to encoding and decoding of a point cloud. The device, process, or syntax for encoding and decoding of a point cloud in the present disclosure may be applied to encoding and decoding vertex information of a three-dimensional mesh.

[0159] Furthermore, a device, process, or syntax for encoding and decoding attribute information of a point cloud in the present disclosure may be applied to encoding and decoding connectivity information or attribute information of a three-dimensional mesh.Furthermore, a device, process, or syntax for encoding and decoding connectivity information or attribute information of a three-dimensional mesh in the present disclosure may be applied to encoding and decoding attribute information of a point cloud.

[0160] Furthermore, at least some of the processing may be shared between the encoding and decoding of point cloud data and the encoding and decoding of mesh data, thereby reducing the scale of the circuit and software program.

[0161] 18 is a block diagram showing an example configuration of a three-dimensional data encoder 113 according to this embodiment. In this example, the three-dimensional 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 correspond to the vertex information encoder 101, the attribute information encoder 103, the post-processor 105, etc. in FIG.

[0162] In this example, the three-dimensional data encoder 113 encodes the three-dimensional data according to a geometry-based encoding method, which takes into account the three-dimensional structure. In addition, in the geometry-based encoding method, attribute information is encoded using configuration information obtained in encoding the vertex information.

[0163] Specifically, first, vertex information, attribute information, and metadata included in three-dimensional data generated from sensor data are input to a vertex information encoder 121, an attribute information encoder 122, and a metadata encoder 123, respectively. Here, connectivity information included in the three-dimensional data may be treated in the same way as attribute information. In addition, in the case of point cloud data, position information may be treated as vertex information.

[0164] The vertex information encoder 121 encodes the vertex information into compressed vertex information and outputs the compressed vertex information as encoded data to the multiplexer 124. The vertex information encoder 121 also generates metadata for the compressed vertex information and outputs it to the multiplexer 124. The vertex information encoder 121 also generates configuration information and outputs it to the attribute information encoder 122.

[0165] The attribute information encoder 122 uses the configuration 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. The attribute information encoder 122 also generates metadata of the compressed attribute information and outputs it to the multiplexer 124.

[0166] The metadata encoder 123 encodes compressible metadata into compressed metadata and outputs the compressed metadata as encoded data to the multiplexer 124. The metadata encoded by the metadata encoder 123 may be used to encode vertex information and attribute information.

[0167] The multiplexer 124 multiplexes the compressed vertex information, the compressed vertex information metadata, the compressed attribute information, the compressed attribute information metadata, and the compressed metadata into a bitstream, and then inputs the bitstream to the system layer.

[0168] 19 is a block diagram showing an example configuration of a three-dimensional data decoder 213 according to this embodiment. In this example, the three-dimensional data decoder 213 includes a vertex information decoder 221, an attribute information decoder 222, a metadata decoder 223, and a demultiplexer 224. The vertex information decoder 221, the attribute information decoder 222, and the demultiplexer 224 may correspond to the vertex information decoder 201, the attribute information decoder 203, the preprocessor 204, and the like in FIG.

[0169] In this example, the three-dimensional data decoder 213 decodes three-dimensional data according to a geometry-based encoding method. The three-dimensional structure is taken into consideration in the decoding according to the geometry-based encoding method. Furthermore, in the decoding according to the geometry-based encoding method, attribute information is decoded using configuration information obtained in decoding vertex information.

[0170] Specifically, first, a bitstream is input from the system layer to a demultiplexer 224. The demultiplexer 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 a vertex information decoder 221. The compressed attribute information and compressed attribute information metadata are input to an attribute information decoder 222. The metadata is input to a metadata decoder 223.

[0171] The vertex information decoder 221 decodes vertex information from the compressed vertex information using metadata of the compressed vertex information. The vertex information decoder 221 also generates configuration information and outputs it to the attribute information decoder 222. The attribute information decoder 222 decodes attribute information from the compressed attribute information using the configuration information generated by the vertex information decoder 221 and the metadata of the compressed attribute information. The metadata decoder 223 decodes metadata from the compressed metadata. The metadata decoded by the metadata decoder 223 may be used to decode the vertex information and the attribute information.

[0172] Thereafter, the vertex information, attribute information, and metadata are output as three-dimensional data from the three-dimensional data decoder 213. Note that, for example, this metadata is metadata of the vertex information and attribute information, and can be used in an application program.

[0173] 20 is a block diagram showing another example configuration of the three-dimensional data encoder 113 according to the present embodiment. In this example, the three-dimensional data encoder 113 includes a vertex image generator 131, an attribute image generator 132, a metadata generator 133, a video encoder 134, a metadata encoder 123, and a multiplexer 124. The vertex image generator 131, the attribute image generator 132, and the video encoder 134 may correspond to the vertex information encoder 101 and the attribute information encoder 103 in FIG. 6 , etc.

[0174] In this example, the 3D data encoder 113 encodes the 3D data according to a video-based encoding method. In encoding according to the video-based encoding method, multiple 2D images are generated from the 3D data, and the multiple 2D images are encoded according to a video encoding method. Here, the video encoding method may be High Efficiency Video Coding (HEVC), Versatile Video Coding (VVC), or the like.

[0175] Specifically, first, vertex information and attribute information included in three-dimensional data generated from sensor data are input to a metadata generator 133. The vertex information and attribute information are then input to a vertex image generator 131 and an attribute image generator 132, respectively. The metadata included in the three-dimensional data is then input to a metadata encoder 123. Here, connectivity information included in the three-dimensional data may be treated in the same way as attribute information. In the case of point cloud data, position information may be treated as vertex information.

[0176] The metadata generator 133 generates map information of a plurality of two-dimensional images from the vertex information and attribute information, and inputs the map information to the vertex image generator 131, the attribute image generator 132, and the metadata encoder 123.

[0177] The vertex image generator 131 generates a vertex image based on the vertex information and map information, and inputs the generated image to the video encoder 134. The attribute image generator 132 generates an attribute image based on the attribute information and map information, and inputs the generated image to the video encoder 134.

[0178] The video encoder 134 encodes the vertex images and attribute images into compressed vertex information and compressed attribute information, respectively, in accordance with a video encoding method, and outputs the compressed vertex information and compressed attribute information as encoded data to the multiplexer 124. The video encoder 134 also generates metadata for the compressed vertex information and metadata for the compressed attribute information, and outputs them to the multiplexer 124.

[0179] The metadata encoder 123 encodes the compressible metadata into compressed metadata and outputs the compressed metadata as encoded data to the multiplexer 124. The compressible metadata includes map information. The metadata encoded by the metadata encoder 123 may also be used to encode vertex information and attribute information.

[0180] The multiplexer 124 multiplexes the compressed vertex information, the compressed vertex information metadata, the compressed attribute information, the compressed attribute information metadata, and the compressed metadata into a bitstream, and then inputs the bitstream to the system layer.

[0181] 21 is a block diagram showing another example configuration 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, a video decoder 234, a metadata decoder 223, and a demultiplexer 224. The vertex information generator 231, the attribute information generator 232, and the video decoder 234 may correspond to the vertex information decoder 201 and the attribute information decoder 203 in FIG. 8, etc.

[0182] In this example, the 3D data decoder 213 decodes the 3D data according to a video-based coding method. In the decoding according to the video-based coding method, a plurality of 2D images are decoded according to a video coding method, and 3D data is generated from the plurality of 2D images. Here, the video coding method may be High Efficiency Video Coding (HEVC), Versatile Video Coding (VVC), or the like.

[0183] Specifically, first, a bitstream is input from the system layer to the demultiplexer 224. The demultiplexer 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, compressed vertex information metadata, compressed attribute information, and compressed attribute information metadata are input to the video decoder 234. The compressed metadata is input to the metadata decoder 223.

[0184] The video decoder 234 decodes the vertex images in accordance with the video encoding method. At this time, the video decoder 234 decodes the vertex images from the compressed vertex information using the metadata of the compressed vertex information. Then, the video decoder 234 inputs the vertex images to the vertex information generator 231. The video decoder 234 also decodes the attribute images in accordance with the video encoding method. At this time, the video decoder 234 decodes the attribute images from the compressed attribute information using the metadata of the compressed attribute information. Then, the video decoder 234 inputs the attribute images to the attribute information generator 232.

[0185] The metadata decoder 223 decodes metadata from the compressed metadata. The metadata decoded by the metadata decoder 223 includes map information used to generate vertex information and attribute information. The metadata decoded by the metadata decoder 223 may also be used to decode vertex images and attribute images.

[0186] The vertex information generator 231 reproduces vertex information from the vertex image in accordance with the map information included in the metadata decoded by the metadata decoder 223. The attribute information generator 232 reproduces attribute information from the attribute image in accordance with the map information included in the metadata decoded by the metadata decoder 223.

[0187] Thereafter, the vertex information, attribute information, and metadata are output as three-dimensional data from the three-dimensional data decoder 213. Note that, for example, this metadata is metadata of the vertex information and attribute information, and can be used in an application program.

[0188] Fig. 22 is a conceptual diagram showing a specific example of encoding processing according to this embodiment. Fig. 22 shows a three-dimensional data encoder 113 and a description encoder 148. In this example, the three-dimensional data encoder 113 includes a two-dimensional data encoder 141 and a mesh data encoder 142. The two-dimensional data encoder 141 includes a texture encoder 143. The mesh data encoder 142 includes a vertex information encoder 144 and a connection information encoder 145.

[0189] The vertex information encoder 144, the connection information encoder 145, and the texture encoder 143 may correspond to the vertex information encoder 101, the connection information encoder 102, and the attribute information encoder 103 in FIG.

[0190] For example, the two-dimensional data encoder 141 operates as a texture encoder 143 and generates a texture file by encoding the texture corresponding to the attribute information as two-dimensional data according to an image encoding method or a video encoding method.

[0191] The mesh data encoder 142 also operates as a vertex information encoder 144 and a connectivity information encoder 145, and generates a mesh file by encoding the vertex information and connectivity information. The mesh data encoder 142 may further encode mapping information for textures. The encoded mapping information may then be included in the mesh file.

[0192] The description encoder 148 also generates a description file by encoding a description corresponding to metadata such as text data. The description encoder 148 may encode the description at the system layer. For example, the description encoder 148 may be included in the system multiplexer 114 of FIG. 12 .

[0193] The above operations generate a bitstream containing texture files, mesh files, and description files, which may be multiplexed into the bitstream in file formats such as glTF (Graphics Language Transmission Format) or USD (Universal Scene Description).

[0194] The three-dimensional data encoder 113 may include two mesh data encoders as the mesh data encoder 142. For example, one mesh data encoder encodes vertex information and connectivity information of a static three-dimensional mesh, and the other mesh data encoder encodes vertex information and connectivity information of a dynamic three-dimensional mesh.

[0195] Correspondingly, two mesh files may then be included in the bitstream, for example one mesh file corresponding to a static 3D mesh and another mesh file corresponding to a dynamic 3D mesh.

[0196] Furthermore, the static three-dimensional mesh may be a three-dimensional mesh of an intraframe coded using intraprediction, and the dynamic three-dimensional mesh may be a three-dimensional mesh of an interframe coded using interprediction. Furthermore, information on the dynamic three-dimensional mesh may be differential information between vertex information or connectivity information of the three-dimensional mesh of an intraframe and vertex information or connectivity information of the three-dimensional mesh of an interframe.

[0197] Fig. 23 is a conceptual diagram showing a specific example of the decoding process according to this embodiment. Fig. 23 shows a three-dimensional data decoder 213, a description decoder 248, and a renderer 247. In this example, the three-dimensional data decoder 213 includes a two-dimensional data decoder 241, a mesh data decoder 242, and a mesh reconstructor 246. The two-dimensional 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.

[0198] The vertex information decoder 244, the connection information decoder 245, the texture decoder 243, and the mesh reconstructor 246 may correspond to the vertex information decoder 201, the connection information decoder 202, the attribute information decoder 203, and the post-processor 205 in Fig. 8. The presenter 247 may correspond to the presenter 215 in Fig. 12.

[0199] For example, the two-dimensional data decoder 241 operates as a texture decoder 243, and decodes the texture corresponding to the attribute information from the texture file as two-dimensional data in accordance with an image coding method or a video coding method.

[0200] The mesh data decoder 242 also operates as a vertex information decoder 244 and a connectivity information decoder 245 to decode vertex information and connectivity information from the mesh file. The mesh data decoder 242 may further decode mapping information for textures from the mesh file.

[0201] The description decoder 248 also decodes descriptions corresponding to metadata such as text data from the description file. The description decoder 248 may decode the descriptions at the system layer. For example, the description decoder 248 may be included in the system demultiplexer 214 of FIG. 12 .

[0202] The mesh reconstructor 246 reconstructs a 3D mesh from the vertex information, connectivity information, and textures according to the description. The renderer 247 renders and outputs the 3D mesh according to the description.

[0203] Through the above operations, a 3D mesh is reconstructed and output from a bitstream containing a texture file, a mesh file, and a description file.

[0204] The three-dimensional data decoder 213 may include two mesh data decoders as the mesh data decoder 242. For example, one mesh data decoder decodes vertex information and connectivity information of a static three-dimensional mesh, and the other mesh data decoder decodes vertex information and connectivity information of a dynamic three-dimensional mesh.

[0205] Correspondingly, two mesh files may then be included in the bitstream, for example one mesh file corresponding to a static 3D mesh and another mesh file corresponding to a dynamic 3D mesh.

[0206] Furthermore, the static three-dimensional mesh may be a three-dimensional mesh of an intraframe coded using intraprediction, and the dynamic three-dimensional mesh may be a three-dimensional mesh of an interframe coded using interprediction. Furthermore, information on the dynamic three-dimensional mesh may be differential information between vertex information or connectivity information of the three-dimensional mesh of an intraframe and vertex information or connectivity information of the three-dimensional mesh of an interframe.

[0207] A dynamic 3D mesh coding method is sometimes called DMC (Dynamic Mesh Coding), and a video-based dynamic 3D mesh coding method is sometimes called V-DMC (Video-based Dynamic Mesh Coding).

[0208] The point cloud encoding method is sometimes called PCC (Point Cloud Compression). The point cloud video-based encoding method is sometimes called V-PCC (Video-based Point Cloud Compression). The point cloud geometry-based encoding method is sometimes called G-PCC (Geometry-based Point Cloud Compression).

[0209] <Implementation Example> Fig. 24 is a block diagram showing an implementation example of the encoding device 100 according to this embodiment. The encoding device 100 includes a circuit 151 and a memory 152. For example, multiple components of the encoding device 100 shown in Fig. 5 etc. are implemented by the circuit 151 and memory 152 shown in Fig. 24.

[0210] The circuit 151 is a circuit that performs information processing and is a circuit that can access the memory 152. For example, the circuit 151 is a dedicated or general-purpose electric circuit that encodes a three-dimensional mesh. The circuit 151 may be a processor such as a CPU. Alternatively, the circuit 151 may be a collection of multiple electric circuits.

[0211] The memory 152 is a dedicated or general-purpose memory that stores information used by the circuit 151 to encode the three-dimensional mesh. The memory 152 may be an electric circuit and may be connected to the circuit 151. The memory 152 may also be included in the circuit 151. The memory 152 may also be a collection of multiple electric circuits. The memory 152 may also be a magnetic disk, an optical disk, or the like, and may also be expressed as a storage, a recording medium, or the like. The memory 152 may also be a non-volatile memory or a volatile memory.

[0212] For example, the memory 152 may store a three-dimensional mesh or a bitstream, or may store a program for the circuit 151 to encode the three-dimensional mesh.

[0213] Note that the encoding device 100 does not necessarily have to implement all of the components shown in Figure 5 and the like, and does not necessarily have to perform all of the processes shown here. Some of the components shown in Figure 5 and the like may be included in another device, and some of the processes shown here may be executed by another device. Furthermore, the encoding device 100 may implement any combination of the components of the present disclosure, and may perform any combination of the processes of the present disclosure.

[0214] Fig. 25 is a block diagram showing an example implementation of a decoding device 200 according to this embodiment. The decoding device 200 includes a circuit 251 and a memory 252. For example, multiple components of the decoding device 200 shown in Fig. 7 and other figures are implemented by the circuit 251 and memory 252 shown in Fig. 25.

[0215] The circuit 251 is a circuit that performs information processing and is a circuit that can access the memory 252. For example, the circuit 251 is a dedicated or general-purpose electric circuit that decodes a three-dimensional mesh. The circuit 251 may be a processor such as a CPU. Alternatively, the circuit 251 may be a collection of multiple electric circuits.

[0216] The memory 252 is a dedicated or general-purpose memory that stores information for the circuit 251 to decode the 3D mesh. The memory 252 may be an electric circuit and may be connected to the circuit 251. The memory 252 may also be included in the circuit 251. The memory 252 may also be a collection of multiple electric circuits. The memory 252 may also be a magnetic disk, an optical disk, or the like, and may also be expressed as a storage, a recording medium, or the like. The memory 252 may also be a non-volatile memory or a volatile memory.

[0217] For example, the memory 252 may store a three-dimensional mesh or a bitstream, or may store a program for the circuit 251 to decode the three-dimensional mesh.

[0218] Note that the decoding device 200 does not necessarily have to implement all of the components shown in Figure 7 and the like, and does not necessarily have to perform all of the processes shown here. Some of the components shown in Figure 7 and the like may be included in another device, and some of the processes shown here may be executed by another device. Furthermore, the decoding device 200 may implement any combination of the components of the present disclosure, and may perform any combination of the processes of the present disclosure.

[0219] The encoding method and the decoding method including the steps performed by each component of the encoding device 100 and the decoding device 200 of the present disclosure may be executed by any device or system. For example, part or all of the encoding method and the decoding method may be executed by a computer including a processor, a memory, an input / output circuit, etc. In this case, the encoding method and the decoding method may be executed by the computer executing a program for causing the computer to execute the encoding method and the decoding method.

[0220] Alternatively, the program or the bitstream may be recorded on a non-transitory computer-readable recording medium such as a CD-ROM.

[0221] An example of a program may be a bitstream. For example, a bitstream including an encoded three-dimensional mesh includes syntax elements for causing the decoding device 200 to decode the three-dimensional mesh. The bitstream then causes the decoding device 200 to decode the three-dimensional mesh according to the syntax elements included in the bitstream. Thus, the bitstream may play a role similar to that of a program.

[0222] The bitstream may be an encoded bitstream containing the encoded 3D mesh, or may be a multiplexed bitstream containing the encoded 3D mesh and other information.

[0223] Furthermore, each component of the encoding device 100 and the decoding device 200 may be configured with dedicated hardware, general-purpose hardware that executes the above-mentioned programs, or a combination of these. The general-purpose hardware may be configured with a memory in which the programs are recorded and a general-purpose processor that reads and executes the programs from the memory. Here, the memory may be a semiconductor memory or a hard disk, and the general-purpose processor may be a CPU.

[0224] Furthermore, the dedicated hardware may be configured with a memory, a dedicated processor, etc. For example, the dedicated processor may execute the encoding method and the decoding method by referring to a memory for recording data.

[0225] Furthermore, as described above, each component of the encoding device 100 and the decoding device 200 may be an electric circuit. These electric circuits may form a single electric circuit as a whole, or each may be a separate electric circuit. Furthermore, these electric circuits may correspond to dedicated hardware, or may correspond to general-purpose hardware that executes the above-mentioned programs, etc. Furthermore, the encoding device 100 and the decoding device 200 may be implemented as an integrated circuit.

[0226] Furthermore, the encoding device 100 may be a transmitting device that transmits the three-dimensional mesh, and the decoding device 200 may be a receiving device that receives the three-dimensional mesh.

[0227] Entropy Encoding and Decoding A 3D model digitally represents an object so that a user can explore it by temporarily rendering it using zoom, pan, and rotation in three dimensions. One way to construct such a representation is to build a 3D mesh using polygons, where the model stores the positions of the polygon vertices, their connectivity to each other, and their associated attributes (normals, UV patches, etc.). Examples of polygons are triangles and quadrilaterals.

[0228] Storing all this information in uncompressed form would require very large storage capacity and therefore very large bandwidth for transmission. The polygons that form the mesh often have repeating patterns and similar attributes, especially in temporal and spatial neighborhoods. These repetitions can be used to develop efficient encoding and decoding methods for storage and transmission.

[0229] Fig. 26 is a block diagram showing another example of the configuration of a coding / decoding system according to this embodiment. As shown in Fig. 26, the coding / decoding system includes a pair of a coding device 100 and a decoding device 200. The coding / decoding system accepts a three-dimensional mesh input in the form of three-dimensional coordinates of vertices (vertex information), connectivity (connection information), and associated attributes (attribute information).

[0230] The encoding device 100 encodes all relevant information into a bitstream (compressed bitstream), which may consist of multiple bitstreams. The bitstream is transmitted to the decoding device 200 via a transmission channel. The decoding device 200 decodes the bitstream and generates a 3D model (3D mesh) using the 3D coordinates, connectivity, and associated attributes of the decoded vertices.

[0231] 27 is a block diagram showing yet another example of the configuration of the encoding device 100 according to this embodiment. In this example, the encoding device 100 includes a preprocessor 521 and an encoding processor 522.

[0232] The preprocessor 521 reads the 3D mesh and processes it to extract a base mesh, displacement vectors, texture data, and attribute maps, which are then passed to the encoding processor 522. The encoding processor 522 compresses the base mesh, displacement vectors, texture data, and attribute maps separately, and combines them to generate a bitstream.

[0233] 28 is a block diagram showing yet another example of the configuration of the decoding device 200 according to this embodiment. In this example, the decoding device 200 includes a decoding processor 622 and a post-processor 623.

[0234] The decoder 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 processes the base mesh according to the displacement vectors and attribute maps to generate a 3D mesh.

[0235] For example, in an encoding method, the original 3D mesh is first decimated to obtain a base mesh containing fewer vertices, in which the vertices may not be in their original positions and the decimation may change the connectivity of the vertices.

[0236] The base mesh is then refined over multiple iterations, adding new vertices between the existing connected vertices of the base mesh. Displacement vectors between the refined 3D mesh and the input 3D mesh are then calculated. The displacement vectors are used by the decoding device 200 to place the refinement vertices at their predicted positions.

[0237] This information is converted into wavelet coefficients using a wavelet transform and coded using a video codec by mapping the coefficients onto the planes of the video frame. The textures in the 3D mesh and the maps used to combine all the information for reconstruction are coded separately and then combined into one bitstream.

[0238] The decoding device 200 first decodes a base mesh. Over multiple iterations, the base mesh is refined by adding new vertices between the existing connected vertices of the base mesh. After this, all vertices and connectivity are obtained. Again, vertices may be at different locations than their corresponding vertices in the input 3D mesh.

[0239] A video decoder is then used to decode the wavelet coefficients and apply an inverse wavelet transform to reconstruct the displacement vectors. Using this information, vertices are placed at their predicted positions, and textures are mapped onto the surfaces created by the vertices and their connectivity, completely decoding the 3D mesh.

[0240] Recent developments in 3D data acquisition, modeling, and rendering have fueled the application of 3D content on various platforms and devices. 3D media is a very convenient way for users to enjoy highly immersive experiences in fields such as digital entertainment, healthcare, and robotics.

[0241] A 3D mesh, used for example in rendering immersive media, is composed of a number of polygons that represent the boundary surfaces of a volumetric object. Each polygon contains vertices in 3D space and connectivity information that defines how the vertices are connected. Optionally, a 3D mesh may also include attributes such as color, normals, and material.

[0242] A dynamic mesh is a type of mesh in which at least one of the following changes over time: connectivity information, geometry information, mapping information, vertex attributes, and attribute maps. Dynamic meshes consist of a large amount of time-varying data and may require large amounts of storage. Therefore, efficient compression solutions are essential for the proper storage and transmission of such data.

[0243] A method called an edgebreaker is used to encode a 3D mesh, each of which is a triangle. The edgebreaker may correspond to a method for classifying triangles that make up a 3D mesh. In this method, the triangles that make up the 3D mesh are classified into five types according to the patterns of adjacent triangles, and the 3D mesh is represented by a character string consisting of C, L, E, R, and S.

[0244] Here, S indicates a branch, E indicates an end, C indicates a corner, and L and R indicate the adjacent positions of the triangle to be coded next. These types are also called type S, type E, type C, type L, and type R. For example, a type C triangle is not adjacent to a triangle that has already been coded. For a type L triangle, the next adjacent triangle to the right is coded. For a type R triangle, the next adjacent triangle to the left is coded.

[0245] Note that encoding (or decoding) a triangle may include encoding (or decoding) the connection type of the triangle, and the connection type of the encoded (or decoded) triangle may refer to the encoded (or decoded) connection type.

[0246] FIG. 29 is a conceptual diagram showing five types of connection types according to this embodiment. The connection types indicate the connection relationship between a triangle to be processed and an unprocessed triangle. Here, "to be visited" corresponds to "to be visited," "processed" corresponds to "visited," and "unprocessed" corresponds to "not visited." Note that vertices of a visited triangle may also be considered visited. Furthermore, a portion where no triangle exists and vertices adjacent to that portion may also be considered visited.

[0247] In Type S, multiple unprocessed triangles are separated and connected to both sides of the target triangle along the path leading to the target triangle in the processing order. In other words, multiple unprocessed triangles are branched and connected to both sides of the target triangle. For example, in Type S, vertex v has been visited. After processing a Type S triangle, the unprocessed triangle connected to the right side of the Type S triangle is processed first. Then, specifically after processing a Type E triangle, the unprocessed triangle connected to the left side of the Type S triangle is processed.

[0248] In Type C, multiple unprocessed triangles are connected to both sides of the target triangle without being separated along the path leading to the target triangle in the processing order. In other words, multiple unprocessed triangles are connected to both sides of the target triangle without being branched. For example, in Type C, vertex v is unvisited. After processing a Type C triangle, the unprocessed triangles connected to the right side of the Type C triangle are processed.

[0249] In type L, along the path leading to the target triangle in the processing order, no unprocessed triangles are connected to the left side of the target triangle, and an unprocessed triangle is connected to the right side of the target triangle. For example, in type L, vertex v has been visited. After processing a type L triangle, the unprocessed triangles connected to the right side of the type L triangle are processed.

[0250] In type R, along the path leading to the target triangle in the processing order, no unprocessed triangles are connected to the right of the target triangle, and an unprocessed triangle is connected to the left of the target triangle. For example, in type R, vertex v has been visited. After processing a type R triangle, the unprocessed triangles connected to the left of the type R triangle are processed.

[0251] In type E, no unprocessed triangles are connected to the right or left of the triangle being processed along the path leading to the triangle in the processing order. For example, in type E, vertex v has already been visited. After processing a triangle of type E, for example, an unprocessed triangle connected to the left of a processed triangle of type S is processed. Alternatively, after processing a triangle of type E, the series of processes ends.

[0252] For example, Type C is a type in which two unprocessed triangles are connected to the right and left of the triangle to be processed along the path leading to the triangle to be processed in the processing order, and all triangles connected to the vertices of the triangle to be processed, including these two triangles, are unprocessed.Furthermore, Type S is a type in which two unprocessed triangles are connected to the right and left of the triangle to be processed along the path leading to the triangle to be processed in the processing order, and is a type different from the corner type.

[0253] In particular, in the case of type C, the triangle to be processed and multiple unprocessed triangles may form a corner on the 3D mesh at vertex v. Therefore, type C indicates a corner and may also be expressed as a corner type. The other types S, L, R, and E may also be expressed as a branch type, a left type, a right type, and an end type, respectively. Furthermore, types equivalent to these types may also be defined by methods other than edge breakers.

[0254] Fig. 30 is a conceptual diagram showing an example of sequentially determined connection types according to this embodiment. As shown in Fig. 30, the connection types of the multiple triangles constituting a 3D mesh are sequentially determined to be one of the multiple types shown in Fig. 29, and then encoded and decoded. The connection types indicate the connection relationships between the multiple triangles and may indicate the processing order of the multiple triangles. The connection types may then be used to reconstruct a 3D model.

[0255] Alternatively, bit patterns 0, 110, 111, 101, and 100 may be assigned to types C, L, E, R, and S, respectively. These bit patterns may then be encoded. For the leading triangle, in addition to type C, L, E, R, or S, information about each vertex of the leading triangle (such as the three-dimensional coordinate position, texture map coordinate position, and normal vector) may also be encoded. For type C triangles, information about newly added vertices may also be encoded.

[0256] For example, the edge breaker in the present disclosure may be used in the encoding and decoding processes of a three-dimensional mesh, or in the encoding and decoding processes of a base mesh in Fig. 27 or 28. Specifically, the process of the present disclosure may be applied to the encoding and decoding processes of information indicating the connection relationship between multiple faces, which are multiple polygons that make up a three-dimensional mesh.

[0257] Fig. 31 is a flowchart showing an example of a connection type encoding process and a decoding process according to this embodiment. Specifically, Fig. 31 shows an example of a method for encoding, for each triangle, the type (C, L, E, R, or S) associated with each triangle constituting a 3D mesh. Here, the encoding is entropy encoding, such as arithmetic encoding or Huffman encoding.

[0258] In this method, the value of a variable prev is set according to the previously coded connection type, and parameters for controlling entropy coding of the triangle connection type are determined according to prev, and entropy coding of the connection type to be coded is performed according to the determined parameters.

[0259] Specifically, first, prev is set to an initial value (e.g., 0) (S101). Then, entropy coding of each triangle connection type is repeated (S102 to S109). Here, parameters for controlling entropy coding of the triangle connection type are determined according to prev, and entropy coding of the connection type to be coded is performed (S103).

[0260] For example, when arithmetic coding is used for entropy coding, a context used to determine the predicted occurrence probability of information to be coded is determined from among a plurality of contexts according to prev. Also, when Huffman coding is used for entropy coding, a code word table used for coding is determined from among a plurality of code word tables according to prev.

[0261] Next, the value of prev, which is used to control entropy coding of the connection type to be coded next, is set according to the coded connection type (S104 to S107). Specifically, first, it is determined whether the coded connection type is type S. If the coded connection type is type S (Yes in S104), prev is set to 1 (S106).

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

[0263] As a result of trials, the inventors have found a new finding that the tendency of the occurrence probability of each type coded immediately after coding of type S or E is different from the tendency of the occurrence probability of each type coded immediately after coding of type C, R, or L. Therefore, as described above, by switching the control of entropy coding depending on the connection type coded immediately before, it may be possible to improve the coding efficiency of entropy coding.

[0264] 31 shows an example in which the control of entropy coding is switched by classifying the connection types into three groups: a type S group, a type E group, and a type C, R, and L group. However, a context may be determined according to each of the five types.

[0265] 31, the determination and setting of type E (S105 and S107) may be omitted. Then, the connection types may be classified into two groups, a type S group and a type C, R, L, and E group, and the control of entropy coding may be switched.

[0266] This may make it possible to improve coding efficiency compared to the case of only one group, while reducing memory usage compared to the case of three groups.

[0267] 31, the value of prev is set to 0, 1, or 2 depending on the encoded connection type. However, another method may be used to distinguish between three groups, such as a type S group, a type E group, and a type C, R, and L group, and switch the control of entropy encoding.

[0268] Furthermore, in the above description, the control of entropy encoding is switched, but encoding may be interpreted as decoding, and the control of entropy decoding may be switched.

[0269] In the above description, the context for arithmetic coding is selected according to the type associated with the triangle processed immediately before the triangle to be processed. However, the selection of the context is not limited to this example. In other words, the context is not limited to being selected according to the immediately preceding type, and the parameters for entropy coding or entropy decoding of the connectivity information to be processed may be determined according to the connectivity information (linkage information) that has already been coded or decoded.

[0270] Here, the coded or decoded link information may be link information of a polygon that was coded or decoded immediately before. Also, the entropy coding or entropy decoding may be arithmetic coding or arithmetic decoding, and in this case, the parameter may be a context or a parameter for deriving the context.

[0271] As an example of context selection, a first context may be used when the connectivity information of the polygon most recently coded or decoded is not of a type that indicates branching, and a second context may be used when the connectivity information of the polygon most recently coded or decoded is of a type that indicates branching.

[0272] In other words, the context may be determined based on whether the type of connectivity information of a processed polygon at a predetermined position relative to the polygon being processed indicates a branch or whether the type of connectivity information of a processed polygon at a predetermined position relative to the polygon being processed indicates a termination or not.

[0273] In addition, whether or not a context is determined based on the type of polygon that has already been processed may be switched. Also, the connection type used as the criterion may be switched. In this case, a parameter indicating whether or not switching is appropriate, the context to be selected, or the connection type of the polygon corresponding to the context may be coded.

[0274] Furthermore, the order of the above-described determination and setting processes may be changed or some of them may be omitted. For example, the determination of type S (S104) and the determination of type E (S105) may be interchanged, or one of them may be omitted.

[0275] Fig. 32 is a flowchart showing a first specific example of connection type encoding according to this embodiment. That is, Fig. 32 shows an example of the encoding process (S103) in Fig. 31. 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 starting from the most significant bit.

[0276] First, it is determined whether the connection type of the triangle to be coded is Type C (S201). If the connection type is Type C (Yes in S201), the value of the first bit b0 is coded as 0 by entropy coding according to prev (S202). If the connection type is not Type C (No in S201: any of L, E, R, and S), the value of the first bit b0 is coded as 1 by entropy coding according to prev (S203).

[0277] Next, it is determined whether the connection type of the triangle to be coded is either type R or type S (S204). If the connection type is either type R or type S (Yes in S204), the value of the second bit b1 is set to 0 by entropy coding according to prev (S205).

[0278] Then, it is determined whether the connection type of the triangle to be coded is Type S (S207). If the connection type is Type S (Yes in S207), the value of the third bit b2 is coded as 0 by entropy coding according to prev (S211). If the connection type is not Type S (No: R in S207), the value of the third bit b2 is coded as 1 by entropy coding according to prev (S209).

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

[0280] Then, it is determined whether the connection type of the triangle to be coded is Type L (S208). If the connection type is Type L (Yes in S208), the value of the third bit b2 is coded as 0 by entropy coding according to prev (S212). If the connection type is not Type L (No: E in S208), the value of the third bit b2 is coded as 1 by entropy coding according to prev (S210).

[0281] When arithmetic coding is used for entropy coding, a context used to determine the predicted occurrence probability of information to be coded is determined from among a plurality of contexts according to prev. When Huffman coding is used for entropy coding, a code word table used for coding is determined from among a plurality of code word tables according to prev.

[0282] Furthermore, in the entropy coding of the value of the third bit b2 (S207 to S212), the context or code word table may be determined according to the value of the second bit b1 in addition to prev.

[0283] The tendency of the occurrence probability of each type coded immediately after type S or E is different from the tendency of the occurrence probability of each type coded immediately after type C, R, or L. Therefore, as described above, the control of entropy coding is switched according to prev determined by the procedure of Fig. 31. This may make it possible to improve the coding efficiency of entropy coding.

[0284] 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, type S or R, and if b1 = 1, type L or E). Therefore, in entropy coding of the value of the third bit b2, by determining the context or codeword table depending on the value of the second bit b1 in addition to prev, it may be possible to further improve coding efficiency.

[0285] In the above, encoding bits may include inputting the bits into a coding engine, where the bits may be compressed into fewer bits.

[0286] Fig. 33 is a flowchart showing a first specific example of connection type decoding according to this embodiment. That is, Fig. 33 shows an example of the decoding process (S103) in Fig. 31. In this example, entropy decoding is performed on a bit string encoded by the encoding method described with reference to Fig. 32, and one of types C, L, E, R, and S is set as the connection type of the triangle to be decoded.

[0287] First, the value of the first bit b0 is decoded by entropy decoding according to 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 to be decoded is set to Type C (S303).

[0288] If the value of the first bit b0 is not 0 (No in S302), the value of the second bit b1 is decoded by entropy decoding according to prev (S304). The value of the third bit b2 is also decoded by entropy decoding according to prev (S305). The bit patterns of the second bit b1 and the third bit b2 are then determined (S306-S308). Then, according to the determination result, the connection type of the triangle to be decoded is set to one of types L, E, R, or S (S309-S312).

[0289] 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).

[0290] 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).

[0291] When arithmetic decoding is used for entropy decoding, a context used to determine the expected occurrence probability of information to be decoded is determined from a plurality of contexts according to "prev". When Huffman decoding is used for entropy decoding, a code word table used for decoding is determined from a plurality of code word tables according to "prev". Furthermore, in entropy decoding of the value of the third bit b2, a context or a code word table may be determined according to the value of the second bit b1 in addition to "prev".

[0292] Since the tendency of the occurrence probability of each type decoded immediately after type S or E is different from the tendency of the occurrence probability of each type decoded immediately after type C, R, or L, as described above, the control of entropy decoding is switched according to prev determined by the procedure of Fig. 31. This may enable efficient decoding and reduction of the amount of code.

[0293] 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, type S or R, and if b1 = 1, type L or E). Therefore, in entropy decoding of the value of the third bit b2, it may be possible to further reduce the amount of code by determining the context or codeword table according to the value of the second bit b1 in addition to prev.

[0294] Fig. 34 is a flowchart showing a second specific example of connection type encoding according to this embodiment. That is, Fig. 34 shows an example of the encoding process (S103) in Fig. 31. 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 starting from the most significant bit.

[0295] First, it is determined whether the connection type of the triangle to be coded is Type C (S401). If the connection type is Type C (Yes in S401), the value of the first bit b0 is coded as 0 by entropy coding according to prev (S405). If the connection type is not Type C (No in S401: any of L, E, R, and S), the value of the first bit b0 is coded as 1 by entropy coding according to prev (S402).

[0296] Next, it is determined whether the connection type of the triangle to be coded is Type R (S403). If the connection type is Type R (Yes in S403), the value of the second bit b1 is coded as 0 by entropy coding according to prev (S408). If the connection type is not Type R (No in S403: any of L, E, and S), the value of the second bit b1 is coded as 1 by entropy coding according to prev (S404).

[0297] Next, it is determined whether the connection type of the triangle to be coded is Type E (S406). If the connection type is Type E (Yes in S406), the value of the third bit b2 is coded as 0 by entropy coding according to prev (S410). If the connection type is not Type E (No: either L or S in S406), the value of the third bit b2 is coded as 1 by entropy coding according to prev (S407).

[0298] Next, it is determined whether the connection type of the triangle to be coded is Type S (S409). If the connection type is Type S (Yes in S409), the value of the fourth bit b3 is set to 0 by entropy coding according to prev (S412). If the connection type is not Type S (No: L in S409), the value of the fourth bit b3 is set to 1 by entropy coding according to prev (S411).

[0299] When arithmetic coding is used for entropy coding, a context used to determine the predicted occurrence probability of information to be coded is determined from among a plurality of contexts according to prev. When Huffman coding is used for entropy coding, a code word table used for coding is determined from among a plurality of code word tables according to prev.

[0300] The tendency of the occurrence probability of each type coded immediately after type S or E is different from the tendency of the occurrence probability of each type coded immediately after type C, R, or L. Therefore, as described above, the control of entropy coding is switched according to prev determined by the procedure of Fig. 31. This may make it possible to improve the coding efficiency of entropy coding.

[0301] In the above description, bit patterns 0, 10, 110, 1110, and 1111 are assigned to types C, R, E, S, and L, respectively. However, the types to be determined in the determination processes (S401, S403, S406, and S409) may be set in accordance with the bit pattern allocation method. This allows for arbitrary allocation.

[0302] Also, a shorter bit pattern may be assigned to a type that occurs more frequently, which may improve coding efficiency. Therefore, bit patterns 0 and 10 may be assigned to types C and R that occur more frequently, respectively.

[0303] Fig. 35 is a flowchart showing a second specific example of connection type decoding according to this embodiment. That is, Fig. 35 shows an example of the decoding process (S103) in Fig. 31. In this example, entropy decoding is performed on a bit string encoded by the encoding method described with reference to Fig. 34, and one of types C, L, E, R, and S is set as the connection type of the triangle to be decoded.

[0304] First, the value of the first bit b0 is decoded by entropy decoding according to 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 to be decoded 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 by entropy decoding according to prev (S503).

[0305] Next, it is determined whether the value of the second bit b1 is 0 (S504). If the value of the second bit b1 is 0 (Yes in S504), the connection type of the triangle to be decoded is set to type R (S508). If the value of the second bit b1 is not 0 (No in S504), the value of the third bit b2 is decoded by entropy decoding according to prev (S506).

[0306] Next, it is determined whether the value of the third bit b2 is 0 (S507). If the value of the third bit b2 is 0 (Yes in S507), the connection type of the triangle to be decoded is set to Type E (S511). If the value of the third bit b2 is not 0 (No in S507), the value of the fourth bit b3 is decoded by entropy decoding according to prev (S509).

[0307] Next, it is determined whether the value of the fourth bit b3 is 0 (S510). If the value of the fourth bit b3 is 0 (Yes in S510), the connection type of the triangle to be decoded is set to type S (S513). If the value of the fourth bit b3 is not 0 (No in S510), the connection type of the triangle to be decoded is set to type L (S512).

[0308] When arithmetic decoding is used for entropy decoding, a context used to determine the predicted occurrence probability of information to be decoded is determined from among a plurality of contexts according to prev. When Huffman decoding is used for entropy decoding, a code word table used for decoding is determined from among a plurality of code word tables according to prev.

[0309] Since the tendency of the occurrence probability of each type decoded immediately after type S or E is different from the tendency of the occurrence probability of each type decoded immediately after type C, R, or L, as described above, the control of entropy decoding is switched according to prev determined by the procedure of Fig. 31. This may enable efficient decoding and reduction of the amount of code.

[0310] In the above description, bit patterns 0, 10, 110, 1110, and 1111 are assigned to C, R, E, S, and L, respectively. However, the types set in the setting processes (S505, S508, S511, S513, and S512) may be set in accordance with the bit pattern assignment method. This allows for arbitrary assignment.

[0311] Furthermore, a short bit pattern may be assigned to a type that occurs frequently, which may reduce the amount of code. Therefore, bit patterns 0 and 10 may be assigned to types C and R that occur frequently, respectively.

[0312] In the examples described with reference to Figures 31 to 35, the value of the variable prev is set according to the type of triangle that was previously coded. Then, parameters for controlling entropy coding of the triangle's connectivity type are determined according to prev. Then, entropy coding of the connectivity type of the triangle to be coded is performed according to the determined parameters.

[0313] 36 is a flowchart showing another example of the connection type encoding process and decoding process according to this embodiment. Specifically, in this example, the variable c_idx can be used instead of prev. For example, the value of c_idx is set according to the connection type of the triangle encoded immediately before, as well as the connection types of n triangles (n is an integer equal to or greater than 1) encoded in the past. In other words, the value of c_idx is set according to the connection types of the n+1 triangles that have already been encoded.

[0314] 36 will be described step by step. First, the variables c_idx and type[0] to type[n] (n is an integer equal to or greater than 1) are each set to an initial value (for example, 0) (S601).

[0315] The variable c_idx is used to determine a parameter for controlling the entropy coding of triangle connectivity types. The variables type[0] through type[n] hold integers corresponding to the connectivity types of the coded triangles. Specifically, type[x] holds an integer corresponding to the x+1 previous connectivity type, e.g., 0 for type C, 1 for type L, 2 for type E, 3 for type R, and 4 for type S.

[0316] Then, the entropy coding of the triangle connection type is repeated (S602 to S609). Specifically, first, parameters for controlling the entropy coding of the triangle connection type are determined according to c_idx, and the determined parameters are used to perform entropy coding of the triangle connection type to be coded (S603).

[0317] For example, when arithmetic coding is used for entropy coding, a context used to determine the expected occurrence probability of information to be coded may be determined from multiple contexts according to c_idx. Specifically, for example, multiple contexts may be held as a one-dimensional array, and an element from the one-dimensional array specified by c_idx may be used as the context.

[0318] Alternatively, when Huffman coding is used for entropy coding, the code word table to be used for coding may be determined from among a plurality of code word tables according to c_idx.

[0319] Next, in a loop process (S604 to S606), each of type[1] to type[n] is updated to an integer corresponding to the connection type of the triangle coded immediately before. That is, the value of type[k-1] is repeatedly copied to type[k] as k increases from n to 1 (S605).

[0320] Next, type[0] is set to an integer corresponding to the connection type of the triangle coded in the current coding process (S603) (S607). Then, c_idx is set according to type[0] to type[n] (S608). This c_idx is used when coding the connection type of the next triangle.

[0321] A specific example of setting c_idx (S608) is as follows. For example, idx_x (0≦x≦n) is determined according to type[x]. Here, type[x] can take five different values. On the other hand, idx_x can take five or fewer different values. Then, using an (n+1)-dimensional array, c_idx may be set by c_idx=array[idx_0][idx_1]...[idx_n]. According to this configuration, a value can be set to c_idx according to a combination of idx_0, idx_1,..., idx_n.

[0322] 37 is a diagram showing an example of the correspondence between the previous connection type and the values ​​used to determine the context according to this embodiment. For example, as shown in Table T106-01, five types of values ​​for type[0] correspond to five types of values ​​for idx_0. In this case, five types of context are used depending on the previous connection type.

[0323] For example, as in Tables T106-02, T106-03, and T106-04, five types of type[0] values ​​are associated with four types of idx_0 values. In this case, four types of context are used depending on the previous connection type. For example, as in Tables T106-05 and T106-06, five types of type[0] values ​​are associated with three types of idx_0 values. In this case, three types of context are used depending on the previous connection type.

[0324] 38 is a relationship diagram showing an example of the correspondence between the connection type two connections before and the values ​​used to determine the context according to this embodiment. For example, as shown in Table T106-11 and Table T106-12, five types of type[1] values ​​are associated with three types of idx_1 values. In this case, three types of context are used depending on the connection type two connections before.

[0325] Also, for example, as shown in Table T106-13, two types of idx_1 values ​​are associated with five types of type[1] values. In this case, two types of context are used depending on the connection type two connections ago.

[0326] For example, when n = 1, c_idx is determined according to the connection type of the immediately preceding triangle and the connection type of the triangle two triangles before that, and the context is determined according to c_idx. In this case, a combination of one table from among tables T106-01 to T106-06 and one table from among tables T106-11 to T106-13 can be used. Then, idx_0 and idx_1 are defined by the two tables, c_idx is determined by c_idx = array[idx_0][idx_1], and the context is determined by c_idx.

[0327] Also, for example, if four types of contexts are used depending on the connection type of the immediately preceding triangle, and three types of contexts are used depending on the connection type of the triangle two triangles before that, 12 types of contexts can be used by combining these.

[0328] In the above example, c_idx is set using an array. However, the method for setting the context used to encode the connection type of the triangle to be encoded according to the connection types of the n+1 triangles that have already been encoded is not limited to the array-based method. For example, c_idx may be determined using the following formula:

[0329]

[0330] Here, N(k) indicates the number of elements of idx_k (k=0, ..., n-1), and is expressed as N(0) = 5 when table T106-01 is used, and as N(1) = 3 when table T106-11 is used. Alternatively, the context may be held in an (n+1)-dimensional array, and the context may be determined directly according to the combination of idx_0, idx_1, ..., idx_n.

[0331] As a result of trials, the inventors have found the following: Type C occurs frequently, and Type C also occurs frequently consecutively. Therefore, by separating the contexts in which Type C is coded immediately before and two codes before it from the contexts in other cases, efficient coding and a reduction in the amount of code may be possible.

[0332] Furthermore, the tendency of the occurrence probability of each type coded immediately after type S differs from the tendency of the occurrence probability of each type coded immediately after other types. Therefore, by separating the context when type S is coded immediately before and two before it from the context when other types are coded, efficient coding and a reduction in the amount of code may be possible.

[0333] Specifically, by using Tables T106-01 to T106-05 and T106-11, it may be possible to perform efficient coding and reduce the amount of code.

[0334] Furthermore, to reduce memory usage, one of the contexts of types C and S may be integrated with a context of the other type. The inventors have found that in this case, by maintaining the independence of the context of type C and integrating the context of type S with a context of the other type, it may be possible to reduce memory usage while suppressing an increase in the amount of coding. Specifically, by using tables T106-06, 12, and 13, it may be possible to reduce memory usage while suppressing an increase in the amount of coding.

[0335] In the example of FIG. 36, type[n] is set to a value between 0 and 4 depending on the triangle connection type. However, another method for identifying the triangle connection type may be used. In addition, in tables T106-01 to T106-06 and T106-11 to T106-13, idx_n is set to a value between 0 and 4 depending on the triangle connection type. However, another method for uniquely determining an array element depending on the triangle connection type may be used.

[0336] Although an example of encoding is shown above, the same example can be applied to decoding by replacing encoding with decoding.

[0337] The shape of the face is not limited to a triangle, and other shapes may be used. For example, polygons other than triangles may be used. Furthermore, whether or not a context is determined based on the connection type of processed polygons may be switched, and the polygons, connection type groups, and context correspondences referenced in determining the context may be switched. In this case, parameters indicating the switching, the correspondences, and the like may be coded.

[0338] Furthermore, in any aspect of the present disclosure, instead of setting a context for arithmetic coding of the connection type of a polygon to be processed according to the connection type of a polygon that has already been processed, a parameter indicating the context may be derived according to the connection type of the polygon that has already been processed. For example, the parameter indicating the context may be derived by calculation using the value of prev or c_idx.

[0339] Fig. 39 is a flowchart showing a third specific example of connection type encoding according to this embodiment. That is, Fig. 39 shows an example of the encoding process (S603) in Fig. 36. 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 starting from the most significant bit.

[0340] First, it is determined whether the connection type of the triangle to be coded is Type C (S701). If the connection type is Type C (Yes in S701), the value of the first bit b0 is set to 0 and coded by entropy coding according to c_idx (S702). If the connection type is not Type C (No in S701: any of L, E, R, and S), the value of the first bit b0 is set to 1 and coded by entropy coding according to c_idx (S703).

[0341] Next, it is determined whether the connection type of the previously coded triangle is Type C (S704). If the connection type of the previously coded triangle is Type C (Yes in S704), it is determined that the connection type of the triangle to be coded is neither Type E nor Type L. Then, without coding the value of the second bit b1, it is determined whether the connection type is Type S (S708).

[0342] If the connection type of the triangle previously coded is not type C (No in S704), it is determined whether the connection type of the triangle to be coded is either type R or type S (S705). If the connection type is either type R or type S (Yes in S705), 0 is coded by entropy coding as the value of the second bit b1 according to c_idx (S706).

[0343] Then, it is determined whether the connection type of the triangle to be coded is Type S (S708). If the connection type is Type S (Yes in S708), the value of the third bit b2 is set to 0 and coded by entropy coding according to c_idx (S710). If the connection type is not Type S (No: R in S708), the value of the third bit b2 is set to 1 and coded by entropy coding according to c_idx (S709).

[0344] If the connection type is not one of types R and S (No: L or E in S705), the value of the second bit b1 is coded as 1 by entropy coding according to c_idx (S707).

[0345] Then, it is determined whether the connection type of the triangle to be coded is Type L (S711). If the connection type is Type L (Yes in S711), the value of the third bit b2 is set to 0 and coded by entropy coding according to c_idx (S713). If the connection type is not Type L (No: E in S711), the value of the third bit b2 is set to 1 and coded by entropy coding according to c_idx (S712).

[0346] When arithmetic coding is used for entropy coding, a context used to determine the expected occurrence probability of information to be coded is determined from among a plurality of contexts according to c_idx.When Huffman coding is used for entropy coding, a code word table used for coding is determined from among a plurality of code word tables according to c_idx.

[0347] Furthermore, in the entropy coding of the value of the third bit b2 (S709, S710, S712, and S713), the context or code word table may be determined according to the value of the second bit b1 in addition to c_idx. Here, if the previous connection type is Type C, the connection type of the triangle to be coded is either Type R or Type S, and therefore 0 is used as the value of the second bit b1.

[0348] Neither Type L nor Type E logically occurs immediately after Type C. Therefore, immediately after Type C, it may be possible to encode the triangle connection type with a smaller amount of code by omitting encoding the second bit b1 that identifies Type L and Type E and encoding only the first bit b0 and the third bit b2.

[0349] In addition, instead of omitting the encoding of the second bit b1, it may be possible to reduce the amount of code for triangle connection types by always using the same context to encode the second bit b1 immediately after type C.

[0350] 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, type S or R, and if b1 = 1, type L or E). Therefore, in entropy coding of the value of the third bit b2, by determining the context or code word table according to the value of the second bit b1 in addition to c_idx, it may be possible to further reduce the amount of code.

[0351] Alternatively, bit patterns 0, 011, 111, 101, and 001 may be assigned to types C, L, E, R, and S, respectively. Alternatively, unnecessary leading zeros may be omitted, and bit patterns 0, 11, 111, 101, and 1 may be assigned to types C, L, E, R, and S, respectively. Then, entropy coding may be performed starting from the least significant bit.

[0352] This allows types C, L, E, R and S to be assigned bit patterns 0, 110, 111, 101 and 100, respectively, and an operation corresponding to the above-described operation in which entropy coding is performed starting from the most significant bit can be performed.

[0353] In the above, encoding bits may include inputting the bits into a coding engine, where the bits may be compressed into fewer bits.

[0354] Fig. 40 is a flowchart showing a third specific example of connection type decoding according to this embodiment. That is, Fig. 40 shows an example of the decoding process (S603) in Fig. 36. In this example, entropy decoding is performed on a bit string encoded by the encoding method described with reference to Fig. 39, and one of types C, L, E, R, and S is set as the connection type of the triangle to be decoded.

[0355] First, the value of the first bit b0 is decoded by entropy decoding according to c_idx (S801). Then, it is determined whether the value of the first bit b0 is 0 (S802). If the value of the first bit b0 is 0 (Yes in S802), the connection type of the triangle to be decoded is set to Type C (S803). If the value of the first bit b0 is not 0 (No in S802), it is determined whether the connection type of the triangle decoded immediately before is Type C (S804).

[0356] If the connection type of the previously decoded triangle is Type C (Yes in S804), it is determined that the connection type of the triangle to be decoded is neither Type E nor Type L. Then, the value of the second bit b1 is set to 0 without being decoded (S805). If the connection type of the previously decoded triangle is not Type C (No in S804), the value of the second bit b1 is decoded by entropy decoding according to c_idx (S806).

[0357] Next, the value of the third bit b2 is decoded by entropy decoding according to c_idx (S807). Then, the bit patterns of the second bit b1 and the third bit b2 are determined (S808-S810). Then, according to the determination result, the connection type of the triangle to be decoded is set to one of types L, E, R, or S (S811-S814).

[0358] Specifically, if the value of the second bit b1 and the value of the third bit b2 are 0 and 0, respectively (Yes in S808 and Yes in S809), the connection type is set to type S (S812). If the value of the second bit b1 and the value of the third bit b2 are 0 and 1, respectively (Yes in S808 and No in S809), the connection type is set to type R (S811).

[0359] If the value of the second bit b1 and the value of the third bit b2 are 1 and 0, respectively (No in S808 and Yes in S810), the connection type is set to Type L (S814). If the value of the second bit b1 and the value of the third bit b2 are 1 and 1, respectively (No in S808 and No in S810), the connection type is set to Type E (S813).

[0360] When arithmetic decoding is used for entropy decoding, a context used to determine the expected occurrence probability of information to be decoded is determined from a plurality of contexts according to c_idx. When Huffman decoding is used for entropy decoding, a code word table used for decoding is determined from a plurality of code word tables according to c_idx. Furthermore, in the entropy decoding of the value of the third bit b2 (S807), the context or code word table may be determined according to the value of the second bit b1 in addition to c_idx.

[0361] Neither Type L nor Type E logically occurs immediately after Type C. Therefore, immediately after Type C, it may be possible to decode the triangle connection type with a smaller amount of code by omitting the decoding of the second bit b1 that identifies Type L and Type E and decoding only the first bit b0 and the third bit b2.

[0362] In addition, instead of omitting the decoding of the second bit b1, it may be possible to reduce the amount of code for the triangular connection type by always using the same context to decode the second bit b1 immediately after type C.

[0363] 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, type S or R, and if b1 = 1, type L or E). Therefore, in entropy decoding of the value of the third bit b2, by determining the context or code word table according to the value of the second bit b1 in addition to c_idx, it may be possible to further reduce the amount of code.

[0364] Alternatively, bit patterns 0, 011, 111, 101, and 001 may be assigned to types C, L, E, R, and S, respectively. Alternatively, unnecessary leading zeros may be omitted, and bit patterns 0, 11, 111, 101, and 1 may be assigned to types C, L, E, R, and S, respectively. Then, entropy decoding may be performed in order from the least significant bit.

[0365] As a result, bit patterns 0, 110, 111, 101 and 100 are assigned to types C, L, E, R and S, respectively, and an operation corresponding to the above-described operation in which entropy decoding is performed in order from the most significant bit can be performed.

[0366] Fig. 41 is a flowchart showing a fourth specific example of connection type encoding according to this embodiment. That is, Fig. 41 shows an example of the encoding process (S603) in Fig. 36. In this example, bit patterns 0, 10, 110, 1110, and 1111 are assigned to types C, R, S, E, and L, respectively, and entropy encoding is performed starting from the most significant bit.

[0367] First, it is determined whether the connection type of the triangle to be coded is Type C (S901). If the connection type is Type C (Yes in S901), the value of the first bit b0 is set to 0 and coded by entropy coding according to c_idx (S904). If the connection type is not Type C (No in S901: any of L, E, R, and S), the value of the first bit b0 is set to 1 and coded by entropy coding according to c_idx (S902).

[0368] Next, it is determined whether the connection type of the triangle to be coded is Type R (S903). If the connection type is Type R (Yes in S903), the value of the second bit b1 is set to 0 and coded by entropy coding according to c_idx (S906). If the connection type is not Type R (No in S903: any of L, E, and S), the value of the second bit b1 is set to 1 and coded by entropy coding according to c_idx (S905).

[0369] Next, it is determined whether the connection type of the triangle previously coded (immediately before) is Type C (S907). If the connection type of the triangle previously coded is Type C (Yes in S907), it is determined that the connection type of the triangle to be coded is neither Type E nor Type L. Then, the value of the third bit b2 is not coded, and the process ends.

[0370] If the connection type of the previously coded triangle is not Type C (No in S907), it is determined whether the connection type of the triangle to be coded is Type S (S908). If the connection type is Type S (Yes in S908), a value of 0 is coded as the third bit b2 by entropy coding according to c_idx (S913). If the connection type is not Type S (No in S908: either L or E), a value of 1 is coded as the third bit b2 by entropy coding according to c_idx (S909).

[0371] Next, it is determined whether the connection type of the triangle to be coded is Type E (S910). If the connection type is Type E (Yes in S910), the value of the fourth bit b3 is set to 0 and coded by entropy coding according to c_idx (S912). If the connection type is not Type E (No: L in S910), the value of the fourth bit b3 is set to 1 and coded by entropy coding according to c_idx (S911).

[0372] When arithmetic coding is used for entropy coding, a context used to determine the expected occurrence probability of information to be coded is determined from among a plurality of contexts according to c_idx.When Huffman coding is used for entropy coding, a code word table used for coding is determined from among a plurality of code word tables according to c_idx.

[0373] Neither Type L nor Type E logically occurs immediately after Type C. Therefore, immediately after Type C, it may be possible to encode the triangle connection type with a smaller amount of code by omitting encoding the third bit b2 that identifies Type L and Type E and encoding only the first bit b0 and the second bit b1.

[0374] In addition, instead of omitting the encoding of the third bit b2, it may be possible to reduce the amount of code for triangle connection types by always using the same context to encode the third bit b2 immediately after type C.

[0375] In the above description, bit patterns 0, 10, 110, 1110, and 1111 are assigned to types C, R, S, E, and L, respectively. However, the types to be determined in the determination processes (S901, S903, S908, and S910) may be set in accordance with the bit pattern allocation method. This allows for arbitrary allocation.

[0376] For example, as explained above, bit patterns 1110 and 1111 may be assigned to types E and L, respectively. Alternatively, bit patterns 1111 and 1110 may be assigned to types E and L, respectively. This may make it possible to omit encoding the third bit b2 immediately after type C.

[0377] Alternatively, a shorter bit pattern may be assigned to a type that occurs more frequently. This may enable more efficient encoding and a reduction in the amount of code. Therefore, as explained above, bit patterns 0 and 10 may be assigned to types C and R that occur more frequently, respectively. Alternatively, bit patterns 10 and 0 may be assigned to types C and R, respectively.

[0378] Fig. 42 is a flowchart showing a fourth specific example of connection type decoding according to this embodiment. That is, Fig. 42 shows an example of the decoding process (S603) in Fig. 36. In this example, entropy decoding is performed on a bit string encoded by the encoding method described with reference to Fig. 41, and one of types C, L, E, R, and S is set as the connection type of the triangle to be decoded.

[0379] First, the value of the first bit b0 is decoded by entropy decoding according to c_idx (S1001). Then, it is determined whether the value of the first bit b0 is 0 (S1002). If the value of the first bit b0 is 0 (Yes in S1002), the connection type of the triangle to be decoded is set to Type C (S1005). If the value of the first bit b0 is not 0 (No in S1002), the value of the second bit b1 is decoded by entropy decoding according to c_idx (S1003).

[0380] Next, it is determined whether the value of the second bit b1 is 0 (S1004). If the value of the second bit b1 is 0 (Yes in S1004), the connection type of the triangle to be decoded is set to Type R (S1010). If the value of the second bit b1 is not 0 (No in S1004), it is determined whether the connection type of the triangle decoded immediately before is Type C (S1006).

[0381] If the connection type of the previously decoded triangle is Type C (Yes in S1006), the connection type of the triangle to be decoded is determined to be Type S. Then, the value of the third bit b2 is not decoded, and the connection type of the triangle to be decoded is set to Type S (S1011). If the connection type of the previously decoded triangle is not Type C (No in S1006), the value of the third bit b2 is decoded by entropy decoding according to c_idx (S1007).

[0382] Next, it is determined whether the value of the third bit b2 is 0 (S1008). If the value of the third bit b2 is 0 (Yes in S1008), the connection type of the triangle to be decoded is set to type S (S1011). If the value of the third bit b2 is not 0 (No in S1008), the value of the fourth bit b3 is decoded by entropy decoding according to c_idx (S1009).

[0383] Next, it is determined whether the value of the fourth bit b3 is 0 (S1012). If the value of the fourth bit b3 is 0 (Yes in S1012), the connection type of the triangle to be decoded is set to Type E (S1014). If the value of the fourth bit b3 is not 0 (No in S1012), the connection type of the triangle to be decoded is set to Type L (S1013).

[0384] When arithmetic decoding is used for entropy decoding, a context used to determine the expected occurrence probability of information to be decoded is determined from among multiple contexts according to c_idx.When Huffman decoding is used for entropy decoding, a code word table used for decoding is determined from among multiple code word tables according to c_idx.

[0385] Neither Type L nor Type E logically occurs immediately after Type C. Therefore, immediately after Type C, it may be possible to decode the triangle connection type with a smaller amount of code by omitting the decoding of the third bit b2 that identifies Type L and Type E and decoding only the first bit b0 and the second bit b1.

[0386] In addition, instead of omitting the decoding of the third bit b2, it may be possible to reduce the amount of code for the triangular connection type by always using the same context to decode the third bit b2 immediately after type C.

[0387] In the above description, bit patterns 0, 10, 110, 1110, and 1111 are assigned to types C, R, S, E, and L, respectively. However, the types to be set in the setting processes (S1005, S1010, S1011, S1014, and S1013) may be set in accordance with the bit pattern assignment method. This allows for arbitrary assignment.

[0388] For example, as explained above, bit patterns 1110 and 1111 may be assigned to types E and L, respectively. Alternatively, bit patterns 1111 and 1110 may be assigned to types E and L, respectively. This may allow omitting the decoding of the third bit b2 immediately after type C.

[0389] Alternatively, a shorter bit pattern may be assigned to a type that occurs more frequently. This may reduce the amount of code. Therefore, as explained above, bit patterns 0 and 10 may be assigned to types C and R that occur more frequently, respectively. Alternatively, bit patterns 10 and 0 may be assigned to types C and R, respectively.

[0390] 43 is a relationship diagram showing another example of the correspondence between the connection type two steps before and the value used to determine the context according to this embodiment. For example, in the setting process (S608) of FIG. 36, when n=1, c_idx is set using the value shown in FIG. 38 according to each type of triangle. The value shown in FIG. 43 may be used instead of the value shown in FIG. 38.

[0391] For example, as in tables T107-01 to T107-03 and T107-14, five types of type[1] values ​​are associated with three types of idx_1 values. In this case, three types of context are used depending on the connection type two types prior. Also, as in tables T107-04 and T107-05, five types of type[1] values ​​are associated with two types of idx_1 values. In this case, two types of context are used depending on the connection type two types prior.

[0392] Also, for example, as shown in Table T107-06, one type of idx_1 value is associated with five types of type[1] values. In this case, one type of context is used depending on the connection type two connections before.

[0393] Furthermore, the table used to determine idx_1 may be determined according to the connection type (type[0]) of the immediately preceding (previously) encoded / decoded triangle. Specifically, when idx_0 is determined using table T106-01, the table for determining idx_1 may be determined as follows.

[0394] (1) If the connectivity type of the previously encoded or decoded triangle is Type C, Table T107-05 or Table T107-06 may be used.

[0395] (2) If the connectivity type of the previously coded or decoded triangle is type S, then Table T107-06 may be used.

[0396] (3) If the connectivity type of the previously encoded or decoded triangle is Type L, Table T107-01 or Table T107-06 may be used.

[0397] (4) If the connectivity type of the previously coded or decoded triangle is Type R, Table T107-02, Table T107-14, or Table T106-13 may be used.

[0398] (5) If the connectivity type of the previously encoded or decoded triangle is Type E, Table T107-03 or Table T107-04 may be used.

[0399] As a result of trials, the inventors have discovered the following: If the previous (immediately preceding) connection type is different, the correlation between the connection type of the triangle to be coded and the connection type two blocks prior to it will differ. Therefore, by switching the type two blocks prior to it that is made independent in determining the context depending on the type of the previous (immediately preceding) triangle, it may be possible to improve the coding efficiency of entropy coding. Therefore, by using the above combination, it may be possible to reduce memory usage while suppressing a decrease in the coding efficiency of entropy coding.

[0400] Furthermore, in any aspect of the present disclosure, instead of setting a context for arithmetic coding of the connection type of a polygon to be processed according to the connection type of a polygon that has already been processed, a parameter indicating the context may be derived according to the connection type of the polygon that has already been processed. For example, the parameter indicating the context may be derived by calculation using the value of prev or c_idx.

[0401] As described above, if the connection type of the immediately preceding triangle is Type C, the connection type of the triangle being processed is neither Type L nor Type E. Specifically, for example, as shown in Figure 29, if the connection type of the triangle being processed is Type C, an unprocessed triangle is connected to the left of the next triangle. On the other hand, if the connection type of the triangle is Type L or E, no unprocessed triangle is connected to the left of the triangle in question. Therefore, if the connection type of the triangle being processed is Type C, the connection type of the next triangle is neither Type L nor Type E.

[0402] Therefore, if the connection type of the immediately preceding triangle is Type C, information is encoded to identify the connection type of the triangle to be processed from the candidate set of Types C, R, and S. This may make it possible to reduce the amount of code compared to encoding information to identify the connection type from the candidate set of all types.

[0403] Here, when the connection type of the immediately preceding triangle is type C, the candidate set of types C, R, and S is used as the candidate set of connection types for the triangle to be processed. However, the present invention is not limited to this example, and the candidate set of connection types to be processed may be determined by the previously processed connection type.

[0404] In the above example, values ​​such as those shown in Tables T106-01 to T106-06 in Fig. 37 and Tables T107-01 to T107-06 and T107-14 in Fig. 43 are set to idx_0 and idx_1 according to the connection types of the n+1 (here, n=1) triangles that have already been coded. Then, c_idx is set according to idx_0 and idx_1 (S608 in Fig. 36). Furthermore, c_idx may be set according to Crun, which indicates the number of consecutively coded type C triangles, in addition to the connection types of the n+1 triangles that have already been coded.

[0405] Fig. 44 is a flowchart showing yet another example of the connection-type encoding process and decoding process according to this embodiment. In this procedure, processes related to the initialization, update, and use of Crun are added. The other parts are the same as the procedure in Fig. 36. Here, the added parts will be described.

[0406] Specifically, in the initialization process (S1101), Crun is set to 0. Also, in the update process (S1108 to S1110), 1 is added to Crun (S1109) or Crun is set to 0 (S1110) depending on the triangle connection type. Also, in the c_idx setting process (S1111), Crun is used.

[0407] As a result, the number of consecutively coded type Cs is set in Crun. Then, in the c_idx setting process (S1111), c_idx is set using the connection types of the coded n+1 triangles as well as the number of consecutively coded type Cs.

[0408] Here, the number of consecutively encoded Type Cs specifically corresponds to the number of one or more Type Cs consecutively encoded up to the immediately preceding (previous) one, and corresponds to the number of one or more connection types consecutively encoded as Type C up to the immediately preceding one. The number of consecutively encoded Type Cs can also be expressed as the number of consecutive Type Cs, the consecutive length of Type Cs, the number of consecutive values ​​equal to Type C, the consecutive length of values ​​equal to Type C, or the number of consecutively encoded Type C triangles, etc. Type C corresponds to the above-mentioned corner type.

[0409] 45 is a relationship diagram showing an example of the correspondence relationship between at least one of the connection type two before and the number of consecutive Type Cs and the values ​​used to determine a context according to the present embodiment. In this example, three different values ​​are used for idx_1 and three different contexts are used depending on at least one of the connection type two before and the number of consecutive Type Cs.

[0410] Specifically, if the connection type (type[0]) of the immediately preceding (previously) coded triangle is Type C, in the c_idx setting process (S1111), idx_1 for setting c_idx may be determined using the example of Table T108-01 in Fig. 45. In the example of Table T108-01, if Crun is less than the threshold TH(0), idx_1 is set to 0, if Crun is equal to or greater than the threshold TH(0) and less than the threshold TH(1), idx_1 is set to 1, and if Crun is equal to or greater than the threshold TH(1), idx_1 is set to 2.

[0411] Here, threshold value TH(0) is smaller than threshold value TH(1). As a specific set value, threshold value TH(0) may be 2 or a value greater than or equal to 2 and less than or equal to 4. Threshold value TH(1) may be 7 or a value greater than or equal to 5.

[0412] When a value of 2 or close to 2 is used as the threshold value TH(0), different contexts are used for cases where there are no consecutive or few consecutive type Cs and cases where there are consecutive type Cs. Therefore, it may be possible to encode the connection type of the next triangle according to the occurrence probability of the connection type of the next triangle in each case. This may improve coding efficiency.

[0413] Note that when the threshold TH(0) is 2, the condition Crun<TH(0) in the example of Table T108-01 may be determined by another method that achieves the same result. For example, the condition may be determined such that type[0] is a value representing type C and type[1] is a value representing a type other than C.

[0414] Furthermore, in cases where type C is not consecutive, type[1] is frequently type R. Therefore, even if idx_1 is set as in the example of table T108-02 in FIG. 45, it is possible to obtain the same effect as when threshold TH(0) is 2 in table T108-1.

[0415] In general meshes, the number of consecutive Type Cs is often no more than 6 to 8. On the other hand, in large meshes with a large number of triangles constituting the mesh, the number of consecutive Type Cs can exceed 100.

[0416] Therefore, when a value of 7 or close to 7 is used as the threshold TH(1), different contexts are used for the case of a general mesh where the number of consecutive Type Cs is about 6 to 8 or less, and the case of a large mesh where an extremely large number of consecutive Type Cs occur. Therefore, it may be possible to encode the connection type of the next triangle according to the occurrence probability of the connection type of the next triangle in each case. This may improve coding efficiency.

[0417] Although the above example shows encoding, the same example can be applied to decoding by replacing encoding with decoding.

[0418] 44, the table used to determine idx_1 may be determined according to the connection type (type[0]) of the immediately preceding triangle that was coded / decoded. Specifically, when idx_0 is determined using table T106-01, the table for determining idx_1 may be determined as follows.

[0419] (1) If the connection type of the triangle previously coded or decoded is Type C, Table T108-01 may be used. In this case, c_idx may be determined to be 0, 1, or 2 depending on the number of consecutive Type C triangles.

[0420] (2) If the connection type of the previously coded or decoded triangle is type S, Table T107-06 may be used. In this case, c_idx may be determined to be 3.

[0421] (3) If the connection type of the previously coded or decoded triangle is Type L, Table T107-06 may be used. In this case, c_idx may be determined to be 4.

[0422] (4) If the connection type of the triangle previously coded or decoded is Type R, Table T107-14 may be used. In this case, c_idx may be determined to be 5, 6, or 7 depending on the connection type of the triangle coded or decoded two blocks before.

[0423] (5) If the connectivity type of the previously coded or decoded triangle is Type E, Table T107-06 may be used. In this case, c_idx may be determined to be 8.

[0424] As a result of trials, the inventors have discovered the following: If the immediately previous connection type (type[0]) is different, the correlation between the connection type of the triangle to be coded and the connection type two prior to that (type[1]) or the connection type three or more prior to that (type[n], n≧2) will differ. Therefore, by switching the method for determining idx_1 used to determine the context depending on the immediately previous connection type, it may be possible to improve the coding efficiency of entropy coding.

[0425] Therefore, by using the above combination, it may be possible to reduce the memory usage while suppressing a decrease in the coding efficiency of entropy coding.

[0426] In the above combination, if the connection type of the triangle that was previously coded / decoded is Type C, the same effect may be obtained even if idx_1 is determined using Table T108-02.

[0427] Fig. 46 is a flowchart showing a fifth specific example of connection type encoding according to this embodiment. That is, Fig. 46 shows an example of the encoding process (S603) in Fig. 36 and the encoding process (S1103) in Fig. 44.

[0428] In this example, the character strings of types C, L, E, R, and S are coded from the end to the beginning, i.e., in reverse order. That is, for the multiple triangles that make up the mesh, the connection type of each triangle is determined according to the processing order, and the connection type is coded in the reverse order of the processing order used to determine the connection type. Also, in this example, bit patterns 0, 110, 111, 101, and 100 are assigned to types C, L, E, R, and S, respectively, and entropy coding is performed on each bit pattern starting from the most significant bit.

[0429] Specifically, first, it is determined whether the connection type of the immediately preceding (previously) coded triangle is one of types L and E (S1201).

[0430] If the connection type of the previously coded triangle is Type L or Type E (Yes in S1201), it is determined that the connection type of the triangle to be coded is not Type C. Then, without coding the value of the first bit b0, it is determined whether the connection type of the triangle to be coded is either Type R or Type S (S1205).

[0431] If the connection type of the previously coded triangle is neither Type L nor Type E (No in S1201), it is determined whether the connection type of the triangle to be coded is Type C (S1202). If the connection type of the triangle to be coded is Type C (Yes in S1202), 0 is coded by entropy coding as the value of the first bit b0 according to c_idx (S1203).

[0432] If the connection type of the triangle to be coded is not type C (No: L, E, R, or S in S1202), the value of the first bit b0 is set to 1 by entropy coding according to c_idx (S1204). Then, it is determined whether the connection type of the triangle to be coded is either type R or type S (S1205).

[0433] If the connection type of the triangle to be coded is Type R or Type S (Yes in S1205), the value of the second bit b1 is set to 0 by entropy coding according to c_idx (S1206). Then, it is determined whether the connection type of the triangle to be coded is Type S (S1208).

[0434] If the connection type of the triangle to be coded is Type S (Yes in S1208), the value of the third bit b2 is set to 0 and coded by entropy coding according to c_idx (S1210). If the connection type of the triangle to be coded is not Type S (No: R in S1208), the value of the third bit b2 is set to 1 and coded by entropy coding according to c_idx (S1209).

[0435] If the connection type of the triangle to be coded is neither Type R nor Type S (No: L or E in S1205), the value of the second bit b1 is set to 1 by entropy coding according to c_idx (S1207). Then, it is determined whether the connection type of the triangle to be coded is Type L (S1211).

[0436] If the connection type of the triangle to be coded is Type L (Yes in S1211), the value of the third bit b2 is set to 0 and coded by entropy coding according to c_idx (S1213). If the connection type of the triangle to be coded is not Type L (No: E in S1211), the value of the third bit b2 is set to 1 and coded by entropy coding according to c_idx (S1212).

[0437] When arithmetic coding is used for entropy coding, a context used to determine the expected occurrence probability of information to be coded is determined from a plurality of contexts according to c_idx. When Huffman coding is used for entropy coding, a code word table used for coding is determined from a plurality of code word tables according to c_idx.

[0438] Furthermore, in entropy coding of the value of the third bit b2 (S1209, S1210, S1212, and S1213), the context or code word table may be determined according to the value of the second bit b1 in addition to c_idx.

[0439] Type C does not logically occur immediately after Type L or Type E. Therefore, immediately after Type L or Type E, it may be possible to encode the triangle connection type with a smaller amount of code by omitting encoding the first bit b0 that identifies Type C and encoding only the second bit b1 and the third bit b2.

[0440] In addition, instead of omitting the encoding of the first bit b0, it may be possible to reduce the amount of code for triangle connection types by always using the same context to encode the first bit b0 immediately after type L or type E.

[0441] 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, type S or R, and if b1 = 1, type L or E). Therefore, in entropy coding of the value of the third bit b2, by determining the context or code word table according to the value of the second bit b1 in addition to c_idx, it may be possible to further reduce the amount of code.

[0442] Alternatively, bit patterns 0, 011, 111, 101, and 001 may be assigned to types C, L, E, R, and S, respectively. Alternatively, unnecessary leading zeros may be omitted, and bit patterns 0, 11, 111, 101, and 1 may be assigned to types C, L, E, R, and S, respectively. Entropy coding may then be performed starting from the least significant bit of each bit pattern.

[0443] This allows types C, L, E, R and S to be assigned bit patterns 0, 110, 111, 101 and 100, respectively, and an operation corresponding to the above-described operation in which entropy coding is performed starting from the most significant bit can be performed.

[0444] In the above, encoding bits may include inputting the bits into a coding engine, where the bits may be compressed into fewer bits.

[0445] Fig. 47 is a flowchart showing a fifth specific example of connection-type decoding according to this embodiment. That is, Fig. 47 shows an example of the decoding process (S603) in Fig. 36 and the decoding process (S1103) in Fig. 44.

[0446] In this example, entropy decoding is performed on a bit string that has been coded using the coding method described with reference to Figure 46. That is, entropy decoding of a bit string in which character strings of types C, L, E, R, and S have been coded from the end to the beginning (i.e., in reverse order) is performed in the same decoding order as the coding order. Then, one of types C, L, E, R, and S is set as the connection type of the triangle to be decoded.

[0447] Specifically, first, it is determined whether the connection type of the triangle that has been decoded immediately before is one of types L and E (S1301).

[0448] If the connection type of the previously decoded triangle is Type L or Type E (Yes in S1301), it is determined that the connection type of the triangle to be decoded is not Type C. Then, the value of the first bit b0 is not decoded, and the value of the second bit b1 is decoded by entropy decoding according to c_idx (S1305). In this case, the value of the first bit b0 may be regarded as 1.

[0449] If the connection type of the previously decoded triangle is neither Type L nor Type E (No in S1301), the value of the first bit b0 is decoded by entropy decoding according to c_idx (S1302), and it is then determined whether the value of the first bit b0 is 0 (S1303).

[0450] If the value of the first bit b0 is 0 (Yes in S1303), the connection type of the triangle to be decoded is set to Type C (S1304). If the value of the first bit b0 is not 0 (No in S1303), the value of the second bit b1 is decoded by entropy decoding according to c_idx (S1305).

[0451] Next, the value of the third bit b2 is decoded by entropy decoding according to c_idx (S1306). Then, the bit patterns of the second bit b1 and the third bit b2 are determined (S1307 to S1309). Then, according to the determination result, the connection type of the triangle to be decoded is set to one of types L, E, R, or S (S1310 to S1313).

[0452] Specifically, if the value of the second bit b1 and the value of the third bit b2 are 0 and 0, respectively (Yes in S1307 and Yes in S1308), the connection type is set to type S (S1311). If the value of the second bit b1 and the value of the third bit b2 are 0 and 1, respectively (Yes in S1307 and No in S1308), the connection type is set to type R (S1310).

[0453] If the value of the second bit b1 and the value of the third bit b2 are 1 and 0, respectively (No in S1307 and Yes in S1309), the connection type is set to Type L (S1313). If the value of the second bit b1 and the value of the third bit b2 are 1 and 1, respectively (No in S1307 and No in S1309), the connection type is set to Type E (S1312).

[0454] When arithmetic decoding is used for entropy decoding, a context used to determine the expected occurrence probability of information to be decoded is determined from a plurality of contexts according to c_idx. When Huffman decoding is used for entropy decoding, a code word table used for decoding is determined from a plurality of code word tables according to c_idx. Furthermore, in the entropy decoding of the value of the third bit b2 (S1306), the context or code word table may be determined according to the value of the second bit b1 in addition to c_idx.

[0455] Type C does not logically occur immediately after Type L or Type E. Therefore, immediately after Type L or Type E, it may be possible to decode the triangle connection type with a smaller amount of code by omitting decoding the first bit b0 that identifies Type C and decoding only the second bit b1 and the third bit b2.

[0456] In addition, instead of omitting the decoding of the first bit b0, it may be possible to reduce the amount of code for triangular connection types by always using the same context to decode the first bit b0 immediately after type L or type E.

[0457] 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, type S or R, and if b1 = 1, type L or E). Therefore, in entropy decoding of the value of the third bit b2, by determining the context or code word table according to the value of the second bit b1 in addition to c_idx, it may be possible to further reduce the amount of code.

[0458] Alternatively, bit patterns 0, 011, 111, 101, and 001 may be assigned to types C, L, E, R, and S, respectively. Alternatively, unnecessary leading zeros may be omitted, and bit patterns 0, 11, 111, 101, and 1 may be assigned to types C, L, E, R, and S, respectively. Then, entropy decoding may be performed in order from the least significant bit of each bit pattern.

[0459] As a result, bit patterns 0, 110, 111, 101 and 100 are assigned to types C, L, E, R and S, respectively, and an operation corresponding to the above-described operation in which entropy decoding is performed in order from the most significant bit can be performed.

[0460] As described above, in the processing order used to determine the connection type, if the previous connection type is Type C, the connection type to be processed is neither Type L nor Type E. Therefore, in the reverse processing order used to determine the connection type, if the previous connection type is Type L or E, the connection type to be processed is not Type C.

[0461] Therefore, when encoding and decoding are performed in the reverse order of the processing order for determining the connection type, if the immediately preceding connection type is type L or E, encoding and decoding are performed on information for identifying the connection type to be processed from the candidate set of types L, E, R, and S. This may make it possible to reduce the amount of code compared to encoding and decoding information for identifying the connection type from a candidate set of all types.

[0462] Here, when the immediately preceding connection type is type L or E, a candidate set of types L, E, R, and S is used as the candidate set of connection types for the triangle to be processed. However, the present invention is not limited to this example, and the candidate set of connection types to be processed may be determined by the previously processed connection type.

[0463] For example, five connection types are defined here. However, the connection types may be defined in other ways. For example, four or fewer connection types may be defined, or six or more connection types may be defined. Furthermore, the shape of the faces is not limited to triangles, and may be other polygonal shapes. Then, the connection types may be defined based on the shapes.

[0464] Then, a candidate set of connection types for the face to be processed may be defined from the connection types of previously processed faces according to the shape of each face, the definition of each type, and geometric characteristics. This may enable efficient encoding of the connection types and may reduce the amount of coding. Note that in the above, encoding may be interpreted as decoding.

[0465] <Representative Example> Fig. 48 is a flowchart showing an example of the basic first encoding process according to this embodiment. For example, the circuit 151 of the encoding device 100 shown in Fig. 24 performs the encoding process shown in Fig. 48 in operation.

[0466] Specifically, for each face constituting the 3D mesh, the circuit 151 encodes the connection type relating to the connection relationship between the target face and unprocessed faces using context-based arithmetic coding (S1410). Here, the multiple examples of the connection type relating to the connection relationship between the target face and unprocessed faces may include a type in which the target face is not connected to any unprocessed faces (e.g., the above-mentioned type E).

[0467] Fig. 49 is a flowchart showing an example of the processing included in the basic first encoding processing according to this embodiment. For example, the circuit 151 of the encoding device 100 shown in Fig. 24 performs the processing shown in Fig. 49 in the encoding processing (S1410) shown in Fig. 48.

[0468] Specifically, in encoding of the current connection type, the circuit 151 selects a context to be applied to arithmetic encoding from among multiple contexts using the first preceding connection type (S1411). At that time, if the first preceding connection type is a corner type, the circuit 151 selects a context according to the number of one or more corner types that have been encoded consecutively up to the first preceding connection type.

[0469] Here, the current connection type is the connection type to be coded. The first preceding connection type is the connection type coded before the current connection type. The corner type is a type in which two unprocessed faces are connected to both the right and left sides of the face to be processed along a path leading to the face to be processed in the processing order, and all of the faces connected to the vertices of the face to be processed, including the two unprocessed faces, are unprocessed.

[0470] This may enable selection of a context for arithmetic coding of the current connection type, which may have different probability distributions depending on the number of consecutive corner types, according to the number of consecutive corner types. Therefore, it may be possible to improve the compression rate based on the characteristics of the information of the 3D mesh. Therefore, it may be possible to efficiently code the connection type, and it may be possible to reduce the amount of code.

[0471] For example, circuit 151 may use the number of consecutively coded corner types and one or more thresholds to determine which of a plurality of categories the consecutively coded numbers of one or more corner types belong to, and may select a context according to the category to which the consecutively coded numbers of one or more corner types belong.

[0472] This makes it possible to appropriately determine the category corresponding to the number of consecutive corner types. Therefore, it becomes possible to appropriately select a context according to the appropriately determined category. Therefore, it may be possible to efficiently encode the connection type, and it may be possible to reduce the amount of code.

[0473] Furthermore, for example, the one or more thresholds may include a first threshold and a second threshold, and the plurality of divisions may include a first division, a second division, and a third division.

[0474] This makes it possible to appropriately determine the category corresponding to the number of consecutive corner types from among the three categories using two thresholds, and therefore to appropriately select a context depending on the appropriately determined category.

[0475] For example, circuit 151 may determine that the number of consecutively encoded corner types belongs to the first category if the number of consecutively encoded corner types is less than a first threshold, or that the number of consecutively encoded corner types belongs to the second category if the number of consecutively encoded corner types is greater than or equal to the first threshold and less than a second threshold.

[0476] Then, circuit 151 may determine that the number of one or more consecutively coded corner types belongs to a third category if the number of one or more consecutively coded corner types is greater than or equal to a second threshold.

[0477] This makes it possible to appropriately determine the category corresponding to the number of consecutive corner types from among the three categories by comparing the number of consecutive corner types with the two thresholds, and therefore to appropriately select a context depending on the appropriately determined category.

[0478] Furthermore, for example, the connection type may be any one of a corner type, a branch type, a right type, a left type, and a terminal type, where the branch type may be a type in which two unprocessed faces are connected to both the right and left sides of the face to be processed along a path leading to the face to be processed in the processing order, and which is different from the corner type.

[0479] The right type may be a type in which, along the path leading to the target face in the processing order, no unprocessed face is connected to the right side of the target face, but an unprocessed face is connected to the left side of the target face. The left type may be a type in which, along the path leading to the target face in the processing order, no unprocessed face is connected to the left side of the target face, but an unprocessed face is connected to the right side of the target face. The terminal type may be a type in which, along the path leading to the target face in the processing order, no unprocessed face is connected to the left or right side of the target face.

[0480] Then, when the first preceding connection type is a right type, circuit 151 may select a context according to whether the second preceding connection type is (i) a corner type, (ii) a right type, or (iii) neither a corner type nor a right type, where the second preceding connection type is a connection type coded before the first preceding connection type.

[0481] In addition, when the first preceding connection type is one of a branch type, a left type, and a termination type, the circuit 151 may select a context according to whether the first preceding connection type is a branch type, a left type, or a termination type.

[0482] This may allow for appropriate selection of a context for the arithmetic coding of the current connection type depending on whether the first preceding connection type is a corner type, a branch type, a right type, a left type or a termination type.

[0483] Furthermore, when the first preceding connection type is a corner type, it may be possible to appropriately select a context according to the number of consecutive corner types, and when the first preceding connection type is a right type, it may be possible to appropriately select a context according to whether the second preceding connection type is a corner type, a right type, or other.

[0484] It may therefore be possible to appropriately select a context for arithmetic coding of the current connection type, which may have different probability distributions depending on the characteristics of one or more connection types coded before the current connection type.

[0485] Also, for example, the connection type may be a type defined by an edge breaker. The corner type may be a type C defined by an edge breaker. The branch type may be a type S defined by an edge breaker. The right type may be a type R defined by an edge breaker. The left type may be a type L defined by an edge breaker. The termination type may be a type E defined by an edge breaker.

[0486] This may enable efficient coding of the connection types defined by the edge breakers, thereby reducing the amount of coding required for the connection types defined by the edge breakers.

[0487] In the above, circuit 151 of encoding device 100 performs each process, but connection information encoder 102 or 145 of encoding device 100 may perform each of the above processes, or other components may perform each of the above processes.

[0488] 50 is a flowchart showing an example of the basic first decoding process according to this embodiment. For example, the circuit 251 of the decoding device 200 shown in FIG. 25 performs the decoding process shown in FIG. 50 in operation.

[0489] Specifically, for each face constituting the three-dimensional mesh, the circuit 251 decodes the connection type relating to the connection relationship between the target face and unprocessed faces by context-based arithmetic decoding (S1510). Here, the multiple examples of the connection type relating to the connection relationship between the target face and unprocessed faces may include a type in which the target face is not connected to any unprocessed faces (e.g., the above-mentioned type E).

[0490] Fig. 51 is a flowchart showing an example of the processing included in the basic first decoding processing according to this embodiment. For example, the circuit 251 of the decoding device 200 shown in Fig. 25 performs the processing shown in Fig. 51 in the decoding processing (S1510) shown in Fig. 50.

[0491] Specifically, in decoding of the current connection type, the circuit 251 selects a context to be applied to arithmetic decoding from among multiple contexts using a first preceding connection type (S1511). At this time, if the first preceding connection type is a corner type, the circuit 251 selects a context according to the number of one or more corner types that have been successively decoded up to the first preceding connection type.

[0492] Here, the current connection type is the connection type to be decoded. The first preceding connection type is the connection type decoded before the current connection type. The corner type is a type in which two unprocessed faces are connected to both the right and left sides of the face to be processed along a path leading to the face to be processed in the processing order, and all of the faces connected to the vertices of the face to be processed, including the two faces, are unprocessed.

[0493] This may enable selection of a context for arithmetic decoding of the current connection type, which may have different probability distributions depending on the number of consecutive corner types, according to the number of consecutive corner types. Therefore, it may be possible to improve the compression rate based on the characteristics of the information of the three-dimensional mesh. Therefore, it may be possible to efficiently decode the connection type, and it may be possible to reduce the amount of code.

[0494] For example, circuit 251 may use the number of consecutively decoded one or more corner types and one or more thresholds to determine which of a plurality of categories the consecutively decoded number of one or more corner types belongs to, and may select a context according to the category to which the consecutively decoded number of one or more corner types belongs.

[0495] This makes it possible to appropriately determine the category corresponding to the number of consecutive corner types. Therefore, it becomes possible to appropriately select a context according to the appropriately determined category. Therefore, it may be possible to efficiently decode the connection type, and it may be possible to reduce the amount of coding.

[0496] Furthermore, for example, the one or more thresholds may include a first threshold and a second threshold, and the plurality of divisions may include a first division, a second division, and a third division.

[0497] This makes it possible to appropriately determine the category corresponding to the number of consecutive corner types from among the three categories using two thresholds, and therefore to appropriately select a context depending on the appropriately determined category.

[0498] For example, circuit 251 may determine that the number of consecutively decoded corner types belongs to the first category if the number of consecutively decoded corner types is smaller than a first threshold, or that the number of consecutively decoded corner types belongs to the second category if the number of consecutively decoded corner types is equal to or greater than the first threshold and smaller than a second threshold.

[0499] Then, circuit 251 may determine that the number of one or more consecutively decoded corner types belongs to a third category if the number of one or more consecutively decoded corner types is greater than or equal to a second threshold.

[0500] This makes it possible to appropriately determine the category corresponding to the number of consecutive corner types from among the three categories by comparing the number of consecutive corner types with the two thresholds, and therefore to appropriately select a context depending on the appropriately determined category.

[0501] Furthermore, for example, the connection type may be any one of a corner type, a branch type, a right type, a left type, and a terminal type. Here, the branch type is a type in which two unprocessed faces are connected to both the right and left sides of the face to be processed along a path leading to the face to be processed in the processing order, and may be a type different from the corner type.

[0502] The right type may be a type in which, along the path leading to the target face in the processing order, no unprocessed face is connected to the right side of the target face, but an unprocessed face is connected to the left side of the target face. The left type may be a type in which, along the path leading to the target face in the processing order, no unprocessed face is connected to the left side of the target face, but an unprocessed face is connected to the right side of the target face. The terminal type may be a type in which, along the path leading to the target face in the processing order, no unprocessed face is connected to the left or right side of the target face.

[0503] Then, when the first preceding connection type is a right type, circuitry 251 may select a context according to whether the second preceding connection type is (i) a corner type, (ii) a right type, or (iii) neither a corner type nor a right type, where the second preceding connection type is a connection type decoded before the first preceding connection type.

[0504] In addition, when the first preceding connection type is one of a branch type, a left type, and a termination type, the circuit 251 may select a context according to whether the first preceding connection type is a branch type, a left type, or a termination type.

[0505] This may enable appropriate selection of a context for arithmetic decoding of the current connection type depending on whether the first preceding connection type is a corner type, a branch type, a right type, a left type, or a termination type.

[0506] Furthermore, when the first preceding connection type is a corner type, it may be possible to appropriately select a context according to the number of consecutive corner types, and when the first preceding connection type is a right type, it may be possible to appropriately select a context according to whether the second preceding connection type is a corner type, a right type, or other.

[0507] Thus, it may be possible to appropriately select a context for arithmetic decoding of the current connection type, which may have different probability distributions depending on the characteristics of one or more connection types decoded before the current connection type.

[0508] Also, for example, the connection type may be a type defined by an edge breaker. The corner type may be a type C defined by an edge breaker. The branch type may be a type S defined by an edge breaker. The right type may be a type R defined by an edge breaker. The left type may be a type L defined by an edge breaker. The termination type may be a type E defined by an edge breaker.

[0509] This may enable efficient decoding of the connection type defined by the edge breaker, thereby reducing the amount of code for the connection type defined by the edge breaker.

[0510] In the above, circuit 251 of decoding device 200 performs each process, but connection information decoder 202 or 245 of decoding device 200 may perform each of the above processes, or other components may perform each of the above processes.

[0511] 52 is a flowchart showing an example of the basic second encoding process according to this embodiment. For example, the circuit 151 of the encoding device 100 shown in FIG. 24 performs the encoding process shown in FIG. 52 in operation.

[0512] Specifically, for each face constituting the three-dimensional mesh, the circuit 151 encodes the connection type relating to the connection relationship between the face to be processed and unprocessed faces in the reverse order of the processing order in which the connection type is defined (S1610). Here, the multiple examples of the connection type relating to the connection relationship between the face to be processed and unprocessed faces may include a type in which the face to be processed is not connected to any unprocessed faces (e.g., the above-mentioned type E).

[0513] Fig. 53 is a flowchart showing an example of the processing included in the basic second encoding processing according to this embodiment. For example, the circuit 151 of the encoding device 100 shown in Fig. 24 performs the processing shown in Fig. 53 in the encoding processing (S1610) shown in Fig. 52.

[0514] Specifically, in encoding the current connection type, the circuit 151 encodes, as the current connection type, information for identifying the current connection type from a candidate set defined according to the preceding connection type (S1611). More specifically, if the preceding connection type is a left type or a termination type, the candidate set does not include a corner type. On the other hand, if the preceding connection type is neither a left type nor a termination type, the candidate set includes a corner type.

[0515] Here, the current connection type is the connection type to be coded. The preceding connection type is the connection type coded before the current connection type. The corner type is a type in which two unprocessed faces are connected to both the right and left sides of the face to be processed along the path leading to the face to be processed in the processing order, and all of the faces connected to the vertices of the face to be processed, including the two unprocessed faces, are unprocessed.

[0516] The left type is a type in which, along the path leading to the target face in the processing order, no unprocessed face is connected to the left side of the target face, and an unprocessed face is connected to the right side of the target face. The terminal type is a type in which, along the path leading to the target face in the processing order, no unprocessed face is connected to the left or right side of the target face.

[0517] This may make it possible to control whether or not to include a corner type in the candidate set of the current connection type depending on whether the preceding connection type is one of the left type and the terminal type. Therefore, it may be possible to narrow down the candidate set of the current connection type depending on the preceding connection type. Therefore, it may be possible to reduce the amount of information required to identify the current connection type. Therefore, it may be possible to efficiently encode the connection type, and it may be possible to reduce the amount of code.

[0518] For example, the connection type may be a type defined by an edge breaker, the corner type may be a type C defined by an edge breaker, the left type may be a type L defined by an edge breaker, and the termination type may be a type E defined by an edge breaker.

[0519] This may enable efficient coding of the connection types defined by the edge breakers, thereby reducing the amount of coding required for the connection types defined by the edge breakers.

[0520] In the above, circuit 151 of encoding device 100 performs each process, but connection information encoder 102 or 145 of encoding device 100 may perform each of the above processes, or other components may perform each of the above processes.

[0521] 54 is a flowchart showing an example of the basic second decoding process according to this embodiment. For example, the circuit 251 of the decoding device 200 shown in FIG. 25 performs the decoding process shown in FIG. 54 in operation.

[0522] Specifically, for each face constituting the three-dimensional mesh, the circuit 251 decodes the connection type relating to the connection relationship between the face to be processed and unprocessed faces in the reverse order of the processing order in which the connection types are defined (S1710). Here, the multiple examples of the connection type relating to the connection relationship between the face to be processed and unprocessed faces may include a type in which the face to be processed is not connected to any unprocessed faces (e.g., the above-mentioned type E).

[0523] Fig. 55 is a flowchart showing an example of the processing included in the basic second decoding processing according to this embodiment. For example, the circuit 251 of the decoding device 200 shown in Fig. 25 performs the processing shown in Fig. 55 in the decoding processing (S1710) shown in Fig. 54.

[0524] Specifically, in decoding the current connection type, the circuit 251 decodes, as the current connection type, information for identifying the current connection type from a candidate set defined according to the preceding connection type (S1711). More specifically, if the preceding connection type is a left type or a termination type, the candidate set does not include a corner type. On the other hand, if the preceding connection type is neither a left type nor a termination type, the candidate set includes a corner type.

[0525] Here, the current connection type is the connection type to be decoded. The preceding connection type is the connection type decoded before the current connection type. The corner type is a type in which two unprocessed faces are connected to both the right and left sides of the face to be processed along a path leading to the face to be processed in the processing order, and all of the faces connected to the vertices of the face to be processed, including the two unprocessed faces, are unprocessed.

[0526] The left type is a type in which, along the path leading to the target face in the processing order, no unprocessed face is connected to the left side of the target face, and an unprocessed face is connected to the right side of the target face. The terminal type is a type in which, along the path leading to the target face in the processing order, no unprocessed face is connected to the left or right side of the target face.

[0527] This may enable control of whether or not to include a corner type in the candidate set of the current connection type depending on whether the preceding connection type is one of the left type and the terminal type. Therefore, it may be possible to narrow down the candidate set of the current connection type depending on the preceding connection type. Therefore, it may be possible to reduce the amount of information required to identify the current connection type. Therefore, it may be possible to efficiently decode the connection type and reduce the amount of coding.

[0528] For example, the connection type may be a type defined by an edge breaker, the corner type may be a type C defined by an edge breaker, the left type may be a type L defined by an edge breaker, and the termination type may be a type E defined by an edge breaker.

[0529] This may enable efficient decoding of the connection type defined by the edge breaker, thereby reducing the amount of code for the connection type defined by the edge breaker.

[0530] In the above, circuit 251 of decoding device 200 performs each process, but connection information decoder 202 or 245 of decoding device 200 may perform each of the above processes, or other components may perform each of the above processes.

[0531] In the above examples, in the branching type, unprocessed faces may be connected to the left and right sides of the face to be processed, and processed faces may be connected to the vertices of the face to be processed (v in FIG. 29). Alternatively, in the branching type, unprocessed faces may be connected to the left and right sides of the face to be processed, and the mesh boundary may be connected to the vertices of the face to be processed (v in FIG. 29).

[0532] In other words, in the branch type, multiple unprocessed faces may be connected to the vertices of the target face by branching, whereas in the corner type, multiple unprocessed faces may be connected to the vertices of the target face without branching.

[0533] That is, the branch type may be a type in which two unprocessed faces are connected to both the right and left sides of the surface to be processed along a path leading to the surface to be processed in the processing order, and a plurality of unprocessed faces including the two faces branch off and are connected to the vertices of the surface to be processed. Also, the corner type may be a type in which two unprocessed faces are connected to both the right and left sides of the surface to be processed along a path leading to the surface to be processed in the processing order, and a plurality of unprocessed faces including the two faces are connected to the vertices of the surface to be processed without branching.

[0534] In the above description, a connection may be expressed as a linkage, and a connection type may be expressed as connection information or linkage information.

[0535] <Other Examples> Although aspects of the encoding device 100 and the decoding device 200 have been described above according to the embodiments, the aspects of the encoding device 100 and the decoding device 200 are not limited to the embodiments. Modifications conceivable by those skilled in the art may be applied to the embodiments, and multiple components in the embodiments may be combined in any manner.

[0536] For example, a process performed by a specific component in the embodiment may be performed by another component instead of the specific component. Also, the order of multiple processes may be changed, or multiple processes may be performed in parallel.

[0537] Furthermore, as described above, at least some of the configurations of the present disclosure may be implemented as an integrated circuit. At least some of the processes of the present disclosure may 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 may be used. A non-transitory computer-readable recording medium on which the program is recorded may be used. A bitstream for causing the decoding device 200 to perform a decoding process may be used.

[0538] Furthermore, at least some of the configurations and processes of the present disclosure may be used as a transmitting device, a receiving device, a transmitting method, or a receiving method. A program for causing a computer to execute the transmitting method or the receiving method may be used. Furthermore, a non-transitory computer-readable recording medium on which the program is recorded may be used.

[0539] Also, for example, a phrase "at least one of" a first element, a second element, and a third element corresponds to the first element, the second element, the third element, or any combination thereof.

[0540] In the present disclosure, setting a first element to a first value may mean determining the value of the element to the first value. Furthermore, the expression "setting a first element to a first value" may be replaced with the expression "setting the first element to the first value."

[0541] The present disclosure is useful, for example, in encoding devices, decoding devices, transmitting devices, receiving devices, etc. related to three-dimensional meshes, and is applicable to computer graphics systems, three-dimensional data display systems, etc.

[0542] 100 Encoding device 101, 121, 144 Vertex information encoder 102, 145 Connection information encoder 103, 122 Attribute information encoder 104, 204, 521 Preprocessor 105, 205, 623 Postprocessor 110 Three-dimensional data encoding system 111, 211 Controller 112, 212 Input / output processor 113 Three-dimensional data encoder 114 System multiplexer 115 Three-dimensional data generator 123 Metadata encoder 124 Multiplexer 131 Vertex image generator 132 Attribute image generator 133 Metadata generator 134 Video encoder 141 Two-dimensional data encoder 142 Mesh data encoder 143 Texture encoder 148 Description encoder 151, 251 Circuit 152, 252 Memory 200 Decoding device 201, 221, 244 Vertex information decoder 202, 245 Connection information decoder 203, 222 Attribute information decoder 210 Three-dimensional data decoding system 213 Three-dimensional data decoder 214 System demultiplexer 215, 247 Presentation device 216 User interface 223 Metadata decoder 224 Demultiplexer 231 Vertex information generator 232 Attribute information generator 234 Video decoder 241 Two-dimensional data decoder 242 Mesh data decoder 243 Texture decoder 246 Mesh reconstructor 248 Description decoder 300 Network 310 External connection device 522 Encoding processor 622 Decoding processor

Claims

1. An encoding device comprising: a memory; and a circuit capable of accessing the memory, wherein the circuit, in an operation, for each of a plurality of faces constituting a three-dimensional mesh, encodes a connection type relating to a connection relationship between the face to be processed and an unprocessed face by context-based arithmetic coding; in encoding a current connection type, which is the connection type to be encoded, selects the context to be applied to the arithmetic coding from a plurality of contexts using a first preceding connection type, which is the connection type encoded before the current connection type; when the first preceding connection type is a corner type, selects the context according to the number of one or more corner types, each of which is the corner type, that have been encoded consecutively up to the first preceding connection type; and the corner type is a type in which two unprocessed faces are connected to both the right and left sides of the face to be processed along a path leading to the face to be processed in processing order, and all of the faces connected to the vertices of the face to be processed, including the two unprocessed faces, are unprocessed.

2. The encoding device according to claim 1, wherein the circuit determines which of a plurality of categories the number of the one or more corner types belongs to using the number of the one or more corner types and one or more thresholds, and selects the context according to the category to which the number of the one or more corner types belongs.

3. The encoding device according to claim 2, wherein the one or more thresholds include a first threshold and a second threshold, and the plurality of divisions include a first division, a second division, and a third division.

4. The encoding device of claim 3, wherein the circuit determines that the number of the one or more corner types belongs to the first category if the number of the one or more corner types is smaller than the first threshold, determines that the number of the one or more corner types belongs to the second category if the number of the one or more corner types is greater than or equal to the first threshold and less than the second threshold, and determines that the number of the one or more corner types belongs to the third category if the number of the one or more corner types is greater than or equal to the second threshold.

5. The connection type is any one of the corner type, branch type, right type, left type and terminal type, the branch type being a type in which two unprocessed faces are connected to both the right and left sides of the face to be processed along a path leading to the face to be processed in the processing order and being different from the corner type, the right type being a type in which an unprocessed face is not connected to the right side of the face to be processed along a path leading to the face to be processed in the processing order and an unprocessed face is connected to the left side of the face to be processed, the left type being a type in which an unprocessed face is not connected to the left side of the face to be processed along a path leading to the face to be processed in the processing order and an unprocessed face is connected to the right side of the face to be processed, the terminal type being a type in which an unprocessed face is not connected to either the left or right side of the face to be processed along a path leading to the face to be processed in the processing order, the circuit being The encoding device according to any one of claims 1 to 4, wherein, when the first preceding connection type is the right type, the context is selected according to whether a second preceding connection type, which is the connection type encoded before the first preceding connection type, is (i) the corner type, (ii) the right type, or (iii) neither the corner type nor the right type; and, when the first preceding connection type is any of the branching type, the left type, and the termination type, the context is selected according to whether the first preceding connection type is the branching type, the left type, or the termination type.

6. The encoding device of claim 5, wherein the connection type is a type defined by an edge breaker, the corner type is type C defined by the edge breaker, the branch type is type S defined by the edge breaker, the right type is type R defined by the edge breaker, the left type is type L defined by the edge breaker, and the termination type is type E defined by the edge breaker.

7. A method for encoding a three-dimensional mesh comprising: encoding, for each of a plurality of faces constituting the three-dimensional mesh, a connection type relating to a connection relationship between the face to be processed and an unprocessed face in a reverse processing order to a processing order in which the connection type is defined; in encoding a current connection type which is the connection type to be encoded, encoding, as the current connection type, information for identifying the current connection type from a candidate set defined according to a preceding connection type which is the connection type encoded before the current connection type; if the preceding connection type is a left type or a terminal type, the candidate set does not include a corner type; if the preceding connection type is neither the left type nor the terminal type, the candidate set includes the corner type; the corner type is a type in which two unprocessed faces are connected to both the right and left sides of the face to be processed along a path leading to the face to be processed in the processing order, and all of the faces connected to the vertices of the face to be processed, including the two unprocessed faces, are unprocessed; An encoding device, wherein the left type is a type in which, along a path leading to the face to be processed in the processing order, no unprocessed face is connected to the left side of the face to be processed, and an unprocessed face is connected to the right side of the face to be processed, and the terminal type is a type in which, along a path leading to the face to be processed in the processing order, no unprocessed face is connected to either the left or right side of the face to be processed.

8. The encoding device of claim 7, wherein the connection type is a type defined by an edge breaker, the corner type is type C defined by the edge breaker, the left type is type L defined by the edge breaker, and the termination type is type E defined by the edge breaker.

9. A decoding device comprising: a memory; and a circuit capable of accessing the memory, wherein the circuit, in operation, decodes a connection type relating to a connection relationship between a target face and an unprocessed face for each of a plurality of faces constituting a three-dimensional mesh by arithmetic decoding based on a context; in decoding a current connection type which is the connection type to be decoded, selects the context to be applied to the arithmetic decoding from among a plurality of contexts using a first preceding connection type which is the connection type decoded before the current connection type; when the first preceding connection type is a corner type, selects the context according to the number of one or more corner types, each of which is the corner type, which have been successively decoded up to the first preceding connection type; and the corner type is a type in which two unprocessed faces are connected to both the right and left sides of the target face along a path leading to the target face in processing order, and all of the plurality of faces connected to the vertices of the target face, including the two unprocessed faces, are unprocessed.

10. The decoding device of claim 9, wherein the circuit uses the number of the one or more corner types and one or more thresholds to determine to which of a plurality of classifications the number of the one or more corner types belongs, and selects the context according to the classification to which the number of the one or more corner types belongs.

11. The decoding device according to claim 10, wherein the one or more thresholds include a first threshold and a second threshold, and the plurality of divisions include a first division, a second division, and a third division.

12. The decoding device of claim 11, wherein the circuit determines that the number of the one or more corner types belongs to the first category if the number of the one or more corner types is smaller than the first threshold, determines that the number of the one or more corner types belongs to the second category if the number of the one or more corner types is greater than or equal to the first threshold and less than the second threshold, and determines that the number of the one or more corner types belongs to the third category if the number of the one or more corner types is greater than or equal to the second threshold.

13. The connection type is any one of the corner type, branch type, right type, left type and terminal type, the branch type being a type in which two unprocessed faces are connected to both the right and left sides of the face to be processed along a path leading to the face to be processed in the processing order, and being a type different from the corner type, the right type being a type in which an unprocessed face is not connected to the right side of the face to be processed along a path leading to the face to be processed in the processing order, and an unprocessed face is connected to the left side of the face to be processed, the left type being a type in which an unprocessed face is not connected to the left side of the face to be processed along a path leading to the face to be processed in the processing order, and an unprocessed face is connected to the right side of the face to be processed, the terminal type being a type in which an unprocessed face is not connected to either the left or right side of the face to be processed along a path leading to the face to be processed in the processing order, and the circuit is The decoding device according to any one of claims 9 to 12, wherein, when the first preceding connection type is the right type, the context is selected according to whether a second preceding connection type, which is the connection type decoded before the first preceding connection type, is (i) the corner type, (ii) the right type, or (iii) neither the corner type nor the right type; and, when the first preceding connection type is any of the branch type, the left type, and the termination type, the context is selected according to whether the first preceding connection type is the branch type, the left type, or the termination type.

14. The decoding device of claim 13, wherein the connection type is a type defined by an edge breaker, the corner type is type C defined by the edge breaker, the branch type is type S defined by the edge breaker, the right type is type R defined by the edge breaker, the left type is type L defined by the edge breaker, and the termination type is type E defined by the edge breaker.

15. A method for decoding a three-dimensional mesh comprising: decoding, in an operation, for each of a plurality of faces constituting a three-dimensional mesh, a connection type relating to a connection relationship between the face to be processed and an unprocessed face in a reverse order to a processing order in which the connection type is defined; in decoding a current connection type which is the connection type to be decoded, decoding, as the current connection type, information for identifying the current connection type from a candidate set defined according to a preceding connection type which is the connection type decoded before the current connection type; if the preceding connection type is a left type or a terminal type, the candidate set does not include a corner type; if the preceding connection type is neither the left type nor the terminal type, the candidate set includes the corner type; the corner type is a type in which two unprocessed faces are connected to both the right and left sides of the face to be processed along a path leading to the face to be processed in the processing order, and all of the faces connected to the vertices of the face to be processed, including the two unprocessed faces, are unprocessed; A decoding device wherein the left type is a type in which, along a path leading to the face to be processed in the processing order, no unprocessed face is connected to the left side of the face to be processed, and an unprocessed face is connected to the right side of the face to be processed; and the terminal type is a type in which, along a path leading to the face to be processed in the processing order, no unprocessed face is connected to either the left or right side of the face to be processed.

16. The decoding device of claim 15, wherein the connection type is a type defined by an edge breaker, the corner type is type C defined by the edge breaker, the left type is type L defined by the edge breaker, and the termination type is type E defined by the edge breaker.

17. A method for encoding, for each of a plurality of faces constituting a three-dimensional mesh, a connection type relating to a connection relationship between the face to be processed and an unprocessed face by context-based arithmetic coding; in encoding a current connection type, which is the connection type to be encoded, selecting a context to be applied to the arithmetic coding from a plurality of contexts using a first preceding connection type, which is the connection type encoded before the current connection type; if the first preceding connection type is a corner type, selecting the context according to the number of one or more corner types, each of which is the corner type, encoded consecutively up to the first preceding connection type; the corner type is a type in which two unprocessed faces are connected to both the right and left sides of the face to be processed along a path leading to the face to be processed in processing order, and all of the faces connected to the vertices of the face to be processed, including the two unprocessed faces, are unprocessed.

18. For each of a plurality of faces constituting a three-dimensional mesh, a connection type relating to a connection relationship between the face to be processed and an unprocessed face is encoded in a reverse processing order to the processing order in which the connection type is defined; in encoding a current connection type, which is the connection type to be encoded, information for identifying the current connection type from a candidate set defined according to a preceding connection type, which is the connection type encoded before the current connection type, is encoded as the current connection type; if the preceding connection type is a left type or a terminal type, the candidate set does not include a corner type; if the preceding connection type is neither the left type nor the terminal type, the candidate set includes the corner type; the corner type is a type in which two unprocessed faces are connected to both the right and left sides of the face to be processed along a path leading to the face to be processed in the processing order, and all of the faces connected to the vertices of the face to be processed, including the two unprocessed faces, are unprocessed; An encoding method in which the left type is a type in which, along a path leading to the face to be processed in the processing order, no unprocessed face is connected to the left side of the face to be processed, and an unprocessed face is connected to the right side of the face to be processed, and the terminal type is a type in which, along a path leading to the face to be processed in the processing order, no unprocessed face is connected to either the left or right side of the face to be processed.

19. A decoding method comprising the steps of: for each of a plurality of faces constituting a three-dimensional mesh, decoding a connection type relating to a connection relationship between the face to be processed and an unprocessed face by arithmetic decoding based on a context; in decoding a current connection type which is the connection type to be decoded, selecting the context to be applied to the arithmetic decoding from among a plurality of contexts using a first preceding connection type which is the connection type decoded before the current connection type; if the first preceding connection type is a corner type, selecting the context according to the number of one or more corner types, each of which is the corner type, which have been successively decoded up to the first preceding connection type; and the corner type is a type in which two unprocessed faces are connected to both the right and left sides of the face to be processed along a path leading to the face to be processed in processing order, and all of the faces connected to the vertices of the face to be processed, including the two unprocessed faces, are unprocessed.

20. For each of a plurality of faces constituting a three-dimensional mesh, a connection type relating to a connection relationship between the face to be processed and an unprocessed face is decoded in a reverse processing order to the processing order in which the connection type is defined; in decoding a current connection type, which is the connection type to be decoded, information for identifying the current connection type from a candidate set defined according to a preceding connection type, which is the connection type decoded before the current connection type, is decoded as the current connection type; if the preceding connection type is a left type or a terminal type, the candidate set does not include a corner type; if the preceding connection type is neither the left type nor the terminal type, the candidate set includes the corner type; the corner type is a type in which two unprocessed faces are connected to both the right and left sides of the face to be processed along a path leading to the face to be processed in the processing order, and all of the faces connected to the vertices of the face to be processed, including the two unprocessed faces, are unprocessed; A decoding method in which the left type is a type in which, along a path leading to the face to be processed in the processing order, no unprocessed face is connected to the left side of the face to be processed, and an unprocessed face is connected to the right side of the face to be processed, and the terminal type is a type in which, along a path leading to the face to be processed in the processing order, no unprocessed face is connected to either the left or right side of the face to be processed.

Citation Information

Patent Citations

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

    JP2006187015A

  • Method and apparatus for encoding and decoding a symbol sequence when each symbol may have one of three or more possible symbol values.

    JP2012523602A

  • Method and system of encoding the connectivity of a triangle mesh

    WO2004040517A1

  • Connectivity information coding method and apparatus for coded mesh representation

    WO2023023411A1