ENCODING DEVICE, DECODING DEVICE, ENCODING METHOD AND DECODING METHOD
Patent Information
- Application Number
- BR112025021581
- Authority / Receiving Office
- BR · BR
- Patent Type
- Applications
- Publication Date
- 2026-09-08
Smart Images

Figure 00000000_0000_ABST
Description
1 / 104 “ENCODING DEVICE, DECODING DEVICE, ENCODING METHOD AND DECODING METHOD Technical Field
[001] The present invention relates, for example, to a coding device. Background of the Technique
[002] PTL 1 proposes a method and a device for encoding and decoding three-dimensional mesh data. List of citations Patent Literature [PTL 1] Publication of unexamined Japanese patent application no. 2006-187015 Summary of the invention Technical problem
[003] There are demands for further improvements in the encoding or decoding of three-dimensional data. One objective of the present invention is to enhance the encoding or decoding of three-dimensional data. Solution to the problem
[004] An encoding device according to one aspect of the present invention is an encoding device that includes memory and a memory-accessible circuit. In operation, the circuit encodes, for each of the vertices included in a three-dimensional mesh, displacement data to be used to derive a displacement vector, the displacement vector indicating a displacement from a first position of a vertex generated using a base mesh, and the vertices include a first vertex, a second vertex and a third vertex, and the displacement data of the first vertex indicates a difference between the displacement vector of the first vertex and a Petition 870250090886, dated 06 / 10 / 2025, pp. 164 / 283 2 / 104 combined vector of the displacement vector of the second vertex and the displacement vector of the third vertex.
[005] It is observed that these general or specific aspects can be implemented using a system, a device, a method, an integrated circuit, a computer program, or a computer-readable non-transient recording medium, such as a CD-ROM, or any combination of systems, devices, methods, integrated circuits, computer programs, and recording media. Advantageous effects of the invention
[006] The present invention can contribute to improving the processing of three-dimensional and similar data encoding. Brief description of the drawings
[007] Figure 1 is a conceptual diagram that illustrates a three-dimensional mesh according to a modality.
[008] Figure 2 is a conceptual diagram that illustrates the basic elements of the three-dimensional mesh according to the modality.
[009] Figure 3 is a conceptual diagram that illustrates the mapping according to the modality.
[0010] Figure 4 is a block diagram that illustrates an example of a configuration of an encoding / decoding system according to the modality.
[0011] Figure 5 is a block diagram that illustrates an example of a configuration of an encoding device according to the modality.
[0012] Figure 6 is a block diagram that illustrates another example of encoding device configuration according to the mode.
[0013] Figure 7 is a block diagram that illustrates an example of a decoding device configuration according to the mode. Petition 870250090886, dated 06 / 10 / 2025, pp. 165 / 283 3 / 104
[0014] Figure 8 is a block diagram that illustrates another example of decoding device configuration according to the mode.
[0015] Figure 9 is a conceptual diagram that illustrates an example of a bitstream configuration according to the mode.
[0016] Figure 10 is a conceptual diagram that illustrates another example of bitstream configuration according to the mode.
[0017] Figure 11 is a conceptual diagram that illustrates yet another example of bitstream configuration according to the mode.
[0018] Figure 12 is a block diagram that illustrates a specific example of the encoding / decoding system according to the modality.
[0019] Figure 13 is a conceptual diagram that illustrates an example of point cloud data configuration according to modality.
[0020] Figure 14 is a conceptual diagram that illustrates an example of a point cloud data file according to the modality.
[0021] Figure 15 is a conceptual diagram that illustrates an example of mesh data configuration according to the modality.
[0022] Figure 16 is a conceptual diagram that illustrates an example of a data file of mesh data according to the modality.
[0023] Figure 17 is a conceptual diagram that illustrates a type of three-dimensional data according to the modality.
[0024] Figure 18 is a block diagram illustrating an example of a three-dimensional data encoder configuration according to the modality.
[0025] Figure 19 is a block diagram illustrating an example Petition 870250090886, dated 06 / 10 / 2025, pages 166 / 283 4 / 104 configuration of a three-dimensional data decoder according to the modality.
[0026] Figure 20 is a block diagram that illustrates another example of a three-dimensional data encoder configuration according to the modality.
[0027] Figure 21 is a block diagram that illustrates another example of a three-dimensional data decoder configuration according to the modality.
[0028] Figure 22 is a conceptual diagram that illustrates a specific example of coding processing according to modality.
[0029] Figure 23 is a conceptual diagram that illustrates a specific example of decoding processing according to modality.
[0030] Figure 24 is a block diagram that illustrates an example of implementing the encoding device according to the modality.
[0031] Figure 25 is a block diagram that illustrates an example of a decoding device implementation according to the modality.
[0032] Figure 26 is a block diagram that illustrates another example of encoding / decoding system configuration according to the mode.
[0033] Figure 27 is a block diagram that illustrates another example of encoding device configuration according to the mode.
[0034] Figure 28 is a block diagram that illustrates another example of decoding device configuration according to the mode.
[0035] Figure 29 is a block diagram illustrating an example Petition 870250090886, dated 06 / 10 / 2025, pp. 167 / 283 5 / 104 detailed configuration of the encoding device according to the mode.
[0036] Figure 30 is a block diagram that illustrates a detailed configuration variation of the encoding device according to the modality.
[0037] Figure 31 is a flowchart that illustrates a process by the coding device according to the modality.
[0038] Figure 32 is an explanatory diagram that schematically illustrates the coding of a mesh structure according to the modality.
[0039] Figure 33 is a block diagram that illustrates a detailed example of decoding device configuration according to the mode.
[0040] Figure 34 is a block diagram that illustrates a detailed configuration variation of the decoding device according to the mode.
[0041] Figure 35 is a flowchart that illustrates a process by the decoding device according to the modality.
[0042] Figure 36 is an explanatory diagram that schematically illustrates the decoding of a mesh structure according to the modality.
[0043] Figure 37 is an explanatory diagram that illustrates an example of subdivision according to modality.
[0044] Figure 38 is an explanatory diagram that illustrates an example of vertex displacement in which vertices are subdivided and then displaced, according to the modality.
[0045] Figure 39 is an explanatory diagram that illustrates an example of the vertices of an original mesh according to the modality.
[0046] Figure 40 is an explanatory diagram that illustrates an example of a mesh according to the modality. Petition 870250090886, dated 06 / 10 / 2025, pp. 168 / 283 6 / 104
[0047] Figure 41 is an explanatory diagram that illustrates an example of dividing a mesh into sub-meshes according to the modality.
[0048] Figure 42 is a first explanatory diagram that illustrates an example of packing displacement information into an image frame according to the modality.
[0049] Figure 43 is a second explanatory diagram that illustrates an example of packing displacement information into an image frame according to the modality.
[0050] Figure 44 is a third explanatory diagram that illustrates an example of packing displacement information into an image frame according to the modality.
[0051] Figure 45 is a flowchart that illustrates an example of a process detailed by the coding device according to the modality.
[0052] Figure 46 is a flowchart that illustrates an example of a detailed process by the decoding device according to the modality.
[0053] Figure 47 is an explanatory diagram that illustrates a process of reconstructing second vertices according to the modality.
[0054] Figure 48 is an explanatory diagram that illustrates a first example of a process for calculating third vertices according to the modality.
[0055] Figure 49 is an explanatory diagram that illustrates a first example of the storage location of a parameter according to the modality.
[0056] Figure 50 is an explanatory diagram that illustrates a second example of the storage location of a parameter according to the modality. Petition 870250090886, dated 06 / 10 / 2025, pp. 169 / 283 7 / 104
[0057] Figure 51 is an explanatory diagram that illustrates a second example of a process for calculating third vertices according to the modality.
[0058] Figure 52 is an explanatory diagram that illustrates a first example of an interpellation process according to the modality.
[0059] Figure 53 is an explanatory diagram illustrating a second example of the interpellation process according to the modality.
[0060] Figure 54 is an explanatory diagram illustrating a process of reconstructing fourth vertices according to the modality.
[0061] Figure 55 is an explanatory diagram that illustrates an example of a mesh structure reconstructed according to the modality.
[0062] Figure 56 is an explanatory diagram that illustrates a third example of the interpellation process according to the modality.
[0063] Figure 57 is an explanatory diagram that illustrates a fourth example of the interpellation process according to the modality. Description of the Modalities Introduction
[0064] Three-dimensional (3D) meshes are used, for example, in computer graphics videos. For example, computer graphics videos may include a plurality of frames with different timings, and each of the frames can be represented in the form of three-dimensional meshes.
[0065] Each of the three-dimensional meshes includes vertex information indicating the positions of a plurality of vertices in a three-dimensional space, connection information indicating the connections between the plurality of vertices, and attribute information indicating the attributes of the vertices or faces. Each face is constructed according to the connectivity relationship between the plurality of vertices. Petition 870250090886, dated 06 / 10 / 2025, pp. 170 / 283 8 / 104 ces. These three-dimensional meshes can represent various computer graphics videos.
[0066] For the transmission and storage of three-dimensional meshes, efficient encoding and decoding of three-dimensional meshes is expected. For efficient encoding and decoding of three-dimensional meshes, arithmetic encoding and decoding can be used.
[0067] There is a demand for further improvements in an encoding or decoding process related to three-dimensional data. An objective of the present invention is to improve the encoding or decoding process related to three-dimensional data.
[0068] Next, aspects of the invention derived from the content of the disclosure of this description will be described by way of example, and the effects and similar aspects derived from the invention will be described.
[0069] (1) An encoding device including: memory; and a memory-accessible circuit, in which, in operation, the circuit encodes, for each of the vertices included in a three-dimensional mesh, displacement data to be used to derive a displacement vector, the displacement vector indicating a displacement from a first position of a vertex generated using a basis mesh, and the vertices include a first vertex, a second vertex and a third vertex, and the displacement data of the first vertex indicate a difference between the displacement vector of the first vertex and a combined vector of the displacement vector of the second vertex and the displacement vector of the third vertex.
[0070] According to this aspect, the encoding device can reduce the amount of information in the displacement data at the first vertex in some cases, since the displacement data at the first vertex indicates the difference between the displacement vector. Petition 870250090886, dated 06 / 10 / 2025, pp. 171 / 283 9 / 104 location of the first vertex and the resultant vector of the displacement vector of the second vertex and the displacement vector of the third vertex. As a result, the encoding device can contribute to reducing the amount of encoded information, thus increasing the efficiency of the encoding or decoding process in some cases. As seen above, the encoding device is capable of improving an encoding or decoding process related to three-dimensional data.
[0071] (2) The encoding device according to (1), in which the circuit generates the combined vector by weighting and combining equally the displacement vector of the second vertex and the displacement vector of the third vertex, and encodes the displacement data of the first vertex using the generated combined vector.
[0072] According to this aspect, the encoding device sums the displacement vector of the second vertex and the displacement vector of the third vertex with equal weights. The encoding device can thus generate the resulting vector through a simpler computational process, contributing to the reduction of processing load or energy consumption. As a result, the encoding device can improve the encoding or decoding process of three-dimensional data.
[0073] (3) The encoding device according to (1), in which the circuit generates the combined vector by weighting and combining differently the displacement vector of the second vertex and the displacement vector of the third vertex, and encodes the displacement data of the first vertex using the generated combined vector.
[0074] According to this aspect, the encoding device can generate the resulting vector more appropriately in some cases by adding the displacement vector of the second vertex and the displacement vector of the third vertex with different weights. By Petition 870250090886, dated 06 / 10 / 2025, pp. 172 / 283 10 / 104 For example, the weights for the displacement vector of the second vertex and the displacement vector of the third vertex can be appropriately defined according to the parameters of the encoding process. In this case, the resulting vector can be generated appropriately according to the parameters of the encoding process. This can contribute to an improvement in the encoding or decoding process. As a result, the encoding device can enhance an encoding or decoding process related to three-dimensional data.
[0075] (4) The encoding device according to (1), in which the combined vector is generated by weighting and combining displacement vectors, including the displacement vector of the second vertex and the displacement vector of the third vertex, and a sum of weighting factors is 1.
[0076] According to this aspect, the encoding device can reduce the amount of information in displacement data at a first vertex more easily, in some cases, by using a reference point defined on the segment connecting the second vertex and the third vertex. As a result, the encoding device can improve an encoding or decoding process related to three-dimensional data.
[0077] (5) The encoding device according to (1), in which the combined vector is generated by weighting and combining displacement vectors, including the displacement vector of the second vertex and the displacement vector of the third vertex, and a sum of weighting factors is not 1.
[0078] According to this aspect, the encoding device can, in some cases, reduce the amount of information in displacement data at a first vertex, using a reference point defined at a position that is not on the connecting segment. Petition 870250090886, dated 06 / 10 / 2025, pp. 173 / 283 11 / 104 is the second vertex and the third vertex. As a result, the encoding device can enhance an encoding or decoding process related to three-dimensional data.
[0079] (6) A decoding device including: memory; and a memory-accessible circuit, in which, in operation, the circuit decodes, for each of the vertices included in a three-dimensional mesh, displacement data to be used to derive a displacement vector, the displacement vector indicating a displacement from a first position of a vertex generated using a basis mesh, the vertices including a first vertex, a second vertex and a third vertex, and the circuit generates the displacement vector of the first vertex using the displacement data of the first vertex and a combined vector of the displacement vector of the second vertex and the displacement vector of the third vertex.
[0080] According to this aspect, the decoding device can reduce the amount of information in the displacement data at the first vertex in some cases, since the displacement data at the first vertex indicates the difference between the displacement vector of the first vertex and the resultant vector of the displacement vector of the second vertex and the displacement vector of the third vertex. As a result, the decoding device can contribute to reducing the amount of encoded information, thus increasing the efficiency of the encoding or decoding process in some cases. As seen above, the encoding device is capable of improving an encoding or decoding process related to three-dimensional data.
[0081] (7) The decoding device according to (6), in which the circuit generates the combined vector by weighting and equally combining the displacement vector of the second vertex and the displacement vector of the third vertex, and decodes the displacement data Petition 870250090886, dated 06 / 10 / 2025, pp. 174 / 283 12 / 104 ment of the first vertex using the generated combined vector.
[0082] According to this aspect, the decoding device sums the displacement vector of the second vertex and the displacement vector of the third vertex with equal weights. The decoding device can thus generate the resulting vector through a simpler computational process, contributing to the reduction of processing load or energy consumption. As a result, the decoding device can improve an encoding or decoding process related to three-dimensional data.
[0083] (8) The decoding device according to (6), in which the circuit generates the combined vector by weighting and combining differently the displacement vector of the second vertex and the displacement vector of the third vertex, and decodes the displacement data of the first vertex using the generated combined vector.
[0084] According to this aspect, the decoding device can generate the resulting vector more appropriately in some cases by adding the displacement vector of the second vertex and the displacement vector of the third vertex with different weights. For example, the weights for the displacement vector of the second vertex and the displacement vector of the third vertex can be appropriately defined according to the parameters of the encoding process. In this case, the resulting vector can be generated appropriately according to the parameters of the encoding process. This can contribute to an improvement in the encoding or decoding process. As a result, the decoding device can enhance an encoding or decoding process related to three-dimensional data.
[0085] (9) The decoding device according to (6), in which the combined vector is generated by weighting and combining displacement vectors, including the displacement vector of the Petition 870250090886, dated 06 / 10 / 2025, pages 175 / 283 13 / 104 second vertex and the displacement vector of the third vertex, and a sum of weighting factors is 1.
[0086] According to this aspect, the decoding device can reduce the amount of information in displacement data at a first vertex more easily, in some cases, by using a reference point defined on the segment connecting the second vertex and the third vertex. As a result, the decoding device can improve an encoding or decoding process related to three-dimensional data.
[0087] (10) The decoding device according to (6), in which the combined vector is generated by weighting and combining displacement vectors, including the displacement vector of the second vertex and the displacement vector of the third vertex, and a sum of weighting factors is not 1.
[0088] According to this aspect, the decoding device can, in some cases, reduce the amount of information in displacement data at a first vertex, using a reference point defined at a position that is not on the segment connecting the second and third vertices. As a result, the decoding device can enhance an encoding or decoding process related to three-dimensional data.
[0089] (11) A coding method including: encoding, for each of the vertices (P, Q, R) included in a three-dimensional mesh, displacement data to be used to derive a displacement vector (AP, BQ, YR), the displacement vector indicating a displacement from a first position (A, B, Y) of a vertex generated using a base mesh, in which the vertices include a first vertex (R), a second vertex (P) and a third vertex (Q), and the displacement data of the first vertex indicating a difference between the displacement vector of the first vertex and a combined vector of Petition 870250090886, dated 06 / 10 / 2025, pp. 176 / 283 14 / 104 displacement vector of the second vertex and displacement vector of the third vertex.
[0090] This aspect produces the same advantageous effects as the encoding device above.
[0091] (12) A decoding method including: decoding, for each of the vertices (P, Q, R) included in a three-dimensional mesh, displacement data to be used to derive a displacement vector (AP, BQ, YR), the displacement vector indicating a displacement from a first position (A, B, Y) of a vertex generated using a base mesh, the vertices including a first vertex (R), a second vertex (P) and a third vertex (Q); and generating the displacement vector of the first vertex using the displacement data of the first vertex and a combined vector of the displacement vector of the second vertex and the displacement vector of the third vertex.
[0092] This aspect produces the same advantageous effects as the decoding device above.
[0093] In addition, these general or specific aspects may be implemented using a system, a device, a method, an integrated circuit, a computer program, or a computer-readable non-transient recording medium, such as a CD-ROM, or any combination of systems, devices, methods, integrated circuits, computer programs, and recording media. Expressions and Terms
[0094] The following expressions and terms will be used here. (1) Three-dimensional mesh
[0095] A three-dimensional mesh is a set of a plurality of faces and indicates, for example, a three-dimensional object. Furthermore, a three-dimensional mesh is primarily composed of vertex information, connection information, and attribute information. Petition 870250090886, dated 06 / 10 / 2025, pp. 177 / 283 15 / 104 A three-dimensional mesh can be expressed as a polygonal mesh or a mesh. Furthermore, a three-dimensional mesh can have a temporal shift. A three-dimensional mesh can include metadata relating to vertex information, connection information, and attribute information, or other additional information. (2) Vertex Information
[0096] Vertex information is information that indicates a vertex. For example, 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 can be expressed as geometry. In addition, vertex information can also be expressed as position information. (3) Connection Information
[0097] Connection information is information that indicates a connection between vertices. For example, connection information indicates a connection for the construction of a face or an edge of a three-dimensional mesh. Connection information can be expressed as connectivity. In addition, connection information can also be expressed as face information. (4) Attribute Information
[0098] Attribute information is information that indicates an attribute of a vertex or face. For example, attribute information indicates an attribute, such as a color, an image, a normal vector, and the like, associated with a vertex or face. Attribute information can be expressed as texture. (5) Face
[0099] A face is an element that constitutes a three-dimensional mesh. Specifically, a face is a polygon on a plane in three-dimensional space. For example, a face can be determined Petition 870250090886, dated 06 / 10 / 2025, pp. 178 / 283 16 / 104 as a triangle in three-dimensional space. (6) Plan
[00100] A plane is a two-dimensional plane in a three-dimensional space. For example, a polygon is formed in a plane and a plurality of polygons are formed in a plurality of planes. (7) Bitstream
[00101] A bit stream corresponds to encoded information. A bit stream can also be expressed as a stream, an encoded bit stream, a compressed bit stream, or an encoded signal. (8) Encoding and Decoding
[00102] The expression encode can be replaced by expressions such as store, include, write, describe, signal, send, notify, save or compress, and such expressions can be used interchangeably. For example, encoding information can mean including information in a bit stream. Furthermore, encoding information in a bit stream can mean encoding the information and generating a bit stream that includes the encoded information.
[00103] Furthermore, the expression decode can be replaced by expressions such as read, interpret, scan, load, derive, acquire, receive, extract, restore, reconstruct, decompress or expand, and such expressions can be used interchangeably. For example, decoding information can mean acquiring information from a bit stream. Furthermore, decoding information from a bit stream can mean decoding the bit stream and acquiring information included in the bit stream. (9) Ordinal Numbers
[00104] In the description, an ordinal number, such as first, second, or similar, may be affixed to a constituent element or similar. Such ordinal numbers may be substituted as needed. In addition, an ordinal number may be newly affixed Petition 870250090886, dated 06 / 10 / 2025, pp. 179 / 283 17 / 104 of or removed from a constituent or similar element. Furthermore, ordinal numbers may be affixed to elements in order to identify the elements and may not correspond to any meaningful order. Three-dimensional mesh
[00105] Figure 1 is a conceptual diagram illustrating a three-dimensional mesh according to the present embodiment. The three-dimensional mesh consists of a plurality of faces. For example, each face is a triangle. The vertices of the triangles are determined in a three-dimensional space. Furthermore, a three-dimensional mesh indicates a three-dimensional object. Each face can have a color or an image.
[00106] Figure 2 is a conceptual diagram illustrating the basic elements of a three-dimensional mesh according to the present embodiment. The three-dimensional mesh consists of vertex information, connection information, and attribute information. Vertex information indicates the position of a vertex of a face in three-dimensional space. Connection information indicates a connection between vertices. A face can be identified based on vertex information and connection information. In other words, a colorless three-dimensional object is formed in three-dimensional space based on vertex information and connection information.
[00107] Attribute information can be associated with a vertex or associated with a face. Attribute information associated with a vertex can be expressed as a point attribute. Attribute information associated with a vertex can indicate an attribute of the vertex itself or indicate an attribute of a face connected to the vertex.
[00108] For example, a color can be associated with a co vertex Petition 870250090886, dated 06 / 10 / 2025, pp. 180 / 283 18 / 104 of attribute information. The color associated with the vertex can be the color of the vertex itself or the color of a face connected to the vertex. The face color can be an average of a plurality of colors associated with a plurality of face vertices. Additionally, a normal vector can be associated with a vertex or face as attribute information. Such a normal vector can express the front and back of a face.
[00109] Furthermore, a two-dimensional image can be associated with a face as attribute information. The two-dimensional image associated with a face is also expressed as a texture image or an attribute map. In addition, information indicating the mapping between a face and a two-dimensional image can be associated with the face as attribute information. Such information indicating the mapping can be expressed as mapping information, vertex information of a texture image, or an attribute UV coordinate.
[00110] Furthermore, information about a color, an image, a moving image, and similar items to be used as attribute information can be expressed as a parameter space.
[00111] A texture is reflected in a three-dimensional object based on such attribute information. In other words, a colored three-dimensional object is formed in a three-dimensional space based on vertex information, connection information, and attribute information.
[00112] Note that although attribute information is associated with a vertex or a face in the description given above, alternatively, attribute information can be associated with an edge.
[00113] Figure 3 is a conceptual diagram illustrating the mapping according to the present modality. For example, a region Petition 870250090886, dated 06 / 10 / 2025, pages 181 / 283 19 / 104 A two-dimensional image in a two-dimensional plane can be mapped to a face of a three-dimensional mesh in three-dimensional space. Specifically, the coordinate information of a region in the two-dimensional image is associated with a face of the three-dimensional mesh. Consequently, an image of the mapped region in the two-dimensional image is reflected onto the face of the three-dimensional mesh.
[00114] The use of mapping allows a two-dimensional image to be used as attribute information to be separated from the three-dimensional mesh. For example, in three-dimensional mesh encoding, the two-dimensional image can be encoded based on an image encoding system or a video encoding system. System Configuration Figure 4 is a block diagram illustrating an example configuration of an encoding / decoding system according to the present embodiment. In Figure 4, the encoding / decoding system includes encoding device 100 and decoding device 200.
[00115] For example, encoding device 100 acquires a three-dimensional mesh and encodes the three-dimensional mesh into a bitstream. Furthermore, encoding device 100 sends the bitstream to network 300. For example, the bitstream includes an encoded three-dimensional mesh and control information to decode the encoded three-dimensional mesh. Encoding the three-dimensional mesh causes the three-dimensional mesh information to be compressed.
[00116] Network 300 transmits the bit stream from encoding device 100 to decoding device 200. Network 300 can be the Internet, a wide area network (WAN), a local area network (LAN), or a combination thereof. Network 300 is not necessarily Petition 870250090886, dated 06 / 10 / 2025, pages 182 / 283 20 / 104 is strictly limited to two-way communication and can be a one-way communication network for terrestrial digital transmission, satellite transmission, or similar.
[00117] In addition, the 300 network can be replaced by a recording medium, such as a DVD (Digital Versatile Disc), a BD (Blu-Ray Disc (registered trademark)) or similar.
[00118] Decoding device 200 acquires a bitstream and decodes a three-dimensional mesh from the bitstream. Decoding the three-dimensional mesh causes the information in the three-dimensional mesh to be expanded. For example, decoding device 200 decodes a three-dimensional mesh according to a decoding method that corresponds to an encoding method used by encoding device 100 to encode the three-dimensional mesh. In other words, encoding device 100 and decoding device 200 perform encoding and decoding according to an encoding method and a decoding method that correspond to each other.
[00119] Note that the three-dimensional mesh before encoding can also be expressed as an original three-dimensional mesh. Furthermore, the three-dimensional mesh after decoding is also expressed as a reconstructed three-dimensional mesh. Encoding Device
[00120] Figure 5 is a block diagram illustrating an example configuration of encoding device 100 according to the present embodiment. For example, encoding device 100 includes vertex information encoder 101, connection information encoder 102, and attribute information encoder 103.
[00121] The vertex information encoder 101 is an electrical circuit which encodes vertex information. For example, the encoder Petition 870250090886, dated 06 / 10 / 2025, pages 183 / 283 21 / 104 vertex information converter 101 encodes vertex information into a bitstream according to a defined format relative to the vertex information.
[00122] Connection information encoder 102 is an electrical circuit which encodes connection information. For example, connection information encoder 102 encodes connection information into a bit stream according to a defined format related to the connection information.
[00123] The attribute information encoder 103 is an electrical circuit which encodes attribute information. For example, the attribute information encoder 103 encodes attribute information into a bit stream according to a defined format related to the attribute information.
[00124] Variable-length encoding or fixed-length encoding can be used to encode vertex information, connection information, and attribute information. Variable-length encoding can accommodate Huffman encoding, context-adaptive binary arithmetic encoding (CABAC), or similar encodings.
[00125] Vertex information encoder 101, connection information encoder 102, and attribute information encoder 103 can be integrated. Alternatively, each of vertex information encoder 101, connection information encoder 102, and attribute information encoder 103 can be more finely segmented into a plurality of constituent elements.
[00126] Figure 6 is a block diagram illustrating another example of configuring encoding device 100 according to the present embodiment. For example, in addition to the components illustrated in Figure 5, encoding device 100 includes the pre Petition 870250090886, dated 06 / 10 / 2025, pp. 184 / 283 22 / 104 processor 104 and post-processor 105.
[00127] Preprocessor 104 is an electrical circuit that performs processing prior to encoding of vertex information, connection information, and attribute information. For example, preprocessor 104 can perform transformation, demultiplexing, multiplexing, or similar processing on a three-dimensional mesh prior to encoding. More specifically, for example, preprocessor 104 can demultiplex vertex information, connection information, and attribute information from the three-dimensional mesh prior to encoding.
[00128] The 105 postprocessor is an electrical circuit that performs post-encoding processing of vertex information, connection information, and attribute information. For example, the 105 postprocessor can perform transformation, demultiplexing, multiplexing, or similar processing with respect to vertex information, connection information, and attribute information after encoding. More specifically, for example, the 105 postprocessor can multiplex vertex information, connection information, and attribute information after encoding into a bitstream. Furthermore, for example, the 105 postprocessor can also perform variable-length encoding with respect to vertex information, connection information, and attribute information after encoding. Decoding Device
[00129] Figure 7 is a block diagram illustrating an example configuration of the decoding device 200 according to the present embodiment. For example, the decoding device 200 includes the vertex information decoder 201, the connection information decoder 202, and the attribute information decoder 203. Petition 870250090886, dated 06 / 10 / 2025, pages 185 / 283 23 / 104
[00130] The 201 vertex information decoder is an electrical circuit which decodes vertex information. For example, the 201 vertex information decoder decodes vertex information from a bitstream according to a defined format relative to the vertex information.
[00131] The 202 connection information decoder is an electrical circuit which decodes connection information. For example, the 202 connection information decoder decodes connection information from a bit stream according to a defined format in relation to the connection information.
[00132] The attribute information decoder 203 is an electrical circuit which decodes attribute information. For example, the attribute information decoder 203 decodes attribute information from a bit stream according to a defined format in relation to the attribute information.
[00133] Variable-length decoding or fixed-length decoding can be used to decode vertex information, connection information, and attribute information. Variable-length decoding can accommodate Huffman coding, context-adaptive binary arithmetic coding (CABAC), or similar.
[00134] The vertex information decoder 201, the connection information decoder 202, and the attribute information decoder 203 can be integrated. Alternatively, each of the vertex information decoder 201, the connection information decoder 202, and the attribute information decoder 203 can be more finely segmented into a plurality of constituent elements.
[00135] Figure 8 is a block diagram illustrating another example of the configuration of the 200 decoding device. (Competence 870250090886, 06 / 10 / 2025, page 186 / 283) 24 / 104 of the present embodiment. For example, in addition to the components illustrated in Figure 7, the decoding device 200 includes the preprocessor 204 and the postprocessor 205.
[00136] The 204 preprocessor is an electrical circuit that performs processing before decoding vertex information, connection information, and attribute information. For example, the 204 preprocessor can perform transformation, demultiplexing, multiplexing, or similar processing on a bit stream before decoding vertex information, connection information, and attribute information.
[00137] More specifically, for example, preprocessor 204 can demultiplex a bit stream, a sub-stream of bits corresponding to vertex information, a sub-stream of bits corresponding to connection information, and a sub-stream of bits corresponding to attribute information. Furthermore, for example, preprocessor 204 can perform variable-length decoding on the bit stream in advance, before decoding the vertex information, connection information, and attribute information.
[00138] The 205 postprocessor is an electrical circuit that performs processing after decoding vertex information, connection information, and attribute information. For example, the 205 postprocessor can perform transformation, demultiplexing, multiplexing, or similar processing on vertex information, connection information, and attribute information after decoding. More specifically, for example, the 205 postprocessor can multiplex vertex information, connection information, and attribute information after decoding into a three-dimensional mesh. Bitstream Petition 870250090886, dated 06 / 10 / 2025, pages 187 / 283 25 / 104
[00139] Vertex information, connection information, and attribute information are encoded and stored in a bitstream. A relationship between these pieces of information and the bitstream will be described below.
[00140] Figure 9 is a conceptual diagram illustrating an example of a bitstream configuration according to the present embodiment. In this example, connection information, vertex information, and attribute information are integrated into the bitstream. For example, connection information, vertex information, and attribute information can be included in a file.
[00141] Furthermore, a plurality of portions of information portions can be sequentially stored, such as a first portion of connection information, a first portion of vertex information, a first portion of attribute information, a second portion of connection information, a second portion of vertex information, a second portion of attribute information, ... The plurality of portions may correspond to a plurality of temporally different portions, which corresponds to a plurality of spatially different portions, or corresponds to a plurality of different faces.
[00142] Furthermore, the order in which connection information, vertex information, and attribute information is stored is not limited to the example described above, and a storage order that differs from the above may be used.
[00143] Figure 10 is a conceptual diagram illustrating another example of a bitstream configuration according to the present embodiment. In the example, a plurality of files is included in a bitstream, and connection information, vertex information, and attribute information are respectively stored in different files. Although a file that includes connection information... Petition 870250090886, dated 06 / 10 / 2025, pages 188 / 283 26 / 104 connection, a file that includes vertex information and a file that includes attribute information are illustrated here, the storage formats are not limited to this example. For example, two types of information, including connection information, vertex information and attribute information, can be included in one file and the remaining type of information can be included in another file.
[00144] Alternatively, the information portions can be stored by dividing them into a larger number of files. For example, a plurality of connection information portions can be stored in a plurality of files, a plurality of vertex information portions can be stored in a plurality of files, and a plurality of attribute information portions can be stored in a plurality of files. The plurality of portions can correspond to a plurality of temporally different portions, correspond to a plurality of spatially different portions, or correspond to a plurality of different faces.
[00145] Furthermore, the order in which connection information, vertex information, and attribute information is stored is not limited to the example described above, and a storage order that differs from the above may be used.
[00146] Figure 11 is a conceptual diagram that illustrates another example of a bitstream configuration according to the present embodiment. In the example, a bitstream consists of a plurality of separable bit substreams, and connection information, vertex information, and attribute information are stored in different bit substreams, respectively.
[00147] Although a bit substream that includes connection information, a bit substream that includes vertex information, and a bit substream that includes attribute information are illustrated here. Petition 870250090886, dated 06 / 10 / 2025, pp. 189 / 283 27 / 104 of the storage formats are not limited to this example.
[00148] For example, two types of information, including connection information, vertex information, and attribute information, can be included in one bit substream, and the remaining information type can be included in another bit substream. Specifically, attribute information, such as a two-dimensional image, can be stored in a bit substream conforming to an image encoding system, separately from a bit substream of connection information and vertex information.
[00149] Furthermore, each bit substream can include a plurality of files. Moreover, a plurality of connection information portions can be stored in a plurality of files, a plurality of vertex information portions can be stored in a plurality of files, and a plurality of attribute information portions can be stored in a plurality of files.
[00150] Furthermore, the storage order for connection information, vertex information, and attribute information is not limited to the example illustrated in Figure 9, Figure 10, and Figure 11, and a storage order that differs from this example can be used. For example, vertex information, connection information, and attribute information can be stored in a bitstream in this order. Alternatively, in an order other than this one, for example, 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; and attribute information, vertex information, and connection information, these portions of information can be stored in a Petition 870250090886, dated 06 / 10 / 2025, pages 190 / 283 28 / 104 bit stream.
[00151] Furthermore, each of the connection information, vertex information, and attribute information can be divided into a plurality of data items, and the plurality of data items can be stored in a bit stream in a periodic order or in a random order. Specific Example
[00152] Figure 12 is a block diagram illustrating a specific example of the encoding / decoding system according to the present embodiment. In Figure 12, the encoding / decoding system includes the three-dimensional data encoding system 110, the three-dimensional data decoding system 210, and the external connector 310.
[00153] The three-dimensional data encoding system 110 includes the controller 111, the input / output processor 112, the three-dimensional data encoder 113, the three-dimensional data generator 115, and the system multiplexer 114. The three-dimensional data decoding system 210 includes the controller 211, the input / output processor 212, the three-dimensional data decoder 213, the system demultiplexer 214, the presenter 215, and the user interface 216.
[00154] In the three-dimensional data encoding system 110, sensor data is entered from a sensor terminal to the three-dimensional data generator 115. The three-dimensional data generator 115 generates three-dimensional data, which are point cloud data, mesh data or similar, from the sensor data and inserts the three-dimensional data into the three-dimensional data encoder 113.
[00155] For example, the three-dimensional data generator 115 generates vertex information and generates connection information and attribute information which correspond to the vertex information. The generator Petition 870250090886, dated 06 / 10 / 2025, pp. 191 / 283 29 / 104 Three-dimensional data generator 115 can process vertex information when generating connection information and attribute information. For example, the three-dimensional data generator 115 can reduce a quantity of data by excluding overlapping vertices or transform vertex information (position displacement, rotation, normalization, or similar). Additionally, the three-dimensional data generator 115 can render attribute information.
[00156] Although the three-dimensional data generator 115 is a constituent element of the three-dimensional data encoding system 110 in Figure 12, the three-dimensional data generator 115 can be placed externally, independently of the three-dimensional data encoding system 110.
[00157] For example, a sensor terminal that provides sensor data to generate three-dimensional data can be a moving object, such as a car, a flying object, such as an airplane, a mobile terminal, a camera, or similar. Alternatively, a range sensor, such as a LIDAR, a millimeter-wave radar, an infrared sensor or a rangefinder, a stereo camera, a combination of a plurality of monocular cameras, or similar, can be used as the sensor terminal.
[00158] Sensor data may be a distance (position) to an object, a monocular camera image, a stereo camera image, a color, a reflectance, an attitude or orientation of a sensor, a gyroscope, a detection position (GPS or elevation information), a speed, an acceleration, a time of day, air temperature, air pressure, humidity, magnetism, or similar.
[00159] The three-dimensional data encoder 113 corresponds to the encoding device 100 illustrated in Figure 5 and similar devices. For example, the three-dimensional data encoder 113 encodes data Petition 870250090886, dated 06 / 10 / 2025, pp. 192 / 283 30 / 104 three-dimensional and generates the encoded data. In addition, the three-dimensional data encoder 113 generates control information when encoding the three-dimensional data. Furthermore, the three-dimensional data encoder 113 inserts the encoded data into the system multiplexer 114, along with the control information.
[00160] The three-dimensional data encoding system can be an encoding system that uses geometry or an encoding system that uses a video codec. In this case, an encoding system that uses geometry can also be expressed as a geometry-based encoding system. An encoding system that uses a video codec can also be expressed as a video-based encoding system.
[00161] The system multiplexer 114 multiplexes the encoded data and control information entered by the three-dimensional data encoder 113 and generates multiplexed data using a prescribed multiplexing system. The system multiplexer 114 can multiplex other media, such as video, audio, subtitles, application data or document files, reference time information or similar, along with the encoded data and control information of three-dimensional data. Furthermore, the system multiplexer 114 can multiplex relevant attribute information and sensor fingers or three-dimensional fingers.
[00162] For example, multiplexed fingers have a storage file format, a transmission file format, or similar. ISOBMFF or an ISOBMFF-based system can be used as a storage system or a transmission system. Alternatively, MPEG-DASH, MMT, MPEG-2 TS, RTP, or similar systems can be used.
[00163] In addition, the multiplexed fingers are emitted as a transmission signal by the processor of the 112 pere o Petition 870250090886, dated 06 / 10 / 2025, pages 193 / 283 31 / 104 external connector 310. Multiplexed data can be transmitted as a broadcast signal in a wired or wireless mode. Alternatively, multiplexed data is stored in internal memory or on a storage device. Multiplexed data can be transmitted over the internet to a cloud server or stored on an external storage device.
[00164] For example, the transmission or accumulation of multiplexed data is performed by a method according to a transmission or accumulation medium, such as transmission or communication. As a communication protocol, http, ftp, TCP, UDP, IP, or a combination thereof may be used. In addition, a pull-type communication scheme or a push-type communication scheme may be used.
[00165] Ethernet (registered trademark), USB, RS-232C, HDMI (registered trademark), a coaxial cable or similar may be used for wired transmission. Additionally, 3GPP (registered trademark), 3G / 4G / 5G as specified by IEEE, a wireless LAN, Bluetooth, or millimeter wave may be used for wireless transmission. Furthermore, for example, DVB-T2, DVB-S2, DVB-C2, ATSC 3.0, ISDB-S3, or similar may be used as a transmission system.
[00166] Note that sensor data can be entered into the three-dimensional data generator 115 or the system multiplexer 114. Furthermore, the three-dimensional data or the encoded data can be output as is, as a transmission signal to the external connector 310, via the input / output processor 112. The transmission signal emitted by the three-dimensional data encoding system 110 is entered into the three-dimensional data decoding system 210, via the external connector 310.
[00167] In addition, each operation of the encoding system of Petition 870250090886, dated 06 / 10 / 2025, pp. 194 / 283 32 / 104 three-dimensional data 110 can be controlled by controller 111, which executes application programs.
[00168] In the three-dimensional data decoding system 210, a transmission signal is fed into the input / output processor 212. The input / output processor 212 decodes multiplexed data that has either a file format or a packet format of the transmission signal and feeds the multiplexed data into the system demultiplexer 214. The system demultiplexer 214 acquires encoded data and control information from the multiplexed data and feeds the encoded data and control information into the three-dimensional data decoder 213. The system demultiplexer 214 can extract other media, reference time information, or similar information from the multiplexed data.
[00169] The three-dimensional data decoder 213 corresponds to the decoding device 200 illustrated in Figure 7 and similar devices. For example, the three-dimensional data decoder 213 decodes three-dimensional data from data encoded based on a previously specified encoding system. Subsequently, the three-dimensional data is presented to a user by the presenter 215.
[00170] In addition, further information, such as sensor data, can be entered into the presenter 215. The presenter 215 can display three-dimensional data based on the additional information. Furthermore, a user instruction can be entered into the user interface 216 of a user terminal. Moreover, the presenter 215 can display three-dimensional data based on the entered instruction.
[00171] Note that the input / output processor 212 can acquire three-dimensional data and encoded data from the external connector 310.
[00172] In addition, each operation of the decoding system of Petition 870250090886, dated 06 / 10 / 2025, pages 195 / 283 33 / 104 three-dimensional data 210 can be controlled by controller 211, which executes application programs.
[00173] Figure 13 is a conceptual diagram illustrating an example of a point cloud data configuration according to the present embodiment. Point cloud data refers to data from a point cloud that indicates a three-dimensional object.
[00174] Specifically, a point cloud consists of a plurality of points and has position information which indicates a three-dimensional coordinate position of each point and attribute information which indicates an attribute of each point. Position information is also expressed as geometry.
[00175] For example, a type of attribute information can be a color, a reflectance, or similar. Attribute information relating to one type can be associated with a point, attribute information relating to a plurality of different types can be associated with a point, or attribute information that has a plurality of values relating to the same type can be associated with a point.
[00176] Figure 14 is a conceptual diagram illustrating an example of a point cloud data file according to the present embodiment. The example is a case where position information items and attribute information items have a one-to-one correspondence, and the example indicates position information and attribute information for a number N of points which constitute the point cloud data. In this example, position information is information that indicates a three-dimensional coordinate position by three geometric axes x, y, and z, and attribute information is information that indicates a color by RGB. As a representative data file for point cloud data, a PLY file or similar can be used. Petition 870250090886, dated 06 / 10 / 2025, pages 196 / 283 34 / 104
[00177] Figure 15 is a conceptual diagram illustrating an example of mesh data configuration according to the present embodiment. Mesh data are data used in CG (computer graphics) or similar applications and are data of a three-dimensional mesh which represents a three-dimensional shape of an object by a plurality of faces. Each face is also expressed as a polygon and has a polygonal shape, such as a triangle or a quadrilateral.
[00178] Specifically, in addition to the plurality of points which constitute a point cloud, a three-dimensional mesh is made up of a plurality of edges and a plurality of faces. Each point is also expressed as a vertex or a position. Each edge corresponds to a line segment which connects two vertices. Each face corresponds to an area bounded by three or more edges.
[00179] In addition, a three-dimensional mesh has position information that indicates the three-dimensional coordinate positions of vertices. Position information is also expressed as vertex information or geometry. Furthermore, a three-dimensional mesh has connection information that indicates a relationship between a plurality of vertices that constitutes an edge or a face. Connection information is also expressed as connectivity. In addition, a three-dimensional mesh has attribute information that indicates an attribute in relation to a vertex, an edge, or a face. Attribute information in a three-dimensional mesh is also expressed as a texture.
[00180] For example, attribute information can indicate a color, a reflectance, or a normal vector with respect to a vertex, an edge, or a face. An orientation of a normal vector can express the front and back of a face.
[00181] An object file or similar can be used as Petition 870250090886, dated 06 / 10 / 2025, pp. 197 / 283 35 / 104 is a mesh data file format.
[00182] Figure 16 is a conceptual diagram illustrating an example of a data file for mesh data according to the present embodiment. In the example, a data file includes position information portions G(1) to G(N) and attribute information portions A1(1) to A1(N) of a number N of vertices which constitute a three-dimensional mesh. Furthermore, in the example, a number M of attribute information portions A2(1) to A2(M) are included. An attribute information item need not correspond one-to-one to a vertex and need not correspond one-to-one to a face. Furthermore, attribute information does not need to exist.
[00183] Connection information is indicated by a combination of vertex indices, n [1, 3, 4] indicates a face of a triangle consisting of three vertices n = 1, n = 3 and n = 4. In addition, m [2, 4, 6] indicates that portions of attribute information m = 2, m = 4 and m = 6 respectively correspond to the three vertices.
[00184] Furthermore, substantive content of attribute information can be described in a separate file. Moreover, a pointer relative to the content can be associated with a vertex, a face, or similar. For example, attribute information indicating an image relative to a face can be stored in a two-dimensional attribute map file. Additionally, an attribute map filename and a two-dimensional coordinate value in the attribute map can be described in attribute information portions A2(1) to A2(M). The methods for assigning attribute information relative to a face are not limited to these methods, and any type of method can be used.
[00185] Figure 17 is a conceptual diagram illustrating a type of three-dimensional data according to the present embodiment. Point cloud data and mesh data can indicate an object is Petition 870250090886, dated 06 / 10 / 2025, pp. 198 / 283 36 / 104 static or dynamic object. 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 can correspond to three-dimensional data relative to an arbitrary point in time.
[00186] For example, point cloud data relative to an arbitrary time point can be expressed as a PCC frame. Furthermore, mesh data relative to an arbitrary time point can be expressed as a mesh frame. Moreover, a PCC frame and a mesh frame can simply be expressed as a frame.
[00187] Furthermore, an object's area can be limited to a certain range in a manner similar to ordinary video data, or it doesn't need to be limited in a manner similar to map data. Moreover, a density of points or faces can be defined in several ways. Sparse point cloud data or sparse mesh data can be used, or dense point cloud data or dense mesh data can be used.
[00188] Next, the encoding and decoding of a point cloud or a three-dimensional mesh will be described. A device, processing, or syntax for encoding and decoding vertex information of a three-dimensional mesh, according to the present description, can be applied to the encoding and decoding of a point cloud. A device, processing, or syntax for encoding and decoding a point cloud according to the present description can be applied to the encoding and decoding of vertex information of a three-dimensional mesh.
[00189] In addition, a device, processing, or syntax for encoding and decoding attribute information of a point cloud, according to the present description, may be applied to encoding and decoding connection information or information of Petition 870250090886, dated 06 / 10 / 2025, pp. 199 / 283 37 / 104 attribute of a three-dimensional mesh. Furthermore, a device, processing, or syntax for encoding and decoding connection information or attribute information of a three-dimensional mesh, according to the present description, can be applied to the encoding and decoding of attribute information of a point cloud.
[00190] Furthermore, at least some of the processing can be shared between the encoding and decoding of point cloud data and the encoding and decoding of mesh data. Consequently, the sizes of circuits and software programs can be reduced.
[00191] Figure 18 is a block diagram illustrating an example configuration of the three-dimensional data encoder 113, according to the present embodiment. In this example, the three-dimensional data encoder 113 includes the vertex information encoder 121, the attribute information encoder 122, the metadata encoder 123, and the multiplexer 124. The vertex information encoder 121, the attribute information encoder 122, and the multiplexer 124 may correspond to the vertex information encoder 101, the attribute information encoder 103, the postprocessor 105, and similar encoders illustrated in Figure 6.
[00192] Furthermore, in this example, the three-dimensional data encoder 113 encodes three-dimensional data according to a geometry-based encoding system. Encoding according to the geometry-based encoding system takes into account a three-dimensional structure. Moreover, in encoding according to the geometry-based encoding system, attribute information is encoded using configuration information obtained during vertex information encoding.
[00193] Specifically, first, vertex information, attribute information, and metadata included in three-dimensional data Petition 870250090886, dated 06 / 10 / 2025, pages 200 / 283 38 / 104 sional data generated from sensor data are, respectively, inserted into the vertex information encoder 121, the attribute information encoder 122, and the metadata encoder 123. In this case, the connection information included in three-dimensional data can be treated similarly to attribute information. Furthermore, in the case of point cloud data, position information can be treated as vertex information.
[00194] Vertex information encoder 121 encodes vertex information into compressed vertex information and sends the compressed vertex information to multiplexer 124 as encoded data. Additionally, vertex information encoder 121 generates metadata from the compressed vertex information and sends the metadata to multiplexer 124. Furthermore, vertex information encoder 121 generates configuration information and sends the configuration information to attribute information encoder 122.
[00195] The attribute information encoder 122 encodes attribute information into compressed attribute information using configuration information generated by the vertex information encoder 121 and outputs the compressed attribute information to the multiplexer 124 as encoded data. Additionally, the attribute information encoder 122 generates metadata from the compressed attribute information and outputs the metadata to the multiplexer 124.
[00196] Metadata encoder 123 encodes compressible metadata into compressed metadata and outputs the compressed metadata to multiplexer 124 as encoded data. The metadata encoded by metadata encoder 123 can be used to encode vertex information and attribute information. Petition 870250090886, dated 06 / 10 / 2025, pages 201 / 283 39 / 104
[00197] The 124 multiplexer multiplexes the compressed vertex information, the metadata of the compressed vertex information, the compressed attribute information, the metadata of the compressed attribute information, and the compressed metadata into a bitstream. Furthermore, the 124 multiplexer outputs the bitstream to a system layer.
[00198] Figure 19 is a block diagram illustrating an example configuration of the three-dimensional data decoder 213 according to the present embodiment. In this example, the three-dimensional data decoder 213 includes the vertex information decoder 221, the attribute information decoder 222, the metadata decoder 223, and the demultiplexer 224. The vertex information decoder 221, the attribute information decoder 222, and the demultiplexer 224 may correspond to the vertex information decoder 201, the attribute information decoder 203, the preprocessor 204, and similar ones illustrated in Figure 8.
[00199] Furthermore, in this example, the three-dimensional data decoder 213 decodes three-dimensional data according to a geometry-based encoding system. Decoding according to the geometry-based encoding system takes into account a three-dimensional structure. Moreover, in decoding according to the geometry-based encoding system, attribute information is decoded using configuration information obtained during the decoding of vertex information.
[00200] Specifically, first, a bitstream is inserted from a system layer into the 224 demultiplexer. The 224 demultiplexer separates the compressed vertex information, the metadata of the compressed vertex information, the compressed attribute information, the metadata of the compressed attribute information, and the Petition 870250090886, dated 06 / 10 / 2025, pages 202 / 283 40 / 104 compressed bitstream metadata. Compressed vertex information and compressed vertex information metadata are inserted into vertex information decoder 221. Compressed attribute information and compressed attribute information metadata are inserted into attribute information decoder 222. Metadata is inserted into metadata decoder 223.
[00201] Vertex Information Decoder 221 decodes vertex information from compressed vertex information using metadata from the compressed vertex information. Additionally, Vertex Information Decoder 221 generates configuration information and sends this configuration information to Attribute Information Decoder 222. Attribute Information Decoder 222 decodes attribute information from compressed attribute information using the configuration information generated by Vertex Information Decoder 221 and the metadata from the compressed attribute information. Metadata Decoder 223 decodes metadata from compressed metadata. The metadata decoded by Metadata Decoder 223 can be used to decode vertex information and decode attribute information.
[00202] Subsequently, vertex information, attribute information, and metadata are output from the three-dimensional data decoder 213 as three-dimensional data. For example, metadata is metadata of vertex information and attribute information and can be used in an application program.
[00203] Figure 20 is a block diagram illustrating another example of configuring the three-dimensional data encoder 113 according to the present embodiment. In this example, the three-dimensional data encoder 113 includes the vertex image generator. Petition 870250090886, dated 06 / 10 / 2025, pages 203 / 283 41 / 104 131, attribute image generator 132, metadata generator 133, video encoder 134, metadata encoder 123, and multiplexer 124. Vertex image generator 131, attribute image generator 132, and video encoder 134 may correspond to vertex information encoder 101, attribute information encoder 103, and similar encoders illustrated in Figure 6.
[00204] Furthermore, in this example, the three-dimensional data encoder 113 encodes three-dimensional data according to a video-based encoding system. In encoding according to the video-based encoding system, a plurality of two-dimensional images is generated from three-dimensional data, and the plurality of two-dimensional images is encoded according to a video encoding system. In this case, the video encoding system can be HEVC (High Efficiency Video Coding), WC (Versatile Video Coding), or similar.
[00205] Specifically, first, vertex information and attribute information included in the three-dimensional data generated from sensor data are entered into metadata generator 133. Furthermore, vertex information and attribute information are respectively entered into vertex image generator 131 and attribute image generator 132. Moreover, metadata included in the three-dimensional data is entered into metadata encoder 123. In this case, connection information included in the three-dimensional data can be treated in a similar way to attribute information. Additionally, in the case of point cloud data, position information can be treated as vertex information.
[00206] The 133 metadata generator generates map information from a plurality of two-dimensional images of vertex information and attribute information. Furthermore, the metadata generator Petition 870250090886, dated 06 / 10 / 2025, pages 204 / 283 42 / 104 133 inserts the map information into the vertex image generator 131, the attribute image generator 132, and the metadata encoder 123.
[00207] The vertex image generator 131 generates a vertex image based on vertex information and map information and inserts the vertex image into the video encoder 134. The attribute image generator 132 generates an attribute image based on attribute information and map information and inserts the attribute image into the video encoder 134.
[00208] Video encoder 134 respectively encodes the vertex image and the attribute image into compressed vertex information and compressed attribute information, according to the video coding system, and outputs the compressed vertex information and the compressed attribute information to multiplexer 124 as encoded data. In addition, video encoder 134 generates metadata from the compressed vertex information and metadata from the compressed attribute information and outputs the metadata portions to multiplexer 124.
[00209] Metadata encoder 123 encodes compressible metadata into compressed metadata and outputs the compressed metadata to multiplexer 124 as encoded data. Compressible metadata includes map information. In addition, metadata encoded by metadata encoder 123 can be used to encode vertex information and to encode attribute information.
[00210] The 124 multiplexer multiplexes the compressed vertex information, the metadata of the compressed vertex information, the compressed attribute information, the metadata of the compressed attribute information, and the compressed metadata into a bitstream. Furthermore, the 124 multiplexer inserts the bitstream into Petition 870250090886, dated 06 / 10 / 2025, pages 205 / 283 43 / 104 a system layer.
[00211] Figure 21 is a block diagram illustrating another example of a configuration of the three-dimensional data decoder 213, according to the present embodiment. In this example, the three-dimensional data decoder 213 includes the vertex information generator 231, the attribute information generator 232, the video decoder 234, the metadata decoder 223, and the demultiplexer 224. The vertex information generator 231, the attribute information generator 232, and the video decoder 234 may correspond to the vertex information decoder 201, the attribute information decoder 203, and similar ones illustrated in Figure 8.
[00212] Furthermore, in this example, the three-dimensional data decoder 213 decodes three-dimensional data according to a video-based encoding system. In decoding according to the video-based encoding system, a plurality of two-dimensional images is decoded according to a video encoding system, and three-dimensional data is generated from the plurality of two-dimensional images. In this case, the video encoding system can be HEVC (High Efficiency Video Coding), VVC (Versatile Video Coding), or similar.
[00213] Specifically, first, a bitstream is fed from a system layer into demultiplexer 224. Demultiplexer 224 separates the compressed vertex information, the metadata of the compressed vertex information, the compressed attribute information, the metadata of the compressed attribute information, and the compressed metadata from the bitstream. The compressed vertex information, the metadata of the compressed vertex information, the compressed attribute information, and the metadata of the compressed attribute information are fed into the video decoder. Petition 870250090886, dated 06 / 10 / 2025, pages 206 / 283 44 / 104 234. The compressed metadata is inserted into the metadata decoder 223.
[00214] Video decoder 234 decodes a vertex image according to the video coding system. In doing so, video decoder 234 decodes the vertex image from compressed vertex information, using the metadata of the compressed vertex information. Furthermore, video decoder 234 inserts the vertex image into vertex information generator 231. Moreover, video decoder 234 decodes an attribute image according to the video coding system. In doing so, video decoder 234 decodes the attribute image from compressed attribute information, using the metadata of the compressed attribute information. Furthermore, video decoder 234 inserts the attribute image into attribute information generator 232.
[00215] Metadata decoder 223 decodes metadata from compressed metadata. The metadata decoded by metadata decoder 223 includes map information to be used to generate vertex information and to generate attribute information. In addition, the metadata decoded by metadata decoder 223 can be used to decode the vertex image and to decode the attribute image.
[00216] Vertex information generator 231 reproduces vertex information from the vertex image according to the map information included in the metadata decoded by metadata decoder 223. Attribute information generator 232 reproduces attribute information from the attribute image according to the map information included in the metadata decoded by metadata decoder 223.
[00217] Subsequently, the vertex information, the information Petition 870250090886, dated 06 / 10 / 2025, pages 207 / 283 45 / 104 attribute information and metadata are output from the three-dimensional data decoder 213 as three-dimensional data. For example, metadata includes vertex information metadata and attribute information and can be used in an application program.
[00218] Figure 22 is a conceptual diagram illustrating a specific example of coding processing according to the present embodiment. Figure 22 illustrates the three-dimensional data encoder 113 and the description encoder 148. In this example, the three-dimensional data encoder 113 includes the two-dimensional data encoder 141 and the mesh data encoder 142. The two-dimensional data encoder 141 includes the texture encoder 143. The mesh data encoder 142 includes the vertex information encoder 144 and the connection information encoder 145.
[00219] Vertex information encoder 144, connection information encoder 145, and texture encoder 143 may correspond to vertex information encoder 101, connection information encoder 102, attribute information encoder 103, and similar encoders illustrated in Figure 6.
[00220] For example, the two-dimensional data encoder 141 operates as a texture encoder 143 and generates a texture file by encoding a texture that matches the attribute information as two-dimensional data, according to an image encoding system or a video encoding system.
[00221] In addition, mesh data encoder 142 operates as a vertex information encoder 144 and a connection information encoder 145 and generates a mesh file encoding vertex information and connection information. Mesh data encoder 142 can also encode mapping information relative to a texture. The encoded mapping information can be included in a mesh file. Petition 870250090886, dated 06 / 10 / 2025, pages 208 / 283 46 / 104
[00222] In addition, description encoder 148 generates a description file by encoding a description that corresponds to metadata, such as text data. Description encoder 148 can encode a description at the system layer. For example, description encoder 148 can be included in system multiplexer 114 illustrated in Figure 12.
[00223] Due to the operation described above, a bitstream that includes a texture file, a mesh file, and a description file is generated. The files can be multiplexed into the bitstream in a file format such as glTF (graphics language broadcast format) or USD (universal scene description).
[00224] Note that the three-dimensional data encoder 113 may include two mesh data encoders like the mesh data encoder 142. For example, one mesh data encoder encodes vertex information and connection information of a static three-dimensional mesh, and the other mesh data encoder encodes vertex information and connection information of a dynamic three-dimensional mesh.
[00225] In addition, two mesh files can be included in the bitstream in order to correspond to three-dimensional meshes. For example, one mesh file corresponds to the static three-dimensional mesh and the other mesh file corresponds to the dynamic three-dimensional mesh.
[00226] Furthermore, the static three-dimensional mesh can be an intra-frame three-dimensional mesh which is encoded using intraprediction, and the dynamic three-dimensional mesh can be an inter-frame three-dimensional mesh which is encoded using interprediction. Additionally, as information from the dynamic three-dimensional mesh, difference information between vertex information or connection information from the intra-frame three-dimensional mesh and vertex information Petition 870250090886, dated 06 / 10 / 2025, pages 209 / 283 47 / 104 tice or inter-frame three-dimensional mesh connection information can be used.
[00227] Figure 23 is a conceptual diagram illustrating a specific example of decoding processing according to the present embodiment. Figure 23 illustrates the three-dimensional data decoder 213, the description decoder 248, and the presenter 247. In this example, the three-dimensional data decoder 213 includes the two-dimensional data decoder 241, the mesh data decoder 242, and the mesh reconstructor 246. The two-dimensional data decoder 241 includes the texture decoder 243. The mesh data decoder 242 includes the vertex information decoder 244 and the connection information decoder 245.
[00228] 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, the postprocessor 205, and similar devices illustrated in Figure 8. The presenter 247 may correspond to the presenter 215 and similar devices illustrated in Figure 12.
[00229] For example, the two-dimensional data decoder 241 operates as a texture decoder 243 and decodes a texture that matches the attribute information of a texture file as two-dimensional data, according to an image coding system or a video coding system.
[00230] In addition, mesh data decoder 242 operates as a vertex information decoder 244 and a connection information decoder 245 and decodes vertex information and connection information from a mesh file. The decoder of Petition 870250090886, dated 06 / 10 / 2025, pages 210 / 283 48 / 104 mesh data 242 can still decode mapping information in relation to a texture from the mesh file.
[00231] Furthermore, description decoder 248 decodes a description that corresponds to metadata, such as text data, from a description file. Description decoder 248 can decode a description at the system layer. For example, description decoder 248 can be included in system demultiplexer 214 illustrated in Figure 12.
[00232] Mesh reconstructor 246 reconstructs a three-dimensional mesh of vertex information, connection information, and a texture, according to a description. Presenter 247 renders and outputs the three-dimensional mesh according to the description.
[00233] Due to the operation described above, a three-dimensional mesh is reconstructed and output from a bitstream that includes a texture file, a mesh file, and a description file.
[00234] Note that the three-dimensional data decoder 213 may include two mesh data decoders like the mesh data decoder 242. For example, one mesh data decoder decodes vertex information and connection information from a static three-dimensional mesh, and the other mesh data decoder decodes vertex information and connection information from a dynamic three-dimensional mesh.
[00235] In addition, two mesh files can be included in the bitstream in order to correspond to three-dimensional meshes. For example, one mesh file corresponds to the static three-dimensional mesh and the other mesh file corresponds to the dynamic three-dimensional mesh.
[00236] Furthermore, the static three-dimensional mesh can be an intraframe three-dimensional mesh which is encoded using intraprediction, and the dynamic three-dimensional mesh can be a tri- Petition 870250090886, dated 06 / 10 / 2025, pages 211 / 283 49 / 104 dimensional interframe which is encoded using interprediction. Furthermore, as dynamic three-dimensional mesh information, difference information between the vertex information or connection information of the intra-three-dimensional mesh and the vertex information or connection information of the inter-three-dimensional mesh can be used.
[00237] A dynamic three-dimensional mesh coding system can be called DMC (dynamic mesh coding). Furthermore, a video-based dynamic three-dimensional mesh coding system can be called VDMC (video-based dynamic mesh coding).
[00238] A point cloud coding system may be called PCC (point cloud compression). A video-based point cloud coding system may be called V-PCC (video-based point cloud compression). Furthermore, a geometry-based point cloud coding system may be called G-PCC (geometry-based point cloud compression).
[00239] Implementation Example
[001] Figure 24 is a block diagram illustrating an example of the implementation of encoding device 100 according to the present embodiment. Encoding device 100 includes circuit 151 and memory 152. For example, a plurality of constituent elements of encoding device 100 illustrated in Figure 5 and similar ones are implemented by circuit 151 and memory 152 illustrated in Figure 24.
[00240] Circuit 151 is a circuit that performs information processing and is capable of accessing memory 152. For example, circuit 151 is a dedicated or general-purpose electrical circuit that encodes a three-dimensional mesh. Circuit 151 can be a Petition 870250090886, dated 06 / 10 / 2025, pp. 212 / 283 50 / 104 processor, as well as a CPU. Alternatively, circuit 151 may be a set of a plurality of electrical circuits.
[00241] Memory 152 is a dedicated or general-purpose memory that stores information used by circuit 151 to encode a three-dimensional mesh. Memory 152 can be an electrical circuit and can be connected to circuit 151. Furthermore, memory 152 can be included within circuit 151. Alternatively, memory 152 can be an assembly of multiple electrical circuits. Moreover, memory 152 can be a magnetic disk, an optical disk, or similar, or can be expressed as storage, recording media, or similar. Additionally, memory 152 can be non-volatile or volatile memory.
[00242] For example, memory 152 can store a three-dimensional mesh or a bit stream. Additionally, memory 152 can store a program used by circuit 151 to encode a three-dimensional mesh.
[00243] Note that, in encoding device 100, the entire plurality of constituent elements illustrated in Figure 5 and similar figures do not need to be implemented, and the entire plurality of processing steps described herein do not need to be executed. A portion of the plurality of constituent elements illustrated in Figure 5 and similar figures may be included in another device, and a portion of the plurality of processing steps described herein may be executed by another device. Furthermore, a plurality of constituent elements, according to the present description, may optionally be combined and implemented, or a plurality of processing steps, according to the present description, may optionally be combined and executed in encoding device 100.
[00244] Figure 25 is a block diagram illustrating an example implementation of the 200 decoding device according to Petition 870250090886, dated 06 / 10 / 2025, pages 213 / 283 51 / 104 with the present embodiment. The decoding device 200 includes circuit 251 and memory 252. For example, a plurality of constituent elements of the decoding device 200 illustrated in Figure 7 and similar ones are implemented by circuit 251 and memory 252 illustrated in Figure 25.
[00245] Circuit 251 is a circuit that performs information processing and is capable of accessing memory 252. For example, circuit 251 is a dedicated or general-purpose electrical circuit that decodes a three-dimensional mesh. Circuit 251 can be a processor, as well as a CPU. Alternatively, circuit 251 can be an assembly of a plurality of electrical circuits.
[00246] Memory 252 is a dedicated or general-purpose memory that stores information used by circuit 251 to decode a three-dimensional mesh. Memory 252 can be an electrical circuit and can be connected to circuit 251. Furthermore, memory 252 can be included within circuit 251. Alternatively, memory 252 can be an assembly of multiple electrical circuits. Moreover, memory 252 can be a magnetic disk, an optical disk, or similar, or can be expressed as storage, recording media, or similar. Additionally, memory 252 can be non-volatile or volatile memory.
[00247] For example, memory 252 can store a three-dimensional mesh or a bit stream. Additionally, memory 252 can store a program used by circuit 251 to decode a three-dimensional mesh.
[00248] Note that, in decoding device 200, the entire plurality of constituent elements illustrated in Figure 7 and similar ones do not need to be implemented, and the entire plurality of processing steps described here do not need to be executed. A portion of the plurality of constituent elements illustrated in Figure 7 and Petition 870250090886, dated 06 / 10 / 2025, pages 214 / 283 52 / 104 similar devices may be included in another device, and a portion of the plurality of processing steps described herein may be performed by another device. Furthermore, a plurality of constituent elements, according to the present description, may optionally be combined and implemented, or a plurality of processing steps, according to the present description, may optionally be combined and performed in the decoding device 200.
[00249] An encoding method and a decoding method, including steps performed by each constituent element of the encoding device 100 and the decoding device 200, according to the present description, may be performed by any device or system. For example, part or all of the encoding method and the decoding method may be performed by a computer that includes a processor, memory, an input / output circuit and the like. In doing so, the encoding method and the decoding method may be performed by having the computer run a program that enables the computer to perform the encoding method and the decoding method.
[00250] In addition, a program or bitstream can be recorded on a non-transient, computer-readable recording medium, such as a CD-ROM.
[00251] An example of a program might be a bitstream. For example, a bitstream that includes an encoded three-dimensional mesh includes a syntax element that allows the decoding device 200 to decode the three-dimensional mesh. Furthermore, the bitstream causes the decoding device 200 to decode the three-dimensional mesh according to the syntax element included in the bitstream. Therefore, a bitstream can perform a function similar to that of a program.
[00252] The bit stream described above may be a co-bit stream Petition 870250090886, dated 06 / 10 / 2025, pages 215 / 283 53 / 104 encoded, including a three-dimensional encoded mesh, or a multiplexed bitstream, including a three-dimensional encoded mesh and other information.
[00253] Furthermore, each constituent element of the encoding device 100 and the decoding device 200 may consist of dedicated hardware, general-purpose hardware which executes the program or similar described above, or a combination thereof. Moreover, the general-purpose hardware may consist of a memory in which a program is stored, a general-purpose processor which reads the program from memory and executes the program, and similar devices. In this case, the memory may be a semiconductor memory, a hard disk or similar, and the general-purpose processor may be a CPU or similar.
[00254] Furthermore, dedicated hardware can consist of memory, a dedicated processor, and similar components. For example, the dedicated processor can perform the encoding method and the decoding method, referring to memory for data storage.
[00255] Furthermore, as described above, the respective constituent elements of the encoding device 100 and the decoding device 200 may be electrical circuits. The electrical circuits may constitute an electrical circuit as a whole or may be different electrical circuits, respectively. Moreover, the electrical circuits may correspond to dedicated hardware or general-purpose hardware which executes the program or similar described above. Furthermore, the encoding device 100 and the decoding device 200 may be implemented as integrated circuits.
[00256] Furthermore, encoding device 100 can be a transmitting device which transmits a three-dimensional mesh. Decoding device 200 can be a receiving device or Petition 870250090886, dated 06 / 10 / 2025, pp. 216 / 283 54 / 104 which receives a three-dimensional mesh. Shift encoding and decoding
[00257] The following terms will be used here as examples. (1) Image
[00258] An image is a unit of data consisting of a set of pixels. An image includes a picture or blocks, which are smaller than a picture. Images include a still image as well as a moving image. (2) Image
[00259] An image is a unit of image processing that consists of a set of pixels. An image may also be called a frame or field. (3) Block
[00260] A block is a processing unit consisting of a set of a given number of pixels. For a block, the terms shown in the following examples are also used. The shapes of blocks are not particularly limited. Examples of blocks may include a rectangular shape of MxN pixels or a square shape of MxM pixels. Examples of blocks may also include a triangular shape, a circular shape, and other shapes. Examples of blocks are as follows. Slice, tile or brick CTU, super block or basic division unit - VPDU, hardware processing division unit - CU, processing block unit, prediction block unit (PU) or orthogonal transformation block unit (TU) - Sub-block (4) Pixel or sample Petition 870250090886, dated 06 / 10 / 2025, pages 217 / 283 55 / 104
[00261] A pixel or sample is the smallest point in an image, that is, the smallest unit. Pixels or samples include not only a pixel at an integer position, but also a pixel at a subpixel position that is generated based on a pixel at an integer position. (5) Pixel value or sample value
[00262] A pixel value or sample value is an inherent value of a pixel. Pixel values or sample values include a luma value, a chroma value, and an RGB gradient level. Pixel values or sample values may also include a depth value or a binary value of 0 or 1. (6) Signal
[00263] A flag indicates one or more bits. A flag is, for example, a parameter or index represented by two or more bits. A flag can indicate not only a value represented by a binary number, but also a value represented by a numeric value other than a binary number. (7) Signal
[00264] A signal is one that is symbolized or encoded to transmit information. Signals include a discrete digital signal and an analog signal that assumes a continuous value. (8) Stream or bit stream
[00265] A stream or bitstream is a sequence of digital data that indicates a flow of digital data. A stream or bitstream can be a single stream or it can consist of a plurality of streams with a plurality of hierarchical layers. A stream or bitstream can be transmitted in serial communication using a single transmission path or it can be transmitted in packet communication using a plurality of transmission paths. (9) Difference Petition 870250090886, dated 06 / 10 / 2025, pp. 218 / 283 56 / 104
[00266] In the case of scalar quantities, a difference may include a simple difference (x - y) and a difference calculation. Differences may include an absolute value of a difference (|x - y|), a squared difference (xA2 - yA2), a square root of a difference ( / (x - y)), a weighted difference (ax - by: a and b are constants) or a displacement difference (x - y + a: a is a displacement). (10) Sum
[00267] In the case of scalar quantities, sums can include a simple sum (x + y) and a sum calculation. Sums include an absolute value sum (|x + y|), a squared sum (xA2 + yA2), a square root sum ( / (x + y)), a weighted sum (ax + by: a and b are constants), and a displacement sum (x + y + a: a is a displacement). (11) “Based on”
[00268] The expression based on something means that something other than that something can be taken into consideration. Furthermore, the term based on can be used in cases where a direct result is obtained or in cases where a result is obtained through a provisional result. (12) “Used” or “using”
[00269] The expression something is used or using something means that something other than something can be taken into consideration. Furthermore, the term used or using can be used in cases where a direct result is obtained or in cases where a result is obtained through an intermediate result. (13) To prohibit, prohibition
[00270] The term prohibit or prohibition can be reformulated as does not allow or does not permit. Furthermore, the expression not being prohibited or being allowed does not always mean obligation. Petition 870250090886, dated 06 / 10 / 2025, pp. 219 / 283 57 / 104 (14) “Limit” or “restriction / restrict / restricted”
[00271] The term limit or restriction / restrict / restricted can be reformulated as does not allow / allows or is not allowed / allowed. Furthermore, the expression being prohibited / forbidden, not being prohibited / forbidden, not being allowed / allowed or being allowed / allowed does not always mean obligation. Moreover, part of something can be prohibited / forbidden quantitatively or qualitatively, or something can be totally prohibited / forbidden quantitatively or qualitatively. (15) Chroma
[00272] Chroma is an adjective represented by the symbols Cb and Cr, specifying that an array of samples or a single sample represents one of two color difference signals related to the primary colors. The term chroma can be used instead of the term chrominance. (16) Luma
[00273] Luma is an adjective represented by the symbol or subscript Y or L, specifying that a sample array or a single sample represents a monochromatic signal related to the primary colors. The term luma can be used instead of the term luminance.
[00274] A system for encoding / decoding this modality will be described below.
[00275] A generic three-dimensional model (also known as a 3D model) represents an object digitally, so that a user can explore it using zoom, pan, and rotation in all three dimensions, while rendering it temporally. One way to construct such a representation is to build a 3D mesh using triangles. The model stores the positions of the vertices of each triangle, the connectivity of the triangle vertices to each other, and the attributes associated with them (such as a normal, UV spots, etc.). Petition 870250090886, dated 06 / 10 / 2025, pages 220 / 283 58 / 104
[00276] Storing all these types of information in an uncompressed form requires a very large storage space, which in turn requires a very large bandwidth for transmission. The triangles that form the mesh often exhibit a repetitive pattern and similar attributes, especially in temporal and spatial proximity. Repetition can be used to formulate an efficient encoding and decoding method for storage and transmission. One such method is Video-Based Dynamic Mesh Coding (V-DMC).
[00277] Figure 26 is a block diagram illustrating another example of an encoding / decoding system configuration according to the present embodiment. As illustrated in Figure 26, the encoding / decoding system includes encoding device 100 and decoding device 200.
[00278] The encoding / decoding system receives a three-dimensional mesh (also called a 3D mesh) that is entered in the form of three-dimensional coordinates (vertex information), connectivity (connection information), and associated attributes (attribute information) of the vertices. Note that the 3D mesh can include not only geometry but also a texture map.
[00279] Encoding device 100 receives the inserted 3D mesh (also called the input 3D mesh or input mesh) in the form of three-dimensional vertex coordinates, connectivity, and associated attributes. Encoding device 100 is responsible for encoding all related information into a stream. The stream may include a single bit stream or a plurality of bit streams.
[00280] Network 300 transmits the stream generated by the encoding device to the decoding device 200. Network 300 can be the Internet, a wide area network (WAN), Petition 870250090886, dated 06 / 10 / 2025, pages 221 / 283 59 / 104 a local area network (LAN) or any combination of these networks. The 300 network is not always limited to a bidirectional communication network. The 300 network can be a unidirectional communication network that transmits terrestrial digital broadcast waves, satellite transmission, or similar. Alternatively, the 300 network can be replaced by a recording medium, such as a Digital Versatile Disc (DVD), a Blu-ray Disc (BD), or similar, on which the stream is recorded.
[00281] The stream is transmitted to decoding device 200 via network 300. Decoding device 200 decodes the bit stream to produce a three-dimensional mesh using the three-dimensional coordinates, connectivity, and associated attributes of the decoded vertices. Decoding device 200 outputs the produced three-dimensional mesh (also called the output 3D mesh or output mesh).
[00282] Figure 27 is a diagram that illustrates another example of the encoding device 100 configuration.
[00283] As illustrated in Figure 27, the encoding device 100 includes the preprocessor 1103 and the compressor 1106.
[00284] The encoding device 100 reads the input mesh 1101 and the attribute map 1102 and passes them to the preprocessor 1103. The preprocessor 1103 processes the input mesh to extract the base mesh 1104 and the offset data 1105. The attribute map 1102, together with the extracted base mesh 1104 and offset data 1105, are passed to the compressor 1106.
[00285] Compressor 1106 compresses base mesh 1104, offset data 1105, and attribute map 1102 to generate bitstream 1107. Compressor 1106 may additionally include metadata 1108 in bitstream 1107 to send supplementary information to the decoding device 200. Petition 870250090886, dated 06 / 10 / 2025, pp. 222 / 283 60 / 104
[00286] Figure 28 is a diagram that illustrates another example of the 200 decoding device configuration.
[00287] As illustrated in Figure 28, the decoding device 200 includes the decompressor 2102 and the post-processor 2106.
[00288] Decoding device 200 reads bitstream 2101 and passes it to decompressor 2102. Decompressor 2102 decompresses base mesh 2103, shift data 2104, and attribute map 2108 from bitstream 2101 and passes them to postprocessor 2106. An example of shift data 2104 are shift vectors.
[00289] Post-processor 2106 processes base mesh 2103 according to displacement data 2104 and attribute map 2108 to produce output mesh 2107. Post-processor 2106 may additionally use metadata information 2105 to produce output mesh 2107.
[00290] Details of the encoding device configuration 100 will be described below.
[00291] Figure 29 is a block diagram illustrating a detailed example of the encoding device 100 configuration.
[00292] As illustrated in Figure 29, the encoding device 100 includes a decipherer 1201, a quantizer 1202, a base mesh encoder 1203, a base mesh decoder 1204, an inverse quantizer 1205, a subdivider 1206, a shift vector calculator 1207, a wavelet transformer 1208, a quantizer 1209, an image packer 1210, a video encoder 1211, a color converter 1212, a video encoder 1213, and a multiplexer 1214.
[00293] The decimator 1201 acquires a mesh that is inserted into the encoding device 100 (equivalent to input mesh 1101) as an original mesh and performs a decimation process (in other words, a thinning process) on the acquired original mesh. Petition 870250090886, dated 06 / 10 / 2025, pages 223 / 283 61 / 104 rida to produce a base mesh. The decimation process consists of excluding (in other words, thinning) some of the vertices included in the original mesh. The decimation process may include a process of altering the positions of at least some of the vertices included in the original mesh or it may include a process of altering the connectivity of at least some of the vertices included in the original mesh. The decimation process will also be simply called decimation.
[00294] The base mesh produced by the decimation process is a mesh that includes fewer vertices than the original mesh. The vertices of the base mesh may be positioned differently from the vertices of the original mesh. Furthermore, the connectivity of the vertices of the base mesh may be different from the connectivity of the vertices of the original mesh. Decimator 1201 provides the produced base mesh to quantizer 1202.
[00295] Quantizer 1202 quantizes the base mesh produced by decimator 1201. Quantizer 1202 provides the quantized base mesh to base mesh encoder 1203.
[00296] The 1203 base mesh encoder encodes the quantized base mesh by the 1202 quantizer into a bit stream (also known as the base mesh bit stream) (in other words, it generates the base mesh bit stream). The 1203 base mesh encoder provides the base mesh bit stream to the 1204 base mesh decoder and the 1214 multiplexer.
[00297] The base mesh decoder 1204 decodes the bit stream of the base mesh provided by the base mesh encoder 1203 to acquire the quantized base mesh. The base mesh decoder 1204 provides the quantized base mesh to the inverse quantizer 1205.
[00298] The inverse quantizer 1205 inversely quantizes the quantized base loop provided by the base loop decoder 1204 pa Petition 870250090886, dated 06 / 10 / 2025, pages 224 / 283 62 / 104 to produce the base mesh (also called the decoded base mesh). The inverse quantizer 1205 provides the decoded base mesh to the subdivisor 1206. The quantization and inverse quantization processes can make the decoded base mesh produced by the inverse quantizer 1205 different from the base mesh produced by the decimator 1201.
[00299] Subdivisor 1206 performs a subdivision process on the decoded base mesh produced by inverse quantizer 1205. The subdivision process can be a subdivision process of each face included in the decoded base mesh to segment the face. Subdivisor 1206 provides the subdivided and decoded base mesh to displacement vector calculator 1207.
[00300] Specifically, subdivision 1206 subdivides a mesh by generating a new vertex between two vertices included in the mesh and connected to each other. Repeating the generation of the new vertex can increase the number of vertices included in the mesh to a predetermined number. Iterating the subdivision across the entire mesh (i.e., plurality of subdivision runs) generates a plurality of Level of Detail (LoD) layers.
[00301] The displacement vector calculator 1207 acquires the original mesh acquired by the encoding device 100 and, from the subdivider 1206, the subdivided and decoded base mesh. The displacement vector calculator 1207 calculates vectors from the vertices of the subdivided and decoded base mesh to the vertices, faces, or edges of the original mesh, as displacement vectors. The displacement vector calculator 1207 provides the displacement vectors to the wavelet transformer 1208.
[00302] The wavelet transformer 1208 performs a wavelet transformation process on the displacement vectors calculated by the displacement vector calculator 1207 to obtain the coefficients Petition 870250090886, dated 06 / 10 / 2025, pages 225 / 283 63 / 104 wavelet transformers. The wavelet transformer 1208 provides the wavelet coefficients to the quantizer 1209. In the wavelet transformation, the wavelet transformer 1208 assigns the vertices to a plurality of LoD layers and applies, for example, the elevation scheme to the displacement vectors of the vertices. The wavelet transformer 1208 can thus calculate wavelet coefficients representing various components, from low-frequency components to high-frequency components.
[00303] The quantizer 1209 quantizes the wavelet coefficients acquired by the wavelet transformer 1208. The quantizer 1209 can quantize the wavelet coefficients for each LoD layer. The quantizer 1209 provides the quantized wavelet coefficients to the image packer 1210.
[00304] The image packer 1210 generates an image containing the wavelet coefficients quantized by the quantizer 1209. The image packer 1210 can generate the image by mapping the wavelet coefficients quantized by the quantizer 1209 onto pixels in a two-dimensional image format. The image packer 1210 provides the generated image to the video encoder 1211. In the process of mapping the wavelet coefficients quantized onto the pixels in the two-dimensional image format, mapping information representing the assignment of the wavelet coefficients quantized to the pixels in the two-dimensional image format can be used.
[00305] The 1211 video encoder encodes the image generated by the 1210 image compressor into a bitstream (also known as a shift bitstream) (in other words, it generates the shift bitstream). The 1211 video encoder provides the shift bitstream to the 1214 multiplexer. The shift bitstream can be a bitstream that includes shift information in the form of an image. The image format can Petition 870250090886, dated 06 / 10 / 2025, pages 226 / 283 64 / 104, for example, is a format that includes two chroma information items and one luminance information item.
[00306] The color converter 1212 acquires an attribute map obtained by the encoding device 100 as an original attribute map and performs a color conversion process on the original attribute map. The color conversion process may include converting a form of color representation or a color space. The color converter 1212 provides the attribute map submitted to the color conversion process to the video encoder 1213. Note that, although the case where the original attribute map is entered into the color converter 1212 is described here as an example, the feature map may be converted according to the structure of the decoded mesh if the decoded mesh differs from the original mesh in the number or positions of the vertices.
[00307] The 1213 video encoder encodes the attribute map converted by the 1212 color converter into a bitstream (also known as an attribute bitstream) (in other words, it generates the attribute bitstream). The 1213 video encoder provides the attribute bitstream to the 1214 multiplexer.
[00308] Multiplexer 1214 acquires the base mesh bitstream from base mesh encoder 1203, acquires the offset bitstream from video encoder 1211, acquires the attribute bitstream from video encoder 1213, and multiplexes these bitstreams to generate and output a compressed bitstream. The output of the compressed bitstream by multiplexer 1214 may be equivalent to the output of the bitstream by encoding device 100.
[00309] Note that the process of encoding the wavelet coefficients in the shift bitstream, performed by the image compressor 1210 and the video encoder 1211, can be carried out by means of an arithmetic encoding process. Furthermore, the device Petition 870250090886, dated 06 / 10 / 2025, pages 227 / 283 65 / 104 encoding type 100 can be configured to select whether the process should be performed by the image compressor 1210 and the video encoder 1211 (also known as the video encoding process) or by the arithmetic encoding process. An example of this configuration will be described below.
[00310] Figure 30 is a block diagram illustrating a detailed variation of the encoding device 100 configuration. Figure 30 illustrates a variation of the functional blocks delimited by the dotted line frame illustrated in Figure 29.
[00311] The displacement vector calculator 1207, the wavelet transformer 1208, the quantizer 1209, the image packer 1210 and the video encoder 1211 illustrated in Figure 30 are the same as those illustrated in Figure 29.
[00312] As illustrated in Figure 30, the encoding device 100 also includes the switch 1221, the switch 1222 and the arithmetic encoder 1223.
[00313] Switch 1221 and switch 1222 are switches that alternate whether the image compressor 1210 and video encoder 1211 or the arithmetic encoder 1223 should perform the wavelet coefficient encoding process in the offset bitstream.
[00314] Switch 1221 and Switch 1222 can dynamically switch a constituent component that should perform the process to either the image compressor 1210 and the video encoder 1211 or the arithmetic encoder 1223. Switch 1221 and Switch 1222 can be configured to always (in other words, permanently) use the image compressor 1210 and the video encoder 1211 as the constituent component that should perform the process, or they can be configured to always (in other words, permanently) use the arithmetic encoder 1223 as the component. Petition 870250090886, dated 06 / 10 / 2025, pages 228 / 283 66 / 104 constituent.
[00315] The 1223 arithmetic encoder performs the process of encoding the wavelet coefficients in the shift bit stream by means of arithmetic encoding.
[00316] Note that encoding device 100 can add to the header information whether the wavelet coefficient encoding process in the offset bitstream was performed by the image compressor 1210 and the video encoder 1211 (in other words, the process was performed via the video encoding process) or by the arithmetic encoder 1223 (in other words, the process was performed via the arithmetic encoding process). This allows decoding device 200, which receives the bitstream encoded in the manner described above, to decode it appropriately by switching between bitstream decoding methods with reference to the header information.
[00317] Next, a coding process performed by coding device 100 will be described in detail.
[00318] Figure 31 is a flowchart illustrating the process using coding device 100. Figure 32 is an explanatory diagram that schematically illustrates the coding of a mesh structure. With reference to Figures 31 and 32, the process using coding device 100 will be described.
[00319] In step S101, 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 inserted into encoding device 100. An example of the 3D mesh frame being the input mesh frame is illustrated as mesh frame 1301 (see Figure 32).
[00320] In step S102, encoding device 100 performs the Petition 870250090886, dated 06 / 10 / 2025, pp. 229 / 283 67 / 104 decimation process in the input mesh frame read in step S101 to produce a base mesh frame, which has a smaller number of vertices than the input mesh frame. The base mesh frame produced by decimating mesh frame 1301 is illustrated as base mesh frame 1302 (see Figure 32).
[00321] In step S103, encoding device 100 calculates the displacement information to be used by decoding device 200 to reconstruct the mesh structure. The displacement information is equivalent to the displacement vectors of the vertices of the base mesh structure produced in step S102 for the vertices of the input mesh structure. Methods for calculating the displacement information include a method in which the coordinate sets of the vertices of the base mesh structure are subtracted from the coordinates of the vertices of the input mesh structure. The displacement information calculated from mesh structure 1301 and base mesh structure 1302 is illustrated as displacement information 1303 (see Figure 32). Displacement information 1303 is in vector format. In other words, displacement information 1303 is represented as displacement vectors.
[00322] In step S104, encoding device 100 encodes the base mesh frame produced in step S102, the offset 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 illustrated as bitstream 1304 (see Figure 32).
[00323] Specifically, bitstream 1304 includes vertex coordinate sets and connection information at vertices A, C, E, and F, displacement information, a video bitstream including texture data, and a compressed attribute map (see Fi Petition 870250090886, dated 06 / 10 / 2025, pages 230 / 283 68 / 104 figure 32). The displacement information includes displacement information for moving vertices based on vertex coordinates acquired from the subdivided base mesh frame. The compressed attribute map includes texture coordinates used to apply texture data to the mesh frame that is reconstructed using the base mesh frame and the displacement information.
[00324] Details of the configuration of the 200 decoding device will be described below.
[00325] Figure 33 is a block diagram illustrating a detailed example of the configuration of the 200 decoding device.
[00326] As illustrated in Figure 33, the decoding device 200 includes the demultiplexer 2201, the base mesh decoder 2202, the inverse quantizer 2203, the subdivider 2204, the video decoder 2205, the image unpacker 2206, the inverse quantizer 2207, the inverse wavelet transformer 2208, the reconstructor 2209, the video decoder 2210 and the color converter 2211.
[00327] Demultiplexer 2201 receives a compressed bitstream input from decoding device 200 and separates a base mesh bitstream, an offset bitstream, and an attribute bitstream from the compressed bitstream. Demultiplexer 2201 provides the base mesh bitstream to base mesh decoder 2202, the offset bitstream to video decoder 2205, and the attribute bitstream to video decoder 2210. The compressed bitstream input to decoding device 200 may be, for example, a compressed bitstream output from encoding device 100. This case will be described as an example.
[00328] The 2202 base mesh decoder decodes the base mesh bit stream provided by the 2201 demultiplexer to acquire a quantized base mesh. The 2202 base mesh decoder for Petition 870250090886, dated 06 / 10 / 2025, pages 231 / 283 69 / 104 needs the quantized base mesh to the inverse quantizer 2203.
[00329] The inverse quantizer 2203 inversely quantizes the quantized base mesh provided by the base mesh decoder 2202 to produce the base mesh (also called the decoded base mesh). The inverse quantizer 2203 provides the decoded base mesh to the subdivision 2204.
[00330] Subdivisor 2204 performs the subdivision process on the decoded base mesh produced by inverse quantizer 2203. The subdivision process is the same as the subdivision process performed by subdivisor 1206. Subdivisor 2204 provides the subdivided and decoded base mesh to reconstructor 2209.
[00331] The 2205 video decoder decodes the offset bitstream provided by the 2201 demultiplexer into an image. The image may be an image in which the quantized wavelet coefficients are contained by mapping the quantized wavelet coefficients into pixels in a two-dimensional image format. The 2205 video decoder provides the image to the 2206 image decompressor.
[00332] The image unpacker 2206 extracts the quantized wavelet coefficients from the image provided by the video decoder 2205. In the process of extracting the quantized wavelet coefficients from the image, a mapping can be used that represents the assignment of the quantized wavelet coefficients to the pixels in the two-dimensional image format. The image unpacker 2206 provides the extracted quantized wavelet coefficients from the image to the inverse quantizer 2207.
[00333] The inverse quantizer 2207 inversely quantizes the quantized wavelet coefficients provided by the image decompressor 2206 to generate wavelet coefficients.
[00334] The 2208 reverse wavelet transformer performs a process Petition 870250090886, dated 06 / 10 / 2025, pages 232 / 283 70 / 104 of inverse wavelet transformation on the wavelet coefficients provided by the inverse quantizer 2207 to generate displacement vectors (equivalent to the decoded displacement vectors). The inverse wavelet transformation process is equivalent to the inverse transformation of the wavelet transformation process performed by the wavelet transformer 1208. The inverse wavelet transformer 2208 provides the generated decoded displacement vectors to the reconstructor 2209.
[00335] Reconstructor 2209 reconstructs a loop (equivalent to a decoded loop) using the subdivided and decoded base loop provided by subdivider 2204 and the decoded displacement vectors provided by inverse wavelet transformer 2208. Reconstructor 2209 outputs the reconstructed and decoded loop as output loop 2107.
[00336] The 2210 video decoder decodes the attribute bitstream provided by the 2201 demultiplexer into an attribute map (equivalent to a decoded attribute map). The 2210 video decoder provides the decoded attribute map to the 2211 color converter.
[00337] The 2211 color converter performs a color conversion process on the decoded attribute map provided by the 2210 video decoder. The color conversion process is equivalent to the inverse conversion of the color conversion process performed by the 1212 color converter and may include a conversion process of a color representation form or a color space. The 2211 color converter outputs the decoded attribute map submitted to the color conversion process.
[00338] Note that the process of decoding the shift bitstream into wavelet coefficients, performed by the 2205 video decoder and the 2206 picture unpacker, can be rea Petition 870250090886, dated 06 / 10 / 2025, pages 233 / 283 71 / 104 is executed through an arithmetic encoding process. Furthermore, the decoding device 200 can be configured to select whether the process should be performed by the video decoder 2205 and the picture unpacker 2206 (also known as the video decoding process) or by the arithmetic encoding process. An example of this configuration will be described below.
[00339] Figure 34 is a block diagram illustrating a detailed variation of the configuration of the 200 decoding device. Figure 34 illustrates a variation of the functional blocks delimited by the dotted line frame illustrated in Figure 33.
[00340] The video decoder 2205, the image depacker 2206, the inverse quantizer 2207, the inverse wavelet transformer 2208 and the reconstructor 2209 illustrated in Figure 34 are the same as those illustrated in Figure 33.
[00341] As illustrated in Figure 34, the decoding device 200 also includes the switch 2221, the switch 2222 and the arithmetic decoder 2223.
[00342] Switch 2221 and switch 2222 are switches that alternate whether video decoder 2205 and picture unpacker 2206 or arithmetic decoder 2223 should perform the process of decoding the shift bitstream into wavelet coefficients.
[00343] Switch 2221 and Switch 2222 can dynamically switch a constituent component that must perform the process to Video Decoder 2205 and Picture Unpacker 2206 or Arithmetic Decoder 2223. Switch 2221 and Switch 2222 can be configured to always (in other words, permanently) use Video Decoder 2205 and Picture Unpacker 2206 as the constituent component that must Petition 870250090886, dated 06 / 10 / 2025, pages 234 / 283 72 / 104 execute the process or can be configured to always (in other words, permanently) use the 2223 arithmetic decoder as the constituent component.
[00344] The 2223 arithmetic decoder performs the process of decoding the shift bit stream into wavelet coefficients by means of arithmetic decoding.
[00345] Note that information indicating whether the video decoder 2205 and the picture decompressor 2206 or the arithmetic decoder 2223 performed the wavelet coefficient shift bitstream decoding process (in other words, whether the process was performed via the video decoding process or the arithmetic decoding process) may have been added to the header information. In this case, the decoding device 200 can properly decode the bitstream by switching bitstream decoding methods with reference to the header information.
[00346] Next, a decoding process performed by decoding device 200 will be described in detail.
[00347] Figure 35 is a flowchart illustrating the process by decoding device 200. Figure 36 is an explanatory diagram that schematically illustrates the decoding of a 3D mesh. With reference to Figures 35 and 36, the process by decoding device 200 will be described.
[00348] In step S201, decoding device 200 decodes a base mesh frame and attributes of a bit stream (equivalent to a compressed bit stream). An example of the decoded base mesh frame (equivalent to a decoded base mesh frame) is illustrated as the decoded base mesh frame 2301 (see Figure 36).
[00349] In step S202, decoding device 200 performs the Petition 870250090886, dated 06 / 10 / 2025, pages 235 / 283 73 / 104 subdivision process in the decoded base mesh structure in step S201 to produce subdivided vertices. An example of the base mesh structure including the subdivided vertices is illustrated as base mesh structure 2302 (see Figure 36).
[00350] In step S203, decoding device 200 decodes the bitstream shift information (equivalent to the compressed bitstream). An example of the decoded shift information is illustrated as shift information 2303 (see Figure 36). Shift information 2303 is in vector format. In other words, shift information 2303 is represented as shift vectors.
[00351] In step S204, using displacement information, decoding device 200 moves the vertices of the base mesh structure, including the subdivided vertices, to new positions to reconstruct the shape of the mesh structure and subsequently applies attribute information to restore it. An example of the attributes is texture. An example of the reconstructed mesh structure is illustrated as mesh structure 2304 (see Figure 36).
[00352] The subdivision will be described next. The subdivision is performed by a subdivisor (specifically, subdivisor 1206 or subdivisor 2204).
[00353] Figure 37 is an explanatory diagram that illustrates an example of subdivision.
[00354] A base mesh illustrated in (a) in Figure 37 includes vertices A, B, and C and connection information indicating their connectivity.
[00355] In (b) in Figure 37, a mesh produced by the first subdivision is illustrated, that is, a mesh after the first subdivision. In the first subdivision, the subdivision generates vertices D, E, and F and connection information indicating their connectivity. This mesh produced by the subdivision will also be called LoD1 or first Petition 870250090886, dated 06 / 10 / 2025, pages 236 / 283 74 / 104 LoD.
[00356] Vertex D in the mesh after the first subdivision is a vertex generated by the subdivision based on vertex A and vertex B. Similarly, vertex E is a vertex generated by the subdivision based on vertex B and vertex C. Vertex F is a vertex generated by the subdivision based on vertex A and vertex C.
[00357] Note that, for example, vertex D can be the midpoint of segment AB (i.e., edge AB) that connects vertices A and B, which are used to generate vertex D. Similarly, vertex E can be the midpoint of segment AC. Vertex F can be the midpoint of segment BC.
[00358] In (c) in Figure 37, a mesh produced by the second subdivision is illustrated, that is, a mesh after the second subdivision. In the second subdivision, the subdivision generates the vertices G, H, I, J, K, L, M, N and O, in addition to connection information that indicates their connectivity. This mesh produced by the subdivision will also be called LoD2 or a second LoD.
[00359] Vertex G in the mesh after the second subdivision is a vertex generated by the subdivision based on vertex A and vertex D. Similarly, vertex H is a vertex generated by the subdivision based on vertex A and vertex E. Vertex I is a vertex generated by the subdivision based on vertex B and vertex D. Vertex J is a vertex generated by the subdivision based on vertex D and vertex F. Vertex K is a vertex generated by the subdivision based on vertex E and vertex F. Vertex L is a vertex generated by the subdivision based on vertex C and vertex E. Vertex M is a vertex generated by the subdivision based on vertex B and vertex F. Vertex N is a vertex generated by the subdivision based on vertex C and vertex N. Vertex F. Vertex O is a vertex generated by the subdivision based on vertex D and vertex E. Petition 870250090886, dated 06 / 10 / 2025, pages 237 / 283 75 / 104
[00360] Note that, as an example, vertex G can be the midpoint of segment AD (i.e., edge AD) connecting vertices A and D, which are used to generate vertex G. Similarly, vertex H can be the midpoint of segment AE. Vertex I can be the midpoint of segment BD. Vertex J can be the midpoint of segment DF. Vertex K can be the midpoint of segment EF. Vertex L can be the midpoint of segment CE. Vertex M can be the midpoint of segment BF. Vertex N can be the midpoint of segment CF. Vertex O can be the midpoint of segment DE.
[00361] Next, vertex displacement will be described with reference to Figure 38 and Figure 39. Vertex displacement is performed by reconstructor 2209.
[00362] Figure 38 is an explanatory diagram illustrating an example of vertex displacement, in which vertices are subdivided and then displaced. Figure 39 is an explanatory diagram illustrating an example of the vertices of the original mesh.
[00363] A base mesh illustrated in (a) in Figure 38 includes vertices A, B, C, and Z and connection information indicating their connectivity.
[00364] In (b) in Figure 38, a mesh produced by the first subdivision is illustrated, that is, a mesh after the first subdivision (i.e., a first LoD). In the first subdivision, the subdivisor generates the vertices S, T, U, X, or Y and connection information that indicates their connectivity. The vertices S, T, U, X, or Y are similar to the vertices D, E, and F illustrated in (b) in Figure 37.
[00365] In (c) in Figure 38, a mesh produced by the second subdivision is illustrated, that is, a mesh after the second subdivision (i.e., a second LoD). In the second subdivision, the subdivisor generates the vertices D, E, F, G, and H and connection information indicating their Petition 870250090886, dated 06 / 10 / 2025, pp. 238 / 283 76 / 104 connectivity. Vertices D, E, F, G, and H are similar to vertices G, H, I, J, K, L, M, N, or O illustrated in (c) in Figure 37.
[00366] In (d) of Figure 38, a mesh is illustrated including vertices that are subdivided and then shifted. The vertices A, B, C, D, E, F, G, H, S, T, U, X, Y and Z illustrated in (d) of Figure 38 are in positions that are offset from the positions of the respective vertices illustrated in (c) of Figure 38, using the displacement information.
[00367] The original loop illustrated in Figure 39 is an example of the loop input in encoding device 100, i.e., a loop before encoding.
[00368] The mesh illustrated in Figure 38 has a shape similar to that of the original mesh illustrated in Figure 39. Because the displacement information is generated by the displacement vector calculator 1207 of the encoding device 100 as information indicating the displacement of the vertices of the base mesh to the vertices of the original mesh, the mesh with a shape similar to that of the original mesh is generated by reconstructing the mesh using the displacement information that was generated in this way.
[00369] Decoding device 200 is capable of emitting the loop illustrated in (d) in Figure 38.
[00370] Next, the division of a mesh into submeshes will be described with reference to Figures 40 and 41.
[00371] The mesh can be divided into a plurality of portions, each smaller than the mesh and codingable. When the mesh is divided, its vertices can be split in such a way that the coordinate sets and connectivity of the vertices included in each portion are independently codingable.
[00372] Figure 40 is an explanatory diagram illustrating an example of a mesh. Figure 41 is an explanatory diagram illustrating Petition 870250090886, dated 06 / 10 / 2025, pp. 239 / 283 77 / 104 is an example of dividing a mesh into submeshes.
[00373] The mesh illustrated in Figure 40 is an original mesh and can also be called a complete mesh, in contrast to a submesh.
[00374] Figure 41 illustrates how the complete mesh shown in Figure 40 is divided into two submeshes. For vertices A, B, and C of the complete mesh (see Figure 40), vertex A is duplicated at vertices A1 and A2, vertex B is duplicated at vertices B1 and B2, and vertex C is duplicated at vertices C1 and C2. Thus, the two submeshes (i.e., a first submesh and a second submesh) are created from the complete mesh. The first submesh and the second submesh are independently decodable meshes.
[00375] Next, the packing of displacement information into an image frame will be described with reference to Figures 42, 43, and 44.
[00376] Figures 42, 43, and 44 are explanatory diagrams that illustrate examples of compression of displacement information in an image frame. Note that the image frame can be reformulated as a video frame.
[00377] Vertex displacement data items are mapped, for example, to components of an image frame in YUV format (i.e., to Y components (Y-plane), U components (U-plane), and V components (V-plane)), being encoded as image frame data. This case will be described below as an example. Note that, as another example, vertex displacement data items can be mapped to components of an image frame in RGB format (R components, G components, and B components), being encoded as image frame data.
[00378] The 200 decoding device can use a module Petition 870250090886, dated 06 / 10 / 2025, pages 240 / 283 78 / 104 image encoding to extract displacement data items. Each displacement data item can be in the form of an X component, a Y component, or a Z component in a global coordinate system (e.g., a Cartesian coordinate system) or a normal, tangent, or bitangent component in a local coordinate system. Methods for mapping displacement data onto the image frame include the following methods.
[00379] For example, in a first method, the displacement data items are arranged in a displacement order within the image frame. An example of the grouping of displacement data items in this case is illustrated in Figure 42. The displacement data items are mapped directly onto the image frame according to a predefined displacement order.
[00380] Note that the image frame has a fixed height and width, and therefore there are cases where the displacement data items do not fit exactly within the frame. In this case, the remaining part of the image frame is filled with fill data (also called fill data) (see Figure 42).
[00381] For example, in a second method, the displacement data items are separated into a plurality of LoDs and mapped onto the Y, U, and V components of the image frame. An example of the packing of displacement data items in this case is illustrated in Figure 43. Here, the displacement data items in the image frame for the next LoD begin immediately after the displacement data items for the previous LoD end. As in the first method, in the case where the displacement data items do not fit exactly within the image frame, the image frame is filled in at its final portion (see Figure 43).
[00382] For example, in a third method, the data items of Petition 870250090886, dated 06 / 10 / 2025, pages 241 / 283 79 / 104 displacements corresponding to the LoDs are mapped onto the Y, U, and V components of the image frame in a different way than in the second method. An example of the packing of displacement data items in this case is illustrated in Figure 44. In this way, each LoD can be decoded independently. In the third method, provisional padding is performed for the displacement data of each LoD to provide CTU alignment along with padding at the end of the video frame (see Figure 44).
[00383] Details of a process using encoding device 100 will be described below.
[00384] Figure 45 is a flowchart that illustrates an example of a process detailed by the coding device 100. The process illustrated in Figure 45 is a detailed process included in the process illustrated in Figure 31.
[00385] In step S301, encoding device 100 encodes the first vertices and the first displacement vectors into a bitstream. Here, the first vertices are vertices included in a base mesh. The first displacement vectors are vectors that indicate displacements from the vertices included in the base mesh (i.e., the first vertices) to vertices that are included in a mesh inserted into encoding device 100 and correspond to the vertices included in the base mesh (i.e., the second vertices).
[00386] In step S302, encoding device 100 decodes (in other words, reconstructs) the first vertices and the first shift vectors of the bitstream encoded in step S301 and reconstructs the second vertices using the decoded first vertices and shift vectors. The reconstruction of the second vertices includes the reconstruction of the first shift vectors.
[00387] Specifically, the 100 decoding device Petition 870250090886, dated 06 / 10 / 2025, pages 242 / 283 80 / 104 takes the bitstream encoded in step S301 to acquire the first vertices and the first shift vectors. The encoding device 100 then shifts the first decoded vertices using the first decoded shift vectors to reconstruct the second vertices.
[00388] Note that encoding device 100 can acquire the first vertices and first displacement vectors by calculating the first vertices and first displacement vectors from the parameter values used when the first vertices or first displacement vectors are encoded, rather than acquiring the first vertices and first displacement vectors by decoding the bitstream in which the first vertices and first displacement vectors are encoded. Here, the parameters used when the first vertices or first displacement vectors are encoded include, for example, quantization parameters.
[00389] In step S303, encoding device 100 calculates third vertices through an interpellation process based on the positions of a plurality of vertices, including at least the second vertices reconstructed in step S302.
[00390] In step S304, the encoding device 100 calculates vectors (equivalent to the second displacement vectors) that indicate the displacements of the third vertices calculated in step S303 to the fourth vertices.
[00391] In step S305, encoding device 100 encodes the second shift vectors calculated in step S304 into the bitstream.
[00392] In this way, the encoding device 100 encodes the second displacement vectors, indicating the displacements to the fourth vertices from reference points, which are the third vertices indicated by the vectors resulting from a plurality of Petition 870250090886, dated 06 / 10 / 2025, pages 243 / 283 81 / 104 first displacement vectors reconstructed. The 100 encoding device can therefore reduce the amount of information in the second displacement vectors in some cases. For example, compared to using vertices calculated from a plurality of first vertices included in the base mesh as reference points to encode the displacement vectors indicating the displacements to the fourth vertices, encoding by the 100 encoding device can decrease the distances from the reference points to the fourth vertices in some cases. Encoding can therefore reduce the amount of information in the second displacement vectors in some cases. As a result, the 100 encoding device can contribute to a reduction in the amount of encoded information, thus increasing the efficiency of the encoding or decoding process in some cases.As seen above, the 100 encoding device is capable of improving an encoding or decoding process related to three-dimensional data.
[00393] Note that the device 100 encoding process can also be described as follows.
[00394] In other words, the encoding device 100 encodes, for each of the vertices included in a three-dimensional mesh (e.g., P, Q, and R in Figure 53), displacement data to be used to derive a displacement vector (e.g., AP, BQ, and YR in Figure 53). Here, the displacement vector indicates a displacement from a first position (e.g., A, B, and Y in Figure 53) of a vertex generated using a base mesh. The vertices include a first vertex (e.g., R in Figure 53), a second vertex (e.g., P in Figure 53), and a third vertex (e.g., Q in Figure 53), and the displacement data of the first vertex indicates a difference between the displacement vector of the first vertex and a combined vector of the displacement vector of the second vertex. Petition 870250090886, dated 06 / 10 / 2025, pages 244 / 283 82 / 104 tex and the displacement vector of the third vertex. Thus, the 100 encoding device can reduce the amount of information in the displacement data at the first vertex in some cases because the displacement data at the first vertex indicates the difference between the displacement vector of the first vertex and the resultant vector of the displacement vector of the second vertex and the displacement vector of the third vertex. As a result, the 100 encoding device can contribute to reducing the amount of encoded information, thus increasing the efficiency of the encoding or decoding process in some cases. As seen above, the 100 encoding device is capable of improving an encoding or decoding process related to three-dimensional data.
[00395] Details of a process by decoding device 200 will be described below.
[00396] Figure 46 is a flowchart illustrating a detailed process by decoding device 200. The process illustrated in Figure 46 is a detailed process included in step S204 in Figure 35.
[00397] In step S401, decoding device 200 decodes the first vertices and the first displacement vectors of a bit stream. Here, the first vertices are vertices included in a base mesh. The first displacement vectors are vectors that indicate displacements from the vertices included in the base mesh (i.e., the first vertices) to vertices that are included in a mesh inserted into encoding device 100 and correspond to the vertices included in the base mesh (i.e., the second vertices).
[00398] In step S402, decoding device 200 reconstructs the second vertices using the first vertices and the first displacement vectors decoded in step S401. Specifically, decoding device 200 displaces the first vertices Petition 870250090886, dated 06 / 10 / 2025, pages 245 / 283 83 / 104 ces acquired by decoding in step S401 using the first displacement vectors acquired by decoding in step S401 to reconstruct the second vertices.
[00399] In step S403, decoding device 200 calculates third vertices through the interpellation process based on the positions of a plurality of vertices, including at least the second vertices reconstructed in step S402.
[00400] In step S404, decoding device 200 decodes second shift vectors from the bit stream. Here, the second shift vectors are vectors that indicate the shifts from the third vertex to the fourth vertex.
[00401] In step S405, decoding device 200 shifts the third vertices calculated in step S403 using the second displacement vectors decoded in step S404 to reconstruct the fourth vertices.
[00402] In step S406, decoding device 200 reconstructs a mesh using at least the second vertices reconstructed in step S402 and the fourth vertices reconstructed in step S405.
[00403] In this way, decoding device 200 decodes the second displacement vectors, indicating the displacements to the fourth vertices, from reference points, which are the third vertices indicated by the vectors resulting from a plurality of first decoded displacement vectors. Decoding device 200 can therefore reduce the amount of information in the second displacement vectors in some cases.For example, compared to the case of using, as reference points, vertices calculated from a plurality of first vertices included in the base mesh to decode the displacement vectors that indicate the displacements to the fourth vertices, decoding by the 200 decoding device can reduce the... Petition 870250090886, dated 06 / 10 / 2025, pages 246 / 283 84 / 104 distances from the reference points to the fourth vertices in some cases. Decoding can therefore reduce the amount of information in the second displacement vectors in some cases. As a result, the 200 decoding device can contribute to a reduction in the amount of encoded information, thus increasing the efficiency of the encoding or decoding process in some cases. As seen above, the 200 decoding device is capable of improving an encoding or decoding process related to three-dimensional data.
[00404] Note that the decoding process for device 200 can also be described as follows.
[00405] In other words, the decoding device 200 decodes, for each of the vertices (P, Q, R) included in a three-dimensional mesh, displacement data to be used to derive a displacement vector (AP, BQ, YR). Here, the displacement vector indicates a displacement from a first position (A, B, Y) of a vertex generated using a base mesh. The vertices include a first vertex (R), a second vertex (P), and a third vertex (Q).
[00406] The decoding device 200 generates the displacement vector of the first vertex using the displacement data of the first vertex and a combined vector of the displacement vector of the second vertex and the displacement vector of the third vertex.
[00407] In this way, the decoding device 200 adds the displacement vector of the second vertex and the displacement vector of the third vertex with equal weights. The decoding device 200 can thus generate the resulting vector through a simpler computational process, contributing to a reduction in processing load or energy consumption. As a result, the decoding device 200 is able to improve an encoding or decoding process related to three-dimensional data. Petition 870250090886, dated 06 / 10 / 2025, pages 247 / 283 85 / 104
[00408] The above processes will be described in detail below.
[00409] Figure 47 is an explanatory diagram illustrating a second vertex reconstruction process. The second vertex reconstruction process illustrated in Figure 47 is a process executed by encoding device 100 in step S302 (see Figure 45) or a process executed by decoding device 200 in step S402 (see Figure 46).
[00410] Figure 47 illustrates mesh 6001 and mesh 6002 which are produced based on mesh 6001.
[00411] Mesh 6001 is an example of the base mesh and includes vertices A, B, C, and D. Vertices A, B, C, and D correspond to the first vertices.
[00412] Mesh 6002 is an example of the original mesh and includes vertices A1, B1, C1, and D1. Vertices A1, B1, C1, and D1 correspond to the second vertices.
[00413] The vertices A1, B1, C1 and D1 of mesh 6002 are generated by the displacement of the vertices A, B, C and D of mesh 6001 using the first displacement vectors, respectively.
[00414] That is, vertex A1 of mesh 6002 is reconstructed by shifting vertex A of mesh 6001 using a displacement vector {x1, y1, z1}.
[00415] Similarly, vertex B1 of mesh 6002 is reconstructed by shifting vertex B of mesh 6001 using a displacement vector {x2, y2, z2}.
[00416] The vertex C1 of mesh 6002 is reconstructed by shifting the vertex C of mesh 6001 using a displacement vector {x3, y3, z3}.
[00417] The vertex D1 of mesh 6002 is reconstructed by shifting the vertex D of mesh 6001 using a displacement vector {x4, y4, z4}. Petition 870250090886, dated 06 / 10 / 2025, pages 248 / 283 86 / 104
[00418] Figure 48 is an explanatory diagram that illustrates a first example of a third-vertex calculation process.
[00419] The process for calculating the third vertices illustrated in Figure 48 is the process performed in step S303 (see Figure 45) or in step S403 (see Figure 46).
[00420] Figure 48 illustrates the vertices S, T, X, Y, and Z in a grid that includes vertices A1, B1, C1, and D1. Vertices A1, B1, C1, and D1 correspond to the second vertices, and vertices S, T, X, Y, and Z correspond to the third vertices. The positions of the third vertices are calculated using the interpellation process based on the position of a plurality of vertices, including at least the second vertices.
[00421] In Figure 48, vertex X is calculated using the interpellation process based on at least vertex A1. Vertex Y is calculated using the interpellation process based on at least vertex B1. Vertex Z is calculated using the interpellation process based on at least vertex C1. Vertex S is calculated using the interpellation process based on at least vertex C1. Vertex T is calculated using the interpellation process based on at least vertex D1.
[00422] The interpellation process for calculating the third vertices includes, for example, the subdivision process based on the displaced vertices of the vertices included in the base mesh. Note that the interpellation process for calculating the third vertices may include the subdivision process based on the displaced vertices of the vertices included in a mesh produced by the subdivision process.
[00423] Note that although the example above describes the case where the third vertices are calculated using the interpellation process based on at least the second vertices, the third vertices can be calculated using the interpolation process. Petition 870250090886, dated 06 / 10 / 2025, pp. 249 / 283 87 / 104 calculation based on at least the first vertices.
[00424] In this case, it is possible to determine based on a parameter whether the third vertices are calculated using the interpolation process based on the second vertices or using the interpolation process based on the first vertices.
[00425] Note that the positions of the first vertices and the positions of the third vertices generated based on the first vertices in the description above can be called vertex positions generated using the base mesh. Although the above has described, by way of example, the case where the interpolation process is used when the positions of the third vertices are derived using the positions of the first vertices, a process other than the interpolation process can be used to derive the positions of the third vertices, or the positions of the third vertices can be derived using another parameter besides the positions of the first vertices. Here, as a process other than the interpolation process, another interpolation process, such as Lagrange interpolation or spline interpolation, can be used.
[00426] Although the above has described, by way of example, the case where the positions of the third vertices are calculated from the positions of two of the first vertices, which are the vertices included in the base mesh, the vertices used in the interpolation process or the other interpolation process do not need to be the vertices included in the base mesh. For example, the position of another third vertex can be derived by means of the interpolation process or the other interpolation process using the position of a first vertex, which is a vertex included in the base mesh, and the position of a third vertex generated by means of the interpolation process or the other interpolation process using the first vertices. Similarly, the position of another third vertex can be derived by means of Petition 870250090886, of 06 / 10 / 2025, p. 250 / 283 88 / 104 interpolation process or other interpolation process using the positions of two of the third vertices generated by means of the interpolation process or other interpolation process.
[00427] The location where the parameter is stored will be described next.
[00428] The parameter included in a bitstream can be included in data within the bitstream or it can be included in a header within the bitstream.
[00429] Figure 49 and Figure 50 are explanatory diagrams, each illustrating an example of the parameter storage location.
[00430] Figure 49 illustrates an example of a bitstream in which the parameter included in the bitstream is included in the data in the bitstream.
[00431] Figure 50 illustrates an example of a bitstream in which the parameter included in the bitstream is included in a header in the bitstream.
[00432] Figure 51 is an explanatory diagram that illustrates a second example of the third vertex calculation process.
[00433] Figure 51 illustrates the vertices S, T, X, Y, and Z in a base grid including vertices A, B, C, and D. Vertices A, B, C, and D correspond to the first vertices, and vertices S, T, X, Y, and Z correspond to the third vertices. The positions of the third vertices are calculated using an interpolation process based on the position of a plurality of vertices, including at least the first vertices.
[00434] In Figure 51, vertex X is calculated using the interpolation process based on at least vertex A. Vertex Y is calculated using the interpolation process based on at least vertex B. Vertex Z is calculated using the interpolation process based on at least vertex C. Vertex S is calculated Petition 870250090886, dated 06 / 10 / 2025, pp. 251 / 283 89 / 104 through the interpellation process based on at least vertex C. Vertex T is calculated through the interpellation process based on at least vertex D.
[00435] The interpellation process will be described in detail next.
[00436] FIG. 52 is an explanatory diagram that illustrates a first example of the interpellation process. With reference to FIG. 52, a first example of the method for calculating vertex R will be described, based at least on the interpellation process.
[00437] Figure 52 illustrates vertices A and B included in a base grid (corresponding to the first vertices) and vertices P and Q displaced from vertices A and B, respectively (corresponding to the second vertices).
[00438] Vertex P is a vertex that is displaced from vertex A using a first displacement vector {x1, y1, z1}. Vertex Q is a vertex that is displaced from vertex B using a first displacement vector {x2, y2, z2}. Note that the relationship between a vertex included in the basis mesh and a vertex displaced from the vertex using a displacement vector, such as between vertex A and vertex P and between vertex B and vertex Q, can be expressed as the correspondence relation expression.
[00439] Figure 52 also illustrates vertex X (corresponding to a third vertex). Vertex X is a vertex generated by the subdivision process based on vertices P and Q. More specifically, vertex X is a point generated at the center (i.e., the midpoint) of the segment PQ that connects vertices P and Q (in other words, the edge PQ).
[00440] Figure 52 also illustrates vertex R (corresponding to a fourth vertex). Vertex R is a vertex that is displaced from vertex X using a second displacement vector {x3, y3, z3}. Petition 870250090886, dated 06 / 10 / 2025, pages 252 / 283 90 / 104
[00441] Note that the first displacement vectors {x1, y1, z1} and {x2, y2, z2}, and the second displacement vector {x3, y3, z3} are encoded in a bitstream.
[00442] Figure 53 is an exemplary diagram illustrating a second example of the method for calculating vertex R based at least on the interpellation process.
[00443] Figure 53 illustrates the vertices A, B, P, Q, X and R as in Figure 52.
[00444] Figure 53 further illustrates vertex Y.
[00445] Vertex Y (corresponding to a fifth vertex) is a vertex generated by the subdivision process based on vertices A and B. More specifically, vertex Y is a point generated at the center (i.e., the midpoint) of segment AB that connects vertices A and B (in other words, edge AB).
[00446] Vertex R is reconstructed by shifting vertex Y using a third displacement vector {x4, y4, z4}. The third displacement vector {x4, y4, z4} is determined using a prediction vector YX {px, py, pz}.
[00447] Here, the prediction vector YX {px, py, pz} is calculated using the vector {x1, y1, z1} and the vector {x2, y2, z2}. For example, the prediction vector YX {px, py, pz} is calculated by averaging the vector {x1, y1, z1} and the vector {x2, y2, z2}. Alternatively, the prediction vector YX {px, py, pz} can be obtained by selecting one of the vectors {x1, y1, z1} and {x2, y2, z2}.
[00448] The residual vector XR {rx, ry, rz} is calculated by subtracting the prediction vector YX {px, py, pz} from the vector {x4, y4, z4}.
[00449] Note that the first displacement vectors {x1, y1, z1} and {x2, y2, z2}, and the residual vector {rx, ry, rz} are encoded in a bitstream.
[00450] The decoding of the second veto will be described below. Petition 870250090886, dated 06 / 10 / 2025, pages 253 / 283 91 / 104 displacement residue.
[00451] In step S404 (see Figure 46), the second shift vectors are decoded from the bit stream. Note that, in the case where the process described with reference to Figure 53 is used, the residual vectors are decoded from the bit stream in step S404.
[00452] For example, the first displacement vectors and the second displacement vectors or the residual vectors are decoded from the bitstream. The first displacement vectors and the second displacement vectors or the residual vectors can be encoded as data in an image format or they can be encoded as data in a format other than the image format. In the case where the first displacement vectors and the second displacement vectors or the residual vectors are encoded in the image format, the first displacement vectors and the second displacement vectors or the residual vectors are acquired from data in the image format decoded by an image decoding device that supports an image codec system used in the encoding.In cases where the first displacement vectors and the second displacement vectors or the residual vectors are encoded in a format other than the image format, the first displacement vectors and the second displacement vectors or the residual vectors are acquired by the decoding device that decodes the bitstream or a sub-bitstream included in the bitstream.
[00453] Here, the first displacement vectors and the second displacement vectors or residual vectors include, for example, at least one component. The component included in the first displacement vectors and the second displacement vectors or residual vectors is represented using a global coordinate system, such as a Cartesian coordinate system. Note Petition 870250090886, dated 06 / 10 / 2025, pages 254 / 283 92 / 104 that the first displacement vectors and the second displacement vectors or the residual vectors can be represented using, for example, a local coordinate system provided in point, edge, face or a predetermined data unit such as normal, tangent and bitangent. Alternatively, the first displacement vectors and the second displacement vectors or the residual vectors can each have three components, can be generated to have only one or two components, or can be generated to have three components and then converted to have only one or two components.
[00454] Note that the image-format data generated to organize the first displacement vectors and the second displacement vectors or the residual vectors may have, for example, Y, U, and V components or R, G, and B components. The image-format data generated to organize the first displacement vectors and the second displacement vectors or the residual vectors may be encoded, for example, in a YUV420 chroma format or may be encoded in the YUV444 chroma format or in the YUV400 chroma format.
[00455] Note that although the first and second vertices in the description above are, for example, vertices included in a base mesh of a mesh to be encoded, either the first or second vertices, or both the first and second vertices, may be vertices not included in the base mesh. For example, the positions of the first and second vertices, or both the first and second vertices, may be positions generated from the positions of the vertices included in the base mesh of the mesh to be encoded through a process such as interpellation, interpolation, or extrapolation, or they may be positions generated based on the positions of the vertices included in a base mesh of another mesh. Petition 870250090886, dated 06 / 10 / 2025, pp. 255 / 283 93 / 104 mesh. The first displacement vector and the second displacement vector can be mapped, for example, to two blocks included in the data in image format. The first displacement vector and the second displacement vector can be mapped, for example, to two slices included in the data in image format. The first displacement vector and the second displacement vector can be mapped, for example, to two regions included in the data in image format. The first displacement vector and the residual vector can be mapped, for example, to two blocks included in the data in image format. The first displacement vector and the residual vector can be mapped, for example, to two slices included in the data in image format. The first displacement vector and the residual vector can be mapped, for example, to two regions included in the data in image format.
[00456] The reconstruction of the fourth vertices will be described below.
[00457] In step S405 (see Figure 46), the third vertices are moved using the second displacement vectors to reconstruct the fourth vertices.
[00458] Figure 54 is an explanatory diagram that illustrates a process of reconstructing the fourth vertices.
[00459] Figure 54 illustrates mesh 6101 and mesh 6102 which are produced based on mesh 6101.
[00460] Mesh 6101 includes vertices A1, B1, C1, and D1 and vertices S, T, X, Y, and Z. Vertices A1, B1, C1, and D1 correspond to the second vertices. Vertices S, T, X, Y, and Z correspond to the third vertices.
[00461] Mesh 6102 includes vertices A1, B1, C1, and D1 and vertices S1, T1, X1, Y1, and Z1. Vertices A1, B1, C1, and D1 are the same as vertices A1, B1, C1, and D1 in mesh 6101. Vertices S1, T1, X1, Y1, and Z1 correspond to the fourth vertex. Petition 870250090886, dated 06 / 10 / 2025, pp. 256 / 283 94 / 104
[00462] The fourth vertices in mesh 6102 are reconstructed by shifting the third vertices in mesh 6101 using the second displacement vectors.
[00463] That is, vertex X1 of mesh 6102 is reconstructed by shifting vertex X of mesh 6101 using a displacement vector {x5, y5, z5}.
[00464] Similarly, the Y1 vertex of mesh 6102 is reconstructed by shifting the Y vertex of mesh 6101 using a displacement vector {x6, y6, z6}.
[00465] The Z1 vertex of mesh 6102 is reconstructed by shifting the Z vertex of mesh 6101 using a displacement vector {x7, y7,
[00466] The vertex S1 of mesh 6102 is reconstructed by shifting the vertex S of mesh 6101 using a displacement vector {x8, y8, z8}.
[00467] The vertex T1 of mesh 6102 is reconstructed by shifting the vertex T of mesh 6101 using a displacement vector {x9, y9, z9}.
[00468] The reconstruction of a mesh will be described below.
[00469] In step S406 (see Figure 46), the mesh is reconstructed using at least the second and fourth vertices. As an example, a mesh reconstruction process includes a texture application process to the faces formed with vertices.
[00470] Figure 55 is an explanatory diagram that illustrates an example of a reconstructed mesh.
[00471] The reconstructed mesh illustrated in Figure 55 includes vertices A1, B1, C1, and D1 and vertices S1, T1, X1, Y1, and Z1. In the reconstructed mesh illustrated in Figure 55, the texture is applied to its faces formed with the vertices.
[00472] Next, another example of the interpellation process will be Petition 870250090886, dated 06 / 10 / 2025, pp. 257 / 283 95 / 104 described in detail.
[00473] In the first example of the interpellation process above (see Figure 52), the case where vertex X (corresponding to a third vertex) is the midpoint of segment PQ is described as an example. In the example, the 100 encoding device adds the plurality of first reconstructed displacement vectors with equal weights to generate the resultant vector and encodes the second displacement vectors using the generated resultant vector. In this way, the 100 encoding device adds the plurality of first reconstructed displacement vectors with equal weights. The 100 encoding device can thus generate the resultant vector through an easier computational process, contributing to the reduction of processing load or energy consumption. As a result, the 100 encoding device is able to enhance an encoding or decoding process related to three-dimensional data.
[00474] In the above case, the decoding device 200 adds the plurality of first reconstructed displacement vectors with equal weights to generate the resulting vector and encodes the second displacement vectors using the generated resulting vector. In this way, the decoding device 200 adds the plurality of first reconstructed displacement vectors with equal weights. The decoding device 200 can thus generate the resulting vector through an easier computational process, contributing to the reduction of processing load or energy consumption. As a result, the decoding device 200 is able to improve an encoding or decoding process related to three-dimensional data.
[00475] However, vertex X is not limited to the midpoint of segment PQ. That is, the ratio PX:QX between segment PX and segment QX is not limited to 1:1 and may be another ratio. In other words Petition 870250090886, dated 06 / 10 / 2025, pp. 258 / 283 96 / 104 vras, the 100 encoding device can add a plurality of reconstructed first displacement vectors with different weights to generate the resulting vector and can encode the second displacement vectors using the generated resulting vector. In this way, the 100 encoding device can generate the resulting vector more appropriately in some cases by adding a plurality of reconstructed first displacement vectors with different weights. For example, the weights for the plurality of first displacement vectors can be appropriately defined according to the parameters of the encoding process. In this case, the resulting vector can be generated appropriately according to the parameters of the encoding process. This can contribute to an improvement in the encoding or decoding process. As a result, the 100 encoding device is able to enhance an encoding or decoding process related to three-dimensional data.
[00476] In the above case, the decoding device 200 can add the plurality of first reconstructed displacement vectors with different weights to generate the resulting vector and can encode the second displacement vectors using the generated resulting vector. In this way, the decoding device 200 can generate the resulting vector more appropriately in some cases by adding the plurality of first reconstructed displacement vectors with different weights. For example, the weights for the plurality of first displacement vectors can be appropriately defined according to the parameters of the encoding process. In this case, the resulting vector can be generated appropriately according to the parameters of the encoding process. This can contribute to an improvement in the encoding or decoding process.As a result, the 200 decoding device is able to enhance an encoding or decoding process related to... Petition 870250090886, dated 06 / 10 / 2025, pages 259 / 283 97 / 104 of the three-dimensional ones.
[00477] Figure 56 is an explanatory diagram that illustrates a third example of the interpellation process.
[00478] The ratio PX:QX between segment PX and segment QX can be changed according to the position of the Y vertex inserted in the subdivision of a mesh. For example, in the case where segment AB is trisectioned in the subdivision process, PX:QX can be defined as 1:2 or 2:1 according to the position of the Y vertex on segment AB. In this case, the prediction vector YX for the vector YR is determined according to (Equation 1) and (Equation 2) shown below. - When PX:QX = 1:2, Equation 1 (Equation 1) - When PX:QX = 2:1, Equation 23 (Equation 2)
[00479] In this way, the 100 encoding device can obtain, from two second vertices, the Y vertex (i.e., a third vertex) positioned on the segment connecting the two second vertices using two first displacement vectors. In this way, the 100 encoding device can reduce the amount of information in the second displacement vector more easily in some cases, using the third vertex, which is defined on the segment connecting the two second vertices, as a reference point. As a result, the 100 encoding device is able to improve an encoding or decoding process related to three-dimensional data.
[00480] In the case above, for two second vertices, the device Petition 870250090886, dated 06 / 10 / 2025, pages 260 / 283 The 98 / 104 decoding device 200 can obtain, from two second vertices, the Y vertex (i.e., the third vertex) positioned on the segment connecting the two second vertices using two first displacement vectors. In this way, the 98 / 104 decoding device 200 can reduce the amount of information in the second displacement vector more easily in some cases, using the third vertex, which is defined on the segment connecting the two second vertices, as a reference point. As a result, the 98 / 104 decoding device 200 is able to improve an encoding or decoding process related to three-dimensional data.
[00481] Figure 57 is an explanatory diagram that illustrates a fourth example of the interpellation process.
[00482] The position of the vertex Y generated between the segment AB can be determined using not only vertices A and B, but also a plurality of vertices that are linked in the neighborhood of vertex Y.
[00483] For example, in the case where the position of vertex Y is also determined using the plurality of linked vertices in the neighborhood, the weighted averages of a set of coordinates of eight vertices A, B, C, D, E, F, G, and H that are linked in the neighborhood of vertex Y can be determined as the coordinates of vertex Y.
[00484] In this case, the YX prediction vector of the YR vector can be determined according to (Equation 3) shown below, where AY:BY is considered PX:QX. Here, consider AY:BY = wa:wb. wa or wb is a weighting coefficient that indicates the weight used for the calculation of the YX prediction vector and can be any numerical value, greater or less than zero. Equation 3 YX = (Equation 3) Petition 870250090886, dated 06 / 10 / 2025, pages 261 / 283 99 / 104
[00485] Note that although division by 3 or (wa + wb) is performed for the weighted average in the equations above, the scale parameter k can be multiplied as in (Equation 4) shown below, instead of division by 3 or (wa + wb). Equation 4 YX = kx (wb xÃP + wax BQ) (Equation 4)
[00486] The scale parameter k can be reported from encoding device 100 to decoding device 200 as an adjustment parameter per sequence, per frame or per sub-mesh.
[00487] Here, the value of the scale parameter k can be 1 / (wa + wb) or it can be a value other than (wa + wb). In the case where the value of the scale parameter k is 1 / (wa + wb), the sum of the weights is 1, and the point X is positioned on the line passing through points P and Q. In the case where the value of the scale parameter k is a value other than 1 / (wa + wb), the sum of the weights is not 1, and the point X is not positioned on the line passing through points P and Q.
[00488] Note that although the above description includes determining the ratio between PX and QX, the method for calculating the YX prediction vector using the AP vector and the BQ vector is not limited to this. For example, the 100 encoding device or the 200 decoding device can calculate the wb weighting coefficient by which the AP vector should be multiplied and the wa weighting coefficient by which the BQ vector should be multiplied based on the ratio between AY (the distance between vertex A and vertex Y) and BY (the distance between vertex B and vertex Y).
[00489] The encoding device 100 or the decoding device 200 may use a parameter other than a distance between vertices (for example, the magnitudes of the displacement vectors AP and BQ or any parameter from another decoded frame, etc.) to Petition 870250090886, dated 06 / 10 / 2025, pages 262 / 283 100 / 104 calculate the weighting coefficients wb and wa.
[00490] As seen above, the encoding and decoding methods described in the present invention can calculate the weighting coefficients wb and wa using information that includes the positions or connectivity ratio between encoded or decoded vertices or using a displacement vector. This can increase the accuracy of the YX prediction vector estimate and the encoding efficiency.
[00491] Note that the third vertex can be positioned in a location other than the segment connecting any two second vertices selected from a plurality of second vertices. For example, in the case of performing a subdivision using a plurality of vertices A to H connected in the neighborhood of vertex Y, vertex Y does not need to be positioned on the segment connecting any two of the plurality of vertices A to H, as in vertex Y illustrated in Figure 57. In other words, vertex Y can be positioned outside the segment connecting any two of the plurality of vertices A to H.
[00492] In this way, the encoding device 100 or the decoding device 200 can further reduce the amount of information in the second displacement vector, in some cases, using the third vertex, which is defined at a position that is not on the segment connecting any two second vertices of the plurality of second vertices, as a reference point. As a result, the encoding device 100 or the decoding device 200 is able to enhance an encoding or decoding process related to three-dimensional data. Other examples
[00493] Although aspects of the encoding device 100 and the decoding device 200 have been described up to this point according to the embodiment, aspects of the encoding device Petition 870250090886, dated 06 / 10 / 2025, pages 263 / 283 101 / 104 tion 100 and the decoding device 200 are not limited to the modality. Modifications that can be conceived by a specialist in the field can be applied to the modality, and a plurality of constituent elements in the modality can be combined in any way.
[00494] For example, processing performed by a specific constituent element in the modality can be performed by a different constituent element instead of the specific constituent element. In addition, the order of processes can be changed or processes can be performed in parallel.
[00495] Furthermore, as mentioned above, it is possible to implement, as an integrated circuit, at least part of the plurality of constituent elements of the present invention. At least part of the processes of the present invention can be used as an encoding method or a decoding method. A program to cause a computer to execute the encoding method or the decoding method can be used. In addition, a computer-readable non-transient recording medium on which the program is recorded can be used. Furthermore, a bitstream to cause the decoding device 200 to perform the decoding can be used.
[00496] Furthermore, at least part of the plurality of constituent elements and processes of the present invention can be used as a transmission device, a reception device, a transmission method, and a reception method. A program can be used to cause a computer to execute the transmission method or the reception method. In addition, a non-transient, computer-readable recording medium can be used on which the program is recorded. Industrial Applicability Petition 870250090886, dated 06 / 10 / 2025, pages 264 / 283 102 / 104
[00497] The present invention is useful in, for example, an encoding device, a decoding device, a transmission device, a reception device and the like related to a three-dimensional mesh and can be applied to a computer graphics system, a three-dimensional data display system and the like. List of Reference Signs 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 post-processor 110 three-dimensional data encoding system 111,211 controller 112, 212 input / output processor 113 Three-dimensional data encoder 114 system multiplexer 115 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 Petition 870250090886, dated 06 / 10 / 2025, pages 265 / 283 103 / 104 152, 252 memory 200 decoding device 201,221,244 vertex information decoder 202, 245 connection information decoder 203, 222 attribute information decoder 210 three-dimensional data decoding system 213 three-dimensional data decoder 214 system demultiplexer 215, 247 presenter 216 user interface 223 metadata decoder 224 demultiplexer 231 vertex information generator 232 attribute information generator 234 video decoder 241 two-dimensional data decoder 242 mesh data decoder 243 texture decoder 246 mesh reconstructor 248 description decoder 300 network 310 external connector 1101 input mesh 1102, 2108 attribute map 1104, 2103 base mesh 1105, 2104 displacement data 1106 compressor 1107, 1304, 2101 bit stream 1108, 2105 metadata 1201 decimator Petition 870250090886, dated 06 / 10 / 2025, pages 266 / 283 104 / 104 1202, 1209 quantizer 1203 base mesh encoder 1204, 2202 base mesh decoder 1205, 2203, 2207 quantization inverter 1206, 2204 subdivisor 1207 displacement vector calculator 1208 wavelet transformer 1210 image packer 1211, 1213 video encoder 1212,2211 color converter 1214 multiplexer 1221, 1222, 2221, 2222 switch 1223 arithmetic encoder 1301,2304 mesh frame 1302, 2301, 2302 base mesh frame 1303, 2303 travel information 2102 decompressor 2107 output loop 2201 demultiplexer 2205, 2210 video decoder 2206 image unpacker 2208 reverse wavelet transformer 2209 reconstructor 2223 arithmetic decoder 6001, 6002, 6101, 6102 mesh Petition 870250090886, dated 06 / 10 / 2025, pages 267 / 283
Claims
1 / 4 CLAIMS 1. Encoding device, characterized in that it comprises: memory; and a memory-accessible circuit, wherein in operation, the circuit encodes, for each of the vertices included in a three-dimensional mesh, displacement data to be used to derive a displacement vector, the displacement vector indicating a displacement from a first position of a vertex generated using a base mesh, and the vertices include a first vertex, a second vertex and a third vertex, and the displacement data of the first vertex indicates a difference between the displacement vector of the first vertex and a combined vector of the displacement vector of the second vertex and the displacement vector of the third vertex.
2. Encoding device according to claim 1, characterized in that the circuit generates the combined vector by equally weighting and combining the displacement vector of the second vertex and the displacement vector of the third vertex, and encodes the displacement data of the first vertex using the generated combined vector.
3. Encoding device according to claim 1, characterized in that the circuit generates the combined vector by weighting and combining differently the displacement vector of the second vertex and the displacement vector of the third vertex, and encodes the displacement data of the first vertex using the generated combined vector.
4. Encoding device according to claim 1, characterized in that Petition 870250090886, dated 06 / 10 / 2025, pp. 268 / 283 2 / 4 the combined vector is generated by weighting and combining displacement vectors, including the displacement vector of the second vertex and the displacement vector of the third vertex, and the sum of the weighting factors is 1.
5. Encoding device according to claim 1, characterized in that the combined vector is generated by weighting and combining displacement vectors, including the displacement vector of the second vertex and the displacement vector of the third vertex, and the sum of the weighting factors is not 1.
6. Decoding device, characterized in that it comprises: memory; and a memory-accessible circuit, wherein in operation, the circuit decodes, for each of the vertices included in a three-dimensional mesh, displacement data to be used to derive a displacement vector, the displacement vector indicating a displacement from a first position of a vertex generated using a base mesh, the vertices including a first vertex, a second vertex and a third vertex, and the circuit generates the displacement vector of the first vertex using the displacement data of the first vertex and a combined vector of the displacement vector of the second vertex and the displacement vector of the third vertex.
7. Decoding device according to claim 6, characterized in that the circuit generates the combined vector by equally weighting and combining the displacement vector of the second vertex and the displacement vector of the third vertex, and decodes the displacement data of the first vertex using the generated combined vector.
8. Decoding device according to claim 6, characterized in that the circuit generates the combined vector by weighting and combining differently the displacement vector of the second vertex and the displacement vector of the third vertex, and decodes the displacement data of the first vertex using the generated combined vector.
9. Decoding device according to claim 6, characterized in that the combined vector is generated by weighting and combining displacement vectors, including the displacement vector of the second vertex and the displacement vector of the third vertex, and the sum of the weighting factors is 1.
10. Decoding device according to claim 6, characterized in that the combined vector is generated by weighting and combining displacement vectors, including the displacement vector of the second vertex and the displacement vector of the third vertex, and the sum of the weighting factors is not 1.
11. Encoding method, characterized in that it comprises: encoding, for each of the vertices included in a three-dimensional mesh, displacement data to be used to derive a displacement vector, the displacement vector indicating a displacement from a first position of a vertex generated using a base mesh, wherein the vertices include a first vertex, a second vertex and a third vertex, and the displacement data of the first vertex indicates a difference between the displacement vector of the first vertex and a combined vector of the displacement vector of the second vertex and the displacement vector of the third vertex.
12. Decoding method, characterized in that it comprises: decoding, for each of the vertices included in a three-dimensional mesh, displacement data to be used to derive a displacement vector, the displacement vector indicating a displacement from a first position of a vertex generated using a base mesh, the vertices including a first vertex, a second vertex and a third vertex; and generating the displacement vector of the first vertex using the displacement data of the first vertex and a combined vector of the displacement vector of the second vertex and the displacement vector of the third vertex. Petition 870250090886, dated 06 / 10 / 2025, pp. 271 / 283