3D data decoding device and 3D data encoding device

The 3D data decoding and encoding devices address the limitations of partition selection in existing methods by allowing flexible partition arrangements, resulting in improved encoding and decoding quality for 3D data transmission and display.

JP2025136391APending Publication Date: 2025-09-19SHARP KK
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
JP2024034924
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Filing Date
2024-03-07
Publication Date
2025-09-19

AI Technical Summary

Technical Problem

Existing 3D data encoding methods face limitations in selecting continuous partitions due to restrictions on tile configuration, leading to inefficiencies in encoding and decoding non-redundant 3D data.

Method used

A 3D data decoding device and encoding device that relax constraints on partition selection by allowing flexible partition arrangements, enabling high-quality encoding and decoding of 3D data through specific bitstream conformance conditions.

Benefits of technology

Enhances the flexibility of partition selection and improves the quality of 3D data encoding and decoding, allowing for efficient transmission and display of high-quality 3D data.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2025136391000001_ABST
    Figure 2025136391000001_ABST
Patent Text Reader

Abstract

To enhance flexibility in partition selection and achieve highly efficient encoding and decoding of 3D data by relaxing constraints related to partition selection.SOLUTION: A 3D data decoding device that decodes mesh data or point cloud data, includes means that decodes a syntax element indicating a tile position, and derives a column: topLeftColumn of a top-left partition of the tile, a row: topLeftRow of the top-left partition, a column: bottomRightColumn of a bottom-right partition of the tile, and a row: bottomRightRow of the bottom-right partition. The 3D data decoding device decodes a bitstream that satisfies specific bitstream conformance conditions with respect to the column of the partition of an i-th tile, the column of the partition of a j-th tile, the row of the partition of the i-th tile, and the row of the partition of the j-th tile.SELECTED DRAWING: Figure 3
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] An embodiment of the present invention relates to a 3D data encoding device and a 3D data decoding device. [Background technology]

[0002] To efficiently transmit or record 3D data, there are 3D data encoding devices that convert the 3D data into 2D images, encode them using a video encoding method, and generate encoded data, and 3D data decoding devices that decode the 2D images from the encoded data and reconstruct the 3D data.

[0003] Specific examples of 3D data encoding methods include MPEG-I's ISO / IEC 23090-5 V3C (Volumetric Video-based Coding) and V-PCC (Video-based Point Cloud Compression). V3C can encode and decode point clouds consisting of point positions and attribute information. Furthermore, it can also be used to encode and decode multi-viewpoint video and mesh video using ISO / IEC 23090-12 (MPEG Immersive Video, MIV) and ISO / IEC 23090-29 (Video-based Dynamic Mesh Coding, V-DMC), which is currently being standardized. The latest draft document of the V-DMC method is disclosed in Non-Patent Document 1.

[0004] In these 3D data coding methods, the geometry and attributes that make up the 3D data are encoded and decoded as images using video coding methods such as H.265 / HEVC (High Efficiency Video Coding) and H.266 / VVC (Versatile Video Coding).

[0005] In the case of a point cloud, the geometry image is the depth to the projection plane, and the attribute image is the image of the attributes projected onto the projection plane.

[0006] 3D data (mesh) such as that in Non-Patent Document 1 consists of a base mesh, mesh displacement, and texture mapping image. A vertex coding method such as Draco can be used to encode the base mesh. Mesh displacement can be encoded by encoding the mesh displacement image, which is a two-dimensional representation of the mesh displacement, using a video codec, or by directly encoding it using arithmetic coding. The texture mapping image is encoded as an attribute image using a video codec. The video codec can be the above-mentioned HEVC or VVC. [Prior art documents] [Non-patent literature]

[0007] [Non-Patent Document 1] WD 5.0 ​​of V-DMC (MDS23318_WG07_N00744_clean), ISO / IEC JTC 1 / SC 29 / WG 7 N0744, October 2023 Summary of the Invention [Problem to be solved by the invention]

[0008] The 3D data encoding method in Non-Patent Document 1 has a problem in that it is not possible to select partitions that are continuous in the horizontal and vertical directions due to restrictions on partition selection during tile configuration.

[0009] The present invention aims to efficiently encode and decode non-redundant 3D data while maintaining flexibility in partition selection by relaxing constraints on partition selection. [Means for solving the problem]

[0010] A 3D data decoding device that decodes mesh data or point cloud data includes means for decoding a syntax element that indicates the position of a tile, and deriving the column topLeftColumn of the upper left partition of the tile, the row topLeftRow of the upper left partition, and the column bottomRightColumn and row bottomRightRow of the lower right partition of the tile, wherein the 3D data decoding device decodes a bitstream that satisfies specific bitstream conformance conditions for the column (topLeftColumn[i], bottomRightColumn[i]) of the partition of the i-th tile, the column (topLeftColumn[j]) of the partition of the j-th tile, the row (topLeftRow[i], bottomRightRow[i]) of the partition of the i-th tile, and the row (topLeftRow[j]) of the partition of the j-th tile.

[0011] As the above bitstream conformance, for i, j (j!=i), topLeftColumn[ i ] <= topLeftColumn[ j ] <= bottomRightColumn[ i ], topLeftRow[ i ] <= topLeftRow[ j ] <= bottomRightRow[ i ] There must be no case where both of the above characteristics are satisfied.

[0012] As the above bitstream conformance, for i, j (j!=i), topLeftColumn[ i ] <= topLeftColumn[ j ] <= bottomRightColumn[ i ], topLeftRow[ i ] <= topLeftRow[ j ] <= bottomRightRow[ i ] It is characterized in that there should be no cases where either or both of the above characteristics are satisfied.

[0013] As the above bitstream conformance, for i, j (j!=i), topLeftColumn[ i ] <= topLeftColumn[ j ] <= bottomRightColumn[ i ], topLeftRow[ i ] <= topLeftRow[ j ] <= bottomRightRow[ i ] It is characterized in that there must be no cases where one or more of the following characteristics are satisfied.

[0014] As the above bitstream conformance, for i, j (j!=i), topLeftColumn[ i ] <= topLeftColumn[ j ] <= bottomRightColumn[ i ] The characteristic of the present invention is that there must be no cases where the above characteristics are satisfied.

[0015] The 3D data decoding device further decodes a syntax element indicating a codec, and when the codec is AVC or HEVC, the bitstream conformance is as follows: topLeftColumn[ i ] <= topLeftColumn[ j ] <= bottomRightColumn[ i ] topLeftRow[ i ] <= topLeftRow[ j ] <= bottomRightRow[ i ] When the codec is VVC, the bitstream conformance is characterized by topLeftColumn[i] <= topLeftColumn[j] <= bottomRightColumn[i].

