Mesh decoding device, mesh encoding device, mesh decoding method and program
The solution addresses the inefficiency in existing mesh encoding by predicting and decoding displacement amounts to reduce information redundancy, thereby improving encoding efficiency.
Patent Information
- Application Number
- JP2022165083
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Filing Date
- 2022-10-13
- Publication Date
- 2025-12-05
- Estimated Expiration
- 2042-10-13
AI Technical Summary
Existing mesh encoding methods fail to reduce information amount under acceptable loss conditions, leading to low encoding efficiency due to the lossless encoding of vertex coordinates and connectivity information.
Incorporating a displacement amount prediction addition unit to intra-predict displacement amounts of subdivision vertices based on a basic mesh output, calculating intra-prediction values, and decoding displacement amounts by adding intra-prediction residuals.
Improves mesh encoding efficiency by reducing the amount of information required for encoding, thereby enhancing the overall encoding process.
Smart Images

Figure 0007781042000008 
Figure 0007781042000009 
Figure 0007781042000010
Abstract
Description
[Technical Field]
[0001] The present invention relates to a mesh decoding device, a mesh encoding device, a mesh decoding method, and a program. [Background technology]
[0002] Non-Patent Document 1 discloses a technique for encoding a mesh using Non-Patent Document 2. [Prior art documents] [Non-patent literature]
[0003] [Non-Patent Document 1] Cfp for Dynamic Mesh Coding, ISO / IEC JTC1 / SC29 / WG7 N00231, MPEG136 - Online [Non-patent document 2] Google Draco, accessed May 26, 2022 [Online], https: / / google.github.io / draco Summary of the Invention [Problem to be solved by the invention]
[0004] However, in the prior art, because the coordinates and connectivity information of all vertices that make up a dynamic mesh are losslessly encoded, the amount of information cannot be reduced even under conditions where loss is acceptable, resulting in low encoding efficiency. Therefore, the present invention has been made in consideration of the above-mentioned 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 can improve the encoding efficiency of meshes. [Means for solving the problem]
[0005] A first feature of the present invention is summarized as including a displacement amount prediction addition unit configured to intra-predict displacement amounts of subdivision vertices based on a basic mesh output from a basic mesh decoding unit, calculate intra-prediction values, and decode displacement amounts by adding the calculated intra-prediction values and intra-prediction residuals output from an inverse quantization unit.
[0006] A second feature of the present invention is a mesh decoding method comprising the steps of: a step A of decoding a basic mesh bitstream, generating and outputting a basic mesh; a step B of performing inverse quantization on the quantized intra-prediction residual, and outputting the intra-prediction residual; a step C of predicting the displacement of a subdivision vertex based on the basic mesh output in step A to calculate an intra-prediction value; and a step of decoding the displacement by adding the intra-prediction residual output in step B and the intra-prediction value calculated in step C.
[0007] A third feature of the present invention is summarized as a program for causing a computer to function as a mesh decoding device, the mesh decoding device comprising a displacement amount prediction addition unit configured to intra-predict displacement amounts of subdivision vertices based on a basic mesh output from a basic mesh decoding unit to calculate intra-prediction values, and to decode displacement amounts by adding the calculated intra-prediction values to intra-prediction residuals output from an inverse quantization unit. [Effects of the Invention]
[0008] 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 can improve mesh encoding efficiency. [Brief explanation of the drawings]
[0009] [Figure 1] FIG. 1 is a diagram showing an example of the configuration of a mesh processing system 1 according to an embodiment. [Figure 2]FIG. 2 is a diagram illustrating an example of functional blocks of a mesh decoding device 200 according to an embodiment. [Figure 3A] FIG. 3A is a diagram showing an example of a basic mesh and a subdivision mesh. [Figure 3B] FIG. 3B is a diagram showing an example of a basic mesh and a subdivision mesh. [Figure 4] FIG. 4 is a diagram showing an example of the syntax configuration of a basic mesh bit stream. [Figure 5] FIG. 5 is a diagram showing an example of the syntax configuration of the BPH. [Figure 6] FIG. 6 is a diagram showing an example of functional blocks of the basic mesh decoding unit 202 of the mesh decoding device 200 according to an embodiment. [Figure 7] FIG. 7 is a diagram showing an example of functional blocks of the intra-decoding unit 202B of the basic mesh decoding unit 202 of the mesh decoding device 200 according to an embodiment. [Figure 8] FIG. 8 is a diagram showing an example of the correspondence between the vertices of the basic mesh of the P frame and the vertices of the basic mesh of the I frame. [Figure 9] FIG. 9 is a diagram showing an example of functional blocks of the inter decoding unit 202E of the basic mesh decoding unit 202 of the mesh decoding device 200 according to an embodiment. [Figure 10] FIG. 10 is a diagram illustrating an example of a method for calculating the MVP of a vertex to be decoded by the motion vector prediction unit 202E3 of the inter decoding unit 202E of the basic mesh decoding unit 202 of the mesh decoding device 200 according to one embodiment. [Figure 11] FIG. 11 shows a flowchart illustrating an example of the operation of the motion vector prediction unit 202E3 of the inter decoding unit 202E of the basic mesh decoding unit 202 of the mesh decoding device 200 according to an embodiment. [Figure 12] Figure 12 shows a flowchart illustrating an example of the operation of the motion vector prediction unit 202E3 of the inter decoding unit 202E of the basic mesh decoding unit 202 of the mesh decoding device 200 according to one embodiment, calculating the sum Total_D of distances to surrounding vertices that have already been decoded. [Figure 13] FIG. 13 is a flowchart showing an example of the operation of the motion vector prediction unit 202E3 of the inter decoding unit 202E of the basic mesh decoding unit 202 of the mesh decoding device 200 according to one embodiment, which calculates the MVP using a weighted average. [Figure 14] FIG. 14 is a flowchart showing an example of the operation of the motion vector prediction unit 202E3 of the inter decoding unit 202E of the basic mesh decoding unit 202 of the mesh decoding device 200 according to one embodiment, in selecting an MV from a set of candidate MVs as an MVP. [Figure 15] FIG. 15 is a flowchart showing an example of the operation of the motion vector prediction unit 202E3 of the inter decoding unit 202E of the basic mesh decoding unit 202 of the mesh decoding device 200 according to one embodiment, in creating a set of candidate MVs. [Figure 16] FIG. 16 is a diagram illustrating an example of parallelogram prediction. [Figure 17] FIG. 17 is a flowchart showing an example of an operation for restoring the MVR precision to the original bit precision from the control information adaptive_mesh_flag, adaptive_bit_flag, and precision control parameters generated by decoding the basic mesh bit stream. [Figure 18] FIG. 18 is intended to illustrate an example of MVR encoding. [Figure 19] FIG. 19 is a diagram showing an example of functional blocks of an inter decoding unit 202E of the basic mesh decoding unit 202 of the mesh decoding device 200 according to an embodiment. [Figure 20] FIG. 20 is a diagram showing an example of an operation for determining connection information and the order of vertices using Edgebreaker. [Figure 21] FIG. 21 is a diagram showing an example of functional blocks of the subdivision unit 203 of the mesh decoding device 200 according to an embodiment. [Figure 22] FIG. 22 is a diagram showing an example of functional blocks of the basic mesh subdivision unit 203A of the subdivision unit 203 of the mesh decoding device 200 according to an embodiment. [Figure 23] FIG. 23 is a diagram illustrating an example of a method for dividing a basic surface by the basic surface dividing unit 203A5 of the basic mesh subdivision unit 203A of the subdivision unit 203 of the mesh decoding device 200 according to an embodiment. [Figure 24] FIG. 24 is a flowchart showing an example of the operation of the basic mesh subdivision unit 203A of the subdivision unit 203 of the mesh decoding device 200 according to an embodiment. [Figure 25] FIG. 25 is a diagram showing an example of functional blocks of the subdivision mesh adjustment unit 203B of the subdivision unit 203 of the mesh decoding device 200 according to an embodiment. [Figure 26] FIG. 26 is a diagram showing an example of a case in which an edge division point on a basic surface ABC is moved by the edge division point moving unit 701 of the subdivision mesh adjustment unit 203B of the subdivision unit 203 of the mesh decoding device 200 according to one embodiment. [Figure 27] Figure 27 is a diagram showing an example of a case where subdivision is performed again on a subdivision surface X within a basic surface by the subdivision surface division unit 702 of the subdivision mesh adjustment unit 203B of the subdivision unit 203 of the mesh decoding device 200 according to one embodiment. [Figure 28] Figure 28 is a diagram showing an example of a case in which all subdivision surfaces are re-subdivided by the subdivision surface division unit 702 of the subdivision mesh adjustment unit 203B of the subdivision unit 203 of the mesh decoding device 200 according to one embodiment. [Figure 29] FIG. 29 is a diagram showing an example of functional blocks of the displacement amount decoding unit 206 of the mesh decoding device 200 according to an embodiment. [Figure 30] FIG. 29 is a diagram showing an example of the configuration of a displacement amount bit stream. [Figure 31] FIG. 31 is a diagram illustrating an example of a syntax configuration of a DPS. [Figure 32] FIG. 32 is a diagram illustrating an example of a syntax configuration. [Figure 33] FIG. 33 is a diagram showing prefix code strings and suffix code strings when the maximum value is 32. [Figure 34]FIG. 34 is a diagram showing prefix code strings and suffix code strings formed by kth order exponential-Golomb coding. [Figure 35] FIG. 35 is a diagram showing a specific example of a syntax configuration. [Figure 36] FIG. 36 is a diagram showing a specific example of a syntax configuration. [Figure 37] FIG. 37 is a diagram illustrating an example of a syntax configuration of the DPH. [Figure 38] FIG. 38 is a diagram for explaining the operation of the context selection unit 206E of the mesh decoding device 200 according to an embodiment. [Figure 39] FIG. 39 is a diagram for explaining the operation of the context selection unit 206E of the mesh decoding device 200 according to an embodiment. [Figure 40] FIG. 40 is a diagram for explaining the operation of the context selection unit 206E of the mesh decoding device 200 according to an embodiment. [Figure 41] FIG. 41 is a flowchart showing an example of the operation of the coefficient level value decoding unit 206F2. [Figure 42] FIG. 42 is a flowchart showing an example of the operations of the arithmetic decoding unit 206B, the context selecting unit 206E, the context value updating unit 206C, and the multi-value conversion unit 206F. [Figure 43] FIG. 43 is a diagram illustrating an example of a correspondence relationship between subdivision vertices between a reference frame and a current frame for decoding when inter prediction is performed in the spatial domain. [Figure 44] FIG. 44 is a flowchart showing an example of the operation of the displacement amount prediction adder 206K. [Figure 45] FIG. 45 is a diagram showing an example in which a line segment AB is divided by the Mid-edge division method to generate a subdivision vertex C. [Figure 46] FIG. 46 is a diagram showing a schematic example of calculating the displacement amount of the subdivision vertex C. [Figure 47] FIG. 47 is a diagram showing an example of predicting the displacement of subdivision vertex D using cubic interpolation. [Figure 48] FIG. 48 is a diagram showing an example in which side KB, side BJ, side JK, side BF, and side FA are each divided by the Mid-edge division method, and then side AB is divided to generate subdivision vertex C. [Figure 49] FIG. 49 is a diagram showing an example of functional blocks of the displacement amount decoding unit 206 according to the first modification. DETAILED DESCRIPTION OF THE INVENTION
[0010] Hereinafter, embodiments of the present invention will be described with reference to the drawings. Note that the components in the following embodiments can be appropriately replaced with existing components, etc., and various variations, including combinations with other existing components, are possible. Therefore, the description of the following embodiments does not limit the content of the invention described in the claims.
[0011] First Embodiment The mesh processing system according to this embodiment will be described below with reference to FIGS.
[0012] 1 is a diagram showing an example of the configuration of a mesh processing system 1 according to this embodiment. As shown in FIG. 1, the mesh processing system 1 includes a mesh encoding device 100 and a mesh decoding device 200.
[0013] FIG. 2 is a diagram showing an example of functional blocks of the mesh decoding device 200 according to this embodiment.
[0014] As shown in Figure 2, the mesh decoding device 200 has a demultiplexing unit 201, a basic mesh decoding unit 202, a subdivision unit 203, a mesh decoding unit 204, a patch integration unit 205, a displacement amount decoding unit 206, and a video decoding unit 207.
[0015] Here, the basic mesh decoding unit 202, the subdivision unit 203, the mesh decoding unit 204, and the displacement amount decoding unit 206 are configured to perform processing in units of patches into which the mesh is divided, and the results of this processing may then be integrated by the patch integration unit 205.
[0016] In the example of FIG. 3A, the mesh is divided into patch 1 consisting of basic faces 1 and 2, and patch 2 consisting of basic faces 3 and 4.
[0017] The demultiplexing unit 201 is configured to separate the multiplexed bit stream into a basic mesh bit stream, a displacement amount bit stream, and a texture bit stream.
[0018] <Basic mesh decoding unit 202> The base mesh decoding unit 202 is configured to decode the base mesh bitstream, generate and output a base mesh.
[0019] Here, the basic mesh is made up of a plurality of vertices in a three-dimensional space and edges connecting these vertices.
[0020] As shown in FIG. 3A, the basic mesh is formed by combining basic faces each represented by three vertices.
[0021] The base mesh decoder 202 may be configured to decode the base mesh bitstream using, for example, Draco as described in Non-Patent Document 2.
[0022] Furthermore, the basic mesh decoding unit 202 may be configured to generate "subdivision_method_id" (to be described later) as control information for controlling the type of subdivision method.
[0023] Hereinafter, the control information decoded by the basic mesh decoding unit 202 will be described with reference to FIGS.
[0024] FIG. 4 is a diagram showing an example of the syntax configuration of a basic mesh bit stream.
[0025] As shown in Figure 4, first, the base mesh bitstream may include a BPH (Base Patch Header), which is a collection of control information corresponding to the base mesh patch. Second, the base mesh bitstream may include, following the BPH, base mesh patch data that encodes the base mesh patch.
[0026] As described above, the basic mesh bitstream is configured such that each patch data corresponds to one BPH. Note that the configuration of Figure 4 is only an example, and as long as each patch data corresponds to a BPH, elements other than those described above may be added as components of the basic mesh bitstream.
[0027] For example, as shown in Figure 4, the basic mesh bitstream may include an SPS (Sequence Parameter Set), an FH (Frame Header) which is a set of control information corresponding to a frame, or an MH (Mesh Header) which is control information corresponding to a mesh.
[0028] 5 is a diagram showing an example of the syntax configuration of the BPH. Here, if the syntax functions are similar, different syntax names may be used in place of the syntax names shown in FIG.
[0029] In the BPH syntax structure shown in Figure 5, the Description column indicates how each syntax is coded. Also, ue(v) indicates an unsigned zeroth-order exponential-Golomb code, and u(n) indicates an n-bit flag.
[0030] The BPH includes at least a control signal (mdu_face_count_minus1) that specifies the number of elementary faces included in the basic mesh patch.
[0031] The BPH also includes at least a control signal (mdu_subdivision_method_id) that specifies the type of subdivision method for the basic mesh for each basic patch.
[0032] The BPH may also include a control signal (mdu_subdivision_num_method_id) that specifies the type of subdivision number generation method for each basic mesh patch.
[0033] For example, when mdu_subdivision_num_method_id=0, it may be defined that the number of subdivisions of the base surface is generated based on the predicted division residual; when mdu_subdivision_num_method_id=1, it may be defined that the number of subdivisions of the base surface is generated recursively; and when mdu_subdivision_num_method_id=2, it may be defined that the same maximum number of subdivisions is performed on all base surfaces recursively.
[0034] When generating the number of subdivisions of the base plane by the prediction division residuals, the BPH may include a control signal (mdu_subdivision_residuals) that specifies the prediction division residuals of the base plane for each index i (i=0, . . . , mdu_face_count_minus1).
[0035] The BPH may include a control signal (mdu_max_depth) for identifying an upper limit on the number of recursive subdivisions to perform for each base mesh patch when recursively generating the number of subdivisions of the base surface.
[0036] The BPH may include a control signal (mdu_subdivision_flag) that specifies whether or not to recursively sub-divide the elementary faces for each index i (i=0,...,mdu_face_count_minus1) and j (j=0,...,mdu_subdivision_depth_index).
[0037] The BPH may include a control signal (mdu_subdivision_num) that specifies the number of subdivisions per subdivision.
[0038] As shown in FIG. 6, the basic mesh decoding unit 202 includes a separating unit 202A, an intra decoding unit 202B, a mesh buffer unit 202C, a connection information decoding unit 202D, and an inter decoding unit 202E.
[0039] The separating unit 202A is configured to classify the basic mesh bitstream into a bitstream of I frames (reference frames) and a bitstream of P frames. (Intra decoding unit 202B) The intra decoder 202B is configured to decode the coordinates and connection information of the vertices of the I frame from the bit stream of the I frame using, for example, Draco as disclosed in Non-Patent Document 2.
[0040] FIG. 7 is a diagram showing an example of functional blocks of the intra decoding unit 202B.
[0041] As shown in FIG. 7, the intra decoding unit 202B includes a separating unit 202A, an arbitrary intra decoding unit 202B1, and an aligning unit 202B2.
[0042] The arbitrary intra decoder 202B1 is configured to decode the coordinates and connectivity information of unordered vertices of an I frame from the bitstream of the I frame using any method including Draco described in Non-Patent Document 2.
[0043] The sorting unit 202B2 is configured to output the vertices by sorting the unordered vertices into a predetermined order.
[0044] The predetermined order may be, for example, a Morton code order or a raster scan order.
[0045] Furthermore, multiple vertices with the same coordinates, i.e., overlapping vertices, may be combined into a single vertex and then rearranged in a predetermined order.
[0046] The mesh buffer unit 202C is configured to store the vertex coordinates and connection information of the I frame decoded by the intra decoding unit 202B.
[0047] The connection information decoding unit 202D is configured to convert the connection information of the I frame extracted from the mesh buffer unit 202C into connection information of the P frame.
[0048] The inter-decoding unit 202E is configured to decode the coordinates of the vertices of the P frame by adding the coordinates of the vertices of the I frame retrieved from the mesh buffer unit 202C to the motion vectors decoded from the bitstream of the P frame.
[0049] In this embodiment, there is a correspondence between the vertices of the base mesh of the P frame and the vertices of the base mesh of the I frame (reference frame), as shown in Fig. 8. Here, the motion vector decoded by the inter decoding unit 202E is a difference vector between the coordinates of the vertices of the base mesh of the P frame and the coordinates of the vertices of the base mesh of the I frame.
[0050] (Inter-decoding unit 202E) FIG. 9 is a diagram illustrating an example of functional blocks of the inter decoding unit 202E.
[0051] As shown in FIG. 9, the inter decoding unit 202E includes a motion vector residual decoding unit 202E1, a motion vector buffer unit 202E2, a motion vector prediction unit 202E3, a motion vector calculation unit 202E4, and an adder 202E5.
[0052] The motion vector residual decoding unit 202E1 is configured to generate a motion vector residual (MVR) from a P frame bitstream.
[0053] Here, MVR is a motion vector residual indicating the difference between MV (Motion Vector) and MVP (Motion Vector Prediction). MV is a difference vector (motion vector) between the coordinates of the corresponding vertex in the I frame and the coordinates of the vertex in the P frame. MVP is a predicted value (predicted value of the motion vector) of the MV of the target vertex using MV.
[0054] The motion vector buffer unit 202E2 is configured to sequentially store the MVs output by the motion vector calculation unit 202E4.
[0055] The motion vector prediction unit 202E3 is configured to obtain the decoded MV for the vertex connected to the vertex to be decoded from the motion vector buffer unit 202E2, and output the MVP of the vertex to be decoded using all or part of the obtained decoded MV, as shown in Figure 10.
[0056] The motion vector calculation unit 202E4 is configured to add the MVR generated by the motion vector residual decoding unit 202E1 and the MVP output from the motion vector prediction unit 202E3, and output the MV of the vertex to be decoded.
[0057] The adder 202E5 is configured to add the coordinates of the vertex corresponding to the vertex to be decoded, obtained from the decoded basic mesh of the corresponding I frame (reference frame), to the motion vector MV output from the motion vector calculation unit 202E3, and output the coordinates of the vertex to be decoded.
[0058] The individual components of inter decoding unit 202E will be described in detail below.
[0059] FIG. 11 is a flowchart showing an example of the operation of the motion vector prediction unit 202E3.
[0060] As shown in FIG. 11, in step S1001, the motion vector prediction unit 202E3 sets MVP and N to 0.
[0061] In step S1002, the motion vector prediction unit 202E3 obtains a set of MVs of vertices around the vertex to be decoded from the motion vector buffer unit 202E2, identifies vertices for which subsequent processing has not been completed, and transitions to No. If subsequent processing has been completed for all vertices, it transitions to Yes.
[0062] In step S1003, if the MV of the vertex to be processed has not been decoded, the motion vector prediction unit 202E3 transitions to No, and if the MV of the vertex to be processed has been decoded, the motion vector prediction unit 202E3 transitions to Yes.
[0063] In step S1004, the motion vector prediction unit 202E3 adds MV to MVP and adds 1 to N.
[0064] In step S1005, if N is greater than 0, the motion vector prediction unit 202E3 outputs the result of dividing MVP by N, and if N is 0, outputs 0, and ends the process.
[0065] That is, the motion vector prediction unit 202E3 is configured to output the MVP to be decoded by averaging the decoded motion vectors of the vertices around the vertex to be decoded.
[0066] The motion vector prediction unit 202E3 may be configured to set MVP to 0 when the set of decoded motion vectors is an empty set.
[0067] The motion vector calculation unit 202E4 may be configured to calculate the MV of the vertex to be decoded from the MVP output by the motion vector prediction unit 202E3 and the MVR generated by the motion vector residual decoding unit 202E1 using equation (1).
[0068] MV(k)=MVP(k)+MVR(k) … (1) where k is the index of the vertex. MV, MVR and MVP are vectors with x, y and z components.
[0069] According to this configuration, since only the MVR is coded instead of the MV using the MVP, it is expected that the coding efficiency will be improved.
[0070] The adder 202E5 is configured to calculate the coordinates of a vertex by adding the MV of the vertex calculated by the motion vector calculation unit 202E4 to the coordinates of the vertex in the reference frame corresponding to the vertex, and to leave the connectivity information (Connectivity) as it is in the reference frame.
[0071] Specifically, the adder 202E5 calculates the coordinate v' of the kth vertex using equation (2). i (k) may be calculated.
[0072] v' i (k)=v' j (k)+MV(k) … (2) where v' i (k) is the coordinate of the kth vertex to be decoded in the frame to be decoded, and v' j (k) is the coordinate of the decoded k-th vertex of the reference frame, and MV(k) is the k-th MV of the frame to be decoded, where k=1, 2, . . . , K.
[0073] Furthermore, the connection information of the frame to be decoded is made the same as the connection information of the reference frame.
[0074] Note that the motion vector prediction unit 202E3 calculates the MVP using the decoded MV, and therefore the order of decoding affects the MVP.
[0075] The decoding order is the order in which the vertices of the base mesh in the reference frame are decoded. Generally, if a decoding method is used that uses a fixed repetition pattern to increase the number of base faces one by one from the starting edge, the order of the vertices of the decoded base mesh is determined during the decoding process.
[0076] For example, the motion vector prediction unit 202E3 may use an Edgebreaker to determine the order of decoding vertices in the base mesh of the reference frame.
[0077] According to this configuration, since MVs from a reference frame are coded instead of vertex coordinates, it is expected that coding efficiency will be improved.
[0078] (Modification 1 of the inter-decoding unit 202E) The MVP calculated in the flowchart shown in FIG. 11 is calculated as a simple average of surrounding decoded MVs, but it may also be calculated as a weighted average.
[0079] That is, the motion vector prediction unit 202E3 may be configured to output a predicted value of the motion vector to be decoded by weighting the decoded motion vectors of the vertices around the vertex to be decoded with a weight according to the distance between the vertex to be decoded and the vertices of the reference frame corresponding to the vertex to be decoded and the vertices around the vertex to be decoded.
[0080] In addition, the motion vector prediction unit 202E3 may be configured to output a predicted value of the motion vector to be decoded by taking a weighted average of some of the decoded motion vectors of the vertices around the vertex to be decoded, with a weight corresponding to the distance between the vertex to be decoded and the vertices in the reference frame corresponding to the vertex to be decoded and the vertices around the vertex to be decoded.
[0081] In this first modification, the motion vector prediction unit 202E3 of the inter decoding unit 202E is configured to calculate the MVP in the following procedure.
[0082] First, the motion vector predictor 202E3 is configured to calculate weights.
[0083] FIG. 12 shows a flowchart illustrating an example of the operation of calculating the sum Total_D of the distances to the decoded surrounding vertices.
[0084] As shown in FIG. 12, in step S1101, the motion vector prediction unit 202E3 sets 0 to Total_D.
[0085] Step S1102 is the same as step S1002.
[0086] Step S1103 is the same as step S1003.
[0087] In step S1104, the motion vector prediction unit 202E3 adds e(k) to Total_D.
[0088] That is, the motion vector prediction unit 202E3 refers to a set of vertices around the vertex to be decoded, and adds the distances of the vertices that have already been decoded.
[0089] In this first modification, the motion vector prediction unit 202E3 is configured to calculate the weight using the distance in a reference frame in which the correspondence between vertices is known.
[0090] That is, e(k) in step S1104 of FIG. 12 is the distance between corresponding vertices in the reference frame.
[0091] The motion vector prediction unit 202E3 may be configured to calculate the weight w(k) using equations (3) and (4).
[0092]
number
[0093] The motion vector prediction unit 202E3 may be configured to set the weight according to a predetermined rule depending on the distance.
[0094] For example, the motion vector prediction unit 202E3 may be configured to set the weight to 1 if e(k) is smaller than a threshold TH1, to set the weight to 0.5 if e(k) is smaller than a threshold TH2, and to set the weight to 0 (no weight is used) otherwise.
[0095] According to this configuration, by increasing the weight when the distance to the vertex to be decoded is short, it is possible to expect the effect of being able to calculate the MVP with higher accuracy.
[0096] Second, the motion vector prediction unit 202E3 is configured to refer to the MVP.
[0097] FIG. 13 is a flowchart showing an example of the operation of calculating the MVP using the weighted average.
[0098] As shown in FIG. 13, in step S1201, the motion vector prediction unit 202E3 sets MVP and N to 0.
[0099] Step S1202 is the same as step S1002.
[0100] Step S1203 is the same as step S1003.
[0101] In step S1204, the motion vector prediction unit 202E3 adds w(k)×MV(k) to MVP, and adds 1 to N.
[0102] Step S1205 is the same as step S1005.
[0103] Alternatively, the motion vector prediction unit 202E3 may be configured to calculate the MVP using equation (5).
[0104]
number
[0105] According to this configuration, it is possible to calculate a more accurate MVP using a weighted average, and therefore it is expected that the coding efficiency will be improved by reducing the MVR value and concentrating it around zero.
[0106] (Modification 2 of the inter-decoding unit 202E) In this second modification, the motion vector prediction unit 202E3 is configured to select one MV rather than calculating an MVP using multiple surrounding MVs.
[0107] In other words, the motion vector prediction unit 202E3 may be configured to select the MV of the nearest vertex from the decoded MVs stored in the motion vector buffer unit 202E2 as the MV of the vertex connected to the vertex to be decoded.
[0108] Here, the motion vector prediction unit 202E3 may be configured to construct a candidate list consisting of MVs of vertices connected to the vertex to be decoded from the decoded MVs stored in the motion vector buffer unit 202E2, and select a motion vector from the candidate list based on an index decoded from the bitstream of the P frame (the frame to be decoded).
[0109] FIG. 14 shows a flowchart illustrating an example of the operation of selecting an MV as an MVP from a set of candidate MVs.
[0110] As shown in FIG. 14, in step S1301, the motion vector prediction unit 202E3 decodes the list ID from the bitstream of the P frame.
[0111] In step S1302, the motion vector prediction unit 202E3 selects, from among the candidate MVs, an MV to which a list ID is to be assigned as an MVP.
[0112] In the set of candidate MVs in FIG. 13, the surrounding MVs that have already been decoded and the MVs calculated from their combinations are arranged in a certain order.
[0113] FIG. 15 shows a flowchart showing an example of the operation of creating such a set of candidate MVs.
[0114] As shown in FIG. 15, in step S1401, the motion vector prediction unit 202E3 refers to the set of MVs of vertices around the vertex to be decoded and determines whether processing for all vertices around the vertex to be decoded has been completed.
[0115] If the process is complete, the operation ends; if the process is not complete, the operation proceeds to step S1402.
[0116] In step S1402, the motion vector prediction unit 202E3 determines whether the MV of the target vertex has been decoded.
[0117] If the MV has been decoded, the operation proceeds to step S1403; if the MV has not been decoded, the operation returns to step S1401.
[0118] In step S1403, the motion vector prediction unit 202E3 determines whether or not the MV overlaps with another decoded MV.
[0119] If there is an overlap, the operation returns to step S1401; if there is no overlap, the operation proceeds to step S1404.
[0120] In step S1404, the motion vector prediction unit 202E3 determines a list ID to be assigned to the MV, and in step S1405, includes the MV in a set of candidate MVs.
[0121] In addition, in Figure 15, when determining the list ID, the motion vector prediction unit 202E3 may increase the list ID by one in order, or may determine the list ID in the order of the distance between the vertex to be decoded in the reference frame and the vertex corresponding to vertex k (e(k) in equation (3)).
[0122] According to this configuration, selecting one of the candidate MVs as the MVP may be closer to the MV than the average in some cases, and in such cases, it is expected to have the effect of improving coding efficiency.
[0123] Furthermore, the motion vector prediction unit 202E3 may be configured to add an MV obtained by averaging consecutive MV0 and MV1 from among the candidate MVs described above as a new candidate MV to the list. The motion vector prediction unit 202E3 adds this MV after MV0 and MV1, as shown in Table 1.
[0124] [Table 1] According to this configuration, it is expected that the effect of increasing the possibility that the selected candidate MV is closer to the MV of the vertex to be decoded can be achieved.
[0125] Furthermore, the motion vector prediction unit 202E3 may be configured to select the MV of the nearest vertex from the set of candidate MVs without encoding the list ID. This configuration is expected to further improve encoding efficiency.
[0126] (Modification 3 of the inter-decoding unit 202E) In the above-described embodiment and modifications 1 and 2, the surrounding vertices are vertices connected to the vertex to be decoded.
[0127] In contrast to this, in the present modified example 3, the motion vector predictor 202E3 is configured to calculate the MVP by parallelogram prediction, that is, by using vertices that are not directly connected to the vertex to be decoded.
[0128] As shown in FIG. 16, in parallelogram prediction, vertex D on the opposite side of the decoded face that has a shared edge BC with vertex A to be decoded is also used.
[0129] Furthermore, the shared edges of the vertex A to be decoded are CE and BG in addition to AB. Therefore, in parallelogram prediction, vertices F and H can also be used in a similar manner.
[0130] For example, the motion vector prediction unit 202E3 may be configured to calculate MVP using the plane BCD shown in FIG. 16 according to equation (6).
[0131] MVP = MV(B) + MV(C) - MV(D) … (6) Here, MV(X) is the motion vector of vertex X, and MVP is the motion vector prediction value of vertex A to be decoded.
[0132] Furthermore, when there are multiple shared edges as described above, the motion vector prediction unit 202E3 may average the MVPs of each edge, or may select the face whose center of gravity is closest to the edge.
[0133] (Modification 4 of the inter-decoding unit 202E) In this modification, the MVR generated by the motion vector residual decoding unit 202E1 is not used as is, but the quantization width when expressing the MVR as an integer is controlled.
[0134] In this modification, the motion vector residual decoding unit 202E1 is configured to decode adaptive_mesh_flag, adaptive_bit_flag, and a precision control parameter as control information for controlling the quantization width of MVR.
[0135] That is, the motion vector residual decoding unit 202E1 is configured to decode the adaptive_mesh_flag of the entire basic mesh and the adaptive_bit_flag of each basic patch.
[0136] Here, adaptive_mesh_flag and adaptive_bit_flag are flags that indicate whether or not the quantization width of the MVR described above is to be adjusted, and take the value of either 0 or 1.
[0137] Here, the motion vector residual decoding unit 202E1 decodes adaptive_bit_flag only when adaptive_mesh_flag is valid (ie, 1).
[0138] Furthermore, when adaptive_mesh_flag is invalid (ie, 0), the motion vector residual decoding unit 202E1 regards adaptive_bit_flag as invalid (ie, 0).
[0139] FIG. 17 shows a flowchart illustrating an example of an operation for controlling the quantization width of the decoded MVR from the control information adaptive_mesh_flag, adaptive_bit_flag, and precision control parameters generated by decoding the basic mesh bit stream.
[0140] As shown in FIG. 17, in step S1601, the motion vector prediction unit 202E3 determines whether adaptive_mesh_flag is 0 or not.
[0141] If it is determined that the adaptive_mesh_flag of the entire mesh is 0, this operation ends.
[0142] On the other hand, if it is determined that adaptive_mesh_flag is 1 for the entire mesh, the operation proceeds to step S1602.
[0143] In step S1602, the motion vector prediction unit 202E3 determines whether or not there is an unprocessed patch in the frame.
[0144] In step S1603, the motion vector prediction unit 202E3 determines whether adaptive_mesh_flag decoded for each patch is 0 or not.
[0145] If it is determined that adaptive_mesh_flag is 0, the operation returns to step S1601.
[0146] On the other hand, if it is determined that adaptive_mesh_flag is 1, the operation proceeds to step S1604.
[0147] In step S1604, the motion vector prediction unit 202E3 controls the quantization step size of the MVR based on a precision control parameter, which will be described later.
[0148] The MVR value with the quantization width controlled in this way is called "MVRQ (Motion Vector Residual Quantization)."
[0149] Here, the motion vector prediction unit 202E3 may be configured to use the quantization width of the MVR corresponding to the quantization width control parameter generated by decoding the basic mesh bitstream, for example, by referring to a table such as Table 2.
[0150] [Table 2] This configuration is expected to improve coding efficiency by controlling the MVR quantization width. Furthermore, the hierarchical structure of adaptive_mesh_flag at the mesh level and adaptive_mesh_flag at the patch level is expected to minimize wasted bits when the MVR quantization width is not controlled.
[0151] (Modification 5 of the inter-decoding unit 202E) If the MVR generated by the motion vector residual decoding unit 202E1 is not coded, an error occurs. In this fifth modification, discrete motion vector differences are coded to correct such errors.
[0152] 18, MVR can take on magnitudes of 1, 2, 4, and 8 in six directions of the x-axis, y-axis, and z-axis. An example of such encoding is shown in Tables 3 and 4.
[0153] Furthermore, MVR encoding may be performed using a combination of multiple directions. For example, correction may be performed in the order of 2 in the positive direction of the x-axis and 1 in the positive direction of the y-axis.
[0154] [Table 3]
[0155] [Table 4] According to this configuration, it is expected that the coding efficiency of discrete motion vector differences will be higher than that of MVR coding.
[0156] Further modifications of the inter decoding unit 202E will be described below.
[0157] In a further modification of the above-described inter decoding unit 202E, the following functional blocks are added before implementing the above-described inter decoding unit 202E.
[0158] Specifically, as shown in FIG. 19, the inter-decoding unit 202E includes, in addition to the configuration shown in FIG. 9, an overlapping vertex searching unit 202E6, an overlapping vertex determining unit 202E7, a motion vector obtaining unit 202E8, an all skip mode single determining unit 202E9, and a skip mode single determining unit 202E10.
[0159] The all skip mode single determination unit 202E9 is configured to determine whether all skip mode single indicates Yes or No, and the skip mode single determination unit 202E10 is configured to determine whether skip mode single indicates Yes or No.
[0160] Here, the All skip mode signal is at the beginning of the P frame bitstream, has at least two values, and is one bit or more than one bit.
[0161] One of them (when the All skip mode signal indicates Yes, e.g., 1) is a signal to not decode the motion vectors of all duplicated vertices of the P frame from the bitstream, but to copy the motion vectors of the duplicated vertices.
[0162] The other signal (when the All skip mode signal indicates No, for example, 0) is a signal that performs different processing at each vertex of the P frame. Furthermore, the other signal may have another value. For example, the other signal is Single, which does not perform processing in the motion vector acquisition unit 202E8 for the motion vectors of all overlapping vertices, but performs processing similar to that of the inter decoding unit 202E shown in FIG. 9.
[0163] Here, if the All skip mode signals indicate No, the Skip mode signal has two values for each overlapping vertex, and is one bit.
[0164] The Skip mode signal is a signal that, if the All skip mode signal indicates Yes (for example, if it is 1), the motion vector of the vertex is not decoded from the bitstream, and the motion vector of the overlapped vertex is copied.
[0165] When the All Skip mode signal indicates No (for example, 0), the motion vector acquisition unit 202E8 does not perform processing on the motion vector of the vertex, and the Skip mode signal is Single, performing processing similar to that of the inter decoding unit 202E shown in Figure 9.
[0166] The above-mentioned Skip mode signal may be decoded directly from the bitstream, or data identifying the overlapped vertex (e.g., the index of the overlapped vertex) that performs processing similar to that of the inter-decoding unit 202E shown in Figure 9 may be decoded from the bitstream, and the Skip mode signal may be calculated from such data.
[0167] Furthermore, instead of calculating the Skip mode signal, the motion vector decoding method for the vertex may be determined in the same manner as described above, using data identifying the overlapping vertex (e.g., the index of the overlapping vertex) that performs processing similar to that of the inter decoding unit 202E shown in Figure 9 above.
[0168] The duplicated vertex search unit 202E6 is configured to search for the index of a vertex (hereinafter referred to as a duplicated vertex) with matching coordinates from the geometric information of the basic mesh of the decoded reference frame, and store the index in a buffer (not shown).
[0169] Specifically, the input to the overlapping vertex search unit 202E6 is the index (in decoding order) and position coordinates of each vertex of the basic mesh of the decoded reference frame.
[0170] The output of the duplicate vertex search unit 202E6 is a list of pairs of the index (vindex0) of a vertex where a duplicate vertex exists and the index (vindex1) of such duplicate vertex. Here, the list of such pairs is saved in the buffer repVert in the order of index0.
[0171] Furthermore, since the vertex of vindex1 is decoded before vindex0, the relationship vindex0>vindex1 holds.
[0172] In order to identify duplicate vertices in the base mesh of the reference frame, a special signal is used to decode the index of the duplicate vertex, instead of the position coordinate, for the vertex where the duplicate vertex exists. This special signal allows the pair of the index of the relevant vertex and the index of the duplicate vertex to be stored in decoding order.
[0173] The duplicated vertex determination unit 202E7 is configured to determine whether or not the relevant vertex has a duplicated vertex among the decoded vertices.
[0174] Here, if the index of the relevant vertex is among the indexes of vertices where a duplicate vertex exists, the duplicate vertex determination unit 202E7 determines that there is a duplicate vertex among the decoded vertices. Note that since the relevant vertex comes in the decoding order, the above search is not necessary.
[0175] Here, if the overlapping vertex determining unit 202E7 determines that there is no overlapping vertex for the vertex in question, the same processing as that of the inter decoding unit 202E shown in FIG. 9 is performed.
[0176] The motion vector acquisition unit 202E8 is configured to acquire the motion vector of a vertex having the same index as the overlapping vertex from the motion vector buffer unit 202E2 that stores decoded motion vectors when there is an overlapping vertex of the corresponding vertex, when the All skip mode signal indicates Yes, or when the All skip mode signal indicates No and the Skip mode signal of the corresponding vertex indicates Yes, and set it as the motion vector of the corresponding vertex.
[0177] Here, if the All skip mode signal indicates No and the Skip mode signal of the vertex indicates No, the same processing as that of the inter decoding unit 202E shown in FIG. 9 is performed instead of the motion vector acquisition unit 202E8.
[0178] According to this configuration, it is possible to expect an effect of reducing the decoding calculation and the amount of code for the motion vector for the vertices where overlapping vertices exist.
[0179] In a further modification of the inter decoding unit 202E described above, the inter decoding unit 202E obtains, from the decoded base mesh of the reference frame, the correspondence between the vertices of the reference frame and the vertices of the frame to be decoded.
[0180] Then, based on this correspondence, the inter-decoding unit 202E is configured to make the connectivity information of the vertices of the frame to be decoded the same as the connectivity information of the decoded vertices of the reference frame without encoding the connectivity information of the vertices of the frame to be decoded.
[0181] The inter-decoding unit 202E divides the base mesh of the frame to be decoded into two types of regions based on the signal in the decoding order of the vertices of the reference frame. The first region is decoded using inter processing, and the second region is decoded using intra processing.
[0182] The above-mentioned region is defined as a region formed by a plurality of vertices that are consecutive in decoding order when decoding the basic mesh of the reference frame.
[0183] In addition, the following two implementations are assumed for the means of decoding the coordinates of the vertices of the base mesh of the frame to be decoded using a signal.
[0184] (Measure 1) In means 1, the signals are vertex_idx1, vertex_idx2 and intra_flag.
[0185] Here, vertex_idx1 and vertex_idx2 are indices (vertex indices) of the vertices in the decoding order, and intra_flag is a flag indicating whether the above-mentioned inter-decoding method or intra-decoding method is used. There may be multiple such signals.
[0186] That is, vertex_idx1 and vertex_idx2 are vertex indices that define the start position and end position of the above-mentioned partial region (first region and second region).
[0187] (Measure 2) In the method 2, the Edgebreaker decodes the connection information of the basic mesh of the reference frame, and the decoding order of the vertex coordinates is assumed to be the order determined by the Edgebreaker.
[0188] FIG. 20 is a diagram showing an example of an operation for determining connection information and the order of vertices using Edgebreaker.
[0189] In FIG. 20, arrows indicate the decoding order of the connection information, numbers indicate the decoding order of the vertices, and arrows of the same line type define the same area.
[0190] In the means 2, the signal is only intra_flag, which is a flag indicating whether the decoding method is an inter-decoding method or an intra-decoding method.
[0191] That is, in the means 2, the inter decoding unit 202E is configured to divide into a first region and a second region using an Edgebreaker.
[0192] <Subdivision section 203> The subdivision unit 203 is configured to generate and output the added subdivision vertices and their connection information from the basic mesh decoded by the basic mesh decoding unit 202 using the subdivision method indicated by the control information.
[0193] Here, the basic mesh, the added subdivision vertices, and the connection information therebetween are collectively referred to as a "subdivision mesh."
[0194] The subdivision unit 202 is configured to identify the type of subdivision method from subdivision_method_id, which is control information generated by decoding the basic mesh bitstream.
[0195] The subdivision unit 202 will be described below with reference to FIGS. 3A and 3B.
[0196] 3A and 3B are diagrams for explaining an example of the operation of generating subdivision vertices from a basic mesh.
[0197] FIG. 3A is a diagram showing an example of a basic mesh made up of five vertices.
[0198] For example, the subdivision may be performed using a mid-edge division method in which the midpoints of the sides of each basic face are connected to each other, resulting in a basic face being divided into four faces.
[0199] Figure 3B shows an example of a subdivision mesh obtained by dividing a base mesh consisting of five vertices. In the subdivision mesh shown in Figure 3B, eight subdivision vertices (white circles) are generated in addition to the original five vertices (black circles).
[0200] By decoding the displacement amount for each subdivision vertex thus generated by the displacement amount decoder 206, it is possible to expect improvement in coding performance.
[0201] Also, different subdivision methods may be applied to each patch. This allows the displacement decoded by the displacement decoder 206 to be adaptively changed for each patch, which is expected to improve coding performance. Information about the divided patches is received as control information, patch_id.
[0202] The subdivision section 203 will be described below with reference to Fig. 21. Fig. 22 is a diagram showing an example of functional blocks of the subdivision section 203.
[0203] As shown in FIG. 22, the subdivision unit 203 has a basic mesh subdivision unit 203A and a subdivision mesh adjustment unit 203B.
[0204] (Basic mesh refinement section 203A) The basic mesh subdivision unit 203A is configured to calculate the number of divisions (number of subdivisions) for each basic surface and basic patch based on the input basic mesh and division information of the basic mesh, subdivide the basic mesh based on this number of divisions, and output the subdivision surface.
[0205] That is, the basic mesh subdivision unit 203A may be configured so that the number of divisions can be changed for each basic surface and each basic patch.
[0206] Here, a basic face is a face that constitutes a basic mesh, and a basic patch is a set of several basic faces.
[0207] In addition, the basic mesh subdivision unit 203A may be configured to predict the number of fine subdivisions of the basic surface and calculate the number of subdivisions of the basic surface by adding the predicted subdivision number residual to the predicted number of subdivisions of the basic surface.
[0208] The basic mesh subdivision unit 203A may also be configured to calculate the number of subdivisions of a basic surface based on the number of subdivisions of adjacent basic surfaces of the basic surface.
[0209] The basic mesh subdivision unit 203A may also be configured to calculate the number of subdivisions of a basic surface based on the number of subdivisions of the basic surface that was previously accumulated.
[0210] The basic mesh subdivision unit 203A may also be configured to generate vertices that divide the three sides that make up the basic surface, and to connect the generated vertices to subdivide the basic surface.
[0211] As shown in FIG. 22, a basic mesh subdivision unit 203A is followed by a subdivision mesh adjustment unit 203B, which will be described later.
[0212] An example of the processing of the basic mesh subdivision unit 203A will be described below with reference to FIGS.
[0213] FIG. 22 is a diagram showing an example of functional blocks of the basic mesh subdivision unit 203A, and FIG. 24 is a flowchart showing an example of the operation of the basic mesh subdivision unit 203A.
[0214] As shown in FIG. 22, the basic mesh subdivision unit 203A has a basic surface division number buffer unit 203A1, a basic surface division number reference unit 203A2, a basic surface division number prediction unit 203A3, an addition unit 203A4, and a basic surface division unit 203A5.
[0215] The basic surface division number buffer unit 203A1 stores division information of basic surfaces including the division number of the basic surface, and is configured to output the division information of the basic surface to the basic surface division number reference unit 203A2.
[0216] Here, the size of the basic surface division number buffer unit 203A1 may be set to 1, and the unit may be configured to output the division number of the basic surface that was stored immediately before to the basic surface division number reference unit 203A2.
[0217] That is, by setting the size of the basic surface division number buffer unit 203A1 to 1, it may be configured to refer to only the fine division number decoded last (the subdivision number decoded immediately before).
[0218] The basic surface division number reference unit 203A2 is configured to output a reference not possible to the basic surface division number prediction unit 203A3 when there is no adjacent basic surface to the basic surface to be decoded, or when there is an adjacent basic surface to the basic surface to be decoded but the division number has not been determined.
[0219] On the other hand, if there is a basic surface adjacent to the basic surface to be decoded and the number of divisions has been determined, the basic surface division number reference unit 203A2 is configured to output the number of divisions to the basic surface division number prediction unit 203A3.
[0220] The basic surface division number prediction unit 203A3 is configured to predict the division number (number of subdivisions) of the basic surface based on one or more input division numbers, and output the predicted division number (predicted division number) to the addition unit 203A4.
[0221] Here, the basic surface division number prediction unit 203A3 is configured to output 0 to the addition unit 203A4 when only reference impossible is input from the basic surface division number reference unit 203A2.
[0222] In addition, when one or more division numbers are input, the basic surface division number prediction unit 203A3 may be configured to generate a predicted division number using any of the statistical values such as the average value, maximum value, minimum value, or mode of the input division numbers.
[0223] The basic surface division number prediction unit 203A3 may be configured to generate the division number of the most adjacent surface as the predicted division number when one or more division numbers are input.
[0224] The addition unit 203A4 is configured to output the division number obtained by adding the prediction division number residual decoded from the prediction residual bitstream and the prediction division number obtained from the basic plane division number prediction unit 203A3 to the basic plane division unit 203A5.
[0225] The basic surface dividing unit 203A5 is configured to subdivide the basic surface based on the division number input from the addition unit 203A4.
[0226] Fig. 23 shows an example of a case where a basic surface is divided into 9. The division method of the basic surface by the basic surface dividing section 203A5 will be described with reference to Fig. 23.
[0227] The fundamental plane dividing unit 203A5 generates points A_1, …, A_(N-1) that divide the side AB forming the fundamental plane into N equal parts (N = 3).
[0228] Similarly, the fundamental plane dividing unit 203A5 also divides the sides BC and CA into N equal parts, generating points B_1, …, B_(N-1) and C_1, …, C_(N-1) respectively.
[0229] Hereafter, the points on the sides AB, BC, and CA are referred to as "side division points".
[0230] For all i (i = 1, 2, …, N-1), the fundamental plane dividing unit 203A5 generates the sides A_i B_(N-i), B_i C_(N-i), and C_i A_(N-i), generating N 2 sub - divided planes. This division method is hereafter referred to as the N 2 division method. The N 2 division method is equivalent to the Mid - edge division method when N = 2. Next, referring to FIG. 24, the processing procedure of the basic mesh subdivision unit 203A will be described.
[0231] In step S2201, it is determined whether the re - division process for the last fundamental plane has been completed. If the process is completed, the process ends; otherwise, it proceeds to step S2202.
[0232] In step S2202, the basic mesh subdivision unit 203A determines whether Depth < mdu_max_depth.
[0233] Here, Depth is a variable representing the current depth, with an initial value of 0, and mdu_max_depth represents the maximum depth determined for each fundamental plane.
[0234] If the condition in step S2202 is satisfied, this processing procedure proceeds to step S2203; if the condition is not satisfied, this processing procedure returns to step S2201.
[0235] In step S2203, the basic mesh subdivision unit 203A determines whether mdu_subdivision_flag is 1 at the current depth.
[0236] If yes, the procedure returns to step S2201; if no, the procedure proceeds to step S2204.
[0237] In step S2204, the basic mesh subdivision unit 203A further subdivides all subdivision surfaces within the basic surface.
[0238] Here, if the subdivision process has never been performed on the basic surface, the basic mesh subdivision unit 203A subdivides the basic surface.
[0239] The subdivision method is the same as that explained in step S2204.
[0240] Specifically, if the basic surface has never been subdivided, the basic surface is subdivided as shown in Figure 23. If the basic surface has been subdivided at least once, the subdivision surface is 2 In the example of Figure 23, the face consisting of vertices A_2, B, and B_1 is divided into N 2 Using the division method, N 2 Generate faces.
[0241] When the subdivision process is completed, the process proceeds to step S2205.
[0242] In step S2205, the basic mesh subdivision unit 203A adds 1 to Depth, and the processing procedure returns to step S2202.
[0243] The basic mesh subdivision unit 203A may also perform subdivision processing so that all basic surfaces are subdivided by the same upper limit number of subdivisions mdu_max_depth. At this time, the subdivision processing per time is performed based on the number of subdivisions mdu_subdivision_num, and is set to N 2The subdivision may be performed using a subdivision method (subdivision mesh adjustment unit 203B). Next, a specific example of the processing performed by the finely divided mesh adjustment unit 203B will be described. An example of the processing performed by the finely divided mesh adjustment unit 203B will be described below with reference to FIGS.
[0244] FIG. 25 is a diagram showing an example of functional blocks of the finely divided mesh adjustment unit 203B.
[0245] As shown in FIG. 25, the subdivision mesh adjustment unit 203B has an edge division point moving unit 701 and a subdivision surface division unit 702.
[0246] (Edge division point moving unit 701) The edge division point moving unit 701 is configured to move an edge division point of a basic face to any of the edge division points of an adjacent basic face for an input initial subdivision face, and output a subdivision face.
[0247] Fig. 26 shows an example in which an edge division point on a basic face ABC is moved. For example, as shown in Fig. 26, the edge division point moving unit 701 may be configured to move an edge division point of the basic face ABC to an edge division point of the nearest adjacent basic face.
[0248] (Subdivision surface division part 702) The subdivision surface division unit 702 is configured to again subdivide the input subdivision surface and output a decoded subdivision surface.
[0249] FIG. 27 is a diagram showing an example of a case where subdivision is performed again on a subdivision surface X within a basic surface.
[0250] As shown in FIG. 27, the subdivision surface division unit 702 may be configured to generate a new subdivision surface within a basic surface by connecting the vertices that make up the subdivision surface with the edge division points of an adjacent basic surface.
[0251] FIG. 28 is a diagram showing an example of a case where the above-described subdivision processing is performed on all subdivision surfaces.
[0252] The mesh decoding unit 204 is configured to generate and output a decoded mesh using the subdivision mesh generated by the subdivision unit 203 and the displacement amount decoded by the displacement amount decoding unit 206 .
[0253] Specifically, the mesh decoding unit 204 is configured to generate a decoded mesh by adding a corresponding displacement amount to each subdivision vertex, where information about which subdivision vertex each displacement amount corresponds to is indicated by control information.
[0254] The patch integration unit 205 is configured to integrate the decoded mesh generated by the mesh decoding unit 206 by the number of patches and output the integrated mesh.
[0255] Here, the patch division method is defined by the mesh encoding device 100. For example, the patch division method may be configured to calculate a normal vector for each basic face, select the basic face with the most similar normal vector among adjacent basic faces, combine both basic faces into the same patch, and then repeat this procedure for the next basic face in sequence.
[0256] The video decoding unit 207 is configured to decode and output the texture by video encoding. For example, the video decoding unit 207 may use HEVC in Non-Patent Document 1.
[0257] <Displacement Amount Decoding Unit 206> The displacement decoding unit 206 is configured to decode the displacement bitstream to generate and output a displacement.
[0258] In the example of FIG. 3B, there are eight subdivision vertices, and therefore the displacement decoding unit 206 is configured to define eight displacements, each expressed as a scalar or vector, for each subdivision vertex.
[0259] The displacement amount decoding unit 206 will be described below with reference to Fig. 29. Fig. 29 is a diagram showing an example of functional blocks of the displacement amount decoding unit 206. As shown in FIG. 29, the displacement amount decoding unit 206 includes a control information decoding unit 206A, an arithmetic decoding unit 206B, a context value updating unit 206C, a context buffer...206D, a context selecting unit 206E, a multi-value conversion unit 206F, a coefficient level value decoding unit F2, an inter prediction unit 206G, a frame buffer 206H, an adder 206I, an inverse quantization unit 206J, and a displacement amount prediction addition unit 206K.
[0260] An example of the configuration of a displacement amount bit stream will be described below with reference to Fig. 30. Fig. 30 is a diagram showing an example of the configuration of a displacement amount bit stream.
[0261] As shown in FIG. 30, first, the displacement bitstream may include a DPS (Displacement Parameter Set) which is a set of control information related to decoding of the displacements.
[0262] Second, the displacement bitstream may include a DPH (Displacement Patch Header), which is a collection of control information corresponding to a patch.
[0263] Third, the displacement bitstream may contain, next to the DPH, the coded displacements that make up the patch.
[0264] As described above, the displacement bitstream has a configuration in which each coded displacement corresponds to one DPH and one DPS.
[0265] Note that the configuration in Fig. 30 is merely an example. As long as the DPH and DPS correspond to each coded displacement, elements other than those described above may be added as components of the displacement bitstream.
[0266] For example, as shown in FIG. 30, the displacement bitstream may include an SPS (Sequence Parameter Set).
[0267] FIG. 31 is a diagram illustrating an example of a syntax configuration of a DPS.
[0268] In FIG. 31, the Descriptor column indicates how each syntax is coded.
[0269] In addition, in FIG. 31, ue(v) means an unsigned zeroth-order exponential-Golomb code, and u(n) means an n-bit flag.
[0270] When there are multiple DPSs, the DPS includes at least DPS id information (dps_displacement_parameter_set_id) for identifying each DPS.
[0271] Furthermore, the DPS may include a flag (interprediction_enabled_flag) that controls whether or not inter prediction is performed.
[0272] For example, it may be defined that inter prediction is not performed when interprediction_enabled_flag is 0, and that inter prediction is performed when interprediction_enabled_flag is 1. It may be defined that inter prediction is not performed when interprediction_enabled_flag is not included.
[0273] The DPS may also include a flag (wavelet_transform_flag) that controls whether or not to perform wavelet transform.
[0274] For example, it may be defined that no wavelet transform is performed when wavelet_transform_flag is 0, and that wavelet transform is performed when wavelet_transform_flag is 1. It may also be defined that wavelet transform is performed when wavelet_transform_flag is not included.
[0275] Furthermore, the DPS may include a flag (displacement_prediction_addition_flag) that controls whether or not displacement prediction addition is performed.
[0276] For example, it may be defined that no displacement prediction addition is performed when displacement_prediction_addition_flag is 0, and that displacement prediction addition is performed when displacement_prediction_addition_flag is 1. It may also be defined that no displacement prediction addition is performed when displacement_prediction_addition_flag is not included.
[0277] The DPS may include a flag (dct_enabled_flag) that controls whether or not to perform the inverse DCT.
[0278] For example, it may be defined that the inverse DCT is not performed when dct_enabled_flag is 0, and that the inverse DCT is performed when dct_enabled_flag is 1. It may also be defined that the inverse DCT is not performed when dct_enabled_flag is not included.
[0279] The syntax configuration will be described below with reference to FIGS.
[0280] First, during encoding, the coefficient level values of the displacement amount are represented in each frame by a matrix of size 3xN. 3 indicates the dimension in the spatial domain, and N indicates the total number of subdivision vertices. This matrix is divided into blocks, and encoded in units of blocks.
[0281] The block size may be 3×n size (n < N) or 1×n size. Alternatively, as the block size, 1×n size and 2×n size may be used in combination. For matrix elements less than the block size, blocks are formed with the maximum d×m size (d = 1, 2, 3, m < n).
[0282] FIG. 32 is a diagram showing an example of the syntax structure. The syntax includes those defined in matrix units and those defined in block units.
[0283] First, the syntax defined in matrix units will be described.
[0284] lastt_sig_coeff_prefix represents the prefix of the coordinate position of the first non-zero coefficient in the scan order. lastt_sig_coeff_suffix represents the suffix of the coordinate position of the first non-zero coefficient in the scan order.
[0285] For example, the prefix is represented by truncated Rice binarization, and the suffix is represented in fixed length. FIG. 33 is a diagram showing the prefix code sequence and the suffix code sequence when the maximum value is 32.
[0286] Second, the syntax defined in block units will be described.
[0287] coded_block_flag is a flag indicating that there are non-zero coefficients in the block. Such a flag is defined only once for each block.
[0288] last_sig_coeff_block_prefix represents the prefix of the coordinate position of the first non-zero coefficient in the scan order within the block. last_sig_coeff_block_suffix represents the suffix of the coordinate position of the first non-zero coefficient in the scan order within the block. sig_coeff_flag is a flag indicating whether it is a non-zero coefficient.
[0289] coeff_abs_level_greater1_flag is a flag indicating whether the absolute value of a coefficient (non-zero coefficient) is equal to or greater than 2. An upper limit, such as 8, may be set for the total number of coefficients indicated by such a flag.
[0290] coeff_abs_level_greater2_flag is a flag indicating whether the absolute value of the leading coefficient (non-zero coefficient) in scan order whose absolute value is 2 or greater is 3 or greater. coeff_sign_flag is a flag indicating the positive or negative sign of the coefficient.
[0291] coeff_abs_level_remaining represents the absolute value of the coefficient minus the value represented by the flag above. coeff_abs_level_remaining is represented by, for example, k-th order exponential Golomb coding.
[0292] FIG. 34 is a diagram showing prefix code strings and suffix code strings formed by kth order exponential-Golomb coding.
[0293] 35 and 36 are diagrams showing specific examples of syntax configurations. As shown in Fig. 35, coefficient level values are decoded from each syntax, and then, as shown in Fig. 36, the decoded coefficient level values are rearranged.
[0294] FIG. 37 is a diagram illustrating an example of a syntax configuration of the DPH.
[0295] As shown in FIG. 37, a DPH includes at least DPS id information for specifying a DPS corresponding to each DPH.
[0296] The control information decoder 206A is configured to output control information by performing variable length decoding on the received displacement amount bit stream.
[0297] (Arithmetic decoding unit 206B) The arithmetic decoding unit 206B is configured to perform arithmetic decoding on the received displacement bit stream to output binarized coefficient level values, as will be described in detail later.
[0298] The arithmetic decoding unit 206B processes binary values. The arithmetic decoding unit 206B defines a number line from 0 to 1 and divides the interval for use. The interval is divided by the occurrence probability of the binary values (hereinafter referred to as a context value).
[0299] A binary decimal is input to the arithmetic decoding unit 206B, and the arithmetic decoding unit 206B decodes the original value depending on which section on the number line the binary decimal falls within.
[0300] Here, the context value may be fixed or may be changed for each bit of the input signal. When the context value is changed for each bit, the arithmetic decoding unit 206B receives the context value from the context selection unit 206E.
[0301] (Context value update unit 206C) The context value update unit 206C is configured to update the context value using the binarization coefficient level value and output it to the frame buffer 206D.
[0302] The context value update unit 206C updates the context value every time one bit is decoded.
[0303] Here, the context value update unit 206C sets the symbol with a high occurrence probability between 0 and 1 as the most probable symbol (MPS), and sets the symbol with a low occurrence probability as the least probable symbol (LPS).
[0304] The context value update unit 206C may use a probability update table that updates the probability value slightly when an MPS occurs and updates the probability value significantly when an LPS occurs.
[0305] (Context selection unit 206E) The context selection unit 206E is configured to generate and output a context value (output context value) using the context value, bit position, and syntax read from the context buffer 206D, as will be described in detail later.
[0306] last_sig_coeff_prefix: The context selection unit 206E may create a context number table according to the matrix size and bit position, as shown in FIG.
[0307] last_sig_coeff_block_prefix: The context selection unit 206E may create a context number table according to the block size and bit position, as shown in FIG.
[0308] coded_block_flag: The context selection unit 206E may set the context number to 0 if coded_block_flag=0 for the decoded right adjacent block as shown in FIG.
[0309] sig_coeff_flag: The context selection unit 206E corrects a certain reference value based on the position of the coefficient and coded_block_flag of the decoded right-adjacent block, and sets the corrected value as the context number. For example, the context selection unit 206E sets the reference value to 0 for the leftmost block and 3 for the other blocks. When correcting the context number, the context selection unit 206E may use tables such as those shown in FIGS. 40-1 and 40-3 if coded_block_flag=0 for the decoded right-adjacent block, or may use a table such as that shown in FIG. 40-2 if coded_block_flag=1.
[0310] coeff_abs_level_greater1_flag, coeff_abs_level_greater2_flag: The context selection unit 206E may set the context number to 0 if there is a coefficient whose absolute value (level value) is 2 or more in the decoded right adjacent block, and may set the context number to 1 otherwise.
[0311] The context buffer 206D is configured to output these in response to control information (not shown).
[0312] The multi-value conversion unit 206F is configured to convert the binarized coefficient level values into multi-values to generate and output coefficient level values. The generated (calculated) coefficient level values are also output to the context buffer 206D as bit positions and syntax.
[0313] The inter prediction unit G is configured to generate and output a predicted displacement amount using a reference frame read from the frame buffer 206D.
[0314] The frame buffer H is configured to acquire and store the decoded displacement amount, and to output the decoded displacement amount at the corresponding vertex in the reference frame in accordance with control information (not shown).
[0315] (Operation of the coefficient level value decoding unit 206F2) An example of the operation of the coefficient level value decoding unit 206F2 will be described below with reference to FIG.
[0316] As shown in Fig. 41, in step S101, the coefficient level value decoding unit 206F2 decodes all coefficients after the positions indicated by last_sig_coeff_prefix and last_sig_coeff_suffix as 0. The subsequent processing is performed in units of blocks.
[0317] In step S102, the coefficient level value decoding unit 206F2 performs decoding on coded_block_flag.
[0318] In step S103, the coefficient level value decoding unit 206F2 determines whether coded_block_flag is 0 or 1.
[0319] If coded_block_flag=0, the coefficient level value decoding unit 206F2 decodes all coefficients in the block currently being processed as 0, and the operation proceeds to step S116; if coded_block_flag=1, the operation proceeds to step S104.
[0320] In step S104, the coefficient level value decoding unit 206F2 decodes all coefficients after the position indicated by last_sig_coeff_block_prefix and last_sig_coeff_block_suffix in the block currently being processed as zero.
[0321] In step S105, the coefficient level value decoding unit 206F2 performs decoding on sig_coeff_flag.
[0322] In step S106, the coefficient level value decoding unit 206F2 determines whether sig_coeff_flag is 0 or 1.
[0323] If sig_coeff_flag=0, the operation proceeds to step S116, and if sig_coeff_flag=1, the operation proceeds to step S107.
[0324] In step S107, the coefficient level value decoding unit 206F2 performs decoding on coeff_abs_level_greater1_flag.
[0325] In step S108, the coefficient level value decoding unit 206F2 determines whether coeff_abs_level_greater1_flag is 0 or 1.
[0326] If coeff_abs_level_greater1_flag=0, the operation proceeds to step S113, and if coeff_abs_level_greater1_flag=1, the operation proceeds to step S109.
[0327] In step S109, the coefficient level value decoding unit 206F2 performs decoding on coeff_abs_level_greater2_flag.
[0328] In step S110, the coefficient level value decoding unit 206F2 determines whether coeff_abs_level_greater2_flag is 0 or 1.
[0329] If coeff_abs_level_greater2_flag=0, the operation proceeds to step S113, and if coeff_abs_level_greater1_flag=1, the operation proceeds to step S112.
[0330] In step S112, the coefficient level value decoding unit 206F2 performs decoding on coeff_abs_level_remaining. Here, when decoding coeff_abs_level_remaining, the coefficient level value decoding unit 206F2 performs exponential-Golomb decoding and then adds 3 to the result, as the decoded coefficient level value.
[0331] In step S113, the coefficient level value decoding unit 206F2 performs decoding on coeff_sign_flag.
[0332] In step S114, the coefficient level value decoding unit 206F2 determines whether coeff_sign_flag is 0 or 1.
[0333] If coeff_sign_flag=0, the operation proceeds to step S116, and if coeff_sign_flag=1, the operation proceeds to step S115.
[0334] In step S115, the coefficient level value decoding unit 206F2 converts the decoded coefficient into a negative value.
[0335] In step S116, the coefficient level value decoding unit 206F2 determines whether the block currently being processed is the final block.
[0336] If Yes, this operation ends, and if No, this operation proceeds to step S111.
[0337] In step S111, the coefficient level value decoding unit 206F2 proceeds to processing the next block, and the operation returns to step S102.
[0338] Next, an example of the operations of the arithmetic decoding unit 206B, the context selecting unit 206E, the context value updating unit 206C, and the multi-value conversion unit 206F will be described with reference to FIG.
[0339] Next, an example of the operations of the arithmetic decoding unit 206B, the context selecting unit 206E, the context value updating unit 206C, and the multi-value conversion unit 206F will be described with reference to FIG.
[0340] As shown in FIG. 42, the arithmetic decoding unit 206B is initialized in step S201, and sets an initial context value in step S202.
[0341] The arithmetic decoding unit 206B selects a context in step S203, and performs arithmetic decoding in step S204.
[0342] In step S205, the context value update unit 206C and the context selection unit 206E update the context values, and in step S206, the multilevel halftoning unit 206F performs multilevel halftoning.
[0343] In step S207, the multi-value conversion unit 206F determines whether all decoding has been completed. If yes, the operation proceeds to step S208, and if no, the operation returns to step S203.
[0344] In step S208, the multi-value conversion section 206F saves the context values.
[0345] (Inter prediction unit 206G) The inter prediction unit 206G is configured to perform inter prediction using the decoding displacement amount of the reference frame read from the frame buffer 206H, thereby generating and outputting an inter prediction residual and an inter prediction displacement amount.
[0346] The inter prediction unit 206G is configured to perform such inter prediction only when interprediction_enabled_flag is one.
[0347] The inter prediction unit 206G may perform inter prediction in the spatial domain or in the frequency domain. The inter prediction may be bidirectional prediction using a past reference frame and a future reference frame.
[0348] When performing inter prediction in the spatial domain, the inter prediction unit 206G may determine the predicted displacement amount of a subdivision vertex in the target frame by directly referring to the decoded displacement amount of the corresponding subdivision vertex in the reference frame.
[0349] Alternatively, the predicted displacement of a certain subdivision vertex in the target frame may be determined probabilistically according to a normal distribution with estimated mean and variance using decoded displacements of corresponding subdivision vertices in multiple reference frames. In this case, the variance may be set to zero and the predicted displacement may be uniquely determined using only the mean.
[0350] Alternatively, the predicted displacement of a subdivision vertex in the target frame may be determined based on a regression curve estimated using the decoded displacement of corresponding subdivision vertices in multiple reference frames, with time as the explanatory variable and displacement as the target variable.
[0351] In the mesh coding device 100, the order of the decoded displacement amounts may be rearranged for each frame in order to improve coding efficiency.
[0352] In such a case, the inter prediction unit 206G may be configured to perform inter prediction on the reordered decoding displacement amounts.
[0353] The correspondence between the subdivision vertices of the reference frame and the frame to be decoded is indicated by control information.
[0354] FIG. 43 is a diagram illustrating an example of a correspondence relationship between subdivision vertices between a reference frame and a current frame for decoding when inter prediction is performed in the spatial domain.
[0355] The adder 206I is configured to obtain the inter prediction residual and the inter prediction displacement from the inter prediction unit 206G. The adder 206I is configured to add them to generate and output a quantized intra prediction residual. The generated (calculated) quantized intra prediction residual is also output to the frame buffer 206H.
[0356] The inverse quantization unit 206J is configured to perform inverse quantization on the quantized intra prediction residual obtained from the addition unit 206I, and output the intra prediction residual.
[0357] (Displacement amount prediction addition unit 206K) The displacement amount prediction addition unit 206K is configured to intra-predict the displacement amount of the subdivision vertices based on the basic mesh output from the basic mesh decoding unit 202, calculate an intra-prediction value, and decode the displacement amount by adding the calculated intra-prediction value and the intra-prediction residual output from the inverse quantization unit 206J.
[0358] FIG. 44 is a flowchart showing an example of the operation of the displacement amount prediction adder 206K.
[0359] As shown in FIG. 44, in step S1, the displacement amount prediction adder 206K sets the current number of subdivisions it to 1.
[0360] In step S2, the displacement amount prediction addition unit 206K determines whether the current number of subdivisions it is less than the upper limit number of subdivisions mdu_max_depth.
[0361] If yes, the operation proceeds to step S3, and if no, the operation ends.
[0362] In step S3, the displacement amount prediction adder 206K determines whether division has been completed for all sides.
[0363] If yes, the operation proceeds to step S8, and if no, the operation proceeds to step S4.
[0364] In step S4, the displacement amount prediction adder 206K selects an undivided edge, and the process proceeds to step S5.
[0365] In step S5, the displacement amount prediction addition unit 206K divides the selected edge based on the subdivision number mdu_subdivision_num, and generates subdivision vertices.
[0366] In step S6, the displacement amount prediction adding unit 206K predicts the displacement amount of the subdivision vertex from the displacement amounts of the vertices on both ends, and the process proceeds to step S7.
[0367] A method for predicting the displacement of subdivision vertices will be described below.
[0368] 45 and 46 are diagrams that schematically show an example of dividing a line segment AB by the Mid-edge division method to generate a subdivision vertex C, and an example of calculating the displacement of the subdivision vertex C, respectively.
[0369] A method for predicting the amount of displacement will be described with reference to FIGS.
[0370] First, calculate the normal vector of the vertex P(t=x) between the endpoint A(t=0) and the endpoint B(t=1). Here, the normal vectors of the endpoints A and B are respectively (a x ,a y ), (b x ,b y ) and calculate the normal vector of vertex P by linear interpolation. At this time, the normal vector of vertex P is ((1-t)a x +tb x ,(1-t)a y +tb y ) In this case, the normal vector may be calculated using other interpolation methods such as spherical linear interpolation.
[0371] When endpoints A and B are vertices on the base mesh, the normal vectors of endpoints A and B are calculated as the average value of the normals of the base faces adjacent to each vertex. If subdivision is not performed, the normal vectors of the base faces do not need to be calculated.
[0372] Second, the gradient perpendicular to the calculated normal vector is calculated, and the displacement amount of the subdivision vertex C is predicted by integrating it over the section from the end point A to the subdivision vertex C. That is, the displacement amount when predicting the displacement amount of the subdivision vertex C can be calculated using the following formula.
[0373]
number
[0374] Fig. 47 shows an example of using cubic interpolation to predict the displacement of subdivision vertex D. As shown in Fig. 47, a cubic curve may be calculated from four vertices around subdivision vertex D, and the displacement of subdivision vertex D may be predicted as a vector connecting a point on the curve and subdivision vertex D.
[0375] Alternatively, the displacement of the subdivision vertices may be predicted using statistical values such as the average value, most frequent value, maximum value, and minimum value of the displacement of the vertices on the base surface or the subdivision vertices that have already been decoded.
[0376] FIG. 48 shows an example in which side KB, side BJ, side JK, side BF, and side FA are each divided by the Mid-edge division method, and then side AB is divided to generate subdivision vertex C.
[0377] For example, when predicting the displacement of subdivision vertex C, the displacement at the point with the smallest distance may be used as the predicted value, or the average value of the displacements of surrounding vertices such as subdivision vertices A, B, D, E, G, and I may be used as the predicted value of the displacement, or the weighted average value of the displacements of surrounding vertices may be used as the predicted value of the displacement.
[0378] In step S7, the displacement prediction adder 206K adds the predicted value and the displacement error to decode the displacement, and then the process proceeds to step S3.
[0379] In step S8, the displacement amount prediction addition unit 206K adds 1 to the current number of subdivisions it, and the process proceeds to step S2.
[0380] <Variation 1> Hereinafter, with reference to FIG. 49, Modification 1 of the first embodiment will be described, focusing on the differences from the first embodiment.
[0381] FIG. 49 is a diagram showing an example of functional blocks of the displacement amount decoding unit 206 according to the first modification.
[0382] As shown in FIG. 49, the displacement decoding unit 206 according to the present first modification includes an inverse quantization wavelet transform unit 206L instead of the inverse quantization unit 206J.
[0383] That is, in the present first modification, the inverse quantization wavelet transform unit 206L is configured to perform inverse quantization wavelet transform on the quantized intra prediction residual output from the adder 206I, and generate an intra prediction residual.
[0384] The mesh encoding device 100 and the mesh decoding device 200 described above may be realized as a program that causes a computer to execute each function (each step). [Industrial Applicability]
[0385] According to this embodiment, for example, it is possible to improve the overall service quality in video communication, which will contribute to the achievement of Goal 9 of the United Nations-led Sustainable Development Goals (SDGs), which is to "Develop resilient infrastructure, promote sustainable industrialization and foster innovation." [Explanation of symbols]
[0386] 1. Mesh processing system 100...Mesh coding device 200...Mesh decoding device 201…Demultiplexer 202...Basic mesh decoding unit 202A…Separation part 202B... Intra decoding unit 202B1...Optional intra decoding unit 202B2...Alignment section 202C...Mesh buffer section 202D...Connection information decoding unit 202E...Inter-decoding unit 202E1...Motion vector decoding unit 202E2...Motion vector buffer unit 202E3...Motion vector prediction unit 202E4...Motion vector calculation unit 202E5...adder 202E6...Duplicate vertex search unit 202E7...Duplicate vertex discrimination unit 202E8...Motion vector acquisition unit 202E9…All skip mode determination section 202E10…Skip mode determination unit 203…Subdivision part 203A...Basic mesh refinement section 203A1...Basic face division number buffer section 203A2…Basic surface division number reference section 203A3...Basic surface division number prediction unit 203A4...Addition section 203A5…Basic surface division part 203B…Fine division mesh adjustment section 701...Edge division point moving part 702…Subdivision surface division part 204...Mesh decoding unit 205…Patch Integration Department 206...Displacement amount decoding unit 206A...Control information decoding unit 206B...Arithmetic decoding unit 206C...Context value update unit 206D...Context buffer 206E…Context selection section 206F...Multi-level conversion section 206F2...coefficient level value decoding unit 206G…Inter prediction section 206H...Frame buffer 206I...adder 206J…Inverse quantization section 206K…Displacement prediction addition section 206L…Inverse quantization wavelet transform section 207...Video decoding unit
Claims
1. A mesh decoding device, comprising: a subdivision unit configured to subdivide a basic mesh defined in three dimensions to generate and output a subdivision mesh; a displacement amount decoding unit configured to intra-predict a displacement amount defined for each vertex of the subdivision mesh to calculate an intra-prediction value, and to decode the displacement amount by adding the calculated intra-prediction value and a dequantized intra-prediction residual; a mesh decoding unit configured to generate and output a decoded mesh using the subdivision mesh generated by the subdivision unit and the displacement amount decoded by the displacement amount decoding unit.
2. A subdivision unit configured to subdivide a basic mesh defined in three dimensions to generate a subdivision mesh; a displacement decoder configured to decode the displacement bitstream to generate a displacement; a displacement amount decoding unit configured to decode the displacement amount based on normal vectors of points at both ends of sides that constitute the subdivision mesh; a mesh decoding unit configured to generate a decoded mesh.
3. The mesh decoding device described in Claim 1, characterized in that the displacement amount decoding unit is provided with a displacement amount prediction addition unit configured to decode the displacement amount based on the displacement amount of the decoded subdivision vertex.
4. 1. A mesh decoding method, comprising: a step A of subdividing a basic mesh to generate and output a subdivision mesh; a step B of calculating an intra-predicted value by intra-predicting the displacement amount defined for each vertex of the subdivision mesh output in the step A, and decoding the displacement amount by adding the calculated intra-predicted value and a dequantized intra-prediction residual; and a step C of generating and outputting a decoded mesh using the subdivision mesh output in the step A and the displacement amount output in the step B.
5. A step A of generating a subdivision mesh by subdividing a basic mesh defined in three dimensions; a step B of decoding the displacement bitstream to generate a displacement; a step C of decoding the displacement amount based on normal vectors of points at both ends of sides that constitute the subdivision mesh; A mesh decoding method comprising a step D of generating a decoded mesh.
6. A program that causes a computer to function as a mesh decoding device, The mesh decoding device comprises: a subdivision unit configured to subdivide a basic mesh defined in three dimensions to generate and output a subdivision mesh; a displacement amount decoding unit configured to intra-predict a displacement amount defined for each vertex of the subdivision mesh to calculate an intra-prediction value, and to decode the displacement amount by adding the calculated intra-prediction value and a dequantized intra-prediction residual; a mesh decoding unit configured to generate and output a decoded mesh using the subdivision mesh generated by the subdivision unit and the displacement amount decoded by the displacement amount decoding unit.
7. A program that causes a computer to function as a mesh decoding device, comprising: The mesh decoding device comprises: a subdivision unit configured to subdivide a base mesh defined in three dimensions to generate a subdivision mesh; a displacement decoder configured to decode the displacement bitstream to generate a displacement; a displacement amount decoding unit configured to decode the displacement amount based on normal vectors of points at both ends of sides that constitute the subdivision mesh; a mesh decoding unit configured to generate a decoded mesh.
Citation Information
Patent Citations
Data processing unit and method, moving image coder and method and moving image decoder and method
JP1998191391A
Method and apparatus for image encoding and decoding, and related applications
JP2004520744A
Polygon unit-based image processing method, and device for same
US20180041768A1
Texture coordinate compression using texture atlas
US20200098137A1