Encoder, decoder, transmission device, encoding method, decoding method and transmission method
The encoding and decoding devices address inefficiencies in three-dimensional mesh encoding by selecting between normal and exceptional modes for vertex encoding and decoding, using triangles that share sides or vertices with the reference triangle, enhancing encoding efficiency and reducing code variation.
Patent Information
- Application Number
- JP2025128166
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2023-05-09
- Filing Date
- 2025-07-31
- Publication Date
- 2025-11-05
AI Technical Summary
Existing encoding processes for three-dimensional data face challenges in efficiently encoding vertices of three-dimensional meshes due to unsuitable reference triangles, leading to difficulties in decoding and varying code amounts.
An encoding device and decoding device that select between normal and exceptional modes for encoding and decoding vertices using triangles that satisfy specific conditions, ensuring efficient encoding and decoding by utilizing triangles that share sides or vertices with the reference triangle.
This approach allows for efficient encoding and decoding of three-dimensional mesh vertices by selecting appropriate triangles, reducing variations in code amount and ensuring suitable reference triangles are used, thereby improving the encoding process.
Smart Images

Figure 2025166019000001_ABST
Abstract
Description
[Technical Field]
[0001] The present disclosure relates to an encoding device and the like. [Background technology]
[0002] In US Pat. No. 6,213,549 a method and apparatus for encoding and decoding three-dimensional mesh data is proposed. [Prior art documents] [Patent documents]
[0003] [Patent Document 1] Japanese Patent Application Laid-Open No. 2006-187015 Summary of the Invention [Problem to be solved by the invention]
[0004] Further improvements are desired in the encoding process of three-dimensional data, etc. The present disclosure aims to improve the encoding process of three-dimensional data, etc. [Means for solving the problem]
[0005] An encoding device according to one aspect of the present disclosure includes a memory and a circuit that can access the memory, and in operation, if a first plurality of vertices satisfy a condition, the circuit uses the first plurality of vertices to derive predicted values of data corresponding to a vertex to be encoded that is included in a second plurality of vertices, and if the first plurality of vertices do not satisfy the condition, the circuit derives the predicted values of data corresponding to the vertex to be encoded using a third plurality of vertices that are different from both the first plurality of vertices and the second plurality of vertices, and encodes the data corresponding to the vertex to be encoded using the predicted values. [Effects of the Invention]
[0006] The present disclosure may contribute to improvements in encoding processes for three-dimensional data, etc. [Brief explanation of the drawings]
[0007] [Figure 1] FIG. 1 is a conceptual diagram illustrating a three-dimensional mesh according to an embodiment. [Figure 2] FIG. 2 is a conceptual diagram showing basic elements of a three-dimensional mesh according to an embodiment. [Figure 3] FIG. 1 is a conceptual diagram illustrating mapping according to an embodiment. [Figure 4] 1 is a block diagram illustrating an example of the configuration of an encoding / decoding system according to an embodiment. [Figure 5] 1 is a block diagram illustrating an example of the configuration of an encoding device according to an embodiment. [Figure 6] FIG. 10 is a block diagram showing another example configuration of an encoding device according to an embodiment. [Figure 7] FIG. 2 is a block diagram illustrating an example of a configuration of a decoding device according to an embodiment. [Figure 8] FIG. 10 is a block diagram illustrating another example configuration of a decoding device according to an embodiment. [Figure 9] FIG. 2 is a conceptual diagram illustrating an example of the configuration of a bitstream according to an embodiment. [Figure 10] FIG. 10 is a conceptual diagram showing another example of the configuration of a bitstream according to an embodiment. [Figure 11] FIG. 10 is a conceptual diagram showing yet another example configuration of a bitstream according to an embodiment. [Figure 12] 1 is a block diagram showing a specific example of an encoding / decoding system according to an embodiment; [Figure 13] FIG. 2 is a conceptual diagram illustrating an example of the configuration of point cloud data according to the embodiment. [Figure 14] FIG. 2 is a conceptual diagram illustrating an example of a data file of point cloud data according to the embodiment. [Figure 15] FIG. 2 is a conceptual diagram showing an example of the configuration of mesh data according to the embodiment. [Figure 16] FIG. 2 is a conceptual diagram illustrating an example of a data file of mesh data according to the embodiment. [Figure 17] FIG. 2 is a conceptual diagram showing types of three-dimensional data according to the embodiment. [Figure 18]FIG. 2 is a block diagram illustrating an example of the configuration of a three-dimensional data encoder according to an embodiment. [Figure 19] FIG. 2 is a block diagram showing an example of the configuration of a three-dimensional data decoder according to an embodiment. [Figure 20] FIG. 10 is a block diagram showing another example configuration of a three-dimensional data encoder according to an embodiment. [Figure 21] FIG. 10 is a block diagram showing another example configuration of the three-dimensional data decoder according to the embodiment. [Figure 22] FIG. 10 is a conceptual diagram showing a specific example of encoding processing according to an embodiment. [Figure 23] FIG. 10 is a conceptual diagram showing a specific example of a decoding process according to an embodiment. [Figure 24] FIG. 1 is a block diagram illustrating an example implementation of an encoding device according to an embodiment. [Figure 25] FIG. 2 is a block diagram illustrating an example implementation of a decoding device according to an embodiment. [Figure 26] FIG. 10 is a conceptual diagram illustrating a parallelogram prediction method according to a reference example. [Figure 27] FIG. 10 is a conceptual diagram illustrating a polynomial prediction method according to a reference example. [Figure 28] 10 is a flowchart showing an example of encoding processing according to a first aspect. [Figure 29] 10 is a flowchart showing a specific example of encoding processing according to the first aspect. [Figure 30] 10 is a flowchart showing another specific example of the encoding process according to the first aspect. [Figure 31] FIG. 10 is a conceptual diagram showing examples of three angles according to the first embodiment. [Figure 32] FIG. 10 is a conceptual diagram showing another example of three angles according to the first embodiment. [Figure 33] FIG. 10 is a conceptual diagram showing still another example of three angles according to the first embodiment. [Figure 34] FIG. 10 is a syntax diagram showing an example of the syntax structure of vertex information for multiple vertices according to the first embodiment. [Figure 35] FIG. 10 is a syntax diagram showing an example of the syntax structure of vertex information for one vertex according to the first embodiment. [Figure 36] FIG. 10 is a syntax diagram showing another example syntax structure of vertex information for one vertex according to the first embodiment. [Figure 37] FIG. 10 is a table diagram showing an example of a table used for predicting an angle. [Figure 38] FIG. 10 is a table diagram showing another example of a table used for predicting an angle. [Figure 39] FIG. 10 is a conceptual diagram illustrating an example of prediction using angles relative to the vertices of the previous triangle. [Figure 40] FIG. 10 is a conceptual diagram illustrating an example of prediction using angles relative to vertices of a previous 3D mesh. [Figure 41] 1 is a block diagram showing an example of the configuration of an encoding device according to a first aspect. [Figure 42] 10 is a flowchart illustrating an example of a decoding process according to a first aspect. [Figure 43] 10 is a flowchart showing a specific example of a decoding process according to the first aspect. [Figure 44] 10 is a flowchart showing another specific example of the decoding process according to the first aspect. [Figure 45] FIG. 10 is a table diagram showing an example of a lookup table for a sine function and a cosine function. [Figure 46] FIG. 2 is a block diagram illustrating an example of the configuration of a decoding device according to the first aspect. [Figure 47] 10 is a flowchart showing an example of an encoding process according to a second aspect. [Figure 48] FIG. 10 is a conceptual diagram showing an example of a mesh according to a second embodiment. [Figure 49] FIG. 10 is a conceptual diagram showing an example of a fragmented mesh. [Figure 50] FIG. 10 is a conceptual diagram showing an example of a mesh with overlapping vertices. [Figure 51] FIG. 10 is a conceptual diagram illustrating an example of exception handling using a previously coded vertex set. [Figure 52] 10 is a flowchart showing a specific example of encoding processing according to the second aspect. [Figure 53]FIG. 10 is a block diagram showing an example of the configuration of an encoding device according to a second aspect. [Figure 54] 10 is a flowchart showing an example of a decoding process according to a second aspect. [Figure 55] 10 is a flowchart showing a specific example of a decoding process according to a second aspect. [Figure 56] FIG. 10 is a block diagram showing an example of the configuration of a decoding device according to a second aspect. [Figure 57] 10 is a flowchart illustrating an example of exception processing according to a second embodiment. [Figure 58] 10 is a flowchart showing another example of the encoding process according to the second aspect. [Figure 59] 10 is a flowchart showing another example of the decoding process according to the second aspect. [Figure 60] FIG. 10 is a conceptual diagram illustrating an example of the location of parameters in a bitstream. [Figure 61] FIG. 10 is a conceptual diagram illustrating another example of the position of parameters in a bitstream. [Figure 62] 10 is a flowchart illustrating an example of a basic encoding process according to an embodiment. [Figure 63] 10 is a flowchart illustrating an example of a basic decoding process according to an embodiment. [Figure 64] FIG. 10 is a block diagram showing yet another example configuration of the encoding device according to the embodiment. [Figure 65] FIG. 10 is a block diagram showing yet another example configuration of a decoding device according to an embodiment. DETAILED DESCRIPTION OF THE INVENTION
[0008] <Introduction> For example, three-dimensional meshes are used in computer graphics images. A three-dimensional mesh is composed of vertex information indicating the positions of each of multiple vertices in three-dimensional space, connection information indicating the connection relationships between the multiple vertices, and attribute information indicating the attributes of each vertex or each face. Each face is constructed according to the connection relationships between the multiple vertices. A variety of computer graphics images can be expressed using such three-dimensional meshes.
[0009] Furthermore, efficient encoding and decoding of 3D meshes is expected for transmission and storage of 3D meshes. For example, to efficiently encode vertex information, an encoding device predicts position information of a vertex to be encoded using position information of a vertex that has already been encoded, and encodes the difference from the prediction, thereby reducing the amount of code. More specifically, for example, the encoding device reduces the amount of code by referring to a first triangle as a reference triangle and encoding the vertices of a second triangle adjacent to the first triangle.
[0010] However, the first triangle may not be suitable as a reference triangle. Specifically, the vertices of the first triangle may not be coded, or the edges of the first triangle may not have connectivity. Even if the vertices of the second triangle are coded with reference to such a first triangle, it may be difficult to decode the vertices of the second triangle, or the amount of coding may not be reduced.
[0011] Therefore, the encoding device of Example 1 includes a memory and a circuit that can access the memory, and in operation, the circuit selects a mode for encoding the vertex to be encoded from a first mode set that includes a normal mode in which, if a first triangle satisfies a condition, the vertex to be encoded of a second triangle is encoded using the first triangle, and if the first triangle does not satisfy the condition, selects the mode from a second mode set that includes an exceptional mode in which the vertex to be encoded is encoded using a third triangle that is different from both the first triangle and the second triangle, and encodes the vertex to be encoded according to the mode.
[0012] This may allow the vertices of the second triangle to be coded using a third triangle that is different from the first triangle if the first triangle does not satisfy the conditions, and therefore may allow the vertices of the second triangle to be coded using a reference triangle that is suitable for coding.
[0013] The encoding device of Example 2 may be the encoding device of Example 1, in which the third triangle is a triangle that shares a side with the first triangle.
[0014] This may allow a third triangle near the first triangle used in normal mode to be used in exceptional mode. This may reduce the difference between normal mode and exceptional mode. This may reduce the variation in the amount of code.
[0015] Furthermore, the encoding device of Example 3 may be the encoding device of Example 1 or Example 2, in which the third triangle is a triangle that shares a side with the second triangle.
[0016] This may allow a third triangle near the second triangle to be used in the exception mode, which may allow the current vertex to be coded efficiently using the third triangle near the current vertex.
[0017] Furthermore, the encoding device of Example 4 may be the encoding device of any one of Examples 1 to 3, in which the third triangle is a triangle that shares a vertex with the first triangle.
[0018] This may allow a third triangle near the first triangle used in normal mode to be used in exceptional mode. This may reduce the difference between normal mode and exceptional mode. This may reduce the variation in the amount of code.
[0019] The encoding device of Example 5 may be the encoding device of any one of Examples 1 to 4, in which the third triangle is a triangle whose vertices have already been encoded.
[0020] This may make it possible to encode the vertex to be encoded using the third triangle that reflects the characteristics of the 3D mesh, thereby making it possible to encode the vertex to be encoded efficiently.
[0021] Furthermore, the encoding device of Example 6 may be the encoding device of any one of Examples 1 to 5, in which the third triangle is a triangle whose sides have connectivity.
[0022] This may make it possible to encode the vertex to be encoded using the third triangle that reflects the characteristics of the 3D mesh, thereby making it possible to encode the vertex to be encoded efficiently.
[0023] The encoding device of Example 7 may be the encoding device of any one of Examples 1 to 4, in which the third triangle is a triangle having a dummy vertex.
[0024] This may make it possible to encode the vertex to be encoded using a third triangle having any vertex, which may make it possible to flexibly encode the vertex to be encoded.
[0025] Furthermore, the encoding device of Example 8 may be an encoding device that is any one of Examples 1 to 7, in which the exception mode includes a plurality of sub-modes, and the circuit further selects a sub-mode for encoding the vertex to be encoded from among the plurality of sub-modes when the exception mode is selected as the mode.
[0026] This may enable encoding of the vertex to be encoded according to a submode selected from among a plurality of submodes in the exception mode, and therefore may enable encoding of the vertex to be encoded according to an exception handling method adaptively selected from a plurality of exception handling methods.
[0027] Furthermore, the encoding device of Example 9 may be the encoding device of Example 8, in which the circuit encodes a parameter indicating the submode.
[0028] This may allow information on the submode for encoding the vertex to be encoded to be shared between the encoding device and the decoding device according to the parameter, and therefore may allow the same submode to be applied to encoding and decoding according to the parameter.
[0029] The encoding device of Example 10 may be the encoding device of Example 8 or Example 9, in which the circuit determines the third triangle according to the submode.
[0030] This may enable selection of a third triangle suitable for encoding by selecting a submode from among a plurality of submodes, thereby enabling efficient encoding of the encoding target vertex using the third triangle suitable for encoding.
[0031] The encoding device of Example 11 may be the encoding device of any one of Examples 8 to 10, in which the circuit determines the vertices of the third triangle according to the submode.
[0032] This may enable selection of vertices of the third triangle suitable for encoding by selecting a submode from among a plurality of submodes, which may enable efficient encoding of the encoding target vertices using the third triangle suitable for encoding.
[0033] The encoding device of Example 12 may be the encoding device of any one of Examples 1 to 11, in which the condition includes that each vertex of the first triangle has already been encoded.
[0034] This may prevent a first triangle having any vertices that have not yet been coded from being used to code the vertices of a second triangle, and may allow a mode suitable for coding the vertices of the second triangle to be used.
[0035] Furthermore, the encoding device of Example 13 may be the encoding device of any one of Examples 1 to 12, in which the condition includes that each side of the first triangle has connectivity.
[0036] This may prevent a first triangle with no connectivity from being used to encode the vertices of a second triangle, and may allow a mode suitable for encoding the vertices of the second triangle to be used.
[0037] Furthermore, the encoding device of Example 14 may be any of the encoding devices of Examples 1 to 13, and the circuit may be an encoding device that, when encoding the vertex to be encoded according to the exception mode, encodes the angle indicating the vertex to be encoded using the third triangle.
[0038] This may make it possible to prevent the amount of code from becoming too large, i.e., to suppress the worst-case amount of code.
[0039] Moreover, the decoding device of Example 15 includes a memory and a circuit that can access the memory, and in operation, the circuit selects a mode for decoding the vertex to be decoded from a first mode set that includes a normal mode in which, if a first triangle satisfies a condition, the vertex to be decoded of a second triangle is decoded using the first triangle, and, if the first triangle does not satisfy the condition, selects the mode from a second mode set that includes an exception mode in which the vertex to be decoded is decoded using a third triangle that is different from both the first triangle and the second triangle, and decodes the vertex to be decoded according to the mode.
[0040] This may allow the vertices of the second triangle to be decoded using a third triangle that is different from the first triangle if the first triangle does not satisfy the condition, and therefore may allow the vertices of the second triangle to be decoded using a reference triangle that is suitable for decoding.
[0041] Furthermore, the decoding device of Example 16 may be the decoding device of Example 15, in which the third triangle is a triangle that shares an edge with the first triangle.
[0042] This may allow a third triangle near the first triangle used in normal mode to be used in exceptional mode. This may reduce the difference between normal mode and exceptional mode. This may reduce the variation in the amount of code.
[0043] Furthermore, the decoding device of Example 17 may be the decoding device of Example 15 or Example 16, in which the third triangle is a triangle that shares an edge with the second triangle.
[0044] This may enable the third triangle near the second triangle to be used in the exception mode, which may enable the current vertex to be decoded to be decoded efficiently using the third triangle near the current vertex.
[0045] Furthermore, the decoding device of Example 18 may be the decoding device of any one of Examples 15 to 17, in which the third triangle is a triangle that shares a vertex with the first triangle.
[0046] This may allow a third triangle near the first triangle used in normal mode to be used in exceptional mode. This may reduce the difference between normal mode and exceptional mode. This may reduce the variation in the amount of code.
[0047] Furthermore, the decoding device of Example 19 may be the decoding device of any one of Examples 15 to 18, in which the third triangle is a triangle whose vertices have already been decoded.
[0048] This may make it possible to decode the vertex to be decoded using the third triangle that reflects the characteristics of the 3D mesh, thereby making it possible to efficiently decode the vertex to be decoded.
[0049] Furthermore, the decoding device of Example 20 may be the decoding device of any one of Examples 15 to 19, in which the third triangle is a triangle in which each side has connectivity.
[0050] This may make it possible to decode the vertex to be decoded using the third triangle that reflects the characteristics of the 3D mesh, thereby making it possible to efficiently decode the vertex to be decoded.
[0051] Furthermore, the decoding device of Example 21 may be the decoding device of any one of Examples 15 to 17, in which the third triangle is a triangle having a dummy vertex.
[0052] This may make it possible to decode the current vertex using a third triangle having any vertex, thereby making it possible to flexibly decode the current vertex.
[0053] Furthermore, the decoding device of Example 22 may be a decoding device that is any one of Examples 15 to 21, wherein the exception mode includes a plurality of submodes, and the circuit further selects a submode for decoding the vertex to be decoded from among the plurality of submodes when the exception mode is selected as the mode.
[0054] This may enable decoding of the vertex to be decoded according to a submode selected from among a plurality of submodes in the exception mode, and therefore may enable decoding of the vertex to be decoded according to an exception handling method adaptively selected from a plurality of exception handling methods.
[0055] Furthermore, the decoding device of Example 23 may be the decoding device of Example 22, in which the circuit decodes a parameter indicating the submode.
[0056] This may allow information on the submode for decoding the vertex to be decoded to be shared between the encoding device and the decoding device according to the parameter, and therefore may allow the same submode to be applied to encoding and decoding according to the parameter.
[0057] The decoding device of Example 24 may be the decoding device of Example 22 or Example 23, in which the circuit determines the third triangle according to the submode.
[0058] This may enable selection of a third triangle suitable for decoding by selecting a submode from among multiple submodes, which may enable efficient decoding of the vertex to be decoded using the third triangle suitable for decoding.
[0059] Furthermore, the decoding device of Example 25 may be the decoding device of any one of Examples 22 to 24, in which the circuit determines the vertices of the third triangle according to the submode.
[0060] This may enable selection of a vertex of a third triangle suitable for decoding by selecting a submode from among a plurality of submodes, thereby enabling efficient decoding of the vertex to be decoded using a third triangle suitable for decoding.
[0061] The decoding device of Example 26 may be the decoding device of any one of Examples 15 to 25, in which the condition includes that each vertex of the first triangle has already been decoded.
[0062] This may prevent a first triangle, some of whose vertices have not yet been decoded, from being used to decode the vertices of a second triangle, and may allow a mode suitable for decoding the vertices of the second triangle to be used.
[0063] Furthermore, the decoding device of Example 27 may be the decoding device of any one of Examples 15 to 26, in which the condition includes that each side of the first triangle has connectivity.
[0064] This may prevent a first triangle with no connectivity from being used to decode the vertices of a second triangle, and may allow a mode suitable for decoding the vertices of the second triangle to be used.
[0065] Furthermore, the decoding device of Example 28 may be a decoding device of any one of Examples 15 to 27, in which, when decoding the vertex to be decoded according to the exception mode, the circuit decodes the angle indicating the vertex to be decoded using the third triangle.
[0066] This may make it possible to prevent the amount of code from becoming too large, i.e., to suppress the worst-case amount of code.
[0067] Moreover, the encoding method of Example 29 includes the steps of: selecting a mode for encoding a vertex to be encoded of a second triangle from a first mode set including a normal mode in which the first triangle is used to encode the vertex to be encoded of the second triangle when the first triangle satisfies a condition; selecting the mode from a second mode set including an exceptional mode in which the first triangle is used to encode the vertex to be encoded of the second triangle when the first triangle does not satisfy the condition; and encoding the vertex to be encoded according to the mode.
[0068] This may allow the vertices of the second triangle to be coded using a third triangle that is different from the first triangle if the first triangle does not satisfy the conditions, and therefore may allow the vertices of the second triangle to be coded using a reference triangle that is suitable for coding.
[0069] In addition, the decoding method of Example 30 may be a decoding method including the steps of: selecting a mode for decoding the vertex to be decoded from a first mode set including a normal mode in which, if a first triangle satisfies a condition, the vertex to be decoded of a second triangle is decoded using the first triangle; selecting the mode from a second mode set including an exception mode in which, if the first triangle does not satisfy the condition, the vertex to be decoded is decoded using a third triangle different from both the first triangle and the second triangle; and decoding the vertex to be decoded according to the mode.
[0070] This may allow the vertices of the second triangle to be decoded using a third triangle that is different from the first triangle if the first triangle does not satisfy the condition, and therefore may allow the vertices of the second triangle to be decoded using a reference triangle that is suitable for decoding.
[0071] 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.
[0072] <Expressions and terms> The following expressions and terms are used herein:
[0073] (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 also 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, as well as other additional information.
[0074] (2) Vertex information Vertex information is information that indicates a vertex. For example, vertex information indicates the position of a vertex in three-dimensional space. Furthermore, a vertex corresponds to the vertex of a face that makes up a three-dimensional mesh. Vertex information is sometimes expressed as "geometry." Furthermore, vertex information is sometimes expressed as position information.
[0075] (3) Connection information The connectivity information is information that indicates the connections between vertices. For example, the connectivity information indicates the connections that form the faces or edges of a three-dimensional mesh. The connectivity information is sometimes expressed as "connectivity." The connectivity information is also sometimes expressed as face information.
[0076] (4) Attribute information The attribute information indicates the attributes of a vertex or a face. For example, the attribute information indicates attributes such as a color, an image, and a normal vector associated with the vertex or the face. The attribute information is sometimes expressed as "texture."
[0077] (5) face A face is an element that makes up 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.
[0078] (6) Plane A plane is a two-dimensional plane in three-dimensional space. For example, a polygon is formed on a plane, and multiple polygons are formed on multiple planes.
[0079] (7) Bitstream A bitstream corresponds to coded information and may also be referred to as a stream, coded bitstream, compressed bitstream, or coded signal.
[0080] (8) Encoding and Decoding The term "encode" may be substituted with terms such as "store," "include," "write," "describe," "signal," "transmit," "notify," "preserve," or "compress," and these terms may be interchangeable. For example, encoding information may mean including the information in a bitstream, and encoding information into a bitstream may mean encoding the information to generate a bitstream that includes the encoded information.
[0081] 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.
[0082] (9) Ordinal number In the description, ordinal numbers such as first and second may be assigned to elements, etc. These ordinal numbers may be changed as appropriate. Furthermore, new ordinal numbers may be assigned to elements, 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.
[0083] <3D mesh> FIG. 1 is a conceptual diagram showing a three-dimensional mesh according to this embodiment. The three-dimensional mesh is composed of multiple faces. For example, each face is a triangle. The vertices of these triangles are defined in three-dimensional space. The three-dimensional mesh then represents a three-dimensional object. Each face may have a color or an image.
[0084] 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.
[0085] 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 the attribute of the vertex itself, or may indicate the attribute of a face connected to the vertex.
[0086] 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.
[0087] A two-dimensional image may be associated with a surface as attribute information. The two-dimensional image associated with a surface is also referred to as a texture image or an "Attribute Map." Information indicating a mapping between the surface and the two-dimensional image may be associated with the surface as attribute information. Such information indicating the mapping may be referred to as mapping information, vertex information of a texture image, or "Attribute UV Coordinate."
[0088] Furthermore, information such as color, image, and video used as attribute information may be expressed as "Parametric Space."
[0089] 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.
[0090] In the above, the attribute information is associated with the vertices or faces, but it may also be associated with the edges.
[0091] 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 may be mapped onto a surface of a three-dimensional mesh in a 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.
[0092] 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.
[0093] <System configuration> 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.
[0094] 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.
[0095] 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.
[0096] 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)).
[0097] 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.
[0098] 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.
[0099] <Encoding device> 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.
[0100] 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.
[0101] 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.
[0102] 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.
[0103] 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).
[0104] 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.
[0105] 6 is a block diagram showing another example configuration of encoding device 100 according to this embodiment. For example, encoding device 100 includes pre-processor 104 and post-processor 105 in addition to the configuration shown in FIG.
[0106] The preprocessor 104 is an electrical circuit that performs processing on the vertex information, connectivity information, and attribute information before encoding. 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.
[0107] The post-processor 105 is an electric 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.
[0108] <Decryption device> 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.
[0109] The vertex information decoder 201 is an electrical circuit that decodes vertex information. For example, the vertex information decoder 201 decodes the vertex information from the bitstream according to a format defined for the vertex information.
[0110] 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.
[0111] The attribute information decoder 203 is an electrical 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.
[0112] The vertex information, connectivity information, and attribute information may be decoded using variable length decoding or fixed length decoding, such as Huffman coding or context-adaptive binary arithmetic coding (CABAC).
[0113] 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.
[0114] 8 is a block diagram showing another example configuration of decoding device 200 according to this embodiment. For example, decoding device 200 includes pre-processor 204 and post-processor 205 in addition to the configuration shown in FIG.
[0115] 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.
[0116] 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.
[0117] 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 into a three-dimensional mesh.
[0118] <bitstream> The vertex information, connection information, and attribute information are coded and stored in a bitstream. The relationship between these pieces of information and the bitstream is shown below.
[0119] 9 is a conceptual diagram showing an example of the configuration of a bitstream according to this embodiment. In this example, vertex information, connection information, and attribute information are integrated in the bitstream. For example, the vertex information, connection information, and attribute information may be included in one file.
[0120] Alternatively, multiple pieces of this information may be stored sequentially, such as a first piece of vertex information, a first piece of connectivity information, a first piece of attribute information, a second piece of vertex information, a second piece of connectivity information, a second piece of attribute information, etc. These multiple pieces may correspond to multiple pieces that are different in time, multiple pieces that are different in space, or multiple pieces that are different in surface area.
[0121] Furthermore, the order in which the vertex information, connection information, and attribute information are stored is not limited to the above example, and a storage order different from the above example may be used.
[0122] 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 vertex information, connection information, and attribute information are stored in different files. Here, a file containing vertex information, a file containing connection 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 vertex information, connection information, and attribute information may be included in one file, and the remaining type of information may be included in another file.
[0123] Alternatively, the information may be split and stored in more files. For example, multiple portions of the vertex information may be stored in multiple files, multiple portions of the connectivity information may be stored in multiple files, or multiple portions of the attribute information may be stored in multiple files. These multiple portions may correspond to multiple temporally different portions, multiple spatially different portions, or multiple different faces.
[0124] Furthermore, the order in which the vertex information, connection information, and attribute information are stored is not limited to the above example, and a storage order different from the above example may be used.
[0125] 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 vertex information, connectivity information, and attribute information are stored in different sub-bitstreams.
[0126] Here, a sub-bitstream containing vertex information, a sub-bitstream containing connection information, and a sub-bitstream containing attribute information are shown, but the storage format is not limited to this example.
[0127] For example, two types of information among vertex information, connection 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 vertex information and connection information.
[0128] Also, each sub-bitstream may contain multiple files, and multiple portions of vertex information may be stored in multiple files, multiple portions of connectivity information may be stored in multiple files, or multiple portions of attribute information may be stored in multiple files.
[0129] <Example> 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.
[0130] 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.
[0131] 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.
[0132] 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.
[0133] 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.
[0134] 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.
[0135] 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.
[0136] The three-dimensional data encoder 113 corresponds to the encoding device 100 shown in Fig. 5 etc. 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.
[0137] 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.
[0138] The system multiplexer 114 multiplexes the coded 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 coded 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.
[0139] 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.
[0140] 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.
[0141] For example, the transmission or storage of multiplexed data is performed in a manner appropriate 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. Also, a pull-type communication method or a push-type communication method may be used.
[0142] 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 waves may be used. For broadcasting, for example, DVB-T2, DVB-S2, DVB-C2, ATSC3.0, or ISDB-S3 may be used.
[0143] 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.
[0144] Furthermore, each operation of the three-dimensional data encoding system 110 may be controlled by a controller 111 that executes an application program.
[0145] 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.
[0146] 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.
[0147] 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.
[0148] The input / output processor 212 may obtain the three-dimensional data and the encoded data from the external connector 310 .
[0149] Furthermore, each operation of the three-dimensional data decoding system 210 may be controlled by a controller 211 that executes an application program.
[0150] 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 that represent a three-dimensional object.
[0151] 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.
[0152] 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.
[0153] Fig. 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 of N points that make up the point cloud data. In this example, the position information is information that indicates a three-dimensional coordinate position using three axes, x, y, and z, and the attribute information is information that indicates a color using RGB. A PLY file or the like can be used as a representative data file for point cloud data.
[0154] 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.
[0155] Specifically, a 3D mesh is composed of multiple points that make up a point cloud, as well as multiple edges and faces. Each point is also expressed as a vertex or position. Each edge corresponds to a line segment connected by two vertices. Each face corresponds to an area surrounded by three or more edges.
[0156] Furthermore, a three-dimensional mesh has position information that indicates the three-dimensional coordinate positions of the vertices. The position information is also expressed as vertex information or geometry. A three-dimensional mesh also has connection information that indicates the relationship between the 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 that indicates the attributes of the vertices, edges, or faces. The attribute information in a three-dimensional mesh is also expressed as texture.
[0157] 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.
[0158] The mesh data may be stored in a data file format such as an object file.
[0159] 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. In this example, M pieces of attribute information A2(1) to A2(M) are also included. The attribute information items do not need to correspond one-to-one to vertices or faces. In addition, attribute information does not need to exist.
[0160] The connectivity information is expressed as a combination of vertex indices. n[1, 3, 4] indicates a triangular face consisting of 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.
[0161] Furthermore, the actual contents of the attribute information may be written in a separate file. A pointer to the contents 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 the 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.
[0162] 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.
[0163] 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 simply be referred to as frames.
[0164] 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.
[0165] 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.
[0166] 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.
[0167] 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.
[0168] 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.
[0169] In this example, the three-dimensional data encoder 113 encodes the three-dimensional data according to a geometry-based encoding method. The geometry-based encoding method takes into account the three-dimensional structure. The geometry-based encoding method also encodes attribute information using configuration information obtained in encoding the vertex information.
[0170] Specifically, first, vertex information, attribute information, and metadata contained 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 contained 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.
[0171] 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.
[0172] 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.
[0173] 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.
[0174] 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.
[0175] 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.
[0176] 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, the attribute information is decoded using configuration information obtained in decoding the vertex information.
[0177] 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.
[0178] 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.
[0179] 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.
[0180] 20 is a block diagram showing another example configuration of the 3D data encoder 113 according to this embodiment. In this example, the 3D data encoder 113 includes a vertex image generator 131, an attribute image generator 132, a metadata generator 133, 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.
[0181] Also, 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, a plurality of 2D images are generated from the 3D data, and the plurality of 2D images are encoded according to a video encoding method. Here, the video encoding method may be HEVC (High Efficiency Video Coding), VVC (Versatile Video Coding), or the like.
[0182] 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.
[0183] The metadata generator 133 generates map information of multiple 2D images from the vertex information and attribute information, and then inputs the map information to the vertex image generator 131, the attribute image generator 132, and the metadata encoder 123.
[0184] 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.
[0185] 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.
[0186] 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.
[0187] 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.
[0188] 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, the attribute information decoder 203, etc. in FIG. 8.
[0189] Also, in this example, the 3D data decoder 213 decodes the 3D data according to a video-based coding method. In 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 HEVC (High Efficiency Video Coding), VVC (Versatile Video Coding), or the like.
[0190] 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.
[0191] 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 metadata in 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 metadata in the compressed attribute information. Then, the video decoder 234 inputs the attribute images to the attribute information generator 232.
[0192] 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.
[0193] 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.
[0194] 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.
[0195] 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 connectivity information encoder 145.
[0196] 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.
[0197] 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.
[0198] 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.
[0199] 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.
[0200] 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).
[0201] 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.
[0202] 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.
[0203] 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.
[0204] 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.
[0205] 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.
[0206] 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.
[0207] 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.
[0208] 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.
[0209] 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.
[0210] 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.
[0211] 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.
[0212] 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.
[0213] 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.
[0214] A coding method for dynamic 3D meshes is sometimes called DMC (Dynamic Mesh Coding), and a video-based coding method for dynamic 3D meshes is sometimes called V-DMC (Video-based Dynamic Mesh Coding).
[0215] The encoding method for point clouds is sometimes called PCC (Point Cloud Compression), the video-based encoding method for point clouds is sometimes called V-PCC (Video-based Point Cloud Compression), and the geometry-based encoding method for point clouds is sometimes called G-PCC (Geometry-based Point Cloud Compression).
[0216] <Implementation example> Fig. 24 is a block diagram showing an example implementation 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 and the like are implemented by the circuit 151 and memory 152 shown in Fig. 24.
[0217] The circuit 151 is a circuit that performs information processing and is capable of accessing 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.
[0218] The memory 152 is a dedicated or general-purpose memory that stores information for the circuit 151 to encode the 3D 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.
[0219] For example, the memory 152 may store a 3D mesh or a bitstream, or may store a program for the circuit 151 to encode the 3D mesh.
[0220] Note that in the encoding device 100, not all of the multiple components shown in Figure 5 etc. may be implemented, and not all of the multiple processes shown here may be performed. Some of the multiple components shown in Figure 5 etc. may be included in another device, and some of the multiple processes shown here may be executed by another device. Furthermore, in the encoding device 100, any combination of multiple components of the present disclosure may be implemented, and any combination of multiple processes of the present disclosure may be performed.
[0221] Fig. 25 is a block diagram showing an implementation example 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 the like are implemented by the circuit 251 and memory 252 shown in Fig. 25.
[0222] 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.
[0223] 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.
[0224] 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.
[0225] Note that decoding device 200 may not necessarily implement all of the components shown in Figure 7 and the like, and may not necessarily 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, 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.
[0226] The encoding method and decoding method including steps performed by each component of the encoding device 100 and 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 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 decoding method may be executed by the computer executing a program for causing the computer to execute the encoding method and decoding method.
[0227] Alternatively, the program or the bitstream may be recorded on a non-transitory computer-readable recording medium such as a CD-ROM.
[0228] 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.
[0229] 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.
[0230] Furthermore, each component of the encoding device 100 and the decoding device 200 may be configured with dedicated hardware, or may be configured with general-purpose hardware that executes the above-mentioned programs, or may be configured with a combination of these. Furthermore, 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, etc. Here, the memory may be a semiconductor memory or a hard disk, etc., and the general-purpose processor may be a CPU, etc.
[0231] 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.
[0232] Furthermore, each component of the encoding device 100 and the decoding device 200 may be an electric circuit, as described above. These electric circuits may form a single electric circuit as a whole, or may be separate electric circuits. 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.
[0233] 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.
[0234] <Reference example of encoding and decoding of vertex information> For example, in encoding and decoding vertex information, a parallelogram prediction method for predicting the positions of vertices may be used.
[0235] 26 is a conceptual diagram showing a parallelogram prediction method according to a reference example. For example, vertex information for a first vertex A, a second vertex B, and a third vertex C of a first triangle is coded, and then vertex information for a fourth vertex D of a second triangle having the same second vertex B and third vertex C as the first triangle is coded. In this case, the position of the fourth vertex D is predicted from the first vertex A, the second vertex B, and the third vertex C using the parallelogram prediction method, and an error with respect to the prediction is coded.
[0236] Specifically, first, from the first triangle ABC, vertex P of a virtual parallelogram ABCP having diagonals BC and AP is calculated as a predicted point. The coordinate value of vertex P is derived using the coordinate values of the first vertex A, second vertex B, and third vertex C of the first triangle ABC (P=B+CA). Then, an error vector indicating the difference between vertex D and vertex P in three-dimensional space is encoded.
[0237] A more complex version uses multiple triangles, an approach that slows down the compression process but provides better predictions.
[0238] In encoding and decoding vertex information, a polynomial prediction method may be used to predict the position of a vertex. In the polynomial prediction method, a local configuration is used to predict the position of a new vertex. Specifically, several vertex coordinate values in a local neighborhood are fed into a polynomial function with predetermined coefficients, and the position of the new vertex is predicted according to the polynomial function. The vertices used to predict the new vertex are selected according to specific conditions.
[0239] Fig. 27 is a conceptual diagram showing a polynomial prediction method according to a reference example. For example, in Fig. 27, a predicted point of the next vertex is derived using four vertices that have already been coded. That is, in Fig. 27, the coordinate values of vertex #1, vertex #2, vertex #3, and vertex #4 are used to predict vertex #5. As with the parallelogram prediction method, an error vector indicating an error in the prediction is coded.
[0240] In the reference example, vertex information is coded using error vectors calculated according to a prediction method such as parallelogram prediction or polynomial prediction. Despite the complexity of these prediction methods, it is difficult to guarantee that the magnitude of these errors falls within a certain range. For example, obtuse triangles tend to produce larger error vectors than equilateral triangles. Furthermore, the smoothness of the shape and the size of the faces affect the magnitude of the error. Therefore, more bits may be used to signal vertex information.
[0241] <First mode of encoding and decoding of vertex information> In this embodiment, the non-common vertices of adjacent triangles relative to a reference triangle are coded using three angles: a dihedral angle and two other angles. That is, when coding vertex information using the spatial relationship between adjacent triangles, only three angles are coded. This may reduce the number of bits.
[0242] The sign of the angle may be used to indicate the orientation of the angle relative to the side, and a predetermined convention may be adopted where positive values indicate a clockwise direction relative to the reference and negative values indicate a counterclockwise direction relative to the reference.
[0243] For example, the dihedral angle between a first triangle, the reference triangle, and a second triangle, the target triangle, allows finding the two-dimensional plane of the second triangle, thus reducing the three-dimensional complexity to two dimensions where simpler planar laws can be applied.
[0244] The dihedral angle between adjacent faces may be calculated using the surface normals. Then, a corresponding triangle, which is a one-to-one virtual congruent triangle to the second triangle, is constructed on the plane of the first triangle. The first triangle and the corresponding triangle share a common side and are located on opposite sides of the common side. The vertices of the corresponding triangle are identified using two angles. Therefore, the vertices of the second triangle are identified by the dihedral angle between the first triangle and the second triangle and two angles for identifying the vertices of the corresponding triangle that is congruent to the second triangle.
[0245] Therefore, the vertex information of the second triangle can be coded using three angles: the dihedral angle and the other two angles. This prevents the value to be coded from becoming too large according to the range of angles represented. Therefore, it is possible to reduce the worst-case coding amount regardless of the properties and quality of the 3D mesh.
[0246] Furthermore, these angle values tend to follow a particular distribution, so it is possible to improve compression by taking advantage of this tendency. For example, the distribution of angles can be examined and the difference from the mean of that distribution can be coded.
[0247] <Example of encoding process according to the first aspect> 28 is a flowchart showing an example of encoding processing according to this aspect. First, a first vertex, a second vertex, and a third vertex are derived from a three-dimensional mesh (S101). Here, the first vertex, the second vertex, and the third vertex form a first triangle on a first plane of the three-dimensional mesh. Also, for example, the first vertex, the second vertex, and the third vertex are three vertices that have already been encoded.
[0248] Next, a first angle, a second angle, and a third angle are derived to derive a fourth vertex of a second triangle formed on a second plane of the three-dimensional mesh using a common side with the first triangle (S102).
[0249] Then, the first angle, the second angle, and the third angle are coded into a bitstream (S103).
[0250] 29 is a flowchart showing a specific example of the encoding process according to this aspect. First, the coordinate values of each vertex of the first face of the three-dimensional mesh are encoded (S111). The first face may be selected at random.
[0251] The process then traverses to the next face (S112), and traversal symbols indicating the traversal direction and the vertex processing mode are written into the bitstream.
[0252] If the vertices of the face have already been coded (Yes in S113), coding of the vertices is skipped. If all faces have not been traversed, the process moves to the next face. If all faces have been traversed, the process may end.
[0253] On the other hand, if the vertex is not coded (No in S113), the processing mode of the vertex is specified according to the written traversal symbol.
[0254] Vertices are coded using coordinate values or angles. For example, if the traversal symbol indicates a coordinate (coordinate in S114), the vertex coordinate values (x, y, z) are coded directly (S115). This method may be selected at the start of coding when no vertices have been coded yet. Also, for example, if the traversal symbol indicates an angle (angle in S114), the vertex is coded using three angles (S116).
[0255] Additional residuals may be calculated and signaled separately after the signaling of the angle. In an example of fully representing the floating-point value of the angle for lossless encoding, the integer part of the floating-point value of the angle may be encoded, and then the fractional part of the floating-point value of the angle may be encoded as a residual value. The traversal process continues until all of the 3D mesh has been traversed (S119).
[0256] A traversal symbol indicating any of skip, end, and execute may be coded. Skip corresponds to the vertex having already been processed. End corresponds to the vertex having all been processed. Execute corresponds to the vertex to be processed. When a traversal symbol indicating execute is coded, a processing mode indicating any of coordinates and angles may be coded separately from the traversal symbol. The processing mode may also be expressed as a mode, an operation mode, a prediction mode, a coding mode, or a decoding mode.
[0257] Fig. 30 is a flowchart showing another specific example of the encoding process according to this aspect. In this example, the encoding process of the reference example is integrated into the encoding process of Fig. 29. First, the coordinate values of each vertex of the first face of the three-dimensional mesh are encoded (S111).
[0258] The process then traverses to the next face (S112), and traversal symbols indicating the traversal direction and the vertex processing mode are written into the bitstream.
[0259] If the vertices of the face have already been coded (Yes in S113), coding of the vertices is skipped. If all faces have not been traversed, the process moves to the next face. If all faces have been traversed, the process may end.
[0260] On the other hand, if the vertex is not coded (No in S113), the processing mode of the vertex is specified according to the written traversal symbol.
[0261] Vertices are coded using coordinates, angles, parallelograms, or polynomials. For example, if the traversal symbol indicates coordinates (coordinates in S114), the vertex coordinate values (x, y, z) are coded directly (S115). This method may be selected at the start of coding when no vertices have been coded yet. Also, for example, if the traversal symbol indicates an angle (angle in S114), the vertex is coded using three angles (S116).
[0262] Also, for example, if the traversal symbol indicates a parallelogram (parallelogram in S114), the vertices are coded using the parallelogram (S117). Also, for example, if the traversal symbol indicates a polynomial (polynomial in S114), the vertices are coded using the polynomial (S118).
[0263] The optimal processing mode may be determined by the minimum cost among multiple costs calculated by coding rate and distortion for multiple processing modes. The coding rate and distortion costs may be calculated based on the number of bits signaled and the error between the actual and predicted values. Alternatively, the optimal processing mode corresponding to the minimum error may be selected based only on the error between the actual and predicted values.
[0264] The traversal process continues until the entire 3D mesh has been traversed (S119).
[0265] A traversal symbol indicating any one of skip, end, and execution may be encoded. When the traversal symbol indicating execution is encoded, a processing mode indicating any one of coordinates, angles, parallelograms, and polygons may be encoded separately from the traversal symbol. Note that if the processing mode is predetermined, the processing mode does not need to be encoded, and the processing does not need to be switched.
[0266] For example, as shown in Figures 31, 32, and 33, a first triangle has a first vertex A, a second vertex B, and a third vertex C, a second triangle has a second vertex B, a third vertex C, and a fourth vertex D, and a corresponding triangle has a second vertex B, a third vertex C, and a fifth vertex E.
[0267] FIG. 31 is a conceptual diagram showing an example of three angles according to this embodiment. In this example, two interior angles of the corresponding triangles are used as the second angle β and the third angle γ. In this example, the two interior angles of the corresponding triangles touch a common side. In this example, the second angle β and the third angle γ are calculated by the following formula (1).
[0268]
number
[0269] 32 is a conceptual diagram showing another example of three angles according to this embodiment. In this example, the angle that touches the line AE is used as the second angle β, and one interior angle of the corresponding triangle that touches the common side BC is used as the third angle γ. In this example, the second angle β and the third angle γ are calculated using the following formula (2).
[0270]
number
[0271] 33 is a conceptual diagram showing yet another example of three angles according to this embodiment. In this example, one interior angle of the corresponding triangle is used as the second angle β, and the angle between AB and AQ is used as the third angle γ. Point Q is the orthogonal projection of the fifth vertex E onto the common side BC. In this example, the second angle β and the third angle γ are calculated by the following formula (3).
[0272]
number
[0273] In Figures 31, 32, and 33, the dihedral angle between the planes of the first triangle and the second triangle is used as the first angle θ. The first angle θ can be calculated using their surface normals. For example, the normal vectors of the first triangle and the second triangle are n1 = [x1, y1, z1] and n2 = [x2, y2, z2], respectively, and are assumed to be normalized. Under such assumptions, the first angle θ between the planes of the first triangle and the second triangle can be calculated, for example, as θ = π - cos -1 (n1n2) (or θ=cos -1 It is calculated by (n1n2).
[0274] 34 is a syntax diagram showing an example of the syntax structure of vertex information for multiple vertices according to this embodiment. In this example, after three vertices are encoded, a traversal symbol is encoded for each of the remaining vertices. Then, whether to encode the vertex is controlled according to the traversal symbol.
[0275] 35 is a syntax diagram illustrating an example of a syntax structure of vertex information for one vertex according to this embodiment. In this example, when prediction_mode is equal to only_angles_mode, derived angles for the first angle, second angle, and third angle are directly encoded.
[0276] 36 is a syntax diagram showing another example syntax structure of vertex information for one vertex according to this embodiment. In this example, another method is used to derive or predict the three angles without directly encoding them according to is_init_angles. An example of a method for deriving or predicting the three angles is to use a history list of previously encoded angles. Specifically, if the three angles to be encoded are not the first three angles, the three angles are derived or predicted using the history list of previously encoded angles.
[0277] FIG. 37 is a table diagram showing an example of a table used for angle prediction. In this example, previously coded angles and indexes are associated and stored in the table. The angles stored in the table may be calculated by averaging three previously coded angles. The angles stored in the table may be controlled according to first-in-first-out, frequency of occurrence of values, or a combination of both. The index may be a fixed value.
[0278] Then, one of the angles in the table is used as the predicted angle. When writing the syntax element, only the index value corresponding to the predicted angle and the delta, which is the difference between the actual angle and the predicted angle, are written into the bitstream.
[0279] 38 is a table diagram showing another example of a table used for angle prediction. In this example, the first, second, and third angles previously coded are stored in the table in association with an index. The angles stored in the table may be controlled by first-in-first-out, frequency of occurrence of values, or a combination of both. The index may be a fixed value.
[0280] Then, one of the combinations in the table is used as a combination of predicted angles. When writing syntax elements, only an index value corresponding to the combination of predicted angles and a delta, which is the difference between the actual angle and the predicted angle, are written into the bitstream.
[0281] FIG. 39 is a conceptual diagram showing an example of prediction using angles for vertices of a previous triangle. In this example, three angles for vertices of a current triangle are derived or predicted using three angles for vertices of the previous triangle. The previous triangle is a triangle that is traversed before the current triangle. The previous triangle may be the triangle immediately before the current triangle or a triangle adjacent to the current triangle.
[0282] Specifically, in this example, the three angles (10°, 30°, 60°) for the vertices of the previous triangle are used to determine the syntax values corresponding to the three angles for the vertex of the current triangle. For example, if the first angle for the vertex of the current triangle is 9°, then 10°-9°=1° is written as the syntax value.
[0283] 40 is a conceptual diagram showing an example of prediction using angles for vertices of a previous 3D mesh. In this example, three angles are derived or predicted using multiple angles for multiple vertices of the previous 3D mesh.
[0284] For example, the previous 3D mesh may be a 3D mesh that is spatially different from the current 3D mesh and that was processed before the current 3D mesh, or a 3D mesh that is temporally different from the current 3D mesh and that was processed before the current 3D mesh.
[0285] The first angles, second angles, and third angles for the vertices of the previous 3D mesh may be averaged and signaled in the current 3D mesh. For example, the syntax value 1Delta = 1Angle x - Average1Angle may be determined and written. For example, this method may be used in dynamic meshes where adjacent frames have spatial redundancy.
[0286] Fig. 41 is a block diagram showing an example of the configuration of an encoding device 100 according to this embodiment. The encoding device 100 encodes a 3D mesh into a bitstream. As shown in Fig. 41, the encoding device 100 may include a traverser 161, a switch 162, an angle deriver 163, an angle encoder 164, a coordinate encoder 165, and an entropy encoder 166.
[0287] Traverser 161 obtains a 3D mesh. Traverser 161 then determines which vertices in the 3D mesh to encode and outputs the vertices to either angle deriver 163 or coordinate encoder 165 via switch 162. In one example, traverser 161 selects coordinate encoder 165 for the first three vertices of the 3D mesh and selects angle deriver 163 for the other vertices.
[0288] For example, the coordinate encoder 165 acquires three vertices that form a first triangle on a first plane and encodes the three vertices. Delta encoding may be used to encode the three vertices. Specifically, the coordinate value of the first vertex A may be directly encoded, and the difference between the coordinate value of the first vertex A and the coordinate value of the second vertex B, and the difference between the coordinate value of the first vertex A and the coordinate value of the third vertex C may be encoded.
[0289] Angle deriver 163 takes a fourth vertex D that forms a second triangle on the second plane using the second vertex B and the third vertex C, derives three angles for identifying the fourth vertex D, and outputs the three derived angles to angle encoder 164. The second plane may be different from the first plane or may be the same as the first plane. As described above, Figures 31, 32, and 33 show different examples of the three angles.
[0290] The angle encoder 164 encodes the three angles. An additional residual may be calculated and signaled separately after the angle signaling. In an example of fully representing the floating-point value of the angle for lossless encoding, the angle encoder 164 may encode the integer part of the floating-point value of the angle and then encode the fractional part of the floating-point value of the angle as a residual value.
[0291] The coded information obtained by the coordinate encoder 165 and the coded information obtained by the angle encoder 164 are sent to the entropy encoder 166 and are also fed back to the traverser 161. The entropy encoder 166 compresses the coded information and outputs a bitstream. The traverser 161 uses the coded information to determine the next traversal.
[0292] Examples of coding methods that entropy coding follows may be Huffman coding, arithmetic coding, range coding, ANS (Asymmetric Numeral Systems), or CABAC (Context-Adaptive Binary Arithmetic Coding).
[0293] The encoding device 100 encodes the three-dimensional mesh according to the above configuration and processing, which may reduce the amount of code required for the three-dimensional mesh.
[0294] In the above description, the corresponding triangle is a triangle congruent to the second triangle, but it may also be a triangle similar to the second triangle. Even if the second triangle and the corresponding triangle are similar, if the correspondence between the second triangle and the corresponding triangle is known, the fifth vertex E to the fourth vertex D can be derived in accordance with the correspondence between the second triangle and the corresponding triangle. Furthermore, the corresponding triangle may be the orthogonal projection of the second triangle onto the first plane. In this case, too, the fifth vertex E to the fourth vertex D can be derived in accordance with the correspondence between the second triangle and the corresponding triangle.
[0295] <Example of Decryption Process According to First Aspect> 42 is a flowchart showing an example of a decoding process according to this aspect. First, a first vertex, a second vertex, and a third vertex are derived from a three-dimensional mesh (S201). Here, the first vertex, the second vertex, and the third vertex form a first triangle on a first plane of the three-dimensional mesh. Also, for example, the first vertex, the second vertex, and the third vertex are three vertices that have already been decoded.
[0296] Next, a first angle, a second angle, and a third angle for deriving a fourth vertex of a second triangle formed on a second plane of the 3D mesh using a common edge with the first triangle are decoded from the bitstream (S202).Then, the fourth vertex is derived using the first angle, the second angle, and the third angle (S203).
[0297] 43 is a flowchart showing a specific example of the decoding process according to this embodiment. The decoding process begins by decoding the vertex coordinate values of the initial face that was first coded (S211). Next, the traversal symbol of the current face is decoded (S212). Then, it is determined whether the traversal symbol indicates a coordinate, an angle, a skip, or an end (S213).
[0298] For example, if the traversal symbol indicates a coordinate (Coordinate in S213), the vertex coordinate values (x, y, z) are directly decoded (S214). If the traversal symbol indicates an angle (Angle in S213), the vertex is decoded using the three angles (S215). If the traversal symbol indicates a skip (Skip in S213), the process is repeated for the next face. If the traversal symbol indicates an end (End in S213), the process ends.
[0299] A traversal symbol indicating any of skip, finish, and execute may be decoded. Skip corresponds to the vertex already being processed. Finish corresponds to the vertex being processed, and execute corresponds to the vertex being to be processed. When a traversal symbol indicating execute is decoded, a processing mode indicating any of coordinates and angles may be decoded separately from the traversal symbol. The processing mode may also be expressed as a mode, an operation mode, a prediction mode, a coding mode, or a decoding mode.
[0300] Fig. 44 is a flowchart showing another specific example of the decoding process according to this aspect. In this example, the decoding process of the reference example is integrated into the decoding process of Fig. 43. The decoding process begins by decoding the vertex coordinate values of the initial face that were first coded (S211). Next, the traversal symbol of the current face is decoded (S212). Then, it is determined whether the traversal symbol indicates a coordinate, an angle, a skip, or an end (S213).
[0301] For example, if the traversal symbol indicates a coordinate (coordinate in S213), the vertex coordinate values (x, y, z) are directly decoded (S214). If the traversal symbol indicates an angle (angle in S213), the vertex is decoded using the three angles (S215). If the traversal symbol indicates a parallelogram (parallelogram in S213), the vertex is decoded using the parallelogram (S216). If the traversal symbol indicates a polynomial (polynomial in S213), the next vertex is decoded using the polynomial.
[0302] If the traversal symbol indicates a skip (Skip in S213), the process is repeated for the next face. If the traversal symbol indicates an end (End in S213), the process ends.
[0303] A traversal symbol indicating any one of skip, end, and execution may be decoded. When the traversal symbol indicating execution is decoded, a processing mode indicating any one of coordinates, angles, parallelograms, and polygons may be decoded separately from the traversal symbol. Note that if the processing mode is predetermined, the processing mode does not need to be decoded, and the processing does not need to be switched.
[0304] 34 is a syntax diagram showing an example of a syntax structure of vertex information for multiple vertices according to this embodiment. In this example, after three vertices are decoded, a traversal symbol is decoded for each of the other vertices. Then, whether to decode the vertex is controlled according to the traversal symbol.
[0305] 35 is a syntax diagram illustrating an example of a syntax structure of vertex information for one vertex according to this embodiment. In this example, when prediction_mode is equal to only_angles_mode, derived angles for the first angle, second angle, and third angle are directly decoded.
[0306] 36 is a syntax diagram showing another example syntax structure of vertex information for one vertex according to this embodiment. In this example, another method is used to derive or predict the three angles without directly decoding them according to is_init_angles. An example of a method for deriving or predicting the three angles is to use a history list of previously decoded angles. Specifically, if the three angles to be decoded are not the first three angles, the three angles are derived or predicted using the history list of previously decoded angles.
[0307] FIG. 37 is a table diagram showing an example of a table used for angle prediction. In this example, previously decoded angles and indexes are associated and stored in the table. The angles stored in the table may be calculated by averaging three previously decoded angles. The angles stored in the table may be controlled according to first-in-first-out, frequency of occurrence of values, or a combination of both. The index may be a fixed value.
[0308] Then, one of the angles in the table is used as the predicted angle. In decoding the syntax element, only the index value corresponding to the predicted angle and the delta, which is the difference between the actual angle and the predicted angle, are decoded from the bitstream.
[0309] 38 is a table diagram showing another example of a table used for angle prediction. In this example, previously decoded first, second, and third angles are stored in the table in association with an index. The angles stored in the table may be controlled according to first-in-first-out, frequency of occurrence of values, or a combination of both. The index may be a fixed value.
[0310] Then, one of the combinations in the table is used as the combination of predicted angles. In decoding the syntax elements, only the index value corresponding to the combination of predicted angles and the delta, which is the difference between the actual angle and the predicted angle, are decoded from the bitstream.
[0311] FIG. 39 is a conceptual diagram showing an example of prediction using angles for vertices of a previous triangle. In this example, three angles for vertices of a current triangle are derived or predicted using three angles for vertices of the previous triangle. The previous triangle is a triangle that is traversed before the current triangle. The previous triangle may be the triangle immediately before the current triangle or a triangle adjacent to the current triangle.
[0312] Specifically, in this example, the three angles (10°, 30°, 60°) for the vertices of the previous triangle are used to determine the syntax values corresponding to the three angles for the vertex of the current triangle. For example, if the first delta for the vertex of the current triangle is 1°, then 10°-9°=1° is derived as the first angle.
[0313] 40 is a conceptual diagram showing an example of prediction using angles for vertices of a previous 3D mesh. In this example, three angles are derived or predicted using multiple angles for multiple vertices of the previous 3D mesh.
[0314] For example, the previous 3D mesh may be a 3D mesh that is spatially different from the current 3D mesh and that was processed before the current 3D mesh, or a 3D mesh that is temporally different from the current 3D mesh and that was processed before the current 3D mesh.
[0315] The first angles, second angles, and third angles for the vertices of the previous 3D mesh may be averaged and signaled in the current 3D mesh. For example, a syntax value may derive first angle x = average first angle + first delta. For example, this method may be used in dynamic meshes where adjacent frames have spatial redundancy.
[0316] An additional residual may be decoded after decoding the three angles. In one example, the value decoded as the angle may represent the integer part of the floating-point value of the angle, and the value decoded as the residual may represent the fractional part of the floating-point value of the angle. Adding the fractional part to the integer part gives the actual angle.
[0317] For example, as shown in Figures 31, 32, and 33, a first triangle has a first vertex A, a second vertex B, and a third vertex C, a second triangle has a second vertex B, a third vertex C, and a fourth vertex D, and a corresponding triangle has a second vertex B, a third vertex C, and a fifth vertex E.
[0318] To derive the fourth vertex D of the second triangle, first, the fifth vertex E, which is the projection of the fourth vertex D onto the first plane that includes the first triangle, is calculated using the second angle and the third angle. Then, the fourth vertex D is calculated from the fifth vertex E using the first angle, which is the dihedral angle between the first triangle and the second triangle.
[0319] 31 is a conceptual diagram showing an example of three angles according to this embodiment. In this example, two interior angles of the corresponding triangle are used as the second angle β and the third angle γ. That is, in this example, two interior angles of the corresponding triangle are decoded from the bitstream. By applying the sine law to the triangle CBE, the following equation (4) is obtained.
[0320]
number
[0321] When the second angle β, the third angle γ, and the side CB are given, the coordinate values of the fifth vertex E are derived from the above equation (4).
[0322] 32 is a conceptual diagram showing another example of three angles according to this embodiment. In this example, the angle that touches the line AE is used as the second angle β, and one interior angle of the corresponding triangle that touches the common side BC is used as the third angle γ. In this example, after the first vertex A, the second vertex B, and the third vertex C are decoded from the bitstream, the fourth angle δ formed by BA and BC is derived by the following equation (5).
[0323]
number
[0324] Next, by applying the sine law to the triangle ABE, we obtain the following equation (6).
[0325]
number
[0326] The magnitude of BE is derived from the above equation (6). Therefore, the direction and magnitude of BE, as well as the plane on which the fifth vertex E is located, are known, and the coordinate value of the fifth vertex E can be derived.
[0327] Figure 33 is a conceptual diagram showing yet another example of three angles according to this embodiment. In this example, one interior angle of the corresponding triangle is used as the second angle β, and the angle between AB and AQ is used as the third angle γ. Point Q is the orthogonal projection of the fifth vertex E onto the common side BC. Applying the sine law to triangle AQB gives the following equation (7).
[0328]
number
[0329] The magnitude of QB is obtained from the above equation (7). Therefore, the coordinate value of point Q is derived. Next, the following equation (8) is obtained by the rule of right triangles in triangle CEQ.
[0330]
number
[0331] The size of CE is derived from the above equation (8). Therefore, the direction and size of CE, as well as the plane on which the fifth vertex E is located, are known, and the coordinate value of the fifth vertex E can be derived.
[0332] The fifth vertex E is derived in each process of the multiple derivation methods described using Figures 31, 32, and 33. Then, the fourth vertex D can be derived from the fifth vertex E. For example, the second triangle CBD and the corresponding triangle CBE are one-to-one identical. Furthermore, the fourth vertex D and the fifth vertex E are on different planes that share a common side CB. In this case, the fourth vertex D is derived by rotating the fifth vertex E around the side BC by an amount of π-θ (or θ), where θ is the first angle.
[0333] 45 is a table diagram showing an example of a lookup table for a sine function and a cosine function. The lookup table shown in FIG. 45 may be used in the calculation of the sine function and the cosine function described above.
[0334] Fig. 46 is a block diagram showing an example of the configuration of a decoding device 200 according to this aspect. The decoding device 200 decodes a 3D mesh from a bitstream. As shown in Fig. 46, the decoding device 200 includes a traverser 261, a switch 262, an angle decoder 263, a coordinate deriver 264, a coordinate decoder 265, and an entropy decoder 266.
[0335] The entropy decoder 266 obtains a bitstream. The entropy decoder 266 obtains decompressed information by decompressing the bitstream, and outputs the decompressed information. Examples of the coding scheme that the entropy decoding is based on may be Huffman coding, arithmetic coding, range coding, ANS (Asymmetric Numeral Systems), or CABAC (Context-Adaptive Binary Arithmetic Coding).
[0336] The decompressed information is input to a traverser 261. The traverser 261 interprets the decompressed information and outputs the decompressed information via a switch 262 to either an angle decoder 263 or a coordinate decoder 265.
[0337] The coordinate decoder 265 decodes three vertices that form a first triangle on a first plane from the decompressed information. As an example of decoding three vertices, the coordinate value of the first vertex A and two difference values are decoded from the decompressed information. Next, the coordinate value of the second vertex B and the coordinate value of the third vertex C are derived by adding the two difference values to the coordinate value of the first vertex A.
[0338] The angle decoder 263 decodes the three angles from the decompressed information and outputs the three angles to the coordinate deriver 264 .
[0339] The coordinate deriver 264 uses the three angles to derive the vertices of a second triangle that has a common side with the first triangle. The second triangle may be on a plane different from the first plane, or may be on the same plane as the first plane. Specifically, the coordinate deriver 264 derives the vertices of the second triangle from the three angles using the derivation method described above with reference to Figures 31, 32, and 33.
[0340] The vertex information indicating the vertices obtained by the coordinate derivation unit 264 or the coordinate decoder 265 is output as vertex information of the 3D mesh. This vertex information is also fed back to the traverser 261 and used to determine the next traversal.
[0341] The decoding device 200 decodes the three-dimensional mesh according to the above configuration and processing, which may reduce the amount of code for the three-dimensional mesh.
[0342] In the above description, the corresponding triangle is a triangle congruent to the second triangle, but it may also be a triangle similar to the second triangle. Even if the second triangle and the corresponding triangle are similar, if the correspondence between the second triangle and the corresponding triangle is known, the fifth vertex E to the fourth vertex D can be derived in accordance with the correspondence between the second triangle and the corresponding triangle. Furthermore, the corresponding triangle may be the orthogonal projection of the second triangle onto the first plane. In this case, too, the fifth vertex E to the fourth vertex D can be derived in accordance with the correspondence between the second triangle and the corresponding triangle.
[0343] <Supplementary information regarding the first aspect of encoding and decoding of vertex information> The vertex information encoding process in the present disclosure is applicable to encoding point position information in point cloud compression methods such as V-PCC (Point Cloud Compression) and G-PCC (Geometry-based Point Cloud Compression), for example.
[0344] The encoding device 100 encodes information for identifying the fourth vertex D of the second triangle from the reference first triangle or its three vertices, the first vertex A, the second vertex B, and the third vertex C. The decoding device 200 decodes information for identifying the fourth vertex D of the second triangle from the reference first triangle or its three vertices, the first vertex A, the second vertex B, and the third vertex C.
[0345] The information for identifying the fourth vertex D includes dihedral angle information indicating a dihedral angle, and identification information for identifying the fifth vertex E. The dihedral angle indicated by the dihedral angle information is the dihedral angle formed by a first plane including the first triangle and a second plane including the second triangle. The fifth vertex E identified by the identification information is a vertex on the first plane and is a vertex of a corresponding triangle corresponding to the second triangle.
[0346] Because the fifth vertex E is a vertex on the first plane, it can be relatively easily identified from the first triangle on the first plane. Furthermore, the fourth vertex D can be derived from the fifth vertex E according to the correspondence between the second triangle and the corresponding triangle and the dihedral angle between the first plane and the second plane. The dihedral angle is in the range of, for example, -180 degrees to 180 degrees, which prevents an increase in the amount of code. Therefore, the above configuration and processing enable efficient encoding and decoding of the fourth vertex D.
[0347] In addition, the information for identifying the fourth vertex D may include, as the above-mentioned identification information or instead of the above-mentioned identification information, “(1) position information of the vertex (fifth vertex E) of the polygon (corresponding triangle BEC)” or “(2) information regarding the position and shape of the polygon (corresponding triangle BEC).”
[0348] Furthermore, the information for identifying the fourth vertex D may include, as the above dihedral angle information or instead of the above dihedral angle information, "(3) information indicating the distance and direction between the position of the vertex (fifth vertex E) of the polygon (corresponding triangle BEC) and the position of the vertex to be processed (fourth vertex D)." Furthermore, the information for identifying the fourth vertex D may include, as the above dihedral angle information or instead of the above dihedral angle information, "(4) information indicating the difference between the plane including the polygon (corresponding triangle BEC) and the plane including the polygon (second triangle BDC) having the vertex to be processed (fourth vertex D)."
[0349] Alternatively, any of the above information may be indicated using an angle, which may reduce the amount of coding and improve the flexibility and accuracy of prediction. Alternatively, information indicating which of the above information is to be used may be coded.
[0350] Furthermore, for example, the following examples may be added to the above configurations and processes, or at least a part of the above configurations and processes may be replaced with the following examples.
[0351] For example, "(1) Position information of the vertices of the polygon" may indicate the coordinate values of the second vertex B, the third vertex C, and the fifth vertex E of the corresponding triangle BEC. When information about the position and shape of the reference first triangle or the position information of the first vertex A, the second vertex B, and the third vertex C is specified, the position information of the vertices of the polygon may indicate only the coordinate value of the fifth vertex E.
[0352] When it is specified or determined in advance that a fifth vertex E existing on the same plane as the plane including the first triangle ABC is used to derive the position information of the fourth vertex D to be processed, the coordinate value of the fifth vertex E may be expressed as a two-dimensional coordinate value. The coordinate value may be expressed using a difference from other coordinate values, and the coordinate value of the fifth vertex E may be expressed using a vector indicating the difference from the coordinate value of the first vertex A, the second vertex B, or the third vertex C.
[0353] Furthermore, for example, the polygon may be a shape other than a triangle, and may be a quadrangle.
[0354] For example, "(2) Information regarding the position and shape of the polygon" may be information specifying the position and shape of the corresponding triangle BEC. When information regarding the position and shape of the reference first triangle ABC or position information regarding the first vertex A, the second vertex B, and the third vertex C is specified, the information specifying the position and shape of the corresponding triangle BEC may indicate information indicating the side BC, the angle between the side BC and the side CE, and the angle between the side BC and the side BE. Here, the information indicating the side BC corresponds to information indicating the use of the corresponding triangle BEC.
[0355] Instead of the information indicating the side BC, information indicating the first vertex A may be encoded. The information indicating the first vertex A corresponds to information indicating that the fifth vertex E is located on the opposite side of the side BC from the first vertex A.
[0356] If it is specified or determined in advance that a corresponding triangle BEC on the same plane as the first triangle ABC will be used to derive the position information of the fourth vertex D to be processed, then only the above two angles may be encoded for the fifth vertex E. This makes it possible to derive the position and shape of the corresponding triangle BEC, i.e., the position information of the fifth vertex E, from only the two angles, and reduces the amount of code compared to when the coordinate values of the fifth vertex E are encoded.
[0357] For each of the two angles, the angle itself may be coded, or an index specifying one of a plurality of predefined angles may be coded. A plurality of combinations of the two angles may be predefined, and an index specifying one of the plurality of combinations may be coded.
[0358] Instead of the two angles, information indicating one angle and the length of one side may be encoded. For example, the angle between sides BC and BE and the length of side BE may be encoded. Also, instead of the two angles, information indicating one angle and the length of one perpendicular line may be encoded. For example, the angle between sides BC and BE and the length of the perpendicular line from fifth vertex E to side BC may be encoded.
[0359] Alternatively, instead of the two angles, information indicating the lengths of two sides may be encoded. For example, the lengths of sides BE and CE may be encoded.
[0360] For example, "(3) Information indicating the distance and direction between the position of a vertex of a polygon and the position of the vertex to be processed" may indicate a difference vector indicating the distance and direction between the fifth vertex E of the corresponding triangle BEC and the fourth vertex D to be processed. If the position of the fourth vertex D coincides with the position of the fifth vertex E, or if the fourth vertex D and the fifth vertex E are located on the same plane, this information may be omitted.
[0361] For example, "(4) Information indicating the difference between the plane including the polygon and the plane including the polygon having the target vertex" may indicate the angle between the plane including the corresponding triangle BEC and the plane including the second triangle BDC. For example, the angle between sides BE and BD, or the angle between sides CE and CD may be encoded as the angle.
[0362] The angle itself may be encoded as the angle between sides BE and BD, or the angle between sides CE and CD, or an index specifying one of a plurality of predefined angles may be encoded. The plurality of predefined angles may also be commonly used when deriving the angle between sides BC and CE, and the angle between sides BC and BE.
[0363] In addition, indices indicating a plurality of combinations of the angle between sides BE and BD, the angle between sides CE and CD, the angle between sides BC and CE, and the angle between sides BC and BE may be defined in advance, which makes it possible to further reduce the amount of code compared to encoding the angles themselves.
[0364] If the position of the fourth vertex D coincides with the position of the fifth vertex E, or if the fourth vertex D is located on the same plane as the fifth vertex E, the angle may be omitted. Also, if the angle is expressed by an index, if the angle is expressed with integer precision, or if the coordinate value is expressed with integer precision, a difference vector may be encoded in addition to the angle. This makes it possible to correct the derived coordinate value of the fourth vertex D, thereby improving the encoding accuracy.
[0365] Furthermore, the fourth vertex D may be used as the first vertex A, the second vertex B, or the third vertex C relative to the other vertices.
[0366] Furthermore, a processing method such as an encoding method or a decoding method may be selected for each vertex to be processed, thereby switching between multiple processing methods. In this case, information indicating the processing method used to encode the vertex to be processed may be encoded. Alternatively, a processing method may be selected for each three-dimensional mesh, thereby switching between multiple processing methods, and information indicating the processing method may be encoded for each three-dimensional mesh.
[0367] This may make it possible to select a processing method that is suited to the characteristics of the three-dimensional mesh, which may facilitate improvement in subjective image quality and reduction in the amount of code.
[0368] Furthermore, the term "difference" as used herein may be rephrased as "deviation," "residual," or "delta." Furthermore, the term "vertex" as used herein may refer to the position of the vertex.
[0369] Furthermore, the corresponding triangle in the above description may be expressed as a predicted triangle or a virtual corresponding triangle, and the fifth vertex E of the corresponding triangle may be expressed as a corresponding vertex, a corresponding point, a predicted vertex, or a predicted point.
[0370] <Second Aspect of Encoding and Decoding Vertex Information> The second mode of encoding and decoding vertex information is a mode that can be combined with the first mode of encoding and decoding vertex information.
[0371] Regardless of the prediction method used in mesh coding, imperfections in the input 3D mesh will cause exceptions that require special handling tools. Exceptions can exist in various components of the polygon mesh, such as connectivity, geometry coordinates, or property attributes. Common defects found in 3D models are degenerate faces, duplicate vertices, and disconnected parts.
[0372] 3D graphical data captured on various real-world hardware is prone to irregularities such as degenerate faces, duplicate vertices, and disconnected areas. A degenerate face occurs when at least two of the vertices that make up a face have the same vertex index, resulting in zero surface area and undefined surface normals.
[0373] Duplicate vertices have the exact same coordinates but are represented by two or more different indices. Thus, the same point is represented by different indices on different faces. Therefore, when traversing the mesh topology, these vertices are considered non-identical, which causes encoding techniques that rely on previously encoded vertices to fail. Also, polygon meshes can have disconnected, or incomplete, parts, which can make it difficult to traverse the entire model.
[0374] To resolve exceptional cases, virtual reference triangles are generated, enabling the implementation of angle-based 3D graphics encoding techniques. The virtual reference triangles may be constructed using a combination of previously encoded vertices and dummy vertices selected according to predetermined conditions. Exception handling of the 3D model may be indicated from the encoding device 100 to the decoding device 200 using mode setting parameters.
[0375] In this manner, if an exception occurs, it becomes possible to encode new vertices using a virtual reference triangle.
[0376] <Example of encoding process according to the second aspect> 47 is a flowchart showing an example of encoding processing according to this aspect. First, connectivity information of a first vertex, a second vertex, and a third vertex is derived from a three-dimensional mesh (S121). Here, the first vertex, the second vertex, and the third vertex form a first triangle.
[0377] Next, it is determined whether the derived connection information satisfies a condition (S122). Here, there are two possible conditions: The first condition is that the first vertex, the second vertex, and the third vertex are connected to each other; and the second condition is that the first vertex, the second vertex, and the third vertex have already been coded. Note that vertex information may be derived and used for this determination, in addition to connection information.
[0378] 48 is a conceptual diagram showing an example of a mesh according to this embodiment, where A1, B1, C1, D1, E1, and F1 are vertices in the geometry map.
[0379] Figure 49 is a conceptual diagram showing an example of a fragmented mesh in which some of the three vertices that make up a triangle are not connected. A2, B2, C2, D2, E2, and F2 are vertices in the connectivity map. In Figure 49, solid lines indicate connections, and dotted lines indicate non-connections. Note that areas without lines also indicate non-connections. In encoding vertex D1, vertex A1 of triangle A1B1C1 is not suitable for use because there is no connectivity between A2 and C2, and between A2 and B2.
[0380] Note that the absence of connectivity between two vertices means that the two vertices are not connected, and can also be expressed as the absence of connectivity in the edge between the two vertices.
[0381] Figure 50 is a conceptual diagram showing an example of a mesh with overlapping vertices, where the vertices of the reference triangle are not coded before coding the vertex to be coded. Vertices C and F are two different points in the mesh and exist on different faces in the mesh. Vertices C and F have the same coordinates, so they are displayed as overlapping points.
[0382] First, vertices A, B, and C are coded in traverse order. Then, vertex D is coded in the angle method using reference triangle ABC. Next, vertex E is coded using reference triangle BDF, while vertex F has not yet been coded.
[0383] Furthermore, in order to efficiently represent three-dimensional images, virtual vertices and virtual triangles may be used in three-dimensional meshes, and in such cases, the vertices may not be coded or there may be no connectivity between the vertices.
[0384] 47, if it is determined that the derived connection information satisfies the condition (Yes in S122), the first vertex, the second vertex, and the third vertex are derived as three vertices (S123). Here, the second vertex, the third vertex, and the fourth vertex form a second triangle on the three-dimensional mesh, and the fourth vertex is located opposite the first vertex.
[0385] Figure 31 shows an example of the location of three vertices, where B and C are the second and third vertices, A is the first vertex, and D is the fourth vertex. The reference triangle formed by ABC can be used to encode vertex D.
[0386] 47, if it is determined that the derived connection information does not satisfy the condition (No in S122), at least three vertices including the fifth vertex are derived (S124). The fifth vertex is different from the first, second, and third vertices. Note that the fifth vertex in this aspect is a vertex used in place of any of the first, second, and third vertices, and has a different meaning from the fifth vertex in the first aspect.
[0387] Figure 51 is a conceptual diagram showing an example of exception handling using a set of previously coded vertices. This example is for the case where vertex B does not satisfy the condition (does not exist or has not yet been coded). The reference triangle of BCD cannot be used to code vertex E. Vertex B is replaced with vertex A (the fifth vertex) that was previously coded, and a new virtual reference triangle ACD is formed that can be used to code vertex E.
[0388] In another example, the fifth vertex may be created as a dummy vertex having predefined coordinates. A virtual reference triangle may be formed including the dummy vertex. The encoding device 100 may calculate the dummy vertex. Alternatively, the dummy vertices may be predefined at fixed coordinates (1, 0, 0), (0, 1, 0), and (0, 0, 1), and these dummy vertices may serve as the first vertex, the second vertex, and the third vertex.
[0389] The coordinates of the dummy vertices may be selected in a model-specific manner. In one example, the encoding device 100 may calculate the dimensions of the 3D bounding box of the object and create the dummy vertices using those values. The created dummy vertices may be signaled in the bitstream. Also, if there are multiple vertices that do not satisfy the condition, the same number of dummy vertices or previously encoded vertices may be used as the number of vertices that do not satisfy the condition.
[0390] In Figure 47, a plurality of angles for identifying a fourth vertex are derived from a triangle formed by the derived three vertices (S125). Here, the fourth vertex forms a second triangle using a common side with the triangle formed based on the derived three vertices. The number of derived angles depends on the prediction method used to encode the fourth vertex. Figures 31, 32, and 33 show different examples of deriving at least a plurality of angles using the fourth vertex and the derived three vertices A, B, and C.
[0391] The multiple angles are coded into a bitstream (S126). An example of coding the multiple angles is to use entropy coding. Examples of coding methods that the entropy coding may follow include Huffman coding, arithmetic coding, range coding, asymmetric number system (ANS), or context-adaptive binary arithmetic coding (CABAC).
[0392] Fig. 52 is a flowchart showing a specific example of the encoding process according to this embodiment. In the flowchart shown in Fig. 52, a process of encoding vertices using exceptions (S131) is added compared to the flowchart shown in Fig. 30. This process (S131) corresponds to the processes (S124, S125, S126) shown in Fig. 47. In other words, the process of encoding vertices using exceptions is one of the encoding modes used for compressing mesh data.
[0393] Fig. 53 is a block diagram showing an example of the configuration of an encoding device 100 according to this aspect. The encoding device 100 encodes a 3D mesh into a bitstream. As shown in Fig. 53, the encoding device 100 may include a traverser 161, a determiner 167, an exception handler 168, an angle deriving device 163, and an entropy encoder 166.
[0394] The traverser 161 acquires a three-dimensional mesh. The traverser 161 also outputs connectivity information of a first vertex, a second vertex, and a third vertex derived from the three-dimensional mesh to the determiner 167. The traverser 161 also determines a fourth vertex to be coded in the three-dimensional mesh. Here, the first vertex, the second vertex, and the third vertex form a first triangle, which has a common side with a second triangle including the fourth vertex.
[0395] The determiner 167 checks whether the connection information satisfies the condition. If it is determined that the connection information satisfies the condition, the angle deriving unit 163 performs processing using the first vertex, the second vertex, and the third vertex.
[0396] If it is determined that the connection information does not satisfy the condition, the exception handler 168 derives at least three vertices including the fifth vertex. The angle deriving unit 163 performs processing using at least the three vertices including the fifth vertex.
[0397] The angle deriver 163 derives a plurality of angles using the three vertices and the fourth vertex. In an example where the vertices represent geometric coordinates, three angles are derived. The number of angles derived depends on the prediction method used to encode the fourth vertex.
[0398] The entropy encoder 166 encodes the angles derived by the angle deriver 163 into a bitstream.
[0399] <Example of Decryption Process According to Second Aspect> 54 is a flowchart showing an example of a decoding process according to this aspect. First, connection information of a first vertex, a second vertex, and a third vertex is derived from a bitstream (S221). Here, the first vertex, the second vertex, and the third vertex form a first triangle.
[0400] Next, it is determined whether the derived connection information satisfies a condition (S222). Here, there are two possible conditions: The first condition is that the first vertex, the second vertex, and the third vertex are connected to each other; The second condition is that the first vertex, the second vertex, and the third vertex have already been decoded. Note that vertex information may be derived in addition to connection information and used for this determination.
[0401] 48 is a conceptual diagram showing an example of a mesh according to this embodiment, where A1, B1, C1, D1, E1, and F1 are vertices in the geometry map.
[0402] Figure 49 is a conceptual diagram showing an example of a fragmented mesh in which some of the three vertices that make up a triangle are not connected. A2, B2, C2, D2, E2, and F2 are vertices in the connectivity map. In Figure 49, solid lines indicate connections, and dotted lines indicate non-connections. Note that areas without lines also indicate non-connections. In decoding vertex D1, there is no connectivity between A2 and C2, and between A2 and B2, so vertex A1 of triangle A1B1C1 is not suitable for use.
[0403] Note that the absence of connectivity between two vertices means that the two vertices are not connected, and can also be expressed as the absence of connectivity in the edge between the two vertices.
[0404] 50 is a conceptual diagram showing an example of a mesh with overlapping vertices, in which the vertices of the reference triangle have not been decoded before the vertex to be decoded is decoded. Vertex C and vertex F are two different points in the mesh and exist on different faces in the mesh. Vertex C and vertex F have the same coordinates, so they are displayed as overlapping points.
[0405] First, vertices A, B, and C are decoded in traverse order. Then, vertex D is decoded in the angle method using reference triangle ABC. Next, when vertex E is decoded using reference triangle BDF, vertex F has not yet been decoded.
[0406] In addition, in order to efficiently represent three-dimensional images, virtual vertices and virtual triangles may be used in three-dimensional meshes, and in such cases, there is a possibility that vertices may not be decoded or that there may be no connectivity between vertices.
[0407] 54, if it is determined that the derived connection information satisfies the condition (Yes in S222), the first vertex, the second vertex, and the third vertex are derived as three vertices (S223). Here, the second vertex, the third vertex, and the fourth vertex form a second triangle on the three-dimensional mesh, and the fourth vertex is located opposite the first vertex.
[0408] Figure 31 shows an example of the location of three vertices, where B and C are the second and third vertices, A is the first vertex, and D is the fourth vertex. The reference triangle formed by ABC can be used to decode vertex D.
[0409] 54, if it is determined that the derived connection information does not satisfy the condition (No in S222), at least three vertices including the fifth vertex are derived (S224). The fifth vertex is different from the first, second, and third vertices. Note that the fifth vertex in this aspect is a vertex used in place of any of the first, second, and third vertices, and has a different meaning from the fifth vertex in the first aspect.
[0410] Figure 51 is a conceptual diagram showing an example of exception handling using a previously decoded vertex set. This example is for the case where vertex B does not satisfy the condition (does not exist or has not yet been decoded). The reference triangle of BCD cannot be used to decode vertex E. Vertex B is replaced with previously decoded vertex A (the fifth vertex), and a new virtual reference triangle ACD is formed that can be used to decode vertex E.
[0411] In another example, the fifth vertex may be created as a dummy vertex having predefined coordinates. A virtual reference triangle may be formed including the dummy vertex. The decoding device 200 may calculate the dummy vertices in the same manner as the encoding device 100. Furthermore, the dummy vertices may be predefined at fixed coordinates (1, 0, 0), (0, 1, 0), and (0, 0, 1), and these dummy vertices may serve as the first vertex, the second vertex, and the third vertex.
[0412] The coordinates of the dummy vertices may be selected in a model-specific manner. In one example, the decoding device 200 may calculate the dimensions of the 3D bounding box of the object and create the dummy vertices using those values. Alternatively, the dummy vertices created by the encoding device 100 may be signaled in the bitstream and decoded by the decoding device 200. Alternatively, if there are multiple vertices that do not satisfy the condition, the same number of dummy vertices or previously decoded vertices as the number of vertices that do not satisfy the condition may be used.
[0413] In Figure 54, multiple angles are decoded from the bitstream (S225). An example of decoding multiple angles is using entropy decoding. Examples of coding methods that the entropy decoding is based on may be Huffman coding, arithmetic coding, range coding, asymmetric number system (ANS), or context-adaptive binary arithmetic coding (CABAC). The number of multiple angles decoded depends on the prediction method used to decode the fourth vertex.
[0414] A fourth vertex is derived using the multiple angles (S226). Here, the fourth vertex forms a second triangle using a common side with the triangle formed based on the derived three vertices. Figures 31, 32, and 33 show different examples of deriving the fourth vertex using the three derived vertices A, B, and C and multiple angles.
[0415] Figure 55 is a flowchart showing a specific example of a decoding process according to this aspect. Compared with the flowchart shown in Figure 44, the flowchart shown in Figure 55 adds a process (S231) of decoding a vertex using an exception. This process (S231) corresponds to the processes (S224, S225, S226) shown in Figure 54. In other words, the process of decoding a vertex using an exception is one of the decoding modes used for decompressing a bitstream.
[0416] Fig. 56 is a block diagram showing an example of the configuration of a decoding device 200 according to this aspect. The decoding device 200 decodes a 3D mesh from a bitstream. As shown in Fig. 56, the decoding device 200 includes an entropy decoder 266, a traverser 261, a determiner 267, an exception handler 268, and a coordinate deriving device 264.
[0417] The entropy decoder 266 obtains a bitstream and decodes from the bitstream connectivity information and angles of a first vertex, a second vertex, and a third vertex, where the first vertex, the second vertex, and the third vertex form a first triangle.
[0418] The traverser 261 outputs the connection information decoded by the entropy decoder 266 to the determiner 267 .
[0419] The determiner 267 checks whether the connection information satisfies the condition. If it is determined that the connection information satisfies the condition, the coordinate deriver 264 performs processing using the first vertex, the second vertex, and the third vertex.
[0420] If it is determined that the connection information does not satisfy the condition, the exception handler 268 derives at least three vertices including the fifth vertex.
[0421] The coordinate deriver 264 derives and outputs a fourth vertex in the 3D mesh using the three vertices and the multiple angles, where the fourth vertex forms a second triangle using a common side with the triangle formed based on the three vertices.
[0422] In this aspect, if a reference triangle for encoding or decoding a vertex contains unconnected edges or vertices that have not been encoded or decoded, a new virtual reference triangle is formed using the new vertices, thereby efficiently encoding or decoding the vertex.
[0423] <Supplementary information on the second aspect of encoding and decoding of vertex information> In this embodiment, whether to execute exception processing is selected based on the result of determining whether the information on the reference triangle satisfies the conditions, as shown in Figure 47 or Figure 54. The conditions may be, for example, the following conditions:
[0424] (i) Each edge of the reference triangle has connectivity (see Figure 49). For example, among the vertices of the reference triangle, the vertex located opposite the target vertex across the edge shared by the triangle including the target vertex and the reference triangle is connected to another vertex of the reference triangle.
[0425] (ii) Each vertex of the reference triangle has already been coded or decoded.
[0426] Note that the above conditions (i) and (ii) are merely examples, and only one of the conditions may be used for the determination, or a different condition may be added, or at least one of the conditions may be replaced with a different condition. In other words, in a configuration in which a first process that processes (encodes or decodes) a vertex using a reference triangle and a second process that processes a target vertex using a triangle different from the reference triangle can be selected or switched, information about the reference triangle may be used as a condition for the selection or switching.
[0427] The reference triangle may be defined as a triangle that shares a vertex or an edge with the triangle having the target vertex. A triangle different from the reference triangle may be a triangle that does not share at least one vertex or edge with the triangle having the target vertex. Note that any triangle may be a polygon different from a triangle.
[0428] The selection or switching between the first process and the second process may be determined using any one or a combination of the position information, connection information, and information on whether the vertex of the reference triangle is available (whether the vertex exists or has already been encoded or decoded). Information on other triangles or information on the vertices of the triangle that has the vertex to be processed may also be used.
[0429] Instead of selecting or switching between the first process and the second process, a process may be selected or switched from a plurality of processes including the first process and the second process. That is, the plurality of processes may include a process different from the first process and the second process.
[0430] As described above, the first process uses a reference triangle and the second process uses a triangle different from the reference triangle, but the first process and the second process are not limited to this. That is, the same triangle may be used in the first process and the second process.
[0431] For example, the first process may be a process performed using a reference triangle, and the second process may be another process performed using the reference triangle, or the first process may be a process performed using a triangle different from the reference triangle, and the second process may be another process performed using a triangle different from the reference triangle.
[0432] Furthermore, for example, the first process may be a process performed using a reference triangle, and the second process may be a process performed using another triangle having at least one side that does not have connectivity.
[0433] In this case, a process performed using yet another triangle whose sides have connectivity may be defined as the third process, and the process may be selected or switched from a plurality of processes including the first process, the second process, and the third process.
[0434] In this case, the selectable exception handling may differ based on the result of the condition determination. The following configurations may be used as combinations of the result of the condition determination and the exception handling, for example.
[0435] As an example, in relation to the condition (i) above, if each vertex of the reference triangle has been processed (encoded or decoded) but any edge of the reference triangle does not have connectivity, a process may be selected from a plurality of processes including the first process and the third process.
[0436] Here, when the first process is executed, it is possible to suppress an increase in the amount of processing because a reference triangle is used regardless of the presence or absence of connectivity. When the third process is executed, it is possible to use a triangle that constitutes the same object as the object that the triangle containing the vertex to be processed constitutes, and it may be possible to indicate the vertex to be processed more efficiently than the first process.
[0437] As another example, in relation to the above-mentioned condition (ii), if the vertices of the reference triangle have not been processed (encoded or decoded), a process may be selected from a plurality of processes including the second process and the third process. In other words, a process may be performed using a triangle different from the reference triangle, regardless of connectivity. In the case of the third process, the process may be performed more efficiently than the second process.
[0438] As another example, if at least one of the conditions (i) and (ii) is not satisfied, the third process may always be selected. In other words, if at least one of the conditions (i) and (ii) is not satisfied, the reference triangle may be set as unavailable, and processing may be performed using another triangle whose vertices have been processed and whose sides have connectivity. This configuration may result in more efficient processing.
[0439] Note that the position information of the vertices in the present disclosure is not limited to information on the coordinates of the geometry, and may be other position information different from the geometry.
[0440] For example, if an exception occurs, vertices that cannot be used for encoding or decoding are replaced by vertices that have already been encoded or decoded, such as the last three vertices of the encoded or decoded part of a mesh.
[0441] One or more additional vertices may be used to form a new reference triangle. An index indicating which vertices are used to form the reference triangle may be signaled from the encoding device 100 to the decoding device 200. Such signaling may be applied not only to exceptional cases but also to non-exceptional cases. Furthermore, such signaling may be applied not only to the "angle" prediction mode but also to other prediction modes that use a reference triangle, such as a parallelogram prediction mode.
[0442] For example, if an exception occurs, a dummy reference triangle may be generated using predefined vertices, which may be (1,0,0), (0,1,0), and (0,0,1). A new reference triangle may then be created using the predefined vertices. The new reference triangle may then be used to process the vertices.
[0443] 57 is a flowchart showing an example of exception handling according to this embodiment. For example, the vertices of a reference triangle are set using predefined values (S301). Then, the vertices of a new triangle are encoded or decoded using the reference triangle.
[0444] 58 is a flowchart showing another example of the encoding process according to this aspect. First, the encoding device 100 derives the coordinates of a fourth vertex to be encoded from a mesh (S151). Here, a triangle having the fourth vertex is defined as a second triangle, and a triangle sharing an edge with the second triangle is defined as a reference triangle.
[0445] The encoding device 100 derives connectivity information of the reference triangle from the mesh (S152). In the following steps, the encoding device 100 determines whether the connectivity information of the reference triangle satisfies a condition, and performs encoding processing of the vertex coordinates based on the determination result. Here, the following two examples of the determination processing are given.
[0446] (i) Whether each side of the reference triangle has connectivity (S153), for example, whether the vertices at both ends of the side shared by the reference triangle and the second triangle are connected to the remaining vertices of the reference triangle.
[0447] (ii) Whether each vertex of the reference triangle has already been coded (S154).
[0448] If the determination result in at least one of (i) and (ii) above is negative (No in S153 or No in S154), the encoding device 100 encodes information for identifying the coordinates of the fourth vertex based on the exception handling exemplified in the present disclosure (S155, S156). On the other hand, if both (i) and (ii) above are satisfied (Yes in S153 and Yes in S154), the encoding device 100 encodes information for identifying the coordinates of the fourth vertex based on the reference triangle. Here, an example is shown in which angle information is used for encoding (S156).
[0449] The exception handling when (i) is not satisfied and the exception handling when (ii) is not satisfied may be different from each other. Also, vertex information may be derived and used for the determination, in addition to connection information.
[0450] 59 is a flowchart showing another example of the decoding process according to this embodiment. First, the decoding device 200 acquires information for identifying the coordinates of the fourth vertex to be decoded from the bitstream. Here, an example of decoding angle information is shown (S251). Here, a triangle having the fourth vertex is defined as a second triangle, and a triangle sharing an edge with the second triangle is defined as a reference triangle.
[0451] The decoding device 200 derives the connectivity information of the reference triangle from the bitstream (S252). In the following steps, the decoding device 200 determines whether the connectivity information of the reference triangle satisfies a condition, and performs a decoding process of the vertex coordinates based on the determination result. Here, the following two examples of the determination process are given.
[0452] (i) Whether each side of the reference triangle has connectivity (S253), for example, whether the vertices at both ends of the side shared by the reference triangle and the second triangle are connected to the remaining vertices of the reference triangle.
[0453] (ii) Whether each vertex of the reference triangle has already been decoded (S254).
[0454] If the determination result in at least one of (i) and (ii) above is negative (No in S253 or No in S254), the decoding device 200 derives (decodes) the coordinates of the fourth vertex based on the exception handling exemplified in the present disclosure (S255, S256). On the other hand, if both (i) and (ii) above are satisfied (Yes in S253 and Yes in S254), the decoding device 200 derives (decodes) the coordinates of the fourth vertex based on the reference triangle. Here, an example is shown in which angle information is used for the derivation (decoding) (S256).
[0455] The exception handling when (i) is not satisfied and the exception handling when (ii) is not satisfied may be different from each other. Also, vertex information may be derived and used for the determination, in addition to connection information.
[0456] Figure 60 is a conceptual diagram showing an example of the location of parameters in the bitstream. Information for exception handling may be signaled as parameters in the bitstream, as shown in Figure 60.
[0457] Figure 61 is a conceptual diagram showing another example of the location of parameters in a bitstream. Information for exception handling may be signaled as a parameter in the header of the bitstream, as shown in Figure 61.
[0458] A parameter may also be used to indicate the method of exception handling. In one example, the parameter is an index having a value of 0 or 1. The value may indicate whether to use a predefined dummy vertex or a signaled dummy vertex. If a signaled dummy vertex is used, the dummy vertex is also signaled after the parameter.
[0459] <Representative example> Fig. 62 is a flowchart showing an example of basic encoding processing according to this embodiment. For example, the circuit 151 of the encoding device 100 shown in Fig. 24 performs the encoding processing shown in Fig. 62 in operation.
[0460] Specifically, if the first triangle satisfies the condition (Yes in S161), the circuit 151 selects a mode for encoding the vertex to be encoded from a first mode set including a normal mode in which the vertex to be encoded of the second triangle is encoded using the first triangle (S162).On the other hand, if the first triangle does not satisfy the condition (No in S161), the circuit 151 selects a mode from a second mode set including an exceptional mode in which the vertex to be encoded is encoded using a third triangle that is different from both the first and second triangles (S163).
[0461] Then, the circuit 151 encodes the encoding target vertex in accordance with the mode (S164).
[0462] This may allow the vertices of the second triangle to be coded using a third triangle that is different from the first triangle if the first triangle does not satisfy the conditions, and therefore may allow the vertices of the second triangle to be coded using a reference triangle that is suitable for coding.
[0463] For example, the third triangle may be a triangle that shares a side with the first triangle. This may allow a third triangle near the first triangle used in the normal mode to be used in the exception mode. This may reduce the difference between the normal mode and the exception mode. This may reduce the variation in the amount of code.
[0464] Furthermore, for example, the third triangle may be a triangle that shares an edge with the second triangle. This may allow the third triangle near the second triangle to be used in the exception mode. Therefore, it may be possible to efficiently encode the vertex to be encoded using the third triangle near the vertex to be encoded.
[0465] Furthermore, for example, the third triangle may be a triangle that shares a vertex with the first triangle. This may allow a third triangle near the first triangle used in the normal mode to be used in the exception mode. This may reduce the difference between the normal mode and the exception mode. This may reduce the variation in the amount of code.
[0466] Furthermore, for example, the third triangle may be a triangle whose vertices have already been coded. This may make it possible to code the vertices to be coded using the third triangle that reflects the characteristics of the three-dimensional mesh. Therefore, it may be possible to code the vertices to be coded efficiently.
[0467] Furthermore, for example, the third triangle may be a triangle whose sides have connectivity. This may make it possible to encode the vertices to be encoded using the third triangle that reflects the characteristics of the three-dimensional mesh. Therefore, it may be possible to efficiently encode the vertices to be encoded.
[0468] Furthermore, for example, the third triangle may be a triangle having a dummy vertex. This may make it possible to encode the vertex to be encoded using a third triangle having any vertex. Therefore, it may be possible to flexibly encode the vertex to be encoded.
[0469] Furthermore, for example, the exception mode may include multiple sub-modes. When the exception mode is selected as the mode, the circuit 151 may select a sub-mode for encoding the vertex to be encoded from among the multiple sub-modes. This may make it possible to encode the vertex to be encoded according to a sub-mode selected from among the multiple sub-modes in the exception mode. Therefore, it may be possible to encode the vertex to be encoded according to an exception handling method that is adaptively selected from among the multiple exception handling methods.
[0470] Furthermore, for example, the circuit 151 may encode a parameter indicating the submode. This may make it possible to share information about the submode for encoding the vertex to be encoded between the encoding device 100 and the decoding device 200 according to the parameter. Therefore, it may be possible to apply the same submode to encoding and decoding according to the parameter.
[0471] Furthermore, for example, the circuit 151 may determine the third triangle according to the submode. This may allow a third triangle suitable for encoding to be selected by selecting a submode from among multiple submodes. Therefore, it may be possible to efficiently encode the encoding target vertex using the third triangle suitable for encoding.
[0472] Furthermore, for example, the circuit 151 may determine the vertices of the third triangle according to the submode. This may make it possible to select the vertices of the third triangle suitable for encoding by selecting a submode from among a plurality of submodes. Therefore, it may be possible to efficiently encode the vertices to be encoded using the third triangle suitable for encoding.
[0473] Furthermore, for example, the condition may include that each vertex of the first triangle must be coded. This may prevent a first triangle having any vertices that have not been coded from being used to code the vertices of the second triangle. This may also allow a mode suitable for coding the vertices of the second triangle to be used.
[0474] Furthermore, for example, the condition may include that each side of the first triangle has connectivity. This may prevent a first triangle whose sides do not have connectivity from being used to encode the vertices of the second triangle. This may also allow a mode suitable for encoding the vertices of the second triangle to be used.
[0475] Furthermore, for example, when encoding a vertex to be encoded according to the exception mode, the circuit 151 may encode the angle indicating the vertex to be encoded using a third triangle.
[0476] This may make it possible to prevent the amount of code from becoming too large, i.e., to suppress the worst-case amount of code.
[0477] Also, for example, the first triangle and the second triangle may share a side, and the side shared by the first triangle and the second triangle may correspond to the side opposite the vertex to be coded in the second triangle.
[0478] Furthermore, for example, the third triangle may have a side shared by the first triangle and the second triangle. In other words, the first triangle, the second triangle, and the third triangle may share a side. In this case, the third triangle shares a side with the first triangle, a side with the second triangle, a vertex with the first triangle, and a vertex with the second triangle. However, the third triangle is not limited to such a triangle, and may, for example, have any side or any vertex of the first triangle.
[0479] Also, for example, the normal mode may be a mode in which the current vertex is coded using a first triangle and one or more angles, and the exceptional mode may be a mode in which the current vertex is coded using a third triangle and one or more angles.
[0480] For example, the first mode set and the second mode set may be different from each other. Specifically, the normal mode may be included only in the first mode set and not in the second mode set. Also, the exceptional mode may be included only in the second mode set and not in the first mode set.
[0481] Furthermore, for example, the first mode set may include at least one of a mode for encoding the vertices to be encoded using coordinates, a mode for encoding the vertices to be encoded using a parallelogram, and a mode for encoding the vertices to be encoded using a polynomial. Here, the parallelogram may be based on a first triangle. And the normal mode may be a mode for encoding the vertices to be encoded using a parallelogram based on the first triangle.
[0482] Furthermore, for example, the second mode set may include at least one of a mode for encoding the vertices to be encoded using coordinates, a mode for encoding the vertices to be encoded using a parallelogram, and a mode for encoding the vertices to be encoded using a polynomial. Here, the parallelogram may be based on a third triangle. And the exceptional mode may be a mode for encoding the vertices to be encoded using a parallelogram based on the third triangle.
[0483] Also, for example, the first mode set may include only the normal mode. Then, the circuit 151 may select the normal mode if the first triangle satisfies the condition. That is, the circuit 151 may encode the encoding target vertex according to the normal mode if the first triangle satisfies the condition.
[0484] Also, for example, the second mode set may include only the exception mode. Then, the circuit 151 may select the exception mode when the first triangle does not satisfy the condition. That is, when the first triangle does not satisfy the condition, the circuit 151 may encode the encoding target vertex according to the exception mode.
[0485] Alternatively, for example, the circuit 151 may select a mode from a mode set including a normal mode and an exceptional mode. In this case, the mode set may correspond to both the first mode set and the second mode set. Then, if the first triangle satisfies the condition, the circuit 151 may select the normal mode and encode the vertex to be encoded according to the normal mode. Alternatively, if the first triangle does not satisfy the condition, the circuit 151 may select the exceptional mode and encode the vertex to be encoded according to the exceptional mode.
[0486] Furthermore, for example, the multiple sub-modes may include a sub-mode for encoding a vertex to be encoded using a third triangle having a dummy vertex. The multiple sub-modes may include a sub-mode for encoding a vertex to be encoded using a third triangle whose vertices have already been encoded. The multiple sub-modes may include a sub-mode for encoding a vertex to be encoded using a third triangle whose sides have connectivity. The sub-modes may correspond to conditions for the third triangle or conditions for the vertices of the third triangle.
[0487] That is, the sub-mode may correspond to a method for selecting the third triangle or the vertices of the third triangle.
[0488] Furthermore, for example, the normal mode may include multiple sub-modes. When the normal mode is selected as the mode, the circuit 151 may select a sub-mode for encoding the encoding target vertex from the multiple sub-modes. The circuit 151 may determine the first triangle or the vertices of the first triangle according to the sub-mode. In other words, the sub-mode may correspond to a method for selecting the first triangle or the vertices of the first triangle.
[0489] Also, for example, a sub-mode included in an exceptional mode may be expressed as an exceptional sub-mode, and a sub-mode included in a normal mode may be expressed as a normal sub-mode.
[0490] Also, for example, a mode may be expressed as a process, and the normal mode, the exception mode, and the sub-mode may be expressed as a normal process, an exception process, and a sub-process.
[0491] Also, for example, the circuit 151 may encode the vertex to be encoded by entropy encoding. Specifically, the circuit 151 may encode an angle indicating the vertex to be encoded by entropy encoding. Also, for example, the circuit 151 may encode one, two, or three angles for identifying the vertex to be encoded.
[0492] Furthermore, for example, the first triangle may be a reference triangle that is determined as a triangle that is close to the vertex to be coded according to a reference rule.
[0493] Also, for example, each of the vertices described above may be expressed by geometric coordinates in a three-dimensional mesh.
[0494] Fig. 63 is a flowchart showing an example of basic decoding processing according to this embodiment. For example, the circuit 251 of the decoding device 200 shown in Fig. 25 performs the decoding processing shown in Fig. 63 in operation.
[0495] Specifically, if the first triangle satisfies the condition (Yes in S261), the circuit 251 selects a mode for decoding the vertex to be decoded from a first mode set including a normal mode in which the vertex to be decoded of the second triangle is decoded using the first triangle (S262). On the other hand, if the first triangle does not satisfy the condition (No in S261), the circuit 251 selects a mode from a second mode set including an exceptional mode in which the vertex to be decoded is decoded using a third triangle different from both the first and second triangles (S263).
[0496] Then, the circuit 251 decodes the vertex to be decoded according to the mode (S264).
[0497] This may allow the vertices of the second triangle to be decoded using a third triangle that is different from the first triangle if the first triangle does not satisfy the condition, and therefore may allow the vertices of the second triangle to be decoded using a reference triangle that is suitable for decoding.
[0498] For example, the third triangle may be a triangle that shares a side with the first triangle. This may allow a third triangle near the first triangle used in the normal mode to be used in the exception mode. This may reduce the difference between the normal mode and the exception mode. This may reduce the variation in the amount of code.
[0499] Furthermore, for example, the third triangle may be a triangle that shares an edge with the second triangle. This may allow the third triangle near the second triangle to be used in the exception mode. Therefore, it may be possible to efficiently decode the vertex to be decoded using the third triangle near the vertex to be decoded.
[0500] Furthermore, for example, the third triangle may be a triangle that shares a vertex with the first triangle. This may allow a third triangle near the first triangle used in the normal mode to be used in the exception mode. This may reduce the difference between the normal mode and the exception mode. This may reduce the variation in the amount of code.
[0501] Furthermore, for example, the third triangle may be a triangle whose vertices have already been decoded. This may make it possible to decode the vertices to be decoded using the third triangle that reflects the characteristics of the three-dimensional mesh. Therefore, it may be possible to efficiently decode the vertices to be decoded.
[0502] Furthermore, for example, the third triangle may be a triangle whose sides have connectivity. This may make it possible to decode the vertex to be decoded using the third triangle that reflects the characteristics of the three-dimensional mesh. Therefore, it may be possible to efficiently decode the vertex to be decoded.
[0503] Furthermore, for example, the third triangle may be a triangle having a dummy vertex. This may make it possible to decode the vertex to be decoded using a third triangle having any vertex. Therefore, it may be possible to flexibly decode the vertex to be decoded.
[0504] Furthermore, for example, the exception mode may include multiple sub-modes. When the exception mode is selected as the mode, the circuit 251 may select a sub-mode for decoding the vertex to be decoded from among the multiple sub-modes. This may make it possible to decode the vertex to be decoded according to a sub-mode selected from among the multiple sub-modes in the exception mode. Therefore, it may be possible to decode the vertex to be decoded according to an exception handling method that is adaptively selected from among the multiple exception handling methods.
[0505] Furthermore, for example, the circuit 251 may decode a parameter indicating a submode. This may make it possible to share information about the submode for decoding the vertex to be decoded between the encoding device 100 and the decoding device 200 according to the parameter. Therefore, it may be possible to apply the same submode to encoding and decoding according to the parameter.
[0506] Furthermore, for example, the circuit 251 may determine the third triangle according to the submode. This may make it possible to select a third triangle suitable for decoding by selecting a submode from among multiple submodes. Therefore, it may be possible to efficiently decode the vertex to be decoded using the third triangle suitable for decoding.
[0507] Furthermore, for example, the circuit 251 may determine the vertices of the third triangle according to the submode. This may make it possible to select the vertices of the third triangle suitable for decoding by selecting a submode from among a plurality of submodes. Therefore, it may be possible to efficiently decode the vertices to be decoded using the third triangle suitable for decoding.
[0508] Furthermore, for example, the condition may include that each vertex of the first triangle must be decoded. This may prevent a first triangle having any vertex that has not been decoded from being used to decode the vertices of the second triangle. This may also allow a mode suitable for decoding the vertices of the second triangle to be used.
[0509] Furthermore, for example, the condition may include that each side of the first triangle has connectivity. This may prevent a first triangle with no connectivity from being used to decode the vertices of the second triangle. This may also allow a mode suitable for decoding the vertices of the second triangle to be used.
[0510] Furthermore, for example, when decoding a vertex to be decoded according to the exception mode, the circuit 251 may decode the angle indicating the vertex to be decoded using the third triangle. This may prevent the amount of code from becoming too large. That is, it may prevent the amount of code from becoming too large in the worst case.
[0511] Also, for example, the first triangle and the second triangle may share a side, and the side shared by the first triangle and the second triangle may correspond to the side opposite the vertex to be decoded in the second triangle.
[0512] Furthermore, for example, the third triangle may have a side shared by the first triangle and the second triangle. In other words, the first triangle, the second triangle, and the third triangle may share a side. In this case, the third triangle shares a side with the first triangle, a side with the second triangle, a vertex with the first triangle, and a vertex with the second triangle. However, the third triangle is not limited to such a triangle, and may, for example, have any side or any vertex of the first triangle.
[0513] Also, for example, the normal mode may be a mode in which the current vertex is decoded using the first triangle and one or more angles, and the exceptional mode may be a mode in which the current vertex is decoded using the third triangle and one or more angles.
[0514] For example, the first mode set and the second mode set may be different from each other. Specifically, the normal mode may be included only in the first mode set and not in the second mode set. Also, the exceptional mode may be included only in the second mode set and not in the first mode set.
[0515] Furthermore, for example, the first mode set may include at least one of a mode for decoding the vertex to be decoded using coordinates, a mode for decoding the vertex to be decoded using a parallelogram, and a mode for decoding the vertex to be decoded using a polynomial. Here, the parallelogram may be based on a first triangle. And the normal mode may be a mode for decoding the vertex to be decoded using a parallelogram based on the first triangle.
[0516] Furthermore, for example, the second mode set may include at least one of a mode for decoding the vertex to be decoded using coordinates, a mode for decoding the vertex to be decoded using a parallelogram, and a mode for decoding the vertex to be decoded using a polynomial. Here, the parallelogram may be based on a third triangle. And the exceptional mode may be a mode for decoding the vertex to be decoded using a parallelogram based on the third triangle.
[0517] Also, for example, the first mode set may include only the normal mode. Then, the circuit 251 may select the normal mode if the first triangle satisfies the condition. That is, the circuit 251 may decode the decoding target vertex according to the normal mode if the first triangle satisfies the condition.
[0518] Also, for example, the second mode set may include only the exception mode. Then, the circuit 251 may select the exception mode when the first triangle does not satisfy the condition. That is, when the first triangle does not satisfy the condition, the circuit 251 may decode the vertex to be decoded according to the exception mode.
[0519] Also, for example, the circuit 251 may select a mode from a mode set including a normal mode and an exception mode. In this case, the mode set may correspond to both the first mode set and the second mode set. Then, if the first triangle satisfies the condition, the circuit 251 may select the normal mode and decode the vertex to be decoded according to the normal mode. Also, if the first triangle does not satisfy the condition, the circuit 251 may select the exception mode and decode the vertex to be decoded according to the exception mode.
[0520] Furthermore, for example, the multiple sub-modes may include a sub-mode for decoding a vertex to be decoded using a third triangle having a dummy vertex. The multiple sub-modes may include a sub-mode for decoding a vertex to be decoded using a third triangle whose vertices have already been decoded. The multiple sub-modes may include a sub-mode for decoding a vertex to be decoded using a third triangle whose sides have connectivity. The sub-modes may correspond to conditions for the third triangle or conditions for the vertices of the third triangle.
[0521] That is, the sub-mode may correspond to a method for selecting the third triangle or the vertices of the third triangle.
[0522] Furthermore, for example, the normal mode may include multiple sub-modes. When the normal mode is selected as the mode, the circuit 251 may select a sub-mode for decoding the vertex to be decoded from among the multiple sub-modes. The circuit 251 may determine the first triangle or the vertices of the first triangle according to the sub-mode. In other words, the sub-mode may correspond to a method for selecting the first triangle or the vertices of the first triangle.
[0523] Also, for example, a sub-mode included in an exceptional mode may be expressed as an exceptional sub-mode, and a sub-mode included in a normal mode may be expressed as a normal sub-mode.
[0524] Also, for example, a mode may be expressed as a process, and the normal mode, the exception mode, and the sub-mode may be expressed as a normal process, an exception process, and a sub-process.
[0525] Also, for example, the circuit 251 may decode the vertex to be decoded by entropy decoding. Specifically, the circuit 251 may decode an angle indicating the vertex to be decoded by entropy decoding. Also, for example, the circuit 251 may decode one, two, or three angles to identify the vertex to be decoded.
[0526] Furthermore, for example, the first triangle may be a reference triangle that is determined as a triangle that is close to the vertex to be decoded according to a reference rule.
[0527] Also, for example, each of the vertices described above may be expressed by geometric coordinates in a three-dimensional mesh.
[0528] 64 is a block diagram showing yet another example configuration of the encoding device 100 according to this embodiment. In this example, the encoding device 100 includes a selector 171 and an encoding processor 172.
[0529] The selector 171 is, for example, an electrical circuit. The selector 171 may correspond to the traverser 161, the determiner 167, the exception handler 168, or the like, or may be implemented by the circuit 151 and the memory 152.
[0530] The encoding processor 172 is, for example, an electrical circuit. The encoding processor 172 may correspond to the angle deriver 163 and the entropy encoder 166 described above, or may be implemented by the circuit 151 and the memory 152 described above.
[0531] For example, the selector 171 selects a mode from a first mode set including a normal mode if the first triangle satisfies the condition, and selects a mode from a second mode set including an exceptional mode if the first triangle does not satisfy the condition. Then, the encoding processor 172 encodes the vertex to be encoded according to the mode.
[0532] This may allow the vertices of the second triangle to be coded using a third triangle that is different from the first triangle if the first triangle does not satisfy the conditions, and therefore may allow the vertices of the second triangle to be coded using a reference triangle that is suitable for coding.
[0533] 65 is a block diagram showing yet another example configuration of the decoding device 200 according to this embodiment. In this example, the decoding device 200 includes a selector 271 and a decoding processor 272.
[0534] The selector 271 is, for example, an electrical circuit. The selector 271 may correspond to the traverser 261, the determiner 267, the exception handler 268, or the like, or may be implemented by the circuit 251 and the memory 252.
[0535] The decoding processor 272 is, for example, an electrical circuit. The decoding processor 272 may correspond to the coordinate derivation unit 264 and the entropy decoder 266 described above, or may be implemented by the circuit 251 and the memory 252 described above.
[0536] For example, the selector 271 selects a mode from a first mode set including a normal mode if the first triangle satisfies the condition, and selects a mode from a second mode set including an exceptional mode if the first triangle does not satisfy the condition. Then, the decoding processor 272 decodes the vertex to be decoded according to the mode.
[0537] This may allow the vertices of the second triangle to be decoded using a third triangle that is different from the first triangle if the first triangle does not satisfy the condition, and therefore may allow the vertices of the second triangle to be decoded using a reference triangle that is suitable for decoding.
[0538] <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.
[0539] 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.
[0540] Furthermore, the encoding and decoding of the present disclosure can be applied to encoding and decoding of vertex information indicating the positions of vertices. Note that the encoding and decoding of the present disclosure is not limited to encoding and decoding of vertex information indicating the positions of vertices of faces in a three-dimensional mesh, and may also be applied to encoding and decoding of vertex information indicating the positions of other vertices. Furthermore, each process of the present disclosure may be performed as one of a plurality of selectable processes.
[0541] 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 the decoding process may be used.
[0542] 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. [Industrial Applicability]
[0543] 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. [Explanation of symbols]
[0544] 100 Encoding device 101, 121, 144 Vertex information encoder 102, 145 Connection Information Encoder 103, 122 Attribute information encoder 104, 204 Pretreatment device 105, 205 Post-processor 110 Three-dimensional data encoding system 111, 211 controller 112, 212 Input / output processor 113 Three-dimensional data encoder 114 System Multiplexer 115 3D data generator 123 Metadata Encoder 124 Multiplexer 131 Vertex Image Generator 132 Attribute image generator 133 Metadata Generator 134 Video encoder 141 Two-dimensional data encoder 142 Mesh Data Encoder 143 Texture Encoder 148 Description Encoder 151, 251 circuits 152, 252 memory 161, 261 Traversa 162, 262 switches 163 Angle Deriver 164 Angle encoder 165 Coordinate encoder 166 Entropy Encoder 167, 267 Determiner 168, 268 exception handler 171, 271 selector 172 Encoding Processor 200 Decryption 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 Presenter 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 263 Angle Decoder 264 Coordinate Deriver 265 Coordinate Decoder 266 Entropy Decoder 272 Decoding Processor 300 Network 310 External connector
Claims
1. Memory and a circuit capable of accessing the memory; The circuit, in operation, If the first plurality of vertices satisfy the condition, deriving a predicted value of data corresponding to a vertex to be encoded that is included in the second plurality of vertices using the first plurality of vertices; if the first plurality of vertices do not satisfy the condition, deriving the predicted value of the data corresponding to the vertex to be encoded using a third plurality of vertices different from the first plurality of vertices and the second plurality of vertices; encoding data corresponding to the encoding target vertex using the predicted value; Encoding device.
2. The data corresponding to the vertex to be encoded is position information of the vertex to be encoded. The encoding device according to claim 1 .
3. The data corresponding to the vertex to be encoded is attribute information of the vertex to be encoded. The encoding device according to claim 1 .
4. the first plurality of vertices have connectivity with each other; The encoding device according to claim 1 .
5. the second plurality of vertices have connectivity with each other; The encoding device according to claim 1 .
6. the third plurality of vertices have connectivity with each other. The encoding device according to claim 1 .
7. the first plurality of vertices and the third plurality of vertices include the same vertex; The encoding device according to claim 1 .
8. the second plurality of vertices and the third plurality of vertices include the same vertex; The encoding device according to claim 1 .
9. each vertex in the third plurality of vertices has been encoded; The encoding device according to claim 1 .
10. the third plurality of vertices includes a dummy vertex; The encoding device according to claim 1 .
11. the condition includes that each vertex included in the first plurality of vertices is already encoded; The encoding device according to claim 1 .
12. the condition includes that each vertex included in the first plurality of vertices has connectivity with each other; The encoding device according to claim 1 .
13. Memory and a circuit capable of accessing the memory; The circuit, in operation, If a first plurality of vertices satisfy the condition, deriving a predicted value of data corresponding to a vertex to be decoded that is included in a second plurality of vertices using the first plurality of vertices; if the first plurality of vertices do not satisfy the condition, deriving the predicted value of the data corresponding to the vertex to be decoded using a third plurality of vertices different from the first plurality of vertices and the second plurality of vertices; decoding data corresponding to the vertex to be decoded using the predicted value; Decryption device.
14. The data corresponding to the vertex to be decoded is position information of the vertex to be decoded. The decoding device according to claim 13.
15. The data corresponding to the vertex to be decoded is attribute information of the vertex to be decoded. The decoding device according to claim 13.
16. the first plurality of vertices have connectivity with each other; The decoding device according to claim 13.
17. the second plurality of vertices have connectivity with each other; The decoding device according to claim 13.
18. the third plurality of vertices have connectivity with each other. The decoding device according to claim 13.
19. the first plurality of vertices and the third plurality of vertices include the same vertex; The decoding device according to claim 13.
20. the second plurality of vertices and the third plurality of vertices include the same vertex; The decoding device according to claim 13.
21. each vertex in the third plurality of vertices has been decoded; The decoding device according to claim 13.
22. the third plurality of vertices includes a dummy vertex; The decoding device according to claim 13.
23. the condition includes that each vertex included in the first plurality of vertices has been decoded; The decoding device according to claim 13.
24. the condition includes that each vertex included in the first plurality of vertices has connectivity with each other; The decoding device according to claim 13.
25. Memory and a circuit capable of accessing the memory; The circuit, in operation, If the first plurality of vertices satisfy the condition, deriving a predicted value of data corresponding to a vertex to be encoded that is included in the second plurality of vertices using the first plurality of vertices; if the first plurality of vertices do not satisfy the condition, deriving the predicted value of the data corresponding to the vertex to be encoded using a third plurality of vertices different from the first plurality of vertices and the second plurality of vertices; writing data corresponding to the vertex to be coded into a bitstream using the predicted value; transmitting the bitstream; Transmitting device.
26. If the first plurality of vertices satisfy the condition, deriving a predicted value of data corresponding to a vertex to be encoded that is included in the second plurality of vertices using the first plurality of vertices; if the first plurality of vertices do not satisfy the condition, deriving the predicted value of the data corresponding to the vertex to be encoded using a third plurality of vertices different from the first plurality of vertices and the second plurality of vertices; encoding data corresponding to the vertex to be encoded using the predicted value, Encoding method.
27. If a first plurality of vertices satisfy the condition, deriving a predicted value of data corresponding to a vertex to be decoded that is included in a second plurality of vertices using the first plurality of vertices; if the first plurality of vertices do not satisfy the condition, deriving the predicted value of the data corresponding to the vertex to be decoded using a third plurality of vertices different from the first plurality of vertices and the second plurality of vertices; and decoding data corresponding to the vertex to be decoded using the predicted value. Decryption method.
28. If the first plurality of vertices satisfy the condition, deriving a predicted value of data corresponding to a vertex to be encoded that is included in the second plurality of vertices using the first plurality of vertices; if the first plurality of vertices do not satisfy the condition, deriving the predicted value of the data corresponding to the vertex to be encoded using a third plurality of vertices different from the first plurality of vertices and the second plurality of vertices; writing data corresponding to the vertex to be coded into a bitstream using the predicted value; transmitting the bitstream. Sending method.
Citation Information
Patent Citations
Encoding and decoding of geometry data in a 3d model based on evaluated regularity of the model
GB2561824A
Method for encoding / Decoding progressively three- dimensional mesh information having error recoverability
JP2000194843A
Method and device for coding / Decoding three dimensional mesh information with novelty
JP2000224582A
Texture coordinate compression using texture atlas
US20200098137A1
Non-uniform relaxation procedure for multiresolution mesh processing
US8830235B1