[0016] A 3D data encoding device for decoding mesh data or point cloud data includes means for encoding a syntax element indicating a tile position and deriving the column topLeftColumn of the upper left partition of the tile, the row topLeftRow of the upper left partition, and the column bottomRightColumn and row bottomRightRow of the lower right partition of the tile, wherein the 3D data encoding device encodes a bitstream that satisfies specific bitstream conformance conditions for the column (topLeftColumn[i], bottomRightColumn[i]) of the partition of the i-th tile, the column (topLeftColumn[j]) of the partition of the j-th tile, the row (topLeftRow[i], bottomRightRow[i]) of the partition of the i-th tile, and the row (topLeftRow[j]) of the partition of the j-th tile. [Effects of the Invention]

[0017] According to one aspect of the present invention, it is possible to increase the flexibility of partition selection and to encode 3D data with high quality. It can be encrypted and decrypted. [Brief explanation of the drawings]

[0018] [Figure 1] 1 is a schematic diagram showing the configuration of a 3D data transmission system according to the present embodiment. [Figure 2] FIG. 2 is a diagram showing a hierarchical structure of data in an encoded stream. [Figure 3] FIG. 2 is a functional block diagram showing a schematic configuration of a 3D data decoding device 31. [Figure 4] FIG. 2 is a functional block diagram showing the configuration of a base mesh decoding unit 303. [Figure 5] FIG. 10 is a functional block diagram showing the configuration of a mesh displacement decoding unit 305. [Figure 6] FIG. 2 is a functional block diagram showing the configuration of a mesh reconstruction unit 307. [Figure 7]10 is an example of a syntax for transmitting coordinate transformation parameters and context initialization parameters at the sequence level (ASPS). [Figure 8] 10 is an example of a syntax for transmitting coordinate transformation parameters and context initialization parameters at the picture / frame level (AFPS). [Figure 9] FIG. 10 is a diagram for explaining the operation of the mesh reconstruction unit 307. [Figure 10] 1 is a functional block diagram showing a schematic configuration of a 3D data encoding device 11. FIG. [Figure 11] FIG. 2 is a functional block diagram showing the configuration of a base mesh encoding unit 103. [Figure 12] FIG. 2 is a functional block diagram showing the configuration of a mesh displacement encoding unit 107. [Figure 13] FIG. 2 is a functional block diagram showing the configuration of a mesh separation unit 115. [Figure 14] 10 is a diagram for explaining the operation of the mesh separating unit 115. FIG. [Figure 15] 10 is an example of the syntax of tile information in an atlas frame. [Figure 16] FIG. 10 is a diagram showing the positions of tiles. [Figure 17] FIG. 10 is a diagram showing the positions of tiles. [Figure 18] FIG. 10 is a diagram showing the positions of tiles. DETAILED DESCRIPTION OF THE INVENTION

[0019] Hereinafter, an embodiment of the present invention will be described with reference to the drawings.

[0020] FIG. 1 is a schematic diagram showing the configuration of a 3D data transmission system 1 according to this embodiment.

[0021] The 3D data transmission system 1 is a system that transmits an encoded stream obtained by encoding 3D data to be encoded, decodes the transmitted encoded stream, and displays the 3D data. The 3D data transmission system 1 includes a 3D data encoding device 11, a network 21, a 3D data decoding device 31, and a 3D data display device 41.

[0022] The 3D data T is input to the 3D data encoding device 11.

[0023] The network 21 transmits the encoded stream Te generated by the 3D data encoding device 11 to the 3D data decoding device 31. The network 21 is the Internet, a wide area network (WAN), a local area network (LAN), or a combination of these. The network 21 is not necessarily limited to a bidirectional communication network, and may be a unidirectional communication network that transmits broadcast waves such as terrestrial digital broadcasting and satellite broadcasting. Furthermore, the network 21 may be replaced by a storage medium on which the encoded stream Te is recorded, such as a DVD (Digital Versatile Disc: registered trademark) or a BD (Blu-ray Disc: registered trademark).

[0024] The 3D data decoding device 31 decodes each of the coded streams Te transmitted by the network 21, and generates one or more decoded 3D data Td.

[0025] The 3D data display device 41 displays all or part of one or more pieces of decoded 3D data Td generated by the 3D data decoding device 31. The 3D data display device 41 is equipped with a display device such as a liquid crystal display, an organic EL (Electro-luminescence) display, etc. The form of the display can be a stationary display, a mobile display, an HMD, etc. If the 3D data decoding device 31 has high processing power, it displays high quality images, and if it has only low processing power, it displays images that do not require high processing power or display power.

[0026] <operator> The operators used in this specification are listed below.

[0027] >> is a right bit shift, << is a left bit shift, & is a bitwise AND, | is a bitwise OR, |= is the OR assignment operator, and || indicates logical sum.

[0028] x?y:z is a ternary operator that takes y if x is true (non-zero) and z if x is false (zero).

[0029] y..z denotes the set of integers from y to z.

[0030] <Structure of the coded stream Te> Before proceeding to a detailed description of the 3D data encoding device 11 and the 3D data decoding device 31 according to this embodiment, the data structure of the encoded stream Te generated by the 3D data encoding device 11 and decoded by the 3D data decoding device 31 will be described.

[0031] 2 is a diagram showing the hierarchical data structure of the coded stream Te. The coded stream Te has the data structure of either a V3C sample stream or a V3C unit stream. The V3C sample stream includes a sample stream header and a V3C unit. The V3C unit stream includes a V3C unit.

[0032] A V3C unit includes a V3C unit header and a V3C unit payload. The V3C unit header is a Unit Type, which is an ID that indicates the type of V3C unit, and takes values ​​indicated by labels such as V3C_VPS, V3C_AD, V3C_AVD, V3C_GVD, and V3C_OVD.

[0033] If the Unit Type is V3C_VPS (Video Parameter Set), the V3C unit contains a V3C parameter set.

[0034] When the Unit Type is V3C_AD (Atlas Data), the V3C unit includes a VPS ID, an atlasID, a sample stream nal header, and multiple NAL units. The atlasID is an ID (Identification) and takes an integer value of 0 or greater.

[0035] A NAL unit includes a NALUnitType, a layerID, a TemporalID, and an RBSP (Raw byte sequence payload).

[0036] NAL units are identified by NALUnitType, and are classified as ASPS (Atlas Sequence Parameter Set), AAPS (Atlas Adaptation Parameter Set), ATL (Atlas Tile layer), SEI (Supplemental Enhancement Information), etc.

[0037] The ATL includes an ATL header and an ATL data unit, and the ATL data unit includes information such as the patch position and size, such as patch information data.

[0038] The SEI includes payloadType, which indicates the type of the SEI, payloadSize, which indicates the size (number of bytes) of the SEI, and sei_payload, which is the data of the SEI.

[0039] If the Unit Type is V3C_AVD (Attribute Video Data), unit is VPS ID, atlasID, attribute image ID attrIdx, partition ID partI dx, mapIdx of the map ID, auxFlag which indicates whether it is auxiliary data or not, and video stream. The video stream is data encoded using HEVC or VVC. In V-DMC, attribute data corresponds to a texture image.

[0040] If NalUnitType is V3C_GVD (Geometry Video Data), the V3C unit contains VPS ID, atlasID, mapIdx, auxFlag, and video stream. Geometry data corresponds to mesh displacement in V-DMC.

