Encoding method, decoding method, encoding apparatus, and decoding apparatus
Patent Information
- Application Number
- CN202580022857.X
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2024-04-09
- Filing Date
- 2025-04-03
- Publication Date
- 2026-10-27
AI Technical Summary
本公开有助于改进与三维网格的顶点的坐标有关的编码处理等。
Smart Images

Figure CN122996660A_ABST
Abstract
Description
Technical Field
[0001] This disclosure relates to encoding methods, etc. Background Technology
[0002] Patent document 1 discloses a method and apparatus for encoding and decoding three-dimensional mesh data.
[0003] Existing technical documents Patent documents Patent Document 1: Japanese Patent Application Publication No. 2006-187015 Summary of the Invention
[0004] The problem that the invention aims to solve Further improvements are desired in the processing of encoding or decoding related to the coordinates of vertices in a 3D mesh. The purpose of this disclosure is to improve the processing of encoding or decoding related to the coordinates of vertices in a 3D mesh.
[0005] Methods for solving problems One aspect of the present invention is an encoding method for encoding the coordinates of vertices contained in a three-dimensional mesh, wherein a predicted value of the coordinates of the first vertex is derived using the coordinates of three vertices that are different from the first vertex among a plurality of vertices connected to a second vertex that is a first vertex being encoded, and the difference between the predicted value and the coordinates of the first vertex is encoded.
[0006] Furthermore, these general or specific methods can be implemented through systems, devices, integrated circuits, computer programs, or recording media such as computer-readable CD-ROMs, or through any combination of systems, devices, integrated circuits, computer programs, and recording media.
[0007] Invention Effects This disclosure helps to improve coding processes related to the coordinates of vertices in a 3D mesh. Attached Figure Description
[0008] Figure 1 This is a conceptual diagram representing a three-dimensional mesh used in the implementation.
[0009] Figure 2 This is a conceptual diagram representing the basic elements of a three-dimensional mesh used in the implementation method.
[0010] Figure 3 This is a conceptual diagram representing the mapping of implementation methods.
[0011] Figure 4 This is a block diagram illustrating a structural example of an encoding / decoding system according to an implementation method.
[0012] Figure 5This is a block diagram illustrating a structural example of an encoding device according to an implementation method.
[0013] Figure 6 This is a block diagram illustrating another structural example of the encoding device in an embodiment.
[0014] Figure 7 This is a block diagram illustrating a structural example of a decoding device according to an implementation method.
[0015] Figure 8 This is a block diagram illustrating another structural example of the decoding device in an embodiment.
[0016] Figure 9 This is a conceptual diagram representing a structural example of a bitstream implementation.
[0017] Figure 10 This is a conceptual diagram representing another structural example of a bitstream implementation.
[0018] Figure 11 This is a conceptual diagram representing another structural example of a bitstream implementation.
[0019] Figure 12 This is a block diagram illustrating a specific example of an encoding / decoding system implemented in this way.
[0020] Figure 13 This is a conceptual diagram representing a structural example of point group data in an implementation method.
[0021] Figure 14 This is a conceptual diagram representing a data file example of point group data in an implementation method.
[0022] Figure 15 This is a conceptual diagram representing a structural example of grid data in an implementation method.
[0023] Figure 16 This is a conceptual diagram representing a data file example of grid data in an implementation method.
[0024] Figure 17 This is a conceptual diagram representing the types of three-dimensional data used in the implementation.
[0025] Figure 18 This is a block diagram illustrating a structural example of a three-dimensional data encoder according to an implementation method.
[0026] Figure 19 This is a block diagram illustrating a structural example of a three-dimensional data decoder implementation.
[0027] Figure 20 This is a block diagram illustrating another structural example of a three-dimensional data encoder according to an implementation method.
[0028] Figure 21 This is a block diagram illustrating another structural example of a three-dimensional data decoder implementation.
[0029] Figure 22 This is a conceptual diagram representing a specific example of the encoding process in the implementation method.
[0030] Figure 23 This is a conceptual diagram representing a specific example of the decoding process in the implementation method.
[0031] Figure 24 This is a block diagram illustrating an implementation example of the encoding device in the embodiment.
[0032] Figure 25 This is a block diagram illustrating an implementation example of the decoding device in the embodiment.
[0033] Figure 26 This is a block diagram illustrating another structural example of an encoding / decoding system according to an implementation method.
[0034] Figure 27 This is a block diagram illustrating another structural example of the encoding device in an embodiment.
[0035] Figure 28 This is a block diagram illustrating another structural example of the decoding device in an embodiment.
[0036] Figure 29 This is a flowchart illustrating the processing of the encoding device in the implementation method.
[0037] Figure 30 This is an explanatory diagram that conceptually represents the encoding of a grid frame in an implementation method.
[0038] Figure 31 This is a flowchart illustrating the processing of the decoding device in the implementation method.
[0039] Figure 32 This is an explanatory diagram conceptually representing the decoding of a grid frame in an implementation method.
[0040] Figure 33 This is an explanatory diagram illustrating an example of a method for predicting the coordinates of vertices in an implementation.
[0041] Figure 34 This is an explanatory diagram illustrating an example of a method for predicting the coordinates of vertices in an implementation.
[0042] Figure 35 This is an explanatory diagram illustrating an example of a method for predicting the coordinates of vertices in an implementation.
[0043] Figure 36 This is an explanatory diagram illustrating an example of a method for predicting the coordinates of vertices in an implementation.
[0044] Figure 37 This is an explanatory diagram illustrating an example of a method for predicting the coordinates of vertices in an implementation.
[0045] Figure 38 This is a flowchart illustrating an example of the processing of the encoding device in an implementation method.
[0046] Figure 39 This is a flowchart illustrating an example of the processing of the decoding device in an implementation method.
[0047] Figure 40 This is a flowchart illustrating an example of the processing of the encoding device in an implementation method.
[0048] Figure 41 This is a flowchart illustrating an example of the processing of the decoding device in an implementation method.
[0049] Figure 42 This is an explanatory diagram illustrating an example of a method for predicting the coordinates of vertices in an implementation.
[0050] Figure 43 This is an explanatory diagram illustrating an example of a method for predicting the coordinates of vertices in an implementation.
[0051] Figure 44 This is a flowchart illustrating an example of the decision-making process for the predicted value in an implementation method.
[0052] Figure 45 This is a flowchart illustrating an example of the encoding process in an implementation method.
[0053] Figure 46 This is a flowchart illustrating an example of the decoding process in an implementation method.
[0054] Figure 47 This is an explanatory diagram illustrating an example of a method for predicting the coordinates of vertices in an implementation.
[0055] Figure 48 This is an explanatory diagram illustrating an example of a method for predicting the coordinates of vertices in an implementation.
[0056] Figure 49 This is an explanatory diagram illustrating an example of a method for predicting the coordinates of vertices in an implementation.
[0057] Figure 50 This is an explanatory diagram illustrating an example of a method for predicting the coordinates of vertices in an implementation.
[0058] Figure 51 This is an explanatory diagram illustrating an example of a method for predicting the coordinates of vertices in an implementation.
[0059] Figure 52 This is an explanatory diagram illustrating an example of a method for predicting the coordinates of vertices in an implementation.
[0060] Figure 53 This is a flowchart illustrating an example of the encoding process in an implementation method.
[0061] Figure 54 This is a flowchart illustrating an example of the decoding process in an implementation method. Detailed Implementation
[0062] <Summary of this disclosure> For example, three-dimensional (3D) meshes are used in computer graphics. For instance, a computer graphics image might consist of multiple frames that are distinct in time, each represented by a 3D mesh.
[0063] Furthermore, a 3D mesh consists of vertex information representing the positions of multiple vertices in 3D space, connection information representing the connections between these vertices, and attribute information representing the properties of each vertex or face. Each face is constructed based on the connection relationships between multiple vertices. Such a 3D mesh can be used to represent various computer graphics and images.
[0064] Furthermore, efficient encoding and decoding of 3D meshes are desired for transmission and storage. Arithmetic encoding and decoding can be used for efficient encoding and decoding of 3D meshes.
[0065] Further improvements are desired in the processing of encoding or decoding related to three-dimensional data. The purpose of this disclosure is to improve the processing of encoding or decoding related to three-dimensional data.
[0066] The inventions obtained from the disclosure of this specification will be illustrated below, and the effects obtained by the inventions will be explained.
[0067] (1) An encoding method for encoding the coordinates of vertices contained in a three-dimensional mesh, wherein, in encoding the coordinates of a first vertex, a predicted value of the coordinates of a second vertex different from the first vertex is derived by a first prediction process, at least the predicted value of the coordinates of the second vertex is used, a predicted value of the coordinates of the first vertex is derived by a second prediction process, and the difference between the predicted value of the coordinates of the first vertex and the coordinates of the first vertex is encoded.
[0068] According to the above method, predicted values for the coordinates of a second vertex that is not part of the encoded object are derived through a prediction process (i.e., the first prediction process), and the predicted values for the coordinates of the first vertex are derived through a prediction process (i.e., the second prediction process) using the derived predicted values for the coordinates of the second vertex. If the accuracy of one or both of the above prediction processes is relatively high, the derived predicted values may be appropriate. Therefore, it is possible to improve the accuracy of the encoding of the first vertex, and also to reduce the amount of encoding. Thus, the above encoding method can help improve the encoding processing related to the coordinates of vertices in a 3D mesh.
[0069] (2) According to the encoding method described in (1), wherein the first prediction process includes the following process: using the coordinates of three vertices that are different from the second vertex among a plurality of vertices connected to the third vertex connected to the second vertex, to derive the predicted value of the coordinates of the second vertex.
[0070] According to the above method, when the coordinates of the three vertices are closely related to the position of the second vertex, the predicted value derived through the first prediction process may become an appropriate value that is close to the coordinates of the three vertices. This can improve the encoding accuracy of the second vertex, which in turn may improve the encoding accuracy of the first vertex, and may also reduce the amount of encoding. Thus, the above encoding method can help improve the encoding processing related to the coordinates of the vertices of a 3D mesh.
[0071] (3) According to the encoding method described in (2), the first prediction process includes the following process: using two vertices connected to the second vertex, namely the fourth vertex and the fifth vertex, and a vertex not connected to the second vertex, namely the sixth vertex, as the three vertices to derive the prediction value, wherein the difference between the coordinates of the fifth vertex and the coordinates of the sixth vertex is twice the difference between the predicted value of the coordinates of the second vertex and the coordinates of the fourth vertex.
[0072] According to the above method, when deriving the predicted coordinates of the second vertex in the first prediction process, the coordinates of one vertex other than the aforementioned three vertices, which is part of a trapezoid formed by at least four vertices including the fourth, fifth, and sixth vertices, are calculated. This makes it potentially easier to derive the appropriate predicted values. Thus, the above encoding method can more easily contribute to improving the encoding process related to the coordinates of vertices in a 3D mesh.
[0073] (4) According to the encoding method described in (2), wherein the second prediction process includes the following process: using the coordinates of three vertices that are different from the first vertex among a plurality of vertices connected to the seventh vertex connected to the first vertex, at least one of the coordinates of the three vertices is the predicted value derived by the first prediction process.
[0074] According to the above method, when the coordinates of the three vertices are highly correlated with the position of the first vertex, the predicted value derived through the second prediction process may become an appropriate value that is relatively close to the coordinates of the three vertices. Therefore, it is possible to improve the accuracy of the encoding of the first vertex and, moreover, to reduce the amount of encoding. Thus, the above encoding method can help improve the encoding processing related to the coordinates of vertices in a 3D mesh.
[0075] (5) According to the encoding method described in (2), the second prediction process includes the following process: using the coordinates of two vertices connected to the first vertex, namely the eighth vertex and the ninth vertex, and the coordinates of the tenth vertex connected to the eighth vertex and the ninth vertex but not connected to the first vertex, to derive a predicted value of the coordinates of the first vertex, wherein at least one of the coordinates of the eighth vertex, the ninth vertex and the tenth vertex is the predicted value derived by the first prediction process.
[0076] According to the above method, when deriving the predicted coordinates of the first vertex in the second prediction process, the coordinates of one vertex other than the aforementioned three vertices of the parallelogram formed by four vertices, including at least the eighth, ninth, and tenth vertices, are calculated. This makes it potentially easier to derive the appropriate predicted values. Thus, the above encoding method can more easily contribute to improving the encoding process related to the coordinates of vertices in a 3D mesh.
[0077] (6) According to the encoding method of (1), wherein the second prediction process includes the following process: using the coordinates of three vertices that are different from the first vertex among a plurality of vertices connected to the seventh vertex connected to the first vertex, at least one of the coordinates of the first vertex is the predicted value derived by the first prediction process.
[0078] According to the above method, when the coordinates of the three vertices are highly correlated with the position of the first vertex, the predicted value derived through the second prediction process may become an appropriate value that is relatively close to the coordinates of the three vertices. Therefore, it is possible to improve the accuracy of the encoding of the first vertex and, moreover, to reduce the amount of encoding. Thus, the above encoding method can help improve the encoding processing related to the coordinates of vertices in a 3D mesh.
[0079] (7) According to the encoding method described in (4), the second prediction process includes the following process: using two vertices connected to the first vertex, namely the eleventh and twelfth vertices, and a vertex not connected to the first vertex, namely the thirteenth vertex, as the three vertices to derive the prediction value, wherein the difference between the coordinates of the twelfth vertex and the coordinates of the thirteenth vertex is twice the difference between the predicted value of the coordinates of the first vertex and the coordinates of the eleventh vertex.
[0080] According to the above method, when deriving the predicted coordinates of the first vertex in the second prediction process, the coordinates of one vertex other than the aforementioned three vertices in the trapezoid formed by at least four vertices, including the eleventh, twelfth, and thirteenth vertices, are calculated. This makes it potentially easier to derive the appropriate predicted value. Thus, the above encoding method can more easily contribute to improving the encoding process related to the coordinates of vertices in a 3D mesh.
[0081] (8) According to the encoding method described in (6), wherein the first prediction process includes the following process: using the coordinates of the two vertices connected to the second vertex, namely the fourteenth vertex and the fifteenth vertex, and the coordinates of the sixteenth vertex connected to the fourteenth vertex and the fifteenth vertex but not connected to the first vertex, to derive the predicted value of the coordinates of the second vertex.
[0082] According to the above method, when deriving the predicted coordinates of the second vertex in the first prediction process, the coordinates of one vertex other than the three vertices of the parallelogram formed by four vertices, including at least the fourteenth, fifteenth, and sixteenth vertices, are calculated. This makes it easier to derive the appropriate predicted values. Thus, the above encoding method can more easily contribute to improving the encoding process related to the coordinates of vertices in a 3D mesh.
[0083] (9) A decoding method for decoding the coordinates of vertices contained in a three-dimensional mesh, wherein, in decoding the coordinates of a first vertex, a predicted value of the coordinates of a second vertex different from the first vertex is derived through a first prediction process, at least the predicted value of the coordinates of the second vertex is used, a predicted value of the coordinates of the first vertex is derived through a second prediction process, the difference between the predicted value and the coordinates of the first vertex is decoded, and the coordinates of the first vertex are restored using the predicted value and the difference value.
[0084] According to the above method, predicted values for the coordinates of a second vertex that is not the object to be decoded are derived through a prediction process (i.e., the first prediction process), and the predicted values for the coordinates of the first vertex are derived through a prediction process (i.e., the second prediction process) using the derived predicted values for the coordinates of the second vertex. If the accuracy of one or both of the above prediction processes is relatively high, the derived predicted values may be appropriate. Therefore, it is possible to improve the decoding accuracy of the first vertex and, moreover, to reduce the amount of encoding. Thus, the above decoding method can help improve the decoding process related to the coordinates of vertices in a 3D mesh.
[0085] (10) According to the decoding method of (9), wherein the first prediction process includes the following process: using the coordinates of three vertices that are different from the second vertex among a plurality of vertices connected to the third vertex connected to the second vertex, to derive the predicted value of the coordinates of the second vertex.
[0086] According to the above method, when the coordinates of the three vertices are closely related to the position of the second vertex, the predicted value derived through the first prediction process may become an appropriate value that is close to the coordinates of the three vertices. This can improve the decoding accuracy of the second vertex, and consequently, may improve the decoding accuracy of the first vertex. Furthermore, it may reduce the amount of encoding. Thus, the above decoding method can help improve the decoding process related to the coordinates of the vertices of a 3D mesh.
[0087] (11) According to the decoding method described in (10), the first prediction process includes the following process: using two vertices connected to the second vertex, namely the fourth vertex and the fifth vertex, and a vertex not connected to the second vertex, namely the sixth vertex, as the three vertices to derive the prediction value, wherein the difference between the coordinates of the fifth vertex and the coordinates of the sixth vertex is twice the difference between the predicted value of the coordinates of the second vertex and the coordinates of the fourth vertex.
[0088] According to the above method, when deriving the predicted coordinates of the second vertex in the first prediction process, the coordinates of one vertex other than the aforementioned three vertices, which is part of a trapezoid formed by at least four vertices including the fourth, fifth, and sixth vertices, are calculated. This makes it potentially easier to derive the appropriate predicted values. Thus, the above decoding method can more easily contribute to improving the decoding process related to the coordinates of vertices in a 3D mesh.
[0089] (12) According to the decoding method of (10), wherein the second prediction process includes the following process: using the coordinates of three vertices that are different from the first vertex among a plurality of vertices connected to the seventh vertex connected to the first vertex, at least one of the coordinates of the first vertex is the predicted value derived by the first prediction process.
[0090] Based on the above method, when the coordinates of the three vertices are highly correlated with the position of the first vertex, the predicted value derived through the second prediction process may become an appropriate value that is relatively close to the coordinates of the three vertices. Therefore, it is possible to improve the decoding accuracy of the first vertex and potentially reduce the amount of encoding. Thus, the above decoding method can help improve the decoding processing related to the coordinates of vertices in a 3D mesh.
[0091] (13) According to the decoding method of (10), the second prediction process includes the following process: using the coordinates of two vertices connected to the first vertex, namely the eighth vertex and the ninth vertex, and the coordinates of the tenth vertex connected to the eighth vertex and the ninth vertex but not connected to the first vertex, to derive a predicted value of the coordinates of the first vertex, wherein at least one of the coordinates of the eighth vertex, the ninth vertex and the tenth vertex is the predicted value derived by the first prediction process.
[0092] According to the above method, when deriving the predicted coordinates of the first vertex in the second prediction process, the coordinates of one vertex other than the aforementioned three vertices of the parallelogram formed by four vertices, including at least the eighth, ninth, and tenth vertices, are calculated. This makes it potentially easier to derive the appropriate predicted values. Thus, the above decoding method can more easily contribute to improving the decoding process related to the coordinates of vertices in a 3D mesh.
[0093] (14) According to the decoding method of (9), the second prediction process includes the following process: using the coordinates of three vertices that are different from the first vertex among a plurality of vertices connected to the seventh vertex connected to the first vertex, at least one of the coordinates of the first vertex is the predicted value derived by the first prediction process.
[0094] Based on the above method, when the coordinates of the three vertices are highly correlated with the position of the first vertex, the predicted value derived through the second prediction process may become an appropriate value that is relatively close to the coordinates of the three vertices. Therefore, it is possible to improve the decoding accuracy of the first vertex and potentially reduce the amount of encoding. Thus, the above decoding method can help improve the decoding processing related to the coordinates of vertices in a 3D mesh.
[0095] (15) According to the decoding method described in (12), the second prediction process includes the following process: using two vertices connected to the first vertex, namely the eleventh and twelfth vertices, and a vertex not connected to the first vertex, namely the thirteenth vertex, as the three vertices to derive the prediction value, wherein the difference between the coordinates of the twelfth vertex and the coordinates of the thirteenth vertex is twice the difference between the predicted value of the coordinates of the first vertex and the coordinates of the eleventh vertex.
[0096] According to the above method, when deriving the predicted coordinates of the first vertex in the second prediction process, the coordinates of one vertex other than the aforementioned three vertices in the trapezoid formed by at least four vertices, including the eleventh, twelfth, and thirteenth vertices, are calculated. This makes it potentially easier to derive the appropriate predicted value. Thus, the above decoding method can more easily contribute to improving the decoding process related to the coordinates of vertices in a 3D mesh.
[0097] (16) According to the decoding method described in (14), the first prediction process includes the following process: using the coordinates of the two vertices connected to the second vertex, namely the fourteenth vertex and the fifteenth vertex, and the coordinates of the sixteenth vertex connected to the fourteenth vertex and the fifteenth vertex but not connected to the first vertex, to derive the predicted value of the coordinates of the second vertex.
[0098] According to the above method, when deriving the predicted coordinates of the second vertex in the first prediction process, the coordinates of one vertex other than the aforementioned three vertices of the parallelogram formed by four vertices, including at least the fourteenth, fifteenth, and sixteenth vertices, are calculated. This makes it potentially easier to derive the appropriate predicted values. Thus, the above decoding method can more easily contribute to improving the decoding process related to the coordinates of vertices in a 3D mesh.
[0099] (17) An encoding apparatus comprising: a memory; and circuitry capable of accessing the memory, the circuitry executing, in operation, an encoding method for encoding the coordinates of vertices contained in a three-dimensional mesh, wherein, in encoding the coordinates of a first vertex, a predicted value of the coordinates of a second vertex different from the first vertex is derived by a first prediction process, at least using the predicted value of the coordinates of the second vertex, a predicted value of the coordinates of the first vertex is derived by a second prediction process, and the difference between the predicted value of the coordinates of the first vertex and the coordinates of the first vertex is encoded.
[0100] According to the above method, the encoding device achieves the same effect as the encoding method described above.
[0101] (18) A decoding apparatus comprising: a memory; and circuitry capable of accessing the memory, the circuitry executing a decoding method for decoding the coordinates of vertices contained in a three-dimensional mesh, wherein, in decoding the coordinates of a first vertex, a predicted value of the coordinates of a second vertex different from the first vertex is derived by a first prediction process, at least using the predicted value of the second vertex's coordinates, a predicted value of the coordinates of the first vertex is derived by a second prediction process, the difference between the predicted value and the coordinates of the first vertex is decoded, and the coordinates of the first vertex are recovered using the predicted value and the difference value.
[0102] According to the above method, the decoding device achieves the same effect as the decoding method described above.
[0103] Furthermore, these general or specific methods can be implemented by systems, devices, integrated circuits, computer programs, or recording media such as computer-readable CD-ROMs, or by any combination of systems, devices, integrated circuits, computer programs, or recording media.
[0104] The embodiments will now be described in detail with reference to the accompanying drawings.
[0105] Furthermore, the embodiments described below are general or specific examples. The numerical values, shapes, materials, constituent elements, arrangement positions of constituent elements, connection methods, steps, and order of steps shown in the following embodiments are examples and are not intended to limit the present invention. In addition, any constituent elements in the following embodiments that are not described in the independent claims representing the highest-level concept are described as arbitrary constituent elements.
[0106] (Implementation Method) In this embodiment, the encoding method and the decoding method are described.
[0107] <Performance and Terminology> Here, the following expressions and terms are used.
[0108] (1) Three-dimensional mesh A 3D mesh is a collection of faces, representing, for example, a 3D object. Furthermore, a 3D mesh primarily consists of vertex information, connectivity information, and attribute information. 3D meshes are sometimes represented as polygon meshes or grids. Additionally, 3D meshes can vary over time. A 3D mesh can contain metadata related to vertex, connectivity, and attribute information, as well as other additional information.
[0109] (2) Vertex information Vertex information represents information about vertices. For example, vertex information indicates the position of a vertex in three-dimensional space. Additionally, vertices correspond to the vertices of the faces that make up a three-dimensional mesh. Vertex information is sometimes represented as "geometric information." It can also sometimes be represented as positional information.
[0110] (3) Connection information Connection information represents the connections between vertices. For example, connection information represents the connections between faces or edges used to form a 3D mesh. Connection information is sometimes expressed as "Connectivity". Additionally, connection information can sometimes be expressed as face information.
[0111] (4) Attribute information Attribute information represents the properties of a vertex or face. For example, attribute information represents the color, image, and normal vectors corresponding to a vertex or face. Attribute information is sometimes represented as "Texture".
[0112] (5) face A face is an element that constitutes a three-dimensional mesh. Specifically, a face is a polygon on a plane in three-dimensional space. For example, a face can be defined as a triangle in three-dimensional space.
[0113] (6) Plane A plane is a two-dimensional plane in three-dimensional space. For example, a polygon can be formed on a plane, and multiple polygons can be formed on multiple planes.
[0114] (7) Bit stream A bitstream corresponds to encoded information. Bitstreams can also be represented as streams, encoded bitstreams, compressed bitstreams, or encoded signals.
[0115] (8) Encoding and Decoding Encoding can be replaced by other representations such as saving, containing, writing, recording, signaling, sending, notifying, storing, or compressing, and these representations can also be interchanged. For example, encoding information can mean including the information in a bitstream. Furthermore, encoding information into a bitstream can mean encoding the information to generate a bitstream containing the encoded information.
[0116] Furthermore, the concept of decoding can be replaced by reading, interpreting, reading, inputting, exporting, obtaining, receiving, extracting, restoring, reconstructing, compressing / decompressing, etc., and these concepts can also be interchanged. For example, decoding information can mean obtaining information from a bitstream. Additionally, decoding information from a bitstream can mean decoding the bitstream itself to obtain the information contained within it.
[0117] (9) Ordinal number In the description, first and second ordinal numbers are sometimes attached to constituent elements, etc. These ordinal numbers can be changed as appropriate. In addition, new ordinal numbers can be assigned to constituent elements, etc., or ordinal numbers can be removed. Furthermore, regarding these ordinal numbers, they are sometimes assigned to elements for identification purposes, and sometimes they do not correspond to a meaningful order.
[0118] 3D Mesh Figure 1 This is a conceptual diagram representing a three-dimensional mesh according to this embodiment. The three-dimensional mesh is composed of multiple faces. For example, each face is a triangle. The vertices of these triangles are defined in three-dimensional space. Furthermore, the three-dimensional mesh represents a three-dimensional object. Each face may have color or an image.
[0119] Figure 2 This is a conceptual diagram representing the basic elements of the three-dimensional mesh in this embodiment. The three-dimensional mesh consists of vertex information, connection information, and attribute information. Vertex information represents the position of the vertices of a face in three-dimensional space. Connection information represents the connections between vertices. A face can be determined by vertex information and connection information. That is, through vertex information and connection information, a colorless three-dimensional object is formed in three-dimensional space.
[0120] Attribute information can be mapped to vertices or faces. Attribute information corresponding to vertices is sometimes expressed as "Attribute Per Point". Attribute information corresponding to vertices can represent the attributes of the vertex itself or the attributes of the faces connected to the vertex.
[0121] For example, color can be used as attribute information to establish a correspondence with vertices. The color corresponding to a vertex can be the color of the vertex itself, or the color of the face connected to that vertex. The color of a face can be the average of multiple colors corresponding to multiple vertices of the face. Furthermore, normal vectors can be used as attribute information to establish a correspondence with vertices or faces. Such normal vectors can represent the front and back faces of a face.
[0122] Alternatively, two-dimensional images can be used as attribute information to establish a correspondence with faces. The two-dimensional image corresponding to a face is also represented as a texture image or an "attribute map". Alternatively, information representing the mapping between a face and a two-dimensional image can also be used as attribute information to establish a correspondence with the face. Information representing such a mapping is sometimes represented as mapping information, vertex information of the texture image, texture coordinates, or "attribute UV coordinates".
[0123] Furthermore, information such as color, images, and motion graphics used as attribute information is sometimes represented as "Parametric Space".
[0124] This attribute information allows textures to be reflected in three-dimensional objects. That is, by using vertex information, connectivity information, and attribute information, colored three-dimensional objects can be formed in three-dimensional space.
[0125] In addition, as described above, attribute information corresponds to vertices or faces, but it can also correspond to edges.
[0126] Figure 3 This is a conceptual diagram illustrating the mapping in this embodiment. For example, a region of a two-dimensional image in a two-dimensional plane can be mapped to a surface of a three-dimensional mesh in three-dimensional space. Specifically, the coordinate information of a region in the two-dimensional image is mapped to a surface of the three-dimensional mesh. Thus, an image reflecting the mapped region of the two-dimensional image is generated on the surface of the three-dimensional mesh.
[0127] By using mapping, it is possible to separate the two-dimensional image used as attribute information from the three-dimensional mesh. For example, in the encoding of the three-dimensional mesh, the two-dimensional image can be encoded using image encoding or video encoding methods.
[0128] <System Structure> Figure 4 This is a block diagram illustrating a structural example of the encoding / decoding system according to this embodiment. Figure 4 The encoding and decoding system includes an encoding device 100 and a decoding device 200.
[0129] For example, encoding device 100 acquires a three-dimensional mesh and encodes it into a bitstream. Then, encoding device 100 outputs the bitstream to network 300. For example, the bitstream contains the encoded three-dimensional mesh and control information for decoding the encoded three-dimensional mesh. By encoding the three-dimensional mesh, its information is compressed.
[0130] 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 limited to two-way communication; it can also be a one-way communication network used for terrestrial digital broadcasting or satellite broadcasting, etc.
[0131] Alternatively, the Network 300 can be replaced by recording media such as DVD (Digital Versatile Disc) or BD (Blu-Ray Disc (registered trademark)).
[0132] Decoding device 200 acquires the bitstream and decodes the 3D mesh from the bitstream. Through decoding the 3D mesh, its information is decompressed. For example, decoding device 200 decodes the 3D mesh using a decoding method corresponding to the encoding method used by encoding device 100 to encode the 3D mesh. That is, encoding device 100 and decoding device 200 perform encoding and decoding according to their respective encoding and decoding methods.
[0133] Furthermore, the 3D mesh before encoding can also be represented as the original 3D mesh. Additionally, the 3D mesh after decoding can also be represented as a reconstructed 3D mesh.
[0134] <Encoding device> Figure 5 This is a block diagram illustrating a structural example of the encoding apparatus 100 according to this embodiment. For example, the encoding apparatus 100 includes a vertex information encoder 101, a connection information encoder 102, and an attribute information encoder 103.
[0135] Vertex information encoder 101 is a circuit that encodes vertex information. For example, vertex information encoder 101 encodes vertex information into a bit stream according to a specified format for vertex information.
[0136] The connection information encoder 102 is a circuit that encodes connection information. For example, the connection information encoder 102 encodes the connection information into a bit stream according to a specified format.
[0137] The attribute information encoder 103 is a circuit that encodes attribute information. For example, the attribute information encoder 103 encodes the attribute information into a bit stream according to a specified format.
[0138] Vertex information, connectivity information, and attribute information can be encoded using either variable-length encoding or fixed-length encoding. Variable-length encoding can correspond to Huffman coding or context-adaptive binary arithmetic coding (CABAC), etc.
[0139] Vertex information encoder 101, connection information encoder 102, and attribute information encoder 103 can be integrated into one unit. Alternatively, vertex information encoder 101, connection information encoder 102, and attribute information encoder 103 can be further subdivided into multiple constituent elements.
[0140] Figure 6 This is a block diagram illustrating another structural example of the encoding device 100 according to this embodiment. For example, the encoding device 100, in addition to... Figure 5 In addition to the structure shown, it also includes a preprocessor 104 and a postprocessor 105.
[0141] The preprocessor 104 is a circuit that processes vertex information, connectivity information, and attribute information before encoding. For example, the preprocessor 104 may perform transformation, separation, or reuse processing on the 3D mesh before encoding. More specifically, for example, the preprocessor 104 may separate vertex information, connectivity information, and attribute information from the 3D mesh before encoding.
[0142] The post-processor 105 is a circuit that processes the encoded vertex information, connectivity information, and attribute information. For example, the post-processor 105 may perform conversion, separation, or multiplexing processing on the encoded vertex information, connectivity information, and attribute information. More specifically, for example, the post-processor 105 may multiplex the encoded vertex information, connectivity information, and attribute information in a bitstream. Furthermore, for example, the post-processor 105 may further perform variable-length encoding on the encoded vertex information, connectivity information, and attribute information.
[0143] <Decoding device> Figure 7 This is a block diagram illustrating a structural example of the decoding apparatus 200 according to this embodiment. For example, the decoding apparatus 200 includes a vertex information decoder 201, a connection information decoder 202, and an attribute information decoder 203.
[0144] Vertex information decoder 201 is a circuit that decodes vertex information. For example, vertex information decoder 201 decodes vertex information from a bitstream according to a specified format for vertex information.
[0145] The connection information decoder 202 is a circuit that decodes connection information. For example, the connection information decoder 202 decodes the connection information from the bitstream according to a specified format.
[0146] The attribute information decoder 203 is a circuit that decodes attribute information. For example, the attribute information decoder 203 decodes the attribute information from the bitstream according to the format specified for the attribute information.
[0147] Decoding vertex information, connectivity information, and attribute information can use either variable-length decoding or fixed-length decoding. Variable-length decoding can correspond to Huffman coding or context-adaptive binary arithmetic coding (CABAC), etc.
[0148] The vertex information decoder 201, the connection information decoder 202, and the attribute information decoder 203 can be integrated into one unit. Alternatively, the vertex information decoder 201, the connection information decoder 202, and the attribute information decoder 203 can be further subdivided into multiple constituent elements.
[0149] Figure 8This is a block diagram illustrating another structural example of the decoding apparatus 200 according to this embodiment. For example, the decoding apparatus 200, in addition to... Figure 7 In addition to the structure shown, it also includes a preprocessor 204 and a postprocessor 205.
[0150] The preprocessor 204 is a circuit that processes vertex information, connectivity information, and attribute information before decoding. For example, the preprocessor 204 may perform conversion, separation, or multiplexing processing on the bitstream before decoding the vertex information, connectivity information, and attribute information.
[0151] More specifically, for example, the preprocessor 204 may separate the sub-bitstream corresponding to vertex information, the sub-bitstream corresponding to connection information, and the sub-bitstream corresponding to attribute information from the bitstream. Furthermore, for example, the preprocessor 204 may pre-decode the bitstream using variable-length decoding before decoding the vertex information, connection information, and attribute information.
[0152] The post-processor 205 is a circuit that processes the vertex information, connectivity information, and attribute information after decoding. For example, the post-processor 205 may perform conversion, separation, or multiplexing processing on the decoded vertex information, connectivity information, and attribute information. More specifically, for example, the post-processor 205 may reuse the decoded vertex information, connectivity information, and attribute information in a 3D mesh.
[0153] <Bitstream> Vertex information, connectivity information, and attribute information are encoded and stored in a bitstream. The relationship between this information and the bitstream is shown below.
[0154] Figure 9 This is a conceptual diagram illustrating a structural example of a bitstream according to this embodiment. In this example, connection information, vertex information, and attribute information are integrated within the bitstream. For example, the connection information, vertex information, and attribute information may be contained in a single file.
[0155] Alternatively, multiple parts of this information can be stored sequentially, such as the first part of connection information, the first part of vertex information, the first part of attribute information, the second part of connection information, the second part of vertex information, the second part of attribute information, and so on. These multiple parts can correspond to multiple parts that are different in time, multiple parts that are different in space, or multiple faces.
[0156] Furthermore, the order in which connection information, vertex information, and attribute information are saved is not limited to the examples above; a different saving order can also be used.
[0157] Figure 10This is a conceptual diagram illustrating another structural example of the bitstream in this embodiment. In this example, multiple files are contained within the bitstream, with connection information, vertex information, and attribute information stored in different files. Here, a file containing connection information, a file containing vertex information, and a file containing attribute information are shown, but the storage format is not limited to this example. For instance, two types of information—connection information, vertex information, and attribute information—could be contained in one file, and the remaining type of information could be contained in other files.
[0158] Alternatively, this information can be divided into more files for storage. For example, multiple parts of connection information, multiple parts of vertex information, and multiple parts of attribute information can be stored in multiple files. These multiple parts can correspond to different parts in time, different parts in space, or different faces.
[0159] Furthermore, the order in which connection information, vertex information, and attribute information are saved is not limited to the examples above; a different saving order can also be used.
[0160] Figure 11 This is a conceptual diagram illustrating another structural example of the bitstream in this embodiment. In this example, the bitstream is composed of multiple separable sub-bitstreams, with connection information, vertex information, and attribute information stored in different sub-bitstreams.
[0161] Here, sub-bitstreams containing connection information, sub-bitstreams containing vertex information, and sub-bitstreams containing attribute information are shown, but the storage format is not limited to these examples.
[0162] For example, two types of information—connection information, vertex information, and attribute information—can be contained in one sub-bitstream, while the remaining type is contained in other sub-bitstreams. Specifically, attribute information, such as 2D image information, can be stored separately from the sub-bitstreams containing connection information and vertex information, in a sub-bitstream that follows an image encoding method.
[0163] Furthermore, each sub-bitstream can contain multiple files. Also, multiple parts of connection information, multiple parts of vertex information, and multiple parts of attribute information can be stored in multiple files.
[0164] Furthermore, the order in which connection information, vertex information, and attribute information are saved is not limited to... Figure 9 , Figure 10 and Figure 11The example can also use a different saving order than the one described above. For example, they can be saved in the bitstream in the order of vertex information, connection information, and attribute information. Alternatively, they can be saved in the bitstream in any other order, such as 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.
[0165] Alternatively, connection information, vertex information, and attribute information can be divided into multiple data segments, and these multiple data segments can be stored in a bitstream in a periodic or random order.
[0166] <Specific example> Figure 12 This is a block diagram illustrating a specific example of the encoding / decoding system of this embodiment. Figure 12 The encoding and decoding system includes a three-dimensional data encoding system 110, a three-dimensional data decoding system 210, and an external connector 310.
[0167] The 3D data encoding system 110 includes a controller 111, an input / output processor 112, a 3D data encoder 113, a 3D data generator 115, and a system multiplexer 114. The 3D data decoding system 210 includes a controller 211, an input / output processor 212, a 3D data decoder 213, a system demultiplexer 214, a prompter 215, and a user interface 216.
[0168] In the 3D data encoding system 110, sensor data is input from the sensor terminal to the 3D data generator 115. The 3D data generator 115 generates 3D data, such as point group data or mesh data, based on the sensor data and inputs it to the 3D data encoder 113.
[0169] For example, the 3D data generator 115 generates vertex information and corresponding connection and attribute information. The 3D data generator 115 can process the vertex information while generating the connection and attribute information. For example, the 3D data generator 115 can reduce the amount of data by deleting duplicate vertices, or perform vertex information transformations (position offset, rotation, or normalization, etc.). Additionally, the 3D data generator 115 can also render the attribute information.
[0170] In addition, the 3D data generator 115 in Figure 12 The middle part is a component of the three-dimensional data encoding system 110, but it can also be configured externally independently of the three-dimensional data encoding system 110.
[0171] Sensor terminals that provide sensor data for generating 3D data can be, for example, mobile objects such as cars, flying objects such as airplanes, portable terminals, or cameras. Alternatively, distance sensors such as LiDAR, millimeter-wave radar, infrared sensors or rangefinders, stereo cameras, or combinations of multiple monocular cameras can also be used as sensor terminals.
[0172] Sensor data can include the distance (position) of an object, images from a single-lens reflex camera, images from a stereo camera, color, reflectivity, sensor pose, orientation, gyroscope, sensed position (GPS information or altitude), speed, acceleration, sensed time, temperature, air pressure, humidity, or magnetism, etc.
[0173] 3D data encoder 113 corresponds to Figure 5 The encoding device 100 is shown in the figure. For example, the three-dimensional data encoder 113 encodes three-dimensional data to generate encoded data. In addition, the three-dimensional data encoder 113 generates control information in the encoding of the three-dimensional data. Furthermore, the three-dimensional data encoder 113 inputs the encoded data and the control information together into the system multiplexer 114.
[0174] 3D data can be encoded using either geometric methods or video codecs. Geometric encoding can be further categorized as geometry-based encoding, while video codec encoding can be categorized as video-based encoding.
[0175] System multiplexer 114 multiplexes the encoded data and control information input from 3D data encoder 113, generating multiplexed data using a prescribed multiplexing method. Alternatively, system multiplexer 114 may multiplex other media such as images, audio, subtitles, application data, or document files, or reference timing information, together with the encoded data and control information of the 3D data. Furthermore, system multiplexer 114 can multiplex attribute information associated with sensor data or 3D data.
[0176] For example, multiplexed data can be in file form for storage or packet form for transmission. These methods can utilize ISOBMFF or ISOBMFF-based methods. Additionally, MPEG-DASH, MMT, MPEG-2 TS Systems, or RTP can also be used.
[0177] Furthermore, the multiplexed data is output as a transmission signal by the input / output processor 112 to the external connector 310. The multiplexed data can be transmitted as a transmission signal via wired or wireless means. Alternatively, the multiplexed data can be stored in internal memory or a storage device. The multiplexed data can be transmitted to a cloud server via the Internet or stored in an external storage device.
[0178] For example, the transmission or storage of multiplexed data is carried out through methods corresponding to the medium used for transmission or storage, such as broadcasting or communication. As communication protocols, HTTP, FTP, TCP, UDP, IP, or combinations thereof can be used. Furthermore, both pull-type and push-type communication methods can be used.
[0179] Wired transmission can utilize Ethernet (registered trademark), USB, RS-232C, HDMI (registered trademark), or coaxial cable, among others. Wireless transmission can utilize 3GPP (registered trademark), IEEE-standard 3G / 4G / 5G, wireless LAN, Wi-Fi, Bluetooth, or millimeter wave. Furthermore, broadcast methods can include DVB-T2, DVB-S2, DVB-C2, ATSC 3.0, and ISDB-S3, among others.
[0180] In addition, sensor data can be input to the 3D data generator 115 or the system multiplexer 114. Furthermore, 3D data or encoded data can be directly output as a transmission signal to the external connector 310 via the input / output processor 112. The transmission signal output from the 3D data encoding system 110 is input to the 3D data decoding system 210 via the external connector 310.
[0181] In addition, the various actions of the three-dimensional data encoding system 110 can be controlled by the controller 111 that executes the application program.
[0182] In the 3D data decoding system 210, the transmission signal is input to the input / output processor 212. The input / output processor 212 decodes the multiplexed data, which is in file or packet form, from the transmission signal and inputs the multiplexed data to the system demultiplexer 214. The system demultiplexer 214 obtains the encoded data and control information from the multiplexed data and inputs it to the 3D data decoder 213. The system demultiplexer 214 can also extract other media or reference time information from the multiplexed data.
[0183] 3D data decoder 213 corresponds to Figure 7 The decoding device 200 is shown in the figure. For example, the 3D data decoder 213 decodes the 3D data from the encoded data based on a predefined encoding method. Then, the 3D data is presented to the user by the prompter 215.
[0184] Additionally, sensor data and other supplementary information can be input to the prompter 215. The prompter 215 can then provide 3D data based on this supplementary information. Furthermore, user instructions can be input from the user terminal to the user interface 216. The prompter 215 can then provide 3D data based on these input instructions.
[0185] In addition, the input / output processor 212 can obtain three-dimensional data and encoded data from the external connector 310.
[0186] In addition, the various actions of the 3D data decoding system 210 can be controlled by the controller 211 that executes the application program.
[0187] Figure 13 This is a conceptual diagram illustrating a structural example of point group data in this embodiment. Point group data is data representing a group of points of a three-dimensional object.
[0188] Specifically, a point cloud consists of multiple points, possessing positional information representing the three-dimensional coordinates of each point, as well as attribute information representing the attributes of each point. The positional information is also represented by geometry.
[0189] The categories of attribute information can be, for example, color or reflectivity. A point can be mapped to attribute information of one category, a point can be mapped to attribute information of multiple different categories, or a point can be mapped to attribute information that has multiple values for the same category.
[0190] Figure 14 This is a conceptual diagram representing an example of a data file for point group data in this embodiment. In this example, a one-to-one correspondence is shown between location information items and attribute information items, illustrating the location and attribute information of N points constituting the point group data. In this example, the location information is information representing three-dimensional coordinate positions using the x, y, and z axes, and the attribute information is information representing colors using RGB. A PLY file or similar can be used as a representative data file for point group data.
[0191] Figure 15 This is a conceptual diagram illustrating a structural example of the mesh data in this embodiment. Mesh data is data used in CG (Computer Graphics) and the like, and is three-dimensional mesh data that represents the three-dimensional shape of an object using multiple faces. Each face is also represented as a polygon, having a polygonal shape such as a triangle or quadrilateral.
[0192] Specifically, in addition to the multiple points that make up the point group, the 3D mesh also consists of multiple edges and multiple faces. Each point is also represented as a vertex or position. Each edge corresponds to a line segment connecting two vertices. Each face corresponds to a region enclosed by three or more edges.
[0193] In addition, 3D meshes possess positional information representing the 3D coordinates of vertices. This positional information is also represented as vertex information or geometric information. Furthermore, 3D meshes possess connectivity information representing the relationships between multiple vertices that constitute an edge or face. This connectivity information is also represented as connectivity. Additionally, 3D meshes possess attribute information representing properties specific to vertices, edges, or faces. Attribute information in 3D meshes is also represented as texture.
[0194] For example, attribute information can represent the color, reflectivity, or normal vector for vertices, edges, or faces. The direction of the normal vector can represent the front and back faces of a face.
[0195] As a data file format for grid data, an object file can also be used.
[0196] Figure 16 This is a conceptual diagram representing an example of a data file for mesh data in this embodiment. In this example, the data file contains position information G(1) to G(N) of N vertices constituting a 3D mesh, and attribute information A1(1) to A1(N) of the N vertices. Additionally, in this example, it contains M attribute information A2(1) to A2(M). The items in the attribute information may not correspond one-to-one with vertices or one-to-one with faces. Furthermore, the attribute information may not exist.
[0197] Connection information is represented by a combination of vertex indices. n[1, 3, 4] represents the face of the triangle formed by vertices n=1, n=3, and n=4. Additionally, m[2, 4, 6] indicates that the attribute information for m=2, m=4, and m=6 corresponds to the three vertices respectively.
[0198] Furthermore, the actual content of the attribute information can be recorded in other files. And, a pointer to this content can be associated with vertices or faces. For example, the attribute information representing the image of a face can be stored in a two-dimensional attribute map file. Furthermore, the filename of the attribute map and the two-dimensional coordinate values in the attribute map can be recorded in attribute information A2(1) to A2(M). The method of specifying attribute information for a face is not limited to these methods; any method can be used.
[0199] Figure 17 This is a conceptual diagram representing the types of three-dimensional data in this embodiment. Point cluster data and mesh data can represent static objects or dynamic objects. Static objects are objects that do not change over time, while dynamic objects are objects that change over time. Static objects can correspond to three-dimensional data at any point in time.
[0200] For example, point group data at any given time point is sometimes represented as a PCC frame. Similarly, grid data at any given time point is sometimes represented as a grid frame. Furthermore, both PCC frames and grid frames can sometimes be represented simply as frames.
[0201] Furthermore, the area of the object can be restricted to a certain range, as with typical image data, or it can be unrestricted, as with map data. Additionally, the density of points or areas can be determined in various ways. Sparse point clusters or sparse grid data, or dense point clusters or dense grid data, can be used.
[0202] Next, the encoding and decoding of point groups or 3D meshes will be described. The apparatus, processing, or syntax for encoding and decoding vertex information of 3D meshes in this disclosure can be applied to the encoding and decoding of point groups.
[0203] Furthermore, the apparatus, processing, or syntax for encoding and decoding attribute information of point groups in this disclosure can be applied to the encoding and decoding of connection information or attribute information of three-dimensional meshes.
[0204] Furthermore, at least a portion of the processing can be shared in the encoding and decoding of point group data and grid data. This reduces the size of the circuitry and software programs.
[0205] Figure 18 This is a block diagram illustrating a structural example of the three-dimensional data encoder 113 according to this embodiment. In this example, the three-dimensional data encoder 113 includes a vertex information encoder 121, an attribute information encoder 122, a metadata encoder 123, and a multiplexer 124. The vertex information encoder 121, the attribute information encoder 122, and the multiplexer 124 can correspond to... Figure 6 Vertex information encoder 101, attribute information encoder 103, and post-processor 105, etc.
[0206] Furthermore, in this example, the 3D data encoder 113 encodes the 3D data using a geometry-based encoding method. In this geometry-based encoding method, the 3D structure is taken into account. Moreover, in this geometry-based encoding method, the structural information obtained from the encoding of vertex information is used to encode the attribute information.
[0207] Specifically, firstly, the vertex information, attribute information, and metadata contained in the 3D data generated from the sensor data are input to the vertex information encoder 121, attribute information encoder 122, and metadata encoder 123, respectively. Here, the connectivity information contained in the 3D data can be processed in the same way as the attribute information. Furthermore, in the case of point group data, the position information can be processed as vertex information.
[0208] Vertex information encoder 121 encodes vertex information into compressed vertex information and outputs the compressed vertex information as encoded data to multiplexer 124. In addition, vertex information encoder 121 generates metadata for the compressed vertex information and outputs it to multiplexer 124. Furthermore, vertex information encoder 121 generates structural information and outputs it to attribute information encoder 122.
[0209] The attribute information encoder 122 uses the structural information generated by the vertex information encoder 121 to encode the attribute information into compressed attribute information, and outputs the compressed attribute information as encoded data to the multiplexer 124. In addition, the attribute information encoder 122 generates metadata of the compressed attribute information and outputs it to the multiplexer 124.
[0210] Metadata encoder 123 encodes compressible metadata into compressed metadata and outputs the compressed metadata as encoded data to multiplexer 124. The metadata encoded by metadata encoder 123 can be used for encoding vertex information and attribute information.
[0211] Multiplexer 124 multiplexes compressed vertex information, compressed vertex information metadata, compressed attribute information, compressed attribute information metadata, and compressed metadata into a bitstream. Furthermore, multiplexer 124 inputs the bitstream to the system layer.
[0212] Figure 19 This is a block diagram illustrating a structural example of the 3D data decoder 213 according to this embodiment. In this example, the 3D data decoder 213 includes a vertex information decoder 221, an attribute information decoder 222, a metadata decoder 223, and a demultiplexer 224. The vertex information decoder 221, the attribute information decoder 222, and the demultiplexer 224 can correspond to... Figure 8 Vertex information decoder 201, attribute information decoder 203, and preprocessor 204, etc.
[0213] In this example, the 3D data decoder 213 decodes the 3D data using a geometry-based encoding method. In this geometry-based decoding, the 3D structure is considered. Furthermore, in this geometry-based decoding, the structural information obtained from decoding the vertex information is used to decode the attribute information.
[0214] Specifically, first, the bitstream is input from the system layer to demultiplexer 224. Demultiplexer 224 separates compressed vertex information, compressed vertex information metadata, compressed attribute information, compressed attribute information metadata, and compressed metadata from the bitstream. The compressed vertex information and compressed vertex information metadata are input to vertex information decoder 221. The compressed attribute information and compressed attribute information metadata are input to attribute information decoder 222. The metadata is input to metadata decoder 223.
[0215] Vertex information decoder 221 uses the metadata of compressed vertex information to decode vertex information from compressed vertex information. Furthermore, vertex information decoder 221 generates structure information and outputs it to attribute information decoder 222. Attribute information decoder 222 uses the structure information generated by vertex information decoder 221 and the metadata of compressed attribute information to decode attribute information from compressed attribute information. Metadata decoder 223 decodes metadata from compressed metadata. The metadata decoded by metadata decoder 223 can be used for decoding vertex information and attribute information.
[0216] Subsequently, vertex information, attribute information, and metadata are output as 3D data from the 3D data decoder 213. Additionally, this metadata, for example, is metadata of vertex information and attribute information, which can be used in the application.
[0217] Figure 20 This is a block diagram illustrating another structural example of the 3D data encoder 113 according to this embodiment. In this example, the 3D data encoder 113 includes a vertex image generator 131, an attribute image generator 132, a metadata generator 133, an image encoder 134, a metadata encoder 123, and a multiplexer 124. The vertex image generator 131, the attribute image generator 132, and the image encoder 134 can correspond to... Figure 6 Vertex information encoder 101 and attribute information encoder 103, etc.
[0218] Furthermore, in this example, the 3D data encoder 113 encodes the 3D data using a video-based coding method. In this video-based coding method, multiple 2D images are generated from the 3D data, and these images are then encoded using an image coding method. Here, the image coding method can be HEVC (High Efficiency Video Coding) or VVC (Versatile Video Coding), etc.
[0219] Specifically, firstly, the vertex information and attribute information contained in the 3D data generated from the sensor data are input to the metadata generator 133. Furthermore, the vertex information and attribute information are input to the vertex image generator 131 and the attribute image generator 132, respectively. Additionally, the metadata contained in the 3D data is input to the metadata encoder 123. Here, the connectivity information contained in the 3D data can be processed in the same way as the attribute information. Furthermore, in the case of point group data, the position information can be processed as vertex information.
[0220] Metadata generator 133 generates mapping information for multiple two-dimensional images based on vertex information and attribute information. Furthermore, metadata generator 133 inputs the mapping information into vertex image generator 131, attribute image generator 132, and metadata encoder 123.
[0221] Vertex image generator 131 generates vertex images based on vertex information and mapping information and inputs them to image encoder 134. Attribute image generator 132 generates attribute images based on attribute information and mapping information and inputs them to image encoder 134.
[0222] The image encoder 134 encodes the vertex image and attribute image into compressed vertex information and compressed attribute information respectively according to the image encoding method, and outputs the compressed vertex information and compressed attribute information as encoded data to the multiplexer 124. In addition, the image encoder 134 generates metadata of compressed vertex information and metadata of compressed attribute information and outputs them to the multiplexer 124.
[0223] Metadata encoder 123 encodes compressible metadata into compressed metadata and outputs the compressed metadata as encoded data to multiplexer 124. The compressible metadata contains mapping information. Furthermore, the metadata encoded by metadata encoder 123 can be used for encoding vertex information and attribute information.
[0224] Multiplexer 124 multiplexes compressed vertex information, compressed vertex information metadata, compressed attribute information, compressed attribute information metadata, and compressed metadata in the bitstream. Furthermore, multiplexer 124 inputs the bitstream to the system layer.
[0225] Figure 21 This is a block diagram illustrating another structural example of the 3D data decoder 213 according to this embodiment. In this example, the 3D data decoder 213 includes a vertex information generator 231, an attribute information generator 232, an image decoder 234, a metadata decoder 223, and a demultiplexer 224. The vertex information generator 231, the attribute information generator 232, and the image decoder 234 can be used with... Figure 8 The vertex information decoder 201 and the attribute information decoder 203 correspond to each other.
[0226] In this example, the 3D data decoder 213 decodes the 3D data using a video-based encoding method. In this video-based decoding, multiple 2D images are decoded according to an image encoding method, and 3D data is generated from these images. Here, the image encoding method can be HEVC (High Efficiency Video Coding) or VVC (Versatile Video Coding), etc.
[0227] Specifically, first, the bitstream is input from the system layer to demultiplexer 224. Demultiplexer 224 separates compressed vertex information, compressed vertex information metadata, compressed attribute information, compressed attribute information metadata, and compressed metadata from the bitstream. The compressed vertex information, compressed vertex information metadata, compressed attribute information, and compressed attribute information metadata are input to image decoder 234. The compressed metadata is input to metadata decoder 223.
[0228] The image decoder 234 decodes the vertex image according to the image encoding method. At this time, the image decoder 234 uses the metadata of the compressed vertex information to decode the vertex image from the compressed vertex information. Furthermore, the image decoder 234 inputs the vertex image to the vertex information generator 231. Additionally, the image decoder 234 decodes the attribute image according to the image encoding method. At this time, the image decoder 234 uses the metadata of the compressed attribute information to decode the attribute image from the compressed attribute information. Furthermore, the image decoder 234 inputs the attribute image to the attribute information generator 232.
[0229] Metadata decoder 223 decodes metadata from compressed metadata. The metadata decoded by metadata decoder 223 contains mapping information used in the generation of vertex information and attribute information. Furthermore, the metadata decoded by metadata decoder 223 can be used for decoding vertex images and attribute images.
[0230] Vertex information generator 231 reconstructs vertex information from the vertex image according to the mapping information contained in the metadata decoded by metadata decoder 223. Attribute information generator 232 reconstructs attribute information from the attribute image according to the mapping information contained in the metadata decoded by metadata decoder 223.
[0231] Subsequently, vertex information, attribute information, and metadata are output as 3D data from the 3D data decoder 213. Additionally, this metadata, for example, is metadata of vertex information and attribute information that can be used in applications.
[0232] Figure 22 This is a conceptual diagram illustrating a specific example of the encoding process in this embodiment. Figure 22 A 3D data encoder 113 and a description encoder 148 are shown. In this example, the 3D data encoder 113 includes a 2D data encoder 141 and a mesh data encoder 142. The 2D data encoder 141 includes a texture encoder 143. The mesh data encoder 142 includes a vertex information encoder 144 and a connectivity information encoder 145.
[0233] Vertex information encoder 144, connection information encoder 145, and texture encoder 143 can correspond to Figure 6 Vertex information encoder 101, connection information encoder 102, and attribute information encoder 103, etc.
[0234] For example, the two-dimensional data encoder 141 acts as a texture encoder 143, encoding the texture corresponding to the attribute information as two-dimensional data according to the image encoding method or video encoding method, thereby generating a texture file.
[0235] Furthermore, the mesh data encoder 142 operates as both the vertex information encoder 144 and the connectivity information encoder 145, generating a mesh file by encoding vertex and connectivity information. The mesh data encoder 142 can further encode texture mapping information. The encoded mapping information can then be included within the mesh file.
[0236] Furthermore, the description encoder 148 generates a description file by encoding descriptions corresponding to metadata, such as text data. The description encoder 148 can encode the description at the system layer. For example, the description encoder 148 can be included in... Figure 12 In the system multiplexer 114.
[0237] The above steps generate a bitstream containing texture files, mesh files, and description files. These files can be multiplexed in the bitstream as glTF (Graphics Language Transmission Format) or USD (Universal Scene Description) files.
[0238] Furthermore, the 3D data encoder 113 may have two mesh data encoders as mesh data encoder 142. For example, one mesh data encoder encodes the vertex and connection information of a static 3D mesh, while the other mesh data encoder encodes the vertex and connection information of a dynamic 3D mesh.
[0239] Furthermore, the bitstream can contain two mesh files. For example, one mesh file corresponds to a static 3D mesh, and the other mesh file corresponds to a dynamic 3D mesh.
[0240] Furthermore, static 3D meshes can be intraframe 3D meshes encoded using intraframe prediction, while dynamic 3D meshes can be interframe 3D meshes encoded using interframe prediction. Additionally, information for dynamic 3D meshes can be derived from the difference between the vertex or connectivity information of the intraframe 3D mesh and the vertex or connectivity information of the interframe 3D mesh.
[0241] Figure 23 This is a conceptual diagram illustrating a specific example of the decoding process in this embodiment. Figure 23 The image shows a 3D data decoder 213, a description decoder 248, and a prompter 247. In this example, the 3D data decoder 213 includes a 2D data decoder 241, a mesh data decoder 242, and a mesh reconstructor 246. The 2D data decoder 241 includes a texture decoder 243. The mesh data decoder 242 includes a vertex information decoder 244 and a connectivity information decoder 245.
[0242] Vertex information decoder 244, connection information decoder 245, texture decoder 243, and mesh reconstructor 246 can be used with Figure 8 The vertex information decoder 201, connection information decoder 202, attribute information decoder 203, and post-processor 205 correspond to these. The prompter 247 can be associated with... Figure 12 The corresponding prompts are 215, etc.
[0243] For example, the two-dimensional data decoder 241 acts as a texture decoder 243, and decodes the texture corresponding to the attribute information as two-dimensional data according to the texture file, based on the image encoding method or video encoding method.
[0244] Furthermore, the mesh data decoder 242 acts as both the vertex information decoder 244 and the connectivity information decoder 245, decoding vertex and connectivity information from the mesh file. The mesh data decoder 242 can further decode texture-specific mapping information from the mesh file.
[0245] Furthermore, the description decoder 248 decodes the description corresponding to metadata such as text data from the description file. The description decoder 248 can decode the description at the system layer. For example, the description decoder 248 can be included in... Figure 12 In the system demultiplexer 214.
[0246] Mesh Reconstructor 246, as described, reconstructs the 3D mesh based on vertex information, connectivity information, and texture. Hint 247, as described, renders and outputs the 3D mesh.
[0247] Through the above actions, a 3D mesh is reconstructed and output from a bitstream including texture files, mesh files, and description files.
[0248] Furthermore, the 3D data decoder 213 may have two mesh data decoders as mesh data decoder 242. For example, one mesh data decoder decodes the vertex information and connectivity information of a static 3D mesh, while the other mesh data decoder decodes the vertex information and connectivity information of a dynamic 3D mesh.
[0249] Furthermore, the bitstream can contain two mesh files. For example, one mesh file corresponds to a static 3D mesh, and the other mesh file corresponds to a dynamic 3D mesh.
[0250] Furthermore, static 3D meshes can be intra-frame 3D meshes encoded using intra-frame prediction, while dynamic 3D meshes can be inter-frame 3D meshes encoded using inter-frame prediction. Additionally, as information for dynamic 3D meshes, the difference between the vertex or connectivity information of intra-frame 3D meshes and the vertex or connectivity information of inter-frame 3D meshes can be used.
[0251] The coding method for dynamic 3D meshes is sometimes referred to as DMC (Dynamic Mesh Coding). Additionally, video-based coding of dynamic 3D meshes is sometimes referred to as V-DMC (Video-based Dynamic Mesh Coding).
[0252] Point cloud compression is sometimes referred to as PCC. Additionally, video-based point cloud compression is sometimes referred to as V-PCC. Furthermore, geometry-based point cloud compression is sometimes referred to as G-PCC.
[0253] <Implementation Example> Figure 24 This is a block diagram illustrating an implementation example of the encoding device 100 according to this embodiment. The encoding device 100 includes circuitry 151 and a memory 152. For example, Figure 5 The multiple components of the encoding device 100 shown are transmitted through... Figure 24 The circuit 151 and memory 152 shown are used to implement this.
[0254] Circuit 151 is a circuit that performs information processing and can access memory 152. For example, circuit 151 is a dedicated or general-purpose circuit for encoding a three-dimensional mesh. Circuit 151 can be a processor like a CPU. Alternatively, circuit 151 can be an assembly of multiple circuits.
[0255] Memory 152 is a dedicated or general-purpose memory that stores the information used by circuit 151 to encode the three-dimensional mesh. Memory 152 can be a circuit and can be connected to circuit 151. Alternatively, memory 152 can be contained within circuit 151. Alternatively, memory 152 can be a collection of multiple circuits. Furthermore, memory 152 can be a disk or optical disk, or it can be a storage device or recording medium. Memory 152 can be non-volatile memory or volatile memory.
[0256] For example, memory 152 can store a three-dimensional mesh or a bit stream. Additionally, memory 152 can store the program used by circuit 151 to encode the three-dimensional mesh.
[0257] Furthermore, in the encoding device 100, it is not necessary to implement Figure 5 All of the multiple constituent elements shown here may be exempt from the multiple processes shown here. Figure 5 A portion of the multiple constituent elements shown may be included in other devices, and a portion of the multiple processes shown herein may be executed by other devices. Furthermore, in the encoding device 100, the multiple constituent elements of this disclosure may be implemented in any combination, and the multiple processes of this disclosure may be performed in any combination.
[0258] Figure 25 This is a block diagram illustrating an implementation example of the decoding device 200 according to this embodiment. The decoding device 200 includes circuitry 251 and a memory 252. For example, Figure 7 The multiple components of the decoding device 200 shown are transmitted through... Figure 25 The circuit 251 and memory 252 shown are used to implement this.
[0259] Circuit 251 is a circuit that performs information processing and can access memory 252. For example, circuit 251 is a dedicated or general-purpose circuit for decoding a three-dimensional mesh. Circuit 251 can be a processor like a CPU. Alternatively, circuit 251 can be an assembly of multiple circuits.
[0260] Memory 252 is a dedicated or general-purpose memory that stores the information used by circuit 251 to decode the three-dimensional mesh. Memory 252 can be a circuit and can be connected to circuit 251. Alternatively, memory 252 can be contained within circuit 251. Alternatively, memory 252 can be an assembly of multiple circuits. Alternatively, memory 252 can be a disk or optical disk, or it can take the form of a storage device or recording medium. Memory 252 can be non-volatile memory or volatile memory.
[0261] For example, memory 252 can store a three-dimensional mesh or a bit stream. Additionally, memory 252 can also store the program used by circuit 251 to decode the three-dimensional mesh.
[0262] Furthermore, in the decoding device 200, it is not necessary to implement... Figure 7 All of the multiple constituent elements shown here may be exempt from the multiple processes shown here. Figure 7 A portion of the multiple constituent elements shown may be included in other devices, and a portion of the multiple processes shown herein may be executed by other devices. Furthermore, in the decoding device 200, the multiple constituent elements of this disclosure may be arbitrarily combined to implement the present disclosure, and the multiple processes of this disclosure may be arbitrarily combined to perform the present disclosure.
[0263] The encoding and decoding methods, which include steps performed by the constituent elements of the encoding apparatus 100 and decoding apparatus 200 of this disclosure, can be executed by any device or system. For example, part or all of the encoding and decoding methods can be executed by a computer equipped with a processor, memory, and input / output circuits. In this case, the encoding and decoding methods can be executed by the computer executing a program for causing the computer to perform the encoding and decoding methods.
[0264] In addition, programs and bit streams can be recorded on non-transitory computer-readable recording media such as CD-ROMs.
[0265] An example of a program could be a bitstream. For instance, a bitstream containing an encoded 3D mesh includes syntactic elements for the decoding device 200 to decode the 3D mesh. Furthermore, the bitstream causes the decoding device 200 to decode the 3D mesh according to the syntactic elements contained within it. Therefore, a bitstream can function similarly to a program.
[0266] The aforementioned bitstream can be an encoded bitstream containing the encoded three-dimensional grid, or a multiplexed bitstream containing the encoded three-dimensional grid and other information.
[0267] Furthermore, the components of the encoding device 100 and the decoding device 200 can be constructed from dedicated hardware, general-purpose hardware that executes the aforementioned programs, or a combination thereof. Additionally, the general-purpose hardware can consist of a memory storing programs and a general-purpose processor that reads and executes the programs from the memory. Here, the memory can be a semiconductor memory or a hard disk, and the general-purpose processor can be a CPU.
[0268] In addition, dedicated hardware can consist of memory and a dedicated processor. For example, a dedicated processor can refer to the memory used to record data to execute encoding and decoding methods.
[0269] Furthermore, as described above, each component of the encoding device 100 and the decoding device 200 can be a circuit. These circuits can be configured as a single circuit or they can be separate circuits. Additionally, these circuits can correspond to dedicated hardware or general-purpose hardware that executes the aforementioned programs. Moreover, the encoding device 100 and the decoding device 200 can be implemented as integrated circuits.
[0270] Alternatively, the encoding device 100 can be a transmitting device for transmitting a three-dimensional mesh. The decoding device 200 can be a receiving device for receiving a three-dimensional mesh.
[0271] <Displacement Encoding and Decoding> Here, as an example, the following terminology will be used.
[0272] (1) Image An image is a unit of data consisting of a collection of pixels, containing either a picture or a block smaller than a picture. Images include both moving images and still images.
[0273] (2) Pictures An image is a unit of image processing consisting of a collection of pixels, also known as a frame or field.
[0274] (3) blocks A block is a processing unit consisting of a specific number of pixels. Blocks are also referred to using the terms shown in the examples below. The shape of a block is not particularly limited. A block can be, for example, an M×N pixel rectangle or an M×M pixel square. Blocks can also be triangular, circular, or other shapes. Examples of blocks are described below.
[0275] • Slices, tiles, or bricks • CTU, superblock, or basic partitioning unit • VPDU, Hardware Processing Division Unit • CU, Processing Block Unit, Prediction Block Unit (PU), or Orthogonal Transform Block Unit (TU) ·Sub-block (4) Pixels or samples A pixel or sample is the smallest point in an image; in other words, it is the smallest unit. A pixel or sample includes not only pixels at integer positions but also pixels at sub-pixel positions generated based on those integer-position pixels.
[0276] (5) Pixel value or sample value Pixel values or sample values are the inherent values of a pixel. Pixel values or sample values include luminance values, chrominance values, RGB grayscale levels, and may also include depth values or binary values of 0 or 1.
[0277] (6) Sign Flags represent more than one bit. Flags, for example, are parameters or indices represented by two or more bits. Flags not only represent values expressed as binary numbers, but sometimes also values expressed as numeric values other than binary numbers.
[0278] (7) Signal Signals are symbolized or encoded to convey information. Signals include discrete digital signals or continuous analog signals.
[0279] (8) Stream or bitstream A stream or bitstream is a sequence of digital data that represents the flow of digital data. A stream or bitstream can be a single stream or can be structured as multiple streams with multiple levels. Streams or bitstreams can be transmitted using a single transmission path via serial communication, or they can be transmitted using multiple transmission paths via packet communication.
[0280] (9) Difference In the case of scalars, differences can include simple differences (xy) and difference calculations. Differences can include the absolute value of the difference (|xy|), the square of the difference (x^2-y^2), the square root of the difference (√(xy)), weighted differences (ax-by, where a and b are constants), or offset differences (x-y+a, where a is the offset), etc.
[0281] (10) and In the case of scalars, sums can include simple sums (x+y) and addition calculations. Sums can include the absolute value of the sum (|x+y|), the sum of squares (x^2+y^2), the square root of the sum (√(x+y)), the weighted sum (ax+by, where a and b are constants), or the offset sum (x+y+a, where a is the offset), etc.
[0282] (11) "based on" The phrase "based on" implies that objects other than "that" can also be considered. Additionally, "based on" is sometimes used when a direct result is obtained, or when the result is obtained through intermediate steps.
[0283] (12) "Being used" or "Using" Expressions like "what was used" or "what was used" imply that things other than "what" can also be considered. Furthermore, expressions like "was used" or "was used" are sometimes used when a direct result is obtained, or when a result is obtained through intermediate steps.
[0284] (13) Prohibition "Prohibition" can be translated as "not permitted". In addition, "not prohibited / prohibited" or "permitted / permitted" does not necessarily mean "obligation".
[0285] (14) “Restriction” or “Limitation” "Restriction" or "limitation" can be translated as "not permitted / not allowed" or "not allowed / permitted." Furthermore, "prohibited / not prohibited" or "not permitted / permitted" does not necessarily imply an "obligation." Additionally, what is prohibited in quantity / quality can be partial or complete.
[0286] (15) Chroma The term chroma, represented by the symbols Cb or Cr, is an adjective that indicates one of two color difference signals associated with a primary color in a sample arrangement or a single sample. The term chroma is sometimes used in place of chrominance.
[0287] (16) Luminance The term "luma" is an adjective denoted by the symbol or subscript Y or L, representing the monochromatic signal of a sample arrangement or a single sample that is related to the primary color. The term "luma" is sometimes used in place of "luminance".
[0288] The encoding and decoding system of this embodiment will be described below.
[0289] A typical 3D model (also known as a 3D model) represents an object digitally, allowing users to search the model in 3D using scaling, translation, and rotation while rendering over time. One method of constructing such a representation is to use triangles to build a 3D mesh. In the model described above, the positions of the triangle vertices, the connectivity between the triangle vertices, and the properties associated with them (normals or UV mapping, etc.) are stored.
[0290] To store all this information in uncompressed form, a very large storage area is required, thus requiring a very large bandwidth for transmission. The triangles forming the mesh, especially in temporal and spatial proximity, mostly exhibit repeating patterns and similar properties. Utilizing these repetitions, efficient encoding and decoding methods can be developed for storage and transmission. One such encoding and decoding method is Video-based Dynamic Mesh Coding (V-DMC).
[0291] Figure 26 This is a block diagram illustrating another structural example of the encoding / decoding system according to this embodiment. For example... Figure 26 As shown, the encoding and decoding system includes an encoding device 100 and a decoding device 200.
[0292] The encoding / decoding system accepts 3D meshes (also known as 3D meshes) as input in the form of vertices' 3D coordinates (vertices information), connectivity (connection information), and associated attributes (attribute information). Furthermore, 3D meshes can include not only geometry but also texture maps.
[0293] The encoding device 100 takes the input 3D mesh (also called the input 3D mesh or input grid) in the form of the three-dimensional coordinates of the vertices, connectivity, and associated attributes. The encoding device 100 encodes all associated information into a stream. The stream can consist of a single bit stream or multiple bit streams.
[0294] Network 300 transmits the stream generated by the encoding device to the decoding device 200. Network 300 can be the Internet, a WAN (Wide Area Network), a LAN (Local Area Network), or any combination thereof. Furthermore, network 300 is not necessarily limited to a two-way communication network; it can also be a one-way communication network transmitting broadcast waves such as terrestrial digital broadcasts or satellite broadcasts. Alternatively, recording media such as DVDs (Digital Versatile Discs) or Blu-ray Discs (BDs) can be used instead of network 300.
[0295] The bitstream is transmitted via network 300 to decoding device 200. Decoding device 200 decodes the bitstream and uses the 3D coordinates, connectivity, and association properties of the decoded vertices to generate a 3D mesh. Decoding device 200 outputs the generated 3D mesh (also known as the output 3D mesh or output grid).
[0296] Figure 27 This is a diagram showing another structural example of the encoding device 100.
[0297] like Figure 27 As shown, the encoding device 100 includes a preprocessor 1102 and a compressor 1107.
[0298] Encoding device 100 reads in input mesh 1101 and transmits it to preprocessor 1102. Preprocessor 1102 processes input mesh 1101 to extract base mesh 1103, displacement data 1104, texture data 1105, and attribute map 1106. Encoding device 100 transmits the extracted base mesh 1103, displacement data 1104, texture data 1105, and attribute map 1106 to compressor 1107.
[0299] The compressor 1107 can compress the base mesh 1103, displacement data 1104, texture data 1105 and attribute map 1106 to generate a bitstream 1108, which is then sent to the decoding device 200.
[0300] Figure 28 This is a diagram showing another structural example of the decoding device 200.
[0301] like Figure 28 As shown, the decoding device 200 includes a decompressor 2102 and a post-processor 2107.
[0302] Decoding device 200 reads bitstream 2101 and transmits it to decompressor 2102. Decompressor 2102 decompresses base mesh 2103, displacement data 2104, texture data 2105, and attribute map 2106 from bitstream 2101 and transmits them to postprocessor 2107. An example of displacement data 2104 is a displacement vector.
[0303] The post-processor 2107 processes the base mesh 2103 according to the displacement data 2104 and the attribute map 2106 to generate the output mesh 2108. The post-processor 2107 can also use information from the texture data 2105 to generate the output mesh 2108.
[0304] The encoding process performed by the encoding device 100 will be described in detail below.
[0305] Figure 29 This is a flowchart illustrating the processing of the encoding device 100. Figure 30 This is a conceptual illustration of the encoding of a grid frame. (See reference...) Figure 29 and Figure 30 The processing of the encoding device 100 will be explained.
[0306] In step S101, the encoding device 100 reads a three-dimensional mesh frame as an input mesh frame. The input mesh frame is the mesh frame input to the encoding device 100. An example of a three-dimensional mesh frame as an input mesh frame is shown as mesh frame 1301 (see reference). Figure 30 ).
[0307] In step S102, the encoding device 100 performs decimation processing on the input mesh frame read in step S101 to generate a base mesh frame with fewer vertices than the input mesh frame. The base mesh frame generated by decimating mesh frame 1301 is represented as base mesh frame 1302 (see reference). Figure 30 Furthermore, the vertices of the base mesh frame 1302 can be located at different positions than the vertices of the mesh frame 1301. Additionally, the base mesh frame 1302 can be sub-segmented by adding new vertices among existing vertices.
[0308] In step S103, the encoding device 100 calculates the displacement information used by the decoding device 200 to reconstruct the mesh frame. The displacement information is equivalent to the displacement vector from the vertices of the base mesh frame generated in step S102 towards the vertices of the input mesh frame. One method for calculating the displacement information is to subtract the coordinates of the vertices of the base mesh frame from the coordinates of the vertices of the input mesh frame. The displacement information calculated based on mesh frame 1301 and base mesh frame 1302 is represented as displacement information 1303 (see reference). Figure 30The displacement information 1303 is in vector form; in other words, it is represented as a displacement vector. Furthermore, the displacement information can be transformed into wavelet coefficients using wavelet transform, then these wavelet coefficients are assigned to the planes of the video frame and encoded using a video codec.
[0309] In step S104, the encoding device 100 encodes the base mesh frame generated in step S102, the displacement information generated in step S103, the attribute map, and the texture data into a bitstream (equivalent to a compressed bitstream). An example of a bitstream is shown as bitstream 1304 (see reference). Figure 30 ).
[0310] Specifically, bitstream 1304 contains vertex coordinates and connectivity information for vertices A, C, E, and F, displacement information, a video bitstream containing texture data, and a compressed attribute map (see reference). Figure 30 The displacement information contains displacement information used to displace vertices based on vertex coordinates obtained from the base mesh frame after sub-segmentation. The compressed attribute map is the texture coordinates used to apply texture data to the mesh frame reconstructed using the base mesh frame and displacement information.
[0311] The decoding process performed by the decoding device 200 will be described in detail below.
[0312] Figure 31 This is a flowchart illustrating the processing of the decoding device 200. Figure 32 This is a conceptual illustration of decoding a 3D mesh. (See reference...) Figure 31 and Figure 32 The processing of the decoding device 200 is explained.
[0313] In step S201, the decoding device 200 decodes the base grid frame from the bitstream (equivalent to the compressed bitstream). An example of the decoded base grid frame (equivalent to the decoded base grid frame) is represented as decoded base grid frame 2301 (see reference). Figure 32 ).
[0314] In step S202, the decoding device 200 generates new vertices among existing vertices by sub-segmenting the base mesh frame decoded in step S201. An example of a mesh frame containing the sub-segmented vertices is shown as mesh frame 2302 (see reference). Figure 32 At this point in time, mesh frame 2302 contains all the vertices and connections of the original mesh frame. Furthermore, the positions of the vertices contained in mesh frame 2302 may differ from the corresponding vertices contained in the input mesh frame.
[0315] In step S203, the decoding device 200 decodes the displacement information from the bitstream (equivalent to a compressed bitstream). An example of the decoded displacement information is represented as displacement information 2303 (refer to...). Figure 32 The displacement information 2303 is in vector form; in other words, it is represented as a displacement vector. At this time, the decoding device 200 uses a video decoder to decode the wavelet coefficients and performs an inverse wavelet transform to recover the displacement vector.
[0316] In step S204, the decoding device 200 uses displacement information to move the vertices of the base mesh frame, including the sub-segmented vertices, to new positions, thereby reconstructing the shape of the mesh frame. The decoding device 200 also reconstructs the decoded 3D mesh by applying texture data to assign textures to faces generated based on the vertex and connection information of the mesh frame. An example of the reconstructed mesh frame is shown as mesh frame 2304 (see reference). Figure 32 ).
[0317] The following describes the method for predicting the coordinates of the vertices in this embodiment.
[0318] Figure 33 , Figure 34 as well as Figure 35 This is an explanatory diagram illustrating an example of a method for predicting the coordinates of a vertex in this embodiment.
[0319] Specifically, Figure 33 , Figure 34 as well as Figure 35 This is an illustrative diagram illustrating a method for predicting the coordinates of the vertices of a triangle in the encoding or decoding process of a three-dimensional mesh composed of multiple triangles. In this example, the encoding or decoding device uses the triangle and connection information indicating how the vertices of the triangle are connected to predict the coordinates of the vertices to be encoded or decoded.
[0320] exist Figure 33 In this diagram, vertices A1, B1, and C1 are vertices whose coordinates have been encoded or decoded. Vertex D is the vertex whose coordinates will be encoded or decoded next. The coordinates of vertex E1 are the predicted values of the coordinates of vertex D, set as the coordinates of quadrilateral A1B1E1C1 becoming a parallelogram. For example, the encoding or decoding device can derive vector A1E1 as the sum of vectors A1C1 and A1B1, and encode or decode vector E1D as the prediction residual. Furthermore, the coordinates of vertex E1 are sometimes referred to as the predicted value E1. The same applies to vertices E, E2, or E3, etc., as described later.
[0321] Figure 34 Indicates use Figure 33 The prediction method shown determines multiple prediction values E1, E2, and E3, and uses the average of these multiple prediction values E1, E2, and E3 as an example of the predicted coordinates of vertex D.
[0322] The encoding or decoding device can also derive the vector AiEi (where i=1,2,3) as the sum of the vector AiCi and the vector AiBi, determine the coordinates of vertex E by the average vector A1E of the vectors A1E1, A1E2 and A1E3, and encode or decode the vector ED as the prediction residual.
[0323] Furthermore, if all vertices of triangle AiBiCi with opposite side BiCi to vertex D have been encoded or decoded, then it is possible to apply... Figure 33 The prediction method shown can determine the predicted value Ei.
[0324] Furthermore, the average of multiple predicted values E1, E2, and E3 can also be calculated using a weighted average of the predicted values E1, E2, and E3. For example, the weights of the predicted values E1, E2, and E3 can be determined based on the magnitudes of vectors A1E1, A2E2, and A3E3, respectively. More generally, the weight of the predicted value Ei can also be determined based on the magnitude of vector AiEi.
[0325] For example, it can be assumed that a smaller vector AiEi (i.e., closer vertices Ai and Ei, in other words, a smaller distance between vertices Ai and Ei) results in higher prediction accuracy, so the reciprocal of the size of vector AiEi can be used as the weight of the predicted value Ei.
[0326] In addition, it can be assumed that the larger the size of the vector AiEi, the less uneven the grid surface, and the higher the prediction accuracy. Therefore, the size of the vector AiEi can be used as the weight of the predicted value Ei.
[0327] Furthermore, regarding the features used to determine the weights of the predicted value Ei, it is believed that they vary depending on the object represented by the grid. Therefore, the method for determining the weights of the predicted value Ei can also be switched on a per-sequence, per-frame, per-sub-grid, or per-vertex basis.
[0328] Furthermore, this example demonstrates the use of three predicted values, E1, E2, and E3, but the number of predicted values does not necessarily need to be three; it can be adjusted based on the applicable conditions. Figure 33 The number of triangles AiBiCi in the prediction method shown determines the number of predicted values. The number of predicted values can also be one.
[0329] Additionally, it is not necessary to apply the ability to Figure 33 The prediction method shown uses all triangles AiBiCi to determine the predicted value, or it can use up to a pre-set number of triangles AiBiCi to determine the predicted value. Furthermore, when applicable... Figure 33When the number of triangles AiBiCi in the prediction method shown is 0, the coordinates of vertices that are near vertices Bi or Ci and have been encoded or decoded can also be used as prediction values. Alternatively, in the case described above, where there are no vertices near vertices Bi or Ci that have been encoded or decoded, pre-defined coordinates such as the origin (0, 0, 0) can be used as prediction values.
[0330] exist Figure 35 In this diagram, vertices A1, B1, C1, F1, and G1 are vertices whose coordinates have been encoded or decoded. Here, vertices F1 and G1 are in most cases points not on the same plane as triangle A1B1C1. Vertex D is the vertex whose coordinates are subsequently encoded or decoded. The coordinates of vertex E1 are predicted values of the coordinates of vertex D, set as the coordinates of quadrilateral A1B1'E1C1' becoming a parallelogram. For example, the encoding or decoding device can also derive vector A1E1 as the sum of vectors A1C1' and A1B1', and encode or decode vector E1D as the prediction residual. The coordinates of vertex B1' are set as the coordinates of quadrilateral A1B1'C1G1 becoming a parallelogram. For example, vector A1B1' is derived as the difference between vectors A1C1 and A1G1. The coordinates of vertex C1' are set as the coordinates of quadrilateral A1F1B1C1' becoming a parallelogram. For example, vector A1C1' is derived as the difference between vector A1B1 and vector A1F1. Figure 33 Compared to the prediction method shown, by using vertices F1 and G1, which are more likely to be not on the same plane as triangle A1B1C1, and setting points not on plane A1B1C1 as predicted values, it is possible to improve the prediction accuracy of the coordinates of vertices on a 3D mesh with an uneven surface.
[0331] In addition, Figure 34 In, it can also be used with Figure 33 The prediction method shown determines multiple predicted values. Similarly, it uses... Figure 35 The prediction method shown determines multiple predicted values Ei, and the average of these predicted values Ei is used as the predicted coordinate of vertex D. When a triangle with an opposite edge BiCi to vertex D is designated as triangle AiBiCi, a triangle sharing an edge AiBi with triangle AiBiCi is designated as triangle AiBiFi, and a triangle sharing an edge AiCi with triangle AiBiCi is designated as triangle AiCiGi, if vertices Ai, Bi, Ci, Fi, and Gi have all been encoded or decoded, then the following method can be applied. Figure 35 The prediction method shown can determine the predicted value Ei.
[0332] Furthermore, when vertices Ai, Bi, Ci, and Fi have all been encoded or decoded, and vertex Gi has not been encoded or decoded, vertex Bi can be used instead of vertex Bi' to enable the application. Figure 35 The prediction method is shown. Additionally, when vertices Ai, Bi, Ci, and Gi have all been encoded or decoded, and vertex Fi has not been encoded or decoded, vertex Ci can be used instead of vertex Ci' to enable the application of... Figure 35 The prediction method shown. Additionally, it can be applied based on the available methods. Figure 35 The number of triangles AiBiCi in the prediction method shown determines the number of predicted values. The number of predicted values can also be one. Furthermore, it is not necessary to apply... Figure 35 The prediction method shown uses all the triangles AiBiCi to determine the predicted value, or it can use up to a pre-set number of triangles AiBiCi to determine the predicted value.
[0333] The encoding or decoding device can consistently apply any of the prediction methods described above to predict the coordinates of the triangle vertices, or it can assign inherent index values to each method and notify the decoding device of the index value of the prediction method used in encoding, on a per-vertex or per-vertex basis. In this case, the decoding device can also switch prediction methods based on the index value during decoding to determine the predicted coordinates of the triangle vertices. By notifying the decoding device of the index value of the prediction method used in encoding, it is possible to select a more efficient prediction method while encoding the 3D mesh, and to suppress the amount of encoding. Furthermore, the information notified from the encoding device to the decoding device can be implemented as long as it is information that can determine the prediction method used in encoding, and it does not necessarily have to be an index value. In addition, when determining whether vertices Ai, Bi, Ci, Fi, and Gi have been encoded or decoded, if there are holes or other structures in the 3D mesh where no corresponding vertex exists, the encoding or decoding device may determine that they have not been encoded or decoded.
[0334] Figure 36 This is an explanatory diagram illustrating an example of a method for predicting the coordinates of a vertex in this embodiment.
[0335] The encoding or decoding device may also include, in addition to vertices Pa and Pb, [other components]. Figure 36 The black circles shown represent the coordinates of points where the line segment PaPb is internally or externally divided, serving as candidate predicted values. Here, vertex Pa is used... Figure 34 The prediction method shown determines the average of at least one or more predicted values Ei. Vertex Pb is related to... Figure 34 Use Figure 33 The prediction method shown determines that at least one or more predicted values are used in the same way. Figure 35 The prediction method shown determines the average of at least one or more predicted values Ei.
[0336] For example, such as Figure 36 As illustrated, the encoding or decoding device may also set candidate prediction values at coordinates based on 1 / 4 of the line segment PaPb. In other words, the encoding or decoding device may also set candidate prediction values at coordinates of points where the line PaPb is divided into sections of length equivalent to 1 / 4 of the line segment PaPb. Furthermore, the aforementioned reference is not limited to 1 / 4 of the line segment PaPb; it may also be 1 / 2, etc. That is, the encoding or decoding device may also use only coordinates based on 1 / 2 of the line segment PaPb as candidate prediction values. For example, the encoding or decoding device may use five points—Pb, (Pa+Pb) / 2, Pa, (3×Pa-Pb) / 2, and 2×Pa-Pb—as candidate prediction values. Alternatively, the encoding or decoding device may use four points—Pb, (Pa+Pb) / 2, Pa, and (3×Pa-Pb) / 2—as candidate prediction values. Furthermore, the determination of the candidate predicted value does not necessarily need to be based on the coordinates of 1 / 4 or 1 / 2 of the line segment PaPb. The candidate predicted value can also be set on the line PaPb by a common method pre-set in the encoding and decoding devices.
[0337] Figure 37 This is an explanatory diagram illustrating an example of a method for predicting the coordinates of a vertex in this embodiment.
[0338] like Figure 37 As shown, the encoding or decoding device can also be in Figure 33 In the prediction method shown, on the perpendicular line through the parallelogram A1B1E1C1 passing through vertex E1, multiple candidate prediction values are set for vertices E11, E12, E13, and E14, in addition to vertex E1. Furthermore, the length of line segment E1E1j (where j=1, 2, 3, 4) can also be determined based on the length of line segment A1E1 or line segment B1C1, etc.
[0339] For example, the encoding or decoding device can also set the length of line segment E1E1j to be k times the length of line segment A1E1 (e.g., k = 1 / 2, 1 / 4, 1 / 8, or 1 / 16, etc.). For example, the vector parallel to the perpendicular line of parallelogram A1B1E1C1 (normal vector) is obtained by the cross product of vector A1B1 and vector A1C1. Moreover, if the unit vector (vector with length 1) of the above-mentioned normal vector is set to NM, and the length of vector A1E1 is set to |A1E1|, then vector E1E1j is determined by k × |A1E1| × NM (e.g., k = ±n / 2, ±n / 4, ±n / 8, ±n / 16, ... (n = 1, 2, 3, ...) etc.). Alternatively, vector E1E1j can also be set to k times vector NM without using line segment A1E1 or line segment B1C1 (e.g., k=±16, ±32, ±48, ±64, ... etc.).
[0340] In addition, with Figure 34 Use Figure 33 The prediction method shown determines at least one or more predicted values. Similarly, the encoding or decoding device can also use... Figure 37 The prediction method shown determines at least one prediction value Ei and Eij (e.g., i=1, 2, 3, j=1, 2, 3, 4) and uses the average of the prediction values Ei, Ei1, Ei2, Ei3 and Ei4 as candidates for prediction values.
[0341] Furthermore, the encoding or decoding device can also assign inherent index values to each predicted value, and on a per-vertex or per-vertex basis, notify the decoding device of the index value of the prediction method used in the encoding. During decoding, the prediction method is switched based on the index value to determine the predicted coordinates of the triangle vertices. Additionally, the information notified from the encoding device to the decoding device can be implemented as long as it determines the prediction method used in the encoding; it does not necessarily have to be an index value.
[0342] In this way, by adding the option of predicting values that are not on the same plane as triangle A1B1C1, the encoding or decoding device can increase the likelihood of selecting an effective prediction method for vertex coordinates with uneven mesh surfaces, and may be able to further suppress the amount of vertex coordinate encoding.
[0343] The following explains the encoding process for vertex coordinates. Vertex coordinate encoding can also be described as an encoding method that encodes the coordinates of the vertices contained in a 3D mesh.
[0344] Figure 38 This is a flowchart illustrating an example of the processing of the encoding device in this embodiment.
[0345] In step S301, the encoding device obtains the connection information of the three-dimensional mesh. The connection information represents the triangles that constitute the three-dimensional mesh of the encoded object and how the vertices of the triangles are connected.
[0346] In step S302, the encoding device begins cyclic processing of each vertex of the encoded object among the multiple vertices contained in the 3D mesh. During cyclic processing, the encoding device encodes the coordinates of each vertex using prediction processing. In cyclic processing, the encoding device is controlled to focus on one or more vertices of the encoded object, performing the processing steps S303-S306 for each of the vertices of interest, ultimately performing the above processing on all vertices of the encoded object. Furthermore, the vertices of interest are also referred to as the vertices of interest.
[0347] In step S303, the encoding device determines the predicted value of the coordinates of the vertex of interest.
[0348] In step S304, the encoding device encodes information related to the prediction method for the vertex of interest. This information represents the prediction method used when determining the prediction value in step S303, and may include, for example, an index value indicating the prediction method for the vertex of interest.
[0349] In step S305, the encoding device uses the predicted value determined in step S303 to calculate the prediction residual of the coordinates of the vertex of interest.
[0350] In step S306, the encoding device encodes the prediction residual of the coordinates of the vertex of interest calculated in step S305.
[0351] In step S307, the encoding device ends the loop processing for each vertex. Specifically, the encoding device determines whether the processing of steps S303 to S306 has been performed on all vertices. If not, the control is to focus on the vertices that have not yet been processed and perform the processing.
[0352] The following explains the decoding process for vertex coordinates. Vertex coordinate decoding can also be described as a decoding method that decodes the coordinates of the vertices contained in a 3D mesh.
[0353] Figure 39 This is a flowchart illustrating an example of the processing of the decoding device in this embodiment.
[0354] In step S401, the decoding device obtains the connection information of the three-dimensional mesh.
[0355] In step S402, the decoding device begins cyclic processing of each vertex of the decoded object among the multiple vertices contained in the 3D mesh. During this cyclic processing, the decoding device uses prediction processing to decode the coordinates of each vertex. In this cyclic processing, the decoding device is controlled to focus on one or more vertices of the decoded object, performing the processing steps S403-S406 for each of the vertices of interest, ultimately processing all vertices of the decoded object. Furthermore, the vertices of interest are also referred to as the vertices of interest.
[0356] In step S403, the decoding device decodes information related to the prediction method of the vertex of interest. This information includes an index value representing the prediction method used in the encoding of the vertex of interest.
[0357] In step S404, the decoding device uses the information related to the prediction method decoded in step S403 to determine the predicted value of the coordinates of the vertex of interest.
[0358] In step S405, the decoding device decodes the prediction residual of the coordinates of the vertex of interest.
[0359] In step S406, the decoding device reconstructs the vertex coordinates based on the predicted value determined in step S404 and the predicted residual decoded in step S405.
[0360] In step S407, the decoding device ends the loop processing for each vertex. Specifically, the encoding device determines whether the processing of steps S403 to S406 has been performed on all vertices. If not, the control is to focus on the vertices that have not yet been processed and perform the processing.
[0361] In this way, by informing the decoding device of the index value of the prediction method used in the encoding, the encoding device can switch the prediction method for purposes such as reducing the amount of encoding, and the decoding device can correctly recover the coordinates of the vertices of the triangle from the bit stream containing the coordinates of the vertices of the encoded triangle.
[0362] The following describes the detailed processing of the encoding device.
[0363] Figure 40 This is a flowchart illustrating an example of the processing of the encoding device in this embodiment.
[0364] The encoding device can also perform the process in place of step S304 described above. Figure 40 The processing is illustrated. Specifically, the encoding device is able to encode information related to the prediction method only when specified conditions are met.
[0365] As an example, the encoding device can use either prediction method A or B to encode the vertices. Prediction method A is, for example, Figure 34 The prediction method shown, prediction method B is, for example, Figure 35 The prediction method is shown. Additionally, the encoding device... Figure 35 If all vertices A1, B1, C1, F1, and G1 shown have been encoded, it is determined that prediction method B can be applied.
[0366] The encoding device determines whether prediction method B can be applied to the encoding of the vertex of interest (step S311).
[0367] If it is determined that prediction method B can be applied ("Yes" in step S311), the encoding device encodes the information related to the prediction method determined in step S303 (i.e., information indicating which of prediction method A and prediction method B will be used for encoding (e.g., a flag or index value)) (step S312).
[0368] On the other hand, if it is determined that prediction method B cannot be applied (No in step S311), the encoding device may also be configured to use prediction method A for encoding in step S303, without encoding information related to the prediction method (i.e., information indicating which of prediction method A and prediction method B will be used for encoding).
[0369] The following describes the detailed processing of the decoding device.
[0370] Figure 41 This is a flowchart illustrating an example of the processing of the decoding device in this embodiment.
[0371] The decoding device can also perform the process in place of step S403 described above. Figure 41 The processing is shown.
[0372] Figure 41 The processing shown can be done on the pass Figure 40 The decoding device performs processing when the coordinates of the vertices of the triangle encoded by the encoding method shown are decoded.
[0373] The decoding device determines whether prediction method B can be applied to the decoding of the vertex of interest (step S411).
[0374] If it is determined that prediction method B can be applied ("Yes" in step S411), the information related to the prediction method determined by the encoding device (i.e., information indicating which of prediction method A and prediction method B the encoding device used in the encoding (e.g., a flag or index value)) is decoded (step S412).
[0375] On the other hand, if it is determined that prediction method B cannot be applied (step S411: No), it can also be set that the encoding device used prediction method A in the encoding (that is, the information related to prediction indicates "prediction method A was used in the encoding"), and the information related to prediction is set to prediction method A (step S413).
[0376] Furthermore, the encoding or decoding device can also use vertex B1 instead of vertex B1', even when vertices A1, B1, C1, and F1 have all been encoded or decoded, and vertex G1 has not been encoded or decoded, thus determining that prediction method B can be applied. Additionally, the encoding or decoding device can also... Figure 35 If all vertices A1, B1, C1, and G1 have been encoded or decoded, and vertex F1 has not been encoded or decoded, vertex C1 is used instead of vertex C1', and it is determined that prediction method B can be applied.
[0377] Furthermore, as prediction method B, it can also be used in Figure 34 China Replacement Figure 33 The prediction method shown is applied. Figure 35 The prediction method shown determines multiple predicted values Ei (i=1, 2, 3, ...), and uses the average of these multiple predicted values as the predicted coordinate of vertex D. In this case, if there is more than one i where all vertices Ai, Bi, Ci, Fi, and Gi are encoded or decoded (condition 1), it can be determined that prediction method B can be applied. Alternatively, if there is more than one i where all vertices Ai, Bi, Ci, and Fi are encoded or decoded, and vertex Gi is not encoded or decoded (condition 2), vertex Bi can be used instead of vertex Bi' to determine that prediction method B can be applied. Furthermore, if there is more than one i where all vertices Ai, Bi, Ci, and Gi are encoded or decoded, and vertex Fi is not encoded or decoded (condition 3), vertex Ci can be used instead of vertex Ci' to determine that prediction method B can be applied. Additionally, if at least one of conditions 1 to 3 is true, it can be determined that prediction method B can be applied.
[0378] Additionally, if the encoding or decoding device is capable of applying prediction method B, it can also... Figure 36 The candidate predicted values described herein are used for prediction. In this case, the encoding device proceeds in step S311 (refer to...). Figure 40 If it is determined in step S312 that prediction method B can be applied, then the information indicating that the encoding device used prediction method B in step S303 and the information indicating that prediction method B was used can also be processed in step S312. Figure 36Information (e.g., index value) about which candidate predicted value is shown is encoded. Furthermore, the encoding device in step S311 (refer to...) Figure 40 If it is determined in step S303 that prediction method B cannot be applied, it can also be regarded as the encoding device using prediction method A, and the information indicating which prediction method was used is not encoded.
[0379] Additionally, the decoding device in step S411 (refer to...) Figure 41 If it is determined in step S412 that prediction method B can be applied, then the information indicating that prediction method B has been used by the encoding device and the information indicating that prediction method B has been used can also be processed in step S412. Figure 36 The information (e.g., index value) of which candidate predicted value is shown is decoded. Alternatively, the decoding device can also decode in step S411 (refer to...). Figure 41 If it is determined that prediction method B cannot be applied, the encoding device is considered to have used prediction method A, and in step S413, the information related to prediction is set to prediction method A.
[0380] As described above, by notifying the decoding device of the index value of the prediction method used in encoding only when multiple prediction methods can be applied, unnecessary notification of index values can be avoided, and it is possible to reduce the amount of encoding.
[0381] The following describes the method for predicting the coordinates of the vertices in this embodiment.
[0382] Figure 42 and Figure 43 This is an explanatory diagram illustrating an example of a method for predicting the coordinates of a vertex in this embodiment. Figure 42 as well as Figure 43 The image illustrates an example of a method for predicting the coordinates of the vertices of a triangle in the encoding or decoding process of a 3D mesh composed of multiple triangles. In this example, the coordinates of the vertices to be encoded or decoded are predicted using triangles or connection information indicating how their vertices are connected.
[0383] exist Figure 42 In the diagram, vertices A1, B1, and C2 are vertices whose coordinates have been encoded or decoded. Vertex D is the vertex whose coordinates will be encoded or decoded next. The coordinates of vertex E1 are predicted values of the coordinates of vertex D, for example, they can also be derived as the coordinates of D assuming quadrilaterals C1A1B1D and C2C1B1D are parallelograms. In this case, the coordinates of vertex E1 are derived by adding a vector B1E1 with half the size of vector A1C2 to the coordinates of vertex B1. In other words, the coordinates of vertex E1 are derived by adding half the difference between the coordinates of vertex C2 and vertex A1 to the coordinates of vertex B1 (see Equation 1).
[0384] E1 = B1 + (C2 - A1) / 2 (Equation 1) In other words, the coordinates of vertex E1 are calculated such that the difference between the coordinates of vertex C2 and vertex A1 is twice the difference between the coordinates of vertex E1 and vertex B1.
[0385] Alternatively, the encoding or decoding device can also encode or decode the vector E1D as a prediction residual.
[0386] Figure 42 The prediction shown can be applied as long as vertices A1, B1, and C2 are encoded or decoded vertices, thus determining the predicted value E1. The starting point A1 and ending point C2 of vector A1C2 are directly connected to the starting point B1 and ending point D of vector B1D; therefore, the direction and magnitude of vectors A1C2 and B1D are considered to be highly correlated. Therefore, the encoding or decoding device determines vertex E1 based on vector A1C2 and vertex B1, thus having a high probability of accurately predicting the coordinates of vertex D. Furthermore, Figure 42 The prediction method shown is able to predict with Figure 33 , Figure 34 or Figure 35 The prediction methods shown are applied under different conditions, therefore, by comparing with Figure 33 , Figure 34 or Figure 35 The combination of at least one of the prediction methods shown can determine that the frequency or probability of the predicted value E1 is increased, and it may be possible to reduce the amount of coding required to encode the vector E1D as the prediction residual.
[0387] exist Figure 43 In the diagram, vertices A2, C2, and B1 are vertices whose coordinates have been encoded or decoded. Vertex D is the vertex whose coordinates will be encoded or decoded next. The coordinates of vertex E2 are predicted values of the coordinates of vertex D, for example, they can also be derived as the coordinates of D assuming quadrilaterals B2A2C2D and B1B2C2D are parallelograms. In this case, the coordinates of vertex E2 are derived by adding a vector C2E2 with half the size of vector A2B1 to the coordinates of vertex C2. In other words, the coordinates of vertex E2 are derived by adding half the difference between the coordinates of vertex B1 and vertex A2 to the coordinates of vertex C2 (see Equation 2).
[0388] E2 = C2 + (B1 - A2) / 2 (Equation 2) In other words, the coordinates of vertex E2 are calculated such that the difference between the coordinates of vertex B1 and vertex A2 is twice the difference between the coordinates of vertex E2 and vertex C2.
[0389] Alternatively, the encoding or decoding device can also encode or decode the vector E2D as a prediction residual.
[0390] Figure 43 The prediction shown can be applied as long as vertices A2, C2, and B1 are encoded or decoded vertices, thus determining the predicted value E2. The starting point A2 and ending point B1 of vector A2B1 are directly connected to the starting point C2 and ending point D of vector C2D; therefore, the direction and magnitude of vectors A2B1 and C2D are considered to be highly correlated. Therefore, the encoding or decoding device determines vertex E2 based on vector A2B1 and vertex C2, thus having a high probability of accurately predicting the coordinates of vertex D. Furthermore, Figure 43 The prediction method shown is able to predict with Figure 33 , Figure 34 or Figure 35 The prediction methods shown are applied under different conditions, therefore, by comparing with Figure 33 , Figure 34 or Figure 35 The combination of at least one of the prediction methods shown can determine that the frequency or probability of the predicted value E2 is increased, and it may be possible to reduce the amount of coding required to encode the vector E2D as the prediction residual.
[0391] In addition, Figure 34 In, it can also be used with Figure 35 The prediction method shown determines multiple predicted values. Similarly, it uses... Figure 42 or Figure 43 The prediction method shown determines multiple predicted values Ei, and the average of these multiple predicted values is used as the predicted coordinate of vertex D. Alternatively, it can be applied to... Figure 42 or Figure 43 The number of triangles AiBiCi in the prediction method shown determines the number of predicted values. The number of predicted values can also be one. Furthermore, it is not necessary to use methods that can be applied... Figure 42 or Figure 43 The prediction method shown uses all triangles AiBiCi, but a pre-defined number of triangles AiBiCi can also be used for prediction.
[0392] The encoding or decoding device can either consistently apply any of the prediction methods described above to predict the coordinates of the triangle vertices, or assign inherent index values to each method. For each vertex or multiple vertices, the encoding device can notify the decoding device of the index value of the prediction method used in encoding. During decoding, the prediction method is switched based on the index value to determine the predicted coordinates of the triangle vertices. By notifying the decoding device of the index value of the prediction method used in encoding, it is possible to select a more efficient prediction method while encoding the 3D mesh, and to suppress the amount of encoding. Furthermore, the information notified from the encoding device to the decoding device can be implemented as long as it determines the prediction method used in encoding; it does not necessarily have to be an index value. Additionally, when determining whether vertices Ai, Bi, Ci, Fi, and Gi have been encoded or decoded, if there are holes or other structures in the 3D mesh where no corresponding vertex exists, it can be determined that they have not been encoded / decoded.
[0393] The following explains the process for determining the predicted values.
[0394] Figure 44 This is a flowchart illustrating an example of the prediction value determination process in this embodiment.
[0395] Encoding device can encode Figure 38 The processing steps S303~S304 in the encoding process shown are replaced by Figure 44 The processing shown. Additionally, the decoding device is capable of... Figure 39 The processing steps S403~S404 in the decoding process shown are replaced as follows: Figure 44 The processing is shown. The encoding or decoding device performs... Figure 44 The processing shown can encode or decode the coordinates of the vertices of a triangle while switching the method for determining the prediction value, depending on the number of triangles AiBiCi for which multiple prediction methods can be applied.
[0396] For example, Figure 33 The prediction method shown is denoted as prediction method A. Figure 35 If all vertices Ai, Bi, and Ci (i=1, 2, 3, ...) shown have been encoded or decoded, the encoding or decoding device determines that prediction method A can be applied to triangle AiBiCi. Furthermore, Figure 42 The prediction method shown is set as prediction method B. Figure 35 If all vertices Ai, Bi, and Cj (j=i+1, i=1, 2, 3, ...) shown have been encoded or decoded, the encoding or decoding device determines that prediction method B can be applied in triangle AiBiCi.
[0397] like Figure 44As shown, in step S501, the encoding device or decoding device counts the number A of triangles AiBiCi that can be predicted using prediction method A.
[0398] In step S502, the encoding device or decoding device will count the number B of triangles AiBiCi that can be predicted using prediction method B.
[0399] In step S503, the encoding device or decoding device determines whether the number A is greater than 0 (i.e., whether there is at least one triangle AiBiCi to which prediction method A can be applied, or whether there are none). If the number A is determined to be greater than 0 ("Yes" in step S503), proceed to step S504; otherwise ("No" in step S503), proceed to step S511.
[0400] In step S504, the encoding device or the decoding device determines whether the number A is greater than the number B. If the number A is greater than the number B (yes in step S504), proceed to step S505; otherwise (no in step S504), proceed to step S512.
[0401] In step S505, the encoding device or the decoding device determines the predicted value using prediction method A.
[0402] In step S511, the encoding device or the decoding device determines whether the number B is greater than 0 (i.e., whether there is at least one triangle AiBiCi to which prediction method B can be applied, or whether there are none). If the number B is determined to be greater than 0 ("Yes" in step S511), proceed to step S512; otherwise ("No" in step S511), proceed to step S521.
[0403] In step S512, the encoding device or the decoding device determines the predicted value through prediction method B.
[0404] In step S521, the encoding device or the decoding device determines the predicted value using a predetermined method. This predetermined method may also involve using the coordinates of a vertex that is near vertex Bi or vertex Ci and has already been encoded or decoded as the predicted value. Alternatively, the predetermined method may be used when there are no encoded or decoded vertices near vertex Bi or vertex Ci, and the predicted value is a pre-defined coordinate system such as the origin (0, 0, 0).
[0405] Through the above process, the encoding or decoding device can switch prediction methods based on the number of triangles AiBiCi that can be applied to each of the multiple prediction methods. This allows the device to select the prediction method that can be expected to achieve high results without notifying the index value of the prediction method, and may reduce the amount of coding required to encode the prediction residual.
[0406] Furthermore, in this example, in the substitution Figure 42 The prediction method shown will Figure 43 The prediction method shown is set as prediction method B, and Figure 35 Even if all the vertices Ai, Bj, and Ci (j=i-1, i=2, 3, ...) shown have been encoded or decoded, the same result may still be obtained even if the triangle AiBiCi is determined to be able to apply prediction method B.
[0407] Alternatively, the determination condition for step S504 can be set to "number A ≥ number B", that is, "whether number A is greater than or equal to number B". However, when using... Figure 33 The prediction method shown is used as prediction method A. Figure 42 or Figure 43 When the prediction method shown is prediction method B, and the prediction accuracy of prediction method B is expected to be higher than that of prediction method A, it is possible to further reduce the amount of coding required to encode the prediction residuals by using prediction method B when the number of A and the number of B are the same.
[0408] Alternatively, the aforementioned encoding device or decoding device may be described as follows.
[0409] (1) An encoding apparatus comprising: a circuit; and a memory connected to the circuit, wherein, in the operation of encoding the coordinates of vertices of polygons constituting a surface of a three-dimensional mesh, the circuit selects one of two or more prediction processes, including a first prediction process and a second prediction process, wherein the first prediction process determines at least one coordinate on a plane containing the second polygon as the coordinates of the first vertex based on the coordinates of at least one second vertex of a second polygon adjacent to a first polygon containing a first vertex of the encoded object, and the second prediction process determines at least one coordinate not on a plane containing the second polygon as the coordinates of the first vertex; and the second prediction process encodes selection information indicating the selected prediction process and a difference between the coordinates of the first vertex and a third prediction value determined by the selected prediction process.
[0410] (2) In the encoding apparatus described in (1), the circuit determines the second prediction value in the second prediction process based on the coordinates of at least one vertex of a third polygon that is adjacent to the second polygon and different from the first polygon, and at least one second vertex that is not connected to the second polygon.
[0411] (3) In the encoding device described in (2), the circuit selects one of the two or more prediction processes to encode the selection information when at least one or more second vertices have been encoded, and selects the first prediction process without encoding the selection information when neither of the second vertices has been encoded.
[0412] (4) In the encoding device described in (2) or (3), the circuit includes a third prediction process that determines a fourth prediction value as the coordinates of the first vertex by the coordinates on the line between the first prediction value and the second prediction value.
[0413] (5) In the encoding apparatus of (1), the circuit, in the second prediction process, determines at least one coordinate of the first predicted value or a line that intersects the plane containing the second polygon perpendicularly with the coordinate of the first predicted value or nearby as the second predicted value.
[0414] (6) A decoding apparatus, comprising: a circuit; and a memory connected to the circuit, the circuit including two or more prediction processes in the operation of reconstructing the coordinates of vertices of polygons constituting a surface of a three-dimensional mesh, the two or more prediction processes including: a first prediction process that determines at least one coordinate on a plane containing the second polygon as the coordinates of the first vertex based on the coordinates of at least one second vertex of a second polygon adjacent to the first polygon containing the first vertex of the reconstructed object; and a second prediction process that determines at least one coordinate not on the plane containing the second polygon as the coordinates of the first vertex; decoding selection information and a difference value indicating one of the two or more prediction processes; determining a third prediction value by the prediction process indicated by the selection information; and reconstructing the coordinates of the first vertex based on the third prediction value and the difference value.
[0415] (7) In the decoding apparatus described in (6), the circuit determines the second prediction value in the second prediction process based on the coordinates of at least one vertex of a third polygon that is adjacent to the second polygon and different from the first polygon, and at least one second vertex that is not connected to the second polygon.
[0416] (8) In the decoding device described in (7), the circuit decodes the selection information and determines a third prediction value by means of the indicated prediction process when at least one or more of the second vertices have been restored, and determines a third prediction value by means of the first prediction process when none of the second vertices have been encoded.
[0417] (9) In the encoding apparatus of (7) or (8), the circuit includes a third prediction process that determines a fourth prediction value as the coordinates of the first vertex by the coordinates on the line between the first prediction value and the second prediction value.
[0418] (10) In the decoding apparatus of (6), the circuit, in the second prediction process, determines at least one coordinate on a straight line that perpendicularly intersects the plane containing the second polygon at or near the coordinate of the first prediction value as the second prediction value.
[0419] Alternatively, the aforementioned encoding device or decoding device may be described as follows.
[0420] (1) An encoding apparatus comprising: a circuit; and a memory connected to the circuit, wherein, in the operation of encoding the coordinates of vertices of polygons constituting a surface of a three-dimensional mesh, the circuit determines at least one coordinate on a plane including at least one second vertex, at least one third vertex, and at least one fourth vertex as a predicted value of the coordinates of a first vertex, wherein the at least one second vertex is a vertex of a second polygon adjacent to a first polygon including the first vertex of the encoding object, and is not connected to the first polygon, the at least one third vertex is a vertex of a third polygon adjacent to the first polygon and different from the second polygon, and is not connected to the first polygon, and the at least one fourth vertex is a vertex of the first polygon, and is not connected to the third polygon; and encodes the difference between the coordinates of the first vertex and the predicted value.
[0421] (2) In the encoding device described in (1), the circuit determines at least one coordinate on a first straight line as a predicted value of the coordinate of the first vertex, the first straight line being parallel to a first vector that starts at the second vertex and ends at the third vertex, and passing through the fourth vertex.
[0422] (3) In the encoding device described in (2), the circuit determines the coordinates of the first vertex as the predicted coordinates of the first vertex at a distance of 1 / 2 of the length of the first vector from the fourth vertex toward the first vector.
[0423] (4) A decoding apparatus comprising: a circuit; and a memory connected to the circuit, wherein, in the operation of reconstructing the coordinates of the vertices of a polygon constituting a surface of a three-dimensional mesh, the circuit determines at least one coordinate on a plane including at least one second vertex, at least one third vertex, and at least one fourth vertex as a predicted value of the coordinates of a first vertex, wherein the at least one second vertex is a vertex of a second polygon adjacent to a first polygon including the first vertex of the reconstructed object, and is a vertex not connected to the first polygon, the at least one third vertex is a vertex of a third polygon adjacent to the first polygon but different from the second polygon, and is a vertex not connected to the first polygon, and the at least one fourth vertex is a vertex of the first polygon, and is a vertex not connected to the third polygon; decodes the difference value corresponding to the coordinates of the first vertex, and reconstructs the coordinates of the first vertex based on the predicted value and the difference value.
[0424] (5) In the decoding device described in (4), the circuit determines at least one coordinate on a first straight line as a predicted value of the coordinate of the first vertex, the first straight line being parallel to a first vector that starts at the second vertex and ends at the third vertex, and passing through the fourth vertex.
[0425] (6) In the decoding device described in (5), the circuit determines the coordinates of the first vertex as the predicted coordinates of the first vertex at a distance of 1 / 2 of the length of the first vector from the fourth vertex toward the first vector.
[0426] Hereinafter, another example of the encoding process in this embodiment will be described.
[0427] Figure 45 This is a flowchart illustrating an example of the encoding process in this embodiment.
[0428] Figure 45 The encoding process shown can also be described as an encoding method that encodes the coordinates of the vertices contained in a 3D mesh. Figure 45 The encoding process shown is performed by the encoding device.
[0429] In step S601, the encoding device uses the coordinates of three vertices to derive a predicted value for the coordinates of the first vertex. These three vertices are connected to the first vertex (e.g., the vertex being encoded). Figure 42 The second vertex of vertex D) (e.g. Figure 42 Three vertices (e.g., vertex C1) that are different from the first vertex among the multiple vertices connected by vertex C1. Figure 42 Vertices A1, B1, and C2).
[0430] In step S602, the encoding device encodes the difference between the predicted value derived in step S601 and the coordinates of the first vertex.
[0431] Therefore, the encoding device uses the coordinates of three vertices that are different from the first vertex among the multiple vertices connected to the second vertex, which is the first vertex to be encoded, to derive predicted values of the coordinates of the first vertex. When the coordinates of these three vertices are highly correlated with the position of the first vertex, the derived predicted values may be appropriate values that are close to the coordinates of these three points. This may improve the accuracy of the encoding of the first vertex and reduce the amount of encoding. Thus, the encoding device can help improve the encoding processing related to the coordinates of vertices in a 3D mesh.
[0432] For example, the encoding device may derive the predicted value without using the coordinates of the second vertex.
[0433] Therefore, when deriving predicted values, the encoding device can more easily derive appropriate predicted values by using the coordinates of the three vertices mentioned above—in other words, without using the aforementioned "second vertex connected to the first vertex being encoded." This allows the encoding device to more easily contribute to improving the encoding processing related to the coordinates of the vertices of a 3D mesh.
[0434] For example, when deriving predicted values, the encoding device may also use a third vertex, which contains at least two vertices connected to the first vertex (e.g., ...). Figure 42 Vertex B1) and the fourth vertex (e.g. Figure 42 The three vertices, including vertex C2, are used as the three vertices mentioned above to derive the predicted value.
[0435] Therefore, when deriving predicted values, the encoding device may be able to more easily derive appropriate predicted values by using the coordinates of at least three vertices, including the third and fourth vertices connected to the first vertex. This allows the encoding device to more easily contribute to improving the encoding processing related to the coordinates of the vertices of a 3D mesh.
[0436] For example, when deriving predicted values, the encoding device may also use at least a fifth vertex that is not connected to the first vertex (e.g., ...). Figure 42 The three vertices, including vertex A1, are used as the three vertices mentioned above to derive the predicted value.
[0437] Therefore, when deriving predicted values, the encoding device may be able to more easily derive appropriate predicted values by using the coordinates of at least three vertices, including the fifth vertex, which is not connected to the first vertex. This allows the encoding device to more easily contribute to improving the encoding processing related to the coordinates of the vertices of a 3D mesh.
[0438] For example, when deriving predicted values, the encoding device may also use a fifth vertex that is not connected to the first vertex (e.g., ...). Figure 42 The three vertices, including vertex A1, are used as the three vertices mentioned above to derive the predicted value. The difference between the coordinates of the fourth vertex and the coordinates of the fifth vertex is twice the difference between the predicted value of the coordinates of the first vertex and the coordinates of the third vertex.
[0439] Therefore, when deriving predicted values, the encoding device may be able to more easily derive appropriate predicted values by calculating the coordinates of one of the four vertices of a trapezoid formed by two vertices (the third and fourth vertices connected to the first vertex) and three vertices (the fifth vertex not connected to the first vertex). This allows the encoding device to more easily contribute to improving the encoding processing related to the coordinates of the vertices of a 3D mesh.
[0440] For example, the predicted value could also be the first predicted value. Alternatively, the encoding device could use three new vertices from a set of new vertices that are different from the first vertex (e.g., ...). Figure 43 Given the coordinates of vertices A2, B1, and C2, derive a second predicted value as the predicted value of the coordinates of the first vertex, where the new multiple vertices are connected to the first vertex (e.g., ...). Figure 43 The new second vertex (e.g., vertex D) Figure 43 The vertices C1 and C2 are connected, and at least a portion of the new vertices are different from the aforementioned vertices; using the first and second predicted values, a third predicted value is derived as a new predicted value of the coordinates of the first vertex; the new difference between the third predicted value and the coordinates of the first vertex is encoded.
[0441] Therefore, the encoding device uses a second predicted value derived from three new vertices that are at least partially different from the aforementioned three vertices to derive a new third predicted value. The derived third predicted value may be a more appropriate predicted value than either the first or second predicted value. This may improve the encoding accuracy of the first vertex and potentially reduce the amount of encoding. Thus, the encoding device can help improve the encoding processing related to the coordinates of the vertices of a 3D mesh.
[0442] For example, when deriving the third predicted value, the encoding device may also derive the average of the first and second predicted values as the third predicted value.
[0443] Therefore, by averaging the first and second predicted values, the encoding device can more easily calculate the third predicted value. Thus, the encoding device can improve the encoding process related to the coordinates of the vertices of a 3D mesh through easier information processing.
[0444] For example, when deriving the third predicted value, the encoding device can also derive a weighted average of the first and second predicted values as the third predicted value.
[0445] Therefore, by processing information to obtain a weighted average of the first and second predicted values, the encoding device can more easily calculate the third predicted value. Thus, the encoding device can improve the encoding process related to the coordinates of the vertices of a 3D mesh through easier information processing.
[0446] For example, the encoding device can also obtain connection information representing the connections between the vertices contained in the three-dimensional mesh. When deriving the prediction value, the connection information obtained shows the connections between the vertices contained in the three-dimensional mesh to determine the three vertices, and the coordinates of the three vertices determined are used to derive the predicted value of the coordinates of the first vertex.
[0447] Therefore, by using connection information, the encoding device can more easily determine the three vertices and derive predicted values using these three vertices. Consequently, the encoding device can more easily contribute to improving encoding processes related to the coordinates of the vertices of a 3D mesh.
[0448] Hereinafter, another example of the decoding process in this embodiment will be described.
[0449] Figure 46 This is a flowchart illustrating an example of the decoding process in this embodiment.
[0450] Figure 46 The decoding process shown can also be described as a decoding method that decodes the coordinates of the vertices contained in a 3D mesh. Figure 46 The decoding process shown is performed by the decoding device.
[0451] In step S701, the decoding device uses the coordinates of three vertices to derive the predicted coordinates of the first vertex. These three vertices are connected to the first vertex (e.g., the vertex being decoded). Figure 42 The second vertex of vertex D) (e.g. Figure 42 Three vertices (e.g., vertex C1) that are different from the first vertex among the multiple vertices connected by vertex C1. Figure 42 Vertices A1, B1, and C2).
[0452] In step S702, the decoding device decodes the difference between the predicted value and the coordinates of the first vertex.
[0453] In step S703, the decoding device uses the predicted value and the difference value to reconstruct the coordinates of the first vertex.
[0454] Therefore, the decoding device uses the coordinates of three vertices that are different from the first vertex among the multiple vertices connected to the second vertex, which is the first vertex to be decoded, to derive predicted values of the coordinates of the first vertex. When the coordinates of these three vertices are highly correlated with the position of the first vertex, the derived predicted values may be appropriate values that are close to the coordinates of these three points. This may improve the decoding accuracy of the first vertex and reduce the amount of encoding. Thus, the decoding device can help improve the decoding processing related to the coordinates of vertices in a 3D mesh.
[0455] For example, the decoding device may derive the predicted value without using the coordinates of the second vertex.
[0456] Therefore, when deriving predicted values, the decoding device can more easily derive appropriate predicted values by using the coordinates of the three vertices mentioned above—in other words, without using the aforementioned "second vertex connected to the first vertex being decoded." This allows the decoding device to more easily contribute to improving decoding processes related to the coordinates of the vertices of a 3D mesh.
[0457] For example, the decoding device may also use a third vertex (e.g., a vertex that includes at least two vertices connected to the first vertex) when deriving the predicted value. Figure 42 Vertex B1) and the fourth vertex (e.g. Figure 42 The three vertices, including vertex C2, are used as the three vertices mentioned above to derive the predicted value.
[0458] Therefore, when deriving predicted values, the decoding device may be able to more easily derive appropriate predicted values by using the coordinates of at least three vertices, including the third and fourth vertices connected to the first vertex. This allows the decoding device to more easily contribute to improving the decoding process related to the coordinates of the vertices of a 3D mesh.
[0459] For example, when deriving predicted values, the decoding device may also use at least a fifth vertex that is not connected to the first vertex (e.g., ...). Figure 42 The three vertices, including vertex A1, are used as the three vertices mentioned above to derive the predicted value.
[0460] Therefore, when deriving predicted values, the decoding device may be able to more easily derive appropriate predicted values by using the coordinates of at least three vertices, including the fifth vertex, which is not connected to the first vertex. This allows the decoding device to more easily contribute to improving the decoding process related to the coordinates of the vertices of a 3D mesh.
[0461] For example, the decoding device could also use a fifth vertex (e.g., a vertex not connected to the first vertex) when deriving the predicted value. Figure 42The three vertices, including vertex A1, are used as the three vertices mentioned above to derive the predicted value. The difference between the coordinates of the fourth vertex and the coordinates of the fifth vertex is twice the difference between the predicted value of the coordinates of the first vertex and the coordinates of the third vertex.
[0462] Therefore, when deriving predicted values, the decoding device may be able to more easily derive appropriate predicted values by calculating the coordinates of one of the four vertices of a trapezoid formed by the three vertices (the third and fourth vertices connected to the first vertex and the fifth vertex not connected to the first vertex). This allows the decoding device to more easily contribute to improving the decoding process related to the coordinates of the vertices of a 3D mesh.
[0463] For example, the predicted value could also be the first predicted value. Alternatively, the decoding device could use three new vertices from a set of new vertices that are different from the first vertex (e.g., ...). Figure 43 Given the coordinates of vertices A2, B1, and C2, derive a second predicted value as the predicted value of the coordinates of the first vertex, where the new multiple vertices are connected to the first vertex (e.g., ...). Figure 43 The new second vertex (e.g., vertex D) Figure 43 The vertex C1 is connected, and at least a portion of the new plurality of vertices are different from the aforementioned plurality of vertices; using the first and second predicted values, a third predicted value is derived as a new predicted value of the coordinates of the first vertex; the new difference value between the third predicted value and the coordinates of the first vertex is decoded; the coordinates of the first vertex are restored using the third predicted value and the new difference value.
[0464] Therefore, the decoding device uses a second prediction value derived from at least a portion of new three vertices that are different from the aforementioned three vertices to derive a new third prediction value. The derived third prediction value may be a more appropriate prediction value than either the first or second prediction value. This could potentially improve the decoding accuracy of the first vertex and potentially reduce the amount of coding. Thus, the decoding device can help improve the decoding processing related to the coordinates of the vertices of a 3D mesh.
[0465] For example, when deriving the third predicted value, the decoding device can also derive the average of the first and second predicted values as the third predicted value.
[0466] Therefore, by averaging the first and second predicted values, the decoding device can more easily calculate the third predicted value. Consequently, the decoding device can improve decoding processes related to the coordinates of the vertices of a 3D mesh through easier information processing.
[0467] For example, when deriving the third predicted value, the decoding device can also derive a weighted average of the first and second predicted values as the third predicted value.
[0468] Therefore, by processing information to obtain a weighted average of the first and second predicted values, the decoding device can more easily calculate the third predicted value. Thus, the decoding device can improve decoding processes related to the coordinates of the vertices of a 3D mesh through easier information processing.
[0469] For example, the decoding device can further obtain connection information representing the connections between vertices contained in the three-dimensional mesh. When deriving the prediction value, the connections between the vertices contained in the three-dimensional mesh shown by the obtained connection information are used to determine three vertices, and the predicted value of the coordinates of the first vertex is derived using the coordinates of the determined three vertices.
[0470] Therefore, according to the above method, the decoding device can more easily determine the three vertices by using the connection information, and can derive the predicted value using the determined three vertices. Thus, the decoding device can more easily contribute to improving the decoding process related to the coordinates of the vertices of a 3D mesh.
[0471] The following are other examples illustrating methods for predicting vertex coordinates.
[0472] Figure 47 and Figure 48 This is an explanatory diagram illustrating an example of a method for predicting the coordinates of a vertex in this embodiment.
[0473] Specifically, Figure 47 and Figure 48 This diagram illustrates a method for predicting the coordinates of the vertices of triangles during the encoding and decoding processes of a three-dimensional mesh composed of multiple triangles. In this example, the encoding or decoding device uses the triangles and connection information indicating how their vertices are connected to predict the coordinates of the vertices to be encoded or decoded.
[0474] exist Figure 47 In the equation, vertices A1, B1, G1, and F1 are vertices whose coordinates have been encoded or decoded, and vertex D is the vertex whose coordinates will be encoded or decoded next. The coordinates of vertex E1 are the predicted values of the coordinates of vertex D, and are set as the coordinates of quadrilateral A1B1E1C1' as parallelogram (refer to (Equation 3-1) and (Equation 3-2)).
[0475] C1' = B1 + (G1 - F1) / 2 (Equation 3-1) E1 = B1 + C1' - A1 (Equation 3-2) For example, the encoding or decoding device can also derive vector A1E1 as the sum of vector A1C1' and vector A1B1, and encode or decode vector E1D as the prediction residual. In other words, the coordinates of vertex E1 are calculated by adding the difference between the coordinates of vertex C1' and vertex A1 to the coordinates of vertex B1 (see (Equation 3-2)).
[0476] Here, vertex C1' is the predicted value of vertex C1, which can also be derived, for example, as the coordinates of vertex C1 assuming quadrilaterals A1F1B1C1 and A1B1C1G1 are parallelograms. In this case, the coordinates of vertex C1' are derived by adding the coordinates of vertex B1 to a vector B1C1' having half the size of vector F1G1 (see Equation 3-1). In other words, the coordinates of vertex C1' are calculated such that the difference between the coordinates of vertex G1 and vertex F1 is twice the difference between the coordinates of vertex C1' and vertex B1.
[0477] Figure 47 The prediction method shown can be applied as long as vertices A1, B1, G1, and F1 are encoded or decoded vertices. The encoding or decoding device can determine the predicted value E1 using the above prediction method. Since the starting point F1 and ending point G1 of vector F1G1 are directly connected to the starting point B1 and ending point C1 of vector B1C1, their direction and magnitude are considered to have a high correlation with vector B1C1. Therefore, the encoding or decoding device determines vertex C1' based on vector F1G1 and vertex B1, thereby having a high probability of predicting the coordinates of vertex C1 with high accuracy.
[0478] in addition, Figure 47 The prediction method shown is able to predict with Figure 33 , Figure 34 or Figure 35 The prediction methods shown are applied under different conditions, therefore, by comparing with Figure 33 , Figure 34 or Figure 35 The combination of at least one of the prediction methods shown can determine the increased frequency of the predicted value E1, potentially reducing the amount of coding required to encode the vector E1D as the prediction residual.
[0479] exist Figure 48 In the diagram, vertices A1, C1, G1, and F1 are vertices whose coordinates have been encoded or decoded, and vertex D is the vertex whose coordinates will be encoded or decoded next. The coordinates of vertex E1 are the predicted values of the coordinates of vertex D, and are set as the coordinates of quadrilateral A1B1'E1C1 as parallelograms (refer to (Equation 4-1) and (Equation 4-2)).
[0480] B1' = C1 + (F1 - G1) / 2 (Equation 4-1) E1 = B1' + C1 - A1 (Equation 4-2) For example, the encoding or decoding device can also derive vector A1E1 as the sum of vector A1C1 and vector A1B1', and encode or decode vector E1D as the prediction residual. In other words, the coordinates of vertex E1 are calculated by adding the difference between the coordinates of vertex B1' and vertex A1 to the coordinates of vertex C1 (see (Equation 4-2)).
[0481] Here, vertex B1' is the predicted value of vertex B1, which can also be derived, for example, as the coordinates of vertex B1 assuming quadrilaterals A1F1B1C1 and A1B1C1G1 are parallelograms. In this case, the coordinates of vertex B1' are derived by adding the coordinates of vertex C1 to a vector C1B1' having half the size of vector G1F1 (see Equation 4-1). In other words, the coordinates of vertex B1' are calculated such that the difference between the coordinates of vertex F1 and vertex G1 is twice the difference between the coordinates of vertex C1 and vertex B1'.
[0482] Figure 48 The prediction method shown can be applied as long as vertices A1, C1, G1, and F1 are encoded or decoded vertices. The encoding or decoding device can determine the predicted value E1 using the above prediction method. Since the starting point G1 and ending point F1 of vector G1F1 are directly connected to the starting point C1 and ending point B1 of vector C1B1, their direction and magnitude are considered to have a high correlation with vector C1B1. Therefore, the encoding or decoding device can determine vertex B1' based on vector G1F1 and vertex C1, thereby having a high probability of predicting the coordinates of vertex B1 with high accuracy.
[0483] in addition, Figure 48 The prediction method shown is able to predict with Figure 33 , Figure 34 or Figure 35 The prediction methods shown are applied under different conditions, therefore, by comparing with Figure 33 , Figure 34 or Figure 35 The combination of at least one of the prediction methods shown can determine the increased frequency of the predicted value E1, potentially reducing the amount of coding required to encode the vector E1D as the prediction residual.
[0484] In addition, it can also be used with Figure 34 Use Figure 33 The prediction method determines multiple predicted values similarly, using... Figure 33 , Figure 47 as well as Figure 48 The prediction method can be used to determine multiple predicted values Ei, and the average of the multiple predicted values Ei is used as the predicted coordinate of vertex D. Alternatively, it can be based on the applicable... Figure 33 , Figure 47 as well as Figure 48 The number of predicted values is set by the number of triangles AiBiCi in any of the prediction methods. The number of predicted values can also be 1. Furthermore, it is not necessary to use methods that can apply... Figure 33 , Figure 47 as well as Figure 48 All triangles AiBiCi in any of the prediction methods can be used for prediction, or a predetermined number of triangles AiBiCi can be used for prediction.
[0485] The encoding or decoding device can either consistently apply any of the prediction methods described above to predict the coordinates of the triangle vertices, or assign inherent index values to each method and, on a per-vertex or per-vertex basis, notify the decoding device of the index value of the prediction method used in encoding. During decoding, the prediction method is switched based on the index value to determine the predicted coordinates of the triangle vertices. By notifying the decoding device of the index value of the prediction method used in encoding, the 3D mesh can be encoded while selecting a more efficient prediction method, potentially reducing the amount of encoding. Furthermore, the information notified from the encoding device to the decoding device can be implemented as long as it determines the prediction method used in encoding, and does not necessarily have to be an index value. Additionally, when determining whether vertices Ai, Bi, Ci, Fi, and Gi have been encoded or decoded, if there are holes or other structures in the 3D mesh where no corresponding vertex exists, it can be determined that they have not been encoded or decoded.
[0486] The following are other examples illustrating methods for predicting vertex coordinates.
[0487] Figure 49 and Figure 50 This is an explanatory diagram illustrating an example of a method for predicting the coordinates of a vertex in this embodiment.
[0488] Specifically, Figure 49 and Figure 50 Is Figure 42 and Figure 43 This is an example of a prediction method that uses vertex C2' instead of vertex C2 to predict the coordinates of vertex D. Vertex C2' is the predicted value of vertex C2, and for example, it can also be derived as the coordinate value of C2 assuming that quadrilaterals A2F2B2C2 and A2B2C2G2 are parallelograms. In this case, the coordinates of vertex C2' are derived by adding the coordinates of vertex B2 to a vector B2C2' with a size of half that of vector F2G2 (see (Equation 5-1)).
[0489] Furthermore, by using the coordinates of the exported vertex C2' as... Figure 42The coordinates of vertex E1 are derived from the coordinates of vertex C2. That is, Figure 49 The coordinates of vertex E1 are derived by adding half of the difference between the coordinates of vertex C2' and vertex A1 to the coordinates of vertex B1 (see Equation 5-2).
[0490] C2'=B2+(G2-F2) / 2 (Equation 5-1) E1 = B1 + (C2' - A1) / 2 (Equation 5-2) Additionally, by using the coordinates of the exported vertex C2' as... Figure 43 The coordinates of vertex E2 are derived from the coordinates of vertex C2. That is, Figure 50 The coordinates of vertex E2 are derived by adding half of the difference between the coordinates of vertex B1 and vertex A2 to the coordinates of vertex C2' (see Equation 5-3).
[0491] E2 = C2' + (B1 - A2) / 2 (Equation 5-3) exist Figure 49 and Figure 50 In the prediction method shown, the starting point F2 and ending point G2 of vector F2G2 are directly connected to the starting point B2 and ending point C2 of vector B2C2. Therefore, the direction and magnitude are considered to have a high correlation with vector B2C2. Thus, the encoding or decoding device determines vertex C2' based on vector F2G2 and vertex B2, thereby having a high probability of predicting the coordinates of vertex C2 with high accuracy.
[0492] in addition, Figure 49 and Figure 50 The prediction method shown is able to predict with Figure 42 and Figure 43 The prediction methods shown are applied under different conditions, therefore, by comparing with Figure 42 and Figure 43 The combination of at least one of the prediction methods shown can increase the frequency of predicting the coordinates of vertex D, potentially reducing the amount of coding required to encode the prediction residuals of the coordinates of vertex D.
[0493] also, Figure 49 The prediction method shown can be applied as long as vertices A1, B1, B2, G2, and F2 are encoded or decoded vertices, and can determine the predicted value of the coordinates of vertex D. Figure 50 The prediction method shown can be applied as long as vertices A2, B2, B1, G2, and F2 are encoded or decoded vertices, and can determine the predicted value of the coordinates of vertex D.
[0494] In addition, Figure 49 as well as Figure 50In this context, vertices C1 and B2 refer to vertices with the same coordinates. Vertex C1 can be replaced with vertex B2, and vice versa.
[0495] The following are other examples illustrating methods for predicting vertex coordinates.
[0496] Figure 51 and Figure 52 This is an explanatory diagram illustrating an example of a method for predicting the coordinates of a vertex in this embodiment.
[0497] Figure 51 and Figure 52 Is Figure 42 and Figure 43 This is an example of a prediction method that uses vertex B1' instead of vertex B1 to predict the coordinates of vertex D. Vertex B1' is the predicted value of vertex B1, and for example, it can also be derived as the coordinate value of B1 assuming that quadrilaterals A1F1B1C1 and A1B1C1G1 are parallelograms. In this case, the coordinates of vertex B1' are derived by adding the coordinates of vertex C1 to a vector C1B1' with a size of half that of vector G1F1 (see (Equation 6-1)).
[0498] Furthermore, by using the coordinates of the exported vertex B1' as... Figure 42 The coordinates of vertex E1 are derived from the coordinates of vertex B1. That is, Figure 51 The coordinates of vertex E1 are derived by adding half of the difference between the coordinates of vertex C2 and vertex A1 to the coordinates of vertex B1' (see Equation 6-2).
[0499] B1' = C1 + (F1 - G1) / 2 (Equation 6-1) E1 = B1' + (C2 - A1) / 2 (Equation 6-2) Additionally, by using the coordinates of the exported vertex B1' as... Figure 43 The coordinates of vertex E2 are derived from the coordinates of vertex B1. That is, Figure 52 The coordinates of vertex E2 are derived by adding half of the difference between the coordinates of vertex B1' and vertex A2 to the coordinates of vertex C2 (see (Equation 6-3)).
[0500] E2 = C2 + (B1' - A2) / 2 (Equation 6-3) exist Figure 51 and Figure 52In the prediction method shown, the starting point G1 and ending point F1 of vector G1F1 are directly connected to the starting point C1 and ending point B1 of vector C1B1. Therefore, the direction and magnitude are considered to have a high correlation with vector C1B1. Thus, the encoding or decoding device determines vertex B1' based on vector G1F1 and vertex C1, thereby having a high probability of predicting the coordinates of vertex B1 with high accuracy.
[0501] in addition, Figure 51 and Figure 52 The prediction method shown is able to predict with Figure 42 and Figure 43 The prediction methods shown are applied under different conditions, therefore, by comparing with Figure 42 and Figure 43 The combination of at least one of the prediction methods shown can increase the frequency of predicting the coordinates of vertex D, potentially reducing the amount of coding required to encode the prediction residuals of the coordinates of vertex D.
[0502] also, Figure 51 The prediction method shown can be applied as long as vertices A1, C1, C2, G1, and F1 are encoded or decoded vertices, and can determine the predicted value of the coordinates of vertex D. Figure 52 The prediction method shown can be applied as long as vertices A2, C2, C1, G1, and F1 are encoded or decoded vertices, and can determine the predicted value of the coordinates of vertex D.
[0503] In addition, Figure 51 as well as Figure 52 In this context, vertices C1 and B2 refer to vertices with the same coordinates. Vertex C1 can be replaced with vertex B2, and vice versa.
[0504] Furthermore, as an example, in Figure 33 The prediction method that uses vertices A1, B1, and C1 to predict the value E1 can also be called "parallelogram prediction." This method derives the predicted coordinates of the object point being encoded or decoded based on the geometric characteristics of a parallelogram, specifically the feature that two pairs of opposite sides are parallel. More specifically, parallelogram prediction proceeds as follows: using the coordinates of the two vertices connected to the vertex D (vertices B1 and C1), and the coordinates of the vertex A1 connected to vertices B1 and C1 but not to vertex D, the predicted value E1 of vertex D's coordinates is derived.
[0505] exist Figure 34 In parallelogram prediction, the methods for predicting value E2 based on vertices A2, B2, and C2, and the methods for predicting value E3 based on vertices A3, B3, and C3, can also be called parallelogram prediction. Additionally, in... Figure 35In parallelogram prediction, the methods for predicting the value E1 based on vertices A1, B1', and C1', the methods for predicting the value B1' based on vertices A1, C1, and G1, and the methods for predicting the value C1' based on vertices A1, F1, and B1 can also be called parallelogram prediction.
[0506] Furthermore, as an example, in Figure 42 The prediction method that uses vertices A1, B1, and C2 to predict the value E1 can also be called "trapezoidal prediction." In this method, the predicted coordinates of the object point being encoded or decoded are derived based on the geometric characteristics of a trapezoid, such as parallel sides. Specifically, trapezoidal prediction proceeds as follows: using the coordinates of three vertices (A1, B1, and C2) that are different from vertex D (which is connected to vertex C1, the vertex being predicted), the predicted value E1 of vertex D's coordinates is derived. In this process, the difference between the coordinates of vertex C2 and the coordinates of vertex A1 can be twice the difference between the predicted value E1 of vertex D's coordinates and the coordinates of vertex B1.
[0507] exist Figure 43 In this context, the method of predicting the value E2 based on vertices A2, B1, and C2 can also be called trapezoidal prediction.
[0508] also, Figure 47 The prediction method shown can be a process in which, after deriving the predicted value C1' of the coordinates of vertex C1 through trapezoidal prediction, the predicted value E1 of the coordinates of vertex D is derived through parallelogram prediction using at least the predicted value C1'.
[0509] Figure 48 The prediction method shown can be a process in which, after deriving the predicted value B1' of the coordinates of vertex B1 through trapezoidal prediction, the predicted value E1 of the coordinates of vertex D is derived through parallelogram prediction using at least the predicted value B1'.
[0510] Figure 49 The prediction method shown can be a process in which, after deriving the predicted value C2' of the coordinates of vertex C2 through trapezoidal prediction, at least the predicted value E1 of the coordinates of vertex D is derived through trapezoidal prediction using the predicted value C2'.
[0511] Figure 50 The prediction method shown can be a process in which, after deriving the predicted value C2' of the coordinates of vertex C2 through trapezoidal prediction, the predicted value E2 of the coordinates of vertex D is derived through trapezoidal prediction using at least the predicted value C2'.
[0512] Figure 51The prediction method shown can be a process in which, after deriving the predicted value B1' of the coordinates of vertex B1 through trapezoidal prediction, the predicted value E1 of the coordinates of vertex D is derived through trapezoidal prediction using at least the predicted value B1'.
[0513] Figure 52 The prediction method shown can be a process in which, after deriving the predicted value B1' of the coordinates of vertex B1 through trapezoidal prediction, the predicted value E2 of the coordinates of vertex D is derived through trapezoidal prediction using at least the predicted value B1'.
[0514] In addition, it can also be used with Figure 34 Use Figure 33 The prediction method determines multiple predicted values similarly, using... Figure 42 , Figure 49 as well as Figure 51 The prediction method can be used to determine multiple predicted values Ei, and the average of the multiple predicted values Ei is used as the predicted coordinate of vertex D. Alternatively, it can be used... Figure 43 , Figure 50 and Figure 52 The prediction method can be used to determine multiple predicted values Ei, and the average of the multiple predicted values Ei is used as the predicted coordinate of vertex D. Alternatively, it can be based on the applicable... Figure 42 , Figure 49 as well as Figure 51 The number of predicted values is set by the number of triangles AiBiCi in any of the prediction methods. The number of predicted values can also be 1. Furthermore, it is not necessary to use methods that can apply... Figure 42 , Figure 49 as well as Figure 51 All triangles AiBiCi in any of the prediction methods can be used for prediction, or a predetermined number of triangles AiBiCi can be used for prediction.
[0515] The encoding or decoding device can either consistently apply any of the prediction methods described above to predict the coordinates of the triangle vertices, or assign inherent index values to each method and, on a per-vertex or per-vertex basis, notify the decoding device of the index value of the prediction method used in encoding. During decoding, the prediction method is switched based on the index value to determine the predicted coordinates of the triangle vertices. By notifying the decoding device of the index value of the prediction method used in encoding, the 3D mesh can be encoded while selecting a more efficient prediction method, potentially reducing the amount of encoding. Furthermore, the information notified from the encoding device to the decoding device can be any information that determines the prediction method used in encoding, and does not necessarily have to be an index value. Additionally, when determining whether vertices Ai, Bi, Ci, Fi, and Gi have been encoded or decoded, if there are holes or other defects in the 3D mesh where no corresponding vertex exists, it can be determined that they have not been encoded / decoded.
[0516] Alternatively, the aforementioned encoding device or decoding device may be described as follows.
[0517] (1) An encoding device, comprising: a circuit; and a memory connected to the circuit, wherein, in the operation of encoding the coordinates of the vertices of a polygon forming a three-dimensional mesh, the circuit encodes a difference between the coordinates of the first vertex and the first predicted value based on at least one second vertex near a first vertex of the encoded object and a second predicted value determined by a second prediction process, and a first predicted value of the coordinates of the first vertex determined by a first prediction process, wherein, in the second prediction process, at least one coordinate on a plane containing at least one third vertex, at least one fourth vertex and at least one fifth vertex is determined as the first predicted value, the third vertex being a vertex of a second polygon adjacent to and not connected to the first polygon containing the first vertex, and being a vertex connected to the first polygon, the fourth vertex being a vertex of a third polygon different from the first polygon adjacent to and connected to the third vertex of the second polygon, and being a vertex not connected to the second polygon, and the fifth vertex being a vertex of a fourth polygon adjacent to and not connected to the third vertex of the second polygon, and being a vertex not connected to the second polygon.
[0518] (2) In the encoding device described in (1), the circuit determines at least one coordinate on a first straight line as the first predicted value, the first straight line being a straight line parallel to a first vector that starts at the fourth vertex and ends at the fifth vertex and passes through the third vertex.
[0519] (3) In the encoding device described in (2), the circuit determines the coordinate of the distance from the third vertex in the direction of the first vector to be 1 / 2 of the length of the first vector as the first predicted value.
[0520] (4) In the encoding apparatus described in (1), the circuit, in the first prediction process, includes at least one sixth vertex and the third vertex in the second vertex, the sixth vertex being a vertex of the second polygon and a vertex not connected to the first polygon (with...). Figure 47 as well as Figure 48 correspond).
[0521] (5) In the encoding apparatus described in (1), in the first prediction process, the circuit includes at least one sixth vertex and at least one seventh vertex in the second vertex, the sixth vertex being a vertex of the second polygon and not connected to the first polygon, the seventh vertex being a vertex of a fifth polygon different from the second polygon that is adjacent to the first polygon and connected to the third vertex, and not connected to the first polygon (and). Figure 50 as well as Figure 51 correspond).
[0522] (6) In the encoding apparatus described in (1), in the first prediction process, the circuit includes at least one seventh vertex and at least one eighth vertex in the second vertex, the seventh vertex being a vertex of a fifth polygon different from the second polygon that is adjacent to the first polygon and connected to the third vertex, and not connected to the first polygon; the eighth vertex being a vertex of a sixth polygon different from the first polygon that is adjacent to the fifth polygon and connected to the third vertex, and not connected to the fifth polygon (and...). Figure 49 and Figure 52 correspond).
[0523] (7) A decoding device, comprising: a circuit; and a memory connected to the circuit, wherein, in the operation of restoring the coordinates of the vertices of a polygon forming a three-dimensional mesh, the circuit, based on at least one second vertex near a first vertex of the object to be restored and a second prediction value determined by a second prediction process, determines a first prediction value of the coordinates of the first vertex by a first prediction process, decodes a difference value corresponding to the coordinates of the first vertex, and restores the coordinates of the first vertex based on the first prediction value and the difference value, wherein, in the second prediction process, at least one coordinate on a plane containing at least one third vertex, at least one fourth vertex and at least one fifth vertex is determined as the first prediction value, the third vertex is a vertex of a second polygon adjacent to the first polygon containing the first vertex and not connected to the first vertex, and is a vertex connected to the first polygon, the fourth vertex is a vertex of a third polygon different from the first polygon adjacent to the second polygon and connected to the third vertex, and is a vertex not connected to the second polygon, the fifth vertex is a vertex of a fourth polygon adjacent to the second polygon and not connected to the third vertex, and is a vertex not connected to the second polygon.
[0524] (8) In the decoding apparatus described in (7), the circuit determines at least one coordinate on a first straight line as the first predicted value, the first straight line being a straight line parallel to a first vector that starts at the fourth vertex and ends at the fifth vertex and passes through the third vertex.
[0525] (9) In the decoding apparatus described in (8), the circuit determines the coordinate of the distance from the third vertex in the direction of the first vector to be 1 / 2 of the length of the first vector as the first predicted value.
[0526] (10) In the decoding apparatus described in (7), the circuit, in the first prediction process, includes at least one sixth vertex and the third vertex in the second vertex, the sixth vertex being a vertex of the second polygon and a vertex not connected to the first polygon. Figure 47 as well as Figure 48 ).
[0527] (11) In the decoding apparatus described in (7), the circuit, in the first prediction process, includes at least one sixth vertex and at least one seventh vertex in the second vertex, the sixth vertex being a vertex of the second polygon and not connected to the first polygon, the seventh vertex being a vertex of a fifth polygon different from the second polygon that is adjacent to the first polygon and connected to the third vertex, and not connected to the first polygon (and). Figure 50 as well as Figure 51 correspond).
[0528] (12) In the decoding apparatus described in (7), in the first prediction process, the circuit includes at least one seventh vertex and at least one eighth vertex at the second vertex, the seventh vertex being a vertex of a fifth polygon different from the second polygon that is adjacent to the first polygon and connected to the third vertex, and not connected to the first polygon; the eighth vertex being a vertex of a sixth polygon different from the first polygon that is adjacent to the fifth polygon and connected to the third vertex, and not connected to the fifth polygon (and...). Figure 49 and Figure 52 correspond).
[0529] The following describes another example of the encoding process in this embodiment.
[0530] Figure 53 This is a flowchart illustrating an example of the encoding process in this embodiment.
[0531] Figure 53 The encoding process shown can also be described as an encoding method that encodes the coordinates of the vertices contained in a 3D mesh. Figure 53 The encoding process shown is performed by the encoding device.
[0532] In step S801, the encoding device at the first vertex (e.g.) Figures 47-52 In the encoding of the coordinates of vertex D), the predicted values of the coordinates of the second vertex, which are different from those of the first vertex, are derived through the first prediction process.
[0533] In step S802, the encoding device uses at least the predicted values of the coordinates of the second vertex derived in step S801 to derive the predicted values of the coordinates of the first vertex through a second prediction process (e.g., Figures 47-52 The predicted value is E1 or E2.
[0534] In step S803, the encoding device encodes the difference between the predicted value of the coordinates of the first vertex derived in step S802 and the coordinates of the first vertex.
[0535] Therefore, the encoding device derives predicted coordinates of a second vertex that is not the object to be encoded through a prediction process (i.e., the first prediction process), and uses the predicted coordinates of the second vertex to derive predicted coordinates of the first vertex through a prediction process (i.e., the second prediction process). If the accuracy of one or both of the two prediction processes is relatively high, the derived predicted values may be appropriate. This may improve the accuracy of encoding the first vertex and potentially reduce the amount of encoding. Thus, the encoding device can help improve the encoding process related to the coordinates of vertices in a 3D mesh.
[0536] For example, the first prediction process may also include the following process: using the coordinates of three vertices that are different from the second vertex among a plurality of vertices connected to the third vertex connected to the second vertex, to derive the predicted value of the coordinates of the second vertex.
[0537] According to the above method, when the coordinates of the three vertices are closely related to the position of the second vertex, the predicted value derived through the first prediction process may become an appropriate value that is close to the coordinates of the three vertices. This can improve the encoding accuracy of the second vertex, which in turn may improve the encoding accuracy of the first vertex, and may also reduce the amount of encoding. Thus, the encoding device can help improve the encoding processing related to the coordinates of the vertices of a 3D mesh.
[0538] For example, the first prediction process may also include the following process: using the two vertices connected to the second vertex, namely the fourth and fifth vertices, and the vertex not connected to the second vertex, namely the sixth vertex, as the above three vertices, to derive the predicted values, where the difference between the coordinates of the fifth vertex and the coordinates of the sixth vertex is twice the difference between the predicted value of the coordinates of the second vertex and the coordinates of the fourth vertex.
[0539] According to the above method, when the encoding device derives the predicted coordinates of the second vertex in the first prediction process, it calculates the coordinates of one vertex other than the aforementioned three vertices in the trapezoid formed by four vertices, including at least the fourth, fifth, and sixth vertices. This makes it potentially easier to derive appropriate predicted values. Thus, the encoding device can more easily contribute to improving the encoding process related to the coordinates of vertices in a 3D mesh.
[0540] For example, the second prediction process may include the following process: using the coordinates of three vertices that are different from the first vertex among a plurality of vertices connected to the seventh vertex connected to the first vertex, the predicted values of the coordinates of the first vertex are derived, where at least one of the coordinates of the three vertices is a predicted value derived by the first prediction process.
[0541] According to the above method, when the coordinates of the three vertices are highly correlated with the position of the first vertex, the predicted value derived through the second prediction process may become an appropriate value that is close to the coordinates of the three vertices. Therefore, it is possible to improve the accuracy of the encoding of the first vertex and, moreover, to reduce the amount of encoding. In this way, the encoding device can help improve the encoding processing related to the coordinates of the vertices of a 3D mesh.
[0542] For example, the second prediction process may include the following process: using the coordinates of the two vertices connected to the first vertex, namely the eighth and ninth vertices, and the coordinates of the tenth vertex connected to the eighth and ninth vertices but not connected to the first vertex, to derive a predicted value of the coordinates of the first vertex, wherein at least one of the coordinates of the eighth, ninth, and tenth vertices is a predicted value derived by the first prediction process.
[0543] According to the above method, when the encoding device derives the predicted coordinates of the first vertex in the second prediction process, it calculates the coordinates of one vertex other than the aforementioned three vertices of the parallelogram formed by four vertices, including at least the eighth, ninth, and tenth vertices. This makes it potentially easier to derive appropriate predicted values. Thus, the encoding device can more easily contribute to improving the encoding process related to the coordinates of vertices in a 3D mesh.
[0544] For example, the second prediction process may include the following process: using the coordinates of three vertices that are different from the first vertex among a plurality of vertices connected to the seventh vertex connected to the first vertex, the predicted values of the coordinates of the first vertex are derived, where at least one of the coordinates of the three vertices is a predicted value derived by the first prediction process.
[0545] According to the above method, when the coordinates of the three vertices are highly correlated with the position of the first vertex, the predicted value derived through the second prediction process may become an appropriate value that is close to the coordinates of the three vertices. Therefore, it is possible to improve the accuracy of the encoding of the first vertex and, moreover, to reduce the amount of encoding. In this way, the encoding device can help improve the encoding processing related to the coordinates of the vertices of a 3D mesh.
[0546] For example, the second prediction process includes the following process: using the two vertices connected to the first vertex, namely the eleventh and twelfth vertices, and the vertex not connected to the first vertex, namely the thirteenth vertex, as the above three vertices to derive the predicted values, the difference between the coordinates of the twelfth vertex and the coordinates of the thirteenth vertex is twice the difference between the predicted value of the coordinates of the first vertex and the coordinates of the eleventh vertex.
[0547] For example, the first prediction process may also include the following process: using the coordinates of the two vertices connected to the second vertex, namely the fourteenth and fifteenth vertices, and the coordinates of the sixteenth vertex connected to the fourteenth and fifteenth vertices but not connected to the first vertex, to derive the predicted value of the coordinates of the second vertex.
[0548] According to the above method, when the encoding device derives the predicted coordinates of the second vertex in the first prediction process, it calculates the coordinates of one vertex other than the three vertices of the parallelogram formed by four vertices, including at least the fourteenth, fifteenth, and sixteenth vertices. This makes it possible to more easily derive the appropriate predicted value. In this way, the encoding device can more easily contribute to improving the encoding process related to the coordinates of the vertices of the 3D mesh.
[0549] The following describes another example of the decoding process in this embodiment.
[0550] Figure 54 This is a flowchart illustrating an example of the decoding process in this embodiment.
[0551] Figure 54 The decoding process shown can also be described as a decoding method that decodes the coordinates of the vertices contained in a 3D mesh. Figure 54 The decoding process shown is performed by the decoding device.
[0552] In step S901, the decoding device at the first vertex (e.g.) Figures 47-52 In the decoding of the coordinates of vertex D), the predicted values of the coordinates of the second vertex, which are different from those of the first vertex, are derived through the first prediction process.
[0553] In step S902, the decoding device uses at least the predicted values of the coordinates of the second vertex derived in step S901 to derive the predicted values of the coordinates of the first vertex through a second prediction process (e.g., Figures 47-52 The predicted value is E1 or E2.
[0554] In step S903, the decoding device decodes the difference between the predicted value of the coordinates of the first vertex and the coordinates of the first vertex.
[0555] In step S904, the decoding device uses the predicted value derived in step S902 and the difference value decoded in step S903 to reconstruct the coordinates of the first vertex.
[0556] Therefore, the decoding device derives predicted coordinates of a second vertex that is not the object to be decoded through a prediction process (i.e., the first prediction process), and uses the predicted coordinates of the second vertex to derive predicted coordinates of the first vertex through a prediction process (i.e., the second prediction process). If the accuracy of one or both of the above prediction processes is relatively high, the derived predicted values may be appropriate. This may improve the decoding accuracy of the first vertex and potentially reduce the amount of encoding. Thus, the decoding device can help improve the decoding process related to the coordinates of vertices in a 3D mesh.
[0557] For example, the first prediction process may also include the following process: using the coordinates of three vertices that are different from the second vertex among a plurality of vertices connected to the third vertex connected to the second vertex, to derive the predicted value of the coordinates of the second vertex.
[0558] According to the above method, when the coordinates of the three vertices are closely related to the position of the second vertex, the predicted value derived through the first prediction process may become an appropriate value that is close to the coordinates of the three vertices. This can improve the decoding accuracy of the second vertex, and consequently, may improve the decoding accuracy of the first vertex, and may also reduce the amount of encoding. Thus, the decoding device can help improve the decoding process related to the coordinates of the vertices of a 3D mesh.
[0559] For example, the first prediction process may also include the following process: using the two vertices connected to the second vertex, namely the fourth and fifth vertices, and the vertex not connected to the second vertex, namely the sixth vertex, as the above three vertices, to derive the predicted values, where the difference between the coordinates of the fifth vertex and the coordinates of the sixth vertex is twice the difference between the predicted value of the coordinates of the second vertex and the coordinates of the fourth vertex.
[0560] According to the above method, when the decoding device derives the predicted coordinates of the second vertex in the first prediction process, it calculates the coordinates of one vertex other than the aforementioned three vertices in the trapezoid formed by four vertices, including at least the fourth, fifth, and sixth vertices. This makes it potentially easier to derive the appropriate predicted value. In this way, the decoding device can more easily contribute to improving the decoding process related to the coordinates of the vertices of the 3D mesh.
[0561] For example, the second prediction process may include the following process: using the coordinates of three vertices that are different from the first vertex among a plurality of vertices connected to the seventh vertex connected to the first vertex, the predicted values of the coordinates of the first vertex are derived, where at least one of the coordinates of the three vertices is a predicted value derived by the first prediction process.
[0562] According to the above method, when the coordinates of the three vertices are highly correlated with the position of the first vertex, the predicted value derived through the second prediction process may become an appropriate value that is closer to the coordinates of the three vertices. Therefore, it is possible to improve the decoding accuracy of the first vertex and potentially reduce the amount of encoding. In this way, the decoding device can help improve the decoding process related to the coordinates of the vertices of a 3D mesh.
[0563] For example, the second prediction process may include the following process: using the coordinates of the two vertices connected to the first vertex, namely the eighth and ninth vertices, and the coordinates of the tenth vertex connected to the eighth and ninth vertices but not connected to the first vertex, to derive a predicted value of the coordinates of the first vertex, wherein at least one of the coordinates of the eighth, ninth, and tenth vertices is a predicted value derived by the first prediction process.
[0564] According to the above method, when deriving the predicted coordinates of the first vertex in the second prediction process, the coordinates of one vertex other than the aforementioned three vertices of the parallelogram formed by four vertices, including at least the eighth, ninth, and tenth vertices, are calculated. This may make it easier to derive the appropriate predicted values. Thus, the above decoding method can more easily contribute to improving the decoding process related to the coordinates of vertices in a 3D mesh.
[0565] For example, the second prediction process may include the following process: using the coordinates of three vertices that are different from the first vertex among a plurality of vertices connected to the seventh vertex connected to the first vertex, the predicted values of the coordinates of the first vertex are derived, where at least one of the coordinates of the three vertices is a predicted value derived by the first prediction process.
[0566] According to the above method, when the coordinates of the three vertices are highly correlated with the position of the first vertex, the predicted value derived through the second prediction process may become an appropriate value that is closer to the coordinates of the three vertices. Therefore, it is possible to improve the decoding accuracy of the first vertex and potentially reduce the amount of encoding. In this way, the decoding device can help improve the decoding process related to the coordinates of the vertices of a 3D mesh.
[0567] For example, the second prediction process includes the following process: using the two vertices connected to the first vertex, namely the eleventh and twelfth vertices, and the vertex not connected to the first vertex, namely the thirteenth vertex, as the above three vertices to derive the predicted values, the difference between the coordinates of the twelfth vertex and the coordinates of the thirteenth vertex is twice the difference between the predicted value of the coordinates of the first vertex and the coordinates of the eleventh vertex.
[0568] According to the above method, when the decoding device derives the predicted coordinates of the first vertex in the second prediction process, it calculates the coordinates of one vertex other than the aforementioned three vertices in the trapezoid formed by four vertices, including at least the eleventh, twelfth, and thirteenth vertices. This makes it potentially easier to derive the appropriate predicted value. In this way, the decoding device can more easily contribute to improving the decoding process related to the coordinates of the vertices of the 3D mesh.
[0569] For example, the first prediction process may also include the following process: using the coordinates of the two vertices connected to the second vertex, namely the fourteenth and fifteenth vertices, and the coordinates of the sixteenth vertex connected to the fourteenth and fifteenth vertices but not connected to the first vertex, to derive the predicted value of the coordinates of the second vertex.
[0570] According to the above method, when the decoding device derives the predicted coordinates of the second vertex in the first prediction process, it calculates the coordinates of one vertex other than the three vertices of the parallelogram formed by four vertices, including at least the fourteenth, fifteenth, and sixteenth vertices. This makes it potentially easier to derive the appropriate predicted value. In this way, the decoding device can more easily contribute to improving the decoding process related to the coordinates of the vertices of the 3D mesh.
[0571] <Other examples> The above describes the encoding and decoding devices according to the embodiments, but the methods of encoding and decoding devices are not limited to the embodiments described above. Modifications that can be conceived by those skilled in the art can be implemented in the embodiments, and the multiple constituent elements in the embodiments can be arbitrarily combined.
[0572] For example, the processes performed by specific components in the implementation can be performed by other components instead of specific components. Furthermore, the order of multiple processes can be changed, or multiple processes can be executed in parallel.
[0573] Furthermore, as described above, at least a portion of the various structures disclosed herein can be implemented as an integrated circuit. At least a portion of the various processes disclosed herein can also be used as encoding or decoding methods. A program for causing a computer to execute the encoding or decoding method can also be used. Additionally, a non-transitory, computer-readable recording medium on which the program is recorded can also be used. Furthermore, a bitstream for causing a decoding device to perform decoding processing can also be used.
[0574] Furthermore, at least a portion of the various structures and processes disclosed herein can also be used as a transmitting device, a receiving device, a transmitting method, and a receiving method. A program for causing a computer to execute the transmitting method or the receiving method can also be used. Additionally, a non-transitory computer-readable recording medium on which the program is recorded can also be used.
[0575] Furthermore, in the above embodiments, each component can be constructed by dedicated hardware or implemented by executing software programs suitable for each component. Each component can also be implemented by a program execution unit such as a CPU or processor reading and executing software programs recorded on recording media such as hard disks or semiconductor memories. Here, the software for the encoding device, etc., implementing the above embodiments is the following program.
[0576] That is, the above software is a program that enables a computer to execute an encoding method, which is an encoding method for encoding the coordinates of vertices contained in a three-dimensional mesh. The method uses the coordinates of three vertices that are different from the first vertex among a plurality of vertices connected to a second vertex that is a first vertex being encoded, to derive a predicted value of the coordinates of the first vertex, and encodes the difference between the predicted value and the coordinates of the first vertex.
[0577] Furthermore, the software for implementing the decoding device, etc., described above is the following program.
[0578] That is, the above software is a program that enables a computer to execute a decoding method, which is a decoding method for decoding the coordinates of vertices contained in a three-dimensional mesh. Using the coordinates of three vertices that are different from the first vertex among a plurality of vertices connected to the second vertex which is the first vertex to be decoded, the predicted value of the coordinates of the first vertex is derived, the difference between the predicted value and the coordinates of the first vertex is decoded, and the coordinates of the first vertex are restored using the predicted value and the difference value.
[0579] Industrial applicability This disclosure is useful, for example, for encoding devices, decoding devices, transmitting devices, and receiving devices related to three-dimensional meshes, and can be applied to computer graphics systems and three-dimensional data display systems.
[0580] Explanation of reference numerals in the attached figures 100 encoding device Vertex Information Encoder (101, 121, 144) 102, 145 Connect information encoder Attribute Information Encoder 103, 122 104, 204, 1102 Preprocessors Post-processors 105, 205, and 2107 110 Three-dimensional data encoding system 111, 211 controllers 112, 212 Input / Output Processors 113 Three-dimensional data encoder 114 System Multiplexer 115 3D Data Generator 123 Metadata Encoder 124 Multiplexer 131 Vertex Image Generator 132 Attribute Image Generator 133 Metadata Generator 134 Image Encoder 141 Two-dimensional data encoder 142 Grid Data Encoder 143 Texture Encoder 148. Description of the encoder 151 and 251 circuits 152, 252 memory 200 Decoding Device Vertex information decoder 201, 221, 244 202, 245 Connection Information Decoder 203, 222 Attribute Information Decoder 210 Three-Dimensional Data Decoding System 213 3D Data Decoder 214 System Demultiplexer 215, 247 prompts 216 User Interface 223 Metadata Decoder 224 Demultiplexer 231 Vertex Information Generator 232 Attribute Information Generator 234 Image Decoder 241 Two-dimensional data decoder 242 Grid Data Decoder 243 Texture Decoder 246 Mesh Reconstructor 248 Describe the decoder 300 Network 310 External Connector 1101 Input Grid 1103, 2103 Basic Mesh Displacement data for 1104 and 2104 Texture data 1105, 2105 Attribute maps 1106 and 2106 1107 Compressor 1108, 2101, 1304 bit streams Frames 1301, 2302, and 2304 1302, 2301 Basic Grid Frames Displacement information for 1303 and 2303 2102 decompressor 2108 Output Mesh
Claims
1. An encoding method for encoding the coordinates of vertices contained in a three-dimensional mesh, wherein, In the encoding of the coordinates of the first vertex, a predicted value for the coordinates of a second vertex, which is different from the first vertex, is derived through a first prediction process. Using at least the predicted coordinates of the second vertex, the predicted coordinates of the first vertex are derived through a second prediction process. The difference between the predicted coordinates of the first vertex and the original coordinates of the first vertex is encoded.
2. The encoding method according to claim 1, wherein, The first prediction process includes the following process: using the coordinates of three vertices that are different from the second vertex among a plurality of vertices connected to the third vertex connected to the second vertex, to derive the predicted value of the coordinates of the second vertex.
3. The encoding method according to claim 2, wherein, The first prediction process includes the following steps: using the two vertices connected to the second vertex (i.e., the fourth and fifth vertices) and the vertex not connected to the second vertex (i.e., the sixth vertex) as the three vertices, to derive the predicted value. The difference between the coordinates of the fifth vertex and the coordinates of the sixth vertex is twice the difference between the predicted coordinates of the second vertex and the coordinates of the fourth vertex.
4. The encoding method according to claim 2, wherein, The second prediction process includes the following steps: using the coordinates of three vertices that are different from the first vertex out of a plurality of vertices connected to the seventh vertex connected to the first vertex, derive the predicted value of the coordinates of the first vertex. At least one of the coordinates of the three vertices is the predicted value derived through the first prediction process.
5. The encoding method according to claim 2, wherein, The second prediction process includes the following steps: using the coordinates of the two vertices connected to the first vertex, namely the eighth and ninth vertices, and the coordinates of the tenth vertex connected to the eighth and ninth vertices but not connected to the first vertex, to derive the predicted value of the coordinates of the first vertex. At least one of the coordinates of the eighth, ninth, and tenth vertices is a predicted value derived through the first prediction process.
6. The encoding method according to claim 1, wherein, The second prediction process includes the following steps: using the coordinates of three vertices that are different from the first vertex out of a plurality of vertices connected to the seventh vertex connected to the first vertex, derive the predicted value of the coordinates of the first vertex. At least one of the coordinates of the three vertices is the predicted value derived through the first prediction process.
7. The encoding method according to claim 4, wherein, The second prediction process includes the following steps: using the two vertices connected to the first vertex, namely the eleventh and twelfth vertices, and the vertex not connected to the first vertex, namely the thirteenth vertex, as the three vertices, to derive the predicted value. The difference between the coordinates of the twelfth vertex and the coordinates of the thirteenth vertex is twice the difference between the predicted coordinates of the first vertex and the coordinates of the eleventh vertex.
8. The encoding method according to claim 6, wherein, The first prediction process includes the following process: using the coordinates of the two vertices connected to the second vertex, namely the fourteenth and fifteenth vertices, and the coordinates of the sixteenth vertex connected to the fourteenth and fifteenth vertices but not connected to the first vertex, to derive the predicted value of the coordinates of the second vertex.
9. A decoding method for decoding the coordinates of vertices contained in a 3D mesh, wherein, In decoding the coordinates of the first vertex, a predicted value for the coordinates of a second vertex, which is different from the first vertex, is derived through a first prediction process. Using at least the predicted coordinates of the second vertex, the predicted coordinates of the first vertex are derived through a second prediction process. The difference between the predicted value and the coordinates of the first vertex is decoded. The coordinates of the first vertex are reconstructed using the predicted value and the difference value.
10. The decoding method according to claim 9, wherein, The first prediction process includes the following process: using the coordinates of three vertices that are different from the second vertex among a plurality of vertices connected to the third vertex connected to the second vertex, to derive the predicted value of the coordinates of the second vertex.
11. The decoding method according to claim 10, wherein, The first prediction process includes the following steps: using the two vertices connected to the second vertex (i.e., the fourth and fifth vertices) and the vertex not connected to the second vertex (i.e., the sixth vertex) as the three vertices, to derive the predicted value. The difference between the coordinates of the fifth vertex and the coordinates of the sixth vertex is twice the difference between the predicted coordinates of the second vertex and the coordinates of the fourth vertex.
12. The decoding method according to claim 10, wherein, The second prediction process includes the following steps: using the coordinates of three vertices that are different from the first vertex out of a plurality of vertices connected to the seventh vertex connected to the first vertex, derive the predicted value of the coordinates of the first vertex. At least one of the coordinates of the three vertices is the predicted value derived through the first prediction process.
13. The decoding method according to claim 10, wherein, The second prediction process includes the following steps: using the coordinates of the two vertices connected to the first vertex, namely the eighth and ninth vertices, and the coordinates of the tenth vertex connected to the eighth and ninth vertices but not connected to the first vertex, to derive the predicted value of the coordinates of the first vertex. At least one of the coordinates of the eighth, ninth, and tenth vertices is a predicted value derived through the first prediction process.
14. The decoding method according to claim 9, wherein, The second prediction process includes the following steps: using the coordinates of three vertices that are different from the first vertex out of a plurality of vertices connected to the seventh vertex connected to the first vertex, derive the predicted value of the coordinates of the first vertex. At least one of the coordinates of the three vertices is the predicted value derived through the first prediction process.
15. The decoding method according to claim 12, wherein, The second prediction process includes the following steps: using the two vertices connected to the first vertex, namely the eleventh and twelfth vertices, and the vertex not connected to the first vertex, namely the thirteenth vertex, as the three vertices, to derive the predicted value. The difference between the coordinates of the twelfth vertex and the coordinates of the thirteenth vertex is twice the difference between the predicted coordinates of the first vertex and the coordinates of the eleventh vertex.
16. The decoding method according to claim 14, wherein, The first prediction process includes the following process: using the coordinates of the two vertices connected to the second vertex, namely the fourteenth and fifteenth vertices, and the coordinates of the sixteenth vertex connected to the fourteenth and fifteenth vertices but not connected to the first vertex, to derive the predicted value of the coordinates of the second vertex.
17. An encoding device, wherein, have: Memory; and Circuits that can access the memory, The circuit is in operation. An encoding method is implemented to encode the coordinates of the vertices contained in a 3D mesh. In the encoding method, In the encoding of the coordinates of the first vertex, a predicted value for the coordinates of a second vertex, which is different from the first vertex, is derived through a first prediction process. Using at least the predicted coordinates of the second vertex, the predicted coordinates of the first vertex are derived through a second prediction process. The difference between the predicted coordinates of the first vertex and the original coordinates of the first vertex is encoded.
18. A decoding device, wherein, have: Memory; and Circuits that can access the memory, The circuit is in operation. A decoding method is used to decode the coordinates of the vertices contained in a 3D mesh. In the decoding method, In decoding the coordinates of the first vertex, a predicted value for the coordinates of a second vertex, which is different from the first vertex, is derived through a first prediction process. Using at least the predicted coordinates of the second vertex, the predicted coordinates of the first vertex are derived through a second prediction process. The difference between the predicted value and the coordinates of the first vertex is decoded. The coordinates of the first vertex are reconstructed using the predicted value and the difference value.
Citation Information
Patent Citations
Progressive three-dimensional mesh information coding / decoding method, and apparatus therefor
JP2006187015A