[go: up one dir, main page]

WO2025220707A1 - Encoding method, decoding method, encoding device, and decoding device - Google Patents

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

Info

Publication number
WO2025220707A1
WO2025220707A1 PCT/JP2025/014997 JP2025014997W WO2025220707A1 WO 2025220707 A1 WO2025220707 A1 WO 2025220707A1 JP 2025014997 W JP2025014997 W JP 2025014997W WO 2025220707 A1 WO2025220707 A1 WO 2025220707A1
Authority
WO
WIPO (PCT)
Prior art keywords
information
vertex
decoding
encoding
predicted value
Prior art date
Legal status (The legal status 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 status listed.)
Pending
Application number
PCT/JP2025/014997
Other languages
French (fr)
Japanese (ja)
Inventor
真人 大川
敏康 杉尾
賀敬 井口
孝啓 西
敦 伊藤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Panasonic Intellectual Property Corp of America
Original Assignee
Panasonic Intellectual Property Corp of America
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 Panasonic Intellectual Property Corp of America filed Critical Panasonic Intellectual Property Corp of America
Publication of WO2025220707A1 publication Critical patent/WO2025220707A1/en
Pending legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

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

Definitions

  • This disclosure relates to encoding methods, etc.
  • Patent document 1 proposes a method and apparatus for encoding and decoding three-dimensional mesh data.
  • the present disclosure aims to improve the encoding or decoding process for three-dimensional meshes.
  • An encoding method is an encoding method executed by an encoding device, which obtains multiple vertices included in a three-dimensional mesh and predictively encodes one of the multiple vertices.
  • a first predicted value for the one vertex is calculated with decimal precision
  • a second predicted value is calculated by reducing the number of bits in the decimal part of the first predicted value
  • the one vertex is predictively encoded using the second predicted value.
  • a decoding method is a decoding method executed by a decoding device, which obtains multiple vertices included in a three-dimensional mesh and predictively decodes one of the multiple vertices.
  • a first predicted value for the one vertex is calculated with decimal precision
  • a second predicted value is calculated by reducing the number of bits in the decimal part of the first predicted value
  • the one vertex is predictively decoded using the second predicted value.
  • This disclosure may contribute to improving coding processes related to three-dimensional meshes.
  • FIG. 1 is a conceptual diagram illustrating 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. 1 is a conceptual diagram illustrating mapping according to an embodiment.
  • 1 is a block diagram illustrating an example of the configuration of an encoding/decoding system according to an embodiment.
  • 1 is a block diagram illustrating an example of the configuration of an encoding device according to an embodiment.
  • FIG. 10 is a block diagram showing another example configuration of an encoding device according to an embodiment.
  • FIG. 2 is a block diagram illustrating an example of a configuration of a decoding device according to an embodiment.
  • FIG. 10 is a block diagram illustrating another example configuration of a decoding device according to an embodiment.
  • FIG. 1 is a conceptual diagram illustrating 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. 1 is
  • FIG. 2 is a conceptual diagram illustrating an example of the configuration of a bitstream according to an embodiment.
  • FIG. 10 is a conceptual diagram showing another example of the configuration of a bitstream according to an embodiment.
  • FIG. 10 is a conceptual diagram showing yet another example configuration of a bitstream according to an embodiment.
  • 1 is a block diagram showing a specific example of an encoding/decoding system according to an embodiment;
  • FIG. 2 is a conceptual diagram illustrating an example of the configuration of point cloud data according to the embodiment.
  • FIG. 2 is a conceptual diagram illustrating an example of a data file of point cloud data according to the embodiment.
  • FIG. 2 is a conceptual diagram showing an example of the configuration of mesh data according to the embodiment.
  • FIG. 2 is a conceptual diagram illustrating an example of a data file of mesh data according to the embodiment.
  • FIG. 2 is a conceptual diagram showing types of three-dimensional data according to the embodiment.
  • FIG. 2 is a block diagram illustrating an example of the configuration of a three-dimensional data encoder according to an embodiment.
  • FIG. 2 is a block diagram showing an example of the configuration of a three-dimensional data decoder according to an embodiment.
  • FIG. 10 is a block diagram showing another example configuration of a three-dimensional data encoder according to an embodiment.
  • FIG. 10 is a block diagram showing another example configuration of the three-dimensional data decoder according to the embodiment.
  • FIG. 10 is a conceptual diagram showing a specific example of encoding processing according to an embodiment.
  • FIG. 10 is a conceptual diagram showing a specific example of a decoding process according to an embodiment.
  • FIG. 1 is a block diagram illustrating an example implementation of an encoding device according to an embodiment.
  • FIG. 2 is a block diagram illustrating an example implementation of a decoding device according to an embodiment.
  • FIG. 10 is a block diagram showing another example configuration of the encoding/decoding system according to the embodiment.
  • FIG. 10 is a block diagram showing another example configuration of an encoding device according to an embodiment.
  • FIG. 10 is a block diagram illustrating another example configuration of a decoding device according to an embodiment.
  • FIG. 10 is a block diagram showing another example configuration of an encoding device according to an embodiment.
  • FIG. 10 is a block diagram illustrating another example configuration of a decoding device according to an embodiment.
  • FIG. 10 is a flowchart showing the processing of the encoding device according to the embodiment.
  • FIG. 1 is an explanatory diagram conceptually illustrating encoding of a mesh frame according to an embodiment
  • FIG. 10 is a flowchart showing the process of the decoding device according to the embodiment.
  • FIG. 10 is an explanatory diagram conceptually illustrating decoding of a mesh frame according to an embodiment.
  • FIG. 2 is a block diagram illustrating an example of a configuration of a decoding device according to an embodiment.
  • FIG. 2 is a block diagram illustrating an example of a configuration of a decoding device according to an embodiment.
  • FIG. 10 is an explanatory diagram illustrating an example of subdivision according to an embodiment.
  • FIG. 10A and 10B are explanatory diagrams showing examples of displacement of vertices after subdivision according to an embodiment; 10A and 10B are explanatory diagrams showing examples of vertices of an original mesh according to an embodiment; FIG. 10 is an explanatory diagram showing an example of a mesh according to an embodiment. 10A and 10B are explanatory diagrams illustrating an example of dividing a mesh into sub-meshes according to an embodiment.
  • FIG. 10 is a first explanatory diagram showing an example of packing displacement information into an image frame according to the embodiment;
  • FIG. 10 is a second explanatory diagram showing an example of packing displacement information into an image frame according to the embodiment.
  • FIG. 10 is a third explanatory diagram showing an example of packing displacement information into an image frame according to the embodiment.
  • FIG. 10A and 10B are diagrams for explaining examples of attribute information in mesh data according to an embodiment
  • 10A and 10B are diagrams for explaining examples of attribute information in mesh data according to an embodiment
  • 10A and 10B are diagrams for explaining examples of attribute information in mesh data according to an embodiment
  • FIG. 10 is a diagram illustrating a specific example of a method for encoding attribute information.
  • FIG. 10 is a diagram illustrating a specific example of a method for encoding attribute information.
  • FIG. 10 is a diagram illustrating a specific example of a method for encoding attribute information.
  • FIG. 10 is a diagram illustrating a specific example of a method for encoding attribute information.
  • FIG. 10 is a diagram illustrating a specific example of a method for encoding attribute information.
  • FIG. 10 is a diagram illustrating a specific example of a method for encoding attribute information.
  • FIG. 10 is a diagram illustrating a specific example of a method for encoding attribute information.
  • FIG. 10 is a diagram illustrating a specific example of a method for encoding attribute information.
  • FIG. 10 is a diagram illustrating an example of a flowchart for encoding attribute information of a three-dimensional point according to an embodiment.
  • 10 is a flowchart illustrating an example of a calculation process of a predicted value in a third prediction mode according to an embodiment.
  • FIG. 10 is a diagram illustrating an example of a flowchart for decoding attribute information of a three-dimensional point according to an embodiment.
  • FIG. 10 is a diagram illustrating an example of the syntax of mesh_attribute_coding according to the embodiment.
  • FIG. 10 is a diagram illustrating an example of the syntax of mesh_attribute_header according to the embodiment.
  • FIG. 10 is a diagram illustrating an example of the syntax of mesh_attribute_data according to the embodiment.
  • FIG. 10 is a diagram showing an example of attribute information according to a modified example of the embodiment.
  • FIG. 10 is a diagram illustrating an example of the syntax of mesh_attribute_header according to a modified example of the embodiment.
  • FIG. 10 is a diagram illustrating an example of a geometry map according to the embodiment.
  • FIG. 2 is a diagram illustrating an example of a texture map according to an embodiment;
  • FIG. 10 is a diagram illustrating an example of the syntax of mesh_position_coding according to the embodiment.
  • FIG. 10 is a diagram illustrating an example of the syntax of mesh_position_header according to the embodiment.
  • FIG. 10 is a diagram illustrating an example of the syntax of mesh_position_header according to the embodiment.
  • FIG. 10 is a diagram illustrating an example of the syntax of mesh_position_data according to the embodiment.
  • FIG. 1 illustrates an example of a configuration of an encoding device according to an embodiment. 1 is a flowchart illustrating an example of an encoding method performed by an encoding device according to an embodiment.
  • FIG. 2 is a diagram illustrating an example of a configuration of a decoding device according to an embodiment.
  • 10 is a flowchart illustrating an example of a decoding method performed by a decoding device according to an embodiment.
  • 10 is a flowchart illustrating another example of the process of calculating a predicted value in the third prediction mode according to the embodiment.
  • FIG. 10 is a diagram illustrating an example of vectors in a three-dimensional space when fine prediction is performed according to the embodiment.
  • FIG. 10 is a diagram illustrating an example of vectors on a two-dimensional plane when fine prediction is performed according to the embodiment.
  • FIG. 10 is a diagram illustrating another example of calculation of a predicted value according to the embodiment. 10 is a flowchart illustrating an example of a calculation process of a predicted value according to an embodiment.
  • FIG. 10 is a diagram illustrating an example of vectors on a two-dimensional plane when fine prediction is performed according to the embodiment.
  • FIG. 10 is a diagram illustrating an example of vectors in a three-dimensional space when fine prediction is performed according to a modification of the embodiment.
  • FIG. 10 is a diagram illustrating an example of vectors on a two-dimensional plane when fine prediction is performed according to a modification of the embodiment.
  • FIG. 10 is a diagram illustrating another example of calculation of a predicted value according to the embodiment.
  • 10 is a flowchart illustrating another example of the process of calculating a predicted value according to the embodiment.
  • 10A to 10C are diagrams for explaining another specific example of the square root calculation process (sqrt) according to the embodiment.
  • 10A to 10C are diagrams for explaining another specific example of the square root calculation process (sqrt) according to the embodiment.
  • 10A to 10C are diagrams for explaining another specific example of the square root calculation process (sqrt) according to the embodiment.
  • 10A to 10C are diagrams for explaining another specific example of the square root calculation process (sqrt) according to the embodiment.
  • 10A to 10C are diagrams for explaining another specific example of the square root calculation process (sqrt) according to the embodiment.
  • 10A to 10C are diagrams for explaining another specific example of the square root calculation process (sqrt) according to the embodiment.
  • 10A to 10C are diagrams for explaining another specific example of the square root calculation process (sqrt) according to the embodiment.
  • 10A to 10C are diagrams for explaining another specific example of the square root calculation process (sqrt) according to the embodiment.
  • FIG. 10 is a diagram illustrating another example of the configuration of an encoding device according to an embodiment.
  • FIG. 10 is a flowchart illustrating another example of an encoding method performed by an encoding device according to an embodiment.
  • FIG. 10 is a diagram illustrating another example of the configuration of a decoding device according to an embodiment.
  • 10 is a flowchart illustrating another example of a decoding method performed by a decoding device according to an embodiment.
  • 3D meshes are used in computer graphics images, which may be composed of multiple temporally distinct frames, each of which may be represented by a 3D mesh.
  • a three-dimensional mesh is composed of vertex information indicating the position of each of multiple vertices in three-dimensional space, connection information indicating the connections between the multiple vertices, and attribute information indicating the attributes of each vertex or each face. Each face is constructed according to the connection relationships between the multiple vertices.
  • a variety of computer graphics images can be expressed using such three-dimensional meshes.
  • Arithmetic coding and arithmetic decoding may be used for efficient encoding and decoding of three-dimensional meshes.
  • the present disclosure aims to improve the encoding or decoding process for three-dimensional data.
  • the encoding method is an encoding method executed by an encoding device, which obtains multiple vertices included in a three-dimensional mesh and predictively encodes one of the multiple vertices.
  • a first predicted value for the one vertex is calculated with decimal precision
  • a second predicted value is calculated by reducing the number of bits in the decimal part of the first predicted value
  • the one vertex is predictively encoded using the second predicted value.
  • the encoding method according to the second aspect of the present disclosure is the encoding method according to the first aspect, wherein in calculating the first predicted value, two or more third predicted values are calculated with decimal precision based on each of the two or more processed vertices, and the first predicted value is calculated by integrating the two or more third predicted values.
  • the encoding method according to the third aspect of the present disclosure is the encoding method according to the second aspect, wherein the first predicted value is calculated by integrating the two or more third predicted values with decimal precision.
  • the encoding method according to the fourth aspect of the present disclosure is the encoding method according to the second or third aspect, wherein the two or more third predicted values and the first predicted value have decimal parts with a predetermined number of bits, and the second predicted value is calculated by reducing the predetermined number of bits of the decimal part of the first predicted value.
  • the encoding method according to the fifth aspect of the present disclosure is the encoding method according to any one of the second to fourth aspects, wherein the first predicted value is the average of the two or more third predicted values.
  • the encoding method according to the sixth aspect of the present disclosure is the encoding method according to the fourth aspect, wherein the predictive encoding does not reduce the predetermined number of bits before calculating the second predicted value.
  • the encoding method according to a seventh aspect of the present disclosure is an encoding method according to any one of the first to sixth aspects, wherein in the predictive encoding of the one vertex using the second predicted value, a fourth predicted value is calculated by rounding the second predicted value, and the one vertex is predictively encoded using the fourth predicted value.
  • the encoding method according to an eighth aspect of the present disclosure is the encoding method according to the seventh aspect, wherein the rounding process rounds the second predicted value in a different direction depending on whether the second predicted value is a positive number or a negative number.
  • a decoding method is a decoding method executed by a decoding device, which obtains multiple vertices included in a three-dimensional mesh and predictively decodes one of the multiple vertices.
  • a first predicted value for the one vertex is calculated with decimal precision
  • a second predicted value is calculated by reducing the number of bits in the decimal part of the first predicted value
  • the one vertex is predictively decoded using the second predicted value.
  • a decoding method is the decoding method according to the ninth aspect, wherein in calculating the first predicted value, two or more third predicted values are calculated with decimal precision based on each of the two or more processed vertices, and the first predicted value is calculated by integrating the two or more third predicted values.
  • a decoding method is the decoding method according to the tenth aspect, wherein the first predicted value is calculated by integrating the two or more third predicted values with decimal precision.
  • a decoding method is a decoding method according to the tenth or eleventh aspect, wherein the two or more third predicted values and the first predicted value have decimal parts with a predetermined number of bits, and the second predicted value is calculated by reducing the predetermined number of bits of the decimal part of the first predicted value.
  • a decoding method is a decoding method according to any one of the tenth to twelfth aspects, in which the first predicted value is an average of the two or more third predicted values.
  • a decoding method is the decoding method according to the twelfth aspect, wherein in the predictive decoding, the predetermined number of bits is not reduced before the second predicted value is calculated.
  • a decoding method is a decoding method according to any one of the ninth to fourteenth aspects, wherein in the predictive decoding of the one vertex using the second predicted value, a fourth predicted value is calculated by rounding the second predicted value, and the one vertex is predictively decoded using the fourth predicted value.
  • a decoding method is the decoding method according to the fifteenth aspect, wherein the rounding process rounds the second predicted value in a different direction depending on whether the second predicted value is a positive number or a negative number.
  • a coding device includes a circuit and a memory connected to the circuit, and in operation, the circuit acquires multiple vertices included in a three-dimensional mesh and predictively encodes one of the multiple vertices, calculating a first predicted value for the one vertex with decimal precision, reducing the number of bits in the decimal part of the first predicted value to calculate a second predicted value, and predictively encoding the one vertex using the second predicted value.
  • a decoding device includes a circuit and a memory connected to the circuit, and in operation, the circuit acquires multiple vertices included in a three-dimensional mesh and predictively decodes one of the multiple vertices.
  • the circuit calculates a first predicted value for the one vertex with decimal precision, calculates a second predicted value by reducing the number of bits in the decimal part of the first predicted value, and predictively decodes the one vertex using the second predicted value.
  • a three-dimensional mesh is a collection of multiple faces, and represents, for example, a three-dimensional object.
  • a three-dimensional mesh is mainly composed of vertex information, connectivity information, and attribute information.
  • a three-dimensional mesh may be expressed as a polygon mesh or a mesh.
  • a three-dimensional mesh may also vary over time.
  • a three-dimensional mesh may include metadata related to the vertex information, connectivity information, and attribute information, and may also include other additional information.
  • Vertex information is information indicating a vertex.
  • the vertex information indicates the position of a vertex in a three-dimensional space.
  • a vertex corresponds to a vertex of a face that constitutes a three-dimensional mesh.
  • Vertex information may be expressed as "geometry.”
  • vertex information may be expressed as position information.
  • Connection Information is information that indicates connections between vertices. For example, connection information indicates connections for forming faces or edges of a three-dimensional mesh. Connection information may be expressed as "Connectivity.” Connection information may also be expressed as face information.
  • Attribute information is information that indicates attributes of a vertex or a face.
  • attribute information indicates attributes such as a color, an image, and a normal vector associated with a vertex or a face. Attribute information may be expressed as "texture.”
  • Faces is an element that makes up a three-dimensional mesh. Specifically, a face is a polygon on a plane in three-dimensional space. For example, a face can be defined as a triangle in three-dimensional space.
  • Plane A plane is a two-dimensional plane in a three-dimensional space.
  • a polygon is formed on a plane, and multiple polygons are formed on multiple planes.
  • Bitstream corresponds to coded information.
  • a bitstream may also be referred to as a stream, a coded bitstream, a compressed bitstream, or a coded signal.
  • Encoding and Decoding may be substituted with terms such as storing, including, writing, describing, signaling, sending, notifying, saving, or compressing, and these terms may be interchangeable.
  • encoding information may mean including the information in a bitstream.
  • encoding information into a bitstream may mean encoding the information to generate a bitstream that includes the encoded information.
  • decoding information may mean obtaining information from a bitstream.
  • decoding information from a bitstream may mean decoding the bitstream to obtain the information contained in the bitstream.
  • ordinal numbers such as first and second may be assigned to components, etc. These ordinal numbers may be changed as appropriate. Furthermore, new ordinal numbers may be assigned to components, etc., or removed. Furthermore, these ordinal numbers may be assigned to elements in order to identify them, and may not correspond to a meaningful order.
  • FIG. 1 is a conceptual diagram showing a three-dimensional mesh according to this embodiment.
  • the three-dimensional mesh is composed of a plurality of faces. For example, each face is a triangle. The vertices of these triangles are defined in three-dimensional space.
  • the three-dimensional mesh then represents a three-dimensional object. Each face may have a color or an image.
  • FIG. 2 is a conceptual diagram showing the basic elements of a three-dimensional mesh according to this embodiment.
  • a three-dimensional mesh is composed of vertex information, connection information, and attribute information.
  • Vertex information indicates the positions of the vertices of a face in three-dimensional space.
  • Connection information indicates the connections between vertices.
  • a face can be identified by the vertex information and connection information.
  • a colorless three-dimensional object is formed in three-dimensional space by the vertex information and connection information.
  • Attribute information may be associated with a vertex or a face. Attribute information associated with a vertex may be expressed as "Attribute Per Point.” Attribute information associated with a vertex may indicate the attributes of the vertex itself, or may indicate the attributes of the face connected to the vertex.
  • a color may be associated with a vertex as attribute information.
  • the color associated with a vertex may be the color of the vertex itself, or the color of the face connected to the vertex.
  • the color of a face may be the average of multiple colors associated with multiple vertices of the face.
  • a normal vector may be associated with a vertex or face as attribute information. Such a normal vector can represent the front and back of a face.
  • a two-dimensional image may be associated with a surface as attribute information.
  • the two-dimensional image associated with a surface is also referred to as a texture image or an "Attribute Map.”
  • information indicating the mapping between the surface and the two-dimensional image may be associated with the surface as attribute information. Information indicating such mapping may be referred to as mapping information, vertex information of the texture image, texture coordinates, or "Attribute UV Coordinate.”
  • information such as colors, images, and moving images used as attribute information may be expressed as "Parametric Space.”
  • This attribute information allows texture to be reflected on the three-dimensional object.
  • a three-dimensional object with color is formed in three-dimensional space using vertex information, connection information, and attribute information.
  • attribute information is associated with vertices or faces, but it may also be associated with edges.
  • FIG. 3 is a conceptual diagram showing mapping according to this embodiment.
  • a region of a two-dimensional image on a two-dimensional plane can be mapped onto the surface of a three-dimensional mesh in three-dimensional space.
  • coordinate information of the region in the two-dimensional image is associated with the surface of the three-dimensional mesh.
  • the image of the mapped region in the two-dimensional image is reflected on the surface of the three-dimensional mesh.
  • the two-dimensional image used as attribute information can be separated from the three-dimensional mesh.
  • the two-dimensional image may be encoded using an image encoding method or a video encoding method.
  • ⁇ System Configuration> 4 is a block diagram showing an example of the configuration of a coding/decoding system according to this embodiment.
  • the coding/decoding system includes a coding device 100 and a decoding device 200.
  • the encoding device 100 acquires 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 the encoded three-dimensional mesh and control information for decoding the encoded three-dimensional mesh.
  • the information about the three-dimensional mesh is compressed.
  • Network 300 transmits the bitstream from encoding device 100 to decoding device 200.
  • Network 300 may be the Internet, a wide area network (WAN), a local area network (LAN), or a combination of these.
  • Network 300 is not necessarily limited to two-way communication, and may also be a one-way communication network for terrestrial digital broadcasting, satellite broadcasting, etc.
  • network 300 can 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. In other words, the encoding device 100 and the decoding device 200 perform encoding and decoding according to encoding methods and decoding methods that correspond to each other.
  • the 3D mesh before encoding can also be referred to as the original 3D mesh.
  • the 3D mesh after decoding can also be referred to as the reconstructed 3D mesh.
  • ⁇ Encoding device> 5 is a block diagram showing an example of the configuration of an 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 electrical circuit that encodes vertex information. For example, the vertex information encoder 101 encodes the vertex information into a bitstream according to a format specified for the vertex information.
  • connection information encoder 102 is an electrical circuit that encodes the connection information. For example, the connection information encoder 102 encodes the connection information into a bitstream according to a format specified for the connection information.
  • the attribute information encoder 103 is an electrical circuit that encodes attribute information. For example, the attribute information encoder 103 encodes the attribute information into a bitstream according to a format specified for the attribute information.
  • Vertex information, connectivity information, and attribute information may be encoded using variable-length coding or fixed-length coding.
  • 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 multiple component parts.
  • FIG. 6 is a block diagram showing another example configuration of the encoding device 100 according to this embodiment.
  • the encoding device 100 includes a pre-processor 104 and a post-processor 105 in addition to the configuration shown in FIG. 5.
  • the preprocessor 104 is an electrical circuit that performs processing on the vertex information, connectivity information, and attribute information before encoding.
  • 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 the vertex information, connectivity information, and attribute information from the three-dimensional mesh before encoding.
  • the post-processor 105 is an electrical circuit that performs processing after the vertex information, connection information, and attribute information are encoded.
  • 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 coding on the encoded vertex information, connection information, and attribute information.
  • ⁇ Decryption device> 7 is a block diagram showing an example of the configuration of a 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 electrical circuit that decodes vertex information. For example, the vertex information decoder 201 decodes vertex information from the bitstream according to a format specified for the vertex information.
  • connection information decoder 202 is an electrical circuit that decodes the connection information. For example, the connection information decoder 202 decodes the connection information from the bitstream according to a format specified for the connection information.
  • the attribute information decoder 203 is an electrical circuit that decodes attribute information. For example, the attribute information decoder 203 decodes attribute information from the bitstream according to a format specified for the attribute information.
  • Vertex information, connectivity information, and attribute information may be decoded using variable-length decoding or fixed-length decoding.
  • Variable-length decoding may be compatible with Huffman coding or context-adaptive binary arithmetic coding (CABAC), etc.
  • the vertex information decoder 201, connection information decoder 202, and attribute information decoder 203 may be integrated. Alternatively, each of the vertex information decoder 201, connection information decoder 202, and attribute information decoder 203 may be further subdivided into multiple component parts.
  • FIG. 8 is a block diagram showing another example configuration of the decoding device 200 according to this embodiment.
  • the decoding device 200 includes a pre-processor 204 and a post-processor 205 in addition to the configuration shown in FIG. 7.
  • the preprocessor 204 is an electrical circuit that performs processing before decoding the vertex information, connection information, and attribute information.
  • 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 may separate from the bitstream a sub-bitstream corresponding to vertex information, a sub-bitstream corresponding to connectivity information, and a sub-bitstream corresponding to attribute information. Also, for example, the preprocessor 204 may perform variable-length decoding on the bitstream in advance before decoding the vertex information, connectivity information, and attribute information.
  • the post-processor 205 is an electrical circuit that performs processing after the vertex information, connection information, and attribute information are decoded.
  • 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 onto a three-dimensional mesh.
  • ⁇ Bitstream> The vertex information, connection information, and attribute information are coded and stored in a bitstream. The relationship between these pieces of information and the bitstream is shown below.
  • FIG. 9 is a conceptual diagram showing an example of the configuration of a bitstream according to this embodiment.
  • connection information, vertex information, and attribute information are integrated in the bitstream.
  • connection information, vertex information, and attribute information may be included in a single file.
  • multiple parts of this information may be stored sequentially, such as a first part of connection information, a first part of vertex information, a first part of attribute information, a second part of connection information, a second part of vertex information, a second part of attribute information, etc. These multiple parts may correspond to multiple parts that are different in time, multiple parts that are different in space, or multiple different faces.
  • connection information is not limited to the above example, and a storage order different from the above example may be used.
  • FIG. 10 is a conceptual diagram showing another example of the configuration of a bitstream according to this embodiment.
  • multiple files are included in the bitstream, with connection information, vertex information, and attribute information stored in different files.
  • a file containing connection information, a file containing vertex information, and a file containing attribute information are shown, but the storage format is not limited to this example.
  • two types of information out of connection information, vertex information, and attribute information may be included in one file, and the remaining type of information may be included in another file.
  • this information may be split and stored in more files.
  • multiple parts of the connection information may be stored in multiple files
  • multiple parts of the vertex information may be stored in multiple files
  • multiple parts of the attribute information may be stored in multiple files. These multiple parts may correspond to multiple parts that are different in time, multiple parts that are different in space, or multiple different faces.
  • connection information is not limited to the above example, and a storage order different from the above example may be used.
  • FIG. 11 is a conceptual diagram showing another example of the configuration of a bitstream according to this embodiment.
  • the bitstream is composed of multiple separable sub-bitstreams, and connection information, vertex information, and attribute information are each stored in different sub-bitstreams.
  • a sub-bitstream containing connection information a sub-bitstream containing vertex information, and a sub-bitstream containing attribute information are shown, but the storage format is not limited to this example.
  • connection information For example, two types of information out of connection information, vertex information, and attribute information may be included in one sub-bitstream, and the remaining type of information may be included in another sub-bitstream.
  • attribute information for a two-dimensional image, etc. may be stored in a sub-bitstream that complies with an image coding method, separate from the sub-bitstreams for connection information and vertex information.
  • each sub-bitstream may contain multiple files. Multiple pieces of connection information may be stored in multiple files, multiple pieces of vertex information may be stored in multiple files, or multiple pieces of attribute information may be stored in multiple files.
  • connection information is not limited to the examples in Figures 9, 10, and 11, and a storage order different from the above examples may be used.
  • the vertex information, connection information, and attribute information may be stored in the bitstream in this order.
  • the bitstream may be stored in any of the following orders: connection information, attribute information, and vertex information; vertex information, attribute information, and connection information; attribute information, connection information, and vertex information; or attribute information, vertex information, and connection information.
  • connection information may be divided into multiple pieces of data, and the multiple pieces of data may be stored in a cyclical or random order within the bitstream.
  • ⁇ Specific examples> 12 is a block diagram showing a specific example of an 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 comprises 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 comprises 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 cloud 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 the vertex information when generating the connection information and attribute information.
  • the three-dimensional data generator 115 may reduce the amount of data by deleting duplicate vertices, or may transform the vertex information (such as by shifting its position, rotating it, or normalizing it).
  • the three-dimensional data generator 115 may also render the attribute information.
  • the three-dimensional data generator 115 is a component of the three-dimensional data encoding system 110 in FIG. 12, it may also be located externally and independently of the three-dimensional data encoding system 110.
  • the sensor terminal that provides the sensor data for generating the three-dimensional data may be, for example, a moving object such as an automobile, a flying object such as an airplane, a mobile terminal, or a camera.
  • distance sensors such as LIDAR, millimeter-wave radar, infrared sensors, or range finders, stereo cameras, or combinations of multiple monocular cameras may also be used as sensor terminals.
  • Sensor data may include the distance (position) of the object, monocular camera images, stereo camera images, color, reflectance, sensor attitude, orientation, gyro, sensing position (GPS information or altitude), speed, acceleration, sensing time, temperature, air pressure, humidity, or magnetism.
  • 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 to generate encoded data.
  • the three-dimensional data encoder 113 also generates control information when encoding the three-dimensional data.
  • the three-dimensional data encoder 113 then inputs the encoded data together with the control information to the system multiplexer 114.
  • the encoding method for three-dimensional data may be an encoding method that uses geometry, or an encoding method that uses a video codec.
  • an encoding method that uses geometry may also be referred to as a geometry-based encoding method.
  • An encoding method that uses a video codec may also be referred to as a video-based encoding method.
  • the system multiplexer 114 multiplexes the coded data and control information input from the three-dimensional data encoder 113, generating multiplexed data using a specified multiplexing method. Along with the coded data and control information for the three-dimensional data, the system multiplexer 114 may also multiplex other media such as video, audio, subtitles, application data, or document files, or reference time information. Furthermore, the system multiplexer 114 may also multiplex attribute information related to the sensor data or three-dimensional data.
  • the multiplexed data may have a file format for storage or a packet format for transmission.
  • These formats may include ISOBMFF or an ISOBMFF-based format.
  • 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 via a wired connection or wirelessly.
  • the multiplexed data may be stored in internal memory or a storage device.
  • the multiplexed data may be transmitted to a cloud server via the Internet, or may be stored in an external storage device.
  • the transmission or storage of multiplexed data is performed using a method appropriate to the medium for transmission or storage, such as broadcasting or communication.
  • the communication protocol may be http, ftp, TCP, UDP, IP, or a combination of these.
  • 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 may be used.
  • 3GPP registered trademark
  • 3G/4G/5G as defined by IEEE wireless LAN, Wi-Fi, Bluetooth, or millimeter waves
  • DVB-T2, DVB-S2, DVB-C2, ATSC3.0, or ISDB-S3 may be used, for example.
  • 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 directly as a transmission signal to the external connector 310 via the input/output processor 112.
  • the transmission signal output from the three-dimensional data encoding system 110 is input to the three-dimensional data decoding system 210 via the external connector 310.
  • 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 the input/output processor 212.
  • the input/output processor 212 decodes multiplexed data in file format or packet format from the transmission signal and inputs the multiplexed data to the system demultiplexer 214.
  • the system demultiplexer 214 obtains coded data and control information from the multiplexed data and inputs them to the three-dimensional data decoder 213.
  • the system demultiplexer 214 may also extract other media or reference time information 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 the 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 the additional information.
  • user instructions may be input from a 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 obtain 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 an example of the configuration of point cloud data according to this embodiment.
  • the point cloud data is data of a group of points representing a three-dimensional object.
  • a point cloud is made up of multiple points, and has position information indicating the three-dimensional coordinate position of each point, and attribute information indicating the attributes of each point. Position information is also expressed as geometry.
  • the type of attribute information may be, for example, color or reflectance.
  • a single point may be associated with attribute information of a single type, or a single point may be associated with attribute information of multiple different types, or a single point may be associated with attribute information having multiple values for the same type.
  • FIG. 14 is a conceptual diagram showing an example data file of point cloud data according to this embodiment.
  • the location information is information that indicates a three-dimensional coordinate position using the three axes x, y, and z
  • the attribute information is information that indicates a color using RGB.
  • a PLY file or the like can be used as a typical data file for point cloud data.
  • FIG. 15 is a conceptual diagram showing an example of the configuration of mesh data according to this embodiment.
  • Mesh data is data used in CG (Computer Graphics) and the like, and is three-dimensional mesh data that shows the three-dimensional shape of an object using multiple surfaces. Each surface is also expressed as a polygon, and has a polygonal shape such as a triangle or a rectangle.
  • a 3D mesh is made up of multiple points that make up a point cloud, as well as multiple edges and faces. Each point is also expressed as a vertex or position. Each edge corresponds to a line segment connected by two vertices. Each face corresponds to an area surrounded by three or more edges.
  • a three-dimensional mesh also has position information that indicates the three-dimensional coordinate positions of its vertices. This position information is also expressed as vertex information or geometry.
  • a three-dimensional mesh also has connection information that indicates the relationship between the multiple vertices that make up an edge or face. This connection information is also expressed as connectivity.
  • a three-dimensional mesh also has attribute information that indicates the attributes of the vertices, edges, or faces. The attribute information in a three-dimensional mesh is also expressed as texture.
  • attribute information may indicate the color, reflectance, or normal vector for a vertex, edge, or face.
  • the direction of the normal vector may represent the front and back of the face.
  • An object file or similar format may be used as the data file format for mesh data.
  • FIG. 16 is a conceptual diagram showing an example data file of mesh data according to this embodiment.
  • the data file contains position information G(1) to G(N) for the N vertices that make up the three-dimensional mesh, and attribute information A1(1) to A1(N) for the N vertices.
  • M pieces of attribute information A2(1) to A2(M) are also included.
  • the attribute information items do not have to correspond one-to-one to vertices or faces.
  • attribute information does not have to exist.
  • Connectivity information is indicated by a combination of vertex indices.
  • attribute information may be recorded in a separate file.
  • a pointer to that content may then be associated with a vertex, face, or the like.
  • attribute information indicating an image for a face may be stored in a two-dimensional attribute map file.
  • the file name of the attribute map and the two-dimensional coordinate values in the attribute map may then be recorded in attribute information A2(1) to A2(M).
  • the method of specifying attribute information for a face is not limited to these methods, and any method may be used.
  • 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 objects or dynamic objects.
  • a static object is an object that does not change over time
  • a dynamic object is an object that changes over time.
  • a static object may correspond to three-dimensional data for any point in time.
  • point cloud data for a given point in time may be expressed as a PCC frame.
  • Mesh data for a given point in time may be expressed as a mesh frame.
  • PCC frames and mesh frames may be simply expressed as frames.
  • the area of the object may be limited to a certain range, as in normal video data, or it may not be limited, as in map data.
  • the density of points or surfaces may be defined 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 device, process, or syntax for encoding and decoding vertex information of three-dimensional meshes in this disclosure may be applied to the encoding and decoding of point clouds.
  • the device, process, or syntax for encoding and decoding vertex information of three-dimensional meshes in this disclosure may be applied to the encoding and decoding of point clouds.
  • the device, process, or syntax for encoding and decoding attribute information of point clouds in the present disclosure may be applied to encoding and decoding connectivity information or attribute information of three-dimensional meshes.
  • the device, process, or syntax for encoding and decoding connectivity information or attribute information of three-dimensional meshes in the present disclosure may be applied to encoding and decoding attribute information of point clouds.
  • processing may be shared between the encoding and decoding of point cloud data and the encoding and decoding of mesh data. This can reduce the scale of the circuit and software program.
  • FIG. 18 is a block diagram showing an example configuration of a 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, the attribute information encoder 122, and the multiplexer 124 may correspond to the vertex information encoder 101, the attribute information encoder 103, and the post-processor 105 in FIG. 6, etc.
  • the three-dimensional data encoder 113 encodes the three-dimensional data according to a geometry-based encoding method. Encoding according to the geometry-based encoding method takes into account the three-dimensional structure. Also, encoding according to the geometry-based encoding method encodes attribute information using configuration information obtained in encoding the vertex information.
  • the vertex information, attribute information, and metadata contained in the three-dimensional data generated from sensor data are input to a vertex information encoder 121, an attribute information encoder 122, and a metadata encoder 123, respectively.
  • the connectivity information contained 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.
  • the vertex information encoder 121 also generates metadata for the compressed vertex information and outputs it to the multiplexer 124.
  • the vertex information encoder 121 also generates configuration information and outputs it to the attribute information encoder 122.
  • the attribute information encoder 122 uses the configuration information generated by the vertex information encoder 121 to encode the attribute information into compressed attribute information and outputs the compressed attribute information as encoded data to the multiplexer 124.
  • the attribute information encoder 122 also generates metadata for the compressed attribute information and outputs it to the multiplexer 124.
  • the metadata encoder 123 encodes compressible 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 to encode vertex information and attribute information.
  • the multiplexer 124 multiplexes the compressed vertex information, compressed vertex information metadata, compressed attribute information, compressed attribute information metadata, and compressed metadata into a bitstream.
  • the multiplexer 124 then inputs the bitstream to the system layer.
  • FIG. 19 is a block diagram showing an example configuration of a three-dimensional data decoder 213 according to this 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, the attribute information decoder 222, and the demultiplexer 224 may correspond to the vertex information decoder 201, the attribute information decoder 203, and the preprocessor 204 in FIG. 8, etc.
  • the three-dimensional data decoder 213 decodes three-dimensional data according to a geometry-based encoding method.
  • Decoding according to a geometry-based encoding method takes into account three-dimensional structures.
  • decoding according to a geometry-based encoding method decodes attribute information using configuration information obtained in decoding vertex information.
  • a bitstream is input from the system layer to the demultiplexer 224.
  • the demultiplexer 224 separates compressed vertex information, compressed vertex information metadata, compressed attribute information, compressed attribute information metadata, and compressed metadata from the bitstream.
  • the compressed vertex information and compressed vertex information metadata are input to the vertex information decoder 221.
  • the compressed attribute information and compressed attribute information metadata are input to the attribute information decoder 222.
  • the metadata is input to the metadata decoder 223.
  • the vertex information decoder 221 decodes vertex information from the compressed vertex information using the metadata of the compressed vertex information.
  • the vertex information decoder 221 also generates configuration information and outputs it to the attribute information decoder 222.
  • the attribute information decoder 222 decodes attribute information from the compressed attribute information using the configuration information generated by the vertex information decoder 221 and the metadata of the compressed attribute information.
  • the metadata decoder 223 decodes metadata from the compressed metadata. The metadata decoded by the metadata decoder 223 may be used to decode the vertex information and the attribute information.
  • the vertex information, attribute information, and metadata are output from the 3D data decoder 213 as 3D data.
  • this metadata is, for example, metadata about the vertex information and attribute information, and can be used in an application program.
  • FIG. 20 is a block diagram showing another example configuration 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, the attribute image generator 132, and the video encoder 134 may correspond to the vertex information encoder 101 and the attribute information encoder 103 in FIG. 6, etc.
  • the three-dimensional data encoder 113 encodes the three-dimensional data according to a video-based encoding method.
  • a video-based encoding method multiple two-dimensional images are generated from the three-dimensional data, and the multiple two-dimensional images are encoded according to a video encoding method.
  • the video encoding method may be HEVC (High Efficiency Video Coding) or VVC (Versatile Video Coding), etc.
  • the vertex information and attribute information contained in the three-dimensional data generated from the sensor data is input to the metadata generator 133.
  • the vertex information and attribute information are then input to the vertex image generator 131 and the attribute image generator 132, respectively.
  • the metadata contained in the three-dimensional data is then input to the metadata encoder 123.
  • the connectivity information contained in the three-dimensional data may be treated in the same way as the attribute information.
  • the position information may be treated as vertex information.
  • the metadata generator 133 generates map information for multiple two-dimensional images from the vertex information and attribute information.
  • the metadata generator 133 then inputs the map information to the vertex image generator 131, the attribute image generator 132, and the metadata encoder 123.
  • the vertex image generator 131 generates a vertex image based on the vertex information and map information and inputs it to the video encoder 134.
  • the attribute image generator 132 generates an attribute image based on the attribute information and map information and inputs it to the video encoder 134.
  • the video encoder 134 encodes the vertex images and attribute images into compressed vertex information and compressed attribute information, respectively, according to a video encoding method, and outputs the compressed vertex information and compressed attribute information to the multiplexer 124 as encoded data.
  • the video encoder 134 also generates metadata for the compressed vertex information and metadata for the compressed attribute information, and outputs these to the multiplexer 124.
  • the metadata encoder 123 encodes compressible metadata into compressed metadata and outputs the compressed metadata to the multiplexer 124 as encoded data.
  • the compressible metadata includes map information.
  • the metadata encoded by the metadata encoder 123 may also be used to encode vertex information and attribute information.
  • the multiplexer 124 multiplexes the compressed vertex information, compressed vertex information metadata, compressed attribute information, compressed attribute information metadata, 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 example configuration of the 3D data decoder 213 according to this embodiment.
  • the 3D data decoder 213 includes a vertex information generator 231, an attribute information generator 232, a video decoder 234, a metadata decoder 223, and a demultiplexer 224.
  • the vertex information generator 231, the attribute information generator 232, and the video decoder 234 may correspond to the vertex information decoder 201 and the attribute information decoder 203 in FIG. 8, etc.
  • the 3D data decoder 213 decodes the 3D data according to a video-based coding method.
  • decoding according to a video-based coding method multiple 2D images are decoded according to a video coding method, and 3D data is generated from the multiple 2D images.
  • the video coding method may be HEVC (High Efficiency Video Coding) or VVC (Versatile Video Coding), etc.
  • the bitstream is input from the system layer to the demultiplexer 224.
  • the demultiplexer 224 separates compressed vertex information, compressed vertex information metadata, compressed attribute information, compressed attribute information metadata, and compressed metadata from the bitstream.
  • the compressed vertex information, compressed vertex information metadata, compressed attribute information, and compressed attribute information metadata are input to the video decoder 234.
  • the compressed metadata is input to the metadata decoder 223.
  • the video decoder 234 decodes the vertex images in accordance with the video encoding method. In doing so, the video decoder 234 decodes the vertex images from the compressed vertex information using the metadata of the compressed vertex information. The video decoder 234 then inputs the vertex images to the vertex information generator 231. The video decoder 234 also decodes the attribute images in accordance with the video encoding method. In doing so, the video decoder 234 decodes the attribute images from the compressed attribute information using the metadata of the compressed attribute information. The video decoder 234 then inputs the attribute images to the attribute information generator 232.
  • the metadata decoder 223 decodes metadata from the compressed metadata.
  • the metadata decoded by the metadata decoder 223 includes map information used to generate vertex information and attribute information.
  • the metadata decoded by the metadata decoder 223 may also be used to decode vertex images and attribute images.
  • the vertex information generator 231 reproduces vertex information from the vertex image according to the map information contained in the metadata decoded by the metadata decoder 223.
  • the attribute information generator 232 reproduces attribute information from the attribute image according to the map information contained in the metadata decoded by the metadata decoder 223.
  • the vertex information, attribute information, and metadata are output from the 3D data decoder 213 as 3D data.
  • this metadata is, for example, metadata about the vertex information and attribute information, and can be used in an application program.
  • FIG. 22 is a conceptual diagram showing a specific example of the encoding process according to this embodiment.
  • FIG. 22 shows a three-dimensional data encoder 113 and a description encoder 148.
  • the three-dimensional data encoder 113 includes a two-dimensional data encoder 141 and a mesh data encoder 142.
  • the two-dimensional data encoder 141 includes a texture encoder 143.
  • the mesh data encoder 142 includes a vertex information encoder 144 and a connectivity information encoder 145.
  • the vertex information encoder 144, the connection information encoder 145, and the texture encoder 143 may correspond to the vertex information encoder 101, the connection information encoder 102, and the attribute information encoder 103 in Figure 6, etc.
  • the two-dimensional data encoder 141 operates as a texture encoder 143, and generates a texture file by encoding the texture corresponding to the attribute information as two-dimensional data according to an image encoding method or a video encoding method.
  • the mesh data encoder 142 also operates as a vertex information encoder 144 and a connectivity information encoder 145, and generates a mesh file by encoding the vertex information and connectivity information.
  • the mesh data encoder 142 may also encode mapping information for textures. The encoded mapping information may then be included in the mesh file.
  • the description encoder 148 generates a description file by encoding a description corresponding to metadata such as text data.
  • the description encoder 148 may encode the description at the system layer.
  • the description encoder 148 may be included in the system multiplexer 114 of FIG. 12.
  • the above operations generate a bitstream containing texture files, mesh files, and description files. These files may be multiplexed into the bitstream in file formats 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 connectivity information of a static three-dimensional mesh
  • the other mesh data encoder encodes vertex information and connectivity information of a dynamic three-dimensional mesh.
  • two mesh files may be included in the bitstream.
  • one mesh file corresponds to a static 3D mesh
  • the other mesh file corresponds to a dynamic 3D mesh.
  • the static three-dimensional mesh may be a three-dimensional mesh of an intraframe that is coded using intraprediction
  • the dynamic three-dimensional mesh may be a three-dimensional mesh of an interframe that is coded using interprediction.
  • differential information between the vertex information or connectivity information of the three-dimensional mesh of an intraframe and the vertex information or connectivity information of the three-dimensional mesh of an interframe may be used as information on the dynamic three-dimensional mesh.
  • FIG. 23 is a conceptual diagram showing a specific example of the decoding process according to this embodiment.
  • FIG. 23 shows a three-dimensional data decoder 213, a description decoder 248, and a 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 connectivity information decoder 245.
  • the vertex information decoder 244, the connection information decoder 245, the texture decoder 243, and the mesh reconstructor 246 may correspond to the vertex information decoder 201, the connection information decoder 202, the attribute information decoder 203, and the post-processor 205 in FIG. 8.
  • the presenter 247 may correspond to the presenter 215 in FIG. 12.
  • the two-dimensional data decoder 241 operates as a texture decoder 243, and decodes the texture corresponding to the attribute information from the texture file as two-dimensional data in accordance with an image encoding method or a video encoding method.
  • the mesh data decoder 242 also operates as a vertex information decoder 244 and a connectivity information decoder 245, decoding vertex information and connectivity information from the mesh file.
  • the mesh data decoder 242 may also decode mapping information for textures from the mesh file.
  • the description decoder 248 decodes descriptions corresponding to metadata such as text data from the description file.
  • the description decoder 248 may decode the descriptions at the system layer.
  • the description decoder 248 may be included in the system demultiplexer 214 of FIG. 12.
  • the mesh reconstructor 246 reconstructs a three-dimensional mesh from vertex information, connectivity information, and texture according to the description.
  • the renderer 247 renders and outputs the three-dimensional mesh according to the description.
  • the above operation reconstructs and outputs a 3D mesh from a bitstream containing a texture file, mesh file, and description file.
  • the three-dimensional data decoder 213 may be equipped with two mesh data decoders as the mesh data decoder 242.
  • one mesh data decoder decodes vertex information and connectivity information of a static three-dimensional mesh
  • the other mesh data decoder decodes vertex information and connectivity information of a dynamic three-dimensional mesh.
  • two mesh files may be included in the bitstream.
  • one mesh file corresponds to a static 3D mesh
  • the other mesh file corresponds to a dynamic 3D mesh.
  • the static three-dimensional mesh may be a three-dimensional mesh of an intraframe that is coded using intraprediction
  • the dynamic three-dimensional mesh may be a three-dimensional mesh of an interframe that is coded using interprediction.
  • differential information between the vertex information or connectivity information of the three-dimensional mesh of an intraframe and the vertex information or connectivity information of the three-dimensional mesh of an interframe may be used as information on the dynamic three-dimensional mesh.
  • the dynamic 3D mesh coding method is sometimes called DMC (Dynamic Mesh Coding).
  • the video-based dynamic 3D mesh coding method is sometimes called V-DMC (Video-based Dynamic Mesh Coding).
  • the point cloud encoding method is sometimes called PCC (Point Cloud Compression).
  • the video-based point cloud encoding method is sometimes called V-PCC (Video-based Point Cloud Compression).
  • the geometry-based point cloud encoding method is sometimes called G-PCC (Geometry-based Point Cloud Compression).
  • Fig. 24 is a block diagram showing an example implementation of the encoding device 100 according to this embodiment.
  • the encoding device 100 includes a circuit 151 and a memory 152.
  • multiple components of the encoding device 100 shown in Fig. 5 and the like are implemented by the circuit 151 and memory 152 shown in Fig. 24.
  • Circuit 151 is a circuit that performs information processing and is capable of accessing 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.
  • Circuit 151 may also be a collection of multiple electrical circuits.
  • Memory 152 is a dedicated or general-purpose memory that stores information used by circuit 151 to encode the three-dimensional mesh.
  • Memory 152 may be an electrical circuit and may be connected to circuit 151.
  • Memory 152 may also be included in circuit 151.
  • Memory 152 may also be a collection of multiple electrical circuits.
  • Memory 152 may also be a magnetic disk, an optical disk, etc., and may also be expressed as storage or recording medium, etc.
  • Memory 152 may also be non-volatile memory or volatile memory.
  • memory 152 may store a three-dimensional mesh or a bitstream.
  • Memory 152 may also store a program that circuit 151 uses to encode the three-dimensional mesh.
  • the encoding device 100 does not need to implement all of the multiple components shown in FIG. 5 and the like, and does not need to perform all of the multiple processes shown here. Some of the multiple components shown in FIG. 5 and the like may be included in another device, and some of the multiple processes shown here may be performed by another device. Furthermore, the encoding device 100 may implement any combination of the multiple components of the present disclosure, and may perform any combination of the multiple processes of the present disclosure.
  • FIG. 25 is a block diagram showing an example implementation of a decoding device 200 according to this embodiment.
  • the decoding device 200 includes a circuit 251 and a memory 252.
  • multiple components of the decoding device 200 shown in FIG. 7 and other figures are implemented using the circuit 251 and memory 252 shown in FIG. 25.
  • Circuit 251 is a circuit that performs information processing and is capable of accessing memory 252.
  • circuit 251 is a dedicated or general-purpose electrical circuit that decodes three-dimensional meshes.
  • Circuit 251 may be a processor such as a CPU.
  • Circuit 251 may also be a collection of multiple electrical circuits.
  • Memory 252 is a dedicated or general-purpose memory that stores information used by circuit 251 to decode the three-dimensional mesh.
  • Memory 252 may be an electrical circuit and may be connected to circuit 251. Memory 252 may also be included in circuit 251. Memory 252 may also be a collection of multiple electrical circuits. Memory 252 may also be a magnetic disk, an optical disk, etc., and may also be expressed as storage or recording medium, etc. Memory 252 may also be non-volatile memory or volatile memory.
  • the memory 252 may store a three-dimensional mesh or a bitstream.
  • the memory 252 may also store a program that allows the circuit 251 to decode the three-dimensional mesh.
  • the decoding device 200 does not necessarily have to implement all of the multiple components shown in FIG. 7 and the like, and does not necessarily have to perform all of the multiple processes shown here. Some of the multiple components shown in FIG. 7 and the like may be included in another device, and some of the multiple processes shown here may be executed by another device. Furthermore, the decoding device 200 may implement any combination of the multiple components of the present disclosure, and may perform any combination of the multiple processes of the present disclosure.
  • the encoding method and decoding method may be executed by any device or system.
  • part or all of the encoding method and decoding method may be executed by a computer equipped with a processor, memory, input/output circuitry, etc.
  • the encoding method and decoding method may be executed by the computer executing a program for causing the computer to execute the encoding method and decoding method.
  • program or bitstream may be recorded on a non-transitory computer-readable recording medium such as a CD-ROM.
  • An example of a program may be a bitstream.
  • a bitstream containing an encoded three-dimensional mesh includes syntax elements for causing the decoding device 200 to decode the three-dimensional mesh.
  • the bitstream then causes the decoding device 200 to decode the three-dimensional mesh in accordance with the syntax elements included in the bitstream. Therefore, the bitstream may play a role similar to that of a program.
  • the bitstream may be an encoded bitstream containing an encoded 3D mesh, or a multiplexed bitstream containing an encoded 3D 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-mentioned programs, or a combination of these.
  • the general-purpose hardware may be configured with a memory in which the program is recorded, and a general-purpose processor that reads and executes the program from the memory.
  • the memory may be a semiconductor memory or a hard disk, and the general-purpose processor may be a CPU, etc.
  • the dedicated hardware may be composed of a memory and a dedicated processor.
  • a dedicated processor may execute the encoding method and decoding method by referencing a memory for recording data.
  • each component of the encoding device 100 and the decoding device 200 may be an electrical circuit. These electrical circuits may form a single electrical circuit as a whole, or each may be a separate electrical circuit. Furthermore, these electrical circuits may correspond to dedicated hardware, or may correspond to general-purpose hardware that executes the above-mentioned programs, etc. Furthermore, the encoding device 100 and the decoding device 200 may be implemented as an integrated circuit.
  • the encoding device 100 may be a transmitting device that transmits a three-dimensional mesh.
  • the decoding device 200 may be a receiving device that receives a three-dimensional mesh.
  • Image An image is a data unit made up of a set of pixels, and includes a picture or a block smaller than a picture. Images include both moving images and still images.
  • Picture A picture is a unit of image processing that is made up of a set of pixels, and is also called a frame or field.
  • Block A block is a processing unit consisting of a specific number of pixels.
  • the term shown in the following example is also used for a block.
  • the shape of a block is not particularly limited.
  • a block may be, for example, a rectangular shape of M ⁇ N pixels or a square shape of M ⁇ M pixels.
  • a block may also be a triangular shape, a circular shape, or another shape. Examples of blocks are as follows:
  • Slice, tile, or brick CTU, superblock, or basic division unit VPDU processing division unit for hardware CU, processing block unit, prediction block unit (PU), or orthogonal transform block unit (TU) ⁇ Sub-block
  • Pixel or Sample A pixel or sample is the smallest point of an image, in other words, the smallest unit. Pixels or samples include not only pixels at integer positions, but also pixels at sub-pixel positions generated based on pixels at integer positions.
  • a pixel value or sample value is a unique value of a pixel.
  • the pixel value or sample value may include a luma value, a chroma value, or an RGB gradation level, and may also include a depth value or a binary value of 0 or 1.
  • a flag indicates one or more bits.
  • a flag is, for example, a parameter or index represented by two or more bits.
  • a flag may indicate not only a value represented by a binary number, but also a value represented by a number other than a binary number.
  • a signal is something that is symbolized or coded to transmit information.
  • a signal includes a discrete digital signal or a continuous analog signal.
  • a stream or bit stream is a digital data sequence that indicates the flow of digital data.
  • a stream or bit stream may be a single stream, or may be configured to include multiple streams with multiple layers.
  • a stream or bit stream may be transmitted by serial communication using a single transmission path, or may be transmitted by packet communication using multiple transmission paths.
  • difference can include simple difference (x - y) and difference calculations, such as absolute difference (
  • sums can include simple sum (x + y) and addition operations. Sum can also include absolute sum (
  • Chroma is an adjective, represented by the symbols Cb or Cr, that indicates that a sample array or a single sample represents one of the two color-difference signals associated with a primary color.
  • the term chroma is sometimes used instead of the term chrominance.
  • Luma is an adjective, denoted by the symbols or subscripts Y or L, that indicates that a sample array or a single sample represents a monochrome signal for a primary color.
  • the term luma is sometimes used instead of the term luminance.
  • a typical three-dimensional model (also known as a 3D model) digitally represents an object in a way that allows a user to explore the model using zoom, pan, and rotation in all three dimensions while it is rendered over time.
  • One way to build such a representation is to construct a 3D mesh using triangles.
  • the model stores the positions of the triangle vertices, their connectivity to each other, and their associated attributes (such as normals or UV patches).
  • V-DMC Video-based Dynamic Mesh Coding
  • FIG. 26 is a block diagram showing another example configuration of an encoding/decoding system according to this embodiment. As shown in FIG. 26, the encoding/decoding system includes an encoding device 100 and a decoding device 200.
  • the encoding/decoding system accepts a three-dimensional mesh (also called a 3D mesh) input in the form of three-dimensional coordinates of vertices (vertex information), connectivity (connectivity information), and associated attributes (attribute information).
  • a three-dimensional mesh also called a 3D mesh
  • vertex information three-dimensional coordinates of vertices
  • connectivity connectivity information
  • attribute information associated attributes
  • the 3D mesh can also include texture maps as well as geometry.
  • the encoding device 100 takes in an input 3D mesh (also referred to as an input 3D mesh or input mesh) in the form of three-dimensional coordinates of vertices, connectivity, and associated attributes.
  • the encoding device 100 encodes all associated information into a stream.
  • the stream may consist of a single bitstream or multiple bitstreams.
  • Network 300 transmits the stream generated by the encoding device to decoding device 200.
  • Network 300 may be the Internet, a WAN (Wide Area Network), a LAN (Local Area Network), or any combination of these.
  • network 300 is not necessarily limited to a two-way communication network, but may also be a one-way communication network that transmits broadcast waves such as terrestrial digital broadcasting or satellite broadcasting.
  • a recording medium such as a DVD (Digital Versatile Disc) or BD (Blu-Ray Disc) on which a stream is recorded may be used.
  • the stream is transmitted to the decoding device 200 via the network 300.
  • the decoding device 200 decodes the bitstream and generates a 3D mesh using the 3D coordinates, connectivity, and associated attributes of the decoded vertices.
  • the decoding device 200 outputs the generated 3D mesh (also referred to as an output 3D mesh or output mesh).
  • FIG. 27 shows another example configuration of the encoding device 100.
  • the encoding device 100 includes a preprocessor 1103 and a compressor 1106.
  • the encoding device 100 reads the input mesh 1101 and attribute map 1102 and passes them to the preprocessor 1103.
  • the preprocessor 1103 processes the input mesh to extract a base mesh 1104 and displacement data 1105.
  • the attribute map 1102, along with the extracted base mesh 1104 and displacement data 1105, is passed to the compressor 1106.
  • the compressor 1106 also compresses the base mesh 1104, displacement data 1105, and attribute map 1102 to generate a bitstream 1107.
  • the compressor 1106 can transmit additional information to the decoding device 200 by further including metadata 1108 in the bitstream 1107.
  • Figure 28 shows another example configuration of the decoding device 200.
  • the decoding device 200 includes a decompressor 2102 and a post-processor 2106.
  • the decoding device 200 reads the bitstream 2101 and passes it to the decompressor 2102.
  • the decompressor 2102 decompresses the base mesh 2103, displacement data 2104, and attribute map 2108 from the bitstream 2101 and passes them to the post-processor 2106.
  • An example of the displacement data 2104 is a displacement vector.
  • the post-processor 2106 also processes the base mesh 2103 according to the displacement data 2104 and the attribute map 2108 to generate the output mesh 2107.
  • the post-processor 2106 may further use information from the metadata 2105 to generate the output mesh 2107.
  • FIG. 29 is a block diagram showing yet another example configuration of the encoding device 100 according to this embodiment.
  • the encoding device 100 includes a volumetric capturer 511, a projector 512, a base mesh encoder 513, a displacement encoder 514, an attribute encoder 515, and optionally one or more other type encoders 516.
  • the volumetric capturer 511 captures content and outputs the captured content to the projector 512.
  • the projector 512 projects the content onto a 3D mesh frame, which includes vertex geometry coordinates (vertex coordinates indicating the positions of the vertices), texture coordinates, and connectivity data (connection information).
  • the data is output to a base mesh encoder 513, a displacement encoder 514, an attribute encoder 515, and optionally one or more other type encoders 516.
  • Each encoder compresses the data into a bitstream.
  • Figure 30 is a block diagram showing yet another example configuration of a decoding device 200 according to this embodiment.
  • the decoding device 200 includes a base mesh decoder 613, a displacement decoder 614, an attribute decoder 615, one or more other type decoders 616, and a 3D reconstructor 617.
  • the bitstream is sent to a base mesh decoder 613, a displacement decoder 614, an attribute decoder 615, and optionally one or more other type decoders 616. These decoders decode the bitstream to generate decoded data including vertex geometry coordinates, texture coordinates, and connectivity data. The decoded data is then sent to a 3D reconstructor 617, which reconstructs a 3D mesh frame.
  • the encoding process performed by the encoding device 100 will be explained in detail below.
  • Figure 31 is a flow diagram showing the processing of the encoding device 100.
  • Figure 32 is an explanatory diagram conceptually showing the encoding of mesh frames. The processing of the encoding device 100 will be explained with reference to Figures 31 and 32.
  • step S101 the encoding device 100 reads a 3D mesh frame, which is an input mesh frame, and its attributes.
  • the input mesh frame is a mesh frame input to the encoding device 100.
  • An example of a 3D mesh frame that is an input mesh frame is shown as mesh frame 1301 (see Figure 32).
  • step S102 the encoding device 100 performs a decimation process on the input mesh frame read in step S101 to generate a base mesh frame with fewer vertices than the input mesh frame.
  • the base mesh frame generated by decimating mesh frame 1301 is shown as base mesh frame 1302 (see Figure 32).
  • step S103 the encoding device 100 calculates displacement information that the decoding device 200 uses to reconstruct a mesh frame.
  • the displacement information corresponds to a displacement vector pointing from a vertex of the base mesh frame generated in step S102 to a vertex of the input mesh frame.
  • One method for calculating the displacement information is to subtract the coordinates of the vertex of the base mesh frame from the coordinates of the vertex of the input mesh frame.
  • the displacement information calculated from the mesh frame 1301 and the base mesh frame 1302 is shown as displacement information 1303 (see Figure 32).
  • the displacement information 1303 is in vector format, in other words, it is expressed as a displacement vector.
  • step S104 the encoding device 100 encodes the base mesh frame generated in step S102, the displacement information generated in step S103, and the attributes of the input mesh frame into a bitstream (equivalent to a compressed bitstream).
  • bitstream 1304 An example of the bitstream is shown as bitstream 1304 (see Figure 32).
  • bitstream 1304 includes vertex coordinates and connectivity information for vertices A, C, E, and F, displacement information, a video bitstream including texture data, and a compressed attribute map (see FIG. 32).
  • the displacement information includes displacement information for displacing vertices based on vertex coordinates obtained from the subdivided base mesh frame.
  • the compressed attribute map is texture coordinates for applying texture data to a mesh frame reconstructed using the base mesh frame and displacement information.
  • the decoding process performed by the decoding device 200 will be explained in detail below.
  • Figure 33 is a flow diagram showing the processing of the decoding device 200.
  • Figure 34 is an explanatory diagram conceptually showing the decoding of a 3D mesh. The processing of the decoding device 200 will be explained with reference to Figures 33 and 34.
  • step S201 the decoding device 200 decodes the base mesh frame and attributes from the bitstream (equivalent to the compressed bitstream).
  • An example of the decoded base mesh frame (equivalent to the decoded base mesh frame) is shown as decoded base mesh frame 2301 (see Figure 34).
  • step S202 the decoding device 200 generates subdivided vertices by performing a subdivision process on the base mesh frame decoded in step S201.
  • An example of a base mesh frame including subdivided vertices is shown as base mesh frame 2302 (see Figure 34).
  • step S203 the decoding device 200 decodes the displacement information from the bitstream (equivalent to the compressed bitstream).
  • An example of the decoded displacement information is shown as displacement information 2303 (see Figure 34).
  • the displacement information 2303 is in vector format, in other words, expressed as a displacement vector.
  • step S204 the decoding device 200 reconstructs the shape of the mesh frame by moving the vertices of the base mesh frame, including the subdivided vertices, to new positions using the displacement information, and then restores the mesh frame by applying attribute information.
  • An example of an attribute is texture.
  • An example of a reconstructed mesh frame is shown as mesh frame 2304 (see Figure 34).
  • FIG. 35 is a block diagram showing an example configuration of a decoding device according to this embodiment.
  • Figure 35 shows an example of a block diagram for general intra-decoding.
  • the decoding device shown in FIG. 35 includes a demultiplexer 1231, a switch 1232, a static mesh decoder 1233, a mesh buffer 1234, a motion decoder 1235, a base mesh reconstructor 1236, an inverse quantizer 1237, a video decoder 1238, an image unpacker 1239, an inverse quantizer 1240, an inverse wavelet transformer 1241, a reconstructor 1242, a video decoder 1243, and a color transformer 1244.
  • the demultiplexer 1231 takes the compressed bitstream and separates it into compressed data for the base mesh, video containing displacement data (also called a displacement bitstream), and video containing attribute data (also called an attribute bitstream).
  • the compressed data for the base mesh is passed to the switch 1232, which determines whether to perform intra-decoding or inter-decoding based on parameters in the bitstream.
  • the bitstream is passed to a static mesh decoder 1233, which generates a quantized base mesh.
  • the static mesh decoder 1233 is, for example, a decoder that uses an edge breaker algorithm to decode 3D mesh data.
  • the static mesh decoder 1233 generates a quantized base mesh from the bitstream.
  • the quantized base mesh generated by the static mesh decoder 1233 is stored in a mesh buffer 1234 for reference when an inter-decoding process is selected.
  • switch 1232 passes compressed data for the base mesh to motion decoder 1235.
  • Motion decoder 1235 receives a previously decoded quantized base mesh and decodes motion data representing the difference in vertex coordinates between the quantized base mesh stored in mesh buffer 1234 and the current quantized base mesh.
  • the motion data and the quantized base mesh stored in mesh buffer 1234 are used by base mesh reconstructor 1236 to reconstruct the current quantized base mesh.
  • the quantized base mesh resulting from either inter-decoding or intra-decoding is passed to inverse quantizer 1237 to obtain a decoded base mesh.
  • the video containing the displacement data is passed to the video decoder 1238, as the bitstream contains the displacement data in an image format with two chroma pieces of information and one luma piece of information.
  • the video decoder 1238 decodes the data using a video frame decompression method.
  • the displacement data can be decoded using an arithmetic decoder.
  • This decompressed data is passed to the image unpacker 1239, which extracts wavelet coefficients associated with each vertex from the image-format decompressed data.
  • the inverse quantizer 1240 dequantizes the quantized wavelet coefficients into the three components associated with each vertex.
  • the inverse wavelet transformer 1241 inversely transforms the result to finally obtain the decoded displacement data.
  • the decoded displacement data and the decoded base mesh are passed to the reconstructor 1242, which performs edge refinement on the decoded base mesh and displaces the vertices using the decoded displacement data to obtain the decoded mesh.
  • the video containing the attribute data is passed to another video decoder 1243 to obtain a decoded attribute bitstream.
  • the decoded attribute bitstream is further processed by a color converter 1244 for color space and color format conversion to obtain a decoded attribute map.
  • FIG. 36 is a block diagram showing an example configuration of a decoding device according to this embodiment.
  • Figure 36 shows an example of a reconstructor that obtains a decoded 3D mesh 1256 from a decoded base mesh 1251 and decoded displacement data 1254.
  • the decoded base mesh 1251 is passed to the subdivision unit 1252.
  • the subdivision unit 1252 subdivides any two connected vertices across the 3D mesh by adding a new vertex between them. This process can be repeated several times, including vertices created in previous subdivision steps, to generate a predefined number of vertices. Each subdivision iteration across the 3D mesh generates a new level of detail (LoD).
  • the subdivided mesh 1253 and the decoded displacement data 1254 are passed to the displacer 1255, which generates the decoded 3D mesh 1256 by moving each vertex to a new position according to the corresponding displacement data.
  • Subdivision will be described below. Subdivision is performed by a subdivider (specifically, subdivider 1206 or subdivider 2204).
  • a subdivider specifically, subdivider 1206 or subdivider 2204.
  • Figure 37 is an explanatory diagram showing an example of subdivision.
  • the base mesh shown in Figure 37(a) includes vertices A, B, and C, along with connectivity information indicating their connectivity.
  • FIG. 37 shows the mesh generated by the first subdivision, in other words, the mesh after the first subdivision.
  • the subdivider In the first subdivision, the subdivider generates vertices D, E, and F and connectivity information indicating their connectivity.
  • the mesh generated by the subdivider is also called LoD1 or first LoD.
  • Vertex D of the mesh after the first subdivision is a vertex generated by subdivision based on vertices A and B.
  • vertex E is a vertex generated by subdivision based on vertices B and C.
  • Vertex F is a vertex generated by subdivision based on vertices A and C.
  • vertex D may be the midpoint of the line segment AB (in other words, side AB) connecting the vertices A and B that were the basis for its creation.
  • vertex E may be the midpoint of the line segment AC.
  • Vertex F may be the midpoint of the line segment BC.
  • (c) of Figure 37 shows the mesh generated by the second subdivision, in other words, the mesh after the second subdivision.
  • the subdivider In the second subdivision, the subdivider generates vertices G, H, I, J, K, L, M, N, and O, and connectivity information indicating their connectivity.
  • the mesh generated by the subdivider is also called LoD2 or second LoD.
  • Vertex G of the mesh after the second subdivision is a vertex generated by subdivision based on vertices A and D.
  • vertex H is a vertex generated by subdivision based on vertices A and E.
  • Vertex I is a vertex generated by subdivision based on vertices B and D.
  • Vertex J is a vertex generated by subdivision based on vertices D and F.
  • Vertex K is a vertex generated by subdivision based on vertices E and F.
  • Vertex L is a vertex generated by subdivision based on vertices C and E.
  • Vertex M is a vertex generated by subdivision based on vertices B and F.
  • Vertex N is a vertex generated by subdivision based on vertices C and F.
  • Vertex O is a vertex generated by subdivision based on vertices D and E.
  • vertex G may be the midpoint of line segment AD (in other words, side AD) connecting vertices A and D, which were the basis for its creation.
  • vertex H may be the midpoint of line segment AE.
  • vertex I may be the midpoint of line segment BD.
  • vertex J may be the midpoint of line segment DF.
  • vertex K may be the midpoint of line segment EF.
  • vertex L may be the midpoint of line segment CE.
  • vertex M may be the midpoint of line segment BF.
  • vertex N may be the midpoint of line segment CF.
  • vertex O may be the midpoint of line segment DE.
  • Vertex displacement is performed by the reconstructor 2209.
  • Figure 38 is an explanatory diagram showing an example of vertex displacement after subdivision.
  • Figure 39 is an explanatory diagram showing an example of vertices of the original mesh.
  • the base mesh shown in Figure 38(a) includes vertices A, B, C, and Z, along with connectivity information indicating their connectivity.
  • FIG. 38 shows the mesh generated by the first subdivision, in other words, the mesh after the first subdivision (i.e., the first LoD).
  • the subdivider In the first subdivision, the subdivider generates vertices S, T, U, X, or Y and connectivity information indicating their connectivity. Vertices S, T, U, X, or Y are similar to vertices D, E, and F shown in (b) in Figure 37.
  • (c) of Figure 38 shows the mesh generated by the second subdivision, in other words, the mesh after the second subdivision (i.e., the second LoD).
  • the subdivider In the second subdivision, the subdivider generates vertices D, E, F, G, and H and connectivity information indicating their connectivity. Vertices D, E, F, G, and H are the same as vertices G, H, I, J, K, L, M, N, or O shown in (c) of Figure 37.
  • FIG. 38 shows a mesh including the vertices after they have been displaced following subdivision. Vertices A, B, C, D, E, F, G, H, S, T, U, X, Y, and Z shown in (d) in Figure 38 are each located at positions displaced using displacement information from the positions of the vertices shown in (c) in Figure 38.
  • the original mesh shown in Figure 39 is an example of the mesh input to the encoding device 100, i.e., the mesh before encoding.
  • the mesh shown in Figure 38 has a shape similar to the original mesh shown in Figure 39.
  • the displacement information is generated by the displacement vector calculator 1207 of the encoding device 100 as information indicating the displacement from the vertices of the base mesh to the vertices of the original mesh, so by reconstructing the mesh using the displacement information generated in this way, a mesh having a shape similar to the original mesh is generated.
  • the decoding device 200 can output the mesh shown in Figure 38 (d).
  • a mesh can be divided into multiple smaller parts and each part can be coded.
  • the vertices of the mesh are divided in such a way that the coordinates and connectivity of the vertices in each part can be coded independently.
  • Figure 40 is an explanatory diagram showing an example of a mesh.
  • Figure 41 is an explanatory diagram showing an example of dividing a mesh into sub-meshes.
  • the mesh shown in Figure 40 is the original mesh, and is sometimes called a full mesh in contrast to a submesh.
  • Figure 41 shows how the full mesh shown in Figure 40 is divided into two sub-meshes.
  • vertex A is duplicated to vertex A1 and vertex A2
  • vertex B is duplicated to vertex B1 and vertex B2
  • vertex C is duplicated to vertex C1 and vertex C2, thereby creating two sub-meshes (i.e., the first sub-mesh and the second sub-mesh).
  • the first sub-mesh and the second sub-mesh are meshes that can be decoded independently.
  • Figures 42, 43, and 44 are explanatory diagrams showing examples of packing displacement information into image frames. Note that image frames can also be referred to as video frames.
  • Vertex displacement data is encoded as image frame data by, for example, mapping it to each component of a YUV format image frame (i.e., each of the Y component (Y Plane), U component (U Plane), and V component (V Plane)). This case is explained below as an example.
  • vertex displacement data may be encoded as image frame data by mapping it to each component of an RGB format image frame (each of the R component, G component, and B component).
  • the decoding device 200 can use an image encoding module to extract displacement data.
  • the displacement data can be in the form of an X, Y, or Z component in a global coordinate system (e.g., a Cartesian coordinate system), or a normal, tangential, or both tangential components in a local coordinate system.
  • Methods for mapping displacement data to an image frame include the following:
  • the displacement data is arranged in the image frame in scan order.
  • An example of packing the displacement data in this case is shown in Figure 42.
  • the displacement data is directly mapped to the image frame according to a predefined scan order.
  • displacement data is separated into multiple LoDs and mapped to the Y, U, and V components of the image frame.
  • An example of packing of displacement data in this case is shown in Figure 43.
  • the displacement data for the image frame of the next LoD starts immediately after the displacement data for the previous LoD ends.
  • padding is added to the end of the image frame (see Figure 43).
  • displacement data corresponding to the LoD is mapped to the Y, U, and V components of the image frame in a manner different from that of the second method.
  • An example of packing of displacement data in this case is shown in Figure 44.
  • each LoD can be decoded independently.
  • middle padding is performed on the displacement data of each LoD, and CTU alignment is performed along with padding at the end of the video frame (see Figure 44).
  • a process performed by a specific component may be performed by another component instead of the specific component.
  • the order of multiple processes may be changed, or multiple processes may be performed in parallel.
  • At least some of the configurations of the present disclosure may be implemented as an integrated circuit.
  • At least some of the processes of the present disclosure may be used as an encoding method or a decoding method.
  • a program for causing a computer to execute the encoding method or the decoding method may be used.
  • a non-transitory computer-readable recording medium on which the program is recorded may also be used.
  • a bitstream for causing a decoding device to perform the decoding process may also be used.
  • At least some of the configurations and processes of the present disclosure may be used as a transmitting device, a receiving device, a transmitting method, and a receiving method.
  • a program for causing a computer to execute the transmitting method or the receiving method may also be used.
  • a non-transitory computer-readable recording medium on which the program is recorded may also be used.
  • each component may be configured with dedicated hardware, or may be realized by executing a software program appropriate for that component.
  • Each component may also be realized by a program execution unit such as a CPU or processor reading and executing a software program recorded on a recording medium such as a hard disk or semiconductor memory.
  • the software that realizes the encoding device, etc., of the above embodiments is a program such as the following:
  • the software is a program that causes a computer to execute an encoding method that acquires a first frame to be encoded, encodes first data having one or more layers contained in the first frame by referencing second data having one or more layers contained in a second frame, and, when encoding the first data, determines one of a plurality of processes for each of the one or more layers contained in the first data using a value indicating that layer and a value related to the one or more layers contained in the second data, and executes the determined one process on the first data of that layer.
  • the software that realizes the decoding device and the like in the above embodiment is the following program.
  • the software is a program that causes a computer to execute a decoding method that acquires a first frame to be decoded, decodes first data having one or more layers contained in the first frame by referencing second data having one or more layers contained in a second frame, and, when decoding the first data, determines one of a plurality of processes for each of the one or more layers contained in the first data using a value indicating that layer and a value related to the one or more layers contained in the second data, and executes the determined one process on the first data of that layer.
  • FIGS. 45 to 47 are diagrams for explaining examples of attribute information in mesh data according to an embodiment.
  • FIG. 45 multiple three-dimensional points G (vertices) in mesh data are projected onto a certain plane X, and the two-dimensional coordinates on plane X after the projection are sometimes set as attribute information for these three-dimensional points.
  • the two-dimensional coordinates after projection of a three-dimensional point (x, y, z) onto plane X are (u, v)
  • the two-dimensional coordinates (u, v) are set as attribute information for the three-dimensional point (x, y, z).
  • Figure 45 shows an example in which a set 1501 of vertex coordinates of a three-dimensional mesh represented by mesh data is projected onto plane X and converted into a set 1502 of two-dimensional coordinates on plane X.
  • multiple three-dimensional points within mesh data are projected onto plane X, and the plane information to which the two-dimensional coordinates on plane X after the projection belong is sometimes set as the attribute information of the three-dimensional point.
  • plane information face0 is set as the attribute information of the three-dimensional point (x, y, z).
  • (u, v) (face0, 0)
  • the three-dimensional point (x, y, z) and plane information face0 are associated as UV coordinates.
  • This method allows the relationship between the three-dimensional point (x, y, z) and plane information face0 to be defined using the same mechanism as UV coordinates.
  • attribute information can be added to the 3D points by setting the same plane information. For example, the following processing can be performed:
  • face0 is set as attribute information for 3D points that have connectivity between 3D points G and G.
  • face1 is set as attribute information for 3D points that have connectivity between 3D points G' and G'.
  • the decoding device can obtain the set plane information by decoding the attribute information of the 3D points. Then, using this plane information, it can obtain, for example, related projection information.
  • a three-dimensional point in the mesh data, or a normal vector corresponding to the plane to which that three-dimensional point belongs may be set as attribute information.
  • the device can set the normal vector (nx, ny, nz) for a three-dimensional point (x, y, z) as attribute information. It is also possible to set a three-dimensional point G or a normal vector (nx, ny, nz) corresponding to the plane to which that three-dimensional point G belongs as attribute information for G.
  • Attribute information can include any information, such as color information of a three-dimensional point, reflectance, or the group ID to which the three-dimensional point belongs. Attribute information may also include information with various dimensionalities, such as two-dimensional information such as UV coordinates, one-dimensional information such as plane information face0, and three-dimensional information such as normal vectors.
  • the device can assign multiple pieces of attribute information, such as UV coordinates and a normal vector, to a 3D point (x, y, z). Also, there may be 3D points to which no attribute information has been assigned. In this way, by assigning various types of attribute information to 3D points, it is possible to generate mesh data with greater expressiveness.
  • an example of a method for encoding or decoding attribute information by a device is shown.
  • the example shown here describes the case of encoding or decoding one piece of attribute information assigned to a three-dimensional point, but is not limited to this.
  • this embodiment it is also possible to use this embodiment to encode or decode each piece of attribute information individually. This makes it possible to efficiently encode or decode the attribute information even for three-dimensional points to which multiple pieces of attribute information are assigned.
  • FIG. 48 to 53 are diagrams for explaining specific examples of methods for encoding attribute information.
  • the device selects a first initial 3D point v0 and encodes its uv coordinates without prediction. For example, in the following case, the device may encode the value of (u0, v0) as is. Note that the order in which the 3D points for encoding attribute information are selected is arbitrary; for example, the device may select them in the same order as when encoding the position information of the 3D points. This allows the device to apply predictive encoding while reducing the amount of processing required to select 3D points.
  • the device selects 3D point v1. If 3D point v1 has connectivity with an already-encoded 3D point v, i.e., if they have an edge, the device can use the UV coordinates of 3D point v0 as predicted values and differentially encode the UV coordinates of 3D point v1. For example, in the following case, the device can encode (u1 - u0, v1 - v0). This makes it possible to reduce the amount of coding when the UV coordinate values of 3D point v0 and 3D point v1 are close. Note that this method of predictive encoding using the UV coordinates of a single connected 3D point is called "coarse prediction.”
  • the device selects 3D point v2. If 3D point v2 has connectivity with already-encoded 3D points v0 and v1, i.e., if 3D point v2 has edges with 3D point v1 and v2 with 3D point v0, the device can generate a predicted value using the UV coordinates of 3D points v0 and v1, and differentially encode the UV coordinates of 3D point v2. For example, in the following case, the device can encode (u2 - predx, v2 - predy). This allows for highly accurate generation of a predicted value using 3D points v0 and v1, thereby reducing the amount of coding. Note that this method of predictive encoding using the UV coordinates of two or more connected 3D points is called "fine prediction.”
  • the device selects 3D point v3. If 3D point v3 has connectivity with already-encoded 3D points v1 and v2, i.e., if 3D point v3 has edges with 3D point v1 and 3D point v3 with 3D point v2, the device can generate predicted values using fine prediction using the UV coordinates of 3D points v1 and v2, and differentially encode the UV coordinates of 3D point v3.
  • the device selects 3D point v4. If 3D point v4 has connectivity with already-encoded 3D points v0, v1, and v3, i.e., if 3D point v4 and 3D point v3, and if 3D point v4 and 3D point v1 and 3D point v4 and 3D point v3 have edges, the device can generate a predicted value by fine prediction using the UV coordinates of 3D points v0, v1, and v3, and differentially encode the UV coordinates of 3D point v4.
  • the device may calculate fine prediction value 1 using the UV coordinates of 3D points v0 and v1, calculate fine prediction value 2 using the UV coordinates of 3D points v1 and v3, and use the average of fine prediction value 1 and fine prediction value 2 as the predicted value for the UV coordinate of 3D point v4. In this way, when two or more fine prediction values can be calculated, using their average as the predicted value can improve prediction accuracy and reduce the amount of coding.
  • the device selects 3D point v5. If 3D point v5 has no connectivity with any previously encoded 3D points, the device selects 3D point v5 as the second initial 3D point and can encode the value of (u5, v5) directly without prediction, as in the first process. Similarly, the device can reduce the amount of coding for the uv coordinates by applying predictive coding using each process thereafter.
  • the no-prediction mode is an example of the first prediction mode.
  • the no-prediction mode is applied when the 3D point to be coded is an initial 3D point.
  • the initial 3D point refers to a 3D point to be processed that has already been coded and for which there are no other coded 3D points that have connectivity with that 3D point.
  • the device can encode the attribute information values as is. For example, if the uv coordinates are (100, 60), the device can encode the u value as 100 and the v value as 60.
  • the device may also assume fixed-length encoding using n bits (n is an integer value greater than or equal to 0). For example, if the uv coordinates are (100, 60), the device can encode each component using fixed-length encoding using 7 bits.
  • the device may add the value n to the header of the bitstream. This allows the decoding device to correctly decode the attribute information of the initial 3D point coded in n-bit fixed length by decoding the value n of the header.
  • the device may change the bit length used for fixed-length encoding for each component of the attribute information. For example, if the u and v coordinates are (100, 60), the device can reduce the amount of code by applying 7-bit fixed-length encoding to u and 6-bit fixed-length encoding to v. In this case, the device may add the bit lengths used for the fixed-length encoding of each component to the header of the bit stream. This allows the decoding device to correctly decode the attribute information of the initial 3D point that was encoded using different bit lengths for each component by decoding the bit length for each component in the header.
  • the device can set the bit length for each component to 0 bits. 0 bits may indicate that the component is not included in the bitstream. If the bit length added to the header is 0 bits, the decoding device can determine that the component is not included in the bitstream and estimate the value of the component to be 0. For example, if the attribute information includes a component whose value is always 0, the device can set the bit length of the fixed-length coding of that component to 0 bits and reduce the amount of code by not encoding the value 0. Furthermore, if the bit length added to the header is 0 bits, the decoding device can determine that the component is not included in the bitstream and estimate the value of the component to be 0.
  • the device may project a three-dimensional point G(x, y, z) onto the xz plane, and use the plane face0 to which the two-dimensional coordinates (u, v) on the xy plane after projection belong as attribute information for G.
  • the device can reduce the amount of code by setting the bit length of the fixed-length encoding of v to 0 bits and not including the value 0 for v in the bitstream.
  • the device may encode the attribute information of the initial three-dimensional points using variable-length coding such as unary coding or exponential golomb coding.
  • variable-length coding such as unary coding or exponential golomb coding.
  • the device can also reduce the amount of coding by assigning a context to each bit after binarization and applying arithmetic coding.
  • the device may apply other prediction methods. For example, the device may calculate a representative value for the initial 3D points and predictively encode the attribute information of the initial 3D points using that representative value as a predicted value.
  • the representative value may be, for example, the average value of the initial 3D points.
  • the device may add the representative value to the header, allowing the decoding device to decode the header, obtain the predicted value of the initial 3D points, and perform correct decoding.
  • the device may also use the attribute information of the initial 3D points that was coded or decoded immediately before in the coding or decoding order as the predicted value of the attribute information of the initial 3D points. In this way, the device can reduce the amount of code by predictively encoding the attribute information of the initial 3D points.
  • Coarse prediction mode is an example of a second prediction mode.
  • Coarse prediction mode is applied when, among the already-encoded 3D points, there is one 3D point that has connectivity with the 3D point to be encoded.
  • the device can use attribute information of a single 3D point that has already been coded and has connectivity as a predicted value, and encode the prediction residual. Note that, because the tendency of the prediction residual may differ from that in fine prediction, the device may use different methods for encoding or decoding the prediction residual in coarse prediction and fine prediction.
  • a device may binarize the prediction residual using unary coding or exponential golomb coding, assign a context to each bit, and use different contexts for coarse prediction and fine prediction when applying arithmetic coding. This makes it possible to reduce the amount of coding even when the trends in the prediction residual values differ between coarse prediction and fine prediction. Furthermore, by using different binarization methods for coarse prediction and fine prediction, a device can further reduce the amount of coding.
  • the fine prediction mode is an example of the third prediction mode.
  • the fine prediction mode is applied when, among the already-encoded 3D points, there are two or more 3D points that have connectivity with the 3D point to be encoded.
  • the device can calculate a predicted value using attribute information of two or more 3D points that have already been coded and have connectivity, and encode the prediction residual.
  • a 3D point with attribute information to be coded belongs to the vertices of two or more triangles made up of coded 3D points (such as 3D point v4 in Figure 52)
  • the device may be able to generate two or more fine predicted values using two or more triangles. In such cases, the device may use the average value of two or more fine predicted values as the predicted value (average fine prediction).
  • the device may calculate the sum of the count fine predicted values, divide this value by count to calculate an average fine predicted value, and use this average fine predicted value as the predicted value for the attribute information to be coded. This allows the device to improve the accuracy of the predicted values obtained by fine prediction and reduce the amount of coding.
  • average fine predictions using counts that are not powers of two may be prohibited, and the device may omit their calculation. This allows the device to reduce the amount of processing required to calculate the average fine prediction value.
  • the device may also set a limit on the number of counts used to calculate the average fine prediction. For example, the device can set a fineMaxcount that indicates the maximum value of count, and limit the number of fine predictions used to calculate the average fine prediction value to no more than fineMaxcount. This allows the device to reduce the amount of processing required to calculate the average fine prediction.
  • the device may add fineMaxcount to the header of the bitstream. This allows the decoding device to decode the fineMaxcount in the header, calculate the average fine prediction value using the same maximum count value as the encoding device, and correctly decode the bitstream.
  • the device can limit the number of fine predictions used to calculate the average fine prediction value to 1, essentially eliminating the need to calculate the average value. This reduces the amount of processing required to calculate the average value and prevents decimal points from appearing when calculating the average value.
  • the prediction mode used will be (1) no prediction mode or (2) coarse prediction mode.
  • the device can apply no prediction mode to the initial 3D point and apply coarse prediction to subsequent 3D points, which can keep the prediction residual at 0 and make it unnecessary to apply fine prediction.
  • the above predictive coding can also be applied to predictive decoding.
  • the above explanation of predictive coding can be used as an explanation of predictive decoding.
  • Figure 54 shows an example of a flowchart for encoding attribute information of three-dimensional points according to an embodiment.
  • the encoding device acquires multiple 3D points (vertices) of the 3D mesh (S1501).
  • the encoding device determines whether there are any 3D points for which attribute information has not been encoded (S1502). If there are any 3D points for which attribute information has not been encoded (Yes in S1502), the encoding device proceeds to step S1503; if not (No in S1502), the encoding device terminates processing.
  • the encoding device selects a 3D point to be encoded from among the multiple 3D points that have not yet been encoded (S1503).
  • the encoding device determines whether there are two or more encoded 3D points that have connectivity with the 3D point to be encoded (S1504). If there are two or more encoded 3D points that have connectivity with the 3D point to be encoded (Yes in S1504), the encoding device proceeds to step S1505; if not (No in S1504), the encoding device proceeds to step S1508.
  • the encoding device calculates a predicted value using attribute information of two or more three-dimensional points (S1505).
  • the encoding device determines whether count is greater than 0 (S1506). If count is greater than 0 (Yes in S1506), the encoding device proceeds to step S1507; if not (No in S1506), the encoding device proceeds to step S1508.
  • the encoding device encodes the attribute information of the 3D point to be encoded using the calculated predicted value (S1507). In other words, the encoding device calculates the residual between the attribute information of the 3D point to be encoded and a predicted value calculated using the attribute information of two or more 3D points, and encodes the calculated residual.
  • Step S1507 is predictive encoding in the third prediction mode.
  • the encoding device determines whether there is one encoded 3D point that has connectivity with the 3D point to be encoded (S1508). If there is one encoded 3D point that has connectivity with the 3D point to be encoded (Yes in S1508), the encoding device proceeds to step S1509; if not (No in S1508), the encoding device proceeds to step S1510.
  • the encoding device encodes the attribute information of the 3D point to be encoded using the attribute information of one 3D point as a predicted value (S1509). In other words, the encoding device calculates the residual between the attribute information of the 3D point to be encoded and the attribute information of one 3D point, and encodes the calculated residual.
  • Step S1509 is predictive encoding in the second prediction mode.
  • the encoding device encodes the attribute information of the 3D point to be encoded in a no-prediction mode (S1510). In other words, the encoding device encodes the attribute information of the 3D point to be encoded without using a predicted value.
  • Step S1510 is predictive encoding in the first prediction mode.
  • FIG. 55 is a flowchart showing an example of a process for calculating a predicted value in the third prediction mode according to an embodiment.
  • the encoding device sets count to 0 (S1511).
  • the decoder may decode the attribute information without applying fine prediction.
  • the encoding device calculates the count-th fine prediction value (S1513).
  • the encoding device adds 1 to count, updates it (S1514), and returns to step S1512.
  • the encoding device determines whether count is greater than 0 (S1515). If count is greater than 0 (Yes in S1515), the encoding device proceeds to step S1516; if not (No in S1515), the encoding device proceeds to step S1517.
  • the encoding device calculates the average fine prediction value (S1516). That is, the encoding device calculates the average of one or more fine prediction values as the average fine prediction value. Note that if there is one fine prediction value, the encoding device may calculate that one fine prediction value as the average fine prediction value. Note that the one or more fine prediction values are the count fine prediction values obtained in steps S1511 to S1514.
  • the encoding device outputs count (S1517).
  • Figure 56 shows an example of a flowchart for decoding attribute information of 3D points according to an embodiment.
  • the decoding device obtains multiple 3D points (vertices) of the 3D mesh (S1521).
  • the decoding device determines whether there are any 3D points for which attribute information has not been decoded (S1522). If there are any 3D points for which attribute information has not been decoded (Yes in S1522), the decoding device proceeds to step S1523; if not (No in S1522), the decoding device terminates processing.
  • the decoding device selects a 3D point to be decoded from among the multiple 3D points that have not yet been decoded (S1523).
  • the decoding device determines whether there are two or more decoded 3D points that have connectivity with the 3D point to be decoded (S1524). If there are two or more decoded 3D points that have connectivity with the 3D point to be decoded (Yes in S1524), the decoding device proceeds to step S1525; if not (No in S1524), the decoding device proceeds to step S1528.
  • the decoding device calculates a predicted value using attribute information for two or more three-dimensional points (S1525).
  • the decoding device determines whether count is greater than 0 (S1526). If count is greater than 0 (Yes in S1526), the decoding device proceeds to step S1527; if not (No in S1526), the decoding device proceeds to step S1528.
  • the decoding device decodes the attribute information of the 3D point to be decoded using the calculated predicted value (S1527). In other words, the decoding device calculates the residual between the attribute information of the 3D point to be decoded and a predicted value calculated using the attribute information of two or more 3D points, and decodes the calculated residual.
  • Step S1527 is predictive decoding in the third prediction mode.
  • the decoding device determines whether there is one decoded 3D point that has connectivity with the 3D point to be decoded (S1528). If there is one decoded 3D point that has connectivity with the 3D point to be decoded (Yes in S1528), the decoding device proceeds to step S1529; if not (No in S1528), the decoding device proceeds to step S1530.
  • the decoding device decodes the attribute information of the 3D point to be decoded using the attribute information of one 3D point as a predicted value (S1529). In other words, the decoding device calculates the residual between the attribute information of the 3D point to be decoded and the attribute information of one 3D point, and decodes the calculated residual.
  • Step S1529 is predictive decoding in the second prediction mode.
  • the decoding device decodes the attribute information of the 3D point to be decoded in a prediction-free mode (S1530). In other words, the decoding device decodes the attribute information of the 3D point to be decoded without using a predicted value.
  • Step S1530 is predictive decoding in the first prediction mode.
  • FIG 57 is a diagram showing an example of the syntax of mesh_attribute_coding according to an embodiment.
  • Figure 58 is a diagram showing an example of the syntax of mesh_attribute_header according to an embodiment.
  • mesh_attribute_coding indicates the unit for encoding attribute information of 3D points
  • mesh_attribute_header indicates header information related to the attribute information
  • mesh_attribute_data indicates the encoded data related to the attribute information
  • AttributeBitDepthMinus1 is information that indicates the bit precision of the attribute information encoded in the bitstream.
  • the bit precision of the attribute information is calculated by adding 1 to AttributeBitDepthMinus1.
  • NumComponent is information that indicates the number of components that the attribute information has. For example, if the attribute information is UV coordinates, the value of NumComponent is 2, and if the attribute information is a normal vector, the value of NumComponent is 3.
  • AttributeStartDeltaBitDepth[j] is information that indicates the bit precision of the initial 3D point of the attribute information encoded in the bitstream.
  • the bit precision of the jth component of the initial 3D point, AttributeStartBitDepth[j] is calculated as follows:
  • AttributeStartBitDepth[j] AttributeBitDepthMinus1 + 1 - AttributeStartDeltaBitDepth[j]
  • AttributeStartDeltaBitDepth for each component of the initial 3D point, it is possible to set different bit precisions for each component. Furthermore, by setting the bit precision of the initial 3D point separately from AttributeBitDepthMinus1, which is the bit precision of the attribute information encoded in the bitstream, if, for example, the range of values that each component of the initial 3D point can take is smaller than the range of values that each component of the attribute information encoded in the bitstream can take, the value of AttributeStartBitDepth may be smaller than the value obtained by adding 1 to AttributeBitDepthMinus1.
  • the amount of code can be reduced by encoding AttributeStart, the value of each component of the initial 3D point (described below), using the value of AttributeStartBitDepth rather than the value obtained by adding 1 to AttributeBitDepthMinus1.
  • the difference between the value obtained by adding 1 to the bit precision AttributeBitDepthMinus1 of the attribute information encoded in the bit stream and the bit precision of the jth component of the initial 3D point may be encoded as AttributeStartDeltaBitDepth.
  • AttributeStartBitDepth[j] may be set to 0 by setting AttributeStartDeltaBitDepth[j] to the same value as AttributeBitDepthMinus1 plus 1.
  • the j-th component for which AttributeStartBitDepth[j] is 0 does not need to be coded as 0 in the bitstream.
  • the decoder can infer that the j-th component for which AttributeStartBitDepth[j] is 0 is 0. This allows the amount of coding to be reduced by not adding components for which AttributeStartBitDepth[j] is 0 to the bitstream.
  • AttributeStartDeltaBitDepth[j] is added to the bitstream, but this is not necessarily limited to this.
  • AttributeStartBitDepth[j] may be directly coded into the bitstream. This method can reduce the amount of processing required to calculate the differential value.
  • the bit length of AttributeStartDeltaBitDepth[j] can be calculated based on the value of AttributeBitDepthMinus1. Specifically, the bit length of AttributeStartDeltaBitDepth[j] can be calculated as ceil(log2(AttributeBitDepthMinus1 + 2)).
  • ceil(x) is a function that outputs the integer value obtained by rounding up the value x. In this way, by determining the bit length of AttributeStartDeltaBitDepth[j] according to the value of AttributeBitDepthMinus1, the amount of code can be reduced.
  • AttributePredMode is information indicating the method for encoding the attribute information.
  • it may indicate a prediction method such as methodA, which includes fine prediction, coarse prediction, and no prediction mode, as shown in Figure 54.
  • the prediction method is not limited to methodA.
  • it may be a prediction method that combines two of the three prediction modes of methodA, or a prediction method that uses only one prediction mode.
  • a prediction method such as methodB, which includes coarse prediction and no prediction mode, is possible.
  • fineMaxcount is information indicating the maximum number of fine predictions to use when calculating the average fine prediction value. If AttributePredMode includes fine prediction, for example, if AttributePredMode is methodA, fineMaxcount may be added to the bitstream.
  • fineMaxcount 1
  • the number of fine predictions used to calculate the average fine prediction value can be limited to 1, effectively eliminating the need to calculate the average value. This reduces the amount of processing required to calculate the average value. It also prevents decimal points from being generated when calculating the average value.
  • Fine prediction may also be prevented from being applied by setting fineMaxcount to 0.
  • coarse prediction or no prediction mode will be used as the prediction mode.
  • the prediction residual can be set to 0 by applying no prediction mode to the initial 3D point and coarse prediction to subsequent 3D points, eliminating the need to apply fine prediction.
  • setting fineMaxcount to 0 prevents the application of fine prediction, thereby reducing the amount of processing required for encoding or decoding.
  • setting fineMaxcount to 0 prevents fine prediction from being applied, thereby reducing the amount of additional information and the amount of coding.
  • AttributeBitDepthMinus1, AttributePredMode, and fineMaxcount may be binarized using Exponential Golomb coding or unary coding, and then variable-length coded. Coding efficiency can also be improved by assigning a context to each bit and coding while updating the probability of occurrence based on the frequency of occurrence of 0 and 1. This information may also be coded at a fixed length, which reduces the amount of processing.
  • FineMaxcount may also be set to a different value per sequence, per frame, per basemesh, per submesh, or per 3D point. This allows the amount of processing to be reduced by controlling the number used for the average fine prediction in appropriate units.
  • Figure 59 shows an example of mesh_attribute_data syntax related to an embodiment.
  • AttributeStartCount is information indicating the number of initial 3D points.
  • AttributeStart[c][j] is information indicating the value of the jth component of the attribute information for the cth initial 3D point. For example, if the attribute information is UV coordinates, AttributeStart[c][0] may indicate the u value of the cth initial 3D point, and AttributeStart[c][1] may indicate the v value of the cth initial 3D point.
  • AttributeStart[c][j] may also be fixed-length coded using the bit length calculated as AttributeStartBitDepth described in Figure 58.
  • AttributeStartBitDepth[0] is 10 and AttributeStartBitDepth[1] is 8, this indicates that AttributeStart[c][0], the 0th component of the cth initial 3D point, is coded with 10-bit precision, and AttributeStart[c][1], the first component, is coded with 8-bit precision.
  • the amount of coding can be reduced by coding the 0th component with 10 bits and the first component with 8 bits.
  • AttributeStartBitDepth[j] if the value of AttributeStartBitDepth[j] is 0, AttributeStart[c][j] does not need to be coded into the bitstream. By confirming that the value of AttributeStartBitDepth[j] is 0, the decoder can infer that the value of AttributeStart[c][j] is 0. In this way, by not including components with an AttributeStartBitDepth[j] value of 0 in the bitstream, the amount of coding can be reduced.
  • AttributeStart may apply variable-length coding such as unary coding or exponential golomb coding. It is also possible to reduce the amount of code by assigning a context to each bit after binarization and applying arithmetic coding.
  • AttributeStartCount 0
  • the decoder can confirm that AttributeStartCount is 0 and infer that the value of AttributeStart is 0. This method can reduce the amount of coding.
  • AttributeStartCountMinus1 can be added to the bitstream instead of AttributeStartCount.
  • the decoder can calculate AttributeStartCount by adding 1 to AttributeStartCountMinus1. This makes it possible to further reduce the amount of coding.
  • AttributeFineResiCount is information that indicates the number of prediction residuals of attribute information predictively coded using fine prediction. In particular, if the value of fineMaxcount is 0, it is expected that AttributeFineResiCount will be set to 0 as the most efficient case.
  • AttributeFineResiSize represents information indicating the code size of AttributeFineResi. For example, it may indicate the code size when AttributeFineResi is binarized and arithmetically coded. In this way, by notifying the decoder of the code size using AttributeFineResiSize before AttributeFineResi, the decoder can pre-read the bits related to AttributeFineResi from the bitstream. Specifically, while the decoder is performing arithmetic decoding on AttributeFineResi, it can perform decoding processing for the following AttributeCoarseResi in parallel, thereby reducing decoding time.
  • AttributeFineResi[c][j] is information indicating the prediction residual for the jth component of attribute information predictively coded by the cth fine prediction. AttributeFineResi[c][j] can be binarized using Exponential Golomb coding or unary coding, and then variable-length coded. In addition, coding efficiency can be improved by assigning a context to each bit and coding while updating the probability of occurrence based on the frequency of occurrence of 0s and 1s.
  • the context used for arithmetic coding of each bit may be shared with the context used for AttributeCoarseResi, which will be described later. This method allows the number of contexts to be reduced.
  • the context used for arithmetic coding of each bit can also be set to be different from the context used for AttributeCoarseResi, which will be described later. By using different contexts in this way, coding efficiency can be improved even when the trends in prediction residuals differ between fine prediction and coarse prediction.
  • using different contexts allows AttributeFineResi and AttributeCoarseResi to be decoded in parallel, further improving the efficiency of the decoding process.
  • AttributeCoarseResiCount is information that indicates the number of prediction residuals of attribute information predictively coded using coarse prediction. AttributeCoarseResiCount plays an important role in coding AttributeCoarseResi, which will be described later.
  • AttributeCoarseResiSize represents information indicating the code size of AttributeCoarseResi. For example, it may indicate the code size when AttributeCoarseResi is binarized and arithmetically coded. In this way, by informing the decoder of AttributeCoarseResiSize prior to coding AttributeCoarseResi, the decoder can pre-read the bits related to AttributeCoarseResi from the bitstream. Specifically, while the decoder is performing arithmetic decoding related to AttributeCoarseResi, it can perform decoding processing of the subsequent bitstream in parallel, thereby reducing decoding time.
  • AttributeCoarseResi[c][j] is information indicating the prediction residual for the jth component of attribute information predictively coded using the cth coarse prediction. AttributeCoarseResi[c][j] can be binarized using Exponential Golomb coding or unary coding, and then variable-length coded. Furthermore, coding efficiency can be improved by assigning a context to each bit and coding while updating the probability of occurrence based on the frequency of occurrence of 0s and 1s.
  • the context used for arithmetic coding of each bit may be shared with the context used by AttributeFineResi described above. This method allows the number of contexts to be reduced.
  • the context used for arithmetic coding of each bit can also be set to be different from the context used by AttributeFineResi described above. By using different contexts in this way, coding efficiency can be improved even when the trends in prediction residuals differ between fine prediction and coarse prediction.
  • AttributeStartCount, AttributeFineResiCount, AttributeFineResiSize, AttributeFineResi, AttributeCoarseResiCount, AttributeCoarseResiSize, and AttributeCoarseResi may be binarized using Exponential Golomb coding or unary coding, and then variable-length coded. Coding efficiency can also be improved by assigning a context to each bit and coding while updating the probability of occurrence based on the frequency of occurrence of 0s and 1s. Furthermore, this information can also be coded at a fixed length, reducing the amount of processing.
  • Connected 3D points can be projected onto a 2D image, the same plane information added as attribute information for the 3D points, and this attribute information can be encoded.
  • the method of generating UV coordinates for 3D points on the decoder side using this projection information can also be called an "ortho atlas.”
  • Figure 60 shows an example of attribute information related to a modified embodiment.
  • AttributeStartBitDepth for the v component of the initial 3D point can be set to 0 using AttributeBitDepthMinus1 and AttributeStartDeltaBitDepth described in this embodiment, and the bit length for the fixed-length encoding of the v component can be set to 0 bits, thereby reducing the amount of code by not encoding the v value of 0.
  • the prediction residual can be set to 0 by applying coarse prediction or fine prediction, so the amount of code can be reduced by not encoding at least one of the information about the prediction residual: AttributeFineResiCount, AttributeFineResiSize, AttributeFineResi, AttributeCoarseResiCount, AttributeCoarseResiSize, and AttributeCoarseResi.
  • Information that is not encoded can be estimated to have a value of 0 on the decoder side.
  • the amount of coding can be reduced by not encoding the additional information related to fine prediction.
  • Figure 61 shows an example of mesh_attribute_data syntax for a modified embodiment.
  • AttributeFineResiCount or AttributeCoarseResiCount may be added to the bitstream in units of the number of initial 3D points.
  • Figure 60 shows an example of this syntax.
  • the decoder can correctly decode the UV coordinates by decoding the UV coordinates of the initial 3D point c and copying them to the UV coordinates of OtherAttributeCount[c] 3D points that have connectivity with the initial 3D point c.
  • OtherAttributeCount may be binarized using Exponential Golomb coding or unary coding, and then variable-length coded. Coding efficiency can be improved by assigning a context to each bit and coding while updating the probability of occurrence based on the frequency of occurrence of 0 and 1. Alternatively, it may be coded at a fixed length, which reduces the amount of processing.
  • an AttributePredMode for ortho atlas may be defined, and when the encoder encodes attribute information using the method described above, it may add information to the bitstream indicating that the AttributePredMode is a prediction method for ortho atlas. This allows the decoder to determine whether the bitstream was encoded using the above method by decoding the AttributePredMode. If the determination result is Yes, the decoder can decode the attribute information using the above method.
  • face_id which is face information corresponding to the faces of a polygon
  • this embodiment can be used to reduce the amount of code required for attribute information corresponding to three-dimensional points or attribute information corresponding to polygons made up of three-dimensional points.
  • FIG. 62 is a diagram showing an example of a geometry map according to an embodiment.
  • FIG. 63 is a diagram showing an example of a texture map according to an embodiment.
  • Texture mapping is a common technique used to add visual appearance by projecting images onto the surfaces of a three-dimensional model. This technique allows for the visual details to be changed without directly modifying the model itself, thereby improving performance when rendering is required.
  • the information stored in a two-dimensional texture image may include color, smoothness, transparency, etc.
  • the relationship between the three-dimensional mesh and the two-dimensional texture image is established using a UV map.
  • a UV map is a deformation of the three-dimensional mesh onto a two-dimensional plane. Attribute values from the image are then projected onto the three-dimensional model at rendering time by overlaying the texture image on the UV map. This necessitates encoding and decoding techniques that can efficiently store and stream UV maps.
  • Different prediction schemes are available for encoding texture coordinates in UV maps. These prediction schemes include those based on the parametrization techniques used when projecting a 3D mesh onto a 2D map, or those based on the relationship between the mesh's geometric data and texture coordinates. In the case of conformal parametrization, triangle edge lengths maintain approximately the same ratio in both 3D space and UV coordinates. Therefore, texture coordinates on a UV map can be predicted using the ratio obtained from the corresponding edges in 3D space.
  • texture coordinates A2, B2, and C2 correspond to A1, B1, and C1 on the geometry map, respectively.
  • the device can calculate a predicted value for the UV coordinate A2 when a three-dimensional point A1 is projected onto a two-dimensional image (texture map).
  • the device may calculate this predicted value using C2 and B2 that have already been encoded or decoded, and the positional information of the three-dimensional points A1, B1, and C1 that correspond to A2, B2, and C2.
  • the device can also predict the position of A2 using C2 + A2C2.
  • the device can use the 3D point information in the encoded or decoded geometry map and the UV coordinates in the encoded or decoded texture map to highly accurately estimate the predicted value of the attribute information of the 3D point to be encoded or decoded, thereby reducing the amount of coding.
  • the method in which the device calculates predicted values for attribute information of the three-dimensional point to be encoded or decoded using three-dimensional point information in an encoded or decoded geometry map and UV coordinates in an encoded or decoded texture map may also be referred to as fine prediction.
  • FIG. 64 is a diagram showing an example of the syntax of mesh_position_coding according to an embodiment.
  • Figure 65 is a diagram showing an example of the syntax of mesh_position_header according to an embodiment.
  • mesh_position_coding is a unit for encoding the position information of three-dimensional points, and performs processing related to the encoding and decoding of position information.
  • mesh_position_header indicates header information related to position information
  • mesh_position_data indicates encoded data related to position information.
  • PositionBitDepthMinus1 is information that indicates the bit precision of the position information encoded in the bitstream.
  • the bit precision of the position information can be calculated by adding 1 to PositionBitDepthMinus1.
  • NumComponent is information that indicates the number of components contained in the position information. For example, if the position information is xyz coordinates, the value of NumComponent can be set to 3.
  • PositionStartDeltaBitDepth[j] is information that indicates the bit precision of the initial 3D point of the position information encoded in the bitstream.
  • the bit precision of the jth component of the initial 3D point, PositionStartBitDepth[j] can be calculated as follows:
  • PositionStartDeltaBitDepth for each component of the initial 3D point, it is possible to set different bit precision for each component. Furthermore, by being able to set the bit precision of the initial 3D point separately from PositionBitDepthMinus1, which is the bit precision of the position information encoded in the bitstream, it is possible that the value of PositionStartBitDepth will be smaller than the value obtained by adding 1 to PositionBitDepthMinus1, for example, if the range of values that each component of the initial 3D point can take is smaller than the range that each component of the position information encoded in the bitstream can take.
  • the amount of coding can be reduced by encoding PositionStart, the value of each component of the initial 3D point (described below), using the value of PositionStartBitDepth rather than the value obtained by adding 1 to PositionBitDepthMinus1.
  • PositionStart the value of each component of the initial 3D point (described below)
  • PositionStartBitDepth the value obtained by adding 1 to PositionBitDepthMinus1.
  • This setting also improves coding efficiency by avoiding the specification of unnecessary bit precision.
  • the difference between the value obtained by adding 1 to PositionBitDepthMinus1, which is the bit precision of the position information encoded in the bit stream, and the bit precision of the jth component of the initial 3D point can be encoded as PositionStartDeltaBitDepth.
  • PositionStartDeltaBitDepth[j] the value of PositionStartBitDepth[j] for the jth component can be set to 0.
  • the jth component whose PositionStartBitDepth[j] is 0 does not need to be coded as 0 in the bitstream.
  • the decoder can infer that the jth component whose PositionStartBitDepth[j] is 0 has a value of 0. This allows the amount of coding to be reduced by not adding components whose PositionStartBitDepth[j] is 0 to the bitstream.
  • a method is shown in which the differential value PositionStartDeltaBitDepth[j] is added to the bitstream, but this method is not necessarily limited to this.
  • a method can be used in which PositionStartBitDepth[j] is directly encoded into the bitstream. This method can reduce the amount of processing required to calculate the differential value.
  • the bit length of PositionStartDeltaBitDepth[j] can be determined based on the value of PositionBitDepthMinus1. Specifically, the bit length of PositionStartDeltaBitDepth[j] can be calculated as ceil(log2(PositionBitDepthMinus1+2)).
  • ceil(x) is a function that outputs the integer value obtained by rounding up the value x. In this way, by determining the bit length of PositionStartDeltaBitDepth[j] according to the value of PositionBitDepthMinus1, the amount of code can be efficiently reduced.
  • PositionPredMode is information indicating the method for encoding position information.
  • methodA may be used as a prediction method including fine prediction, coarse prediction, and no prediction mode, as shown in the encoding flowchart.
  • the prediction method is not limited to methodA, and a prediction method combining two of the three prediction modes, or a prediction method consisting of one prediction mode, may also be used.
  • a specific example is methodB, a prediction method combining coarse prediction and no prediction mode.
  • methodB By using methodB, predicted values can be generated without applying division or arithmetic processing requiring decimal point precision, thereby reducing the amount of processing and enabling lossless encoding.
  • methods such as parallelogram prediction may be included as fine prediction.
  • fineMaxcount is information indicating the maximum number of fine predictions used when calculating the average fine prediction value.
  • PositionPredMode includes fine prediction
  • fineMaxcount can be added to the bitstream.
  • fineMaxcount By setting fineMaxcount to 1, the number of fine predictions used to calculate the average fine prediction value can be limited to one, essentially making average value calculation unnecessary. This reduces the amount of processing required to calculate the average value and prevents the occurrence of numbers with less than decimal precision due to average value calculation.
  • Fine prediction can also be prevented from being applied by setting fineMaxcount to 0.
  • coarse prediction or no prediction mode can be used as the prediction mode.
  • the no prediction mode can be applied to the initial 3D point, and coarse prediction can be applied to subsequent 3D points, making it possible to always keep the prediction residual at 0.
  • setting fineMaxcount to 0 prevents the application of fine prediction, thereby reducing the amount of processing required for encoding or decoding.
  • the amount of coding can be reduced by setting fineMaxcount to 0, which will not apply fine prediction and will not encode the additional information.
  • Figure 66 shows an example of mesh_position_data syntax related to an embodiment.
  • PositionStartCount is information indicating the number of initial 3D points.
  • PositionStart[c][j] is information indicating the value of the jth component of the position information for the cth initial 3D point. For example, if the position information is in xyz coordinates, PositionStart[c][0] may indicate the x value of the cth initial 3D point, PositionStart[c][1] may indicate the y value of the cth initial 3D point, and PositionStart[c][2] may indicate the z value of the cth initial 3D point.
  • PositionStart[c][j] may be fixed-length coded using the bit length calculated using the PositionStartBitDepth described above. For example, if PositionStartBitDepth[0] is 10, PositionStartBitDepth[1] is 8, and PositionStartBitDepth[2] is 6, then PositionStart[c][0], the 0th component of the cth initial 3D point, has 10-bit precision, PositionStart[c][1], the 1st component, has 8-bit precision, and PositionStart[c][2], the 2nd component, has 6-bit precision.
  • the 0th component may be fixed-length coded using 10 bits, the 1st component using 8 bits, and the 2nd component using 6 bits. In this way, the amount of code can be reduced by setting an appropriate bit length for each component of the initial 3D point and encoding it using that.
  • PositionStartBitDepth[j] if PositionStartBitDepth[j] is 0, PositionStart[c][j] does not need to be coded into the bitstream, and the decoder may infer that the value of PositionStart[c][j] is 0 when PositionStartBitDepth[j] is 0. This method reduces the amount of coding by not adding the jth component for which PositionStartBitDepth[j] is 0 to the bitstream.
  • PositionStart may use variable-length coding such as unary coding or Exponential Golomb coding. It is also possible to assign a context to each bit after binarization and apply arithmetic coding. This reduces the amount of code.
  • PositionStartCount 0 when PositionStartCount is 0. This reduces the amount of coding required.
  • PositionStartCountMinus1 may be added to the bitstream instead of PositionStartCount.
  • the decoder may calculate PositionStartCount by adding 1 to PositionStartCountMinus1.
  • PositionFineResiCount is information indicating the number of prediction residuals of position information predictively coded using fine prediction.
  • PositionFineResiSize is information indicating the code size of PositionFineResi, and may indicate, for example, the code size when PositionFineResi is binarized and arithmetically coded.
  • the decoder can pre-read the bits related to PositionFineResi from the bitstream. For example, while arithmetic decoding related to PositionFineResi is in progress, the decoding process for the following PositionCoarseResi can be performed in parallel, reducing the decoding time.
  • PositionFineResi[c][j] is information indicating the prediction residual of the jth component of the position information predictively coded using the cth fine prediction.
  • PositionFineResi[c][j] may be binarized using Exponential Golomb coding or unary coding, and then variable-length coded.
  • a context may be assigned to each bit, and the coding may be performed while updating the probability of occurrence based on the frequency of occurrence of 0s and 1s. This can improve coding efficiency.
  • the context used for arithmetic coding of each bit may be shared with the context used by PositionCoarseResi, which will be described later. This method allows the number of contexts to be reduced. Also, the context used for arithmetic coding of each bit may be different from the context used by PositionCoarseResi, which will be described later. This improves coding efficiency when the trends in prediction residuals differ between fine prediction and coarse prediction. Furthermore, using different contexts makes it possible to decode PositionFineResi and PositionCoarseResi in parallel.
  • PositionCoarseResiCount is information indicating the number of prediction residuals of position information predictively coded using coarse prediction.
  • PositionCoarseResiSize is information indicating the code size of PositionCoarseResi, and may indicate, for example, the code size when PositionCoarseResi is binarized and arithmetically coded.
  • the decoder can pre-read the bits related to PositionCoarseResi from the bitstream. For example, while arithmetic decoding related to PositionCoarseResi is in progress, the decoding process for the following bitstream can be performed in parallel, reducing the decoding time.
  • PositionCoarseResi[c][j] is information indicating the prediction residual of the jth component of the position information predictively coded using the cth coarse prediction.
  • PositionCoarseResi[c][j] may be binarized using Exponential Golomb coding or unary coding, and then variable-length coded.
  • a context may be assigned to each bit, and the coding may be performed while updating the probability of occurrence based on the frequency of occurrence of 0s and 1s. This can improve coding efficiency.
  • the context used for arithmetic coding of each bit may be shared with the context used by PositionFineResi described above. This method allows the number of contexts to be reduced. Furthermore, the context used for arithmetic coding of each bit may be different from the context used by PositionFineResi described above. This can improve coding efficiency when the trends in prediction residuals differ between fine prediction and coarse prediction.
  • PositionStartCount, PositionFineResiCount, PositionFineResiSize, PositionFineResi, PositionCoarseResiCount, PositionCoarseResiSize, and PositionCoarseResi may be binarized using Exponential Golomb coding or unary coding, and then variable-length coded.
  • a context may also be assigned to each bit, and coding may be performed while updating the probability of occurrence based on the frequency of occurrence of 0 and 1. This can improve coding efficiency. It is also possible to code this information at a fixed length, reducing the amount of processing required.
  • Fig. 67 is a diagram showing an example of the configuration of an encoding device in an embodiment.
  • Fig. 68 is a flowchart showing an example of an encoding method by the encoding device in an embodiment.
  • the encoding device 1530 includes a circuit 1531 and a memory 1532 connected to the circuit 1531.
  • the encoding device 1530 may perform the processing described in Figures 54 and 55.
  • Circuit 1531 performs the following operations:
  • Circuit 1531 acquires multiple vertices included in a three-dimensional mesh (S1541). Circuit 1531 encodes attribute information of one of the multiple vertices using one of at least three prediction modes (S1542).
  • the three prediction modes include a first prediction mode that does not make a prediction, a second prediction mode that performs predictive coding based on one processed vertex, and a third prediction mode that performs predictive coding based on two or more processed vertices. If the number of components of the attribute information is set to 1, during encoding (S1542), the attribute information is encoded using a prediction mode different from the third prediction mode.
  • the number of components in the attribute information is set to 1.
  • attribute information is specific attribute information.
  • the specific attribute information is plane information that indicates the area to which a vertex belongs when the vertex is projected onto a two-dimensional plane.
  • the attribute information of one vertex is common to the attribute information of another vertex.
  • the prediction residual is 0.
  • the prediction residual is 0 when predictions made in the second prediction mode are a perfect match, further improving coding efficiency.
  • Figure 69 is a diagram showing an example of the configuration of a decoding device in an embodiment.
  • Figure 70 is a flowchart showing an example of a decoding method performed by a decoding device in an embodiment.
  • the decoding device 1540 includes a circuit 1541 and a memory 1542 connected to the circuit 1541.
  • the decoding device 1540 may perform the processing described in FIG. 56.
  • Circuit 1541 performs the following operations:
  • Circuit 1541 acquires multiple vertices included in a three-dimensional mesh (S1551). Circuit 1541 decodes attribute information of one of the multiple vertices using one of at least three prediction modes (S1552).
  • the three prediction modes include a first prediction mode that does not make a prediction, a second prediction mode that performs predictive decoding based on one processed vertex, and a third prediction mode that performs predictive decoding based on two or more processed vertices. If the number of components of the attribute information is set to 1, during decoding (S1552), the attribute information is decoded using a prediction mode different from the third prediction mode.
  • the number of components in the attribute information is set to 1.
  • attribute information is specific attribute information.
  • the specific attribute information is plane information that indicates the area to which a vertex belongs when the vertex is projected onto a two-dimensional plane.
  • the attribute information of one vertex is common to the attribute information of another vertex.
  • the prediction residual is 0.
  • the encoding device and decoding device of the present disclosure may be implemented by combining at least a portion of other aspects.
  • the configuration or processing of the encoding device and decoding device of the present disclosure may be realized by combining part of the processing shown in any of the flowcharts according to this aspect, part of the configuration of any of the devices, part of the syntax, etc. with other aspects.
  • processing performed by the decoding device of this disclosure may also be performed in an encoding device in a similar manner.
  • circuit 1531 of the encoding device 1530 may also perform the following operation.
  • This operation example is the second example.
  • the circuit 1531 acquires multiple vertices included in a three-dimensional mesh (S1541).
  • the circuit 1531 arithmetically encodes one of the multiple vertices using the first prediction mode (the second prediction mode in the above embodiment) or the second prediction mode (the third prediction mode in the above embodiment) (S1542).
  • the first context used in the arithmetic encoding of the first prediction mode and the second context used in the arithmetic encoding of the second prediction mode are the same.
  • first prediction mode and second prediction mode This allows for more efficient context management by using a common context for different prediction modes (first prediction mode and second prediction mode). This reduces the processing load required for initializing or updating the context, and improves the efficiency of the encoding process. Furthermore, by sharing a context, there is a possibility that encoding efficiency will improve even if the data has different parameters, as long as they have similar tendencies in arithmetic encoding. Sharing a context reduces the use of redundant context memory and improves encoding efficiency.
  • the first prediction mode is a prediction mode that performs predictive coding based on one processed vertex.
  • the second prediction mode is a prediction mode that performs predictive coding based on two or more processed vertices.
  • a first prediction mode prediction based on one processed vertex
  • a second prediction mode prediction based on two or more processed vertices.
  • prediction based on two or more processed vertices can achieve more accurate coding.
  • the number of contexts can be reduced while improving the coding efficiency of arithmetic coding.
  • arithmetic coding of one vertex includes arithmetic coding of the position information of one vertex.
  • arithmetic coding of one vertex includes arithmetic coding of the attribute information of one vertex.
  • attribute information e.g., color, normal vectors, etc.
  • multiple vertices are included in one group based on a three-dimensional mesh.
  • multiple vertices are included in a group of multiple vertices that make up the same three-dimensional mesh, or in a group of multiple vertices that make up the same sub-mesh.
  • circuit 1541 of the decoding device 1540 may perform the following operation.
  • This operation example is the second example.
  • the circuit 1541 acquires multiple vertices included in a three-dimensional mesh (S1551).
  • the circuit 1541 arithmetically decodes one of the multiple vertices using the first prediction mode (the second prediction mode in the above embodiment) or the second prediction mode (the third prediction mode in the above embodiment) (S1552).
  • the first context used in the arithmetic decoding of the first prediction mode and the second context used in the arithmetic decoding of the second prediction mode are the same.
  • the first prediction mode is a prediction mode that performs predictive decoding based on one processed vertex.
  • the second prediction mode is a prediction mode that performs predictive decoding based on two or more processed vertices.
  • arithmetic decoding of one vertex includes arithmetic decoding of the position information of one vertex.
  • arithmetic decoding of one vertex includes arithmetic decoding of the attribute information of one vertex.
  • multiple vertices are included in one group based on a three-dimensional mesh.
  • multiple vertices are included in a group of multiple vertices that make up the same three-dimensional mesh, or in a group of multiple vertices that make up the same sub-mesh.
  • FIG. 71 is a flowchart showing another example of the process for calculating predicted values in the third prediction mode according to an embodiment. In other words, it is a modified example of the flowchart in FIG. 55.
  • the encoding device sets count to 0 (S1561).
  • the encoding device calculates the count-th fine prediction value with decimal precision (S1563).
  • the encoding device adds 1 to count, updates it (S1564), and returns to step S1562.
  • the encoding device determines whether count is greater than 0 (S1565). If count is greater than 0 (Yes in S1565), the encoding device proceeds to step S1566; if not (No in S1565), the encoding device proceeds to step S1568.
  • the encoding device calculates the average fine prediction value with decimal precision (S1566). That is, the encoding device calculates the average of one or more fine prediction values as the average fine prediction value.
  • the one or more fine prediction values are the count fine prediction values obtained in steps S1561 to S1564. Note that if there is one fine prediction value, this one fine prediction value may be calculated as the average fine prediction value. Note that in S1566, it is sufficient to combine two or more fine prediction values to calculate one fine prediction value, and calculation of the average fine prediction value is not limited to this.
  • the encoding device adjusts the number of bits in the decimal part of the average fine prediction value (integrated value) so that it is smaller (S1567).
  • the encoding device for example, adjusts the number of bits in the decimal part to 0.
  • the encoding device converts the average fine prediction value (integrated value) to integer precision (integerization). Note that when adjusting the number of bits, the encoding device may perform a process to round decimal values, such as by rounding off.
  • the encoding device outputs count (S1568).
  • FIG. 72 is a diagram showing an example of vectors in three-dimensional space when performing fine prediction according to an embodiment.
  • FIG. 73 is a diagram showing an example of vectors on a two-dimensional plane when performing fine prediction according to an embodiment.
  • gCurr, gNext, and gPrev be the three-dimensional vectors corresponding to the three-dimensional points G(curr), G(next), and G(prev), respectively
  • uvCurr, uvNext, and uvPrev be the two-dimensional vectors corresponding to the two-dimensional points UV(curr), UV(next), and UV(prev), respectively.
  • gNgP be the vector from gNext to gPrev
  • gNgC be the vector from gNext to gCurr
  • uvNuvP be the vector from UV(next) to UV(prev).
  • dot(gNgP, gNgC) be the dot product of gNgP and gNgC
  • dot(gNgP, gNgP) be the dot product of two gNgPs.
  • the vectors gProj and uvProj can be found by assuming that the triangle formed by the 3D points G(curr), G(next), and G(prev) is similar to the triangle formed by the 2D points UV(curr), UV(next), and UV(prev). Specifically, the vectors gProj and uvProj are expressed as follows:
  • uvProj uvNext + uvNuvP ⁇ (dot(gNgP, gNgC) / dot(gNgP, gNgP))
  • gProj gNext + gNgP ⁇ (dot(gNgP, gNgC) / dot(gNgP, gNgP))
  • the dot product of the vectors from the projection point G(proj) to G(curr) is dot(gCurr - gProj, gCurr - gProj).
  • the vector orthogonal to uvNuvP is defined as orthogonal(uvNuvP).
  • the distance between the projection points G(proj) and G(curr) corresponds to the distance between the projection points UV(proj) and UV(curr) under the assumption that the triangles are similar. Therefore, the vector uvProjuvCurr from the projection points UV(proj) to UV(curr) can be expressed as follows:
  • uvProjuvCurr orthogonal(uvNuvP) * sqrt(dot(gCurr - gProj, gCurr - gProj) / dot(gNgP, gNgP))
  • the predicted vector predUV can be calculated as follows:
  • the predicted vector can be calculated as follows, assuming predUV1:
  • predUV1 uvProj - uvProjuvCur
  • the number of bits in the fractional part can be adjusted based on the magnitude of the dot product between vector gNgP and vector gNgC, or the magnitude of the absolute value of the dot product.
  • the device may determine whether the magnitude of the absolute value of dot(gNgP, gNgC) exceeds the threshold value TH, and perform calculations according to the determination result.
  • Figure 74A is a diagram showing an example of calculation of a predicted value when the magnitude of the absolute value of dot(gNgP, gNgC) exceeds the threshold value TH in accordance with an embodiment.
  • Figure 74B is a diagram showing an example of calculation of a predicted value when the magnitude of the absolute value of dot(gNgP, gNgC) is equal to or less than the threshold value TH in accordance with an embodiment.
  • the device may perform integer arithmetic without preserving the fractional part, as shown in Figure 74A.
  • the device may perform calculations to reserve a specified number of bits (for example, 9 bits) for the decimal part. This allows the calculation precision to be lowered when the vector is large. Conversely, the calculation precision can be increased when the vector is small. In this way, the device can adjust the number of bits for the decimal part to widen the range of vector values that it can support.
  • the device may also determine the number of bits in the fractional part depending on the number of bits in the magnitude of the absolute value of dot(gNgP, gNgC). For example, the device may determine the number of bits in the fractional part using a logarithmic value with base 2 based on the magnitude of the absolute value of dot(gNgP, gNgC). This allows the device to adjust the number of bits in the fractional part more accurately. Alternatively, the number of bits in the fractional part may be set to only one fixed value. This allows the device to reduce the amount of processing.
  • the device may determine the number of bits in the fractional part based on a value other than the magnitude of the absolute value of dot(gNgP, gNgC). For example, a method may be adopted in which the determination is based on the magnitude of the vector itself. This allows the device to reduce the amount of processing.
  • the number of bits in the decimal part is set to 9 bits, but it is not limited to being set to 9 bits.
  • the device may set the number of bits in the decimal part based on the number of bits in the hardware register or arithmetic unit.
  • the number of bits may also be set based on the performance of the software or system.
  • the optimal number of bits may be set by taking into account the trade-off between accuracy and processing volume. In this way, the device can improve calculation accuracy and reduce the amount of code by setting an appropriate number of bits depending on the execution environment.
  • the device may also add the threshold value TH to the header of the bitstream.
  • the decoding device can obtain the threshold value TH from the header and properly decode the bitstream using the same value as the number of bits in the fractional part used by the encoding device.
  • Figure 75 shows another example of calculating a predicted value according to an embodiment.
  • the device may adjust the number of bits in the decimal part to 8 bits to ensure accuracy in the division process, as shown in FIG. 75. This adjustment may be performed regardless of the magnitude of the absolute value of dot(gNgP, gNgC).
  • the device may also convert the average value of the fine predicted values to integer precision, or may adjust the number of bits in the decimal part. In this case, the device may perform rounding processing such as rounding off. The rounding processing may round positive numbers and negative numbers in the same direction, or may round them in different directions. In some cases, the device may not perform rounding processing.
  • FIG. 76 is a flowchart showing an example of a process for calculating a predicted value according to an embodiment.
  • the device calculates the dot product dot(gNgP, gNgC) of vector gNgP and vector gNgC (S1571).
  • the device determines whether the magnitude of the absolute value of the dot product dot(gNgP, gNgC) exceeds the threshold value TH (S1572). If the magnitude of the absolute value of the dot product dot(gNgP, gNgC) exceeds the threshold value TH (Yes in S1572), the device proceeds to step S1573; if not (No in S1572), the device proceeds to step S1575.
  • the device calculates the predicted value (S1573). Specific examples of calculating the predicted value are as described in Figures 72 and 73.
  • the device adjusts the decimal part of the predicted value to 8 bits (S1574). In other words, the device converts the decimal part of the predicted value to 8 bits.
  • the device adjusts the decimal part of the predicted value to 9 bits (S1575). In other words, the device makes the decimal part of the predicted value 9 bits.
  • the device calculates the predicted value (S1576). Specific examples of calculating the predicted value are as described in Figures 72 and 73.
  • the device adjusts the decimal part of the predicted value to 8 bits (S1577). In other words, the device converts the decimal part of the predicted value to 8 bits.
  • step S1574 or S1577 the process of calculating the predicted value ends.
  • the device can calculate the dot product of vectors gNgP and gNgC as dot(gNgP, gNgC), with the x, y, and z components being .x, .y, and .z, respectively, as follows:
  • dot(gNgP, gNgC) gNgP.x * gNgC.x + gNgP.y * gNgC.y + gNgP.z * gNgC.z
  • the device can calculate the dot product of vectors gNgP as dot(gNgP, gNgP) as follows:
  • dot(gNgP, gNgP) gNgP.x * gNgP.x + gNgP.y * gNgP.y + gNgP.z * gNgP.z
  • the device determines the magnitude of the absolute value of the dot product dot(gNgP, gNgC) as
  • the device can use this bit shift amount, shiftBits, to calculate the vector to the projection point as follows:
  • uvProj (uvNext ⁇ shiftBits) + (uvNuvP * (dot(gNgP, gNgC) ⁇ shiftBits)) / dot(gNgP, gNgP)
  • gProj (gNext ⁇ shiftBits) + (gNgP * (dot(gNgP, gNgC) ⁇ shiftBits)) / dot(gNgP, gNgP)
  • the device calculates the dot product of the vectors from the projection point G(proj) to the point G(curr) as dot(gCurr - gProj, gCurr - gProj) as follows:
  • dot(gCurr - gProj, gCurr - gProj) ((gCurr.x ⁇ shiftBits) - gProj.x) * ((gCurr.x ⁇ shiftBits) - gProj.x) + ((gCurr.y ⁇ shiftBits) - gProj.y) * ((gCurr.y ⁇ shiftBits) - gProj.y) + ((gCurr.z ⁇ shiftBits) - gProj.z) * ((gCurr.z ⁇ shiftBits) - gProj.z) * ((gCurr.z ⁇ shiftBits) - gProj.z)
  • the device also defines the vector orthogonal to the two-dimensional vector uvNuvP as orthogonal(uvNuvP), and calculates the vector uvProjuvCurr as follows:
  • uvProjuvCurr ((orthogonal(uvNuvP) ⁇ shiftBits) * sqrt(dot(gCurr - gProj, gCurr - gProj))) / sqrt(dot(gNgP, gNgP) ⁇ (shiftBits * 2))
  • sqrt is the square root.
  • the device may also use an integer approximation of the square root for sqrt. This allows operations to be performed in integer format.
  • the device can calculate the candidate predicted vector predUV0 or predUV1 as follows:
  • predUV0 uvProj + uvProjuvCurr
  • predUV1 uvProj - uvProjuvCurr
  • a device wants to set the number of bits in the fractional part to 8, it can do the following:
  • the device can change the number of bits in the decimal part from shiftBits to 8 bits. Note that while this embodiment shows an example of changing to 8 bits, this is not necessarily limited to this, and the device can also change the number of bits in the decimal part to any n bits (n is an integer greater than or equal to 0).
  • the device may perform the following processing.
  • This process allows the device to change the number of bits in the fractional part from shiftBits to any n bits.
  • predUV predUV0
  • predUV predUV1
  • some offset value may be added or subtracted, taking into account that the decimal point is 8 bits.
  • An example is shown below.
  • This process adjusts the predicted vector using the offset.
  • predicted vectors may be added together to calculate the average value. For example, count predicted vectors may be cumulatively added together to obtain a predicted vector predUVcount, which may then be rounded and averaged.
  • the direction of rounding and adding is adjusted depending on the sign of predUVcount, but you can also use a method that rounds in the same direction, or a method that does not perform rounding and adding.
  • predUV (predUVcount / count + rounding) >> 8" indicates the following individual processing:
  • FIG. 77 is a diagram showing an example of vectors in three-dimensional space when performing fine prediction according to a modified example of the embodiment.
  • FIG. 78 is a diagram showing an example of vectors on a two-dimensional plane when performing fine prediction according to a modified example of the embodiment.
  • the two encoded 3D points connected to the 3D point G(Curr) are designated as G(Next) and G(Prev).
  • the points obtained by projecting these 3D points G(curr), G(next), and G(prev) onto the UV coordinates are designated as UV(Next) and UV(Prev), respectively.
  • the point obtained by projecting G(Curr) onto the UV coordinates is designated as UV(Curr).
  • UV(Curr) an example of fine-predicting a vector for UV(Curr) (deriving predUV) is shown.
  • the three-dimensional vectors corresponding to the known three-dimensional points G(Curr), G(Next), and G(Prev) are respectively the three-dimensional vector gCurr, the three-dimensional vector gNext, and the three-dimensional vector gPrev, and the two-dimensional vectors corresponding to the known two-dimensional points UV(Next) and UV(Prev) are respectively the two-dimensional vector uvNext and the two-dimensional vector uvPrev.
  • the vector from the three-dimensional vector gNext to the three-dimensional vector gPrev is the three-dimensional vector gNgP
  • the vector from the three-dimensional vector gNext to the three-dimensional vector gCurr is the three-dimensional vector gNgC
  • the vector from the two-dimensional vector uvNext to the two-dimensional vector uvPrev is the two-dimensional vector uvNuvP.
  • the dot product of three-dimensional vectors gNgP and gNgC be dot(gNgP, gNgC)
  • the dot product of two three-dimensional vectors gNgP together be dot(gNgP, gNgP).
  • the projection points of the three-dimensional point G(Curr) and the two-dimensional point UV(Curr) onto their respective opposite sides be the three-dimensional point G(Proj) and the two-dimensional point UV(Proj).
  • the three-dimensional vector gProj for the three-dimensional point G(Proj) and the two-dimensional vector uvProj for the two-dimensional point UV(Proj) can be expressed as follows using the dot product ratio, assuming that the triangle formed by the three-dimensional point G(Curr), three-dimensional point G(Next), and three-dimensional point G(Prev) is similar to the triangle formed by the two-dimensional point UV(Curr), two-dimensional point UV(Next), and two-dimensional point UV(Prev).
  • uvProj uvNext + uvNuvP * (dot(gNgP, gNgC) / dot(gNgP, gNgP))
  • gProj gNext + gNgP * (dot(gNgP, gNgC) / dot(gNgP, gNgP))
  • the dot product of the vectors from the projection point 3D point G(Proj) to the 3D point G(Curr) be dot(gCurr - gProj, gCurr - gProj).
  • the vector orthogonal to the 2D vector uvNuvP be orthogonal(uvNuvP), and similarly use triangle similarity to express the vector from the projection point 2D point UV(Proj) to the 2D point UV(Curr), the 2D vector uvProjuvCurr, as follows:
  • uvProjuvCurr orthogonal(uvNuvP) * sqrt(dot(gCurr - gProj, gCurr - gProj) / dot(gNgP, gNgP))
  • the predicted vector two-dimensional vector predUV can be calculated, for example, as follows:
  • the predicted vector can be set to predUV0 or its opposite, predUV1, and calculated as follows:
  • predUV as a bidirectional prediction vector
  • Figure 79 shows another example of calculating a predicted value according to an embodiment.
  • the decimal point may be set to N bits.
  • the number of bits N in the fractional part may be changed depending on the processing content of the fine prediction. For example, when calculating the square root, the number of bits in the fractional part is halved, so by doubling the number of bits in the fractional part to 2N bits before the operation, the fractional part of the calculation result can be maintained at N bits.
  • the number of bits N in the fractional part can be decreased by shifting it to the right.
  • the number of bits N in the fractional part can be increased by shifting it to the left in advance.
  • the number of bits can be increased by shifting the fractional part to the left before the calculation, and then decreased by shifting the fractional part to the right after the calculation. In this case, calculation errors can be suppressed by performing rounding processing. This makes it possible to accommodate a wide range of input values.
  • the number of bits N in the decimal part is not limited to the above setting value. For example, it can be determined based on the number of bits in the hardware register or arithmetic unit. It can also be set based on the performance of the software or system, or the optimal number of bits can be determined by taking into account the trade-off with calculation accuracy. In this way, by setting an appropriate number of bits based on the execution environment, calculation accuracy can be improved and the amount of code can be reduced.
  • the number of bits N in the fractional part may also be added to the header of the bitstream.
  • the number of bits N used by the encoding device is included in the header and encoded, allowing the decoding device to obtain the number of bits N from the header. This allows the decoding device to perform decoding processing using the same number of bits as the number of bits in the fractional part used by the encoding device, making it possible to properly decode the bitstream.
  • the number of bits N in the fractional part can be switched to a different value depending on the profile or level of the standard.
  • profile A which targets high image quality
  • profile B which targets low processing loads
  • the decoding device can appropriately switch the number of bits N based on the profile or level information contained in the stream and correctly decode the bitstream.
  • the number of bits N in the decimal part can also be determined based on the input value or conditions. For example, in the example of calculating the count-th fine prediction value, one possible method is to determine the number of bits N in the decimal part based on the number of bits of the magnitude of the absolute value of dot(gNgP, gNgC). More specifically, the number of bits N in the decimal part can be determined using the number of bits of dot(gNgP, gNgC) or the logarithm to the base 2 of the magnitude of the absolute value. This ensures an appropriate number of bits N in the decimal part based on the range of input values, improving calculation accuracy.
  • Figure 80 is a flowchart showing another example of the process for calculating predicted values according to an embodiment.
  • the device converts the decimal part of the predicted value to N bits (S1581). In other words, the device calculates the predicted value with decimal precision.
  • the device calculates the vector dot product value and dot product ratio (S1582).
  • the device converts the decimal part into 2*N bits (S1583).
  • the device calculates the square root (S1584).
  • the decimal part may be converted to 2*N bits in step S1583 before calculating the square root.
  • the device converts the decimal part to N bits (S1585).
  • Step S1585 may be incorporated into step S1584.
  • the device may convert the decimal part to N bits when calculating the square root.
  • the device calculates the predicted value (vector) (S1586).
  • the number of bits in the fractional part is also halved, so by doubling the number of bits N in the fractional part in advance, it is possible to maintain the same precision as the number of bits N in the fractional part on the output side.
  • the number of bits may remain N as is as input to the square root calculation process, or the decimal part may be converted to N bits after the square root calculation process is output.
  • dot(gNgP, gNgC) gNgP.x * gNgC.x + gNgP.y * gNgC.y + gNgP.z * gNgC.z
  • the device can calculate the dot product of vectors gNgP as dot(gNgP, gNgP) as follows:
  • dot(gNgP, gNgP) gNgP.x * gNgP.x + gNgP.y * gNgP.y + gNgP.z * gNgP.z
  • the "/" in the calculation means integer division that truncates to the decimal point.
  • the vector to the projection point is calculated using the following formula.
  • uvProj (uvNext ⁇ shiftBits) + uvNuvP * ((dot(gNgP, gNgC) ⁇ shiftBits) / dot(gNgP, gNgP))
  • gProj (gNext ⁇ shiftBits) + gNgP * ((dot(gNgP, gNgC) ⁇ shiftBits) / dot(gNgP, gNgP))
  • dot(gCurr - gProj, gCurr - gProj) dot(gCurr - gProj, gCurr - gProj) and calculated as follows:
  • dot(gCurr - gProj, gCurr - gProj) ((gCurr.x ⁇ shiftBits) - gProj.x) * ((gCurr.x ⁇ shiftBits) - gProj.x) + ((gCurr.y ⁇ shiftBits) - gProj.y) * ((gCurr.y ⁇ shiftBits) - gProj.y) + ((gCurr.z ⁇ shiftBits) - gProj.z) * ((gCurr.z ⁇ shiftBits) - gProj.z) * ((gCurr.z ⁇ shiftBits) - gProj.z)
  • the vector orthogonal to the two-dimensional vector uvNuvP is defined as orthogonal(uvNuvP)
  • the vector uvProjuvCurr can be expressed as follows:
  • uvProjuvCurr orthogonal(uvNuvP) * sqrt(dot(gCurr - gProj, gCurr - gProj) / dot(gNgP, gNgP))
  • sqrt() means square root operation.
  • the predicted vector candidate predUV0 or predUV1 is calculated as follows:
  • Either predUV0 or predUV1 obtained in this way can be used as the prediction vector.
  • Either the predicted vector candidate predUV0 or predUV1 is selected, and the predicted vector predUV is set as follows:
  • predUV predUV0
  • predUV predUV1
  • some offset value may be added or subtracted, taking into account that the decimal part is shiftBits.
  • An example is shown below.
  • predicted vectors may be added together to calculate the average value. For example, count predicted vectors may be cumulatively added together to obtain a predicted vector predUVcount, which may then be rounded and averaged.
  • the square root calculation process may be performed using Newton's method using the following recurrence formula:
  • root x n .
  • the decoding device can correctly decode the bitstream by appropriately switching the number of iterations of the recurrence formula based on the profile or level information contained in the stream.
  • the device can also set the number of iterations k of the recurrence formula to 1. In this case, the device can perform one iteration by right bit shifting, eliminating the need to perform division and allowing the device to specify a profile with reduced processing volume.
  • the device may also add the number of iterations k of the recurrence formula to the header of the bitstream, etc. This allows the device (encoding device side) to encode by adding the number of iterations k used to the header. Furthermore, the decoding device can obtain the number of iterations k from the header and perform decoding processing using the same value as the number of iterations used by the encoding device, thereby properly decoding the bitstream.
  • the initial approximate value can be easily calculated without performing complex calculations such as lookup tables or division. Furthermore, by using an approximate value of the square root (the true value) as the initial value, it is possible to find a highly accurate square root while minimizing the number of iterations required until the recurrence formula converges. Furthermore, by minimizing the number of iterations, the square root can be found quickly.
  • the division process in the first iteration of the recurrence formula can be performed by a right shift. This reduces the number of division processes, which are computationally expensive.
  • the initial value of the recurrence formula can be set to a power of two, so that the division process in the first iteration is performed by a right shift, and the division process is performed in the second iteration. In this way, the number of division processes can be reduced by one.
  • the input value a has a 2*N-bit fractional part
  • sufficient precision can be obtained by simply performing integer division in the division in the second iteration using the recurrence formula. Therefore, there is no need to reserve the fractional part separately. This reduces the amount of processing.
  • the first iteration using the recurrence formula with shifts may not be performed, but may be included in the second and subsequent iterations, with all iterations calculated in the same way.
  • the square root calculation process may be performed using Newton's method using the following recurrence formula to find the reciprocal of the square root:
  • the initial value x0 of the recurrence formula may be calculated using the bit count value bits(a) of the input value a as an approximation of the reciprocal of the square root, which is the true value.
  • the device can easily calculate approximate values without having to perform complex calculations such as lookup tables or division. Furthermore, by using an approximate value of the reciprocal of the square root (the true value) as the initial value, the device can calculate the square root with high accuracy while minimizing the number of iterations required until the recurrence formula converges. Furthermore, by minimizing the number of iterations, the device can quickly calculate the square root.
  • the device can calculate the square root with high accuracy even when the recurrence formula is repeated twice, thereby achieving low processing load.
  • the device can perform the multiplication process by right shifting in the first iteration of the recurrence formula. In this way, there is no need to multiply values with fractional parts, and overflow due to insufficient bits can be easily avoided. Furthermore, since it can be achieved by a shift operation, the device can be easily implemented.
  • Figures 81 to 85 are figures for explaining other specific examples of the square root calculation process (sqrt) according to the embodiment.
  • the device can implement x0 as a process of adding a fixed fractional part to input a with a left shift operation ( Figure 83). This process allows us to add a fractional part necessary and sufficient for square root calculation while avoiding overflow in a 64-bit system.
  • the device can perform the multiplication by x0 by a right shift of (bits(a)>>1), as shown in Figures 84 and 85.
  • This process allows x1 to maintain 16-bit precision even after the first iteration is complete.
  • Figures 86 to 93 are figures explaining other specific examples of the square root calculation process (sqrt) according to the embodiment.
  • the final square root output, root can be obtained by truncating the fractional part (16 + (bits(a) >> 1)) bits added during the square root process using a right shift operation.
  • the variable fraction is also not limited to (bits(a) ⁇ 1) bits, and may be of other numbers of bits.
  • the number of shift operations can be reduced by not performing a right shift operation after each multiplication, but performing a shift operation only at the end of the process. In this case, the fractional part added by the left shift can be reduced, or it can be omitted altogether.
  • the lower bits of input a or the decimal point originally contained in input a may be used as part or all of the fixed decimal point shown in another specific example of the square root calculation process (sqrt). This allows processing to be performed using registers and arithmetic units with a smaller number of bits, reducing the number of shift operations.
  • a highly precise square root can be found by repeating the second iterative process using the recurrence formula in another specific example of the square root calculation process (sqrt) as follows:
  • the number of iterations k of the recurrence formula may be added to the header of the bitstream.
  • the decoding device can obtain the number of iterations k from the header.
  • the decoding device can then perform decoding processing using the same value as the number of iterations used by the encoding device, thereby properly decodeing the bitstream.
  • FIG. 94 is a diagram showing another example of the configuration of an encoding device according to an embodiment.
  • FIG. 95 is a flowchart showing another example of an encoding method performed by an encoding device according to an embodiment.
  • the encoding device 1550 includes a circuit 1551 and a memory 1552 connected to the circuit 1551.
  • the encoding device 1550 may perform the processing described in Figures 71 to 93.
  • Circuit 1551 performs the following operations:
  • Circuit 1551 acquires multiple vertices included in a three-dimensional mesh (S1561). Circuit 1551 predictively encodes one of the multiple vertices (S1562). In the predictive encoding, a first predicted value for the one vertex is calculated with decimal precision, the number of bits in the decimal part of the first predicted value is reduced to calculate a second predicted value, and the one vertex is predictively encoded using the second predicted value.
  • two or more third predicted values are calculated with decimal precision based on each of the two or more processed vertices, and the first predicted value is calculated by integrating the two or more third predicted values.
  • two or more third predicted values are integrated with decimal precision.
  • the two or more third predicted values and the first predicted value each have a decimal part with a predetermined number of bits.
  • the second predicted value is calculated by reducing the decimal part of the first predicted value by a predetermined number of bits.
  • the first predicted value is the average of two or more third predicted values.
  • the specified number of bits is not reduced until the second predicted value is calculated.
  • the second predicted value is rounded to calculate a fourth predicted value, and the fourth predicted value is used to predictively encode the one vertex.
  • the second predicted value is rounded in a different direction depending on whether the second predicted value is a positive number or a negative number.
  • Figure 96 is a diagram showing another example of the configuration of a decoding device according to an embodiment.
  • Figure 97 is a flowchart showing another example of a decoding method performed by a decoding device according to an embodiment.
  • the decoding device 1560 includes a circuit 1561 and a memory 1562 connected to the circuit 1561.
  • the decoding device 1560 may perform the processing described in Figures 71 to 93.
  • Circuit 1561 performs the following operations:
  • Circuit 1561 acquires multiple vertices included in a three-dimensional mesh (S1571). Circuit 1561 predictively decodes one of the multiple vertices (S1572). In the predictive decoding, a first predicted value for the one vertex is calculated with decimal precision, the number of bits in the decimal part of the first predicted value is reduced to calculate a second predicted value, and the one vertex is predictively decoded using the second predicted value.
  • two or more third predicted values are calculated with decimal precision based on each of the two or more processed vertices, and the first predicted value is calculated by integrating the two or more third predicted values.
  • two or more third predicted values are integrated with decimal precision.
  • the two or more third predicted values and the first predicted value each have a decimal part with a predetermined number of bits.
  • the second predicted value is calculated by reducing the decimal part of the first predicted value by a predetermined number of bits.
  • the first predicted value is the average of two or more third predicted values.
  • the specified number of bits is not reduced before the second predicted value is calculated.
  • the second predicted value is rounded to calculate a fourth predicted value, and the fourth predicted value is used to predictively decode the one vertex.
  • the second predicted value is rounded in a different direction depending on whether the second predicted value is a positive number or a negative number.
  • This disclosure is useful, for example, for encoding devices, decoding devices, transmitting devices, and receiving devices related to three-dimensional meshes, and is applicable to computer graphics systems and 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

This encoding method is executed by an encoding device. The encoding method includes acquiring a plurality of vertices included in a three-dimensional mesh (S1561), and prediction-encoding one vertex of the plurality of vertices (S1562). In the prediction-encoding, a first prediction value of one vertex is calculated with decimal accuracy, a second prediction value is calculated by reducing the number of bits of the decimal part of the first prediction value, and one vertex is prediction-encoded using the second prediction value.

Description

符号化方法、復号方法、符号化装置及び復号装置Encoding method, decoding method, encoding device, and decoding device

 本開示は、符号化方法等に関する。 This disclosure relates to encoding methods, etc.

 特許文献1において、三次元メッシュデータの符号化及び復号のための方法及び装置が提案されている。 Patent document 1 proposes a method and apparatus for encoding and decoding three-dimensional mesh data.

特開2006-187015号公報Japanese Patent Application Laid-Open No. 2006-187015

 三次元メッシュに関する符号化または復号の処理について更なる改善が望まれている。本開示は、三次元メッシュに関する符号化または復号の処理を改善することを目的とする。 Further improvements are desired in the encoding or decoding process for three-dimensional meshes. The present disclosure aims to improve the encoding or decoding process for three-dimensional meshes.

 本開示の一態様に係る符号化方法は、符号化装置によって実行される符号化方法であって、三次元メッシュに含まれる複数の頂点を取得し、前記複数の頂点のうちの1つの頂点を予測符号化し、前記予測符号化では、前記1つの頂点の第1予測値を小数精度で算出し、前記第1予測値の小数部のビット数を削減して第2予測値を算出し、前記第2予測値を用いて前記1つの頂点を予測符号化する。 An encoding method according to one aspect of the present disclosure is an encoding method executed by an encoding device, which obtains multiple vertices included in a three-dimensional mesh and predictively encodes one of the multiple vertices. In the predictive encoding, a first predicted value for the one vertex is calculated with decimal precision, a second predicted value is calculated by reducing the number of bits in the decimal part of the first predicted value, and the one vertex is predictively encoded using the second predicted value.

 本開示の一態様に係る復号方法は、復号装置によって実行される復号方法であって、三次元メッシュに含まれる複数の頂点を取得し、前記複数の頂点のうちの1つの頂点を予測復号し、前記予測復号では、前記1つの頂点の第1予測値を小数精度で算出し、前記第1予測値の小数部のビット数を削減して第2予測値を算出し、前記第2予測値を用いて前記1つの頂点を予測復号する。 A decoding method according to one aspect of the present disclosure is a decoding method executed by a decoding device, which obtains multiple vertices included in a three-dimensional mesh and predictively decodes one of the multiple vertices. In the predictive decoding, a first predicted value for the one vertex is calculated with decimal precision, a second predicted value is calculated by reducing the number of bits in the decimal part of the first predicted value, and the one vertex is predictively decoded using the second predicted value.

 なお、これらの包括的または具体的な態様は、システム、装置、集積回路、コンピュータプログラムまたはコンピュータ読み取り可能なCD-ROMなどの記録媒体で実現されてもよく、システム、装置、集積回路、コンピュータプログラムおよび記録媒体の任意な組み合わせで実現されてもよい。 Note that these comprehensive or specific aspects may be realized as a system, device, integrated circuit, computer program, or computer-readable recording medium such as a CD-ROM, or as any combination of a system, device, integrated circuit, computer program, and recording medium.

 本開示は、三次元メッシュに関する符号化処理等の改善に貢献し得る。 This disclosure may contribute to improving coding processes related to three-dimensional meshes.

実施の形態に係る三次元メッシュを示す概念図である。FIG. 1 is a conceptual diagram illustrating 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. 1 is a conceptual diagram illustrating mapping according to an embodiment. 実施の形態に係る符号化復号システムの構成例を示すブロック図である。1 is a block diagram illustrating an example of the configuration of an encoding/decoding system according to an embodiment. 実施の形態に係る符号化装置の構成例を示すブロック図である。1 is a block diagram illustrating an example of the configuration of an encoding device according to an embodiment. 実施の形態に係る符号化装置の別の構成例を示すブロック図である。FIG. 10 is a block diagram showing another example configuration of an encoding device according to an embodiment. 実施の形態に係る復号装置の構成例を示すブロック図である。FIG. 2 is a block diagram illustrating an example of a configuration of a decoding device according to an embodiment. 実施の形態に係る復号装置の別の構成例を示すブロック図である。FIG. 10 is a block diagram illustrating another example configuration of a decoding device according to an embodiment. 実施の形態に係るビットストリームの構成例を示す概念図である。FIG. 2 is a conceptual diagram illustrating an example of the configuration of a bitstream according to an embodiment. 実施の形態に係るビットストリームの別の構成例を示す概念図である。FIG. 10 is a conceptual diagram showing another example of the configuration of a bitstream according to an embodiment. 実施の形態に係るビットストリームのさらに別の構成例を示す概念図である。FIG. 10 is a conceptual diagram showing yet another example configuration of a bitstream according to an embodiment. 実施の形態に係る符号化復号システムの具体例を示すブロック図である。1 is a block diagram showing a specific example of an encoding/decoding system according to an embodiment; 実施の形態に係る点群データの構成例を示す概念図である。FIG. 2 is a conceptual diagram illustrating an example of the configuration of point cloud data according to the embodiment. 実施の形態に係る点群データのデータファイル例を示す概念図である。FIG. 2 is a conceptual diagram illustrating an example of a data file of point cloud data according to the embodiment. 実施の形態に係るメッシュデータの構成例を示す概念図である。FIG. 2 is a conceptual diagram showing an example of the configuration of mesh data according to the embodiment. 実施の形態に係るメッシュデータのデータファイル例を示す概念図である。FIG. 2 is a conceptual diagram illustrating an example of a data file of mesh data according to the embodiment. 実施の形態に係る三次元データの種類を示す概念図である。FIG. 2 is a conceptual diagram showing types of three-dimensional data according to the embodiment. 実施の形態に係る三次元データ符号化器の構成例を示すブロック図である。FIG. 2 is a block diagram illustrating an example of the configuration of a three-dimensional data encoder according to an embodiment. 実施の形態に係る三次元データ復号器の構成例を示すブロック図である。FIG. 2 is a block diagram showing an example of the configuration of a three-dimensional data decoder according to an embodiment. 実施の形態に係る三次元データ符号化器の別の構成例を示すブロック図である。FIG. 10 is a block diagram showing another example configuration of a three-dimensional data encoder according to an embodiment. 実施の形態に係る三次元データ復号器の別の構成例を示すブロック図である。FIG. 10 is a block diagram showing another example configuration of the three-dimensional data decoder according to the embodiment. 実施の形態に係る符号化処理の具体例を示す概念図である。FIG. 10 is a conceptual diagram showing a specific example of encoding processing according to an embodiment. 実施の形態に係る復号処理の具体例を示す概念図である。FIG. 10 is a conceptual diagram showing a specific example of a decoding process according to an embodiment. 実施の形態に係る符号化装置の実装例を示すブロック図である。FIG. 1 is a block diagram illustrating an example implementation of an encoding device according to an embodiment. 実施の形態に係る復号装置の実装例を示すブロック図である。FIG. 2 is a block diagram illustrating an example implementation of a decoding device according to an embodiment. 実施の形態に係る符号化復号システムの別の構成例を示すブロック図である。FIG. 10 is a block diagram showing another example configuration of the encoding/decoding system according to the embodiment. 実施の形態に係る符号化装置の別の構成例を示すブロック図である。FIG. 10 is a block diagram showing another example configuration of an encoding device according to an embodiment. 実施の形態に係る復号装置の別の構成例を示すブロック図である。FIG. 10 is a block diagram illustrating another example configuration of a decoding device according to an embodiment. 実施の形態に係る符号化装置の別の構成例を示すブロック図である。FIG. 10 is a block diagram showing another example configuration of an encoding device according to an embodiment. 実施の形態に係る復号装置の別の構成例を示すブロック図である。FIG. 10 is a block diagram illustrating another example configuration of a decoding device according to an embodiment. 実施の形態に係る符号化装置の処理を示すフロー図である。FIG. 10 is a flowchart showing the processing of the encoding device according to the embodiment. 実施の形態に係るメッシュフレームの符号化を概念的に示す説明図である。1 is an explanatory diagram conceptually illustrating encoding of a mesh frame according to an embodiment; 実施の形態に係る復号装置の処理を示すフロー図である。FIG. 10 is a flowchart showing the process of the decoding device according to the embodiment. 実施の形態に係るメッシュフレームの復号を概念的に示す説明図である。FIG. 10 is an explanatory diagram conceptually illustrating decoding of a mesh frame according to an embodiment. 実施の形態に係る復号装置の構成例を示すブロック図である。FIG. 2 is a block diagram illustrating an example of a configuration of a decoding device according to an embodiment. 実施の形態に係る復号装置の構成例を示すブロック図である。FIG. 2 is a block diagram illustrating an example of a configuration of a decoding device according to an embodiment. 実施の形態に係るサブ分割の例を示す説明図である。FIG. 10 is an explanatory diagram illustrating an example of subdivision according to an embodiment. 実施の形態に係るサブ分割後に変位された後の頂点の変位の例を示す説明図である。10A and 10B are explanatory diagrams showing examples of displacement of vertices after subdivision according to an embodiment; 実施の形態に係るオリジナルメッシュの頂点の例を示す説明図である。10A and 10B are explanatory diagrams showing examples of vertices of an original mesh according to an embodiment; 実施の形態に係るメッシュの例を示す説明図である。FIG. 10 is an explanatory diagram showing an example of a mesh according to an embodiment. 実施の形態に係るメッシュのサブメッシュへの分割の例を示す説明図である。10A and 10B are explanatory diagrams illustrating an example of dividing a mesh into sub-meshes according to an embodiment. 実施の形態に係る変位情報の画像フレームへのパッキングの例を示す第1の説明図である。FIG. 10 is a first explanatory diagram showing an example of packing displacement information into an image frame according to the embodiment; 実施の形態に係る変位情報の画像フレームへのパッキングの例を示す第2の説明図である。FIG. 10 is a second explanatory diagram showing an example of packing displacement information into an image frame according to the embodiment. 実施の形態に係る変位情報の画像フレームへのパッキングの例を示す第3の説明図である。FIG. 10 is a third explanatory diagram showing an example of packing displacement information into an image frame according to the embodiment. 実施の形態にかかるメッシュデータにおける属性情報の例を説明するための図である。10A and 10B are diagrams for explaining examples of attribute information in mesh data according to an embodiment; 実施の形態にかかるメッシュデータにおける属性情報の例を説明するための図である。10A and 10B are diagrams for explaining examples of attribute information in mesh data according to an embodiment; 実施の形態にかかるメッシュデータにおける属性情報の例を説明するための図である。10A and 10B are diagrams for explaining examples of attribute information in mesh data according to an embodiment; 属性情報の符号化方法の具体例を説明するための図である。FIG. 10 is a diagram illustrating a specific example of a method for encoding attribute information. 属性情報の符号化方法の具体例を説明するための図である。FIG. 10 is a diagram illustrating a specific example of a method for encoding attribute information. 属性情報の符号化方法の具体例を説明するための図である。FIG. 10 is a diagram illustrating a specific example of a method for encoding attribute information. 属性情報の符号化方法の具体例を説明するための図である。FIG. 10 is a diagram illustrating a specific example of a method for encoding attribute information. 属性情報の符号化方法の具体例を説明するための図である。FIG. 10 is a diagram illustrating a specific example of a method for encoding attribute information. 属性情報の符号化方法の具体例を説明するための図である。FIG. 10 is a diagram illustrating a specific example of a method for encoding attribute information. 実施の形態に係る三次元点の属性情報の符号化のフローチャートの一例を示す図である。FIG. 10 is a diagram illustrating an example of a flowchart for encoding attribute information of a three-dimensional point according to an embodiment. 実施の形態に係る第3予測モードの予測値の算出処理の一例を示すフローチャートである。10 is a flowchart illustrating an example of a calculation process of a predicted value in a third prediction mode according to an embodiment. 実施の形態に係る三次元点の属性情報の復号のフローチャートの一例を示す図である。FIG. 10 is a diagram illustrating an example of a flowchart for decoding attribute information of a three-dimensional point according to an embodiment. 実施の形態に係るmesh_attribute_codingのシンタックスの一例を示す図である。FIG. 10 is a diagram illustrating an example of the syntax of mesh_attribute_coding according to the embodiment. 実施の形態に係るmesh_attribute_headerのシンタックスの一例を示す図である。FIG. 10 is a diagram illustrating an example of the syntax of mesh_attribute_header according to the embodiment. 実施の形態に係るmesh_attribute_dataのシンタックスの一例を示す図である。FIG. 10 is a diagram illustrating an example of the syntax of mesh_attribute_data according to the embodiment. 実施の形態の変形例に係る属性情報の一例を示す図である。FIG. 10 is a diagram showing an example of attribute information according to a modified example of the embodiment. 実施の形態の変形例に係るmesh_attribute_headerのシンタックスの一例を示す図である。FIG. 10 is a diagram illustrating an example of the syntax of mesh_attribute_header according to a modified example of the embodiment. 実施の形態に係るジオメトリマップの一例を示す図である。FIG. 10 is a diagram illustrating an example of a geometry map according to the embodiment. 実施の形態にかかるテクスチャマップの一例を示す図である。FIG. 2 is a diagram illustrating an example of a texture map according to an embodiment; 実施の形態に係るmesh_position_codingのシンタックスの一例を示す図である。FIG. 10 is a diagram illustrating an example of the syntax of mesh_position_coding according to the embodiment. 実施の形態に係るmesh_position_headerのシンタックスの一例を示す図である。FIG. 10 is a diagram illustrating an example of the syntax of mesh_position_header according to the embodiment. 実施の形態に係るmesh_position_dataのシンタックスの一例を示す図である。FIG. 10 is a diagram illustrating an example of the syntax of mesh_position_data according to the embodiment. 実施の形態に係る、符号化装置の構成の一例を示す図である。FIG. 1 illustrates an example of a configuration of an encoding device according to an embodiment. 実施の形態に係る、符号化装置による符号化方法の一例を示すフローチャートである。1 is a flowchart illustrating an example of an encoding method performed by an encoding device according to an embodiment. 実施の形態に係る、復号装置の構成の一例を示す図である。FIG. 2 is a diagram illustrating an example of a configuration of a decoding device according to an embodiment. 実施の形態に係る、復号装置による復号方法の一例を示すフローチャートである。10 is a flowchart illustrating an example of a decoding method performed by a decoding device according to an embodiment. 実施の形態に係る第3予測モードの予測値の算出処理の他の一例を示すフローチャートである。10 is a flowchart illustrating another example of the process of calculating a predicted value in the third prediction mode according to the embodiment. 実施の形態に係るfine予測する場合の三次元空間上のベクトルの一例を示す図である。FIG. 10 is a diagram illustrating an example of vectors in a three-dimensional space when fine prediction is performed according to the embodiment. 実施の形態に係るfine予測する場合の二次元平面上のベクトルの一例を示す図である。FIG. 10 is a diagram illustrating an example of vectors on a two-dimensional plane when fine prediction is performed according to the embodiment. 実施の形態に係るdot(gNgP, gNgC)の絶対値の大きさが閾値THを超える場合の予測値の算出例を示す図である。A figure showing an example of calculating a predicted value when the absolute value of dot(gNgP, gNgC) in the embodiment exceeds a threshold value TH. 実施の形態に係るdot(gNgP, gNgC)の絶対値の大きさが閾値TH以下である場合の予測値の算出例を示す図である。A figure showing an example of calculating a predicted value when the absolute value of dot(gNgP, gNgC) in the embodiment is less than or equal to the threshold value TH. 実施の形態に係る予測値の算出の他の例を示す図である。FIG. 10 is a diagram illustrating another example of calculation of a predicted value according to the embodiment. 実施の形態に係る予測値の算出処理の一例を示すフローチャートである。10 is a flowchart illustrating an example of a calculation process of a predicted value according to an embodiment. 実施の形態の変形例に係るfine予測する場合の三次元空間上のベクトルの一例を示す図である。FIG. 10 is a diagram illustrating an example of vectors in a three-dimensional space when fine prediction is performed according to a modification of the embodiment. 実施の形態の変形例に係るfine予測する場合の二次元平面上のベクトルの一例を示す図である。FIG. 10 is a diagram illustrating an example of vectors on a two-dimensional plane when fine prediction is performed according to a modification of the embodiment. 実施の形態に係る予測値の算出の他の例を示す図である。FIG. 10 is a diagram illustrating another example of calculation of a predicted value according to the embodiment. 実施の形態に係る予測値の算出処理の他の一例を示すフローチャートである。10 is a flowchart illustrating another example of the process of calculating a predicted value according to the embodiment. 実施の形態に係る平方根算出処理(sqrt)の他の具体的な例について説明するための図である。10A to 10C are diagrams for explaining another specific example of the square root calculation process (sqrt) according to the embodiment. 実施の形態に係る平方根算出処理(sqrt)の他の具体的な例について説明するための図である。10A to 10C are diagrams for explaining another specific example of the square root calculation process (sqrt) according to the embodiment. 実施の形態に係る平方根算出処理(sqrt)の他の具体的な例について説明するための図である。10A to 10C are diagrams for explaining another specific example of the square root calculation process (sqrt) according to the embodiment. 実施の形態に係る平方根算出処理(sqrt)の他の具体的な例について説明するための図である。10A to 10C are diagrams for explaining another specific example of the square root calculation process (sqrt) according to the embodiment. 実施の形態に係る平方根算出処理(sqrt)の他の具体的な例について説明するための図である。10A to 10C are diagrams for explaining another specific example of the square root calculation process (sqrt) according to the embodiment. 実施の形態に係る平方根算出処理(sqrt)の他の具体的な例について説明するための図である。10A to 10C are diagrams for explaining another specific example of the square root calculation process (sqrt) according to the embodiment. 実施の形態に係る平方根算出処理(sqrt)の他の具体的な例について説明するための図である。10A to 10C are diagrams for explaining another specific example of the square root calculation process (sqrt) according to the embodiment. 実施の形態に係る平方根算出処理(sqrt)の他の具体的な例について説明するための図である。10A to 10C are diagrams for explaining another specific example of the square root calculation process (sqrt) according to the embodiment. 実施の形態に係る平方根算出処理(sqrt)の他の具体的な例について説明するための図である。10A to 10C are diagrams for explaining another specific example of the square root calculation process (sqrt) according to the embodiment. 実施の形態に係る平方根算出処理(sqrt)の他の具体的な例について説明するための図である。10A to 10C are diagrams for explaining another specific example of the square root calculation process (sqrt) according to the embodiment. 実施の形態に係る平方根算出処理(sqrt)の他の具体的な例について説明するための図である。10A to 10C are diagrams for explaining another specific example of the square root calculation process (sqrt) according to the embodiment. 実施の形態に係る平方根算出処理(sqrt)の他の具体的な例について説明するための図である。10A to 10C are diagrams for explaining another specific example of the square root calculation process (sqrt) according to the embodiment. 実施の形態に係る平方根算出処理(sqrt)の他の具体的な例について説明するための図である。10A to 10C are diagrams for explaining another specific example of the square root calculation process (sqrt) according to the embodiment. 実施の形態に係る、符号化装置の構成の他の一例を示す図である。FIG. 10 is a diagram illustrating another example of the configuration of an encoding device according to an embodiment. 実施の形態に係る、符号化装置による符号化方法の他の一例を示すフローチャートである。10 is a flowchart illustrating another example of an encoding method performed by an encoding device according to an embodiment. 実施の形態に係る、復号装置の構成の他の一例を示す図である。FIG. 10 is a diagram illustrating another example of the configuration of a decoding device according to an embodiment. 実施の形態に係る、復号装置による復号方法の他の一例を示すフローチャートである。10 is a flowchart illustrating another example of a decoding method performed by a decoding device according to an embodiment.

 <本開示の概要>
 例えば、三次元(3D)メッシュは、コンピュータグラフィックス映像に用いられる。例えば、コンピュータグラフィックス映像は、時間的に互いに異なる複数のフレームで構成され、各フレームが三次元メッシュによって表現されてもよい。
<Summary of the Disclosure>
For example, three-dimensional (3D) meshes are used in computer graphics images, which may be composed of multiple temporally distinct frames, each of which may be represented by a 3D mesh.

 また、三次元メッシュは、三次元空間における複数の頂点のそれぞれの位置を示す頂点情報、複数の頂点の間の接続を示す接続情報、及び、各頂点又は各面の属性を示す属性情報で構成される。各面は、複数の頂点の接続関係に従って構築される。このような三次元メッシュによって、様々なコンピュータグラフィックス映像が表現され得る。 A three-dimensional mesh is composed of vertex information indicating the position of each of multiple vertices in three-dimensional space, connection information indicating the connections between the multiple vertices, and attribute information indicating the attributes of each vertex or each face. Each face is constructed according to the connection relationships between the multiple vertices. A variety of computer graphics images can be expressed using such three-dimensional meshes.

 また、三次元メッシュの伝送及び蓄積のため、三次元メッシュの効率的な符号化及び復号が期待される。三次元メッシュの効率的な符号化及び復号のため、算術符号化及び算術復号が用いられてもよい。 Furthermore, for transmission and storage of three-dimensional meshes, efficient encoding and decoding of three-dimensional meshes is expected. Arithmetic coding and arithmetic decoding may be used for efficient encoding and decoding of three-dimensional meshes.

 三次元データに関する符号化又は復号の処理について更なる改善が望まれている。本開示は、三次元データに関する符号化又は復号の処理を改善することを目的とする。 Further improvements are desired in the encoding or decoding process for three-dimensional data. The present disclosure aims to improve the encoding or decoding process for three-dimensional data.

 以下、本明細書の開示内容から得られる発明を例示し、その発明から得られる効果等を説明する。 Below, we will present examples of inventions that can be obtained from the disclosures of this specification and explain the effects and other benefits that can be obtained from these inventions.

 本開示の第1態様に係る符号化方法は、符号化装置によって実行される符号化方法であって、三次元メッシュに含まれる複数の頂点を取得し、前記複数の頂点のうちの1つの頂点を予測符号化し、前記予測符号化では、前記1つの頂点の第1予測値を小数精度で算出し、前記第1予測値の小数部のビット数を削減して第2予測値を算出し、前記第2予測値を用いて前記1つの頂点を予測符号化する。 The encoding method according to a first aspect of the present disclosure is an encoding method executed by an encoding device, which obtains multiple vertices included in a three-dimensional mesh and predictively encodes one of the multiple vertices. In the predictive encoding, a first predicted value for the one vertex is calculated with decimal precision, a second predicted value is calculated by reducing the number of bits in the decimal part of the first predicted value, and the one vertex is predictively encoded using the second predicted value.

 これによれば、小数精度で算出された予測値の小数部のビット数を削減することで、演算時の精度を制御しつつ、データ量を削減できる。ビット数の削減によって、符号化の処理量が低減されるため、処理効率を向上できる。 By reducing the number of bits in the decimal part of the predicted value calculated with decimal precision, it is possible to reduce the amount of data while controlling the accuracy during calculation. Reducing the number of bits reduces the amount of encoding processing, thereby improving processing efficiency.

 本開示の第2態様に係る符号化方法は、第1態様に係る符号化方法であって、前記第1予測値の算出では、処理済みの2つ以上の頂点のそれぞれに基づいて、2つ以上の第3予測値を小数精度で算出し、前記2つ以上の第3予測値を統合することで第1予測値を算出する。 The encoding method according to the second aspect of the present disclosure is the encoding method according to the first aspect, wherein in calculating the first predicted value, two or more third predicted values are calculated with decimal precision based on each of the two or more processed vertices, and the first predicted value is calculated by integrating the two or more third predicted values.

 これによれば、複数の予測値を統合することで、精度の高い予測値を得ることができる。これにより、予測誤差が低減し、符号化の効率が向上する。また、複数の予測値の統合によって、適切な予測値を選択する手法に柔軟性を持たせることができる。 By combining multiple predicted values, it is possible to obtain a highly accurate predicted value. This reduces prediction errors and improves coding efficiency. Furthermore, combining multiple predicted values allows for greater flexibility in the method for selecting an appropriate predicted value.

 本開示の第3態様に係る符号化方法は、第2態様に係る符号化方法であって、前記第1予測値の算出では、前記2つ以上の第3予測値を小数精度で統合する。 The encoding method according to the third aspect of the present disclosure is the encoding method according to the second aspect, wherein the first predicted value is calculated by integrating the two or more third predicted values with decimal precision.

 これによれば、統合処理を小数精度で行い、後で整数化することで、統合処理の精度を保ちながら符号化処理を行うことができる。精度の高い統合を行った後で整数化することで、予測誤差の増大を抑制できる。 By performing the integration process with decimal precision and then converting to integers later, it is possible to perform the encoding process while maintaining the precision of the integration process. By performing high-precision integration and then converting to integers, it is possible to suppress an increase in prediction error.

 本開示の第4態様に係る符号化方法は、第2態様または第3態様に係る符号化方法であって、前記2つ以上の第3予測値及び前記第1予測値は、所定のビット数の小数部を有し、前記第2予測値の算出では、前記第1予測値の前記小数部の前記所定のビット数を削減することで前記第2予測値を算出する。 The encoding method according to the fourth aspect of the present disclosure is the encoding method according to the second or third aspect, wherein the two or more third predicted values and the first predicted value have decimal parts with a predetermined number of bits, and the second predicted value is calculated by reducing the predetermined number of bits of the decimal part of the first predicted value.

 これによれば、所定のビット数の小数部を削減することで、整数化の処理を簡便に行うことができる。ビット数の削減により、符号量を削減でき、演算処理の効率を向上できる。 This allows for easy integer conversion by reducing the decimal portion by a predetermined number of bits. Reducing the number of bits reduces the amount of code required, improving the efficiency of calculation processing.

 本開示の第5態様に係る符号化方法は、第2態様から第4態様のいずれか1つの態様に係る符号化方法であって、前記第1予測値は、前記2つ以上の第3予測値の平均である。 The encoding method according to the fifth aspect of the present disclosure is the encoding method according to any one of the second to fourth aspects, wherein the first predicted value is the average of the two or more third predicted values.

 これによれば、複数の予測値の平均を用いることで、全体的な予測誤差を低減できる。平均化によって、ノイズ成分や予測誤差が相殺される可能性があるため、符号化精度を向上させることができる。 This allows the overall prediction error to be reduced by averaging multiple predicted values. Averaging can potentially cancel out noise components and prediction errors, improving coding accuracy.

 本開示の第6態様に係る符号化方法は、第4態様に係る符号化方法であって、前記予測符号化では、前記第2予測値の算出までに前記所定のビット数の削減を行わない。 The encoding method according to the sixth aspect of the present disclosure is the encoding method according to the fourth aspect, wherein the predictive encoding does not reduce the predetermined number of bits before calculating the second predicted value.

 これによれば、整数化するまでにビット数の削減を行わないことで、予測値の精度を維持できる。演算中に精度低下が起こらないため、高精度な符号化を実現できる。 This allows the accuracy of the predicted value to be maintained by not reducing the number of bits before converting to integers. Since there is no loss of accuracy during calculation, high-precision encoding can be achieved.

 本開示の第7態様に係る符号化方法は、第1態様から第6態様のいずれか1つの態様に係る符号化方法であって、前記第2予測値を用いた前記1つの頂点の予測符号化では、前記第2予測値に丸め処理を行って第4予測値を算出し、前記第4予測値を用いて前記1つの頂点を予測符号化する。 The encoding method according to a seventh aspect of the present disclosure is an encoding method according to any one of the first to sixth aspects, wherein in the predictive encoding of the one vertex using the second predicted value, a fourth predicted value is calculated by rounding the second predicted value, and the one vertex is predictively encoded using the fourth predicted value.

 これによれば、丸め処理を行うことで、小数点以下の誤差を抑えることができる。符号化後のデータ精度を向上させることができ、またビット数削減時の誤差を最小化できる。 This allows rounding to be performed to reduce errors after the decimal point. This improves the accuracy of the encoded data and minimizes errors when reducing the number of bits.

 本開示の第8態様に係る符号化方法は、第7態様に係る符号化方法であって、前記丸め処理では、前記第2予測値を、当該第2予測値が正の数であるか負の数であるかで異なる方向に丸める。 The encoding method according to an eighth aspect of the present disclosure is the encoding method according to the seventh aspect, wherein the rounding process rounds the second predicted value in a different direction depending on whether the second predicted value is a positive number or a negative number.

 これによれば、予測値が正か負かによって丸めの方向を切り替えることで、符号化精度の向上を図ることができる。特に、予測値の大きさや符号に応じた最適な丸め処理を実現できる。 This allows for improved encoding accuracy by switching the rounding direction depending on whether the predicted value is positive or negative. In particular, it allows for optimal rounding processing based on the magnitude and sign of the predicted value.

 本開示の第9態様に係る復号方法は、復号装置によって実行される復号方法であって、三次元メッシュに含まれる複数の頂点を取得し、前記複数の頂点のうちの1つの頂点を予測復号し、前記予測復号では、前記1つの頂点の第1予測値を小数精度で算出し、前記第1予測値の小数部のビット数を削減して第2予測値を算出し、前記第2予測値を用いて前記1つの頂点を予測復号する。 A decoding method according to a ninth aspect of the present disclosure is a decoding method executed by a decoding device, which obtains multiple vertices included in a three-dimensional mesh and predictively decodes one of the multiple vertices. In the predictive decoding, a first predicted value for the one vertex is calculated with decimal precision, a second predicted value is calculated by reducing the number of bits in the decimal part of the first predicted value, and the one vertex is predictively decoded using the second predicted value.

 これによれば、小数精度で算出された予測値の小数部のビット数を削減することで、演算時の精度を制御しつつ、データ量を削減できる。ビット数の削減によって、復号の処理量が低減されるため、処理効率を向上できる。 By reducing the number of bits in the decimal part of the predicted value calculated with decimal precision, it is possible to reduce the amount of data while controlling the accuracy during calculation. Reducing the number of bits reduces the amount of decoding processing, thereby improving processing efficiency.

 本開示の第10態様に係る復号方法は、第9態様に係る復号方法であって、前記第1予測値の算出では、処理済みの2つ以上の頂点のそれぞれに基づいて、2つ以上の第3予測値を小数精度で算出し、前記2つ以上の第3予測値を統合することで第1予測値を算出する。 A decoding method according to a tenth aspect of the present disclosure is the decoding method according to the ninth aspect, wherein in calculating the first predicted value, two or more third predicted values are calculated with decimal precision based on each of the two or more processed vertices, and the first predicted value is calculated by integrating the two or more third predicted values.

 これによれば、複数の予測値を統合することで、精度の高い予測値を得ることができる。これにより、復号誤差が低減され、復号精度が向上する。 By combining multiple predicted values, a highly accurate predicted value can be obtained. This reduces decoding errors and improves decoding accuracy.

 本開示の第11態様に係る復号方法は、第10態様に係る復号方法であって、前記第1予測値の算出では、前記2つ以上の第3予測値を小数精度で統合する。 A decoding method according to an eleventh aspect of the present disclosure is the decoding method according to the tenth aspect, wherein the first predicted value is calculated by integrating the two or more third predicted values with decimal precision.

 これによれば、小数精度での統合処理により、より高精度な予測値を算出することができる。後に整数化することで、効率よく復号処理を行うことができる。 This allows for more accurate predictions to be calculated by integrating with decimal precision. By converting the values to integers later, the decoding process can be performed efficiently.

 本開示の第12態様に係る復号方法は、第10態様または第11態様に係る復号方法であって、前記2つ以上の第3予測値及び前記第1予測値は、所定のビット数の小数部を有し、前記第2予測値の算出では、前記第1予測値の前記小数部の前記所定のビット数を削減することで前記第2予測値を算出する。 A decoding method according to a twelfth aspect of the present disclosure is a decoding method according to the tenth or eleventh aspect, wherein the two or more third predicted values and the first predicted value have decimal parts with a predetermined number of bits, and the second predicted value is calculated by reducing the predetermined number of bits of the decimal part of the first predicted value.

 これによれば、小数部のビット数を削減して整数化することで、復号処理の負担を軽減しつつ、高精度な予測値の利用を可能とする。 This reduces the number of bits in the decimal part and converts it to an integer, thereby reducing the burden of the decoding process and enabling the use of highly accurate prediction values.

 本開示の第13態様に係る復号方法は、第10態様から第12態様のいずれか1つの態様に係る復号方法であって、前記第1予測値は、前記2つ以上の第3予測値の平均である。 A decoding method according to a thirteenth aspect of the present disclosure is a decoding method according to any one of the tenth to twelfth aspects, in which the first predicted value is an average of the two or more third predicted values.

 これによれば、複数の予測値を平均化することで、予測誤差を低減できる。平均化処理によって予測値のばらつきを抑え、高精度な復号を実現できる。 This allows prediction errors to be reduced by averaging multiple predicted values. The averaging process reduces the variance in predicted values, enabling highly accurate decoding.

 本開示の第14態様に係る復号方法は、第12態様に係る復号方法であって、前記予測復号では、前記第2予測値の算出までに前記所定のビット数の削減を行わない。 A decoding method according to a fourteenth aspect of the present disclosure is the decoding method according to the twelfth aspect, wherein in the predictive decoding, the predetermined number of bits is not reduced before the second predicted value is calculated.

 これによれば、復号処理において整数化するまでビットの削減による精度低下が生じないため、高精度な復号処理を維持できる。 This means that there is no loss of accuracy due to bit reduction until integer conversion occurs during the decoding process, allowing for high-precision decoding.

 本開示の第15態様に係る復号方法は、第9態様から第14態様のいずれか1つの態様に係る復号方法であって、前記第2予測値を用いた前記1つの頂点の予測復号では、前記第2予測値に丸め処理を行って第4予測値を算出し、前記第4予測値を用いて前記1つの頂点を予測復号する。 A decoding method according to a fifteenth aspect of the present disclosure is a decoding method according to any one of the ninth to fourteenth aspects, wherein in the predictive decoding of the one vertex using the second predicted value, a fourth predicted value is calculated by rounding the second predicted value, and the one vertex is predictively decoded using the fourth predicted value.

 これによれば、丸め処理を適用することで、ビット数削減時の誤差を最小化できる。復号処理において精度の高い予測値を得ることができる。 By applying rounding, errors can be minimized when reducing the number of bits, allowing highly accurate prediction values to be obtained during the decoding process.

 本開示の第16態様に係る復号方法は、第15態様に係る復号方法であって、前記丸め処理では、前記第2予測値を、当該第2予測値が正の数であるか負の数であるかで異なる方向に丸める。 A decoding method according to a sixteenth aspect of the present disclosure is the decoding method according to the fifteenth aspect, wherein the rounding process rounds the second predicted value in a different direction depending on whether the second predicted value is a positive number or a negative number.

 これによれば、予測値が正か負かに応じて丸め処理の方向を調整することで、予測値の精度を向上できる。また、丸め誤差の発生を抑制できる。 This allows the accuracy of the predicted value to be improved by adjusting the direction of the rounding process depending on whether the predicted value is positive or negative. It also reduces the occurrence of rounding errors.

 本開示の第17態様に係る符号化装置は、回路と、前記回路に接続されたメモリと、を備え、前記回路は、動作において、三次元メッシュに含まれる複数の頂点を取得し、前記複数の頂点のうちの1つの頂点を予測符号化し、前記予測符号化では、前記1つの頂点の第1予測値を小数精度で算出し、前記第1予測値の小数部のビット数を削減して第2予測値を算出し、前記第2予測値を用いて前記1つの頂点を予測符号化する。 A coding device according to a seventeenth aspect of the present disclosure includes a circuit and a memory connected to the circuit, and in operation, the circuit acquires multiple vertices included in a three-dimensional mesh and predictively encodes one of the multiple vertices, calculating a first predicted value for the one vertex with decimal precision, reducing the number of bits in the decimal part of the first predicted value to calculate a second predicted value, and predictively encoding the one vertex using the second predicted value.

 これによれば、小数精度で算出された予測値の小数部のビット数を削減することで、演算時の精度を制御しつつ、データ量を削減できる。ビット数の削減によって、符号化の処理量が低減されるため、処理効率を向上できる。 By reducing the number of bits in the decimal part of the predicted value calculated with decimal precision, it is possible to reduce the amount of data while controlling the accuracy during calculation. Reducing the number of bits reduces the amount of encoding processing, thereby improving processing efficiency.

 本開示の第18態様に係る復号装置は、回路と、前記回路に接続されたメモリと、を備え、前記回路は、動作において、三次元メッシュに含まれる複数の頂点を取得し、前記複数の頂点のうちの1つの頂点を予測復号し、前記予測復号では、前記1つの頂点の第1予測値を小数精度で算出し、前記第1予測値の小数部のビット数を削減して第2予測値を算出し、前記第2予測値を用いて前記1つの頂点を予測復号する。 A decoding device according to an eighteenth aspect of the present disclosure includes a circuit and a memory connected to the circuit, and in operation, the circuit acquires multiple vertices included in a three-dimensional mesh and predictively decodes one of the multiple vertices. In the predictive decoding, the circuit calculates a first predicted value for the one vertex with decimal precision, calculates a second predicted value by reducing the number of bits in the decimal part of the first predicted value, and predictively decodes the one vertex using the second predicted value.

 これによれば、小数精度で算出された予測値の小数部のビット数を削減することで、演算時の精度を制御しつつ、データ量を削減できる。ビット数の削減によって、復号の処理量が低減されるため、処理効率を向上できる。 By reducing the number of bits in the decimal part of the predicted value calculated with decimal precision, it is possible to reduce the amount of data while controlling the accuracy during calculation. Reducing the number of bits reduces the amount of decoding processing, thereby improving processing efficiency.

 なお、これらの包括的または具体的な態様は、システム、装置、集積回路、コンピュータプログラムまたはコンピュータ読み取り可能なCD-ROMなどの記録媒体で実現されてもよく、システム、装置、集積回路、コンピュータプログラムまたは記録媒体の任意な組み合わせで実現されてもよい。 Note that these comprehensive or specific aspects may be realized as a system, device, integrated circuit, computer program, or computer-readable recording medium such as a CD-ROM, or as any combination of a system, device, integrated circuit, computer program, or recording medium.

 以下、実施の形態について、図面を参照しながら具体的に説明する。 The following describes the embodiments in detail with reference to the drawings.

 なお、以下で説明する実施の形態は、いずれも包括的または具体的な例を示すものである。以下の実施の形態で示される数値、形状、材料、構成要素、構成要素の配置位置及び接続形態、ステップ、ステップの順序などは、一例であり、本発明を限定する主旨ではない。また、以下の実施の形態に係る構成要素のうち、最上位概念を示す独立請求項に記載されていない構成要素については、任意の構成要素として説明される。 The embodiments described below are all comprehensive or specific examples. The numerical values, shapes, materials, components, component placement and connection configurations, steps, and step order shown in the following embodiments are merely examples and are not intended to limit the present invention. Furthermore, among the components related to the following embodiments, components that are not described in the independent claims that represent the highest concepts are described as optional components.

 (実施の形態)
 本実施の形態において、符号化方法および復号方法等について説明する。
(Embodiment)
In this embodiment, an encoding method, a decoding method, etc. will be described.

 <表現及び用語>
 ここでは、以下のような表現及び用語が用いられる。
<Expressions and terms>
The following expressions and terms are used herein:

 (1)三次元メッシュ
 三次元メッシュは、複数の面の集合であり、例えば、三次元物体を示す。また、三次元メッシュは、主に、頂点情報、接続情報及び属性情報で構成される。三次元メッシュは、ポリゴンメッシュ又はメッシュと表現される場合がある。また、三次元メッシュは、時間的な変化を有していてもよい。三次元メッシュは、頂点情報、接続情報及び属性情報に関するメタデータを含んでいてもよいし、その他の付加情報を含んでいてもよい。
(1) Three-dimensional Mesh A three-dimensional mesh is a collection of multiple faces, and represents, for example, a three-dimensional object. A three-dimensional mesh is mainly composed of vertex information, connectivity information, and attribute information. A three-dimensional mesh may be expressed as a polygon mesh or a mesh. A three-dimensional mesh may also vary over time. A three-dimensional mesh may include metadata related to the vertex information, connectivity information, and attribute information, and may also include other additional information.

 (2)頂点情報
 頂点情報は、頂点(Vertex)を示す情報である。例えば、頂点情報は、三次元空間における頂点の位置を示す。また、頂点は、三次元メッシュを構成する面の頂点に対応する。頂点情報は、「Geometory(ジオメトリ)」と表現される場合がある。また、頂点情報は、位置情報と表現される場合もある。
(2) Vertex Information Vertex information is information indicating a vertex. For example, the vertex information indicates the position of a vertex in a three-dimensional space. Furthermore, a vertex corresponds to a vertex of a face that constitutes a three-dimensional mesh. Vertex information may be expressed as "geometry." Furthermore, vertex information may be expressed as position information.

 (3)接続情報
 接続情報は、頂点間の接続を示す情報である。例えば、接続情報は、三次元メッシュの面又は辺を構成するための接続を示す。接続情報は、「Connectivity(コネクティビティ)」と表現される場合がある。また、接続情報は、面情報と表現される場合もある。
(3) Connection Information Connection information is information that indicates connections between vertices. For example, connection information indicates connections for forming faces or edges of a three-dimensional mesh. Connection information may be expressed as "Connectivity." Connection information may also be expressed as face information.

 (4)属性情報
 属性情報は、頂点又は面の属性を示す情報である。例えば、属性情報は、頂点又は面に対応付けられる色、画像及び法線ベクトル等の属性を示す。属性情報は、「Texture(テクスチャ)」と表現される場合がある。
(4) Attribute Information Attribute information is information that indicates attributes of a vertex or a face. For example, attribute information indicates attributes such as a color, an image, and a normal vector associated with a vertex or a face. Attribute information may be expressed as "texture."

 (5)面
 面は、三次元メッシュを構成する要素である。具体的には、面は、三次元空間における平面上のポリゴンである。例えば、面は、三次元空間における三角形として定められ得る。
(5) Faces A face is an element that makes up a three-dimensional mesh. Specifically, a face is a polygon on a plane in three-dimensional space. For example, a face can be defined as a triangle in three-dimensional space.

 (6)平面
 平面は、三次元空間における二次元平面である。例えば、平面上にポリゴンが形成され、複数の平面上に複数のポリゴンが形成される。
(6) Plane A plane is a two-dimensional plane in a three-dimensional space. For example, a polygon is formed on a plane, and multiple polygons are formed on multiple planes.

 (7)ビットストリーム
 ビットストリームは、符号化された情報に対応する。ビットストリームは、ストリーム、符号化ビットストリーム、圧縮ビットストリーム、又は、符号化信号とも表現され得る。
(7) Bitstream: A bitstream corresponds to coded information. A bitstream may also be referred to as a stream, a coded bitstream, a compressed bitstream, or a coded signal.

 (8)符号化及び復号
 符号化するという表現は、格納する、含める、書き込む、記述する、信号化する、送り出す、通知する、保存する、又は、圧縮する等の表現に置き換えられてもよく、これらの表現が相互に置き換えられてもよい。例えば、情報を符号化することは、ビットストリームに情報を含めることであってもよい。また、情報をビットストリームに符号化することは、情報を符号化して、符号化された情報を含むビットストリームを生成することを意味してもよい。
(8) Encoding and Decoding The term encoding may be substituted with terms such as storing, including, writing, describing, signaling, sending, notifying, saving, or compressing, and these terms may be interchangeable. For example, encoding information may mean including the information in a bitstream. Also, encoding information into a bitstream may mean encoding the information to generate a bitstream that includes the encoded information.

 また、復号するという表現は、読み出す、読み解く、読み取る、読み込む、導出する、取得する、受け取る、抽出する、復元する、再構成する、圧縮解除する、又は、伸張する等の表現に置き換えられてもよく、これらの表現が相互に置き換えられてもよい。例えば、情報を復号することは、ビットストリームから情報を取得することであってもよい。また、ビットストリームから情報を復号することは、ビットストリームを復号して、ビットストリームに含まれる情報を取得することを意味してもよい。 Furthermore, the expression "decode" may be replaced with expressions such as "read out," "interpret," "read," "load," "derive," "obtain," "receive," "extract," "reconstruct," "reconstruct," "decompress," or "decompress," and these expressions may be interchangeable. For example, decoding information may mean obtaining information from a bitstream. Furthermore, decoding information from a bitstream may mean decoding the bitstream to obtain the information contained in the bitstream.

 (9)序数
 説明において、第1及び第2等の序数が、構成要素などに対して付けられる場合がある。これらの序数は、適宜、付け替えられてもよい。また、構成要素などに対して、序数が新たに与えられてもよいし、取り除かれてもよい。また、これらの序数は、要素を識別するため、要素に付けられる場合があり、意味のある順序に対応しない場合がある。
(9) Ordinal Numbers In the description, ordinal numbers such as first and second may be assigned to components, etc. These ordinal numbers may be changed as appropriate. Furthermore, new ordinal numbers may be assigned to components, etc., or removed. Furthermore, these ordinal numbers may be assigned to elements in order to identify them, and may not correspond to a meaningful order.

 <三次元メッシュ>
 図1は、本実施の形態に係る三次元メッシュを示す概念図である。三次元メッシュは、複数の面で構成される。例えば、各面は、三角形である。これらの三角形の頂点は、三次元空間において定められる。そして、三次元メッシュは、三次元物体を示す。各面は、色又は画像を有していてもよい。
<3D mesh>
FIG. 1 is a conceptual diagram showing a three-dimensional mesh according to this embodiment. The three-dimensional mesh is composed of a plurality of faces. For example, each face is a triangle. The vertices of these triangles are defined in three-dimensional space. The three-dimensional mesh then represents a three-dimensional object. Each face may have a color or an image.

 図2は、本実施の形態に係る三次元メッシュの基本要素を示す概念図である。三次元メッシュは、頂点情報、接続情報及び属性情報で構成される。頂点情報は、三次元空間における面の頂点の位置を示す。接続情報は、頂点間の接続を示す。頂点情報及び接続情報によって面が特定され得る。つまり、頂点情報及び接続情報によって、色を有していない三次元物体が三次元空間に形成される。 Figure 2 is a conceptual diagram showing the basic elements of a three-dimensional mesh according to this embodiment. A three-dimensional mesh is composed of vertex information, connection information, and attribute information. Vertex information indicates the positions of the vertices of a face in three-dimensional space. Connection information indicates the connections between vertices. A face can be identified by the vertex information and connection information. In other words, a colorless three-dimensional object is formed in three-dimensional space by the vertex information and connection information.

 属性情報は、頂点に対応付けられていてもよいし、面に対応付けられていてもよい。頂点に対応付けられた属性情報は、「Attribute Per Point」と表現される場合がある。頂点に対応付けられた属性情報は、頂点自体の属性を示していてもよいし、頂点に接続される面の属性を示してもよい。 Attribute information may be associated with a vertex or a face. Attribute information associated with a vertex may be expressed as "Attribute Per Point." Attribute information associated with a vertex may indicate the attributes of the vertex itself, or may indicate the attributes of the face connected to the vertex.

 例えば、頂点に色が属性情報として対応付けられていてもよい。頂点に対応づけられた色は、頂点の色であってもよいし、頂点に接続される面の色であってもよい。面の色は、面の複数の頂点に対応付けられた複数の色の平均であってもよい。また、頂点又は面に法線ベクトルが属性情報として対応付けられていてもよい。このような法線ベクトルは、面の表及び裏を表現し得る。 For example, a color may be associated with a vertex as attribute information. The color associated with a vertex may be the color of the vertex itself, or the color of the face connected to the vertex. The color of a face may be the average of multiple colors associated with multiple vertices of the face. Furthermore, a normal vector may be associated with a vertex or face as attribute information. Such a normal vector can represent the front and back of a face.

 また、面に二次元画像が属性情報として対応付けられていてもよい。面に対応づけられる二次元画像は、テクスチャ画像、又は、「Attribute Map」とも表現される。また、面と二次元画像とのマッピングを示す情報が属性情報として面に対応付けられていてもよい。このようなマッピングを示す情報は、マッピング情報、テクスチャ画像の頂点情報、テクスチャ座標、又は、「Attribute UV Coordinate」と表現される場合がある。 Furthermore, a two-dimensional image may be associated with a surface as attribute information. The two-dimensional image associated with a surface is also referred to as a texture image or an "Attribute Map." Furthermore, information indicating the mapping between the surface and the two-dimensional image may be associated with the surface as attribute information. Information indicating such mapping may be referred to as mapping information, vertex information of the texture image, texture coordinates, or "Attribute UV Coordinate."

 さらに、属性情報として用いられる色、画像及び動画像等の情報は、「Parametric Space」と表現される場合がある。 Furthermore, information such as colors, images, and moving images used as attribute information may be expressed as "Parametric Space."

 このような属性情報によって、三次元物体にテクスチャが反映され得る。すなわち、頂点情報、接続情報及び属性情報によって、色を有する三次元物体が三次元空間に形成される。 This attribute information allows texture to be reflected on the three-dimensional object. In other words, a three-dimensional object with color is formed in three-dimensional space using vertex information, connection information, and attribute information.

 なお、上記において、属性情報は、頂点又は面に対応付けられているが、辺に対応付けられていてもよい。 Note that in the above, attribute information is associated with vertices or faces, but it may also be associated with edges.

 図3は、本実施の形態に係るマッピングを示す概念図である。例えば、三次元空間における三次元メッシュの面に、二次元平面における二次元画像の領域がマッピングされ得る。具体的には、三次元メッシュの面に対して、二次元画像における領域の座標情報が対応付けられる。これにより、三次元メッシュの面に、二次元画像においてマッピングされた領域の画像が反映される。 FIG. 3 is a conceptual diagram showing mapping according to this embodiment. For example, a region of a two-dimensional image on a two-dimensional plane can be mapped onto the surface of a three-dimensional mesh in three-dimensional space. Specifically, coordinate information of the region in the two-dimensional image is associated with the surface of the three-dimensional mesh. As a result, the image of the mapped region in the two-dimensional image is reflected on the surface of the three-dimensional mesh.

 マッピングが用いられることにより、属性情報として用いられる二次元画像が三次元メッシュから分離され得る。例えば、三次元メッシュの符号化において、二次元画像は、画像符号化方式又は映像符号化方式によって、符号化されてもよい。 By using mapping, the two-dimensional image used as attribute information can be separated from the three-dimensional mesh. For example, when encoding the three-dimensional mesh, the two-dimensional image may be encoded using an image encoding method or a video encoding method.

 <システム構成>
 図4は、本実施の形態に係る符号化復号システムの構成例を示すブロック図である。図4において、符号化復号システムは、符号化装置100及び復号装置200を備える。
<System Configuration>
4 is a block diagram showing an example of the configuration of a coding/decoding system according to this embodiment. In FIG. 4, the coding/decoding system includes a coding device 100 and a decoding device 200.

 例えば、符号化装置100は、三次元メッシュを取得し、三次元メッシュをビットストリームに符号化する。そして、符号化装置100は、ビットストリームをネットワーク300に出力する。例えば、ビットストリームには、符号化された三次元メッシュと、符号化された三次元メッシュを復号するための制御情報とが含まれる。三次元メッシュが符号化されることによって、三次元メッシュの情報が圧縮される。 For example, the encoding device 100 acquires 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. For example, the bitstream includes the encoded three-dimensional mesh and control information for decoding the encoded three-dimensional mesh. By encoding the three-dimensional mesh, the information about the three-dimensional mesh is compressed.

 ネットワーク300は、ビットストリームを符号化装置100から復号装置200へ伝送する。ネットワーク300は、インターネット、広域ネットワーク(WAN:Wide Area Network)、小規模ネットワーク(LAN:Local Area Network)、又は、これらの組み合わせであってもよい。ネットワーク300は、必ずしも双方向の通信に限らず、地上デジタル放送又は衛星放送等のための一方向の通信網であってもよい。 Network 300 transmits the bitstream from encoding device 100 to decoding device 200. Network 300 may be the Internet, a wide area network (WAN), a local area network (LAN), or a combination of these. Network 300 is not necessarily limited to two-way communication, and may also be a one-way communication network for terrestrial digital broadcasting, satellite broadcasting, etc.

 また、ネットワーク300は、DVD(Digital Versatile Disc)、又は、BD(Blu-Ray Disc(登録商標))等の記録媒体によって代替され得る。 Furthermore, network 300 can be replaced by a recording medium such as a DVD (Digital Versatile Disc) or a BD (Blu-Ray Disc (registered trademark)).

 復号装置200は、ビットストリームを取得し、ビットストリームから三次元メッシュを復号する。三次元メッシュの復号によって、三次元メッシュの情報は伸張される。例えば、復号装置200は、符号化装置100が三次元メッシュを符号化するための符号化方法に対応する復号方法に従って三次元メッシュを復号する。すなわち、符号化装置100及び復号装置200は、互いに対応する符号化方法及び復号方法に従って、符号化及び復号を行う。 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. In other words, the encoding device 100 and the decoding device 200 perform encoding and decoding according to encoding methods and decoding methods that correspond to each other.

 なお、符号化前の三次元メッシュは、原三次元メッシュとも表現され得る。また、復号後の三次元メッシュは、再構成三次元メッシュとも表現される。 Note that the 3D mesh before encoding can also be referred to as the original 3D mesh. The 3D mesh after decoding can also be referred to as the reconstructed 3D mesh.

 <符号化装置>
 図5は、本実施の形態に係る符号化装置100の構成例を示すブロック図である。例えば、符号化装置100は、頂点情報符号化器101、接続情報符号化器102及び属性情報符号化器103を備える。
<Encoding device>
5 is a block diagram showing an example of the configuration of an encoding device 100 according to this embodiment. For example, the encoding device 100 includes a vertex information encoder 101, a connection information encoder 102, and an attribute information encoder 103.

 頂点情報符号化器101は、頂点情報を符号化する電気回路である。例えば、頂点情報符号化器101は、頂点情報に対して規定された形式に従って頂点情報をビットストリームに符号化する。 The vertex information encoder 101 is an electrical circuit that encodes vertex information. For example, the vertex information encoder 101 encodes the vertex information into a bitstream according to a format specified for the vertex information.

 接続情報符号化器102は、接続情報を符号化する電気回路である。例えば、接続情報符号化器102は、接続情報に対して規定された形式に従って接続情報をビットストリームに符号化する。 The connection information encoder 102 is an electrical circuit that encodes the connection information. For example, the connection information encoder 102 encodes the connection information into a bitstream according to a format specified for the connection information.

 属性情報符号化器103は、属性情報を符号化する電気回路である。例えば、属性情報符号化器103は、属性情報に対して規定された形式に従って属性情報をビットストリームに符号化する。 The attribute information encoder 103 is an electrical circuit that encodes attribute information. For example, the attribute information encoder 103 encodes the attribute information into a bitstream according to a format specified for the attribute information.

 頂点情報、接続情報及び属性情報の符号化には、可変長符号化が用いられてもよいし、固定長符号化が用いられてもよい。可変長符号化は、ハフマン符号化又はコンテキスト適応型二値算術符号化(CABAC)等に対応していてもよい。 Vertex information, connectivity information, and attribute information may be encoded using variable-length coding or fixed-length coding. Variable-length coding may correspond to Huffman coding, context-adaptive binary arithmetic coding (CABAC), or the like.

 頂点情報符号化器101、接続情報符号化器102及び属性情報符号化器103は、一体化されていてもよい。あるいは、頂点情報符号化器101、接続情報符号化器102及び属性情報符号化器103のそれぞれが、より細かく複数の構成要素に細分化されていてもよい。 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 multiple component parts.

 図6は、本実施の形態に係る符号化装置100の別の構成例を示すブロック図である。例えば、符号化装置100は、図5に示された構成に加えて、前処理器104及び後処理器105を備える。 FIG. 6 is a block diagram showing another example configuration of the encoding device 100 according to this embodiment. For example, the encoding device 100 includes a pre-processor 104 and a post-processor 105 in addition to the configuration shown in FIG. 5.

 前処理器104は、頂点情報、接続情報及び属性情報の符号化前に、処理を行う電気回路である。例えば、前処理器104は、符号化前の三次元メッシュに対して、変換処理、分離処理、又は、多重化処理等を行ってもよい。より具体的には、例えば、前処理器104は、符号化前の三次元メッシュから頂点情報、接続情報及び属性情報を分離してもよい。 The preprocessor 104 is an electrical circuit that performs processing on the vertex information, connectivity information, and attribute information before encoding. For example, the preprocessor 104 may perform conversion processing, separation processing, multiplexing processing, etc. on the three-dimensional mesh before encoding. More specifically, for example, the preprocessor 104 may separate the vertex information, connectivity information, and attribute information from the three-dimensional mesh before encoding.

 後処理器105は、頂点情報、接続情報及び属性情報の符号化後に、処理を行う電気回路である。例えば、後処理器105は、符号化後の頂点情報、接続情報及び属性情報に対して、変換処理、分離処理、又は、多重化処理等を行ってもよい。より具体的には、例えば、後処理器105は、符号化後の頂点情報、接続情報及び属性情報をビットストリームに多重化してもよい。また、例えば、後処理器105は、符号化後の頂点情報、接続情報及び属性情報に対して、さらに可変長符号化を行ってもよい。 The post-processor 105 is an electrical circuit that performs processing after the vertex information, connection information, and attribute information are encoded. For example, the post-processor 105 may perform conversion processing, separation processing, multiplexing processing, 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. Furthermore, for example, the post-processor 105 may further perform variable-length coding on the encoded vertex information, connection information, and attribute information.

 <復号装置>
 図7は、本実施の形態に係る復号装置200の構成例を示すブロック図である。例えば、復号装置200は、頂点情報復号器201、接続情報復号器202及び属性情報復号器203を備える。
<Decryption device>
7 is a block diagram showing an example of the configuration of a decoding device 200 according to this embodiment. For example, the decoding device 200 includes a vertex information decoder 201, a connection information decoder 202, and an attribute information decoder 203.

 頂点情報復号器201は、頂点情報を復号する電気回路である。例えば、頂点情報復号器201は、頂点情報に対して規定された形式に従って頂点情報をビットストリームから復号する。 The vertex information decoder 201 is an electrical circuit that decodes vertex information. For example, the vertex information decoder 201 decodes vertex information from the bitstream according to a format specified for the vertex information.

 接続情報復号器202は、接続情報を復号する電気回路である。例えば、接続情報復号器202は、接続情報に対して規定された形式に従って接続情報をビットストリームから復号する。 The connection information decoder 202 is an electrical circuit that decodes the connection information. For example, the connection information decoder 202 decodes the connection information from the bitstream according to a format specified for the connection information.

 属性情報復号器203は、属性情報を復号する電気回路である。例えば、属性情報復号器203は、属性情報に対して規定された形式に従って属性情報をビットストリームから復号する。 The attribute information decoder 203 is an electrical circuit that decodes attribute information. For example, the attribute information decoder 203 decodes attribute information from the bitstream according to a format specified for the attribute information.

 頂点情報、接続情報及び属性情報の復号には、可変長復号が用いられてもよいし、固定長復号が用いられてもよい。可変長復号は、ハフマン符号化又はコンテキスト適応型二値算術符号化(CABAC)等に対応していてもよい。 Vertex information, connectivity information, and attribute information may be decoded using variable-length decoding or fixed-length decoding. Variable-length decoding may be compatible with Huffman coding or context-adaptive binary arithmetic coding (CABAC), etc.

 頂点情報復号器201、接続情報復号器202及び属性情報復号器203は、一体化されていてもよい。あるいは、頂点情報復号器201、接続情報復号器202及び属性情報復号器203のそれぞれが、より細かく複数の構成要素に細分化されていてもよい。 The vertex information decoder 201, connection information decoder 202, and attribute information decoder 203 may be integrated. Alternatively, each of the vertex information decoder 201, connection information decoder 202, and attribute information decoder 203 may be further subdivided into multiple component parts.

 図8は、本実施の形態に係る復号装置200の別の構成例を示すブロック図である。例えば、復号装置200は、図7に示された構成に加えて、前処理器204及び後処理器205を備える。 FIG. 8 is a block diagram showing another example configuration of the decoding device 200 according to this embodiment. For example, the decoding device 200 includes a pre-processor 204 and a post-processor 205 in addition to the configuration shown in FIG. 7.

 前処理器204は、頂点情報、接続情報及び属性情報の復号前に、処理を行う電気回路である。例えば、前処理器204は、頂点情報、接続情報及び属性情報の復号前に、ビットストリームに対して、変換処理、分離処理、又は、多重化処理等を行ってもよい。 The preprocessor 204 is an electrical circuit that performs processing before decoding the vertex information, connection information, and attribute information. For example, the preprocessor 204 may perform conversion processing, separation processing, multiplexing processing, etc. on the bitstream before decoding the vertex information, connection information, and attribute information.

 より具体的には、例えば、前処理器204は、ビットストリームから、頂点情報に対応するサブビットストリーム、接続情報に対応するサブビットストリーム、及び、属性情報に対応するサブビットストリームを分離してもよい。また、例えば、前処理器204は、頂点情報、接続情報及び属性情報の復号前に、事前にビットストリームに対して可変長復号を行ってもよい。 More specifically, for example, the preprocessor 204 may separate from the bitstream a sub-bitstream corresponding to vertex information, a sub-bitstream corresponding to connectivity information, and a sub-bitstream corresponding to attribute information. Also, for example, the preprocessor 204 may perform variable-length decoding on the bitstream in advance before decoding the vertex information, connectivity information, and attribute information.

 後処理器205は、頂点情報、接続情報及び属性情報の復号後に、処理を行う電気回路である。例えば、後処理器205は、復号後の頂点情報、接続情報及び属性情報に対して、変換処理、分離処理、又は、多重化処理等を行ってもよい。より具体的には、例えば、後処理器205は、復号後の頂点情報、接続情報及び属性情報を三次元メッシュに多重化してもよい。 The post-processor 205 is an electrical circuit that performs processing after the vertex information, connection information, and attribute information are decoded. For example, the post-processor 205 may perform conversion processing, separation processing, multiplexing processing, 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 onto a three-dimensional mesh.

 <ビットストリーム>
 頂点情報、接続情報及び属性情報は、符号化されて、ビットストリームに格納される。これらの情報とビットストリームの関係を以下に示す。
<Bitstream>
The vertex information, connection information, and attribute information are coded and stored in a bitstream. The relationship between these pieces of information and the bitstream is shown below.

 図9は、本実施の形態に係るビットストリームの構成例を示す概念図である。この例において、接続情報、頂点情報及び属性情報は、ビットストリームにおいて一体化される。例えば、接続情報、頂点情報及び属性情報は、1つのファイルに含まれていてもよい。 FIG. 9 is a conceptual diagram showing an example of the configuration of a bitstream according to this embodiment. In this example, connection information, vertex information, and attribute information are integrated in the bitstream. For example, connection information, vertex information, and attribute information may be included in a single file.

 また、接続情報の第1部分、頂点情報の第1部分、属性情報の第1部分、接続情報の第2部分、頂点情報の第2部分、属性情報の第2部分、・・・のように、これらの情報の複数の部分が順次格納されてもよい。これらの複数の部分は、時間的に異なる複数の部分に対応していてもよいし、空間的に異なる複数の部分に対応していてもよいし、異なる複数の面に対応していてもよい。 Furthermore, multiple parts of this information may be stored sequentially, such as a first part of connection information, a first part of vertex information, a first part of attribute information, a second part of connection information, a second part of vertex information, a second part of attribute information, etc. These multiple parts may correspond to multiple parts that are different in time, multiple parts that are different in space, or multiple different faces.

 また、接続情報、頂点情報及び属性情報の格納順序は、上記の例に限られず、上記の例とは異なる格納順序が用いられてもよい。 Furthermore, the storage order of connection information, vertex information, and attribute information is not limited to the above example, and a storage order different from the above example may be used.

 図10は、本実施の形態に係るビットストリームの別の構成例を示す概念図である。この例において、複数のファイルがビットストリームに含まれ、接続情報、頂点情報及び属性情報が、それぞれ異なるファイルに格納される。ここでは、接続情報を含むファイルと、頂点情報を含むファイルと、属性情報を含むファイルとが示されているが、格納形式は、このような例に限られない。例えば、接続情報、頂点情報及び属性情報のうち2種類の情報が、1つのファイルに含まれ、残りの1種類の情報が、別のファイルに含まれてもよい。 FIG. 10 is a conceptual diagram showing another example of the configuration of a bitstream according to this embodiment. In this example, multiple files are included in the bitstream, with connection information, vertex information, and attribute information stored in different files. Here, a file containing connection information, a file containing vertex information, and a file containing attribute information are shown, but the storage format is not limited to this example. For example, two types of information out of connection information, vertex information, and attribute information may be included in one file, and the remaining type of information may be included in another file.

 あるいは、これらの情報は、より多くのファイルに分割して格納されてもよい。例えば、接続情報の複数の部分が複数のファイルに格納されてもよいし、頂点情報の複数の部分が複数のファイルに格納されてもよいし、属性情報の複数の部分が複数のファイルに格納されてもよい。これらの複数の部分は、時間的に異なる複数の部分に対応していてもよいし、空間的に異なる複数の部分に対応していてもよいし、異なる複数の面に対応していてもよい。 Alternatively, this information may be split and stored in more files. For example, multiple parts of the connection information may be stored in multiple files, multiple parts of the vertex information may be stored in multiple files, or multiple parts of the attribute information may be stored in multiple files. These multiple parts may correspond to multiple parts that are different in time, multiple parts that are different in space, or multiple different faces.

 また、接続情報、頂点情報及び属性情報の格納順序は、上記の例に限られず、上記の例とは異なる格納順序が用いられてもよい。 Furthermore, the storage order of connection information, vertex information, and attribute information is not limited to the above example, and a storage order different from the above example may be used.

 図11は、本実施の形態に係るビットストリームの別の構成例を示す概念図である。この例において、分離可能な複数のサブビットストリームによってビットストリームが構成され、接続情報、頂点情報及び属性情報が、それぞれ異なるサブビットストリームに格納される。 FIG. 11 is a conceptual diagram showing another example of the configuration of a bitstream according to this embodiment. In this example, the bitstream is composed of multiple separable sub-bitstreams, and connection information, vertex information, and attribute information are each stored in different sub-bitstreams.

 ここでは、接続情報を含むサブビットストリームと、頂点情報を含むサブビットストリームと、属性情報を含むサブビットストリームとが示されているが、格納形式は、このような例に限られない。 Here, a sub-bitstream containing connection information, a sub-bitstream containing vertex information, and a sub-bitstream containing attribute information are shown, but the storage format is not limited to this example.

 例えば、接続情報、頂点情報及び属性情報のうち2種類の情報が、1つのサブビットストリームに含まれ、残りの1種類の情報が、別のサブビットストリームに含まれてもよい。具体的には、二次元画像等の属性情報が、接続情報及び頂点情報のサブビットストリームとは別に、画像符号化方式に準拠するサブビットストリームに格納されてもよい。 For example, two types of information out of connection information, vertex information, and attribute information may be included in one sub-bitstream, and the remaining type of information may be included in another sub-bitstream. Specifically, attribute information for a two-dimensional image, etc., may be stored in a sub-bitstream that complies with an image coding method, separate from the sub-bitstreams for connection information and vertex information.

 また、各サブビットストリームに複数のファイルが含まれていてもよい。そして、接続情報の複数の部分が複数のファイルに格納されてもよいし、頂点情報の複数の部分が複数のファイルに格納されてもよいし、属性情報の複数の部分が複数のファイルに格納されてもよい。 Furthermore, each sub-bitstream may contain multiple files. Multiple pieces of connection information may be stored in multiple files, multiple pieces of vertex information may be stored in multiple files, or multiple pieces of attribute information may be stored in multiple files.

 また、接続情報、頂点情報及び属性情報の格納順序は、図9、図10及び図11の例に限られず、上記の例とは異なる格納順序が用いられてもよい。例えば、頂点情報、接続情報及び属性情報の順にこれらがビットストリームに格納されていてもよい。あるいは、それ以外の例えば、接続情報、属性情報及び頂点情報の順、頂点情報、属性情報及び接続情報の順、属性情報、接続情報及び頂点情報の順、及び、属性情報、頂点情報及び接続情報の順のいずれかの順でこれらがビットストリームに格納されてもよい。 Furthermore, the storage order of the connection information, vertex information, and attribute information is not limited to the examples in Figures 9, 10, and 11, and a storage order different from the above examples may be used. For example, the vertex information, connection information, and attribute information may be stored in the bitstream in this order. Alternatively, the bitstream may be stored in any of the following orders: connection information, attribute information, and vertex information; vertex information, attribute information, and connection information; attribute information, connection information, and vertex information; or attribute information, vertex information, and connection information.

 また、接続情報、頂点情報及び属性情報のそれぞれが複数のデータに分割され、当該複数のデータがビットストリーム内に周期的な順又はランダムな順で格納されていてもよい。 Furthermore, each of the connection information, vertex information, and attribute information may be divided into multiple pieces of data, and the multiple pieces of data may be stored in a cyclical or random order within the bitstream.

 <具体例>
 図12は、本実施の形態に係る符号化復号システムの具体例を示すブロック図である。図12において、符号化復号システムは、三次元データ符号化システム110、三次元データ復号システム210及び外部接続器310を備える。
<Specific examples>
12 is a block diagram showing a specific example of an encoding/decoding system according to this embodiment. In FIG. 12, the encoding/decoding system includes a three-dimensional data encoding system 110, a three-dimensional data decoding system 210, and an external connector 310.

 三次元データ符号化システム110は、制御器111、入出力処理器112、三次元データ符号化器113、三次元データ生成器115、及び、システム多重化器114を備える。三次元データ復号システム210は、制御器211、入出力処理器212、三次元データ復号器213、システム逆多重化器214、提示器215、及び、ユーザインタフェース216を備える。 The three-dimensional data encoding system 110 comprises 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 comprises 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.

 三次元データ符号化システム110では、センサ端末から三次元データ生成器115にセンサデータが入力される。三次元データ生成器115は、センサデータから、点群データ又はメッシュデータ等である三次元データを生成し、三次元データ符号化器113へ入力する。 In the three-dimensional data encoding system 110, 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 cloud data or mesh data, from the sensor data and inputs it to the three-dimensional data encoder 113.

 例えば、三次元データ生成器115は、頂点情報を生成し、頂点情報に対応する接続情報及び属性情報を生成する。三次元データ生成器115は、接続情報及び属性情報を生成する際に、頂点情報を加工してもよい。例えば、三次元データ生成器115は、重複する頂点を削除することでデータ量を減らしたり、頂点情報の変換(位置シフト、回転又は正規化など)を行ったりしてもよい。また、三次元データ生成器115は、属性情報をレンダリングしてもよい。 For example, the three-dimensional data generator 115 generates vertex information, and generates connection information and attribute information corresponding to the vertex information. The three-dimensional data generator 115 may process the vertex information when generating the connection information and attribute information. For example, the three-dimensional data generator 115 may reduce the amount of data by deleting duplicate vertices, or may transform the vertex information (such as by shifting its position, rotating it, or normalizing it). The three-dimensional data generator 115 may also render the attribute information.

 また、三次元データ生成器115は、図12において三次元データ符号化システム110の構成要素であるが、三次元データ符号化システム110から独立して外部に配置されてもよい。 Furthermore, although the three-dimensional data generator 115 is a component of the three-dimensional data encoding system 110 in FIG. 12, it may also be located externally and independently of the three-dimensional data encoding system 110.

 三次元データを生成するためのセンサデータを提供するセンサ端末は、例えば、自動車などの移動体、飛行機などの飛行物体、携帯端末、又は、カメラ等であってもよい。また、LIDAR、ミリ波レーダ、赤外線センサ又はレンジファインダなどの距離センサ、ステレオカメラ、あるいは、複数の単眼カメラの組み合わせ等がセンサ端末として用いられてもよい。 The sensor terminal that provides the sensor data for generating the three-dimensional data may be, for example, a moving object such as an automobile, a flying object such as an airplane, a mobile terminal, or a camera. Furthermore, distance sensors such as LIDAR, millimeter-wave radar, infrared sensors, or range finders, stereo cameras, or combinations of multiple monocular cameras may also be used as sensor terminals.

 センサデータは、対象物の距離(位置)、単眼カメラ画像、ステレオカメラ画像、色、反射率、センサの姿勢、向き、ジャイロ、センシング位置(GPS情報又は高度)、速度、加速度、センシング時刻、気温、気圧、湿度、又は、磁気などであってもよい。 Sensor data may include the distance (position) of the object, monocular camera images, stereo camera images, color, reflectance, sensor attitude, orientation, gyro, sensing position (GPS information or altitude), speed, acceleration, sensing time, temperature, air pressure, humidity, or magnetism.

 三次元データ符号化器113は、図5等に示された符号化装置100に対応する。例えば、三次元データ符号化器113は、三次元データを符号化し、符号化データを生成する。また、三次元データ符号化器113は、三次元データの符号化において、制御情報を生成する。そして、三次元データ符号化器113は、符号化データを制御情報と共にシステム多重化器114へ入力する。 The three-dimensional data encoder 113 corresponds to the encoding device 100 shown in FIG. 5, etc. For example, the three-dimensional data encoder 113 encodes three-dimensional data to generate encoded data. The three-dimensional data encoder 113 also generates control information when encoding the three-dimensional data. The three-dimensional data encoder 113 then inputs the encoded data together with the control information to the system multiplexer 114.

 三次元データの符号化方式は、ジオメトリを用いる符号化方式であってもよいし、ビデオコーデックを用いる符号化方式であってもよい。ここでは、ジオメトリを用いる符号化方式は、ジオメトリベース符号化方式とも表現され得る。ビデオコーデックを用いる符号化方式は、ビデオベース符号化方式とも表現される。 The encoding method for three-dimensional data may be an encoding method that uses geometry, or an encoding method that uses a video codec. Here, an encoding method that uses geometry may also be referred to as a geometry-based encoding method. An encoding method that uses a video codec may also be referred to as a video-based encoding method.

 システム多重化器114は、三次元データ符号化器113から入力された符号化データ及び制御情報を多重化し、規定の多重化方式を用いて多重化データを生成する。システム多重化器114は、三次元データの符号化データ及び制御情報と共に、映像、音声、字幕、アプリケーションデータ又はドキュメントファイルなどの他のメディア、あるいは、基準時刻情報等を多重化してもよい。さらに、システム多重化器114は、センサデータ又は三次元データに関連する属性情報を多重化してもよい。 The system multiplexer 114 multiplexes the coded data and control information input from the three-dimensional data encoder 113, generating multiplexed data using a specified multiplexing method. Along with the coded data and control information for the three-dimensional data, the system multiplexer 114 may also multiplex other media such as video, audio, subtitles, application data, or document files, or reference time information. Furthermore, the system multiplexer 114 may also multiplex attribute information related to the sensor data or three-dimensional data.

 例えば、多重化データは、蓄積のためのファイル形式、又は、伝送のためのパケット形式等を有する。これらの方式として、ISOBMFF、又は、ISOBMFFベースの方式が用いられてもよい。また、MPEG-DASH、MMT、MPEG-2 TS Systems、又は、RTPなどが用いられてもよい。 For example, the multiplexed data may have a file format for storage or a packet format for transmission. These formats may include ISOBMFF or an ISOBMFF-based format. Also, MPEG-DASH, MMT, MPEG-2 TS Systems, RTP, or the like may be used.

 そして、多重化データは、入出力処理器112によって外部接続器310へ伝送信号として出力される。多重化データは、伝送信号として、有線によって伝送されてもよいし、無線によって伝送されてもよい。あるいは、多重化データは、内部メモリ又は記憶装置に蓄積される。多重化データは、インターネット経由でクラウドサーバに伝送されてもよいし、外部記憶装置に記憶されてもよい。 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 via a wired connection or wirelessly. Alternatively, the multiplexed data may be stored in internal memory or a storage device. The multiplexed data may be transmitted to a cloud server via the Internet, or may be stored in an external storage device.

 例えば、多重化データの伝送又は蓄積は、放送又は通信など、伝送又は蓄積のための媒体に応じた方法で行われる。通信プロトコルとして、http、ftp、TCP、UDP、IP、又は、これらの組み合わせなどが用いられてもよい。また、PULL型の通信方式が用いられてもよいし、PUSH型の通信方式を用いられてもよい。 For example, the transmission or storage of multiplexed data is performed using a method appropriate to the medium for transmission or storage, such as broadcasting or communication. The communication protocol may be http, ftp, TCP, UDP, IP, or a combination of these. Furthermore, a pull-type communication method or a push-type communication method may be used.

 有線の伝送に、Ethernet(登録商標)、USB、RS-232C、HDMI(登録商標)又は同軸ケーブルなどが用いられてもよい。また、無線の伝送に、3GPP(登録商標)、IEEEで規定される3G/4G/5G、無線LAN、Wi-Fi、Bluetooth、又は、ミリ波が用いられてもよい。また、放送の方式として、例えばDVB-T2、DVB-S2、DVB-C2、ATSC3.0、又は、ISDB-S3などが用いられてもよい。 For wired transmission, Ethernet (registered trademark), USB, RS-232C, HDMI (registered trademark), or coaxial cable may be used. For wireless transmission, 3GPP (registered trademark), 3G/4G/5G as defined by IEEE, wireless LAN, Wi-Fi, Bluetooth, or millimeter waves may be used. For broadcasting, DVB-T2, DVB-S2, DVB-C2, ATSC3.0, or ISDB-S3 may be used, for example.

 なお、センサデータが、三次元データ生成器115又はシステム多重化器114へ入力されてもよい。また、三次元データ又は符号化データが、入出力処理器112を介して外部接続器310へそのまま伝送信号として出力されてもよい。三次元データ符号化システム110から出力された伝送信号は、外部接続器310を介して、三次元データ復号システム210に入力される。 In addition, the sensor data may be input to the three-dimensional data generator 115 or the system multiplexer 114. Also, the three-dimensional data or encoded data may be output directly as a transmission signal to the external connector 310 via the input/output processor 112. The transmission signal output from the three-dimensional data encoding system 110 is input to the three-dimensional data decoding system 210 via the external connector 310.

 また、三次元データ符号化システム110の各動作は、アプリケーションプログラムを実行する制御器111によって制御されてもよい。 Furthermore, each operation of the three-dimensional data encoding system 110 may be controlled by a controller 111 that executes an application program.

 三次元データ復号システム210では、入出力処理器212に伝送信号が入力される。入出力処理器212は、伝送信号から、ファイル形式又はパケット形式を有する多重化データを復号し、多重化データをシステム逆多重化器214へ入力する。システム逆多重化器214は、多重化データから符号化データ及び制御情報を取得し、三次元データ復号器213へ入力する。システム逆多重化器214は、多重化データから他のメディア又は基準時刻情報などを抽出してもよい。 In the three-dimensional data decoding system 210, a transmission signal is input to the input/output processor 212. The input/output processor 212 decodes multiplexed data in file format or packet format from the transmission signal and inputs the multiplexed data to the system demultiplexer 214. The system demultiplexer 214 obtains coded data and control information from the multiplexed data and inputs them to the three-dimensional data decoder 213. The system demultiplexer 214 may also extract other media or reference time information from the multiplexed data.

 三次元データ復号器213は、図7等に示された復号装置200に対応する。例えば、三次元データ復号器213は、符号化データから、予め規定された符号化方式に基づいて三次元データを復号する。その後、三次元データは、提示器215によってユーザに提示される。 The three-dimensional data decoder 213 corresponds to the decoding device 200 shown in FIG. 7, etc. For example, the three-dimensional data decoder 213 decodes three-dimensional data from the encoded data based on a predefined encoding method. The three-dimensional data is then presented to the user by the presenter 215.

 また、センサデータなどの付加情報が提示器215へ入力されてもよい。提示器215は、付加情報に基づいて三次元データを提示してもよい。また、ユーザ端末からユーザインタフェース216へユーザの指示が入力されてもよい。そして、提示器215は、入力された指示に基づいて三次元データを提示してもよい。 Furthermore, additional information such as sensor data may be input to the presenter 215. The presenter 215 may present three-dimensional data based on the additional information. Furthermore, user instructions may be input from a user terminal to the user interface 216. The presenter 215 may then present three-dimensional data based on the input instructions.

 なお、入出力処理器212は、外部接続器310から三次元データ及び符号化データを取得してもよい。 In addition, the input/output processor 212 may obtain three-dimensional data and encoded data from the external connector 310.

 また、三次元データ復号システム210の各動作は、アプリケーションプログラムを実行する制御器211によって制御されてもよい。 Furthermore, each operation of the three-dimensional data decoding system 210 may be controlled by a controller 211 that executes an application program.

 図13は、本実施の形態に係る点群データの構成例を示す概念図である。点群データは、三次元物体を示す点群のデータである。 FIG. 13 is a conceptual diagram showing an example of the configuration of point cloud data according to this embodiment. The point cloud data is data of a group of points representing a three-dimensional object.

 具体的には、点群(Point Cloud)は、複数の点で構成され、各点の三次元座標位置(Position)を示す位置情報、及び、各点の属性(Attribute)を示す属性情報を有する。位置情報は、ジオメトリ(Geometry)とも表現される。 Specifically, a point cloud is made up of multiple points, and has position information indicating the three-dimensional coordinate position of each point, and attribute information indicating the attributes of each point. Position information is also expressed as geometry.

 属性情報の種別は、例えば色又は反射率などであってもよい。1つの点に、1つの種別に関する属性情報に対応付けられていてもよいし、1つの点に、複数の異なる種別に関する属性情報に対応付けられていてもよいし、1つの点に、同じ種別に関して複数の値を有する属性情報に対応付けられていてもよい。 The type of attribute information may be, for example, color or reflectance. A single point may be associated with attribute information of a single type, or a single point may be associated with attribute information of multiple different types, or a single point may be associated with attribute information having multiple values for the same type.

 図14は、本実施の形態に係る点群データのデータファイル例を示す概念図である。この例では、位置情報の項目と属性情報の項目とが1対1に対応する場合の例であり、点群データを構成するN個の点の位置情報及び属性情報を示している。この例において、位置情報は、x、y及びzの3軸で三次元座標位置を示す情報であり、属性情報は、RGBで色を示す情報である。点群データの代表的なデータファイルとして、PLYファイルなどが用いられ得る。 FIG. 14 is a conceptual diagram showing an example data file of point cloud data according to this embodiment. In this example, there is a one-to-one correspondence between location information items and attribute information items, and the location information and attribute information of N points that make up the point cloud data are shown. In this example, the location information is information that indicates a three-dimensional coordinate position using the three axes x, y, and z, and the attribute information is information that indicates a color using RGB. A PLY file or the like can be used as a typical data file for point cloud data.

 図15は、本実施の形態に係るメッシュデータの構成例を示す概念図である。メッシュデータは、CG(Computer Graphics)等に用いられるデータであって、複数の面で対象物の三次元形状を示す三次元メッシュのデータである。各面は、ポリゴンとも表現され、三角形又は四角形などの多角形の形状を有する。 FIG. 15 is a conceptual diagram showing an example of the configuration of mesh data according to this embodiment. Mesh data is data used in CG (Computer Graphics) and the like, and is three-dimensional mesh data that shows the three-dimensional shape of an object using multiple surfaces. Each surface is also expressed as a polygon, and has a polygonal shape such as a triangle or a rectangle.

 具体的には、三次元メッシュは、点群を構成する複数の点に加えて、複数の辺(Edge)、及び、複数の面(Face)で構成される。各点は、頂点(Vertex)又は位置(Position)とも表現される。各辺は、2つの頂点で結ばれた線分に対応する。各面は、3つ以上の辺で囲まれた領域に対応する。 Specifically, a 3D mesh is made up of multiple points that make up a point cloud, as well as multiple edges and faces. Each point is also expressed as a vertex or position. Each edge corresponds to a line segment connected by two vertices. Each face corresponds to an area surrounded by three or more edges.

 また、三次元メッシュは、頂点の三次元座標位置を示す位置情報を有する。位置情報は、頂点情報又はジオメトリ(Geometory)とも表現される。また、三次元メッシュは、辺又は面を構成する複数の頂点の関係性を示す接続情報を有する。接続情報は、接続性(Connectivity)とも表現される。また、三次元メッシュは、頂点、辺又は面に対する属性を示す属性情報を有する。三次元メッシュにおける属性情報は、テクスチャ(Texture)とも表現される。 A three-dimensional mesh also has position information that indicates the three-dimensional coordinate positions of its vertices. This position information is also expressed as vertex information or geometry. A three-dimensional mesh also has connection information that indicates the relationship between the multiple vertices that make up an edge or face. This connection information is also expressed as connectivity. A three-dimensional mesh also has attribute information that indicates the attributes of the vertices, edges, or faces. The attribute information in a three-dimensional mesh is also expressed as texture.

 例えば、属性情報は、頂点、辺又は面に対する色、反射率又は法線ベクトルを示してもよい。法線ベクトルの向きは、面の表及び裏を表現し得る。 For example, attribute information may indicate the color, reflectance, or normal vector for a vertex, edge, or face. The direction of the normal vector may represent the front and back of the face.

 メッシュデータのデータファイル形式として、オブジェクトファイル等が用いられてもよい。 An object file or similar format may be used as the data file format for mesh data.

 図16は、本実施の形態に係るメッシュデータのデータファイル例を示す概念図である。この例において、データファイルには、三次元メッシュを構成するN個の頂点の位置情報G(1)~G(N)、及び、N個の頂点の属性情報A1(1)~A1(N)が含まれる。また、この例において、M個の属性情報A2(1)~A2(M)が含まれる。属性情報の項目は、頂点に1対1に対応していなくてもよいし、面に1対1に対応していなくてもよい。また、属性情報は、存在しなくてもよい。 FIG. 16 is a conceptual diagram showing an example data file of mesh data according to this embodiment. In this example, the data file contains position information G(1) to G(N) for the N vertices that make up the three-dimensional mesh, and attribute information A1(1) to A1(N) for the N vertices. In this example, M pieces of attribute information A2(1) to A2(M) are also included. The attribute information items do not have to correspond one-to-one to vertices or faces. In addition, attribute information does not have to exist.

 接続情報は、頂点のインデックスの組み合わせで示される。n[1、3、4]は、n=1、n=3、及び、n=4の3つの頂点で構成される三角形の面を示す。また、m[2、4、6]は、3つの頂点に対してm=2、m=4、m=6の属性情報がそれぞれ対応することを示す。 Connectivity information is indicated by a combination of vertex indices. n[1, 3, 4] indicates a triangular face made up of three vertices, n=1, n=3, and n=4. Also, m[2, 4, 6] indicates that the attribute information for m=2, m=4, and m=6 corresponds to the three vertices, respectively.

 また、属性情報の実質的な内容が、別のファイルに記載されてもよい。そして、その内容に対するポインタが、頂点又は面等に対応付けられていてもよい。例えば、面に対する画像を示す属性情報が、二次元の属性マップ(Attribute Map)ファイルに格納されてもよい。そして、属性マップのファイル名、及び、属性マップにおける二次元座標値が、属性情報A2(1)~A2(M)に記載されてもよい。面に対して属性情報を指定する方法は、これらの方法に限られず、どのような方法が用いられてもよい。 Furthermore, the actual contents of the attribute information may be recorded in a separate file. A pointer to that content may then be associated with a vertex, face, or the like. For example, attribute information indicating an image for a face may be stored in a two-dimensional attribute map file. The file name of the attribute map and the two-dimensional coordinate values in the attribute map may then be recorded in attribute information A2(1) to A2(M). The method of specifying attribute information for a face is not limited to these methods, and any method may be used.

 図17は、本実施の形態に係る三次元データの種類を示す概念図である。点群データ及びメッシュデータは、静的オブジェクトを示してもよいし、動的オブジェクトを示してもよい。静的オブジェクトは、時間的に変化しないオブジェクトであり、動的オブジェクトは、時間的に変化するオブジェクトである。静的オブジェクトは、任意の時点に対する三次元データに対応していてもよい。 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 objects or dynamic objects. A static object is an object that does not change over time, and a dynamic object is an object that changes over time. A static object may correspond to three-dimensional data for any point in time.

 例えば、任意の時点に対する点群データは、PCCフレームと表現される場合がある。また、任意の時点に対するメッシュデータは、メッシュフレームと表現される場合がある。さらに、PCCフレーム及びメッシュフレームは、単にフレームと表現される場合がある。 For example, point cloud data for a given point in time may be expressed as a PCC frame. Mesh data for a given point in time may be expressed as a mesh frame. Furthermore, PCC frames and mesh frames may be simply expressed as frames.

 また、オブジェクトの領域は、通常の映像データのように、一定の範囲に制限されていてもよいし、地図データのように、制限されていなくてもよい。また、点又は面の密度は様々に定められ得る。疎な点群データ又は疎なメッシュデータが用いられてもよいし、密な点群データ又は密なメッシュデータが用いられてもよい。 Furthermore, the area of the object may be limited to a certain range, as in normal video data, or it may not be limited, as in map data. The density of points or surfaces may be defined 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.

 次に、点群又は三次元メッシュの符号化及び復号について説明する。本開示における三次元メッシュの頂点情報の符号化及び復号のための装置、処理又はシンタックスが、点群の符号化及び復号に適用されてもよい。本開示における点群の符号化及び復号のための装置、処理又はシンタックスが、三次元メッシュの頂点情報の符号化及び復号に適用されてもよい。 Next, the encoding and decoding of point clouds or three-dimensional meshes will be described. The device, process, or syntax for encoding and decoding vertex information of three-dimensional meshes in this disclosure may be applied to the encoding and decoding of point clouds. The device, process, or syntax for encoding and decoding vertex information of three-dimensional meshes in this disclosure may be applied to the encoding and decoding of point clouds.

 また、本開示における点群の属性情報の符号化及び復号のための装置、処理又はシンタックスが、三次元メッシュの接続情報又は属性情報の符号化及び復号に適用されてもよい。また、本開示における三次元メッシュの接続情報又は属性情報の符号化及び復号のための装置、処理又はシンタックスが、点群の属性情報の符号化及び復号に適用されてもよい。 Furthermore, the device, process, or syntax for encoding and decoding attribute information of point clouds in the present disclosure may be applied to encoding and decoding connectivity information or attribute information of three-dimensional meshes.Furthermore, the device, process, or syntax for encoding and decoding connectivity information or attribute information of three-dimensional meshes in the present disclosure may be applied to encoding and decoding attribute information of point clouds.

 さらに、点群データの符号化及び復号と、メッシュデータの符号化及び復号とで、少なくとも一部の処理が共通化されてもよい。これにより、回路及びソフトウェアプログラムの規模が抑制され得る。 Furthermore, at least some of the processing may be shared between the encoding and decoding of point cloud data and the encoding and decoding of mesh data. This can reduce the scale of the circuit and software program.

 図18は、本実施の形態に係る三次元データ符号化器113の構成例を示すブロック図である。この例において、三次元データ符号化器113は、頂点情報符号化器121、属性情報符号化器122、メタデータ符号化器123及び多重化器124を備える。頂点情報符号化器121、属性情報符号化器122及び多重化器124は、図6の頂点情報符号化器101、属性情報符号化器103及び後処理器105等に対応していてもよい。 FIG. 18 is a block diagram showing an example configuration of a three-dimensional data encoder 113 according to this embodiment. In this example, the three-dimensional data encoder 113 includes a vertex information encoder 121, an attribute information encoder 122, a metadata encoder 123, and a multiplexer 124. The vertex information encoder 121, the attribute information encoder 122, and the multiplexer 124 may correspond to the vertex information encoder 101, the attribute information encoder 103, and the post-processor 105 in FIG. 6, etc.

 また、この例において、三次元データ符号化器113は、ジオメトリベース符号化方式に従って、三次元データを符号化する。ジオメトリベース符号化方式に従う符号化では、三次元構造が考慮される。また、ジオメトリベース符号化方式に従う符号化では、頂点情報の符号化において得られる構成情報を用いて属性情報が符号化される。 Also, in this example, the three-dimensional data encoder 113 encodes the three-dimensional data according to a geometry-based encoding method. Encoding according to the geometry-based encoding method takes into account the three-dimensional structure. Also, encoding according to the geometry-based encoding method encodes attribute information using configuration information obtained in encoding the vertex information.

 具体的には、まず、センサデータから生成された三次元データに含まれる頂点情報、属性情報及びメタデータが、頂点情報符号化器121、属性情報符号化器122及びメタデータ符号化器123にそれぞれ入力される。ここで、三次元データに含まれる接続情報は、属性情報と同様に扱われてもよい。また、点群データの場合、位置情報が頂点情報として扱われてもよい。 Specifically, first, the vertex information, attribute information, and metadata contained in the three-dimensional data generated from sensor data are input to a vertex information encoder 121, an attribute information encoder 122, and a metadata encoder 123, respectively. Here, the connectivity information contained 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.

 頂点情報符号化器121は、頂点情報を圧縮頂点情報に符号化して、圧縮頂点情報を符号化データとして多重化器124に出力する。また、頂点情報符号化器121は、圧縮頂点情報のメタデータを生成して多重化器124に出力する。また、頂点情報符号化器121は、構成情報を生成して属性情報符号化器122に出力する。 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. The vertex information encoder 121 also generates metadata for the compressed vertex information and outputs it to the multiplexer 124. The vertex information encoder 121 also generates configuration information and outputs it to the attribute information encoder 122.

 属性情報符号化器122は、頂点情報符号化器121で生成された構成情報を用いて、属性情報を圧縮属性情報に符号化して、圧縮属性情報を符号化データとして多重化器124に出力する。また、属性情報符号化器122は、圧縮属性情報のメタデータを生成して多重化器124に出力する。 The attribute information encoder 122 uses the configuration information generated by the vertex information encoder 121 to encode the attribute information into compressed attribute information and outputs the compressed attribute information as encoded data to the multiplexer 124. The attribute information encoder 122 also generates metadata for the compressed attribute information and outputs it to the multiplexer 124.

 メタデータ符号化器123は、圧縮可能なメタデータを圧縮メタデータに符号化して、圧縮メタデータを符号化データとして多重化器124に出力する。メタデータ符号化器123で符号化されるメタデータは、頂点情報の符号化、及び、属性情報の符号化に用いられてもよい。 The metadata encoder 123 encodes compressible 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 to encode vertex information and attribute information.

 多重化器124は、圧縮頂点情報、圧縮頂点情報のメタデータ、圧縮属性情報、圧縮属性情報のメタデータ、及び、圧縮メタデータをビットストリームに多重化する。そして、多重化器124は、ビットストリームをシステムレイヤに入力する。 The multiplexer 124 multiplexes the compressed vertex information, compressed vertex information metadata, compressed attribute information, compressed attribute information metadata, and compressed metadata into a bitstream. The multiplexer 124 then inputs the bitstream to the system layer.

 図19は、本実施の形態に係る三次元データ復号器213の構成例を示すブロック図である。この例において、三次元データ復号器213は、頂点情報復号器221、属性情報復号器222、メタデータ復号器223及び逆多重化器224を備える。頂点情報復号器221、属性情報復号器222及び逆多重化器224は、図8の頂点情報復号器201、属性情報復号器203及び前処理器204等に対応していてもよい。 FIG. 19 is a block diagram showing an example configuration of a three-dimensional data decoder 213 according to this embodiment. In this example, the three-dimensional data decoder 213 includes a vertex information decoder 221, an attribute information decoder 222, a metadata decoder 223, and a demultiplexer 224. The vertex information decoder 221, the attribute information decoder 222, and the demultiplexer 224 may correspond to the vertex information decoder 201, the attribute information decoder 203, and the preprocessor 204 in FIG. 8, etc.

 また、この例において、三次元データ復号器213は、ジオメトリベース符号化方式に従って、三次元データを復号する。ジオメトリベース符号化方式に従う復号では、三次元構造が考慮される。また、ジオメトリベース符号化方式に従う復号では、頂点情報の復号において得られる構成情報を用いて属性情報が復号される。 Also, in this example, the three-dimensional data decoder 213 decodes three-dimensional data according to a geometry-based encoding method. Decoding according to a geometry-based encoding method takes into account three-dimensional structures. Also, decoding according to a geometry-based encoding method decodes attribute information using configuration information obtained in decoding vertex information.

 具体的には、まず、ビットストリームが、システムレイヤから逆多重化器224に入力される。逆多重化器224は、ビットストリームから、圧縮頂点情報、圧縮頂点情報のメタデータ、圧縮属性情報、圧縮属性情報のメタデータ、及び、圧縮メタデータを分離する。圧縮頂点情報、及び、圧縮頂点情報のメタデータは、頂点情報復号器221に入力される。圧縮属性情報、及び、圧縮属性情報のメタデータは、属性情報復号器222に入力される。メタデータは、メタデータ復号器223に入力される。 Specifically, first, a bitstream is input from the system layer to the demultiplexer 224. The demultiplexer 224 separates compressed vertex information, compressed vertex information metadata, compressed attribute information, compressed attribute information metadata, and compressed metadata from the bitstream. The compressed vertex information and compressed vertex information metadata are input to the vertex information decoder 221. The compressed attribute information and compressed attribute information metadata are input to the attribute information decoder 222. The metadata is input to the metadata decoder 223.

 頂点情報復号器221は、圧縮頂点情報のメタデータを用いて、圧縮頂点情報から頂点情報を復号する。また、頂点情報復号器221は、構成情報を生成して属性情報復号器222に出力する。属性情報復号器222は、頂点情報復号器221で生成された構成情報、及び、圧縮属性情報のメタデータを用いて、圧縮属性情報から属性情報を復号する。メタデータ復号器223は、圧縮メタデータからメタデータを復号する。メタデータ復号器223で復号されたメタデータは、頂点情報の復号、及び、属性情報の復号に用いられてもよい。 The vertex information decoder 221 decodes vertex information from the compressed vertex information using the metadata of the compressed vertex information. The vertex information decoder 221 also generates configuration information and outputs it to the attribute information decoder 222. The attribute information decoder 222 decodes attribute information from the compressed attribute information using the configuration information generated by the vertex information decoder 221 and the metadata of the compressed attribute information. The metadata decoder 223 decodes metadata from the compressed metadata. The metadata decoded by the metadata decoder 223 may be used to decode the vertex information and the attribute information.

 その後、頂点情報、属性情報、及び、メタデータが三次元データとして三次元データ復号器213から出力される。なお、例えば、このメタデータは、頂点情報及び属性情報のメタデータであって、アプリケーションプログラムにおいて用いられ得る。 Then, the vertex information, attribute information, and metadata are output from the 3D data decoder 213 as 3D data. Note that this metadata is, for example, metadata about the vertex information and attribute information, and can be used in an application program.

 図20は、本実施の形態に係る三次元データ符号化器113の別の構成例を示すブロック図である。この例において、三次元データ符号化器113は、頂点画像生成器131、属性画像生成器132、メタデータ生成器133、映像符号化器134、メタデータ符号化器123及び多重化器124を備える。頂点画像生成器131、属性画像生成器132及び映像符号化器134は、図6の頂点情報符号化器101及び属性情報符号化器103等に対応していてもよい。 FIG. 20 is a block diagram showing another example configuration of the three-dimensional data encoder 113 according to this embodiment. In this example, the three-dimensional data encoder 113 includes a vertex image generator 131, an attribute image generator 132, a metadata generator 133, a video encoder 134, a metadata encoder 123, and a multiplexer 124. The vertex image generator 131, the attribute image generator 132, and the video encoder 134 may correspond to the vertex information encoder 101 and the attribute information encoder 103 in FIG. 6, etc.

 また、この例において、三次元データ符号化器113は、ビデオベース符号化方式に従って、三次元データを符号化する。ビデオベース符号化方式に従う符号化では、三次元データから複数の二次元画像が生成され、映像符号化方式に従って複数の二次元画像が符号化される。ここで、映像符号化方式は、HEVC(High Efficiency Video Coding)又はVVC(Versatile Video Coding)等であってもよい。 Also, in this example, the three-dimensional data encoder 113 encodes the three-dimensional data according to a video-based encoding method. In encoding according to the video-based encoding method, multiple two-dimensional images are generated from the three-dimensional data, and the multiple two-dimensional images are encoded according to a video encoding method. Here, the video encoding method may be HEVC (High Efficiency Video Coding) or VVC (Versatile Video Coding), etc.

 具体的には、まず、センサデータから生成された三次元データに含まれる頂点情報及び属性情報が、メタデータ生成器133に入力される。また、頂点情報及び属性情報は、頂点画像生成器131及び属性画像生成器132にそれぞれ入力される。また、三次元データに含まれるメタデータは、メタデータ符号化器123に入力される。ここで、三次元データに含まれる接続情報は、属性情報と同様に扱われてもよい。また、点群データの場合、位置情報が頂点情報として扱われてもよい。 Specifically, first, the vertex information and attribute information contained in the three-dimensional data generated from the sensor data is input to the metadata generator 133. The vertex information and attribute information are then input to the vertex image generator 131 and the attribute image generator 132, respectively. The metadata contained in the three-dimensional data is then input to the metadata encoder 123. Here, the connectivity information contained in the three-dimensional data may be treated in the same way as the attribute information. In the case of point cloud data, the position information may be treated as vertex information.

 メタデータ生成器133は、頂点情報及び属性情報から複数の二次元画像のマップ情報を生成する。そして、メタデータ生成器133は、マップ情報を頂点画像生成器131、属性画像生成器132及びメタデータ符号化器123に入力する。 The metadata generator 133 generates map information for multiple two-dimensional images from the vertex information and attribute information. The metadata generator 133 then inputs the map information to the vertex image generator 131, the attribute image generator 132, and the metadata encoder 123.

 頂点画像生成器131は、頂点情報及びマップ情報に基づいて、頂点画像を生成して映像符号化器134へ入力する。属性画像生成器132は、属性情報及びマップ情報に基づいて、属性画像を生成して映像符号化器134へ入力する。 The vertex image generator 131 generates a vertex image based on the vertex information and map information and inputs it to the video encoder 134. The attribute image generator 132 generates an attribute image based on the attribute information and map information and inputs it to the video encoder 134.

 映像符号化器134は、映像符号化方式に従って、頂点画像及び属性画像を圧縮頂点情報及び圧縮属性情報にそれぞれ符号化して、圧縮頂点情報及び圧縮属性情報を符号化データとして多重化器124に出力する。また、映像符号化器134は、圧縮頂点情報のメタデータ、及び、圧縮属性情報のメタデータを生成して多重化器124に出力する。 The video encoder 134 encodes the vertex images and attribute images into compressed vertex information and compressed attribute information, respectively, according to a video encoding method, and outputs the compressed vertex information and compressed attribute information to the multiplexer 124 as encoded data. The video encoder 134 also generates metadata for the compressed vertex information and metadata for the compressed attribute information, and outputs these to the multiplexer 124.

 メタデータ符号化器123は、圧縮可能なメタデータを圧縮メタデータに符号化して、圧縮メタデータを符号化データとして多重化器124に出力する。圧縮可能なメタデータには、マップ情報が含まれる。また、メタデータ符号化器123で符号化されるメタデータは、頂点情報の符号化、及び、属性情報の符号化に用いられてもよい。 The metadata encoder 123 encodes compressible metadata into compressed metadata and outputs the compressed metadata to the multiplexer 124 as encoded data. The compressible metadata includes map information. The metadata encoded by the metadata encoder 123 may also be used to encode vertex information and attribute information.

 多重化器124は、圧縮頂点情報、圧縮頂点情報のメタデータ、圧縮属性情報、圧縮属性情報のメタデータ、及び、圧縮メタデータをビットストリームに多重化する。そして、多重化器124は、ビットストリームをシステムレイヤに入力する。 The multiplexer 124 multiplexes the compressed vertex information, compressed vertex information metadata, compressed attribute information, compressed attribute information metadata, and compressed metadata into a bitstream. The multiplexer 124 then inputs the bitstream to the system layer.

 図21は、本実施の形態に係る三次元データ復号器213の別の構成例を示すブロック図である。この例において、三次元データ復号器213は、頂点情報生成器231、属性情報生成器232、映像復号器234、メタデータ復号器223及び逆多重化器224を備える。頂点情報生成器231、属性情報生成器232及び映像復号器234は、図8の頂点情報復号器201及び属性情報復号器203等に対応していてもよい。 FIG. 21 is a block diagram showing another example configuration of the 3D data decoder 213 according to this embodiment. In this example, the 3D data decoder 213 includes a vertex information generator 231, an attribute information generator 232, a video decoder 234, a metadata decoder 223, and a demultiplexer 224. The vertex information generator 231, the attribute information generator 232, and the video decoder 234 may correspond to the vertex information decoder 201 and the attribute information decoder 203 in FIG. 8, etc.

 また、この例において、三次元データ復号器213は、ビデオベース符号化方式に従って、三次元データを復号する。ビデオベース符号化方式に従う復号では、映像符号化方式に従って複数の二次元画像が復号され、複数の二次元画像から三次元データが生成される。ここで、映像符号化方式は、HEVC(High Efficiency Video Coding)又はVVC(Versatile Video Coding)等であってもよい。 Also, in this example, the 3D data decoder 213 decodes the 3D data according to a video-based coding method. In decoding according to a video-based coding method, multiple 2D images are decoded according to a video coding method, and 3D data is generated from the multiple 2D images. Here, the video coding method may be HEVC (High Efficiency Video Coding) or VVC (Versatile Video Coding), etc.

 具体的には、まず、ビットストリームが、システムレイヤから逆多重化器224に入力される。逆多重化器224は、ビットストリームから、圧縮頂点情報、圧縮頂点情報のメタデータ、圧縮属性情報、圧縮属性情報のメタデータ、及び、圧縮メタデータを分離する。圧縮頂点情報、及び、圧縮頂点情報のメタデータ、圧縮属性情報、及び、圧縮属性情報のメタデータは、映像復号器234に入力される。圧縮メタデータは、メタデータ復号器223に入力される。 Specifically, first, the bitstream is input from the system layer to the demultiplexer 224. The demultiplexer 224 separates compressed vertex information, compressed vertex information metadata, compressed attribute information, compressed attribute information metadata, and compressed metadata from the bitstream. The compressed vertex information, compressed vertex information metadata, compressed attribute information, and compressed attribute information metadata are input to the video decoder 234. The compressed metadata is input to the metadata decoder 223.

 映像復号器234は、映像符号化方式に従って、頂点画像を復号する。その際、映像復号器234は、圧縮頂点情報のメタデータを用いて、圧縮頂点情報から頂点画像を復号する。そして、映像復号器234は、頂点画像を頂点情報生成器231に入力する。また、映像復号器234は、映像符号化方式に従って、属性画像を復号する。その際、映像復号器234は、圧縮属性情報のメタデータを用いて、圧縮属性情報から属性画像を復号する。そして、映像復号器234は、属性画像を属性情報生成器232に入力する。 The video decoder 234 decodes the vertex images in accordance with the video encoding method. In doing so, the video decoder 234 decodes the vertex images from the compressed vertex information using the metadata of the compressed vertex information. The video decoder 234 then inputs the vertex images to the vertex information generator 231. The video decoder 234 also decodes the attribute images in accordance with the video encoding method. In doing so, the video decoder 234 decodes the attribute images from the compressed attribute information using the metadata of the compressed attribute information. The video decoder 234 then inputs the attribute images to the attribute information generator 232.

 メタデータ復号器223は、圧縮メタデータからメタデータを復号する。メタデータ復号器223で復号されたメタデータには、頂点情報の生成、及び、属性情報の生成に用いられるマップ情報が含まれる。また、メタデータ復号器223で復号されたメタデータは、頂点画像の復号、及び、属性画像の復号に用いられてもよい。 The metadata decoder 223 decodes metadata from the compressed metadata. The metadata decoded by the metadata decoder 223 includes map information used to generate vertex information and attribute information. The metadata decoded by the metadata decoder 223 may also be used to decode vertex images and attribute images.

 頂点情報生成器231は、メタデータ復号器223で復号されたメタデータに含まれるマップ情報に従って、頂点画像から頂点情報を再生する。属性情報生成器232は、メタデータ復号器223で復号されたメタデータに含まれるマップ情報に従って、属性画像から属性情報を再生する。 The vertex information generator 231 reproduces vertex information from the vertex image according to the map information contained in the metadata decoded by the metadata decoder 223. The attribute information generator 232 reproduces attribute information from the attribute image according to the map information contained in the metadata decoded by the metadata decoder 223.

 その後、頂点情報、属性情報、及び、メタデータが三次元データとして三次元データ復号器213から出力される。なお、例えば、このメタデータは、頂点情報及び属性情報のメタデータであって、アプリケーションプログラムにおいて用いられ得る。 Then, the vertex information, attribute information, and metadata are output from the 3D data decoder 213 as 3D data. Note that this metadata is, for example, metadata about the vertex information and attribute information, and can be used in an application program.

 図22は、本実施の形態に係る符号化処理の具体例を示す概念図である。図22には、三次元データ符号化器113及びデスクリプション符号化器148が示されている。この例において、三次元データ符号化器113は、二次元データ符号化器141及びメッシュデータ符号化器142を備える。二次元データ符号化器141は、テクスチャ符号化器143を備える。メッシュデータ符号化器142は、頂点情報符号化器144及び接続情報符号化器145を備える。 FIG. 22 is a conceptual diagram showing a specific example of the encoding process according to this embodiment. FIG. 22 shows a three-dimensional data encoder 113 and a description encoder 148. In this example, the three-dimensional data encoder 113 includes a two-dimensional data encoder 141 and a mesh data encoder 142. The two-dimensional data encoder 141 includes a texture encoder 143. The mesh data encoder 142 includes a vertex information encoder 144 and a connectivity information encoder 145.

 頂点情報符号化器144、接続情報符号化器145及びテクスチャ符号化器143は、図6の頂点情報符号化器101、接続情報符号化器102及び属性情報符号化器103等に対応していてもよい。 The vertex information encoder 144, the connection information encoder 145, and the texture encoder 143 may correspond to the vertex information encoder 101, the connection information encoder 102, and the attribute information encoder 103 in Figure 6, etc.

 例えば、二次元データ符号化器141は、テクスチャ符号化器143として動作し、画像符号化方式又は映像符号化方式に従って、属性情報に対応するテクスチャを二次元データとして符号化することにより、テクスチャファイルを生成する。 For example, the two-dimensional data encoder 141 operates as a texture encoder 143, and generates a texture file by encoding the texture corresponding to the attribute information as two-dimensional data according to an image encoding method or a video encoding method.

 また、メッシュデータ符号化器142は、頂点情報符号化器144及び接続情報符号化器145として動作し、頂点情報及び接続情報を符号化することにより、メッシュファイルを生成する。メッシュデータ符号化器142は、さらに、テクスチャに対するマッピング情報を符号化してもよい。そして、符号化されたマッピング情報が、メッシュファイルに含まれてもよい。 The mesh data encoder 142 also operates as a vertex information encoder 144 and a connectivity information encoder 145, and generates a mesh file by encoding the vertex information and connectivity information. The mesh data encoder 142 may also encode mapping information for textures. The encoded mapping information may then be included in the mesh file.

 また、デスクリプション符号化器148は、テキストデータ等のメタデータに対応するデスクリプションを符号化することにより、デスクリプションファイルを生成する。デスクリプション符号化器148は、システムレイヤにおいて、デスクリプションを符号化してもよい。例えば、デスクリプション符号化器148は、図12のシステム多重化器114に含まれていてもよい。 Furthermore, the description encoder 148 generates a description file by encoding a description corresponding to metadata such as text data. The description encoder 148 may encode the description at the system layer. For example, the description encoder 148 may be included in the system multiplexer 114 of FIG. 12.

 上記の動作により、テクスチャファイル、メッシュファイル及びデスクリプションファイルを含むビットストリームが生成される。これらのファイルは、glTF(Graphics Language Transmission Format)又はUSD(Universal Scene Description)等のファイル形式でビットストリームに多重化されてもよい。 The above operations generate a bitstream containing texture files, mesh files, and description files. These files may be multiplexed into the bitstream in file formats such as glTF (Graphics Language Transmission Format) or USD (Universal Scene Description).

 なお、三次元データ符号化器113は、メッシュデータ符号化器142として、2つのメッシュデータ符号化器を備えていてもよい。例えば、一方のメッシュデータ符号化器は、静的な三次元メッシュの頂点情報及び接続情報を符号化し、他方のメッシュデータ符号化器は、動的な三次元メッシュの頂点情報及び接続情報を符号化する。 The three-dimensional data encoder 113 may include two mesh data encoders as the mesh data encoder 142. For example, one mesh data encoder encodes vertex information and connectivity information of a static three-dimensional mesh, and the other mesh data encoder encodes vertex information and connectivity information of a dynamic three-dimensional mesh.

 そして、これに対応して、2つのメッシュファイルがビットストリームに含まれてもよい。例えば、一方のメッシュファイルは、静的な三次元メッシュに対応し、他方のメッシュファイルは、動的な三次元メッシュに対応する。 In response to this, two mesh files may be included in the bitstream. For example, one mesh file corresponds to a static 3D mesh, and the other mesh file corresponds to a dynamic 3D mesh.

 また、静的な三次元メッシュはイントラ予測を用いて符号化されるイントラフレームの三次元メッシュであってもよく、動的な三次元メッシュはインター予測を用いて符号化されるインターフレームの三次元メッシュであってもよい。また、動的な三次元メッシュの情報として、イントラフレームの三次元メッシュの頂点情報又は接続情報と、インターフレームの三次元メッシュの頂点情報又は接続情報との差分情報が用いられてもよい。 Furthermore, the static three-dimensional mesh may be a three-dimensional mesh of an intraframe that is coded using intraprediction, and the dynamic three-dimensional mesh may be a three-dimensional mesh of an interframe that is coded using interprediction. Furthermore, differential information between the vertex information or connectivity information of the three-dimensional mesh of an intraframe and the vertex information or connectivity information of the three-dimensional mesh of an interframe may be used as information on the dynamic three-dimensional mesh.

 図23は、本実施の形態に係る復号処理の具体例を示す概念図である。図23には、三次元データ復号器213、デスクリプション復号器248及び提示器247が示されている。この例において、三次元データ復号器213は、二次元データ復号器241、メッシュデータ復号器242及びメッシュ再構成器246を備える。二次元データ復号器241は、テクスチャ復号器243を備える。メッシュデータ復号器242は、頂点情報復号器244及び接続情報復号器245を備える。 FIG. 23 is a conceptual diagram showing a specific example of the decoding process according to this embodiment. FIG. 23 shows a three-dimensional data decoder 213, a description decoder 248, and a presenter 247. In this example, the three-dimensional data decoder 213 includes a two-dimensional data decoder 241, a mesh data decoder 242, and a mesh reconstructor 246. The two-dimensional data decoder 241 includes a texture decoder 243. The mesh data decoder 242 includes a vertex information decoder 244 and a connectivity information decoder 245.

 頂点情報復号器244、接続情報復号器245、テクスチャ復号器243及びメッシュ再構成器246は、図8の頂点情報復号器201、接続情報復号器202、属性情報復号器203及び後処理器205等に対応していてもよい。提示器247は、図12の提示器215等に対応していてもよい。 The vertex information decoder 244, the connection information decoder 245, the texture decoder 243, and the mesh reconstructor 246 may correspond to the vertex information decoder 201, the connection information decoder 202, the attribute information decoder 203, and the post-processor 205 in FIG. 8. The presenter 247 may correspond to the presenter 215 in FIG. 12.

 例えば、二次元データ復号器241は、テクスチャ復号器243として動作し、画像符号化方式又は映像符号化方式に従って、テクスチャファイルから属性情報に対応するテクスチャを二次元データとして復号する。 For example, the two-dimensional data decoder 241 operates as a texture decoder 243, and decodes the texture corresponding to the attribute information from the texture file as two-dimensional data in accordance with an image encoding method or a video encoding method.

 また、メッシュデータ復号器242は、頂点情報復号器244及び接続情報復号器245として動作し、メッシュファイルから頂点情報及び接続情報を復号する。メッシュデータ復号器242は、さらに、メッシュファイルから、テクスチャに対するマッピング情報を復号してもよい。 The mesh data decoder 242 also operates as a vertex information decoder 244 and a connectivity information decoder 245, decoding vertex information and connectivity information from the mesh file. The mesh data decoder 242 may also decode mapping information for textures from the mesh file.

 また、デスクリプション復号器248は、デスクリプションファイルから、テキストデータ等のメタデータに対応するデスクリプションを復号する。デスクリプション復号器248は、システムレイヤにおいて、デスクリプションを復号してもよい。例えば、デスクリプション復号器248は、図12のシステム逆多重化器214に含まれていてもよい。 Furthermore, the description decoder 248 decodes descriptions corresponding to metadata such as text data from the description file. The description decoder 248 may decode the descriptions at the system layer. For example, the description decoder 248 may be included in the system demultiplexer 214 of FIG. 12.

 メッシュ再構成器246は、デスクリプションに従って、頂点情報、接続情報及びテクスチャから、三次元メッシュを再構成する。提示器247は、デスクリプションに従って、三次元メッシュをレンダリングして出力する。 The mesh reconstructor 246 reconstructs a three-dimensional mesh from vertex information, connectivity information, and texture according to the description. The renderer 247 renders and outputs the three-dimensional mesh according to the description.

 上記の動作により、テクスチャファイル、メッシュファイル及びデスクリプションファイルを含むビットストリームから三次元メッシュが再構成され出力される。 The above operation reconstructs and outputs a 3D mesh from a bitstream containing a texture file, mesh file, and description file.

 なお、三次元データ復号器213は、メッシュデータ復号器242として、2つのメッシュデータ復号器を備えていてもよい。例えば、一方のメッシュデータ復号器は、静的な三次元メッシュの頂点情報及び接続情報を復号し、他方のメッシュデータ復号器は、動的な三次元メッシュの頂点情報及び接続情報を復号する。 The three-dimensional data decoder 213 may be equipped with two mesh data decoders as the mesh data decoder 242. For example, one mesh data decoder decodes vertex information and connectivity information of a static three-dimensional mesh, and the other mesh data decoder decodes vertex information and connectivity information of a dynamic three-dimensional mesh.

 そして、これに対応して、2つのメッシュファイルがビットストリームに含まれてもよい。例えば、一方のメッシュファイルは、静的な三次元メッシュに対応し、他方のメッシュファイルは、動的な三次元メッシュに対応する。 In response to this, two mesh files may be included in the bitstream. For example, one mesh file corresponds to a static 3D mesh, and the other mesh file corresponds to a dynamic 3D mesh.

 また、静的な三次元メッシュはイントラ予測を用いて符号化されるイントラフレームの三次元メッシュであってもよく、動的な三次元メッシュはインター予測を用いて符号化されるインターフレームの三次元メッシュであってもよい。また、動的な三次元メッシュの情報として、イントラフレームの三次元メッシュの頂点情報又は接続情報と、インターフレームの三次元メッシュの頂点情報又は接続情報との差分情報が用いられてもよい。 Furthermore, the static three-dimensional mesh may be a three-dimensional mesh of an intraframe that is coded using intraprediction, and the dynamic three-dimensional mesh may be a three-dimensional mesh of an interframe that is coded using interprediction. Furthermore, differential information between the vertex information or connectivity information of the three-dimensional mesh of an intraframe and the vertex information or connectivity information of the three-dimensional mesh of an interframe may be used as information on the dynamic three-dimensional mesh.

 動的な三次元メッシュの符号化方式は、DMC(Dynamic Mesh Coding:動的メッシュ符号化)と呼ばれる場合がある。また、動的な三次元メッシュのビデオベース符号化方式は、V-DMC(Video-based Dynamic Mesh Coding:ビデオベース動的メッシュ符号化)と呼ばれる場合がある。 The dynamic 3D mesh coding method is sometimes called DMC (Dynamic Mesh Coding). The video-based dynamic 3D mesh coding method is sometimes called 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:ジオメトリベース点群圧縮)と呼ばれる場合がある。 The point cloud encoding method is sometimes called PCC (Point Cloud Compression). The video-based point cloud encoding method is sometimes called V-PCC (Video-based Point Cloud Compression). The geometry-based point cloud encoding method is sometimes called G-PCC (Geometry-based Point Cloud Compression).

 <実装例>
 図24は、本実施の形態に係る符号化装置100の実装例を示すブロック図である。符号化装置100は、回路151及びメモリ152を備える。例えば、図5等に示された符号化装置100の複数の構成要素は、図24に示された回路151及びメモリ152によって実装される。
<Implementation example>
Fig. 24 is a block diagram showing an example implementation of the encoding device 100 according to this embodiment. The encoding device 100 includes a circuit 151 and a memory 152. For example, multiple components of the encoding device 100 shown in Fig. 5 and the like are implemented by the circuit 151 and memory 152 shown in Fig. 24.

 回路151は、情報処理を行う回路であり、メモリ152にアクセス可能な回路である。例えば、回路151は、三次元メッシュを符号化する専用又は汎用の電気回路である。回路151は、CPUのようなプロセッサであってもよい。また、回路151は、複数の電気回路の集合体であってもよい。 Circuit 151 is a circuit that performs information processing and is capable of accessing memory 152. For example, circuit 151 is a dedicated or general-purpose electrical circuit that encodes a three-dimensional mesh. Circuit 151 may be a processor such as a CPU. Circuit 151 may also be a collection of multiple electrical circuits.

 メモリ152は、回路151が三次元メッシュを符号化するための情報が記憶される専用又は汎用のメモリである。メモリ152は、電気回路であってもよく、回路151に接続されていてもよい。また、メモリ152は、回路151に含まれていてもよい。また、メモリ152は、複数の電気回路の集合体であってもよい。また、メモリ152は、磁気ディスク又は光ディスク等であってもよいし、ストレージ又は記録媒体等と表現されてもよい。また、メモリ152は、不揮発性メモリでもよいし、揮発性メモリでもよい。 Memory 152 is a dedicated or general-purpose memory that stores information used by circuit 151 to encode the three-dimensional mesh. Memory 152 may be an electrical circuit and may be connected to circuit 151. Memory 152 may also be included in circuit 151. Memory 152 may also be a collection of multiple electrical circuits. Memory 152 may also be a magnetic disk, an optical disk, etc., and may also be expressed as storage or recording medium, etc. Memory 152 may also be non-volatile memory or volatile memory.

 例えば、メモリ152には、三次元メッシュが記憶されてもよいし、ビットストリームが記憶されてもよい。また、メモリ152には、回路151が三次元メッシュを符号化するためのプログラムが記憶されていてもよい。 For example, memory 152 may store a three-dimensional mesh or a bitstream. Memory 152 may also store a program that circuit 151 uses to encode the three-dimensional mesh.

 なお、符号化装置100において、図5等に示された複数の構成要素の全てが実装されなくてもよいし、ここで示された複数の処理の全てが行われなくてもよい。図5等に示された複数の構成要素の一部は、他の装置に含まれていてもよいし、ここで示された複数の処理の一部は、他の装置によって実行されてもよい。また、符号化装置100において、本開示の複数の構成要素が任意に組み合わされて実装されてもよいし、本開示の複数の処理が任意に組み合わされて行われてもよい。 Note that the encoding device 100 does not need to implement all of the multiple components shown in FIG. 5 and the like, and does not need to perform all of the multiple processes shown here. Some of the multiple components shown in FIG. 5 and the like may be included in another device, and some of the multiple processes shown here may be performed by another device. Furthermore, the encoding device 100 may implement any combination of the multiple components of the present disclosure, and may perform any combination of the multiple processes of the present disclosure.

 図25は、本実施の形態に係る復号装置200の実装例を示すブロック図である。復号装置200は、回路251及びメモリ252を備える。例えば、図7等に示された復号装置200の複数の構成要素は、図25に示された回路251及びメモリ252によって実装される。 FIG. 25 is a block diagram showing an example implementation of a decoding device 200 according to this embodiment. The decoding device 200 includes a circuit 251 and a memory 252. For example, multiple components of the decoding device 200 shown in FIG. 7 and other figures are implemented using the circuit 251 and memory 252 shown in FIG. 25.

 回路251は、情報処理を行う回路であり、メモリ252にアクセス可能な回路である。例えば、回路251は、三次元メッシュを復号する専用又は汎用の電気回路である。回路251は、CPUのようなプロセッサであってもよい。また、回路251は、複数の電気回路の集合体であってもよい。 Circuit 251 is a circuit that performs information processing and is capable of accessing memory 252. For example, circuit 251 is a dedicated or general-purpose electrical circuit that decodes three-dimensional meshes. Circuit 251 may be a processor such as a CPU. Circuit 251 may also be a collection of multiple electrical circuits.

 メモリ252は、回路251が三次元メッシュを復号するための情報が記憶される専用又は汎用のメモリである。メモリ252は、電気回路であってもよく、回路251に接続されていてもよい。また、メモリ252は、回路251に含まれていてもよい。また、メモリ252は、複数の電気回路の集合体であってもよい。また、メモリ252は、磁気ディスク又は光ディスク等であってもよいし、ストレージ又は記録媒体等と表現されてもよい。また、メモリ252は、不揮発性メモリでもよいし、揮発性メモリでもよい。 Memory 252 is a dedicated or general-purpose memory that stores information used by circuit 251 to decode the three-dimensional mesh. Memory 252 may be an electrical circuit and may be connected to circuit 251. Memory 252 may also be included in circuit 251. Memory 252 may also be a collection of multiple electrical circuits. Memory 252 may also be a magnetic disk, an optical disk, etc., and may also be expressed as storage or recording medium, etc. Memory 252 may also be non-volatile memory or volatile memory.

 例えば、メモリ252には、三次元メッシュが記憶されてもよいし、ビットストリームが記憶されてもよい。また、メモリ252には、回路251が三次元メッシュを復号するためのプログラムが記憶されていてもよい。 For example, the memory 252 may store a three-dimensional mesh or a bitstream. The memory 252 may also store a program that allows the circuit 251 to decode the three-dimensional mesh.

 なお、復号装置200において、図7等に示された複数の構成要素の全てが実装されなくてもよいし、ここで示された複数の処理の全てが行われなくてもよい。図7等に示された複数の構成要素の一部は、他の装置に含まれていてもよいし、ここで示された複数の処理の一部は、他の装置によって実行されてもよい。また、復号装置200において、本開示の複数の構成要素が任意に組み合わされて実装されてもよいし、本開示の複数の処理が任意に組み合わされて行われてもよい。 Note that the decoding device 200 does not necessarily have to implement all of the multiple components shown in FIG. 7 and the like, and does not necessarily have to perform all of the multiple processes shown here. Some of the multiple components shown in FIG. 7 and the like may be included in another device, and some of the multiple processes shown here may be executed by another device. Furthermore, the decoding device 200 may implement any combination of the multiple components of the present disclosure, and may perform any combination of the multiple processes of the present disclosure.

 本開示の符号化装置100及び復号装置200の各構成要素が行うステップを含む符号化方法及び復号方法が任意の装置又はシステムによって実行されてもよい。例えば、符号化方法及び復号方法の一部又は全部が、プロセッサ、メモリ及び入出力回路等を備えるコンピュータによって実行されてもよい。その際、コンピュータに符号化方法及び復号方法を実行させるためのプログラムがコンピュータによって実行されることにより、符号化方法及び復号方法が実行されてもよい。 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. For example, part or all of the encoding method and decoding method may be executed by a computer equipped with a processor, memory, input/output circuitry, etc. In this case, the encoding method and decoding method may be executed by the computer executing a program for causing the computer to execute the encoding method and decoding method.

 また、CD-ROM等の非一時的なコンピュータ読み取り可能な記録媒体に、プログラムが記録されていてもよいし、ビットストリームが記録されていてもよい。 Furthermore, the program or bitstream may be recorded on a non-transitory computer-readable recording medium such as a CD-ROM.

 プログラムの一例は、ビットストリームであってもよい。例えば、符号化された三次元メッシュを含むビットストリームは、復号装置200に三次元メッシュを復号させるためのシンタックス要素を含む。そして、ビットストリームは、ビットストリームに含まれるシンタックス要素に従って三次元メッシュを復号装置200に復号させる。したがって、ビットストリームは、プログラムと同様の役割を果たし得る。 An example of a program may be a bitstream. For example, a bitstream containing an encoded three-dimensional mesh includes syntax elements for causing the decoding device 200 to decode the three-dimensional mesh. The bitstream then causes the decoding device 200 to decode the three-dimensional mesh in accordance with the syntax elements included in the bitstream. Therefore, the bitstream may play a role similar to that of a program.

 上記のビットストリームは、符号化された三次元メッシュを含む符号化ビットストリームであってもよいし、符号化された三次元メッシュ及びその他の情報を含む多重化ビットストリームであってもよい。 The bitstream may be an encoded bitstream containing an encoded 3D mesh, or a multiplexed bitstream containing an encoded 3D mesh and other information.

 また、符号化装置100及び復号装置200の各構成要素は、専用のハードウェアで構成されてもよいし、上記のプログラム等を実行する汎用のハードウェアで構成されてもよいし、これらの組み合わせで構成されてもよい。また、汎用のハードウェアは、プログラムが記録されたメモリ、及び、メモリからプログラムを読み出して実行する汎用のプロセッサ等で構成されてもよい。ここで、メモリは、半導体メモリ又はハードディスク等でもよいし、汎用のプロセッサは、CPU等でもよい。 Furthermore, each component of the encoding device 100 and the decoding device 200 may be configured with dedicated hardware, general-purpose hardware that executes the above-mentioned programs, or a combination of these. Furthermore, the general-purpose hardware may be configured with a memory in which the program is recorded, and a general-purpose processor that reads and executes the program from the memory. Here, the memory may be a semiconductor memory or a hard disk, and the general-purpose processor may be a CPU, etc.

 また、専用のハードウェアが、メモリ及び専用のプロセッサ等で構成されてもよい。例えば、専用のプロセッサが、データを記録するためのメモリを参照して、符号化方法及び復号方法を実行してもよい。 Furthermore, the dedicated hardware may be composed of a memory and a dedicated processor. For example, a dedicated processor may execute the encoding method and decoding method by referencing a memory for recording data.

 また、符号化装置100及び復号装置200の各構成要素は、上述の通り、電気回路であってもよい。これらの電気回路は、全体として1つの電気回路を構成してもよいし、それぞれ別々の電気回路であってもよい。また、これらの電気回路は、専用のハードウェアに対応していてもよいし、上記のプログラム等を実行する汎用のハードウェアに対応していてもよい。また、符号化装置100及び復号装置200は、集積回路として実装されてもよい。 Furthermore, as described above, each component of the encoding device 100 and the decoding device 200 may be an electrical circuit. These electrical circuits may form a single electrical circuit as a whole, or each may be a separate electrical circuit. Furthermore, these electrical circuits may correspond to dedicated hardware, or may correspond to general-purpose hardware that executes the above-mentioned programs, etc. Furthermore, the encoding device 100 and the decoding device 200 may be implemented as an integrated circuit.

 また、符号化装置100は、三次元メッシュを送信する送信装置であってもよい。復号装置200は、三次元メッシュを受信する受信装置であってもよい。 Furthermore, the encoding device 100 may be a transmitting device that transmits a three-dimensional mesh. The decoding device 200 may be a receiving device that receives a three-dimensional mesh.

 <変位の符号化及び復号>
 ここでは、例として、下記の用語が用いられる。
Displacement Encoding and Decoding
The following terms are used herein by way of example:

 (1)イメージ
 イメージは、画素の集合で構成されるデータ単位であり、ピクチャ、または、ピクチャより小さいブロックを含む。イメージには、動画の他に静止画も含まれる。
(1) Image An image is a data unit made up of a set of pixels, and includes a picture or a block smaller than a picture. Images include both moving images and still images.

 (2)ピクチャ
 ピクチャは、画素の集合で構成される画像処理単位であり、フレーム、フィールドともいう。
(2) Picture A picture is a unit of image processing that is made up of a set of pixels, and is also called a frame or field.

 (3)ブロック
 ブロックは、特定の個数の画素で構成される処理単位である。ブロックは、下記の例に示される用語も用いられる。ブロックの形状は特に限定されない。ブロックは、例えば、M×N画素の矩形形状、または、M×M画素の正方形形状であり得る。ブロックは、三角形形状、円形状、その他の形状であってもよい。ブロックの例は、下記のとおりである。
(3) Block A block is a processing unit consisting of a specific number of pixels. The term shown in the following example is also used for a block. The shape of a block is not particularly limited. A block may be, for example, a rectangular shape of M×N pixels or a square shape of M×M pixels. A block may also be a triangular shape, a circular shape, or another shape. Examples of blocks are as follows:

 ・スライス、タイル、または、レンガ
 ・CTU、スーパーブロック、または、基本分割ユニット
 ・VPDU、ハードウェア用処理分割ユニット
 ・CU、処理ブロック単位、予測ブロック単位(PU)、または、直交変換ブロック単位(TU)
 ・サブブロック
Slice, tile, or brick CTU, superblock, or basic division unit VPDU, processing division unit for hardware CU, processing block unit, prediction block unit (PU), or orthogonal transform block unit (TU)
・Sub-block

 (4)ピクセルまたはサンプル
 ピクセルまたはサンプルは、画像の最小点、言い換えれば、最小単位である。ピクセルまたはサンプルは、整数位置の画素だけでなく、整数位置の画素をもとに生成されたサブ画素位置の画素も含まれる。
(4) Pixel or Sample A pixel or sample is the smallest point of an image, in other words, the smallest unit. Pixels or samples include not only pixels at integer positions, but also pixels at sub-pixel positions generated based on pixels at integer positions.

 (5)画素値またはサンプル値
 画素値またはサンプル値は、画素の固有値である。画素値またはサンプル値には、ルマ値、クロマ値、または、RGB階調レベルなどが含まれ、深度値または0または1のバイナリ値も含まれ得る。
(5) Pixel Value or Sample Value: A pixel value or sample value is a unique value of a pixel. The pixel value or sample value may include a luma value, a chroma value, or an RGB gradation level, and may also include a depth value or a binary value of 0 or 1.

 (6)フラグ
 フラグは、1つ以上のビットを示すものである。フラグは、例えば、2つ以上のビットで表されるパラメータまたはインデックスである。フラグは、また、2進数で表される値だけでなく、2進数以外の数値で表される値を示す場合もある。
(6) Flags A flag indicates one or more bits. A flag is, for example, a parameter or index represented by two or more bits. A flag may indicate not only a value represented by a binary number, but also a value represented by a number other than a binary number.

 (7)信号
 信号は、情報を伝達するために記号化または符号化されたものをいう。信号は、離散的なデジタル信号、または、連続的なアナログ信号を含む。
(7) Signal: A signal is something that is symbolized or coded to transmit information. A signal includes a discrete digital signal or a continuous analog signal.

 (8)ストリームまたはビットストリーム
 ストリームまたはビットストリームは、デジタルデータの流れを示すデジタルデータ列である。ストリームまたはビットストリームは、1つのストリームであってもよいし、複数の階層を有する複数のストリームを含んで構成されていてもよい。ストリームまたはビットストリームは、単一の伝送路を用いてシリアル通信で伝送される場合もあれば、複数の伝送路を用いてパケット通信で伝送される場合もある。
(8) Stream or Bit Stream A stream or bit stream is a digital data sequence that indicates the flow of digital data. A stream or bit stream may be a single stream, or may be configured to include multiple streams with multiple layers. A stream or bit stream may be transmitted by serial communication using a single transmission path, or may be transmitted by packet communication using multiple transmission paths.

 (9)差分
 差分は、スカラー量の場合、単純な差分(x - y)と差分計算とが含まれ得る。差分は、差分の絶対値(|x - y|)、差分の2乗(x^2 - y^2)、差分の平方根(√(x - y))、重み付け差分(ax - by、ここでa、bは定数)、または、オフセット差分(x - y + a、ここでaはオフセット)などが含まれ得る。
(9) Difference: For scalar quantities, difference can include simple difference (x - y) and difference calculations, such as absolute difference (|x - y|), squared difference (x^2 - y^2), square root difference (√(x - y)), weighted difference (ax - b, where a and b are constants), or offset difference (x - y + a, where a is an offset).

 (10)和
 和は、スカラー量の場合、単純な和(x + y)と加算計算とが含まれ得る。和は、和の絶対値(|x + y|)、二乗和(x^2 + y^2)、和の平方根(√(x + y))、重み付き和(ax + by、ここでaとbは定数)、または、オフセット和(x + y + a、ここでaはオフセット)などが含まれ得る。
(10) Sum. For scalar quantities, sums can include simple sum (x + y) and addition operations. Sum can also include absolute sum (|x + y|), sum of squares (x^2 + y^2), square root of sum (√(x + y)), weighted sum (ax + by, where a and b are constants), or offset sum (x + y + a, where a is an offset).

 (11)「基づいて」(based on)
 「何かに基づいて」という表現は、その「何か」以外のものを考慮してもよいことを意味する。また、「基づいて」(based on)は、直接的な結果が得られる場合と、中間的な結果を経て結果が得られる場合とで使われることがある。
(11)「基于(based on)」
The phrase "based on something" means that something other than that "something" may be taken into consideration. Also, "based on" can be used both when a direct result is obtained and when a result is obtained through an intermediate result.

 (12)「使用される」または「使用する」
 「何かが使用された」または「何かを使用した」という表現は、その「何か」以外のものを考慮してもよいことを意味する。また、「使用された」または「使用した」という表現は、直接的な結果が得られる場合と、中間的な結果を経て結果が得られる場合とで使われることがある。
(12) "Used" or "Use"
The phrases "something was used" or "used something" mean that something other than the "something" may be taken into consideration. Also, the phrases "used" or "used" may be used in cases where a direct result is obtained, or in cases where a result is obtained via an intermediate result.

 (13)禁止
 「禁止する」は、「許可しない」と言い換えることができる。また、「禁止されない/禁止される」または「許可される/許可される」は、必ずしも「義務」を意味しない。
(13) Prohibition "Prohibit" can be rephrased as "not permitted." Also, "not prohibited/prohibited" or "permitted/permitted" does not necessarily mean "obligation."

 (14)「制限」または「限定」
 「制限」または「限定」は、「許可しない・許さない」または「許されない・許されている」と言い換えることができる。また、「禁止されている/禁止されていない」または「許可されていない/許可されている」は、必ずしも「義務」を意味しない。また、量的・質的に禁止されているのは、一部であってもよいし、全部であってもよい。
(14) "Restriction" or "Limitation"
"Restriction" or "limitation" can be rephrased as "not permitted/not allowed" or "not permitted/allowed." Furthermore, "prohibited/not prohibited" or "not permitted/allowed" does not necessarily mean "obligation." Furthermore, what is quantitatively or qualitatively prohibited may be partial or total.

 (15)クロマ(chroma)
 クロマ(chroma)という用語は、記号であるCbまたはCrで表される形容詞であり、サンプル配列または単一サンプルが、原色に関連する2つの色差信号のうちの1つを表していることを示す。クロマ(chroma)という用語は、クロミナンスという用語の代わりに使用されることがある。
(15) Chroma
The term chroma is an adjective, represented by the symbols Cb or Cr, that indicates that a sample array or a single sample represents one of the two color-difference signals associated with a primary color. The term chroma is sometimes used instead of the term chrominance.

 (16)ルマ(luma)
 ルマ(luma)という用語は、記号または添え字であるYまたはLで表される形容詞であり、サンプル配列または単一サンプルが、原色に関するモノクロ信号を表現していることを示す。ルマ(luma)という用語は、輝度(luminance)という用語の代わりに使用されることがある。
(16) Luma
The term luma is an adjective, denoted by the symbols or subscripts Y or L, that indicates that a sample array or a single sample represents a monochrome signal for a primary color. The term luma is sometimes used instead of the term luminance.

 以降において、本実施の形態の符号化復号システムについて説明する。 The encoding/decoding system of this embodiment will be described below.

 一般的な三次元モデル(3Dモデルともいう)は、ユーザが時間的にレンダリングしながら、三次元すべてでズーム、パンおよび回転を使用してモデルを探索できるように、オブジェクトをデジタル的に表現する。このような表現を構築する1つの方法は、三角形を使用して3Dメッシュを構築することである。上記モデルでは、三角形の頂点の位置、三角形の頂点の互いの接続性、およびそれらに関連する属性(法線またはUVパッチなど)が保存される。 A typical three-dimensional model (also known as a 3D model) digitally represents an object in a way that allows a user to explore the model using zoom, pan, and rotation in all three dimensions while it is rendered over time. One way to build such a representation is to construct a 3D mesh using triangles. The model stores the positions of the triangle vertices, their connectivity to each other, and their associated attributes (such as normals or UV patches).

 これらすべての情報を非圧縮の形式で保存するには、非常に大きな記憶領域が必要であり、したがって伝送のための帯域幅が非常に大きくなる。メッシュを形成する三角形は、特に時間的および空間的近傍において、繰り返しパターンと類似の属性を有することが多い。これらの繰り返しを利用して、記憶と伝送のための効率的な符号化方法および復号方法を策定することができる。そのような符号化方法および復号方法のひとつが、Video-based Dynamic Mesh Coding (V-DMC)である。 Storing all this information in uncompressed form would require a very large amount of storage space and therefore a very large bandwidth for transmission. The triangles that form the mesh often have repeating patterns and similar properties, especially in temporal and spatial neighborhoods. These repetitions can be exploited to develop efficient encoding and decoding methods for storage and transmission. One such encoding and decoding method is Video-based Dynamic Mesh Coding (V-DMC).

 図26は、本実施の形態に係る符号化復号システムの別の構成例を示すブロック図である。図26に示すように、符号化復号システムは、符号化装置100及び復号装置200を含む。 FIG. 26 is a block diagram showing another example configuration of an encoding/decoding system according to this embodiment. As shown in FIG. 26, the encoding/decoding system includes an encoding device 100 and a decoding device 200.

 符号化復号システムは、頂点の三次元座標(頂点情報)、接続性(接続情報)及び関連属性(属性情報)の形式で入力される三次元メッシュ(3Dメッシュともいう)を受け入れる。なお、3Dメッシュは、ジオメトリだけでなくテクスチャマップを含むこともできる。 The encoding/decoding system accepts a three-dimensional mesh (also called a 3D mesh) input in the form of three-dimensional coordinates of vertices (vertex information), connectivity (connectivity information), and associated attributes (attribute information). Note that the 3D mesh can also include texture maps as well as geometry.

 符号化装置100は、入力された3Dメッシュ(入力3Dメッシュまたは入力メッシュともいう)を、頂点の三次元座標、接続性および関連属性の形式で取り込む。符号化装置100は、すべての関連情報をストリームに符号化する。ストリームは、単一のビットストリームで構成されてもよいし、複数のビットストリームで構成されてもよい。 The encoding device 100 takes in an input 3D mesh (also referred to as an input 3D mesh or input mesh) in the form of three-dimensional coordinates of vertices, connectivity, and associated attributes. The encoding device 100 encodes all associated information into a stream. The stream may consist of a single bitstream or multiple bitstreams.

 ネットワーク300は、符号化装置によって生成されたストリームを復号装置200に伝送する。ネットワーク300は、インターネット、WAN(Wide Area Network)、LAN(Local Area Network)、または、これらの任意の組み合わせであってもよい。また、ネットワーク300は、必ずしも双方向通信網に限定されず、地上デジタル放送または衛星放送等の放送波を伝送する単方向通信網であってもよい。また、ネットワーク300に代えて、ストリームが記録されたDVD(Digital Versatile Disc)、または、BD(Blue-Ray Disc)等の記録媒体が用いられてもよい。 Network 300 transmits the stream generated by the encoding device to decoding device 200. Network 300 may be the Internet, a WAN (Wide Area Network), a LAN (Local Area Network), or any combination of these. Furthermore, network 300 is not necessarily limited to a two-way communication network, but may also be a one-way communication network that transmits broadcast waves such as terrestrial digital broadcasting or satellite broadcasting. Furthermore, instead of network 300, a recording medium such as a DVD (Digital Versatile Disc) or BD (Blu-Ray Disc) on which a stream is recorded may be used.

 ストリームは、ネットワーク300を介して復号装置200に伝送される。復号装置200は、ビットストリームを復号し、復号された頂点の三次元座標、接続性及び関連属性を用いて三次元メッシュを生成する。復号装置200は、生成した三次元メッシュ(出力3Dメッシュまたは出力メッシュともいう)を出力する。 The stream is transmitted to the decoding device 200 via the network 300. The decoding device 200 decodes the bitstream and generates a 3D mesh using the 3D coordinates, connectivity, and associated attributes of the decoded vertices. The decoding device 200 outputs the generated 3D mesh (also referred to as an output 3D mesh or output mesh).

 図27は、符号化装置100の別の構成例を示す図である。 FIG. 27 shows another example configuration of the encoding device 100.

 図27に示されるように、符号化装置100は、前処理器1103と、圧縮器1106とを備える。 As shown in FIG. 27, the encoding device 100 includes a preprocessor 1103 and a compressor 1106.

 符号化装置100は、入力メッシュ1101と属性マップ1102とを読み込み、前処理器1103に渡す。前処理器1103は、入力メッシュを処理してベースメッシュ1104と変位データ1105を抽出する。属性マップ1102は、抽出されたベースメッシュ1104、変位データ1105とともに圧縮器1106に渡される。 The encoding device 100 reads the input mesh 1101 and attribute map 1102 and passes them to the preprocessor 1103. The preprocessor 1103 processes the input mesh to extract a base mesh 1104 and displacement data 1105. The attribute map 1102, along with the extracted base mesh 1104 and displacement data 1105, is passed to the compressor 1106.

 また、圧縮器1106は、ベースメッシュ1104、変位データ1105、および属性マップ1102を圧縮してビットストリーム1107を生成する。圧縮器1106は、ビットストリーム1107にメタデータ1108をさらに含めることで、付加情報を復号装置200に送信することができる。 The compressor 1106 also compresses the base mesh 1104, displacement data 1105, and attribute map 1102 to generate a bitstream 1107. The compressor 1106 can transmit additional information to the decoding device 200 by further including metadata 1108 in the bitstream 1107.

 図28は、復号装置200の別の構成例を示す図である。 Figure 28 shows another example configuration of the decoding device 200.

 図28に示されるように、復号装置200は、伸張器2102と、後処理器2106とを備える。 As shown in FIG. 28, the decoding device 200 includes a decompressor 2102 and a post-processor 2106.

 復号装置200は、ビットストリーム2101を読み込み、伸張器2102に渡す。伸張器2102は、ベースメッシュ2103と、変位データ2104と、属性マップ2108とをビットストリーム2101から伸張し、後処理器2106に渡す。変位データ2104の一例は、変位ベクトルである。 The decoding device 200 reads the bitstream 2101 and passes it to the decompressor 2102. The decompressor 2102 decompresses the base mesh 2103, displacement data 2104, and attribute map 2108 from the bitstream 2101 and passes them to the post-processor 2106. An example of the displacement data 2104 is a displacement vector.

 また、後処理器2106は、変位データ2104および属性マップ2108に従ってベースメッシュ2103を処理することで、出力メッシュ2107を生成する。後処理器2106は、メタデータ2105からの情報をさらに使用して、出力メッシュ2107を生成してもよい。 The post-processor 2106 also processes the base mesh 2103 according to the displacement data 2104 and the attribute map 2108 to generate the output mesh 2107. The post-processor 2106 may further use information from the metadata 2105 to generate the output mesh 2107.

 図29は、本実施の形態に係る符号化装置100のさらに別の構成例を示すブロック図である。 FIG. 29 is a block diagram showing yet another example configuration of the encoding device 100 according to this embodiment.

 本例では、符号化装置100は、ボリュメトリックキャプチャ器511と、投影器512と、ベースメッシュ符号化器513と、変位符号化器514と、属性符号化器515と、オプションとして1つ以上の他タイプ符号化器516と、を備える。 In this example, the encoding device 100 includes a volumetric capturer 511, a projector 512, a base mesh encoder 513, a displacement encoder 514, an attribute encoder 515, and optionally one or more other type encoders 516.

 ボリュメトリックキャプチャ器511は、コンテンツをキャプチャし、キャプチャしたコンテンツを投影器512に出力する。 The volumetric capturer 511 captures content and outputs the captured content to the projector 512.

 投影器512は、頂点ジオメトリ座標(頂点の位置を示す頂点座標)、テクスチャ座標、及び、接続性データ(接続情報)を含む三次元メッシュフレームにコンテンツを投影する。そのデータは、ベースメッシュ符号化器513、変位符号化器514、属性符号化器515、及び、オプションとして1つ以上の他タイプ符号化器516に出力される。それぞれの符号化器は、データをビットストリームに圧縮する。 The projector 512 projects the content onto a 3D mesh frame, which includes vertex geometry coordinates (vertex coordinates indicating the positions of the vertices), texture coordinates, and connectivity data (connection information). The data is output to a base mesh encoder 513, a displacement encoder 514, an attribute encoder 515, and optionally one or more other type encoders 516. Each encoder compresses the data into a bitstream.

 図30は、本実施の形態に係る復号装置200のさらに別の構成例を示すブロック図である。 Figure 30 is a block diagram showing yet another example configuration of a decoding device 200 according to this embodiment.

 本例では、復号装置200は、ベースメッシュ復号器613と、変位復号器614と、属性復号器615と、1つ以上の他タイプ復号器616と、三次元再構成器617と、を備える。 In this example, the decoding device 200 includes a base mesh decoder 613, a displacement decoder 614, an attribute decoder 615, one or more other type decoders 616, and a 3D reconstructor 617.

 ビットストリームは、ベースメッシュ復号器613、変位復号器614、属性復号器615、及び、オプションとして1つ以上の他タイプ復号器616に送られる。これらの復号器は、ビットストリームを復号して、頂点ジオメトリ座標、テクスチャ座標及び接続性データを含む復号データを生成する。そして、復号データは三次元再構成器617に送られ、三次元メッシュフレームが再構成される。 The bitstream is sent to a base mesh decoder 613, a displacement decoder 614, an attribute decoder 615, and optionally one or more other type decoders 616. These decoders decode the bitstream to generate decoded data including vertex geometry coordinates, texture coordinates, and connectivity data. The decoded data is then sent to a 3D reconstructor 617, which reconstructs a 3D mesh frame.

 以降において、符号化装置100が行う符号化処理を詳しく説明する。 The encoding process performed by the encoding device 100 will be explained in detail below.

 図31は、符号化装置100の処理を示すフロー図である。図32は、メッシュフレームの符号化を概念的に示す説明図である。図31および図32を参照しながら、符号化装置100の処理を説明する。 Figure 31 is a flow diagram showing the processing of the encoding device 100. Figure 32 is an explanatory diagram conceptually showing the encoding of mesh frames. The processing of the encoding device 100 will be explained with reference to Figures 31 and 32.

 ステップS101において、符号化装置100は、入力メッシュフレームである3Dメッシュフレームとその属性とを読み込む。入力メッシュフレームは、符号化装置100に入力されたメッシュフレームである。入力メッシュフレームである3Dメッシュフレームの例がメッシュフレーム1301として示されている(図32参照)。 In step S101, the encoding device 100 reads a 3D mesh frame, which is an input mesh frame, and its attributes. The input mesh frame is a mesh frame input to the encoding device 100. An example of a 3D mesh frame that is an input mesh frame is shown as mesh frame 1301 (see Figure 32).

 ステップS102において、符号化装置100は、ステップS101で読み込まれた入力メッシュフレームに対してデシメート処理をすることで、入力メッシュフレームより頂点数が少ないベースメッシュフレームを生成する。メッシュフレーム1301をデシメートすることで生成したベースメッシュフレームが、ベースメッシュフレーム1302として示されている(図32参照)。 In step S102, the encoding device 100 performs a decimation process on the input mesh frame read in step S101 to generate a base mesh frame with fewer vertices than the input mesh frame. The base mesh frame generated by decimating mesh frame 1301 is shown as base mesh frame 1302 (see Figure 32).

 ステップS103において、符号化装置100は、復号装置200がメッシュフレームを再構成するために使用する変位情報を算出する。変位情報は、ステップS102で生成したベースメッシュフレームの頂点から、入力メッシュフレームの頂点に向かう変位ベクトルに相当する。変位情報の算出方法としては、入力メッシュフレームの頂点の座標からベースメッシュフレームの頂点の座標を減算する方法がある。メッシュフレーム1301とベースメッシュフレーム1302とから算出される変位情報が変位情報1303として示されている(図32参照)。変位情報1303は、ベクトル形式であり、言い換えれば、変位ベクトルとして表現されている。 In step S103, the encoding device 100 calculates displacement information that the decoding device 200 uses to reconstruct a mesh frame. The displacement information corresponds to a displacement vector pointing from a vertex of the base mesh frame generated in step S102 to a vertex of the input mesh frame. One method for calculating the displacement information is to subtract the coordinates of the vertex of the base mesh frame from the coordinates of the vertex of the input mesh frame. The displacement information calculated from the mesh frame 1301 and the base mesh frame 1302 is shown as displacement information 1303 (see Figure 32). The displacement information 1303 is in vector format, in other words, it is expressed as a displacement vector.

 ステップS104において、符号化装置100は、ステップS102で生成したベースメッシュフレーム、ステップS103で生成した変位情報、および、入力メッシュフレームの属性をビットストリーム(圧縮ビットストリームに相当)に符号化する。ビットストリームの例がビットストリーム1304として示されている(図32参照)。 In step S104, the encoding device 100 encodes the base mesh frame generated in step S102, the displacement information generated in step S103, and the attributes of the input mesh frame into a bitstream (equivalent to a compressed bitstream). An example of the bitstream is shown as bitstream 1304 (see Figure 32).

 具体的には、ビットストリーム1304には、頂点A、C、EおよびFの頂点座標および接続情報と、変位情報と、テクスチャデータを含むビデオビットストリームと、圧縮された属性マップとが含まれる(図32参照)。変位情報は、サブ分割されたベースメッシュフレームから取得された頂点座標に基づいて頂点を変位させるための変位情報が含まれる。圧縮された属性マップは、ベースメッシュフレームと変位情報を用いて再構成されたメッシュフレームにテクスチャデータを適用するためのテクスチャ座標である。 Specifically, bitstream 1304 includes vertex coordinates and connectivity information for vertices A, C, E, and F, displacement information, a video bitstream including texture data, and a compressed attribute map (see FIG. 32). The displacement information includes displacement information for displacing vertices based on vertex coordinates obtained from the subdivided base mesh frame. The compressed attribute map is texture coordinates for applying texture data to a mesh frame reconstructed using the base mesh frame and displacement information.

 以降において、復号装置200が行う復号処理を詳しく説明する。 The decoding process performed by the decoding device 200 will be explained in detail below.

 図33は、復号装置200の処理を示すフロー図である。図34は、3Dメッシュの復号を概念的に示す説明図である。図33および図34を参照しながら、復号装置200の処理を説明する。 Figure 33 is a flow diagram showing the processing of the decoding device 200. Figure 34 is an explanatory diagram conceptually showing the decoding of a 3D mesh. The processing of the decoding device 200 will be explained with reference to Figures 33 and 34.

 ステップS201において、復号装置200は、ビットストリーム(圧縮ビットストリームに相当)からベースメッシュフレームと属性とを復号する。復号されたベースメッシュフレーム(復号ベースメッシュフレームに相当)の例が、復号されたベースメッシュフレーム2301として示されている(図34参照)。 In step S201, the decoding device 200 decodes the base mesh frame and attributes from the bitstream (equivalent to the compressed bitstream). An example of the decoded base mesh frame (equivalent to the decoded base mesh frame) is shown as decoded base mesh frame 2301 (see Figure 34).

 ステップS202において、復号装置200は、ステップS201で復号したベースメッシュフレームに対するサブ分割処理により、サブ分割された頂点を生成する。サブ分割された頂点を含むベースメッシュフレームの例が、ベースメッシュフレーム2302として示されている(図34参照)。 In step S202, the decoding device 200 generates subdivided vertices by performing a subdivision process on the base mesh frame decoded in step S201. An example of a base mesh frame including subdivided vertices is shown as base mesh frame 2302 (see Figure 34).

 ステップS203において、復号装置200は、ビットストリーム(圧縮ビットストリームに相当)から変位情報を復号する。復号された変位情報の例が変位情報2303として示されている(図34参照)。変位情報2303は、ベクトル形式であり、言い換えれば、変位ベクトルとして表現されている。 In step S203, the decoding device 200 decodes the displacement information from the bitstream (equivalent to the compressed bitstream). An example of the decoded displacement information is shown as displacement information 2303 (see Figure 34). The displacement information 2303 is in vector format, in other words, expressed as a displacement vector.

 ステップS204において、復号装置200は、サブ分割された頂点を含むベースメッシュフレームの頂点を、変位情報を用いて新たな位置へ移動させることでメッシュフレームの形状を再構成し、さらに属性情報を適用することにより、メッシュフレームを復元する。属性の一例はテクスチャである。再構成されたメッシュフレームの例が、メッシュフレーム2304として示されている(図34参照)。 In step S204, the decoding device 200 reconstructs the shape of the mesh frame by moving the vertices of the base mesh frame, including the subdivided vertices, to new positions using the displacement information, and then restores the mesh frame by applying attribute information. An example of an attribute is texture. An example of a reconstructed mesh frame is shown as mesh frame 2304 (see Figure 34).

 図35は、本実施の形態に係る復号装置の構成例を示すブロック図である。 FIG. 35 is a block diagram showing an example configuration of a decoding device according to this embodiment.

 図35は、一般的なイントラ復号のブロック図の一例を示す。 Figure 35 shows an example of a block diagram for general intra-decoding.

 図35に示される復号装置は、逆多重化器1231と、スイッチ1232と、静的メッシュ復号器1233と、メッシュバッファ1234と、モーション復号器1235と、ベースメッシュ再構成器1236と、逆量子化器1237と、ビデオ復号器1238と、イメージアンパッカ1239と、逆量子化器1240と、逆ウェーブレット変換器1241と、再構成器1242と、ビデオ復号器1243と、色変換器1244とを備える。 The decoding device shown in FIG. 35 includes a demultiplexer 1231, a switch 1232, a static mesh decoder 1233, a mesh buffer 1234, a motion decoder 1235, a base mesh reconstructor 1236, an inverse quantizer 1237, a video decoder 1238, an image unpacker 1239, an inverse quantizer 1240, an inverse wavelet transformer 1241, a reconstructor 1242, a video decoder 1243, and a color transformer 1244.

 逆多重化器1231は、圧縮されたビットストリームを取得し、ベースメッシュに関する圧縮データ、変位データを含む映像(変位ビットストリームともいう)、属性データを含む映像(属性ビットストリームともいう)を分離する。ベースメッシュに関する圧縮データはスイッチ1232に渡される。スイッチ1232は、ビットストリーム内のパラメータに基づいてイントラ復号処理またはインター復号処理のどちらを実行するかを決定する。 The demultiplexer 1231 takes the compressed bitstream and separates it into compressed data for the base mesh, video containing displacement data (also called a displacement bitstream), and video containing attribute data (also called an attribute bitstream). The compressed data for the base mesh is passed to the switch 1232, which determines whether to perform intra-decoding or inter-decoding based on parameters in the bitstream.

 イントラ復号処理が選択された場合、ビットストリームは、量子化されたベースメッシュを生成する静的メッシュ復号器1233に渡される。静的メッシュ復号器1233は、例えば、3Dメッシュデータのデコードにエッジブレーカアルゴリズムを使用する復号器である。静的メッシュ復号器1233は、ビットストリームから、量子化されたベースメッシュを生成する。静的メッシュ復号器1233により生成された、量子化されたベースメッシュは、インター復号処理が選択されたときに参照するためにメッシュバッファ1234に格納される。 If intra-decoding is selected, the bitstream is passed to a static mesh decoder 1233, which generates a quantized base mesh. The static mesh decoder 1233 is, for example, a decoder that uses an edge breaker algorithm to decode 3D mesh data. The static mesh decoder 1233 generates a quantized base mesh from the bitstream. The quantized base mesh generated by the static mesh decoder 1233 is stored in a mesh buffer 1234 for reference when an inter-decoding process is selected.

 スイッチ1232は、インター復号処理が選択された場合、ベースメッシュに関する圧縮データをモーション復号器1235に渡す。モーション復号器1235は、以前に復号された、量子化されたベースメッシュを受け取り、メッシュバッファ1234に格納されている、量子化されたベースメッシュと、現在の量子化されたベースメッシュとの間の頂点の座標の差を表すモーションデータを復号する。モーションデータと、メッシュバッファ1234に格納されている、量子化されたベースメッシュは、現在の量子化されたベースメッシュの再構成のためにベースメッシュ再構成器1236で使用される。インター復号処理またはイントラ復号処理から得られた、量子化されたベースメッシュは、逆量子化器1237に渡され、復号されたベースメッシュを得る。 If inter-decoding is selected, switch 1232 passes compressed data for the base mesh to motion decoder 1235. Motion decoder 1235 receives a previously decoded quantized base mesh and decodes motion data representing the difference in vertex coordinates between the quantized base mesh stored in mesh buffer 1234 and the current quantized base mesh. The motion data and the quantized base mesh stored in mesh buffer 1234 are used by base mesh reconstructor 1236 to reconstruct the current quantized base mesh. The quantized base mesh resulting from either inter-decoding or intra-decoding is passed to inverse quantizer 1237 to obtain a decoded base mesh.

 変位データを含む映像は、当該ビットストリームが2つのクロマ情報と1つのルマ情報を有する画像フォーマットの変位データを含むので、ビデオ復号器1238に渡される。ビデオ復号器1238は、ビデオフレーム伸張法を用いてデータを復号する。別の例では、変位データは、算術復号器を用いて復号される。この伸張データは、画像形式の伸張データから各頂点に関連するウェーブレット係数を抽出するイメージアンパッカ1239に渡される。逆量子化器1240は、量子化されたウェーブレット係数を各頂点に関連する3成分で逆量子化する。逆ウェーブレット変換器1241は、その結果を逆変換して、最終的に復号された変位データを得る。復号された変位データと復号されたベースメッシュは、再構成器1242に渡される。再構成器1242は、復号されたベースメッシュのエッジの細分化を行い、デコードされた変位データを用いて頂点を変位させ、復号されたメッシュを得る。 The video containing the displacement data is passed to the video decoder 1238, as the bitstream contains the displacement data in an image format with two chroma pieces of information and one luma piece of information. The video decoder 1238 decodes the data using a video frame decompression method. Alternatively, the displacement data can be decoded using an arithmetic decoder. This decompressed data is passed to the image unpacker 1239, which extracts wavelet coefficients associated with each vertex from the image-format decompressed data. The inverse quantizer 1240 dequantizes the quantized wavelet coefficients into the three components associated with each vertex. The inverse wavelet transformer 1241 inversely transforms the result to finally obtain the decoded displacement data. The decoded displacement data and the decoded base mesh are passed to the reconstructor 1242, which performs edge refinement on the decoded base mesh and displaces the vertices using the decoded displacement data to obtain the decoded mesh.

 属性データを含む映像は、復号された属性ビットストリームを得るために、別のビデオ復号器1243に渡される。復号された属性ビットストリームは、色空間とカラーフォーマットの変換のために色変換器1244でさらに処理され、復号された属性マップが得られる。 The video containing the attribute data is passed to another video decoder 1243 to obtain a decoded attribute bitstream. The decoded attribute bitstream is further processed by a color converter 1244 for color space and color format conversion to obtain a decoded attribute map.

 図36は、本実施の形態に係る復号装置の構成例を示すブロック図である。 FIG. 36 is a block diagram showing an example configuration of a decoding device according to this embodiment.

 図36は、復号されたベースメッシュ1251、および、復号された変位データ1254から、復号された3Dメッシュ1256を得る、再構成器の一例を示す図である。 Figure 36 shows an example of a reconstructor that obtains a decoded 3D mesh 1256 from a decoded base mesh 1251 and decoded displacement data 1254.

 復号されたベースメッシュ1251は、サブ分割器1252に渡される。 The decoded base mesh 1251 is passed to the subdivision unit 1252.

 サブ分割器1252は、3Dメッシュ全体の任意の2つの接続された頂点を、それらの間に新しい頂点を追加することによってサブ分割する。この処理は、予め定義された数の頂点を生成するために、前のサブ分割ステップで作成された頂点を含むように数回繰り返すことができる。3Dメッシュ全体にわたる各サブ分割の反復は、新しい詳細度(LoD)を生成する。サブ分割されたメッシュ1253と、復号された変位データ1254とは、変位器1255に渡される。変位器1255は、対応する変位データに従って各頂点を新しい位置に移動させることで、復号された3Dメッシュ1256を生成する。 The subdivision unit 1252 subdivides any two connected vertices across the 3D mesh by adding a new vertex between them. This process can be repeated several times, including vertices created in previous subdivision steps, to generate a predefined number of vertices. Each subdivision iteration across the 3D mesh generates a new level of detail (LoD). The subdivided mesh 1253 and the decoded displacement data 1254 are passed to the displacer 1255, which generates the decoded 3D mesh 1256 by moving each vertex to a new position according to the corresponding displacement data.

 以降において、サブ分割について説明する。サブ分割は、サブ分割器(具体的にはサブ分割器1206またはサブ分割器2204)により実行される。 Subdivision will be described below. Subdivision is performed by a subdivider (specifically, subdivider 1206 or subdivider 2204).

 図37は、サブ分割の例を示す説明図である。 Figure 37 is an explanatory diagram showing an example of subdivision.

 図37の(a)に示されるベースメッシュには、頂点A、BおよびCと、それらの接続性を示す接続情報が含まれている。 The base mesh shown in Figure 37(a) includes vertices A, B, and C, along with connectivity information indicating their connectivity.

 図37の(b)には、1回目のサブ分割により生成されるメッシュ、言い換えれば、1回目のサブ分割後のメッシュが示されている。サブ分割器は、1回目のサブ分割において、頂点D、EおよびFと、それらの接続性を示す接続情報を生成する。サブ分割器が生成した上記メッシュを、LoD1または第1LoDともいう。 (b) in Figure 37 shows the mesh generated by the first subdivision, in other words, the mesh after the first subdivision. In the first subdivision, the subdivider generates vertices D, E, and F and connectivity information indicating their connectivity. The mesh generated by the subdivider is also called LoD1 or first LoD.

 1回目のサブ分割後のメッシュの頂点Dは、頂点Aおよび頂点Bに基づくサブ分割により生成された頂点である。同様に、頂点Eは、頂点Bおよび頂点Cに基づくサブ分割により生成された頂点である。頂点Fは、頂点Aおよび頂点Cに基づくサブ分割により生成された頂点である。 Vertex D of the mesh after the first subdivision is a vertex generated by subdivision based on vertices A and B. Similarly, vertex E is a vertex generated by subdivision based on vertices B and C. Vertex F is a vertex generated by subdivision based on vertices A and C.

 なお、頂点Dは、一例として、その生成の元になった頂点AおよびBを結ぶ線分AB(言い換えれば辺AB)の中点であり得る。同様に、頂点Eは、線分ACの中点であり得る。頂点Fは、線分BCの中点であり得る。 As an example, vertex D may be the midpoint of the line segment AB (in other words, side AB) connecting the vertices A and B that were the basis for its creation. Similarly, vertex E may be the midpoint of the line segment AC. Vertex F may be the midpoint of the line segment BC.

 図37の(c)には、2回目のサブ分割により生成されるメッシュ、言い換えれば、2回目のサブ分割後のメッシュが示されている。サブ分割器は、2回目のサブ分割において、頂点G、H、I、J、K、L、M、NおよびOと、それらの接続性を示す接続情報を生成する。サブ分割器が生成した上記メッシュを、LoD2または第2LoDともいう。 (c) of Figure 37 shows the mesh generated by the second subdivision, in other words, the mesh after the second subdivision. In the second subdivision, the subdivider generates vertices G, H, I, J, K, L, M, N, and O, and connectivity information indicating their connectivity. The mesh generated by the subdivider is also called LoD2 or second LoD.

 2回目のサブ分割後のメッシュの頂点Gは、頂点Aおよび頂点Dに基づくサブ分割により生成された頂点である。同様に、頂点Hは、頂点Aおよび頂点Eに基づくサブ分割により生成された頂点である。頂点Iは、頂点Bおよび頂点Dに基づくサブ分割により生成された頂点である。頂点Jは、頂点Dおよび頂点Fに基づくサブ分割により生成された頂点である。頂点Kは、頂点Eおよび頂点Fに基づくサブ分割により生成された頂点である。頂点Lは、頂点Cおよび頂点Eに基づくサブ分割により生成された頂点である。頂点Mは、頂点Bおよび頂点Fに基づくサブ分割により生成された頂点である。頂点Nは、頂点Cおよび頂点Fに基づくサブ分割により生成された頂点である。頂点Oは、頂点Dおよび頂点Eに基づくサブ分割により生成された頂点である。 Vertex G of the mesh after the second subdivision is a vertex generated by subdivision based on vertices A and D. Similarly, vertex H is a vertex generated by subdivision based on vertices A and E. Vertex I is a vertex generated by subdivision based on vertices B and D. Vertex J is a vertex generated by subdivision based on vertices D and F. Vertex K is a vertex generated by subdivision based on vertices E and F. Vertex L is a vertex generated by subdivision based on vertices C and E. Vertex M is a vertex generated by subdivision based on vertices B and F. Vertex N is a vertex generated by subdivision based on vertices C and F. Vertex O is a vertex generated by subdivision based on vertices D and E.

 なお、頂点Gは、一例として、その生成の元になった頂点AおよびDを結ぶ線分AD(言い換えれば辺AD)の中点であり得る。同様に、頂点Hは、線分AEの中点であり得る。頂点Iは、線分BDの中点であり得る。頂点Jは、線分DFの中点であり得る。頂点Kは、線分EFの中点であり得る。頂点Lは、線分CEの中点であり得る。頂点Mは、線分BFの中点であり得る。頂点Nは、線分CFの中点であり得る。頂点Oは、線分DEの中点であり得る。 As an example, vertex G may be the midpoint of line segment AD (in other words, side AD) connecting vertices A and D, which were the basis for its creation. Similarly, vertex H may be the midpoint of line segment AE. vertex I may be the midpoint of line segment BD. vertex J may be the midpoint of line segment DF. vertex K may be the midpoint of line segment EF. vertex L may be the midpoint of line segment CE. vertex M may be the midpoint of line segment BF. vertex N may be the midpoint of line segment CF. vertex O may be the midpoint of line segment DE.

 以降において、図38および図39を参照しながら頂点の変位について説明する。頂点の変位は、再構成器2209により実行される。 The following describes vertex displacement with reference to Figures 38 and 39. Vertex displacement is performed by the reconstructor 2209.

 図38は、サブ分割後に変位された後の頂点の変位の例を示す説明図である。図39は、オリジナルメッシュの頂点の例を示す説明図である。 Figure 38 is an explanatory diagram showing an example of vertex displacement after subdivision. Figure 39 is an explanatory diagram showing an example of vertices of the original mesh.

 図38の(a)に示されるベースメッシュには、頂点A、B、CおよびZと、それらの接続性を示す接続情報とが含まれている。 The base mesh shown in Figure 38(a) includes vertices A, B, C, and Z, along with connectivity information indicating their connectivity.

 図38の(b)には、1回目のサブ分割により生成されるメッシュ、言い換えれば、1回目のサブ分割後のメッシュ(つまり、第1LoD)が示されている。サブ分割器は、1回目のサブ分割において、頂点S、T、U、XまたはYと、それらの接続性を示す接続情報を生成する。頂点S、T、U、XまたはYについては、図37の(b)に示される頂点D、EおよびFと同様である。 (b) in Figure 38 shows the mesh generated by the first subdivision, in other words, the mesh after the first subdivision (i.e., the first LoD). In the first subdivision, the subdivider generates vertices S, T, U, X, or Y and connectivity information indicating their connectivity. Vertices S, T, U, X, or Y are similar to vertices D, E, and F shown in (b) in Figure 37.

 図38の(c)には、2回目のサブ分割により生成されるメッシュ、言い換えれば、2回目のサブ分割後のメッシュ(つまり、第2LoD)が示されている。サブ分割器は、2回目のサブ分割において、頂点D、E、F、G、およびHと、それらの接続性を示す接続情報を生成とする。頂点D、E、F、G、およびHについては、図37の(c)に示される頂点G、H、I、J、K、L、M、NまたはOと同様である。 (c) of Figure 38 shows the mesh generated by the second subdivision, in other words, the mesh after the second subdivision (i.e., the second LoD). In the second subdivision, the subdivider generates vertices D, E, F, G, and H and connectivity information indicating their connectivity. Vertices D, E, F, G, and H are the same as vertices G, H, I, J, K, L, M, N, or O shown in (c) of Figure 37.

 図38の(d)は、サブ分割後に変位された後の頂点を含むメッシュを示している。図38の(d)に示される頂点A、B、C、D、E、F、G、H、S、T、U、X、YおよびZは、それぞれ、図38の(c)に示される当該頂点の位置から変位情報を用いて変位された位置に位置している。 (d) in Figure 38 shows a mesh including the vertices after they have been displaced following subdivision. Vertices A, B, C, D, E, F, G, H, S, T, U, X, Y, and Z shown in (d) in Figure 38 are each located at positions displaced using displacement information from the positions of the vertices shown in (c) in Figure 38.

 図39に示されるオリジナルメッシュは、符号化装置100に入力されたメッシュ、つまり、符号化前のメッシュの例である。 The original mesh shown in Figure 39 is an example of the mesh input to the encoding device 100, i.e., the mesh before encoding.

 図38に示されるメッシュは、図39に示されるオリジナルメッシュに近い形状を有している。変位情報は、符号化装置100の変位ベクトル算出器1207により、ベースメッシュの頂点からオリジナルメッシュの頂点への変位を示す情報として生成されたものであるので、そのように生成された変位情報を用いてメッシュを再構成することで、オリジナルメッシュに近い形状を有するメッシュが生成される。 The mesh shown in Figure 38 has a shape similar to the original mesh shown in Figure 39. The displacement information is generated by the displacement vector calculator 1207 of the encoding device 100 as information indicating the displacement from the vertices of the base mesh to the vertices of the original mesh, so by reconstructing the mesh using the displacement information generated in this way, a mesh having a shape similar to the original mesh is generated.

 復号装置200は、図38の(d)に示されるメッシュを出力することができる。 The decoding device 200 can output the mesh shown in Figure 38 (d).

 次に、図40および図41を参照しながらメッシュのサブメッシュへの分割を説明する。 Next, we will explain how to divide a mesh into sub-meshes with reference to Figures 40 and 41.

 メッシュは、当該メッシュより小さい複数の部分に分割され、分割された部分ごとに符号化されることが可能である。メッシュの分割の際に、メッシュの頂点は、各部分に含まれる頂点の座標と接続性とが独立して符号化可能であるように分割される。 A mesh can be divided into multiple smaller parts and each part can be coded. When dividing a mesh, the vertices of the mesh are divided in such a way that the coordinates and connectivity of the vertices in each part can be coded independently.

 図40は、メッシュの例を示す説明図である。図41は、メッシュのサブメッシュへの分割の例を示す説明図である。 Figure 40 is an explanatory diagram showing an example of a mesh. Figure 41 is an explanatory diagram showing an example of dividing a mesh into sub-meshes.

 図40に示されるメッシュは、オリジナルメッシュであり、サブメッシュと対比してフルメッシュと呼ばれることもある。 The mesh shown in Figure 40 is the original mesh, and is sometimes called a full mesh in contrast to a submesh.

 図41は、図40に示されるフルメッシュが2つのサブメッシュに分割される様子を示している。フルメッシュの頂点A、BおよびC(図40参照)について、頂点Aが頂点A1と頂点A2とに複製され、頂点Bが頂点B1と頂点B2とに複製され、頂点Cが頂点C1と頂点C2とに複製されることで、フルメッシュから2つのサブメッシュ(つまり第1サブメッシュおよび第2サブメッシュ)が作成される。第1サブメッシュと第2サブメッシュとは、それぞれ、独立に復号可能なメッシュである。 Figure 41 shows how the full mesh shown in Figure 40 is divided into two sub-meshes. For vertices A, B, and C of the full mesh (see Figure 40), vertex A is duplicated to vertex A1 and vertex A2, vertex B is duplicated to vertex B1 and vertex B2, and vertex C is duplicated to vertex C1 and vertex C2, thereby creating two sub-meshes (i.e., the first sub-mesh and the second sub-mesh). The first sub-mesh and the second sub-mesh are meshes that can be decoded independently.

 以降において、図42、図43および図44を参照しながら、変位情報の画像フレームへのパッキングを説明する。 The following describes packing of displacement information into image frames with reference to Figures 42, 43, and 44.

 図42、図43および図44は、変位情報の画像フレームへのパッキングの例を示す説明図である。なお、画像フレームは、ビデオフレームに言い換えることもできる。 Figures 42, 43, and 44 are explanatory diagrams showing examples of packing displacement information into image frames. Note that image frames can also be referred to as video frames.

 頂点の変位データは、例えば、YUVフォーマットの画像フレームの各成分(つまり、Y成分(Y Plane)、U成分(U Plane)およびV成分(V Plane)のそれぞれ)にマッピングされることにより画像フレームデータとして符号化される。この場合を例として下記に説明する。なお、別の例として、頂点の変位データは、RGBフォーマットの画像フレームの各成分(R成分、G成分およびB成分のそれぞれ)にマッピングされることによって画像フレームデータとして符号化されてもよい。 Vertex displacement data is encoded as image frame data by, for example, mapping it to each component of a YUV format image frame (i.e., each of the Y component (Y Plane), U component (U Plane), and V component (V Plane)). This case is explained below as an example. As another example, vertex displacement data may be encoded as image frame data by mapping it to each component of an RGB format image frame (each of the R component, G component, and B component).

 復号装置200は、変位データを抽出するために画像符号化モジュールを使用することができる。変位データは、グローバル座標系(例えば、デカルト座標系)におけるX成分、Y成分もしくはZ成分、または、ローカル座標系における法線、接線、もしくは、両接線成分の形態であってもよい。変位データを画像フレームにマッピングする方法には、下記の方法が含まれる。 The decoding device 200 can use an image encoding module to extract displacement data. The displacement data can be in the form of an X, Y, or Z component in a global coordinate system (e.g., a Cartesian coordinate system), or a normal, tangential, or both tangential components in a local coordinate system. Methods for mapping displacement data to an image frame include the following:

 例えば、第1の方法では、変位データが画像フレームにおいて走査順に配置される。この場合の変位データのパッキングの例が図42に示されている。変位データは、あらかじめ定義された走査順序に従って、画像フレームに直接マッピングされる。 For example, in the first method, the displacement data is arranged in the image frame in scan order. An example of packing the displacement data in this case is shown in Figure 42. The displacement data is directly mapped to the image frame according to a predefined scan order.

 なお、画像フレームは高さと幅とが固定されているため、変位データがフレームにぴったり収まらない場合がある。このような場合、画像フレームの残りの部分がパディング用のデータ(Padded dataともいう)によりパディングされる(図42参照)。 Note that because image frames have fixed height and width, the displacement data may not fit perfectly within the frame. In such cases, the remaining part of the image frame is padded with padding data (see Figure 42).

 例えば、第2の方法では、変位データが複数のLoDに分離され、画像フレームのY成分、U成分およびV成分にマッピングされる。この場合の変位データのパッキングの例が図43に示されている。ここで、次の一のLoDの画像フレームの変位データは、前のLoDの変位データが終了した直後に開始される。第1の方法と同様に、変位データが画像フレームにぴったり収まらない場合には、画像フレームの末尾の部分にパディングが行われる(図43参照)。 For example, in the second method, displacement data is separated into multiple LoDs and mapped to the Y, U, and V components of the image frame. An example of packing of displacement data in this case is shown in Figure 43. Here, the displacement data for the image frame of the next LoD starts immediately after the displacement data for the previous LoD ends. As with the first method, if the displacement data does not fit exactly into the image frame, padding is added to the end of the image frame (see Figure 43).

 例えば、第3の方法では、第2の方法の場合と異なる態様で、LoDに対応する変位データが、画像フレームのY成分、U成分およびV成分にマッピングされる。この場合の変位データのパッキングの例が図44に示されている。このようにすることで、各LoDが独立に復号されることが可能である。第3の方法では、各LoDの変位データに対して中間パディングが行われ、ビデオフレーム末尾のパディングとともにCTUアライメントが行われている(図44参照)。 For example, in the third method, displacement data corresponding to the LoD is mapped to the Y, U, and V components of the image frame in a manner different from that of the second method. An example of packing of displacement data in this case is shown in Figure 44. In this way, each LoD can be decoded independently. In the third method, middle padding is performed on the displacement data of each LoD, and CTU alignment is performed along with padding at the end of the video frame (see Figure 44).

 <その他の例>
 以上、符号化装置及び復号装置の態様を実施の形態に従って説明したが、符号化装置及び復号装置の態様は、実施の形態に限定されない。実施の形態に対して当業者が思いつく変形が施されてもよいし、実施の形態に係る複数の構成要素が任意に組み合わされてもよい。
<Other examples>
Although the aspects of the encoding device and the decoding device have been described above according to the embodiments, the aspects of the encoding device and the decoding device are not limited to the embodiments. Modifications that a person skilled in the art can conceive of may be applied to the embodiments, and multiple components according to the embodiments may be combined in any manner.

 例えば、実施の形態において特定の構成要素によって実行される処理を特定の構成要素の代わりに別の構成要素が実行してもよい。また、複数の処理の順序が変更されてもよいし、複数の処理が並行して実行されてもよい。 For example, in an embodiment, a process performed by a specific component may be performed by another component instead of the specific component. Furthermore, the order of multiple processes may be changed, or multiple processes may be performed in parallel.

 また、上述した通り、本開示の複数の構成の少なくとも一部は、集積回路として実装され得る。本開示の複数の処理の少なくとも一部が符号化方法又は復号方法として利用されてもよい。当該符号化方法又は当該復号方法をコンピュータに実行させるためのプログラムが利用されてもよい。また、当該プログラムが記録された非一時的なコンピュータ読み取り可能な記録媒体が利用されてもよい。また、復号装置に復号処理を行わせるためのビットストリームが利用されてもよい。 Furthermore, as described above, at least some of the configurations of the present disclosure may be implemented as an integrated circuit. At least some of the processes of the present disclosure may be used as an encoding method or a decoding method. A program for causing a computer to execute the encoding method or the decoding method may be used. A non-transitory computer-readable recording medium on which the program is recorded may also be used. A bitstream for causing a decoding device to perform the decoding process may also be used.

 また、本開示の複数の構成及び複数の処理の少なくとも一部が、送信装置、受信装置、送信方法及び受信方法として利用されてもよい。当該送信方法又は当該受信方法をコンピュータに実行させるためのプログラムが利用されてもよい。また、当該プログラムが記録された非一時的なコンピュータ読み取り可能な記録媒体が利用されてもよい。 Furthermore, at least some of the configurations and processes of the present disclosure may be used as a transmitting device, a receiving device, a transmitting method, and a receiving method. A program for causing a computer to execute the transmitting method or the receiving method may also be used. Furthermore, a non-transitory computer-readable recording medium on which the program is recorded may also be used.

 なお、上記実施の形態において、各構成要素は、専用のハードウェアで構成されるか、各構成要素に適したソフトウェアプログラムを実行することによって実現されてもよい。各構成要素は、CPUまたはプロセッサなどのプログラム実行部が、ハードディスクまたは半導体メモリなどの記録媒体に記録されたソフトウェアプログラムを読み出して実行することによって実現されてもよい。ここで、上記実施の形態の符号化装置などを実現するソフトウェアは、次のようなプログラムである。 In the above embodiments, each component may be configured with dedicated hardware, or may be realized by executing a software program appropriate for that component. Each component may also be realized by a program execution unit such as a CPU or processor reading and executing a software program recorded on a recording medium such as a hard disk or semiconductor memory. Here, the software that realizes the encoding device, etc., of the above embodiments is a program such as the following:

 すなわち、上記ソフトウェアは、コンピュータに、符号化の対象である第1フレームを取得し、前記第1フレームに含まれる1以上の階層を有する第1データを、第2フレームに含まれる1以上の階層を有する第2データを参照することを用いて符号化し、前記第1データを符号化する際には、前記第1データが有する前記1以上の階層のそれぞれについて、当該階層を示す値と、前記第2データが有する前記1以上の階層に関する値とを用いて複数の処理のうち1の処理を決定し、決定した前記1の処理を当該階層の第1データに対して実行する符号化方法を実行させるプログラムである。 In other words, the software is a program that causes a computer to execute an encoding method that acquires a first frame to be encoded, encodes first data having one or more layers contained in the first frame by referencing second data having one or more layers contained in a second frame, and, when encoding the first data, determines one of a plurality of processes for each of the one or more layers contained in the first data using a value indicating that layer and a value related to the one or more layers contained in the second data, and executes the determined one process on the first data of that layer.

 また、上記実施の形態の復号装置などを実現するソフトウェアは、次のようなプログラムである。 Furthermore, the software that realizes the decoding device and the like in the above embodiment is the following program.

 すなわち、上記ソフトウェアは、コンピュータに、復号の対象である第1フレームを取得し、前記第1フレームに含まれる1以上の階層を有する第1データを、第2フレームに含まれる1以上の階層を有する第2データを参照することを用いて復号し、前記第1データを復号する際には、前記第1データが有する前記1以上の階層のそれぞれについて、当該階層を示す値と、前記第2データが有する前記1以上の階層に関する値とを用いて複数の処理のうち1の処理を決定し、決定した前記1の処理を当該階層の第1データに対して実行する復号方法を実行させるプログラムである。 In other words, the software is a program that causes a computer to execute a decoding method that acquires a first frame to be decoded, decodes first data having one or more layers contained in the first frame by referencing second data having one or more layers contained in a second frame, and, when decoding the first data, determines one of a plurality of processes for each of the one or more layers contained in the first data using a value indicating that layer and a value related to the one or more layers contained in the second data, and executes the determined one process on the first data of that layer.

 次に、メッシュデータにおける属性情報の例について説明する。ここでの「装置」は、符号化装置または復号装置を示す。図45~図47は、実施の形態にかかるメッシュデータにおける属性情報の例を説明するための図である。 Next, examples of attribute information in mesh data will be described. Here, "device" refers to an encoding device or a decoding device. Figures 45 to 47 are diagrams for explaining examples of attribute information in mesh data according to an embodiment.

 図45に示すように、メッシュデータ内の複数の三次元点G(vertex)がある平面Xに投影され、その投影後の平面X上の二次元座標がこれら三次元点の属性情報として設定されることがある。例えば、三次元点(x, y, z)を平面Xに投影した際の投影後の二次元座標が(u, v)の場合、二次元座標(u, v)が三次元点(x, y, z)の属性情報として設定される。図45では、メッシュデータで示される三次元メッシュの頂点座標の集合1501が平面Xに投影されることで、平面X上の二次元座標の集合1502に変換される例が示されている。 As shown in Figure 45, multiple three-dimensional points G (vertices) in mesh data are projected onto a certain plane X, and the two-dimensional coordinates on plane X after the projection are sometimes set as attribute information for these three-dimensional points. For example, if the two-dimensional coordinates after projection of a three-dimensional point (x, y, z) onto plane X are (u, v), the two-dimensional coordinates (u, v) are set as attribute information for the three-dimensional point (x, y, z). Figure 45 shows an example in which a set 1501 of vertex coordinates of a three-dimensional mesh represented by mesh data is projected onto plane X and converted into a set 1502 of two-dimensional coordinates on plane X.

 また、図46に示すように、メッシュデータ内の複数の三次元点が平面Xに投影され、その投影後の平面X上の二次元座標が属する平面情報が三次元点の属性情報として設定されることがある。例えば、三次元点(x, y, z)を平面Xに投影した際の投影後の二次元座標(u, v)が平面情報face0に属する場合、平面情報face0が三次元点(x, y, z)の属性情報として設定される。この場合、(u, v) = (face0, 0)とすることで、uv座標として三次元点(x, y, z)と平面情報face0とが関連付けられる。この方法により、uv座標と同じ仕組みを用いて三次元点(x, y, z)と平面情報face0との関係性を定義することができる。 Also, as shown in Figure 46, multiple three-dimensional points within mesh data are projected onto plane X, and the plane information to which the two-dimensional coordinates on plane X after the projection belong is sometimes set as the attribute information of the three-dimensional point. For example, if the two-dimensional coordinates (u, v) after the projection of a three-dimensional point (x, y, z) onto plane X belong to plane information face0, then plane information face0 is set as the attribute information of the three-dimensional point (x, y, z). In this case, by setting (u, v) = (face0, 0), the three-dimensional point (x, y, z) and plane information face0 are associated as UV coordinates. This method allows the relationship between the three-dimensional point (x, y, z) and plane information face0 to be defined using the same mechanism as UV coordinates.

 さらに、接続性を持つ三次元点を二次元画像上に投影する際に、同じ平面情報を設定することで、その三次元点に対する属性情報を付加することができる。例えば、次のように処理することができる。 Furthermore, when projecting connected 3D points onto a 2D image, attribute information can be added to the 3D points by setting the same plane information. For example, the following processing can be performed:

 図46の場合、三次元点Gと三次元点Gに接続性がある三次元点に対して、属性情報としてface0が設定される。同様に、三次元点G’と三次元点G’に接続性がある三次元点に対して、属性情報としてface1が設定される。この方法により、復号装置は三次元点の属性情報を復号することで、設定された平面情報を取得することができる。そして、その平面情報を用いて、例えば、関連する投影情報などを取得することができる。 In the case of Figure 46, face0 is set as attribute information for 3D points that have connectivity between 3D points G and G. Similarly, face1 is set as attribute information for 3D points that have connectivity between 3D points G' and G'. Using this method, the decoding device can obtain the set plane information by decoding the attribute information of the 3D points. Then, using this plane information, it can obtain, for example, related projection information.

 さらに、図47に示すように、メッシュデータ内の三次元点、またはその三次元点が属する平面に対応する法線ベクトルを属性情報として設定してもよい。例えば、装置は、三次元点(x, y, z)に対して、その法線ベクトル(nx, ny, nz)を属性情報として設定することができる。また、三次元点Gや、三次元点Gが属する平面に対応する法線ベクトル(nx, ny, nz)をGの属性情報として設定することも可能である。 Furthermore, as shown in FIG. 47, a three-dimensional point in the mesh data, or a normal vector corresponding to the plane to which that three-dimensional point belongs, may be set as attribute information. For example, the device can set the normal vector (nx, ny, nz) for a three-dimensional point (x, y, z) as attribute information. It is also possible to set a three-dimensional point G or a normal vector (nx, ny, nz) corresponding to the plane to which that three-dimensional point G belongs as attribute information for G.

 なお、メッシュデータにおける属性情報はこれに限定されない。属性情報には、例えば、三次元点の色情報、反射率、または三次元点が属するグループIDなど、任意の情報を含めることができる。また、属性情報は、uv座標のような二次元情報、平面情報face0のような一次元情報、法線ベクトルのような三次元情報など、さまざまな次元数を有する情報を含めてもよい。 Note that the attribute information in mesh data is not limited to this. Attribute information can include any information, such as color information of a three-dimensional point, reflectance, or the group ID to which the three-dimensional point belongs. Attribute information may also include information with various dimensionalities, such as two-dimensional information such as UV coordinates, one-dimensional information such as plane information face0, and three-dimensional information such as normal vectors.

 さらに、1つの三次元点に対して複数の属性情報を割り当てることも可能である。例えば、装置は三次元点(x, y, z)に対して、uv座標および法線ベクトルといった複数の属性情報を割り当てることができる。また、属性情報が割り当てられていない三次元点が存在してもよい。このように、さまざまな種類の属性情報を三次元点に割り当てることで、より表現力の高いメッシュデータを生成することができる。 Furthermore, it is possible to assign multiple pieces of attribute information to a single 3D point. For example, the device can assign multiple pieces of attribute information, such as UV coordinates and a normal vector, to a 3D point (x, y, z). Also, there may be 3D points to which no attribute information has been assigned. In this way, by assigning various types of attribute information to 3D points, it is possible to generate mesh data with greater expressiveness.

 本実施の形態では、装置による属性情報の符号化または復号の方法の例を示す。ここで示す例は、三次元点に割り当てられた1つの属性情報を符号化または復号する場合について説明するものであるが、これに限定されるものではない。例えば、三次元点に2つ以上の属性情報が割り当てられている場合、本実施の形態を用いて、それぞれの属性情報を個別に符号化または復号することも可能である。これにより、複数の属性情報が割り当てられている三次元点であっても、それらの属性情報を効率的に符号化または復号することができる。 In this embodiment, an example of a method for encoding or decoding attribute information by a device is shown. The example shown here describes the case of encoding or decoding one piece of attribute information assigned to a three-dimensional point, but is not limited to this. For example, if two or more pieces of attribute information are assigned to a three-dimensional point, it is also possible to use this embodiment to encode or decode each piece of attribute information individually. This makes it possible to efficiently encode or decode the attribute information even for three-dimensional points to which multiple pieces of attribute information are assigned.

 本実施の形態では、属性情報として、uv座標を用いた例を示すが、他の属性情報にも適用可能である。図48~図53は、属性情報の符号化方法の具体例を説明するための図である。 In this embodiment, an example is shown in which UV coordinates are used as attribute information, but other attribute information can also be used. Figures 48 to 53 are diagrams for explaining specific examples of methods for encoding attribute information.

 まず、図48に示すように、装置は第1の初期三次元点v0を選択し、そのuv座標を予測なしで符号化する。例えば、次の場合、装置は(u0, v0)の値をそのまま符号化してもよい。なお、属性情報を符号化する三次元点の選択順は任意であり、例えば、装置は三次元点のポジション情報を符号化した際と同じ順で選択してもよい。これにより、装置は三次元点を選択する処理量を削減しながら予測符号化を適用できる。 First, as shown in Figure 48, the device selects a first initial 3D point v0 and encodes its uv coordinates without prediction. For example, in the following case, the device may encode the value of (u0, v0) as is. Note that the order in which the 3D points for encoding attribute information are selected is arbitrary; for example, the device may select them in the same order as when encoding the position information of the 3D points. This allows the device to apply predictive encoding while reducing the amount of processing required to select 3D points.

 次に、図49に示すように、装置は三次元点v1を選択する。三次元点v1が符号化済みの三次元点vと接続性を持つ、すなわちエッジを持つ場合、装置は三次元点v0のuv座標を予測値として、三次元点v1のuv座標を差分符号化することができる。例えば、次の場合、装置は(u1 - u0, v1 - v0)を符号化することができる。これにより、三次元点v0と三次元点v1のuv座標の値が近い場合に符号量を削減できる。なお、このように接続性を持つ1点の三次元点のuv座標を用いて予測符号化する方法を「coarse予測」と呼ぶ。 Next, as shown in Figure 49, the device selects 3D point v1. If 3D point v1 has connectivity with an already-encoded 3D point v, i.e., if they have an edge, the device can use the UV coordinates of 3D point v0 as predicted values and differentially encode the UV coordinates of 3D point v1. For example, in the following case, the device can encode (u1 - u0, v1 - v0). This makes it possible to reduce the amount of coding when the UV coordinate values of 3D point v0 and 3D point v1 are close. Note that this method of predictive encoding using the UV coordinates of a single connected 3D point is called "coarse prediction."

 次に、図50に示すように、装置は三次元点v2を選択する。三次元点v2が符号化済みの三次元点v0および三次元点v1と接続性を持つ、すなわち三次元点v2と三次元点v1および三次元点v2と三次元点v0がエッジを持つ場合、装置は三次元点v0と三次元点v1のuv座標を用いて予測値を生成し、三次元点v2のuv座標を差分符号化することができる。例えば、次の場合、装置は(u2 - predx, v2 - predy)を符号化することができる。これにより、三次元点v0と三次元点v1を用いて高精度に予測値を生成することで、符号量を削減できる。なお、このように接続性を持つ2点以上の三次元点のuv座標を用いて予測符号化する方法を「fine予測」と呼ぶ。 Next, as shown in Figure 50, the device selects 3D point v2. If 3D point v2 has connectivity with already-encoded 3D points v0 and v1, i.e., if 3D point v2 has edges with 3D point v1 and v2 with 3D point v0, the device can generate a predicted value using the UV coordinates of 3D points v0 and v1, and differentially encode the UV coordinates of 3D point v2. For example, in the following case, the device can encode (u2 - predx, v2 - predy). This allows for highly accurate generation of a predicted value using 3D points v0 and v1, thereby reducing the amount of coding. Note that this method of predictive encoding using the UV coordinates of two or more connected 3D points is called "fine prediction."

 次に、図51に示すように、装置は三次元点v3を選択する。三次元点v3が符号化済みの三次元点v1および三次元点v2と接続性を持つ、すなわち三次元点v3と三次元点v1および三次元点v3と三次元点v2がエッジを持つ場合、装置は三次元点v1と三次元点v2のuv座標を用いてfine予測による予測値を生成し、三次元点v3のuv座標を差分符号化することができる。 Next, as shown in Figure 51, the device selects 3D point v3. If 3D point v3 has connectivity with already-encoded 3D points v1 and v2, i.e., if 3D point v3 has edges with 3D point v1 and 3D point v3 with 3D point v2, the device can generate predicted values using fine prediction using the UV coordinates of 3D points v1 and v2, and differentially encode the UV coordinates of 3D point v3.

 次に、図52に示すように、装置は三次元点v4を選択する。三次元点v4が符号化済みの三次元点v0および三次元点v1および三次元点v3と接続性を持つ、すなわち三次元点v4と三次元点v3、三次元点v4と三次元点v1および三次元点v4と三次元点v3がエッジを持つ場合、装置は三次元点v0と三次元点v1と三次元点v3のuv座標を用いてfine予測による予測値を生成し、三次元点v4のuv座標を差分符号化することができる。この場合、例えば、装置は三次元点v0と三次元点v1のuv座標を用いてfine予測値1を算出し、三次元点v1と三次元点v3のuv座標を用いてfine予測値2を算出し、fine予測値1とfine予測値2の平均値を三次元点v4のuv座標の予測値としてもよい。このように2個以上のfine予測値が算出可能な場合、その平均値を予測値とすることで予測精度を向上させ、符号量を削減することができる。 Next, as shown in FIG. 52, the device selects 3D point v4. If 3D point v4 has connectivity with already-encoded 3D points v0, v1, and v3, i.e., if 3D point v4 and 3D point v3, and if 3D point v4 and 3D point v1 and 3D point v4 and 3D point v3 have edges, the device can generate a predicted value by fine prediction using the UV coordinates of 3D points v0, v1, and v3, and differentially encode the UV coordinates of 3D point v4. In this case, for example, the device may calculate fine prediction value 1 using the UV coordinates of 3D points v0 and v1, calculate fine prediction value 2 using the UV coordinates of 3D points v1 and v3, and use the average of fine prediction value 1 and fine prediction value 2 as the predicted value for the UV coordinate of 3D point v4. In this way, when two or more fine prediction values can be calculated, using their average as the predicted value can improve prediction accuracy and reduce the amount of coding.

 次に、図53に示すように、装置は三次元点v5を選択する。三次元点v5がどの符号化済みの三次元点とも接続性を持たない場合、装置は三次元点v5を第2の初期三次元点として選択し、最初の処理と同様に予測なしで(u5, v5)の値をそのまま符号化することができる。以降も同様に、装置は各処理を用いて予測符号化を適用することで、uv座標の符号量を削減することができる。 Next, as shown in Figure 53, the device selects 3D point v5. If 3D point v5 has no connectivity with any previously encoded 3D points, the device selects 3D point v5 as the second initial 3D point and can encode the value of (u5, v5) directly without prediction, as in the first process. Similarly, the device can reduce the amount of coding for the uv coordinates by applying predictive coding using each process thereafter.

 次に、属性情報を符号化するための予測モードの例を説明する。 Next, we will explain examples of prediction modes for encoding attribute information.

 まず、予測なしモードについて説明する。予測なしモードは、第1予測モードの一例である。予測なしモードは、符号化対象の三次元点が初期三次元点である場合に適用される。ここで、初期三次元点とは、既に符号化済みであり、かつ、その三次元点と接続性を持つ他の符号化済み三次元点が存在しない場合の処理対象の三次元点を指す。 First, we will explain the no-prediction mode. The no-prediction mode is an example of the first prediction mode. The no-prediction mode is applied when the 3D point to be coded is an initial 3D point. Here, the initial 3D point refers to a 3D point to be processed that has already been coded and for which there are no other coded 3D points that have connectivity with that 3D point.

 装置は、予測なしモードの場合に属性情報の値をそのまま符号化することができる。例えば、uv座標が(100, 60)の場合、装置はuの値100とvの値60とをそれぞれ符号化することができる。装置は、nbitで固定長符号化(nは0以上の整数値)することを想定してもよい。例えば、uv座標が(100, 60)の場合、装置は各成分を7bitで固定長符号化することができる。 In no-prediction mode, the device can encode the attribute information values as is. For example, if the uv coordinates are (100, 60), the device can encode the u value as 100 and the v value as 60. The device may also assume fixed-length encoding using n bits (n is an integer value greater than or equal to 0). For example, if the uv coordinates are (100, 60), the device can encode each component using fixed-length encoding using 7 bits.

 装置がnbitの固定長符号化を適用する場合、装置は値nをビットストリームのヘッダに付加してもよい。これにより、復号装置はヘッダの値nを復号することで、nbit固定長で符号化された初期三次元点の属性情報を正しく復号することができる。 If a device applies n-bit fixed-length coding, the device may add the value n to the header of the bitstream. This allows the decoding device to correctly decode the attribute information of the initial 3D point coded in n-bit fixed length by decoding the value n of the header.

 装置は、属性情報の各成分ごとに固定長符号化に用いるビット長を変えてもよい。例えば、uv座標が(100, 60)の場合、装置はuには7bitの固定長符号化を適用し、vには6bitの固定長符号化を適用することで符号量を削減することができる。この際、装置は各成分の固定長符号化に使用したビット長をそれぞれビットストリームのヘッダに付加してもよい。これにより、復号装置はヘッダの各成分ごとのビット長を復号することで、成分ごとにビット長を変えて符号化した初期三次元点の属性情報を正しく復号することができる。 The device may change the bit length used for fixed-length encoding for each component of the attribute information. For example, if the u and v coordinates are (100, 60), the device can reduce the amount of code by applying 7-bit fixed-length encoding to u and 6-bit fixed-length encoding to v. In this case, the device may add the bit lengths used for the fixed-length encoding of each component to the header of the bit stream. This allows the decoding device to correctly decode the attribute information of the initial 3D point that was encoded using different bit lengths for each component by decoding the bit length for each component in the header.

 装置は、各成分ごとのビット長を0bitに設定することができる。0bitの場合、その成分がビットストリームに含まれないことを示してもよい。復号装置は、ヘッダに付加されたビット長が0bitの場合、その成分がビットストリームに含まれていないと判定し、その成分の値を0として推定することができる。例えば、属性情報において常に値が0である成分が含まれる場合、装置はその成分の固定長符号化のビット長を0bitに設定し、値0を符号化しないことで符号量を削減することができる。また、復号装置は、ヘッダに付加されたビット長が0bitの場合、その成分をビットストリームに含まれていないと判定し、その成分の値を0として推定することができる。 The device can set the bit length for each component to 0 bits. 0 bits may indicate that the component is not included in the bitstream. If the bit length added to the header is 0 bits, the decoding device can determine that the component is not included in the bitstream and estimate the value of the component to be 0. For example, if the attribute information includes a component whose value is always 0, the device can set the bit length of the fixed-length coding of that component to 0 bits and reduce the amount of code by not encoding the value 0. Furthermore, if the bit length added to the header is 0 bits, the decoding device can determine that the component is not included in the bitstream and estimate the value of the component to be 0.

 例えば、図46を用いて説明したように、装置は三次元点G(x, y, z)をxz平面に投影し、投影後のxy平面上の二次元座標(u, v)が属する平面face0をGに対する属性情報としてもよい。この場合、装置は(u, v)=(face0, 0)とすることで、uv座標としてGとface0を関連付けることができる。この場合、vは常に値0であるため、装置はvの固定長符号化のビット長を0bitに設定し、vの値0をビットストリームに含めないことで符号量を削減することができる。 For example, as explained using Figure 46, the device may project a three-dimensional point G(x, y, z) onto the xz plane, and use the plane face0 to which the two-dimensional coordinates (u, v) on the xy plane after projection belong as attribute information for G. In this case, the device can associate G with face0 as uv coordinates by setting (u, v) = (face0, 0). In this case, since v is always 0, the device can reduce the amount of code by setting the bit length of the fixed-length encoding of v to 0 bits and not including the value 0 for v in the bitstream.

 装置は、初期三次元点の属性情報を、unary符号化またはexponential golomb符号化などによる可変長符号化で符号化してもよい。また、装置は二値化後の各ビットに対してコンテキストを割り当て、算術符号化を適用することにより符号量を削減することができる。 The device may encode the attribute information of the initial three-dimensional points using variable-length coding such as unary coding or exponential golomb coding. The device can also reduce the amount of coding by assigning a context to each bit after binarization and applying arithmetic coding.

 なお、初期三次元点に必ずしも予測なしモードを適用する必要はなく、装置は他の予測方法を適用してもよい。例えば、装置は初期三次元点の代表値を算出し、その代表値を予測値として初期三次元点の属性情報を予測符号化することができる。代表値としては、例えば、初期三次元点の平均値などを用いてもよい。この場合、装置はヘッダに代表値を付加することで、復号装置がヘッダを復号して初期三次元点の予測値を取得し、正しく復号できるようにすることができる。また、装置は初期三次元点の属性情報の予測値として、符号化または復号順で直前に符号化または復号された初期三次元点の属性情報を用いてもよい。これにより、装置は初期三次元点の属性情報を予測符号化することで符号量を削減することができる。 Note that it is not necessary to apply the no-prediction mode to the initial 3D points, and the device may apply other prediction methods. For example, the device may calculate a representative value for the initial 3D points and predictively encode the attribute information of the initial 3D points using that representative value as a predicted value. The representative value may be, for example, the average value of the initial 3D points. In this case, the device may add the representative value to the header, allowing the decoding device to decode the header, obtain the predicted value of the initial 3D points, and perform correct decoding. The device may also use the attribute information of the initial 3D points that was coded or decoded immediately before in the coding or decoding order as the predicted value of the attribute information of the initial 3D points. In this way, the device can reduce the amount of code by predictively encoding the attribute information of the initial 3D points.

 次に、coarse予測モードについて説明する。coarse予測モードは、第2予測モードの一例である。coarse予測モードは、符号化済みの三次元点の中に、符号化対象の三次元点に対して、接続性がある三次元点が1個ある場合に適用される。 Next, we will explain coarse prediction mode. Coarse prediction mode is an example of a second prediction mode. Coarse prediction mode is applied when, among the already-encoded 3D points, there is one 3D point that has connectivity with the 3D point to be encoded.

 装置は、coarse予測を適用する場合、符号化済みで接続性がある1個の三次元点の属性情報を予測値として使用し、その予測残差を符号化することができる。なお、fine予測とは予測残差の傾向が異なる可能性があるため、装置はcoarse予測及びfine予測において予測残差の符号化または復号方法を異なる方法にしてもよい。 When applying coarse prediction, the device can use attribute information of a single 3D point that has already been coded and has connectivity as a predicted value, and encode the prediction residual. Note that, because the tendency of the prediction residual may differ from that in fine prediction, the device may use different methods for encoding or decoding the prediction residual in coarse prediction and fine prediction.

 例えば、装置は予測残差をunary符号化やexponential golomb符号化などで二値化し、各ビットに対してコンテキストを割り当て、算術符号化を適用する場合において、coarse予測とfine予測で異なるコンテキストを用いてもよい。これにより、coarse予測とfine予測で予測残差の値の傾向が異なる場合においても、符号量を削減することができる。また、装置はcoarse予測とfine予測で異なる二値化方法を用いることにより、符号量をさらに削減することができる。 For example, a device may binarize the prediction residual using unary coding or exponential golomb coding, assign a context to each bit, and use different contexts for coarse prediction and fine prediction when applying arithmetic coding. This makes it possible to reduce the amount of coding even when the trends in the prediction residual values differ between coarse prediction and fine prediction. Furthermore, by using different binarization methods for coarse prediction and fine prediction, a device can further reduce the amount of coding.

 次に、fine予測モードについて説明する。fine予測モードは、第3予測モードの一例である。fine予測モードは、符号化済みの三次元点の中に、符号化対象の三次元点に対して、接続性がある三次元点が2個以上ある場合に適用される。 Next, we will explain the fine prediction mode. The fine prediction mode is an example of the third prediction mode. The fine prediction mode is applied when, among the already-encoded 3D points, there are two or more 3D points that have connectivity with the 3D point to be encoded.

 装置は、fine予測を適用する場合、符号化済みで接続性がある2個以上の三次元点の属性情報を用いて予測値を算出し、その予測残差を符号化することができる。なお、装置は符号化対象属性情報を持つ三次元点が、符号化済み三次元点から構成される2個以上の複数の三角形の頂点に属する場合(図52の三次元点v4のように)、2個以上の三角形を用いて2個以上のfine予測値を生成することができるケースがある。その場合、装置は2個以上の複数のfine予測値の平均値を予測値(平均fine予測)として使用してもよい。 When applying fine prediction, the device can calculate a predicted value using attribute information of two or more 3D points that have already been coded and have connectivity, and encode the prediction residual. Note that when a 3D point with attribute information to be coded belongs to the vertices of two or more triangles made up of coded 3D points (such as 3D point v4 in Figure 52), the device may be able to generate two or more fine predicted values using two or more triangles. In such cases, the device may use the average value of two or more fine predicted values as the predicted value (average fine prediction).

 例えば、装置がcount個のfine予測値を生成できた場合、装置はcount個のfine予測値の合計を算出し、その値をcountで除算することで平均fine予測値を算出し、その平均fine予測値を符号化対象属性情報の予測値としてもよい。これにより、装置はfine予測による予測値の精度を向上させ、符号量を削減することができる。 For example, if the device is able to generate count fine predicted values, the device may calculate the sum of the count fine predicted values, divide this value by count to calculate an average fine predicted value, and use this average fine predicted value as the predicted value for the attribute information to be coded. This allows the device to improve the accuracy of the predicted values obtained by fine prediction and reduce the amount of coding.

 また、装置はcountの値を2のべき乗に制限してもよい。例えば、平均fine予測に用いるfine予測のcountを、1個、2個、4個、または8個というように2のべき乗に制限することで、装置は平均値算術時に除算を用いる代わりに右ビットシフトを用いることができ、演算量を削減できる。例えば、count=2の場合は右1bitシフト、count=4の場合は右2bitシフトを適用することで、除算を用いずに平均fine予測値を生成することができる。 The device may also limit the value of count to a power of 2. For example, by limiting the count of fine predictions used for average fine prediction to a power of 2, such as 1, 2, 4, or 8, the device can use a right bit shift instead of division when calculating the average value, thereby reducing the amount of calculations. For example, by applying a 1-bit right shift when count = 2 and a 2-bit right shift when count = 4, the average fine prediction value can be generated without using division.

 なお、この場合、2のべき乗でないcountを用いる平均fine予測は禁止とし、装置はその算出を省略してもよい。これにより、装置は平均fine予測値を算出するための処理量を削減することができる。また、装置は平均fine予測の算出に用いるcountの個数に制限を設けてもよい。例えば、装置はcountの最大値を示すfineMaxcountを設け、平均fine予測値を算出するfine予測の数をfineMaxcount以下に制限することができる。これにより、装置は平均fine予測を算出する処理量を削減することができる。 In this case, average fine predictions using counts that are not powers of two may be prohibited, and the device may omit their calculation. This allows the device to reduce the amount of processing required to calculate the average fine prediction value. The device may also set a limit on the number of counts used to calculate the average fine prediction. For example, the device can set a fineMaxcount that indicates the maximum value of count, and limit the number of fine predictions used to calculate the average fine prediction value to no more than fineMaxcount. This allows the device to reduce the amount of processing required to calculate the average fine prediction.

 装置は、fineMaxcountをビットストリームのヘッダに付加してもよい。これにより、復号装置はヘッダのfineMaxcountを復号することで、符号化装置と同じcountの最大値を用いて平均fine予測値を算出でき、ビットストリームを正しく復号することができる。 The device may add fineMaxcount to the header of the bitstream. This allows the decoding device to decode the fineMaxcount in the header, calculate the average fine prediction value using the same maximum count value as the encoding device, and correctly decode the bitstream.

 また、装置はfineMaxcount=1と設定することで、平均fine予測値の算出に用いるfine予測の数を1個に制限することができ、実質的に平均値計算を不要とすることができる。これにより、平均値を算出する処理量を削減できるとともに、平均値算出によって生じる小数点以下の数値の発生を防ぐことができる。 Furthermore, by setting fineMaxcount = 1, the device can limit the number of fine predictions used to calculate the average fine prediction value to 1, essentially eliminating the need to calculate the average value. This reduces the amount of processing required to calculate the average value and prevents decimal points from appearing when calculating the average value.

 さらに、装置はfineMaxcount=0と設定することで、fine予測を行わないようにすることができる。この場合、予測モードとしては、(1)予測なしモードまたは(2)coarse予測モードなどが使用されることになる。例えば、初期三次元点に続く三次元点の属性情報がすべて同じであるような場合、装置は初期三次元点に予測なしモードを適用し、それ以降の三次元点にcoarse予測を適用することで予測残差を常に0にすることができ、fine予測を適用する必要がないケースがある。そのような場合、装置はfineMaxcount=0とすることでfine予測を適用しないようにし、符号化または復号にかかる処理量を削減することができる。 Furthermore, the device can set fineMaxcount = 0 so that fine prediction is not performed. In this case, the prediction mode used will be (1) no prediction mode or (2) coarse prediction mode. For example, if the attribute information of all 3D points following the initial 3D point is the same, the device can apply no prediction mode to the initial 3D point and apply coarse prediction to subsequent 3D points, which can keep the prediction residual at 0 and make it unnecessary to apply fine prediction. In such cases, the device can set fineMaxcount = 0 so that fine prediction is not applied, reducing the amount of processing required for encoding or decoding.

 また、装置はfine予測に必要な追加情報が存在する場合にfineMaxcount=0と設定し、fine予測を適用しないことで、追加情報を削減し、符号量を削減することができる。 In addition, if additional information required for fine prediction exists, the device sets fineMaxcount = 0 and does not apply fine prediction, thereby reducing the amount of additional information and the amount of coding.

 なお、上記の予測符号化は、予測復号にも同様に適用できる。つまり、上記の「符号化」を「復号」に読み替えることで、上記の予測符号化の説明を予測復号の説明とすることができる。 Note that the above predictive coding can also be applied to predictive decoding. In other words, by replacing "encoding" with "decoding" above, the above explanation of predictive coding can be used as an explanation of predictive decoding.

 図54は、実施の形態に係る三次元点の属性情報の符号化のフローチャートの一例を示す図である。 Figure 54 shows an example of a flowchart for encoding attribute information of three-dimensional points according to an embodiment.

 符号化装置は、三次元メッシュの複数の三次元点(頂点)を取得する(S1501)。 The encoding device acquires multiple 3D points (vertices) of the 3D mesh (S1501).

 符号化装置は、属性情報を符号化していない三次元点があるか否かを判定する(S1502)。符号化装置は、属性情報を符号化していない三次元点がある場合(S1502でYes)、ステップS1503に進み、そうでない場合(S1502でNo)、処理を終了する。 The encoding device determines whether there are any 3D points for which attribute information has not been encoded (S1502). If there are any 3D points for which attribute information has not been encoded (Yes in S1502), the encoding device proceeds to step S1503; if not (No in S1502), the encoding device terminates processing.

 符号化装置は、複数の三次元点のうちの符号化していない三次元点の中から、符号化対象の三次元点を選択する(S1503)。 The encoding device selects a 3D point to be encoded from among the multiple 3D points that have not yet been encoded (S1503).

 符号化装置は、符号化対象の三次元点と接続性を有する符号化済みの三次元点が2個以上あるか否かを判定する(S1504)。符号化装置は、符号化対象の三次元点と接続性を有する符号化済みの三次元点が2個以上ある場合(S1504でYes)、ステップS1505に進み、そうでない場合(S1504でNo)、ステップS1508に進む。 The encoding device determines whether there are two or more encoded 3D points that have connectivity with the 3D point to be encoded (S1504). If there are two or more encoded 3D points that have connectivity with the 3D point to be encoded (Yes in S1504), the encoding device proceeds to step S1505; if not (No in S1504), the encoding device proceeds to step S1508.

 符号化装置は、2個以上の三次元点の属性情報を用いて予測値を算出する(S1505)。 The encoding device calculates a predicted value using attribute information of two or more three-dimensional points (S1505).

 符号化装置は、countが0より大きいか否かを判定する(S1506)。符号化装置は、countが0より大きい場合(S1506でYes)、ステップS1507に進み、そうでない場合(S1506でNo)、ステップS1508に進む。 The encoding device determines whether count is greater than 0 (S1506). If count is greater than 0 (Yes in S1506), the encoding device proceeds to step S1507; if not (No in S1506), the encoding device proceeds to step S1508.

 符号化装置は、符号化対象の三次元点の属性情報を、算出した予測値を用いて符号化する(S1507)。つまり、符号化装置は、符号化対象の三次元点の属性情報と、2個以上の三次元点の属性情報を用いて算出した予測値との残差を算出し、算出した残差を符号化する。ステップS1507は、第3予測モードの予測符号化である。 The encoding device encodes the attribute information of the 3D point to be encoded using the calculated predicted value (S1507). In other words, the encoding device calculates the residual between the attribute information of the 3D point to be encoded and a predicted value calculated using the attribute information of two or more 3D points, and encodes the calculated residual. Step S1507 is predictive encoding in the third prediction mode.

 符号化装置は、符号化対象の三次元点と接続性を有する符号化済みの三次元点が1個あるか否かを判定する(S1508)。符号化装置は、符号化対象の三次元点と接続性を有する符号化済みの三次元点が1個ある場合(S1508でYes)、ステップS1509に進み、そうでない場合(S1508でNo)、ステップS1510に進む。 The encoding device determines whether there is one encoded 3D point that has connectivity with the 3D point to be encoded (S1508). If there is one encoded 3D point that has connectivity with the 3D point to be encoded (Yes in S1508), the encoding device proceeds to step S1509; if not (No in S1508), the encoding device proceeds to step S1510.

 符号化装置は、符号化対象の三次元点の属性情報を、1個の三次元点の属性情報を予測値として用いて符号化する(S1509)。つまり、符号化装置は、符号化対象の三次元点の属性情報と、1個の三次元点の属性情報との残差を算出し、算出した残差を符号化する。ステップS1509は、第2予測モードの予測符号化である。 The encoding device encodes the attribute information of the 3D point to be encoded using the attribute information of one 3D point as a predicted value (S1509). In other words, the encoding device calculates the residual between the attribute information of the 3D point to be encoded and the attribute information of one 3D point, and encodes the calculated residual. Step S1509 is predictive encoding in the second prediction mode.

 符号化装置は、符号化対象の三次元点の属性情報を、予測なしモードで符号化する(S1510)。つまり、符号化装置は、符号化対象の三次元点の属性情報を、予測値を用いずに符号化する。ステップS1510は、第1予測モードの予測符号化である。 The encoding device encodes the attribute information of the 3D point to be encoded in a no-prediction mode (S1510). In other words, the encoding device encodes the attribute information of the 3D point to be encoded without using a predicted value. Step S1510 is predictive encoding in the first prediction mode.

 図55は、実施の形態に係る第3予測モードの予測値の算出処理の一例を示すフローチャートである。 FIG. 55 is a flowchart showing an example of a process for calculating a predicted value in the third prediction mode according to an embodiment.

 符号化装置は、countを0に設定する(S1511)。 The encoding device sets count to 0 (S1511).

 符号化装置は、countがfineMaxcount未満であるか否かを判定する(S1512)。符号化装置は、countがfineMaxcount未満である場合(S1512でYes)、ステップS1513に進み、そうでない場合(S1512でNo)、ステップS1515に進む。なお、符号化装置がfineMaxcount=0と設定することで、fine予測をオフにすることができる。また、符号化装置は、設定したfineMaxcountの値をビットストリームに付加してもよい。 The encoding device determines whether count is less than fineMaxcount (S1512). If count is less than fineMaxcount (Yes in S1512), the encoding device proceeds to step S1513; if not (No in S1512), the encoding device proceeds to step S1515. Note that the encoding device can turn off fine prediction by setting fineMaxcount=0. The encoding device may also add the set fineMaxcount value to the bitstream.

 またデコーダは、bitstreamから復号したfineMaxcountの値が0の場合は、fine予測を適用せずに属性情報を復号してもよい。 Furthermore, if the value of fineMaxcount decoded from the bitstream is 0, the decoder may decode the attribute information without applying fine prediction.

 符号化装置は、count番目のfine予測値を算出する(S1513)。 The encoding device calculates the count-th fine prediction value (S1513).

 符号化装置は、countに1を加算して、countを更新し(S1514)、ステップS1512に戻る。 The encoding device adds 1 to count, updates it (S1514), and returns to step S1512.

 符号化装置は、countが0より大きいか否かを判定する(S1515)。符号化装置は、countが0より大きい場合(S1515でYes)、ステップS1516に進み、そうでない場合(S1515でNo)、ステップS1517に進む。 The encoding device determines whether count is greater than 0 (S1515). If count is greater than 0 (Yes in S1515), the encoding device proceeds to step S1516; if not (No in S1515), the encoding device proceeds to step S1517.

 符号化装置は、平均fine予測値を算出する(S1516)。つまり、符号化装置は、1個以上のfine予測値の平均を平均fine予測値として算出する。なお、符号化装置は、fine予測値が1個の場合、1個のfine予測値を平均fine予測値として算出してもよい。なお、1個以上のfine予測値は、ステップS1511~S1514において得られたcount個のfine予測値である。 The encoding device calculates the average fine prediction value (S1516). That is, the encoding device calculates the average of one or more fine prediction values as the average fine prediction value. Note that if there is one fine prediction value, the encoding device may calculate that one fine prediction value as the average fine prediction value. Note that the one or more fine prediction values are the count fine prediction values obtained in steps S1511 to S1514.

 符号化装置は、countを出力する(S1517)。 The encoding device outputs count (S1517).

 図56は、実施の形態に係る三次元点の属性情報の復号のフローチャートの一例を示す図である。 Figure 56 shows an example of a flowchart for decoding attribute information of 3D points according to an embodiment.

 復号装置は、三次元メッシュの複数の三次元点(頂点)を取得する(S1521)。 The decoding device obtains multiple 3D points (vertices) of the 3D mesh (S1521).

 復号装置は、属性情報を復号していない三次元点があるか否かを判定する(S1522)。復号装置は、属性情報を復号していない三次元点がある場合(S1522でYes)、ステップS1523に進み、そうでない場合(S1522でNo)、処理を終了する。 The decoding device determines whether there are any 3D points for which attribute information has not been decoded (S1522). If there are any 3D points for which attribute information has not been decoded (Yes in S1522), the decoding device proceeds to step S1523; if not (No in S1522), the decoding device terminates processing.

 復号装置は、複数の三次元点のうちの復号していない三次元点の中から、復号対象の三次元点を選択する(S1523)。 The decoding device selects a 3D point to be decoded from among the multiple 3D points that have not yet been decoded (S1523).

 復号装置は、復号対象の三次元点と接続性を有する復号済みの三次元点が2個以上あるか否かを判定する(S1524)。復号装置は、復号対象の三次元点と接続性を有する復号済みの三次元点が2個以上ある場合(S1524でYes)、ステップS1525に進み、そうでない場合(S1524でNo)、ステップS1528に進む。 The decoding device determines whether there are two or more decoded 3D points that have connectivity with the 3D point to be decoded (S1524). If there are two or more decoded 3D points that have connectivity with the 3D point to be decoded (Yes in S1524), the decoding device proceeds to step S1525; if not (No in S1524), the decoding device proceeds to step S1528.

 復号装置は、2個以上の三次元点の属性情報を用いて予測値を算出する(S1525)。 The decoding device calculates a predicted value using attribute information for two or more three-dimensional points (S1525).

 復号装置は、countが0より大きいか否かを判定する(S1526)。復号装置は、countが0より大きい場合(S1526でYes)、ステップS1527に進み、そうでない場合(S1526でNo)、ステップS1528に進む。 The decoding device determines whether count is greater than 0 (S1526). If count is greater than 0 (Yes in S1526), the decoding device proceeds to step S1527; if not (No in S1526), the decoding device proceeds to step S1528.

 復号装置は、復号対象の三次元点の属性情報を、算出した予測値を用いて復号する(S1527)。つまり、復号装置は、復号対象の三次元点の属性情報と、2個以上の三次元点の属性情報を用いて算出した予測値との残差を算出し、算出した残差を復号する。ステップS1527は、第3予測モードの予測復号である。 The decoding device decodes the attribute information of the 3D point to be decoded using the calculated predicted value (S1527). In other words, the decoding device calculates the residual between the attribute information of the 3D point to be decoded and a predicted value calculated using the attribute information of two or more 3D points, and decodes the calculated residual. Step S1527 is predictive decoding in the third prediction mode.

 復号装置は、復号対象の三次元点と接続性を有する復号済みの三次元点が1個あるか否かを判定する(S1528)。復号装置は、復号対象の三次元点と接続性を有する復号済みの三次元点が1個ある場合(S1528でYes)、ステップS1529に進み、そうでない場合(S1528でNo)、ステップS1530に進む。 The decoding device determines whether there is one decoded 3D point that has connectivity with the 3D point to be decoded (S1528). If there is one decoded 3D point that has connectivity with the 3D point to be decoded (Yes in S1528), the decoding device proceeds to step S1529; if not (No in S1528), the decoding device proceeds to step S1530.

 復号装置は、復号対象の三次元点の属性情報を、1個の三次元点の属性情報を予測値として用いて復号する(S1529)。つまり、復号装置は、復号対象の三次元点の属性情報と、1個の三次元点の属性情報との残差を算出し、算出した残差を復号する。ステップS1529は、第2予測モードの予測復号である。 The decoding device decodes the attribute information of the 3D point to be decoded using the attribute information of one 3D point as a predicted value (S1529). In other words, the decoding device calculates the residual between the attribute information of the 3D point to be decoded and the attribute information of one 3D point, and decodes the calculated residual. Step S1529 is predictive decoding in the second prediction mode.

 復号装置は、復号対象の三次元点の属性情報を、予測なしモードで復号する(S1530)。つまり、復号装置は、復号対象の三次元点の属性情報を、予測値を用いずに復号する。ステップS1530は、第1予測モードの予測復号である。 The decoding device decodes the attribute information of the 3D point to be decoded in a prediction-free mode (S1530). In other words, the decoding device decodes the attribute information of the 3D point to be decoded without using a predicted value. Step S1530 is predictive decoding in the first prediction mode.

 次に、三次元点の属性情報を符号化するユニットであるmesh_attribute_codingについて説明する。図57は、実施の形態に係るmesh_attribute_codingのシンタックスの一例を示す図である。図58は、実施の形態に係るmesh_attribute_headerのシンタックスの一例を示す図である。 Next, we will explain mesh_attribute_coding, which is a unit that encodes attribute information of three-dimensional points. Figure 57 is a diagram showing an example of the syntax of mesh_attribute_coding according to an embodiment. Figure 58 is a diagram showing an example of the syntax of mesh_attribute_header according to an embodiment.

 mesh_attribute_codingは、三次元点の属性情報を符号化するためのユニットを示し、mesh_attribute_headerは属性情報に関するヘッダ情報を示す。さらに、mesh_attribute_dataは属性情報に関する符号化データを示す。 mesh_attribute_coding indicates the unit for encoding attribute information of 3D points, mesh_attribute_header indicates header information related to the attribute information, and mesh_attribute_data indicates the encoded data related to the attribute information.

 AttributeBitDepthMinus1は、ビットストリームに符号化されている属性情報のビット精度を示す情報である。属性情報のビット精度は、AttributeBitDepthMinus1に1を加算することで算出する。 AttributeBitDepthMinus1 is information that indicates the bit precision of the attribute information encoded in the bitstream. The bit precision of the attribute information is calculated by adding 1 to AttributeBitDepthMinus1.

 NumComponentは、属性情報が持つ成分数を示す情報である。例えば、属性情報がuv座標の場合、NumComponentの値は2とし、属性情報が法線ベクトルの場合、NumComponentの値は3とする。 NumComponent is information that indicates the number of components that the attribute information has. For example, if the attribute information is UV coordinates, the value of NumComponent is 2, and if the attribute information is a normal vector, the value of NumComponent is 3.

 AttributeStartDeltaBitDepth[j]は、ビットストリームに符号化されている属性情報の初期三次元点のビット精度を示す情報である。初期三次元点のj番目の成分のビット精度AttributeStartBitDepth[j]は、次のように算出する。 AttributeStartDeltaBitDepth[j] is information that indicates the bit precision of the initial 3D point of the attribute information encoded in the bitstream. The bit precision of the jth component of the initial 3D point, AttributeStartBitDepth[j], is calculated as follows:

 AttributeStartBitDepth[j] = AttributeBitDepthMinus1 + 1 - AttributeStartDeltaBitDepth[j] AttributeStartBitDepth[j] = AttributeBitDepthMinus1 + 1 - AttributeStartDeltaBitDepth[j]

 例えば、AttributeBitDepthMinus1が9であり、AttributeStartDeltaBitDepth[0]が0、AttributeStartDeltaBitDepth[1]が2である場合:
 AttributeStartBitDepth[0] = 9 + 1 - 0 = 10
 AttributeStartBitDepth[1] = 9 + 1 - 2 = 8
となり、初期三次元点の0番目の成分のビット精度は10ビット精度、1番目の成分のビット精度は8ビット精度であることを示すことができる。
For example, if AttributeBitDepthMinus1 is 9, AttributeStartDeltaBitDepth[0] is 0, and AttributeStartDeltaBitDepth[1] is 2:
AttributeStartBitDepth[0] = 9 + 1 - 0 = 10
AttributeStartBitDepth[1] = 9 + 1 - 2 = 8
It can be shown that the bit precision of the 0th component of the initial 3D point is 10-bit precision, and the bit precision of the 1st component is 8-bit precision.

 このように、初期三次元点の各成分ごとにAttributeStartDeltaBitDepthを設けることで、成分ごとに異なるビット精度を設定できる。また、ビットストリームに符号化されている属性情報のビット精度であるAttributeBitDepthMinus1とは別に、初期三次元点のビット精度を設定することにより、例えば、初期三次元点の各成分が取り得る値の範囲がビットストリームに符号化されている属性情報の各成分が取り得る範囲よりも小さい場合、AttributeStartBitDepthの値がAttributeBitDepthMinus1に1を加算した値よりも小さくなる可能性がある。このような場合、後述する初期三次元点の各成分の値であるAttributeStartをAttributeBitDepthMinus1に1を加算した値ではなく、AttributeStartBitDepthの値を用いて符号化することで符号量を削減できる。 In this way, by setting AttributeStartDeltaBitDepth for each component of the initial 3D point, it is possible to set different bit precisions for each component. Furthermore, by setting the bit precision of the initial 3D point separately from AttributeBitDepthMinus1, which is the bit precision of the attribute information encoded in the bitstream, if, for example, the range of values that each component of the initial 3D point can take is smaller than the range of values that each component of the attribute information encoded in the bitstream can take, the value of AttributeStartBitDepth may be smaller than the value obtained by adding 1 to AttributeBitDepthMinus1. In such cases, the amount of code can be reduced by encoding AttributeStart, the value of each component of the initial 3D point (described below), using the value of AttributeStartBitDepth rather than the value obtained by adding 1 to AttributeBitDepthMinus1.

 また、本実施の形態では、ビットストリームに符号化されている属性情報のビット精度AttributeBitDepthMinus1に1を加算した値と、初期三次元点のj番目の成分のビット精度との差分値をAttributeStartDeltaBitDepthとして符号化してもよい。これにより、属性情報のビット精度と初期三次元点のビット精度が同じである場合、ビットストリームに付加する差分値が0となるため、符号量を削減できる。 Furthermore, in this embodiment, the difference between the value obtained by adding 1 to the bit precision AttributeBitDepthMinus1 of the attribute information encoded in the bit stream and the bit precision of the jth component of the initial 3D point may be encoded as AttributeStartDeltaBitDepth. As a result, if the bit precision of the attribute information and the bit precision of the initial 3D point are the same, the difference value added to the bit stream will be 0, thereby reducing the amount of coding.

 さらに、AttributeStartDeltaBitDepth[j]にAttributeBitDepthMinus1に1を加算した値と同じ値を設定することで、AttributeStartBitDepth[j]の値を0としてもよい。この場合、AttributeStartBitDepth[j]が0であるj番目の成分は、ビットストリームに値0を符号化しなくてもよい。デコーダは、AttributeStartBitDepth[j]が0であるj番目の成分を値0と推定することができる。これにより、AttributeStartBitDepth[j]が0である成分をビットストリームに付加しないことで符号量を削減できる。 Furthermore, the value of AttributeStartBitDepth[j] may be set to 0 by setting AttributeStartDeltaBitDepth[j] to the same value as AttributeBitDepthMinus1 plus 1. In this case, the j-th component for which AttributeStartBitDepth[j] is 0 does not need to be coded as 0 in the bitstream. The decoder can infer that the j-th component for which AttributeStartBitDepth[j] is 0 is 0. This allows the amount of coding to be reduced by not adding components for which AttributeStartBitDepth[j] is 0 to the bitstream.

 本実施の形態では、差分値であるAttributeStartDeltaBitDepth[j]をビットストリームに付加する例を示したが、必ずしもこれに限らず、例えば、AttributeStartBitDepth[j]をビットストリームに直接符号化してもよい。この方法により、差分値を算出する処理量を削減できる。 In this embodiment, an example has been shown in which the differential value AttributeStartDeltaBitDepth[j] is added to the bitstream, but this is not necessarily limited to this. For example, AttributeStartBitDepth[j] may be directly coded into the bitstream. This method can reduce the amount of processing required to calculate the differential value.

 また、AttributeStartDeltaBitDepth[j]のビット長はAttributeBitDepthMinus1の値に基づいて算出することができる。具体的には、AttributeStartDeltaBitDepth[j]のビット長をceil(log2(AttributeBitDepthMinus1 + 2))として算出することができる。ここで、ceil(x)は、値xを切り上げた整数値を出力する関数を意味する。このように、AttributeBitDepthMinus1の値に応じてAttributeStartDeltaBitDepth[j]のビット長を決定することで、符号量を削減することができる。 Furthermore, the bit length of AttributeStartDeltaBitDepth[j] can be calculated based on the value of AttributeBitDepthMinus1. Specifically, the bit length of AttributeStartDeltaBitDepth[j] can be calculated as ceil(log2(AttributeBitDepthMinus1 + 2)). Here, ceil(x) is a function that outputs the integer value obtained by rounding up the value x. In this way, by determining the bit length of AttributeStartDeltaBitDepth[j] according to the value of AttributeBitDepthMinus1, the amount of code can be reduced.

 AttributePredModeは、属性情報を符号化する方法を示す情報である。例えば、図54に示すようなfine予測、coarse予測、および予測なしモードを含む予測方法methodAなどを示してもよい。なお、予測方法はmethodAに限らない。例えば、methodAの3つの予測モードのうち、2つの予測モードを組み合わせた予測方法、または1つの予測モードのみを用いた予測方法であってもよい。具体的には、coarse予測と予測なしモードを含む予測方法methodBなどが考えられる。methodBを予測方法として設けることにより、除算や小数点精度が必要な演算処理を適用せずに予測値を生成できるため、処理量の削減やロスレスでの符号化を適用することができるようになる。 AttributePredMode is information indicating the method for encoding the attribute information. For example, it may indicate a prediction method such as methodA, which includes fine prediction, coarse prediction, and no prediction mode, as shown in Figure 54. Note that the prediction method is not limited to methodA. For example, it may be a prediction method that combines two of the three prediction modes of methodA, or a prediction method that uses only one prediction mode. Specifically, a prediction method such as methodB, which includes coarse prediction and no prediction mode, is possible. By providing methodB as the prediction method, predicted values can be generated without applying division or arithmetic processing that requires decimal point precision, which reduces the amount of processing and enables lossless encoding.

 fineMaxcountは、平均fine予測値を算出する際に使用するfine予測の最大個数を示す情報である。AttributePredModeがfine予測を含む場合、例えば、AttributePredModeがmethodAの場合に、fineMaxcountをビットストリームに付加してもよい。 fineMaxcount is information indicating the maximum number of fine predictions to use when calculating the average fine prediction value. If AttributePredMode includes fine prediction, for example, if AttributePredMode is methodA, fineMaxcount may be added to the bitstream.

 なお、fineMaxcountを1と設定することで、平均fine予測値の算出に用いるfine予測の数を1個に制限することができ、実質的に平均値の算出を不要とすることができる。これにより、平均値を算出する処理量を削減することができる。また、平均値算出による小数点以下の数値の発生を防ぐことができる。 Furthermore, by setting fineMaxcount to 1, the number of fine predictions used to calculate the average fine prediction value can be limited to 1, effectively eliminating the need to calculate the average value. This reduces the amount of processing required to calculate the average value. It also prevents decimal points from being generated when calculating the average value.

 また、fineMaxcountを0と設定することで、fine予測を適用しないようにしてもよい。この場合、予測モードとしては、coarse予測または予測なしモードが使用されることになる。例えば、初期三次元点に続く三次元点の属性情報がすべて同じである場合、初期三次元点には予測なしモードを、それ以降の三次元点にはcoarse予測を適用することで予測残差を0にできるため、fine予測を適用する必要がなくなる。このような場合、fineMaxcountを0とすることでfine予測を適用しないようにすることで、符号化または復号にかかる処理量を削減できる。 Fine prediction may also be prevented from being applied by setting fineMaxcount to 0. In this case, coarse prediction or no prediction mode will be used as the prediction mode. For example, if the attribute information of all 3D points following the initial 3D point is the same, the prediction residual can be set to 0 by applying no prediction mode to the initial 3D point and coarse prediction to subsequent 3D points, eliminating the need to apply fine prediction. In such cases, setting fineMaxcount to 0 prevents the application of fine prediction, thereby reducing the amount of processing required for encoding or decoding.

 さらに、fine予測に必要な追加情報が存在する場合も、fineMaxcountを0とすることでfine予測を適用しないようにすることで、追加情報を削減し、符号量を削減することができる。 Furthermore, even if there is additional information required for fine prediction, setting fineMaxcount to 0 prevents fine prediction from being applied, thereby reducing the amount of additional information and the amount of coding.

 AttributeBitDepthMinus1、AttributePredMode、およびfineMaxcountはExponential Golomb符号化またはunary符号化を用いて二値化し、可変長符号化を適用してもよい。また、各ビットにコンテキストを割り当て、0と1の発生頻度に基づいて発生確率を更新しながら符号化することによって、符号化効率を向上させることができる。また、これらの情報を固定長で符号化してもよい。これにより、処理量を削減することができる。 AttributeBitDepthMinus1, AttributePredMode, and fineMaxcount may be binarized using Exponential Golomb coding or unary coding, and then variable-length coded. Coding efficiency can also be improved by assigning a context to each bit and coding while updating the probability of occurrence based on the frequency of occurrence of 0 and 1. This information may also be coded at a fixed length, which reduces the amount of processing.

 また、fineMaxcountは、シーケンス単位、フレーム単位、basemesh単位、サブメッシュ単位、または三次元点ごとに異なる値を設定することができるようにしてもよい。これにより、適切な単位で平均fine予測に用いる個数を制御することによって、処理量を削減することができる。 FineMaxcount may also be set to a different value per sequence, per frame, per basemesh, per submesh, or per 3D point. This allows the amount of processing to be reduced by controlling the number used for the average fine prediction in appropriate units.

 図59は、実施の形態に係るmesh_attribute_dataのシンタックスの一例を示す図である。 Figure 59 shows an example of mesh_attribute_data syntax related to an embodiment.

 AttributeStartCountは、初期三次元点の個数を示す情報である。AttributeStart[c][j]は、c番目の初期三次元点に関する属性情報のj番目の成分の値を示す情報である。例えば、属性情報がuv座標である場合、AttributeStart[c][0]はc番目の初期三次元点のuの値を示し、AttributeStart[c][1]はc番目の初期三次元点のvの値を示してもよい。なお、AttributeStart[c][j]は、図58で説明したAttributeStartBitDepthとして算出したビット長を用いて固定長符号化してもよい。例えば、AttributeStartBitDepth[0]が10であり、AttributeStartBitDepth[1]が8である場合、c番目の初期三次元点の0番目の成分であるAttributeStart[c][0]は10ビット精度で符号化され、1番目の成分であるAttributeStart[c][1]は8ビット精度で符号化されることを示すことができる。それぞれの成分を、0番目の成分を10ビットで固定長符号化し、1番目の成分を8ビットで固定長符号化することで、符号量を削減することができる。 AttributeStartCount is information indicating the number of initial 3D points. AttributeStart[c][j] is information indicating the value of the jth component of the attribute information for the cth initial 3D point. For example, if the attribute information is UV coordinates, AttributeStart[c][0] may indicate the u value of the cth initial 3D point, and AttributeStart[c][1] may indicate the v value of the cth initial 3D point. AttributeStart[c][j] may also be fixed-length coded using the bit length calculated as AttributeStartBitDepth described in Figure 58. For example, if AttributeStartBitDepth[0] is 10 and AttributeStartBitDepth[1] is 8, this indicates that AttributeStart[c][0], the 0th component of the cth initial 3D point, is coded with 10-bit precision, and AttributeStart[c][1], the first component, is coded with 8-bit precision. The amount of coding can be reduced by coding the 0th component with 10 bits and the first component with 8 bits.

 また、AttributeStartBitDepth[j]の値が0である場合、AttributeStart[c][j]をビットストリームに符号化しなくてもよい。デコーダは、AttributeStartBitDepth[j]の値が0であることを確認することで、AttributeStart[c][j]の値を0と推定することができる。このように、AttributeStartBitDepth[j]の値が0である成分をビットストリームに含めないことで、符号量を削減することができる。 Furthermore, if the value of AttributeStartBitDepth[j] is 0, AttributeStart[c][j] does not need to be coded into the bitstream. By confirming that the value of AttributeStartBitDepth[j] is 0, the decoder can infer that the value of AttributeStart[c][j] is 0. In this way, by not including components with an AttributeStartBitDepth[j] value of 0 in the bitstream, the amount of coding can be reduced.

 さらに、AttributeStartは、unary符号化やexponential golomb符号化などを用いた可変長符号化を適用してもよい。また、2値化した後に各ビットに対してコンテキストを割り当て、算術符号化を適用することによって符号量を削減することもできる。 Furthermore, AttributeStart may apply variable-length coding such as unary coding or exponential golomb coding. It is also possible to reduce the amount of code by assigning a context to each bit after binarization and applying arithmetic coding.

 また、AttributeStartCountの値が0である場合は、AttributeStartの符号化を行う必要がない。この場合、デコーダはAttributeStartCountが0であることを確認し、AttributeStartの値を0と推定することができる。この方法により、符号量を削減することができる。 Also, if the value of AttributeStartCount is 0, there is no need to encode AttributeStart. In this case, the decoder can confirm that AttributeStartCount is 0 and infer that the value of AttributeStart is 0. This method can reduce the amount of coding.

 さらに、初期三次元点が必ず1個以上存在することが保証されている場合は、AttributeStartCountの代わりにAttributeStartCountMinus1をビットストリームに付加することができる。この場合、デコーダはAttributeStartCountをAttributeStartCountMinus1に1を加算することで算出することができる。これにより、符号量をさらに削減することが可能となる。 Furthermore, if it is guaranteed that there will always be at least one initial 3D point, AttributeStartCountMinus1 can be added to the bitstream instead of AttributeStartCount. In this case, the decoder can calculate AttributeStartCount by adding 1 to AttributeStartCountMinus1. This makes it possible to further reduce the amount of coding.

 AttributeFineResiCountは、fine予測で予測符号化された属性情報の予測残差の個数を示す情報である。特に、fineMaxcountの値が0の場合、最も効率の良いケースとしてAttributeFineResiCountは0に設定されることが想定される。 AttributeFineResiCount is information that indicates the number of prediction residuals of attribute information predictively coded using fine prediction. In particular, if the value of fineMaxcount is 0, it is expected that AttributeFineResiCount will be set to 0 as the most efficient case.

 AttributeFineResiSizeは、AttributeFineResiの符号量を示す情報を表している。例えば、AttributeFineResiを二値化して算術符号化した場合の符号量を示してもよい。このように、AttributeFineResiよりも前にAttributeFineResiSizeによって符号量をデコーダに通知することで、デコーダはAttributeFineResiに関わるビットをビットストリームから先読みすることができる。具体的には、デコーダがAttributeFineResiに関する算術復号を進めている間に、次に続くAttributeCoarseResiの復号処理を並列に実施することができるため、復号時間を削減することができる。 AttributeFineResiSize represents information indicating the code size of AttributeFineResi. For example, it may indicate the code size when AttributeFineResi is binarized and arithmetically coded. In this way, by notifying the decoder of the code size using AttributeFineResiSize before AttributeFineResi, the decoder can pre-read the bits related to AttributeFineResi from the bitstream. Specifically, while the decoder is performing arithmetic decoding on AttributeFineResi, it can perform decoding processing for the following AttributeCoarseResi in parallel, thereby reducing decoding time.

 AttributeFineResi[c][j]は、c番目のfine予測によって予測符号化された属性情報のj番目の成分に関する予測残差を示す情報である。AttributeFineResi[c][j]は、Exponential Golomb符号化やunary符号化などを用いて二値化し、可変長符号化を行うことができる。また、各ビットにコンテキストを割り当て、0と1の発生頻度に基づいて発生確率を更新しながら符号化を行うことによって、符号化効率を向上させることができる。 AttributeFineResi[c][j] is information indicating the prediction residual for the jth component of attribute information predictively coded by the cth fine prediction. AttributeFineResi[c][j] can be binarized using Exponential Golomb coding or unary coding, and then variable-length coded. In addition, coding efficiency can be improved by assigning a context to each bit and coding while updating the probability of occurrence based on the frequency of occurrence of 0s and 1s.

 また、各ビットの算術符号化に使用するコンテキストは、後述するAttributeCoarseResiで使用するコンテキストと共有してもよい。この方法により、コンテキスト数を削減することができる。一方で、各ビットの算術符号化に使用するコンテキストを、後述するAttributeCoarseResiで使用するコンテキストとは異なるものとして設定することもできる。このように異なるコンテキストを使用することで、fine予測とcoarse予測で予測残差の傾向が異なる場合においても符号化効率を向上させることができる。また、異なるコンテキストを用いることでAttributeFineResiとAttributeCoarseResiを並列に復号することができるため、復号処理の効率をさらに向上させることができる。 Furthermore, the context used for arithmetic coding of each bit may be shared with the context used for AttributeCoarseResi, which will be described later. This method allows the number of contexts to be reduced. On the other hand, the context used for arithmetic coding of each bit can also be set to be different from the context used for AttributeCoarseResi, which will be described later. By using different contexts in this way, coding efficiency can be improved even when the trends in prediction residuals differ between fine prediction and coarse prediction. Furthermore, using different contexts allows AttributeFineResi and AttributeCoarseResi to be decoded in parallel, further improving the efficiency of the decoding process.

 AttributeCoarseResiCountは、coarse予測で予測符号化された属性情報の予測残差の個数を示す情報である。AttributeCoarseResiCountは、後述するAttributeCoarseResiの符号化において重要な役割を果たす。 AttributeCoarseResiCount is information that indicates the number of prediction residuals of attribute information predictively coded using coarse prediction. AttributeCoarseResiCount plays an important role in coding AttributeCoarseResi, which will be described later.

 AttributeCoarseResiSizeは、AttributeCoarseResiの符号量を示す情報を表している。例えば、AttributeCoarseResiを二値化して算術符号化した場合の符号量を示してもよい。このように、AttributeCoarseResiの符号化に先立ってAttributeCoarseResiSizeをデコーダに知らせることで、デコーダはAttributeCoarseResiに関わるビットをビットストリームから先読みすることができる。具体的には、デコーダがAttributeCoarseResiに関する算術復号を実行している間に、次に続くビットストリームの復号処理を並列に実施することができるため、復号時間を削減することができる。 AttributeCoarseResiSize represents information indicating the code size of AttributeCoarseResi. For example, it may indicate the code size when AttributeCoarseResi is binarized and arithmetically coded. In this way, by informing the decoder of AttributeCoarseResiSize prior to coding AttributeCoarseResi, the decoder can pre-read the bits related to AttributeCoarseResi from the bitstream. Specifically, while the decoder is performing arithmetic decoding related to AttributeCoarseResi, it can perform decoding processing of the subsequent bitstream in parallel, thereby reducing decoding time.

 AttributeCoarseResi[c][j]は、c番目のcoarse予測によって予測符号化された属性情報のj番目の成分に関する予測残差を示す情報である。AttributeCoarseResi[c][j]は、Exponential Golomb符号化やunary符号化などを用いて二値化し、可変長符号化を行うことができる。また、各ビットにコンテキストを割り当て、0と1の発生頻度に基づいて発生確率を更新しながら符号化を行うことによって、符号化効率を向上させることができる。 AttributeCoarseResi[c][j] is information indicating the prediction residual for the jth component of attribute information predictively coded using the cth coarse prediction. AttributeCoarseResi[c][j] can be binarized using Exponential Golomb coding or unary coding, and then variable-length coded. Furthermore, coding efficiency can be improved by assigning a context to each bit and coding while updating the probability of occurrence based on the frequency of occurrence of 0s and 1s.

 また、各ビットの算術符号化に使用するコンテキストは、前述したAttributeFineResiで使用するコンテキストと共有してもよい。この方法により、コンテキスト数を削減することができる。一方で、各ビットの算術符号化に使用するコンテキストを、前述したAttributeFineResiで使用するコンテキストとは異なるものとして設定することもできる。このように異なるコンテキストを使用することで、fine予測とcoarse予測で予測残差の傾向が異なる場合においても符号化効率を向上させることができる。 Furthermore, the context used for arithmetic coding of each bit may be shared with the context used by AttributeFineResi described above. This method allows the number of contexts to be reduced. On the other hand, the context used for arithmetic coding of each bit can also be set to be different from the context used by AttributeFineResi described above. By using different contexts in this way, coding efficiency can be improved even when the trends in prediction residuals differ between fine prediction and coarse prediction.

 さらに、AttributeStartCount、AttributeFineResiCount、AttributeFineResiSize、AttributeFineResi、AttributeCoarseResiCount、AttributeCoarseResiSize、AttributeCoarseResiはExponential Golomb符号化またはunary符号化によって二値化し、可変長符号化を行ってもよい。また、各ビットにコンテキストを割り当て、0及び1の発生頻度に基づいて発生確率を更新しながら符号化することによって、符号化効率を向上させることができる。さらに、これらの情報を固定長で符号化することも可能であり、処理量を削減することができる。 Furthermore, AttributeStartCount, AttributeFineResiCount, AttributeFineResiSize, AttributeFineResi, AttributeCoarseResiCount, AttributeCoarseResiSize, and AttributeCoarseResi may be binarized using Exponential Golomb coding or unary coding, and then variable-length coded. Coding efficiency can also be improved by assigning a context to each bit and coding while updating the probability of occurrence based on the frequency of occurrence of 0s and 1s. Furthermore, this information can also be coded at a fixed length, reducing the amount of processing.

 本実施の形態の説明では、主に三次元点の属性情報の符号化または復号に関する例を示すが、必ずしもこれに限らない。例えば、三次元点の位置情報の符号化または復号に本実施の形態を適用してもよい。三次元点の位置情報に適用した場合のシンタックス例については、後述する。 In the description of this embodiment, examples relating mainly to the encoding or decoding of attribute information of three-dimensional points are shown, but this is not necessarily limited to this. For example, this embodiment may also be applied to the encoding or decoding of position information of three-dimensional points. An example of syntax when applied to position information of three-dimensional points will be described later.

 本実施の形態では、例えば、図46に示すように、装置が三次元点G(x, y, z)をxz平面に投影し、投影後のxy平面上の二次元座標(u, v)が属する平面face0をGに対する属性情報とした場合、(u, v) = (face0, 0)とすることで、uv座標としてGとface0を関連付ける例を示したが、必ずしもこれに限らない。例えば、face0をuv座標として符号化または復号する場合、属性情報としてはuv座標であるが、NumComponent=1の属性情報とすることで、uv座標のうちuのみを符号化するようにしてもよい。これにより、uとしてface0を符号化し、vは符号化しないことで符号量を削減することができる。 In this embodiment, for example, as shown in FIG. 46, when the device projects a three-dimensional point G(x, y, z) onto the xz plane and the plane face0 to which the two-dimensional coordinates (u, v) on the xy plane after projection belong is set as attribute information for G, an example is shown in which G and face0 are associated as uv coordinates by setting (u, v) = (face0, 0), but this is not necessarily limited to this. For example, when encoding or decoding face0 as uv coordinates, the attribute information is uv coordinates, but by setting attribute information with NumComponent = 1, only u of the uv coordinates can be encoded. In this way, the amount of code can be reduced by encoding face0 as u and not encoding v.

 接続性を持つ三次元点(connected component)を二次元画像上に投影し、その三次元点の属性情報として同じ平面情報を付加し、その属性情報を符号化してもよい。これにより、デコーダは三次元点の属性情報を復号することで、各三次元点が関連する平面情報を取得でき、その値を用いて、例えば関連する投影情報などを取得することができる。この投影情報を用いて、デコーダ側で三次元点のuv座標を生成する方法を「ortho atlas」と呼んでもよい。 Connected 3D points (connected components) can be projected onto a 2D image, the same plane information added as attribute information for the 3D points, and this attribute information can be encoded. This allows the decoder to obtain the plane information associated with each 3D point by decoding the attribute information of the 3D points, and this value can be used to obtain, for example, associated projection information. The method of generating UV coordinates for 3D points on the decoder side using this projection information can also be called an "ortho atlas."

 ortho atlasを用いて平面情報をuv座標として符号化する場合、接続性を持つ三次元点の属性情報は、例えば図60に示すように全て同じ値(face0, 0)となる。図60は、実施の形態の変形例に係る属性情報の一例を示す図である。 When encoding plane information as UV coordinates using an ortho atlas, the attribute information of three-dimensional points with connectivity all have the same value (face0, 0), as shown in Figure 60. Figure 60 shows an example of attribute information related to a modified embodiment.

 この場合、装置は初期三次元点を予測なしモードで符号化し、それ以降の三次元点に対してcoarse符号化を適用することで予測残差を0にすることができる。そのため、ortho atlasを用いる場合には、本実施の形態で説明したfineMaxcount=0とすることでfine予測を適用しないようにし、符号化または復号にかかる処理量を削減することができる。また、fine予測に必要な追加情報が存在する場合、fineMaxcount=0とすることでfine予測を適用しないようにすることで、追加情報を削減し、符号量を削減することができる。 In this case, the device encodes the initial 3D points in no prediction mode, and applies coarse encoding to subsequent 3D points, thereby reducing the prediction residual to zero. Therefore, when using an ortho atlas, setting fineMaxcount=0 as described in this embodiment prevents the application of fine prediction, thereby reducing the amount of processing required for encoding or decoding. Furthermore, if additional information required for fine prediction exists, setting fineMaxcount=0 prevents the application of fine prediction, thereby reducing the amount of additional information and the amount of coding.

 また、uv座標において、vは常に0である。そのため、ortho atlasを用いる場合、本実施の形態で説明したAttributeBitDepthMinus1およびAttributeStartDeltaBitDepthを用いて、初期三次元点のv成分に対するAttributeStartBitDepthを0に設定し、v成分の固定長符号化のビット長を0bitに設定することで、vの値0を符号化しないことにより符号量を削減することができる。 Furthermore, in the uv coordinates, v is always 0. Therefore, when using an ortho atlas, AttributeStartBitDepth for the v component of the initial 3D point can be set to 0 using AttributeBitDepthMinus1 and AttributeStartDeltaBitDepth described in this embodiment, and the bit length for the fixed-length encoding of the v component can be set to 0 bits, thereby reducing the amount of code by not encoding the v value of 0.

 また、ortho atlasを用いる場合は、coarse予測やfine予測を適用することで予測残差を0にすることができるため、予測残差に関する情報であるAttributeFineResiCount、AttributeFineResiSize、AttributeFineResi、AttributeCoarseResiCount、AttributeCoarseResiSize、およびAttributeCoarseResiの少なくとも1つを符号化しないことにより符号量を削減してもよい。符号化されなかった情報については、デコーダ側で値0と推定することができる。 Furthermore, when using an ortho atlas, the prediction residual can be set to 0 by applying coarse prediction or fine prediction, so the amount of code can be reduced by not encoding at least one of the information about the prediction residual: AttributeFineResiCount, AttributeFineResiSize, AttributeFineResi, AttributeCoarseResiCount, AttributeCoarseResiSize, and AttributeCoarseResi. Information that is not encoded can be estimated to have a value of 0 on the decoder side.

 さらに、ortho atlasを用いる場合にfine予測を適用しない場合、fine予測に関連する追加情報を符号化しないことで符号量を削減することもできる。 Furthermore, if fine prediction is not applied when using an ortho atlas, the amount of coding can be reduced by not encoding the additional information related to fine prediction.

 図61は、実施の形態の変形例に係るmesh_attribute_dataのシンタックスの一例を示す図である。 Figure 61 shows an example of mesh_attribute_data syntax for a modified embodiment.

 なお、AttributeFineResiCountまたはAttributeCoarseResiCountを符号化しなかった場合、初期三次元点と接続性を持つ三次元点の個数OtherAttributeCountを、初期三次元点の数分だけビットストリームに付加してもよい。図60にそのシンタックス例を示す。この場合、デコーダは初期三次元点cのuv座標を復号し、そのuv座標を初期三次元点cと接続性があるOtherAttributeCount[c]個の三次元点のuv座標にコピーすることで、uv座標を正しく復号することができる。 If AttributeFineResiCount or AttributeCoarseResiCount is not coded, the number of 3D points that have connectivity with the initial 3D point, OtherAttributeCount, may be added to the bitstream in units of the number of initial 3D points. Figure 60 shows an example of this syntax. In this case, the decoder can correctly decode the UV coordinates by decoding the UV coordinates of the initial 3D point c and copying them to the UV coordinates of OtherAttributeCount[c] 3D points that have connectivity with the initial 3D point c.

 また、OtherAttributeCountはExponential Golomb符号化やunary符号化などによって二値化し、可変長符号化を行ってもよい。各ビットにコンテキストを割り当て、0及び1の発生頻度に基づいて発生確率を更新しながら符号化することで、符号化効率を向上することができる。また、固定長で符号化してもよい。この場合、処理量を削減することができる。 Also, OtherAttributeCount may be binarized using Exponential Golomb coding or unary coding, and then variable-length coded. Coding efficiency can be improved by assigning a context to each bit and coding while updating the probability of occurrence based on the frequency of occurrence of 0 and 1. Alternatively, it may be coded at a fixed length, which reduces the amount of processing.

 さらに、ortho atlas用のAttributePredModeを定義し、エンコーダは上記で説明した方法を用いて属性情報を符号化した場合に、ビットストリームにAttributePredModeがortho atlas用の予測方法であることを示す情報を付加してもよい。これにより、デコーダはAttributePredModeを復号することで、ビットストリームが上記の方法を用いて符号化されたものであるかを判定することができる。判定結果がYesであれば、デコーダは上記の方法を用いて属性情報を復号することができる。 Furthermore, an AttributePredMode for ortho atlas may be defined, and when the encoder encodes attribute information using the method described above, it may add information to the bitstream indicating that the AttributePredMode is a prediction method for ortho atlas. This allows the decoder to determine whether the bitstream was encoded using the above method by decoding the AttributePredMode. If the determination result is Yes, the decoder can decode the attribute information using the above method.

 本実施の形態では、uv座標などの三次元点に対応する属性情報に対する符号化または復号方法を示したが、必ずしもこれに限らない。例えば、三次元点から構成される多角形の面に対応する属性情報に対しても、本実施の形態で説明した符号化または復号方法を適用してもよい。 In this embodiment, we have shown a method for encoding or decoding attribute information corresponding to three-dimensional points such as UV coordinates, but this is not necessarily limited to this. For example, the encoding or decoding method described in this embodiment may also be applied to attribute information corresponding to the surfaces of a polygon made up of three-dimensional points.

 具体的には、多角形の面に対応する面情報であるface_idをNumComponent=1の属性情報として符号化または復号することができる。このようにすることで、本実施の形態を用いて三次元点に対応する属性情報、または三次元点から構成される多角形に対応する属性情報の符号量を削減することができる。 Specifically, face_id, which is face information corresponding to the faces of a polygon, can be encoded or decoded as attribute information with NumComponent=1. By doing so, this embodiment can be used to reduce the amount of code required for attribute information corresponding to three-dimensional points or attribute information corresponding to polygons made up of three-dimensional points.

 図62は、実施の形態に係るジオメトリマップの一例を示す図である。図63は、実施の形態にかかるテクスチャマップの一例を示す図である。 FIG. 62 is a diagram showing an example of a geometry map according to an embodiment. FIG. 63 is a diagram showing an example of a texture map according to an embodiment.

 テクスチャマッピングは、画像を三次元モデルの面に投影することによって視覚的な外観を追加するために使用される一般的な技術である。この技術は、モデル自体を直接修正することなく視覚的な詳細を変更することを可能にするため、レンダリングが必要な場合においてパフォーマンスを向上させることができる。二次元テクスチャ画像に格納される情報は、色、滑らかさ、透明度などを含んでもよい。三次元メッシュと二次元テクスチャ画像の関係は、UVマップを使用して確立される。UVマップは、三次元メッシュを二次元平面上に変形して展開したものである。次に、テクスチャ画像をUVマップ上に重ね合わせることによって、レンダリング時に画像からの属性値が三次元モデルに投影される。このため、UVマップを効率的に格納およびストリーミングできる符号化および復号技術が必要となる。 Texture mapping is a common technique used to add visual appearance by projecting images onto the surfaces of a three-dimensional model. This technique allows for the visual details to be changed without directly modifying the model itself, thereby improving performance when rendering is required. The information stored in a two-dimensional texture image may include color, smoothness, transparency, etc. The relationship between the three-dimensional mesh and the two-dimensional texture image is established using a UV map. A UV map is a deformation of the three-dimensional mesh onto a two-dimensional plane. Attribute values from the image are then projected onto the three-dimensional model at rendering time by overlaying the texture image on the UV map. This necessitates encoding and decoding techniques that can efficiently store and stream UV maps.

 異なる予測スキームが、UVマップのテクスチャ座標を符号化するために利用可能である。これらの予測スキームは、三次元メッシュを二次元マップに投影する際に使用されるパラメトリゼーション技術に基づくもの、またはメッシュのジオメトリデータとテクスチャ座標の関係に基づくものなどを含む。等角パラメトリゼーションの場合、三角形のエッジ長は三次元空間とUV座標の両方でほぼ同じ比率を保持する。そのため、UVマップ上のテクスチャ座標は、三次元空間内の対応するエッジから得られる比率を使用して予測することができる。 Different prediction schemes are available for encoding texture coordinates in UV maps. These prediction schemes include those based on the parametrization techniques used when projecting a 3D mesh onto a 2D map, or those based on the relationship between the mesh's geometric data and texture coordinates. In the case of conformal parametrization, triangle edge lengths maintain approximately the same ratio in both 3D space and UV coordinates. Therefore, texture coordinates on a UV map can be predicted using the ratio obtained from the corresponding edges in 3D space.

 図62に示すように、テクスチャ座標A2、B2およびC2は、それぞれジオメトリマップ上のA1、B1およびC1に対応している。三次元空間におけるエッジA1B1とA2B2の間の比率は、(A1C1)/(C1B1)=Rとして計算される。最終的に、UV空間におけるA2の座標は、A2C2=R×C2B2およびA2=C2+A2C2として予測される。 As shown in Figure 62, texture coordinates A2, B2, and C2 correspond to A1, B1, and C1 on the geometry map, respectively. The ratio between edges A1B1 and A2B2 in 3D space is calculated as (A1C1)/(C1B1)=R. Finally, the coordinates of A2 in UV space are predicted as A2C2=R*C2B2 and A2=C2+A2C2.

 図63に示すように、装置は三次元点A1を二次元画像上(Texture map)に投影した場合におけるuv座標A2に対する予測値を算出することができる。装置は、この予測値を既に符号化または復号済みのC2およびB2と、A2、B2、C2に対応する三次元点A1、B1、C1の位置情報を用いて算出してもよい。 As shown in Figure 63, the device can calculate a predicted value for the UV coordinate A2 when a three-dimensional point A1 is projected onto a two-dimensional image (texture map). The device may calculate this predicted value using C2 and B2 that have already been encoded or decoded, and the positional information of the three-dimensional points A1, B1, and C1 that correspond to A2, B2, and C2.

 より具体的には、装置は三角形A1B1C1と三角形A2B2C2が相似関係を持つと仮定し、既に値が確定済みであるC2B2に対して、(A1C1)/(C1B1)=Rとして算出される相似比Rを乗じてA2C2を算出することができる。また、装置はC2+A2C2によりA2の位置を予測することができる。これにより、geometry mapとtexture mapにおいて、対応する三次元点から構成される三角形が相似関係にある場合、装置は符号化または復号済みのgeometry map内の三次元点情報と、符号化または復号済みのtexture map内のuv座標を用いて、符号化または復号対象の三次元点の属性情報の予測値を高精度に推定することができ、符号量を削減することができる。 More specifically, the device assumes that triangles A1B1C1 and A2B2C2 are similar to each other, and can calculate A2C2 by multiplying C2B2, whose value has already been determined, by the similarity ratio R, calculated as (A1C1)/(C1B1) = R. The device can also predict the position of A2 using C2 + A2C2. As a result, if triangles made up of corresponding 3D points in the geometry map and texture map are similar to each other, the device can use the 3D point information in the encoded or decoded geometry map and the UV coordinates in the encoded or decoded texture map to highly accurately estimate the predicted value of the attribute information of the 3D point to be encoded or decoded, thereby reducing the amount of coding.

 なお、このように、装置が符号化または復号済みのgeometry map内の三次元点情報と、符号化または復号済みのtexture map内のuv座標を用いて、符号化または復号対象の三次元点の属性情報の予測値を算出する方法を、本実施の形態におけるfine予測としてもよい。 In this embodiment, the method in which the device calculates predicted values for attribute information of the three-dimensional point to be encoded or decoded using three-dimensional point information in an encoded or decoded geometry map and UV coordinates in an encoded or decoded texture map may also be referred to as fine prediction.

 次に、三次元点の位置情報を符号化するユニットであるmesh_position_codingについて説明する。図64は、実施の形態に係るmesh_position_codingのシンタックスの一例を示す図である。図65は、実施の形態に係るmesh_position_headerのシンタックスの一例を示す図である。 Next, we will explain mesh_position_coding, which is a unit that encodes the position information of three-dimensional points. Figure 64 is a diagram showing an example of the syntax of mesh_position_coding according to an embodiment. Figure 65 is a diagram showing an example of the syntax of mesh_position_header according to an embodiment.

 mesh_position_codingは、三次元点の位置情報を符号化するためのユニットであり、位置情報の符号化および復号に関わる処理を行う。mesh_position_headerは位置情報に関するヘッダ情報を示し、mesh_position_dataは位置情報に関する符号化データを示す。 mesh_position_coding is a unit for encoding the position information of three-dimensional points, and performs processing related to the encoding and decoding of position information. mesh_position_header indicates header information related to position information, and mesh_position_data indicates encoded data related to position information.

 PositionBitDepthMinus1は、ビットストリームに符号化されている位置情報のビット精度を示す情報である。位置情報のビット精度は、PositionBitDepthMinus1に1を加算することで算出することができる。 PositionBitDepthMinus1 is information that indicates the bit precision of the position information encoded in the bitstream. The bit precision of the position information can be calculated by adding 1 to PositionBitDepthMinus1.

 NumComponentは、位置情報が持つ成分数を示す情報である。例えば、位置情報がxyz座標である場合、NumComponentの値は3とすることができる。 NumComponent is information that indicates the number of components contained in the position information. For example, if the position information is xyz coordinates, the value of NumComponent can be set to 3.

 PositionStartDeltaBitDepth[j]は、ビットストリームに符号化されている位置情報の初期三次元点のビット精度を示す情報である。初期三次元点のj番目の成分のビット精度PositionStartBitDepth[j]は、次のように算出することができる。 PositionStartDeltaBitDepth[j] is information that indicates the bit precision of the initial 3D point of the position information encoded in the bitstream. The bit precision of the jth component of the initial 3D point, PositionStartBitDepth[j], can be calculated as follows:

 PositionStartBitDepth[j] = PositionBitDepthMinus1に1を加算した後に、PositionStartDeltaBitDepth[j]を減算することで求めることができる。例えば、PositionBitDepthMinus1が9であり、PositionStartDeltaBitDepth[0]が0、PositionStartDeltaBitDepth[1]が2、PositionStartDeltaBitDepth[2]が4である場合、PositionStartBitDepth[0]の値は9+1-0=10、PositionStartBitDepth[1]の値は9+1-2=8、PositionStartBitDepth[2]の値は9+1-4=6となる。これにより、初期三次元点の0番目の成分は10ビット精度、1番目の成分は8ビット精度、2番目の成分は6ビット精度であることを示すことができる。 PositionStartBitDepth[j] = This can be calculated by adding 1 to PositionBitDepthMinus1 and then subtracting PositionStartDeltaBitDepth[j]. For example, if PositionBitDepthMinus1 is 9, PositionStartDeltaBitDepth[0] is 0, PositionStartDeltaBitDepth[1] is 2, and PositionStartDeltaBitDepth[2] is 4, then the value of PositionStartBitDepth[0] is 9 + 1 - 0 = 10, the value of PositionStartBitDepth[1] is 9 + 1 - 2 = 8, and the value of PositionStartBitDepth[2] is 9 + 1 - 4 = 6. This indicates that the 0th component of the initial 3D point has 10-bit precision, the 1st component has 8-bit precision, and the second component has 6-bit precision.

 このように、初期三次元点の各成分ごとにPositionStartDeltaBitDepthを設定することにより、成分ごとに異なるビット精度を設定することができる。また、ビットストリームに符号化されている位置情報のビット精度であるPositionBitDepthMinus1とは別に、初期三次元点のビット精度を設定することができるようにすることで、例えば、初期三次元点の各成分が取り得る値の範囲がビットストリームに符号化されている位置情報の各成分が取り得る範囲よりも小さい場合において、PositionStartBitDepthの値がPositionBitDepthMinus1に1を加算した値よりも小さくなる可能性がある。 In this way, by setting PositionStartDeltaBitDepth for each component of the initial 3D point, it is possible to set different bit precision for each component. Furthermore, by being able to set the bit precision of the initial 3D point separately from PositionBitDepthMinus1, which is the bit precision of the position information encoded in the bitstream, it is possible that the value of PositionStartBitDepth will be smaller than the value obtained by adding 1 to PositionBitDepthMinus1, for example, if the range of values that each component of the initial 3D point can take is smaller than the range that each component of the position information encoded in the bitstream can take.

 このような場合、後述する初期三次元点の各成分の値であるPositionStartをPositionBitDepthMinus1に1を加算した値ではなく、PositionStartBitDepthの値を用いて符号化することにより、符号量を削減することができる。また、この設定により、不要なビット精度の指定を避けることで、符号化効率を向上させることができる。 In such cases, the amount of coding can be reduced by encoding PositionStart, the value of each component of the initial 3D point (described below), using the value of PositionStartBitDepth rather than the value obtained by adding 1 to PositionBitDepthMinus1. This setting also improves coding efficiency by avoiding the specification of unnecessary bit precision.

 本実施の形態では、ビットストリームに符号化されている位置情報のビット精度であるPositionBitDepthMinus1に1を加算した値と、初期三次元点のj番目の成分のビット精度との差分値をPositionStartDeltaBitDepthとして符号化することができる。この方法により、位置情報のビット精度であるPositionBitDepthMinus1に1を加算した値と、初期三次元点のj番目の成分のビット精度が同じ場合、ビットストリームに付加される差分値が0となり、符号量を抑えることができる。 In this embodiment, the difference between the value obtained by adding 1 to PositionBitDepthMinus1, which is the bit precision of the position information encoded in the bit stream, and the bit precision of the jth component of the initial 3D point can be encoded as PositionStartDeltaBitDepth. With this method, if the value obtained by adding 1 to PositionBitDepthMinus1, which is the bit precision of the position information, is the same as the bit precision of the jth component of the initial 3D point, the difference value added to the bit stream will be 0, making it possible to reduce the amount of coding.

 さらに、PositionStartDeltaBitDepth[j]にPositionBitDepthMinus1に1を加算した値と同じ値を設定することで、j番目の成分のPositionStartBitDepth[j]の値を0とすることができる。この場合、PositionStartBitDepth[j]が0であるj番目の成分は、ビットストリームにおいて値0を符号化しなくてもよい。デコーダは、PositionStartBitDepth[j]が0であるj番目の成分については、値0であると推定することができる。これにより、PositionStartBitDepth[j]が0である成分をビットストリームに付加しないことで符号量を削減することができる。 Furthermore, by setting PositionStartDeltaBitDepth[j] to the same value as PositionBitDepthMinus1 plus 1, the value of PositionStartBitDepth[j] for the jth component can be set to 0. In this case, the jth component whose PositionStartBitDepth[j] is 0 does not need to be coded as 0 in the bitstream. The decoder can infer that the jth component whose PositionStartBitDepth[j] is 0 has a value of 0. This allows the amount of coding to be reduced by not adding components whose PositionStartBitDepth[j] is 0 to the bitstream.

 本実施の形態では、差分値であるPositionStartDeltaBitDepth[j]をビットストリームに付加する方法を示しているが、必ずしもこの方法に限られるわけではない。例えば、PositionStartBitDepth[j]をビットストリームに直接符号化する方法を用いることもできる。この方法により、差分値を算出する処理量を削減することができる。 In this embodiment, a method is shown in which the differential value PositionStartDeltaBitDepth[j] is added to the bitstream, but this method is not necessarily limited to this. For example, a method can be used in which PositionStartBitDepth[j] is directly encoded into the bitstream. This method can reduce the amount of processing required to calculate the differential value.

 また、PositionStartDeltaBitDepth[j]のビット長は、PositionBitDepthMinus1の値に基づいて決定することができる。具体的には、PositionStartDeltaBitDepth[j]のビット長をceil(log2(PositionBitDepthMinus1+2))として求めることができる。ここで、ceil(x)は、値xを切り上げた整数値を出力する関数である。このように、PositionBitDepthMinus1の値に応じてPositionStartDeltaBitDepth[j]のビット長を決定することで、効率的に符号量を削減することができる。 Furthermore, the bit length of PositionStartDeltaBitDepth[j] can be determined based on the value of PositionBitDepthMinus1. Specifically, the bit length of PositionStartDeltaBitDepth[j] can be calculated as ceil(log2(PositionBitDepthMinus1+2)). Here, ceil(x) is a function that outputs the integer value obtained by rounding up the value x. In this way, by determining the bit length of PositionStartDeltaBitDepth[j] according to the value of PositionBitDepthMinus1, the amount of code can be efficiently reduced.

 PositionPredModeは、位置情報を符号化する方法を示す情報である。例えば、符号化のフローチャートに示されるようなfine予測、coarse予測、および予測なしモードを含む予測方法としてmethodAを用いてもよい。予測方法はmethodAに限らず、3つの予測モードのうち2つの予測モードを組み合わせた予測方法、または1つの予測モードから構成される予測方法を採用することもできる。具体例としては、coarse予測と予測なしモードを組み合わせた予測方法methodBが考えられる。methodBを用いることにより、除算や小数点精度を必要とする演算処理を適用せずに予測値を生成することができるため、処理量を削減し、ロスレスでの符号化を実現することができる。さらに、位置情報の場合、fine予測として平行四辺形予測などの手法を含めてもよい。 PositionPredMode is information indicating the method for encoding position information. For example, methodA may be used as a prediction method including fine prediction, coarse prediction, and no prediction mode, as shown in the encoding flowchart. The prediction method is not limited to methodA, and a prediction method combining two of the three prediction modes, or a prediction method consisting of one prediction mode, may also be used. A specific example is methodB, a prediction method combining coarse prediction and no prediction mode. By using methodB, predicted values can be generated without applying division or arithmetic processing requiring decimal point precision, thereby reducing the amount of processing and enabling lossless encoding. Furthermore, in the case of position information, methods such as parallelogram prediction may be included as fine prediction.

 fineMaxcountは、平均fine予測値を算出する際に用いるfine予測の最大個数を示す情報である。PositionPredModeがfine予測を含む場合において、例えばPositionPredModeがmethodAである場合、fineMaxcountをビットストリームに付加することができる。fineMaxcountを1に設定することで、平均fine予測値の算出に使用するfine予測の数を1つに限定することができ、実質的に平均値計算を不要とすることができる。これにより、平均値を算出する処理量を削減し、平均値算出による小数点精度以下の数値の発生を防ぐことができる。 fineMaxcount is information indicating the maximum number of fine predictions used when calculating the average fine prediction value. When PositionPredMode includes fine prediction, for example when PositionPredMode is methodA, fineMaxcount can be added to the bitstream. By setting fineMaxcount to 1, the number of fine predictions used to calculate the average fine prediction value can be limited to one, essentially making average value calculation unnecessary. This reduces the amount of processing required to calculate the average value and prevents the occurrence of numbers with less than decimal precision due to average value calculation.

 また、fineMaxcountを0に設定することで、fine予測を適用しないようにすることもできる。この場合、予測モードとしては、coarse予測または予測なしモードなどを用いることができる。例えば、初期三次元点に続く三次元点の位置情報が全て同じである場合、初期三次元点に対して予測なしモードを適用し、それ以降の三次元点に対してcoarse予測を適用することで予測残差を常に0とすることができる。このような場合、fineMaxcountを0と設定することにより、fine予測を適用しないようにすることで、符号化または復号に要する処理量を削減することができる。 Fine prediction can also be prevented from being applied by setting fineMaxcount to 0. In this case, coarse prediction or no prediction mode can be used as the prediction mode. For example, if the position information of all 3D points following an initial 3D point is the same, the no prediction mode can be applied to the initial 3D point, and coarse prediction can be applied to subsequent 3D points, making it possible to always keep the prediction residual at 0. In such cases, setting fineMaxcount to 0 prevents the application of fine prediction, thereby reducing the amount of processing required for encoding or decoding.

 さらに、fine予測に必要な追加情報が存在する場合、fineMaxcountを0と設定することで、fine予測を適用せずに追加情報を符号化しないことで符号量を削減することもできる。 Furthermore, if there is additional information required for fine prediction, the amount of coding can be reduced by setting fineMaxcount to 0, which will not apply fine prediction and will not encode the additional information.

 図66は、実施の形態に係るmesh_position_dataのシンタックスの一例を示す図である。 Figure 66 shows an example of mesh_position_data syntax related to an embodiment.

 PositionStartCountは、初期三次元点の個数を示す情報である。PositionStart[c][j]は、c番目の初期三次元点に関する位置情報のj番目の成分の値を示す情報である。例えば、位置情報がxyz座標の場合、PositionStart[c][0]はc番目の初期三次元点のxの値を示し、PositionStart[c][1]はc番目の初期三次元点のyの値を示し、PositionStart[c][2]はc番目の初期三次元点のzの値を示してもよい。 PositionStartCount is information indicating the number of initial 3D points. PositionStart[c][j] is information indicating the value of the jth component of the position information for the cth initial 3D point. For example, if the position information is in xyz coordinates, PositionStart[c][0] may indicate the x value of the cth initial 3D point, PositionStart[c][1] may indicate the y value of the cth initial 3D point, and PositionStart[c][2] may indicate the z value of the cth initial 3D point.

 なお、PositionStart[c][j]は、前述したPositionStartBitDepthを用いて算出したビット長で固定長符号化してもよい。例えば、PositionStartBitDepth[0]が10、PositionStartBitDepth[1]が8、PositionStartBitDepth[2]が6の場合、c番目の初期三次元点の0番目の成分であるPositionStart[c][0]は10ビット精度、1番目の成分であるPositionStart[c][1]は8ビット精度、2番目の成分であるPositionStart[c][2]は6ビット精度であることを示し、それぞれ0番目の成分を10ビットで固定長符号化、1番目の成分を8ビットで固定長符号化、2番目の成分を6ビットで固定長符号化してもよい。このように、初期三次元点の成分ごとに適切なビット長を設定し、それを用いて符号化することで符号量を削減できる。 Note that PositionStart[c][j] may be fixed-length coded using the bit length calculated using the PositionStartBitDepth described above. For example, if PositionStartBitDepth[0] is 10, PositionStartBitDepth[1] is 8, and PositionStartBitDepth[2] is 6, then PositionStart[c][0], the 0th component of the cth initial 3D point, has 10-bit precision, PositionStart[c][1], the 1st component, has 8-bit precision, and PositionStart[c][2], the 2nd component, has 6-bit precision. The 0th component may be fixed-length coded using 10 bits, the 1st component using 8 bits, and the 2nd component using 6 bits. In this way, the amount of code can be reduced by setting an appropriate bit length for each component of the initial 3D point and encoding it using that.

 また、PositionStartBitDepth[j]が0の場合、PositionStart[c][j]をビットストリームに符号化しなくてもよく、デコーダはPositionStartBitDepth[j]が0である場合にPositionStart[c][j]の値を0と推定してもよい。この方法により、PositionStartBitDepth[j]が0であるj番目の成分をビットストリームに付加しないことで符号量を削減できる。 Also, if PositionStartBitDepth[j] is 0, PositionStart[c][j] does not need to be coded into the bitstream, and the decoder may infer that the value of PositionStart[c][j] is 0 when PositionStartBitDepth[j] is 0. This method reduces the amount of coding by not adding the jth component for which PositionStartBitDepth[j] is 0 to the bitstream.

 なお、PositionStartはunary符号化やExponential Golomb符号化などの可変長符号化を用いても構わない。また、2値化後の各ビットに対しコンテキストを割り当て、算術符号化を適用してもよい。これにより符号量を削減できる。 Note that PositionStart may use variable-length coding such as unary coding or Exponential Golomb coding. It is also possible to assign a context to each bit after binarization and apply arithmetic coding. This reduces the amount of code.

 また、PositionStartCountが0の場合、PositionStartを符号化しなくてもよく、デコーダはPositionStartCountが0の場合にPositionStartの値を0と推定してもよい。これにより符号量を削減できる。 Also, if PositionStartCount is 0, PositionStart does not need to be coded, and the decoder may infer that the value of PositionStart is 0 when PositionStartCount is 0. This reduces the amount of coding required.

 さらに、初期三次元点が必ず1個以上存在する場合は、PositionStartCountの代わりにPositionStartCountMinus1をビットストリームに付加してもよい。この場合、デコーダはPositionStartCountをPositionStartCountMinus1に1を加算して算出してもよい。 Furthermore, if there is always at least one initial 3D point, PositionStartCountMinus1 may be added to the bitstream instead of PositionStartCount. In this case, the decoder may calculate PositionStartCount by adding 1 to PositionStartCountMinus1.

 PositionFineResiCountは、fine予測で予測符号化された位置情報の予測残差の個数を示す情報である。PositionFineResiSizeは、PositionFineResiの符号量を示す情報であり、例えば、PositionFineResiを2値化して算術符号化した場合の符号量を示してもよい。 PositionFineResiCount is information indicating the number of prediction residuals of position information predictively coded using fine prediction. PositionFineResiSize is information indicating the code size of PositionFineResi, and may indicate, for example, the code size when PositionFineResi is binarized and arithmetically coded.

 このように、PositionFineResiより前に、PositionFineResiSizeによって符号量をデコーダに知らせることで、デコーダはPositionFineResiに関わるビットをビットストリームから先読みすることができる。例えば、PositionFineResiに関わる算術復号を進めながら、次に続くPositionCoarseResiの復号処理を並列に実施することができ、復号時間を削減することができる。 In this way, by informing the decoder of the code size using PositionFineResiSize before PositionFineResi, the decoder can pre-read the bits related to PositionFineResi from the bitstream. For example, while arithmetic decoding related to PositionFineResi is in progress, the decoding process for the following PositionCoarseResi can be performed in parallel, reducing the decoding time.

 PositionFineResi[c][j]は、c番目のfine予測で予測符号化された位置情報のj番目の成分の予測残差を示す情報である。PositionFineResi[c][j]は、Exponential Golomb符号化、またはunary符号化などによって2値化し、可変長符号化しても構わない。また、各ビットにコンテキストを割り当て、0と1の発生頻度に基づいて発生確率を更新しながら符号化してもよい。これにより符号化効率を向上できる。 PositionFineResi[c][j] is information indicating the prediction residual of the jth component of the position information predictively coded using the cth fine prediction. PositionFineResi[c][j] may be binarized using Exponential Golomb coding or unary coding, and then variable-length coded. Alternatively, a context may be assigned to each bit, and the coding may be performed while updating the probability of occurrence based on the frequency of occurrence of 0s and 1s. This can improve coding efficiency.

 さらに、各ビットの算術符号化に用いるコンテキストは、後述するPositionCoarseResiで用いるコンテキストと共有してもよい。この方法により、コンテキスト数を削減することができる。また、各ビットの算術符号化に用いるコンテキストは、後述するPositionCoarseResiで用いるコンテキストと異なっていてもよい。このようにすることで、fine予測とcoarse予測で予測残差の傾向が異なる場合の符号化効率を向上できる。また、異なるコンテキストを用いることでPositionFineResiとPositionCoarseResiを並列に復号することも可能である。 Furthermore, the context used for arithmetic coding of each bit may be shared with the context used by PositionCoarseResi, which will be described later. This method allows the number of contexts to be reduced. Also, the context used for arithmetic coding of each bit may be different from the context used by PositionCoarseResi, which will be described later. This improves coding efficiency when the trends in prediction residuals differ between fine prediction and coarse prediction. Furthermore, using different contexts makes it possible to decode PositionFineResi and PositionCoarseResi in parallel.

 PositionCoarseResiCountは、coarse予測で予測符号化された位置情報の予測残差の個数を示す情報である。PositionCoarseResiSizeは、PositionCoarseResiの符号量を示す情報であり、例えば、PositionCoarseResiを2値化して算術符号化した場合の符号量を示してもよい。 PositionCoarseResiCount is information indicating the number of prediction residuals of position information predictively coded using coarse prediction. PositionCoarseResiSize is information indicating the code size of PositionCoarseResi, and may indicate, for example, the code size when PositionCoarseResi is binarized and arithmetically coded.

 このように、PositionCoarseResiより前にPositionCoarseResiSizeによって符号量をデコーダに知らせることで、デコーダはPositionCoarseResiに関わるビットをビットストリームから先読みすることができる。例えば、PositionCoarseResiに関わる算術復号を進めながら、次に続くビットストリームの復号処理を並列に実施することができ、復号時間を削減することができる。 In this way, by informing the decoder of the code size using PositionCoarseResiSize before PositionCoarseResi, the decoder can pre-read the bits related to PositionCoarseResi from the bitstream. For example, while arithmetic decoding related to PositionCoarseResi is in progress, the decoding process for the following bitstream can be performed in parallel, reducing the decoding time.

 PositionCoarseResi[c][j]は、c番目のcoarse予測で予測符号化された位置情報のj番目の成分の予測残差を示す情報である。PositionCoarseResi[c][j]は、Exponential Golomb符号化またはunary符号化などによって2値化し、可変長符号化しても構わない。また、各ビットにコンテキストを割り当て、0と1の発生頻度に基づいて発生確率を更新しながら符号化してもよい。これにより符号化効率を向上させることができる。 PositionCoarseResi[c][j] is information indicating the prediction residual of the jth component of the position information predictively coded using the cth coarse prediction. PositionCoarseResi[c][j] may be binarized using Exponential Golomb coding or unary coding, and then variable-length coded. Alternatively, a context may be assigned to each bit, and the coding may be performed while updating the probability of occurrence based on the frequency of occurrence of 0s and 1s. This can improve coding efficiency.

 また、各ビットの算術符号化に用いるコンテキストは、前述したPositionFineResiで用いるコンテキストと共有してもよい。この方法により、コンテキスト数を削減することができる。また、各ビットの算術符号化に用いるコンテキストは、前述したPositionFineResiで用いるコンテキストと異なっていてもよい。このようにすることで、fine予測とcoarse予測で予測残差の傾向が異なる場合の符号化効率を向上できる。 Furthermore, the context used for arithmetic coding of each bit may be shared with the context used by PositionFineResi described above. This method allows the number of contexts to be reduced. Furthermore, the context used for arithmetic coding of each bit may be different from the context used by PositionFineResi described above. This can improve coding efficiency when the trends in prediction residuals differ between fine prediction and coarse prediction.

 さらに、異なるコンテキストを用いることでPositionFineResiとPositionCoarseResiを並列に復号することも可能である。 Furthermore, it is possible to decode PositionFineResi and PositionCoarseResi in parallel by using different contexts.

 なお、PositionStartCount、PositionFineResiCount、PositionFineResiSize、PositionFineResi、PositionCoarseResiCount、PositionCoarseResiSize、PositionCoarseResiはExponential Golomb符号化またはunary符号化などによって2値化し、可変長符号化しても構わない。また、各ビットにコンテキストを割り当て、0と1の発生頻度に基づいて発生確率を更新しながら符号化してもよい。これにより符号化効率を向上させることができる。また、これらの情報を固定長で符号化することも可能であり、処理量を削減することができる。 Note that PositionStartCount, PositionFineResiCount, PositionFineResiSize, PositionFineResi, PositionCoarseResiCount, PositionCoarseResiSize, and PositionCoarseResi may be binarized using Exponential Golomb coding or unary coding, and then variable-length coded. A context may also be assigned to each bit, and coding may be performed while updating the probability of occurrence based on the frequency of occurrence of 0 and 1. This can improve coding efficiency. It is also possible to code this information at a fixed length, reducing the amount of processing required.

 (構成例)
 図67は、実施の形態における、符号化装置の構成の一例を示す図である。図68は、実施の形態における、符号化装置による符号化方法の一例を示すフローチャートである。
(Configuration example)
Fig. 67 is a diagram showing an example of the configuration of an encoding device in an embodiment. Fig. 68 is a flowchart showing an example of an encoding method by the encoding device in an embodiment.

 符号化装置1530は、回路1531と、回路1531に接続されたメモリ1532とを備える。符号化装置1530は、図54及び図55で説明した処理を実行してもよい。 The encoding device 1530 includes a circuit 1531 and a memory 1532 connected to the circuit 1531. The encoding device 1530 may perform the processing described in Figures 54 and 55.

 回路1531は、以下の動作を行う。 Circuit 1531 performs the following operations:

 回路1531は、三次元メッシュに含まれる複数の頂点を取得する(S1541)。回路1531は、複数の頂点のうちの1つの頂点の属性情報を少なくとも3つの予測モードのうちの1つの予測モードを用いて符号化する(S1542)。3つの予測モードは、予測しない第1予測モードと、処理済みの1つの頂点に基づく予測符号化を行う第2予測モードと、処理済みの2つ以上の頂点に基づく予測符号化を行う第3予測モードとを含む。属性情報の成分の数が1に設定される場合、符号化(S1542)において、属性情報は、第3予測モードとは異なる予測モードで符号化される。 Circuit 1531 acquires multiple vertices included in a three-dimensional mesh (S1541). Circuit 1531 encodes attribute information of one of the multiple vertices using one of at least three prediction modes (S1542). The three prediction modes include a first prediction mode that does not make a prediction, a second prediction mode that performs predictive coding based on one processed vertex, and a third prediction mode that performs predictive coding based on two or more processed vertices. If the number of components of the attribute information is set to 1, during encoding (S1542), the attribute information is encoded using a prediction mode different from the third prediction mode.

 これによれば、成分数が1に設定される場合に第3予測モード(処理済みの2つ以上の頂点に基づく予測符号化)を適用しないことで、計算処理の負荷を軽減できる。また、冗長な予測計算を排除することで、符号化処理の効率を向上できる。 This reduces the load on the calculation process by not applying the third prediction mode (predictive coding based on two or more vertices that have already been processed) when the number of components is set to 1. Furthermore, eliminating redundant prediction calculations improves the efficiency of the coding process.

 例えば、1つの頂点が複数の頂点のうちの他の頂点との間で接続性を有する場合、属性情報の成分の数が1に設定される。 For example, if a vertex has connectivity with another vertex among multiple vertices, the number of components in the attribute information is set to 1.

 これによれば、成分数が1である場合に接続性を持つことを条件とすることで、接続性を前提とした効率的な符号化方式を適用できるようになる。これにより、符号化データの圧縮効率を向上できる。 By setting the condition that connectivity exists when the number of components is 1, it becomes possible to apply an efficient encoding method that assumes connectivity. This improves the compression efficiency of encoded data.

 例えば、属性情報は特定の属性情報である。 For example, attribute information is specific attribute information.

 これによれば、特定の属性情報に対する符号化を行うことで、符号化対象の明確化と、符号化効率を高めるための最適化を容易に行うことができる。 This makes it easy to clarify what is to be coded and optimize it to improve coding efficiency by coding specific attribute information.

 例えば、特定の属性情報は、1つの頂点を二次元平面に投影したときの1つの頂点が属する領域を示す平面情報である。 For example, the specific attribute information is plane information that indicates the area to which a vertex belongs when the vertex is projected onto a two-dimensional plane.

 これによれば、二次元平面への投影に基づいて符号化を行うことで、三次元情報を効率よく表現できる。また、平面情報を属性情報として符号化することで、データの簡略化と符号化効率の向上を図ることができる。 This allows for efficient representation of three-dimensional information by encoding it based on projection onto a two-dimensional plane. Furthermore, encoding planar information as attribute information simplifies data and improves encoding efficiency.

 例えば、1つの頂点の属性情報と、他の頂点の属性情報とは、共通する。 For example, the attribute information of one vertex is common to the attribute information of another vertex.

 このため、接続性を持つ複数の頂点が同一の属性情報を共有する場合、冗長なデータを省略できるため、符号量を削減できる。 As a result, when multiple vertices with connectivity share the same attribute information, redundant data can be omitted, reducing the amount of coding required.

 例えば、1つの頂点が第2予測モードで符号化される場合の予測残差は0である。 For example, when one vertex is coded in the second prediction mode, the prediction residual is 0.

 このため、第2予測モードによる予測が完全に一致する場合の予測残差が0であるため、符号化効率をさらに向上させることができる。 As a result, the prediction residual is 0 when predictions made in the second prediction mode are a perfect match, further improving coding efficiency.

 図69は、実施の形態における、復号装置の構成の一例を示す図である。図70は、実施の形態における、復号装置による復号方法の一例を示すフローチャートである。 Figure 69 is a diagram showing an example of the configuration of a decoding device in an embodiment. Figure 70 is a flowchart showing an example of a decoding method performed by a decoding device in an embodiment.

 復号装置1540は、回路1541と、回路1541に接続されたメモリ1542とを備える。復号装置1540は、図56で説明した処理を実行してもよい。 The decoding device 1540 includes a circuit 1541 and a memory 1542 connected to the circuit 1541. The decoding device 1540 may perform the processing described in FIG. 56.

 回路1541は、以下の動作を行う。 Circuit 1541 performs the following operations:

 回路1541は、三次元メッシュに含まれる複数の頂点を取得する(S1551)。回路1541は、複数の頂点のうちの1つの頂点の属性情報を少なくとも3つの予測モードのうちの1つの予測モードを用いて復号する(S1552)。3つの予測モードは、予測しない第1予測モードと、処理済みの1つの頂点に基づく予測復号を行う第2予測モードと、処理済みの2つ以上の頂点に基づく予測復号を行う第3予測モードとを含む。属性情報の成分の数が1に設定される場合、復号(S1552)において、属性情報は、第3予測モードとは異なる予測モードで復号される。 Circuit 1541 acquires multiple vertices included in a three-dimensional mesh (S1551). Circuit 1541 decodes attribute information of one of the multiple vertices using one of at least three prediction modes (S1552). The three prediction modes include a first prediction mode that does not make a prediction, a second prediction mode that performs predictive decoding based on one processed vertex, and a third prediction mode that performs predictive decoding based on two or more processed vertices. If the number of components of the attribute information is set to 1, during decoding (S1552), the attribute information is decoded using a prediction mode different from the third prediction mode.

 これによれば、復号時に成分数が1の場合は第3予測モードを使用しないことで、復号処理の効率を向上できる。また、冗長な処理を省略することで、復号処理の計算負荷を削減できる。 This improves the efficiency of the decoding process by not using the third prediction mode when the number of components is 1 during decoding. Furthermore, by omitting redundant processing, the computational load of the decoding process can be reduced.

 例えば、1つの頂点が複数の頂点のうちの他の頂点との間で接続性を有する場合、属性情報の成分の数が1に設定される。 For example, if a vertex has connectivity with another vertex among multiple vertices, the number of components in the attribute information is set to 1.

 これによれば、接続性を有する場合に成分数が1であると定めることで、接続性に基づく効率的な復号処理が可能となり、処理負荷を軽減できる。 By defining the number of components as 1 when connectivity exists, efficient decoding processing based on connectivity becomes possible, reducing the processing load.

 例えば、属性情報は特定の属性情報である。 For example, attribute information is specific attribute information.

 これによれば、特定の属性情報に対する復号処理を行うことで、復号対象を明確化し、復号の効率を高めることができる。 By performing decoding processing on specific attribute information, it is possible to clarify the decoding target and improve decoding efficiency.

 例えば、特定の属性情報は、1つの頂点を二次元平面に投影したときの1つの頂点が属する領域を示す平面情報である。 For example, the specific attribute information is plane information that indicates the area to which a vertex belongs when the vertex is projected onto a two-dimensional plane.

 これによれば、二次元平面情報に基づく復号処理を行うことで、三次元メッシュに対する効率的な属性情報の復号を実現できる。 This makes it possible to perform decoding processing based on two-dimensional plane information, thereby enabling efficient decoding of attribute information for three-dimensional meshes.

 例えば、1つの頂点の属性情報と、他の頂点の属性情報とは、共通する。 For example, the attribute information of one vertex is common to the attribute information of another vertex.

 このため、共通する属性情報を用いる場合、複数の頂点に対する属性情報の冗長な復号を省略でき、復号効率を向上できる。 As a result, when using common attribute information, redundant decoding of attribute information for multiple vertices can be omitted, improving decoding efficiency.

 例えば、1つの頂点が第2予測モードで復号される場合の予測残差は0である。 For example, when one vertex is decoded in the second prediction mode, the prediction residual is 0.

 このため、復号処理の負荷を減らし、データ復号の効率を向上できる。 This reduces the load on the decoding process and improves the efficiency of data decoding.

 また、本開示の符号化装置及び復号装置は、他の態様の少なくとも一部を組み合わせることにより実施されてもよい。さらに、本開示の符号化装置及び復号装置の構成または処理は、本態様に従ったフローチャートのいずれかに示される処理の一部、いずれかの装置の構成の一部、シンタックスの一部などを他の態様と組み合わせることによって実現されてもよい。 Furthermore, the encoding device and decoding device of the present disclosure may be implemented by combining at least a portion of other aspects. Furthermore, the configuration or processing of the encoding device and decoding device of the present disclosure may be realized by combining part of the processing shown in any of the flowcharts according to this aspect, part of the configuration of any of the devices, part of the syntax, etc. with other aspects.

 また本開示の復号装置による処理は、符号化装置においても同様に実行されてもよい。 Furthermore, the processing performed by the decoding device of this disclosure may also be performed in an encoding device in a similar manner.

 なお、符号化装置1530の回路1531は、以下の動作を行ってもよい。この動作例は、第2の例である。 Note that the circuit 1531 of the encoding device 1530 may also perform the following operation. This operation example is the second example.

 回路1531は、三次元メッシュに含まれる複数の頂点を取得する(S1541)。回路1531は、複数の頂点のうちの1つの頂点を、第1予測モード(上記実施の形態では第2予測モード)または第2予測モード(上記実施の形態では第3予測モード)を用いて算術符号化する(S1542)。第1予測モードの算術符号化で用いられる第1コンテキストと、第2予測モードの算術符号化で用いられる第2コンテキストとは、共通している。 The circuit 1531 acquires multiple vertices included in a three-dimensional mesh (S1541). The circuit 1531 arithmetically encodes one of the multiple vertices using the first prediction mode (the second prediction mode in the above embodiment) or the second prediction mode (the third prediction mode in the above embodiment) (S1542). The first context used in the arithmetic encoding of the first prediction mode and the second context used in the arithmetic encoding of the second prediction mode are the same.

 これによれば、異なる予測モード(第1予測モードと第2予測モード)で共通のコンテキストを使用することで、コンテキスト管理の効率化が図れる。これにより、コンテキストの初期化または更新にかかる処理負荷を低減でき、符号化処理の効率を向上させることができる。さらに、コンテキストを共通化することにより、算術符号化において傾向が同じようなデータであれば、別々のパラメータであっても符号化効率が向上する可能性がある。コンテキストを共有化することで、冗長なコンテキストメモリの使用を削減し、符号化効率を高めることができる。 This allows for more efficient context management by using a common context for different prediction modes (first prediction mode and second prediction mode). This reduces the processing load required for initializing or updating the context, and improves the efficiency of the encoding process. Furthermore, by sharing a context, there is a possibility that encoding efficiency will improve even if the data has different parameters, as long as they have similar tendencies in arithmetic encoding. Sharing a context reduces the use of redundant context memory and improves encoding efficiency.

 例えば、第1予測モードは、処理済みの1つの頂点に基づく予測符号化を行う予測モードである。第2予測モードは、処理済みの2つ以上の頂点に基づく予測符号化を行う予測モードである。 For example, the first prediction mode is a prediction mode that performs predictive coding based on one processed vertex. The second prediction mode is a prediction mode that performs predictive coding based on two or more processed vertices.

 これによれば、第1予測モード(処理済みの1つの頂点に基づく予測)と第2予測モード(処理済みの2つ以上の頂点に基づく予測)という異なる予測モードを用いることで、状況に応じた予測精度の向上が図れる。特に、処理済みの2つ以上の頂点に基づく予測は、より正確な符号化を実現できる。さらに、別々の予測で生成した属性情報の残差についてコンテキストを共有化することにより、コンテキスト数を削減しつつ、算術符号化の符号化効率を向上できる。 This allows for improved prediction accuracy depending on the situation by using different prediction modes: a first prediction mode (prediction based on one processed vertex) and a second prediction mode (prediction based on two or more processed vertices). In particular, prediction based on two or more processed vertices can achieve more accurate coding. Furthermore, by sharing contexts for the residuals of attribute information generated by separate predictions, the number of contexts can be reduced while improving the coding efficiency of arithmetic coding.

 例えば、1つの頂点の算術符号化は、1つの頂点の位置情報の算術符号化を含む。 For example, arithmetic coding of one vertex includes arithmetic coding of the position information of one vertex.

 これによれば、位置情報を対象とする符号化を行うことで、三次元メッシュの構造または頂点の配置を高効率に符号化できる。位置情報に対するコンテキスト共通化の適用により、算術符号化の効率をさらに高めることができる。特に、異なる予測モードで生成された位置情報の残差に対してコンテキストを共有することで、効率的な符号化が可能となる。 As a result, by encoding position information, it is possible to encode the structure or vertex arrangement of a 3D mesh with high efficiency. Applying context sharing to position information can further improve the efficiency of arithmetic coding. In particular, sharing context for the residuals of position information generated using different prediction modes enables efficient encoding.

 例えば、1つの頂点の算術符号化は、1つの頂点の属性情報の算術符号化を含む。 For example, arithmetic coding of one vertex includes arithmetic coding of the attribute information of one vertex.

 これによれば、属性情報(例:色、法線ベクトルなど)に対する符号化を含むことで、三次元メッシュのレンダリングまたは表示品質の向上に寄与できる。属性情報に対しても共通コンテキストを適用することで、符号化効率を高めることができる。また、別々の予測で生成された属性情報の残差についてコンテキストを共有化することで、符号化効率をさらに向上させることができる。 This can contribute to improving the rendering or display quality of 3D meshes by including coding for attribute information (e.g., color, normal vectors, etc.). Applying a common context to attribute information can also improve coding efficiency. Furthermore, sharing a context for the residuals of attribute information generated by separate predictions can further improve coding efficiency.

 例えば、複数の頂点は、三次元メッシュに基づく1つのグループに含まれる。つまり、複数の頂点は、同じ三次元メッシュを構成する複数の頂点のグループ、または、同じサブメッシュを構成する複数の頂点のグループに含まれる。 For example, multiple vertices are included in one group based on a three-dimensional mesh. In other words, multiple vertices are included in a group of multiple vertices that make up the same three-dimensional mesh, or in a group of multiple vertices that make up the same sub-mesh.

 これによれば、同一グループに含まれる頂点の符号化時に共通コンテキストを使用することで、関連する頂点同士の予測精度を向上させることができる。また、メッシュやサブメッシュ単位でコンテキストを共通化することにより、コンテキスト数を削減でき、符号化効率をさらに改善できる。 This allows for the use of a common context when encoding vertices in the same group, thereby improving the prediction accuracy of related vertices. Furthermore, by sharing contexts on a mesh or sub-mesh basis, the number of contexts can be reduced, further improving encoding efficiency.

 また、復号装置1540の回路1541は、以下の動作を行ってもよい。この動作例は、第2の例である。 Furthermore, the circuit 1541 of the decoding device 1540 may perform the following operation. This operation example is the second example.

 回路1541は、三次元メッシュに含まれる複数の頂点を取得する(S1551)。回路1541は、複数の頂点のうちの1つの頂点を、第1予測モード(上記実施の形態では第2予測モード)または第2予測モード(上記実施の形態では第3予測モード)を用いて算術復号する(S1552)。第1予測モードの算術復号で用いられる第1コンテキストと、第2予測モードの算術復号で用いられる第2コンテキストとは、共通している。 The circuit 1541 acquires multiple vertices included in a three-dimensional mesh (S1551). The circuit 1541 arithmetically decodes one of the multiple vertices using the first prediction mode (the second prediction mode in the above embodiment) or the second prediction mode (the third prediction mode in the above embodiment) (S1552). The first context used in the arithmetic decoding of the first prediction mode and the second context used in the arithmetic decoding of the second prediction mode are the same.

 これによれば、異なる予測モードで共通のコンテキストを使用することで、復号処理の効率化を図ることができる。コンテキストを共通化することで、算術復号時のメモリ使用量や処理負荷を軽減することができる。さらに、共通コンテキストを使用することで、異なるパラメータであっても傾向が同じ場合に復号効率を向上させることができる。 This allows for the use of a common context across different prediction modes, making the decoding process more efficient. Sharing a context reduces memory usage and processing load during arithmetic decoding. Furthermore, using a common context can improve decoding efficiency even when different parameters have the same tendency.

 例えば、第1予測モードは、処理済みの1つの頂点に基づく予測復号を行う予測モードである。第2予測モードは、処理済みの2つ以上の頂点に基づく予測復号を行う予測モードである。 For example, the first prediction mode is a prediction mode that performs predictive decoding based on one processed vertex. The second prediction mode is a prediction mode that performs predictive decoding based on two or more processed vertices.

 これによれば、第1予測モード(処理済みの1つの頂点に基づく予測復号)と第2予測モード(処理済みの2つ以上の頂点に基づく予測復号)を用いることで、符号化時の予測方法に対応した効率的な復号が可能となる。また、複数の予測方法に対応することで、復号処理の精度を向上させることができる。コンテキストを共有することで、復号処理における演算量やメモリ消費量を削減することができる。 This allows for efficient decoding that corresponds to the prediction method used during encoding by using the first prediction mode (predictive decoding based on one processed vertex) and the second prediction mode (predictive decoding based on two or more processed vertices). Furthermore, by supporting multiple prediction methods, the accuracy of the decoding process can be improved. By sharing context, the amount of calculation and memory consumption during the decoding process can be reduced.

 例えば、1つの頂点の算術復号は、1つの頂点の位置情報の算術復号を含む。 For example, arithmetic decoding of one vertex includes arithmetic decoding of the position information of one vertex.

 これによれば、符号化時に位置情報の符号化を行った場合に対応し、復号時に位置情報を効率的に復元できる。位置情報に対する共通コンテキストの適用により、復号効率を向上させることができる。また、位置情報における異なる予測モードで共通コンテキストを用いることで、処理負荷を軽減することができる。 This allows for cases where position information is coded during encoding, and allows the position information to be efficiently restored during decoding. Applying a common context to position information can improve decoding efficiency. Furthermore, using a common context for different prediction modes for position information can reduce processing load.

 例えば、1つの頂点の算術復号は、1つの頂点の属性情報の算術復号を含む。 For example, arithmetic decoding of one vertex includes arithmetic decoding of the attribute information of one vertex.

 これによれば、符号化時に属性情報の符号化を行った場合に対応し、復号時に属性情報を効率的に復元できる。属性情報に対して共通コンテキストを適用することで、復号効率を高めることができる。また、異なる予測モードで生成された属性情報の残差に対するコンテキスト共通化により、効率的な復号が可能となる。 This allows for cases where attribute information is coded during encoding, and allows the attribute information to be efficiently restored during decoding. By applying a common context to the attribute information, decoding efficiency can be improved. Furthermore, by sharing a context for the residuals of attribute information generated in different prediction modes, efficient decoding becomes possible.

 例えば、複数の頂点は、三次元メッシュに基づく1つのグループに含まれる。つまり、複数の頂点は、同じ三次元メッシュを構成する複数の頂点のグループ、または、同じサブメッシュを構成する複数の頂点のグループに含まれる。 For example, multiple vertices are included in one group based on a three-dimensional mesh. In other words, multiple vertices are included in a group of multiple vertices that make up the same three-dimensional mesh, or in a group of multiple vertices that make up the same sub-mesh.

 これによれば、メッシュまたはサブメッシュ単位で共通コンテキストを使用することで、復号時の処理効率を向上できる。特に、複数の頂点を一つのグループとして処理する場合に、冗長なコンテキストを削減しつつ効率的に復号できる効果がある。 This allows for improved processing efficiency during decoding by using a common context on a mesh or sub-mesh basis. This is particularly effective when processing multiple vertices as a single group, as it allows for efficient decoding while reducing redundant context.

 図71は、実施の形態に係る第3予測モードの予測値の算出処理の他の一例を示すフローチャートである。つまり、図55のフローチャートの変形例である。 FIG. 71 is a flowchart showing another example of the process for calculating predicted values in the third prediction mode according to an embodiment. In other words, it is a modified example of the flowchart in FIG. 55.

 符号化装置は、countを0に設定する(S1561)。 The encoding device sets count to 0 (S1561).

 符号化装置は、countがfineMaxcount未満であるか否かを判定する(S1562)。符号化装置は、countがfineMaxcount未満である場合(S1562でYes)、ステップS1563に進み、そうでない場合(S1562でNo)、ステップS1565に進む。なお、符号化装置がfineMaxcount=0と設定することで、fine予測をオフにすることができる。また、符号化装置は、設定したfineMaxcountの値をビットストリームに付加してもよい。また復号装置は、ビットストリームから復号したfineMaxcountの値が0の場合は、fine予測を適用せずに属性情報を復号してもよい。 The encoding device determines whether count is less than fineMaxcount (S1562). If count is less than fineMaxcount (Yes in S1562), the encoding device proceeds to step S1563; if not (No in S1562), the encoding device proceeds to step S1565. Note that the encoding device can turn off fine prediction by setting fineMaxcount=0. The encoding device may also add the set fineMaxcount value to the bitstream. If the value of fineMaxcount decoded from the bitstream is 0, the decoding device may decode the attribute information without applying fine prediction.

 符号化装置は、count番目のfine予測値を小数精度で算出する(S1563)。 The encoding device calculates the count-th fine prediction value with decimal precision (S1563).

 符号化装置は、countに1を加算して、countを更新し(S1564)、ステップS1562に戻る。 The encoding device adds 1 to count, updates it (S1564), and returns to step S1562.

 符号化装置は、countが0より大きいか否かを判定する(S1565)。符号化装置は、countが0より大きい場合(S1565でYes)、ステップS1566に進み、そうでない場合(S1565でNo)、ステップS1568に進む。 The encoding device determines whether count is greater than 0 (S1565). If count is greater than 0 (Yes in S1565), the encoding device proceeds to step S1566; if not (No in S1565), the encoding device proceeds to step S1568.

 符号化装置は、平均fine予測値を小数精度で算出する(S1566)。つまり、符号化装置は、1個以上のfine予測値の平均を平均fine予測値として算出する。なお、1個以上のfine予測値は、ステップS1561~S1564において得られたcount個のfine予測値である。なお、fine予測値が1個の場合、1個のfine予測値を平均fine予測値として算出してもよい。なお、S1566では、2個以上のfine予測値を統合して1つのfine予測値を算出できればよく、平均fine予測値を算出することに限らない。 The encoding device calculates the average fine prediction value with decimal precision (S1566). That is, the encoding device calculates the average of one or more fine prediction values as the average fine prediction value. Note that the one or more fine prediction values are the count fine prediction values obtained in steps S1561 to S1564. Note that if there is one fine prediction value, this one fine prediction value may be calculated as the average fine prediction value. Note that in S1566, it is sufficient to combine two or more fine prediction values to calculate one fine prediction value, and calculation of the average fine prediction value is not limited to this.

 符号化装置は、平均fine予測値(統合値)の小数部のビット数が小さくなるようにビット数の調整を行う(S1567)。符号化装置は、例えば、小数部のビット数を0に調整する。つまり、符号化装置は、平均fine予測値(統合値)を整数精度化(整数化)する。なお、符号化装置は、ビット数の調整の際に、四捨五入などのような小数値を丸める処理を行ってもよい。 The encoding device adjusts the number of bits in the decimal part of the average fine prediction value (integrated value) so that it is smaller (S1567). The encoding device, for example, adjusts the number of bits in the decimal part to 0. In other words, the encoding device converts the average fine prediction value (integrated value) to integer precision (integerization). Note that when adjusting the number of bits, the encoding device may perform a process to round decimal values, such as by rounding off.

 符号化装置は、countを出力する(S1568)。 The encoding device outputs count (S1568).

 次に、三次元空間の情報を用いて二次元平面のUV座標におけるfine予測値を求める例について説明する。 Next, we will explain an example of using information from three-dimensional space to calculate fine prediction values in the UV coordinates of a two-dimensional plane.

 図72は、実施の形態に係るfine予測する場合の三次元空間上のベクトルの一例を示す図である。図73は、実施の形態に係るfine予測する場合の二次元平面上のベクトルの一例を示す図である。 FIG. 72 is a diagram showing an example of vectors in three-dimensional space when performing fine prediction according to an embodiment. FIG. 73 is a diagram showing an example of vectors on a two-dimensional plane when performing fine prediction according to an embodiment.

 図72に示すように三次元点G(curr)に接続する符号化済みの2つの三次元点G(next)及び三次元点G(prev)とする。また、図73に示すように、これらの三次元点G(curr)、G(next)、G(prev)をUV座標に投影した点をそれぞれUV(curr)、UV(next)、UV(prev)とする。以下では、UV(curr)に対するベクトルをfine予測する場合の予測値(predUV)の算出例について説明する。 As shown in Figure 72, two encoded 3D points G(next) and G(prev) are connected to the 3D point G(curr). Furthermore, as shown in Figure 73, the points obtained by projecting these 3D points G(curr), G(next), and G(prev) onto the UV coordinate system are UV(curr), UV(next), and UV(prev), respectively. Below, we explain an example of how to calculate the predicted value (predUV) when fine-predicting a vector for UV(curr).

 ここで、三次元点G(curr)、G(next)、G(prev)に対応する三次元ベクトルをそれぞれgCurr、gNext、gPrevとし、二次元点UV(curr)、UV(next)、UV(prev)に対応する二次元ベクトルをそれぞれuvCurr、uvNext、uvPrevとする。また、gNextからgPrevへのベクトルをgNgPとし、gNextからgCurrへのベクトルをgNgCとし、UV(next)からUV(prev)へのベクトルをuvNuvPとする。さらに、gNgPとgNgCの内積をdot(gNgP, gNgC)とし、gNgP同士の内積をdot(gNgP, gNgP)とする。 Here, let gCurr, gNext, and gPrev be the three-dimensional vectors corresponding to the three-dimensional points G(curr), G(next), and G(prev), respectively, and let uvCurr, uvNext, and uvPrev be the two-dimensional vectors corresponding to the two-dimensional points UV(curr), UV(next), and UV(prev), respectively. Also, let gNgP be the vector from gNext to gPrev, gNgC be the vector from gNext to gCurr, and uvNuvP be the vector from UV(next) to UV(prev). Furthermore, let dot(gNgP, gNgC) be the dot product of gNgP and gNgC, and dot(gNgP, gNgP) be the dot product of two gNgPs.

 三次元点G(curr)および二次元点UV(curr)からそれぞれの対辺への投影点を三次元点G(proj)、二次元点UV(proj)とする。ベクトルgProj、uvProjは、三次元点G(curr)、G(next)、G(prev)から構成される三角形と、二次元点UV(curr)、UV(next)、UV(prev)から構成される三角形とが相似であると仮定することによって求められる。具体的には、ベクトルgProj、uvProjは次のように表される。 Let the projection points of the 3D point G(curr) and the 2D point UV(curr) onto the opposite sides be the 3D point G(proj) and the 2D point UV(proj), respectively. The vectors gProj and uvProj can be found by assuming that the triangle formed by the 3D points G(curr), G(next), and G(prev) is similar to the triangle formed by the 2D points UV(curr), UV(next), and UV(prev). Specifically, the vectors gProj and uvProj are expressed as follows:

uvProj = uvNext + uvNuvP × (dot(gNgP, gNgC) / dot(gNgP, gNgP))
gProj = gNext + gNgP × (dot(gNgP, gNgC) / dot(gNgP, gNgP))
uvProj = uvNext + uvNuvP × (dot(gNgP, gNgC) / dot(gNgP, gNgP))
gProj = gNext + gNgP × (dot(gNgP, gNgC) / dot(gNgP, gNgP))

 さらに、投影点G(proj)からG(curr)までのベクトル同士の内積はdot(gCurr - gProj, gCurr - gProj)である。ここで、uvNuvPに直交するベクトルをorthogonal(uvNuvP)とする。 Furthermore, the dot product of the vectors from the projection point G(proj) to G(curr) is dot(gCurr - gProj, gCurr - gProj). Here, the vector orthogonal to uvNuvP is defined as orthogonal(uvNuvP).

 このとき、投影点G(proj)とG(curr)の間の距離と、投影点UV(proj)とUV(curr)の間の距離は、それぞれの三角形が相似であるという仮定のもとで対応する。したがって、投影点UV(proj)からUV(curr)までのベクトルuvProjuvCurrは次のように表すことができる。 In this case, the distance between the projection points G(proj) and G(curr) corresponds to the distance between the projection points UV(proj) and UV(curr) under the assumption that the triangles are similar. Therefore, the vector uvProjuvCurr from the projection points UV(proj) to UV(curr) can be expressed as follows:

uvProjuvCurr = orthogonal(uvNuvP) * sqrt(dot(gCurr - gProj, gCurr - gProj) / dot(gNgP, gNgP)) uvProjuvCurr = orthogonal(uvNuvP) * sqrt(dot(gCurr - gProj, gCurr - gProj) / dot(gNgP, gNgP))

 ただし、sqrtは平方根である。 where sqrt is the square root.

 この結果を用いることで、予測ベクトルpredUVは次のように求めることができる。 Using this result, the predicted vector predUV can be calculated as follows:

predUV = uvProj + uvProjuvCur predUV = uvProj + uvProjuvCur

 また、予測ベクトルを predUV1 として、次のように求めることもできる。 Alternatively, the predicted vector can be calculated as follows, assuming predUV1:

predUV1 = uvProj - uvProjuvCur predUV1 = uvProj - uvProjuvCur

 このように、predUV とは逆方向の予測ベクトルを考慮することで予測精度を向上させ、符号量を削減することができる。 In this way, by considering prediction vectors in the opposite direction to predUV, prediction accuracy can be improved and the amount of coding can be reduced.

 上記では、ファイン予測の具体的な算出例を示しているが、例えばベクトルの成分のレンジが極端に広い場合、演算精度を確保するために小数部のビット数を多く設定すると、オーバーフローが発生する可能性がある。一方で、オーバーフローを回避するために小数部のビット数を減らしたり、整数精度での演算を行った場合には、演算精度が悪化する可能性がある。 The above shows a specific example of a fine prediction calculation, but if the range of vector components is extremely wide, for example, setting a large number of decimal points to ensure calculation accuracy may result in overflow. On the other hand, reducing the number of decimal points or performing calculations with integer precision to avoid overflow may result in a decrease in calculation accuracy.

 このような問題を解決するために、ベクトルgNgPとベクトルgNgCとの内積の大きさ、あるいは内積の絶対値の大きさに基づいて、小数部のビット数を調整することができる。 To solve this problem, the number of bits in the fractional part can be adjusted based on the magnitude of the dot product between vector gNgP and vector gNgC, or the magnitude of the absolute value of the dot product.

 装置は、dot(gNgP, gNgC)の絶対値の大きさが閾値THを超えるか否かを判定し、判定結果に応じた演算を行ってもよい。図74Aは、実施の形態に係るdot(gNgP, gNgC)の絶対値の大きさが閾値THを超える場合の予測値の算出例を示す図である。図74Bは、実施の形態に係るdot(gNgP, gNgC)の絶対値の大きさが閾値TH以下である場合の予測値の算出例を示す図である。 The device may determine whether the magnitude of the absolute value of dot(gNgP, gNgC) exceeds the threshold value TH, and perform calculations according to the determination result. Figure 74A is a diagram showing an example of calculation of a predicted value when the magnitude of the absolute value of dot(gNgP, gNgC) exceeds the threshold value TH in accordance with an embodiment. Figure 74B is a diagram showing an example of calculation of a predicted value when the magnitude of the absolute value of dot(gNgP, gNgC) is equal to or less than the threshold value TH in accordance with an embodiment.

 具体的な例として、dot(gNgP, gNgC)の絶対値の大きさが閾値TH = (1 << (9 * 2)) - 1を超える場合、図74Aに示すように、装置は小数部を保持せずに整数演算を行ってもよい。 As a specific example, if the magnitude of the absolute value of dot(gNgP, gNgC) exceeds the threshold TH = (1 << (9 * 2)) - 1, the device may perform integer arithmetic without preserving the fractional part, as shown in Figure 74A.

 一方で、dot(gNgP, gNgC)の絶対値の大きさがTH = (1 << (9 * 2)) - 1以下の場合には、図74Bに示すように、装置は小数部を所定ビット(例えば9ビット)確保するように演算を行ってもよい。これにより、ベクトルが大きいときには演算精度を低くすることができる。逆に、ベクトルが小さいときには演算精度を高めることができる。このようにして、装置は小数部のビット数を調整することで、対応できるベクトルの値の範囲を広くすることができる。 On the other hand, if the magnitude of the absolute value of dot(gNgP, gNgC) is TH = (1 << (9 * 2)) - 1 or less, as shown in Figure 74B, the device may perform calculations to reserve a specified number of bits (for example, 9 bits) for the decimal part. This allows the calculation precision to be lowered when the vector is large. Conversely, the calculation precision can be increased when the vector is small. In this way, the device can adjust the number of bits for the decimal part to widen the range of vector values that it can support.

 上記では、小数部のビット数を2段階に切り替える方法を説明したが、装置はdot(gNgP, gNgC)の絶対値の大きさのビット数に応じて、小数部のビット数を決定するようにしてもよい。例えば、装置はdot(gNgP, gNgC)の絶対値の大きさに基づいて2を底とする対数値を用いて小数部のビット数を決定してもよい。これにより、装置はより正確に小数部のビット数を調整できる。また、小数部のビット数は1種類のみの固定値としてもよい。これにより装置は処理量を削減することができる。 The above describes a method for switching the number of bits in the fractional part in two stages, but the device may also determine the number of bits in the fractional part depending on the number of bits in the magnitude of the absolute value of dot(gNgP, gNgC). For example, the device may determine the number of bits in the fractional part using a logarithmic value with base 2 based on the magnitude of the absolute value of dot(gNgP, gNgC). This allows the device to adjust the number of bits in the fractional part more accurately. Alternatively, the number of bits in the fractional part may be set to only one fixed value. This allows the device to reduce the amount of processing.

 さらに、装置はdot(gNgP, gNgC)の絶対値の大きさ以外の値に基づいて小数部のビット数を決定してもよい。例えば、ベクトルの大きさそのものを基準として判断する方法を採用してもよい。これにより、装置は処理量を削減することができる。 Furthermore, the device may determine the number of bits in the fractional part based on a value other than the magnitude of the absolute value of dot(gNgP, gNgC). For example, a method may be adopted in which the determination is based on the magnitude of the vector itself. This allows the device to reduce the amount of processing.

 上記の例では、小数部のビット数は9ビットに設定されているが、9ビットに設定されることに限定されるものではない。例えば、装置はハードウェアのレジスタや演算器のビット数によって小数部のビット数を設定してもよい。また、ソフトウェアやシステムの性能に基づいてビット数を設定してもよい。さらに、精度と処理量とのトレードオフを考慮して最適なビット数を設定してもよい。こうして、装置は実行環境に応じて適切なビット数を設定することで、演算精度を向上させるとともに符号量を削減できる。 In the above example, the number of bits in the decimal part is set to 9 bits, but it is not limited to being set to 9 bits. For example, the device may set the number of bits in the decimal part based on the number of bits in the hardware register or arithmetic unit. The number of bits may also be set based on the performance of the software or system. Furthermore, the optimal number of bits may be set by taking into account the trade-off between accuracy and processing volume. In this way, the device can improve calculation accuracy and reduce the amount of code by setting an appropriate number of bits depending on the execution environment.

 また、装置は閾値THをビットストリームのヘッダ等に付加してもよい。これにより、符号化装置側で使用した閾値THをヘッダに付加して符号化することで、復号装置はヘッダから閾値THを取得し、符号化装置で使用した小数部のビット数と同じ値を用いてビットストリームを適切に復号することができる。 The device may also add the threshold value TH to the header of the bitstream. By adding the threshold value TH used by the encoding device to the header and encoding it, the decoding device can obtain the threshold value TH from the header and properly decode the bitstream using the same value as the number of bits in the fractional part used by the encoding device.

 図75は、実施の形態に係る予測値の算出の他の例を示す図である。 Figure 75 shows another example of calculating a predicted value according to an embodiment.

 装置は予測値の算出後に、例えばfine予測値の平均値を算出する際、図75に示すように除算処理における精度を確保するために小数部のビット数を8ビットに調整してもよい。この調整は、dot(gNgP, gNgC)の絶対値の大きさに関わらず行われてもよい。また、装置は、fine予測値の平均値を整数精度に変換してもよいし、小数部のビット数を合わせるようにしてもよい。その際、装置は、四捨五入などの丸め処理を行ってもよい。丸め処理は正の数と負の数において同じ方向に丸めてもよいし、異なる方向に丸めてもよい。また、場合によっては、装置は、丸め処理を行わなくてもよい。 After calculating the predicted value, for example, when calculating the average value of the fine predicted values, the device may adjust the number of bits in the decimal part to 8 bits to ensure accuracy in the division process, as shown in FIG. 75. This adjustment may be performed regardless of the magnitude of the absolute value of dot(gNgP, gNgC). The device may also convert the average value of the fine predicted values to integer precision, or may adjust the number of bits in the decimal part. In this case, the device may perform rounding processing such as rounding off. The rounding processing may round positive numbers and negative numbers in the same direction, or may round them in different directions. In some cases, the device may not perform rounding processing.

 図76は、実施の形態に係る予測値の算出処理の一例を示すフローチャートである。 FIG. 76 is a flowchart showing an example of a process for calculating a predicted value according to an embodiment.

 装置は、ベクトルgNgPとベクトルgNgCとの内積dot(gNgP, gNgC)を算出する(S1571)。 The device calculates the dot product dot(gNgP, gNgC) of vector gNgP and vector gNgC (S1571).

 装置は、内積dot(gNgP, gNgC)の絶対値の大きさが閾値THを超えるか否かを判定する(S1572)。装置は、内積dot(gNgP, gNgC)の絶対値の大きさが閾値THを超える場合(S1572でYes)、ステップS1573に進み、そうでない場合(S1572でNo)、ステップS1575に進む。 The device determines whether the magnitude of the absolute value of the dot product dot(gNgP, gNgC) exceeds the threshold value TH (S1572). If the magnitude of the absolute value of the dot product dot(gNgP, gNgC) exceeds the threshold value TH (Yes in S1572), the device proceeds to step S1573; if not (No in S1572), the device proceeds to step S1575.

 装置は、予測値を算出する(S1573)。予測値の算出の具体例は、図72及び図73で説明したとおりである。 The device calculates the predicted value (S1573). Specific examples of calculating the predicted value are as described in Figures 72 and 73.

 装置は、予測値の小数部を8ビットに調整する(S1574)。つまり、装置は、予測値の小数部を8ビット化する。 The device adjusts the decimal part of the predicted value to 8 bits (S1574). In other words, the device converts the decimal part of the predicted value to 8 bits.

 装置は、予測値の小数部を9ビットに調整する(S1575)。つまり、装置は、予測値の小数部を9ビット化する。 The device adjusts the decimal part of the predicted value to 9 bits (S1575). In other words, the device makes the decimal part of the predicted value 9 bits.

 装置は、予測値を算出する(S1576)。予測値の算出の具体例は、図72及び図73で説明したとおりである。 The device calculates the predicted value (S1576). Specific examples of calculating the predicted value are as described in Figures 72 and 73.

 装置は、予測値の小数部を8ビットに調整する(S1577)。つまり、装置は、予測値の小数部を8ビット化する。 The device adjusts the decimal part of the predicted value to 8 bits (S1577). In other words, the device converts the decimal part of the predicted value to 8 bits.

 ステップS1574またはS1577が実行されると、予測値の算出処理は終了する。 Once step S1574 or S1577 is executed, the process of calculating the predicted value ends.

 次に、さらに予測値の算出例を具体的に示す。 Next, we will provide a more specific example of how to calculate predicted values.

 装置は、ベクトルgNgP及びベクトルgNgCの内積をdot(gNgP, gNgC)とし、それぞれのx成分、y成分、z成分をそれぞれ.x、.y、.zとして、次のように算出することができる。 The device can calculate the dot product of vectors gNgP and gNgC as dot(gNgP, gNgC), with the x, y, and z components being .x, .y, and .z, respectively, as follows:

dot(gNgP, gNgC) = gNgP.x * gNgC.x + gNgP.y * gNgC.y + gNgP.z * gNgC.z dot(gNgP, gNgC) = gNgP.x * gNgC.x + gNgP.y * gNgC.y + gNgP.z * gNgC.z

 同様に、装置はベクトルgNgP同士の内積をdot(gNgP, gNgP)とし、次のように算出することができる。 Similarly, the device can calculate the dot product of vectors gNgP as dot(gNgP, gNgP) as follows:

dot(gNgP, gNgP) = gNgP.x * gNgP.x + gNgP.y * gNgP.y + gNgP.z * gNgP.z dot(gNgP, gNgP) = gNgP.x * gNgP.x + gNgP.y * gNgP.y + gNgP.z * gNgP.z

 次に、装置は内積dot(gNgP, gNgC)の絶対値の大きさを| dot(gNgP, gNgC) |とし、ビットシフト量を表す小数部のビット数shiftBitsを以下のように決定する。 Next, the device determines the magnitude of the absolute value of the dot product dot(gNgP, gNgC) as | dot(gNgP, gNgC) | and determines the number of decimal points, shiftBits, which represents the bit shift amount, as follows:

if (| dot(gNgP, gNgC) | > (1 << (9 * 2)) - 1) {
    shiftBits = 0
} else {
    shiftBits = 9
}
}
if (| dot(gNgP, gNgC) | > (1 << (9 * 2)) - 1) {
shiftBits = 0
} else {
shiftBits = 9
}
}

 装置は、このビットシフト量shiftBitsを用いて、投影点までのベクトルを以下のように算出することができる。 The device can use this bit shift amount, shiftBits, to calculate the vector to the projection point as follows:

uvProj = (uvNext << shiftBits) + (uvNuvP * (dot(gNgP, gNgC) << shiftBits))
       / dot(gNgP, gNgP)
gProj = (gNext << shiftBits) + (gNgP * (dot(gNgP, gNgC) << shiftBits))
       / dot(gNgP, gNgP)
uvProj = (uvNext << shiftBits) + (uvNuvP * (dot(gNgP, gNgC) << shiftBits))
/ dot(gNgP, gNgP)
gProj = (gNext << shiftBits) + (gNgP * (dot(gNgP, gNgC) << shiftBits))
/ dot(gNgP, gNgP)

 さらに、装置は投影点G(proj)から点G(curr)までのベクトル同士の内積をdot(gCurr - gProj, gCurr - gProj)とし、以下のように算出する。 Furthermore, the device calculates the dot product of the vectors from the projection point G(proj) to the point G(curr) as dot(gCurr - gProj, gCurr - gProj) as follows:

dot(gCurr - gProj, gCurr - gProj) 
= ((gCurr.x << shiftBits) - gProj.x) * ((gCurr.x << shiftBits) - gProj.x)
  + ((gCurr.y << shiftBits) - gProj.y) * ((gCurr.y << shiftBits) - gProj.y)
  + ((gCurr.z << shiftBits) - gProj.z) * ((gCurr.z << shiftBits) - gProj.z)
dot(gCurr - gProj, gCurr - gProj)
= ((gCurr.x << shiftBits) - gProj.x) * ((gCurr.x << shiftBits) - gProj.x)
+ ((gCurr.y << shiftBits) - gProj.y) * ((gCurr.y << shiftBits) - gProj.y)
+ ((gCurr.z << shiftBits) - gProj.z) * ((gCurr.z << shiftBits) - gProj.z)

 また、装置は二次元ベクトル uvNuvP に直交するベクトルを orthogonal(uvNuvP) とし、ベクトル uvProjuvCurr を次のように算出する。 The device also defines the vector orthogonal to the two-dimensional vector uvNuvP as orthogonal(uvNuvP), and calculates the vector uvProjuvCurr as follows:

uvProjuvCurr 
= ((orthogonal(uvNuvP) << shiftBits) * sqrt(dot(gCurr - gProj, gCurr - gProj)))
  / sqrt(dot(gNgP, gNgP) << (shiftBits * 2))
uvProjuvCurr
= ((orthogonal(uvNuvP) << shiftBits) * sqrt(dot(gCurr - gProj, gCurr - gProj)))
/ sqrt(dot(gNgP, gNgP) << (shiftBits * 2))

 ただし、sqrt は平方根である。また、装置は sqrt に平方根の近似整数を用いてもよい。これにより、整数型で演算を行うことができる。 where sqrt is the square root. The device may also use an integer approximation of the square root for sqrt. This allows operations to be performed in integer format.

 装置は、予測ベクトルの候補 predUV0 または predUV1 を以下のようにして算出することができる。 The device can calculate the candidate predicted vector predUV0 or predUV1 as follows:

predUV0 = uvProj + uvProjuvCurr predUV0 = uvProj + uvProjuvCurr

 また、uvProjuvCurr の向きが逆方向である場合には以下のように算出することができる。 Also, if the direction of uvProjuvCurr is reversed, it can be calculated as follows:

predUV1 = uvProj - uvProjuvCurr predUV1 = uvProj - uvProjuvCurr

 装置が小数部のビット数を8にしたい場合は、以下の処理を行ってもよい。 If a device wants to set the number of bits in the fractional part to 8, it can do the following:

if (shiftBits >= 8) {
    predUV0 >>= (shiftBits - 8)
    predUV1 >>= (shiftBits - 8)
} else {
    predUV0 <<= (8 - shiftBits)
    predUV1 <<= (8 - shiftBits)
}
if (shiftBits >= 8) {
predUV0 >>= (shiftBits - 8)
predUV1 >>= (shiftBits - 8)
} else {
predUV0 <<= (8 - shiftBits)
predUV1 <<= (8 - shiftBits)
}

 上記の処理により、装置は小数部のビット数をshiftBitsから8ビットに変更することができる。なお、本実施の形態では8ビットに変更する例を示したが、必ずしもこれに限らず、装置は小数部のビット数を任意のnビット(nは0以上の整数)に変更することもできる。 By performing the above process, the device can change the number of bits in the decimal part from shiftBits to 8 bits. Note that while this embodiment shows an example of changing to 8 bits, this is not necessarily limited to this, and the device can also change the number of bits in the decimal part to any n bits (n is an integer greater than or equal to 0).

 なお、装置が小数部のビット数をshiftBitsからnビットに変更する場合、以下の処理を行ってもよい。 If the device changes the number of bits in the fractional part from shiftBits to n bits, it may perform the following processing.

if (shiftBits >= n) {
    predUV0 >>= (shiftBits - n)
    predUV1 >>= (shiftBits - n)
} else {
    predUV0 <<= (n - shiftBits)
    predUV1 <<= (n - shiftBits)
}
if (shiftBits >= n) {
predUV0 >>= (shiftBits - n)
predUV1 >>= (shiftBits - n)
} else {
predUV0 <<= (n - shiftBits)
predUV1 <<= (n - shiftBits)
}

 装置は、この処理によって、小数部のビット数をshiftBitsから任意のnビットに変更することができる。 This process allows the device to change the number of bits in the fractional part from shiftBits to any n bits.

 予測ベクトル候補であるpredUV0またはpredUV1のうちいずれかが選択され、予測ベクトルpredUVは次のように設定される。 Either of the candidate prediction vectors predUV0 or predUV1 is selected, and the prediction vector predUV is set as follows:

 (1)predUV0が選択される場合:
predUV = predUV0
 (2)predUV1が選択される場合:
predUV = predUV1
(1) When predUV0 is selected:
predUV = predUV0
(2) When predUV1 is selected:
predUV = predUV1

 また、predUV0またはpredUV1からpredUVを算出する際に、例えば小数部が8ビットであることを考慮し、何らかのオフセット値を加算または減算してもよい。次に例を示す。 Furthermore, when calculating predUV from predUV0 or predUV1, some offset value may be added or subtracted, taking into account that the decimal point is 8 bits. An example is shown below.

predUV = (offset0 << 8) + predUV0
predUV = (offset1 << 8) - predUV1
predUV = (offset0 << 8) + predUV0
predUV = (offset1 << 8) - predUV1

 この処理により、オフセットを用いた予測ベクトルの調整が行われる。 This process adjusts the predicted vector using the offset.

 さらに、いくつかの予測ベクトルを加算して平均値を算出してもよい。例えば、count個の予測ベクトルを累積加算した予測ベクトルをpredUVcountとし、丸め加算して平均化してもよい。 Furthermore, several predicted vectors may be added together to calculate the average value. For example, count predicted vectors may be cumulatively added together to obtain a predicted vector predUVcount, which may then be rounded and averaged.

if(predUVcount.x >= 0) {
    rounding.x = 1 << (8 - 1)
} else {
    rounding.x = -1 * (1 << (8 - 1))
}
if(predUVcount.y >= 0) {
    rounding.y = 1 << (8 - 1)
} else {
    rounding.y = -1 * (1 << (8 - 1))
}
predUV = (predUVcount / count + rounding) >> 8  
if(predUVcount.x >= 0) {
rounding.x = 1 << (8 - 1)
} else {
rounding.x = -1 * (1 << (8 - 1))
}
if(predUVcount.y >= 0) {
rounding.y = 1 << (8 - 1)
} else {
rounding.y = -1 * (1 << (8 - 1))
}
predUV = (predUVcount / count + rounding) >> 8

 この処理では、predUVcountの符号によって丸め加算の方向が調整される。これにより、予測ベクトルの精度を向上させつつ、符号化の効率を高めることができる。 In this process, the direction of rounding and adding is adjusted depending on the sign of predUVcount. This improves the accuracy of the predicted vector while increasing encoding efficiency.

 なお、上記の例では、predUVcountの符号によって丸め加算の方向が調整されているが、同じ方向に丸める方法を用いてもよいし、丸め加算を行わない方法を用いてもよい。 In the above example, the direction of rounding and adding is adjusted depending on the sign of predUVcount, but you can also use a method that rounds in the same direction, or a method that does not perform rounding and adding.

 また、上記の計算式「predUV = (predUVcount / count + rounding) >> 8」は、以下の個別処理を示すものである。 Also, the above formula "predUV = (predUVcount / count + rounding) >> 8" indicates the following individual processing:

predUV.x = (predUVcount.x / count + rounding.x) >> 8  
predUV.y = (predUVcount.y / count + rounding.y) >> 8  
predUV.x = (predUVcount.x / count + rounding.x) >> 8
predUV.y = (predUVcount.y / count + rounding.y) >> 8

 これにより、各成分ごとに適切な処理が行われる。 This ensures that each component is processed appropriately.

 次に、三次元空間の情報を用いてUV座標におけるfine予測値を求める例について説明する。 Next, we will explain an example of calculating fine prediction values in UV coordinates using information from three-dimensional space.

 図77は、実施の形態の変形例に係るfine予測する場合の三次元空間上のベクトルの一例を示す図である。図78は、実施の形態の変形例に係るfine予測する場合の二次元平面上のベクトルの一例を示す図である。 FIG. 77 is a diagram showing an example of vectors in three-dimensional space when performing fine prediction according to a modified example of the embodiment. FIG. 78 is a diagram showing an example of vectors on a two-dimensional plane when performing fine prediction according to a modified example of the embodiment.

 図77に示すように三次元点G(Curr)に接続する符号化済みの二つの三次元点をG(Next)およびG(Prev)とする。また、図78に示すように、これらの三次元点G(curr)、G(next)、G(prev)をUV座標に投影した点をそれぞれUV(Next)、UV(Prev)とする。また、G(Curr)をUV座標に投影した点をUV(Curr)とする。ここでは、UV(Curr)に対するベクトルをfine予測する場合(predUVの導出)の例を示す。 As shown in Figure 77, the two encoded 3D points connected to the 3D point G(Curr) are designated as G(Next) and G(Prev). As shown in Figure 78, the points obtained by projecting these 3D points G(curr), G(next), and G(prev) onto the UV coordinates are designated as UV(Next) and UV(Prev), respectively. The point obtained by projecting G(Curr) onto the UV coordinates is designated as UV(Curr). Here, an example of fine-predicting a vector for UV(Curr) (deriving predUV) is shown.

 ここで、既知の三次元点G(Curr)、G(Next)、G(Prev)に対する三次元ベクトルをそれぞれ三次元ベクトルgCurr、三次元ベクトルgNext、三次元ベクトルgPrevとし、既知の二次元点UV(Next)、UV(Prev)に対する二次元ベクトルをそれぞれ二次元ベクトルuvNext、二次元ベクトルuvPrevとする。さらに、三次元ベクトルgNextから三次元ベクトルgPrevへのベクトルを三次元ベクトルgNgP、三次元ベクトルgNextから三次元ベクトルgCurrへのベクトルを三次元ベクトルgNgCとし、二次元ベクトルuvNextから二次元ベクトルuvPrevへのベクトルを二次元ベクトルuvNuvPとする。 Here, the three-dimensional vectors corresponding to the known three-dimensional points G(Curr), G(Next), and G(Prev) are respectively the three-dimensional vector gCurr, the three-dimensional vector gNext, and the three-dimensional vector gPrev, and the two-dimensional vectors corresponding to the known two-dimensional points UV(Next) and UV(Prev) are respectively the two-dimensional vector uvNext and the two-dimensional vector uvPrev. Furthermore, the vector from the three-dimensional vector gNext to the three-dimensional vector gPrev is the three-dimensional vector gNgP, the vector from the three-dimensional vector gNext to the three-dimensional vector gCurr is the three-dimensional vector gNgC, and the vector from the two-dimensional vector uvNext to the two-dimensional vector uvPrev is the two-dimensional vector uvNuvP.

 三次元ベクトルgNgPと三次元ベクトルgNgCの内積をdot(gNgP, gNgC)、三次元ベクトルgNgP同士の内積をdot(gNgP, gNgP)とする。ここで、三次元点G(Curr)および二次元点UV(Curr)から、それぞれの対辺への投影点を三次元点G(Proj)、二次元点UV(Proj)とする。 Let the dot product of three-dimensional vectors gNgP and gNgC be dot(gNgP, gNgC), and the dot product of two three-dimensional vectors gNgP together be dot(gNgP, gNgP). Here, let the projection points of the three-dimensional point G(Curr) and the two-dimensional point UV(Curr) onto their respective opposite sides be the three-dimensional point G(Proj) and the two-dimensional point UV(Proj).

 三次元点G(Proj)に対するベクトル三次元ベクトルgProjおよび二次元点UV(Proj)に対するベクトル二次元ベクトルuvProjは、三次元点G(Curr)、三次元点G(Next)、三次元点G(Prev)から構成される三角形と、二次元点UV(Curr)、二次元点UV(Next)、二次元点UV(Prev)から構成される三角形が相似であると仮定した場合に、内積比を利用して以下のように表すことができる。 The three-dimensional vector gProj for the three-dimensional point G(Proj) and the two-dimensional vector uvProj for the two-dimensional point UV(Proj) can be expressed as follows using the dot product ratio, assuming that the triangle formed by the three-dimensional point G(Curr), three-dimensional point G(Next), and three-dimensional point G(Prev) is similar to the triangle formed by the two-dimensional point UV(Curr), two-dimensional point UV(Next), and two-dimensional point UV(Prev).

uvProj = uvNext + uvNuvP * (dot(gNgP, gNgC) / dot(gNgP, gNgP))
gProj = gNext + gNgP * (dot(gNgP, gNgC) / dot(gNgP, gNgP))
uvProj = uvNext + uvNuvP * (dot(gNgP, gNgC) / dot(gNgP, gNgP))
gProj = gNext + gNgP * (dot(gNgP, gNgC) / dot(gNgP, gNgP))

 さらに、投影点三次元点G(Proj)から三次元点G(Curr)までのベクトル同士の内積をdot(gCurr - gProj, gCurr - gProj)とする。二次元ベクトルuvNuvPに直交するベクトルをorthogonal(uvNuvP)とし、同様に三角形の相似を利用すると、投影点二次元点UV(Proj)から二次元点UV(Curr)までのベクトル二次元ベクトルuvProjuvCurrは以下のように表すことができる。 Furthermore, let the dot product of the vectors from the projection point 3D point G(Proj) to the 3D point G(Curr) be dot(gCurr - gProj, gCurr - gProj). Let the vector orthogonal to the 2D vector uvNuvP be orthogonal(uvNuvP), and similarly use triangle similarity to express the vector from the projection point 2D point UV(Proj) to the 2D point UV(Curr), the 2D vector uvProjuvCurr, as follows:

uvProjuvCurr = orthogonal(uvNuvP) * sqrt(dot(gCurr - gProj, gCurr - gProj)
              / dot(gNgP, gNgP))
uvProjuvCurr = orthogonal(uvNuvP) * sqrt(dot(gCurr - gProj, gCurr - gProj)
/ dot(gNgP, gNgP))

 ただし、sqrtは平方根を表す。 where sqrt represents the square root.

 したがって、予測ベクトル二次元ベクトルpredUVは、例えば以下のように算出することができる。 Therefore, the predicted vector two-dimensional vector predUV can be calculated, for example, as follows:

predUV = uvProj + uvProjuvCur predUV = uvProj + uvProjuvCur

 なお、二次元ベクトルuvProjuvCurrの方向によって、予測ベクトルをpredUV0またはその逆向きのpredUV1とし、以下のように算出することができる。 Depending on the direction of the two-dimensional vector uvProjuvCurr, the predicted vector can be set to predUV0 or its opposite, predUV1, and calculated as follows:

predUV0 = uvProj + uvProjuvCur
predUV1 = uvProj - uvProjuvCur
predUV0 = uvProj + uvProjuvCur
predUV1 = uvProj - uvProjuvCur

 このように、predUVを双方向の予測ベクトルとして考慮することで予測精度を向上させ、符号量を削減することができる。 In this way, by considering predUV as a bidirectional prediction vector, prediction accuracy can be improved and the amount of coding can be reduced.

 図79は、実施の形態に係る予測値の算出の他の例を示す図である。 Figure 79 shows another example of calculating a predicted value according to an embodiment.

 本実施の形態では、三次元空間におけるfine予測の算出において、整数演算精度を確保するために、小数部のビット数Nを固定的に確保する方法について説明する。例えば、図79に示すように、小数部は、Nビットに設定されてもよい。Nビットは、例えば、N=1、N=2、N=3、...、N=5、N=6、N=7、N=8と設定されてもよい。また、N=16や、N=0(小数部を持たない整数として扱う)としてもよい。 In this embodiment, a method of ensuring a fixed number of decimal points, N, in order to ensure integer arithmetic accuracy when calculating fine prediction in three-dimensional space will be described. For example, as shown in FIG. 79, the decimal point may be set to N bits. N bits may be set, for example, as N=1, N=2, N=3, ..., N=5, N=6, N=7, N=8. N=16 or N=0 (treated as an integer with no decimal point) may also be used.

 小数部のビット数Nは、fine予測の処理内容に応じて変更してもよい。例えば、平方根を算出する際には、小数部のビット数が半分になるため、演算の前に小数部のビット数を2倍にして2Nビットとすることで、演算結果の小数部をNビットに維持することができる。 The number of bits N in the fractional part may be changed depending on the processing content of the fine prediction. For example, when calculating the square root, the number of bits in the fractional part is halved, so by doubling the number of bits in the fractional part to 2N bits before the operation, the fractional part of the calculation result can be maintained at N bits.

 また、値がオーバーフローしないようにするために、小数部のビット数Nを右シフトさせて減らしてもよい。逆に、アンダーフローを防ぐために、予め小数部のビット数Nを左シフトさせて増やしてもよい。さらに、整数除算などの演算精度を向上させるために、演算前に小数部を左シフトしてビット数を増やし、演算終了後に小数部を右シフトさせてビット数を減らすこともできる。この際、丸め処理を行うことで、計算誤差を抑制することができる。これにより、広い範囲の入力値に対応することができる。 Furthermore, to prevent values from overflowing, the number of bits N in the fractional part can be decreased by shifting it to the right. Conversely, to prevent underflow, the number of bits N in the fractional part can be increased by shifting it to the left in advance. Furthermore, to improve the accuracy of calculations such as integer division, the number of bits can be increased by shifting the fractional part to the left before the calculation, and then decreased by shifting the fractional part to the right after the calculation. In this case, calculation errors can be suppressed by performing rounding processing. This makes it possible to accommodate a wide range of input values.

 小数部のビット数Nは、上記の設定値に限定されるものではない。例えば、ハードウェアのレジスタや演算器のビット数に応じて決定することもできる。また、ソフトウェアやシステムの性能に応じて設定することもでき、あるいは演算精度とのトレードオフを考慮して最適なビット数を決定することも可能である。このように、実行環境に応じて適切なビット数を設定することで演算精度を向上させ、符号量を削減することができる。 The number of bits N in the decimal part is not limited to the above setting value. For example, it can be determined based on the number of bits in the hardware register or arithmetic unit. It can also be set based on the performance of the software or system, or the optimal number of bits can be determined by taking into account the trade-off with calculation accuracy. In this way, by setting an appropriate number of bits based on the execution environment, calculation accuracy can be improved and the amount of code can be reduced.

 なお、小数部のビット数Nはビットストリームのヘッダ等に付加してもよい。この方法により、符号化装置側で使用したビット数Nをヘッダに含めて符号化することで、復号装置はヘッダからビット数Nを取得することができる。これにより、復号装置は符号化装置で使用した小数部のビット数と同じビット数を用いて復号処理を行うことができ、ビットストリームを適切に復号することが可能となる。 The number of bits N in the fractional part may also be added to the header of the bitstream. Using this method, the number of bits N used by the encoding device is included in the header and encoded, allowing the decoding device to obtain the number of bits N from the header. This allows the decoding device to perform decoding processing using the same number of bits as the number of bits in the fractional part used by the encoding device, making it possible to properly decode the bitstream.

 また、小数部のビット数Nは、規格のプロファイルまたはレベルに応じて異なる値を用いるように切り替えることができる。例えば、高画質を対象とするプロファイルAでは、演算精度を高めるために大きい値(例:N=16)を使用し、低処理量を対象とするプロファイルBでは、必要なビット数を抑えるために小さい値(例:N=5)を使用することができる。このように、規格のプロファイルまたはレベルに応じて小数部のビット数Nを規定することで、復号装置はストリームに含まれるプロファイルまたはレベルの情報に基づいて適切にビット数Nを切り替え、ビットストリームを正しく復号することができる。 Furthermore, the number of bits N in the fractional part can be switched to a different value depending on the profile or level of the standard. For example, profile A, which targets high image quality, can use a large value (e.g., N=16) to increase calculation accuracy, while profile B, which targets low processing loads, can use a small value (e.g., N=5) to reduce the number of bits required. In this way, by specifying the number of bits N in the fractional part depending on the profile or level of the standard, the decoding device can appropriately switch the number of bits N based on the profile or level information contained in the stream and correctly decode the bitstream.

 また、小数部のビット数Nは入力値や条件によって決定することもできる。例えば、count番目のfine予測値の算出例において、dot(gNgP, gNgC)の絶対値の大きさのビット数に応じて小数部のビット数Nを決定する方法も考えられる。より具体的には、dot(gNgP, gNgC)のビット数や、絶対値の大きさの2を底とする対数値を用いて小数部のビット数Nを決定する方法でもよい。これにより、入力値の範囲に応じた適切な小数部のビット数Nを確保することができ、演算精度を向上させることができる。 The number of bits N in the decimal part can also be determined based on the input value or conditions. For example, in the example of calculating the count-th fine prediction value, one possible method is to determine the number of bits N in the decimal part based on the number of bits of the magnitude of the absolute value of dot(gNgP, gNgC). More specifically, the number of bits N in the decimal part can be determined using the number of bits of dot(gNgP, gNgC) or the logarithm to the base 2 of the magnitude of the absolute value. This ensures an appropriate number of bits N in the decimal part based on the range of input values, improving calculation accuracy.

 図80は、実施の形態に係る予測値の算出処理の他の一例を示すフローチャートである。 Figure 80 is a flowchart showing another example of the process for calculating predicted values according to an embodiment.

 装置は、予測値の小数部をNビット化する(S1581)。つまり、装置は、予測値を小数精度で算出する。 The device converts the decimal part of the predicted value to N bits (S1581). In other words, the device calculates the predicted value with decimal precision.

 装置は、ベクトルの内積値及び内積比を算出する(S1582)。 The device calculates the vector dot product value and dot product ratio (S1582).

 装置は、小数部を2*Nビット化する(S1583)。 The device converts the decimal part into 2*N bits (S1583).

 装置は、平方根を算出する(S1584)。このように、平方根を算出する前のステップS1583で小数部は2*Nビット化されてもよい。 The device calculates the square root (S1584). In this way, the decimal part may be converted to 2*N bits in step S1583 before calculating the square root.

 装置は、小数部をNビット化する(S1585)。ステップS1585は、ステップS1584に組み込まれてもよい。つまり、装置は、平方根を算出する際に、小数部をNビット化してもよい。 The device converts the decimal part to N bits (S1585). Step S1585 may be incorporated into step S1584. In other words, the device may convert the decimal part to N bits when calculating the square root.

 装置は、予測値(ベクトル)を算出する(S1586)。 The device calculates the predicted value (vector) (S1586).

 このフローチャートのように、平方根を算出する際に、小数部のビット数も半分になってしまうため、予め小数部のビット数Nを2倍としておくことで、出力側の小数部のビット数Nと同じ精度を維持することができる。 As shown in this flowchart, when calculating the square root, the number of bits in the fractional part is also halved, so by doubling the number of bits N in the fractional part in advance, it is possible to maintain the same precision as the number of bits N in the fractional part on the output side.

 なお、平方根算出処理の入力として、ビット数Nのままとしてもよく、平方根算出処理の出力後に小数部をNビット化するようにしてもよい。 In addition, the number of bits may remain N as is as input to the square root calculation process, or the decimal part may be converted to N bits after the square root calculation process is output.

 次に、予測値の算出例を具体的に示す。 Next, we will show a specific example of how to calculate predicted values.

 まず、ベクトルgNgPとgNgCの内積をdot(gNgP, gNgC)とし、それぞれのx成分、y成分、z成分を示す記号をそれぞれ.x、.y、.zとして、次のように算出することができる。 First, let the dot product of vectors gNgP and gNgC be dot(gNgP, gNgC), and let the symbols representing the x, y, and z components be .x, .y, and .z, respectively, and it can be calculated as follows:

dot(gNgP, gNgC) = gNgP.x * gNgC.x + gNgP.y * gNgC.y + gNgP.z * gNgC.z dot(gNgP, gNgC) = gNgP.x * gNgC.x + gNgP.y * gNgC.y + gNgP.z * gNgC.z

 同様に、装置はベクトルgNgP同士の内積をdot(gNgP, gNgP)とし、次のように算出することができる。 Similarly, the device can calculate the dot product of vectors gNgP as dot(gNgP, gNgP) as follows:

dot(gNgP, gNgP) = gNgP.x * gNgP.x + gNgP.y * gNgP.y + gNgP.z * gNgP.z dot(gNgP, gNgP) = gNgP.x * gNgP.x + gNgP.y * gNgP.y + gNgP.z * gNgP.z

 ここでは、小数部のビット数N = 8とし、shiftBits = N = 8として説明する。なお、shiftBits = 5、 6、 7 などの値としてもよい。 Here, we will assume that the number of bits in the decimal part is N = 8, and that shiftBits = N = 8. Note that shiftBits can also be set to values such as 5, 6, or 7.

 次に、投影点までのベクトルを求める方法について説明する。このとき、演算中の「/」は小数点以下を切り捨てる整数除算を意味する。投影点までのベクトルは以下の式で算出される。 Next, we will explain how to find the vector to the projection point. In this case, the "/" in the calculation means integer division that truncates to the decimal point. The vector to the projection point is calculated using the following formula.

uvProj = (uvNext << shiftBits) + uvNuvP * ((dot(gNgP, gNgC) << shiftBits)
        / dot(gNgP, gNgP))
gProj = (gNext << shiftBits) + gNgP * ((dot(gNgP, gNgC) << shiftBits)
        / dot(gNgP, gNgP))
uvProj = (uvNext << shiftBits) + uvNuvP * ((dot(gNgP, gNgC) << shiftBits)
/ dot(gNgP, gNgP))
gProj = (gNext << shiftBits) + gNgP * ((dot(gNgP, gNgC) << shiftBits)
/ dot(gNgP, gNgP))

 次に、投影点G(Proj)からG(Curr)までのベクトル同士の内積をdot(gCurr - gProj, gCurr - gProj)とし、以下のように算出する。 Next, the dot product of the vectors from the projection point G(Proj) to G(Curr) is taken as dot(gCurr - gProj, gCurr - gProj) and calculated as follows:

dot(gCurr - gProj, gCurr - gProj) 
  = ((gCurr.x << shiftBits) - gProj.x) * ((gCurr.x << shiftBits) - gProj.x)
  + ((gCurr.y << shiftBits) - gProj.y) * ((gCurr.y << shiftBits) - gProj.y)
  + ((gCurr.z << shiftBits) - gProj.z) * ((gCurr.z << shiftBits) - gProj.z)
dot(gCurr - gProj, gCurr - gProj)
= ((gCurr.x << shiftBits) - gProj.x) * ((gCurr.x << shiftBits) - gProj.x)
+ ((gCurr.y << shiftBits) - gProj.y) * ((gCurr.y << shiftBits) - gProj.y)
+ ((gCurr.z << shiftBits) - gProj.z) * ((gCurr.z << shiftBits) - gProj.z)

 さらに、二次元ベクトルuvNuvPに直交するベクトルをorthogonal(uvNuvP)とし、ベクトルuvProjuvCurrを以下のように表すことができる。 Furthermore, if the vector orthogonal to the two-dimensional vector uvNuvP is defined as orthogonal(uvNuvP), the vector uvProjuvCurr can be expressed as follows:

uvProjuvCurr = orthogonal(uvNuvP) * sqrt(dot(gCurr - gProj, gCurr - gProj)
              / dot(gNgP, gNgP))
uvProjuvCurr = orthogonal(uvNuvP) * sqrt(dot(gCurr - gProj, gCurr - gProj)
/ dot(gNgP, gNgP))

 ただし、sqrt()は平方根処理を意味する。 However, sqrt() means square root operation.

 なお、この時、dot(gCurr - gProj, gCurr - gProj)は小数部のビット数が 2Nビット(2 * shiftBits)であるため、sqrt()の入力も同様に小数部のビット数が2Nビット(2 * shiftBits)である。 In this case, since the number of bits in the fractional part of dot(gCurr - gProj, gCurr - gProj) is 2N (2 * shiftBits), the number of bits in the fractional part of the input to sqrt() is also 2N (2 * shiftBits).

 よって、予測ベクトル候補predUV0またはpredUV1は以下のようにして求められる。 Therefore, the predicted vector candidate predUV0 or predUV1 is calculated as follows:

predUV0 = uvProj + uvProjuvCurr
predUV1 = uvProj - uvProjuvCurr ( uvProjuvCurr の向きが逆方向の場合)
predUV0 = uvProj + uvProjuvCurr
predUV1 = uvProj - uvProjuvCurr (if uvProjuvCurr is facing in the opposite direction)

 このようにして求められた predUV0 または predUV1 のいずれかを予測ベクトルとして使用することができる。 Either predUV0 or predUV1 obtained in this way can be used as the prediction vector.

 予測ベクトル候補predUV0またはpredUV1からいずれかが選択され、予測ベクトルpredUVは次のように設定される。 Either the predicted vector candidate predUV0 or predUV1 is selected, and the predicted vector predUV is set as follows:

 (1)predUV0が選択される場合:
predUV = predUV0
 (2)predUV1が選択される場合:
predUV = predUV1
(1) When predUV0 is selected:
predUV = predUV0
(2) When predUV1 is selected:
predUV = predUV1

 また、predUV0またはpredUV1からpredUVを算出する際に、例えば小数部がshiftBitsであることを考慮し、何らかのオフセット値を加算または減算してもよい。次に例を示す。 Furthermore, when calculating predUV from predUV0 or predUV1, some offset value may be added or subtracted, taking into account that the decimal part is shiftBits. An example is shown below.

predUV = (offset0 << shiftBits) + predUV0
predUV = (offset1 << shiftBits) - predUV1
predUV = (offset0 << shiftBits) + predUV0
predUV = (offset1 << shiftBits) - predUV1

 さらに、いくつかの予測ベクトルを加算して平均値を算出してもよい。例えば、count個の予測ベクトルを累積加算した予測ベクトルをpredUVcountとし、丸め加算して平均化してもよい。 Furthermore, several predicted vectors may be added together to calculate the average value. For example, count predicted vectors may be cumulatively added together to obtain a predicted vector predUVcount, which may then be rounded and averaged.

if (predUVcount.x >= 0) {
    rounding.x = 1 << (shiftBits - 1);
} else {
    rounding.x = -1 * (1 << (shiftBits - 1));
}
if (predUVcount.y >= 0) {
    rounding.y = 1 << (shiftBits - 1);
} else {
    rounding.y = -1 * (1 << (shiftBits - 1));
}
predUV = (predUVcount / count + rounding) >> shiftBits;
if (predUVcount.x >= 0) {
rounding.x = 1 << (shiftBits - 1);
} else {
rounding.x = -1 * (1 << (shiftBits - 1));
}
if (predUVcount.y >= 0) {
rounding.y = 1 << (shiftBits - 1);
} else {
rounding.y = -1 * (1 << (shiftBits - 1));
}
predUV = (predUVcount / count + rounding) >>shiftBits;

 このようにして、predUVcountの符号に基づいて丸め処理の方向が異なるように設定することで、丸め誤差を低減することができる。なお、同じ方向に丸める方法を採用してもよく、また、丸め加算を行わないようにすることもできる。 In this way, by setting the rounding direction to differ based on the sign of predUVcount, rounding errors can be reduced. Note that it is also possible to use a method that rounds in the same direction, or to avoid rounding addition.

 また、上記の式predUV = (predUVcount / count + rounding) >> shiftBitsは、次のようにx成分およびy成分ごとに個別に処理を行うことを示す。 Also, the above formula predUV = (predUVcount / count + rounding) >> shiftBits indicates that processing is performed separately for each x and y component, as follows:

predUV.x = (predUVcount.x / count + rounding.x) >> shiftBits
predUV.y = (predUVcount.y / count + rounding.y) >> shiftBits
predUV.x = (predUVcount.x / count + rounding.x) >> shiftBits
predUV.y = (predUVcount.y / count + rounding.y) >> shiftBits

 次に、平方根算出処理(sqrt)の具体的な例を示す。平方根算出の入力値をaとし、aの平方根rootを下記のように表す。 Next, we will show a specific example of the square root calculation process (sqrt). Let a be the input value for the square root calculation, and the square root of a, root, be expressed as follows:

 平方根算出処理は、以下の漸化式によるニュートン法で算出されてもよい。 The square root calculation process may be performed using Newton's method using the following recurrence formula:

 収束後にroot=xnとなる。 After convergence, root=x n .

 より具体的には、以下のように算出する。 More specifically, it is calculated as follows:

 なお、装置は、漸化式の反復回数kを、規格のプロファイルまたはレベルに応じて異なる値を用いるように切り替えてもよい。例えば、高画質をターゲットとするプロファイルAの場合、装置は演算精度を高めるために、漸化式の反復回数kとして大きい値を使用することができる。具体的には、k=5などの大きい値を使用することが考えられる。 The device may also switch the number of iterations k of the recurrence formula to a different value depending on the profile or level of the standard. For example, in the case of profile A, which targets high image quality, the device may use a large value for the number of iterations k of the recurrence formula in order to increase calculation accuracy. Specifically, it may be possible to use a large value such as k=5.

 一方で、低処理量をターゲットとするプロファイルBの場合、装置は処理量を抑えるために、漸化式の反復回数kとして小さい値を使用することができる。例えば、k=2などの小さい値を使用することが考えられる。 On the other hand, for Profile B, which targets low processing load, the device can use a small value for the number of iterations k of the recurrence formula in order to reduce processing load. For example, a small value such as k = 2 could be used.

 このように、装置は、規格のプロファイルまたはレベルに応じて漸化式の反復回数kの値を規定することで、復号装置がストリームに含まれるプロファイルまたはレベルの情報を基に、漸化式の反復回数を適切に切り替えることにより、ビットストリームを正しく復号することができる。 In this way, by specifying the value of the number of iterations k of the recurrence formula according to the profile or level of the standard, the decoding device can correctly decode the bitstream by appropriately switching the number of iterations of the recurrence formula based on the profile or level information contained in the stream.

 なお、あるプロファイルCにおいては、装置は漸化式の反復回数kを1とすることもできる。この場合、装置は、1回の反復処理を右ビットシフトによって実施することができるため、除算を実施する必要がなくなり、処理量を削減したプロファイルを規定することができる。 In addition, for a certain profile C, the device can also set the number of iterations k of the recurrence formula to 1. In this case, the device can perform one iteration by right bit shifting, eliminating the need to perform division and allowing the device to specify a profile with reduced processing volume.

 また、装置は、漸化式の反復回数kをビットストリームのヘッダなどに付加してもよい。これにより、装置(符号化装置側)は使用した反復回数kをヘッダに付加して符号化することができる。さらに、復号装置は、ヘッダから反復回数kを取得し、符号化装置で使用した反復回数と同じ値を用いて復号処理を行うことにより、ビットストリームを適切に復号することができる。 The device may also add the number of iterations k of the recurrence formula to the header of the bitstream, etc. This allows the device (encoding device side) to encode by adding the number of iterations k used to the header. Furthermore, the decoding device can obtain the number of iterations k from the header and perform decoding processing using the same value as the number of iterations used by the encoding device, thereby properly decoding the bitstream.

 数3の処理において、「≪」は左シフトを示し、「≫」は右シフトを示し、「/」は小数点以下を切り捨てる整数除算を示し、「++」はインクリメントを示し、「≫=」はシフト後の値を代入することを示す。 In the processing of equation 3, "≪" indicates a left shift, "≫" indicates a right shift, "/" indicates integer division that truncates to the nearest digit, "++" indicates an increment, and "≫=" indicates that the shifted value is assigned.

 漸化式の初期値xは、真値である平方根の近似値として、入力値aのビット数カウント値bits(a)を用いて算出することができる。具体的には、x0=2((bits(a)≫1))としてもよい。例えば、入力値a=8の場合、ビット数カウント値bits(a)=4となり、初期値xはx0=4とすることができる。また、入力値a=40の場合、ビット数カウント値bits(a)=6となり、初期値xはx0=8とすることができる。 The initial value x0 of the recurrence formula can be calculated using the bit count value bits(a) of the input value a as an approximation of the square root, which is the true value. Specifically, x0 = 2 ((bits(a) >> 1)) may be used. For example, when the input value a = 8, the bit count value bits(a) = 4, and the initial value x0 can be set to x0 = 4. Furthermore, when the input value a = 40, the bit count value bits(a) = 6, and the initial value x0 can be set to x0 = 8.

 このようにして、近似値となる初期値を、ルックアップテーブルや除算を含めた複雑な演算を実施することなく、容易に算出することができる。また、真値である平方根の近似値を初期値として用いることで、漸化式が収束するまでの反復処理回数を抑えつつ、精度の高い平方根を求めることができる。さらに、反復処理回数を抑えることで、高速に平方根を求めることができる。 In this way, the initial approximate value can be easily calculated without performing complex calculations such as lookup tables or division. Furthermore, by using an approximate value of the square root (the true value) as the initial value, it is possible to find a highly accurate square root while minimizing the number of iterations required until the recurrence formula converges. Furthermore, by minimizing the number of iterations, the square root can be found quickly.

 例えば、真値である平方根の近似値を初期値として用いることで、漸化式の反復回数を2回としても精度の高い平方根を求めることができるため、低処理量化を実現することができる。 For example, by using an approximation of the true square root as the initial value, it is possible to obtain a highly accurate square root even if the recurrence formula is repeated only twice, thereby achieving low processing load.

 また、漸化式の初期値xを、例えばx0=2((bits(a)≫1))のように2のべき乗の値に設定することで、漸化式による初回の反復処理における除算処理を右シフトによって実施することができる。これにより、演算コストの高い除算処理の回数を削減することができる。 Furthermore, by setting the initial value x0 of the recurrence formula to a value that is a power of 2, such as x0 = 2 ((bits(a) >> 1)) , the division process in the first iteration of the recurrence formula can be performed by a right shift. This reduces the number of division processes, which are computationally expensive.

 例えば、漸化式の反復回数を2回とする場合、漸化式の初期値を2のべき乗とすることで、1回目の反復処理における除算処理を右シフトによって実施し、2回目の反復処理において除算処理を実施するようにしてもよい。このようにすることで、除算処理の回数を1回削減することができる。 For example, if the number of iterations of a recurrence formula is set to two, the initial value of the recurrence formula can be set to a power of two, so that the division process in the first iteration is performed by a right shift, and the division process is performed in the second iteration. In this way, the number of division processes can be reduced by one.

 なお、入力値aは2*Nビットの小数部を持っているため、漸化式による2回目の反復処理での除算においても、そのまま整数除算を実施することにより充分な精度が得られる。したがって、小数部を別途確保する必要がない。このようにすることで、処理量を削減することができる。 Furthermore, since the input value a has a 2*N-bit fractional part, sufficient precision can be obtained by simply performing integer division in the division in the second iteration using the recurrence formula. Therefore, there is no need to reserve the fractional part separately. This reduces the amount of processing.

 なお、高い精度の平方根を求める必要がない場合、漸化式による初回の反復処理を終了とし、平方根を表す値としてroot = x1としてもよい。一方で、さらに高い精度の平方根を求める必要がある場合は、反復処理をk回行うこととし、漸化式による2回目以降の反復処理を(k - 1)回実施して、平方根を表す値としてroot = xnとしてもよい。 If it is not necessary to find a square root with high accuracy, the first iteration using the recurrence formula may be terminated, and the value representing the square root may be set to root = x 1. On the other hand, if it is necessary to find a square root with even higher accuracy, the iterative process may be performed k times, and the second and subsequent iterative processes using the recurrence formula may be performed (k - 1) times, and the value representing the square root may be set to root = x n .

 この場合、漸化式による2回目以降の反復処理は、以下のように繰り返してもよい。 In this case, the second and subsequent iterations of the recurrence formula can be repeated as follows:

 また、シフトを用いた漸化式による初回の反復処理を実施せず、2回目以降の反復処理に含めて、全ての反復処理を同じ方法で演算するようにしてもよい。 Alternatively, the first iteration using the recurrence formula with shifts may not be performed, but may be included in the second and subsequent iterations, with all iterations calculated in the same way.

 次に、平方根算出処理(sqrt)の他の具体的な例を示す。平方根算出の入力値をaとし、aの平方根rootを下記のように表す。 Next, we will show another specific example of the square root calculation process (sqrt). Let the input value for the square root calculation be a, and express the square root of a, root, as follows:

 平方根算出処理は、以下の平方根の逆数を求める漸化式によるニュートン法で算出されてもよい。 The square root calculation process may be performed using Newton's method using the following recurrence formula to find the reciprocal of the square root:

 収束後にroot=1/xnとなる。 After convergence, root=1/x n .

 より具体的には、以下のように算出する。 More specifically, it is calculated as follows:

 上記の処理において、 「≪」は左シフト、「≫」は右シフト、「++」はインクリメント、「≫=」はシフト後の値を代入することを意味する。 In the above process, "≪" means left shift, "≫" means right shift, "++" means increment, and "≫=" means assigning the shifted value.

 漸化式の初期値xは、真値である平方根の逆数の近似値として、入力値aのビット数カウント値bits(a)を用いて算出してもよい。この場合、xはx0=2-((bits(a)≫1))と算出してもよい。 The initial value x0 of the recurrence formula may be calculated using the bit count value bits(a) of the input value a as an approximation of the reciprocal of the square root, which is the true value. In this case, x0 may be calculated as x0 = 2 - ((bits(a) >> 1)) .

 これにより、装置はルックアップテーブルや除算を含めた複雑な演算を実施することなく、近似値を容易に算出することができる。また、真値である平方根の逆数の近似値を初期値として用いることで、装置は漸化式が収束するまでの反復処理回数を抑えつつ、高精度な平方根を求めることができる。さらに、反復処理回数を抑えることで、装置は高速に平方根を求めることができる。 This allows the device to easily calculate approximate values without having to perform complex calculations such as lookup tables or division. Furthermore, by using an approximate value of the reciprocal of the square root (the true value) as the initial value, the device can calculate the square root with high accuracy while minimizing the number of iterations required until the recurrence formula converges. Furthermore, by minimizing the number of iterations, the device can quickly calculate the square root.

 例えば、真値である平方根の逆数の近似値を初期値として用いることで、装置は漸化式の反復回数を2回とする場合でも、高精度な平方根を求めることができ、低処理量化を実現できる。 For example, by using an approximation to the reciprocal of the true square root as the initial value, the device can calculate the square root with high accuracy even when the recurrence formula is repeated twice, thereby achieving low processing load.

 また、xは2のべき乗の値であるため、装置は漸化式による初回の反復処理において、乗算処理を右シフトによって実施することが可能である。このように、小数部を有した値を乗算する必要がなく、ビット不足によるオーバーフローを容易に回避することができる。また、シフト操作によって実現することができるため、装置の実装が容易になる。 Furthermore, since x0 is a power of 2, the device can perform the multiplication process by right shifting in the first iteration of the recurrence formula. In this way, there is no need to multiply values with fractional parts, and overflow due to insufficient bits can be easily avoided. Furthermore, since it can be achieved by a shift operation, the device can be easily implemented.

 次に、平方根算出処理(sqrt)の他の具体的な例について、その効果を含めてさらに具体的に説明する。図81~図85は、実施の形態に係る平方根算出処理(sqrt)の他の具体的な例について説明するための図である。 Next, we will explain in more detail other specific examples of the square root calculation process (sqrt), including their effects. Figures 81 to 85 are figures for explaining other specific examples of the square root calculation process (sqrt) according to the embodiment.

 図81に示すように、平方根算出の入力aは、整数部が32ビット、小数部をN=8として、8*2=16ビットとすれば、最大合計48ビットであると想定する。 As shown in Figure 81, the input a for square root calculation is assumed to have a maximum total of 48 bits, with the integer part being 32 bits and the decimal part being N=8, 8*2=16 bits.

 ところで1回目の反復処理における漸化式は、数6のように示される。初期値x0=2-((bits(a)≫1))とすると、ビット数の多い入力aと、小数部を多く含むxの乗算が必要である。さらに、xを3回乗算する必要があるため、相当なビット数が必要となる。 The recurrence formula for the first iterative process is shown in Equation 6. If the initial value is x0 = 2 - ((bits(a) >> 1)) , it is necessary to multiply the input a, which has a large number of bits, by x0 , which has a large fractional part. Furthermore, since it is necessary to multiply x0 three times, a considerable number of bits is required.

 ここで、入力aに対して、新たに小数部を(N × 2 + (bits(a)≫1))ビット、すなわちN = 8としたときの(16 + (bits(a)≫1))ビットを加えるものとする。このとき、(N × 2)の部分は入力aのビット数に依存しない固定小数部であり、(bits(a)≫1)の部分は入力aのビット数に依存する可変小数部である(図82)。 Here, we add a new fractional part of (N × 2 + (bits(a)≫1)) bits to input a, that is, (16 + (bits(a)≫1)) bits when N = 8. In this case, the (N × 2) part is a fixed fractional part that does not depend on the number of bits of input a, and the (bits(a)≫1) part is a variable fractional part that depends on the number of bits of input a (Figure 82).

 上記のように、単純に小数部を追加すると80ビット以上が必要となり、例えば64ビットのレジスタや演算器を持ったシステムではオーバーフローが発生する可能性がある。そこで、xは2の負のべき乗であることを利用し、可変小数部の付加(左シフト)と、xとの乗算を(bits(a)≫1)ビットの右シフトによる切り捨てとして処理する。ここで、可変小数部の付加を左シフト操作として行い、xとの乗算に伴うビット数の削減を右シフトとして処理することで、左シフトと右シフトが相殺される。このように、可変小数部を左シフトで追加する処理と、xとの乗算に伴う右シフト処理を同時に行うことで、ビット数の増加を防ぐことができる。したがって、装置はxを入力aに対して固定小数部を左シフト操作によって付加する処理として実施することができる(図83)。このような処理により、64ビットのシステムにおいてオーバーフローを回避しつつ、平方根算出に必要かつ十分な小数部を付加することができる。 As described above, simply adding a fractional part requires more than 80 bits, which could result in overflow in a system with a 64-bit register or arithmetic unit. Therefore, taking advantage of the fact that x0 is a negative power of 2, we add a variable fractional part (left shift) and process the multiplication by x0 as a truncation operation with a right shift of (bits(a) >> 1). Here, the addition of the variable fractional part is performed as a left shift operation, and the reduction of the number of bits associated with the multiplication by x0 is processed as a right shift, thereby canceling out the left and right shifts. In this way, the process of adding a variable fractional part with a left shift and the right shift associated with the multiplication by x0 simultaneously prevent an increase in the number of bits. Therefore, the device can implement x0 as a process of adding a fixed fractional part to input a with a left shift operation (Figure 83). This process allows us to add a fractional part necessary and sufficient for square root calculation while avoiding overflow in a 64-bit system.

 次に、1回目の反復処理における漸化式において、装置はxを乗算する処理を(bits(a)≫1)ビットの右シフトによって実施することができる。これは、図84及び図85のように表される。 Next, in the recurrence formula in the first iteration, the device can perform the multiplication by x0 by a right shift of (bits(a)>>1), as shown in Figures 84 and 85.

 このような処理によって、1回目の反復処理が終了した後も、xが16ビットの精度を維持することができる。 This process allows x1 to maintain 16-bit precision even after the first iteration is complete.

 次に、平方根算出処理(sqrt)の2回目の反復処理について、その効果を含めてさらに具体的に説明する。図86~図93は、実施の形態に係る平方根算出処理(sqrt)の他の具体的な例について説明するための図である。 Next, the second iteration of the square root calculation process (sqrt) will be explained in more detail, including its effects. Figures 86 to 93 are figures explaining other specific examples of the square root calculation process (sqrt) according to the embodiment.

 まず、a・xの演算を実施すると、演算結果は図86に示すように64ビットになる。しかし、この後にさらにa・x の演算を実施するとオーバーフローする可能性がある。したがって、(N×2=16)ビットを図87に示すように右シフト操作によって切り捨ててからa・x の演算(図88)を実施することで、オーバーフローを防止することができる。 First, when the operation a·x 1 is performed, the operation result becomes 64 bits as shown in Figure 86. However, if the operation a·x 1 2 is then performed, there is a possibility of overflow. Therefore, by truncating (N×2=16) bits by a right shift operation as shown in Figure 87 and then performing the operation a·x 1 2 (Figure 88), overflow can be prevented.

 次に、a・x の演算を実施すると再び64ビットになる。しかし、この後にさらにx1 × (3 - a・x1 2)の演算を実施するとオーバーフローする可能性がある。このため、(bits(a)≫1)ビットを図89に示すように右シフト操作によって切り捨ててから、x1 × (3 - a・x1 2)の演算を実施する(図90)。なお、先に右シフト操作によって(N×2=16)ビットを切り捨てているため、この処理では(bits(a)≫1)ビットのみを右シフト操作で切り捨てることになる。これにより、必要以上にビット数を削減することなく、オーバーフローを防ぎながら正確な計算が可能となる。 Next, when the operation a x 1 2 is performed, the result becomes 64 bits again. However, if the operation x 1 × (3 - a x 1 2 ) is then performed, there is a possibility of overflow. For this reason, the (bits(a) >> 1) bit is truncated by a right shift operation as shown in Figure 89, and then the operation x 1 × (3 - a x 1 2 ) is performed (Figure 90). Note that because (N × 2 = 16) bits were previously truncated by a right shift operation, only the (bits(a) >> 1) bit is truncated by the right shift operation in this process. This enables accurate calculations while preventing overflow without reducing the number of bits more than necessary.

 さらに、x1 × (3 - a・x1 2)の演算を実施すると結果が56ビットになる。最後に、平方根の逆数xから平方根rootを算出するために、入力a(48ビット)と乗算するとオーバーフローする可能性がある。このため、図91に示すように(16+(bits(a)≫1))ビットを右シフト操作によって切り捨てる必要がある。なお、この処理において、(x1/2) × (3 - a・x1 2)を算出する場合は、(16+(bits(a)≫1)+1)ビットを右シフトで切り捨てる。 Furthermore, when x1 × (3 - a· x12 ) is calculated, the result is 56 bits. Finally, to calculate the square root root from the reciprocal of the square root x2 , multiplication by the input a (48 bits) may result in an overflow. For this reason, as shown in Figure 91, it is necessary to discard (16 + (bits(a) >> 1)) bits by a right shift operation. Note that in this process, when calculating ( x1 /2) × (3 - a · x12 ), (16 + (bits(a) >> 1) + 1) bits are discarded by a right shift.

 2回目の反復処理が終了し、収束した平方根の逆数xが求まったら、平方根rootを算出するために、図92に示すように、逆数xを入力aと乗算する。 When the second iterative process is completed and the converged reciprocal x2 of the square root is found, the reciprocal x2 is multiplied by the input a to calculate the square root, as shown in FIG.

 最後に、図93に示すように、平方根処理で付加した小数部(16+(bits(a)≫1))ビットを右シフト操作によって切り捨てることで、最終的な平方根の出力rootを求めることができる。 Finally, as shown in Figure 93, the final square root output, root, can be obtained by truncating the fractional part (16 + (bits(a) >> 1)) bits added during the square root process using a right shift operation.

 このような処理を行うことにより、演算コストの高い除算を使用せずに平方根を算出することができる。また、入力aのレンジが広く、大きな値の入力であったとしても、限られたビット数のレジスタおよび演算器でもオーバーフローを発生させることなく平方根を算出することができる。 By performing this type of processing, it is possible to calculate the square root without using division, which is computationally expensive. Furthermore, even if the range of input a is wide and the input value is large, the square root can be calculated without causing an overflow, even with registers and arithmetic units with a limited number of bits.

 なお、本説明では、N=8として、固定小数部として16ビットを付加する例を示したが、N=7、N=6、N=5など、固定小数部として14ビット、12ビット、10ビットなどでもよく、他のビット数であってもよい。また、128ビットなど、64ビットを超えるレジスタや演算器を有するシステムであれば、N=9(固定小数部18ビット)以上であってもよい。可変小数部も(bits(a)≫1)ビットに限らず、他のビット数であってもよい。 In this explanation, an example was shown in which N=8 and 16 bits were added as the fixed fraction, but other numbers of bits are also acceptable, such as N=7, N=6, N=5, etc., and the fixed fraction may be 14 bits, 12 bits, 10 bits, etc. Furthermore, if the system has registers or arithmetic units that exceed 64 bits, such as 128 bits, N=9 (18-bit fixed fraction) or more may be used. The variable fraction is also not limited to (bits(a)≫1) bits, and may be of other numbers of bits.

 また、入力aのビット数が少ない場合など、乗算を繰り返してもオーバーフローしない場合には、各乗算の都度に右シフト操作を実施せず、処理の最後にのみシフト操作を実施することで、シフト操作回数を減らすようにしてもよい。この場合、左シフトで加える小数部を減らしてもよいし、加えないようにしてもよい。 Furthermore, if the number of bits in the input a is small and repeated multiplications do not result in an overflow, the number of shift operations can be reduced by not performing a right shift operation after each multiplication, but performing a shift operation only at the end of the process. In this case, the fractional part added by the left shift can be reduced, or it can be omitted altogether.

 さらに、入力aの下位ビットや、元々入力aがもっている小数部を、平方根算出処理(sqrt)の他の具体的な例に示す固定小数部の一部または全体として使用してもよい。これにより、少ないビット数のレジスタおよび演算器でも処理ができるようになり、シフト操作回数を減らすことができるようになる。 Furthermore, the lower bits of input a or the decimal point originally contained in input a may be used as part or all of the fixed decimal point shown in another specific example of the square root calculation process (sqrt). This allows processing to be performed using registers and arithmetic units with a smaller number of bits, reducing the number of shift operations.

 なお、高い精度の平方根が求められない場合は、漸化式による初回の反復処理で終了して、平方根をroot=(a・x1)≫(16+(bits(a)≫1))としてもよい。これにより、追加の乗算処理を行うことなく平方根を求めることができ、処理量を削減することができる。 If a highly accurate square root cannot be obtained, the process can be terminated at the first iteration using the recurrence formula, and the square root can be calculated as root = (a x1) >> (16 + (bits(a) >> 1)). This allows the square root to be obtained without performing additional multiplications, reducing the amount of processing.

 逆に、さらに高い精度の平方根を求める場合は、反復処理をk回行うこととして、漸化式による2回目以降の反復処理を(k-1)回実施し、最終的な平方根をroot=(a・xn)≫(16+(bits(a)≫1))としてもよい。その場合は、平方根算出処理(sqrt)の他の具体的な例における漸化式による2回目の反復処理を以下のように繰り返すことで、高精度な平方根を求めることができる。 Conversely, to find a square root with even higher precision, the iterative process can be performed k times, with the second and subsequent iterative processes using the recurrence formula being performed (k-1) times, and the final square root being root=(a・xn)≫(16+(bits(a)≫1)). In that case, a highly precise square root can be found by repeating the second iterative process using the recurrence formula in another specific example of the square root calculation process (sqrt) as follows:

 さらに、漸化式の反復回数kは、規格のプロファイルまたはレベルに応じて異なる値を用いるように切り替えてもよい。例えば、高画質をターゲットとするプロファイルAの場合、装置は演算精度を高めるために漸化式の反復回数として大きい値を使用してもよい。具体的には、k=5などの大きい値を使用することが考えられる。 Furthermore, the number of iterations k of the recurrence formula may be switched to a different value depending on the profile or level of the standard. For example, in the case of profile A, which targets high image quality, the device may use a large value for the number of iterations of the recurrence formula to improve calculation accuracy. Specifically, a large value such as k=5 may be used.

 一方で、低処理量をターゲットとするプロファイルBの場合、装置は処理量を抑えるために、漸化式の反復回数として小さい値を使用してもよい。例えば、k=2などの小さい値を使用することが考えられる。このように、規格のプロファイルまたはレベルに応じて漸化式の反復回数を規定することにより、復号装置はビットストリームに含まれるプロファイルまたはレベルの情報を基に、適切な反復回数を選択することでビットストリームを正しく復号することができる。 On the other hand, for Profile B, which targets low processing loads, the device may use a small value for the number of iterations in the recurrence formula to reduce processing load. For example, a small value such as k=2 may be used. In this way, by specifying the number of iterations in the recurrence formula according to the profile or level of the standard, the decoding device can correctly decode the bitstream by selecting an appropriate number of iterations based on the profile or level information contained in the bitstream.

 なお、あるプロファイルCにおいては、反復回数k=1としてもよい。この場合、1回の反復処理を右ビットシフトによって実施することができ、乗算を行うことなく処理量を削減することができる。 In addition, for a certain profile C, the number of iterations may be set to k=1. In this case, one iteration can be performed by a right bit shift, reducing the amount of processing without requiring multiplication.

 また、漸化式の反復回数kは、ビットストリームのヘッダなどに付加してもよい。これにより、符号化装置側で使用した反復回数kをヘッダに付加して符号化することで、復号装置はヘッダから反復回数kを取得することができる。そして、復号装置は、符号化装置で使用した反復回数と同じ値を用いてデコード処理を行うことで、ビットストリームを適切に復号することができる。 Furthermore, the number of iterations k of the recurrence formula may be added to the header of the bitstream. In this way, by adding the number of iterations k used by the encoding device to the header and encoding it, the decoding device can obtain the number of iterations k from the header. The decoding device can then perform decoding processing using the same value as the number of iterations used by the encoding device, thereby properly decodeing the bitstream.

 なお、本実施例で説明した平方根算出処理(sqrt)の具体的な例、及び、他の具体的な例は、fine予測値の算出に適用するだけでなく、平方根の算出が必要となる他の処理に適用してもよい。その際、これらの平方根の算出例で示したように、漸化式の初期値を2のべき乗の値にすることで、漸化式による初回の反復処理における除算処理または乗算処理をシフト演算で実現することが可能となり、処理量を削減することができる。 The specific example of the square root calculation process (SQRT) described in this embodiment and other specific examples may be applied not only to the calculation of fine prediction values, but also to other processes that require square root calculations. In this case, as shown in these examples of square root calculations, by setting the initial value of the recurrence formula to a value that is a power of 2, it becomes possible to implement the division process or multiplication process in the first iteration process using the recurrence formula with a shift operation, thereby reducing the amount of processing.

 図94は、実施の形態に係る、符号化装置の構成の他の一例を示す図である。図95は、実施の形態に係る、符号化装置による符号化方法の他の一例を示すフローチャートである。 FIG. 94 is a diagram showing another example of the configuration of an encoding device according to an embodiment. FIG. 95 is a flowchart showing another example of an encoding method performed by an encoding device according to an embodiment.

 符号化装置1550は、回路1551と、回路1551に接続されたメモリ1552とを備える。符号化装置1550は、図71~図93で説明した処理を実行してもよい。 The encoding device 1550 includes a circuit 1551 and a memory 1552 connected to the circuit 1551. The encoding device 1550 may perform the processing described in Figures 71 to 93.

 回路1551は、以下の動作を行う。 Circuit 1551 performs the following operations:

 回路1551は、三次元メッシュに含まれる複数の頂点を取得する(S1561)。回路1551は、複数の頂点のうちの1つの頂点を予測符号化する(S1562)。予測符号化では、1つの頂点の第1予測値を小数精度で算出し、第1予測値の小数部のビット数を削減して第2予測値を算出し、第2予測値を用いて1つの頂点を予測符号化する。 Circuit 1551 acquires multiple vertices included in a three-dimensional mesh (S1561). Circuit 1551 predictively encodes one of the multiple vertices (S1562). In the predictive encoding, a first predicted value for the one vertex is calculated with decimal precision, the number of bits in the decimal part of the first predicted value is reduced to calculate a second predicted value, and the one vertex is predictively encoded using the second predicted value.

 これによれば、小数精度で算出された予測値の小数部のビット数を削減することで、演算時の精度を制御しつつ、データ量を削減できる。ビット数の削減によって、符号化の処理量が低減されるため、処理効率を向上できる。 By reducing the number of bits in the decimal part of the predicted value calculated with decimal precision, it is possible to reduce the amount of data while controlling the accuracy during calculation. Reducing the number of bits reduces the amount of encoding processing, thereby improving processing efficiency.

 例えば、第1予測値の算出では、処理済みの2つ以上の頂点のそれぞれに基づいて、2つ以上の第3予測値を小数精度で算出し、2つ以上の第3予測値を統合することで第1予測値を算出する。 For example, when calculating the first predicted value, two or more third predicted values are calculated with decimal precision based on each of the two or more processed vertices, and the first predicted value is calculated by integrating the two or more third predicted values.

 これによれば、複数の予測値を統合することで、精度の高い予測値を得ることができる。これにより、予測誤差が低減し、符号化の効率が向上する。また、複数の予測値の統合によって、適切な予測値を選択する手法に柔軟性を持たせることができる。 By combining multiple predicted values, it is possible to obtain a highly accurate predicted value. This reduces prediction errors and improves coding efficiency. Furthermore, combining multiple predicted values allows for greater flexibility in the method for selecting an appropriate predicted value.

 例えば、第1予測値の算出では、2つ以上の第3予測値を小数精度で統合する。 For example, when calculating the first predicted value, two or more third predicted values are integrated with decimal precision.

 これによれば、統合処理を小数精度で行い、後で整数化することで、統合処理の精度を保ちながら符号化処理を行うことができる。精度の高い統合を行った後で整数化することで、予測誤差の増大を抑制できる。 By performing the integration process with decimal precision and then converting to integers later, it is possible to perform the encoding process while maintaining the precision of the integration process. By performing high-precision integration and then converting to integers, it is possible to suppress an increase in prediction error.

 例えば、2つ以上の第3予測値及び第1予測値は、所定のビット数の小数部を有する。第2予測値の算出では、第1予測値の小数部の所定のビット数を削減することで第2予測値を算出する。 For example, the two or more third predicted values and the first predicted value each have a decimal part with a predetermined number of bits. The second predicted value is calculated by reducing the decimal part of the first predicted value by a predetermined number of bits.

 これによれば、所定のビット数の小数部を削減することで、整数化の処理を簡便に行うことができる。ビット数の削減により、符号量を削減でき、演算処理の効率を向上できる。 This allows for easy integer conversion by reducing the decimal portion by a predetermined number of bits. Reducing the number of bits reduces the amount of code required, improving the efficiency of calculation processing.

 例えば、第1予測値は、2つ以上の第3予測値の平均である。 For example, the first predicted value is the average of two or more third predicted values.

 これによれば、複数の予測値の平均を用いることで、全体的な予測誤差を低減できる。平均化によって、ノイズ成分や予測誤差が相殺される可能性があるため、符号化精度を向上させることができる。 This allows the overall prediction error to be reduced by averaging multiple predicted values. Averaging can potentially cancel out noise components and prediction errors, improving coding accuracy.

 例えば、予測符号化では、第2予測値の算出までに所定のビット数の削減を行わない。 For example, in predictive coding, the specified number of bits is not reduced until the second predicted value is calculated.

 これによれば、整数化するまでにビット数の削減を行わないことで、予測値の精度を維持できる。演算中に精度低下が起こらないため、高精度な符号化を実現できる。 This allows the accuracy of the predicted value to be maintained by not reducing the number of bits before converting to integers. Since there is no loss of accuracy during calculation, high-precision encoding can be achieved.

 例えば、第2予測値を用いた1つの頂点の予測符号化では、第2予測値に丸め処理を行って第4予測値を算出し、第4予測値を用いて1つの頂点を予測符号化する。 For example, when predictively encoding one vertex using the second predicted value, the second predicted value is rounded to calculate a fourth predicted value, and the fourth predicted value is used to predictively encode the one vertex.

 これによれば、丸め処理を行うことで、小数点以下の誤差を抑えることができる。符号化後のデータ精度を向上させることができ、またビット数削減時の誤差を最小化できる。 This allows rounding to be performed to reduce decimal point errors. This improves data accuracy after encoding and minimizes errors when reducing the number of bits.

 例えば、丸め処理では、第2予測値を、当該第2予測値が正の数であるか負の数であるかで異なる方向に丸める。 For example, in the rounding process, the second predicted value is rounded in a different direction depending on whether the second predicted value is a positive number or a negative number.

 これによれば、予測値が正か負かによって丸めの方向を切り替えることで、符号化精度の向上を図ることができる。特に、予測値の大きさや符号に応じた最適な丸め処理を実現できる。 This allows for improved encoding accuracy by switching the rounding direction depending on whether the predicted value is positive or negative. In particular, it allows for optimal rounding processing based on the magnitude and sign of the predicted value.

 図96は、実施の形態に係る、復号装置の構成の他の一例を示す図である。図97は、実施の形態に係る、復号装置による復号方法の他の一例を示すフローチャートである。 Figure 96 is a diagram showing another example of the configuration of a decoding device according to an embodiment. Figure 97 is a flowchart showing another example of a decoding method performed by a decoding device according to an embodiment.

 復号装置1560は、回路1561と、回路1561に接続されたメモリ1562とを備える。復号装置1560は、図71~図93で説明した処理を実行してもよい。 The decoding device 1560 includes a circuit 1561 and a memory 1562 connected to the circuit 1561. The decoding device 1560 may perform the processing described in Figures 71 to 93.

 回路1561は、以下の動作を行う。 Circuit 1561 performs the following operations:

 回路1561は、三次元メッシュに含まれる複数の頂点を取得する(S1571)。回路1561は、複数の頂点のうちの1つの頂点を予測復号する(S1572)。予測復号では、1つの頂点の第1予測値を小数精度で算出し、第1予測値の小数部のビット数を削減して第2予測値を算出し、第2予測値を用いて1つの頂点を予測復号する。 Circuit 1561 acquires multiple vertices included in a three-dimensional mesh (S1571). Circuit 1561 predictively decodes one of the multiple vertices (S1572). In the predictive decoding, a first predicted value for the one vertex is calculated with decimal precision, the number of bits in the decimal part of the first predicted value is reduced to calculate a second predicted value, and the one vertex is predictively decoded using the second predicted value.

 これによれば、小数精度で算出された予測値の小数部のビット数を削減することで、演算時の精度を制御しつつ、データ量を削減できる。ビット数の削減によって、復号の処理量が低減されるため、処理効率を向上できる。 By reducing the number of bits in the decimal part of the predicted value calculated with decimal precision, it is possible to reduce the amount of data while controlling the accuracy during calculation. Reducing the number of bits reduces the amount of decoding processing, thereby improving processing efficiency.

 例えば、第1予測値の算出では、処理済みの2つ以上の頂点のそれぞれに基づいて、2つ以上の第3予測値を小数精度で算出し、2つ以上の第3予測値を統合することで第1予測値を算出する。 For example, when calculating the first predicted value, two or more third predicted values are calculated with decimal precision based on each of the two or more processed vertices, and the first predicted value is calculated by integrating the two or more third predicted values.

 これによれば、複数の予測値を統合することで、精度の高い予測値を得ることができる。これにより、復号誤差が低減され、復号精度が向上する。 By combining multiple predicted values, a highly accurate predicted value can be obtained. This reduces decoding errors and improves decoding accuracy.

 例えば、第1予測値の算出では、2つ以上の第3予測値を小数精度で統合する。 For example, when calculating the first predicted value, two or more third predicted values are integrated with decimal precision.

 これによれば、小数精度での統合処理により、より高精度な予測値を算出することができる。後に整数化することで、効率よく復号処理を行うことができる。 This allows for more accurate predictions to be calculated by integrating with decimal precision. By converting the values to integers later, the decoding process can be performed efficiently.

 例えば、2つ以上の第3予測値及び第1予測値は、所定のビット数の小数部を有する。第2予測値の算出では、第1予測値の小数部の所定のビット数を削減することで第2予測値を算出する。 For example, the two or more third predicted values and the first predicted value each have a decimal part with a predetermined number of bits. The second predicted value is calculated by reducing the decimal part of the first predicted value by a predetermined number of bits.

 これによれば、小数部のビット数を削減して整数化することで、復号処理の負担を軽減しつつ、高精度な予測値の利用を可能とする。 This reduces the number of bits in the decimal part and converts it to an integer, thereby reducing the burden of the decoding process and enabling the use of highly accurate prediction values.

 例えば、第1予測値は、2つ以上の第3予測値の平均である。 For example, the first predicted value is the average of two or more third predicted values.

 これによれば、複数の予測値を平均化することで、予測誤差を低減できる。平均化処理によって予測値のばらつきを抑え、高精度な復号を実現できる。 This allows prediction errors to be reduced by averaging multiple predicted values. The averaging process reduces the variance in predicted values, enabling highly accurate decoding.

 例えば、予測復号では、第2予測値の算出までに所定のビット数の削減を行わない。 For example, in predictive decoding, the specified number of bits is not reduced before the second predicted value is calculated.

 これによれば、復号処理において整数化するまでビットの削減による精度低下が生じないため、高精度な復号処理を維持できる。 This means that there is no loss of accuracy due to bit reduction until integer conversion occurs during the decoding process, allowing for high-precision decoding.

 例えば、第2予測値を用いた1つの頂点の予測復号では、第2予測値に丸め処理を行って第4予測値を算出し、第4予測値を用いて1つの頂点を予測復号する。 For example, when predictively decoding one vertex using the second predicted value, the second predicted value is rounded to calculate a fourth predicted value, and the fourth predicted value is used to predictively decode the one vertex.

 これによれば、丸め処理を適用することで、ビット数削減時の誤差を最小化できる。復号処理において精度の高い予測値を得ることができる。 By applying rounding, errors can be minimized when reducing the number of bits, allowing highly accurate prediction values to be obtained during the decoding process.

 例えば、丸め処理では、第2予測値を、当該第2予測値が正の数であるか負の数であるかで異なる方向に丸める。 For example, in the rounding process, the second predicted value is rounded in a different direction depending on whether the second predicted value is a positive number or a negative number.

 これによれば、予測値が正か負かに応じて丸め処理の方向を調整することで、予測値の精度を向上できる。また、丸め誤差の発生を抑制できる。 This allows the accuracy of the predicted value to be improved by adjusting the direction of the rounding process depending on whether the predicted value is positive or negative. It also reduces the occurrence of rounding errors.

 また、本態様に記載された構成要素の全てが常に必要であるわけではなく、本開示の符号化装置及び復号装置の構成要素の一部のみが含まれていてもよい。 Furthermore, not all of the components described in this embodiment are always required, and only some of the components of the encoding device and decoding device disclosed herein may be included.

 本開示は、例えば、三次元メッシュに関する符号化装置、復号装置、送信装置及び受信装置等に有用であり、コンピュータグラフィックスシステム、及び、三次元データ表示システム等に適用可能である。 This disclosure is useful, for example, for encoding devices, decoding devices, transmitting devices, and receiving devices related to three-dimensional meshes, and is applicable to computer graphics systems and three-dimensional data display systems, etc.

  100 符号化装置
  101、121、144 頂点情報符号化器
  102、145 接続情報符号化器
  103、122 属性情報符号化器
  104、204、1103 前処理器
  105、205、2106 後処理器
  110 三次元データ符号化システム
  111、211 制御器
  112、212 入出力処理器
  113 三次元データ符号化器
  114 システム多重化器
  115 三次元データ生成器
  123 メタデータ符号化器
  124 多重化器
  131 頂点画像生成器
  132 属性画像生成器
  133 メタデータ生成器
  134 映像符号化器
  141 二次元データ符号化器
  142 メッシュデータ符号化器
  143 テクスチャ符号化器
  148 デスクリプション符号化器
  151、251 回路
  152、252 メモリ
  200 復号装置
  201、221、244 頂点情報復号器
  202、245 接続情報復号器
  203、222 属性情報復号器
  210 三次元データ復号システム
  213 三次元データ復号器
  214 システム逆多重化器
  215、247 提示器
  216 ユーザインタフェース
  223 メタデータ復号器
  224 逆多重化器
  231 頂点情報生成器
  232 属性情報生成器
  234 映像復号器
  241 二次元データ復号器
  242 メッシュデータ復号器
  243 テクスチャ復号器
  246 メッシュ再構成器
  248 デスクリプション復号器
  300 ネットワーク
  310 外部接続器
  511 ボリュメトリックキャプチャ器
  512 投影器
  513 ベースメッシュ符号化器
  514 変位符号化器
  515 属性符号化器
  516 他タイプ符号化器
  613 ベースメッシュ復号器
  614 変位復号器
  615 属性復号器
  616 他タイプ復号器
  617 三次元再構成器
  1101 入力メッシュ
  1102 属性マップ
  1104 ベースメッシュ
  1105 変位データ
  1106 圧縮器
  1107 ビットストリーム
  1108 メタデータ
  1206  サブ分割器
  1207  変位ベクトル算出器
  1231  逆多重化器
  1232  スイッチ
  1233  静的メッシュ復号器
  1234  メッシュバッファ
  1235  モーション復号器
  1236  ベースメッシュ再構成器
  1237  逆量子化器
  1238、1243  ビデオ復号器
  1239  イメージアンパッカ
  1240  逆量子化器
  1241  逆ウェーブレット変換器
  1242  再構成器
  1244  色変換器
  1251  復号されたベースメッシュ
  1252  サブ分割器
  1253  サブ分割されたメッシュ
  1254  復号された変位データ
  1255  変位器
  1256  復号された3Dメッシュ
  1301 メッシュフレーム
  1302 ベースメッシュフレーム
  1303 変位情報
  1304 ビットストリーム
  1501  頂点座標の集合
  1502  二次元座標の集合
  1530、1550  符号化装置
  1531、1541、1551  回路
  1532、1542、1552  メモリ
  1540、1560  復号装置
  2101 ビットストリーム
  2102 伸張器
  2103 ベースメッシュ
  2104 変位データ
  2105 メタデータ
  2106 後処理器
  2107 出力メッシュ
  2108 属性マップ
  2204 サブ分割器
  2209 再構成器
  2301 ベースメッシュフレーム
  2302 ベースメッシュフレーム
  2303 変位情報
  2304 メッシュフレーム
100 Encoding device 101, 121, 144 Vertex information encoder 102, 145 Connection information encoder 103, 122 Attribute information encoder 104, 204, 1103 Preprocessor 105, 205, 2106 Postprocessor 110 Three-dimensional data encoding system 111, 211 Controller 112, 212 Input/output processor 113 Three-dimensional data encoder 114 System multiplexer 115 Three-dimensional data generator 123 Metadata encoder 124 Multiplexer 131 Vertex image generator 132 Attribute image generator 133 Metadata generator 134 Video encoder 141 Two-dimensional data encoder 142 Mesh data encoder 143 Texture encoder 148 Description encoder 151, 251 Circuit 152, 252 Memory 200 Decoding device 201, 221, 244 Vertex information decoder 202, 245 Connection information decoder 203, 222 Attribute information decoder 210 3D data decoding system 213 3D data decoder 214 System demultiplexer 215, 247 Presenter 216 User interface 223 Metadata decoder 224 Demultiplexer 231 Vertex information generator 232 Attribute information generator 234 Video decoder 241 2D data decoder 242 Mesh data decoder 243 Texture decoder 246 Mesh reconstructor 248 Description decoder 300 Network 310 External connector 511 Volumetric capturer 512 Projector 513 Base mesh encoder 514 Displacement encoder 515 Attribute encoder 516 Other Type Encoder 613 Base Mesh Decoder 614 Displacement Decoder 615 Attribute Decoder 616 Other Type Decoder 617 3D Reconstructor 1101 Input Mesh 1102 Attribute Map 1104 Base Mesh 1105 Displacement Data 1106 Compressor 1107 Bitstream 1108 Metadata 1206 Subdivider 1207 Displacement Vector Calculator 1231 Demultiplexer 1232 Switch 1233 Static Mesh Decoder 1234 Mesh Buffer 1235 Motion Decoder 1236 Base Mesh Reconstructor 1237 Inverse Quantizer 1238, 1243 Video Decoder 1239 Image Unpacker 1240 Inverse Quantizer 1241 Inverse Wavelet Transformer 1242 Reconstructor 1244 Color Transformer 1251 Decoded base mesh 1252 Subdivider 1253 Subdivided mesh 1254 Decoded displacement data 1255 Displacer 1256 Decoded 3D mesh 1301 Mesh frame 1302 Base mesh frame 1303 Displacement information 1304 Bitstream 1501 Set of vertex coordinates 1502 Set of 2D coordinates 1530, 1550 Encoder 1531, 1541, 1551 Circuitry 1532, 1542, 1552 Memory 1540, 1560 Decoder 2101 Bitstream 2102 Decompressor 2103 Base mesh 2104 Displacement data 2105 Metadata 2106 Postprocessor 2107 Output mesh 2108 Attribute map 2204 Subdivider 2209 Reconstructor 2301 Base mesh frame 2302 Base mesh frame 2303 Displacement information 2304 Mesh frame

Claims (18)

 符号化装置によって実行される符号化方法であって、
 三次元メッシュに含まれる複数の頂点を取得し、
 前記複数の頂点のうちの1つの頂点を予測符号化し、
 前記予測符号化では、
  前記1つの頂点の第1予測値を小数精度で算出し、
  前記第1予測値の小数部のビット数を削減して第2予測値を算出し、
  前記第2予測値を用いて前記1つの頂点を予測符号化する
 符号化方法。
1. An encoding method performed by an encoding device, comprising:
Obtain multiple vertices contained in a three-dimensional mesh,
predictively encoding one vertex of the plurality of vertices;
In the predictive coding,
calculating a first predicted value of the one vertex with decimal precision;
calculating a second predicted value by reducing the number of bits of the fractional part of the first predicted value;
and predictively encoding the one vertex using the second predicted value.
 前記第1予測値の算出では、
  処理済みの2つ以上の頂点のそれぞれに基づいて、2つ以上の第3予測値を小数精度で算出し、
  前記2つ以上の第3予測値を統合することで第1予測値を算出する
 請求項1に記載の符号化方法。
In calculating the first predicted value,
calculating two or more third predicted values with decimal precision based on each of the two or more processed vertices;
The encoding method according to claim 1 , further comprising: calculating a first predicted value by integrating the two or more third predicted values.
 前記第1予測値の算出では、前記2つ以上の第3予測値を小数精度で統合する
 請求項2に記載の符号化方法。
The encoding method according to claim 2 , wherein the calculation of the first predicted value comprises integrating the two or more third predicted values with decimal precision.
 前記2つ以上の第3予測値及び前記第1予測値は、所定のビット数の小数部を有し、
 前記第2予測値の算出では、前記第1予測値の前記小数部の前記所定のビット数を削減することで前記第2予測値を算出する
 請求項2に記載の符号化方法。
the two or more third predicted values and the first predicted value have a decimal part with a predetermined number of bits;
The encoding method according to claim 2 , wherein the calculation of the second predicted value comprises calculating the second predicted value by reducing the predetermined number of bits of the fractional part of the first predicted value.
 前記第1予測値は、前記2つ以上の第3予測値の平均である
 請求項2から4のいずれか1項に記載の符号化方法。
The encoding method according to claim 2 , wherein the first predicted value is an average of the two or more third predicted values.
 前記予測符号化では、前記第2予測値の算出までに前記所定のビット数の削減を行わない
 請求項4に記載の符号化方法。
The encoding method according to claim 4 , wherein in the predictive encoding, the predetermined number of bits is not reduced until the second predicted value is calculated.
 前記第2予測値を用いた前記1つの頂点の予測符号化では、
  前記第2予測値に丸め処理を行って第4予測値を算出し、
  前記第4予測値を用いて前記1つの頂点を予測符号化する
 請求項2から4のいずれか1項に記載の符号化方法。
In the predictive coding of the one vertex using the second predicted value,
calculating a fourth predicted value by rounding the second predicted value;
The encoding method according to claim 2 , further comprising predictively encoding the one vertex using the fourth predicted value.
 前記丸め処理では、前記第2予測値を、当該第2予測値が正の数であるか負の数であるかで異なる方向に丸める
 請求項7に記載の符号化方法。
The encoding method according to claim 7 , wherein the rounding process rounds the second predicted value in a different direction depending on whether the second predicted value is a positive number or a negative number.
 復号装置によって実行される復号方法であって、
 三次元メッシュに含まれる複数の頂点を取得し、
 前記複数の頂点のうちの1つの頂点を予測復号し、
 前記予測復号では、
  前記1つの頂点の第1予測値を小数精度で算出し、
  前記第1予測値の小数部のビット数を削減して第2予測値を算出し、
  前記第2予測値を用いて前記1つの頂点を予測復号する
 復号方法。
A decoding method performed by a decoding device, comprising:
Obtain multiple vertices contained in a three-dimensional mesh,
predictively decoding one vertex of the plurality of vertices;
In the predictive decoding,
calculating a first predicted value of the one vertex with decimal precision;
calculating a second predicted value by reducing the number of bits of the fractional part of the first predicted value;
a decoding method for predictively decoding the one vertex using the second predicted value.
 前記第1予測値の算出では、
  処理済みの2つ以上の頂点のそれぞれに基づいて、2つ以上の第3予測値を小数精度で算出し、
  前記2つ以上の第3予測値を統合することで第1予測値を算出する
 請求項9に記載の復号方法。
In calculating the first predicted value,
calculating two or more third predicted values with decimal precision based on each of the two or more processed vertices;
The decoding method according to claim 9 , further comprising calculating the first predicted value by integrating the two or more third predicted values.
 前記第1予測値の算出では、前記2つ以上の第3予測値を小数精度で統合する
 請求項10に記載の復号方法。
The decoding method according to claim 10 , wherein the calculation of the first predicted value comprises integrating the two or more third predicted values with decimal precision.
 前記2つ以上の第3予測値及び前記第1予測値は、所定のビット数の小数部を有し、
 前記第2予測値の算出では、前記第1予測値の前記小数部の前記所定のビット数を削減することで前記第2予測値を算出する
 請求項10に記載の復号方法。
the two or more third predicted values and the first predicted value have a decimal part with a predetermined number of bits;
The decoding method according to claim 10 , wherein the calculation of the second predicted value comprises calculating the second predicted value by reducing the predetermined number of bits of the fractional part of the first predicted value.
 前記第1予測値は、前記2つ以上の第3予測値の平均である
 請求項10から12のいずれか1項に記載の復号方法。
The decoding method according to claim 10 , wherein the first predicted value is an average of the two or more third predicted values.
 前記予測復号では、前記第2予測値の算出までに前記所定のビット数の削減を行わない
 請求項12に記載の復号方法。
The decoding method according to claim 12 , wherein in the predictive decoding, the predetermined number of bits is not reduced until the second predicted value is calculated.
 前記第2予測値を用いた前記1つの頂点の予測復号では、
  前記第2予測値に丸め処理を行って第4予測値を算出し、
  前記第4予測値を用いて前記1つの頂点を予測復号する
 請求項10から12のいずれか1項に記載の復号方法。
In the predictive decoding of the one vertex using the second predicted value,
calculating a fourth predicted value by rounding the second predicted value;
The decoding method according to claim 10 , further comprising predictively decoding the one vertex using the fourth predicted value.
 前記丸め処理では、前記第2予測値を、当該第2予測値が正の数であるか負の数であるかで異なる方向に丸める
 請求項15に記載の復号方法。
The decoding method according to claim 15 , wherein the rounding process rounds the second predicted value in a different direction depending on whether the second predicted value is a positive number or a negative number.
 回路と、
 前記回路に接続されたメモリと、を備え、
 前記回路は、動作において、
 三次元メッシュに含まれる複数の頂点を取得し、
 前記複数の頂点のうちの1つの頂点を予測符号化し、
 前記予測符号化では、
  前記1つの頂点の第1予測値を小数精度で算出し、
  前記第1予測値の小数部のビット数を削減して第2予測値を算出し、
  前記第2予測値を用いて前記1つの頂点を予測符号化する
 符号化装置。
The circuit and
a memory connected to the circuit;
The circuit, in operation,
Obtain multiple vertices contained in a three-dimensional mesh,
predictively encoding one vertex of the plurality of vertices;
In the predictive coding,
calculating a first predicted value of the one vertex with decimal precision;
calculating a second predicted value by reducing the number of bits of the fractional part of the first predicted value;
and a coding device that predictively codes the one vertex using the second predicted value.
 回路と、
 前記回路に接続されたメモリと、を備え、
 前記回路は、動作において、
 三次元メッシュに含まれる複数の頂点を取得し、
 前記複数の頂点のうちの1つの頂点を予測復号し、
 前記予測復号では、
  前記1つの頂点の第1予測値を小数精度で算出し、
  前記第1予測値の小数部のビット数を削減して第2予測値を算出し、
  前記第2予測値を用いて前記1つの頂点を予測復号する
 復号装置。
The circuit and
a memory connected to the circuit;
The circuit, in operation,
Obtain multiple vertices contained in a three-dimensional mesh,
predictively decoding one vertex of the plurality of vertices;
In the predictive decoding,
calculating a first predicted value of the one vertex with decimal precision;
calculating a second predicted value by reducing the number of bits of the fractional part of the first predicted value;
A decoding device that predictively decodes the one vertex using the second predicted value.
PCT/JP2025/014997 2024-04-17 2025-04-16 Encoding method, decoding method, encoding device, and decoding device Pending WO2025220707A1 (en)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US202463634999P 2024-04-17 2024-04-17
US63/634,999 2024-04-17
US202463659894P 2024-06-14 2024-06-14
US63/659,894 2024-06-14

Publications (1)

Publication Number Publication Date
WO2025220707A1 true WO2025220707A1 (en) 2025-10-23

Family

ID=97403743

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2025/014997 Pending WO2025220707A1 (en) 2024-04-17 2025-04-16 Encoding method, decoding method, encoding device, and decoding device

Country Status (1)

Country Link
WO (1) WO2025220707A1 (en)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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 (en) * 2021-10-26 2023-05-04 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ Encoding device, decoding device, encoding method, and decoding method
US20230290008A1 (en) * 2022-03-11 2023-09-14 Apple Inc. Image/video-based mesh compression
WO2024075608A1 (en) * 2022-10-03 2024-04-11 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ Encoding device, decoding device, encoding method, and decoding method

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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 (en) * 2021-10-26 2023-05-04 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ Encoding device, decoding device, encoding method, and decoding method
US20230290008A1 (en) * 2022-03-11 2023-09-14 Apple Inc. Image/video-based mesh compression
WO2024075608A1 (en) * 2022-10-03 2024-04-11 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ Encoding device, decoding device, encoding method, and decoding method

Similar Documents

Publication Publication Date Title
KR102797011B1 (en) Point cloud data transmission device, point cloud data transmission method, point cloud data reception device and point cloud data reception method
KR102609776B1 (en) Point cloud data processing method and device
US20240259595A1 (en) Encoding device, decoding device, encoding method, and decoding method
US20250322550A1 (en) Encoding method, decoding method, encoding device, and decoding device
CN120917484A (en) Encoding device, decoding device, encoding method, and decoding method
JP2025166019A (en) Encoding device, decoding device, transmission device, encoding method, decoding method, and transmission method
US20250371743A1 (en) Encoding method, decoding method, encoding device, and decoding device
US20230412837A1 (en) Point cloud data transmission method, point cloud data transmission device, point cloud data reception method, and point cloud data reception device
WO2025084224A1 (en) Encoding method, decoding method, encoding device, and decoding device
WO2024195505A1 (en) Encoding device, decoding device, encoding method, and decoding method
WO2024075608A1 (en) Encoding device, decoding device, encoding method, and decoding method
WO2025220707A1 (en) Encoding method, decoding method, encoding device, and decoding device
WO2025220696A1 (en) Encoding method, decoding method, encoding device, and decoding device
WO2025220701A1 (en) Encoding method, decoding method, encoding device, and decoding device
WO2024232318A1 (en) Decoding method, encoding method, decoding device, and encoding device
WO2025070342A1 (en) Encoding device, decoding device, encoding method, and decoding method
WO2025182831A1 (en) Encoding method, decoding method, encoding device, and decoding device
WO2025216144A1 (en) Encoding method, decoding method, encoding device, and decoding device
WO2025074908A1 (en) Encoding device, decoding device, encoding method, and decoding method
KR20250174895A (en) Encoding device, decoding device, encoding method and decoding method
WO2025173672A1 (en) Encoding method, decoding method, encoding device, and decoding device
WO2025243923A1 (en) Encoding method, decoding method, encoding device, and decoding device
WO2025258626A1 (en) Encoding method, decoding method, encoding device, and decoding device
WO2025216172A1 (en) Encoding method, decoding method, encoding device, and decoding device
WO2025150425A1 (en) Decoding method, encoding method, decoding device, and encoding device

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: 25790316

Country of ref document: EP

Kind code of ref document: A1