[0041] If the Unit Type is V3C_OVD (Occupancy Video Data), the V3C unit includes a VPS ID, an atlas ID, and a video stream.

[0042] If the Unit Type is V3C_MD (Mesh data), the V3C unit contains the VPS ID, atlas ID, and mesh_payload. In V-DMC, it corresponds to the base mesh.

[0043] (Configuration of 3D data decoding device according to the first embodiment) 3 is a functional block diagram showing a schematic configuration of a 3D data decoding device 31 according to the first embodiment. The 3D data decoding device 31 is composed of a demultiplexing unit 301, an atlas information decoding unit 302, a base mesh decoding unit 303, a mesh displacement decoding unit 305, a mesh reconstruction unit 307, an attribute decoding unit 306, and a color space conversion unit 308. The 3D data decoding device 31 inputs encoded 3D data and outputs atlas information, meshes, and attribute images.

[0044] The demultiplexing unit 301 inputs encoded data multiplexed in a byte stream format, ISOBMFF (ISO Base Media File Format), etc., demultiplexes it, and outputs an atlas information encoded stream (V3C_AD Atlas Data stream, NAL unit), a base mesh encoded stream (V3C_MD mesh_payload), a mesh displacement encoded stream (V3C_GVD video stream), and an attribute video stream (V3C_AVD video stream).

[0045] The atlas information decoding unit 302 receives the atlas information coded stream output from the demultiplexing unit 301 and decodes the atlas information.

[0046] 3 decodes coordinate system transformation information displacementCoordinateSystem (asve_displacement_coordinate_system, afve_displacement_coordinate_system) indicating the coordinate system from the encoded data. Note that a separate gating flag may be provided, and each piece of coordinate system transformation information may be decoded only when the gating flag is 1. The gating flag may be, for example, afve_displacement_coordinate_system_enable_flag.

[0047] The base mesh decoding unit 303 decodes the base mesh coded stream coded by vertex coding (3D data compression coding method, for example, Draco) and outputs the base mesh. The base mesh will be described later. The codec type of the base mesh may be obtained by decoding the syntax elements bmsps_intra_mesh_codec_id and bmsps_inter_mesh_codec_id.

[0048] The mesh displacement decoding unit 305 decodes the mesh displacement coded stream and outputs the mesh displacement. The type of codec used for coding is indicated by ptl_profile_codec_group_idc obtained by decoding the V3C parameter set of the coded data. Alternatively, it may be indicated by a Four CC code (four-character code, 4CC code) indicated by gi_geometry_codec_id[atlasID] of the V3C parameter set. gi_geometry_codec_id[atlasID] indicates an index corresponding to the codec ID of the decoder used to decode the geometry video stream in the atlas ID. Alternatively, the syntax element dsps_codec_id indicating the type of codec may be decoded from the parameter set. A set indicating the correspondence between the codec ID (ccm_codec_id) and its 4CC code (ccm_codec_4cc[ccm_codec_id]) is defined in a separate codec mapping SEI (component_codec_mapping SEI). It may be transmitted via EI.

[0049] The mesh reconstructing unit 307 receives the base mesh and the mesh displacement and reconstructs the mesh in the 3D space.

[0050] The attribute decoding unit 306 decodes an attribute video stream encoded using VVC, HEVC, or the like, and outputs an attribute image. The attribute image may be a texture image unfolded on the UV axis (a texture-mapped image converted using the UV atlas method) in YCbCr format. The type of codec used for encoding is indicated by ptl_profile_codec_group_idc, which is obtained by decoding the V3C parameter set of the encoded data. Alternatively, it may be indicated by the Four CC code indicated by ai_attribute_codec_id[atlasID] in the V3C parameter set. ai_attribute_codec_id[atlasID] indicates an index in the atlas ID that corresponds to the codec ID of the decoder used to decode the attribute video stream.

[0051] The color space conversion unit 308 converts the color space of the attribute image from YCbCr format to RGB format. Note that an attribute video stream coded in RGB format may be decoded and color space conversion may be omitted.

[0052] (Decoding the base mesh) FIG. 4 is a functional block diagram showing the configuration of the base mesh decoding unit 303. The base mesh decoding unit 303 is composed of a mesh decoding unit 3031, a motion information decoding unit 3032, a mesh motion compensation unit 3033, a reference mesh memory 3034, a switch 3035, a switch 3036, and a skip decoding unit 3037. The base mesh decoding unit 303 may also include a base mesh dequantization unit (not shown) before the output of the base mesh. When the base mesh to be decoded is coded (intra-coded) without reference to other base meshes (e.g., base meshes that have already been coded and decoded), the switches 3035 and 3036 are connected to the mesh decoding unit 3031. When the base mesh to be decoded is coded (inter-coded) with reference to other base meshes, the switches 3035 and 3036 are connected to the side that performs motion compensation. When motion compensation is performed, the target vertex coordinates are derived by referencing already decoded vertex coordinates and motion information. On the other hand, if the base mesh to be decoded is skipped and another base mesh is coded (skip coded) as the decoding target, the connection is made to the skip decoding unit 3037 side.

[0053] Each base mesh consists of one or more submeshes. If multiple submeshes exist, the tile header in the atlas data subbitstream requires an ID to find the submesh corresponding to the tile. A submesh is a subset of a mesh defined by specifying a portion of a 3D model, and is a mesh created by dividing a mesh into multiple parts. By dividing a mesh into subsets, it is possible to define meshes for specific ranges individually for more precise control over portions of a 3D model. Each submesh has its own vertex coordinates, normal vectors, texture coordinates, etc., and can be manipulated and edited individually. The mesh for a given frame is called a mesh frame.

[0054] The mesh decoding unit 3031 decodes the intra-coded base mesh coded stream and outputs the base mesh (base mesh vertex positions, base mesh vertex position vectors). As the coding method, Draco, Edge Breaker, etc. are used.

[0055] The motion information decoding unit 3032 decodes the inter-coded base mesh coded stream and outputs motion information (mesh motion information, mesh motion vectors) for each vertex of a reference mesh (described later). Entropy coding such as arithmetic coding is used as the coding method.

[0056] The mesh motion compensation unit 3033 performs motion compensation on each vertex of the reference mesh input from the reference mesh memory 3034 based on the motion information, and outputs a motion-compensated mesh.

[0057] The reference mesh memory 3034 is a memory that holds the decoded mesh for reference in subsequent decoding processes.

[0058] (Mesh displacement decoding) 5 is a functional block diagram showing the configuration of the mesh displacement decoding unit 305. The mesh displacement decoding unit 305 is made up of a CABAC decoding unit (arithmetic decoding unit 3051, multi-value conversion unit 3052, context selection unit 3056, context initialization unit 3057), an inverse quantization unit 3053, an inverse transformation unit 3054, and a coordinate system transformation unit 3055.

[0059] (Coordinate system) The following two types of coordinate systems are used for mesh displacement (3D vector).

