WO2023238867A1 - 符号化装置、復号装置、符号化方法及び復号方法 - Google Patents

符号化装置、復号装置、符号化方法及び復号方法 Download PDF

Info

Publication number
WO2023238867A1
WO2023238867A1 PCT/JP2023/021028 JP2023021028W WO2023238867A1 WO 2023238867 A1 WO2023238867 A1 WO 2023238867A1 JP 2023021028 W JP2023021028 W JP 2023021028W WO 2023238867 A1 WO2023238867 A1 WO 2023238867A1
Authority
WO
WIPO (PCT)
Prior art keywords
triangle
vertex
encoding
information
decoding
Prior art date
Application number
PCT/JP2023/021028
Other languages
English (en)
French (fr)
Inventor
敏康 杉尾
賀敬 井口
孝啓 西
チョン スン リム
ヂァン ウー
ハン ブン テオ
ケン リン ロイ
チャン ディーン ハン
ジョージ ナダー
ファーマン デュマノブ
Original Assignee
パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ filed Critical パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ
Publication of WO2023238867A1 publication Critical patent/WO2023238867A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding

Definitions

  • the present disclosure relates to an encoding device and the like.
  • Patent Document 1 proposes a method and apparatus for encoding and decoding three-dimensional mesh data.
  • the present disclosure aims to improve three-dimensional data encoding processing and the like.
  • An encoding device includes a memory and a circuit that can access the memory, and in operation, when the first triangle satisfies a condition, the circuit uses the first triangle to Selecting a mode for encoding the encoding target vertex from a first mode set including a normal mode for encoding the encoding target vertex of two triangles, and when the first triangle does not satisfy the condition, The mode is selected from a second mode set including an exception mode in which the encoding target vertex is encoded using a third triangle different from the first triangle and the second triangle, and the encoding target is encoded according to the mode. Encode the vertices.
  • the present disclosure can contribute to improvements in three-dimensional data encoding processing, etc.
  • FIG. 2 is a conceptual diagram showing a three-dimensional mesh according to an embodiment.
  • FIG. 2 is a conceptual diagram showing basic elements of a three-dimensional mesh according to an embodiment.
  • FIG. 2 is a conceptual diagram showing mapping according to an embodiment.
  • 1 is a block diagram showing a configuration example of an encoding/decoding system according to an embodiment.
  • FIG. 1 is a block diagram illustrating a configuration example of an encoding device according to an embodiment. It is a block diagram showing another example of composition of an encoding device concerning an embodiment.
  • FIG. 1 is a block diagram showing a configuration example of a decoding device according to an embodiment. It is a block diagram showing another example of composition of a decoding device concerning an embodiment.
  • FIG. 2 is a conceptual diagram showing a configuration example of a bitstream according to an embodiment.
  • FIG. 3 is a conceptual diagram illustrating another configuration example of a bitstream according to an embodiment.
  • FIG. 7 is a conceptual diagram showing yet another configuration example of a bitstream according to the embodiment.
  • FIG. 1 is a block diagram showing a specific example of an encoding/decoding system according to an embodiment.
  • FIG. 2 is a conceptual diagram showing a configuration example of point cloud data according to an embodiment.
  • FIG. 2 is a conceptual diagram showing an example of a data file of point cloud data according to an embodiment.
  • FIG. 2 is a conceptual diagram showing a configuration example of mesh data according to an embodiment.
  • FIG. 2 is a conceptual diagram showing an example of a data file of mesh data according to an embodiment.
  • FIG. 1 is a block diagram showing a specific example of an encoding/decoding system according to an embodiment.
  • FIG. 2 is a conceptual diagram showing a configuration example of point cloud data according to an embodiment
  • FIG. 3 is a conceptual diagram showing types of three-dimensional data according to the embodiment.
  • FIG. 2 is a block diagram showing a configuration example of a three-dimensional data encoder according to an embodiment.
  • FIG. 2 is a block diagram showing a configuration example of a three-dimensional data decoder according to an embodiment. It is a block diagram showing another example of composition of a three-dimensional data encoder concerning an embodiment. It is a block diagram showing another example of composition of a three-dimensional data decoder concerning an embodiment.
  • FIG. 3 is a conceptual diagram showing a specific example of encoding processing according to the embodiment.
  • FIG. 3 is a conceptual diagram showing a specific example of decoding processing according to the embodiment.
  • FIG. 2 is a block diagram illustrating an implementation example of an encoding device according to an embodiment.
  • FIG. 2 is a block diagram illustrating an implementation example of a decoding device according to an embodiment.
  • FIG. 2 is a conceptual diagram showing a parallelogram prediction method according to a reference example.
  • FIG. 2 is a conceptual diagram showing a polynomial prediction method according to a reference example. It is a flow chart which shows an example of encoding processing concerning a 1st aspect. 2 is a flowchart showing a specific example of encoding processing according to the first aspect. It is a flowchart which shows another example of encoding processing concerning a 1st aspect. It is a conceptual diagram which shows the example of three angles based on a 1st aspect. It is a conceptual diagram which shows another example of three angles based on a 1st aspect.
  • FIG. 7 is a conceptual diagram showing still another example of three angles according to the first aspect.
  • FIG. 7 is a syntax diagram showing an example of the syntax structure of vertex information for a plurality of vertices according to the first aspect.
  • FIG. 7 is a syntax diagram showing an example of the syntax structure of vertex information for one vertex according to the first aspect.
  • FIG. 7 is a syntax diagram showing another example of the syntax structure of vertex information for one vertex according to the first aspect.
  • FIG. 3 is a table diagram showing an example of a table used for angle prediction.
  • FIG. 7 is a table diagram showing another example of a table used for angle prediction.
  • FIG. 6 is a conceptual diagram showing an example of prediction using an angle with respect to a vertex of a previous triangle.
  • FIG. 7 is a syntax diagram showing an example of the syntax structure of vertex information for a plurality of vertices according to the first aspect.
  • FIG. 7 is a syntax diagram showing an example of the syntax structure of vertex information for
  • FIG. 7 is a conceptual diagram showing an example of prediction using angles with respect to vertices of a previous three-dimensional mesh.
  • FIG. 2 is a block diagram showing a configuration example of an encoding device according to a first aspect. It is a flow chart which shows an example of decoding processing concerning a 1st aspect. 12 is a flowchart showing a specific example of decoding processing according to the first aspect. It is a flowchart which shows another example of decoding processing concerning a 1st aspect.
  • FIG. 3 is a table diagram showing an example of a lookup table for a sine function and a cosine function.
  • FIG. 2 is a block diagram showing a configuration example of a decoding device according to a first aspect.
  • FIG. 12 is a flowchart illustrating an example of encoding processing according to a second aspect. It is a conceptual diagram which shows the example of the mesh based on a 2nd aspect.
  • FIG. 3 is a conceptual diagram showing an example of a fragmented mesh.
  • FIG. 2 is a conceptual diagram showing an example of a mesh with overlapping vertices.
  • FIG. 3 is a conceptual diagram illustrating an example of exception handling using a previously encoded vertex set.
  • 12 is a flowchart showing a specific example of encoding processing according to the second aspect. It is a block diagram showing an example of composition of an encoding device concerning a 2nd aspect. 12 is a flowchart illustrating an example of decoding processing according to a second aspect.
  • FIG. 12 is a flowchart showing a specific example of decoding processing according to a second aspect. It is a block diagram showing an example of composition of a decoding device concerning a 2nd aspect. 7 is a flowchart illustrating an example of exception handling according to a second aspect. It is a flowchart which shows another example of encoding processing concerning a 2nd aspect. It is a flowchart which shows another example of decoding processing concerning a 2nd aspect.
  • FIG. 2 is a conceptual diagram showing an example of the position of parameters in a bitstream.
  • FIG. 7 is a conceptual diagram showing another example of the position of parameters in a bitstream.
  • 3 is a flowchart illustrating an example of basic encoding processing according to the embodiment.
  • FIG. 3 is a flowchart illustrating an example of basic decoding processing according to the embodiment. It is a block diagram showing still another example of composition of an encoding device concerning an embodiment. It is a block diagram showing still another example of composition of a decoding device concerning an embodiment.
  • a three-dimensional mesh is composed of vertex information indicating the position of each of a plurality of vertices in a three-dimensional space, connection information indicating a connection relationship between the plurality of vertices, and attribute information indicating an attribute of each vertex or each face.
  • Each surface is constructed according to the connection relationship of a plurality of vertices.
  • Various computer graphics images can be expressed using such a three-dimensional mesh.
  • the encoding device predicts the position information of the vertex to be encoded using the position information of the encoded vertex, and encodes the difference with respect to the prediction. , reduce the amount of code. More specifically, for example, the encoding device refers to the first triangle as a reference triangle and encodes the vertices of the second triangle adjacent to the first triangle, thereby reducing the amount of code.
  • the first triangle is not suitable as a reference triangle.
  • the vertices of the first triangle may not be encoded or the sides of the first triangle may not have connectivity. Even if the vertices of the second triangle are encoded with reference to such a first triangle, it may become difficult to decode the vertices of the second triangle, or the amount of code may not be reduced.
  • the encoding device of Example 1 includes a memory and a circuit that can access the memory, and in operation, when the first triangle satisfies the condition, the circuit uses the first triangle to generate a second triangle.
  • a mode for encoding the encoding target vertex is selected from a first mode set including a normal mode for encoding the encoding target vertex, and if the first triangle does not satisfy the condition, the first mode set includes a normal mode for encoding the encoding target vertex.
  • the mode is selected from a second mode set including an exception mode in which the encoding target vertex is encoded using a third triangle different from the first triangle and the second triangle, and the encoding target vertex is encoded according to the mode. encode.
  • the first triangle does not satisfy the condition, it may be possible to encode the vertex of the second triangle using a third triangle different from the first triangle. Therefore, it may be possible to encode the vertices of the second triangle using a reference triangle suitable for encoding.
  • 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.
  • the encoding device of Example 3 may be the encoding device of Example 1 or 2, wherein the third triangle is a triangle that shares a side with the second triangle. .
  • the encoding device of Example 4 is the encoding device of any one of Examples 1 to 3, in which the third triangle is a triangle that shares an apex with the first triangle. It's okay.
  • the encoding device of Example 5 is the encoding device of any one of Examples 1 to 4, wherein the third triangle is a triangle in which each vertex has been encoded. Good too.
  • the encoding device of Example 6 is the encoding device of any one of Examples 1 to 5, wherein the third triangle is a triangle in which each side has connectivity. There may be.
  • the encoding device of Example 7 may be the encoding device of any of Examples 1 to 4, in which the third triangle is a triangle having a dummy apex.
  • the encoding device of Example 8 is the encoding device of any one of Examples 1 to 7, wherein the exception mode includes a plurality of submodes, and the circuit further includes the exception mode as the mode. is selected, the encoding device may select a submode for encoding the encoding target vertex from among the plurality of submodes.
  • This may make it possible to encode the encoding target vertex according to a submode selected from a plurality of submodes in the exception mode. Therefore, it may be possible to encode a target vertex to be encoded according to an exception handling method that is adaptively selected from among a plurality of exception handling methods.
  • the encoding device of Example 9 may be the encoding device of Example 8, in which the circuit encodes a parameter indicating the submode.
  • 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.
  • the encoding device of Example 11 is the encoding device of any of Examples 8 to 10, wherein the circuit determines the vertex of the third triangle according to the submode. It's okay.
  • the encoding device of Example 12 is the encoding device of any one of Examples 1 to 11, wherein the condition includes that each vertex of the first triangle has been encoded. It may be.
  • the encoding device of Example 13 is the encoding device of any of Examples 1 to 12, wherein the condition includes that each side of the first triangle has connectivity. It may also be a conversion device.
  • the encoding device of Example 14 is the encoding device of any one of Examples 1 to 13, in which the circuit encodes the third triangle when encoding the encoding target vertex according to the exception mode.
  • the encoding apparatus may encode an angle indicating the encoding target vertex using the encoder.
  • This may make it possible to prevent the code amount from becoming too large. That is, it may be possible to suppress the worst case code amount.
  • the decoding device of Example 15 includes a memory and a circuit that can access the memory, and in operation, when the first triangle satisfies a condition, the circuit uses the first triangle to generate a second triangle. If a mode for decoding the target vertex is selected from a first mode set including a normal mode for decoding the target vertex, and the first triangle does not satisfy the conditions, both the first triangle and the first The mode is selected from a second mode set including an exception mode for decoding the decoding target vertex using a third triangle different from the two triangles, and the decoding target vertex is decoded according to the mode.
  • the first triangle does not satisfy the condition, it may become possible to decode the vertex of the second triangle using a third triangle different from the first triangle. Therefore, it may be possible to decode the vertices of the second triangle using a reference triangle suitable for decoding.
  • the decoding device of Example 16 may be the decoding device of Example 15, in which the third triangle is a triangle that shares a side with the first triangle.
  • 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 a side with the second triangle.
  • the decoding device of Example 18 may be the decoding device of any of Examples 15 to 17, wherein the third triangle is a triangle that shares an apex with the first triangle. .
  • the decoding device of Example 19 may be the decoding device of any of Examples 15 to 18, in which the third triangle is a triangle whose vertices have been decoded.
  • 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. good.
  • the decoding device of Example 21 may be the decoding device of any of Examples 15 to 17, in which the third triangle is a triangle having a dummy apex.
  • the decoding device of Example 22 is the decoding device of any of Examples 15 to 21, wherein the exception mode includes a plurality of submodes, and the circuit further includes a mode in which the exception mode is selected as the mode.
  • the decoding device may select a submode for decoding the decoding target vertex from among the plurality of submodes.
  • the decoding device of Example 23 may be the decoding device of Example 22, and the circuit may be a decoding device that decodes a parameter indicating the submode.
  • the decoding device of Example 24 may be the decoding device of Example 22 or 23, in which the circuit determines the third triangle according to the submode.
  • the decoding device of Example 25 may be the decoding device of any of Examples 22 to 24, wherein the circuit determines the vertex of the third triangle according to the submode. .
  • the decoding device of Example 26 may be any of the decoding devices of Examples 15 to 25, in which the condition includes that each vertex of the first triangle has been decoded. good.
  • the decoding device of Example 27 is the decoding device of any of Examples 15 to 26, wherein the condition includes that each side of the first triangle has connectivity. There may be.
  • the decoding device of Example 28 is the decoding device of any one of Examples 15 to 27, in which, when the circuit decodes the decoding target vertex according to the exception mode, the decoding device uses the third triangle.
  • the decoding device may be a decoding device that decodes an angle indicating a target vertex.
  • This may make it possible to prevent the code amount from becoming too large. That is, it may be possible to suppress the worst case code amount.
  • the first triangle when the first triangle satisfies the condition, the first triangle is selected from among the first mode set including the normal mode for encoding the encoding target vertex of the second triangle using the first triangle.
  • the method includes the steps of: selecting the mode from a second mode set including an exception mode for encoding vertices; and encoding the vertices to be encoded according to the mode.
  • the first triangle does not satisfy the condition, it may be possible to encode the vertex of the second triangle using a third triangle different from the first triangle. Therefore, it may be possible to encode the vertices of the second triangle using a reference triangle suitable for encoding.
  • the decoding target vertex when the first triangle satisfies the condition, is selected from a first mode set including a normal mode in which the decoding target vertex of the second triangle is decoded using the first triangle. and, if the first triangle does not satisfy the conditions, an exception mode of decoding the target vertex using a third triangle that is different from the first triangle and the second triangle.
  • the decoding method may include the steps of: selecting the mode from a second mode set including the second mode set; and decoding the decoding target vertex according to the mode.
  • the first triangle does not satisfy the condition, it may become possible to decode the vertex of the second triangle using a third triangle different from the first triangle. Therefore, it may be possible to decode the vertices of the second triangle using a reference triangle suitable for decoding.
  • a three-dimensional mesh is a set of multiple surfaces, and represents, for example, a three-dimensional object. Furthermore, the three-dimensional mesh is mainly composed of vertex information, connection information, and attribute information. A three-dimensional mesh may be expressed as a polygon mesh or a mesh. Furthermore, the three-dimensional mesh may have temporal changes. The three-dimensional mesh may include metadata regarding vertex information, connection information, and attribute information, and may also include other additional information.
  • Vertex information is information indicating a vertex.
  • vertex information indicates the position of a vertex in three-dimensional space.
  • the vertices correspond to the vertices of the surfaces that constitute the three-dimensional mesh.
  • Vertex information may be expressed as "Geometry.” Additionally, vertex information may be expressed as position information.
  • Connection information is information indicating connections between vertices.
  • the connection information indicates connections for configuring faces or edges of a three-dimensional mesh.
  • Connection information is sometimes expressed as "Connectivity.”
  • connection information may also be expressed as surface information.
  • Attribute information is information indicating attributes of vertices or faces.
  • the attribute information indicates attributes such as a color, an image, and a normal vector associated with a vertex or a face. Attribute information is sometimes expressed as "Texture.”
  • a surface is an element that constitutes a three-dimensional mesh. Specifically, a surface is a polygon on a plane in three-dimensional space. For example, a surface may be defined as a triangle in three-dimensional space.
  • Plane A plane is a two-dimensional plane in three-dimensional space.
  • a polygon is formed on a plane, and a plurality of polygons are formed on a plurality of planes.
  • Bitstream corresponds to encoded information.
  • a bitstream may also be expressed as a stream, a coded bitstream, a compressed bitstream, or a coded signal.
  • Encoding and decoding may be replaced with expressions such as storing, including, writing, describing, signalling, transmitting, notifying, preserving, or compressing. These expressions may be interchanged.
  • encoding information may include including the information in a bitstream.
  • encoding information into a bitstream may mean encoding information to produce a bitstream that includes the encoded information.
  • decode may be replaced with expressions such as read, decipher, read, load, derive, obtain, receive, extract, restore, reconstruct, decompress, or decompress. Often these expressions may be interchanged.
  • decoding information may be obtaining information from a bitstream.
  • decoding information from a bitstream may mean decoding the bitstream to obtain information contained in the bitstream.
  • ordinal numbers such as first and second are sometimes given to constituent elements. These ordinal numbers may be changed as appropriate. Furthermore, ordinal numbers may be newly given or removed from the constituent elements. Additionally, these ordinal numbers may be attached to elements to identify them, and may not correspond to any meaningful order.
  • FIG. 1 is a conceptual diagram showing a three-dimensional mesh according to this embodiment.
  • a three-dimensional mesh is composed of multiple surfaces. For example, each face is a triangle. The vertices of these triangles are defined in three-dimensional space.
  • the three-dimensional mesh represents a three-dimensional object. Each side may have a color or an image.
  • FIG. 2 is a conceptual diagram showing the basic elements of the 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 position of the vertex of the surface in three-dimensional space.
  • Connection information indicates connections between vertices.
  • a surface can be identified by vertex information and connection information. In other words, a three-dimensional object without color is formed in a three-dimensional space using the vertex information and connection information.
  • Attribute information may be associated with vertices or surfaces. 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 surface connected to the vertex.
  • a color may be associated with a vertex as attribute information.
  • the color associated with the vertex may be the color of the vertex or the color of the surface connected to the vertex.
  • the color of the surface may be the average of multiple colors associated with multiple vertices of the surface.
  • a normal vector may be associated with a vertex or a surface as attribute information. Such normal vectors can represent the front and back sides of a surface.
  • a two-dimensional image may be associated with the surface as attribute information.
  • a two-dimensional image associated with a surface is also expressed as a texture image or an "attribute map.”
  • information indicating mapping between a surface and a two-dimensional image may be associated with the surface as attribute information. Information indicating such mapping may be expressed as mapping information, vertex information of a texture image, or "Attribute UV Coordinate.”
  • information such as colors, images, and moving images used as attribute information may be expressed as "Parametric Space.”
  • texture can be reflected on the three-dimensional object. That is, a three-dimensional object having color is formed in a three-dimensional space using vertex information, connection information, and attribute information.
  • the attribute information is associated with a vertex or a face, but it may also be associated with an edge.
  • FIG. 3 is a conceptual diagram showing mapping according to this embodiment.
  • a region of a two-dimensional image in a two-dimensional plane can be mapped onto a surface of a three-dimensional mesh in three-dimensional space.
  • the coordinate information of the area in the two-dimensional image is associated with the surface of the three-dimensional mesh.
  • the image of the region mapped in the two-dimensional image is reflected on the surface of the three-dimensional mesh.
  • mapping the two-dimensional image used as attribute information can be separated from the three-dimensional mesh.
  • a two-dimensional image may be encoded using an image encoding method or a video encoding method.
  • FIG. 4 is a block diagram showing a configuration example of an encoding/decoding system according to this embodiment.
  • the encoding/decoding system includes an encoding device 100 and a decoding device 200.
  • the encoding device 100 obtains a three-dimensional mesh and encodes the three-dimensional mesh into a bitstream.
  • the encoding device 100 then outputs the bitstream to the network 300.
  • the bitstream includes an encoded three-dimensional mesh and control information for decoding the encoded three-dimensional mesh.
  • the information on the three-dimensional mesh is compressed.
  • the network 300 transmits the 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 thereof.
  • the network 300 is not necessarily limited to two-way communication, but may be a one-way communication network for digital terrestrial broadcasting, satellite broadcasting, or the like.
  • the network 300 may be replaced by a recording medium such as a DVD (Digital Versatile Disc) or a BD (Blu-Ray Disc (registered trademark)).
  • a recording medium such as a DVD (Digital Versatile Disc) or a BD (Blu-Ray Disc (registered trademark)).
  • the decoding device 200 obtains a bitstream and decodes a three-dimensional mesh from the bitstream. By decoding the three-dimensional mesh, the information of the three-dimensional mesh is expanded. For example, the decoding device 200 decodes the three-dimensional mesh according to a decoding method that corresponds 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 mutually corresponding encoding methods and decoding methods.
  • the three-dimensional mesh before encoding can also be expressed as the original three-dimensional mesh.
  • the three-dimensional mesh after decoding is also expressed as a reconstructed three-dimensional mesh.
  • FIG. 5 is a block diagram showing a configuration example of encoding device 100 according to this embodiment.
  • the encoding device 100 includes a vertex information encoder 101, a connection information encoder 102, and an attribute information encoder 103.
  • the vertex information encoder 101 is an electric circuit that encodes vertex information. For example, vertex information encoder 101 encodes vertex information into a bitstream according to a format defined for vertex information.
  • connection information encoder 102 is an electric circuit that encodes connection information.
  • the connection information encoder 102 encodes the connection information into a bitstream according to a format defined for the connection information.
  • the attribute information encoder 103 is an electric circuit that encodes attribute information. For example, the attribute information encoder 103 encodes the attribute information into a bitstream according to a format defined for the attribute information.
  • Variable length encoding or fixed length encoding may be used to encode the vertex information, connection information, and attribute information.
  • the variable length coding may correspond to Huffman coding, context adaptive binary arithmetic coding (CABAC), or the like.
  • the vertex information encoder 101, the connection information encoder 102, and the attribute information encoder 103 may be integrated. Alternatively, each of the vertex information encoder 101, the connection information encoder 102, and the attribute information encoder 103 may be further subdivided into a plurality of constituent elements.
  • FIG. 6 is a block diagram showing another configuration example of the encoding device 100 according to the present embodiment.
  • the encoding device 100 includes a preprocessor 104 and a postprocessor 105 in addition to the configuration shown in FIG.
  • the preprocessor 104 is an electric circuit that processes vertex information, connection information, and attribute information before encoding them.
  • the preprocessor 104 may perform conversion processing, separation processing, multiplexing processing, etc. on the three-dimensional mesh before encoding. More specifically, for example, the preprocessor 104 may separate vertex information, connection information, and attribute information from the three-dimensional mesh before encoding.
  • the post-processor 105 is an electric circuit that processes vertex information, connection information, and attribute information after encoding them.
  • the post-processor 105 may perform conversion processing, separation processing, multiplexing processing, etc. 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.
  • the post-processor 105 may further perform variable length encoding on the encoded vertex information, connection information, and attribute information.
  • FIG. 7 is a block diagram showing a configuration example of decoding device 200 according to this embodiment.
  • the decoding device 200 includes a vertex information decoder 201, a connection information decoder 202, and an attribute information decoder 203.
  • the vertex information decoder 201 is an electric circuit that decodes vertex information. For example, vertex information decoder 201 decodes vertex information from a bitstream according to a format defined for vertex information.
  • connection information decoder 202 is an electric circuit that decodes connection information. For example, connection information decoder 202 decodes connection information from the bitstream according to a defined format for connection information.
  • the attribute information decoder 203 is an electric circuit that decodes attribute information. For example, the attribute information decoder 203 decodes the attribute information from the bitstream according to a format defined for the attribute information.
  • Variable length decoding or fixed length decoding may be used to decode the vertex information, connection information, and attribute information.
  • Variable length decoding may correspond to Huffman coding, context adaptive binary arithmetic coding (CABAC), or the like.
  • the vertex information decoder 201, the connection information decoder 202, and the attribute information decoder 203 may be integrated. Alternatively, each of the vertex information decoder 201, the connection information decoder 202, and the attribute information decoder 203 may be further subdivided into a plurality of constituent elements.
  • FIG. 8 is a block diagram showing another configuration example of the decoding device 200 according to the present embodiment.
  • the decoding device 200 includes a preprocessor 204 and a postprocessor 205 in addition to the configuration shown in FIG.
  • the preprocessor 204 is an electric circuit that processes vertex information, connection information, and attribute information before decoding them.
  • the preprocessor 204 may perform conversion processing, separation processing, multiplexing processing, etc. on the bitstream before decoding the vertex information, connection information, and attribute information.
  • the preprocessor 204 separates a sub-bitstream corresponding to vertex information, a sub-bitstream corresponding to connection information, and a sub-bitstream corresponding to attribute information from the bitstream. Good too. Further, for example, the preprocessor 204 may perform variable length decoding on the bitstream in advance before decoding the vertex information, connection information, and attribute information.
  • the post-processor 205 is an electric circuit that processes the vertex information, connection information, and attribute information after decoding them.
  • the post-processor 205 may perform conversion processing, separation processing, multiplexing processing, etc. 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.
  • Vertex information connection information and attribute information are encoded and stored in the bitstream.
  • connection information and attribute information are encoded and stored in the bitstream. The relationship between this information and the bitstream is shown below.
  • FIG. 9 is a conceptual diagram showing an example of the configuration of a bitstream according to this embodiment.
  • vertex information, connection information, and attribute information are combined in the bitstream.
  • vertex information, connection information, and attribute information may be included in one file.
  • FIG. 10 is a conceptual diagram showing another configuration example of the bitstream according to the present embodiment.
  • multiple files are included in the bitstream, and vertex information, connection information, and attribute information are stored in different files.
  • a file containing vertex information, a file containing connection information, and a file containing attribute information are shown here, the storage format is not limited to such an example.
  • two types of information among vertex information, connection information, and attribute information may be included in one file, and the remaining one type of information may be included in another file.
  • this information may be divided and stored in more files.
  • multiple parts of vertex information may be stored in multiple files
  • multiple parts of connection information may be stored in multiple files
  • multiple parts of attribute information may be stored in multiple files. may be done. These multiple parts may correspond to multiple temporally different parts, spatially different parts, or different surfaces. .
  • FIG. 11 is a conceptual diagram showing another configuration example of the bitstream according to the present embodiment.
  • a bitstream is composed of a plurality of separable sub-bitstreams, and vertex information, connection information, and attribute information are stored in different sub-bitstreams.
  • the storage format is not limited to this example.
  • two types of information among vertex information, connection information, and attribute information may be included in one sub-bitstream, and the remaining one type of information may be included in another sub-bitstream.
  • attribute information such as a two-dimensional image may be stored in a sub-bitstream compliant with an image encoding method, separately from sub-bitstreams of vertex information and connection information.
  • FIG. 12 is a block diagram showing a specific example of the encoding/decoding system according to this embodiment.
  • the encoding/decoding system includes a three-dimensional data encoding system 110, a three-dimensional data decoding system 210, and an external connector 310.
  • 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 .
  • sensor data is input from the sensor terminal to the three-dimensional data generator 115.
  • the three-dimensional data generator 115 generates three-dimensional data such as point group data or mesh data from the sensor data, and inputs it to the three-dimensional data encoder 113 .
  • 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 vertex information when generating connection information and attribute information. For example, the three-dimensional data generator 115 may reduce the amount of data by deleting duplicate vertices, or transform vertex information (position shift, rotation, normalization, etc.).
  • the three-dimensional data generator 115 may also render attribute information.
  • 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 from the three-dimensional data encoding system 110.
  • a sensor terminal that provides sensor data for generating three-dimensional data may be, for example, a moving object such as a car, a flying object such as an airplane, a mobile terminal, a camera, or the like. Further, 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 a plurality of monocular cameras may be used as the sensor terminal.
  • 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 a plurality of monocular cameras may be used as the sensor terminal.
  • Sensor data includes object distance (position), monocular camera image, stereo camera image, color, reflectance, sensor attitude, direction, gyro, sensing position (GPS information or altitude), speed, acceleration, sensing time, and temperature. , atmospheric pressure, humidity, or magnetism.
  • the three-dimensional data encoder 113 corresponds to the encoding device 100 shown in FIG. 5 etc.
  • the three-dimensional data encoder 113 encodes three-dimensional data and generates encoded data.
  • the three-dimensional data encoder 113 generates control information when encoding three-dimensional data.
  • the three-dimensional data encoder 113 then inputs the encoded data together with the control information to the system multiplexer 114.
  • the encoding method for three-dimensional data may be an encoding method using geometry or an encoding method using a video codec.
  • the encoding method using geometry can also be expressed as a geometry-based encoding method.
  • An encoding method using a video codec is also expressed as a video-based encoding method.
  • the system multiplexer 114 multiplexes the encoded data and control information input from the three-dimensional data encoder 113, and generates multiplexed data using a prescribed multiplexing method.
  • the system multiplexer 114 may multiplex other media such as video, audio, subtitles, application data, or document files, reference time information, etc., along with encoded data of three-dimensional data and control information. Additionally, system multiplexer 114 may multiplex attribute information associated with sensor data or three-dimensional data.
  • the multiplexed data has a file format for storage, a packet format for transmission, etc.
  • ISOBMFF or an ISOBMFF-based method may be used.
  • MPEG-DASH, MMT, MPEG-2 TS Systems, RTP, or the like may be used.
  • 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.
  • the multiplexed data is stored in internal memory or storage.
  • the multiplexed data may be transmitted to a cloud server via the Internet or may be stored in an external storage device.
  • multiplexed data is transmitted or stored in a manner that depends on the medium for transmission or storage, such as broadcasting or communication.
  • the communication protocol http, ftp, TCP, UDP, IP, or a combination thereof may be used.
  • a PULL type communication method or a PUSH type communication method may be used.
  • Ethernet registered trademark
  • USB registered trademark
  • RS-232C HDMI (registered trademark)
  • coaxial cable etc.
  • 3G/4G/5G defined by 3GPP registered trademark
  • IEEE wireless LAN
  • Wi-Fi Wi-Fi
  • Bluetooth or millimeter waves
  • DVB-T2 DVB-S2, DVB-C2, ATSC3.0, or ISDB-S3
  • 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 to the external connector 310 via the input/output processor 112 as is.
  • 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.
  • each operation of the three-dimensional data encoding system 110 may be controlled by a controller 111 that executes an application program.
  • a transmission signal is input to an input/output processor 212.
  • the input/output processor 212 decodes multiplexed data having a file format or packet format from the transmission signal and inputs the multiplexed data to the system demultiplexer 214 .
  • the system demultiplexer 214 acquires encoded data and control information from the multiplexed data and inputs them to the three-dimensional data decoder 213.
  • the system demultiplexer 214 may extract other media or reference time information, etc. from the multiplexed data.
  • the three-dimensional data decoder 213 corresponds to the decoding device 200 shown in FIG. 7 etc.
  • the three-dimensional data decoder 213 decodes three-dimensional data from encoded data based on a predefined encoding method.
  • the three-dimensional data is then presented to the user by the presenter 215.
  • additional information such as sensor data may be input to the presenter 215.
  • the presenter 215 may present three-dimensional data based on additional information.
  • user instructions may be input from the user terminal to the user interface 216.
  • the presenter 215 may then present three-dimensional data based on the input instructions.
  • the input/output processor 212 may acquire three-dimensional data and encoded data from the external connector 310.
  • each operation of the three-dimensional data decoding system 210 may be controlled by a controller 211 that executes an application program.
  • FIG. 13 is a conceptual diagram showing a configuration example of point cloud data according to this embodiment.
  • Point cloud data is data of a point cloud indicating a three-dimensional object.
  • a point cloud is composed of a plurality of points, and has position information indicating the three-dimensional coordinate position (Position) of each point, and attribute information indicating the attribute (Attribute) of each point. .
  • Position information is also expressed as geometry.
  • the type of attribute information may be, for example, color or reflectance.
  • One point may be associated with attribute information regarding one type, one point may be associated with attribute information regarding multiple different types, or one point may be associated with attribute information regarding the same type. may be associated with attribute information having multiple values.
  • FIG. 14 is a conceptual diagram showing an example of a data file of point cloud data according to this embodiment.
  • the position information is information indicating a three-dimensional coordinate position on three axes of x, y, and z
  • the attribute information is information indicating a color in RGB.
  • a PLY file or the like may be used as a typical data file of point cloud data.
  • FIG. 15 is a conceptual diagram showing a configuration example of mesh data according to this embodiment.
  • Mesh data is data used for CG (Computer Graphics) and the like, and is three-dimensional mesh data that shows the three-dimensional shape of an object in a plurality of planes. Each surface is also expressed as a polygon and has a polygonal shape such as a triangle or a quadrilateral.
  • a three-dimensional mesh is composed of a plurality of edges and a plurality of faces in addition to a plurality of points forming a point group.
  • Each point is also expressed as a vertex or a position.
  • Each edge corresponds to a line segment connected by two vertices.
  • Each surface corresponds to an area surrounded by three or more sides.
  • the three-dimensional mesh has position information indicating the three-dimensional coordinate position of the vertex. Position information is also expressed as vertex information or geometry. Furthermore, the three-dimensional mesh has connection information indicating the relationship between a plurality of vertices forming an edge or a face. Connection information is also expressed as connectivity. Furthermore, the three-dimensional mesh has attribute information indicating attributes for vertices, edges, or faces. Attribute information in a three-dimensional mesh is also expressed as texture.
  • the attribute information may indicate color, reflectance, or normal vector for a vertex, edge, or surface.
  • the direction of the normal vector can represent the front and back sides of the surface.
  • An object file or the like may be used as the data file format of the mesh data.
  • FIG. 16 is a conceptual diagram showing an example of a data file of mesh data according to this embodiment.
  • the data file contains 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 N vertices. is included.
  • M pieces of attribute information A2(1) to A2(M) are included. Items of attribute information do not have to correspond one-to-one to vertices, and do not have to correspond one-to-one to faces. Further, attribute information may not exist.
  • connection information is indicated by a combination of vertex indexes.
  • attribute information may be written in a separate file.
  • a pointer to the content may be associated with a vertex, a surface, or the like.
  • attribute information indicating an image for a surface may be stored in a two-dimensional attribute map file. Then, the file name of the attribute map and the 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 surface is not limited to these methods, and any method may be used.
  • FIG. 17 is a conceptual diagram showing the types of three-dimensional data according to this embodiment.
  • Point cloud data and mesh data may represent static or dynamic objects.
  • Static objects are objects that do not change over time, and dynamic objects are objects that change over time.
  • Static objects may correspond to three-dimensional data for any point in time.
  • point cloud data for an arbitrary point in time may be expressed as a PCC frame.
  • mesh data for an arbitrary point in time may be expressed as a mesh frame.
  • a PCC frame and a mesh frame may be simply expressed as a frame.
  • the area of the object may be limited to a certain range like normal video data, or may not be limited like map data.
  • the density of points or planes can 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.
  • the apparatus, 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 point clouds.
  • the apparatus, process, or syntax for encoding and decoding a point cloud in this disclosure may be applied to encoding and decoding vertex information of a three-dimensional mesh.
  • the 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 connection information or attribute information of a three-dimensional mesh. Further, the device, process, or syntax for encoding and decoding three-dimensional mesh connection information or attribute information in the present disclosure may be applied to encoding and decoding point cloud attribute information.
  • processing may be shared between encoding and decoding of point cloud data and encoding and decoding of mesh data. This can reduce the scale of circuits and software programs.
  • FIG. 18 is a block diagram showing a configuration example of the three-dimensional data encoder 113 according to this embodiment.
  • 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, attribute information encoder 122, and multiplexer 124 may correspond to the vertex information encoder 101, attribute information encoder 103, post-processor 105, etc. in FIG.
  • the three-dimensional data encoder 113 encodes the three-dimensional data according to the geometry-based encoding method.
  • three-dimensional structures are taken into account.
  • attribute information is encoded using configuration information obtained in encoding vertex information.
  • vertex information, attribute information, and metadata included in three-dimensional data generated from sensor data are sent to a vertex information encoder 121, an attribute information encoder 122, and a metadata encoder 123.
  • the connection information included in the three-dimensional data may be treated in the same way as attribute information.
  • position information may be treated as vertex information.
  • the vertex information encoder 121 encodes the vertex information into compressed vertex information and outputs the compressed vertex information to the multiplexer 124 as encoded data. Additionally, the vertex information encoder 121 generates metadata of compressed vertex information and outputs it to the multiplexer 124 . Additionally, the vertex information encoder 121 generates configuration information and outputs it to the attribute information encoder 122.
  • the attribute information encoder 122 encodes the attribute information into compressed attribute information using the configuration information generated by the vertex information encoder 121, and outputs the compressed attribute information as encoded data to the multiplexer 124. Further, the attribute information encoder 122 generates metadata of compressed attribute information and outputs it to the multiplexer 124 .
  • the metadata encoder 123 encodes compressed metadata into compressed metadata, and outputs the compressed metadata to the multiplexer 124 as encoded data.
  • the metadata encoded by the metadata encoder 123 may be used for encoding vertex information and attribute information.
  • the multiplexer 124 multiplexes compressed vertex information, metadata of compressed vertex information, compressed attribute information, metadata of compressed attribute information, and compressed metadata into a bitstream.
  • the multiplexer 124 then inputs the bitstream to the system layer.
  • FIG. 19 is a block diagram showing a configuration example of the three-dimensional data decoder 213 according to the present embodiment.
  • 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, attribute information decoder 222, and demultiplexer 224 may correspond to the vertex information decoder 201, attribute information decoder 203, preprocessor 204, etc. in FIG. 8.
  • the three-dimensional data decoder 213 decodes the three-dimensional data according to the geometry-based encoding method.
  • three-dimensional structures are taken into account.
  • attribute information is decoded using configuration information obtained in decoding vertex information.
  • a bitstream is input to the demultiplexer 224 from the system layer.
  • 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 the metadata of the compressed vertex information are input to the vertex information decoder 221.
  • the compressed attribute information and the metadata of the compressed attribute information are input to the attribute information decoder 222.
  • Metadata is input to metadata decoder 223.
  • the vertex information decoder 221 decodes the vertex information from the compressed vertex information using the metadata of the compressed vertex information. Additionally, the vertex information decoder 221 generates configuration information and outputs it to the attribute information decoder 222.
  • the attribute information decoder 222 decodes the 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.
  • Metadata decoder 223 decodes metadata from compressed metadata. The metadata decoded by the metadata decoder 223 may be used for decoding vertex information and attribute information.
  • this metadata is metadata of vertex information and attribute information, and can be used in an application program.
  • FIG. 20 is a block diagram showing another configuration example of the three-dimensional data encoder 113 according to this embodiment.
  • the three-dimensional data encoder 113 includes a vertex image generator 131, an attribute image generator 132, a metadata generator 133, a video encoder 134, a metadata encoder 123, and a multiplexer 124.
  • the vertex image generator 131, attribute image generator 132, and video encoder 134 may correspond to the vertex information encoder 101, attribute information encoder 103, etc. in FIG. 6.
  • the three-dimensional data encoder 113 encodes the three-dimensional data according to the video-based encoding method.
  • a plurality of two-dimensional images are generated from three-dimensional data, and the plurality of two-dimensional images are encoded according to the video encoding method.
  • the video encoding method may be HEVC (High Efficiency Video Coding), VVC (Versatile Video Coding), or the like.
  • vertex information and attribute information included in three-dimensional data generated from sensor data are input to the metadata generator 133. Further, vertex information and attribute information are input to a vertex image generator 131 and an attribute image generator 132, respectively. Further, metadata included in the three-dimensional data is input to the metadata encoder 123.
  • the connection information included in the three-dimensional data may be treated in the same way as attribute information. Furthermore, in the case of point cloud data, position information may be treated as vertex information.
  • the metadata generator 133 generates map information of a plurality of two-dimensional images from vertex information and attribute information. The metadata generator 133 then inputs the map information to the vertex image generator 131, attribute image generator 132, and metadata encoder 123.
  • the vertex image generator 131 generates vertex images based on the vertex information and map information, and inputs the generated vertex images to the video encoder 134.
  • Attribute image generator 132 generates an attribute image based on the attribute information and map information and inputs it to video encoder 134 .
  • the video encoder 134 encodes the vertex image and the attribute image into compressed vertex information and compressed attribute information, respectively, according to the video encoding method, and outputs the compressed vertex information and compressed attribute information to the multiplexer 124 as encoded data. do. Further, the video encoder 134 generates metadata of compressed vertex information and metadata of compressed attribute information and outputs them to the multiplexer 124.
  • the metadata encoder 123 encodes compressed metadata into compressed metadata, and outputs the compressed metadata to the multiplexer 124 as encoded data.
  • Compressible metadata includes map information. Further, the metadata encoded by the metadata encoder 123 may be used for encoding vertex information and attribute information.
  • the multiplexer 124 multiplexes compressed vertex information, metadata of compressed vertex information, compressed attribute information, metadata of compressed attribute information, and compressed metadata into a bitstream.
  • the multiplexer 124 then inputs the bitstream to the system layer.
  • FIG. 21 is a block diagram showing another configuration example of the three-dimensional data decoder 213 according to this embodiment.
  • the three-dimensional 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, attribute information generator 232, and video decoder 234 may correspond to the vertex information decoder 201, attribute information decoder 203, etc. in FIG. 8.
  • the three-dimensional data decoder 213 decodes the three-dimensional data according to the video-based encoding method.
  • decoding according to the video-based encoding method a plurality of two-dimensional images are decoded according to the video encoding method, and three-dimensional data is generated from the plurality of two-dimensional images.
  • the video encoding method may be HEVC (High Efficiency Video Coding), VVC (Versatile Video Coding), or the like.
  • the metadata decoder 223 decodes metadata from compressed metadata.
  • the metadata decoded by the metadata decoder 223 includes map information used to generate vertex information and attribute information. Further, the metadata decoded by the metadata decoder 223 may be used for decoding vertex images and attribute images.
  • the vertex information encoder 144, connection information encoder 145, and texture encoder 143 correspond to the vertex information encoder 101, connection information encoder 102, attribute information encoder 103, etc. in FIG. Good too.
  • the two-dimensional data encoder 141 operates as a texture encoder 143, and encodes a texture corresponding to attribute information as two-dimensional data according to an image encoding method or a video encoding method, thereby creating a texture file. generate.
  • bitstream including a texture file, a mesh file, and a description file is generated.
  • These files may be multiplexed into a bitstream in a file format such as glTF (Graphics Language Transmission Format) or USD (Universal Scene Description).
  • glTF Graphics Language Transmission Format
  • USD Universal Scene Description
  • the three-dimensional data encoder 113 may include two mesh data encoders as the mesh data encoder 142.
  • one mesh data encoder encodes vertex information and connection information of a static 3D mesh
  • the other mesh data encoder encodes vertex information and connection information of a dynamic 3D mesh.
  • two mesh files may be included in the bitstream.
  • one mesh file corresponds to a static three-dimensional mesh
  • the other mesh file corresponds to a dynamic three-dimensional mesh.
  • the static 3D mesh may be an intra-frame 3D mesh encoded using intra prediction
  • the dynamic 3D mesh may be an interframe 3D mesh encoded using inter prediction.
  • the original mesh may be used.
  • difference information between the vertex information or connection information of the three-dimensional mesh of the intra-frame and the vertex information or connection information of the three-dimensional mesh of the inter-frame may be used.
  • FIG. 23 is a conceptual diagram showing a specific example of decoding processing according to this embodiment.
  • FIG. 23 shows a three-dimensional data decoder 213, a description decoder 248, and a presenter 247.
  • 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 connection information decoder 245.
  • the two-dimensional data decoder 241 operates as a texture decoder 243, and decodes a texture corresponding to attribute information from a texture file as two-dimensional data according to an image encoding method or a video encoding method.
  • the mesh data decoder 242 operates as a vertex information decoder 244 and a connection information decoder 245, and decodes vertex information and connection information from the mesh file.
  • Mesh data decoder 242 may further decode mapping information for textures from the mesh file.
  • description decoder 248 decodes a description corresponding to metadata such as text data from the description file.
  • Description decoder 248 may decode the description at the system layer.
  • description decoder 248 may be included in system demultiplexer 214 of FIG. 12.
  • the mesh reconstructor 246 reconstructs a three-dimensional mesh from the vertex information, connection information, and texture according to the description.
  • the presenter 247 renders and outputs a three-dimensional mesh according to the description.
  • a three-dimensional mesh is reconstructed and output from the bitstream including the texture file, mesh file, and description file.
  • the three-dimensional data decoder 213 may include two mesh data decoders as the mesh data decoder 242.
  • one mesh data decoder decodes vertex information and connection information of a static three-dimensional mesh
  • the other mesh data decoder decodes vertex information and connection information of a dynamic three-dimensional mesh.
  • two mesh files may be included in the bitstream.
  • one mesh file corresponds to a static three-dimensional mesh
  • the other mesh file corresponds to a dynamic three-dimensional mesh.
  • the static 3D mesh may be an intra-frame 3D mesh encoded using intra prediction
  • the dynamic 3D mesh may be an interframe 3D mesh encoded using inter prediction.
  • the original mesh may be used.
  • difference information between the vertex information or connection information of the three-dimensional mesh of the intra-frame and the vertex information or connection information of the three-dimensional mesh of the inter-frame may be used.
  • the dynamic three-dimensional mesh encoding method is sometimes called DMC (Dynamic Mesh Coding). Further, a dynamic three-dimensional mesh video-based coding method is sometimes referred to as V-DMC (Video-based Dynamic Mesh Coding).
  • DMC Dynamic Mesh Coding
  • V-DMC Video-based Dynamic Mesh Coding
  • the point cloud encoding method is sometimes called PCC (Point Cloud Compression). Further, the video-based encoding method for point clouds is sometimes referred to as V-PCC (Video-based Point Cloud Compression). Further, the geometry-based encoding method for point clouds is sometimes called G-PCC (Geometry-based Point Cloud Compression).
  • FIG. 24 is a block diagram showing an implementation example of encoding device 100 according to this embodiment.
  • Encoding device 100 includes a circuit 151 and memory 152.
  • a plurality of components of the encoding device 100 shown in FIG. 5 etc. are implemented by the circuit 151 and memory 152 shown in FIG. 24.
  • the circuit 151 is a circuit that performs information processing and is a circuit that can access the memory 152.
  • circuit 151 is a dedicated or general-purpose electrical circuit that encodes a three-dimensional mesh.
  • Circuit 151 may be a processor such as a CPU. Further, the circuit 151 may be a collection of a plurality of electric circuits.
  • the memory 152 is a dedicated or general-purpose memory in which information for the circuit 151 to encode the three-dimensional mesh is stored.
  • Memory 152 may be an electrical circuit or may be connected to circuit 151. Further, the memory 152 may be included in the circuit 151. Further, the memory 152 may be a collection of a plurality of electric circuits. Further, the memory 152 may be a magnetic disk, an optical disk, or the like, or may be expressed as a storage, a recording medium, or the like. Further, the memory 152 may be a nonvolatile memory or a volatile memory.
  • the memory 152 may store a three-dimensional mesh or a bitstream. Further, the memory 152 may store a program for the circuit 151 to encode a three-dimensional mesh.
  • the encoding device 100 not all of the plurality of components shown in FIG. 5 etc. need to be implemented, and all of the plurality of processes shown here need not be performed. Some of the multiple components shown in FIG. 5 etc. may be included in other devices, and some of the multiple processes shown here may be executed by other devices. . Furthermore, in the encoding device 100, a plurality of components of the present disclosure may be implemented in any combination, or a plurality of processes of the present disclosure may be performed in any combination.
  • FIG. 25 is a block diagram showing an implementation example of the decoding device 200 according to this embodiment.
  • the decoding device 200 includes a circuit 251 and a memory 252.
  • a plurality of components of the decoding device 200 shown in FIG. 7 etc. are implemented by the circuit 251 and memory 252 shown in FIG. 25.
  • the circuit 251 is a circuit that performs information processing and is a circuit that can access the memory 252.
  • circuit 251 is a dedicated or general-purpose electrical circuit that decodes a three-dimensional mesh.
  • Circuit 251 may be a processor such as a CPU. Further, the circuit 251 may be a collection of a plurality of electric circuits.
  • the memory 252 is a dedicated or general-purpose memory in which information for the circuit 251 to decode the three-dimensional mesh is stored.
  • Memory 252 may be an electrical circuit or may be connected to circuit 251. Further, the memory 252 may be included in the circuit 251. Furthermore, the memory 252 may be a collection of a plurality of electric circuits. Further, the memory 252 may be a magnetic disk, an optical disk, or the like, or may be expressed as a storage, a recording medium, or the like. Further, the memory 252 may be a nonvolatile memory or a volatile memory.
  • the memory 252 may store a three-dimensional mesh or a bitstream. Further, the memory 252 may store a program for the circuit 251 to decode the three-dimensional mesh.
  • the decoding device 200 not all of the multiple components shown in FIG. 7 etc. need to be implemented, and all of the multiple processes shown here need not be performed. Some of the multiple components shown in FIG. 7 etc. may be included in other devices, and some of the multiple processes shown here may be executed by other devices. . Furthermore, in the decoding device 200, a plurality of components of the present disclosure may be implemented in any combination, and a plurality of processes of the present disclosure may be performed in any combination.
  • the encoding method and decoding method including the 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.
  • part or all of the encoding method and decoding method may be executed by a computer including a processor, memory, input/output circuit, and the like.
  • the encoding method and the decoding method may be executed by the computer executing a program for causing the computer to execute the encoding method and the decoding method.
  • a program or a bitstream may be recorded on a non-temporary computer-readable recording medium such as a CD-ROM.
  • An example of the program may be a bitstream.
  • a bitstream including an encoded three-dimensional mesh includes a syntax element for causing the decoding device 200 to decode the three-dimensional mesh. Then, the bitstream causes the decoding device 200 to decode the three-dimensional mesh according to the syntax elements included in the bitstream. Therefore, a bitstream can play a role similar to a program.
  • the above bitstream may be an encoded bitstream that includes an encoded three-dimensional mesh, or a multiplexed bitstream that includes an encoded three-dimensional mesh and other information.
  • each component of the encoding device 100 and the decoding device 200 may be configured with dedicated hardware, general-purpose hardware that executes the above program, etc., or a combination thereof. It may be composed of.
  • the general-purpose hardware may include a memory in which a program is recorded, a general-purpose processor that reads the program from the memory, and executes the program.
  • the memory may be a semiconductor memory or a hard disk, and the general-purpose processor may be a CPU or the like.
  • the dedicated hardware may be composed of a memory, a dedicated processor, and the like.
  • a dedicated processor may execute the encoding method and decoding method with reference to a memory for recording data.
  • each component of the encoding device 100 and the decoding device 200 may be an electric circuit, as described above. These electric circuits may constitute one electric circuit as a whole, or may be separate electric circuits. Furthermore, these electric circuits may correspond to dedicated hardware or may correspond to general-purpose hardware that executes the above programs and the like. Further, encoding device 100 and decoding device 200 may be implemented as an integrated circuit.
  • the encoding device 100 may be a transmitting device that transmits a three-dimensional mesh.
  • Decoding device 200 may be a receiving device that receives a three-dimensional mesh.
  • ⁇ Reference example regarding 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.
  • FIG. 26 is a conceptual diagram showing a parallelogram prediction method according to a reference example.
  • the vertex information of the first vertex A, the second vertex B, and the third vertex C of the first triangle is encoded
  • the vertex information of the second triangle having the same second vertex B and third vertex C as the first triangle is encoded.
  • Vertex information of the fourth vertex D is encoded.
  • 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 errors in the prediction are encoded.
  • the vertex P of a virtual parallelogram ABCP having a diagonal line BC and a diagonal line AP is calculated as a predicted point.
  • an error vector indicating the difference between vertex D and vertex P in the three-dimensional space is encoded.
  • a more complex version uses multiple triangles. This approach slows down the compression process but provides better predictions.
  • a polynomial prediction method for predicting the position of a vertex may be used.
  • polynomial prediction methods local configurations are used to predict the positions of new vertices. Specifically, several vertex coordinate values within a local neighborhood are fed to a polynomial function with predetermined coefficients, and the position of a new vertex is predicted according to the polynomial function. The vertices used for predicting new vertices are selected according to certain conditions.
  • FIG. 27 is a conceptual diagram showing a polynomial prediction method according to a reference example.
  • the predicted point of the next vertex is derived using the four encoded vertices. That is, in FIG. 27, the coordinate values of vertex #1, vertex #2, vertex #3, and vertex #4 are used to predict vertex #5. Similar to the parallelogram prediction method, an error vector indicating the error to the prediction is encoded.
  • vertex information is encoded using an error vector calculated according to a prediction method such as a parallelogram prediction method or a polynomial prediction method. Regardless of the complexity of these prediction schemes, it is difficult to ensure that the magnitude of these errors is within a certain range. For example, obtuse triangles tend to have larger error vectors than equilateral triangles. Furthermore, the smoothness of the shape and the size of the surface affect the magnitude of the error. Therefore, more bits may be used for signaling vertex information.
  • the non-common vertices of adjacent triangles with respect to the reference triangle are encoded using three angles: a dihedral angle and two other angles. That is, when vertex information is encoded using the spatial relationships between adjacent triangles, only three angles are encoded. This may reduce the number of bits.
  • the sign of the angle may be used to indicate the orientation of the angle with respect to the side.
  • a predetermined rule may be adopted in which positive values indicate a clockwise direction with respect to the reference and negative values indicate a counterclockwise direction with respect to the reference.
  • the two-dimensional plane of the second triangle can be found by the dihedral angle formed between the first triangle, which is the reference triangle, and the second triangle, which is the processing target triangle.
  • the complexity of three dimensions can be reduced to two dimensions where simpler plane laws can be applied.
  • the dihedral angle between adjacent surfaces may be calculated using surface normals. Then, a corresponding triangle that is a one-to-one virtual congruent triangle with respect to the second triangle is constructed on the plane of the first triangle. The first triangle and the corresponding triangle have a common side and are located on opposite sides of the common side. The vertices of the corresponding triangles are identified using two angles. Therefore, the apex of the second triangle is determined by the dihedral angle formed by the first triangle and the second triangle, and the two angles for specifying the apex of the corresponding triangle that is congruent with the second triangle. is specified.
  • the values of these angles tend to follow a certain distribution. Therefore, it is also possible to improve the compression ratio by utilizing such a tendency.
  • the distribution of angles may be examined and the difference with respect to the mean of the distribution may be encoded.
  • FIG. 28 is a flowchart illustrating an example of encoding processing according to this aspect.
  • a first vertex, a second vertex, and a third vertex are derived from the three-dimensional mesh (S101).
  • the first vertex, the second vertex, and the third vertex form a first triangle on the first plane of the three-dimensional mesh.
  • the first vertex, the second vertex, and the third vertex are three encoded vertices.
  • the first angle, second angle, and third angle are derived to derive the fourth vertex of the second triangle formed on the second plane of the three-dimensional mesh using the common side with the first triangle. (S102).
  • the first angle, the second angle, and the third angle are encoded into a bitstream (S103).
  • FIG. 29 is a flowchart showing a specific example of encoding processing according to this aspect.
  • each vertex coordinate value of the first surface is encoded from the three-dimensional mesh (S111).
  • the first face may be randomly selected.
  • the processing mode of the vertex is specified according to the written traversal symbol.
  • Vertices are encoded using coordinate values or angles. For example, if the traversal symbol indicates coordinates (coordinates in S114), the vertex coordinate values (x, y, z) are directly encoded (S115). This method may be chosen at the beginning of encoding, when no vertices have yet been encoded. Further, for example, if the traversal symbol indicates an angle (angle in S114), the vertex is encoded using three angles (S116).
  • Additional residuals may be calculated and signaled separately after the angle signaling.
  • the fractional part of the angular floating-point value is encoded as a residual value. It's okay. The traversal process continues until all three-dimensional meshes are traversed (S119).
  • a traversal symbol indicating any of skip, end, and execution may be encoded.
  • Skip corresponds to the vertex being already processed.
  • Termination corresponds to all vertices being processed.
  • the execution corresponds to the vertex to be processed.
  • a traversal symbol indicating execution is encoded, a processing mode indicating either coordinates or angle may be encoded separately from the traversal symbol. Processing mode may also be expressed as mode, operation mode, prediction mode, encoding mode, or decoding mode.
  • FIG. 30 is a flowchart showing another specific example of the encoding process according to this aspect.
  • the encoding process of the reference example is integrated into the encoding process of FIG.
  • each vertex coordinate value of the first surface is encoded from the three-dimensional mesh (S111).
  • the processing mode of the vertex is specified according to the written traversal symbol.
  • Vertices are encoded 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 directly encoded (S115). This method may be chosen at the beginning of encoding, when no vertices have yet been encoded. Further, for example, if the traversal symbol indicates an angle (angle in S114), the vertex is encoded using three angles (S116).
  • the traversal symbol indicates a parallelogram (parallelogram in S114)
  • the vertex is encoded using a parallelogram (S117).
  • the traversal symbol indicates a polynomial (polynomial in S114)
  • the vertex is encoded using the polynomial (S118).
  • the optimal processing mode may be determined by the minimum cost among the multiple costs calculated based on the encoding rate and distortion for the multiple processing modes. Coding rate and distortion costs may be calculated based on the number of bits signaled and the error between the actual and predicted values. Also, based solely on the error between the actual value and the predicted value, the optimal processing mode corresponding to the smallest error may be selected.
  • a traversal symbol indicating any of skip, end, and execution may be encoded.
  • a processing mode indicating either coordinates, angle, parallelogram, or polygon may be encoded separately from the traversal symbol. Note that if the processing mode is determined in advance, the processing mode does not need to be encoded or the processing does not need to be switched.
  • the first triangle has a first apex A, a second apex B, and a third apex C
  • the second triangle has a second apex B.
  • the corresponding triangle has a second apex B, a third apex C and a fifth apex E.
  • FIG. 31 is a conceptual diagram showing examples of three angles according to this aspect.
  • the two interior angles of the corresponding triangles are used as the second angle ⁇ and the third angle ⁇ .
  • two interior angles of corresponding triangles touch a common side.
  • the second angle ⁇ and the third angle ⁇ are calculated by the following equation (1).
  • FIG. 32 is a conceptual diagram showing another example of three angles according to this aspect.
  • the angle that touches the line AE is used as the second angle ⁇
  • one interior angle of the corresponding triangle that touches the common side BC is used as the third angle ⁇ .
  • the second angle ⁇ and the third angle ⁇ are calculated by the following equation (2).
  • FIG. 33 is a conceptual diagram showing still another example of three angles according to this aspect.
  • one interior angle of the corresponding triangle is used as the second angle ⁇
  • 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 edge BC.
  • the second angle ⁇ and the third angle ⁇ are calculated by the following equation (3).
  • the dihedral angle between the planes of the first triangle and the second triangle is used as the first angle ⁇ .
  • the first angle ⁇ may be calculated using those surface normals.
  • FIG. 34 is a syntax diagram showing an example of the syntax structure of vertex information for a plurality of vertices according to this aspect.
  • a traversal symbol is encoded for each other vertex. Then, it is controlled whether or not to encode vertices according to the traversal symbol.
  • FIG. 35 is a syntax diagram showing an example of the syntax structure of vertex information for one vertex according to this aspect.
  • prediction_mode is equal to only_angles_mode, the derived angles for the first, second, and third angles are directly encoded.
  • FIG. 36 is a syntax diagram showing another example of the syntax structure of vertex information for one vertex according to this aspect.
  • is_init_angles other methods are used to derive or predict the three angles without directly encoding them.
  • An example of how to derive or predict the three angles is to use a historical 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 a history list of previously encoded angles.
  • FIG. 37 is a table diagram showing an example of a table used for angle prediction.
  • previously encoded angles and indices are stored in a table in association with each other.
  • the angles stored in the table may be calculated by averaging three previously encoded 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.
  • one of the multiple angles in the table is used as the predicted angle.
  • 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 to the bitstream.
  • FIG. 38 is a table diagram showing another example of a table used for angle prediction.
  • the previously encoded first angle, second angle, and third angle are stored in the table in association with the 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.
  • one combination of the plurality of combinations in the table is used as a combination of predicted angles.
  • 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 written to the bitstream.
  • FIG. 39 is a conceptual diagram showing an example of prediction using angles with respect to the vertices of the previous triangle.
  • the three angles for the previous triangle's vertices are used to derive or predict the three angles for the current triangle's vertices.
  • the previous triangle is the triangle that is traversed before the current triangle.
  • the previous triangle may be the triangle immediately before the current triangle, or may be the triangle adjacent to the current triangle.
  • three angles (10°, 30°, 60°) to the vertices of the previous triangle are used to determine the syntax values corresponding to the three angles to the vertices of the current triangle.
  • FIG. 40 is a conceptual diagram showing an example of prediction using angles with respect to the vertices of the previous three-dimensional mesh.
  • three angles are derived or predicted using angles for vertices of a previous three-dimensional mesh.
  • the previous three-dimensional mesh is a three-dimensional mesh that is spatially different from the current three-dimensional mesh, and is a three-dimensional mesh that was processed before the current three-dimensional mesh.
  • the previous three-dimensional mesh is a three-dimensional mesh that is temporally different from the current three-dimensional mesh, and is a three-dimensional mesh that was processed before the current three-dimensional mesh.
  • the first angles, the second angles, and the third angles for the vertices of the previous three-dimensional mesh may be averaged and signaled in the current three-dimensional mesh.
  • the syntax value 1st delta 1st angle x - average 1st angle is determined and written.
  • this method may be utilized in dynamic meshes where adjacent frames have spatial redundancy.
  • FIG. 41 is a block diagram showing a configuration example of the encoding device 100 according to this aspect.
  • the encoding device 100 encodes a three-dimensional mesh into a bitstream.
  • the encoding device 100 may include a traverser 161, a switch 162, an angle derivator 163, an angle encoder 164, a coordinate encoder 165, and an entropy encoder 166.
  • the traverser 161 acquires a three-dimensional mesh. Then, the traverser 161 determines a vertex to be encoded in the three-dimensional mesh, and outputs the vertex to either the angle derivator 163 or the coordinate encoder 165 via the switch 162. In one example, traverser 161 selects coordinate encoder 165 for the first three vertices of the three-dimensional mesh and selects angle derivator 163 for other vertices.
  • the coordinate encoder 165 takes in three vertices forming a first triangle on the first plane and encodes the three vertices.
  • Delta encoding may be used in encoding the three vertices. Specifically, the coordinate value of the first vertex A is 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 coordinate value of the first vertex A and the third vertex B are encoded. The difference from the coordinate value of C may be encoded.
  • the angle deriver 163 takes in the fourth vertex D that forms a second triangle on the second plane using the second vertex B and the third vertex C, and derives three angles for specifying the fourth vertex D. and outputs the three derived angles to the angle encoder 164.
  • the second plane may be different from the first plane or may be the same as the first plane. As mentioned above, Figures 31, 32 and 33 show different examples for three angles.
  • the angle encoder 164 encodes three angles. Additional residuals may be calculated and signaled separately after the angle signaling. In the example of fully representing the angular floating point value for lossless encoding, the angular encoder 164 encodes the integer portion of the angular floating point value and then encodes the fractional portion of the angular floating point value as a residual. It may also be encoded as a value.
  • the encoded information obtained by the coordinate encoder 165 and the encoded information obtained by the angle encoder 164 are sent to the entropy encoder 166 and also fed back to the traverser 161.
  • Entropy encoder 166 compresses the encoded information and outputs a bitstream.
  • Traverser 161 uses the encoded information to determine the next traversal.
  • Examples of encoding methods to which entropy encoding applies are Huffman encoding, arithmetic encoding, range encoding, ANS (Asymmetric Numeral Systems), or CABAC (Context Adaptive Binary Arithmetic Coding). - Adaptive Binary Arithmetic Coding).
  • the encoding device 100 encodes a three-dimensional mesh according to the above configuration and processing. As a result, the amount of codes of the three-dimensional mesh may be suppressed.
  • the corresponding triangle is a triangle that is congruent to the second triangle, but may be a triangle that is 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 apex E to the fourth apex will be moved according to the correspondence between the second triangle and the corresponding triangle. D can be derived. Further, the corresponding triangle may be an orthogonal projection of the second triangle onto the first plane. In this case as well, the fourth vertex D can be derived from the fifth vertex E according to the correspondence between the second triangle and the corresponding triangle.
  • FIG. 42 is a flowchart illustrating an example of decoding processing according to this aspect.
  • a first vertex, a second vertex, and a third vertex are derived from the three-dimensional mesh (S201).
  • the first vertex, the second vertex, and the third vertex form a first triangle on the first plane of the three-dimensional mesh.
  • the first vertex, the second vertex, and the third vertex are three decoded vertices.
  • the first angle, the second angle, and the third angle are bits for deriving the fourth vertex of the second triangle formed on the second plane of the three-dimensional mesh using the common side with the first triangle.
  • the stream is decoded (S202).
  • the fourth vertex is derived using the first angle, the second angle, and the third angle (S203).
  • FIG. 43 is a flowchart showing a specific example of the decoding process according to this aspect.
  • the decoding process begins by decoding each vertex coordinate value of the initially encoded initial surface (S211). Subsequently, the traversal symbols of the current plane are decoded (S212). Then, it is determined whether the traversal symbol indicates coordinates, angle, skip, or end (S213).
  • the traversal symbol indicates coordinates (coordinates in S213)
  • the vertex coordinate values (x, y, z) are directly decoded (S214).
  • the traversal symbol indicates an angle (angle in S213)
  • the vertex is decoded using three angles (S215).
  • the traversal symbol indicates skip (skip in S213)
  • the process is repeated for the next side.
  • the traversal symbol indicates the end (end in S213), the process ends.
  • a traversal symbol indicating any of skip, end, and execution may be decoded.
  • Skip corresponds to the vertex being already processed.
  • Termination corresponds to all vertices being processed.
  • the execution corresponds to the vertex to be processed.
  • a traversal symbol indicating execution is decoded, a processing mode indicating either coordinates or angle may be decoded separately from the traversal symbol. Processing mode may also be expressed as mode, operation mode, prediction mode, encoding mode, or decoding mode.
  • FIG. 44 is a flowchart showing another specific example of the decoding process according to this aspect.
  • the decoding process of the reference example is integrated with the decoding process of FIG.
  • the decoding process begins by decoding each vertex coordinate value of the initially encoded initial surface (S211). Subsequently, the traversal symbols of the current plane are decoded (S212). Then, it is determined whether the traversal symbol indicates coordinates, angle, skip, or end (S213).
  • the traversal symbol indicates coordinates (coordinates in S213)
  • the vertex coordinate values (x, y, z) are directly decoded (S214).
  • the traversal symbol indicates an angle (angle in S213)
  • the vertex is decoded using three angles (S215).
  • the traversal symbol indicates a parallelogram (parallelogram in S213)
  • the vertex is decoded using the parallelogram (S216).
  • the traversal symbol indicates a polynomial (polynomial in S213)
  • the next vertex is decoded using the polynomial.
  • the process is repeated for the next side. Further, if the traversal symbol indicates the end (end in S213), the process ends.
  • a traversal symbol indicating any of skip, end, and execution may be decoded.
  • a processing mode indicating either coordinates, angle, parallelogram, or polygon may be decoded separately from the traversal symbol. Note that if the processing mode is determined in advance, the processing mode may not be decoded or the processing may not be switched.
  • FIG. 34 is a syntax diagram showing an example of the syntax structure of vertex information for a plurality of vertices according to this aspect.
  • traversal symbols are decoded for each other vertex. Then, it is controlled whether or not to decode the vertex according to the traversal symbol.
  • FIG. 35 is a syntax diagram showing an example of the syntax structure of vertex information for one vertex according to this aspect.
  • prediction_mode is equal to only_angles_mode, the derived angles for the first, second, and third angles are directly decoded.
  • FIG. 36 is a syntax diagram showing another example of the syntax structure of vertex information for one vertex according to this aspect.
  • is_init_angles other methods are used to derive or predict the three angles without directly decoding them.
  • An example of how to derive or predict the three angles is to use a historical list of previously decoded angles. Specifically, if the three angles to be decoded are not the first three angles, a history list of previously decoded angles is used to derive or predict the three angles.
  • FIG. 37 is a table diagram showing an example of a table used for angle prediction.
  • previously decoded angles and indexes are stored in a table in association with each other.
  • 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.
  • one of the multiple angles in the table is used as the predicted angle.
  • the syntax elements 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.
  • FIG. 38 is a table diagram showing another example of a table used for angle prediction.
  • the previously decoded first angle, second angle, and third angle are stored in the table in association with the 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.
  • one combination of the plurality of combinations in the table is used as a combination of predicted angles.
  • the syntax elements only the index values 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.
  • FIG. 39 is a conceptual diagram showing an example of prediction using angles with respect to the vertices of the previous triangle.
  • the three angles for the previous triangle's vertices are used to derive or predict the three angles for the current triangle's vertices.
  • the previous triangle is the triangle that is traversed before the current triangle.
  • the previous triangle may be the triangle immediately before the current triangle, or may be the triangle adjacent to the current triangle.
  • three angles (10°, 30°, 60°) to the vertices of the previous triangle are used to determine the syntax values corresponding to the three angles to the vertices of the current triangle.
  • FIG. 40 is a conceptual diagram showing an example of prediction using angles with respect to the vertices of the previous three-dimensional mesh.
  • three angles are derived or predicted using angles for vertices of a previous three-dimensional mesh.
  • the previous three-dimensional mesh is a three-dimensional mesh that is spatially different from the current three-dimensional mesh, and is a three-dimensional mesh that was processed before the current three-dimensional mesh.
  • the previous three-dimensional mesh is a three-dimensional mesh that is temporally different from the current three-dimensional mesh, and is a three-dimensional mesh that was processed before the current three-dimensional mesh.
  • Additional residuals may be decoded after decoding the three angles.
  • the value decoded as an angle may represent the integer portion of the floating point value of the angle
  • the value decoded as the residual may represent the fractional portion of the floating point value of the angle. By adding the decimal part to the integer part, the actual angle is obtained.
  • the first triangle has a first apex A, a second apex B, and a third apex C
  • the second triangle has a second apex B.
  • the corresponding triangle has a second apex B, a third apex C and a fifth apex E.
  • the fifth vertex E which is the projection of the fourth vertex D onto the first plane containing the first triangle, is calculated using the second and third angles. . Then, the fifth vertex E to the fourth vertex D are calculated using the first angle that is the dihedral angle between the first triangle and the second triangle.
  • FIG. 31 is a conceptual diagram showing examples of three angles according to this aspect.
  • the two interior angles of the corresponding triangles are used as the second angle ⁇ and the third angle ⁇ . That is, in this example, the two interior angles of the corresponding triangles are decoded from the bitstream.
  • the following equation (4) is obtained.
  • FIG. 32 is a conceptual diagram showing another example of three angles according to this aspect.
  • the angle that touches the line AE is used as the second angle ⁇
  • one interior angle of the corresponding triangle that touches the common side BC is used as the third angle ⁇ .
  • the fourth angle ⁇ between BA and BC is derived by the following equation (5).
  • the magnitude of BE is derived from the above equation (6). Therefore, the direction and size of BE and the plane on which the fifth vertex E is located are known, and the coordinate values of the fifth vertex E are derived.
  • FIG. 33 is a conceptual diagram showing still another example of three angles according to this aspect.
  • one interior angle of the corresponding triangle is used as the second angle ⁇
  • 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 edge BC.
  • the magnitude of CE is derived from equation (8) above. Therefore, the direction and size of CE and the plane on which the fifth vertex E is located are known, and the coordinate values of the fifth vertex E are derived.
  • the fifth vertex E is derived in each of the plurality of derivation methods explained using FIGS. 31, 32, and 33.
  • the fourth vertex D can be derived from the fifth vertex E.
  • the second triangle CBD and the corresponding triangle CBE are the same on a one-to-one basis.
  • the fourth vertex D and the fifth vertex E are on different planes that share a common side CB.
  • the fourth vertex D is derived by rotating the fifth vertex E around the side BC by an amount of ⁇ - ⁇ (or ⁇ ).
  • is the first angle.
  • FIG. 45 is a table diagram showing an example of a lookup table for a sine function and a cosine function. In calculating the above sine function and cosine function, the lookup table shown in FIG. 45 may be used.
  • FIG. 46 is a block diagram showing a configuration example of a decoding device 200 according to this aspect.
  • Decoding device 200 decodes a three-dimensional mesh from a bitstream.
  • 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.
  • the entropy decoder 266 obtains the bitstream. Entropy decoder 266 obtains decompression information by decompressing the bitstream and outputs the decompression information. Examples of encoding methods to which entropy decoding applies are Huffman encoding, arithmetic encoding, range encoding, ANS (Asymmetric Numeral Systems), or CABAC (Context Adaptive Binary Arithmetic Coding). Adaptive Binary Arithmetic Coding).
  • the decompression information is input to the traverser 261.
  • Traverser 261 interprets the decompression information and outputs the decompression information to either angle decoder 263 or coordinate decoder 265 via switch 262 .
  • the coordinate decoder 265 decodes the three vertices forming the first triangle on the first plane from the decompression information. As an example of decoding three vertices, the coordinate value of the first vertex A and two difference values are decoded from the decompression information. Next, by adding two difference values to the coordinate value of the first vertex A, the coordinate value of the second vertex B and the coordinate value of the third vertex C are derived.
  • the angle decoder 263 decodes the three angles from the decompression information and outputs the three angles to the coordinate derivator 264.
  • the coordinate deriver 264 uses the three angles to derive the vertex of the 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 FIGS. 31, 32, and 33.
  • the vertex information indicating the vertices obtained by the coordinate deriver 264 or the coordinate decoder 265 is output as vertex information of the three-dimensional mesh. Further, this vertex information is fed back to the traverser 261 and used to determine the next traversal.
  • the decoding device 200 decodes the three-dimensional mesh according to the above configuration and processing. As a result, the amount of codes of the three-dimensional mesh may be suppressed.
  • the corresponding triangle is a triangle that is congruent to the second triangle, but may be a triangle that is 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 apex E to the fourth apex will be moved according to the correspondence between the second triangle and the corresponding triangle. D can be derived. Further, the corresponding triangle may be an orthogonal projection of the second triangle onto the first plane. In this case as well, the fourth vertex D can be derived from the fifth vertex E according to the correspondence between the second triangle and the corresponding triangle.
  • 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. It is.
  • the encoding device 100 encodes information for specifying the fourth vertex D of the second triangle from the reference first triangle or its three vertices, which are the first vertex A, the second vertex B, and the third vertex C. become
  • the decoding device 200 decodes information for specifying the fourth vertex D of the second triangle from the reference first triangle or its three vertices, which are the first vertex A, the second vertex B, and the third vertex C. .
  • the information for specifying the fourth vertex D includes dihedral angle information indicating the dihedral angle and specific information for specifying the fifth vertex E.
  • the dihedral angle indicated by the dihedral angle information is a dihedral angle formed by a first plane containing the first triangle and a second plane containing the second triangle.
  • the fifth vertex E specified by the specific information is a vertex on the first plane, and is a vertex of a corresponding triangle corresponding to the second triangle.
  • 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. Further, 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 formed between the first plane and the second plane. Since the dihedral angle ranges from -180 degrees to 180 degrees, for example, an increase in the amount of code is suppressed. Therefore, with the above configuration and processing, the fourth vertex D can be efficiently encoded and decoded.
  • the information for specifying the fourth vertex D may be used as the above-mentioned specific information or in place of the above-mentioned specific information, such as "(1) of the vertex (fifth vertex E) of the polygon (corresponding triangle BEC)
  • the information may include "position information” or "(2) information regarding the position and shape of the polygon (corresponding triangle BEC)".
  • the information for specifying the fourth vertex D may be provided as the dihedral angle information described above or in place of the dihedral angle information described above, such as "(3) Vertex (fifth "Information indicating the distance and direction between the position of the vertex E) and the position of the processing target vertex (fourth vertex D)" may be included. Further, the information for specifying the fourth vertex D may be used as the above-mentioned dihedral angle information or in place of the above-mentioned dihedral angle information as "(4) a plane containing a polygon (corresponding triangle BEC),” "information indicating a difference from a plane including a polygon (second triangle BDC) having a vertex to be processed (fourth vertex D)".
  • any of the above information may be indicated using angles. This may reduce the amount of code and improve the flexibility and accuracy of prediction. Further, information indicating which of the above information is used may be encoded.
  • the following example may be added to the above configuration and processing, or at least a part of the above configuration and processing may be replaced with the following example.
  • Position information of vertices of a 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. If the information regarding the position and shape of the first reference triangle or the position information of the first vertex A, the second vertex B, and the third vertex C are specified, the position information of the vertices of the polygon is the fifth vertex. Only the coordinate value of E may be shown.
  • the coordinate value of the fifth vertex E may be expressed by two-dimensional coordinate values.
  • the coordinate value may be expressed using a difference with other coordinate values, and the coordinate value of the fifth vertex E indicates the difference with respect to the coordinate value of the first vertex A, the second vertex B, or the third vertex C. It may also be expressed using a vector.
  • the polygon may be other than a triangle and may be a quadrilateral.
  • Information regarding the position and shape of the polygon may be information that specifies the position and shape of the corresponding triangle BEC.
  • Information regarding the position and shape of the first reference triangle ABC, or if the position information of the first vertex A, second vertex B, and third vertex C is specified, 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.
  • the information indicating the side BC corresponds to the information indicating that the corresponding triangle BEC is used.
  • information indicating the first vertex A may be encoded.
  • the information indicating the first vertex A corresponds to the information indicating that the fifth vertex E is on the opposite side of the first vertex A across the side BC.
  • a corresponding triangle BEC on the same plane as the first triangle ABC is to be used for deriving the positional information of the fourth vertex D to be processed, only the above two angles with respect to the fifth vertex E are used. It may also be encoded. This makes it possible to derive the position and shape of the corresponding triangle BEC, that is, the position information of the fifth vertex E, from only two angles, compared to the case where the coordinate values of the fifth vertex E are encoded. It becomes possible to reduce the amount of code.
  • the angle itself may be encoded, or an index specifying one angle among a plurality of predefined angles may be encoded. Multiple combinations of two angles may be predefined. Then, an index identifying one combination among the plurality of combinations may be encoded.
  • information indicating one angle and the length of one side may be encoded.
  • the angle formed by side BC and side BE and the length of side BE may be encoded.
  • information indicating one angle and the length of one perpendicular line may be encoded.
  • the angle between sides BC and BE and the length of a perpendicular drawn from the fifth vertex E to side BC may be encoded.
  • information indicating the lengths of the two sides may be encoded.
  • the lengths of sides BE and CE may be encoded.
  • “(3) Information indicating the distance and direction between the position of the polygon's vertex and the position of the processing target vertex” is the distance between the fifth vertex E of the corresponding triangle BEC and the fourth vertex D to be processed. and a difference vector indicating the direction. If the position of the fourth vertex D matches the position of the fifth vertex E, or if the fourth vertex D is located on the same plane as the fifth vertex E, this information may be omitted.
  • "(4) Information indicating the difference between the plane containing the polygon and the plane containing the polygon having the processing target apex" is the difference between the plane containing the corresponding triangle BEC and the plane containing the second triangle BDC.
  • An angle may also be indicated.
  • the angle for example, the angle between the side BE and the side BD, or the angle between the side CE and the side CD may be encoded.
  • the angle itself may be encoded as the angle between the side BE and the side BD or the angle between the side CE and the side CD, or an index that specifies one angle among a plurality of predefined angles. may be encoded.
  • the plurality of predefined angles may also be used in common when deriving the angle between side BC and side CE and the angle between side BC and side BE.
  • an index indicating a plurality of combinations of angles formed by sides BE and BD, angles formed by sides CE and sides CD, angles formed by sides BC and sides CE, and angles formed by sides BC and sides BE. may be defined in advance. This makes it possible to further reduce the amount of code compared to the case where the angle itself is encoded.
  • the angle may be omitted. Furthermore, in cases where the angle is expressed by an index, the angle is expressed with integer precision, or the coordinate value is expressed with integer precision, a difference vector may be encoded in addition to the angle. Thereby, it becomes possible to modify the derived coordinate value of the fourth vertex D, and it becomes possible to improve the accuracy of encoding.
  • the fourth vertex D may be used as the first vertex A, the second vertex B, or the third vertex C with respect to other vertices.
  • a plurality of processing methods may be switched by selecting a processing method such as an encoding method or a decoding method for each processing target vertex.
  • information indicating the processing method used to encode the processing target vertex may be encoded.
  • a plurality of processing methods may be switched by selecting a processing method for each three-dimensional mesh, or information indicating the processing method may be encoded for each three-dimensional mesh.
  • the difference described in the present disclosure may be expressed as a deviation, a residual, or a delta.
  • the apex described in this disclosure may mean the position of the apex.
  • the corresponding triangles in the above description may be expressed as predicted triangles, or may be expressed as virtual corresponding triangles.
  • 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.
  • the second aspect of encoding and decoding vertex information is an aspect that can be combined with the first aspect of encoding and decoding vertex information.
  • 3D graphical data captured with various real-world hardware tends to have irregularities such as degenerate surfaces, duplicate vertices, and unconnected parts.
  • a degenerate surface occurs when at least two of the vertices that make up the surface have the same vertex index, so the surface area becomes zero and the surface normal becomes indeterminate.
  • Duplicate vertices have exactly the same coordinates, but are expressed with two or more different indexes. Therefore, the same point is represented by different indexes on different surfaces. Therefore, in traversing the topology of the mesh, these vertices are considered non-identical, leading to the failure of encoding techniques that rely on using previously encoded vertices. Additionally, the polygon mesh may have unconnected or incomplete parts, making it difficult to traverse the entire model.
  • virtual reference triangles are generated that allow the implementation of angle-based 3D graphics encoding techniques.
  • the virtual reference triangle may be constructed using a combination of previously encoded vertices and dummy vertices selected according to predetermined conditions. Exception processing for the 3D model may be instructed from the encoding device 100 to the decoding device 200 using a mode setting parameter.
  • FIG. 47 is a flowchart illustrating an example of encoding processing according to this aspect.
  • connection information of the first vertex, the second vertex, and the third vertex is derived from the three-dimensional mesh (S121).
  • the first vertex, the second vertex, and the third vertex form a first triangle.
  • connection information satisfies the conditions (S122).
  • the following two types of conditions are possible.
  • 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 encoded. Note that not only connection information but also vertex information may be derived and used for these determinations.
  • FIG. 48 is a conceptual diagram showing an example of a mesh according to this aspect.
  • A1, B1, C1, D1, E1 and F1 are vertices in the geometry map.
  • FIG. 49 is a conceptual diagram showing an example of a fragmented mesh in which some of the three vertices forming a triangle are not connected.
  • A2, B2, C2, D2, E2 and F2 are vertices in the connectivity map.
  • solid lines indicate connections and dotted lines indicate non-connections. Note that portions without lines are also non-connected.
  • vertex D1 of triangle A1B1C1 is not suitable for use since there is no connectivity between A2 and C2 and between A2 and B2.
  • FIG. 50 is a conceptual diagram showing an example of a mesh with overlapping vertices, and shows an example in which the vertices of the reference triangle are not encoded before the encoding target vertices are encoded.
  • Vertex C and vertex F are two different points in the mesh and exist on different faces in the mesh. Since apex C and apex F have the same coordinates, they are displayed as overlapping points.
  • vertexs A, B, and C are encoded in traversal order.
  • Vertex D is then encoded in an angular manner using reference triangle ABC.
  • vertex E has not yet been encoded.
  • virtual vertices and virtual triangles are sometimes used in a 3D mesh to efficiently represent a 3D image, and even in such cases, the vertices may not be encoded or the connectivity between the vertices may be poor. There is a possibility that there is no such thing.
  • the first vertex, the second vertex, and the third vertex are derived as three vertices (S123).
  • the second vertex, the third vertex, and the fourth vertex form a second triangle on the three-dimensional mesh, and the fourth vertex is on the opposite side of the first vertex.
  • FIG. 31 shows an example of the positions of three vertices, where B and C are the second and third vertices, A is the first vertex, and D is the fourth vertex.
  • a reference triangle formed by ABC may be used to encode vertex D.
  • the fifth vertex is different from the first vertex, the second vertex, and the third vertex. Note that the fifth vertex in this aspect is a vertex used in place of any one of the first vertex, the second vertex, and the third vertex, and has a different meaning from the fifth vertex in the first aspect.
  • FIG. 51 is a conceptual diagram showing an example of exception handling using a previously encoded vertex set. This example is an example where vertex B does not satisfy the condition (does not exist or has not been encoded yet).
  • the BCD reference triangle cannot be used to encode vertex E.
  • Vertex B is replaced by the previously encoded vertex A (the fifth vertex), forming a new virtual reference triangle ACD that can be used to encode vertex E.
  • the fifth vertex may be created as a dummy vertex with predefined coordinates.
  • a virtual reference triangle may be formed including dummy vertices.
  • the encoding device 100 may calculate dummy vertices.
  • dummy vertices are predefined at fixed coordinates (1, 0, 0), (0, 1, 0), and (0, 0, 1), and these dummy vertices are the first vertex, the second vertex, and the second vertex. It may also play the role of three vertices.
  • the coordinates of the dummy vertices may be selected in a model-specific manner.
  • encoding device 100 may calculate the dimensions of the object's 3D bounding box and use those values to create dummy vertices.
  • the created dummy vertices may be signaled in the bitstream.
  • the same number of dummy vertices or vertices encoded in the past as the number of vertices that do not satisfy the condition may be used.
  • a plurality of angles for specifying the fourth vertex are derived from the triangle formed by the derived three vertices (S125).
  • the fourth vertex forms a second triangle using a common side with the triangle formed based on the derived three vertices.
  • the number of angles derived depends on the prediction method used to encode the fourth vertex. 31, 32, and 33 show different examples of deriving at least a plurality of angles using the fourth vertex and the three derived vertices A, B, and C.
  • the multiple angles are encoded into a bitstream (S126).
  • An example of encoding multiple angles is using entropy encoding.
  • Examples of coding schemes to which entropy coding applies may be Huffman coding, arithmetic coding, range coding, asymmetric number system (ANS), or context adaptive binary arithmetic coding (CABAC).
  • FIG. 52 is a flowchart showing a specific example of encoding processing according to this aspect.
  • a process (S131) for encoding a vertex using an exception is added.
  • This process (S131) corresponds to the process (S124, S125, S126) shown in FIG. 47.
  • the process of encoding vertices using exceptions is one of the encoding modes used for compressing mesh data.
  • FIG. 53 is a block diagram showing a configuration example of the encoding device 100 according to this aspect.
  • the encoding device 100 encodes a three-dimensional mesh into a bitstream.
  • the encoding device 100 may include a traverser 161, a determiner 167, an exception handler 168, an angle derivator 163, and an entropy encoder 166.
  • the traverser 161 acquires a three-dimensional mesh. Further, the traverser 161 outputs connection information of the first vertex, the second vertex, and the third vertex derived from the three-dimensional mesh to the determiner 167. The traverser 161 also determines the fourth vertex to be encoded in the three-dimensional mesh.
  • the first vertex, the second vertex, and the third vertex form a first triangle, and have a common side with the second triangle including the fourth vertex.
  • the determiner 167 checks whether the connection information satisfies the conditions. 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.
  • the exception handler 168 derives three vertices including at least the fifth vertex.
  • the angle derivator 163 performs processing using three vertices including at least the fifth vertex.
  • the angle derivator 163 derives multiple angles using the three vertices and the fourth vertex.
  • 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.
  • the entropy encoder 166 encodes the multiple angles derived by the angle derivator 163 into a bitstream.
  • FIG. 54 is a flowchart illustrating an example of decoding processing according to this aspect.
  • connection information of the first vertex, the second vertex, and the third vertex is derived from the bitstream (S221).
  • the first vertex, the second vertex, and the third vertex form a first triangle.
  • connection information satisfies the conditions (S222).
  • the following two types of conditions are possible.
  • 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 not only connection information but also vertex information may be derived and used for these determinations.
  • FIG. 48 is a conceptual diagram showing an example of a mesh according to this aspect.
  • A1, B1, C1, D1, E1 and F1 are vertices in the geometry map.
  • FIG. 49 is a conceptual diagram showing an example of a fragmented mesh in which some of the three vertices forming a triangle are not connected.
  • A2, B2, C2, D2, E2 and F2 are vertices in the connectivity map.
  • solid lines indicate connections and dotted lines indicate non-connections. Note that portions without lines are also non-connected.
  • vertex A1 of triangle A1B1C1 is not suitable for use since there is no connectivity between A2 and C2 and between A2 and B2.
  • FIG. 50 is a conceptual diagram showing an example of a mesh with overlapping vertices, and shows an example in which the vertices of the reference triangle are not decoded before the decoding target vertex is decoded.
  • Vertex C and vertex F are two different points in the mesh and exist on different faces in the mesh. Since apex C and apex F have the same coordinates, they are displayed as overlapping points.
  • vertexs A, B, and C are decoded in traversal order.
  • Vertex D is then decoded in an angular manner using reference triangle ABC.
  • vertex E has not yet been decoded.
  • virtual vertices and virtual triangles are sometimes used in a 3D mesh to efficiently represent a 3D image, and even in such cases, vertices may not be decoded or there may be connectivity between vertices. There is a possibility that there is no such thing.
  • the first vertex, the second vertex, and the third vertex are derived as three vertices (S223).
  • the second vertex, the third vertex, and the fourth vertex form a second triangle on the three-dimensional mesh, and the fourth vertex is on the opposite side of the first vertex.
  • FIG. 31 shows an example of the positions of three vertices, where B and C are the second and third vertices, A is the first vertex, and D is the fourth vertex.
  • a reference triangle formed by ABC can be used to decode vertex D.
  • the fifth vertex is different from the first vertex, the second vertex, and the third vertex. Note that the fifth vertex in this aspect is a vertex used in place of any one of the first vertex, the second vertex, and the third vertex, and has a different meaning from the fifth vertex in the first aspect.
  • FIG. 51 is a conceptual diagram showing an example of exception handling using a previously decoded vertex set. This example is an example where vertex B does not satisfy the condition (does not exist or has not been decoded yet).
  • the BCD reference triangle cannot be used to decode vertex E.
  • Vertex B is replaced by the previously decoded vertex A (the fifth vertex), forming a new virtual reference triangle ACD that can be used to decode vertex E.
  • the fifth vertex may be created as a dummy vertex with predefined coordinates.
  • a virtual reference triangle may be formed including dummy vertices.
  • the decoding device 200 may calculate dummy vertices similarly to the encoding device 100.
  • dummy vertices are predefined at fixed coordinates (1, 0, 0), (0, 1, 0), and (0, 0, 1), and these dummy vertices are the first vertex, the second vertex, and It may also play the role of a third vertex.
  • the coordinates of the dummy vertices may be selected in a model-specific manner.
  • decoding device 200 may calculate the dimensions of the object's 3D bounding box and use those values to create dummy vertices.
  • the dummy vertices created by the encoding device 100 may be signaled in a bitstream and decoded by the decoding device 200.
  • the same number of dummy vertices or vertices that have been decoded in the past as the number of vertices that do not satisfy the condition may be used.
  • multiple angles are decoded from the bitstream (S225).
  • An example of decoding multiple angles is to use entropy decoding.
  • Examples of coding schemes that entropy decoding follows may be Huffman coding, arithmetic coding, range coding, asymmetric number system (ANS), or context adaptive binary arithmetic coding (CABAC). The number of angles that are decoded depends on the prediction method used to decode the fourth vertex.
  • a fourth vertex is derived using multiple angles (S226).
  • the fourth vertex forms a second triangle using a common side with the triangle formed based on the derived three vertices.
  • 31, 32, and 33 show different examples of deriving the fourth vertex using the three derived vertices A, B, and C and a plurality of angles.
  • FIG. 55 is a flowchart showing a specific example of decoding processing according to this aspect.
  • a process (S231) for decoding a vertex using an exception is added.
  • This process (S231) corresponds to the process (S224, S225, S226) shown in FIG.
  • the process of decoding vertices using exceptions is one of the decoding modes used to decompress a bitstream.
  • FIG. 56 is a block diagram showing a configuration example of a decoding device 200 according to this aspect.
  • Decoding device 200 decodes a three-dimensional mesh from a bitstream.
  • the decoding device 200 includes an entropy decoder 266, a traverser 261, a determiner 267, an exception handler 268, and a coordinate deriver 264.
  • the entropy decoder 266 obtains the bitstream. Furthermore, the entropy decoder 266 decodes connection information of the first vertex, the second vertex, and the third vertex, and the plurality of angles from the bitstream. Here, the first vertex, the second vertex, and the third vertex form a first triangle.
  • the traverser 261 outputs the connection information decoded by the entropy decoder 266 to the determiner 267.
  • the determiner 267 checks whether the connection information satisfies the conditions. If it is determined that the connection information satisfies the conditions, the coordinate derivation unit 264 performs processing using the first vertex, the second vertex, and the third vertex.
  • the exception handler 268 derives three vertices including at least the fifth vertex.
  • the coordinate deriver 264 derives and outputs the fourth vertex in the three-dimensional mesh using three vertices and multiple angles.
  • the fourth vertex forms a second triangle using a common side with the triangle formed based on the three vertices.
  • a new virtual reference triangle is formed using the new vertices. . This allows vertices to be efficiently encoded or decoded.
  • ⁇ Supplementary information regarding the second aspect of encoding and decoding of vertex information> it is selected whether or not to perform exception processing based on the determination result of whether the information on the reference triangle satisfies the condition.
  • the conditions may be, for example, the following conditions.
  • Each side of the reference triangle has connectivity (see FIG. 49). For example, among the vertices of the reference triangle, a vertex located opposite the target vertex across the side shared by the triangle containing the target vertex and the reference triangle is connected to another vertex of the reference triangle. .
  • condition (i) and (ii) above are just examples, and only one of the conditions may be used for the determination, a different condition may be added, or at least one of the conditions may be used for the determination. May be replaced.
  • information on the reference triangle may be used as a condition for selection or switching.
  • a reference triangle can be defined as a triangle that shares a vertex or edge with the triangle that has the processing target vertex.
  • a triangle different from the reference triangle may be a triangle that does not share at least one of a vertex and a side with the triangle having the processing target vertex. Note that each triangle may be a polygon different from a triangle.
  • the location information of the vertices of the reference triangle, the connection information, and the information on whether the vertices are available may be used. Further, information on other triangles or information on the vertices of the triangle having the processing target apex may be used.
  • a process may be selected or switched from among a plurality of processes including the first process and the second process. That is, the plurality of processes may include processes different from the first process and the second process.
  • a reference triangle is used in the first process, and a triangle different from the reference triangle is used in the second process, but the first process and the second process are not limited to these. That is, the same triangle may be used in the first process and the second process.
  • the first process may be a process performed using a reference triangle, and the second process may be another process performed using a reference triangle.
  • 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.
  • the first process may be a process performed using a reference triangle
  • the second process may be a process performed using another triangle in which at least one side does not have connectivity.
  • a process performed using yet another triangle having connectivity on each side may be defined as the third process. Then, a process may be selected or switched from among a plurality of processes including the first process, the second process, and the third process.
  • the selectable exception handling may be different based on the determination result of the condition.
  • the combination of the condition determination result and the exception handling may be, for example, the following configuration.
  • each vertex of the reference triangle has been processed (encoded or decoded), but any side of the reference triangle does not have connectivity. , the first process, and the third process.
  • the reference triangle is used regardless of the presence or absence of connectivity, so there is a possibility that an increase in the amount of processing can be suppressed.
  • the third process there is a possibility that a triangle constituting the same object as the triangle having the target vertex is used, and the target vertex can be indicated more efficiently than the first process. It may be possible.
  • processing may be selected from among the following. In other words, processing may be performed using a triangle different from the reference triangle, regardless of connectivity. In the case of the third process, there is a possibility that the process is performed more efficiently than the second process.
  • the third process described above may be always selected.
  • the reference triangle as unavailable and use another triangle whose vertices have been processed and whose edges have connectivity. Processing may also be performed. With this configuration, processing may be performed more efficiently.
  • positional information of vertices in the present disclosure is not limited to information on coordinates of geometry, and may be other positional information different from geometry.
  • vertices that cannot be used for encoding or decoding are replaced with vertices that have already been encoded or decoded.
  • Examples of vertices that have already been encoded or decoded are the last three vertices of the encoded or decoded part of the mesh.
  • 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 encoding device 100 to decoding device 200. Such signaling may apply not only in exceptional cases, but also in non-exceptional cases. Also, such signaling may be applied not only to the "angle" prediction mode, but also to other prediction modes that use reference triangles, such as the parallelogram prediction mode.
  • a dummy reference triangle is generated using predefined vertices.
  • the predefined vertices 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 for processing the vertices.
  • FIG. 57 is a flowchart showing an example of exception handling according to this aspect.
  • the vertices of the reference triangle are set using predefined values (S301).
  • the reference triangle is then used to encode or decode the vertices of the new triangle.
  • FIG. 58 is a flowchart showing another example of the encoding process according to this aspect.
  • the encoding device 100 derives the coordinates of the fourth vertex to be encoded from the mesh (S151).
  • the triangle having the fourth vertex is defined as the second triangle
  • the triangle that shares a side with the second triangle is defined as the reference triangle.
  • the encoding device 100 derives the connection information of the reference triangle from the mesh (S152). In the subsequent steps, the encoding device 100 determines whether the connection information of the reference triangle satisfies the condition, and executes the encoding process of the vertex coordinates based on the determination result.
  • the determination process the following two are exemplified as the determination process.
  • 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.
  • the encoding device 100 performs the fourth Information for specifying the coordinates of the vertices is encoded (S155, S156).
  • the encoding device 100 encodes information for specifying the coordinates of the fourth vertex based on the reference triangle. become Here, an example is shown in which angle information is used for encoding (S156).
  • exception handling when (i) is not satisfied and the exception handling when (ii) is not satisfied may be different processes. Furthermore, not only connection information but also vertex information may be derived and used for determination.
  • FIG. 59 is a flowchart showing another example of the decoding process according to this aspect.
  • the decoding device 200 acquires information for specifying the coordinates of the fourth vertex to be decoded from the bitstream.
  • decoding angle information is shown (S251).
  • the triangle having the fourth vertex is defined as the second triangle, and the triangle that shares a side with the second triangle is defined as the reference triangle.
  • the decoding device 200 derives reference triangle connection information from the bitstream (S252). In the subsequent steps, the decoding device 200 determines whether the connection information of the reference triangle satisfies the condition, and executes a vertex coordinate decoding process based on the determination result.
  • the determination process the following two are exemplified as the determination process.
  • 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.
  • the decoding device 200 determines whether the fourth vertex is The coordinates of are derived (decoded) (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.
  • angle information is used for derivation (decoding) (S256).
  • exception handling when (i) is not satisfied and the exception handling when (ii) is not satisfied may be different processes. Furthermore, not only connection information but also vertex information may be derived and used for determination.
  • FIG. 60 is a conceptual diagram showing an example of the position of parameters in a bitstream.
  • Information for exception handling may be signaled as a parameter in the bitstream, as shown in FIG. 60.
  • FIG. 61 is a conceptual diagram showing another example of the position of parameters in a bitstream.
  • Information for exception handling may be signaled as a parameter in the header of the bitstream, as shown in FIG. 61.
  • the exception handling method may be indicated using parameters.
  • the parameter is an index with a value of 0 or 1. The value may indicate whether to use predefined dummy vertices or signaled dummy vertices. If signaled dummy vertices are used, the dummy vertices are also signaled after the parameters.
  • FIG. 62 is a flowchart showing an example of basic encoding processing according to this embodiment.
  • the circuit 151 of the encoding device 100 shown in FIG. 24 performs the encoding process shown in FIG. 62 in operation.
  • the circuit 151 sets a first mode set including a normal mode in which the first triangle is used to encode the encoding target vertex of the second triangle.
  • a mode for encoding the encoding target vertex is selected from among them (S162).
  • the circuit 151 provides a second triangle including an exception mode for encoding the target vertex to be encoded using a third triangle that is different from both the first triangle and the second triangle.
  • a mode is selected from the mode set (S163).
  • the circuit 151 encodes the encoding target vertex according to the mode (S164).
  • the first triangle does not satisfy the condition, it may be possible to encode the vertex of the second triangle using a third triangle different from the first triangle. Therefore, it may be possible to encode the vertices of the second triangle using a reference triangle suitable for encoding.
  • the third triangle may be a triangle that shares a side with the first triangle. This may make it possible to use a third triangle in the vicinity of the first triangle used in the normal mode in the exceptional mode. Therefore, it may be possible to reduce the difference between normal mode and exception mode. Therefore, it may be possible to suppress variations in code amount.
  • the third triangle may be a triangle that shares a side with the second triangle. This may allow a third triangle in the vicinity of the second triangle to be used in the exception mode. Therefore, it may become possible to efficiently encode the encoding target vertex using the third triangle near the encoding target vertex.
  • the third triangle may be a triangle that shares an apex with the first triangle. This may make it possible to use a third triangle in the vicinity of the first triangle used in the normal mode in the exceptional mode. Therefore, it may be possible to reduce the difference between normal mode and exception mode. Therefore, it may be possible to suppress variations in code amount.
  • the third triangle may be a triangle in which each vertex has been encoded. This may make it possible to encode the encoding target vertex using the third triangle that reflects the characteristics of the three-dimensional mesh. Therefore, it may become possible to efficiently encode the encoding target vertex.
  • the third triangle may be a triangle in which each side has connectivity. This may make it possible to encode the encoding target vertex using the third triangle that reflects the characteristics of the three-dimensional mesh. Therefore, it may become possible to efficiently encode the encoding target vertex.
  • the third triangle may be a triangle having a dummy apex.
  • the third triangle may be a triangle having a dummy apex.
  • the exception mode may include multiple submodes. Then, when the exception mode is selected as the mode, the circuit 151 may select a submode for encoding the encoding target vertex from among the plurality of submodes. As a result, it may become possible to encode a target vertex to be encoded according to a submode selected from a plurality of submodes in the exception mode. Therefore, it may be possible to encode a target vertex to be encoded according to an exception handling method that is adaptively selected from among a plurality of exception handling methods.
  • the circuit 151 may encode a parameter indicating the submode. This may make it possible to share submode information for encoding the encoding target vertex between encoding device 100 and decoding device 200 according to the parameters. Therefore, it may be possible to apply the same submode for encoding and decoding according to the parameters.
  • the circuit 151 may determine the third triangle according to the submode. Thereby, by selecting a submode from among a plurality of submodes, it may be possible to select a third triangle suitable for encoding. Therefore, it may become possible to efficiently encode the encoding target vertex using the third triangle suitable for encoding.
  • the circuit 151 may determine the apex of the third triangle according to the submode. Thereby, by selecting a submode from among a plurality of submodes, it may be possible to select a vertex of the third triangle suitable for encoding. Therefore, it may become possible to efficiently encode the encoding target vertex using the third triangle suitable for encoding.
  • the condition may include that each vertex of the first triangle has been encoded.
  • each vertex of the first triangle has been encoded.
  • the condition may include that each side of the first triangle has connectivity. Thereby, it may be possible to suppress the use of a first triangle whose sides do not have connectivity in encoding the vertices of the second triangle. Then, it may be possible to use a mode suitable for encoding the vertices of the second triangle.
  • the circuit 151 may encode the angle indicating the encoding target vertex using the third triangle.
  • This may make it possible to prevent the code amount from becoming too large. That is, it may be possible to suppress the worst case code amount.
  • first triangle and the second triangle may share a side.
  • the side that the first triangle and the second triangle share may correspond to the opposite side of the encoding target vertex in the second triangle.
  • the third triangle may have a side that is shared by the first triangle and the second triangle. That is, 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.
  • the third triangle is not limited to such a triangle, and may have any side or any vertex of the first triangle, for example.
  • the normal mode may be a mode in which the encoding target vertex is encoded using the first triangle and one or more angles.
  • the exception mode may be a mode in which a vertex to be encoded is encoded using a third triangle and one or more angles.
  • the first mode set and the second mode set are different from each other.
  • the normal mode may not be included in the second mode set, but may be included only in the first mode set.
  • the exception mode may not be included in the first mode set, but may be included only in the second mode set.
  • the first mode set includes a mode in which a vertex to be encoded is encoded using coordinates, a mode in which a vertex to be encoded is encoded using a parallelogram, and a mode in which a vertex to be encoded is encoded using a polynomial.
  • the parallelogram may be based on the first triangle.
  • the normal mode may be a mode in which the encoding target vertex is encoded using a parallelogram based on the first triangle.
  • the second mode set includes a mode for encoding the encoding target vertex using coordinates, a mode for encoding the encoding target vertex using a parallelogram, and a mode for encoding the encoding target vertex using a polynomial.
  • the parallelogram may be based on the third triangle.
  • the exception mode may be a mode in which the encoding target vertex is encoded using a parallelogram based on the third triangle.
  • 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, if the first triangle satisfies the condition, the circuit 151 may encode the encoding target vertex according to the normal mode.
  • the second mode set may include only the exception mode.
  • the circuit 151 may then select an exception mode if the first triangle does not satisfy the condition. That is, if the first triangle does not satisfy the condition, the circuit 151 may encode the encoding target vertex according to the exception mode.
  • the circuit 151 may select a mode from a mode set including a normal mode and an exception mode.
  • 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 encoding target vertex according to the normal mode. Furthermore, if the first triangle does not satisfy the condition, the circuit 151 may select an exception mode and encode the encoding target vertex according to the exception mode.
  • the plurality of submodes may include a submode in which the encoding target vertex is encoded using a third triangle having a dummy vertex.
  • the plurality of sub-modes may include a sub-mode in which vertices to be encoded are encoded using a third triangle whose vertices have already been encoded.
  • the plurality of sub-modes may include a sub-mode in which the encoding target vertex is encoded using a third triangle, each side of which has connectivity.
  • the submode may correspond to the condition of the third triangle, or may correspond to the condition of the apex of the third triangle.
  • the submode may correspond to the third triangle or the method for selecting the apex of the third triangle.
  • the normal mode may include multiple submodes. Then, when the normal mode is selected as the mode, the circuit 151 may select a submode for encoding the encoding target vertex from among the plurality of submodes. The circuit 151 may determine the first triangle or the vertex of the first triangle according to the submode. In other words, the submode may correspond to a method of selecting the first triangle or the apex of the first triangle.
  • a submode included in the exception mode may be expressed as an exception submode.
  • a submode included in the normal mode may be expressed as a normal submode.
  • a mode may be expressed as a process.
  • the normal mode, exception mode, and submode may also be expressed as normal processing, exception processing, and subprocessing.
  • the circuit 151 may encode the encoding target vertex by entropy encoding. Specifically, the circuit 151 may encode an angle indicating a 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.
  • the first triangle may be a reference triangle that is determined as a triangle close to the encoding target vertex according to the reference rule.
  • each of the vertices described above may be expressed by geometric coordinates in a three-dimensional mesh.
  • FIG. 63 is a flowchart illustrating an example of basic decoding processing according to this embodiment.
  • the circuit 251 of the decoding device 200 shown in FIG. 25 performs the decoding process shown in FIG. 63 in operation.
  • the circuit 251 selects one of the first mode sets from the first mode set including the normal mode in which the first triangle is used to decode the decoding target vertex of the second triangle. A mode for decoding a vertex to be decoded is selected (S262). On the other hand, if the first triangle does not satisfy the condition (No in S261), the circuit 251 sets a second mode set including 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. Select a mode from among them (S263).
  • the circuit 251 decodes the decoding target vertex according to the mode (S264).
  • the first triangle does not satisfy the condition, it may become possible to decode the vertex of the second triangle using a third triangle different from the first triangle. Therefore, it may be possible to decode the vertices of the second triangle using a reference triangle suitable for decoding.
  • the third triangle may be a triangle that shares a side with the first triangle. This may make it possible to use a third triangle in the vicinity of the first triangle used in the normal mode in the exceptional mode. Therefore, it may be possible to reduce the difference between normal mode and exception mode. Therefore, it may be possible to suppress variations in code amount.
  • the third triangle may be a triangle that shares a side with the second triangle. This may allow a third triangle in the vicinity of the second triangle to be used in the exception mode. Therefore, it may be possible to efficiently decode the decoding target vertex using the third triangle near the decoding target vertex.
  • the third triangle may be a triangle that shares an apex with the first triangle. This may make it possible to use a third triangle in the vicinity of the first triangle used in the normal mode in the exceptional mode. Therefore, it may be possible to reduce the difference between normal mode and exception mode. Therefore, it may be possible to suppress variations in code amount.
  • the third triangle may be a triangle in which each vertex has been decoded. This may make it possible to decode the decoding target vertex using the third triangle that reflects the characteristics of the three-dimensional mesh. Therefore, it may become possible to efficiently decode the decoding target vertex.
  • the third triangle may be a triangle in which each side has connectivity. This may make it possible to decode the decoding target vertex using the third triangle that reflects the characteristics of the three-dimensional mesh. Therefore, it may become possible to efficiently decode the decoding target vertex.
  • the third triangle may be a triangle having a dummy apex. This may make it possible to decode the decoding target vertex using the third triangle having an arbitrary vertex. Therefore, it may become possible to flexibly decode the decoding target vertex.
  • the exception mode may include multiple submodes. Then, when the exception mode is selected as the mode, the circuit 251 may select a submode for decoding the decoding target vertex from among the plurality of submodes. This may make it possible to decode a decoding target vertex according to a submode selected from a plurality of submodes in the exception mode. Therefore, it may be possible to decode a decoding target vertex according to an exception handling method that is adaptively selected from a plurality of exception handling methods.
  • the circuit 251 may decode a parameter indicating a submode. This may make it possible to share submode information for decoding a decoding target vertex between encoding device 100 and decoding device 200 according to the parameters. Therefore, it may be possible to apply the same submode for encoding and decoding according to the parameters.
  • the circuit 251 may determine the third triangle according to the submode. Thereby, by selecting a submode from among a plurality of submodes, it may be possible to select a third triangle suitable for decoding. Therefore, it may become possible to efficiently decode the decoding target vertex using the third triangle suitable for decoding.
  • the circuit 251 may determine the apex of the third triangle according to the submode. Thereby, by selecting a submode from among a plurality of submodes, it may be possible to select a vertex of the third triangle suitable for decoding. Therefore, it may become possible to efficiently decode the decoding target vertex using the third triangle suitable for decoding.
  • the condition may include that each vertex of the first triangle has been decoded.
  • each vertex of the first triangle has been decoded.
  • the condition may include that each side of the first triangle has connectivity. Thereby, it may be possible to suppress the use of a first triangle whose sides do not have connectivity in decoding the vertices of the second triangle. Then, it may become possible to use a mode suitable for decoding the vertex of the second triangle.
  • the circuit 251 may decode the angle indicating the decoding target vertex using the third triangle. This may make it possible to prevent the code amount from becoming too large. That is, it may be possible to suppress the worst case code amount.
  • first triangle and the second triangle may share a side.
  • the side shared by the first triangle and the second triangle may correspond to the opposite side of the decoding target vertex in the second triangle.
  • the third triangle may have a side that is shared by the first triangle and the second triangle. That is, 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.
  • the third triangle is not limited to such a triangle, and may have any side or any vertex of the first triangle, for example.
  • the normal mode may be a mode in which the decoding target vertex is decoded using the first triangle and one or more angles.
  • the exception mode may be a mode in which the target vertex is decoded using a third triangle and one or more angles.
  • the first mode set and the second mode set are different from each other.
  • the normal mode may not be included in the second mode set, but may be included only in the first mode set.
  • the exception mode may not be included in the first mode set, but may be included only in the second mode set.
  • the first mode set includes a mode for decoding the target vertex to be decoded using coordinates, a mode for decoding the target vertex for decoding using a parallelogram, and a mode for decoding the target vertex for decoding using a polynomial. It may contain at least one of these.
  • the parallelogram may be based on the first triangle.
  • the normal mode may be a mode in which the decoding target vertex is decoded using a parallelogram based on the first triangle.
  • the second mode set includes a mode in which a vertex to be decoded is decoded using coordinates, a mode in which a vertex to be decoded is decoded using a parallelogram, and a mode in which a vertex to be decoded is decoded using a polynomial. It may contain at least one of these.
  • the parallelogram may be based on the third triangle.
  • the exception mode may be a mode in which the decoding target vertex is decoded using a parallelogram based on the third triangle.
  • 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, if the first triangle satisfies the condition, the circuit 251 may decode the decoding target vertex according to the normal mode.
  • the second mode set may include only the exception mode.
  • the circuit 251 may then select an exception mode if the first triangle does not satisfy the condition. That is, if the first triangle does not satisfy the condition, the circuit 251 may decode the decoding target vertex according to the exception mode.
  • the circuit 251 may select a mode from a mode set including a normal mode and an exception mode.
  • 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 decoding target vertex according to the normal mode. Further, if the first triangle does not satisfy the condition, the circuit 251 may select an exception mode and decode the decoding target vertex according to the exception mode.
  • the plurality of submodes may include a submode in which the decoding target vertex is decoded using a third triangle having a dummy vertex.
  • the plurality of submodes may include a submode in which the decoding target vertex is decoded using a third triangle whose vertices have already been decoded.
  • the plurality of sub-modes may include a sub-mode in which the decoding target vertex is decoded using a third triangle whose sides have connectivity.
  • the submode may correspond to the condition of the third triangle, or may correspond to the condition of the apex of the third triangle.
  • the submode may correspond to the third triangle or the method for selecting the apex of the third triangle.
  • the normal mode may include multiple submodes. Then, when the normal mode is selected as the mode, the circuit 251 may select a submode for decoding the decoding target vertex from among the plurality of submodes. Circuit 251 may determine the first triangle or the vertex of the first triangle according to the submode. In other words, the submode may correspond to a method of selecting the first triangle or the apex of the first triangle.
  • a submode included in the exception mode may be expressed as an exception submode.
  • a submode included in the normal mode may be expressed as a normal submode.
  • a mode may be expressed as a process.
  • the normal mode, exception mode, and submode may also be expressed as normal processing, exception processing, and subprocessing.
  • the circuit 251 may decode the decoding target vertex by entropy decoding. Specifically, the circuit 251 may decode the angle indicating the decoding target vertex by entropy decoding. Also, for example, the circuit 251 may decode one, two, or three angles for identifying a vertex to be decoded.
  • the first triangle may be a reference triangle that is determined as a triangle close to the decoding target vertex according to the reference rule.
  • each of the vertices described above may be expressed by geometric coordinates in a three-dimensional mesh.
  • FIG. 64 is a block diagram showing yet another configuration example of the encoding device 100 according to the present embodiment.
  • the encoding device 100 includes a selector 171 and an encoding processor 172.
  • the selector 171 is, for example, an electric circuit.
  • the selector 171 may correspond to the above-described traverser 161, determiner 167, exception handler 168, etc., or may be implemented with the above-described circuit 151 and memory 152.
  • the encoding processor 172 is, for example, an electric circuit.
  • the encoding processor 172 may correspond to the angle deriving device 163, entropy encoder 166, etc. described above, or may be implemented with the circuit 151 and memory 152 described above.
  • the selector 171 selects a mode from the first mode set including the normal mode, and if the first triangle does not satisfy the condition, the selector 171 selects the mode from the second mode set including the exception mode. Select a mode from. Then, the encoding processor 172 encodes the encoding target vertices according to the mode.
  • the first triangle does not satisfy the condition, it may be possible to encode the vertex of the second triangle using a third triangle different from the first triangle. Therefore, it may be possible to encode the vertices of the second triangle using a reference triangle suitable for encoding.
  • FIG. 65 is a block diagram showing yet another configuration example of the decoding device 200 according to the present embodiment.
  • the decoding device 200 includes a selector 271 and a decoding processor 272.
  • the selector 271 is, for example, an electric circuit.
  • the selector 271 may correspond to the traverser 261, determiner 267, exception handler 268, etc. described above, or may be implemented with the circuit 251 and memory 252 described above.
  • the decoding processor 272 is, for example, an electric circuit.
  • the decoding processor 272 may correspond to the coordinate deriving device 264, entropy decoder 266, etc. described above, or may be implemented with the circuit 251 and memory 252 described above.
  • the selector 271 selects a mode from the first mode set including the normal mode, and if the first triangle does not satisfy the condition, the selector 271 selects a mode from the second mode set including the exception mode. Select a mode from. Then, the decoding processor 272 decodes the decoding target vertex according to the mode.
  • the first triangle does not satisfy the condition, it may become possible to decode the vertex of the second triangle using a third triangle different from the first triangle. Therefore, it may be possible to decode the vertices of the second triangle using a reference triangle suitable for decoding.
  • a process executed by a specific component in the embodiment may be executed by another component instead of the specific component.
  • the order of the plurality of processes may be changed, or the plurality of processes may be executed in parallel.
  • the encoding and decoding of the present disclosure can be applied to encoding and decoding of vertex information indicating the position of a vertex.
  • the encoding and decoding of the present disclosure is not limited to the vertices of a surface in a three-dimensional mesh, and may be applied to encoding and decoding of vertex information indicating the positions of other vertices.
  • each process of the present disclosure may be performed as one of a plurality of selectable processes.
  • At least some of the configurations of the present disclosure may be implemented as an integrated circuit. At least some of the multiple 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-temporary computer-readable recording medium may be used in which the program is recorded.
  • a bitstream for causing the decoding device 200 to perform decoding processing may be used.
  • At least a portion of the multiple configurations and multiple processes of the present disclosure may be used as a transmitting device, a receiving device, a transmitting method, and a receiving method.
  • a program for causing a computer to execute the transmitting method or the receiving method may be used.
  • a non-temporary computer-readable recording medium may be used in which the program is recorded.
  • the present disclosure is useful, for example, for 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.

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

符号化装置(100)は、メモリ(152)と、回路(151)とを備え、回路(151)は、動作において、第1三角形が条件を満たす場合、第1三角形を用いて第2三角形の符号化対象頂点を符号化する通常モードを含む第1モードセットの中から符号化対象頂点を符号化するためのモードを選択し、第1三角形が条件を満たさない場合、第1三角形とも第2三角形とも異なる第3三角形を用いて符号化対象頂点を符号化する例外モードを含む第2モードセットの中からモードを選択し、モードに従って符号化対象頂点を符号化する。

Description

符号化装置、復号装置、符号化方法及び復号方法
 本開示は、符号化装置等に関する。
 特許文献1において、三次元メッシュデータの符号化及び復号のための方法及び装置が提案されている。
特開2006-187015号公報
 三次元データの符号化処理等に関して更なる改善が望まれている。本開示は、三次元データの符号化処理等を改善することを目的とする。
 本開示の一態様に係る符号化装置は、メモリと、前記メモリにアクセス可能な回路とを備え、前記回路は、動作において、第1三角形が条件を満たす場合、前記第1三角形を用いて第2三角形の符号化対象頂点を符号化する通常モードを含む第1モードセットの中から前記符号化対象頂点を符号化するためのモードを選択し、前記第1三角形が前記条件を満たさない場合、前記第1三角形とも前記第2三角形とも異なる第3三角形を用いて前記符号化対象頂点を符号化する例外モードを含む第2モードセットの中から前記モードを選択し、前記モードに従って前記符号化対象頂点を符号化する。
 本開示は、三次元データの符号化処理等の改善に貢献し得る。
実施の形態に係る三次元メッシュを示す概念図である。 実施の形態に係る三次元メッシュの基本要素を示す概念図である。 実施の形態に係るマッピングを示す概念図である。 実施の形態に係る符号化復号システムの構成例を示すブロック図である。 実施の形態に係る符号化装置の構成例を示すブロック図である。 実施の形態に係る符号化装置の別の構成例を示すブロック図である。 実施の形態に係る復号装置の構成例を示すブロック図である。 実施の形態に係る復号装置の別の構成例を示すブロック図である。 実施の形態に係るビットストリームの構成例を示す概念図である。 実施の形態に係るビットストリームの別の構成例を示す概念図である。 実施の形態に係るビットストリームのさらに別の構成例を示す概念図である。 実施の形態に係る符号化復号システムの具体例を示すブロック図である。 実施の形態に係る点群データの構成例を示す概念図である。 実施の形態に係る点群データのデータファイル例を示す概念図である。 実施の形態に係るメッシュデータの構成例を示す概念図である。 実施の形態に係るメッシュデータのデータファイル例を示す概念図である。 実施の形態に係る三次元データの種類を示す概念図である。 実施の形態に係る三次元データ符号化器の構成例を示すブロック図である。 実施の形態に係る三次元データ復号器の構成例を示すブロック図である。 実施の形態に係る三次元データ符号化器の別の構成例を示すブロック図である。 実施の形態に係る三次元データ復号器の別の構成例を示すブロック図である。 実施の形態に係る符号化処理の具体例を示す概念図である。 実施の形態に係る復号処理の具体例を示す概念図である。 実施の形態に係る符号化装置の実装例を示すブロック図である。 実施の形態に係る復号装置の実装例を示すブロック図である。 参考例に係る平行四辺形予測方式を示す概念図である。 参考例に係る多項式予測方式を示す概念図である。 第1態様に係る符号化処理の例を示すフローチャートである。 第1態様に係る符号化処理の具体例を示すフローチャートである。 第1態様に係る符号化処理の別の具体例を示すフローチャートである。 第1態様に係る3つの角度の例を示す概念図である。 第1態様に係る3つの角度の別の例を示す概念図である。 第1態様に係る3つの角度のさらに別の例を示す概念図である。 第1態様に係る複数の頂点に対する頂点情報のシンタックス構造例を示すシンタックス図である。 第1態様に係る1つの頂点に対する頂点情報のシンタックス構造例を示すシンタックス図である。 第1態様に係る1つの頂点に対する頂点情報の別のシンタックス構造例を示すシンタックス図である。 角度の予測に用いられるテーブルの例を示すテーブル図である。 角度の予測に用いられるテーブルの別の例を示すテーブル図である。 前の三角形の頂点に対する角度を用いる予測の例を示す概念図である。 前の三次元メッシュの頂点に対する角度を用いる予測の例を示す概念図である。 第1態様に係る符号化装置の構成例を示すブロック図である。 第1態様に係る復号処理の例を示すフローチャートである。 第1態様に係る復号処理の具体例を示すフローチャートである。 第1態様に係る復号処理の別の具体例を示すフローチャートである。 サイン関数及びコサイン関数のルックアップテーブルの例を示すテーブル図である。 第1態様に係る復号装置の構成例を示すブロック図である。 第2態様に係る符号化処理の例を示すフローチャートである。 第2態様に係るメッシュの例を示す概念図である。 断片化されたメッシュの例を示す概念図である。 頂点が重複しているメッシュの例を示す概念図である。 過去に符号化された頂点セットを用いる例外処理の例を示す概念図である。 第2態様に係る符号化処理の具体例を示すフローチャートである。 第2態様に係る符号化装置の構成例を示すブロック図である。 第2態様に係る復号処理の例を示すフローチャートである。 第2態様に係る復号処理の具体例を示すフローチャートである。 第2態様に係る復号装置の構成例を示すブロック図である。 第2態様に係る例外処理の例を示すフローチャートである。 第2態様に係る符号化処理の別の例を示すフローチャートである。 第2態様に係る復号処理の別の例を示すフローチャートである。 ビットストリームにおけるパラメータの位置の例を示す概念図である。 ビットストリームにおけるパラメータの位置の別の例を示す概念図である。 実施の形態に係る基本的な符号化処理の例を示すフローチャートである。 実施の形態に係る基本的な復号処理の例を示すフローチャートである。 実施の形態に係る符号化装置のさらに別の構成例を示すブロック図である。 実施の形態に係る復号装置のさらに別の構成例を示すブロック図である。
 <序論(Introduction)>
 例えば、三次元メッシュは、コンピュータグラフィックス映像に用いられる。三次元メッシュは、三次元空間における複数の頂点のそれぞれの位置を示す頂点情報、複数の頂点の接続関係を示す接続情報、及び、各頂点又は各面の属性を示す属性情報で構成される。各面は、複数の頂点の接続関係に従って構築される。このような三次元メッシュによって、様々なコンピュータグラフィックス映像が表現され得る。
 また、三次元メッシュの伝送及び蓄積のため、三次元メッシュの効率的な符号化及び復号が期待される。例えば、符号化装置は、頂点情報を効率的に符号化するため、符号化済みの頂点の位置情報を用いて符号化対象の頂点の位置情報を予測し、予測に対する差分を符号化することにより、符号量を削減する。より具体的には、例えば、符号化装置は、参照三角形として第1三角形を参照して、第1三角形に隣接する第2三角形の頂点を符号化することで、符号量を削減する。
 しかしながら、第1三角形が参照三角形として適していない可能性がある。具体的には、第1三角形の頂点が符号化されていなかったり、第1三角形の辺が接続性を有していなかったりする可能性もある。このような第1三角形を参照して第2三角形の頂点が符号化されても、第2三角形の頂点の復号が困難になったり、符号量が削減されなかったりする可能性がある。
 そこで、例1の符号化装置は、メモリと、前記メモリにアクセス可能な回路とを備え、前記回路は、動作において、第1三角形が条件を満たす場合、前記第1三角形を用いて第2三角形の符号化対象頂点を符号化する通常モードを含む第1モードセットの中から前記符号化対象頂点を符号化するためのモードを選択し、前記第1三角形が前記条件を満たさない場合、前記第1三角形とも前記第2三角形とも異なる第3三角形を用いて前記符号化対象頂点を符号化する例外モードを含む第2モードセットの中から前記モードを選択し、前記モードに従って前記符号化対象頂点を符号化する。
 これにより、第1三角形が条件を満たさない場合、第1三角形とは異なる第3三角形を用いて第2三角形の頂点を符号化することが可能になる場合がある。したがって、符号化に適した参照三角形を用いて第2三角形の頂点を符号化することが可能になる場合がある。
 また、例2の符号化装置は、例1の符号化装置であって、前記第3三角形は、前記第1三角形と辺を共有する三角形である、符号化装置であってもよい。
 これにより、通常モードにおいて用いられる第1三角形の近辺の第3三角形を例外モードにおいて用いることが可能になる場合がある。したがって、通常モードと例外モードとの違いを小さくすることが可能になる場合がある。よって、符号量のばらつきを抑制することが可能になる場合がある。
 また、例3の符号化装置は、例1又は例2の符号化装置であって、前記第3三角形は、前記第2三角形と辺を共有する三角形である、符号化装置であってもよい。
 これにより、第2三角形の近辺の第3三角形を例外モードにおいて用いることが可能になる場合がある。したがって、符号化対象頂点の近辺の第3三角形を用いて効率的に符号化対象頂点を符号化することが可能になる場合がある。
 また、例4の符号化装置は、例1~例3のいずれかの符号化装置であって、前記第3三角形は、前記第1三角形と頂点を共有する三角形である、符号化装置であってもよい。
 これにより、通常モードにおいて用いられる第1三角形の近辺の第3三角形を例外モードにおいて用いることが可能になる場合がある。したがって、通常モードと例外モードとの違いを小さくすることが可能になる場合がある。よって、符号量のばらつきを抑制することが可能になる場合がある。
 また、例5の符号化装置は、例1~例4のいずれかの符号化装置であって、前記第3三角形は、各頂点が符号化済みである三角形である、符号化装置であってもよい。
 これにより、三次元メッシュの特性が反映された第3三角形を用いて符号化対象頂点を符号化することが可能になる場合がある。したがって、効率的に符号化対象頂点を符号化することが可能になる場合がある。
 また、例6の符号化装置は、例1~例5のいずれかの符号化装置であって、前記第3三角形は、各辺が接続性を有している三角形である、符号化装置であってもよい。
 これにより、三次元メッシュの特性が反映された第3三角形を用いて符号化対象頂点を符号化することが可能になる場合がある。したがって、効率的に符号化対象頂点を符号化することが可能になる場合がある。
 また、例7の符号化装置は、例1~例4のいずれかの符号化装置であって、前記第3三角形は、ダミーの頂点を有する三角形である、符号化装置であってもよい。
 これにより、任意の頂点を有する第3三角形を用いて符号化対象頂点を符号化することが可能になる場合がある。したがって、柔軟に符号化対象頂点を符号化することが可能になる場合がある。
 また、例8の符号化装置は、例1~例7のいずれかの符号化装置であって、前記例外モードは、複数のサブモードを含み、前記回路は、さらに、前記モードとして前記例外モードが選択される場合、前記複数のサブモードの中から、前記符号化対象頂点を符号化するためのサブモードを選択する、符号化装置であってもよい。
 これにより、例外モードにおいて複数のサブモードの中から選択されるサブモードに従って符号化対象頂点を符号化することが可能になる場合がある。したがって、複数の例外処理方法の中から適応的に選択される例外処理方法に従って符号化対象頂点を符号化することが可能になる場合がある。
 また、例9の符号化装置は、例8の符号化装置であって、前記回路は、前記サブモードを示すパラメータを符号化する、符号化装置であってもよい。
 これにより、符号化対象頂点を符号化するためのサブモードの情報をパラメータに従って符号化装置と復号装置との間で共有することが可能になる場合がある。したがって、パラメータに従って、符号化及び復号に同じサブモードを適用することが可能になる場合がある。
 また、例10の符号化装置は、例8又は例9の符号化装置であって、前記回路は、前記サブモードに従って、前記第3三角形を決定する、符号化装置であってもよい。
 これにより、複数のサブモードの中からサブモードを選択することで、符号化に適した第3三角形を選択することが可能になる場合がある。よって、符号化に適した第3三角形を用いて符号化対象頂点を効率的に符号化することが可能になる場合がある。
 また、例11の符号化装置は、例8~例10のいずれかの符号化装置であって、前記回路は、前記サブモードに従って、前記第3三角形の頂点を決定する、符号化装置であってもよい。
 これにより、複数のサブモードの中からサブモードを選択することで、符号化に適した第3三角形の頂点を選択することが可能になる場合がある。よって、符号化に適した第3三角形を用いて符号化対象頂点を効率的に符号化することが可能になる場合がある。
 また、例12の符号化装置は、例1~例11のいずれかの符号化装置であって、前記条件は、前記第1三角形の各頂点が符号化済みであることを含む、符号化装置であってもよい。
 これにより、第2三角形の頂点の符号化に、いずれかの頂点が符号化済みでない第1三角形が用いられることを抑制することが可能になる場合がある。そして、第2三角形の頂点の符号化に適したモードを用いることが可能になる場合がある。
 また、例13の符号化装置は、例1~例12のいずれかの符号化装置であって、前記条件は、前記第1三角形の各辺が接続性を有していることを含む、符号化装置であってもよい。
 これにより、第2三角形の頂点の符号化に、いずれかの辺が接続性を有していない第1三角形が用いられることを抑制することが可能になる場合がある。そして、第2三角形の頂点の符号化に適したモードを用いることが可能になる場合がある。
 また、例14の符号化装置は、例1~例13のいずれかの符号化装置であって、前記回路は、前記例外モードに従って前記符号化対象頂点を符号化する場合、前記第3三角形を用いて前記符号化対象頂点を示す角度を符号化する、符号化装置であってもよい。
 これにより、符号量が大きくなり過ぎることを抑制することが可能になる場合がある。すなわち、ワーストケースの符号量を抑制することが可能になる場合がある。
 また、例15の復号装置は、メモリと、前記メモリにアクセス可能な回路とを備え、前記回路は、動作において、第1三角形が条件を満たす場合、前記第1三角形を用いて第2三角形の復号対象頂点を復号する通常モードを含む第1モードセットの中から前記復号対象頂点を復号するためのモードを選択し、前記第1三角形が前記条件を満たさない場合、前記第1三角形とも前記第2三角形とも異なる第3三角形を用いて前記復号対象頂点を復号する例外モードを含む第2モードセットの中から前記モードを選択し、前記モードに従って前記復号対象頂点を復号する。
 これにより、第1三角形が条件を満たさない場合、第1三角形とは異なる第3三角形を用いて第2三角形の頂点を復号することが可能になる場合がある。したがって、復号に適した参照三角形を用いて第2三角形の頂点を復号することが可能になる場合がある。
 また、例16の復号装置は、例15の復号装置であって、前記第3三角形は、前記第1三角形と辺を共有する三角形である、復号装置であってもよい。
 これにより、通常モードにおいて用いられる第1三角形の近辺の第3三角形を例外モードにおいて用いることが可能になる場合がある。したがって、通常モードと例外モードとの違いを小さくすることが可能になる場合がある。よって、符号量のばらつきを抑制することが可能になる場合がある。
 また、例17の復号装置は、例15又は例16の復号装置であって、前記第3三角形は、前記第2三角形と辺を共有する三角形である、復号装置であってもよい。
 これにより、第2三角形の近辺の第3三角形を例外モードにおいて用いることが可能になる場合がある。したがって、復号対象頂点の近辺の第3三角形を用いて効率的に復号対象頂点を復号することが可能になる場合がある。
 また、例18の復号装置は、例15~例17のいずれかの復号装置であって、前記第3三角形は、前記第1三角形と頂点を共有する三角形である、復号装置であってもよい。
 これにより、通常モードにおいて用いられる第1三角形の近辺の第3三角形を例外モードにおいて用いることが可能になる場合がある。したがって、通常モードと例外モードとの違いを小さくすることが可能になる場合がある。よって、符号量のばらつきを抑制することが可能になる場合がある。
 また、例19の復号装置は、例15~例18のいずれかの復号装置であって、前記第3三角形は、各頂点が復号済みである三角形である、復号装置であってもよい。
 これにより、三次元メッシュの特性が反映された第3三角形を用いて復号対象頂点を復号することが可能になる場合がある。したがって、効率的に復号対象頂点を復号することが可能になる場合がある。
 また、例20の復号装置は、例15~例19のいずれかの復号装置であって、前記第3三角形は、各辺が接続性を有している三角形である、復号装置であってもよい。
 これにより、三次元メッシュの特性が反映された第3三角形を用いて復号対象頂点を復号することが可能になる場合がある。したがって、効率的に復号対象頂点を復号することが可能になる場合がある。
 また、例21の復号装置は、例15~例17のいずれかの復号装置であって、前記第3三角形は、ダミーの頂点を有する三角形である、復号装置であってもよい。
 これにより、任意の頂点を有する第3三角形を用いて復号対象頂点を復号することが可能になる場合がある。したがって、柔軟に復号対象頂点を復号することが可能になる場合がある。
 また、例22の復号装置は、例15~例21のいずれかの復号装置であって、前記例外モードは、複数のサブモードを含み、前記回路は、さらに、前記モードとして前記例外モードが選択される場合、前記複数のサブモードの中から、前記復号対象頂点を復号するためのサブモードを選択する、復号装置であってもよい。
 これにより、例外モードにおいて複数のサブモードの中から選択されるサブモードに従って復号対象頂点を復号することが可能になる場合がある。したがって、複数の例外処理方法の中から適応的に選択される例外処理方法に従って復号対象頂点を復号することが可能になる場合がある。
 また、例23の復号装置は、例22の復号装置であって、前記回路は、前記サブモードを示すパラメータを復号する、復号装置であってもよい。
 これにより、復号対象頂点を復号するためのサブモードの情報をパラメータに従って符号化装置と復号装置との間で共有することが可能になる場合がある。したがって、パラメータに従って、符号化及び復号に同じサブモードを適用することが可能になる場合がある。
 また、例24の復号装置は、例22又は例23の復号装置であって、前記回路は、前記サブモードに従って、前記第3三角形を決定する、復号装置であってもよい。
 これにより、複数のサブモードの中からサブモードを選択することで、復号に適した第3三角形を選択することが可能になる場合がある。よって、復号に適した第3三角形を用いて復号対象頂点を効率的に復号することが可能になる場合がある。
 また、例25の復号装置は、例22~例24のいずれかの復号装置であって、前記回路は、前記サブモードに従って、前記第3三角形の頂点を決定する、復号装置であってもよい。
 これにより、複数のサブモードの中からサブモードを選択することで、復号に適した第3三角形の頂点を選択することが可能になる場合がある。よって、復号に適した第3三角形を用いて復号対象頂点を効率的に復号することが可能になる場合がある。
 また、例26の復号装置は、例15~例25のいずれかの復号装置であって、前記条件は、前記第1三角形の各頂点が復号済みであることを含む、復号装置であってもよい。
 これにより、第2三角形の頂点の復号に、いずれかの頂点が復号済みでない第1三角形が用いられることを抑制することが可能になる場合がある。そして、第2三角形の頂点の復号に適したモードを用いることが可能になる場合がある。
 また、例27の復号装置は、例15~例26のいずれかの復号装置であって、前記条件は、前記第1三角形の各辺が接続性を有していることを含む、復号装置であってもよい。
 これにより、第2三角形の頂点の復号に、いずれかの辺が接続性を有していない第1三角形が用いられることを抑制することが可能になる場合がある。そして、第2三角形の頂点の復号に適したモードを用いることが可能になる場合がある。
 また、例28の復号装置は、例15~例27のいずれかの復号装置であって、前記回路は、前記例外モードに従って前記復号対象頂点を復号する場合、前記第3三角形を用いて前記復号対象頂点を示す角度を復号する、復号装置であってもよい。
 これにより、符号量が大きくなり過ぎることを抑制することが可能になる場合がある。すなわち、ワーストケースの符号量を抑制することが可能になる場合がある。
 また、例29の符号化方法は、第1三角形が条件を満たす場合、前記第1三角形を用いて第2三角形の符号化対象頂点を符号化する通常モードを含む第1モードセットの中から前記符号化対象頂点を符号化するためのモードを選択するステップと、前記第1三角形が前記条件を満たさない場合、前記第1三角形とも前記第2三角形とも異なる第3三角形を用いて前記符号化対象頂点を符号化する例外モードを含む第2モードセットの中から前記モードを選択するステップと、前記モードに従って前記符号化対象頂点を符号化するステップとを含む。
 これにより、第1三角形が条件を満たさない場合、第1三角形とは異なる第3三角形を用いて第2三角形の頂点を符号化することが可能になる場合がある。したがって、符号化に適した参照三角形を用いて第2三角形の頂点を符号化することが可能になる場合がある。
 また、例30の復号方法は、第1三角形が条件を満たす場合、前記第1三角形を用いて第2三角形の復号対象頂点を復号する通常モードを含む第1モードセットの中から前記復号対象頂点を復号するためのモードを選択するステップと、前記第1三角形が前記条件を満たさない場合、前記第1三角形とも前記第2三角形とも異なる第3三角形を用いて前記復号対象頂点を復号する例外モードを含む第2モードセットの中から前記モードを選択するステップと、前記モードに従って前記復号対象頂点を復号するステップとを含む、復号方法であってもよい。
 これにより、第1三角形が条件を満たさない場合、第1三角形とは異なる第3三角形を用いて第2三角形の頂点を復号することが可能になる場合がある。したがって、復号に適した参照三角形を用いて第2三角形の頂点を復号することが可能になる場合がある。
 さらに、これらの包括的又は具体的な態様は、システム、装置、方法、集積回路、コンピュータプログラム、又は、コンピュータ読み取り可能なCD-ROMなどの非一時的な記録媒体で実現されてもよく、システム、装置、方法、集積回路、コンピュータプログラム、及び、記録媒体の任意な組み合わせで実現されてもよい。
 <表現及び用語>
 ここでは、以下のような表現及び用語が用いられる。
 (1)三次元メッシュ
 三次元メッシュは、複数の面の集合であり、例えば、三次元物体を示す。また、三次元メッシュは、主に、頂点情報、接続情報及び属性情報で構成される。三次元メッシュは、ポリゴンメッシュ又はメッシュと表現される場合がある。また、三次元メッシュは、時間的な変化を有していてもよい。三次元メッシュは、頂点情報、接続情報及び属性情報に関するメタデータを含んでいてもよいし、その他の付加情報を含んでいてもよい。
 (2)頂点情報
 頂点情報は、頂点(Vertex)を示す情報である。例えば、頂点情報は、三次元空間における頂点の位置を示す。また、頂点は、三次元メッシュを構成する面の頂点に対応する。頂点情報は、「Geometory(ジオメトリ)」と表現される場合がある。また、頂点情報は、位置情報と表現される場合もある。
 (3)接続情報
 接続情報は、頂点間の接続を示す情報である。例えば、接続情報は、三次元メッシュの面又は辺を構成するための接続を示す。接続情報は、「Connectivity(コネクティビティ)」と表現される場合がある。また、接続情報は、面情報と表現される場合もある。
 (4)属性情報
 属性情報は、頂点又は面の属性を示す情報である。例えば、属性情報は、頂点又は面に対応付けられる色、画像及び法線ベクトル等の属性を示す。属性情報は、「Texture(テクスチャ)」と表現される場合がある。
 (5)面
 面は、三次元メッシュを構成する要素である。具体的には、面は、三次元空間における平面上のポリゴンである。例えば、面は、三次元空間における三角形として定められ得る。
 (6)平面
 平面は、三次元空間における二次元平面である。例えば、平面上にポリゴンが形成され、複数の平面上に複数のポリゴンが形成される。
 (7)ビットストリーム
 ビットストリームは、符号化された情報に対応する。ビットストリームは、ストリーム、符号化ビットストリーム、圧縮ビットストリーム、又は、符号化信号とも表現され得る。
 (8)符号化及び復号
 符号化するという表現は、格納する、含める、書き込む、記述する、信号化する、送り出す、通知する、保存する、又は、圧縮する等の表現に置き換えられてもよく、これらの表現が相互に置き換えられてもよい。例えば、情報を符号化することは、ビットストリームに情報を含めることであってもよい。また、情報をビットストリームに符号化することは、情報を符号化して、符号化された情報を含むビットストリームを生成することを意味してもよい。
 また、復号するという表現は、読み出す、読み解く、読み取る、読み込む、導出する、取得する、受け取る、抽出する、復元する、再構成する、圧縮解除する、又は、伸張する等の表現に置き換えられてもよく、これらの表現が相互に置き換えられてもよい。例えば、情報を復号することは、ビットストリームから情報を取得することであってもよい。また、ビットストリームから情報を復号することは、ビットストリームを復号して、ビットストリームに含まれる情報を取得することを意味してもよい。
 (9)序数
 説明において、第1及び第2等の序数が、構成要素などに対して付けられる場合がある。これらの序数は、適宜、付け替えられてもよい。また、構成要素などに対して、序数が新たに与えられてもよいし、取り除かれてもよい。また、これらの序数は、要素を識別するため、要素に付けられる場合があり、意味のある順序に対応しない場合がある。
 <三次元メッシュ>
 図1は、本実施の形態に係る三次元メッシュを示す概念図である。三次元メッシュは、複数の面で構成される。例えば、各面は、三角形である。これらの三角形の頂点は、三次元空間において定められる。そして、三次元メッシュは、三次元物体を示す。各面は、色又は画像を有していてもよい。
 図2は、本実施の形態に係る三次元メッシュの基本要素を示す概念図である。三次元メッシュは、頂点情報、接続情報及び属性情報で構成される。頂点情報は、三次元空間における面の頂点の位置を示す。接続情報は、頂点間の接続を示す。頂点情報及び接続情報によって面が特定され得る。つまり、頂点情報及び接続情報によって、色を有していない三次元物体が三次元空間に形成される。
 属性情報は、頂点に対応付けられていてもよいし、面に対応付けられていてもよい。頂点に対応付けられた属性情報は、「Attribute Per Point」と表現される場合がある。頂点に対応付けられた属性情報は、頂点自体の属性を示していてもよいし、頂点に接続される面の属性を示してもよい。
 例えば、頂点に色が属性情報として対応付けられていてもよい。頂点に対応づけられた色は、頂点の色であってもよいし、頂点に接続される面の色であってもよい。面の色は、面の複数の頂点に対応付けられた複数の色の平均であってもよい。また、頂点又は面に法線ベクトルが属性情報として対応付けられていてもよい。このような法線ベクトルは、面の表及び裏を表現し得る。
 また、面に二次元画像が属性情報として対応付けられていてもよい。面に対応づけられる二次元画像は、テクスチャ画像、又は、「Attribute Map」とも表現される。また、面と二次元画像とのマッピングを示す情報が属性情報として面に対応付けられていてもよい。このようなマッピングを示す情報は、マッピング情報、テクスチャ画像の頂点情報、又は、「Attribute UV Coordinate」と表現される場合がある。
 さらに、属性情報として用いられる色、画像及び動画像等の情報は、「Parametric Space」と表現される場合がある。
 このような属性情報によって、三次元物体にテクスチャが反映され得る。すなわち、頂点情報、接続情報及び属性情報によって、色を有する三次元物体が三次元空間に形成される。
 なお、上記において、属性情報は、頂点又は面に対応付けられているが、辺に対応付けられていてもよい。
 図3は、本実施の形態に係るマッピングを示す概念図である。例えば、三次元空間における三次元メッシュの面に、二次元平面における二次元画像の領域がマッピングされ得る。具体的には、三次元メッシュの面に対して、二次元画像における領域の座標情報が対応付けられる。これにより、三次元メッシュの面に、二次元画像においてマッピングされた領域の画像が反映される。
 マッピングが用いられることにより、属性情報として用いられる二次元画像が三次元メッシュから分離され得る。例えば、三次元メッシュの符号化において、二次元画像は、画像符号化方式又は映像符号化方式によって、符号化されてもよい。
 <システム構成>
 図4は、本実施の形態に係る符号化復号システムの構成例を示すブロック図である。図4において、符号化復号システムは、符号化装置100及び復号装置200を備える。
 例えば、符号化装置100は、三次元メッシュを取得し、三次元メッシュをビットストリームに符号化する。そして、符号化装置100は、ビットストリームをネットワーク300に出力する。例えば、ビットストリームには、符号化された三次元メッシュと、符号化された三次元メッシュを復号するための制御情報とが含まれる。三次元メッシュが符号化されることによって、三次元メッシュの情報が圧縮される。
 ネットワーク300は、ビットストリームを符号化装置100から復号装置200へ伝送する。ネットワーク300は、インターネット、広域ネットワーク(WAN:Wide Area Network)、小規模ネットワーク(LAN:Local Area Network)、又は、これらの組み合わせであってもよい。ネットワーク300は、必ずしも双方向の通信に限らず、地上デジタル放送又は衛星放送等のための一方向の通信網であってもよい。
 また、ネットワーク300は、DVD(Digital Versatile Disc)、又は、BD(Blu-Ray Disc(登録商標))等の記録媒体によって代替され得る。
 復号装置200は、ビットストリームを取得し、ビットストリームから三次元メッシュを復号する。三次元メッシュの復号によって、三次元メッシュの情報は伸張される。例えば、復号装置200は、符号化装置100が三次元メッシュを符号化するための符号化方法に対応する復号方法に従って三次元メッシュを復号する。すなわち、符号化装置100及び復号装置200は、互いに対応する符号化方法及び復号方法に従って、符号化及び復号を行う。
 なお、符号化前の三次元メッシュは、原三次元メッシュとも表現され得る。また、復号後の三次元メッシュは、再構成三次元メッシュとも表現される。
 <符号化装置>
 図5は、本実施の形態に係る符号化装置100の構成例を示すブロック図である。例えば、符号化装置100は、頂点情報符号化器101、接続情報符号化器102及び属性情報符号化器103を備える。
 頂点情報符号化器101は、頂点情報を符号化する電気回路である。例えば、頂点情報符号化器101は、頂点情報に対して規定された形式に従って頂点情報をビットストリームに符号化する。
 接続情報符号化器102は、接続情報を符号化する電気回路である。例えば、接続情報符号化器102は、接続情報に対して規定された形式に従って接続情報をビットストリームに符号化する。
 属性情報符号化器103は、属性情報を符号化する電気回路である。例えば、属性情報符号化器103は、属性情報に対して規定された形式に従って属性情報をビットストリームに符号化する。
 頂点情報、接続情報及び属性情報の符号化には、可変長符号化が用いられてもよいし、固定長符号化が用いられてもよい。可変長符号化は、ハフマン符号化又はコンテキスト適応型二値算術符号化(CABAC)等に対応していてもよい。
 頂点情報符号化器101、接続情報符号化器102及び属性情報符号化器103は、一体化されていてもよい。あるいは、頂点情報符号化器101、接続情報符号化器102及び属性情報符号化器103のそれぞれが、より細かく複数の構成要素に細分化されていてもよい。
 図6は、本実施の形態に係る符号化装置100の別の構成例を示すブロック図である。例えば、符号化装置100は、図5に示された構成に加えて、前処理器104及び後処理器105を備える。
 前処理器104は、頂点情報、接続情報及び属性情報の符号化前に、処理を行う電気回路である。例えば、前処理器104は、符号化前の三次元メッシュに対して、変換処理、分離処理、又は、多重化処理等を行ってもよい。より具体的には、例えば、前処理器104は、符号化前の三次元メッシュから頂点情報、接続情報及び属性情報を分離してもよい。
 後処理器105は、頂点情報、接続情報及び属性情報の符号化後に、処理を行う電気回路である。例えば、後処理器105は、符号化後の頂点情報、接続情報及び属性情報に対して、変換処理、分離処理、又は、多重化処理等を行ってもよい。より具体的には、例えば、後処理器105は、符号化後の頂点情報、接続情報及び属性情報をビットストリームに多重化してもよい。また、例えば、後処理器105は、符号化後の頂点情報、接続情報及び属性情報に対して、さらに可変長符号化を行ってもよい。
 <復号装置>
 図7は、本実施の形態に係る復号装置200の構成例を示すブロック図である。例えば、復号装置200は、頂点情報復号器201、接続情報復号器202及び属性情報復号器203を備える。
 頂点情報復号器201は、頂点情報を復号する電気回路である。例えば、頂点情報復号器201は、頂点情報に対して規定された形式に従って頂点情報をビットストリームから復号する。
 接続情報復号器202は、接続情報を復号する電気回路である。例えば、接続情報復号器202は、接続情報に対して規定された形式に従って接続情報をビットストリームから復号する。
 属性情報復号器203は、属性情報を復号する電気回路である。例えば、属性情報復号器203は、属性情報に対して規定された形式に従って属性情報をビットストリームから復号する。
 頂点情報、接続情報及び属性情報の復号には、可変長復号が用いられてもよいし、固定長復号が用いられてもよい。可変長復号は、ハフマン符号化又はコンテキスト適応型二値算術符号化(CABAC)等に対応していてもよい。
 頂点情報復号器201、接続情報復号器202及び属性情報復号器203は、一体化されていてもよい。あるいは、頂点情報復号器201、接続情報復号器202及び属性情報復号器203のそれぞれが、より細かく複数の構成要素に細分化されていてもよい。
 図8は、本実施の形態に係る復号装置200の別の構成例を示すブロック図である。例えば、復号装置200は、図7に示された構成に加えて、前処理器204及び後処理器205を備える。
 前処理器204は、頂点情報、接続情報及び属性情報の復号前に、処理を行う電気回路である。例えば、前処理器204は、頂点情報、接続情報及び属性情報の復号前に、ビットストリームに対して、変換処理、分離処理、又は、多重化処理等を行ってもよい。
 より具体的には、例えば、前処理器204は、ビットストリームから、頂点情報に対応するサブビットストリーム、接続情報に対応するサブビットストリーム、及び、属性情報に対応するサブビットストリームを分離してもよい。また、例えば、前処理器204は、頂点情報、接続情報及び属性情報の復号前に、事前にビットストリームに対して可変長復号を行ってもよい。
 後処理器205は、頂点情報、接続情報及び属性情報の復号後に、処理を行う電気回路である。例えば、後処理器205は、復号後の頂点情報、接続情報及び属性情報に対して、変換処理、分離処理、又は、多重化処理等を行ってもよい。より具体的には、例えば、後処理器205は、復号後の頂点情報、接続情報及び属性情報を三次元メッシュに多重化してもよい。
 <ビットストリーム>
 頂点情報、接続情報及び属性情報は、符号化されて、ビットストリームに格納される。これらの情報とビットストリームの関係を以下に示す。
 図9は、本実施の形態に係るビットストリームの構成例を示す概念図である。この例において、頂点情報、接続情報及び属性情報は、ビットストリームにおいて一体化される。例えば、頂点情報、接続情報及び属性情報は、1つのファイルに含まれていてもよい。
 また、頂点情報の第1部分、接続情報の第1部分、属性情報の第1部分、頂点情報の第2部分、接続情報の第2部分、属性情報の第2部分、・・・のように、これらの情報の複数の部分が順次格納されてもよい。これらの複数の部分は、時間的に異なる複数の部分に対応していてもよいし、空間的に異なる複数の部分に対応していてもよいし、異なる複数の面に対応していてもよい。
 また、頂点情報、接続情報及び属性情報の格納順序は、上記の例に限られず、上記の例とは異なる格納順序が用いられてもよい。
 図10は、本実施の形態に係るビットストリームの別の構成例を示す概念図である。この例において、複数のファイルがビットストリームに含まれ、頂点情報、接続情報及び属性情報が、それぞれ異なるファイルに格納される。ここでは、頂点情報を含むファイルと、接続情報を含むファイルと、属性情報を含むファイルとが示されているが、格納形式は、このような例に限られない。例えば、頂点情報、接続情報及び属性情報のうち2種類の情報が、1つのファイルに含まれ、残りの1種類の情報が、別のファイルに含まれてもよい。
 あるいは、これらの情報は、より多くのファイルに分割して格納されてもよい。例えば、頂点情報の複数の部分が複数のファイルに格納されてもよいし、接続情報の複数の部分が複数のファイルに格納されてもよいし、属性情報の複数の部分が複数のファイルに格納されてもよい。これらの複数の部分は、時間的に異なる複数の部分に対応していてもよいし、空間的に異なる複数の部分に対応していてもよいし、異なる複数の面に対応していてもよい。
 また、頂点情報、接続情報及び属性情報の格納順序は、上記の例に限られず、上記の例とは異なる格納順序が用いられてもよい。
 図11は、本実施の形態に係るビットストリームの別の構成例を示す概念図である。この例において、分離可能な複数のサブビットストリームによってビットストリームが構成され、頂点情報、接続情報及び属性情報が、それぞれ異なるサブビットストリームに格納される。
 ここでは、頂点情報を含むサブビットストリームと、接続情報を含むサブビットストリームと、属性情報を含むサブビットストリームとが示されているが、格納形式は、このような例に限られない。
 例えば、頂点情報、接続情報及び属性情報のうち2種類の情報が、1つのサブビットストリームに含まれ、残りの1種類の情報が、別のサブビットストリームに含まれてもよい。具体的には、二次元画像等の属性情報が、頂点情報及び接続情報のサブビットストリームとは別に、画像符号化方式に準拠するサブビットストリームに格納されてもよい。
 また、各サブビットストリームに複数のファイルが含まれていてもよい。そして、頂点情報の複数の部分が複数のファイルに格納されてもよいし、接続情報の複数の部分が複数のファイルに格納されてもよいし、属性情報の複数の部分が複数のファイルに格納されてもよい。
 <具体例>
 図12は、本実施の形態に係る符号化復号システムの具体例を示すブロック図である。図12において、符号化復号システムは、三次元データ符号化システム110、三次元データ復号システム210及び外部接続器310を備える。
 三次元データ符号化システム110は、制御器111、入出力処理器112、三次元データ符号化器113、三次元データ生成器115、及び、システム多重化器114を備える。三次元データ復号システム210は、制御器211、入出力処理器212、三次元データ復号器213、システム逆多重化器214、提示器215、及び、ユーザインタフェース216を備える。
 三次元データ符号化システム110では、センサ端末から三次元データ生成器115にセンサデータが入力される。三次元データ生成器115は、センサデータから、点群データ又はメッシュデータ等である三次元データを生成し、三次元データ符号化器113へ入力する。
 例えば、三次元データ生成器115は、頂点情報を生成し、頂点情報に対応する接続情報及び属性情報を生成する。三次元データ生成器115は、接続情報及び属性情報を生成する際に、頂点情報を加工してもよい。例えば、三次元データ生成器115は、重複する頂点を削除することでデータ量を減らしたり、頂点情報の変換(位置シフト、回転又は正規化など)を行ったりしてもよい。また、三次元データ生成器115は、属性情報をレンダリングしてもよい。
 また、三次元データ生成器115は、図12において三次元データ符号化システム110の構成要素であるが、三次元データ符号化システム110から独立して外部に配置されてもよい。
 三次元データを生成するためのセンサデータを提供するセンサ端末は、例えば、自動車などの移動体、飛行機などの飛行物体、携帯端末、又は、カメラ等であってもよい。また、LIDAR、ミリ波レーダ、赤外線センサ又はレンジファインダなどの距離センサ、ステレオカメラ、あるいは、複数の単眼カメラの組み合わせ等がセンサ端末として用いられてもよい。
 センサデータは、対象物の距離(位置)、単眼カメラ画像、ステレオカメラ画像、色、反射率、センサの姿勢、向き、ジャイロ、センシング位置(GPS情報又は高度)、速度、加速度、センシング時刻、気温、気圧、湿度、又は、磁気などであってもよい。
 三次元データ符号化器113は、図5等に示された符号化装置100に対応する。例えば、三次元データ符号化器113は、三次元データを符号化し、符号化データを生成する。また、三次元データ符号化器113は、三次元データの符号化において、制御情報を生成する。そして、三次元データ符号化器113は、符号化データを制御情報と共にシステム多重化器114へ入力する。
 三次元データの符号化方式は、ジオメトリを用いる符号化方式であってもよいし、ビデオコーデックを用いる符号化方式であってもよい。ここでは、ジオメトリを用いる符号化方式は、ジオメトリベース符号化方式とも表現され得る。ビデオコーデックを用いる符号化方式は、ビデオベース符号化方式とも表現される。
 システム多重化器114は、三次元データ符号化器113から入力された符号化データ及び制御情報を多重化し、規定の多重化方式を用いて多重化データを生成する。システム多重化器114は、三次元データの符号化データ及び制御情報と共に、映像、音声、字幕、アプリケーションデータ又はドキュメントファイルなどの他のメディア、あるいは、基準時刻情報等を多重化してもよい。さらに、システム多重化器114は、センサデータ又は三次元データに関連する属性情報を多重化してもよい。
 例えば、多重化データは、蓄積のためのファイル形式、又は、伝送のためのパケット形式等を有する。これらの方式として、ISOBMFF、又は、ISOBMFFベースの方式が用いられてもよい。また、MPEG-DASH、MMT、MPEG-2 TS Systems、又は、RTPなどが用いられてもよい。
 そして、多重化データは、入出力処理器112によって外部接続器310へ伝送信号として出力される。多重化データは、伝送信号として、有線によって伝送されてもよいし、無線によって伝送されてもよい。あるいは、多重化データは、内部メモリ又は記憶装置に蓄積される。多重化データは、インターネット経由でクラウドサーバに伝送されてもよいし、外部記憶装置に記憶されてもよい。
 例えば、多重化データの伝送又は蓄積は、放送又は通信など、伝送又は蓄積のための媒体に応じた方法で行われる。通信プロトコルとして、http、ftp、TCP、UDP、IP、又は、これらの組み合わせなどが用いられてもよい。また、PULL型の通信方式が用いられてもよいし、PUSH型の通信方式を用いられてもよい。
 有線の伝送に、Ethernet(登録商標)、USB、RS-232C、HDMI(登録商標)又は同軸ケーブルなどが用いられてもよい。また、無線の伝送に、3GPP(登録商標)、IEEEで規定される3G/4G/5G、無線LAN、Wi-Fi、Bluetooth、又は、ミリ波が用いられてもよい。また、放送の方式として、例えばDVB-T2、DVB-S2、DVB-C2、ATSC3.0、又は、ISDB-S3などが用いられてもよい。
 なお、センサデータが、三次元データ生成器115又はシステム多重化器114へ入力されてもよい。また、三次元データ又は符号化データが、入出力処理器112を介して外部接続器310へそのまま伝送信号として出力されてもよい。三次元データ符号化システム110から出力された伝送信号は、外部接続器310を介して、三次元データ復号システム210に入力される。
 また、三次元データ符号化システム110の各動作は、アプリケーションプログラムを実行する制御器111によって制御されてもよい。
 三次元データ復号システム210では、入出力処理器212に伝送信号が入力される。入出力処理器212は、伝送信号から、ファイル形式又はパケット形式を有する多重化データを復号し、多重化データをシステム逆多重化器214へ入力する。システム逆多重化器214は、多重化データから符号化データ及び制御情報を取得し、三次元データ復号器213へ入力する。システム逆多重化器214は、多重化データから他のメディア又は基準時刻情報などを抽出してもよい。
 三次元データ復号器213は、図7等に示された復号装置200に対応する。例えば、三次元データ復号器213は、符号化データから、予め規定された符号化方式に基づいて三次元データを復号する。その後、三次元データは、提示器215によってユーザに提示される。
 また、センサデータなどの付加情報が提示器215へ入力されてもよい。提示器215は、付加情報に基づいて三次元データを提示してもよい。また、ユーザ端末からユーザインタフェース216へユーザの指示が入力されてもよい。そして、提示器215は、入力された指示に基づいて三次元データを提示してもよい。
 なお、入出力処理器212は、外部接続器310から三次元データ及び符号化データを取得してもよい。
 また、三次元データ復号システム210の各動作は、アプリケーションプログラムを実行する制御器211によって制御されてもよい。
 図13は、本実施の形態に係る点群データの構成例を示す概念図である。点群データは、三次元物体を示す点群のデータである。
 具体的には、点群(Point Cloud)は、複数の点で構成され、各点の三次元座標位置(Position)を示す位置情報、及び、各点の属性(Attribute)を示す属性情報を有する。位置情報は、ジオメトリ(Geometry)とも表現される。
 属性情報の種別は、例えば色又は反射率などであってもよい。1つの点に、1つの種別に関する属性情報に対応付けられていてもよいし、1つの点に、複数の異なる種別に関する属性情報に対応付けられていてもよいし、1つの点に、同じ種別に関して複数の値を有する属性情報に対応付けられていてもよい。
 図14は、本実施の形態に係る点群データのデータファイル例を示す概念図である。この例では、位置情報の項目と属性情報の項目とが1対1に対応する場合の例であり、点群データを構成するN個の点の位置情報及び属性情報を示している。この例において、位置情報は、x、y及びzの3軸で三次元座標位置を示す情報であり、属性情報は、RGBで色を示す情報である。点群データの代表的なデータファイルとして、PLYファイルなどが用いられ得る。
 図15は、本実施の形態に係るメッシュデータの構成例を示す概念図である。メッシュデータは、CG(Computer Graphics)等に用いられるデータであって、複数の面で対象物の三次元形状を示す三次元メッシュのデータである。各面は、ポリゴンとも表現され、三角形又は四角形などの多角形の形状を有する。
 具体的には、三次元メッシュは、点群を構成する複数の点に加えて、複数の辺(Edge)、及び、複数の面(Face)で構成される。各点は、頂点(Vertex)又は位置(Position)とも表現される。各辺は、2つの頂点で結ばれた線分に対応する。各面は、3つ以上の辺で囲まれた領域に対応する。
 また、三次元メッシュは、頂点の三次元座標位置を示す位置情報を有する。位置情報は、頂点情報又はジオメトリ(Geometory)とも表現される。また、三次元メッシュは、辺又は面を構成する複数の頂点の関係性を示す接続情報を有する。接続情報は、接続性(Connectivity)とも表現される。また、三次元メッシュは、頂点、辺又は面に対する属性を示す属性情報を有する。三次元メッシュにおける属性情報は、テクスチャ(Texture)とも表現される。
 例えば、属性情報は、頂点、辺又は面に対する色、反射率又は法線ベクトルを示してもよい。法線ベクトルの向きは、面の表及び裏を表現し得る。
 メッシュデータのデータファイル形式として、オブジェクトファイル等が用いられてもよい。
 図16は、本実施の形態に係るメッシュデータのデータファイル例を示す概念図である。この例において、データファイルには、三次元メッシュを構成するN個の頂点の位置情報G(1)~G(N)、及び、N個の頂点の属性情報A1(1)~A1(N)が含まれる。また、この例において、M個の属性情報A2(1)~A2(M)が含まれる。属性情報の項目は、頂点に1対1に対応していなくてもよいし、面に1対1に対応していなくてもよい。また、属性情報は、存在しなくてもよい。
 接続情報は、頂点のインデックスの組み合わせで示される。n[1、3、4]は、n=1、n=3、及び、n=4の3つの頂点で構成される三角形の面を示す。また、m[2、4、6]は、3つの頂点に対してm=2、m=4、m=6の属性情報がそれぞれ対応することを示す。
 また、属性情報の実質的な内容が、別のファイルに記載されてもよい。そして、その内容に対するポインタが、頂点又は面等に対応付けられていてもよい。例えば、面に対する画像を示す属性情報が、二次元の属性マップ(Attribute Map)ファイルに格納されてもよい。そして、属性マップのファイル名、及び、属性マップにおける二次元座標値が、属性情報A2(1)~A2(M)に記載されてもよい。面に対して属性情報を指定する方法は、これらの方法に限られず、どのような方法が用いられてもよい。
 図17は、本実施の形態に係る三次元データの種類を示す概念図である。点群データ及びメッシュデータは、静的オブジェクトを示してもよいし、動的オブジェクトを示してもよい。静的オブジェクトは、時間的に変化しないオブジェクトであり、動的オブジェクトは、時間的に変化するオブジェクトである。静的オブジェクトは、任意の時点に対する三次元データに対応していてもよい。
 例えば、任意の時点に対する点群データは、PCCフレームと表現される場合がある。また、任意の時点に対するメッシュデータは、メッシュフレームと表現される場合がある。さらに、PCCフレーム及びメッシュフレームは、単にフレームと表現される場合がある。
 また、オブジェクトの領域は、通常の映像データのように、一定の範囲に制限されていてもよいし、地図データのように、制限されていなくてもよい。また、点又は面の密度は様々に定められ得る。疎な点群データ又は疎なメッシュデータが用いられてもよいし、密な点群データ又は密なメッシュデータが用いられてもよい。
 次に、点群又は三次元メッシュの符号化及び復号について説明する。本開示における三次元メッシュの頂点情報の符号化及び復号のための装置、処理又はシンタックスが、点群の符号化及び復号に適用されてもよい。本開示における点群の符号化及び復号のための装置、処理又はシンタックスが、三次元メッシュの頂点情報の符号化及び復号に適用されてもよい。
 また、本開示における点群の属性情報の符号化及び復号のための装置、処理又はシンタックスが、三次元メッシュの接続情報又は属性情報の符号化及び復号に適用されてもよい。また、本開示における三次元メッシュの接続情報又は属性情報の符号化及び復号のための装置、処理又はシンタックスが、点群の属性情報の符号化及び復号に適用されてもよい。
 さらに、点群データの符号化及び復号と、メッシュデータの符号化及び復号とで、少なくとも一部の処理が共通化されてもよい。これにより、回路及びソフトウェアプログラムの規模が抑制され得る。
 図18は、本実施の形態に係る三次元データ符号化器113の構成例を示すブロック図である。この例において、三次元データ符号化器113は、頂点情報符号化器121、属性情報符号化器122、メタデータ符号化器123及び多重化器124を備える。頂点情報符号化器121、属性情報符号化器122及び多重化器124は、図6の頂点情報符号化器101、属性情報符号化器103及び後処理器105等に対応していてもよい。
 また、この例において、三次元データ符号化器113は、ジオメトリベース符号化方式に従って、三次元データを符号化する。ジオメトリベース符号化方式に従う符号化では、三次元構造が考慮される。また、ジオメトリベース符号化方式に従う符号化では、頂点情報の符号化において得られる構成情報を用いて属性情報が符号化される。
 具体的には、まず、センサデータから生成された三次元データに含まれる頂点情報、属性情報及びメタデータが、頂点情報符号化器121、属性情報符号化器122及びメタデータ符号化器123にそれぞれ入力される。ここで、三次元データに含まれる接続情報は、属性情報と同様に扱われてもよい。また、点群データの場合、位置情報が頂点情報として扱われてもよい。
 頂点情報符号化器121は、頂点情報を圧縮頂点情報に符号化して、圧縮頂点情報を符号化データとして多重化器124に出力する。また、頂点情報符号化器121は、圧縮頂点情報のメタデータを生成して多重化器124に出力する。また、頂点情報符号化器121は、構成情報を生成して属性情報符号化器122に出力する。
 属性情報符号化器122は、頂点情報符号化器121で生成された構成情報を用いて、属性情報を圧縮属性情報に符号化して、圧縮属性情報を符号化データとして多重化器124に出力する。また、属性情報符号化器122は、圧縮属性情報のメタデータを生成して多重化器124に出力する。
 メタデータ符号化器123は、圧縮可能なメタデータを圧縮メタデータに符号化して、圧縮メタデータを符号化データとして多重化器124に出力する。メタデータ符号化器123で符号化されるメタデータは、頂点情報の符号化、及び、属性情報の符号化に用いられてもよい。
 多重化器124は、圧縮頂点情報、圧縮頂点情報のメタデータ、圧縮属性情報、圧縮属性情報のメタデータ、及び、圧縮メタデータをビットストリームに多重化する。そして、多重化器124は、ビットストリームをシステムレイヤに入力する。
 図19は、本実施の形態に係る三次元データ復号器213の構成例を示すブロック図である。この例において、三次元データ復号器213は、頂点情報復号器221、属性情報復号器222、メタデータ復号器223及び逆多重化器224を備える。頂点情報復号器221、属性情報復号器222及び逆多重化器224は、図8の頂点情報復号器201、属性情報復号器203及び前処理器204等に対応していてもよい。
 また、この例において、三次元データ復号器213は、ジオメトリベース符号化方式に従って、三次元データを復号する。ジオメトリベース符号化方式に従う復号では、三次元構造が考慮される。また、ジオメトリベース符号化方式に従う復号では、頂点情報の復号において得られる構成情報を用いて属性情報が復号される。
 具体的には、まず、ビットストリームが、システムレイヤから逆多重化器224に入力される。逆多重化器224は、ビットストリームから、圧縮頂点情報、圧縮頂点情報のメタデータ、圧縮属性情報、圧縮属性情報のメタデータ、及び、圧縮メタデータを分離する。圧縮頂点情報、及び、圧縮頂点情報のメタデータは、頂点情報復号器221に入力される。圧縮属性情報、及び、圧縮属性情報のメタデータは、属性情報復号器222に入力される。メタデータは、メタデータ復号器223に入力される。
 頂点情報復号器221は、圧縮頂点情報のメタデータを用いて、圧縮頂点情報から頂点情報を復号する。また、頂点情報復号器221は、構成情報を生成して属性情報復号器222に出力する。属性情報復号器222は、頂点情報復号器221で生成された構成情報、及び、圧縮属性情報のメタデータを用いて、圧縮属性情報から属性情報を復号する。メタデータ復号器223は、圧縮メタデータからメタデータを復号する。メタデータ復号器223で復号されたメタデータは、頂点情報の復号、及び、属性情報の復号に用いられてもよい。
 その後、頂点情報、属性情報、及び、メタデータが三次元データとして三次元データ復号器213から出力される。なお、例えば、このメタデータは、頂点情報及び属性情報のメタデータであって、アプリケーションプログラムにおいて用いられ得る。
 図20は、本実施の形態に係る三次元データ符号化器113の別の構成例を示すブロック図である。この例において、三次元データ符号化器113は、頂点画像生成器131、属性画像生成器132、メタデータ生成器133、映像符号化器134、メタデータ符号化器123及び多重化器124を備える。頂点画像生成器131、属性画像生成器132及び映像符号化器134は、図6の頂点情報符号化器101及び属性情報符号化器103等に対応していてもよい。
 また、この例において、三次元データ符号化器113は、ビデオベース符号化方式に従って、三次元データを符号化する。ビデオベース符号化方式に従う符号化では、三次元データから複数の二次元画像が生成され、映像符号化方式に従って複数の二次元画像が符号化される。ここで、映像符号化方式は、HEVC(High Efficiency Video Coding)又はVVC(Versatile Video Coding)等であってもよい。
 具体的には、まず、センサデータから生成された三次元データに含まれる頂点情報及び属性情報が、メタデータ生成器133に入力される。また、頂点情報及び属性情報は、頂点画像生成器131及び属性画像生成器132にそれぞれ入力される。また、三次元データに含まれるメタデータは、メタデータ符号化器123に入力される。ここで、三次元データに含まれる接続情報は、属性情報と同様に扱われてもよい。また、点群データの場合、位置情報が頂点情報として扱われてもよい。
 メタデータ生成器133は、頂点情報及び属性情報から複数の二次元画像のマップ情報を生成する。そして、メタデータ生成器133は、マップ情報を頂点画像生成器131、属性画像生成器132及びメタデータ符号化器123に入力する。
 頂点画像生成器131は、頂点情報及びマップ情報に基づいて、頂点画像を生成して映像符号化器134へ入力する。属性画像生成器132は、属性情報及びマップ情報に基づいて、属性画像を生成して映像符号化器134へ入力する。
 映像符号化器134は、映像符号化方式に従って、頂点画像及び属性画像を圧縮頂点情報及び圧縮属性情報にそれぞれ符号化して、圧縮頂点情報及び圧縮属性情報を符号化データとして多重化器124に出力する。また、映像符号化器134は、圧縮頂点情報のメタデータ、及び、圧縮属性情報のメタデータを生成して多重化器124に出力する。
 メタデータ符号化器123は、圧縮可能なメタデータを圧縮メタデータに符号化して、圧縮メタデータを符号化データとして多重化器124に出力する。圧縮可能なメタデータには、マップ情報が含まれる。また、メタデータ符号化器123で符号化されるメタデータは、頂点情報の符号化、及び、属性情報の符号化に用いられてもよい。
 多重化器124は、圧縮頂点情報、圧縮頂点情報のメタデータ、圧縮属性情報、圧縮属性情報のメタデータ、及び、圧縮メタデータをビットストリームに多重化する。そして、多重化器124は、ビットストリームをシステムレイヤに入力する。
 図21は、本実施の形態に係る三次元データ復号器213の別の構成例を示すブロック図である。この例において、三次元データ復号器213は、頂点情報生成器231、属性情報生成器232、映像復号器234、メタデータ復号器223及び逆多重化器224を備える。頂点情報生成器231、属性情報生成器232及び映像復号器234は、図8の頂点情報復号器201及び属性情報復号器203等に対応していてもよい。
 また、この例において、三次元データ復号器213は、ビデオベース符号化方式に従って、三次元データを復号する。ビデオベース符号化方式に従う復号では、映像符号化方式に従って複数の二次元画像が復号され、複数の二次元画像から三次元データが生成される。ここで、映像符号化方式は、HEVC(High Efficiency Video Coding)又はVVC(Versatile Video Coding)等であってもよい。
 具体的には、まず、ビットストリームが、システムレイヤから逆多重化器224に入力される。逆多重化器224は、ビットストリームから、圧縮頂点情報、圧縮頂点情報のメタデータ、圧縮属性情報、圧縮属性情報のメタデータ、及び、圧縮メタデータを分離する。圧縮頂点情報、及び、圧縮頂点情報のメタデータ、圧縮属性情報、及び、圧縮属性情報のメタデータは、映像復号器234に入力される。圧縮メタデータは、メタデータ復号器223に入力される。
 映像復号器234は、映像符号化方式に従って、頂点画像を復号する。その際、映像復号器234は、圧縮頂点情報のメタデータを用いて、圧縮頂点情報から頂点画像を復号する。そして、映像復号器234は、頂点画像を頂点情報生成器231に入力する。また、映像復号器234は、映像符号化方式に従って、属性画像を復号する。その際、映像復号器234は、圧縮属性情報のメタデータを用いて、圧縮属性情報から属性画像を復号する。そして、映像復号器234は、属性画像を属性情報生成器232に入力する。
 メタデータ復号器223は、圧縮メタデータからメタデータを復号する。メタデータ復号器223で復号されたメタデータには、頂点情報の生成、及び、属性情報の生成に用いられるマップ情報が含まれる。また、メタデータ復号器223で復号されたメタデータは、頂点画像の復号、及び、属性画像の復号に用いられてもよい。
 頂点情報生成器231は、メタデータ復号器223で復号されたメタデータに含まれるマップ情報に従って、頂点画像から頂点情報を再生する。属性情報生成器232は、メタデータ復号器223で復号されたメタデータに含まれるマップ情報に従って、属性画像から属性情報を再生する。
 その後、頂点情報、属性情報、及び、メタデータが三次元データとして三次元データ復号器213から出力される。なお、例えば、このメタデータは、頂点情報及び属性情報のメタデータであって、アプリケーションプログラムにおいて用いられ得る。
 図22は、本実施の形態に係る符号化処理の具体例を示す概念図である。図22には、三次元データ符号化器113及びデスクリプション符号化器148が示されている。この例において、三次元データ符号化器113は、二次元データ符号化器141及びメッシュデータ符号化器142を備える。二次元データ符号化器141は、テクスチャ符号化器143を備える。メッシュデータ符号化器142は、頂点情報符号化器144及び接続情報符号化器145を備える。
 頂点情報符号化器144、接続情報符号化器145及びテクスチャ符号化器143は、図6の頂点情報符号化器101、接続情報符号化器102及び属性情報符号化器103等に対応していてもよい。
 例えば、二次元データ符号化器141は、テクスチャ符号化器143として動作し、画像符号化方式又は映像符号化方式に従って、属性情報に対応するテクスチャを二次元データとして符号化することにより、テクスチャファイルを生成する。
 また、メッシュデータ符号化器142は、頂点情報符号化器144及び接続情報符号化器145として動作し、頂点情報及び接続情報を符号化することにより、メッシュファイルを生成する。メッシュデータ符号化器142は、さらに、テクスチャに対するマッピング情報を符号化してもよい。そして、符号化されたマッピング情報が、メッシュファイルに含まれてもよい。
 また、デスクリプション符号化器148は、テキストデータ等のメタデータに対応するデスクリプションを符号化することにより、デスクリプションファイルを生成する。デスクリプション符号化器148は、システムレイヤにおいて、デスクリプションを符号化してもよい。例えば、デスクリプション符号化器148は、図12のシステム多重化器114に含まれていてもよい。
 上記の動作により、テクスチャファイル、メッシュファイル及びデスクリプションファイルを含むビットストリームが生成される。これらのファイルは、glTF(Graphics Language Transmission Format)又はUSD(Universal Scene Description)等のファイル形式でビットストリームに多重化されてもよい。
 なお、三次元データ符号化器113は、メッシュデータ符号化器142として、2つのメッシュデータ符号化器を備えていてもよい。例えば、一方のメッシュデータ符号化器は、静的な三次元メッシュの頂点情報及び接続情報を符号化し、他方のメッシュデータ符号化器は、動的な三次元メッシュの頂点情報及び接続情報を符号化する。
 そして、これに対応して、2つのメッシュファイルがビットストリームに含まれてもよい。例えば、一方のメッシュファイルは、静的な三次元メッシュに対応し、他方のメッシュファイルは、動的な三次元メッシュに対応する。
 また、静的な三次元メッシュはイントラ予測を用いて符号化されるイントラフレームの三次元メッシュであってもよく、動的な三次元メッシュはインター予測を用いて符号化されるインターフレームの三次元メッシュであってもよい。また、動的な三次元メッシュの情報として、イントラフレームの三次元メッシュの頂点情報又は接続情報と、インターフレームの三次元メッシュの頂点情報又は接続情報との差分情報が用いられてもよい。
 図23は、本実施の形態に係る復号処理の具体例を示す概念図である。図23には、三次元データ復号器213、デスクリプション復号器248及び提示器247が示されている。この例において、三次元データ復号器213は、二次元データ復号器241、メッシュデータ復号器242及びメッシュ再構成器246を備える。二次元データ復号器241は、テクスチャ復号器243を備える。メッシュデータ復号器242は、頂点情報復号器244及び接続情報復号器245を備える。
 頂点情報復号器244、接続情報復号器245、テクスチャ復号器243及びメッシュ再構成器246は、図8の頂点情報復号器201、接続情報復号器202、属性情報復号器203及び後処理器205等に対応していてもよい。提示器247は、図12の提示器215等に対応していてもよい。
 例えば、二次元データ復号器241は、テクスチャ復号器243として動作し、画像符号化方式又は映像符号化方式に従って、テクスチャファイルから属性情報に対応するテクスチャを二次元データとして復号する。
 また、メッシュデータ復号器242は、頂点情報復号器244及び接続情報復号器245として動作し、メッシュファイルから頂点情報及び接続情報を復号する。メッシュデータ復号器242は、さらに、メッシュファイルから、テクスチャに対するマッピング情報を復号してもよい。
 また、デスクリプション復号器248は、デスクリプションファイルから、テキストデータ等のメタデータに対応するデスクリプションを復号する。デスクリプション復号器248は、システムレイヤにおいて、デスクリプションを復号してもよい。例えば、デスクリプション復号器248は、図12のシステム逆多重化器214に含まれていてもよい。
 メッシュ再構成器246は、デスクリプションに従って、頂点情報、接続情報及びテクスチャから、三次元メッシュを再構成する。提示器247は、デスクリプションに従って、三次元メッシュをレンダリングして出力する。
 上記の動作により、テクスチャファイル、メッシュファイル及びデスクリプションファイルを含むビットストリームから三次元メッシュが再構成され出力される。
 なお、三次元データ復号器213は、メッシュデータ復号器242として、2つのメッシュデータ復号器を備えていてもよい。例えば、一方のメッシュデータ復号器は、静的な三次元メッシュの頂点情報及び接続情報を復号し、他方のメッシュデータ復号器は、動的な三次元メッシュの頂点情報及び接続情報を復号する。
 そして、これに対応して、2つのメッシュファイルがビットストリームに含まれてもよい。例えば、一方のメッシュファイルは、静的な三次元メッシュに対応し、他方のメッシュファイルは、動的な三次元メッシュに対応する。
 また、静的な三次元メッシュはイントラ予測を用いて符号化されるイントラフレームの三次元メッシュであってもよく、動的な三次元メッシュはインター予測を用いて符号化されるインターフレームの三次元メッシュであってもよい。また、動的な三次元メッシュの情報として、イントラフレームの三次元メッシュの頂点情報又は接続情報と、インターフレームの三次元メッシュの頂点情報又は接続情報との差分情報が用いられてもよい。
 動的な三次元メッシュの符号化方式は、DMC(Dynamic Mesh Coding:動的メッシュ符号化)と呼ばれる場合がある。また、動的な三次元メッシュのビデオベース符号化方式は、V-DMC(Video-based Dynamic Mesh Coding:ビデオベース動的メッシュ符号化)と呼ばれる場合がある。
 点群の符号化方式は、PCC(Point Cloud Compression:点群圧縮)と呼ばれる場合がある。また、点群のビデオベース符号化方式は、V-PCC(Video-based Point Cloud Compression:ビデオベース点群圧縮)と呼ばれる場合がある。また、点群のジオメトリベース符号化方式は、G-PCC(Geometry-based Point Cloud Compression:ジオメトリベース点群圧縮)と呼ばれる場合がある。
 <実装例>
 図24は、本実施の形態に係る符号化装置100の実装例を示すブロック図である。符号化装置100は、回路151及びメモリ152を備える。例えば、図5等に示された符号化装置100の複数の構成要素は、図24に示された回路151及びメモリ152によって実装される。
 回路151は、情報処理を行う回路であり、メモリ152にアクセス可能な回路である。例えば、回路151は、三次元メッシュを符号化する専用又は汎用の電気回路である。回路151は、CPUのようなプロセッサであってもよい。また、回路151は、複数の電気回路の集合体であってもよい。
 メモリ152は、回路151が三次元メッシュを符号化するための情報が記憶される専用又は汎用のメモリである。メモリ152は、電気回路であってもよく、回路151に接続されていてもよい。また、メモリ152は、回路151に含まれていてもよい。また、メモリ152は、複数の電気回路の集合体であってもよい。また、メモリ152は、磁気ディスク又は光ディスク等であってもよいし、ストレージ又は記録媒体等と表現されてもよい。また、メモリ152は、不揮発性メモリでもよいし、揮発性メモリでもよい。
 例えば、メモリ152には、三次元メッシュが記憶されてもよいし、ビットストリームが記憶されてもよい。また、メモリ152には、回路151が三次元メッシュを符号化するためのプログラムが記憶されていてもよい。
 なお、符号化装置100において、図5等に示された複数の構成要素の全てが実装されなくてもよいし、ここで示された複数の処理の全てが行われなくてもよい。図5等に示された複数の構成要素の一部は、他の装置に含まれていてもよいし、ここで示された複数の処理の一部は、他の装置によって実行されてもよい。また、符号化装置100において、本開示の複数の構成要素が任意に組み合わされて実装されてもよいし、本開示の複数の処理が任意に組み合わされて行われてもよい。
 図25は、本実施の形態に係る復号装置200の実装例を示すブロック図である。復号装置200は、回路251及びメモリ252を備える。例えば、図7等に示された復号装置200の複数の構成要素は、図25に示された回路251及びメモリ252によって実装される。
 回路251は、情報処理を行う回路であり、メモリ252にアクセス可能な回路である。例えば、回路251は、三次元メッシュを復号する専用又は汎用の電気回路である。回路251は、CPUのようなプロセッサであってもよい。また、回路251は、複数の電気回路の集合体であってもよい。
 メモリ252は、回路251が三次元メッシュを復号するための情報が記憶される専用又は汎用のメモリである。メモリ252は、電気回路であってもよく、回路251に接続されていてもよい。また、メモリ252は、回路251に含まれていてもよい。また、メモリ252は、複数の電気回路の集合体であってもよい。また、メモリ252は、磁気ディスク又は光ディスク等であってもよいし、ストレージ又は記録媒体等と表現されてもよい。また、メモリ252は、不揮発性メモリでもよいし、揮発性メモリでもよい。
 例えば、メモリ252には、三次元メッシュが記憶されてもよいし、ビットストリームが記憶されてもよい。また、メモリ252には、回路251が三次元メッシュを復号するためのプログラムが記憶されていてもよい。
 なお、復号装置200において、図7等に示された複数の構成要素の全てが実装されなくてもよいし、ここで示された複数の処理の全てが行われなくてもよい。図7等に示された複数の構成要素の一部は、他の装置に含まれていてもよいし、ここで示された複数の処理の一部は、他の装置によって実行されてもよい。また、復号装置200において、本開示の複数の構成要素が任意に組み合わされて実装されてもよいし、本開示の複数の処理が任意に組み合わされて行われてもよい。
 本開示の符号化装置100及び復号装置200の各構成要素が行うステップを含む符号化方法及び復号方法が任意の装置又はシステムによって実行されてもよい。例えば、符号化方法及び復号方法の一部又は全部が、プロセッサ、メモリ及び入出力回路等を備えるコンピュータによって実行されてもよい。その際、コンピュータに符号化方法及び復号方法を実行させるためのプログラムがコンピュータによって実行されることにより、符号化方法及び復号方法が実行されてもよい。
 また、CD-ROM等の非一時的なコンピュータ読み取り可能な記録媒体に、プログラムが記録されていてもよいし、ビットストリームが記録されていてもよい。
 プログラムの一例は、ビットストリームであってもよい。例えば、符号化された三次元メッシュを含むビットストリームは、復号装置200に三次元メッシュを復号させるためのシンタックス要素を含む。そして、ビットストリームは、ビットストリームに含まれるシンタックス要素に従って三次元メッシュを復号装置200に復号させる。したがって、ビットストリームは、プログラムと同様の役割を果たし得る。
 上記のビットストリームは、符号化された三次元メッシュを含む符号化ビットストリームであってもよいし、符号化された三次元メッシュ及びその他の情報を含む多重化ビットストリームであってもよい。
 また、符号化装置100及び復号装置200の各構成要素は、専用のハードウェアで構成されてもよいし、上記のプログラム等を実行する汎用のハードウェアで構成されてもよいし、これらの組み合わせで構成されてもよい。また、汎用のハードウェアは、プログラムが記録されたメモリ、及び、メモリからプログラムを読み出して実行する汎用のプロセッサ等で構成されてもよい。ここで、メモリは、半導体メモリ又はハードディスク等でもよいし、汎用のプロセッサは、CPU等でもよい。
 また、専用のハードウェアが、メモリ及び専用のプロセッサ等で構成されてもよい。例えば、専用のプロセッサが、データを記録するためのメモリを参照して、符号化方法及び復号方法を実行してもよい。
 また、符号化装置100及び復号装置200の各構成要素は、上述の通り、電気回路であってもよい。これらの電気回路は、全体として1つの電気回路を構成してもよいし、それぞれ別々の電気回路であってもよい。また、これらの電気回路は、専用のハードウェアに対応していてもよいし、上記のプログラム等を実行する汎用のハードウェアに対応していてもよい。また、符号化装置100及び復号装置200は、集積回路として実装されてもよい。
 また、符号化装置100は、三次元メッシュを送信する送信装置であってもよい。復号装置200は、三次元メッシュを受信する受信装置であってもよい。
 <頂点情報の符号化及び復号に関する参考例>
 例えば、頂点情報の符号化及び復号において、頂点の位置を予測する平行四辺形予測方式が用いられてもよい。
 図26は、参考例に係る平行四辺形予測方式を示す概念図である。例えば、第1三角形の第1頂点A、第2頂点B及び第3頂点Cの頂点情報が符号化されてから、第1三角形と同じ第2頂点B及び第3頂点Cを有する第2三角形の第4頂点Dの頂点情報が符号化される。その際、平行四辺形予測方式を用いて、第1頂点A、第2頂点B及び第3頂点Cから、第4頂点Dの位置が予測され、予測に対する誤差が符号化される。
 具体的には、まず、第1三角形ABCから、対角線BC及び対角線APを有する仮想平行四辺形ABCPの頂点Pが予測点として計算される。頂点Pの座標値は、第1三角形ABCの第1頂点A、第2頂点B及び第3頂点Cの座標値を用いて導出される(P=B+C-A)。そして、三次元空間における頂点Dと頂点Pとの差を示す誤差ベクトルが符号化される。
 より複雑なバージョンでは、複数の三角形が用いられる。このアプローチでは、圧縮処理が遅くなるが、より優れた予測が実現される。
 頂点情報の符号化及び復号において、頂点の位置を予測する多項式予測方式が用いられてもよい。多項式予測方式では、局所構成を用いて新しい頂点の位置が予測される。具体的には、局所近傍内のいくつかの頂点座標値が、予め定められた係数を有する多項式関数に供給され、多項式関数に従って新しい頂点の位置が予測される。新しい頂点の予測に用いられる頂点は、特定の条件に従って選択される。
 図27は、参考例に係る多項式予測方式を示す概念図である。例えば、図27では、符号化済みの4つの頂点を用いて、次の頂点の予測点が導出される。つまり、図27では、頂点#1、頂点#2、頂点#3及び頂点#4の座標値は、頂点#5を予測するために用いられる。平行四辺形予測方式と同様に、予測に対する誤差を示す誤差ベクトルが符号化される。
 参考例では、平行四辺形予測方式又は多項式予測方式等の予測方式に従って計算された誤差ベクトルを用いて頂点情報が符号化される。これらの予測方式の複雑さにかかわらず、これらの誤差の大きさが特定の範囲内にあることを保証することは困難である。例えば、鈍角三角形では、正三角形よりも大きな誤差ベクトルが生じる傾向がある。また、形状の滑らかさ、及び、面のサイズが、誤差の大きさに影響を与える。したがって、頂点情報のシグナリングに、より多くのビットが用いられる可能性がある。
 <頂点情報の符号化及び復号の第1態様>
 本態様では、二面角と他の2つの角度との3つの角度を用いて、参照三角形に対する隣接三角形の非共通頂点が符号化される。すなわち、隣接三角形間の空間的関係を用いて頂点情報が符号化される際、3つの角度のみが符号化される。これにより、ビット数が削減される可能性がある。
 角度の正負符号は、辺に対する角度の向きを示すために用いられてもよい。正の値が基準に対して時計回りの向きを指し、負の値が基準に対して反時計回りの方向を指すという、予め決められた規則が採用されてもよい。
 例えば、参照三角形である第1三角形と処理対象三角形である第2三角形とのなす二面角により、第2三角形の二次元平面を見つけることが可能になる。したがって、三次元の複雑さが、より単純な平面上の法則が適用可能な二次元に減らされ得る。
 隣接面間の二面角は、面法線を用いて計算されてもよい。そして、第2三角形に対して1対1の仮想的な合同三角形である対応三角形が第1三角形の平面上に構築される。第1三角形と対応三角形とは、共通の辺を有し、共通の辺に対して反対側に位置する。対応三角形の頂点は、2つの角度を用いて特定される。したがって、第2三角形の頂点は、第1三角形と第2三角形とのなす二面角、及び、第2三角形と合同な対応三角形の頂点を特定するための2つの角度によって、第2三角形の頂点が特定される。
 したがって、二面角と他の2つの角度との3つの角度によって、第2三角形の頂点情報を符号化することが可能である。そして、これにより、角度の表現範囲に従って、符号化対象の値が大きくなり過ぎることが抑制される。よって、三次元メッシュの性質及び品質に関係なく、ワーストケースの符号量を抑制することが可能になる。
 さらに、これらの角度の値は特定の分布に従う傾向がある。したがって、そのような傾向を利用することで圧縮率を向上させることも可能である。例えば、角度の分布を調べ、その分布の平均に対する差分が符号化されてもよい。
 <第1態様に係る符号化処理の例>
 図28は、本態様に係る符号化処理の例を示すフローチャートである。まず、三次元メッシュから第1頂点、第2頂点及び第3頂点が導出される(S101)。ここで、第1頂点、第2頂点及び第3頂点は、三次元メッシュの第1平面上に第1三角形を形成する。また、例えば、第1頂点、第2頂点及び第3頂点は、符号化済みの3つの頂点である。
 次に、第1三角形と共通の辺を用いて三次元メッシュの第2平面上に形成される第2三角形の第4頂点を導出するための第1角度、第2角度及び第3角度が導出される(S102)。
 そして、第1角度、第2角度及び第3角度が、ビットストリームに符号化される(S103)。
 図29は、本態様に係る符号化処理の具体例を示すフローチャートである。まず、三次元メッシュから最初の面の各頂点座標値が符号化される(S111)。最初の面は、ランダムに選択されてもよい。
 次に、処理が、次の面にトラバースする(S112)。そして、トラバーサルの指示及び頂点の処理モードを示すトラバーサルシンボルがビットストリームに書き込まれる。
 ここで、面の頂点が既に符号化されている場合(S113でYes)、頂点の符号化がスキップされる。そして、全ての面がトラバース済みでなければ、次の面に処理がトラバースする。なお、全ての面がトラバース済みであれば、処理は終了してもよい。
 一方、頂点が符号化されていない場合(S113でNo)、書き込まれたトラバーサルシンボルに従って、頂点の処理モードが指定される。
 頂点は、座標値又は角度を用いて符号化される。例えば、トラバーサルシンボルが座標を示す場合(S114で座標)、頂点座標値(x、y、z)が直接符号化される(S115)。この方法は、どの頂点もまだ符号化されていない符号化開始時に選択されてもよい。また、例えば、トラバーサルシンボルが角度を示す場合(S114で角度)、頂点は、3つの角度を用いて符号化される(S116)。
 追加の残差が、計算されてもよく、角度のシグナリング後に別個にシグナリングされてもよい。可逆符号化のために角度の浮動小数点値を完全に表現する例において、角度の浮動小数点値の整数部分が符号化された後に、角度の浮動小数点値の小数部分が残差値として符号化されてもよい。トラバーサル処理は、三次元メッシュの全てにトラバースするまで継続する(S119)。
 スキップ、終了及び実行のいずれかを示すトラバーサルシンボルが符号化されてもよい。スキップは、頂点が既に処理済みであることに対応する。終了は、全ての頂点が処理済みであることに対応する。実行は、頂点が処理されるべきであることに対応する。そして、実行を示すトラバーサルシンボルが符号化される場合、座標及び角度のいずれかを示す処理モードがトラバーサルシンボルとは別に符号化されてもよい。処理モードは、モード、動作モード、予測モード、符号化モード又は復号モードとも表現され得る。
 図30は、本態様に係る符号化処理の別の具体例を示すフローチャートである。この例では、図29の符号化処理に、参考例の符号化処理が統合される。まず、三次元メッシュから最初の面の各頂点座標値が符号化される(S111)。
 次に、処理が、次の面にトラバースする(S112)。そして、トラバーサルの指示及び頂点の処理モードを示すトラバーサルシンボルがビットストリームに書き込まれる。
 ここで、面の頂点が既に符号化されている場合(S113でYes)、頂点の符号化がスキップされる。そして、全ての面がトラバース済みでなければ、次の面に処理がトラバースする。なお、全ての面がトラバース済みであれば、処理は終了してもよい。
 一方、頂点が符号化されていない場合(S113でNo)、書き込まれたトラバーサルシンボルに従って、頂点の処理モードが指定される。
 頂点は、座標、角度、平行四辺形又は多項式を用いて符号化される。例えば、トラバーサルシンボルが座標を示す場合(S114で座標)、頂点座標値(x、y、z)が直接符号化される(S115)。この方法は、どの頂点もまだ符号化されていない符号化開始時に選択されてもよい。また、例えば、トラバーサルシンボルが角度を示す場合(S114で角度)、頂点は、3つの角度を用いて符号化される(S116)。
 また、例えば、トラバーサルシンボルが平行四辺形を示す場合(S114で平行四辺形)、頂点は、平行四辺形を用いて符号化される(S117)。また、例えば、トラバーサルシンボルが多項式を示す場合(S114で多項式)、頂点は、多項式を用いて符号化される(S118)。
 複数の処理モードに対して符号化レート及び歪みによって計算される複数のコストのうちの最小コストによって、最適な処理モードが決定されてもよい。符号化レート及び歪みのコストは、シグナリングされるビット数、及び、実際の値と予測の値との間の誤差に基づいて計算され得る。また、実際の値と予測の値との間の誤差のみに基づいて、最小の誤差に対応する最適な処理モードが選択されてもよい。
 トラバーサル処理は、三次元メッシュの全てがトラバースされるまで継続する(S119)。
 スキップ、終了及び実行のいずれかを示すトラバーサルシンボルが符号化されてもよい。そして、実行を示すトラバーサルシンボルが符号化される場合、座標、角度、平行四辺形及び多角形のいずれかを示す処理モードがトラバーサルシンボルとは別に符号化されてもよい。なお、処理モードが予め定められている場合、処理モードは符号化されなくてもよいし、処理が切り替えられなくてもよい。
 例えば、図31、図32及び図33に示されているように、第1三角形は、第1頂点A、第2頂点B及び第3頂点Cを有し、第2三角形は、第2頂点B、第3頂点C及び第4頂点Dを有し、対応三角形は、第2頂点B、第3頂点C及び第5頂点Eを有する。
 図31は、本態様に係る3つの角度の例を示す概念図である。この例では、対応三角形の2つの内角が第2角度β及び第3角度γとして用いられる。また、この例では、対応三角形の2つの内角が共通の辺に接触する。そして、この例において、第2角度β及び第3角度γは、以下の式(1)により計算される。
Figure JPOXMLDOC01-appb-M000001
 図32は、本態様に係る3つの角度の別の例を示す概念図である。この例では、線AEに接触する角度が第2角度βとして用いられ、対応三角形の1つの内角であって共通の辺BCに接触する1つの内角が第3角度γとして用いられる。この例において、第2角度β及び第3角度γは、以下の式(2)により計算される。
Figure JPOXMLDOC01-appb-M000002
 図33は、本態様に係る3つの角度のさらに別の例を示す概念図である。この例では、対応三角形の1つの内角が、第2角度βとして用いられ、ABとAQとのなす角度が、第3角度γとして用いられる。点Qは、共通の辺BCに対する第5頂点Eの正射影である。この例において、第2角度β及び第3角度γは、以下の式(3)により計算される。
Figure JPOXMLDOC01-appb-M000003
 図31、図32及び図33において、第1三角形及び第2三角形の平面間の二面角が、第1角度θとして用いられる。第1角度θは、それらの面法線を用いて計算され得る。例えば、第1三角形及び第2三角形の法線ベクトルは、それぞれn=[x、y、z]及びn=[x、y、z]であり、正規化されていると仮定される。このような仮定において、第1三角形及び第2三角形の平面間の第1角度θは、例えばθ=π-cos-1(n)(又はθ=cos-1(n))により計算される。
 図34は、本態様に係る複数の頂点に対する頂点情報のシンタックス構造例を示すシンタックス図である。この例において、3つの頂点が符号化された後、他の各頂点について、トラバーサルシンボルが符号化される。そして、トラバーサルシンボルに従って頂点を符号化するか否かが制御される。
 図35は、本態様に係る1つの頂点に対する頂点情報のシンタックス構造例を示すシンタックス図である。この例において、prediction_modeがonly_angles_modeに等しい場合、第1角度、第2角度及び第3角度に対する導出角度が直接符号化される。
 図36は、本態様に係る1つの頂点に対する頂点情報の別のシンタックス構造例を示すシンタックス図である。この例において、is_init_anglesに従って、3つの角度を直接符号化せずに導出又は予測する他の方法が用いられる。3つの角度を導出又は予測する方法の例は、前に符号化された角度の履歴リストを用いる方法である。具体的には、符号化対象の3つの角度が、最初の3つの角度でない場合、前に符号化された角度の履歴リストを用いて、3つの角度が導出又は予測される。
 図37は、角度の予測に用いられるテーブルの例を示すテーブル図である。この例において、前に符号化された角度と、インデックスとが、対応付けられてテーブルに格納される。テーブルに格納される角度は、前に符号化された3つの角度を平均することによって計算されてもよい。テーブルに格納される角度は、先入れ先出し、値の出現頻度、又は、その両方の組み合わせに従って制御されてもよい。インデックスは、固定値であってもよい。
 そして、テーブルの複数の角度のうちの1つが予測角度として用いられる。シンタックス要素の書き込みでは、予測角度に対応するインデックス値、及び、実際の角度と予測角度との違いであるデルタのみがビットストリームに書き込まれる。
 図38は、角度の予測に用いられるテーブルの別の例を示すテーブル図である。この例において、前に符号化された第1角度、第2角度及び第3角度がインデックスに対応付けられてテーブルに格納される。テーブルに格納される角度は、先入れ先出し、値の出現頻度、又は、その両方の組み合わせによって制御されてもよい。インデックスは、固定値であってもよい。
 そして、テーブルの複数の組み合わせのうちの1つの組み合わせが予測角度の組み合わせとして用いられる。シンタックス要素の書き込みでは、予測角度の組み合わせに対応するインデックス値、及び、実際の角度と予測角度との違いであるデルタのみがビットストリームに書き込まれる。
 図39は、前の三角形の頂点に対する角度を用いる予測の例を示す概念図である。この例では、前の三角形の頂点に対する3つの角度を用いて現在の三角形の頂点に対する3つの角度が導出又は予測される。前の三角形は、現在の三角形よりも前にトラバースされる三角形である。前の三角形は、現在の三角形の直前の三角形であってもよいし、現在の三角形に隣接する三角形であってもよい。
 具体的には、この例では、前の三角形の頂点に対する3つの角度(10°、30°、60°)を用いて、現在の三角形の頂点に対する3つの角度に対応するシンタックス値が決定される。例えば、現在の三角形の頂点に対する第1角度が9°である場合、10°-9°=1°がシンタックス値として書き込まれる。
 図40は、前の三次元メッシュの頂点に対する角度を用いる予測の例を示す概念図である。この例では、前の三次元メッシュの複数の頂点に対する複数の角度を用いて3つの角度が導出又は予測される。
 例えば、前の三次元メッシュは、現在の三次元メッシュとは空間的に異なる三次元メッシュであって、現在の三次元メッシュよりも前に処理された三次元メッシュである。あるいは、例えば、前の三次元メッシュは、現在の三次元メッシュとは時間的に異なる三次元メッシュであって、現在の三次元メッシュよりも前に処理された三次元メッシュである。
 前の三次元メッシュの複数の頂点に対する複数の第1角度、複数の第2角度及び複数の第3角度は、平均化されて、現在の三次元メッシュでシグナリングされてもよい。例えば、シンタックス値として、第1デルタ=第1角度x-平均第1角度が、決定され書き込まれる。例えば、この方法は、複数の隣接フレームが空間的冗長性を有する動的メッシュで利用され得る。
 図41は、本態様に係る符号化装置100の構成例を示すブロック図である。符号化装置100は、三次元メッシュをビットストリームに符号化する。図41に示されるように、符号化装置100は、トラバーサ161、スイッチ162、角度導出器163、角度符号化器164、座標符号化器165及びエントロピー符号化器166を備えてもよい。
 トラバーサ161は、三次元メッシュを取得する。そして、トラバーサ161は、三次元メッシュにおける符号化対象の頂点を決定し、スイッチ162を介して角度導出器163及び座標符号化器165のいずれかに頂点を出力する。一例において、トラバーサ161は、三次元メッシュの最初の3つの頂点に対して、座標符号化器165を選択し、他の頂点に対して、角度導出器163を選択する。
 例えば、座標符号化器165は、第1平面上に第1三角形を形成する3つの頂点を取り込み、3つの頂点を符号化する。3つの頂点の符号化において、デルタ符号化が用いられてもよい。具体的には、第1頂点Aの座標値が直接符号化され、第1頂点Aの座標値と第2頂点Bの座標値との差、及び、第1頂点Aの座標値と第3頂点Cの座標値との差が符号化されてもよい。
 角度導出器163は、第2頂点B及び第3頂点Cを用いて第2平面上に第2三角形を形成する第4頂点Dを取り込み、第4頂点Dを特定するための3つの角度を導出し、導出された3つの角度を角度符号化器164に出力する。第2平面は、第1平面とは異なっていてもよいし、第1平面と同じであってもよい。上述した通り、図31、図32及び図33は、3つの角度に関する異なる例を示す。
 角度符号化器164は、3つの角度を符号化する。追加の残差が、計算され、角度のシグナリング後に別個にシグナリングされてもよい。可逆符号化のため角度の浮動小数点値を完全に表現する例において、角度符号化器164は、角度の浮動小数点値の整数部分を符号化してから、角度の浮動小数点値の小数部分を残差値として符号化してもよい。
 座標符号化器165で得られた符号化情報、及び、角度符号化器164で得られた符号化情報は、エントロピー符号化器166に送られ、また、トラバーサ161にもフィードバックされる。エントロピー符号化器166は、符号化情報を圧縮し、ビットストリームを出力する。トラバーサ161は、符号化情報を用いて、次のトラバーサルを決定する。
 エントロピー符号化が準じる符号化方式の例は、ハフマン符号化、算術符号化、範囲符号化、ANS(非対称記数法:Asymmetric Numeral Systems)、又は、CABAC(コンテキスト適応型二値算術符号化:Context-Adaptive Binary Arithmetic Coding)であってもよい。
 符号化装置100は、上記の構成及び処理に従って、三次元メッシュを符号化する。これにより、三次元メッシュの符号量が抑制される場合がある。
 上記の説明において、対応三角形は、第2三角形に対して合同の三角形であるが、第2三角形に対して相似の三角形であってもよい。第2三角形と対応三角形とが相似であっても、第2三角形と対応三角形との対応関係が既知であれば、第2三角形と対応三角形との対応関係に従って、第5頂点Eから第4頂点Dが導き出され得る。また、対応三角形は、第1平面に対する第2三角形の正射影であってもよい。この場合も、第2三角形と対応三角形との対応関係に従って、第5頂点Eから第4頂点Dが導き出され得る。
 <第1態様に係る復号処理の例>
 図42は、本態様に係る復号処理の例を示すフローチャートである。まず、三次元メッシュから第1頂点、第2頂点及び第3頂点が導出される(S201)。ここで、第1頂点、第2頂点及び第3頂点は、三次元メッシュの第1平面上に第1三角形を形成する。また、例えば、第1頂点、第2頂点及び第3頂点は、復号済みの3つの頂点である。
 次に、第1三角形と共通の辺を用いて三次元メッシュの第2平面上に形成される第2三角形の第4頂点を導出するための第1角度、第2角度及び第3角度がビットストリームから復号される(S202)。そして、第1角度、第2角度及び第3角度を用いて第4頂点が導出される(S203)。
 図43は、本態様に係る復号処理の具体例を示すフローチャートである。復号処理は、最初に符号化された初期の面の各頂点座標値を復号することから始まる(S211)。続いて、現在の面のトラバーサルシンボルが復号される(S212)。そして、トラバーサルシンボルが座標、角度、スキップ及び終了のどれを示すかが判定される(S213)。
 例えば、トラバーサルシンボルが座標を示す場合(S213で座標)、頂点座標値(x、y、z)が直接復号される(S214)。また、トラバーサルシンボルが角度を示す場合(S213で角度)、頂点は3つの角度を用いて復号される(S215)。また、トラバーサルシンボルがスキップを示す場合(S213でスキップ)、次の面について処理が繰り返される。また、トラバーサルシンボルが終了を示す場合(S213で終了)、処理が終了する。
 スキップ、終了及び実行のいずれかを示すトラバーサルシンボルが復号されてもよい。スキップは、頂点が既に処理済みであることに対応する。終了は、全ての頂点が処理済みであることに対応する。実行は、頂点が処理されるべきであることに対応する。そして、実行を示すトラバーサルシンボルが復号された場合、座標及び角度のいずれかを示す処理モードがトラバーサルシンボルとは別に復号されてもよい。処理モードは、モード、動作モード、予測モード、符号化モード又は復号モードとも表現され得る。
 図44は、本態様に係る復号処理の別の具体例を示すフローチャートである。この例では、図43の復号処理に参考例の復号処理が統合される。復号処理は、最初に符号化された初期の面の各頂点座標値を復号することから始まる(S211)。続いて、現在の面のトラバーサルシンボルが復号される(S212)。そして、トラバーサルシンボルが座標、角度、スキップ及び終了のどれを示すかが判定される(S213)。
 例えば、トラバーサルシンボルが座標を示す場合(S213で座標)、頂点座標値(x、y、z)が直接復号される(S214)。また、トラバーサルシンボルが角度を示す場合(S213で角度)、頂点は3つの角度を用いて復号される(S215)。また、トラバーサルシンボルが平行四辺形を示す場合(S213で平行四辺形)、頂点は平行四辺形を用いて復号される(S216)。また、トラバーサルシンボルが多項式を示す場合(S213で多項式)、頂点は多項式を用いて次の頂点が復号される。
 また、トラバーサルシンボルがスキップを示す場合(S213でスキップ)、次の面について処理が繰り返される。また、トラバーサルシンボルが終了を示す場合(S213で終了)、処理が終了する。
 スキップ、終了及び実行のいずれかを示すトラバーサルシンボルが復号されてもよい。そして、実行を示すトラバーサルシンボルが復号された場合、座標、角度、平行四辺形及び多角形のいずれかを示す処理モードがトラバーサルシンボルとは別に復号されてもよい。なお、処理モードが予め定められている場合、処理モードは復号されなくてもよいし、処理が切り替えられなくてもよい。
 図34は、本態様に係る複数の頂点に対する頂点情報のシンタックス構造例を示すシンタックス図である。この例において、3つの頂点が復号された後、他の各頂点について、トラバーサルシンボルが復号される。そして、トラバーサルシンボルに従って頂点を復号するか否かが制御される。
 図35は、本態様に係る1つの頂点に対する頂点情報のシンタックス構造例を示すシンタックス図である。この例において、prediction_modeがonly_angles_modeに等しい場合、第1角度、第2角度及び第3角度に対する導出角度が直接復号される。
 図36は、本態様に係る1つの頂点に対する頂点情報の別のシンタックス構造例を示すシンタックス図である。この例において、is_init_anglesに従って、3つの角度を直接復号せずに導出又は予測する他の方法が用いられる。3つの角度を導出又は予測する方法の例は、前に復号された角度の履歴リストを用いる方法である。具体的には、復号対象の3つの角度が、最初の3つの角度でない場合、前に復号された角度の履歴リストを用いて、3つの角度が導出又は予測される。
 図37は、角度の予測に用いられるテーブルの例を示すテーブル図である。この例において、前に復号された角度と、インデックスとが、対応付けられてテーブルに格納される。テーブルに格納される角度は、前に復号された3つの角度を平均することによって計算されてもよい。テーブルに格納される角度は、先入れ先出し、値の出現頻度、又は、その両方の組み合わせに従って制御されてもよい。インデックスは、固定値であってもよい。
 そして、テーブルの複数の角度のうちの1つが予測角度として用いられる。シンタックス要素の復号では、予測角度に対応するインデックス値、及び、実際の角度と予測角度との違いであるデルタのみがビットストリームから復号される。
 図38は、角度の予測に用いられるテーブルの別の例を示すテーブル図である。この例において、前に復号された第1角度、第2角度及び第3角度がインデックスに対応付けられてテーブルに格納される。テーブルに格納される角度は、先入れ先出し、値の出現頻度、又は、その両方の組み合わせに従って制御されてもよい。インデックスは、固定値であってもよい。
 そして、テーブルの複数の組み合わせのうちの1つの組み合わせが予測角度の組み合わせとして用いられる。シンタックス要素の復号では、予測角度の組み合わせに対応するインデックス値、及び、実際の角度と予測角度との違いであるデルタのみがビットストリームから復号される。
 図39は、前の三角形の頂点に対する角度を用いる予測の例を示す概念図である。この例では、前の三角形の頂点に対する3つの角度を用いて現在の三角形の頂点に対する3つの角度が導出又は予測される。前の三角形は、現在の三角形よりも前にトラバースされる三角形である。前の三角形は、現在の三角形の直前の三角形であってもよいし、現在の三角形に隣接する三角形であってもよい。
 具体的には、この例では、前の三角形の頂点に対する3つの角度(10°、30°、60°)を用いて、現在の三角形の頂点に対する3つの角度に対応するシンタックス値が決定される。例えば、現在の三角形の頂点に対する第1デルタが1°である場合、10°-9°=1°が第1角度として導出される。
 図40は、前の三次元メッシュの頂点に対する角度を用いる予測の例を示す概念図である。この例では、前の三次元メッシュの複数の頂点に対する複数の角度を用いて3つの角度が導出又は予測される。
 例えば、前の三次元メッシュは、現在の三次元メッシュとは空間的に異なる三次元メッシュであって、現在の三次元メッシュよりも前に処理された三次元メッシュである。あるいは、例えば、前の三次元メッシュは、現在の三次元メッシュとは時間的に異なる三次元メッシュであって、現在の三次元メッシュよりも前に処理された三次元メッシュである。
 前の三次元メッシュの複数の頂点に対する複数の第1角度、複数の第2角度及び複数の第3角度は、平均化されて、現在の三次元メッシュでシグナリングされてもよい。例えば、シンタックス値から、第1角度x=平均第1角度+第1デルタが導出される。例えば、この方法は、複数の隣接フレームが空間的冗長性を有する動的メッシュで利用され得る。
 追加の残差が、3つの角度の復号後に復号されてもよい。一例において、角度として復号される値が、角度の浮動小数点値の整数部分を表してもよく、残差として復号される値が、角度の浮動小数点値の小数部分を表してもよい。整数部分に小数部分を追加することにより、実際の角度が得られる。
 例えば、図31、図32及び図33に示されているように、第1三角形は、第1頂点A、第2頂点B及び第3頂点Cを有し、第2三角形は、第2頂点B、第3頂点C及び第4頂点Dを有し、対応三角形は、第2頂点B、第3頂点C及び第5頂点Eを有する。
 第2三角形の第4頂点Dの導出では、まず、第2角度及び第3角度を用いて、第1三角形を含む第1平面に対する第4頂点Dの投影である第5頂点Eが計算される。そして、第1三角形と第2三角形との二面角である第1角度を用いて、第5頂点Eから第4頂点Dが計算される。
 図31は、本態様に係る3つの角度の例を示す概念図である。この例では、対応三角形の2つの内角が第2角度β及び第3角度γとして用いられる。つまり、この例では、対応三角形の2つの内角が、ビットストリームから復号される。三角形CBEに正弦法則を適用することで、以下の式(4)が得られる。
Figure JPOXMLDOC01-appb-M000004
 第2角度β、第3角度γ及び辺CBが与えられた場合、上記の式(4)から第5頂点Eの座標値が導出される。
 図32は、本態様に係る3つの角度の別の例を示す概念図である。この例では、線AEに接触する角度が第2角度βとして用いられ、対応三角形の1つの内角であって共通の辺BCに接触する1つの内角が第3角度γとして用いられる。この例において、第1頂点A、第2頂点B及び第3頂点Cがビットストリームから復号された後、BAとBCとのなす第4角度δは以下の式(5)により導出される。
Figure JPOXMLDOC01-appb-M000005
 次に、三角形ABEに正弦法則を適用することで、以下の式(6)が得られる。
Figure JPOXMLDOC01-appb-M000006
 上記の式(6)により、BEの大きさが導出される。したがって、BEの方向及び大きさ、並びに、第5頂点Eが位置する平面が既知となり、第5頂点Eの座標値が導出される。
 図33は、本態様に係る3つの角度のさらに別の例を示す概念図である。この例では、対応三角形の1つの内角が、第2角度βとして用いられ、ABとAQとのなす角度が、第3角度γとして用いられる。点Qは、共通の辺BCに対する第5頂点Eの正射影である。三角形AQBに正弦法則を適用することで、以下の式(7)が得られる。
Figure JPOXMLDOC01-appb-M000007
 上記の式(7)により、QBの大きさが得られる。したがって、点Qの座標値が導出される。次に、三角形CEQにおける直角三角形の規則によって、以下の式(8)が得られる。
Figure JPOXMLDOC01-appb-M000008
 上記の式(8)により、CEの大きさが導出される。したがって、CEの方向及び大きさ、並びに、第5頂点Eが位置する平面が既知となり、第5頂点Eの座標値が導出される。
 図31、図32及び図33を用いて説明された複数の導出方法のそれぞれの処理において第5頂点Eが導出される。そして、第5頂点Eから第4頂点Dが導出され得る。例えば、第2三角形CBD及び対応三角形CBEは、1対1で同じである。また、第4頂点Dと第5頂点Eとは共通の辺CBを共有する異なる平面上にある。この場合、辺BCの周りに第5頂点Eをπ-θ(又はθ)の量で回転させることで、第4頂点Dが導出される。ここで、θは第1角度である。
 図45は、サイン関数及びコサイン関数のルックアップテーブルの例を示すテーブル図である。上記のサイン関数及びコサイン関数の計算において、図45に示されたルックアップテーブルが用いられてもよい。
 図46は、本態様に係る復号装置200の構成例を示すブロック図である。復号装置200は、ビットストリームから三次元メッシュを復号する。図46に示されるように、復号装置200は、トラバーサ261、スイッチ262、角度復号器263、座標導出器264、座標復号器265及びエントロピー復号器266を備える。
 エントロピー復号器266は、ビットストリームを取得する。エントロピー復号器266は、ビットストリームを圧縮解除することにより圧縮解除情報を取得し、圧縮解除情報を出力する。エントロピー復号が準じる符号化方式の例は、ハフマン符号化、算術符号化、範囲符号化、ANS(非対称記数法:Asymmetric Numeral Systems)、又は、CABAC(コンテキスト適応型二値算術符号化:Context-Adaptive Binary Arithmetic Coding)であってもよい。
 圧縮解除情報は、トラバーサ261に入力される。トラバーサ261は、圧縮解除情報を解釈し、スイッチ262を介して圧縮解除情報を角度復号器263及び座標復号器265のいずれかに出力する。
 座標復号器265は、圧縮解除情報から、第1平面上に第1三角形を形成する3つの頂点を復号する。3つの頂点を復号する例として、圧縮解除情報から、第1頂点Aの座標値と、2つの差分値とが復号される。次に、第1頂点Aの座標値に2つの差分値を追加することにより、第2頂点Bの座標値、及び、第3頂点Cの座標値が導出される。
 角度復号器263は、圧縮解除情報から3つの角度を復号し、3つの角度を座標導出器264に出力する。
 座標導出器264は、3つの角度を用いて、第1三角形と共通の辺を有する第2三角形の頂点を導出する。第2三角形は、第1平面とは異なる平面上にあってもよいし、第1平面と同じ平面上にあってもよい。具体的には、座標導出器264は、図31、図32及び図33を用いて上述された導出方法を用いて、3つの角度から第2三角形の頂点を導出する。
 座標導出器264又は座標復号器265で得られた頂点を示す頂点情報は、三次元メッシュの頂点情報として出力される。また、この頂点情報は、トラバーサ261にフィードバックされて、次のトラバーサルの決定に用いられる。
 復号装置200は、上記の構成及び処理に従って、三次元メッシュを復号する。これにより、三次元メッシュの符号量が抑制される場合がある。
 上記の説明において、対応三角形は、第2三角形に対して合同の三角形であるが、第2三角形に対して相似の三角形であってもよい。第2三角形と対応三角形とが相似であっても、第2三角形と対応三角形との対応関係が既知であれば、第2三角形と対応三角形との対応関係に従って、第5頂点Eから第4頂点Dが導き出され得る。また、対応三角形は、第1平面に対する第2三角形の正射影であってもよい。この場合も、第2三角形と対応三角形との対応関係に従って、第5頂点Eから第4頂点Dが導き出され得る。
 <頂点情報の符号化及び復号の第1態様に関する補足>
 本開示における頂点情報の符号化処理は、例えば、V-PCC(Point Cloud Compression)及びG-PCC(Geometry-based Point Cloud Compression)などの点群圧縮方式における点の位置情報の符号化に適用可能である。
 符号化装置100は、基準の第1三角形又はその3つの頂点である第1頂点A、第2頂点B及び第3頂点Cから、第2三角形の第4頂点Dを特定するための情報を符号化する。復号装置200は、基準の第1三角形又はその3つの頂点である第1頂点A、第2頂点B及び第3頂点Cから、第2三角形の第4頂点Dを特定するための情報を復号する。
 第4頂点Dを特定するための情報は、二面角を示す二面角情報、及び、第5頂点Eを特定するための特定情報を含む。二面角情報によって示される二面角は、第1三角形を含む第1平面と、第2三角形を含む第2平面とのなす二面角である。特定情報によって特定される第5頂点Eは、第1平面上の頂点であって、第2三角形に対応する対応三角形の頂点である。
 第5頂点Eは、第1平面上の頂点であるため、第1平面上の第1三角形から比較的容易に特定可能である。また、第2三角形と対応三角形との対応関係、及び、第1平面と第2平面とのなす二面角に従って、第5頂点Eから第4頂点Dが導出され得る。二面角は、例えば-180度から180度までの範囲であるため、符号量の増大が抑制される。したがって、上記の構成及び処理によって、第4頂点Dの効率的な符号化及び復号が行われ得る。
 なお、第4頂点Dを特定するための情報は、上記の特定情報として、又は、上記の特定情報に代えて、「(1)多角形(対応三角形BEC)の頂点(第5頂点E)の位置情報」又は「(2)多角形(対応三角形BEC)の位置及び形に関する情報」を含んでいてもよい。
 また、第4頂点Dを特定するための情報は、上記の二面角情報として、又は、上記の二面角情報に代えて、「(3)多角形(対応三角形BEC)の頂点(第5頂点E)の位置と、処理対象頂点(第4頂点D)の位置との距離及び方向を示す情報」を含んでいてもよい。また、第4頂点Dを特定するための情報は、上記の二面角情報として、又は、上記の二面角情報に代えて、「(4)多角形(対応三角形BEC)を含む平面と、処理対象頂点(第4頂点D)を有する多角形(第2三角形BDC)を含む平面との差分を示す情報」を含んでいてもよい。
 また、上記のいずれかの情報が角度を用いて示されてもよい。これにより、符号量を低減し、予測の柔軟性及び精度が向上する可能性がある。また、上記のどの情報を用いるかを示す情報が符号化されてもよい。
 また、例えば、上記の構成及び処理に、以下の例が加えられてもよいし、上記の構成及び処理の少なくとも一部が以下の例に置換されてもよい。
 例えば、「(1)多角形の頂点の位置情報」は、対応三角形BECの第2頂点B、第3頂点C及び第5頂点Eの座標値を示してもよい。基準の第1三角形の位置及び形に関する情報、又は、第1頂点A、第2頂点B及び第3頂点Cの位置情報が特定されている場合、多角形の頂点の位置情報は、第5頂点Eの座標値のみを示してもよい。
 処理対象の第4頂点Dの位置情報の導出に第1三角形ABCを含む平面と同一平面に存在する第5頂点Eを用いることが予め規定又は特定されている場合、第5頂点Eの座標値は、二次元座標値で表現されてもよい。座標値は、他の座標値との差分を用いて表現されてもよく、第5頂点Eの座標値は、第1頂点A、第2頂点B又は第3頂点Cの座標値に対する差分を示すベクトルを用いて表現されてもよい。
 また、例えば、多角形は、三角形以外でもよく、四角形であってもよい。
 例えば、「(2)多角形の位置及び形に関する情報」は、対応三角形BECの位置及び形を特定する情報であってもよい。基準の第1三角形ABCの位置及び形に関する情報、又は、第1頂点A、第2頂点B及び第3頂点Cの位置情報が特定されている場合、対応三角形BECの位置及び形を特定する情報は、辺BCを示す情報、辺BCと辺CEとのなす角度、及び、辺BCと辺BEとのなす角度を示していてもよい。ここで、辺BCを示す情報は、対応三角形BECを用いることを示す情報に対応する。
 辺BCを示す情報の代わりに、第1頂点Aを示す情報を符号化してもよい。第1頂点Aを示す情報は、第5頂点Eが辺BCを挟んで第1頂点Aの反対側にあることを示す情報に対応する。
 処理対象の第4頂点Dの位置情報の導出に、第1三角形ABCと同一平面上の対応三角形BECを用いることが予め規定又は特定されている場合、第5頂点Eに関して上記2つの角度のみが符号化されてもよい。これにより、2つの角度のみから、対応三角形BECの位置及び形、すなわち第5頂点Eの位置情報を導出することが可能になり、第5頂点Eの座標値を符号化する場合と比較して符号量を削減することが可能になる。
 上記2つの角度のそれぞれとして、角度そのものが符号化されてもよいし、予め規定された複数の角度のうち1つの角度を特定するインデックスが符号化されてもよい。2つの角度の複数の組み合わせが予め規定されていてもよい。そして、複数の組み合わせのうち1つの組み合わせを特定するインデックスが符号化されてもよい。
 上記2つの角度の代わりに、1つの角度と1つの辺の長さとを示す情報が符号化されてもよい。例えば辺BCと辺BEとのなす角度と、辺BEの長さとが符号化されてもよい。また、上記2つの角度の代わりに、1つの角度と1つの垂線の長さとを示す情報が符号化されてもよい。例えば辺BCと辺BEとのなす角度と、第5頂点Eから辺BCに下した垂線の長さとを符号化してもよい。
 また、上記2つの角度の代わりに、2つの辺の長さを示す情報が符号化されてもよい。例えば辺BE及び辺CEの長さが符号化されてもよい。
 例えば、「(3)多角形の頂点の位置と、処理対象頂点の位置との距離及び方向を示す情報」は、対応三角形BECの第5頂点Eと、処理対象の第4頂点Dとの距離及び方向を示す差分ベクトルを示してもよい。第4頂点Dの位置が第5頂点Eの位置と一致する場合、又は、第4頂点Dが第5頂点Eと同一平面上に位置する場合、この情報は省略されてもよい。
 例えば、「(4)多角形を含む平面と、処理対象頂点を有する多角形を含む平面との差分を示す情報」は、対応三角形BECを含む平面と、第2三角形BDCを含む平面とのなす角度を示してもよい。角度として、例えば辺BEと辺BDとのなす角度、又は、辺CEと辺CDとのなす角度が符号化されてもよい。
 辺BEと辺BDとのなす角度、又は、辺CEと辺CDとのなす角度として、角度そのものが符号化されてもよいし、予め規定された複数の角度のうち1つの角度を特定するインデックスが符号化されてもよい。予め規定された複数の角度は、辺BCと辺CEとのなす角度、及び、辺BCと辺BEとのなす角度の導出時にも共通して用いられてもよい。
 また、辺BEと辺BDとのなす角度、辺CEと辺CDとのなす角度、辺BCと辺CEとのなす角度、及び、辺BCと辺BEとのなす角度の複数の組み合わせを示すインデックスが予め規定されていてもよい。これにより、角度そのものを符号化する場合と比較して符号量をさらに低減することが可能となる。
 第4頂点Dの位置が第5頂点Eの位置と一致する場合、又は、第4頂点Dが第5頂点Eと同一平面上に位置する場合、角度は省略されてもよい。また、角度がインデックスで表現される場合、角度が整数精度で表現される場合、又は、座標値が整数精度で表現される場合などにおいて、角度に加えて差分ベクトルが符号化されてもよい。これにより、導出した第4頂点Dの座標値を修正することが可能となり、符号化の精度を向上させることが可能となる。
 また、第4頂点Dは、他の頂点に対して、第1頂点A、第2頂点B又は第3頂点Cとして用いられてもよい。
 また、処理対象頂点ごとに、符号化方法又は復号方法等の処理方法が選択されることで、複数の処理方法が切り替えられてもよい。この場合、処理対象頂点を符号化するために用いられた処理方法を示す情報が符号化されてもよい。あるいは、三次元メッシュ単位で処理方法が選択されることで、複数の処理方法が切り替えられてもよく、処理方法を示す情報が三次元メッシュ単位で符号化されてもよい。
 これにより、三次元メッシュの特性に応じた処理方法を選択することが可能になる場合があり、主観画質の向上及び符号量の削減を促進することが可能になる場合がある。
 また、本開示に記載の差分(Difference)は、偏差(Deviation)、残差(Residual)又はデルタ(Delta)など言い換えられてもよい。また、本開示に記載の頂点は、頂点の位置を意味する場合がある。
 また、上記の説明における対応三角形は、予測三角形と表現されてもよいし、仮想対応三角形と表現されてもよい。また、対応三角形の第5頂点Eは、対応頂点、対応点、予測頂点又は予測点と表現されてもよい。
 <頂点情報の符号化及び復号の第2態様>
 頂点情報の符号化及び復号の第2態様は、頂点情報の符号化及び復号の第1態様に組み合わせ可能な態様である。
 メッシュ符号化においてどのような予測方法が用いられるかにかかわらず、入力三次元メッシュの不完全性によって、特別なハンドリングツールを要する例外が引き起こされる。例外は、接続性、ジオメトリ座標、又は、プロパティ属性等のような、ポリゴンメッシュの様々な構成要素に存在し得る。3Dモデルでよく見られる欠陥は、退化した面、重複頂点、及び、接続されていない部分である。
 現実の様々なハードウェアで撮影された3Dグラフィカルデータには、退化した面、重複頂点、及び、接続されていない部分のような不規則性が存在しがちである。退化した面は、面を構成する複数の頂点のうち少なくとも2つが同一の頂点インデックスを持つ場合に発生し、そのため表面積がゼロになり、表面法線が不定になる。
 重複頂点は、座標が全く同じであるが、2つ以上の異なるインデックスで表現される。したがって、同じ点が異なる面では異なるインデックスで表現される。したがって、メッシュのトポロジーのトラバースにおいて、これらの頂点は非同一とみなされ、過去に符号化された頂点を用いることに依存する符号化技術の破綻を招く。また、ポリゴンメッシュには、接続されていない部分、つまり完全でない部分があり得るため、モデル全体をトラバースすることが困難な場合がある。
 例外的なケースを解決するため、角度ベースの3Dグラフィックス符号化技術の実装を可能にする仮想参照三角形が生成される。仮想参照三角形は、過去に符号化された頂点と、所定条件に従って選択されたダミー頂点との組み合わせを用いて構築されてもよい。3Dモデルの例外処理が、符号化装置100から復号装置200へ、モード設定パラメータを用いて指示されてもよい。
 本態様では、例外が発生した場合に仮想参照三角形を用いて新たな頂点を符号化することが可能になる。
 <第2態様に係る符号化処理の例>
 図47は、本態様に係る符号化処理の例を示すフローチャートである。まず、三次元メッシュから第1頂点、第2頂点及び第3頂点の接続情報が導出される(S121)。ここで、第1頂点、第2頂点及び第3頂点は、第1三角形を形成する。
 次に、導出された接続情報が条件を満たすか否かが判定される(S122)。ここで、次の2種類の条件があり得る。第1条件は、第1頂点、第2頂点及び第3頂点が互いに接続されていることである。第2条件は、第1頂点、第2頂点及び第3頂点が既に符号化されていることである。なお、接続情報のみでなく、頂点情報が導出され、これらの判定に用いられてもよい。
 図48は、本態様に係るメッシュの例を示す概念図である。A1、B1、C1、D1、E1及びF1は、ジオメトリマップ内の頂点である。
 図49は、断片化されたメッシュの例であって、三角形を構成する3つの頂点のうちのいくつかが接続されていない例を示す概念図である。A2、B2、C2、D2、E2及びF2は、接続性マップにおける頂点である。図49において、実線は、接続を示し、点線は、非接続を示す。なお、線が無い部分も、非接続である。頂点D1の符号化において、A2とC2との間、及び、A2とB2との間には接続性がないため、三角形A1B1C1の頂点A1は利用に適していない。
 なお、2つの頂点の間に接続性がないことは、2つの頂点が接続されていないことを意味し、2つの頂点の間の辺に接続性がないとも表現される。
 図50は、頂点が重複しているメッシュの例を示す概念図であって、参照三角形の頂点が符号化対象頂点の符号化前に符号化されていない例を示す。頂点C及び頂点Fは、メッシュにおける2つの異なる点であり、メッシュにおいて異なる面に存在する。頂点C及び頂点Fは、同じ座標を持つので、重複点として表示される。
 まず、トラバース順序で、頂点A、B及びCが符号化される。次に、頂点Dは、参照三角形ABCを用いて角度方法で符号化される。次に、参照三角形BDFを用いて頂点Eを符号化する際、頂点Fはまだ符号化されていない。
 また、三次元像を効率的に表現するため、三次元メッシュにおいて仮想頂点及び仮想三角形が用いられる場合があり、このような場合にも、頂点が符号化されていなかったり、頂点間に接続性がなかったりする可能性がある。
 図47において、導出された接続情報が条件を満たすと判定された場合(S122でYes)、第1頂点、第2頂点及び第3頂点が3つの頂点として導出される(S123)。ここで、第2頂点、第3頂点及び第4頂点は、三次元メッシュ上で第2三角形を形成し、第4頂点は、第1頂点の反対側にある。
 図31は、3つの頂点の位置の例を示し、B及びCは第2頂点及び第3頂点であり、Aは第1頂点であり、Dは第4頂点である。ABCで形成される参照三角形は、頂点Dを符号化するために用いられ得る。
 図47において、導出された接続情報が条件を満たさないと判定された場合(S122でNo)、少なくとも第5頂点を含む3つの頂点が導出される(S124)。第5頂点は、第1頂点、第2頂点及び第3頂点とは異なる。なお、本態様における第5頂点は、第1頂点、第2頂点及び第3頂点のいずれかの代わりに用いられる頂点であって、第1態様における第5頂点とは異なる意味を有する。
 図51は、過去に符号化された頂点セットを用いる例外処理の例を示す概念図である。この例は、頂点Bが条件を満たさない(存在しない、又は、未だ符号化されていない)場合の例である。BCDの参照三角形は、頂点Eの符号化に用いられ得ない。頂点Bは、以前に符号化された頂点A(第5頂点)に置き換えられ、頂点Eの符号化に用いられ得る新しい仮想参照三角形ACDが形成される。
 別の例では、第5頂点は、予め定義された座標を有するダミー頂点として作成されてもよい。仮想参照三角形は、ダミー頂点を含んで形成されてもよい。符号化装置100が、ダミー頂点を計算してもよい。また、ダミー頂点は、固定座標(1、0、0)、(0、1、0)及び(0、0、1)に予め定義され、これらのダミー頂点が第1頂点、第2頂点及び第3頂点の役割を果たしてもよい。
 ダミー頂点の座標は、モデル固有の方法で選択されてもよい。一例において、符号化装置100が、オブジェクトの3Dバウンディングボックスの寸法を計算して、それらの値を用いてダミー頂点を作成してもよい。作成されたダミー頂点は、ビットストリームでシグナリングされてもよい。また、条件を満たさない複数の頂点が存在する場合、条件を満たさない複数の頂点の数と同じ数の、ダミー頂点、又は、過去に符号化された頂点が用いられてもよい。
 図47において、導出された3つの頂点で形成される三角形から第4頂点を特定するための複数の角度が導出される(S125)。ここで、第4頂点は、導出された3つの頂点に基づいて形成される三角形と共通の辺を用いて第2三角形を形成する。導出される複数の角度の数は、第4頂点の符号化に用いられる予測方法に依存する。図31、図32及び図33は、第4頂点と、導出された3つの頂点A、B及びCとを用いて、少なくとも複数の角度を導出する異なる例を示す。
 複数の角度がビットストリームに符号化される(S126)。複数の角度を符号化する例は、エントロピー符号化を用いることである。エントロピー符号化が準じる符号化方式の例は、ハフマン符号化、算術符号化、範囲符号化、非対称数字システム(ANS)、又は、コンテキスト適応型二値算術符号化(CABAC)であってもよい。
 図52は、本態様に係る符号化処理の具体例を示すフローチャートである。図52に示されたフローチャートでは、図30に示されたフローチャートと比較して、例外を用いて頂点を符号化する処理(S131)が追加されている。この処理(S131)は、図47に示された処理(S124、S125、S126)に対応する。つまり、例外を用いて頂点を符号化する処理は、メッシュデータの圧縮に用いられる符号化モードの1つである。
 図53は、本態様に係る符号化装置100の構成例を示すブロック図である。符号化装置100は、三次元メッシュをビットストリームに符号化する。図53に示すように、符号化装置100は、トラバーサ161、判定器167、例外処理器168、角度導出器163及びエントロピー符号化器166を備えていてもよい。
 トラバーサ161は、三次元メッシュを取得する。また、トラバーサ161は、三次元メッシュから導出される第1頂点、第2頂点及び第3頂点の接続情報を判定器167に出力する。また、トラバーサ161は、三次元メッシュにおける符号化対象の第4頂点を決定する。ここで、第1頂点、第2頂点及び第3頂点は、第1三角形を形成し、第4頂点を含む第2三角形と共通の辺を有する。
 判定器167は、接続情報が条件を満たすかをチェックする。連結情報が条件を満たすと判定された場合、角度導出器163は、第1頂点、第2頂点及び第3頂点を用いて処理を行う。
 例外処理器168は、接続情報が条件を満たさないと判定された場合、少なくとも第5頂点を含む3つの頂点を導出する。角度導出器163は、少なくとも第5頂点を含む3つの頂点を用いて処理を行う。
 角度導出器163は、3つの頂点、及び、第4頂点を用いて、複数の角度を導出する。頂点がジオメトリ座標を表す例では、3つの角度が導出される。導出される複数の角度の数は、第4頂点の符号化に用いられる予測方法に依存する。
 エントロピー符号化器166は、角度導出器163で導出された複数の角度をビットストリームに符号化する。
 <第2態様に係る復号処理の例>
 図54は、本態様に係る復号処理の例を示すフローチャートである。まず、ビットストリームから第1頂点、第2頂点及び第3頂点の接続情報が導出される(S221)。ここで、第1頂点、第2頂点及び第3頂点は、第1三角形を形成する。
 次に、導出された接続情報が条件を満たすか否かが判定される(S222)。ここで、次の2種類の条件があり得る。第1条件は、第1頂点、第2頂点及び第3頂点が互いに接続されていることである。第2条件は、第1頂点、第2頂点及び第3頂点が既に復号されていることである。なお、接続情報のみでなく、頂点情報が導出され、これらの判定に用いられてもよい。
 図48は、本態様に係るメッシュの例を示す概念図である。A1、B1、C1、D1、E1及びF1は、ジオメトリマップ内の頂点である。
 図49は、断片化されたメッシュの例であって、三角形を構成する3つの頂点のうちのいくつかが接続されていない例を示す概念図である。A2、B2、C2、D2、E2及びF2は、接続性マップにおける頂点である。図49において、実線は、接続を示し、点線は、非接続を示す。なお、線が無い部分も、非接続である。頂点D1の復号において、A2とC2との間、及び、A2とB2との間には接続性がないため、三角形A1B1C1の頂点A1は利用に適していない。
 なお、2つの頂点の間に接続性がないことは、2つの頂点が接続されていないことを意味し、2つの頂点の間の辺に接続性がないとも表現される。
 図50は、頂点が重複しているメッシュの例を示す概念図であって、参照三角形の頂点が復号対象頂点の復号前に復号されていない例を示す。頂点C及び頂点Fは、メッシュにおける2つの異なる点であり、メッシュにおいて異なる面に存在する。頂点C及び頂点Fは、同じ座標を持つので、重複点として表示される。
 まず、トラバース順序で、頂点A、B及びCが復号される。次に、頂点Dは、参照三角形ABCを用いて角度方法で復号される。次に、参照三角形BDFを用いて頂点Eを復号する際、頂点Fはまだ復号されていない。
 また、三次元像を効率的に表現するため、三次元メッシュにおいて仮想頂点及び仮想三角形が用いられる場合があり、このような場合にも、頂点が復号されていなかったり、頂点間に接続性がなかったりする可能性がある。
 図54において、導出された接続情報が条件を満たすと判定された場合(S222でYes)、第1頂点、第2頂点及び第3頂点が3つの頂点として導出される(S223)。ここで、第2頂点、第3頂点及び第4頂点は、三次元メッシュ上で第2三角形を形成し、第4頂点は、第1頂点の反対側にある。
 図31は、3つの頂点の位置の例を示し、B及びCは第2頂点及び第3頂点であり、Aは第1頂点であり、Dは第4頂点である。ABCで形成される参照三角形は、頂点Dを復号するために用いられ得る。
 図54において、導出された接続情報が条件を満たさないと判定された場合(S222でNo)、少なくとも第5頂点を含む3つの頂点が導出される(S224)。第5頂点は、第1頂点、第2頂点及び第3頂点とは異なる。なお、本態様における第5頂点は、第1頂点、第2頂点及び第3頂点のいずれかの代わりに用いられる頂点であって、第1態様における第5頂点とは異なる意味を有する。
 図51は、過去に復号された頂点セットを用いる例外処理の例を示す概念図である。この例は、頂点Bが条件を満たさない(存在しない、又は、未だ復号されていない)場合の例である。BCDの参照三角形は、頂点Eの復号に用いられ得ない。頂点Bは、以前に復号された頂点A(第5頂点)に置き換えられ、頂点Eの復号に用いられ得る新しい仮想参照三角形ACDが形成される。
 別の例では、第5頂点は、予め定義された座標を有するダミー頂点として作成されてもよい。仮想参照三角形は、ダミー頂点を含んで形成されてもよい。復号装置200が、符号化装置100と同様に、ダミー頂点を計算してもよい。また、ダミー頂点は、固定座標(1、0、0)、(0、1、0)及び(0、0、1)に予め定義され、これらのダミー頂点が、第1頂点、第2頂点及び第3頂点の役割を果たしてもよい。
 ダミー頂点の座標は、モデル固有の方法で選択されてもよい。一例において、復号装置200が、オブジェクトの3Dバウンディングボックスの寸法を計算して、それらの値を用いてダミー頂点を作成してもよい。また、符号化装置100で作成されたダミー頂点が、ビットストリームでシグナリングされ、復号装置200で復号されてもよい。また、条件を満たさない複数の頂点が存在する場合、条件を満たさない複数の頂点の数と同じ数の、ダミー頂点、又は、過去に復号された頂点が用いられてもよい。
 図54において、複数の角度がビットストリームから復号される(S225)。複数の角度を復号する例は、エントロピー復号を用いることである。エントロピー復号が準じる符号化方式の例は、ハフマン符号化、算術符号化、範囲符号化、非対称数字システム(ANS)、又は、コンテキスト適応型二値算術符号化(CABAC)であってもよい。復号される複数の角度の数は、第4頂点の復号に用いられる予測方法に依存する。
 複数の角度を用いて第4頂点が導出される(S226)。ここで、第4頂点は、導出された3つの頂点に基づいて形成される三角形と共通の辺を用いて第2三角形を形成する。図31、図32及び図33は、導出された3つの頂点A、B及びCと、複数の角度とを用いて、第4頂点を導出する異なる例を示す。
 図55は、本態様に係る復号処理の具体例を示すフローチャートである。図55に示されたフローチャートでは、図44に示されたフローチャートと比較して、例外を用いて頂点を復号する処理(S231)が追加されている。この処理(S231)は、図54に示された処理(S224、S225、S226)に対応する。つまり、例外を用いて頂点を復号する処理は、ビットストリームの伸張に用いられる復号モードの1つである。
 図56は、本態様に係る復号装置200の構成例を示すブロック図である。復号装置200は、ビットストリームから三次元メッシュを復号する。図56に示すように、復号装置200は、エントロピー復号器266、トラバーサ261、判定器267、例外処理器268、及び、座標導出器264を備える。
 エントロピー復号器266は、ビットストリームを取得する。また、エントロピー復号器266は、ビットストリームから、第1頂点、第2頂点及び第3頂点の接続情報と、複数の角度とを復号する。ここで、第1頂点、第2頂点及び第3頂点は、第1三角形を形成する。
 トラバーサ261は、エントロピー復号器266で復号された接続情報を判定器267に出力する。
 判定器267は、接続情報が条件を満たすかをチェックする。接続情報が条件を満たすと判定された場合、座標導出器264は、第1頂点、第2頂点及び第3頂点を用いて処理を行う。
 例外処理器268は、接続情報が条件を満たさないと判定された場合、少なくとも第5頂点を含む3つの頂点を導出する。
 座標導出器264は、3つの頂点、及び、複数の角度を用いて、三次元メッシュにおける第4頂点を導出し、出力する。ここで、第4頂点は、3つの頂点に基づいて形成される三角形と共通の辺を用いて第2三角形を形成する。
 本態様では、頂点の符号化又は復号のための参照三角形が、接続されていない辺、又は、符号化又は復号されていない頂点を含む場合、新しい頂点を用いて新しい仮想参照三角形が形成される。これにより、頂点の符号化又は復号が効率的に行われる。
 <頂点情報の符号化及び復号の第2態様に関する補足>
 本態様では、図47又は図54に示されたように、参照三角形の情報が条件を満たすか否かの判定結果に基づいて、例外処理を実行するか否かが選択される。条件としては、例えば以下の条件であるとよい。
 (i)参照三角形の各辺が接続性(コネクティビティ)を有していること(図49参照)。例えば、参照三角形の頂点のうち、処理対象頂点を含む三角形と参照三角形とで共有する辺を挟んで処理対象頂点と反対の位置にある頂点が、参照三角形の他の頂点と接続していること。
 (ii)参照三角形の各頂点が既に符号化又は復号されていること。
 なお、上記の(i)及び(ii)の条件は一例であり、どちらか一方の条件のみが判定に用いられてもよいし、異なる条件が追加されてもよいし、少なくとも一方が異なる条件に置き換えられてもよい。言い換えれば、参照三角形を用いて頂点を処理(符号化又は復号)する第1処理と、参照三角形とは異なる三角形を用いて対象の頂点を処理する第2処理とが選択又は切替え可能な構成において、その選択又は切替えの条件として参照三角形の情報が用いられてもよい。
 参照三角形は、処理対象頂点を有する三角形と頂点又は辺を共有する三角形と定義され得る。参照三角形とは異なる三角形は、処理対象頂点を有する三角形と頂点及び辺の少なくとも一方を共有しない三角形であってもよい。なお、いずれの三角形も、三角形とは異なる多角形であってもよい。
 第1処理と第2処理との選択又は切替えの判定に、参照三角形の頂点の位置情報、接続情報、及び、頂点が利用可能か否かの情報(頂点が存在するか否か、又は、頂点が既に符号化又は復号されたか否か)、のいずれか、又は、任意の組み合わせが用いられてもよい。また、他の三角形の情報、又は、処理対象頂点を有する三角形の頂点の情報などが用いられてもよい。
 第1処理と第2処理とを選択または切替える代わりに、第1処理と第2処理とを含む複数の処理の中から、処理が選択又は切替えられてもよい。すなわち、複数の処理は、第1処理及び第2処理とは異なる処理を含んでいてもよい。
 また、上述したように、第1処理では参照三角形が用いられ、第2処理では参照三角形とは異なる三角形が用いられるが、第1処理及び第2処理は、これらに限定されない。すなわち、第1処理と第2処理とで同じ三角形が用いられてもよい。
 例えば、第1処理は、参照三角形を用いて行われる処理であって、第2処理は、参照三角形を用いて行われる別の処理であってもよい。あるいは、第1処理が、参照三角形とは異なる三角形を用いて行われる処理であって、第2処理は、参照三角形とは異なる三角形を用いて行われる別の処理であってもよい。
 また、例えば、第1処理が、参照三角形を用いて行われる処理であって、第2処理が、少なくとも1つの辺がコネクティビティを有しない別の三角形を用いて行われる処理であってもよい。
 また、この場合、第3処理として、各辺がコネクティビティを有する更に別の三角形を用いて行われる処理が定義されてもよい。そして、第1処理、第2処理及び第3処理を含む複数の処理の中から、処理が選択又は切替えられてもよい。
 また、この場合、条件の判定結果に基づいて、選択可能な例外処理が異なっていてもよい。条件の判定結果と例外処理との組み合わせとしては、例えば以下の構成であってもよい。
 一例として、上述した(i)の条件に関連して、参照三角形の各頂点が処理済み(符号化済み又は復号済み)ではあるが、参照三角形のいずれかの辺がコネクティビティを有していない場合、第1処理及び第3処理を含む複数の処理の中から処理が選択されてもよい。
 ここで、第1処理が実行される場合、コネクティビティの有無に関わらず参照三角形を用いるため処理量の増加を抑制できる可能性がある。第3処理が実行される場合、処理対象頂点を有する三角形が構成するオブジェクトと同一のオブジェクトを構成する三角形が用いられる可能性があり、第1処理よりも効率的に処理対象頂点を示すことが可能になる場合がある。
 また、他の例として、上述した(ii)の条件に関連して、参照三角形の頂点が処理済み(符号化済み又は復号済み)ではない場合、第2処理及び第3処理を含む複数の処理の中から処理が選択されてもよい。言い換えれば、コネクティビティに関わらず、参照三角形とは異なる三角形を用いて処理が行われてもよい。第3処理の場合、第2処理よりも効率的に処理が行われる可能性がある。
 また、他の例として、上述した(i)及び(ii)の少なくとも一方の条件が満たされない場合、常に上述した第3処理が選択されてもよい。言い換えれば、(i)及び(ii)の少なくとも一方の条件が満たされない場合、当該参照三角形を利用不可として設定し、各頂点が処理済みで、かつ、各辺がコネクティビティを有する別の三角形を用いて処理が行われてもよい。この構成によって、より効率的に処理が行われる可能性がある。
 なお、本開示における頂点の位置情報は、ジオメトリの座標の情報に限定されず、ジオメトリとは異なる他の位置情報であってもよい。
 例えば、例外が発生した場合、符号化又は復号に用いられ得ない頂点は、既に符号化又は復号された頂点に置き換えられる。既に符号化又は復号された頂点の例は、メッシュにおいて符号化又は復号された部分のうちの最後の3つの頂点である。
 1つ以上の追加の頂点が、新しい参照三角形の形成に用いられてもよい。どの頂点が参照三角形の形成に用いられるかを示すインデックスが、符号化装置100から復号装置200へシグナリングされてもよい。このようなシグナリングは、例外の場合だけでなく、例外でない場合に適用されてもよい。また、このようなシグナリングは、「角度」の予測モードだけでなく、平行四辺形予測モードのような参照三角形を用いる他の予測モードに適用されてもよい。
 例えば、例外が発生した場合、予め定義された頂点を用いてダミーの参照三角形が生成される。予め定義された頂点は、(1、0、0)、(0、1、0)及び(0、0、1)であってもよい。そして、予め定義された頂点を用いて、新しい参照用三角形が作成されてもよい。そして、新しい参照三角形は、頂点の処理に用いられてもよい。
 図57は、本態様に係る例外処理の例を示すフローチャートである。例えば、予め定義された値を用いて、参照三角形の頂点が設定される(S301)。そして、参照三角形を用いて、新たな三角形の頂点の符号化又は復号が行われる。
 図58は、本態様に係る符号化処理の別の例を示すフローチャートである。まず、符号化装置100は、符号化対象となる第4頂点の座標をメッシュから導出する(S151)。ここで、第4頂点を有する三角形は、第2三角形として定義され、第2三角形と辺を共有する三角形が、参照三角形として定義される。
 符号化装置100は、参照三角形の接続情報をメッシュから導出する(S152)。以降のステップでは、符号化装置100は、参照三角形の接続情報が条件を満たすか否かを判定し、判定結果に基づいて頂点座標の符号化処理を実行する。ここでは、判定処理として以下の2つを例示する。
 (i)参照三角形の各辺がコネクティビティを有しているか否か(S153)。例えば、参照三角形と第2三角形とが共有する辺の両端の頂点が、参照三角形の残りの頂点に接続しているか否か。
 (ii)参照三角形の各頂点が既に符号化されているか否か(S154)。
 上記(i)及び(ii)の少なくともいずれかにおいて判定結果が否であった場合(S153でNo又はS154でNo)、符号化装置100は、本開示で例示した例外処理に基づいて、第4頂点の座標を特定するための情報を符号化する(S155、S156)。一方、上記(i)及び(ii)の両方を満たす場合(S153でYes及びS154でYes)、符号化装置100は、参照三角形に基づいて、第4頂点の座標を特定するための情報を符号化する。ここでは符号化に角度情報を用いる例が示されている(S156)。
 なお、(i)を満たさない場合の例外処理と、(ii)を満たさない場合の例外処理とは、互いに異なる処理であってもよい。また、接続情報のみでなく、頂点情報が導出され、判定に用いられてもよい。
 図59は、本態様に係る復号処理の別の例を示すフローチャートである。まず、復号装置200は、復号対象の第4頂点の座標を特定するための情報をビットストリームから取得する。ここでは角度情報を復号する例が示されている(S251)。ここでは、第4頂点を有する三角形が、第2三角形として定義され、第2三角形と辺を共有する三角形が、参照三角形として定義される。
 復号装置200は、参照三角形の接続情報をビットストリームから導出する(S252)。以降のステップでは、復号装置200は、参照三角形の接続情報が条件を満たすか否かを判定し、判定結果に基づいて頂点座標の復号処理を実行する。ここでは、判定処理として以下の2つを例示する。
 (i)参照三角形の各辺がコネクティビティを有しているか否か(S253)。例えば、参照三角形と第2三角形とが共有する辺の両端の頂点が、参照三角形の残りの頂点に接続しているか否か。
 (ii)参照三角形の各頂点が既に復号されているか否か(S254)。
 上記(i)及び(ii)の少なくともいずれかにおいて判定結果が否であった場合(S253でNo又はS254でNo)、復号装置200は、本開示で例示した例外処理に基づいて、第4頂点の座標を導出(復号)する(S255、S256)。一方、上記(i)及び(ii)の両方を満たす場合(S253でYes及びS254でYes)、復号装置200は、参照三角形に基づいて、第4頂点の座標を導出(復号)する。ここでは導出(復号)に角度情報を用いる例が示されている(S256)。
 なお、(i)を満たさない場合の例外処理と、(ii)を満たさない場合の例外処理とは、互いに異なる処理であってもよい。また、接続情報のみでなく、頂点情報が導出され、判定に用いられてもよい。
 図60は、ビットストリームにおけるパラメータの位置の例を示す概念図である。例外処理のための情報は、図60に示すように、ビットストリームにおけるパラメータとしてシグナリングされてもよい。
 図61は、ビットストリームにおけるパラメータの位置の別の例を示す概念図である。例外処理のための情報は、図61に示すように、ビットストリームのヘッダにおけるパラメータとしてシグナリングされてもよい。
 また、パラメータを用いて、例外処理の方法が示されてもよい。一例において、パラメータは、値0又は1を有するインデックスである。値は、予め定義されたダミー頂点を用いるか、又は、シグナリングされるダミー頂点を用いるかを示し得る。シグナリングされるダミー頂点が用いられる場合、パラメータの後に、ダミー頂点もシグナリングされる。
 <代表例>
 図62は、本実施の形態に係る基本的な符号化処理の例を示すフローチャートである。例えば、図24に示された符号化装置100の回路151が、動作において、図62に示された符号化処理を行う。
 具体的には、回路151は、第1三角形が条件を満たす場合(S161でYes)、第1三角形を用いて第2三角形の符号化対象頂点を符号化する通常モードを含む第1モードセットの中から符号化対象頂点を符号化するためのモードを選択する(S162)。一方、回路151は、第1三角形が条件を満たさない場合(S161でNo)、第1三角形とも第2三角形とも異なる第3三角形を用いて符号化対象頂点を符号化する例外モードを含む第2モードセットの中からモードを選択する(S163)。
 そして、回路151は、モードに従って符号化対象頂点を符号化する(S164)。
 これにより、第1三角形が条件を満たさない場合、第1三角形とは異なる第3三角形を用いて第2三角形の頂点を符号化することが可能になる場合がある。したがって、符号化に適した参照三角形を用いて第2三角形の頂点を符号化することが可能になる場合がある。
 例えば、第3三角形は、第1三角形と辺を共有する三角形であってもよい。これにより、通常モードにおいて用いられる第1三角形の近辺の第3三角形を例外モードにおいて用いることが可能になる場合がある。したがって、通常モードと例外モードとの違いを小さくすることが可能になる場合がある。よって、符号量のばらつきを抑制することが可能になる場合がある。
 また、例えば、第3三角形は、第2三角形と辺を共有する三角形であってもよい。これにより、第2三角形の近辺の第3三角形を例外モードにおいて用いることが可能になる場合がある。したがって、符号化対象頂点の近辺の第3三角形を用いて効率的に符号化対象頂点を符号化することが可能になる場合がある。
 また、例えば、第3三角形は、第1三角形と頂点を共有する三角形であってもよい。これにより、通常モードにおいて用いられる第1三角形の近辺の第3三角形を例外モードにおいて用いることが可能になる場合がある。したがって、通常モードと例外モードとの違いを小さくすることが可能になる場合がある。よって、符号量のばらつきを抑制することが可能になる場合がある。
 また、例えば、第3三角形は、各頂点が符号化済みである三角形であってもよい。これにより、三次元メッシュの特性が反映された第3三角形を用いて符号化対象頂点を符号化することが可能になる場合がある。したがって、効率的に符号化対象頂点を符号化することが可能になる場合がある。
 また、例えば、第3三角形は、各辺が接続性を有している三角形であってもよい。これにより、三次元メッシュの特性が反映された第3三角形を用いて符号化対象頂点を符号化することが可能になる場合がある。したがって、効率的に符号化対象頂点を符号化することが可能になる場合がある。
 また、例えば、第3三角形は、ダミーの頂点を有する三角形であってもよい。これにより、任意の頂点を有する第3三角形を用いて符号化対象頂点を符号化することが可能になる場合がある。したがって、柔軟に符号化対象頂点を符号化することが可能になる場合がある。
 また、例えば、例外モードは、複数のサブモードを含んでいてもよい。そして、回路151は、モードとして例外モードが選択される場合、複数のサブモードの中から、符号化対象頂点を符号化するためのサブモードを選択してもよい。これにより、例外モードにおいて複数のサブモードの中から選択されるサブモードに従って符号化対象頂点を符号化することが可能になる場合がある。したがって、複数の例外処理方法の中から適応的に選択される例外処理方法に従って符号化対象頂点を符号化することが可能になる場合がある。
 また、例えば、回路151は、サブモードを示すパラメータを符号化してもよい。これにより、符号化対象頂点を符号化するためのサブモードの情報をパラメータに従って符号化装置100と復号装置200との間で共有することが可能になる場合がある。したがって、パラメータに従って、符号化及び復号に同じサブモードを適用することが可能になる場合がある。
 また、例えば、回路151は、サブモードに従って、第3三角形を決定してもよい。これにより、複数のサブモードの中からサブモードを選択することで、符号化に適した第3三角形を選択することが可能になる場合がある。よって、符号化に適した第3三角形を用いて符号化対象頂点を効率的に符号化することが可能になる場合がある。
 また、例えば、回路151は、サブモードに従って、第3三角形の頂点を決定してもよい。これにより、複数のサブモードの中からサブモードを選択することで、符号化に適した第3三角形の頂点を選択することが可能になる場合がある。よって、符号化に適した第3三角形を用いて符号化対象頂点を効率的に符号化することが可能になる場合がある。
 また、例えば、条件は、第1三角形の各頂点が符号化済みであることを含んでいてもよい。これにより、第2三角形の頂点の符号化に、いずれかの頂点が符号化済みでない第1三角形が用いられることを抑制することが可能になる場合がある。そして、第2三角形の頂点の符号化に適したモードを用いることが可能になる場合がある。
 また、例えば、条件は、第1三角形の各辺が接続性を有していることを含んでいてもよい。これにより、第2三角形の頂点の符号化に、いずれかの辺が接続性を有していない第1三角形が用いられることを抑制することが可能になる場合がある。そして、第2三角形の頂点の符号化に適したモードを用いることが可能になる場合がある。
 また、例えば、回路151は、例外モードに従って符号化対象頂点を符号化する場合、第3三角形を用いて符号化対象頂点を示す角度を符号化してもよい。
 これにより、符号量が大きくなり過ぎることを抑制することが可能になる場合がある。すなわち、ワーストケースの符号量を抑制することが可能になる場合がある。
 また、例えば、第1三角形と第2三角形とは辺を共有していてもよい。また、第1三角形と第2三角形とが共有する辺は、第2三角形における符号化対象頂点の対辺に対応していてもよい。
 また、例えば、第3三角形は、第1三角形と第2三角形とが共有する辺を有していてもよい。つまり、第1三角形と第2三角形と第3三角形とが辺を共有していてもよい。この場合、第3三角形は、第1三角形と辺を共有し、第2三角形と辺を共有し、第1三角形と頂点を共有し、第2三角形と頂点を共有する。ただし、第3三角形は、このような三角形に限られず、例えば第1三角形の任意の辺又は任意の頂点を有していてもよい。
 また、例えば、通常モードは、第1三角形及び1つ以上の角度を用いて符号化対象頂点を符号化するモードであってもよい。例外モードは、第3三角形及び1つ以上の角度を用いて符号化対象頂点を符号化するモードであってもよい。
 また、例えば、第1モードセットと第2モードセットとは互いに異なる。具体的には、通常モードは、第2モードセットに含まれず、第1モードセットのみに含まれてもよい。また、例外モードは、第1モードセットに含まれず、第2モードセットのみに含まれてもよい。
 また、例えば、第1モードセットは、座標を用いて符号化対象頂点を符号化するモード、平行四辺形を用いて符号化対象頂点を符号化するモード、及び、多項式を用いて符号化対象頂点を符号化するモードのうち、少なくとも1つを含んでいてもよい。ここで、平行四辺形は、第1三角形に基づいていてもよい。そして、通常モードは、第1三角形に基づく平行四辺形を用いて符号化対象頂点を符号化するモードであってもよい。
 また、例えば、第2モードセットは、座標を用いて符号化対象頂点を符号化するモード、平行四辺形を用いて符号化対象頂点を符号化するモード、及び、多項式を用いて符号化対象頂点を符号化するモードのうち、少なくとも1つを含んでいてもよい。ここで、平行四辺形は、第3三角形に基づいていてもよい。そして、例外モードは、第3三角形に基づく平行四辺形を用いて符号化対象頂点を符号化するモードであってもよい。
 また、例えば、第1モードセットは、通常モードのみを含んでいてもよい。そして、回路151は、第1三角形が条件を満たす場合、通常モードを選択してもよい。つまり、回路151は、第1三角形が条件を満たす場合、通常モードに従って、符号化対象頂点を符号化してもよい。
 また、例えば、第2モードセットは、例外モードのみを含んでいてもよい。そして、回路151は、第1三角形が条件を満たさない場合、例外モードを選択してもよい。つまり、回路151は、第1三角形が条件を満たさない場合、例外モードに従って、符号化対象頂点を符号化してもよい。
 また、例えば、回路151は、通常モード及び例外モードを含むモードセットの中からモードを選択してもよい。この場合、モードセットは、第1モードセットと第2モードセットとの両方に対応し得る。そして、回路151は、第1三角形が条件を満たす場合、通常モードを選択し、通常モードに従って、符号化対象頂点を符号化してもよい。また、回路151は、第1三角形が条件を満たさない場合、例外モードを選択し、例外モードに従って、符号化対象頂点を符号化してもよい。
 また、例えば、複数のサブモードは、ダミーの頂点を有する第3三角形を用いて符号化対象頂点を符号化するサブモードを含んでいてもよい。複数のサブモードは、各頂点が符号化済みである第3三角形を用いて符号化対象頂点を符号化するサブモードを含んでいてもよい。複数のサブモードは、各辺が接続性を有する第3三角形を用いて符号化対象頂点を符号化するサブモードを含んでいてもよい。サブモードは、第3三角形の条件に対応していてもよいし、第3三角形の頂点の条件に対応していてもよい。
 つまり、サブモードは、第3三角形又は第3三角形の頂点の選択方法に対応していてもよい。
 また、例えば、通常モードが、複数のサブモードを含んでいてもよい。そして、回路151は、モードとして通常モードが選択される場合、複数のサブモードの中から、符号化対象頂点を符号化するためのサブモードを選択してもよい。回路151は、サブモードに従って、第1三角形又は第1三角形の頂点を決定してもよい。つまり、サブモードは、第1三角形又は第1三角形の頂点の選択方法に対応していてもよい。
 また、例えば、例外モードに含まれるサブモードは、例外サブモードと表現されてもよい。そして、通常モードに含まれるサブモードは、通常サブモードと表現されてもよい。
 また、例えば、モードは、処理と表現されてもよい。そして、通常モード、例外モード及びサブモードは、通常処理、例外処理及びサブ処理と表現されてもよい。
 また、例えば、回路151は、エントロピー符号化によって符号化対象頂点を符号化してもよい。具体的には、回路151は、エントロピー符号化によって符号化対象頂点を示す角度を符号化してもよい。また、例えば、回路151は、符号化対象頂点を特定するための1つ、2つ又は3つの角度を符号化してもよい。
 また、例えば、第1三角形は、参照ルールに従って符号化対象頂点に近い三角形として定められる参照三角形であってもよい。
 また、例えば、上述された各頂点は、三次元メッシュにおけるジオメトリ座標で表現されてもよい。
 図63は、本実施の形態に係る基本的な復号処理の例を示すフローチャートである。例えば、図25に示された復号装置200の回路251が、動作において、図63に示された復号処理を行う。
 具体的には、回路251は、第1三角形が条件を満たす場合(S261でYes)、第1三角形を用いて第2三角形の復号対象頂点を復号する通常モードを含む第1モードセットの中から復号対象頂点を復号するためのモードを選択する(S262)。一方、回路251は、第1三角形が条件を満たさない場合(S261でNo)、第1三角形とも第2三角形とも異なる第3三角形を用いて復号対象頂点を復号する例外モードを含む第2モードセットの中からモードを選択する(S263)。
 そして、回路251は、モードに従って復号対象頂点を復号する(S264)。
 これにより、第1三角形が条件を満たさない場合、第1三角形とは異なる第3三角形を用いて第2三角形の頂点を復号することが可能になる場合がある。したがって、復号に適した参照三角形を用いて第2三角形の頂点を復号することが可能になる場合がある。
 例えば、第3三角形は、第1三角形と辺を共有する三角形であってもよい。これにより、通常モードにおいて用いられる第1三角形の近辺の第3三角形を例外モードにおいて用いることが可能になる場合がある。したがって、通常モードと例外モードとの違いを小さくすることが可能になる場合がある。よって、符号量のばらつきを抑制することが可能になる場合がある。
 また、例えば、第3三角形は、第2三角形と辺を共有する三角形であってもよい。これにより、第2三角形の近辺の第3三角形を例外モードにおいて用いることが可能になる場合がある。したがって、復号対象頂点の近辺の第3三角形を用いて効率的に復号対象頂点を復号することが可能になる場合がある。
 また、例えば、第3三角形は、第1三角形と頂点を共有する三角形であってもよい。これにより、通常モードにおいて用いられる第1三角形の近辺の第3三角形を例外モードにおいて用いることが可能になる場合がある。したがって、通常モードと例外モードとの違いを小さくすることが可能になる場合がある。よって、符号量のばらつきを抑制することが可能になる場合がある。
 また、例えば、第3三角形は、各頂点が復号済みである三角形であってもよい。これにより、三次元メッシュの特性が反映された第3三角形を用いて復号対象頂点を復号することが可能になる場合がある。したがって、効率的に復号対象頂点を復号することが可能になる場合がある。
 また、例えば、第3三角形は、各辺が接続性を有している三角形であってもよい。これにより、三次元メッシュの特性が反映された第3三角形を用いて復号対象頂点を復号することが可能になる場合がある。したがって、効率的に復号対象頂点を復号することが可能になる場合がある。
 また、例えば、第3三角形は、ダミーの頂点を有する三角形であってもよい。これにより、任意の頂点を有する第3三角形を用いて復号対象頂点を復号することが可能になる場合がある。したがって、柔軟に復号対象頂点を復号することが可能になる場合がある。
 また、例えば、例外モードは、複数のサブモードを含んでいてもよい。そして、回路251は、モードとして例外モードが選択される場合、複数のサブモードの中から、復号対象頂点を復号するためのサブモードを選択してもよい。これにより、例外モードにおいて複数のサブモードの中から選択されるサブモードに従って復号対象頂点を復号することが可能になる場合がある。したがって、複数の例外処理方法の中から適応的に選択される例外処理方法に従って復号対象頂点を復号することが可能になる場合がある。
 また、例えば、回路251は、サブモードを示すパラメータを復号してもよい。これにより、復号対象頂点を復号するためのサブモードの情報をパラメータに従って符号化装置100と復号装置200との間で共有することが可能になる場合がある。したがって、パラメータに従って、符号化及び復号に同じサブモードを適用することが可能になる場合がある。
 また、例えば、回路251は、サブモードに従って、第3三角形を決定してもよい。これにより、複数のサブモードの中からサブモードを選択することで、復号に適した第3三角形を選択することが可能になる場合がある。よって、復号に適した第3三角形を用いて復号対象頂点を効率的に復号することが可能になる場合がある。
 また、例えば、回路251は、サブモードに従って、第3三角形の頂点を決定してもよい。これにより、複数のサブモードの中からサブモードを選択することで、復号に適した第3三角形の頂点を選択することが可能になる場合がある。よって、復号に適した第3三角形を用いて復号対象頂点を効率的に復号することが可能になる場合がある。
 また、例えば、条件は、第1三角形の各頂点が復号済みであることを含んでいてもよい。これにより、第2三角形の頂点の復号に、いずれかの頂点が復号済みでない第1三角形が用いられることを抑制することが可能になる場合がある。そして、第2三角形の頂点の復号に適したモードを用いることが可能になる場合がある。
 また、例えば、条件は、第1三角形の各辺が接続性を有していることを含んでいてもよい。これにより、第2三角形の頂点の復号に、いずれかの辺が接続性を有していない第1三角形が用いられることを抑制することが可能になる場合がある。そして、第2三角形の頂点の復号に適したモードを用いることが可能になる場合がある。
 また、例えば、回路251は、例外モードに従って復号対象頂点を復号する場合、第3三角形を用いて復号対象頂点を示す角度を復号してもよい。これにより、符号量が大きくなり過ぎることを抑制することが可能になる場合がある。すなわち、ワーストケースの符号量を抑制することが可能になる場合がある。
 また、例えば、第1三角形と第2三角形とは辺を共有していてもよい。また、第1三角形と第2三角形とが共有する辺は、第2三角形における復号対象頂点の対辺に対応していてもよい。
 また、例えば、第3三角形は、第1三角形と第2三角形とが共有する辺を有していてもよい。つまり、第1三角形と第2三角形と第3三角形とが辺を共有していてもよい。この場合、第3三角形は、第1三角形と辺を共有し、第2三角形と辺を共有し、第1三角形と頂点を共有し、第2三角形と頂点を共有する。ただし、第3三角形は、このような三角形に限られず、例えば第1三角形の任意の辺又は任意の頂点を有していてもよい。
 また、例えば、通常モードは、第1三角形及び1つ以上の角度を用いて復号対象頂点を復号するモードであってもよい。例外モードは、第3三角形及び1つ以上の角度を用いて復号対象頂点を復号するモードであってもよい。
 また、例えば、第1モードセットと第2モードセットとは互いに異なる。具体的には、通常モードは、第2モードセットに含まれず、第1モードセットのみに含まれてもよい。また、例外モードは、第1モードセットに含まれず、第2モードセットのみに含まれてもよい。
 また、例えば、第1モードセットは、座標を用いて復号対象頂点を復号するモード、平行四辺形を用いて復号対象頂点を復号するモード、及び、多項式を用いて復号対象頂点を復号するモードのうち、少なくとも1つを含んでいてもよい。ここで、平行四辺形は、第1三角形に基づいていてもよい。そして、通常モードは、第1三角形に基づく平行四辺形を用いて復号対象頂点を復号するモードであってもよい。
 また、例えば、第2モードセットは、座標を用いて復号対象頂点を復号するモード、平行四辺形を用いて復号対象頂点を復号するモード、及び、多項式を用いて復号対象頂点を復号するモードのうち、少なくとも1つを含んでいてもよい。ここで、平行四辺形は、第3三角形に基づいていてもよい。そして、例外モードは、第3三角形に基づく平行四辺形を用いて復号対象頂点を復号するモードであってもよい。
 また、例えば、第1モードセットは、通常モードのみを含んでいてもよい。そして、回路251は、第1三角形が条件を満たす場合、通常モードを選択してもよい。つまり、回路251は、第1三角形が条件を満たす場合、通常モードに従って、復号対象頂点を復号してもよい。
 また、例えば、第2モードセットは、例外モードのみを含んでいてもよい。そして、回路251は、第1三角形が条件を満たさない場合、例外モードを選択してもよい。つまり、回路251は、第1三角形が条件を満たさない場合、例外モードに従って、復号対象頂点を復号してもよい。
 また、例えば、回路251は、通常モード及び例外モードを含むモードセットの中からモードを選択してもよい。この場合、モードセットは、第1モードセットと第2モードセットとの両方に対応し得る。そして、回路251は、第1三角形が条件を満たす場合、通常モードを選択し、通常モードに従って、復号対象頂点を復号してもよい。また、回路251は、第1三角形が条件を満たさない場合、例外モードを選択し、例外モードに従って、復号対象頂点を復号してもよい。
 また、例えば、複数のサブモードは、ダミーの頂点を有する第3三角形を用いて復号対象頂点を復号するサブモードを含んでいてもよい。複数のサブモードは、各頂点が復号済みである第3三角形を用いて復号対象頂点を復号するサブモードを含んでいてもよい。複数のサブモードは、各辺が接続性を有する第3三角形を用いて復号対象頂点を復号するサブモードを含んでいてもよい。サブモードは、第3三角形の条件に対応していてもよいし、第3三角形の頂点の条件に対応していてもよい。
 つまり、サブモードは、第3三角形又は第3三角形の頂点の選択方法に対応していてもよい。
 また、例えば、通常モードが、複数のサブモードを含んでいてもよい。そして、回路251は、モードとして通常モードが選択される場合、複数のサブモードの中から、復号対象頂点を復号するためのサブモードを選択してもよい。回路251は、サブモードに従って、第1三角形又は第1三角形の頂点を決定してもよい。つまり、サブモードは、第1三角形又は第1三角形の頂点の選択方法に対応していてもよい。
 また、例えば、例外モードに含まれるサブモードは、例外サブモードと表現されてもよい。そして、通常モードに含まれるサブモードは、通常サブモードと表現されてもよい。
 また、例えば、モードは、処理と表現されてもよい。そして、通常モード、例外モード及びサブモードは、通常処理、例外処理及びサブ処理と表現されてもよい。
 また、例えば、回路251は、エントロピー復号によって復号対象頂点を復号してもよい。具体的には、回路251は、エントロピー復号によって復号対象頂点を示す角度を復号してもよい。また、例えば、回路251は、復号対象頂点を特定するための1つ、2つ又は3つの角度を復号してもよい。
 また、例えば、第1三角形は、参照ルールに従って復号対象頂点に近い三角形として定められる参照三角形であってもよい。
 また、例えば、上述された各頂点は、三次元メッシュにおけるジオメトリ座標で表現されてもよい。
 図64は、本実施の形態に係る符号化装置100のさらに別の構成例を示すブロック図である。この例において、符号化装置100は、選択器171及び符号化処理器172を備える。
 選択器171は、例えば電気回路である。選択器171は、上述されたトラバーサ161、判定器167及び例外処理器168等に対応していてもよいし、上述された回路151及びメモリ152で実装されていてもよい。
 符号化処理器172は、例えば電気回路である。符号化処理器172は、上述された角度導出器163及びエントロピー符号化器166等に対応していてもよいし、上述された回路151及びメモリ152で実装されていてもよい。
 例えば、選択器171は、第1三角形が条件を満たす場合、通常モードを含む第1モードセットの中からモードを選択し、第1三角形が条件を満たさない場合、例外モードを含む第2モードセットの中からモードを選択する。そして、符号化処理器172は、モードに従って符号化対象頂点を符号化する。
 これにより、第1三角形が条件を満たさない場合、第1三角形とは異なる第3三角形を用いて第2三角形の頂点を符号化することが可能になる場合がある。したがって、符号化に適した参照三角形を用いて第2三角形の頂点を符号化することが可能になる場合がある。
 図65は、本実施の形態に係る復号装置200のさらに別の構成例を示すブロック図である。この例において、復号装置200は、選択器271及び復号処理器272を備える。
 選択器271は、例えば電気回路である。選択器271は、上述されたトラバーサ261、判定器267及び例外処理器268等に対応していてもよいし、上述された回路251及びメモリ252で実装されていてもよい。
 復号処理器272は、例えば電気回路である。復号処理器272は、上述された座標導出器264及びエントロピー復号器266等に対応していてもよいし、上述された回路251及びメモリ252で実装されていてもよい。
 例えば、選択器271は、第1三角形が条件を満たす場合、通常モードを含む第1モードセットの中からモードを選択し、第1三角形が条件を満たさない場合、例外モードを含む第2モードセットの中からモードを選択する。そして、復号処理器272は、モードに従って復号対象頂点を復号する。
 これにより、第1三角形が条件を満たさない場合、第1三角形とは異なる第3三角形を用いて第2三角形の頂点を復号することが可能になる場合がある。したがって、復号に適した参照三角形を用いて第2三角形の頂点を復号することが可能になる場合がある。
 <その他の例>
 以上、符号化装置100及び復号装置200の態様を実施の形態に従って説明したが、符号化装置100及び復号装置200の態様は、実施の形態に限定されない。実施の形態に対して当業者が思いつく変形が施されてもよいし、実施の形態における複数の構成要素が任意に組み合わされてもよい。
 例えば、実施の形態において特定の構成要素によって実行される処理を特定の構成要素の代わりに別の構成要素が実行してもよい。また、複数の処理の順序が変更されてもよいし、複数の処理が並行して実行されてもよい。
 また、本開示の符号化及び復号は、頂点の位置を示す頂点情報の符号化及び復号に適用することができる。なお、本開示の符号化及び復号は、三次元メッシュにおける面の頂点に限らず、他の頂点の位置を示す頂点情報の符号化及び復号に適用されてもよい。また、本開示の各処理が、選択可能な複数の処理のうちの1つとして行われてもよい。
 また、上述した通り、本開示の複数の構成の少なくとも一部は、集積回路として実装され得る。本開示の複数の処理の少なくとも一部が符号化方法又は復号方法として利用されてもよい。当該符号化方法又は当該復号方法をコンピュータに実行させるためのプログラムが利用されてもよい。また、当該プログラムが記録された非一時的なコンピュータ読み取り可能な記録媒体が利用されてもよい。また、復号装置200に復号処理を行わせるためのビットストリームが利用されてもよい。
 また、本開示の複数の構成及び複数の処理の少なくとも一部が、送信装置、受信装置、送信方法及び受信方法として利用されてもよい。当該送信方法又は当該受信方法をコンピュータに実行させるためのプログラムが利用されてもよい。また、当該プログラムが記録された非一時的なコンピュータ読み取り可能な記録媒体が利用されてもよい。
 本開示は、例えば、三次元メッシュに関する符号化装置、復号装置、送信装置及び受信装置等に有用であり、コンピュータグラフィックスシステム、及び、三次元データ表示システム等に適用可能である。
  100 符号化装置
  101、121、144 頂点情報符号化器
  102、145 接続情報符号化器
  103、122 属性情報符号化器
  104、204 前処理器
  105、205 後処理器
  110 三次元データ符号化システム
  111、211 制御器
  112、212 入出力処理器
  113 三次元データ符号化器
  114 システム多重化器
  115 三次元データ生成器
  123 メタデータ符号化器
  124 多重化器
  131 頂点画像生成器
  132 属性画像生成器
  133 メタデータ生成器
  134 映像符号化器
  141 二次元データ符号化器
  142 メッシュデータ符号化器
  143 テクスチャ符号化器
  148 デスクリプション符号化器
  151、251 回路
  152、252 メモリ
  161、261 トラバーサ
  162、262 スイッチ
  163 角度導出器
  164 角度符号化器
  165 座標符号化器
  166 エントロピー符号化器
  167、267 判定器
  168、268 例外処理器
  171、271 選択器
  172 符号化処理器
  200 復号装置
  201、221、244 頂点情報復号器
  202、245 接続情報復号器
  203、222 属性情報復号器
  210 三次元データ復号システム
  213 三次元データ復号器
  214 システム逆多重化器
  215、247 提示器
  216 ユーザインタフェース
  223 メタデータ復号器
  224 逆多重化器
  231 頂点情報生成器
  232 属性情報生成器
  234 映像復号器
  241 二次元データ復号器
  242 メッシュデータ復号器
  243 テクスチャ復号器
  246 メッシュ再構成器
  248 デスクリプション復号器
  263 角度復号器
  264 座標導出器
  265 座標復号器
  266 エントロピー復号器
  272 復号処理器
  300 ネットワーク
  310 外部接続器

Claims (30)

  1.  メモリと、
     前記メモリにアクセス可能な回路とを備え、
     前記回路は、動作において、
     第1三角形が条件を満たす場合、前記第1三角形を用いて第2三角形の符号化対象頂点を符号化する通常モードを含む第1モードセットの中から前記符号化対象頂点を符号化するためのモードを選択し、
     前記第1三角形が前記条件を満たさない場合、前記第1三角形とも前記第2三角形とも異なる第3三角形を用いて前記符号化対象頂点を符号化する例外モードを含む第2モードセットの中から前記モードを選択し、
     前記モードに従って前記符号化対象頂点を符号化する、
     符号化装置。
  2.  前記第3三角形は、前記第1三角形と辺を共有する三角形である、
     請求項1に記載の符号化装置。
  3.  前記第3三角形は、前記第2三角形と辺を共有する三角形である、
     請求項1又は2に記載の符号化装置。
  4.  前記第3三角形は、前記第1三角形と頂点を共有する三角形である、
     請求項1又は2に記載の符号化装置。
  5.  前記第3三角形は、各頂点が符号化済みである三角形である、
     請求項1又は2に記載の符号化装置。
  6.  前記第3三角形は、各辺が接続性を有している三角形である、
     請求項1又は2に記載の符号化装置。
  7.  前記第3三角形は、ダミーの頂点を有する三角形である、
     請求項1又は2に記載の符号化装置。
  8.  前記例外モードは、複数のサブモードを含み、
     前記回路は、さらに、前記モードとして前記例外モードが選択される場合、前記複数のサブモードの中から、前記符号化対象頂点を符号化するためのサブモードを選択する、
     請求項1又は2に記載の符号化装置。
  9.  前記回路は、前記サブモードを示すパラメータを符号化する、
     請求項8に記載の符号化装置。
  10.  前記回路は、前記サブモードに従って、前記第3三角形を決定する、
     請求項8に記載の符号化装置。
  11.  前記回路は、前記サブモードに従って、前記第3三角形の頂点を決定する、
     請求項8に記載の符号化装置。
  12.  前記条件は、前記第1三角形の各頂点が符号化済みであることを含む、
     請求項1又は2に記載の符号化装置。
  13.  前記条件は、前記第1三角形の各辺が接続性を有していることを含む、
     請求項1又は2に記載の符号化装置。
  14.  前記回路は、前記例外モードに従って前記符号化対象頂点を符号化する場合、前記第3三角形を用いて前記符号化対象頂点を示す角度を符号化する、
     請求項1又は2に記載の符号化装置。
  15.  メモリと、
     前記メモリにアクセス可能な回路とを備え、
     前記回路は、動作において、
     第1三角形が条件を満たす場合、前記第1三角形を用いて第2三角形の復号対象頂点を復号する通常モードを含む第1モードセットの中から前記復号対象頂点を復号するためのモードを選択し、
     前記第1三角形が前記条件を満たさない場合、前記第1三角形とも前記第2三角形とも異なる第3三角形を用いて前記復号対象頂点を復号する例外モードを含む第2モードセットの中から前記モードを選択し、
     前記モードに従って前記復号対象頂点を復号する、
     復号装置。
  16.  前記第3三角形は、前記第1三角形と辺を共有する三角形である、
     請求項15に記載の復号装置。
  17.  前記第3三角形は、前記第2三角形と辺を共有する三角形である、
     請求項15又は16に記載の復号装置。
  18.  前記第3三角形は、前記第1三角形と頂点を共有する三角形である、
     請求項15又は16に記載の復号装置。
  19.  前記第3三角形は、各頂点が復号済みである三角形である、
     請求項15又は16に記載の復号装置。
  20.  前記第3三角形は、各辺が接続性を有している三角形である、
     請求項15又は16に記載の復号装置。
  21.  前記第3三角形は、ダミーの頂点を有する三角形である、
     請求項15又は16に記載の復号装置。
  22.  前記例外モードは、複数のサブモードを含み、
     前記回路は、さらに、前記モードとして前記例外モードが選択される場合、前記複数のサブモードの中から、前記復号対象頂点を復号するためのサブモードを選択する、
     請求項15又は16に記載の復号装置。
  23.  前記回路は、前記サブモードを示すパラメータを復号する、
     請求項22に記載の復号装置。
  24.  前記回路は、前記サブモードに従って、前記第3三角形を決定する、
     請求項22に記載の復号装置。
  25.  前記回路は、前記サブモードに従って、前記第3三角形の頂点を決定する、
     請求項22に記載の復号装置。
  26.  前記条件は、前記第1三角形の各頂点が復号済みであることを含む、
     請求項15又は16に記載の復号装置。
  27.  前記条件は、前記第1三角形の各辺が接続性を有していることを含む、
     請求項15又は16に記載の復号装置。
  28.  前記回路は、前記例外モードに従って前記復号対象頂点を復号する場合、前記第3三角形を用いて前記復号対象頂点を示す角度を復号する、
     請求項15又は16に記載の復号装置。
  29.  第1三角形が条件を満たす場合、前記第1三角形を用いて第2三角形の符号化対象頂点を符号化する通常モードを含む第1モードセットの中から前記符号化対象頂点を符号化するためのモードを選択するステップと、
     前記第1三角形が前記条件を満たさない場合、前記第1三角形とも前記第2三角形とも異なる第3三角形を用いて前記符号化対象頂点を符号化する例外モードを含む第2モードセットの中から前記モードを選択するステップと、
     前記モードに従って前記符号化対象頂点を符号化するステップとを含む、
     符号化方法。
  30.  第1三角形が条件を満たす場合、前記第1三角形を用いて第2三角形の復号対象頂点を復号する通常モードを含む第1モードセットの中から前記復号対象頂点を復号するためのモードを選択するステップと、
     前記第1三角形が前記条件を満たさない場合、前記第1三角形とも前記第2三角形とも異なる第3三角形を用いて前記復号対象頂点を復号する例外モードを含む第2モードセットの中から前記モードを選択するステップと、
     前記モードに従って前記復号対象頂点を復号するステップとを含む、
     復号方法。
PCT/JP2023/021028 2022-06-06 2023-06-06 符号化装置、復号装置、符号化方法及び復号方法 WO2023238867A1 (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US202263349243P 2022-06-06 2022-06-06
US63/349,243 2022-06-06
US202363465033P 2023-05-09 2023-05-09
US63/465,033 2023-05-09

Publications (1)

Publication Number Publication Date
WO2023238867A1 true WO2023238867A1 (ja) 2023-12-14

Family

ID=89118370

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2023/021028 WO2023238867A1 (ja) 2022-06-06 2023-06-06 符号化装置、復号装置、符号化方法及び復号方法

Country Status (1)

Country Link
WO (1) WO2023238867A1 (ja)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000224582A (ja) * 1998-10-02 2000-08-11 Samsung Electronics Co Ltd 漸進的な三次元メッシュ情報の符号化/復号化方法及びその装置
WO2010089380A1 (en) * 2009-02-06 2010-08-12 Thomson Licensing Method and apparatus for encoding 3d mesh models, and method and apparatus for decoding encoded 3d mesh models
US8830235B1 (en) * 1999-09-13 2014-09-09 Alcatel Lucent Non-uniform relaxation procedure for multiresolution mesh processing
WO2023074673A1 (ja) * 2021-10-26 2023-05-04 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 符号化装置、復号装置、符号化方法及び復号方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000224582A (ja) * 1998-10-02 2000-08-11 Samsung Electronics Co Ltd 漸進的な三次元メッシュ情報の符号化/復号化方法及びその装置
US8830235B1 (en) * 1999-09-13 2014-09-09 Alcatel Lucent Non-uniform relaxation procedure for multiresolution mesh processing
WO2010089380A1 (en) * 2009-02-06 2010-08-12 Thomson Licensing Method and apparatus for encoding 3d mesh models, and method and apparatus for decoding encoded 3d mesh models
WO2023074673A1 (ja) * 2021-10-26 2023-05-04 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 符号化装置、復号装置、符号化方法及び復号方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
MARTIN ISENBURG ; PIERRE ALLIEZ: "Compressing polygon mesh geometry with parallelogram prediction", VIS 2002. IEEE VISUALIZATION 2002. PROCEEDINGS. BOSTON, MA, OCT. 27 - NOV. 1, 2002., NEW YORK, NY : IEEE., US, 27 October 2002 (2002-10-27) - 1 November 2002 (2002-11-01), US , pages 141 - 146, XP058097048, ISBN: 978-0-7803-7498-0 *
ZHONGBAO CHEN ; FULIANG BAO ; ZHIGANG FANG ; ZHEN LI: "Compression of 3D Triangle Meshes with a Generalized Parallelogram Prediction Scheme Based on Vector Quantization", INTELLIGENT INFORMATION HIDING AND MULTIMEDIA SIGNAL PROCESSING (IIH-MSP), 2010 SIXTH INTERNATIONAL CONFERENCE ON, IEEE, PISCATAWAY, NJ, USA, 15 October 2010 (2010-10-15), Piscataway, NJ, USA , pages 184 - 187, XP031803533, ISBN: 978-1-4244-8378-5 *

Similar Documents

Publication Publication Date Title
JP7250952B2 (ja) 点群コーディングのための方法、装置、およびコンピュータプログラム
CN113615181B (zh) 用于点云编解码的方法、装置
JP7233561B2 (ja) 点群圧縮のための方法並びにその、装置およびコンピュータプログラム
KR102634079B1 (ko) 포인트 클라우드 데이터 처리 장치 및 방법
TW202131683A (zh) 用於基於幾何的點雲壓縮的高階語法
KR102659806B1 (ko) V-pcc용 스케일링 파라미터
CN116997935A (zh) 用于网格压缩的块压缩
JP2022531110A (ja) 点群符号化のための方法および装置
TW202143709A (zh) 針對基於幾何的點雲壓縮的三湯語法訊號傳遞
WO2023074673A1 (ja) 符号化装置、復号装置、符号化方法及び復号方法
US20220180567A1 (en) Method and apparatus for point cloud coding
WO2023238867A1 (ja) 符号化装置、復号装置、符号化方法及び復号方法
JP2024509623A (ja) メッシュ展開のための方法、装置、およびコンピュータプログラム
CN113115019B (zh) 视频编解码方法、装置、计算机设备及存储介质
WO2024075608A1 (ja) 符号化装置、復号装置、符号化方法及び復号方法
CN118140250A (zh) 编码装置、解码装置、编码方法及解码方法
US20240135594A1 (en) Adaptive geometry filtering for mesh compression
JP7497443B2 (ja) 点群コーディングのための方法、装置、およびコンピュータプログラム
US20230156222A1 (en) Grid-based patch generation for video-based point cloud coding
US20220392114A1 (en) Method and apparatus for calculating distance based weighted average for point cloud coding
US11606556B2 (en) Fast patch generation for video based point cloud coding
RU2799041C1 (ru) Способ и устройство для кодирования облака точек
WO2024062938A1 (ja) 復号方法及び復号装置
US20230412837A1 (en) Point cloud data transmission method, point cloud data transmission device, point cloud data reception method, and point cloud data reception device
US20240137564A1 (en) Fast computation of local coordinate system for displacement vectors in mesh coding

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 23819847

Country of ref document: EP

Kind code of ref document: A1