WO2024014196A1 - メッシュ復号装置、メッシュ符号化装置、メッシュ復号方法及びプログラム - Google Patents
メッシュ復号装置、メッシュ符号化装置、メッシュ復号方法及びプログラム Download PDFInfo
- Publication number
- WO2024014196A1 WO2024014196A1 PCT/JP2023/021270 JP2023021270W WO2024014196A1 WO 2024014196 A1 WO2024014196 A1 WO 2024014196A1 JP 2023021270 W JP2023021270 W JP 2023021270W WO 2024014196 A1 WO2024014196 A1 WO 2024014196A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- mesh
- unit
- decoding
- basic
- vertices
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Ceased
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T9/00—Image coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/537—Motion estimation other than block-based
- H04N19/54—Motion estimation other than block-based using feature points or meshes
Definitions
- the present invention relates to a mesh decoding device, a mesh encoding device, a mesh decoding method, and a program.
- Non-Patent Document 1 discloses a technique for encoding a mesh using Non-Patent Document 2.
- the present invention has been made in view of the above-mentioned problems, and provides a mesh decoding device, a mesh encoding device, a mesh decoding method, and a program that can select an appropriate basic mesh decoding method depending on the usage. The purpose is to provide.
- a first feature of the present invention is a mesh decoding device, comprising a basic mesh decoding unit configured to decode a basic mesh bitstream and output a basic mesh, the basic mesh decoding unit a demultiplexer that outputs an I-frame stream by demultiplexing the elementary mesh bitstream; an intra-decoder configured to generate unordered vertices of the elementary mesh by decoding the I-frame stream;
- the present invention further comprises: an arrangement unit configured to output vertices by rearranging unordered vertices into a predetermined order.
- a second feature of the present invention is a mesh decoding method comprising: separating an I-frame stream from a base mesh bitstream; generating unordered vertices of a base mesh from said I-frame stream; and said unordered vertices of a base mesh.
- the gist of the present invention is to include an arrangement step of outputting vertices rearranged in a predetermined order starting from the vertices.
- a third feature of the present invention is a program that causes a computer to function as a mesh decoding device, wherein the mesh decoding device is configured to decode a basic mesh bitstream and output a basic mesh.
- the basic mesh decoding unit includes a demultiplexing unit that outputs an I-frame stream by demultiplexing the basic mesh bitstream, and a decoding unit that generates unordered vertices of the basic mesh by decoding the I-frame stream.
- the gist of the present invention is to include an intra decoding unit configured to perform the above operations, and an alignment unit configured to output vertices by rearranging the unordered vertices into a predetermined order.
- a mesh decoding device it is possible to provide a mesh decoding device, a mesh encoding device, a mesh decoding method, and a program that can select an appropriate basic mesh decoding method depending on the intended use.
- FIG. 1 is a diagram showing an example of the configuration of a mesh processing system 1 according to an embodiment.
- FIG. 2 is a diagram illustrating an example of functional blocks of the mesh decoding device 200 according to an embodiment.
- FIG. 3A is a diagram illustrating an example of a basic mesh and a subdivision mesh.
- FIG. 3B is a diagram illustrating an example of a basic mesh and a subdivision mesh.
- FIG. 4 is a diagram illustrating an example of the syntax structure of a basic mesh bitstream.
- FIG. 5 is a diagram showing an example of the syntax structure of BPH.
- FIG. 6 is a diagram illustrating an example of functional blocks of the basic mesh decoding unit 202 of the mesh decoding device 200 according to one embodiment.
- FIG. 7 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.
- FIG. 8 is a diagram illustrating 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.
- FIG. 9 is a diagram for explaining an example of a method for calculating 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 an embodiment. .
- FIG. 10 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.
- FIG. 11 is an example of an operation in which 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 calculates the sum Total_D of distances to surrounding decoded vertices. A flowchart showing this is shown.
- FIG. 11 is an example of an operation in which 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 calculates the sum Total_D of distances to surrounding decoded vertices. A flowchart showing this is shown.
- FIG. 11 is an example of an operation in which the motion vector prediction unit 202E3 of the inter decoding unit 202E of the basic mesh decoding unit
- FIG. 12 is a flowchart illustrating an example of an operation in which 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 calculates MVP using a weighted average.
- FIG. 13 is a flowchart showing an example of an operation in which 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 selects an MV from a set of candidate MVs as an MVP. be.
- FIG. 12 is a flowchart illustrating an example of an operation in which 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 calculates MVP using a weighted average.
- FIG. 13 is a flowchart showing an example of an operation in which the motion vector prediction unit 202E3 of the inter decoding unit 202E of the basic mesh
- FIG. 14 is a flowchart illustrating an example of an operation in which 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 creates a set of candidate MVs.
- FIG. 15 is a diagram for explaining an example of parallelogram prediction.
- FIG. 16 is a flowchart illustrating an example of an operation for returning the MVR accuracy to the original bit accuracy from the adaptive_mesh_flag, adaptive_bit_flag, which are control information generated by decoding the basic mesh bitstream, and the accuracy control parameter.
- FIG. 17 is intended to illustrate an example of MVR encoding.
- FIG. 18 is a diagram illustrating 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.
- FIG. 19 is a diagram illustrating an example of an operation for determining connection information and the order of vertices using Edgebreaker.
- FIG. 20 is a diagram illustrating an example of functional blocks of the subdivision unit 203 of the mesh decoding device 200 according to an embodiment.
- FIG. 21 is a diagram illustrating 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.
- FIG. 22 is a diagram for explaining an example of a basic plane division method by the basic plane division unit 203A5 of the basic mesh subdivision unit 203A of the subdivision unit 203 of the mesh decoding device 200 according to one embodiment.
- FIG. 23 is a flowchart illustrating 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.
- FIG. 24 is a diagram illustrating 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.
- FIG. 25 shows an example of a case in which the edge division point on the basic plane 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 an embodiment. It is a diagram.
- FIG. 26 shows that the subdivision plane X in the basic plane is subdivided again by the subdivision plane 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. It is a figure which shows an example of the case.
- FIG. 27 shows a case where all subdivision planes are subdivided again by the subdivision plane 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.
- FIG. 28 is a diagram illustrating an example of functional blocks of the displacement decoding unit 206 of the mesh decoding device 200 according to an embodiment (when inter prediction is performed in the spatial domain).
- FIG. 29 is a diagram illustrating an example of the configuration of a displacement amount bitstream.
- FIG. 30 is a diagram illustrating an example of the syntax configuration of DPS.
- FIG. 31 is a diagram illustrating an example of the syntax configuration of DPH.
- FIG. 32 is a diagram for explaining an example of the correspondence of subdivision vertices between a reference frame and a decoding target frame when inter prediction is performed in the spatial domain.
- FIG. 28 is a diagram illustrating an example of functional blocks of the displacement decoding unit 206 of the mesh decoding device 200 according to an embodiment (when inter prediction is performed in the spatial domain).
- FIG. 29 is a diagram illustrating an example of the configuration of a displacement amount bitstream.
- FIG. 30 is a diagram illustrating an example of the syntax configuration of DPS.
- FIG. 31 is a diagram
- FIG. 33 is a diagram illustrating an example of functional blocks of the displacement decoding unit 206 of the mesh decoding device 200 according to an embodiment (when inter prediction is performed in the frequency domain).
- FIG. 34 is a diagram for explaining an example of a frequency correspondence relationship between a reference frame and a decoding target frame when inter prediction is performed in the frequency domain.
- FIG. 35 is a flowchart illustrating an example of the operation of the displacement decoding unit 206 of the mesh decoding device 200 according to an embodiment.
- FIG. 36 is a diagram illustrating an example of functional blocks of the displacement decoding unit 206 according to Modification 1.
- FIG. 37 is a diagram illustrating an example of functional blocks of the displacement decoding section 206 according to the second modification.
- FIG. 38 is a diagram illustrating 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.
- FIG. 39 is a diagram illustrating 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.
- FIG. 1 is a diagram showing an example of the configuration of a mesh processing system 1 according to the present embodiment.
- the mesh processing system 1 includes a mesh encoding device 100 and a mesh decoding device 200.
- FIG. 2 is a diagram showing an example of functional blocks of the mesh decoding device 200 according to the present embodiment.
- the mesh decoding device 200 includes a demultiplexing section 201, a basic mesh decoding section 202, a subdivision section 203, a mesh decoding section 204, a patch integration section 205, and a displacement decoding section 206. , and a video decoding unit 207.
- the basic mesh decoding unit 202, subdivision unit 203, mesh decoding unit 204, and displacement amount decoding unit 206 are configured to perform processing in units of patches obtained by dividing the mesh, and then perform processing on the processing results. They may be configured to be integrated by the patch integration unit 205.
- the mesh is divided into patch 1 made up of basic planes 1 and 2 and patch 2 made up of basic planes 3 and 4.
- the demultiplexer 201 is configured to separate the multiplexed bitstream into a basic mesh bitstream, a displacement bitstream, and a texture bitstream.
- the basic mesh decoding unit 202 is configured to decode the basic mesh bitstream, generate and output a basic mesh.
- the basic mesh is composed of a plurality of vertices in a three-dimensional space and edges connecting the plurality of vertices.
- the basic mesh is constructed by combining basic surfaces expressed by three vertices.
- the basic mesh decoding unit 202 may be configured to decode the basic mesh bitstream using, for example, Draco described in Non-Patent Document 2.
- the basic mesh decoding unit 202 may be configured to generate "subdivision_method_id", which will be described later, as control information for controlling the type of subdivision method.
- control information decoded by the basic mesh decoding section 202 will be described below with reference to FIGS. 4 and 5.
- FIG. 4 is a diagram showing an example of the syntax structure of a basic mesh bitstream.
- the basic mesh bitstream may include a BPH (Base Patch header), which is a set of control information corresponding to the basic mesh patch.
- BPH Basic Patch header
- the basic mesh bitstream may include basic mesh patch data that encodes basic mesh patches next to the BPH.
- the basic mesh bitstream has a configuration in which each patch data corresponds to one BPH.
- the configuration in FIG. 4 is just an example, and elements other than those described above may be added as constituent elements of the basic mesh bitstream as long as each patch data corresponds to a BPH.
- the basic mesh bitstream may include SPS (Sequence Parameter Set), or FH (Frame Header), which is a set of control information corresponding to the frame. ), or may include MH (Mesh Header), which is control information corresponding to the mesh.
- SPS Sequence Parameter Set
- FH Fram Header
- MH Mesh Header
- FIG. 5 is a diagram showing an example of the syntax structure of BPH.
- a syntax name different from the syntax mate shown in FIG. 5 may be used.
- the Description column indicates how each syntax is encoded. Further, ue(v) means an unsigned zero-order exponential Golomb code, and u(n) means an n-bit flag.
- the BPH includes at least a control signal (mdu_face_count_minus1) that specifies the number of basic faces included in the basic mesh patch.
- the BPH includes at least a control signal (mdu_subdivision_method_id) that specifies the type of subdivision method of the basic mesh for each basic patch.
- the BPH may include a control signal (mdu_max_depth) for identifying the upper limit of the number of subdivisions performed recursively for each basic mesh patch when recursively generating the number of subdivisions of the basic surface.
- mdu_max_depth a control signal for identifying the upper limit of the number of subdivisions performed recursively for each basic mesh patch when recursively generating the number of subdivisions of the basic surface.
- the basic mesh decoding section 202 includes a separating section 202A, an intra decoding section 202B, a mesh buffer section 202C, a connection information decoding section 202D, and an inter decoding section 202E.
- the separation unit 202A is configured to classify the basic mesh bitstream into an I frame (reference frame) bitstream and a P frame bitstream.
- the intra decoding unit 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 described in Non-Patent Document 2.
- FIG. 39 is a diagram showing an example of functional blocks of the intra decoding section 202B.
- the intra decoding section 202B includes a separating section 202A, an arbitrary intra decoding section 202B1, and an alignment section 202B2.
- the arbitrary intra decoding unit 202B1 is configured to decode the coordinates and connection information of the unordered vertices of the I frame from the bit stream of the I frame using any method including the Draco described in Non-Patent Document 2. .
- the sorting unit 202B2 is configured to output vertices by rearranging unordered vertices into a predetermined order.
- the predetermined order for example, Morton code order or raster scan order may be used.
- a plurality of vertices with matching coordinates may be grouped together to form a single vertex, and then rearranged in a predetermined order.
- the mesh buffer section 202C is configured to accumulate the coordinates and connection information of the vertices of the I frame decoded by the intra decoding section 202B.
- the connection information decoding unit 202D is configured to convert the I frame connection information extracted from the mesh buffer unit 202C into P frame connection information.
- 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 taken out from the mesh buffer unit 202C and the motion vector decoded from the bitstream of the P frame. ing.
- the motion vector decoded by the inter decoding unit 202E is a difference vector between the coordinates of the vertices of the basic mesh of the P frame and the coordinates of the vertices of the basic mesh of the I frame.
- FIG. 8 is a diagram showing an example of functional blocks of the inter decoding section 202E.
- 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.
- the motion vector residual decoding unit 202E1 is configured to generate an MVR (Motion Vector Residual) from a P frame bitstream.
- MVR Motion Vector Residual
- 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 vertices of the corresponding I frame and the coordinates of the vertices of the P frame.
- MVP is a value (predicted value of a motion vector) predicted by the MV of the target vertex using the MV.
- the motion vector buffer section 202E2 is configured to sequentially store the MVs output by the motion vector calculation section 202E4.
- the motion vector prediction unit 202E3 acquires decoded MVs from the motion vector buffer unit 202E2 for vertices connected to the decoding target vertex, and as shown in FIG. It is configured to output the MVP of the vertex to be decoded by using a part of it.
- 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. .
- the adder 202E5 calculates the coordinates of the vertex corresponding to the decoding target vertex obtained from the decoded basic mesh of the I frame (reference frame) having a correspondence relationship, and the motion vector MV output from the motion vector calculation unit 202E3. It is configured to add the coordinates of the vertex to be decoded and output the coordinates of the vertex to be decoded.
- FIG. 10 shows a flowchart illustrating an example of the operation of the motion vector prediction unit 202E3.
- step S1001 the motion vector prediction unit 202E3 sets MVP and N to 0.
- step S1002 the motion vector prediction unit 202E3 obtains a set of MVs of vertices around the decoding target vertex from the motion vector buffer unit 202E2, identifies vertices for which subsequent processing has not been completed, and transitions to No. , if the subsequent processing has been completed for all vertices, the transition is made to Yes.
- step S1003 the motion vector prediction unit 202E3 transitions to No if the MV of the vertex to be processed has not been decoded, and transitions to Yes if the MV of the vertex to be processed has been decoded.
- step S1004 the motion vector prediction unit 202E3 adds MV to MVP and adds 1 to N.
- step S1005 the motion vector prediction unit 202E3 outputs the result of dividing MVP by N if N is greater than 0, and if N is 0, outputs 0 and ends the process.
- the motion vector prediction unit 202E3 is configured to output the MVP to be decoded by averaging the decoded motion vectors of vertices around the vertex to be decoded.
- the motion vector prediction unit 202E3 may be configured to set the MVP to 0 when the set of decoded motion vectors is an empty set.
- the motion vector calculation unit 202E4 is 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). may have been done.
- MV(k) MVP(k)+MVR(k)...(1)
- k is the index of the vertex.
- MV, MVR and MVP are vectors that have x, y and z components.
- the adder 202E5 calculates the coordinates of the vertex by adding the MV of the vertex calculated by the motion vector calculation unit 202E4 and the coordinates of the vertex of the reference frame corresponding to the vertex, and adds connection information remains the reference frame.
- the adder 202E5 may be configured to calculate the coordinates v' i (k) of the k-th vertex using equation (2).
- v' i (k) v' j (k)+MV(k)... (2)
- v' i (k) is the coordinate of the k-th vertex to be decoded in the frame to be decoded
- v' j (k) is the coordinate of the k-th vertex decoded in the reference frame
- MV (k) is the k-th MV of the frame to be decoded
- k 1, 2...,K.
- connection information of the frame to be decoded is made the same as the connection information of the reference frame.
- the motion vector prediction unit 202E3 calculates MVP using decoded MVs, the order of decoding affects MVP.
- the order of such decoding is the order of decoding the vertices of the basic mesh of the reference frame.
- a decoding method uses a constant repeating pattern to increase basic faces one by one from an edge serving as a starting point, the order of the vertices of the decoded basic mesh is determined during the decoding process.
- the motion vector prediction unit 202E3 may use Edgebreaker to determine the decoding order of vertices in the basic mesh of the reference frame.
- Example 1 of modification of inter decoding unit 202E Although the MVP calculated in the flowchart shown in FIG. 10 is calculated by a simple average of surrounding decoded MVs, it may be calculated by a weighted average.
- the motion vector prediction unit 202E3 calculates the motion vectors between the vertices of the reference frame corresponding to the vertices to be decoded and the vertices around the vertices to be decoded, based on the decoded motion vectors of vertices around the vertices to be decoded.
- the configuration may be such that the predicted value of the motion vector to be decoded is output by weighted averaging using a weight corresponding to the distance between the motion vectors.
- the motion vector prediction unit 202E3 calculates a reference frame corresponding to the decoding target vertex and the vertices around the decoding target vertex, for a part of the decoded motion vectors of the vertices around the decoding target vertex.
- the predicted value of the motion vector to be decoded may be output by performing weighted averaging using a weight corresponding to the distance between the vertices of .
- the motion vector prediction unit 202E3 of the inter decoding unit 202E is configured to calculate MVP using the following procedure.
- the motion vector prediction unit 202E3 is configured to calculate weights.
- FIG. 11 shows a flowchart illustrating an example of the operation of calculating the sum Total_D of distances to surrounding decoded vertices.
- step S1101 the motion vector prediction unit 202E3 sets Total_D to 0.
- Step S1102 is the same as step S1002.
- Step S1103 is the same as step S1003.
- step S1104 the motion vector prediction unit 202E3 adds e(k) to Total_D.
- the motion vector prediction unit 202E3 refers to a set of vertices around the vertex to be decoded and adds the distances of the decoded vertices.
- the motion vector prediction unit 202E3 is configured to calculate weights using distances in a reference frame in which the correspondence between vertices is known.
- e(k) in step S1104 in FIG. 11 is the distance between corresponding vertices in the reference frame.
- the motion vector prediction unit 202E3 may be configured to calculate the weight w(k) using equations (3) and (4).
- ⁇ is the set of decoded vertices on the surface of the mesh that includes the vertex to be decoded
- e(p/k) corresponds to the vertex to be decoded and the vertex p/k in the reference frame
- w(k) is the weight at vertex k.
- the motion vector prediction unit 202E3 may be configured to set the weight according to a rule determined in advance according to the distance.
- the motion vector prediction unit 202E3 sets the weight to 1 when e(k) is smaller than the threshold TH1, and sets the weight to 0.5 when e(k) is smaller than the threshold TH2, In other cases, the configuration may be such that the weight is set to 0 (the weight is not used).
- the motion vector prediction unit 202E3 is configured to refer to MVP.
- FIG. 12 shows a flowchart illustrating an example of the operation of calculating MVP using a weighted average.
- step S1201 the motion vector prediction unit 202E3 sets MVP and N to 0.
- Step S1202 is the same as step S1002.
- Step S1203 is the same as step S1003.
- step S1204 the motion vector prediction unit 202E3 adds w(k) ⁇ MV(k) to MVP and adds 1 to N.
- Step S1205 is the same as step S1005.
- the motion vector prediction unit 202E3 may be configured to calculate MVP using equation (5).
- ⁇ is a set of decoded vertices on the surface of the mesh that includes the vertices to be decoded.
- the motion vector prediction unit 202E3 is configured to select one MV instead of calculating MVP using a plurality of surrounding MVs.
- the motion vector prediction unit 202E3 selects the MV of the nearest vertex among the decoded MVs stored in the motion vector buffer unit 202E2 as the MV of the vertex connected to the vertex to be decoded. may be configured.
- the motion vector prediction unit 202E3 constructs a candidate list consisting of MVs of vertices connected to the vertex to be decoded from among the decoded MVs stored in the motion vector buffer unit 202E2, and The motion vector may be selected from the candidate list based on the index decoded from the bitstream of (frame to be decoded).
- FIG. 13 shows a flowchart illustrating an example of the operation of selecting an MV from a set of candidate MVs as an MVP.
- step S1301 the motion vector prediction unit 202E3 decodes the list ID from the bitstream of the P frame.
- step S1302 the motion vector prediction unit 202E3 selects the MV to which the list ID is attached as the MVP from among the candidate MVs.
- surrounding decoded MVs and MVs calculated by their combinations are arranged in a fixed order.
- FIG. 14 shows a flowchart illustrating an example of the operation of creating such a set of candidate MVs.
- step S1401 the motion vector prediction unit 202E3 refers to a set of MVs of vertices around the decoding target vertex, and determines whether processing for all vertices around the decoding target vertex is completed. It is determined whether the
- step S1402 the motion vector prediction unit 202E3 determines whether the MV of the target vertex has been decoded.
- step S1403 If such MV has been decoded, the operation proceeds to step S1403; if such MV has not been decoded, the operation returns to step S1401.
- step S1403 the motion vector prediction unit 202E3 determines whether the MV overlaps with another decoded MV.
- step S1401 If there is overlap, the operation returns to step S1401; if there is no overlap, the operation proceeds to step S1404.
- the motion vector prediction unit 202E3 determines a list ID to be given to this MV in step S1404, and includes it in the set of candidate MVs in step S1405.
- the motion vector prediction unit 202E3 may increase the list ID one by one in order, or select the vertex corresponding to the decoding target vertex and vertex k in the reference frame.
- the list IDs may be determined in the order of the distance between them (e(k) in equation (3)).
- selecting one of the candidate MVs as the MVP may be closer to the MV than the average in some cases, and in that case, the effect of increasing encoding efficiency can be expected.
- the motion vector prediction unit 202E3 may be configured to add an MV obtained by averaging consecutive MV0 and MV1 from among the above-mentioned candidate MVs to the list as a new candidate MV.
- the motion vector prediction unit 202E3 adds the MV after MV0 and MV1, as shown in Table 1.
- 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. According to this configuration, the effect of further increasing the encoding efficiency can be expected.
- the surrounding vertices are vertices that are connected to the vertex to be decoded.
- the motion vector prediction unit 202E3 is configured to calculate MVP by parallelogram prediction, that is, by also using vertices that are not directly connected to the vertex to be decoded. has been done.
- parallelogram prediction also uses the vertex D to be decoded and the vertex D on the opposite side of the decoded surface that has a shared edge BC.
- the shared edges of the vertex A to be decoded include CE and BG. Therefore, in parallelogram prediction, vertices F and H can be used as well.
- the motion vector prediction unit 202E3 may be configured to calculate MVP using equation (6) using the plane BCD shown in FIG.
- MVP MV(B)+MV(C)-MV(D)...(6)
- MV(X) is the motion vector of vertex X
- MVP is the motion vector predicted value of vertex A to be decoded.
- the motion vector prediction unit 202E3 may average the respective MVPs, or may select the surface whose center of gravity is closest.
- Modification example 4 of inter decoding unit 202E the MVR generated by the motion vector residual decoding unit 202E1 is not maintained as is, but is configured such that the quantization width when expressing the MVR as an integer is controlled.
- the motion vector residual decoding unit 202E1 is configured to decode adaptive_mesh_flag, adaptive_bit_flag, and precision control parameter as control information for controlling the quantization width of MVR.
- 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.
- adaptive_mesh_flag and adaptive_bit_flag are flags indicating whether or not to adjust the quantization width of the above-mentioned MVR, and take a value of either 0 or 1.
- the motion vector residual decoding unit 202E1 decodes the adaptive_bit_flag only when the adaptive_mesh_flag is valid (that is, 1).
- the motion vector residual decoding unit 202E1 considers the adaptive_bit_flag to be invalid (ie, 0).
- FIG. 16 shows a flowchart illustrating an example of an operation for controlling the quantization width of the decoded MVR from the adaptive_mesh_flag, adaptive_bit_flag, which are control information generated by decoding the basic mesh bitstream, and the accuracy control parameter.
- step S1601 the motion vector prediction unit 202E3 determines whether adaptive_mesh_flag is 0.
- step S1602 the motion vector prediction unit 202E3 determines whether or not there is an unprocessed patch within the frame.
- step S1603 the motion vector prediction unit 202E3 determines whether the adaptive_mesh_flag decoded for each patch is 0.
- adaptive_mesh_flag 1
- step S1604 the motion vector prediction unit 202E3 controls the quantization width of MVR based on the accuracy control parameter described below.
- MVRQ Motion Vector Residual Quantization
- the motion vector prediction unit 202E3 is configured to refer to a table such as Table 2, for example, and use the MVR quantization width corresponding to the quantization width control parameter generated by decoding the basic mesh bitstream. may have been done.
- the hierarchical structure of the mesh level adaptive_mesh_flag and the patch level adaptive_mesh_flag can be expected to have the effect of minimizing wasted bits when the MVR quantization width is not controlled.
- Modification example 5 of inter decoding unit 202E If the MVR generated by the motion vector residual decoding unit 202E1 is not encoded, an error will occur. In Modification Example 5, in order to correct such errors, discrete motion vector differences are encoded.
- the MVR can take sizes of 1, 2, 4, and 8 in the six directions of the x-axis, y-axis, and z-axis. Examples of such encoding are shown in Tables 3 and 4.
- MVR encoding may be performed using a combination of multiple directions.
- the correction may be made in the order of 2 in the + direction of the x-axis and 1 in the + direction of the y-axis.
- a further modification of the inter decoding unit 202E described above is configured to add the following functional blocks before implementing the inter decoding unit 202E described above.
- the inter decoding unit 202E includes a duplicate vertex search unit 202E6, a duplicate vertex determination unit 202E7, a motion vector acquisition unit 202E8, and an All skip mode Features single, skip mode single.
- the All skip mode signal is at the beginning of the bit stream of the P frame, has at least two values, and is one bit or more than one bit.
- One of them (when the All skip mode signal indicates Yes, e.g., 1) is to not decode the motion vectors of all duplicate vertices of the P frame from the bitstream, but to decode the motion vectors of the duplicated vertices from the bitstream. This is the signal to copy.
- the other signal (when the All skip mode signal indicates No, for example, 0) is a signal that performs different processing on each vertex of the P frame. Furthermore, the other one may have other values.
- the other is a single mode in which the motion vector acquisition unit 202E8 does not process the motion vectors of all overlapping vertices, but performs the same process as the inter decoding unit 202E shown in FIG. 8.
- the Skip mode signal has a binary value for each duplicate vertex and is 1 bit.
- the Skip mode signal is a signal that, when the All skip mode signal indicates Yes (for example, 1), does not decode the motion vector of the corresponding vertex from the bitstream, but copies the motion vector of the duplicated vertex.
- the skip mode signal does not perform the processing in the motion vector acquisition unit 202E8 for the motion vector of the vertex, and the inter decoding unit 202E shown in FIG. This is a single that performs similar processing.
- the above-mentioned Skip mode signal may be decoded directly from the bitstream, or it may be decoded directly from the bitstream, or it may be decoded from the bitstream by data specifying the duplicated vertices (for example, The Skip mode signal may be calculated from such data.
- the Skip mode signal is not calculated, and the same processing as the inter decoding unit 202E shown in FIG. , similarly to the above case, a motion vector decoding method for the vertex may be determined.
- the duplicate vertex search unit 202E6 is configured to search for indices of vertices with matching coordinates (hereinafter referred to as duplicate vertices) from the geometric information of the basic mesh of the decoded reference frame, and store the index in a buffer (not shown). has been done.
- the input to the duplicate vertex search unit 202E6 is the index (decoding order) and position coordinates of each vertex of the basic mesh of the decoded reference frame.
- the output of the duplicate vertex search unit 202E6 is a list of pairs of the index (vindex0) of the vertex where the duplicate vertex exists and the index (vindex1) of the duplicate vertex.
- the list of such pairs is stored in the buffer repVert in the order of index0.
- a special signal is used to decode the index of the duplicate vertex instead of the position coordinates. With such a special signal, pairs of the index of the corresponding vertex and the index of the duplicate vertex can be stored in decoding order.
- the duplicate vertex determination unit 202E7 is configured to determine whether there is a duplicate vertex among the vertices decoded by the corresponding vertex.
- the duplicate vertex determination unit 202E7 determines that there is a duplicate vertex among the decoded vertices, if the index of the corresponding vertex is among the indexes of vertices where duplicate vertices exist. Note that the above-mentioned search is not necessary because the corresponding vertices come in the decoding order.
- the duplicate vertex determining unit 202E7 determines that there is no duplicate vertex for the corresponding vertex, the same process as the inter decoding unit 202E shown in FIG. 8 is performed.
- the motion vector acquisition unit 202E8 determines that when there is a duplicate vertex of the corresponding vertex and the All skip mode signal indicates Yes, or if the All skip mode signal indicates No, the Skip mode signal of the corresponding vertex indicates Yes. In this case, the motion vector of the vertex having the same index as the duplicate vertex is obtained from the motion vector buffer unit 202E2 that stores the decoded motion vector, and is set as the motion vector of the corresponding vertex.
- the inter decoding unit 202E obtains the correspondence between the vertices of the reference frame and the vertices of the frame to be decoded from the decoded basic mesh of the reference frame.
- the inter decoding unit 202E is configured to make the connection information of the vertices of the frame to be decoded the same as the connection information of the decoded vertices of the reference frame without encoding it. .
- the inter decoding unit 202E divides the basic 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. In the first region, decoding is performed using inter processing, and in the second region, decoding is performed using intra processing.
- the above-mentioned area is defined as an area formed by a plurality of vertices that are consecutive in the decoding order when decoding the basic mesh of the reference frame.
- vertex_idx1 and vertex_idx2 are indices of the decoding order of vertices (vertex indexes), and intra_flag is a flag indicating whether the above-mentioned inter decoding method or intra decoding method is used. There may be more than one such signal.
- vertex_idx1 and vertex_idx2 are vertex indexes that define the start position and end position of some of the areas (the first area and the second area) described above.
- (Means 2) Means 2 is based on the premise that Edgebreaker decodes the connection information of the basic mesh of the reference frame, and the order in which the coordinates of vertices are decoded is determined by Edgebreaker.
- FIG. 19 is a diagram illustrating an example of an operation for determining connection information and the order of vertices using Edgebreaker.
- arrows indicate the decoding order of connection information
- numbers indicate the decoding order of vertices
- arrows of the same line type define the same area.
- intra_flag is a flag indicating whether the inter decoding method or the intra decoding method is used.
- the inter decoding unit 202E is configured to divide into a first area and a second area using Edgebreaker.
- the subdivision unit 203 is configured to generate and output 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. has been done.
- the basic mesh the added subdivision vertices, and their connection information are collectively referred to as a "subdivision mesh.”
- 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.
- FIGS. 3A and 3B are diagrams for explaining an example of the operation of generating subdivision vertices from a basic mesh.
- FIG. 3A is a diagram showing an example of a basic mesh composed of five vertices.
- a mid-edge division method may be used in which the midpoints of each side of each basic plane are connected. As a result, a certain basic surface is divided into four surfaces.
- FIG. 3B shows an example of a subdivision mesh obtained by dividing a basic mesh composed of five vertices.
- eight subdivision vertices (white circles) are generated in addition to the original five vertices (black circles).
- patch_id which is control information.
- FIG. 21 is a diagram illustrating an example of functional blocks of the subdivision unit 203.
- the subdivision section 203 includes a basic mesh subdivision section 203A and a subdivision mesh adjustment section 203B.
- the basic mesh subdivision unit 203A calculates the number of divisions (subdivision number) for each basic surface and basic patch based on the input basic mesh and basic mesh division information, and refines the basic mesh based on the number of divisions. It is configured to divide and output subdivided surfaces.
- the basic mesh subdivision unit 203A may be configured to be able to change the above-mentioned number of divisions in units of basic planes and basic patches.
- a basic surface is a surface that constitutes a basic mesh
- a basic patch is a collection of several basic surfaces.
- the basic mesh subdivision unit 203A predicts the number of subdivisions of the basic surface, and adds the predicted subdivision number residual to the predicted subdivision number of the basic surface, thereby calculating the number of subdivisions of the basic surface. It may be configured to calculate.
- the basic mesh subdivision unit 203A may be configured to calculate the number of subdivisions of the basic plane based on the number of subdivisions of the basic planes adjacent to the basic plane.
- the basic mesh subdivision unit 203A may be configured to calculate the number of subdivisions of the basic plane based on the number of subdivisions of the basic plane accumulated immediately before.
- the basic mesh subdivision unit 203A may be configured to subdivide the basic surface by generating vertices that divide the three sides forming the basic surface and connecting the generated vertices.
- a subdivision mesh adjusting section 203B which will be described later, is provided after the basic mesh subdivision section 203A.
- FIG. 21 is a diagram illustrating an example of functional blocks of the basic mesh subdivision unit 203A
- FIG. 23 is a flowchart illustrating an example of the operation of the basic mesh subdivision unit 203A.
- the basic mesh subdivision unit 203A includes a basic plane division number buffer unit 203A1, a basic plane division number reference unit 203A2, a basic plane division number prediction unit 203A3, an addition unit 203A4, a basic plane division 203A5.
- the basic plane division number buffer unit 203A1 stores basic plane division information including the division number of the basic plane, and is configured to output the basic plane division information to the basic plane division number reference unit 203A2. There is.
- the size of the basic plane division number buffer section 203A1 may be set to 1, and it may be configured to output the most recently accumulated basic plane division number to the basic plane division number reference section 203A2.
- the size of the basic surface division number buffer section 203A1 it may be configured to refer only to the last decoded fine division number (the most recently decoded fine division number).
- the basic plane division number reference unit 203A2 determines the number of divisions when there is no basic plane adjacent to the basic plane to be decoded, or when there is a basic plane adjacent to the basic plane to be decoded. If it has not been determined, the basic plane division number prediction unit 203A3 is configured to output an indication that reference is not possible.
- the basic plane division number reference unit 203A2 instructs the basic plane division number prediction unit 203A3 to It is configured to output a number.
- the basic plane division number prediction unit 203A3 predicts the division number (subdivision number) of the basic plane based on one or more input division numbers, and sends the predicted division number (predicted division number) to the addition unit 203A4. ) is configured to output.
- the basic plane division number prediction unit 203A3 is configured to output 0 to the addition unit 203A4 when only reference is not possible is input from the basic plane division number reference unit 203A2.
- the basic surface division number prediction unit 203A3 uses one of the statistical values such as the average value, maximum value, minimum value, mode, etc. of the input number of divisions. may be configured to generate the predicted number of divisions.
- the basic plane division number prediction unit 203A3 may be configured to generate the division number of the most adjacent plane as the predicted division number when one or more division numbers are input.
- the addition unit 203A4 adds the number of divisions obtained by adding the predicted division number residual decoded from the prediction residual bitstream and the predicted division number obtained from the basic plane division number prediction unit 203A3 to the basic plane division unit 203A5. It is configured to output to.
- the basic surface dividing section 203A5 is configured to subdivide the basic surface based on the number of divisions input from the adding section 203A4.
- FIG. 22 is an example of a case where the basic surface is divided into nine parts. Referring to FIG. 22, a method of dividing a basic plane by the basic plane dividing unit 203A5 will be described.
- the basic surface dividing unit 203A5 divides side BC and side CA into N equal parts, and generates points B_1, ..., B_(N-1), C_1, ..., C_(N-1), respectively.
- side dividing points the points on sides AB, BC, and CA will be referred to as "side dividing points.”
- the basic surface dividing unit 203A5 calculates sides A_i B_(N-i), B_i C_(N-i), C_i A_(N-i ) and generate N2 subdivision planes.
- step S2201 it is determined whether the re-division process has been completed for the last basic surface. If the process is completed, the process ends; if not, the process advances to step S2202.
- step S2202 the basic mesh subdivision unit 203A determines that Depth ⁇ mdu_max_depth.
- Depth is a variable that represents the current depth, and its initial value is 0, and mdu_max_depth represents the maximum depth determined for each basic surface.
- step S2202 If the conditions in step S2202 are met, the process proceeds to step S2203; if the conditions are not met, the process returns to step S2201.
- step S2203 the basic mesh subdivision unit 203A determines whether mdu_subdivision_flag at the current depth is 1.
- step S2204 the basic mesh subdivision unit 203A further subdivides all subdivision planes within the basic plane.
- the basic mesh subdivision unit 203A subdivides the basic surface if no subdivision processing has been performed on the basic surface.
- the basic surface is subdivided as shown in FIG. If it has been subdivided at least once, the subdivision plane is subdivided into N 2 pieces.
- a surface consisting of vertex A_2, vertex B, and vertex B_1 is further divided into N2 surfaces in the same manner as when dividing the basic surface.
- step S2205 the basic mesh subdivision unit 203A adds 1 to Depth, and the processing procedure returns to step S2202.
- FIG. 24 is a diagram showing an example of functional blocks of the subdivision mesh adjustment section 203B.
- the subdivision mesh adjustment section 203B includes an edge division point moving section 701 and a subdivision surface division section 702.
- the edge division point moving unit 701 is configured to move the edge division point of the basic plane to any of the edge division points of the adjacent basic plane with respect to the input initial subdivision plane, and output the subdivision plane. ing.
- FIG. 25 is an example in which the edge dividing points on the basic plane ABC are moved.
- the edge dividing point moving unit 701 may be configured to move the edge dividing point of the basic plane ABC to the edge dividing point of the nearest adjacent basic plane.
- the subdivision plane division unit 702 is configured to subdivide the input subdivision plane again and output a decoded subdivision plane.
- FIG. 26 is a diagram showing an example of a case where the subdivision plane X within the basic plane is subdivided again.
- the subdivision plane division unit 702 generates a new subdivision plane within the basic plane by connecting the vertices forming the subdivision plane and the edge division points of the adjacent basic plane. It may be configured as follows.
- FIG. 27 is a diagram showing an example of a case in which the above subdivision process is performed on all subdivision planes.
- 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 decoded by the displacement decoding unit 206.
- the mesh decoding unit 204 is configured to generate a decoded mesh by adding a corresponding displacement amount to each subdivision vertex.
- information about which subdivision vertex each displacement corresponds to is indicated by control information.
- the patch integration unit 205 is configured to integrate and output the decoded mesh generated by the mesh decoding unit 206 for a plurality of patches.
- the patch division method is defined by the mesh encoding device 100. For example, to divide a patch, calculate the normal vector for each basic surface, select the basic surface with the most similar normal vector among the adjacent basic surfaces, and treat both basic surfaces as the same patch. In summary, the procedure may be configured to be repeated sequentially for the next basic surface.
- the video decoding unit 207 is configured to decode the texture by video encoding and output it.
- the video decoding unit 207 may use HEVC of Non-Patent Document 1.
- the displacement amount decoding unit 206 is configured to decode the displacement amount bitstream to generate and output a displacement amount.
- FIG. 28 is a diagram showing an example of the amount of displacement for a certain subdivision vertex.
- the displacement decoding unit 206 is configured to define eight displacements expressed as scalars or vectors for each subdivision vertex. There is.
- FIG. 28 is a diagram illustrating an example of functional blocks of the displacement decoding section 206.
- the displacement decoding unit 206 includes a decoding unit 206A, an inverse quantization unit 206B, an inverse wavelet transform unit 206C, an adder 206D, an inter prediction unit 206E, and a frame buffer 206F. .
- the decoding unit 206A is configured to decode and output the level value and control information by performing variable length decoding on the received displacement bitstream.
- the level value obtained by variable length decoding is output to the inverse quantization unit 206B, and the control information is output to the inter prediction unit 206E.
- FIG. 29 is a diagram illustrating an example of the configuration of a displacement amount bitstream.
- the displacement bitstream may include a DPS (Displacement Parameter Set), which is a set of control information regarding decoding of the displacement amount.
- DPS Displayment Parameter Set
- the displacement bitstream may include a DPH (Displacement Patch Header), which is a collection of control information corresponding to a patch.
- DPH Displayment Patch Header
- the displacement amount bitstream may include, next to the DPH, encoded displacement amounts that constitute a patch.
- the displacement bitstream has a configuration in which one DPH and one DPS correspond to each encoded displacement amount.
- the displacement bitstream may include SPS (Sequence Parameter Set).
- FIG. 30 is a diagram illustrating an example of the syntax configuration of DPS.
- the Descriptor column indicates how each syntax is encoded.
- ue(v) means an unsigned zero-order exponential Golomb code
- u(n) means an n-bit flag
- the DPS includes at least DPS id information (dps_displacement_parameter_set_id) for identifying each DPS.
- the DPS may include a flag (interprediction_enabled_flag) that controls whether or not to perform inter prediction.
- interprediction_enabled_flag when interprediction_enabled_flag is 0, it may be defined that inter prediction is not performed, and when interprediction_enabled_flag is 1, it may be defined that inter prediction is performed. If the interprediction_enabled_flag is not included, it may be defined that inter prediction is not performed.
- the DPS may include a flag (dct_enabled_flag) that controls whether to perform inverse DCT.
- dct_enabled_flag when dct_enabled_flag is 0, it may be defined that inverse DCT is not performed, and when dct_enabled_flag is 1, it may be defined that inverse DCT is performed. If dct_enabled_flag is not included, it may be defined that inverse DCT is not performed.
- FIG. 31 is a diagram illustrating an example of the syntax configuration of DPH.
- each DPH includes at least DPS id information for specifying the DPS corresponding to each DPH.
- the dequantization unit 206B is configured to generate and output transform coefficients by dequantizing the level values decoded by the decoding unit 206A.
- the inverse wavelet transform unit 206C is configured to perform inverse wavelet transform on the transform coefficients generated by the inverse quantization unit 206B to generate and output a prediction residual.
- the inter prediction unit 206E is configured to generate and output a predicted displacement amount by performing inter prediction using the decoded displacement amount of the reference frame read from the frame buffer 206F.
- the inter prediction unit 206E is configured to perform such inter prediction only when the interprediction_enabled_flag is 1.
- the inter prediction unit 206E may perform inter prediction in the spatial domain or may perform inter prediction in the frequency domain.
- inter prediction bidirectional prediction may be performed using a temporally past reference frame and a future reference frame.
- FIG. 28 is an example of functional blocks of the inter prediction unit 206E when performing inter prediction in the spatial domain.
- the inter prediction unit 206E may determine the predicted displacement amount of the subdivision vertex in the target frame by directly referring to the decoded displacement amount of the corresponding subdivision vertex in the reference frame. .
- the predicted displacement amount of a certain subdivision vertex in the target frame may be stochastically determined using the decoded displacement amount of the corresponding subdivision vertex in a plurality of reference frames according to a normal distribution with an estimated mean and variance.
- the variance may be set to zero and it may be determined uniquely only by the average.
- the predicted displacement amount of a certain subdivision vertex in the target frame is based on a regression curve estimated using the decoded displacement amount of the corresponding subdivision vertex in multiple reference frames, with time as an explanatory variable and displacement as the objective variable. It may be determined by
- the order of the decoding displacement amounts may be rearranged for each frame in order to improve encoding efficiency.
- the inter prediction unit 206E may be configured to perform inter prediction on the rearranged decoding displacement amounts.
- the correspondence of subdivision vertices between the reference frame and the decoding target frame is indicated by control information.
- FIG. 32 is a diagram for explaining an example of the correspondence of subdivision vertices between the reference frame and the decoding target frame when inter prediction is performed in the spatial domain.
- FIG. 33 is an example of functional blocks of the inter prediction unit 206E when performing inter prediction in the frequency domain.
- the inter prediction unit 206E may determine the predicted wavelet transform coefficient of the frequency in the decoding target frame by directly referring to the decoded wavelet transform coefficient of the corresponding frequency in the reference frame.
- the inter prediction unit 206E may use the decoded displacement amounts or decoded wavelet transform coefficients of subdivision vertices in a plurality of reference frames to perform inter prediction probabilistically according to a normal distribution whose mean and variance are estimated.
- the inter prediction unit 206E performs inter prediction based on a regression curve estimated using time as an explanatory variable and displacement as an objective variable, using decoded displacement amounts or decoded wavelet transform coefficients of subdivided vertices in a plurality of reference frames. Good too.
- the inter prediction unit 206E may be configured to bidirectionally perform inter prediction using temporally past reference frames and future reference frames.
- the order of the decoded wavelet transform coefficients may be rearranged for each frame in order to improve encoding efficiency.
- the frequency correspondence between the reference frame and the decoding target frame is indicated by control information.
- FIG. 34 is a diagram for explaining an example of the frequency correspondence relationship between the reference frame and the decoding target frame when inter prediction is performed in the frequency domain.
- the inter prediction unit 206E is also configured to perform inter prediction for each divided patch. This increases the time correlation between frames, and can be expected to improve encoding performance.
- the adder 206D receives the prediction residual from the inverse wavelet transform unit 206C and the predicted displacement amount from the inter prediction unit 206E.
- the adder 206D is configured to calculate and output the decoded displacement amount by adding the prediction residual and the predicted displacement amount.
- the decoded displacement amount calculated by the adder 206D is also output to the frame buffer 206F.
- the frame buffer 206F is configured to obtain and accumulate the decoded displacement amount from the adder 206D.
- the frame buffer 206F outputs the decoding displacement amount at the corresponding vertex in the reference frame according to control information (not shown).
- FIG. 35 is a flowchart illustrating an example of the operation of the displacement decoding section 206.
- step S3501 the displacement decoding unit 206 determines whether this processing has been completed for all patches.
- step S3502 the displacement decoding unit 206 performs inverse DCT on the patch to be decoded, and then performs inverse quantization and inverse wavelet transform.
- step S3503 the displacement decoding unit 206 determines whether or not interprediction_enabled_flag is 1.
- step S3504 If Yes, the operation proceeds to step S3504; if No, the operation returns to step S3501.
- step S3504 the displacement decoding unit 206 performs the above-mentioned inter prediction and addition.
- FIG. 36 is a diagram illustrating an example of functional blocks of the displacement decoding section 206 according to the first modification.
- the displacement decoding unit 206 includes an inverse DCT unit 206G after the decoding unit 206A, that is, between the decoding unit 206A and the inverse quantization unit 206B. There is.
- the inverse quantization unit 206B is configured to generate a prediction residual by performing inverse wavelet transform on the level value output from the inverse DCT unit 202G.
- the displacement decoding section 206 includes a video decoding section 2061, an image expansion section 2062, an inverse quantization section 2063, and an inverse wavelet transform section 2064.
- the video decoding unit 2061 is configured to output a video by decoding the received displacement bitstream using video encoding.
- the video decoding unit 2061 may use HEVC of Non-Patent Document 1.
- the video decoding unit 2061 may use a video encoding method in which the motion vector is always zero.
- the video decoding unit 2061 may always set the HEVC motion vector to zero and always use inter prediction at the same position.
- the video decoding unit 2061 may use a video encoding method that always skips conversion.
- the video decoding unit 2061 may always perform HEVC conversion in conversion skip mode and use the video encoding method without conversion.
- the image expansion unit 2062 is configured to expand and output the video decoded by the video decoding unit 2061 as a level value for each image (frame).
- the image development unit 2062 can perform backward calculation and specification based on how the level values are arranged in the image indicated by the control information.
- the image development unit 2062 may arrange the level values from the high frequency component to the low frequency component in the order of raster operation in the image.
- the dequantization unit 2063 is configured to generate and output transform coefficients by dequantizing the level values generated by the image expansion unit 2062.
- the inverse wavelet transform unit 2064 is configured to perform inverse wavelet transform on the transform coefficients generated by the inverse quantization unit 2063 to generate and output a decoding displacement amount.
- the mesh encoding device 100 and mesh decoding device 200 described above may be implemented as programs that cause a computer to execute each function (each step).
- Basic surface division unit 203B ...Subdivision mesh adjustment unit 204...Mesh decoding unit 205...Patch integration unit 206...Displacement amount decoding unit 206A...Decoding units 206B, 2063...Dequantization unit 206C, 2064...Inverse wavelet transformation unit 206D.Addition unit 206E...Inter prediction unit 206F...Frame buffer 206G...Inverse DCT unit 2062...Image expansion unit 207, 2061...Video decoding unit
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
Description
以下、図1~図35を参照して、本実施形態に係るメッシュ処理システムについて説明する。
基本メッシュ復号部202は、基本メッシュビットストリームを復号し、基本メッシュを生成して出力するように構成されている。
イントラ復号部202Bは、例えば、非特許文献2に示すDracoを用いて、Iフレームのビットストリームから、Iフレームの頂点の座標及び接続情報を復号するように構成されている。
図8は、インター復号部202Eの機能ブロックの一例を示す図である。
ここで、kは、頂点のインデックスである。MV、MVR及びMVPは、x成分、y成分及びz成分を有するベクターである。
ここで、v’i(k)は、復号対象のフレームで復号するk番目の頂点の座標であり、v’j(k)は、参照フレームの復号したk番目の頂点の座標であり、MV(k)は、復号対象のフレームのk番目のMVであり、k=1,2…,Kである。
図10に示すフローチャートで算出したMVPは、復号済みの周りのMVの単純平均によって算出されているがが、重み付け平均によって算出されてもよい。
本変更例2では、動きベクトル予測部202E3は、周りの複数のMVを用いてMVPを算出するのではなく、1つのMVを選択するように構成されている。
上述の実施例及び変更例1~2では、周りの頂点は、復号対象の頂点と接続している頂点であった。
ここで、MV(X)は、頂点Xの動きベクトルであり、MVPは、復号対象の頂点Aの動きベクトル予測値である。
本変更例では、動きベクトル残差復号部202E1によって生成されたMVRは、そのままではなく、MVRを整数表現する際の量子化幅が制御されるように構成されている。
かかる構成によれば、MVRの量子化幅の制御により、符号化効率を高めることができるという効果が期待できる。更に、メッシュレベルのadaptive_mesh_flag及びパッチレベルのadaptive_mesh_flagの階層的な仕組みにより、MVRの量子化幅の制御をしない時に無駄なビットを最小化することができるという効果が期待できる。
動きベクトル残差復号部202E1によって生成されたMVRを符号化しない場合、誤差が生じる。本変更例5では、かかる誤差を補正するため、離散的な動きベクトル差分を符号化する。
手段1では、シグナルは、vertex_idx1、vertex_idx2及びintra_flagになる。
手段2では、Edgebreakerで参照フレームの基本メッシュの接続情報を復号し、頂点の座標の復号順をEdgebreakerで決めた順番にするという前提がある。
細分割部203は、制御情報によって示された細分割手法により、基本メッシュ復号部202によって復号された基本メッシュから、追加された細分割頂点及びそれらの接続情報を生成して出力するように構成されている。
基本メッシュ細分割部203Aは、入力された基本メッシュ及び基本メッシュの分割情報に基づき、基本面及び基本パッチごとの分割数(細分割数)を算出し、かかる分割数に基づいて基本メッシュを細分割し、細分割面を出力するように構成されている。
次に、細分割メッシュ調整部203Bによって行われる処理の具体例について説明する。以下、図24~28を用いて細分割メッシュ調整部203Bによって行われる処理の一例について説明する。
辺分割点移動部701は、入力された初期細分割面に対して、基本面の辺分割点を隣接基本面の辺分割点のいずれかに移動し、細分割面を出力するように構成されている。
細分割面分割部702は、入力された細分割面を再度細分割し、復号細分割面を出力するように構成されている。
変位量復号部206は、変位量ビットストリームを復号して変位量を生成して出力するように構成されている。
インター予測部206Eは、フレームバッファ206Fから読み出された参照フレームの復号変位量を用いてインター予測を行うことによって、予測変位量を生成して出力するように構成されている。
以下、図36を参照して、上述の第1実施形態の変形例1について、上述の第1実施形態との相違点に着目して説明する。
以下、図37を参照して、上述の第1実施形態の変形例2について、上述の第1実施形態との相違点に着目して説明する。
100…メッシュ符号化装置
200…メッシュ復号部
201…多重分離部
202…基本メッシュ復号部
202A…分離部
202B…イントラ復号部
202B1…任意イントラ復号部
202B2…整列部
202C…メッシュバッファ部
202D…接続情報復号部
202E…インター復号部
202E1…動きベクトル復号部
202E2…動きベクトルバッファ部
202E3…動きベクトル予測部
202E4…動きベクトル算出部
202E5…加算器
202E6…重複頂点探索部
202E7…重複頂点判別部
202E8…動きベクトル取得部
203…細分割部
203A…基本メッシュ細分割部
203A1…基本面分割数バッファ部
203A2…基本面分割数参照部
203A3…基本面分割数予測部
203A4…加算部
203A5…基本面分割部
203B…細分割メッシュ調整部
204…メッシュ復号部
205…パッチ統合部
206…変位量復号部
206A…復号部
206B、2063…逆量子化部
206C、2064…逆ウェーブレット変換部
206D…加算器
206E…インター予測部
206F…フレームバッファ
206G…逆DCT部
2062…画像展開部
207、2061…映像復号部
Claims (5)
- メッシュ復号装置であって、
基本メッシュビットストリームを復号して基本メッシュを出力するように構成されている基本メッシュ復号部を備え、
前記基本メッシュ復号部は、
前記基本メッシュビットストリームを多重分離することによってIフレームストリームを出力する分離部と、
前記Iフレームストリームを復号することによって基本メッシュの順序無し頂点を生成するように構成されているイントラ復号部と、
前記順序無し頂点を所定の順序に並び替えることによって頂点を出力するように構成されている整列部と、を備えることを特徴とするメッシュ復号装置。 - 前記整列部は、モートンコード順に並び替えることによって前記頂点を出力するように構成されていることを特徴とする請求項1に記載のメッシュ復号装置。
- 前記整列部は、頂点座標が同一である重複頂点を含まない頂点を出力するように構成されていることを特徴とする請求項1に記載のメッシュ復号装置。
- メッシュ復号方法であって、
基本メッシュビットストリームからIフレームストリームを分離する工程と、
前記Iフレームストリームから基本メッシュの順序無し頂点を生成する工程と、
前記順序無し頂点から所定の順序に並び替えた頂点を出力する整列工程と、を有することを特徴とするメッシュ復号方法。 - コンピュータを、メッシュ復号装置として機能させるプログラムであって、
前記メッシュ復号装置は、
基本メッシュビットストリームを復号して基本メッシュを出力するように構成されている基本メッシュ復号部を備え、
前記基本メッシュ復号部は、
前記基本メッシュビットストリームを多重分離することによってIフレームストリームを出力する分離部と、
前記Iフレームストリームを復号することによって基本メッシュの順序無し頂点を生成するように構成されているイントラ復号部と、
前記順序無し頂点を所定の順序に並び替えることによって頂点を出力するように構成されている整列部と、を備えることを特徴とするプログラム。
Priority Applications (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202380052528.0A CN119522441A (zh) | 2022-07-09 | 2023-06-07 | 网格解码装置、网格编码装置、网格解码方法及程序产品 |
| US19/013,440 US20260122268A1 (en) | 2022-07-09 | 2025-01-08 | Mesh decoding device, mesh encoding device, mesh decoding method, and program |
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2022110867A JP2024008746A (ja) | 2022-07-09 | 2022-07-09 | メッシュ復号装置、メッシュ符号化装置、メッシュ復号方法及びプログラム |
| JP2022-110867 | 2022-07-09 |
Related Child Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| US19/013,440 Continuation US20260122268A1 (en) | 2022-07-09 | 2025-01-08 | Mesh decoding device, mesh encoding device, mesh decoding method, and program |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| WO2024014196A1 true WO2024014196A1 (ja) | 2024-01-18 |
Family
ID=89536629
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| PCT/JP2023/021270 Ceased WO2024014196A1 (ja) | 2022-07-09 | 2023-06-07 | メッシュ復号装置、メッシュ符号化装置、メッシュ復号方法及びプログラム |
Country Status (4)
| Country | Link |
|---|---|
| US (1) | US20260122268A1 (ja) |
| JP (1) | JP2024008746A (ja) |
| CN (1) | CN119522441A (ja) |
| WO (1) | WO2024014196A1 (ja) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2025215923A1 (ja) * | 2024-04-12 | 2025-10-16 | Kddi株式会社 | メッシュ復号装置、メッシュ復号方法及びプログラム |
Families Citing this family (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US12542926B2 (en) * | 2022-08-12 | 2026-02-03 | Tencent America LLC | Motion field coding in dynamic mesh compression |
Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20160063737A1 (en) * | 2014-08-29 | 2016-03-03 | Ati Technologies Ulc | Extension of the mpeg/sc3dmc standard to polygon meshes |
| WO2019107181A1 (ja) * | 2017-12-01 | 2019-06-06 | ソニー株式会社 | 送信装置、送信方法、および受信装置 |
| JP2020119292A (ja) * | 2019-01-24 | 2020-08-06 | キヤノン株式会社 | 情報処理装置、情報処理方法、データ構造、及びプログラム |
| WO2021116838A1 (en) * | 2019-12-10 | 2021-06-17 | Sony Group Corporation | Mesh compression via point cloud representation |
Family Cites Families (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US8830235B1 (en) * | 1999-09-13 | 2014-09-09 | Alcatel Lucent | Non-uniform relaxation procedure for multiresolution mesh processing |
| EP2216750A1 (en) * | 2009-02-06 | 2010-08-11 | Thomson Licensing | Method and apparatus for encoding 3D mesh models, and method and apparatus for decoding encoded 3D mesh models |
| US10389994B2 (en) * | 2016-11-28 | 2019-08-20 | Sony Corporation | Decoder-centric UV codec for free-viewpoint video streaming |
| GB2558314B (en) * | 2017-01-02 | 2020-07-29 | Canon Kk | Improved attribute mapping to encode and decode 3D models |
| US11450030B2 (en) * | 2019-09-24 | 2022-09-20 | Apple Inc. | Three-dimensional mesh compression using a video encoder |
| US11836953B2 (en) * | 2020-10-06 | 2023-12-05 | Sony Group Corporation | Video based mesh compression |
| US12361643B2 (en) * | 2022-03-11 | 2025-07-15 | Apple Inc. | Image/video-based mesh compression |
-
2022
- 2022-07-09 JP JP2022110867A patent/JP2024008746A/ja active Pending
-
2023
- 2023-06-07 CN CN202380052528.0A patent/CN119522441A/zh active Pending
- 2023-06-07 WO PCT/JP2023/021270 patent/WO2024014196A1/ja not_active Ceased
-
2025
- 2025-01-08 US US19/013,440 patent/US20260122268A1/en active Pending
Patent Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20160063737A1 (en) * | 2014-08-29 | 2016-03-03 | Ati Technologies Ulc | Extension of the mpeg/sc3dmc standard to polygon meshes |
| WO2019107181A1 (ja) * | 2017-12-01 | 2019-06-06 | ソニー株式会社 | 送信装置、送信方法、および受信装置 |
| JP2020119292A (ja) * | 2019-01-24 | 2020-08-06 | キヤノン株式会社 | 情報処理装置、情報処理方法、データ構造、及びプログラム |
| WO2021116838A1 (en) * | 2019-12-10 | 2021-06-17 | Sony Group Corporation | Mesh compression via point cloud representation |
Non-Patent Citations (1)
| Title |
|---|
| YANG J-H, KIM C-S, LEE S-U: "COMPRESSION OF 3-D TRIANGLE MESH SEQUENCES BASED ON VERTEX-WISE MOTION VECTOR PREDICTION", IEEE TRANSACTIONS ON CIRCUITS AND SYSTEMS FOR VIDEO TECHNOLOGY, IEEE, USA, vol. 12, no. 12, 1 December 2002 (2002-12-01), USA, pages 1178 - 1184, XP001141949, ISSN: 1051-8215, DOI: 10.1109/TCSVT.2002.806814 * |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2025215923A1 (ja) * | 2024-04-12 | 2025-10-16 | Kddi株式会社 | メッシュ復号装置、メッシュ復号方法及びプログラム |
Also Published As
| Publication number | Publication date |
|---|---|
| CN119522441A (zh) | 2025-02-25 |
| JP2024008746A (ja) | 2024-01-19 |
| US20260122268A1 (en) | 2026-04-30 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| WO2024014042A1 (ja) | メッシュ復号装置、メッシュ符号化装置、メッシュ復号方法及びプログラム | |
| WO2024014045A1 (ja) | メッシュ復号装置、メッシュ符号化装置、メッシュ復号方法及びプログラム | |
| WO2024014044A1 (ja) | メッシュ復号装置、メッシュ符号化装置、メッシュ復号方法及びプログラム | |
| JP7745577B2 (ja) | メッシュ復号装置、メッシュ復号方法及びプログラム | |
| JP7781042B2 (ja) | メッシュ復号装置、メッシュ符号化装置、メッシュ復号方法及びプログラム | |
| US20260122268A1 (en) | Mesh decoding device, mesh encoding device, mesh decoding method, and program | |
| US20250148646A1 (en) | Mesh decoding device, mesh encoding device, mesh decoding method, and program | |
| WO2025009221A1 (ja) | メッシュ復号装置、メッシュ復号方法及びプログラム | |
| WO2024079982A1 (ja) | メッシュ復号装置、メッシュ符号化装置、メッシュ復号方法及びプログラム | |
| JP2024152168A (ja) | メッシュ復号装置、メッシュ復号方法及びプログラム | |
| JP2024152167A (ja) | メッシュ復号装置、メッシュ復号方法及びプログラム | |
| JP7701898B2 (ja) | メッシュ復号装置、メッシュ符号化装置、メッシュ復号方法及びプログラム | |
| JP7769597B2 (ja) | メッシュ復号装置、メッシュ符号化装置、メッシュ復号方法及びプログラム | |
| JP2025009036A (ja) | メッシュ復号装置、メッシュ復号方法及びプログラム | |
| WO2025009222A1 (ja) | メッシュ復号装置、メッシュ復号方法及びプログラム | |
| JP2025064207A (ja) | メッシュ復号装置、メッシュ復号方法及びプログラム | |
| JP2025064208A (ja) | メッシュ復号装置、メッシュ復号方法及びプログラム | |
| WO2025074662A1 (ja) | メッシュ復号装置、メッシュ復号方法及びプログラム |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| 121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 23839372 Country of ref document: EP Kind code of ref document: A1 |
|
| WWE | Wipo information: entry into national phase |
Ref document number: 202380052528.0 Country of ref document: CN |
|
| NENP | Non-entry into the national phase |
Ref country code: DE |
|
| WWP | Wipo information: published in national office |
Ref document number: 202380052528.0 Country of ref document: CN |
|
| 122 | Ep: pct application non-entry in european phase |
Ref document number: 23839372 Country of ref document: EP Kind code of ref document: A1 |