[0060] Cartesian coordinate system (canonical): A rectangular coordinate system commonly defined throughout the entire 3D space. (X, Y, Z) coordinate system. A rectangular coordinate system whose direction does not change at the same time (within the same frame, within the same tile).

[0061] Local coordinate system (local): A Cartesian coordinate system defined for each region or vertex in 3D space. A Cartesian coordinate system whose direction can change at the same time (within the same frame, within the same tile). normal A coordinate system with axes (D), tangent (U), and bi-tangent (V). That is, it is a Cartesian coordinate system consisting of the first axis (D) indicated by the normal vector n_vec at a vertex (or the face containing the vertex), and the second axis (U) and third axis (V) indicated by two tangent vectors t_vec and b_vec that are perpendicular to the normal vector n_vec. n_vec, t_vec, and b_vec are three-dimensional vectors. The (D, U, V) coordinate system may also be called the (n, t, b) coordinate system.

[0062] (Decoding and derivation of sequence-level control parameters) Here, the control parameters at the sequence level to be decoded from the coded data by the mesh displacement decoding unit 305 will be explained.

[0063] Figure 7 shows an example of the syntax of the Atlas Sequence Parameter Set (ASPS), a sequence-level parameter set. ASPS is one of the NAL units of atlas information and contains syntax elements that apply to the atlas information coded stream. The semantics of each field are as follows:

[0064] asve_subdivision_iteration_count: Indicates the number of mesh division iterations.

[0065] asve_displacement_coordinate_system: Coordinate system transformation information indicating the coordinate system of the mesh displacement. If the value is equal to a given first value (e.g. 0), it indicates a Cartesian coordinate system. If the value is equal to another second value (e.g. 1), it indicates a local coordinate system.

[0066] asve_1d_displacement_flag: A flag indicating whether the mesh displacement is one-dimensional. If the value is true, it indicates that the mesh displacement is one-dimensional. If the value is false, it indicates that the mesh displacement is three-dimensional.

[0067] (Decoding and derivation of picture / frame level control parameters) Figure 8 shows an example of the syntax of AFPS (Atlas Frame Parameter Set), a picture / frame-level parameter set. AFPS is one of the NAL units of atlas information and contains syntax elements that apply to the atlas information coded stream. The semantics of each field are as follows: AFPS contains atlas_frame_mesh_information().

[0068] afve_overriden_flag: A flag indicating whether to update the coordinate system of the mesh displacement. If this flag is set to true, the coordinate system of the mesh displacement is updated based on the value of afve_displacement_coordinate_system, which will be described later. If this flag is set to false, the coordinate system of the mesh displacement is not updated.

[0069] afve_subdivision_iteration_count: Indicates the number of mesh subdivision iterations.

[0070] afve_displacement_coordinate_system: Coordinate system transformation information indicating the coordinate system of the mesh displacement. If the value is equal to the first value (e.g. 0), it indicates a Cartesian coordinate system. If the value is equal to the second value (e.g. 1), it indicates a local coordinate system. If the syntax element is not present, the value is inferred as the value decoded by ASPS and the default coordinate system is the coordinate system indicated by ASPS.

[0071] (Operation of mesh displacement decoding unit) The arithmetic decoding unit 3051 decodes the arithmetically coded mesh displacement coded stream according to a value (context) indicating a random variable, and outputs a binary signal. The binary signal may be an alpha code or a k-th order Exp-Golomb code. The Exp-Golomb code consists of prefix and suffix codes. The prefix is ​​an exponentially increasing value, and the suffix is ​​the remainder. When encoding and decoding the variable rem using the Exp-Golomb code, the prefix and suffix of the Exp-Golomb code are also called the prefix and suffix of rem.

[0072] The multi-value unit 3052 decodes the binary signal into a quantized mesh displacement Qdisp, which is a multi-value signal.

[0073] The context selection unit 3056 (context memory) has a memory for storing contexts, derives the context to be used for arithmetic decoding of mesh displacements according to the state, and updates the value as necessary.

[0074] The context initialization unit 3057 initializes the context (probability of occurrence of a binary signal).

[0075] (Mesh displacement derivation process) The mesh displacement decoding unit 305 decodes the syntax elements dismu_nz_subBlock, dismu_coeff_abs_level_gt0, dismu_coeff_abs_level_gt1, dismu_coeff_abs_level_gt2, dismu_coeff_abs_level_gt3, dismu_coeff_abs_level_rem, and dismu_coeff_sign through the following processing to derive the mesh displacement Qdisp.

[0076] The inverse quantization unit 3053 performs inverse quantization based on the quantization scale value iscale, and derives the mesh displacement Tdisp after transformation (e.g., wavelet transformation). Tdisp may be in a Cartesian coordinate system or a local coordinate system. iscale is a value derived from the quantization parameter of each component of the mesh displacement image. Inverse quantization may be performed in units of sub-meshes indicated by subMeshID (= displSubMeshID). Tdisp[subMeshID][0][] = (Qdisp[subMeshID][0][] * iscale[0] + iscaleOffset) >> iscaleShift Tdisp[subMeshID][1][] = (Qdisp[subMeshID][1][] * iscale[1] + iscaleOffset) >> iscaleShift Tdisp[subMeshID][2][] = (Qdisp[subMeshID][2][] * iscale[2] + iscaleOffset) >> iscaleShift where iscaleOffset = 1<<(iscaleShift-1). iscaleShift can be a predefined constant, or can be set at the sequence level, picture / frame level, or subMeshID (= displSubMeshI It is also possible to encode the data at the submesh level, tile / patch level, etc. shown in D) and use the values ​​decoded from the encoded data.

[0077] The inverse transform unit 3054 performs an inverse transform g (for example, an inverse wavelet transform) to derive a mesh displacement d. d[0][] = g(Tdisp[subMeshID][0][]) d[1][] = g(Tdisp[subMeshID][1][]) d[2][] = g(Tdisp[subMeshID][2][]) The coordinate system conversion unit 3055 converts the mesh displacement (in the coordinate system of the mesh displacement) to the Cartesian coordinate system based on the value of the coordinate system conversion information displacementCoordinateSystem. Specifically, when displacementCoordinateSystem == 1, it converts the displacement in the local coordinate system to the displacement in the Cartesian coordinate system. Here, d is a three-dimensional vector representing the mesh displacement before coordinate system conversion. disp is a three-dimensional vector representing the mesh displacement after coordinate system conversion and is in the Cartesian coordinate system. n_vec, t_vec, and b_vec are three-dimensional vectors (in the Cartesian coordinate system) corresponding to each axis of the local coordinate system of the target region or target vertex. if (displacementCoordinateSystem == 0) { disp = d } else if (displacementCoordinateSystem == 1){ disp = d[0] * n_vec3 + d[1] * t_vec3 + d[2] * b_vec3 } Here, n_vec3, t_vec3, and b_vec3 are three-dimensional vectors (in the Cartesian coordinate system) corresponding to each axis of the local coordinate system of the target region with fluctuations suppressed. For example, the vectors of the coordinate system used for decoding are derived from the previous coordinate system and the current coordinate system as follows.

