The present invention relates to a mesh decoding device, a mesh decoding method, and a program.
In Non Patent Literature 1: “Khaled Mammou, Jungsun Kim, Alexis Tourapis, Dimitri Podborski, Krasimir Kolarov; [V-CG] Apple's Dynamic Mesh Coding CfP Response; ISO/IEC JTC 1/SC 29/WG 7 m59281, April 2022”, a mesh is decoded by being divided into a rough base mesh and a detailed subdivided face, and such a subdivided face is decoded by a video codec. The subdivided face is calculated based on a normal defined for each vertex, and a direction of the normal is different for each vertex.
In addition, in Non Patent Literature 1, a decoding method is defined for each patch by a parameter set for each patch.
However, in Non Patent Literature 1, since types of the parameters designated for each patch are insufficient, there is a problem that decoding suitable for characteristics of the mesh included in the patch cannot be performed. Therefore, the present invention has been made in view of the above-described problems, and an object of the present invention is to provide a mesh decoding device, a mesh encoding device, a mesh decoding method, and a program that enable setting of a decoding method according to characteristics of a mesh in a patch and can reduce the number of bits of a displacement.
The first aspect of the present invention is summarized as a mesh decoding device including a circuit, wherein the circuit: decodes an atlas bit stream and output patch information and frame information; changes a subdivision method based on the patch information and the frame information; and changes an inverse quantization method based on the patch information.
The second aspect of the present invention is summarized as a mesh decoding method including: decoding an atlas bit stream and outputting patch information and frame information; changing a subdivision method based on the patch information and the frame information; and changing an inverse quantization method based on the patch information.
The third aspect of the present invention is summarized as a program stored on a non-transitory computer-readable medium for causing a computer to function as a mesh decoding device, wherein the mesh decoding device includes a circuit, and the circuit: decodes an atlas bit stream and output patch information and frame information; changes a subdivision method based on the patch information and the frame information; and changes an inverse quantization method based on the patch information.
According to the present invention, it is possible to provide a mesh decoding device, a mesh encoding device, a mesh decoding method, and a program that enable setting of a decoding method according to characteristics of a mesh in a patch and can reduce the number of bits of a displacement.
An embodiment of the present invention will be described hereinbelow with reference to the drawings. Note that the constituent elements of the embodiment below can, where appropriate, be substituted with existing constituent elements and the like, and that a wide range of variations, including combinations with other existing constituent elements, is possible. Therefore, there are no limitations placed on the content of the invention as in the claims on the basis of the disclosures of the embodiment hereinbelow.
Hereinafter, a mesh processing system according to the present embodiment will be described with reference to
As illustrated in
The demultiplexing unit 201 is configured to separate a multiplexed bit stream into a base mesh bit stream, a subdivided face bit stream, a texture bit stream, and an atlas bit stream.
The base mesh decoding unit 202 is configured to decode the base mesh bit stream, and generate and output a base mesh.
The subdivision unit 203 is configured to generate and output added subdivided vertices and connection information thereof from the base mesh decoded by the base mesh decoding unit 202 by a subdivision method indicated by patch information.
Here, the base mesh, the added subdivided vertices, and the connection information thereof are collectively referred to as “subdivided mesh”.
The mesh decoding unit 204 is configured to generate and output a decoded mesh using the subdivided mesh generated by the subdivision unit 203 and the subdivided face decoded by the subdivided face decoding unit 206.
The patch integration unit 205 is configured to integrate and output a plurality of patches of the decoded mesh generated by the mesh decoding unit 204.
The subdivided face decoding unit 206 is configured to decode the subdivided face bit stream to generate and output the subdivided face.
The video decoding unit 207 is configured to decode and output texture by video coding. For example, the video decoding unit 207 may use HEVC disclosed in Reference Literature 1 “Information technology-High efficiency coding and media delivery in heterogeneous environments—Part 2: High efficiency video coding, ISO/IEC 23008-2:2013”.
The atlas data decoding unit 208 is configured to decode the atlas bit stream to output frame information and the patch information.
As described above, the atlas data decoding unit 208 is configured to decode the atlas bit stream to output the frame information and the patch information.
Hereinafter, the frame information and the patch information decoded by the atlas data decoding unit 208 will be described with reference to
As illustrated in
The patch information is a set of control signals defined for each patch obtained by decoding the PDU.
As described above, in the atlas bit stream, one PDU corresponds to each patch.
In addition, as illustrated in
The frame information is a set of control signals defined for each frame obtained by decoding the FPS.
Note that the configuration of
For example, as illustrated in
A syntax configuration of the PDU will be described below with reference to
In the syntax configuration of the PDU illustrated in
The PDU includes a control signal mdu_triangle_count_minus1 that designates the number of base faces included for each patch.
The PDU includes a flag mdu_subdivision_enable_flag that designates whether or not to perform subdivision for each patch.
The PDU may include a flag mdu_lod_change_flag that designates whether or not to change a quantization value of a subdivided face for each subdivision level of the subdivided face for each patch.
The PDU may include a control signal (mdu_subdivision_method) that designates a type of the subdivision method of the base mesh for each patch.
For example, when mdu_subdivision_method=0, it may be defined that an initial subdivided mesh is generated using a mid-edge division method, and when mdu_subdivision_method=1, it may be defined that the initial subdivided mesh is generated using an N2 division method.
The PDU may include a control signal (mdu_division_num_method) that designates a type of a subdivision division number generation method for each patch.
The PDU may include a control signal (mdu_division_residuals) that designates an error of a predicted value of the number of subdivisions for each patch.
The PDU may include a control signal (mdu_max_subdivision_iteration_count) that designates the number of times of subdivision processing for each patch.
The PDU may include a control signal (mdu_subdivision_flag) that designates whether or not to recursively subdivide the base face for each of indices i (i=0, . . . , and mdu_triangle_count_minus1) and j (j=0, . . . , and mdu_subdivision_iteration_count).
The PDU may include a control signal (mdu_subdivision_num) that designates the number of divisions of the base face in one subdivision processing for each patch.
The PDU may include a control signal (mdu_normal_method) that designates a type of a method of calculating a subdivided vertex normal for each patch.
The PDU may include a control signal (mdu_lod_qp) that designates the quantization value of the subdivided face for each subdivision level for each patch.
The subdivision level is the number of times of subdivision processing at the current stage. For example, the subdivision level of 1 means that the subdivision processing has been performed on the base face once.
Hereinafter, a syntax configuration of the FPS will be described with reference to
In the syntax configuration of the FPS illustrated in
The FPS may include a flag (mdu_border_adaption_flag) indicating whether or not to perform subdivision adjustment for each frame.
The FPS may include a control signal (mdu_border_adaption_method) that designates a subdivision adjustment method for each frame.
The FPS may include a flag (mdu_vertex_adaption_flag) indicating whether or not to move an edge division point in a subdivided mesh adjustment unit for each frame.
As described above, the subdivision unit 203 is configured to generate and output the added subdivided vertices and the connection information thereof from the base mesh decoded by the base mesh decoding unit 202 by the subdivision method indicated by the control information.
Here, the base mesh, the added subdivided vertices, and the connection information thereof are collectively referred to as “subdivided mesh”.
The subdivision unit 203 is configured to specify the type of the subdivision method from subdivision_method which is control information generated by decoding the atlas bit stream.
Hereinafter, the subdivision unit 203 will be described with reference to
Here, for subdivision, for example, a mid-edge division method of connecting midpoints of edges in each base face may be used. As a result, a certain base face is divided into four faces.
As the subdivided face decoding unit 206 decodes the subdivided face for each subdivided vertex generated in this manner, improvement in encoding performance can be expected.
In addition, the subdivision unit 203 may apply a different subdivision method for each patch. Therefore, the subdivided face decoded by the subdivided face decoding unit 206 is adaptively changed for each patch, and the improvement in encoding performance can be expected. Information regarding the divided patch is received as patch_id that is control information.
Hereinafter, the subdivision unit 203 will be described with reference to
As illustrated in
The base mesh subdivision unit 203A is configured to calculate the number of divisions (the number of subdivisions) for each of the base face and a base patch based on the input base mesh and division information of the base mesh, subdivide the base mesh based on the number of divisions, and output the initial subdivided mesh.
Here, a subdivided face is a face included in the subdivided mesh, and the subdivided mesh is a mesh obtained by subdividing the base face at least once.
That is, the base mesh subdivision unit 203A may be configured such that the above-described number of divisions can be changed in units of base faces and base patches.
Here, the base face is a face included in the base mesh, and the base patch is a set of several base faces.
Furthermore, the base mesh subdivision unit 203A may be configured to predict the number of subdivisions of the base face, and calculate the number of subdivisions of the base face by adding a predicted division number residual to the predicted number of subdivisions of the base face.
Furthermore, the base mesh subdivision unit 203A may be configured to calculate the number of subdivisions of the base face based on the number of subdivisions of a base face adjacent to the base face.
Furthermore, the base mesh subdivision unit 203A may be configured to calculate the number of subdivisions of the base face based on the number of subdivisions of the base face accumulated immediately before.
Furthermore, the base mesh subdivision unit 203A may be configured to calculate the number of subdivisions of the base face based on the number of subdivisions mdu_subdivision_num defined for each patch.
Furthermore, the base mesh subdivision unit 203A may be configured to generate vertices that divide three edges forming the base face, and subdivide the base face by connecting the generated vertices.
As illustrated in
Hereinafter, an example of processing in the base mesh subdivision unit 203A will be described with reference to
As illustrated in
The base face division number buffer unit 203A1 stores division information of the base face including the number of divisions of the base face, and is configured to output the division information of the base face to the base face division number reference unit 203A2.
Here, a size of the base face division number buffer unit 203A1 may be set to 1, and the base face division number buffer unit 203A1 may be configured to output the number of divisions of the base face accumulated immediately before to the base face division number reference unit 203A2.
That is, by setting the size of the base face division number buffer unit 203A1 to 1, only the number of last decoded subdivisions (the number of subdivisions decoded immediately before) may be referred to.
The base face division number reference unit 203A2 is configured to output “non-referable” to the base face division number prediction unit 203A3 in a case where the base face adjacent to the base face to be decoded does not exist, or in a case where the base face adjacent to the base face to be decoded exists but the number of divisions is not fixed.
On the other hand, the base face division number reference unit 203A2 is configured to output the number of divisions to the base face division number prediction unit 203A3 in a case where the base face adjacent to the base face to be decoded exists and the number of divisions is fixed.
The base face division number prediction unit 203A3 is configured to predict the number of divisions (the number of subdivisions) of the base face based on one or more input numbers of divisions, and output the predicted number of divisions (predicted division number) to the addition unit 203A4.
Here, the base face division number prediction unit 203A3 is configured to output 0 as the predicted division number to the addition unit 203A4 in a case where only “non-referable” is input from the base face division number reference unit 203A2.
Note that the base face division number prediction unit 203A3 may be configured to generate, in a case where one or more numbers of divisions are input, the predicted division number by using any one of statistical values such as an average value, a maximum value, a minimum value, and a mode value of the input number of divisions.
Note that the base face division number prediction unit 203A3 may be configured to generate the number of divisions of the most adjacent face as the predicted division number in a case where one or more numbers of divisions are input.
The addition unit 203A4 is configured to output, to the base face mesh division number buffer unit 203A1 and the base face division unit 203A5, the number of divisions obtained by adding the predicted division number residual decoded from a predicted residual bit stream and the predicted division number acquired from the base face division number prediction unit 203A3.
The base face division unit 203A5 is configured to subdivide the base face based on the number of divisions input from the addition unit 203A4.
As illustrated in
Similarly, the base face division unit 203A5 equally divides an edge BC and an edge CA into N, and generates respective points B_1, . . . , B_(N−1), C_1, . . . , and C_(N−1).
Hereinafter, points on the edge AB, the edge BC, and the edge CA are referred to as “edge division points”.
The base face division unit 203A5 generates edges A_i B_(N−i), B_i C_(N−i), and C_i A_(N−i) for all i (i=1, 2, . . . , and N−1), and generates N2 subdivided faces. This division method is hereinafter referred to as N2 division method. The N2 division method is equivalent to the mid-edge division method when N=2.
Next, an example of an operation of the base mesh subdivision unit 203A will be described with reference to
As illustrated in
In step S2202, the base mesh subdivision unit 203A determines whether or not Depth<mdu_max_division_iteration_count.
Here, Depth is a variable representing a current depth, an initial value thereof is 0, and mdu_max_subdivision_iteration_count represents a maximum depth determined for each base face.
In a case where the condition in step S2202 is satisfied, the operation proceeds to step S2203, and in a case where the condition is not satisfied, the operation returns to step S2201.
In step S2203, the base mesh subdivision unit 203A determines whether or not mdu_division_flag at the current depth is 1.
In the case of Yes, the operation returns to step S2201, and in the case of No, the operation proceeds to step S2204.
In step S2204, the base mesh subdivision unit 203A further subdivides all the subdivided faces in the base face.
Here, the base mesh subdivision unit 203A subdivides the base face in a case where subdivision processing has never been performed on the base face.
Note that the subdivision method is similar to the method described with reference to
Specifically, in a case where the base face has never been subdivided, the base mesh subdivision unit 203A subdivides the base face as illustrated in
On the other hand, in a case where the base face has been subdivided at least once, the base mesh subdivision unit 203A subdivides the subdivided face into N2.
In
When the subdivision processing ends, the operation proceeds to step S2205.
In step S2205, the base mesh subdivision unit 203A adds 1 to Depth, and the operation returns to step S2202.
Furthermore, the base mesh subdivision unit 203A may perform the subdivision processing so as to subdivide all the base faces by the same upper limit number of times of subdivision mdu_max_subdivision_iteration_count. At this time, the subdivision processing per one time may be configured to perform subdivision using the N2 division method or may be configured to perform subdivision using the mid-edge division method based on the number of subdivisions mdu_subdivision_num.
Next, a specific example of processing performed by the subdivided mesh adjustment unit 203B will be described. Hereinafter, an example of processing performed by the subdivided mesh adjustment unit 203B will be described with reference to
The subdivided mesh adjustment unit 203B may be configured to adjust the subdivided mesh based on the subdivision adjustment method designated in the frame information output by the atlas data decoding unit 208.
Here, the adjustment is an operation of generating the subdivided mesh in which no hole is formed in the mesh when the mesh is decoded by the mesh decoding unit 204.
In the example of
As illustrated in
The edge division point moving unit 701 is configured to move an edge division point of the base face to any one of edge division points of adjacent base faces with respect to an input initial subdivided face, and output the subdivided face.
The edge division point moving unit 701 may be configured to output the initial subdivided mesh as it is to the subdivided face division unit 702 without moving the edge division point when mdu_vertex_adaption_flag is 1.
The subdivided face division unit 702 is configured to subdivide the input subdivided face again and output a decoded subdivided face.
As illustrated in
The subdivided vertex normal calculation unit 203C is configured to output a normal (subdivided vertex normal) defined for each subdivided vertex for the subdivided vertex forming the input subdivided face.
Hereinafter, an example of processing performed by the subdivided vertex normal portion calculation unit 203C will be described with reference to
As illustrated in
In the case of Yes, the operation ends, and in the case of No, the operation proceeds to step S203B-2.
In step S203B-2, the subdivided vertex normal portion calculation unit 203C determines a method of calculating the subdivided vertex normal based on mdu_normal_method, and the operation proceeds to step S203B-3.
In step S203B-3, the subdivided vertex normal portion calculation unit 203C determines whether or not the calculation of the subdivided vertex normal has been completed for all the base faces in the patch.
In the case of Yes, the operation proceeds to step S203B-1, and in the case of No, the operation proceeds to step S203B-4.
In step S203B-4, the subdivided vertex normal portion calculation unit 203C determines whether or not the calculation of the subdivided vertex normal has been completed for all the subdivided vertices in the base face.
In the case of Yes, the operation proceeds to step S203B-3, and in the case of No, the operation proceeds to step S203B-5.
In step S203B-5, the subdivided vertex normal portion calculation unit 203C calculates a subdivided vertex normal of an unprocessed subdivided vertex, and the operation proceeds to step S203B-4.
An example of a method of calculating the subdivided vertex normal will be described with reference to
The subdivided vertex normal portion calculation unit 203C may be configured to calculate a normal n (vector) of the subdivided vertex X on the base face ABC based on the total value of base point normals as expressed in the following (Expression 1).
At this time, a, b, and c (vectors) are normals (base point normals) defined for each base point (a vertex forming the base face).
Furthermore, another example of the method of calculating the subdivided vertex normal will be described with reference to
The subdivided vertex normal portion calculation unit 203C may be configured to calculate the normal n (vector) of the subdivided vertex X on the base face ABC based on the total value of normals of base faces adjacent to the base face ABC as expressed in the following (Expression 2).
At this time, a, b, c, d, and e (vectors) are face normals (vectors) of the base faces adjacent to the base face ABC.
In addition, the subdivided vertex normal portion calculation unit 203C may simply use the face normal of the base face ABC as the normal (subdivision point normal) of the subdivided vertex X.
With such calculation, basically, the same normal is used as the normal of the subdivision point existing on the same base face.
In a case where the subdivided vertex normal has already been calculated, the subdivided vertex normal portion calculation unit 203C does not have to perform processing of calculating the subdivided vertex normal.
In addition, the subdivided vertex normal portion calculation unit 203C may similarly calculate the base point normal by using the above-described method of calculating the subdivided vertex normal.
At this time, basically, the same normal is used as the subdivision point normal and the base point normal existing on the same base face.
As illustrated in
The control information decoding unit 206A is configured to output the control information by performing variable length decoding on the received subdivided face bit stream.
The arithmetic decoding unit 206B is configured to output a binarized coefficient level value by performing arithmetic decoding on the received subdivided face bit stream.
The context value update unit 206C is configured to update a context value by using the binarized coefficient level value and output the updated context value to the context buffer 206D.
The context selection unit 206E is configured to generate and output the context value (the context value for output) by using the context value, a bit position, and the syntax read from the context buffer 206D.
The multi-value conversion unit 206F is configured to generate and output a coefficient level value by multi-value conversion of the binarized coefficient level value. The generated (calculated) coefficient level value is also output to the context buffer 206D as the bit position and the syntax.
The inter prediction unit 206G is configured to generate and output a predicted subdivided face by using a reference frame read from the frame buffer 206H.
The frame buffer 206H is configured to acquire and accumulate a decoded subdivided face. The frame buffer H is configured to output the decoded subdivided face at a corresponding vertex in the reference frame according to the control information (not illustrated).
The adder 206I is configured to acquire the inter prediction residual and the inter prediction subdivided face from the inter prediction unit 206G. The adder 206I is configured to add the inter prediction residual and the inter prediction subdivided face to generate and output a quantized intra prediction residual. The generated (calculated) quantized intra prediction residual is also output to the frame buffer 206H.
The inverse quantization unit 206J is configured to perform inverse quantization on the quantized intra prediction residual acquired from the adder 206I and output an intra prediction residual. Details thereof will be described below.
The subdivided face prediction addition unit 206K is configured to decode the subdivided face by performing the intra prediction of the subdivided face of the subdivided vertex based on the base mesh output from the base mesh decoding unit 202 to calculate an intra prediction value, and adding the calculated intra prediction value and the intra prediction residual output from the inverse quantization unit 206J.
As illustrated in
In the case of Yes, the operation proceeds to step S203J-3, and in the case of No, the operation proceeds to step S203J-2.
In step S203J-2, the inverse quantization unit 206J performs inverse quantization on all the subdivided faces, and ends the processing.
At this time, the inverse quantization unit 206J may perform the inverse quantization by using uniform quantization disclosed in Reference Literature 2 “Jinhua Yu, “Advantages of uniform scalar dead-zone quantization in image coding system” in 2004 International Conference on Communications, Circuits and Systems (IEEE Cat. No. 04EX914). IEEE, 2004, vol. 2, pp. 805-808″, or may perform the inverse quantization by using another known inverse quantization method.
In step S203J-3, the inverse quantization unit 206J determines whether or not the processing has been completed for all the patches.
In the case of Yes, the operation ends, and in the case of No, the operation proceeds to step S203J-4.
In step S203J-4, the inverse quantization unit 206J determines whether or not the processing has been completed for all the levels in the patch.
In the case of Yes, the operation proceeds to step S203J-3, and in the case of No, the operation proceeds to step S203J-5.
In step S203J-5, the inverse quantization unit 206J determines the quantization value of the current level based on mdu_lod_qp [tileID] [patchIdx] [i], and the operation proceeds to step S203J-6.
In step S203J-6, the inverse quantization unit 206J determines whether or not the inverse quantization processing has been completed for all the subdivided faces of the current level.
In the case of Yes, the operation proceeds to step S203J-4, and in the case of No, the operation proceeds to step S203J-7.
In step S203J-7, the inverse quantization unit 206J performs the inverse quantization of the subdivided face by using the quantization value obtained in step S203J-5, and the operation proceeds to step S203J-6.
At this time, the inverse quantization unit 206J may perform the inverse quantization by using the uniform quantization disclosed in Reference Literature 2 described above, or may perform the inverse quantization by using another known inverse quantization method.
According to the present embodiment, it is possible to efficiently encode the subdivided face by using the same subdivided vertex normal in the same base face.
Furthermore, according to the present embodiment, since a decoding method can be set according to characteristics of the mesh in the patch, the number of bits of the subdivided face can be reduced.
The mesh encoding device 100 and the mesh decoding device 200 described above may be implemented as programs that cause a computer to execute each function (each step).
According to the present embodiment, for example, comprehensive improvement in service quality can be realized in moving image communication, and thus, it is possible to contribute to the goal 9 “Build resilient infrastructure, promote inclusive and sustainable industrialization and foster innovation” of the sustainable development goal (SDGs) established by the United Nations.
Number | Date | Country | Kind |
---|---|---|---|
2022-212378 | Dec 2022 | JP | national |
The present application is a continuation of PCT Application No. PCT/JP2023/045387, filed on Dec. 18, 2023, which claims the benefit of Japanese patent application No. 2022-212378 filed on Dec. 28, 2022, the entire contents of each application being incorporated herein by reference in its entirety.
Number | Date | Country | |
---|---|---|---|
Parent | PCT/JP2023/045387 | Dec 2023 | WO |
Child | 19061192 | US |