WO2025215917A1 - メッシュ復号装置、メッシュ復号方法及びプログラム - Google Patents
メッシュ復号装置、メッシュ復号方法及びプログラムInfo
- Publication number
- WO2025215917A1 WO2025215917A1 PCT/JP2025/002824 JP2025002824W WO2025215917A1 WO 2025215917 A1 WO2025215917 A1 WO 2025215917A1 JP 2025002824 W JP2025002824 W JP 2025002824W WO 2025215917 A1 WO2025215917 A1 WO 2025215917A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- mesh
- submesh
- vertices
- frame
- current
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three-dimensional [3D] modelling for computer graphics
- G06T17/20—Finite element generation, e.g. wire-frame surface description, tesselation
-
- 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/597—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding specially adapted for multi-view video sequence encoding
Definitions
- the present invention relates to a mesh decoding device, a mesh decoding method, and a program.
- Non-patent document 1 or non-patent document 4 discloses a technique for encoding a mesh using non-patent document 2 or 3 in accordance with the framework of non-patent document 5.
- the present invention has been made in consideration of the above-mentioned problem, and aims to provide a mesh decoding device, mesh decoding method, and program that can decode a base mesh or displacement amount even if the number of vertices in the current frame or current submesh differs from the number of vertices in the reference frame or reference submesh.
- the first feature of the present invention is a mesh decoding device comprising an inter-decoding unit that decodes a base mesh by adding motion vectors decoded from an inter-frame bitstream to a base mesh of a reference frame, and a subdivision unit that subdivides the faces of the base mesh using the base mesh, wherein the inter-decoding unit decodes the number of motion vectors of the current frame or current submesh from the bitstream, and when the decoded number of motion vectors differs from the number of vertices of the reference frame or reference submesh, adjusts the number of vertices and some of the vertex coordinates of the current frame or current submesh.
- a third feature of the present invention is a program that causes a computer to function as a mesh decoding device, the mesh decoding device comprising an inter-decoding unit that decodes a base mesh by adding motion vectors decoded from an inter-frame bitstream to a base mesh of a reference frame, and a subdivision unit that subdivides the faces of the base mesh using the base mesh, and the inter-decoding unit decodes the number of motion vectors of the current frame or current submesh from the bitstream, and when the decoded number of motion vectors differs from the number of vertices of the reference frame or reference submesh, adjusts the number of vertices and some of the vertex coordinates of the current frame or current submesh.
- the present invention provides a mesh decoding device, mesh decoding method, and program that can decode a base mesh or displacement amount even when the number of vertices in the current frame or current submesh differs from the number of vertices in the reference frame or reference submesh.
- 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 a mesh decoding device 200 according to an embodiment.
- FIG. 3A is a diagram showing an example of a base mesh and a subdivision mesh.
- FIG. 3B is a diagram showing an example of a base mesh and a subdivision mesh.
- FIG. 4 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.
- FIG. 5 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.
- FIG. 6 is a diagram showing an example of the correspondence between the vertices of the basic mesh of a P frame and the vertices of the basic mesh of an I frame.
- FIG. 7 is a diagram for explaining Modification Example 1 and Modification Example 2-1.
- FIG. 8 is a diagram for explaining the modified example 2-2.
- FIG. 9 is a diagram showing an example of measurement results of coding efficiency of a control signal.
- FIG. 10 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.
- FIG. 10 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.
- FIG. 11 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.
- FIG. 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 an embodiment.
- FIG. 13 is a diagram illustrating the mesh buffer unit 202C of the basic mesh decoding unit 202 of the mesh decoding device 200 according to an embodiment.
- FIG. 14 is a diagram illustrating the mesh buffer unit 202C of the basic mesh decoding unit 202 of the mesh decoding device 200 according to an embodiment.
- FIG. 15 is a diagram illustrating a modification of the basic mesh decoding unit 202 of the mesh decoding device 200 according to the second modification.
- FIG. 21 is a diagram illustrating a modification of the basic mesh decoding unit 202 of the mesh decoding device 200 according to the second modification.
- FIG. 17 is a diagram illustrating an example of a NAL header.
- FIG. 1 is a diagram showing an example of the configuration of a mesh processing system 1 according to this embodiment.
- the mesh processing system 1 includes a mesh encoding device 100 and a mesh decoding device 200.
- Figure 2 is a diagram showing an example of functional blocks of a mesh decoding device 200 according to this embodiment.
- the mesh decoding device 200 includes 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, a video decoding unit 207, and an atlas data decoding unit 208.
- 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 into which the mesh is divided, and the results of these processes may then be integrated by the patch integration unit 205.
- the mesh is divided into patch 1, which consists of base faces 1 and 2, and patch 2, which consists of base faces 3 and 4.
- the demultiplexing unit 201 is configured to separate the multiplexed bitstream into a base mesh bitstream, a displacement bitstream, a texture bitstream, and an atlas bitstream.
- the subdivision unit 203 is configured to generate and output 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 (first control information and second control information).
- the basic mesh is composed of one submesh or multiple submeshes.
- the base mesh, the added subdivision vertices, and their connection information are collectively referred to as the "subdivision mesh.”
- the submesh, the added subdivision vertices, and their connection information are collectively referred to as the “subdivision submesh.”
- the mesh decoding unit 204 is configured to generate and output a decoded mesh using the control information, the subdivision mesh, the subdivision vertex normals, and the displacement amounts.
- the displacement amount decoding unit 206 is configured to decode the displacement amount bit stream based on the control information to generate and output a displacement amount.
- the video decoding unit 207 is configured to decode and output the texture using a video codec.
- the atlas data decoding unit 208 is configured to decode the atlas bitstream and output control information.
- control signals may be used as metadata by the basic mesh decoding unit 202, subdivision unit 203, mesh decoding unit 204, displacement amount decoding unit 206, and video decoding unit 207.
- the base mesh decoder 202 is configured to decode the base mesh bitstream, generate and output a base mesh.
- the base mesh consists of multiple vertices in three-dimensional space and edges connecting these multiple vertices.
- a basic mesh or decoded mesh is composed of a combination of basic faces or faces represented by three vertices. Therefore, the requirement for bitstream compatibility is that the decoded mesh has three or more vertices, or the control signal indicating the number of vertices is three or more.
- a basic mesh or a decoded mesh may be constructed by combining lines represented by two vertices. Therefore, the requirement for bitstream conformance is that the decoded mesh has two or more vertices, or the control signal indicating the number of vertices is two or more.
- the base mesh decoding unit 202 may be configured to decode the base mesh bitstream using, for example, Draco, which is shown in Non-Patent Document 2, or the technology described in Non-Patent Document 3.
- the basic mesh decoding unit 202 includes a separation unit 202A, an intra-decoding unit 202B, a mesh buffer unit 202C, a connection information decoding unit 202D, and an inter-decoding unit 202E.
- the separation unit 202A is configured to classify the basic mesh bitstream into an I 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, for example, using the technology Draco shown in Non-Patent Document 2 or the technology described in Non-Patent Document 3.
- Figure 5 shows an example of the functional blocks of the intra decoder 202B.
- the intra decoding unit 202B has an arbitrary intra decoding unit 202B1 and an alignment unit 202B2.
- the optional intra decoder 202B1 is configured to decode the coordinates and connectivity information of unordered vertices of an I frame from the I frame bitstream using any method, including the Draco technique described in Non-Patent Document 2 or the technique described in Non-Patent Document 3.
- the sorting unit 202B2 is configured to output vertices by rearranging unordered vertices into a predetermined order.
- the predetermined order may be, for example, Morton code order or raster scan order.
- the alignment unit 202B2 may also combine overlapping vertices, which are multiple vertices with matching coordinates in the decoded base mesh, into a single vertex and then rearrange them in a predetermined order.
- the mesh buffer unit 202C is configured to store the coordinates and connection information of the vertices of the I frame decoded by the intra decoding unit 202B.
- a specific buffer may be provided that stores pairs of vertex indices A(k) and B(k) that exist as overlapping vertices in a predetermined order.
- connection information decoding unit 202D is configured to convert the connection information of the I frame or reference frame extracted from the mesh buffer unit 202C into connection information of the P frame.
- 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 reference frame extracted from the mesh buffer unit 202C to the motion vectors decoded from the P frame bitstream.
- the inter-decoding unit 202E can adjust the index of the vertex of the P frame using the pair of vertex indices A(k) and B(k) that exist as overlapping vertices stored in this specific buffer.
- This decoding method may be arithmetic coding. As a result, it is expected that using arithmetic coding will eliminate any restrictions on the maximum value of the index to be decoded.
- ue(v) an arithmetic coding
- ue(v) indicates leftmost bit-first, zeroth-order exponential-Golomb coding (Exp-Golomb) of an unsigned integer.
- the variable codeNum is assigned as follows:
- codeNum 2 leadingZeroBits -1+read_bits(leadingZeroBits)
- the value returned by read_bits (leadingZeroBits) is interpreted as a binary representation of an unsigned integer written most significant bit first, and the value of ue(v) is equal to the value of codeNum.
- Table 1 shows the structure of an Exp-Golomb code, separating the bit string into "prefix” bits and "suffix” bits.
- prefix bits are those bits that are parsed as specified in the leadingZeroBits calculation and appear as 0 or 1 in the bit string column in Table 1.
- the "suffix" bits are the bits that are analyzed in the calculation of codeNum and are denoted as x i in Table 1, where i ranges from 0 to leadingZeroBits-1. Each x i is equal to either 0 or 1.
- Table 2 shows how to explicitly assign bit strings to codeNum values, where the value of ue(v) is equal to the value of codeNum.
- the motion vector decoded by the inter decoding unit 202E is the 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.
- the inter decoding unit 202E may decode, from the bitstream, a control signal indicating the number of vertices or motion vectors of the current frame or current submesh.
- ⁇ Modification 1 When the control signal indicates the number of vertices of the current frame or current submesh>
- the inter-decoding unit 202E decodes the number of vertices of the current frame or current submesh from the above-mentioned bitstream, the compatibility requirement of such a bitstream is that the number of vertices of the decoded current frame or current submesh must be equal to the number of vertices of the reference frame or reference submesh.
- the inter-decoding unit 202E is configured to preferentially use the number of vertices of the current frame or current submesh decoded from the bitstream.
- the inter-decoding unit 202E may use the number of vertices in the reference frame or reference submesh as the number of vertices in the current frame or current submesh.
- the inter-decoding unit 202E may add dummy vertices to the reference frame or reference submesh.
- the inter-decoding unit 202E may set the coordinates of such dummy vertices to fixed values (e.g., (0,0,0)), or may copy them from a specified vertex (e.g., the last vertex of the reference frame).
- the inter-decoding unit 202E can discard such dummy vertices during processing or as a post-processing step, and if such dummy vertices are discarded, the number of vertices in the current submesh is changed accordingly.
- the inter-decoding unit 202E calculates vertex coordinates up to the number of vertices in the reference frame or reference submesh, and sets the number of vertices in the current frame or current submesh to the number of vertices in the reference frame or reference submesh.
- the inter-decoding unit 202E calculates the vertex coordinates up to the number of vertices in the current frame or current submesh. However, there are vertices whose vertex coordinates have not been calculated, such as v3, v4, and v5 in Figure 7(c).
- anomalous vertices vertices for which vertex coordinates have not been calculated.
- faces that have connection information but no vertex coordinates will be called anomalous faces.
- Solution 1 When the number of vertices in the current frame or current submesh is fewer than that of the reference submesh, the inter-decoding unit 202E may set the coordinates of such abnormal vertices to fixed values (e.g., (0,0,0)) or copy them from a specified vertex (e.g., select one from the non-abnormal vertices). The inter-decoding unit 202E also changes the number of vertices in the current frame or current submesh to the number of vertices in the reference submesh.
- fixed values e.g., (0,0,0
- the inter-decoding unit 202E also changes the number of vertices in the current frame or current submesh to the number of vertices in the reference submesh.
- the inter-decoding unit 202E may copy the coordinates of the abnormal vertices from the vertices of the reference submesh with the same vertex index.
- the inter-decoding unit 202E also changes the number of vertices in the current frame or current submesh to the number of vertices in the reference submesh.
- the inter-decoding unit 202E copies the submesh ID, number of faces, vertex coordinates, and connection information of the reference submesh to the current submesh, and calculates the number of vertices of the current submesh using formula (A).
- DecSummesh.verCoordCount max(refSubmesh.verCoordCount, bm_vertex_count[submeshID]) ...
- DecSummesh.verCoordCount is a control signal indicating the number of vertices of the current submesh
- refSubmesh.verCoordCount is a control signal indicating the number of vertices of the reference submesh
- bm_vertex_count[submeshID] is a control signal indicating the number of motion vectors of the current submesh.
- the inter-decoding unit 202E sets the number of vertices in the current submesh to the number of motion vectors in the current submesh.
- the number of vertices in the current submesh may become the same as the number of vertices in the reference submesh, or the number of vertices in the current submesh may become greater than the number of vertices in the reference submesh.
- the number of vertex coordinates included in the current submesh is the same as that of the reference submesh.
- the inter-decoding unit 202E calculates the vertex coordinates using the following formula (B):
- refSubmesh.verCoordCount is the number of vertices of the reference submesh
- currentSubmeshMotionVectors[v][k] is the k-th dimension motion vector of the v-th vertex of the current submesh
- DecSummesh.verCoords[v][k] is the calculated k-th dimension vertex coordinate of the v-th vertex of the current submesh.
- the inter-decoding unit 202E can discard such dummy vertices during processing or as post-processing, and if such dummy vertices are discarded, the number of vertices of the current submesh is changed accordingly.
- the inter-decoding unit 202E uses the above-mentioned operations to calculate vertex coordinates up to the number of vertices in the reference submesh using motion vectors, and leaves the other vertex coordinates as motion vectors.
- the inter-decoding unit 202E calculates vertex coordinates using motion vectors up to the number of motion vectors in the current submesh, and leaves the other vertex coordinates in the reference submesh.
- the inter-decoding unit 202E copies the submesh ID, number of vertices, number of faces, vertex coordinates, and connection information of the reference submesh to the current submesh.
- the above operation ensures that the number of vertices in the current submesh is the same as the number of vertices in the reference submesh.
- the number of motion vectors may be the same as the number of vertices in the reference submesh (currSubmesh SW), may be less than the number of vertices in the reference submesh (currSubmesh case 1), or may be more than the number of vertices in the reference submesh (currSubmesh case 2).
- the inter-decoding unit 202E calculates vertex coordinates using the decoded motion vectors up to the number of motion vectors in the current submesh, and leaves the other vertex coordinates in the reference submesh.
- the inter-decoding unit 202E sets the number of vertices in the current submesh to the number of vertices in the reference frame, and calculates vertex coordinates using the decoded motion vectors up to the number of vertices in the reference submesh.
- the inter-decoding unit 202E calculates vertex coordinates when the vertex index of the current submesh is between 0 and min(refSubmesh.vertex_count, bm_vertex_count[submeshID])-1.
- refSubmesh.vertex_count is the number of vertices in the reference submesh
- bm_vertex_count[submeshID] is the number of motion vectors in the current submesh.
- the inter-decoding unit 202E sets the number of vertices in the current frame or current submesh to the number of vertices in the reference frame, and calculates vertex coordinates using the decoded motion vectors up to the number of vertices in the reference submesh.
- This configuration is expected to have the effect of ensuring decoding operations for the current frame or current submesh.
- the inter-decoding unit 202E may decode the control signal indicating the number of vertices in the basic mesh or after subdivision for each frame or each submesh using the bit analysis method described in Table 6.
- control signals include mesh_vertex_count, pdu_vertex_count_minus_1[titleID][patchIdx], sismu_inter_vertex_count[subMeshID], etc.
- the inter-decoding unit 202E may also decode the above-mentioned control signals using u(v), ue(v), ae(v), vu(v), etc.
- the inter-decoding unit 202E may decode the above-mentioned control signal using arithmetic coding called ue(v).
- ue(v) indicates leftmost bit-first unsigned integer zeroth-order exponential-Golomb coding (Exp-Golomb).
- the inter-decoding unit 202E may decode the above-mentioned control signal using arithmetic coding called ae(v) using CABAC.
- the inter-decoding unit 202E may decode the above-mentioned control signal using u(v) instead of ue(v).
- the inter decoding unit 202E calculates v from the maximum number of vertices maxVC of all frames or submeshes. Specifically, the inter decoding unit 202E calculates v using the following formula (C):
- This configuration is expected to have the effect of reducing the amount of code required for the control signal indicating the number of vertices. Furthermore, the effect of setting a maximum number of vertices, maxVC, for all frames or submeshes is useful when defining profiles and levels.
- vu(v) instead of u(v) has the effect of improving coding efficiency compared to using ue(v), as shown in Figure 9, and vu(v) can be analyzed using the following procedure without calculating v.
- the first bit of each 8-bit string is a flag indicating whether the next 8 bits should be analyzed, and the other 7 bits indicate the value.
- vu(v) may be changed to ue(v).
- syntax indicating the number of vertices and faces mentioned above is a large value, so standardizing the syntax bit analysis method has the effect of reducing the complexity of the decoder, as well as the complexity of the hardware design and enabling chip sharing.
- the requirements for bitstream compatibility may also be that the above-mentioned pdu_vertex_count_minus_1[titleID][patchIdx] and sismu_inter_vertex_count[subMeshID] do not contradict each other, or that pdu_vertex_count_minus_1[titleID][patchIdx] and mesh_vertex_count do not contradict each other.
- the atlas data decoding unit 208 calculates a variable called AtlasTotalNumMeshpatches from a control signal called afmi_num_submeshes_minus2 defined in the atlas sub-bitstream.
- AtlasTotalNumMeshpatches indicates the displacement amount and number of texture sub-meshes in the corresponding frame.
- the basic mesh decoding unit 202 calculates the number of submeshes of the basic mesh in the frame to be decoded using bmsi_num_submeshes_minus2 defined in the basic mesh sub-bitstream.
- the remaining final sub-meshes may be reconstructed using the existing displacement amounts and textures of the remaining basic meshes.
- Such reconstruction is performed in the reconstruction process (see Figure 2).
- This reconstruction process is performed by the subdivision unit 203, mesh decoding unit 204, and patch integration unit 205.
- the requirement for bitstream compatibility may be that AtlasTotalNumMeshpatches is less than the number of submeshes in the base mesh, or that AtlasTotalNumMeshpatches is the same as the number of submeshes in the base mesh.
- AtlasTotalNumMeshpatches when AtlasTotalNumMeshpatches is greater than the number of submeshes in the base mesh, AtlasTotalNumMeshpatches may be changed to the number of submeshes in the base mesh.
- AtlasTotalNumMeshpatches is greater than the number of submeshes of the base mesh, and there are not enough submeshes of the base mesh, the missing parts can be made into submeshes of a specific base mesh.
- the first submesh among the submeshes with the same number of vertices may be selected as the submesh of that particular base mesh.
- FIG. 10 is a diagram showing an example of functional blocks of the inter decoding unit 202E.
- the inter-decoding unit 202E has 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 the P frame bitstream.
- MVR Motion Vector Residual
- MVR is the motion vector residual indicating the difference between MV (Motion Vector) and MVP (Motion Vector Prediction).
- MV is the 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 the predicted value of the MV of the target vertex using MV (motion vector prediction value).
- the motion vector buffer unit 202E2 is configured to sequentially store the MVs output by the motion vector calculation unit 202E4.
- the motion vector prediction unit 202E3 is configured to obtain decoded MVs from the motion vector buffer unit 202E2 for vertices connected to the vertex to be decoded, and output the MVP of the vertex to be decoded using all or part of the obtained decoded MVs, as shown in Figure 11.
- 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 is configured to add the coordinates of the vertex corresponding to the vertex to be decoded, obtained from the decoded base mesh of the corresponding reference frame (I frame or P frame), to the motion vector MV output from the motion vector calculation unit 202E3, and output the coordinates of the vertex to be decoded.
- FIG. 12 shows a flowchart illustrating an example of the operation of the motion vector prediction unit 202E3.
- the operation of the motion vector prediction unit 202E3 will be referred to as the "average prediction method.”
- step S1001 the motion vector prediction unit 202E3 sets MVP and N to 0.
- step S1002 the motion vector prediction unit 202E3 obtains from the motion vector buffer unit 202E2 a set of motion vectors for vertices surrounding the vertex to be decoded, 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.
- 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 if N is greater than 0, the motion vector prediction unit 202E3 outputs the result of dividing MVP by N; if N is 0, it outputs 0 and ends processing.
- the motion vector prediction unit 202E3 is configured to output the MVP to be decoded by averaging the decoded motion vectors of the vertices surrounding the vertex to be decoded.
- the motion vector prediction unit 202E3 may be configured to set the MVP to 0 if the set of decoded motion vectors is an empty set.
- 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).
- 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.
- MVP is used to encode only MVR instead of MV, which is expected to improve encoding efficiency.
- 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 that vertex, and to leave the connectivity information (Connectivity) as it is in the reference frame.
- the adder 202E5 may be configured to calculate the coordinate 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 kth vertex to be decoded in the frame to be decoded
- v' j (k) is the coordinate of the decoded kth vertex in the reference frame
- 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 the MVP using decoded MVs, so the order of decoding affects the MVP.
- the order of this decoding is the order in which the vertices of the base mesh in the reference frame are decoded.
- the decoding method uses a fixed repeating pattern to increase the number of base faces by one from the starting edge, the order of the vertices of the decoded base mesh is determined during the decoding process.
- the motion vector prediction unit 202E3 may use an edgebreaker to determine the order in which vertices are decoded in the base mesh of the reference frame.
- the mesh buffer unit 202C is configured to store one or more decoded reference basic meshes in a predetermined order.
- Such basic meshes contain metadata such as frame numbers and submesh numbers, as well as at least the coordinates of each vertex and the index of that vertex, and are stored in the mesh buffer unit 202C in a predetermined order determined by the reference frame list.
- this reference frame list (ref_list0) is a list of information identifying all reference decoding base meshes stored in the mesh buffer unit 202C.
- the reference frame list may be determined by control signals decoded from the bitstream, as shown in Figure 13, or may be calculated naturally from the decoding order of the frames.
- control signal decoded from the bitstream may be represented by a relative distance from the frame to be decoded, or by an absolute frame index.
- control signal may use a short-term or long-term reference frame.
- the frames may be arranged in order of a certain number of frames starting from the most recently decoded frame. That is, the reference frame list may be ⁇ 0, ⁇ 1, ⁇ 2, ..., ⁇ (N ⁇ 1) ⁇ .
- the reference frame list does not change for each frame except under special circumstances (for example, when a re-ordering command is received).
- the mesh buffer unit 202C may be updated as follows:
- the mesh buffer unit 202C deletes one or more existing reference frames in a predetermined order determined by the reference frame list, and inserts one or more base meshes including the base mesh of the decoded frame, or creates and inserts one base mesh from multiple base meshes, thereby adjusting the order of the reference frames.
- Such deletion operations may be performed only when the mesh buffer unit 202C is full.
- the number of basic meshes that can be stored in the mesh buffer unit 202C is determined in advance.
- the mesh buffer unit 202C is defined as being full when this number of basic meshes is reached.
- a single base mesh may be created by taking a weighted average of the vertex coordinates corresponding to the base mesh of the decoded frame and the existing base meshes stored in the mesh buffer unit 202C.
- the weights used in such a weighted average may be predetermined, calculated using a frame index, or decoded from the control signal.
- the mesh buffer unit 202C when it receives a control signal indicating a re-ordering instruction from a control signal decoded from the bitstream, it updates the reference frame list as shown in Figure 14 and adjusts the order of the reference frames according to the specified order determined by the updated reference frame list (ref_list0).
- 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 reference frame retrieved from the mesh buffer unit 202C and the motion vectors decoded from the bitstream of the P frame.
- the inter-decoding unit 202E can adjust the indices of vertices in P frames using pairs of indices A(k) and B(k) of vertices existing as overlapping vertices stored in the specified buffer. All or part of these indices are decoded from the bitstream.
- This decoding method may be arithmetic coding. With this configuration, the use of arithmetic coding can be expected to have the effect of eliminating restrictions on the maximum value of the index to be decoded. For example, arithmetic coding called ue(v) may be used.
- the signaling and parsing method for the information about the above-mentioned overlapping vertices may be as follows:
- bmidu_derived_mv_present_flag[submeshID] is a flag indicating whether bmidu_mv_signaled_flag is present in the bitstream.
- bmidu_mv_signaled_flag_count[submeshID] is the number of bmidu_mv_signaled_flag.
- bmidu_mv_signaled_flag is a flag that indicates whether motion vectors for overlapping vertices are present in the bitstream.
- the number of motion vectors that are not signaled in the bitstream is counted, and the index of the corresponding motion vector is not specified in the submesh.
- a conversion process is performed to identify the index of the corresponding motion vector within the submesh.
- the inter-decoding unit 202E allows subsequent frames to be referenced, so the decoding order and display order are different.
- the display order is the same as the input order when encoding, and the same as the output order when decoding.
- the decoding order is the same as the output order when encoding, and the same as the input order when decoding.
- such a reference frame may be calculated by taking a weighted average of the subsequent frame and one or more other frames.
- MR_SUBMESH MR frame or B frame
- smh_type a new frame type
- such other frame may be the decoded frame immediately before the target frame, as shown in Figure 16.
- weights may be calculated using the frame interval between the target frame and the subsequent frame and the frame interval between the target frame and other frames, or may be determined in advance.
- the basic mesh decoding unit 202 decodes the control signal (smh_mesh_from_order_cnt_lsb) from the bitstream and decodes the order of the output.
- the value indicated by this control signal may be the difference from the display order of the frame to be decoded, or may be the order within a predetermined group of frames, MaxMeshFrmOrderCntLsb.
- the basic mesh decoding unit 202 may rearrange the decoded basic meshes in the display order (Display Order).
- control signals are defined for each frame to indicate whether to decode the base mesh, displacement, and texture, and each is decoded from the bitstream.
- the Temporal_ID of the atlas and the base mesh may be matched within the same frame. Further, the Temporal_ID of the atlas and the texture may be matched within the same frame. Further, the Temporal_ID of the atlas and the displacement amount may be matched within the same frame.
- This configuration is expected to have the effect of preventing frames from being undecoded and avoiding unnecessary data.
- Adjacent frames with the same Temporal_ID have the closest POC.
- the decoding order of atlases and base meshes that have the same display order may be matched. Furthermore, the decoding order of atlases and displacement amounts that have the same display order may be matched. Furthermore, the decoding order of atlases and textures that have the same display order may be matched.
- Random access points of an atlas and a base mesh that have the same display order may be matched.
- the random access points of an atlas and a displacement amount that have the same display order may be matched.
- the random access points of an atlas and a texture that have the same display order may be matched. Random access points are defined in Non-Patent Document 4 or Non-Patent Document 5.
- This configuration is expected to have the effect of allowing the mesh to be reproduced without waiting for the base mesh, displacement, and texture to be decoded separately.
- frames with a Temporal_ID higher than the control signal Temporal_ID of the frame to be decoded are not used as reference frames for that frame.
- NAL Network Abstraction Layer
- the TID defined as the last three bits in the NAL header, is Temporal_ID plus 1.
- the TID range is 1 to 7, with zero prohibited.
- LayerID/R6 defined as the 6 bits immediately preceding the TID in the NAL header, specifies the identifier of the layer to which the NAL unit belongs.
- the value of LayerID/R6 must be in the range of 0 to 62.
- the value 63 may be specified by ISO/IEC in the future.
- the mesh decoding device 200 ignores all data following the value 63 in a NAL unit, and a mesh decoding device 200 conforming to the specified profile ignores (i.e., removes from the bitstream and discards) all NAL units whose LayerID-R6 value is not 0.
- the value 63 of LayerID/R6 can be used to indicate an enhancement layer identifier in future enhancements.
- Non-Patent Document 5 can be used, and for the displacement and texture, the video coding methods HEVC and VVC can be used, so the following will explain the basic mesh.
- the LayerID/R6 values of all BMCL NAL units of an encoded basic mesh frame must be the same.
- the LayerID/R6 value of an encoded basic mesh frame is the LayerID/R6 value of the BMCL NAL units of the encoded basic mesh frame.
- NALType is in the range from NAL_BLA_W_LP to NAL_RSV_BMCL_29 defined in Non-Patent Document 4, i.e., if it belongs to an IRAP-coded basic mesh frame, Temporal_ID must be 0.
- NALType is equal to 0 and NALType is equal to NAL_STSA_R or NAL_STSA_N, Temporal_ID must not be equal to 0.
- Temporal_ID must be the same for all BMCL NAL units within an access unit.
- Temporal_ID of a coded basic mesh frame or access unit is the value of Temporal_ID of the BMCL NAL unit of the coded basic mesh frame or access unit.
- Temporal_ID for a sublayer representation is the maximum value of Temporal_ID for all BMCL NAL units within the sublayer representation.
- Temporal_ID for non-BMCL NAL units are restricted as follows: If NALType is equal to NAL_BMSPS, Temporal_ID shall be 0 and the Temporal_ID of the access unit containing the NAL unit shall be 0. Otherwise, if NALType is equal to NAL_EOS or NAL_EOB, Temporal_ID must be 0. Otherwise, if NALType is equal to NAL_AUD or NALLFDD, Temporal_ID must be equal to the Temporal_ID of the access unit containing the NALL unit. Otherwise, Temporal_ID must be greater than or equal to the Temporal_ID of the access unit containing the NAL unit.
- the value of Temporal_ID is equal to the minimum value of the Temporal_ID values of all access units to which the non-BMCL NAL unit applies.
- Temporal_ID can be greater than or equal to the Temporal_ID of the included access unit, since all basic mesh frame parameter sets (BMFPS) are included at the beginning of the bitstream, where the Temporal_ID of the first coded basic mesh frame is 0.
- the skip decoding unit 202F refers to the specified tIDTarget and discards NAL units whose Temporal_ID is higher than tIDTarget without decoding them.
- tIDTarget may be specified by a predetermined value, or may be specified based on the network conditions or the terminal capabilities of the mesh decoding device 200.
- a lower tIDTarget is specified in the wireless case than in the wired case. Also, a lower tIDTarget is specified when the network conditions are poor. Also, a lower tIDTarget is specified when decoding is performed by a mesh decoding device 200 with low specifications.
- bitstream conformance is that there must be at least one NAL unit in the bitstream whose Temporal_ID is not higher than tIDTarget.
- NAL Network Abstraction Layer
- the TID defined as the last three bits in the NAL header, is Temporal_ID plus 1.
- the TID range is 1 to 7, with zero prohibited.
- LayerID/R6 defined as the 6 bits immediately preceding the TID in the NAL header, specifies the identifier of the layer to which the NAL unit belongs.
- the value of LayerID/R6 must be in the range of 0 to 62.
- the value 63 may be specified by ISO/IEC in the future.
- the mesh decoding device 200 ignores all data following the value 63 in a NAL unit, and a mesh decoding device 200 conforming to the specified profile ignores (i.e., removes from the bitstream and discards) all NAL units whose LayerID-R6 value is not 0.
- the value 63 of LayerID/R6 can be used to indicate an enhancement layer identifier in future enhancements.
- the TID may be set independently for each bitstream of the atlas, base mesh, displacement, and texture.
- the TID is fixed to zero according to Annex A of Non-Patent Document 5. Therefore, the TID is set independently for each of the base mesh, displacement, and texture.
- At least one of the base mesh, displacement, and texture may have Temporal_ID fixed to zero.
- the LD setting can also be used. Table 7 shows an example.
- the displacement and texture will use the HEVC or VVC video coding format, and the base mesh will use the above-mentioned embodiment.
- the tIDTarget specified in each bitstream is referenced, and NAL units with a TID higher than tIDTarget are discarded without being decoded.
- tIDTarget may be specified by a predetermined value, or may be specified based on the network conditions or the terminal capabilities of the mesh decoding device 200.
- a lower tIDTarget is specified in the wireless case than in the wired case. Also, a lower tIDTarget is specified when the network conditions are poor. Also, a lower tIDTarget is specified when decoding is performed by a mesh decoding device 200 with low specifications.
- bitstream conformance is that there must be at least one NAL unit in the bitstream whose TID is not higher than tIDTarget.
- each bitstream is set independently, if any of the base mesh, displacement, or texture is discarded in a particular frame, the others will also be discarded.
- each bitstream is set independently, if the base mesh is discarded in a specific frame, the displacement and texture are also discarded, and the reconstruction process is not performed. However, if the displacement is discarded, all displacement values are set to zero, and the reconstruction process is performed. Also, if the texture is discarded, all texture values are set to zero, and the reconstruction process is performed.
- sub-meshes may differ for each frame (intraframe, interframe, and skip frame).
- the intra decoding unit 202B, inter decoding unit 202E, and skip decoding unit 202F assign unique submesh IDs to each submesh in each frame.
- the intra decoding unit 202B and the inter decoding unit 202E may assign different Submesh IDs to corresponding submeshes between frames.
- the inter-decoding unit 202E can only reference submeshes with the same Submesh ID within the reference frame.
- the inter-decoding unit 202E can only reference sub-meshes that have the same number of vertices in the reference frame.
- the intra-decoding unit 202B and the inter-decoding unit 202E may refer to a sub-mesh specified in the reference frame.
- the inter-decoding unit 202E may decode a control signal specifying the Submesh ID of a referenceable submesh from the bitstream of the current submesh.
- the inter-decoding unit 202E may treat this submesh as a referenceable submesh.
- the inter decoding unit 202E or the skip decoding unit 202F sets the submesh ID of the referenceable submesh to the same submesh ID as the submesh in the current frame.
- the inter-decoding unit 202E may also decode a control signal from the bitstream that indicates whether the above-mentioned control signal is present.
- the inter-decoding unit 202E may decode a control signal that selects the method for determining the above-mentioned referenceable sub-meshes.
- the subdivision unit 203 and the displacement amount decoding unit 206 may follow Non-Patent Document 4.
- the amount of calculation can be reduced by reusing the reference frame itself, rather than searching for adjacent vertices that have already been decoded.
- the base mesh of the current frame can be decoded even if the number of vertices of the base mesh of the current frame differs from the number of vertices of the reference frame or reference sub-mesh.
- inter-prediction coding it is possible to identify which sub-mesh to reference even if there is no information about which sub-mesh to reference in the reference frame of the current frame.
- this embodiment ensures that the base mesh has at least one face.
- the Temporal_scalability function can be realized.
- the mesh encoding device 100 and mesh decoding device 200 described above may be realized as a program that causes a computer to execute each function (each process).
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Computer Graphics (AREA)
- Geometry (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
現フレーム又は現サブメッシュの頂点数と参照フレーム又は参照サブメッシュの頂点数とが異なる場合に、基本メッシュ又は変位量を復号すること。本発明に係るメッシュ復号装置200において、インター復号部202Eは、インター復号部202Eは、ビットストリームから現フレーム又は現サブメッシュの動きベクトル数を復号し、復号した動きベクトル数が参照フレーム又は参照サブメッシュの頂点数と異なる時に、現フレーム又は現サブメッシュの頂点数及び一部の頂点座標を調整する。
Description
本発明は、メッシュ復号装置、メッシュ復号方法及びプログラムに関する。
非特許文献1又は非特許文献4には、非特許文献5のフレームワークに従って、非特許文献2又は3を用いてメッシュを符号化する技術が開示されている。
Khaled Mammou, Jungsun Kim, Alexis M Tourapis, Dimitri Podborski, and Krasimir Kolarov, "[V-CG] Apple’s Dynamic Mesh Coding CfP Response," April 2022, ISO/IEC JTC 1/SC 29/WG 7 m59281.
Google Draco、2022年5月26日アクセス[Online]、https://google.github.io/draco
Jean-Eudes Marvie, Olivier Mocquard, "[V-DMC][EE4.4-related] An efficient EdgeBreaker implementation," April 2023, ISO/IEC JTC 1/SC 29/WG 7 m63344.
"WD 6.0 of V-DMC," Jan. 2024, ISO/IEC JTC 1/SC 29/WG 7 N00822.
"Information technology - Coded Representation of Immersive Media - Part 5: Visual Volumetric Video-based Coding (V3C) and Video-based Point Cloud Compression (V-PCC)," ISO/IEC JTC 1/SC 29/WG 7, ISO/IEC 23090-5:2021(2E).
しかしながら、従来技術では、インター予測符号化において現フレーム又は現サブメッシュの頂点数と参照フレーム又は参照サブメッシュの頂点数とが異なる場合、正しくメッシュを復号できないという問題点があった。 そこで、本発明は、上述の課題に鑑みてなされたものであり、現フレーム又は現サブメッシュの頂点数と参照フレーム又は参照サブメッシュの頂点数とが異なる場合であっても、基本メッシュ又は変位量を復号することができるメッシュ復号装置、メッシュ復号方法及びプログラムを提供することを目的とする。
本発明の第1の特徴は、メッシュ復号装置であって、インターフレームのビットストリームから復号した動きベクトルと参照フレームの基本メッシュとを加算することで、基本メッシュを復号するインター復号部と、前記基本メッシュを用いて、基本メッシュの面を細分割する細分割部とを備え、前記インター復号部は、ビットストリームから現フレーム又は現サブメッシュの動きベクトル数を復号し、復号した前記動きベクトル数が参照フレーム又は参照サブメッシュの頂点数と異なる時に、前記現フレーム又は前記現サブメッシュの頂点数及び一部の頂点座標を調整することを要旨とする。
本発明の第2の特徴は、メッシュ復号方法であって、インターフレームのビットストリームから復号した動きベクトルと参照フレームの基本メッシュとを加算することで、基本メッシュを復号する工程Aと、前記基本メッシュを用いて、基本メッシュの面を細分割する工程Bとを有し、前記工程Aにおいて、ビットストリームから現フレーム又は現サブメッシュの動きベクトル数を復号し、復号した前記動きベクトル数が参照フレーム又は参照サブメッシュの頂点数と異なる時に、前記現フレーム又は前記現サブメッシュの頂点数及び一部の頂点座標を調整することを要旨とする。
本発明の第3の特徴は、コンピュータを、メッシュ復号装置として機能させるプログラムであって、前記メッシュ復号装置は、インターフレームのビットストリームから復号した動きベクトルと参照フレームの基本メッシュとを加算することで、基本メッシュを復号するインター復号部と、前記基本メッシュを用いて、基本メッシュの面を細分割する細分割部とを備え、前記インター復号部は、ビットストリームから現フレーム又は現サブメッシュの動きベクトル数を復号し、復号した前記動きベクトル数が参照フレーム又は参照サブメッシュの頂点数と異なる時に、前記現フレーム又は前記現サブメッシュの頂点数及び一部の頂点座標を調整することを要旨とする。
本発明によれば、現フレーム又は現サブメッシュの頂点数と参照フレーム又は参照サブメッシュの頂点数とが異なる場合であっても、基本メッシュ又は変位量を復号することができるメッシュ復号装置、メッシュ復号方法及びプログラムを提供することができる。
以下、本発明の実施の形態について、図面を参照しながら説明する。なお、以下の実施形態における構成要素は、適宜、既存の構成要素等との置き換えが可能であり、また、他の既存の構成要素との組み合わせを含む様々なバリエーションが可能である。したがって、以下の実施形態の記載をもって、特許請求の範囲に記載された発明の内容を限定するものではない。
<第1実施形態>
以下、図1~図17を参照して、本実施形態に係るメッシュ処理システムについて説明する。
以下、図1~図17を参照して、本実施形態に係るメッシュ処理システムについて説明する。
図1は、本実施形態に係るメッシュ処理システム1の構成の一例を示す図である。図1に示すように、メッシュ処理システム1は、メッシュ符号化装置100及びメッシュ復号装置200を備えている。
図2は、本実施形態に係るメッシュ復号装置200の機能ブロックの一例を示す図である。
図2に示すように、メッシュ復号装置200は、多重分離部201と、基本メッシュ復号部202と、細分割部203と、メッシュ復号部204と、パッチ統合部205と、変位量復号部206と、映像復号部207と、アトラスデータ復号部208とを有する。
ここで、基本メッシュ復号部202、細分割部203、メッシュ復号部204及び変位量復号部206は、メッシュを分割したパッチ単位で処理を行うように構成されており、その後、これらの処理結果についてパッチ統合部205で統合されるように構成されていてもよい。
図3Aの例では、メッシュが、基本面1及び2で構成されるパッチ1と、基本面3及び4で構成されるパッチ2とに分割されている。
多重分離部201は、多重化されたビットストリームを、基本メッシュビットストリームと変位量ビットストリームとテクスチャビットストリームとアトラス(atlas)ビットストリームとに分離するように構成されている。
細分割部203は、制御情報(第1制御情報及び第2制御情報)によって示された細分割手法により、基本メッシュ復号部202によって復号された基本メッシュから、細分割頂点及びそれらの接続情報を生成して出力するように構成されている。基本メッシュは、1つのサブメッシュ又は複数のサブメッシュから構成されている。
ここで、基本メッシュ、追加された細分割頂点、及び、それらの接続情報を、併せて「細分割メッシュ」と呼ぶ。また、サブメッシュ、追加された細分割頂点、及び、それらの接続情報を、併せて「細分割サブメッシュ」と呼ぶ。
メッシュ復号部204は、制御情報及び細分割メッシュ及び細分割頂点法線及び変位量を用いて、復号メッシュを生成して出力するように構成されている。
変位量復号部206は、制御情報に基づき変位量ビットストリームを復号して変位量を生成して出力するように構成されている。
映像復号部207は、映像コーデックによってテクスチャを復号して出力するように構成されている。
アトラスデータ復号部208は、アトラスビットストリームを復号して制御情報を出力するように構成されている。かかる制御信号は、メタデータとして基本メッシュ復号部202、細分割部203、メッシュ復号部204、変位量復号部206及び映像復号部207で利用されてもよい。
<基本メッシュ復号部202>
基本メッシュ復号部202は、基本メッシュビットストリームを復号し、基本メッシュを生成して出力するように構成されている。
基本メッシュ復号部202は、基本メッシュビットストリームを復号し、基本メッシュを生成して出力するように構成されている。
ここで、基本メッシュは、3次元空間における複数の頂点と、かかる複数の頂点を接続する辺とで構成される。
なお、図3Aに示すように、基本メッシュ又は復号メッシュは、3つの頂点で表現される基本面又は面を組み合わせて構成される。そこで、ビットストリームの適合性の要件は、復号したメッシュに3つ以上の頂点があること、或いは、頂点数を示す制御信号が3以上であることである。
なお、基本メッシュ又は復号メッシュは、2つの頂点で表現される線を組み合わせて構成されてもよい。そこで、ビットストリームの適合性の要件は、復号したメッシュに2つ以上の頂点があること、或いは、頂点数を示す制御信号が2以上であることである。
基本メッシュ復号部202は、例えば、非特許文献2に示すDraco又は非特許文献3に記載されている技術を用いて、基本メッシュビットストリームを復号するように構成されていてもよい。
図4に示すように、基本メッシュ復号部202は、分離部202Aと、イントラ復号部202Bと、メッシュバッファ部202Cと、接続情報復号部202Dと、インター復号部202Eとを備える。
分離部202Aは、基本メッシュビットストリームを、IフレームのビットストリームとPフレームのビットストリームとに分類するように構成されている。
(イントラ復号部202B)
イントラ復号部202Bは、例えば、非特許文献2に示すDraco又は非特許文献3に記載されている技術を用いて、Iフレームのビットストリームから、Iフレームの頂点の座標及び接続情報を復号するように構成されている。
イントラ復号部202Bは、例えば、非特許文献2に示すDraco又は非特許文献3に記載されている技術を用いて、Iフレームのビットストリームから、Iフレームの頂点の座標及び接続情報を復号するように構成されている。
図5は、イントラ復号部202Bの機能ブロックの一例を示す図である。
図5に示すように、イントラ復号部202Bは、任意イントラ復号部202B1と、整列部202B2とを有する。
任意イントラ復号部202B1は、非特許文献2に示すDraco又は非特許文献3に記載されている技術を含む任意の方式を用いて、Iフレームのビットストリームから、Iフレームの順序無し頂点の座標及び接続情報を復号するように構成されている。
整列部202B2は、順序無し頂点を所定の順序に並び替えることによって頂点を出力するように構成されている。
所定の順序として、例えば、モートンコード順を用いてもよく、ラスタスキャン順を用いてもよい。
また、整列部202B2は、復号された基本メッシュにおいて座標が一致する複数の頂点である重複頂点をまとめて、単一頂点としてから、所定の順序に並び替えてもよい。
メッシュバッファ部202Cは、イントラ復号部202Bによって復号されたIフレームの頂点の座標及び接続情報を蓄積するように構成されている。ここで、重複頂点として存在する頂点のインデックスA(k)及びB(k)のペアを所定順で保存する特定バッファが設けられていてもよい。
接続情報復号部202Dは、メッシュバッファ部202Cから取り出したIフレーム又は参照フレームの接続情報をPフレームの接続情報にするように構成されている。
インター復号部202Eは、メッシュバッファ部202Cから取り出した参照フレームの頂点の座標とPフレームのビットストリームから復号した動きベクトルとを加算することによって、Pフレームの頂点の座標を復号するように構成されている。
更に、インター復号部202Eは、かかる特定バッファに保存されている重複頂点として存在する頂点のインデックスA(k)及びB(k)のペアにより、Pフレームの頂点のインデックスを調整することが可能である。
ここで、上述のインデックスの全部又は一部は、ビットストリームから復号される。かかる復号方法は、算術符号化でもよい。この結果、算術符号化を用いて復号対象のインデックスの最大値に制限が無くなるという効果が期待できる。
例えば、ue(v)という算術符号化を使ってもよい。ue(v)は、左端ビットファーストで符号なし整数0次の指数ゴロム符号化(Exp-Golomb)を示す。
具体的には、ue(v)の構文要素の解析プロセスは、ビットストリーム内の現在の位置から始まり、最初の非ゼロビットを含むビットを読み取って、0に等しい先行ビット数を数えることから始まる。このプロセスは、次のように指定される。
leadingZeroBits=-1
for(b=0;!b;leadingZeroBits++
b=read_bits(l)
次に、変数codeNumが、次のように割り当てられる。
leadingZeroBits=-1
for(b=0;!b;leadingZeroBits++
b=read_bits(l)
次に、変数codeNumが、次のように割り当てられる。
codeNum=2leadingZeroBits-1+read_bits(leadingZeroBits)
ただし、read_bits(leadingZeroBits)の返す値は、最上位ビットが先に書かれた符号なし整数の2進表現として解釈される。また、ue(v)の値は、codeNumの値に等しい。
ただし、read_bits(leadingZeroBits)の返す値は、最上位ビットが先に書かれた符号なし整数の2進表現として解釈される。また、ue(v)の値は、codeNumの値に等しい。
表1は、ビット列を「接頭辞」ビットと「接尾辞」ビットとに分離して、Exp-Golombコードの構造を示している。
ここで、「接頭辞」ビットは、leadingZeroBitsの計算で指定されたように解析されるビットであり、表1のビット列の列に0又は1として表示される。
「接尾辞」ビットは、codeNumの計算で解析されるビットであり、表1においてxiとして表示される。iは、0からleadingZeroBits-1までの範囲にある。各xiは、0又は1のいずれかに等しい。
表2は、ビット列をcodeNumの値に明示的に割り当てる方法を示す。ここで、ue(v)の値は、codeNumの値に等しい。
本実施形態では、図6に示すように、Pフレームの基本メッシュの頂点と参照フレーム(Iフレーム又はPフレーム)の基本メッシュの頂点との間で対応関係が存在する。ここで、インター復号部202Eによって復号される動きベクトルは、Pフレームの基本メッシュの頂点の座標とIフレームの基本メッシュの頂点の座標との差分ベクトルである。
なお、インター復号部202Eは、ビットストリームから、現フレーム又は現サブメッシュの頂点数又は動きベクトル数を示す制御信号を復号してもよい。
<変更例1:制御信号が現フレーム又は現サブメッシュの頂点数を示す場合>
ここで、インター復号部202Eが、上述のビットストリームから現フレーム又は現サブメッシュの頂点数を復号する場合、かかるビットストリームの適合性の要件は、復号した現フレーム又は現サブメッシュの頂点数が参照フレーム又は参照サブメッシュの頂点数と等しくなければならないということである。
<変更例1:制御信号が現フレーム又は現サブメッシュの頂点数を示す場合>
ここで、インター復号部202Eが、上述のビットストリームから現フレーム又は現サブメッシュの頂点数を復号する場合、かかるビットストリームの適合性の要件は、復号した現フレーム又は現サブメッシュの頂点数が参照フレーム又は参照サブメッシュの頂点数と等しくなければならないということである。
なお、インター復号部202Eは、上述のビットストリームから現フレーム又は現サブメッシュの頂点数を復号する場合、復号した現フレーム又は現サブメッシュの頂点数と参照フレーム又は参照サブメッシュの頂点数とが異なる場合、ビットストリームから復号した現フレーム又は現サブメッシュの頂点数を優先して利用するように構成されている。
また、インター復号部202Eは、参照フレーム又は参照サブメッシュの頂点数を、そのまま現フレーム又は現サブメッシュの頂点数として利用してもよい。
かかる場合、インター復号部202Eは、現フレーム又は現サブメッシュの頂点数が参照フレーム又は参照サブメッシュの頂点数よりも多い場合(表3のCurrSubmesh case2)、参照フレーム又は参照サブメッシュに対して、ダミー頂点を追加してもよい。
ここで、インター復号部202Eは、かかるダミー頂点の座標を固定値(例えば、(0,0,0))としてもよいし、所定頂点(例えば、参照フレームの最後の頂点)からコピーしてもよい。
ただし、かかるダミー頂点が、接続情報を持っていないため、インター復号部202Eは、かかるダミー頂点を処理中に又は後処理として捨てることができ、かかるダミー頂点を捨てる場合、現サブメッシュの頂点数を相応に変更する。
なお、ビットストリームから現フレーム又は現サブメッシュの頂点数を復号し、現フレーム又は現サブメッシュの頂点数が参照フレーム又は参照サブメッシュの頂点数よりも少ない場合(表3のCurrSubmesh case2)、インター復号部202Eは、参照フレーム又は参照サブメッシュの頂点数まで頂点座標を算出し、現フレーム又は現サブメッシュの頂点数を参照フレーム又は参照サブメッシュの頂点数にする。
具体的に、まず、インター復号部202Eは、現フレーム又は現サブメッシュの頂点数まで頂点座標を算出する。ただし、図7(c)のv3やv4やv5のように、頂点座標が算出されていない頂点が存在する。
ここで、接続情報は、参照サブメッシュからコピーされるため、例えば、図7(c)の点線で示した面(v0,v2,v3)や面(v2,v4,v3)や面(v2,v5,v4)や面(v1,v5,v2)のように、接続情報を持っているのに頂点座標を持っていない面(face)が存在する。
以後、頂点座標を算出していない頂点については異常頂点と呼ぶ。また、接続情報を持っているのに頂点座標を持っていない面については異常面と呼ぶ。
異常面を細分割(Subdivision)すると、細分割の出力の1つとして中間点の座標が算出できないという課題がある。
かかる課題に対して、以下のような解決策1/2がある。
解決策1:インター復号部202Eは、現フレーム又は現サブメッシュの頂点数が参照サブメッシュより少ない時に、かかる異常頂点の座標を固定値(例えば、(0,0,0))としてもよいし、所定頂点(例えば、非異常頂点から1つを選定する)からコピーしてもよい。また、インター復号部202Eは、現フレーム又は現サブメッシュの頂点数を参照サブメッシュの頂点数に変更する。
解決策2:インター復号部202Eは、現フレーム又は現サブメッシュの頂点数が参照サブメッシュより少ない時に、異常頂点の座標を同じ頂点インデックスの参照サブメッシュの頂点からコピーしてもよい。また、インター復号部202Eは、現フレーム又は現サブメッシュの頂点数を参照サブメッシュの頂点数に変更する。
かかる構成によれば、現フレーム又は現サブメッシュの復号動作を保障するという効果が期待できる。
<変更例2:制御信号が現フレーム又は現サブメッシュの動きベクトル数を示す場合>
本変更例2では、現サブメッシュを使うケースについて説明する。なお、本変更例2は、現フレームを使うケースにも適用可能である。
(変更例2-1)
ここで、インター復号部202Eは、上述のビットストリームから現サブメッシュの動きベクトル数を復号する場合、復号した現サブメッシュの動きベクトル数と参照サブメッシュの頂点数とが異なる時に、現サブメッシュの頂点数及び一部の頂点座標を調整する。
<変更例2:制御信号が現フレーム又は現サブメッシュの動きベクトル数を示す場合>
本変更例2では、現サブメッシュを使うケースについて説明する。なお、本変更例2は、現フレームを使うケースにも適用可能である。
(変更例2-1)
ここで、インター復号部202Eは、上述のビットストリームから現サブメッシュの動きベクトル数を復号する場合、復号した現サブメッシュの動きベクトル数と参照サブメッシュの頂点数とが異なる時に、現サブメッシュの頂点数及び一部の頂点座標を調整する。
まず、インター復号部202Eは、初期化操作として、参照サブメッシュのサブメッシュID、面数、頂点座標及び接続情報を現サブメッシュにコピーし、式(A)によって、現サブメッシュの頂点数について算出する。
DecSummesh.verCoordCount=max(refSubmesh.verCoordCount,bm_vertex_count[submeshID]) … 式(A)
ただし、DecSummesh.verCoordCountは、現サブメッシュの頂点数を示す制御信号であり、refSubmesh.verCoordCountは、参照サブメッシュの頂点数を示す制御信号であり、bm_vertex_count[submeshID]は、現サブメッシュの動きベクトル数を示す制御信号である。
ただし、DecSummesh.verCoordCountは、現サブメッシュの頂点数を示す制御信号であり、refSubmesh.verCoordCountは、参照サブメッシュの頂点数を示す制御信号であり、bm_vertex_count[submeshID]は、現サブメッシュの動きベクトル数を示す制御信号である。
すなわち、インター復号部202Eは、現サブメッシュの動きベクトル数が参照サブメッシュの頂点数より多い時に、現サブメッシュの頂点数を現サブメッシュの動きベクトル数にする。
上述の操作により、現サブメッシュの頂点数が参照サブメッシュの頂点数と同じになる場合又は現サブメッシュの頂点数が参照サブメッシュの頂点数より多くなる場合がある。
ただし、この時点では、現サブメッシュの頂点座標に含める数が参照サブメッシュと同じである。
また、表4及び図7に示すように、現サブメッシュの動きベクトル数が参照サブメッシュの頂点数と同じになる場合(currSubmesh SW)、現サブメッシュの動きベクトル数が参照サブメッシュの頂点数よりも少なくなる場合(currSubmesh case1)、又は、現サブメッシュの動きベクトル数が参照サブメッシュの頂点数よりも多くなる場合(currSubmesh case2)がある。
かかる場合、インター復号部202Eは、 現サブメッシュの頂点数が参照サブメッシュの頂点数よりも多い場合(表4のcurrSubmesh case2)、現サブメッシュの頂点インデックスが参照サブメッシュの頂点数以上である(対応する参照サブメッシュの頂点が存在しない)時に、以下の式(B)によって、かかる頂点座標を算出する。
- Otherwise(v is greater than refSubmesh.verCoordCount-1),DecSummesh.verCoords[v][k]=currentSubmeshMotionVectors[v][k],where k=0..2 … 式(B)
ただし、refSubmesh.verCoordCountは、参照サブメッシュの頂点数であり、currentSubmeshMotionVectors[v][k]は、現サブメッシュの第v頂点の第k次元の動きベクトルであり、DecSummesh.verCoords[v][k]は、算出した現サブメッシュの第v頂点の第k次元の頂点座標である。
ただし、refSubmesh.verCoordCountは、参照サブメッシュの頂点数であり、currentSubmeshMotionVectors[v][k]は、現サブメッシュの第v頂点の第k次元の動きベクトルであり、DecSummesh.verCoords[v][k]は、算出した現サブメッシュの第v頂点の第k次元の頂点座標である。
また、上述のダミー頂点は、接続情報を持っていないため、インター復号部202Eは、かかるダミー頂点を処理中に又は後処理として捨てることができ、かかるダミー頂点を捨てる場合は、現サブメッシュの頂点数を相応に変更する。
インター復号部202Eは、上述の操作により、現サブメッシュの動きベクトル数が参照サブメッシュの頂点数より多い時に、動きベクトルで参照サブメッシュの頂点数まで頂点座標を算出し、他の頂点座標を動きベクトルのままにする。
かかる場合、インター復号部202Eは、 現サブメッシュの動きベクトル数が参照サブメッシュの頂点数より少ない又は同じである時に、動きベクトルで現サブメッシュの動きベクトル数まで頂点座標を算出し、他の頂点座標を参照サブメッシュのままにする。
かかる構成によれば、現フレーム又は現サブメッシュの復号動作を保障するという効果が期待できる。
(変更例2-2)
ここで、インター復号部202Eは、上述のビットストリームから現サブメッシュの動きベクトル数を復号する場合、復号した現サブメッシュの動きベクトル数が参照サブメッシュの頂点数と異なる時に、現サブメッシュの頂点数及び一部の頂点座標を調整する。
(変更例2-2)
ここで、インター復号部202Eは、上述のビットストリームから現サブメッシュの動きベクトル数を復号する場合、復号した現サブメッシュの動きベクトル数が参照サブメッシュの頂点数と異なる時に、現サブメッシュの頂点数及び一部の頂点座標を調整する。
まず、インター復号部202Eは、初期化操作として、参照サブメッシュのサブメッシュID、頂点数、面数、頂点座標及び接続情報を、現サブメッシュにコピーする。
上述の操作により、現サブメッシュの頂点数は、参照サブメッシュの頂点数と必ず同じになる。
ただし、表5及び図8に示すように、動きベクトル数は、参照サブメッシュの頂点数と同じ場合(currSubmesh SW)、参照サブメッシュの頂点数より少ない場合(currSubmesh case1)、或いは、参照サブメッシュの頂点数より多い場合(currSubmesh case2)がある。
かかる場合、インター復号部202Eは、 現サブメッシュの動きベクトル数が参照サブメッシュの頂点数より少ない場合又は同じである場合に、復号した動きベクトルで現サブメッシュの動きベクトル数まで頂点座標を算出し、他の頂点座標を参照サブメッシュのままにする。
かかる場合、インター復号部202Eは、 現サブメッシュの動きベクトル数が参照サブメッシュの頂点数より多い場合に、現サブメッシュの頂点数を参照フレームの頂点数にし、復号した動きベクトルで参照サブメッシュの頂点数まで頂点座標を算出する。
上述の操作をまとめると、インター復号部202Eは、現サブメッシュの頂点インデックスが0からmin(refSubmesh.vertex_count,bm_vertex_count[submeshID])-1までである時に、頂点座標を算出する。
ただし、refSubmesh.vertex_countは、参照サブメッシュの頂点数であり、bm_vertex_count[submeshID]は、現サブメッシュの動きベクトル数である。
つまり、インター復号部202Eは、現サブメッシュの動きベクトル数が参照サブメッシュの頂点数より多い場合に、現フレーム又は現サブメッシュの頂点数を参照フレームの頂点数にし、復号した動きベクトルで参照サブメッシュの頂点数まで頂点座標を算出する。
かかる構成によれば、現フレーム又は現サブメッシュの復号動作を保障するという効果が期待できる。
なお、インター復号部202Eは、フレーム毎又はサブメッシュ毎で、基本メッシュ又は細分割後の頂点数を示す制御信号について、表6に記載されているビット解析方法を用いて復号してもよい。
例えば、かかる制御信号は、mesh_vertex_countや、pdu_vertex_count_minus_1[titleID][patchIdx]や、sismu_inter_vertex_count[subMeshID]等を含む。
また、インター復号部202Eは、u(v)やue(v)やae(v)やvu(v)等を用いて、上述の制御信号を復号してもよい。
例えば、インター復号部202Eは、ue(v)という算術符号化を使って、上述の制御信号を復号してもよい。ue(v)は、左端ビットファーストで符号なし整数0次の指数ゴロム符号化(Exp-Golomb)を示す。
さらに、インター復号部202Eは、CABACを用いたae(v)という算術符号化を使って、上述の制御信号を復号してもよい。
この結果、算術符号化を用いて復号する対象の頂点数の最大値に制限が無くなるという効果が期待できる。
ただし、上述の頂点数を示す制御信号の値が大きいので、ue(v)やae(v)の効率が悪いという課題がある。
そこで、インター復号部202Eは、全てのフレーム又はサブメッシュの最大頂点数maxVCがある場合、ue(v)の代わりにu(v)を使って、上述の制御信号を復号してもよい。
かかる場合、インター復号部202Eは、全てのフレーム又はサブメッシュの最大頂点数maxVCから、vを算出する。具体的には、インター復号部202Eは、以下の式(C)を用いて、vを算出する。
かかる構成によれば、頂点数を示す制御信号の符号量を削減することができるという効果が期待できる。なお、全てのフレーム又はサブメッシュの最大頂点数maxVCを設ける効果は、プロファイルやレベルを定義する時に役立つ。
また、u(v)と違ってvu(v)を使う場合は、図9に示すように、ue(v)を使う場合よりも、符号化効率を向上させる効果があり、vを算出せずにvu(v)を下記の手順で解析できる。
つまり、8ビット毎の最初のビットが、次の8ビットを解析するかどうかを示すフラグであり、他の7ビットが、値を示す。
vu(v) {
value = 0
do {
continue = read_bits( 1 )
partial_value = read_bits( 7 )
value = ( value << 7 ) | partial_value
}
while( continue )
return value
なお、現フレーム又は現サブメッシュの基本メッシュの頂点数を示す制御信号について、頂点数を示す他シンタックスと同じビット解析方法にするのが、ハードウェアの設計を簡易化させる効果がある。
value = 0
do {
continue = read_bits( 1 )
partial_value = read_bits( 7 )
value = ( value << 7 ) | partial_value
}
while( continue )
return value
なお、現フレーム又は現サブメッシュの基本メッシュの頂点数を示す制御信号について、頂点数を示す他シンタックスと同じビット解析方法にするのが、ハードウェアの設計を簡易化させる効果がある。
更に、face_count等の面数を示すシンタックスのビット解析方法において、vu(v)をue(v)に変更してもよい。
上述の頂点数や面数を示すシンタックスは、大きい値であるので、シンタックスのビット解析方法を統一すると、Decoderの複雑度を削減する効果とハードウェア設計の複雑度やチップの共有ができる効果がある。
なお、ビットストリームの適合性の要件として、上述のpdu_vertex_count_minus_1[titleID][patchIdx] とsismu_inter_vertex_count[subMeshID]とが矛盾しないこと、又は、pdu_vertex_count_minus_1[titleID][patchIdx]とmesh_vertex_countとが矛盾しないことを要件にしてもよい。
また、pdu_vertex_count_minus_1[titleID][patchIdx] とsismu_inter_vertex_count[subMeshID]とが矛盾する場合、又は、pdu_vertex_count_minus_1[titleID][patchIdx]とmesh_vertex_countとが矛盾する場合に、sismu_inter_vertex_count[subMeshID]又はmesh_vertex_countを優先にしてもよい。
なお、アトラスデータ復号部208は、アトラスサブビットストリームで定義したafmi_num_submeshes_minus2という制御信号からAtlasTotalNumMeshpatchesという変数を算出する。
ここで、AtlasTotalNumMeshpatchesは、該当フレームにおける変位量やテクスチャのサブメッシュ数を示す。
基本メッシュ復号部202は、基本メッシュサブビットストリームで定義したbmsi_num_submeshes_minus2により、復号対象フレームにおける基本メッシュのサブメッシュ数を算出する。
afmi_num_submeshes_minus2及びbmsi_num_submeshes_minus2 が独立であるため、算出されたAtlasTotalNumMeshpatchesによって示される変位量やテクスチャのサブメッシュ数と基本メッシュのサブメッシュ数とが異なる可能性があるという課題がある。
上述の非特許文献4では、基本メッシュのサブメッシュに変位量及びテクスチャを加えて、アトラスデータ復号部208から出力される制御信号を用いて算出したAtlasTotalNumMeshpatchesによって示される数のサブメッシュを最終のサブメッシュとして再現する。
そのため、基本メッシュのサブメッシュが、AtlasTotalNumMeshpatchesによって示される数のサブメッシュよりも少ない時には、基本メッシュのサブメッシュが足りないため、足りない分の最終サブメッシュを再現することができない。
逆に、基本メッシュのサブメッシュが、AtlasTotalNumMeshpatchesによって示される数のサブメッシュよりも多い時には、基本メッシュのサブメッシュが余るため、余る分の最終サブメッシュの変位量及びテクスチャを存在しないものとしてもよい。
また、余る分の基本メッシュの変位量及びテクスチャについて、既存の変位量及びテクスチャをそのままで利用して、余る分の最終サブメッシュを再現してもよい。かかる再現は、Reconstruction process(図2参照)において行われる。かかるReconstruction processは、細分割部203とメッシュ復号部204とパッチ統合部205とによって実施される。
本実施形態では、ビットストリームの適合性の要件として、AtlasTotalNumMeshpatchesが基本メッシュのサブメッシュ数より少ないこと、又は、AtlasTotalNumMeshpatchesが基本メッシュのサブメッシュ数と同じであることという要件にしてもよい。
また、AtlasTotalNumMeshpatchesが基本メッシュのサブメッシュ数より多い時に、AtlasTotalNumMeshpatchesを基本メッシュのサブメッシュ数に変更してもよい。
或いは、AtlasTotalNumMeshpatchesが基本メッシュのサブメッシュ数より多い時に、基本メッシュのサブメッシュが足りないため、足りない分を特定の基本メッシュのサブメッシュにしてもよい。
例えば、頂点数が同じサブメッシュの中の一番目のサブメッシュ(或いは、基本メッシュの最後のサブメッシュ)を、かかる特定の基本メッシュのサブメッシュとしてもよい。
かかる構成によれば、アトラスデータ復号部208で一部のサブメッシュを再現できないという課題を解消する効果が期待できる。
(インター復号部202E)
図10は、インター復号部202Eの機能ブロックの一例を示す図である。
(インター復号部202E)
図10は、インター復号部202Eの機能ブロックの一例を示す図である。
図10に示すように、インター復号部202Eは、動きベクトル残差復号部202E1と、動きベクトルバッファ部202E2と、動きベクトル予測部202E3と、動きベクトル算出部202E4と、加算器202E5とを有する。
動きベクトル残差復号部202E1は、PフレームのビットストリームからMVR(Motion Vector Residual)を生成するように構成されている。
ここで、MVRは、MV(Motion Vector)とMVP(Motion Vector Prediction)との差分を示す動きベクトル残差である。MVは、対応するIフレームの頂点の座標とPフレームの頂点の座標との間の差分ベクトル(動きベクトル)である。MVPは、MVを用いて対象の頂点のMVの予測した値(動きベクトルの予測値)である。
動きベクトルバッファ部202E2は、動きベクトル算出部202E4によって出力されたMVを順次に保存するように構成されている。
動きベクトル予測部202E3は、復号対象の頂点と接続している頂点について、動きベクトルバッファ部202E2から復号済みのMVを取得し、図11に示すように、取得された復号済みのMVの全部又は一部を用いて、復号対象の頂点のMVPを出力するように構成されている。
動きベクトル算出部202E4は、動きベクトル残差復号部202E1で生成されたMVRと動きベクトル予測部202E3から出力されたMVPとを加算し、復号対象の頂点のMVを出力するように構成されている。
加算器202E5は、対応関係を持つ参照フレーム(Iフレーム又はPフレーム)の復号済みの基本メッシュから得られた復号対象の頂点に対応する頂点の座標と、動きベクトル算出部202E3から出力された動きベクトルMVとを加算し、復号対象の頂点の座標を出力するように構成されている。
以下、インター復号部202Eの各部の詳細について説明する。
図12に、動きベクトル予測部202E3の動作の一例を示すフローチャートを示す。以下、動きベクトル予測部202E3の動作を「平均予測法」と呼ぶ。
図12に示すように、ステップS1001において、動きベクトル予測部202E3は、MVP及びNに0を設定する。
ステップS1002において、動きベクトル予測部202E3は、動きベクトルバッファ部202E2から、復号対象の頂点の周りの頂点のMVの集合を取得し、後続の処理が終わっていない頂点を特定し、Noに遷移し、全ての頂点について後続の処理が終わっている場合は、Yesに遷移する。
ステップS1003において、動きベクトル予測部202E3は、処理対象の頂点のMVが、復号済みでなければ、Noに遷移し、処理対象の頂点のMVが、復号済みであれば、Yesに遷移する。
ステップS1004において、動きベクトル予測部202E3は、MVPにMVを加算し、Nに1を加算する。
ステップS1005において、動きベクトル予測部202E3は、Nが0より大きければ、MVPをNで除した結果を出力し、Nが0であれば、0を出力し、処理を終了する。
すなわち、動きベクトル予測部202E3は、復号対象の頂点の周りにある頂点の復号済みの動きベクトルを平均することによって、復号対象のMVPを出力するように構成されている。
なお、動きベクトル予測部202E3は、かかる復号済みの動きベクトルの集合が空集合の場合、MVPを0とするように構成されていてもよい。
動きベクトル算出部202E4は、式(1)によって、動きベクトル予測部202E3によって出力されたMVP及び動きベクトル残差復号部202E1によって生成されたMVRから、復号対象の頂点のMVを算出するように構成されていてもよい。
MV(k)=MVP(k)+MVR(k) … (1)
ここで、kは、頂点のインデックスである。MV、MVR及びMVPは、x成分、y成分及びz成分を有するベクターである。
ここで、kは、頂点のインデックスである。MV、MVR及びMVPは、x成分、y成分及びz成分を有するベクターである。
かかる構成によれば、MVPを用いて、MVの代わりにMVRのみを符号化するため、符号化効率を高める効果が期待できる。
加算器202E5は、動きベクトル算出部202E4によって算出された頂点のMVと、かかる頂点に対応する参照フレームの頂点の座標とを加算することによって、かかる頂点の座標を算出し、接続情報(Connectivity)を参照フレームのままにするように構成されている。
具体的には、加算器202E5は、式(2)を用いて、k番目の頂点の座標v’i(k)を算出するように構成されていてもよい。
v’i(k)=v’j(k)+MV(k) … (2)
ここで、v’i(k)は、復号対象のフレームで復号するk番目の頂点の座標であり、v’j(k)は、参照フレームの復号したk番目の頂点の座標であり、MV(k)は、復号対象のフレームのk番目のMVであり、k=1,2…,Kである。
ここで、v’i(k)は、復号対象のフレームで復号するk番目の頂点の座標であり、v’j(k)は、参照フレームの復号したk番目の頂点の座標であり、MV(k)は、復号対象のフレームのk番目のMVであり、k=1,2…,Kである。
また、復号対象のフレームの接続情報は、参照フレームの接続情報と同一にされる。
なお、動きベクトル予測部202E3は、復号済みのMVを用いてMVPを算出するため、復号の順番がMVPに影響を及ぼす。
かかる復号の順番は、参照フレームの基本メッシュの頂点の復号の順番にする。一般的に、一定の繰り返しパターンを用いて、起点となるエッジから基本面を1つずつ増やす復号手法であれば、復号した基本メッシュの頂点の順番が復号の過程で決められる。
例えば、動きベクトル予測部202E3は、参照フレームの基本メッシュにおいて、Edgebreakerを用いて、頂点の復号の順番を決めてもよい。
かかる構成によれば、頂点の座標の代わりに参照フレームからのMVを符号化するため、符号化効率を高める効果が期待できる。
(メッシュバッファ部202C)
メッシュバッファ部202Cは、1枚又は複数枚の参照用の復号基本メッシュを、所定順番で保存するように構成されている。
(メッシュバッファ部202C)
メッシュバッファ部202Cは、1枚又は複数枚の参照用の復号基本メッシュを、所定順番で保存するように構成されている。
なお、かかる基本メッシュは、フレーム番号やサブメッシュ番号等のメタデータや少なくとも各頂点の座標及び当該頂点のインデックスを有しており、参照フレームリストで決められた所定順番でメッシュバッファ部202Cに保存される。
ここで、図13に示すように、かかる参照フレームリスト(ref_list0)は、メッシュバッファ部202Cに保存されている全ての参照用の復号基本メッシュを特定する情報のリストである。
参照フレームリストは、図13に示すように、ビットストリームから復号された制御信号によって決められてもよいし、自然にフレームの復号順から算出されてもよい。
なお、ビットストリームから復号された制御信号は、復号対象フレームとの相対的な距離で示されていてもいし、絶対値であるのフレームインデックスであってもよい。
さらに、制御信号により、短期的な参照フレーム又は長期的な参照フレームが使われてもよい。
例えば、短期的な参照フレームを使うと、当フレーム(cur)及び参照フレーム(ref)の表示順(Display Order)の差の絶対値(abs_delta_mfoc_st)及びその符号(sign_flag)をビットストリームから復号し、参照フレームの表示順(Display Order)を下式で指定してもよい。
If(sign_flag){
Display Order(ref)=Display Order(cur)+abs_delta_mfoc_st
}else{
Display Order(ref)=Display Order(cur)-abs_delta_mfoc_st
}
また、自然にフレームの復号順から算出する方法が用いられる場合、例えば、参照フレームリストにおいて、制御信号が存在していない時に、直前に復号済みのフレームから一定のフレーム数で順次に並べられてもよい。つまり、参照フレームリストは、{0, -1, -2,…, -(N―1)}とされてもよい。
If(sign_flag){
Display Order(ref)=Display Order(cur)+abs_delta_mfoc_st
}else{
Display Order(ref)=Display Order(cur)-abs_delta_mfoc_st
}
また、自然にフレームの復号順から算出する方法が用いられる場合、例えば、参照フレームリストにおいて、制御信号が存在していない時に、直前に復号済みのフレームから一定のフレーム数で順次に並べられてもよい。つまり、参照フレームリストは、{0, -1, -2,…, -(N―1)}とされてもよい。
基本的に、参照フレームリストは、特別な事情(例えば、Re-ordering指示を受ける時)以外に各フレームで変化しない。
メッシュバッファ部202Cは、以下のように更新されてもよい。
メッシュバッファ部202Cは、基本メッシュが復号された時に、Iフレーム及びPフレームの場合、参照フレームリストで決められた所定順番により1枚又は複数枚の既存の参照フレームを削除し、復号済みのフレームの基本メッシュを含めて1枚又は複数枚の基本メッシュを入れて、又は、複数枚の基本メッシュから1枚の基本メッシュを作成して入れて、参照フレームの順番を調整する。
かかる削除作業は、メッシュバッファ部202Cが満了する時のみに実施されてもよい。なお、メッシュバッファ部202Cで保存できる基本メッシュの数は、事前に決められている。ここで、本実施形態では、かかる基本メッシュの数に到達すると、メッシュバッファ部202Cが満了すると定義するものとする。
上述の作成作業では、復号済みのフレームの基本メッシュ及びメッシュバッファ部202Cに保存されている既存の基本メッシュに対応する頂点の座標について重み付け平均して1枚の基本メッシュにしてもよい。
かかる重み付け平均で用いられる重みは、事前に決められていてもよいし、フレームインデックスを用いて算出されてもよいし、制御信号から復号されてもよい。
なお、メッシュバッファ部202Cは、ビットストリームから復号された制御信号によりRe-orderingの指示を示す制御信号を受けた時に、図14に示すように、参照フレームリストを更新し、更新した参照フレームリスト(ref_list0)で決められた所定順番により参照フレームの順番を調整する。
(インター復号部202E)
インター復号部202Eは、メッシュバッファ部202Cから取り出した参照フレームの頂点の座標とPフレームのビットストリームから復号した動きベクトルとを加算することによって、Pフレームの頂点の座標を復号するように構成されている。
(インター復号部202E)
インター復号部202Eは、メッシュバッファ部202Cから取り出した参照フレームの頂点の座標とPフレームのビットストリームから復号した動きベクトルとを加算することによって、Pフレームの頂点の座標を復号するように構成されている。
さらに、インター復号部202Eは、かかる特定バッファに保存されている重複頂点として存在する頂点のインデックスA(k)及びB(k)のペアにより、Pフレームの頂点のインデックスを調整することが可能である。かかるインデックスの全部又は一部は、ビットストリームから復号される。かかる復号方法は、算術符号化でもよい。かかる構成によれば、算術符号化を用いて復号対象のインデックスの最大値に制限が無くなるという効果が期待できる。例えば、ue(v)という算術符号化を使ってもよい。
また、上述の重複頂点に関する情報のシグナリング及びパース手法は、下記のようにしてもよい。
ただし、bmidu_derived_mv_present_flag[submeshID]は、bmidu_mv_signalled_flagがビットストリームに存在するかどうかを示すフラグである。
bmidu_mv_signalled_flag_count[submeshID]は、bmidu_mv_signalled_flagの数である。
bmidu_mv_signalled_flagは、重複頂点の動きベクトルがビットストリームに存在するかどうかを示すフラグである。
パースにおいて、ビットストリームにシグナリングしない動きベクトル数をカウントすることにし、サブメッシュの中に該当動きベクトルのインデックスを特定しない。
また、復号処理において、サブメッシュの中に該当動きベクトルのインデックスを特定する換算プロセスを実施する。
かかる構成によれば、復号処理等の複雑な処理に依存せず、パースのみがストリームの最後までできるという効果が期待できる。
(基本メッシュ復号部202の変更例2)
以下、図15を参照して、基本メッシュ復号部202の変更例2について説明する。
(基本メッシュ復号部202の変更例2)
以下、図15を参照して、基本メッシュ復号部202の変更例2について説明する。
図15に示すように、インター復号部202Eでは、後続フレームを参照することが可能にするため、復号順(Decode Order)と表示順(Display Order)とが異なる。
ここで、表示順は、符号化する際の入力の順番と同じであり、復号する際の出力の順番と同じである。
一方、復号順は、符号化する際の出力の順番と同じであり、復号する際の入力の順番と同じである。
なお、かかる参照フレームは、後続フレームと1枚又は複数枚の他フレームとを重み付け平均して算出されてもよい。
ただし、後続フレームを含めて複数枚のフレームを参照する場合、新しいフレームタイプ(smh_type)として、MR_SUBMESH(MRフレームやBフレーム)を定義し、MR_SUBMESHは、ビットストリームから復号される。
また、かかる他フレームは、図16に示すように、対象フレームの直前の復号済のフレームであってもよい。
かかる重みは、対象フレームと後続フレームと間のフレーム間隔及び対象フレームと他フレームとの間のフレーム間隔を用いて算出されてもよいし、事前に決められてもよい。
基本メッシュ復号部202は、ビットストリームから制御信号(smh_mesh_frm_order_cnt_lsb)を復号し、かかる出力の順番を復号する。
なお、上述の非特許文献4で定義したサブメッシュが存在するときに、全てのサブメッシュを同じ制御信号(smh_mesh_frm_order_cnt_lsb)にすること又は制御信号(smh_mesh_frm_order_cnt_lsb)を全てのサブメッシュに適用させることにする。
かかる制御信号(smh_mesh_frm_order_cnt_lsb)によって示される値は、復号対象フレームの表示順との差分であってもよいし、事前に決めたフレーム集団MaxMeshFrmOrderCntLsbの中の順番であってもよい。
なお、復号順(Decode Order)と表示順(Display Order)とが異なる時に、復号済みの基本メッシュが復号順(Decode Order)で並んでいると、基本メッシュ復号部202は、復号済みの基本メッシュを表示順(Display Order)に並び替えてもよい。
なお、Temporal scalabilityを実現するため、各フレームにおいて基本メッシュと変位量とテクスチャとをそれぞれ復号するかどうかを示す制御信号をそれぞれ定義し、ビットストリームからそれぞれ復号する。
また、同じフレーム内において、アトラス及び基本メッシュのTemporal_IDを一致させてもよい。また、同じフレーム内において、アトラス及びテクスチャのTemporal_IDを一致させてもよい。また、同じフレーム内において、アトラス及び変位量のTemporal_IDを一致させてもよい。
かかる構成によれば、フレームが復号できないことや無駄なデータを回避することができるという効果が期待できる。
なお、同じTemporal_IDを持つ隣接するフレームの間隔が一定であることが望ましい。
同じTemporal_IDを持つ隣接するフレームは、POCが最も近い。
上述のようにフレームの間隔を一定にすることで、復号したフレームを表示する際に一定のフレームレートを保つ効果が期待できる。
さらに、同じ表示順を持つアトラス及び基本メッシュの復号順を一致させてもよい。また、同じ表示順を持つアトラス及び変位量の復号順を一致させてもよい。また、同じ表示順を持つアトラス及びテクスチャの復号順を一致させてもよい。
または、同じ表示順を持つアトラス及び基本メッシュのランダムアクセスポイントを一致させてもよい。また、同じ表示順を持つアトラス及び変位量のランダムアクセスポイントを一致させてもよい。また、同じ表示順を持つアトラス及びテクスチャのランダムアクセスポイントを一致させてもよい。なお、ランダムアクセスポイントは、非特許文献4又は非特許文献5で定義されている。
かかる構成によれば、基本メッシュ、変位量及びテクスチャをそれぞれ復号する際に、互いの復号を待つことなく、メッシュを再現できるという効果が期待できる。
さらに、復号対象フレームの制御信号Temporal_IDよりも高いTemporal_IDを持つフレームは、かかる復号対象フレームの参照フレームにしない。
これによって、参照フレームが捨てられる可能性が無くなるという効果が期待できる。
以下に、上述のTemporal_IDを用いてTemporal scalabilityを実現する一例について述べる。
アトラス、基本メッシュ、変位量及びテクスチャのビットストリームは、ネットワーク抽象レイヤ(NAL)ユニットによりカプセル化される。NALユニットは、図22のようなNALヘッダを持ってもよい。
NALヘッダ内の最後の3ビットとして定義したTIDは、Temporal_IDプラス1である。TIDの範囲は、1から7までとし、ゼロを禁止する。
NALヘッダ内のTIDの直前の6ビットとして定義されたLayerID/R6は、NALユニットが属するレイヤの識別子を指定する。
LayerID/R6の値は、0~62の範囲内でなければならない。値63は、将来的にISO/IECによって指定される可能性がある。
ビットストリームのデコードユニットのデータ量を決定する以外の目的で、メッシュ復号装置200は、NALユニット内の値63に続く全てのデータを無視し、指定されたプロファイルに準拠するメッシュ復号装置200は、LayerID-R6の値が0でない全てのNALユニットを無視する(つまり、ビットストリームから取り除き、破棄する)。
LayerID/R6の値63は、将来の拡張で拡張レイヤ識別子を示すために使用することができる。
なお、非特許文献4で定義されたサブメッシュが存在するときは、全てのサブメッシュを同じTIDにすること又はTIDを全てのサブメッシュに適用させることにする。
アトラスについては、非特許文献5を利用でき、変位量及びテクスチャについては、映像符号化方式のHEVCやVVCを利用できるため、以下は、基本メッシュについて説明する。
符号化された基本メッシュフレームの全ての BMCL NALユニットのLayerID/R6の値は、同じでなければならない。符号化された基本メッシュフレームのLayerID/R6の値は、符号化された基本メッシュフレームのBMCL NALユニットのLayerID/R6の値である。
NALTypeが、NAL_EOBと等しい場合、LayerID/R6の値は、0と等しくなければならない。
NALTypeが、非特許文献4で定義されたNAL_BLA_W_LPからNAL_RSV_BMCL_29までの範囲にある場合、つまり、IRAPコード化された基本メッシュフレームに属する場合、Temporal_IDは、0でなければならない。
NALTypeが、NAL_TSA_R又はNAL_TSA_Nに等しい場合、Temporal_IDは、0に等しくてはならない。
NALTypeが0に等しく、NALTypeがNAL_STSA_R又はNAL_STSA_Nに等しい場合、Temporal_IDは、0に等しくてはならない。
Temporal_IDの値は、アクセスユニット内の全てのBMCL NALユニットについて同じでなければならない。
コード化された基本メッシュフレーム又はアクセスユニットのTemporal_IDの値は、コード化された基本メッシュフレーム又はアクセスユニットのBMCL NALユニットのTemporal_IDの値である。
サブレイヤ表現のTemporal_IDの値は、サブレイヤ表現内の全てのBMCL NALユニットのTemporal_IDの最大値である。
非BMCL NALユニットのTemporal_IDの値は、以下のように制限される。
- NALTypeがNAL_BMSPSに等しい場合、Temporal_IDは0でなければならず、NALユニットを含むアクセスユニットのTemporal_IDは、0でなければならない。
- それ以外の場合で、NALTypeがNAL_EOS又はNAL_EOBに等しい場合、Temporal_IDは、0でなければならない。
- それ以外の場合で、NALTypeがNAL_AUD又はNALLFDDに等しい場合、Temporal_IDは、NALLユニットを含むアクセスユニットのTemporal_IDに等しくなければならない。
- それ以外の場合、Temporal_IDは、NALユニットを含むアクセスユニットのTemporal_ID以上でなければならない。
- NALTypeがNAL_BMSPSに等しい場合、Temporal_IDは0でなければならず、NALユニットを含むアクセスユニットのTemporal_IDは、0でなければならない。
- それ以外の場合で、NALTypeがNAL_EOS又はNAL_EOBに等しい場合、Temporal_IDは、0でなければならない。
- それ以外の場合で、NALTypeがNAL_AUD又はNALLFDDに等しい場合、Temporal_IDは、NALLユニットを含むアクセスユニットのTemporal_IDに等しくなければならない。
- それ以外の場合、Temporal_IDは、NALユニットを含むアクセスユニットのTemporal_ID以上でなければならない。
なお、NALユニットがBMCLでない場合、Temporal_IDの値は、非BMCL NALユニットが適用される全てのアクセスユニットのTemporal_ID値の最小値に等しくなる。
NALTypeがNAL_BMFPSに等しい場合、Temporal_IDは、最初の符号化基本メッシュフレームのTemporal_IDが0であるビットストリームの先頭に全ての基本メッシュフレームパラメータセット(BMFPS)が含まれるため、含まれるアクセスユニットのTemporal_ID以上であることができる。
なお、スキップ復号部202Fは、指定されたtIDTargetを参照して、Temporal_IDがtIDTargetより高いNALユニットを復号せずに捨てることにする。
ここで、tIDTargetは、事前に決めた値により指定されてもよいし、ネットワーク状況やメッシュ復号装置200の端末能力により指定されてもよい。
例えば、有線のケースよりも無線のケースの方が低いtIDTargetが指定される。また、ネットワーク状況が悪い場合に、低いtIDTargetが指定される。また、低スペックのメッシュ復号装置200で復号される場合、低いtIDTargetが指定される。
ただし、ビットストリームの適合性の要件としては、Temporal_IDがtIDTargetより高くないNALユニットが少なくとも1つはビットストリームに存在しなければならないということとする。
以下に 、上述のTemporal_IDを用いて、Temporal scalabilityを実現する変更例について述べる。
アトラス、基本メッシュ、変位量及びテクスチャのビットストリームは、ネットワーク抽象レイヤ(NAL)ユニットによりカプセル化される。NALユニットは、図17に示すようなNALヘッダを持ってもよい。
NALヘッダ内の最後の3ビットとして定義したTIDは、Temporal_IDプラス1である。TIDの範囲は、1から7までとし、ゼロを禁止する。
NALヘッダ内のTIDの直前の6ビットとして定義されたLayerID/R6は、NALユニットが属するレイヤの識別子を指定する。
LayerID/R6の値は、0~62の範囲内でなければならない。値63は、将来的にISO/IECによって指定される可能性がある。
ビットストリームのデコードユニットのデータ量を決定する以外の目的で、メッシュ復号装置200は、NALユニット内の値63に続く全てのデータを無視し、指定されたプロファイルに準拠するメッシュ復号装置200は、LayerID-R6の値が0でない全てのNALユニットを無視する(つまり、ビットストリームから取り除き、破棄する)。
LayerID/R6の値63は、将来の拡張で拡張レイヤ識別子を示すために使用することができる。
なお、非特許文献4で定義された基本メッシュのサブメッシュが存在するときは、全てのサブメッシュを同じTIDにすること又はTIDを全てのサブメッシュに適用させることにする。
アトラス、基本メッシュ、変位量及びテクスチャの各ビットストリームが独立してTIDを設定してもよい。例えば、アトラスについては、非特許文献5のAnnex AによりTIDをゼロに固定する。よって、基本メッシュ、変位量及びテクスチャが、それぞれTIDを独立に設定する。
つまり、コンテンツにより、基本メッシュ、変位量及びテクスチャの少なくとも1つが、Temporal_IDをゼロに固定してもよい。その場合は、LD設定も利用可能である。表7に、一例を示す。
各ビットストリームにおいて独立に設定しても、変位量及びテクスチャについては、映像符号化方式のHEVCやVVCを利用し、基本メッシュについては、上述の実施形態を利用する。
各ビットストリームにおいて独立に設定すると、それぞれのビットストリームで指定されたtIDTargetを参照して、TIDがtIDTargetより高いNALユニットを復号せずに捨てることにする。
ここで、tIDTargetは、事前に決めた値により指定されてもよいし、ネットワーク状況やメッシュ復号装置200の端末能力により指定されてもよい。
例えば、有線のケースよりも無線のケースの方が低いtIDTargetが指定される。また、ネットワーク状況が悪い場合に、低いtIDTargetが指定される。また、低スペックのメッシュ復号装置200で復号される場合、低いtIDTargetが指定される。
ただし、ビットストリームの適合性の要件としては、TIDがtIDTargetより高くないNALユニットが少なくとも1つはビットストリームに存在しなければならないということとする。
一方、各ビットストリームが独立に設定すると、特定のフレームで基本メッシュと変位量、テクスチャの中に一つでも捨てられたら、他も捨てることにする。
或いは、各ビットストリームが独立に設定すると、特定のフレームで基本メッシュが捨てられたら、変位量及びテクスチャも捨てて、Reconstruction processを実施しないことにする。ただし、変位量が捨てられたら、変位量の値を全てゼロにし、Reconstruction processを実施することにする。また、テクスチャが捨てられたら、テクスチャの値を全てゼロにし、Reconstruction processを実施することにする。
なお、各フレーム(イントラフレーム、インターフレーム及びスキップフレーム)でサブメッシュの数が異なってもよい。
かかる場合、イントラ復号部202B、インター復号部202E及びスキップ復号部202Fは、各フレームにおけるサブメッシュの各々に対して、重複しないサブメッシュIDを付与する。
また、イントラ復号部202B及びインター復号部202Eは、フレーム間で対応するサブメッシュに対して異なるSubmeshID(サブメッシュID)を付与してもよい。
ただし、インター復号部202Eは、参照フレームの中で同じSubmeshIDを持つサブメッシュのみを参照することができるものとする。
或いは、インター復号部202Eは、参照フレームの中で同じ頂点数を持つサブメッシュのみを参照することができるものとする。
或いは、イントラ復号部202B及びインター復号部202Eは、参照フレームの中で指定されたサブメッシュを参照することができるものとする。
かかる場合、インター復号部202Eは、参照フレーム内にサブメッシュが複数ある場合、現サブメッシュのビットストリームから、参照可能なサブメッシュのSubmeshIDを指定する制御信号を復号してもよい。
一方、インター復号部202Eは、参照フレーム内にサブメッシュが1つのみある場合、かかるサブメッシュを参照可能なサブメッシュとしてもよい。
ただし、上述の制御信号が存在しない場合、インター復号部202E又はスキップ復号部202Fは、参照可能なサブメッシュのSubmeshIDを、現フレーム内のサブメッシュと同じSubmeshIDとする。
また、インター復号部202Eは、ビットストリームから、上述の制御信号が存在するかどうかを示す制御信号を復号してもよい。
なお、インター復号部202Eは、上述の参照可能なサブメッシュを決める方法を選択する制御信号を復号してもよい。
細分割部203及び変位量復号部206は、非特許文献4に従ってもよい。
本発明によれば、復号済みの隣接頂点を探索せず、参照フレームそのものを再利用することにより計算量を削減することができる。
また、本実施形態によれば、インター予測符号化において、現フレームの基本メッシュの頂点数が参照フレーム又は参照サブメッシュの頂点数と異なる場合であっても現フレームの基本メッシュを復号することができる。
また、本実施形態によれば、インター予測符号化において、現フレームの基本メッシュの頂点数が参照フレーム又は参照サブメッシュの頂点数と異なるという事態を回避することができる。
また、本実施形態によれば、インター予測符号化において、現フレームの参照フレームの中にどのサブメッシュを参照するかという制御信号を導入することで、どのサブメッシュを参照するかについて特定することができる。
また、本実施形態によれば、インター予測符号化において、現フレームの参照フレームの中にどのサブメッシュを参照するかという情報が無くても、どのサブメッシュを参照するかについて特定することができる。
また、本実施形態によれば、基本メッシュが少なくとも1つの面を有することを保証することができる。
また、本実施形態によれば、Temporal_scalability機能を実現することができる。
さらに、本実施形態によれば、メッシュの符号化効率を向上させることができる。
上述のメッシュ符号化装置100及びメッシュ復号装置200は、コンピュータに各機能(各工程)を実行させるプログラムであって実現されていてもよい。
なお、本実施形態によれば、例えば、動画像通信において総合的なサービス品質の向上を実現できることから、国連が主導する持続可能な開発目標(SDGs)の目標9「レジリエントなインフラを整備し、持続可能な産業化を推進するとともに、イノベーションの拡大を図る」に貢献することが可能となる。
1…メッシュ処理システム
100…メッシュ符号化装置
200…メッシュ復号装置
201…多重分離部
202…基本メッシュ復号部
202A…分離部
202B…イントラ復号部
202B1…任意イントラ復号部
202B2…整列部
202C…メッシュバッファ部
202D…接続情報復号部
202E…インター復号部
202E1…動きベクトル残差復号部
202E2…動きベクトルバッファ部
202E3…動きベクトル予測部
202E4…動きベクトル算出部
202E5…加算器
203…細分割部
204…メッシュ復号部
205…パッチ統合部
206…変位量復号部
207…映像復号部
208…アトラスデータ復号部
100…メッシュ符号化装置
200…メッシュ復号装置
201…多重分離部
202…基本メッシュ復号部
202A…分離部
202B…イントラ復号部
202B1…任意イントラ復号部
202B2…整列部
202C…メッシュバッファ部
202D…接続情報復号部
202E…インター復号部
202E1…動きベクトル残差復号部
202E2…動きベクトルバッファ部
202E3…動きベクトル予測部
202E4…動きベクトル算出部
202E5…加算器
203…細分割部
204…メッシュ復号部
205…パッチ統合部
206…変位量復号部
207…映像復号部
208…アトラスデータ復号部
Claims (6)
- メッシュ復号装置であって、
インターフレームのビットストリームから復号した動きベクトルと参照フレームの基本メッシュとを加算することで、基本メッシュを復号するインター復号部と、
前記基本メッシュを用いて、基本メッシュの面を細分割する細分割部とを備え、
前記インター復号部は、ビットストリームから現フレーム又は現サブメッシュの動きベクトル数を復号し、復号した前記動きベクトル数が参照フレーム又は参照サブメッシュの頂点数と異なる時に、前記現フレーム又は前記現サブメッシュの頂点数及び一部の頂点座標を調整することを特徴とするメッシュ復号装置。 - 前記インター復号部は、前記動きベクトル数が前記参照サブメッシュの頂点数より少ない又は同じである時に、前記動きベクトルで前記動きベクトル数まで頂点座標を算出し、他の頂点座標を参照サブメッシュのままにすることを特徴とする請求項1に記載のメッシュ復号装置。
- 前記インター復号部は、前記動きベクトル数が前記参照サブメッシュの頂点数より多い時に、前記現フレーム又は前記現サブメッシュの頂点数を前記動きベクトル数とし、前記動きベクトルで参照サブメッシュの頂点数まで頂点座標を算出し、他の頂点座標を前記動きベクトルのままにすることを特徴とする請求項1に記載のメッシュ復号装置。
- 前記インター復号部は、前記動きベクトル数が前記参照サブメッシュの頂点数より多い時に、前記現フレーム又は前記現サブメッシュの頂点数を前記参照フレームの頂点数とし、前記動きベクトルで前記参照サブメッシュの頂点数まで頂点座標を算出する ことを特徴とする請求項1に記載のメッシュ復号装置。
- メッシュ復号方法であって、
インターフレームのビットストリームから復号した動きベクトルと参照フレームの基本メッシュとを加算することで、基本メッシュを復号する工程Aと、
前記基本メッシュを用いて、基本メッシュの面を細分割する工程Bとを有し、
前記工程Aにおいて、ビットストリームから現フレーム又は現サブメッシュの動きベクトル数を復号し、復号した前記動きベクトル数が参照フレーム又は参照サブメッシュの頂点数と異なる時に、前記現フレーム又は前記現サブメッシュの頂点数及び一部の頂点座標を調整することを特徴とするメッシュ復号方法。 - コンピュータを、メッシュ復号装置として機能させるプログラムであって、
前記メッシュ復号装置は、
インターフレームのビットストリームから復号した動きベクトルと参照フレームの基本メッシュとを加算することで、基本メッシュを復号するインター復号部と、
前記基本メッシュを用いて、基本メッシュの面を細分割する細分割部とを備え、
前記インター復号部は、ビットストリームから現フレーム又は現サブメッシュの動きベクトル数を復号し、復号した前記動きベクトル数が参照フレーム又は参照サブメッシュの頂点数と異なる時に、前記現フレーム又は前記現サブメッシュの頂点数及び一部の頂点座標を調整することを特徴とするプログラム。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2024065025A JP2025161653A (ja) | 2024-04-12 | 2024-04-12 | メッシュ復号装置、メッシュ復号方法及びプログラム |
| JP2024-065025 | 2024-04-12 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| WO2025215917A1 true WO2025215917A1 (ja) | 2025-10-16 |
Family
ID=97350192
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| PCT/JP2025/002824 Pending WO2025215917A1 (ja) | 2024-04-12 | 2025-01-29 | メッシュ復号装置、メッシュ復号方法及びプログラム |
Country Status (2)
| Country | Link |
|---|---|
| JP (1) | JP2025161653A (ja) |
| WO (1) | WO2025215917A1 (ja) |
Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2023249743A1 (en) * | 2022-06-21 | 2023-12-28 | Tencent America LLC | Mesh vertex displacement coding |
| JP2024097467A (ja) * | 2023-01-06 | 2024-07-19 | Kddi株式会社 | メッシュ復号装置、メッシュ復号方法及びプログラム |
| JP2024152168A (ja) * | 2023-04-14 | 2024-10-25 | Kddi株式会社 | メッシュ復号装置、メッシュ復号方法及びプログラム |
| JP2025009037A (ja) * | 2023-07-06 | 2025-01-20 | Kddi株式会社 | メッシュ復号装置、メッシュ復号方法及びプログラム |
-
2024
- 2024-04-12 JP JP2024065025A patent/JP2025161653A/ja active Pending
-
2025
- 2025-01-29 WO PCT/JP2025/002824 patent/WO2025215917A1/ja active Pending
Patent Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2023249743A1 (en) * | 2022-06-21 | 2023-12-28 | Tencent America LLC | Mesh vertex displacement coding |
| JP2024097467A (ja) * | 2023-01-06 | 2024-07-19 | Kddi株式会社 | メッシュ復号装置、メッシュ復号方法及びプログラム |
| JP2024152168A (ja) * | 2023-04-14 | 2024-10-25 | Kddi株式会社 | メッシュ復号装置、メッシュ復号方法及びプログラム |
| JP2025009037A (ja) * | 2023-07-06 | 2025-01-20 | Kddi株式会社 | メッシュ復号装置、メッシュ復号方法及びプログラム |
Also Published As
| Publication number | Publication date |
|---|---|
| JP2025161653A (ja) | 2025-10-24 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP6486421B2 (ja) | ビデオデータの再生状態識別のためのビデオデータの多重化方法及び装置、逆多重化方法及び装置 | |
| CN114402597B (zh) | 应用自适应环路滤波器的视频或图像编码 | |
| CN120281898A (zh) | 解码设备、编码设备和数据发送设备 | |
| CN120378608A (zh) | 解码和编码设备及发送用于图像的数据的设备 | |
| CN104604226A (zh) | 具有时间可伸缩性的对视频进行编码的方法和设备以及具有时间可伸缩性的对视频进行解码的方法和设备 | |
| WO2025009221A1 (ja) | メッシュ復号装置、メッシュ復号方法及びプログラム | |
| CN116601955A (zh) | 运动矢量差的自适应分辨率 | |
| WO2025215917A1 (ja) | メッシュ復号装置、メッシュ復号方法及びプログラム | |
| WO2025215918A1 (ja) | メッシュ復号装置、メッシュ復号方法及びプログラム | |
| WO2025215922A1 (ja) | メッシュ復号装置、メッシュ復号方法及びプログラム | |
| WO2025215921A1 (ja) | メッシュ復号装置、メッシュ復号方法及びプログラム | |
| WO2026009476A1 (ja) | メッシュ復号装置、メッシュ復号方法及びプログラム | |
| WO2026009477A1 (ja) | メッシュ復号装置、メッシュ復号方法及びプログラム | |
| WO2025146749A1 (ja) | メッシュ復号装置、メッシュ復号方法及びプログラム | |
| JP2025107108A (ja) | メッシュ復号装置、メッシュ復号方法及びプログラム | |
| WO2025146754A1 (ja) | メッシュ復号装置、メッシュ復号方法及びプログラム | |
| WO2025146753A1 (ja) | メッシュ復号装置、メッシュ復号方法及びプログラム | |
| WO2025146750A1 (ja) | メッシュ復号装置、メッシュ復号方法及びプログラム | |
| JP2025107109A (ja) | メッシュ復号装置、メッシュ復号方法及びプログラム | |
| WO2026088614A1 (ja) | メッシュ復号装置、メッシュ復号方法及びプログラム | |
| WO2026088613A1 (ja) | メッシュ復号装置、メッシュ復号方法及びプログラム | |
| WO2026088615A1 (ja) | メッシュ復号装置、メッシュ復号方法及びプログラム | |
| CN117979005A (zh) | 图像编码/解码设备和发送数据的设备 | |
| JP2025064207A (ja) | メッシュ復号装置、メッシュ復号方法及びプログラム | |
| JP2025009038A (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: 25786580 Country of ref document: EP Kind code of ref document: A1 |