[0078] n_vec3 = (w*n_vec3 + (WT - w)*n_vec)>>wShift t_vec3 = (w*t_vec3 + (WT - w)*t_vec)>>wShift b_vec3 = (w*b_vec3 + (WT - w)*b_vec)>>wShift Here, for example, wShift = 2, 3, 4, WT = 1<<wShift, and w = 1..WT - 1. For example, when w = 3 and wShift = 3, the coordinate system vectors are derived as follows.

[0079] n_vec3 = (3*n_vec3 + 5*n_vec)>>3 t_vec3 = (3*t_vec3 + 5*t_vec)>>3 b_vec3 = (3*b_vec3 + 5*b_vec)>>3 (Mesh reconstruction) 6 is a functional block diagram showing the configuration of the mesh reconstruction unit 307. The mesh reconstruction unit 307 is made up of a mesh division unit 3071 and a mesh deformation unit 3072.

[0080] The mesh dividing unit 3071 divides the base mesh output from the base mesh decoding unit 303 to generate divided meshes.

[0081] Figure 9(a) shows a part (triangle) of the base mesh, and the triangle is composed of vertices v1, v2, and v3. v1, v2, and v3 are three-dimensional vectors. The mesh division unit 3071 generates and outputs divided meshes by adding new vertices v12, v13, and v23 to the middle of each side of the triangle (Figure 9(b)). v12 = (v1 + v2) / 2 v13 = (v1 + v3) / 2 v23 = (v2 + v3) / 2 The following is also possible: v12 = (v1 + v2 + 1) >> 1 v13 = (v1 + v3 + 1) >> 1 v23 = (v2 + v3 + 1) >> 1 The mesh deformation unit 3072 receives the division mesh and the mesh displacement, and outputs the mesh displacement d12, A deformed mesh is generated and output by adding d13 and d23 (FIG. 9(c)). The mesh displacement is the output of the mesh displacement decoding unit 305 (coordinate system conversion unit 3055). d12, d13, and d23 are mesh displacements corresponding to the vertices v12, v13, and v23 added by the mesh division unit 3071. v12' = v12 + d12 v13' = v13 + d13 v23' = v23 + d23 It should be noted that d12 = disp[0][], d23 = disp[1][], and d23 = disp[3][] may also be used.

[0082] (Tile Selection Information Syntax Configuration) An atlas frame can be divided into one or more partition units, and tiles can be made up of these units (partitions). Typical examples are as follows: -Do not split the atlas frame, use the entire atlas frame as one tile (afti_single_tile_in_atlas_frame_flag==1). Divide the atlas frame into multiple partitions and use one partition as one tile (afti_single_tile_in_atlas_frame_flag==0 and afti_single_partition_per_tile_flag==1). Divide the atlas frame into multiple partitions, and use one or more horizontally and vertically consecutive partitions as one tile (afti_single_tile_in_atlas_frame_flag==0 and afti_single_partition_per_tile_flag==0).

[0083] An atlas frame can be divided into NumPartitionColumns * NumPartitionRows tile partitions (hereinafter referred to as partitions). When dividing, you can choose to divide the frame at equal intervals or in specified units. NumPartitionColumns and NumPartitionRows are the number of partition divisions in the horizontal and vertical directions, respectively.

[0084] Note that tiles are not limited to atlas frames, but may also be attributes, geometries, displacements, or meshes. In other words, the following syntax elements and their bitstream conformance conditions can also be used for attribute, geometry, displacement, and mesh tiles.

[0085] 15 is a diagram showing the syntax of the tile division information. The tile division information may use atlas_frame_tile_information() defined in the ISO / IEC 23090-5 V3C standard.

[0086] The atlas information decoding unit 302 decodes the syntax element afti_single_tile_in_atlas_frame_flag. afti_single_tile_in_atlas_frame_flag is a binary flag indicating whether the atlas frame is composed of a single tile, and has a value (e.g., 1) indicating that the atlas frame is composed of a single tile, or a value (e.g., 0) indicating that the atlas frame is composed of multiple tiles. When the value of afti_single_tile_in_atlas_frame_flag is a value indicating multiple tiles, the atlas information decoding unit 302 decodes the syntax element afti_uniform_partition_spacing_flag. Here, afti_uniform_partition_spacing_flag is a binary flag indicating whether the atlas frame is divided into equally spaced partitions, and has a value (e.g., 1) indicating that the atlas frame is divided into equally spaced partitions, or a value (e.g., 0) indicating that the atlas frame is divided into partitions with different intervals.

[0087] The atlas information decoder 302 derives parameters that indicate the position and size of the tiles.

[0088] - When afti_uniform_partition_spacing_flag is set to 1.

[0089] The atlas information decoding unit 302 decodes the syntax elements afti_partition_cols_width_minus1 and afti_partition_cols_width_minus1, which indicate the width and height of each partition excluding the rightmost and bottommost partitions. For each i=0..NumPartitionColumns-1, j=0..NumPartitionRows, PartitionPosX[i], PartitionPosY[j], PartitionWidth[i], and PartitionHeight[j], which indicate the upper left x and y coordinates, width, and height of each partition, are calculated as follows:

[0090] partitionWidth = ( afti_partition_cols_width_minus1 + 1 ) * 64 NumPartitionColumns = asps_frame_width / partitionWidth PartitionPosX

[0000] = 0 PartitionWidth

[0000] = partitionWidth for( i = 1; i < NumPartitionColumns - 1; i++ ) { PartitionPosX[ i ] = PartitionPosX[ i - 1 ] + PartitionWidth[ i - 1 ] PartitionWidth[ i ] = partitionWidth } partitionHeight = (afti_partition_rows_height_minus1 + 1) * 64 NumPartitionRows = asps_frame_height / partitionHeight PartitionPosY

[0000] = 0 PartitionHeight

[0000] = partitionHeight for( j = 1; j < NumPartitionRows - 1; j++ ) { PartitionPosY[ j ] = PartitionPosY[ j - 1 ] + PartitionHeight[ j - 1 ] PartitionHeight[ j ] = partitionHeight } - When afti_uniform_partition_spacing_flag is a value indicating 0.

[0091] The atlas information decoding unit 302 decodes the syntax elements afti_num_partition_columns_minus1 and afti_num_partition_rows_minus1, which indicate the number of tile partitions in the horizontal and vertical directions.

[0092] For each i=0..NumPartitionColumns-1, j=0..NumPartitionRows, PartitionPosX[i], PartitionPosY[j], PartitionWidth[i], and PartitionHeight[j], which indicate the upper left x and y coordinates, width, and height of each partition, are calculated as follows:

[0093] NumPartitionColumns = afti_num_partition_columns_minus1 + 1 PartitionPosX

[0000] = 0 partitionWidth

[0000] = ( afti_partition_column_width_minus1

[0000] + 1 ) * 64 for( i = 1; i < NumPartitionColumns - 1; i++ ) { PartitionPosX[ i ] = PartitionPosX[ i - 1 ] + PartitionWidth[ i - 1 ] PartitionWidth[ i ] = ( afti_partition_column_width_minus1[ i ] + 1 ) * 64 } NumPartitionRows = afti_num_partition_rows_minus1 + 1 PartitionPosY

[0000] = 0 PartitionHeight

[0000] = ( afti_partition_row_height_minus1

[0000] + 1 ) * 64 for( j = 1; j < NumPartitionRows - 1; j++ ) { PartitionPosY[ j ] = PartitionPosY[ j - 1 ] + PartitionHeight[ j - 1 ] PartitionHeight[ j ] = ( afti_partition_row_height_minus1[ j ] + 1 ) * 64 } If the number of partitions in the horizontal and vertical directions is two or more, the x and y coordinates of the top left corner of each rightmost and bottommost partition, the width and height of each partition are PartitionPosX[i], PartitionPosY[j], and Pa PartitionWidth[i] and PartitionHeight[j] are calculated as follows:

[0094] PartitionPosX[ NumPartitionColumns - 1 ] = PartitionPosX[ NumPartitionColumns - 2 ] + PartitionWidth[ NumPartitionColumns - 2 ] PartitionWidth[ NumPartitionColumns - 1 ] = asps_frame_width - PartitionPosX[ NumPartitionColumns - 1 ] PartitionPosY[ NumPartitionRows - 1 ] = PartitionPosY[ NumPartitionRows - 2 ] + partitionHeight[ NumPartitionRows - 2 ] PartitionHeight[ NumPartitionRows - 1 ] = asps_frame_height - PartitionPosY[ NumPartitionRows - 1 ] Here, the width and height of each partition are set as multiples of 64, but they are not limited to 64 and 64 may be replaced with 32, 128, or 256.

[0095] The atlas information decoding unit 302 decodes the syntax element afti_single_partition_per_tile_flag. Here, afti_single_partition_per_tile_flag is a flag indicating whether each tile is composed of only a single partition, and has a value indicating that each tile is composed of only a single partition (e.g., 1) or a value indicating that each tile is composed of multiple partitions (e.g., 0). If afti_single_partition_per_tile_flag has a value indicating multiple partitions, the atlas information decoding unit 302 decodes the syntax element afti_num_tiles_in_atlas_frame_minus1 and performs the following process to derive tile parameters from the selected one or more partitions. Here, afti_num_tiles_in_atlas_frame_minus1 is the number of tiles composed in the atlas frame.

[0096] The atlas information decoding unit 302 decodes the syntax elements afti_top_left_partition_idx[ i ], afti_bottom_right_partition_column_offset[ i ], and afti_bottom_right_partition_row_offset[ i ] for each i=0..afti_num_tiles_in_atlas_frame_minus1. Here, afti_top_left_partition_idx[ i ] is the index of the partition in which the top left corner (corner, point) of the ith tile is located, and afti_bottom_right_partition_column_offset[ i ] is the index of the partition in which the top left corner (corner, point) of the ith tile is located. i ] is the horizontal offset of the bottom right edge of the i-th tile relative to the top left edge of the i-th tile, and afti_bottom_right_partition_row_offset[ i ] is the vertical offset of the bottom right edge of the i-th tile relative to the top left edge of the i-th tile.

[0097] Based on the above decoded syntax, the partition indices topLeftColumn[ i ], topLeftRow[ i ], bottomRightColumn[ i ], bottomRightRow[ i ] for the top left horizontal and height directions, and bottom right horizontal and height directions of each tile i are calculated as follows:

[0098] topLeftColumn[ i ] = afti_top_left_partition_idx[ i ] % NumPartitionColumns topLeftRow[ i ] = afti_top_left_partition_idx[ i ] / NumPartitionColumns bottomRightColumn[ i ] = topLeftColumn[ i ] + afti_bottom_right_partition_column_offset[ i ] bottomRightRow[ i ] = topLeftRow[ i ] + afti_bottom_right_partition_row_offset[ i ] Here, bottomRightColumn[ i ] and bottomRightRow[ i ] may be less than or equal to ( asps_frame_width + 63 ) / 64 - 1 and ( asps_frame_height + 63 ) / 64 - 1, respectively.

[0099] A 3D data decoding device 31 that decodes mesh data or point cloud data includes a means for decoding a syntax element that indicates the position of a tile, and deriving the column topLeftColumn of the upper left partition of the tile, the row topLeftRow of the upper left partition, the column bottomRightColumn of the lower right partition of the tile, and the row bottomRightRow of the lower right partition, The device 31 may decode a bitstream that satisfies specific bitstream conformance conditions for the columns of the partitions of the ith tile (topLeftColumn[i] and bottomRightColumn[i]), the columns of the partitions of the jth tile (topLeftColumn[j]), the rows of the partitions of the ith tile (topLeftRow[i], bottomRightRow[i]), and the rows of the partitions of the jth tile (topLeftRow[j]). The 3D data decoding device 31 may decode a bitstream that satisfies the following bitstream conformance conditions:

[0100] (Bitstream Limit 1) For bitstream conformance, for i, j (j!=i), topLeftColumn[ i ] <= topLeftColumn[ j ] <= bottomRightColumn[ i ], topLeftRow[ i ] <= topLeftRow[ j ] <= bottomRightRow[ i ] There should be no cases where both of the above characteristics are satisfied.

[0101] The above restriction has the effect of preventing overlapping of different tiles, and the decoding device does not decode a bitstream in which different tiles overlap, thereby reducing complexity.

[0102] The encoding device generates a bitstream by configuring tiles so that both of the above conditions are not satisfied for different tiles i and j.

[0103] 16, 17, and 18 are examples of tile division. The dotted lines in the squares indicate partitions.

[0104] In the example of Figure 16, there is an overlap between the tile at i=0 and the tile at j=0. Since both of the above characteristics are satisfied at i=0 and j=1, the above bitstream conditions are violated. Conversely, as long as the above bitstream conditions are observed, tile overlap can be prevented.

[0105] In the example of Figure 17, there is no overlap between the tile at i=0 and the tile at j=0. Since only one of the above characteristics is satisfied at i=0 and j=1, the above bitstream conditions are met. The example of Figure 18 also meets the above bitstream conditions, so it can be realized.

[0106] (Bitstream Limit 2) Another configuration is as follows for bitstream conformance: for i, j (j!=i), topLeftColumn[ i ] <= topLeftColumn[ j ] <= bottomRightColumn[ i ], topLeftRow[ i ] <= topLeftRow[ j ] <= bottomRightRow[ i ] It shall not be possible for a

[0107] In this configuration, for the tile division in Figure 17, topLeftColumn[i] <= topLeftColumn[j] <= bottomRightColumn[ i ], and topLeftRow[ i ] <= topLeftRow[ j ] <= bottomRightRow[ i ]. Since either of these conditions is met, the bitstream condition is violated. In other words, examples where the positions of tile boundaries alternate within a frame are prohibited. In this example, the example in Figure 18 also violates the above bitstream condition. However, in this example, the restriction on when both of the characteristics shown in Figure 16 are met is unclear.

[0108] (Bitstream Limit 3) Another configuration is as follows for bitstream conformance: for i, j (j!=i), topLeftColumn[ i ] <= topLeftColumn[ j ] <= bottomRightColumn[ i ], topLeftRow[ i ] <= topLeftRow[ j ] <= bottomRightRow[ i ] There must be no cases where either or both of the above characteristics are satisfied.

[0109] The following expression may also be used to indicate a similar restriction: For i, j (j!=i), topLeftColumn[ i ] <= topLeftColumn[ j ] <= bottomRightColumn[ i ], topLeftRow[ i ] <= topLeftRow[ j ] <= bottomRightRow[ i ] There must be no case where more than one of the above characteristics is satisfied.

[0110] This configuration violates the tile division cases of FIGS.

[0111] This restriction may also be used as a bitstream configuration when the codec is HEVC.

[0112] (Bitstream Limit 4) Another configuration is as follows for bitstream conformance: for i, j (j!=i), topLeftColumn[ i ] <= topLeftColumn[ j ] <= bottomRightColumn[ i ] There must be no cases where the characteristics of

[0113] In this configuration, the bitstream conditions are violated in the upper tile divisions of Figures 16, 17, and 18, but not in the lower tile division of Figure 18. This example does not allow horizontal staggering of slice divisions, which is allowed in VVC slice divisions, but allows vertical staggering of slice divisions. This restriction may also be used as a bitstream configuration when the codec is VVC.

[0114] (Codec-based configuration) The bitstream conditions may be changed depending on the type of video codec used. For example, bitstream limit 3 may be used for AVC and HEVC, and bitstream limit 4 may be used for VVC. As already described, the type of codec may be determined using any of the following: ptl_profile_codec_group_idc obtained by decoding the V3C parameter set of the encoded data, gi_attribute_codec_id[atlasID] or gi_attribute_codec_id[atlasID] of the V3C parameter set, bmsps_intra_mesh_codec_id or bmsps_inter_mesh_codec_id of the base mesh, or dsps_codec_id of the displacement.

[0115] That is, the 3D data decoding device further decodes a syntax element indicating a codec, and when the codec is AVC or HEVC, the bitstream conformance is as follows: topLeftColumn[ i ] <= topLeftColumn[ j ] <= bottomRightColumn[ i ] topLeftRow[ i ] <= topLeftRow[ j ] <= bottomRightRow[ i ] The bitstream conformance when the codec is VVC is characterized by topLeftColumn[i] <= topLeftColumn[j] <= bottomRightColumn[i].

[0116] (Configuration of 3D data encoding device according to the first embodiment) 10 is a functional block diagram showing a schematic configuration of a 3D data encoding device 11 according to the first embodiment. The 3D data encoding device 11 includes an atlas information encoding unit 101, a base mesh encoding unit 103, a base mesh decoding unit 104, a mesh displacement updating unit 106, a mesh displacement encoding unit 107, a mesh displacement decoding unit 108, a mesh reconstruction unit 109, an attribute updating unit 110, a padding unit 111, a color space conversion unit 112, an attribute encoding unit 113, a multiplexing unit 114, and a mesh separation unit 115. The 3D data encoding device 11 receives as input atlas information, a base mesh, a mesh displacement, a mesh, and an attribute image as 3D data, and outputs encoded data.

[0117] The atlas information encoding unit 101 encodes the atlas information and outputs an atlas information encoded stream.

[0118] The base mesh encoding unit 103 encodes the base mesh and generates a base mesh encoding sequence. The stream is output using an encoding method such as Draco.

[0119] The base mesh decoding unit 104 is similar to the base mesh decoding unit 303, and therefore a description thereof will be omitted.

[0120] The mesh displacement update unit 106 adjusts the mesh displacement based on the (original) base mesh and the decoded base mesh, and outputs the updated mesh displacement.

[0121] The mesh displacement encoding unit 107 encodes the updated mesh displacement and outputs a mesh displacement encoded stream.

[0122] The mesh displacement decoding unit 108 is similar to the mesh displacement decoding unit 305, and therefore a description thereof will be omitted.

[0123] The mesh reconstruction unit 109 is similar to the mesh reconstruction unit 307, and therefore a description thereof will be omitted.

[0124] The attribute update unit 110 inputs the (original) mesh, the reconstructed mesh output from the mesh reconstruction unit 109 (mesh deformation unit 3072), and the attribute image, updates the attribute image to match the position (coordinates) of the reconstructed mesh, and outputs the updated attribute image.

[0125] The padding unit 111 receives the attribute image and performs padding on areas where pixel values ​​are empty.

[0126] The color space conversion unit 112 performs color space conversion from the RGB format to the YCbCr format.

[0127] The attribute encoding unit 113 encodes the attribute image in YCbCr format output from the color space conversion unit 112, and outputs an attribute video stream. As the encoding method, VVC, HEVC, or the like is used.

[0128] The multiplexing unit 114 multiplexes the atlas information coded stream, base mesh coded stream, mesh displacement coded stream, and attribute video stream and outputs the result as coded data. As a multiplexing method, a byte stream format, ISOBMFF, etc. is used.

[0129] (Mesh separation unit operation) The mesh separation unit 115 generates a base mesh and a mesh displacement from the mesh.

[0130] 13 is a functional block diagram showing the configuration of the mesh separation unit 115. The mesh separation unit 115 is made up of a mesh thinning unit 1151, a mesh division unit 1152, and a mesh displacement derivation unit 1153.

[0131] The mesh thinning unit 1151 generates a base mesh by thinning out some of the vertices from the mesh.

[0132] Figure 14(a) shows a part of a mesh, which has vertices v1, v2, v3, v4, v5, 14(b)).

[0133] The mesh dividing unit 1152 divides the base mesh to generate divided meshes, similar to the mesh dividing unit 3071 (FIG. 14(c)). v4' = (v1 + v2) / 2 v5' = (v1 + v3) / 2 v6' = (v2 + v3) / 2 The mesh displacement derivation unit derives and outputs the displacements d4, d5, d6 of vertices v4, v5, v6 relative to vertices v4', v5', v6' as mesh displacements based on the mesh and the divided meshes (FIG. 14(d)). d4 = v4 - v4' d5 = v5 - v5' d6 = v6 - v6' (Base mesh encoding) 11 is a functional block diagram showing the configuration of the base mesh encoding unit 103. The base mesh encoding unit 103 is composed of a mesh encoding unit 1031, a mesh decoding unit 1032, a motion information encoding unit 1033, a motion information decoding unit 1034, a mesh motion compensation unit 1035, a reference mesh memory 1036, a switch 1037, and a switch 1038. The base mesh encoding unit 103 may also include a base mesh quantization unit (not shown) after inputting the base mesh. When encoding a base mesh without referring to other base meshes (e.g., an already encoded base mesh) (intra-coding), the switches 1037 and 1038 are connected to the side that does not perform motion compensation. When encoding a base mesh with reference to other base meshes (inter-coding), the switches 1037 and 1038 are connected to the side that performs motion compensation.

[0134] The mesh encoding unit 1031 has an intra-encoding function, intra-encodes the base mesh, and outputs a base mesh encoded stream. Draco or the like is used as the encoding method.

[0135] The mesh decoding unit 1032 is similar to the mesh decoding unit 3031, and therefore a description thereof will be omitted.

[0136] The motion information encoding unit 1033 has an inter-encoding function, performs inter-encoding on the base mesh, and outputs a base mesh encoded stream. The encoding method used is entropy encoding such as arithmetic encoding.

[0137] The motion information decoding unit 1034 is similar to the motion information decoding unit 3032, and therefore a description thereof will be omitted.

[0138] The mesh motion compensation unit 1035 is similar to the mesh motion compensation unit 3033, and therefore a description thereof will be omitted.

[0139] The reference mesh memory 1036 is similar to the reference mesh memory 3034, and therefore a description thereof will be omitted.

[0140] One embodiment of the present invention has been described in detail above with reference to the drawings, but the specific configuration is not limited to that described above, and various design changes and the like are possible within the scope that does not deviate from the gist of the present invention.

[0141] [Application example] The above-described 3D data encoding device 11 and 3D data decoding device 31 can be mounted on various devices that transmit, receive, record, and play back 3D data. The 3D data may be natural 3D data captured by a camera or the like, or artificial 3D data (including CG and GUI) generated by a computer or the like.

[0142] The present invention is not limited to the above-described embodiments, and various modifications are possible within the scope of the claims. In other words, embodiments obtained by combining technical means modified appropriately within the scope of the claims are also included in the technical scope of the present invention. [Industrial Applicability]

[0143] The embodiments of the present invention can be suitably applied to a 3D data decoding device that decodes coded data in which 3D data has been coded, and a 3D data coding device that generates coded data in which 3D data has been coded, and can also be suitably applied to the data structure of coded data that is generated by the 3D data coding device and referenced by the 3D data decoding device. [Explanation of symbols]

[0144] 11 3D data encoding device 101 Atlas Information Encoding Unit 103 Base mesh coding unit 1031 Mesh coding unit 1032 Mesh Decoding Unit 1033 Motion information encoding unit 1034 Motion information decoding unit 1035 Mesh motion compensation unit 1036 reference mesh memory 1037 Switch 1038 Switch 1039 Skip Coding 104 Base mesh decoding unit 106 Mesh displacement update section 107 Mesh displacement coding unit 1071 Coordinate system conversion unit 1072 Conversion Unit 1073 Quantization section 1074 Binarization section 1075 Arithmetic encoder 1076 Context Selection 1077 Context Initialization Unit 108 Mesh displacement decoding unit 109 Mesh reconstruction unit 110 Attribute Update Section 111 Padding section 112 Color space conversion unit 113 Attribute Encoding Unit 114 Multiplexer 115 mesh separation section 1151 Mesh thinning section 1152 Mesh division section 1153 Mesh displacement derivation part 21 Network 31 3D data decoding device 301 Demultiplexer 302 Atlas Information Decoding Unit 303 Base mesh decoding unit 3031 Mesh Decoding Unit 3032 Motion information decoding unit 3033 Mesh Motion Compensation Unit 3034 Reference Mesh Memory 3035 Switch 3036 Switch 3037 Skip Decoding Unit 305 Mesh displacement decoding unit 3051 Arithmetic Decoding Unit 3052 Multilevel conversion section 3053 Inverse quantization section 3054 Inverse Conversion Unit 3055 Coordinate system conversion unit 307 Mesh Reconstruction Unit 306 Attribute Decoding Unit 3071 Mesh division section 3072 Mesh deformation part 308 Color Space Conversion Unit 41 3D data display device

Claims

1. A 3D data decoding device for decoding mesh data or point cloud data includes means for decoding a syntax element indicating a tile position and deriving the column topLeftColumn of the upper left partition of the tile, the row topLeftRow of the upper left partition, the column bottomRightColumn of the lower right partition of the tile, and the row bottomRow of the lower right partition of the tile, and the 3D data decoding device derives the column (topLeftColumn[i], bottomRightColumn[i]) of the partition of the ith tile, the column (topLeftColumn[j]) of the partition of the jth tile, and the row (topLeftRow [i], bottomRightRow a bitstream that satisfies specific bitstream conformance conditions for the jth tile's partition row (topLeftRow[j]) and the jth tile's partition row (topLeftRow[j]).

2. As the above bitstream conformance, for i, j (j!=i), topLeftColumn[ i ] <= topLeftColumn[ j ] <= bottomRightColumn[ i ], topLeftRow[ i ] <= topLeftRow[ j ] <= bottomRightRow[ i ] 2. The 3D data decoding device according to claim 1, wherein there is no case where both of the above characteristics are satisfied.

3. As the above bitstream conformance, for i, j (j!=i), topLeftColumn[ i ] <= topLeftColumn[ j ] <= bottomRightColumn[ i ], topLeftRow[ i ] <= topLeftRow[ j ] <= bottomRightRow[ i ] 2. The 3D data decoding device according to claim 1, wherein there should be no cases where either or both of the above characteristics are satisfied.

4. As the above bitstream conformance, for i, j (j!=i), topLeftColumn[ i ] <= topLeftColumn[ j ] <= bottomRightColumn[ i ], topLeftRow[ i ] <= topLeftRow[ j ] <= bottomRightRow[ i ] 2. The 3D data decoding device according to claim 1, wherein there is no case where one or more of the following characteristics are satisfied:

5. As the above bitstream conformance, for i, j (j!=i), topLeftColumn[ i ] <= topLeftColumn[ j ] <= bottomRightColumn[ i ] 2. The 3D data decoding device according to claim 1, wherein there must be no cases where the above characteristic is satisfied.

6. The 3D data decoding device further decodes a syntax element indicating a codec, and when the codec is AVC or HEVC, the bitstream conformance is as follows: topLeftColumn[ i ] <= topLeftColumn[ j ] <= bottomRightColumn[ i ] topLeftRow[ i ] <= topLeftRow[ j ] <= bottomRightRow[ i ] The above bitstream conformance for VVC codec is topLeftColumn[ i ] <= 2. The 3D data decoding device according to claim 1, wherein topLeftColumn[j] <= bottomRightColumn[i].

7. A 3D data encoding device for decoding mesh data or point cloud data includes a means for encoding a syntax element indicating a tile position, and deriving a column of the top left partition of the tile (topLeftColumn), a row of the topLeftRow of the top left partition, a column of the bottom right partition of the tile (bottomRightColumn), and a row of the bottomRightRow of the bottom right partition, and the 3D data encoding device derives a column of the partition of the ith tile (topLeftColumn[i], bottomRightColumn[i]), a column of the partition of the jth tile (topLeftColumn[j]), and a row of the partition of the ith tile (bottomRightColumn[i]). The row of the partition of the file (topLeftRow [i], bottomRightRow a bitstream that satisfies certain bitstream conformance conditions for a row (topLeftRow[j]) of a partition of the j-th tile and a row (topLeftRow[i]) of the j-th tile.