3D data decoding device and 3D data encoding device

By using the arithmetic coding unit in the 3D data encoding and decoding device to judge the absolute value of the coefficient of the grid displacement, the problem of low grid displacement coding efficiency in the prior art is solved, and efficient 3D data encoding and decoding is realized.

CN119277107APending Publication Date: 2025-01-07SHARP KK
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202410149748.1
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2023-07-05
Filing Date
2024-02-01
Publication Date
2025-01-07

AI Technical Summary

Technical Problem

When the existing 3D data encoding method uses arithmetic encoding, the encoding efficiency of grid displacement is low, resulting in the encoding performance dependent on syntax and context, making it difficult to efficiently encode and decode.

Method used

In the 3D data encoding and decoding device, an arithmetic encoding unit is used to judge the absolute value of the coefficient of the grid displacement, generate the first flag, the second flag and the third flag, and encode or decode it to improve the encoding efficiency.

Benefits of technology

Through this method, the encoding efficiency of grid displacement is significantly improved, and high-quality 3D data encoding and decoding are achieved.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119277107A_ABST
    Figure CN119277107A_ABST
Patent Text Reader

Abstract

The purpose of the present invention is, in encoding / decoding 3D data using an arithmetic encoding scheme, to improve the encoding efficiency of a mesh shift and to encode / decode 3D data with high quality. A 3D data decoding device for decoding encoded data is characterized in that the 3D data decoding device is provided with an arithmetic decoding unit for arithmetically decoding a mesh shift from the encoded data, and the arithmetic decoding unit computes the mesh shift from the encoded data. A first flag indicating whether or not the absolute value of a coefficient of the mesh displacement is greater than 0, a second flag indicating whether or not the absolute value of the coefficient is greater than 1, and a third flag indicating whether or not the absolute value of the coefficient is greater than 2 are decoded.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] Embodiments of the present invention relate to a 3D data encoding device and a 3D data decoding device. Background Art

[0002] In order to efficiently transmit or record 3D data, there is a 3D data encoding device that converts 3D data into a two-dimensional image, encodes the image using a motion image encoding method, and generates encoded data, and a 3D data decoding device that decodes the two-dimensional image from the encoded data and reconstructs the 3D data.

[0003] As specific 3D data encoding methods, for example, 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. In addition, it can also be used for encoding and decoding of multi-viewpoint images and mesh images through ISO / IEC 23090-12 (MPEG Immersive Video (MPEG Immersive Video: MIV)) and the ISO / IEC 23090-29 (Video-based Dynamic Mesh Coding (V-DMC)) that is being standardized. The latest draft file of the V-DMC method is disclosed in non-patent document 1.

[0004] In these 3D data encoding methods, geometry and attributes constituting 3D data are encoded / decoded as images using moving picture encoding methods such as H.265 / HEVC (High Efficiency Video Coding) and H.266 / VVC (Versatile Video Coding).

[0005] In the case of a point group, the geometric image is the depth to the projection plane, and the attribute image is the image obtained by projecting the attributes onto the projection plane.

[0006] 3D data (mesh) as described in non-patent document 1 is composed of a basic mesh, mesh displacement, and texture mapping image. The basic mesh can be encoded using a vertex encoding method such as Draco. In addition to the method of encoding the mesh displacement image by two-dimensionalizing the mesh displacement using an animation codec, there is also a method of directly encoding by arithmetic coding. The texture mapping image is encoded as an attribute image using an animation codec. The animation codec can use the above-mentioned HEVC and VVC. Prior art literature Non-patent literature Non-patent document 1

[0007] WD 3.0of V-DMC(MDS22775_WG07_N00611_d9), ISO / IEC JTC 1 / SC 29 / WG7N0611, April 2023 Summary of the invention Problem that the invention aims to solve

[0008] In the 3D data encoding method disclosed in non-patent document 1, an arithmetic coding method can be used to encode / decode the grid displacement (grid displacement arrangement, grid displacement image) constituting the 3D data (grid). When the grid displacement is arithmetic-coded, its performance depends on syntax and context, so there is a technical problem of poor coding efficiency.

[0009] An object of the present invention is to improve the coding efficiency of mesh displacement in encoding / decoding of 3D data using an arithmetic coding method, and to encode / decode 3D data with high quality. Technical Solution

[0010] In order to solve the above-mentioned technical problems, a 3D data decoding device of one embodiment of the present invention is characterized in that, in a 3D data decoding device for decoding encoded data, the 3D data decoding device includes an arithmetic decoding unit for arithmetically decoding a grid displacement from the above-mentioned encoded data, and the above-mentioned arithmetic decoding unit decodes a first flag indicating whether the absolute value of the coefficient of the above-mentioned grid displacement is greater than 0, a second flag indicating whether the absolute value of the above-mentioned coefficient is greater than 1, and a third flag indicating whether the absolute value of the above-mentioned coefficient is greater than 2 from the above-mentioned encoded data.

[0011] In order to solve the above-mentioned technical problems, a 3D data encoding device of one scheme of the present invention is characterized in that, in a 3D data encoding device for encoding 3D data, the 3D data encoding device has an arithmetic coding unit for arithmetically coding grid displacement, and the arithmetic coding unit encodes a first flag indicating whether the absolute value of the coefficient of the above-mentioned grid displacement is greater than 0, a second flag indicating whether the absolute value of the above-mentioned coefficient is greater than 1, and a third flag indicating whether the absolute value of the above-mentioned coefficient is greater than 2 as encoded data. Beneficial Effects

[0012] According to one solution of the present invention, the coding efficiency of grid displacement can be improved, and 3D data can be encoded / decoded with high quality. BRIEF DESCRIPTION OF THE DRAWINGS

[0013] Figure 1This is a schematic diagram showing the configuration of a 3D data transmission system according to this embodiment. Figure 2 This is a diagram showing the hierarchical structure of the data of the coded stream. Figure 3 It is a functional block diagram showing a schematic configuration of the 3D data decoding device 31 . Figure 4 It is a functional block diagram showing the structure of the basic grid decoding unit 303. Figure 5 It is a functional block diagram showing the structure of the grid displacement decoding unit 305. Figure 6 It is a functional block diagram showing the configuration of the mesh reconfiguration unit 307 . Figure 7 This is an example of a syntax for transmitting coordinate conversion parameters and context initialization parameters at the sequence level (ASPS). Figure 8 This is an example of a syntax for transmitting coordinate conversion parameters and context initialization parameters at a picture / frame level (AFPS). Fig. 9 This is a diagram for explaining the operation of the mesh reconfiguration unit 307 . Fig.10 It is a functional block diagram showing a schematic configuration of the 3D data encoding device 11 . Fig.11 It is a functional block diagram showing the structure of the basic grid encoding unit 103. Fig.12 It is a functional block diagram showing the structure of the grid displacement encoding unit 107. Fig.13 It is a functional block diagram showing the configuration of the mesh separation unit 115 . Fig.14 It is a diagram for explaining the operation of the mesh separation unit 115 . Fig.15 is an example of a grammatical structure for a grid shift. Fig.16 is a diagram showing the grammatical structure of grid displacement and the method of deriving context. DETAILED DESCRIPTION

[0014] Hereinafter, embodiments of the present invention will be described with reference to the drawings.

[0015] Figure 1 It is a schematic diagram showing the configuration of a 3D data transmission system 1 according to the present embodiment.

[0016] The 3D data transmission system 1 is a system that transmits a coded stream obtained by encoding the 3D data to be encoded, decodes the transmitted coded 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.

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

[0018] The network 21 transmits the coded 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 small network (LAN) or a combination thereof. The network 21 is not necessarily limited to a two-way communication network, but may also be a one-way communication network that transmits broadcast waves such as terrestrial digital broadcasting and satellite broadcasting. In addition, the network 21 may also be replaced by a storage medium such as a DVD (Digital Versatile Disc: Digital Versatile Disc, registered trademark) or a BD (Blu-ray Disc: Blu-ray Disc, registered trademark) that records the coded stream Te.

[0019] The 3D data decoding device 31 decodes the encoded stream Te transmitted by the network 21 respectively, and generates one or more decoded 3D data Td.

[0020] The 3D data display device 41 displays all or part of one or more decoded 3D data Td generated by the 3D data decoding device 31. The 3D data display device 41 includes, for example, a display device such as a liquid crystal display, an organic EL (Electro-luminescence) display, etc. As the form of the display, a fixed type, a mobile type, an HMD (Head Mounted Display), etc. can be listed. In addition, when the 3D data decoding device 31 has a high processing capability, a high-quality image is displayed, and when it has only a low processing capability, an image that does not require a high processing capability or a high display capability is displayed. <operator>

[0021] The operators used in this specification are described below. >> is a right shift, << is a left shift, & is a bitwise AND, | is a bitwise OR, |= is an OR substitution operator, and || represents a logical AND. x?y:z is a ternary operator that takes y when x is true (other than 0) and takes z when x is false (0). y..z represents the set of integers from y to z. <Structure of coded stream Te>

[0022] Before describing in detail the 3D data encoding device 11 and the 3D data decoding device 31 of the present 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.

[0023] Figure 2 The diagram shows the hierarchical structure of data in the coded stream Te. The coded stream Te has a 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.

[0024] The V3C unit includes a V3C unit header and a V3C unit payload. The V3C unit header is a unit type (Unit Type) which is an ID indicating the type of the V3C unit and takes a value indicated by a tag such as V3C_VPS, V3C_AD, V3C_AVD, V3C_GVD, or V3C_OVD.

[0025] When the unit type is V3C_VPS (Video Parameter Set), the V3C unit includes a V3C parameter set.

[0026] When the unit type is V3C_AD (Atlas Data), the V3C unit includes a VPS ID, an atlasID, a sample stream nal header, and a plurality of NAL units. The atlasID is an ID (Identification) and takes an integer value greater than 0.

[0027] The NAL unit includes a NAL unit type, a layer ID, a temporary ID, and RBSP (Raw byte sequence payload).

[0028] NAL units are identified by NAL unit types, including ASPS (Atlas Sequence Parameter Set), AAPS (Atlas Adaptation Parameter Set), ATL (Atlas Tile layer), SEI (Supplemental Enhancement Information), etc.

[0029] ATL includes an ATL header and an ATL data unit. The ATL data unit includes patch information data (patchinformation data) and other information such as the location and size of the patch.

[0030] SEI includes a payload type (payload Type) indicating the type of SEI, a payload size (payload Size) indicating the size (number of bytes) of SEI, and sei_payload indicating the data of SEI.

[0031] When the unit type is V3C_AVD (Attribute Video Data, Attribute Data), the V3C unit includes VPS ID, atlasID, attrIdx of the attribute image ID, partIdx of the partition ID, mapIdx of the map ID, auxFlag indicating whether it is auxiliary data (Auxiliary Date), and video stream (videostream). The video stream is data encoded by HEVC, VVC, etc. Attribute data corresponds to the texture image in V-DMC.

[0032] When the unit type is V3C_GVD (Geometory Video Data, Geometry Data), the V3C unit includes VPS ID, atlasID, mapIdx, auxFlag, and video stream. Geometry data corresponds to grid displacement in V-DMC.

[0033] When the unit type is V3C_OVD (Occupancy Video Data, Occupancy Data), the V3C unit includes VPS ID, atlas ID, and video stream.

[0034] When the cell type is V3C_MD (Mesh data), the V3C cell includes VPS ID, atlas ID, and mesh_payload, which corresponds to the basic mesh in V-DMC. (Configuration of 3D Data Decoding Device According to First Embodiment)

[0035] Figure 3 3D data decoding device 31 of the first embodiment is a functional block diagram showing a schematic structure. 3D data decoding device 31 is composed of a demultiplexing unit 301, a graph information decoding unit 302, a basic grid decoding unit 303, a grid displacement decoding unit 305, a grid reconstruction unit 307, an attribute decoding unit 306, and a color space conversion unit 308. 3D data decoding device 31 inputs coded data of 3D data and outputs graph information, a grid, and an attribute image.

[0036] The demultiplexing unit 301 inputs the coded data multiplexed in the byte stream format, ISOBMFF (ISO Base Media File Format), etc., performs demultiplexing, and outputs the graph information coding stream (Atlas data stream, NAL unit of V3C_AD), the basic grid coding stream (grid_payload of V3C_MD), the grid displacement coding stream (video stream of V3C_GVD), and the attribute animation stream (video stream of V3C_AVD).

[0037] The spectral information decoding unit 302 inputs the spectral information encoded stream output from the demultiplexing unit 301, and decodes the spectral information.

[0038] Figure 3 The atlas information decoding unit 302 decodes the coordinate system conversion information displacementCoordinateSystem (asps_vdmc_ext_displacement_coordinate_system, afps_vdmc_ext_displacement_coordinate_system) representing the coordinate system from the encoded data. It should be noted that an enable flag may be set separately, and each coordinate system conversion information is decoded only when the enable flag is 1. The enable flag is, for example, afps_vdmc_ext_displacement_coordinate_system_enable_flag.

[0039] The basic mesh decoding unit 303 decodes the basic mesh encoding stream encoded by vertex encoding (3D data compression encoding method, such as Draco), and outputs a basic mesh. The basic mesh will be described later.

[0040] The grid displacement decoding unit 305 decodes the grid displacement coding stream and outputs the grid displacement.

[0041] The mesh reconstruction unit 307 inputs the basic mesh and the mesh displacement, and reconstructs the mesh in the 3D space.

[0042] The attribute decoding unit 306 decodes the attribute animation stream encoded by VVC, HEVC, etc., and outputs an attribute image. The attribute image can be a texture image expanded on the UV axis (a texture mapping image converted in a UV atlas manner) or in YCbCr format. The type of codec used for encoding is represented by ptl_profile_codec_group_idc obtained by decoding the V3C parameter set of the encoded data. In addition, it can also be represented by the Four CC code represented by ai_geometry_codec_id[atlasID] of the V3C parameter set. ai_geometry_codec_id[atlasID] represents the index corresponding to the codec ID of the decoder used to decode the attribute animation stream in the atlas ID.

[0043] The color space conversion unit 308 performs color space conversion on the attribute image from the YCbCr format to the RGB format. It should be noted that the attribute animation stream encoded in the RGB format may be decoded and the color space conversion may be omitted. (Decoding of the basic grid)

[0044] Figure 4 3031, a motion information decoding unit 3032, a mesh motion compensation unit 3033, a reference mesh memory 3034, a switch 3035, and a switch 3036. The basic mesh decoding unit 303 may include a basic mesh inverse quantization unit (not shown) before outputting the basic mesh. When the basic mesh of the decoding object is encoded (intra-frame encoding) without referring to other basic meshes (for example, an already encoded / decoded basic mesh), the switch 3035 and the switch 3036 are connected to the side where motion compensation is not performed. Otherwise, when the basic mesh of the decoding object is encoded (inter-frame encoding) with reference to other basic meshes, the switch 3035 and the switch 3036 are connected to the side where motion compensation is performed. When motion compensation is performed, the vertex coordinates of the object are derived with reference to the decoded vertex coordinates and motion information.

[0045] The trellis decoding unit 3031 decodes the basic trellis coding stream after intra-frame coding, and outputs the basic trellis. As the coding method, Draco, edge breaker, etc. are used.

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

[0047] 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 mesh after motion compensation.

[0048] The reference grid memory 3034 is a memory that stores the decoded grid for reference in subsequent decoding processing. (Decoding of grid displacement)

[0049] Figure 5 1 is a functional block diagram showing the structure of the grid displacement decoding unit 305. The grid displacement decoding unit 305 is composed of a CABAC decoding unit (arithmetic decoding unit 3051, multi-valued unit 3052, context selection unit 3056, context initialization unit 3057), an inverse quantization unit 3053, an inverse conversion unit 3054 and a coordinate system conversion unit 3055. (Context Adaptive Binary Arithmetic Coding)

[0050] The arithmetic decoding unit 3051, the multi-valued unit 3052, the context selection unit 3056, and the context initialization unit 3057 use a decoding method using a context called context-adaptive binary arithmetic coding (Context-Adaptive Binary Arithmetic Coding: CABAC). In CABAC, a binary string consisting of 0 and 1 is encoded / decoded one bit at a time using a state variable (CABAC state) called a context. All CABAC states are initialized at the starting point of the segment. In the CABAC decoding unit, each bit of the binary string (Bin String) corresponding to the grammatical element is decoded. When using the context, a context index ctxInc is derived for each bit of the grammatical element, the bit is decoded using the context, and the CABAC state of the context is updated. Bits that do not use the context are decoded with equal probability (EP, bypass), and the update of the index ctxIdx of the specified context or the determined context is omitted. Context refers to a variable (memory area) used to maintain the probability (state) of CABAC, which is identified by the value of ctxIdx (0, 1, 2, ...). In addition, 0 and 1 are always of equal probability, that is, 0.5, and the case of 0.5 is called EP (Equal Probability) or bypass. In this case, there is no need to maintain the state for a specific grammatical element, so the context is not used. In addition, a static context with a fixed probability of 0.5 and no need to be updated can be used. In this sense, it can also be called static instead of bypass. An integer value such as 128 can be used to represent a value with a probability of 0.5.

[0051] It should be noted that the following pseudo code can be used to perform 1-bit decoding without using context (through bypass).

[0052] It should be noted that the following pseudo code can be used for the process of performing 1-bit decoding using context: Here, prob0 is a variable representing the probability of context. (Coordinate System)

[0053] The coordinate system of the mesh displacement (3D vector) uses the following two coordinate systems.

[0054] Cartesian coordinate system (canonical): An orthogonal coordinate system commonly defined in the entire 3D space. (X, Y, Z) coordinate system. An orthogonal coordinate system whose direction remains unchanged at the same time (within the same frame, the same tile).

[0055] Local coordinate system (local): An orthogonal coordinate system defined for each area or each vertex in 3D space. An orthogonal coordinate system whose direction can change at the same time (within the same frame, within the same tile). A coordinate system with axes of normal (D), tangent (U), and bi-tangent (V). That is, an orthogonal coordinate system including a first axis (D) represented by a normal vector n_vec at a vertex (a face containing a vertex) and a second axis (U) and a third axis (V) represented by two tangent vectors t_vec and b_vec orthogonal to the normal vector n_vec. n_vec, t_vec, and b_vec are three-dimensional vectors. The (D, U, V) coordinate system can also be called the (n, t, b) coordinate system. (Decoding / derivation of sequence level control parameters)

[0056] Here, the control parameters used in the grid displacement decoding unit 305 are described.

[0057] Figure 7 This is an example of the syntax for transmitting coordinate system conversion parameters in sequence-level ASPS. ASPS (Atlas Sequence Parameter Set or Atlas sequence mesh information) is one of the NAL units of atlas information, and includes syntax elements applied to the atlas information coding stream. In ASPS, coordinate system conversion parameters are transmitted through the asps_vdmc_extension() syntax. The semantics of each field are described below. asps_vdmc_ext_subdivision_iteration_count: This is a parameter indicating the number of times the grid is segmented and repeated. asps_vdmc_ext_displacement_coordinate_system: indicates the coordinate system conversion information of the coordinate system of the grid displacement. When the value is equal to a specified first value (for example, 0), it indicates the Cartesian coordinate system. When the value is equal to another second value (for example, 1), it indicates the local coordinate system. asps_vdmc_ext_1d_displacement_flag: A flag indicating whether the grid displacement is one-dimensional. If the value is true, it indicates that the grid displacement is one-dimensional. If the value is false, it indicates that the grid displacement is three-dimensional. (Decoding / exporting of picture / frame level control parameters)

[0058] Figure 8This is an example of the syntax for transmitting coordinate system conversion parameters by AFPS at the picture / frame level. AFPS (Atlas Frame Parameter Set or Atlas frame mesh information) is one of the NAL units of atlas information, including syntax elements applied to the atlas information coding stream. In AFPS, coordinate system conversion parameters are transmitted through the afps_vdmc_extension() syntax. The semantics of each field are described below. afps_vdmc_ext_overriden_flag: A flag indicating whether to update the coordinate system of the mesh displacement. When this flag is true, the coordinate system of the mesh displacement is updated based on the value of afps_vdmc_ext_displacement_coordinate_system described later. When this flag is false, the coordinate system of the mesh displacement is not updated. afps_vdmc_ext_subdivision_iteration_count: This is a parameter indicating the number of grid division repetitions. afps_vdmc_ext_displacement_coordinate_system: Coordinate system conversion information of the coordinate system representing the grid displacement. When the value is equal to the first value (e.g., 0), the Cartesian coordinate system is represented. When the value is equal to the second value (e.g., 1), the local coordinate system is represented. When the syntax element is not present, the value is estimated as the value obtained by decoding according to ASPS, and the default coordinate system is set to the coordinate system represented by ASPS. afps_vdmc_ext_1d_displacement_flag: A flag indicating whether the grid displacement is one-dimensional. If the value is true, it indicates that the grid displacement is one-dimensional. If the value is false, it indicates that the grid displacement is three-dimensional. (Syntax structure of grid displacement)

[0059] Fig.15This is an example of the grammatical structure of a grid displacement. The semantics are as follows. A grid displacement is a column of values ​​(coefficients) of a position pos and a k-component (k-component), as shown by the arrangement Qdisp[pos][k]. The displacement is a three-dimensional signal in a Cartesian coordinate system (xyz) or a local coordinate system (ntb), and each component of the three-dimensional displacement is called a component. The displacement Qdisp here is a value converted by discrete wavelet transform, lifting transform, DCT transform, etc., so it is also called a coefficient. The component variable k takes values ​​of 0, 1, or 2. The variable name is not limited to k, and dim can also be other variable names. The order of the index of QDisp can be reversed, that is, Qdisp[k][pos] can be used instead of Qdisp[pos][k]. diu_last_sig_coeff[k]: is the index representing the last position of the non-zero grid displacement coefficient in the k component. diu_coded_block_flag[k][b]: Indicates whether the block with index b in component k includes non-zero grid displacement coefficients. If included, it is 1, otherwise it is 0. diu_coded_subblock_flag[k][b][s]: indicates whether the subblock with index s of the block with index b in component k includes a non-zero grid displacement coefficient. If included, it is 1, otherwise it is 0. diu_coeff_abs_level_gt0[k][b][s][v]: indicates whether the absolute value of the non-zero mesh displacement coefficient of the vertex of index v of the subblock of index s of the block of index b in component k is greater than 0. If greater than 0, it is 1, otherwise it is 0. diu_coeff_abs_level_gt1[k][b][s][v]: indicates whether the absolute value of the non-zero mesh displacement coefficient of the vertex index v of the sub-block index s of the block index b in component k is greater than 1. If greater than 1, it is 1, otherwise it is 0. If this syntax is not present, it is estimated to be 0. diu_coeff_abs_level_gt2[k][b][s][v]: indicates whether the absolute value of the non-zero mesh displacement coefficient of the vertex index v of the sub-block index s of the block index b in component k is greater than 2. It is 1 if it is greater than 2, otherwise it is 0. If this syntax is not present, it is estimated to be 0. diu_coeff_abs_level_gt3[k][b][s][v]: indicates whether the absolute value of the non-zero mesh displacement coefficient of the vertex index v of the sub-block index s of the block index b in component k is greater than 3. It is 1 if it is greater than 3, otherwise it is 0. If this syntax is not present, it is estimated to be 0. diu_coeff_sign[k][b][s][v]: Indicates whether the non-zero mesh displacement coefficient of the vertex index v of the sub-block index s of the block index b in component k is positive. If it is positive, it is 1, otherwise (if it is negative), it is 0. If this syntax is not present, it is estimated to be 1. diu_coeff_abs_level_rem[k][b][s][v]: is the value obtained by subtracting 4 from the absolute value of the non-zero mesh displacement coefficient of the vertex index v of the subblock indexed s of the block indexed b in the k component. If this syntax is not present, it is estimated to be 0.

[0060] The trellis displacement decoding unit 305 decodes diu_last_sig_coeff for each trellis displacement component, and then derives the number lodCount of the k-component lod from diu_last_sig_coeff[k].

[0061] The lattice displacement decoding unit 305 decodes diu_coded_block_flag for each detail level (lod) of the lattice displacement, and then derives the number of blocks b, vertexCount, from diu_coded_block_flag[k][b].

[0062] The trellis shift decoding unit 305 decodes diu_coded_subblock_flag for each trellis shifted block, and then derives the start position vStart of the subblock s from diu_coded_subblock_flag[k][b][s].

[0063] The trellis shift decoding unit 305 decodes diu_coeff_abs_level_gt0 for each trellis shifted sub-block, and when diu_coeff_abs_level_gt0 is a predetermined value (eg, other than 0), decodes the subsequent diu_coeff_sign and diu_coeff_abs_level_gt1.

[0064] When diu_coeff_abs_level_gt1 is a predetermined value (for example, other than 0), the trellis displacement decoding unit 305 decodes the subsequent diu_coeff_abs_level_gt2.

[0065] When diu_coeff_abs_level_gt2 is a predetermined value (for example, other than 0), the trellis displacement decoding unit 305 decodes the subsequent diu_coeff_abs_level_gt3.

[0066] When diu_coeff_abs_level_gt3 is a predetermined value (for example, other than 0), the trellis displacement decoding unit 305 decodes the subsequent diu_coeff_abs_level_rem. (Operation of the Grid Shift Decoding Unit)

[0067] The arithmetic decoding unit 3051 decodes the arithmetically coded grid displacement coding stream according to the value (context) representing the probability variable and outputs a binary signal. The binary signal can be an alpha code or a k-th order Exp-Golomb code. The Golomb code is composed of the symbols of prefix and suffix. The prefix is ​​an exponentially increasing value, and the suffix is ​​the remainder.

[0068] The multi-valued signal processing unit 3052 decodes the quantized grid displacement Qdisp as a multi-valued signal from the binary signal.

[0069] The context selection unit 3056 (context memory) has a memory for storing contexts, and derives contexts for arithmetic decoding of grid displacement according to the state, and updates the values ​​as needed. In the arithmetic decoding of each coefficient of grid displacement, the following different context arrangements can be used according to the frame type ft (for example, 0: intra frame, 1: inter frame), the level of grid segmentation lod (level of detail), and the component dim of the grid displacement vector. The context includes at least a variable indicating the probability of generation of a binary signal. ctxLastSigCoeff[numFT][numDim] ctxCodedBlock[numFT][numL0D][numDim] ctxCodedSubBlock[numFT][numL0D][numDim] ctxCoeffGtN[numFT][nund0D][MAX_GTN+1][numDim] ctxCoeffRemPrefix[numFT][numL0D][numDim]

[0070] It should be noted that a static context having a fixed probability of not updating the context is defined as ctxStatic. The decoding of the syntax component indicated by ctxStatic can be performed without using the context.

[0071] Here, numFT is the number of types of frame types, numFT=2. numLOD is the maximum number of detail levels for mesh partitioning, and the value of the syntax element asps_vdmc_ext_subdivision_iteration_count or afps_vdmc_ext_subdivision_iteration_count obtained from bitstream decoding may be used, or numLOD=4 may be set. numLOD=asps_vdmc_ext_subdivision_iteration_count numLOD=afps_vdmc_ext_subdivision_iteration_count numDim is the dimension of the grid displacement vector, and the value of the syntax element asps_vdmc_ext_1d_displacement_flag or afps_vdmc_ext_1d_displacement_flag obtained by decoding the bitstream may be used, or numDim=3 may be set. numDim=asps_vdmc_ext_1d_displacement-flag? 1:3 numDim=afps_vdmc_ext_1d_displacement_flag? 1:3

[0072] The maximum value MAX_GTN of the threshold value for the coefficient is 3. ctxLastSigCoeff[numFT][numDim] is an array of contexts used for decoding the syntax element diu_last_sig_coeff. The arithmetic decoding unit 3051 decodes diu_last_sig_coeff in the frame type ft and the dimension dim of the trellis displacement vector using the value of ctxLastSigCoeff[ft][dim]. ctxCodedBlock[numFT][numLOD][numDim] is an array of contexts for decoding the syntax element diu_coded_block_flag. The arithmetic decoding unit 3051 decodes diu_coded_block_flag of the frame type ft, detail level lod, and dimension dim of the lattice displacement vector using the value of ctxCodedBlock[ft][lod][dim]. ctxCodedSubBlock[numFT][numLOD][numDim] is an array of contexts for decoding the syntax element diu_coded_subblock_flag. The arithmetic decoding unit 3051 decodes the diu_coded_subblock_flag of the frame type ft, the detail level lod, and the dimension dim of the grid displacement vector using the value of ctxCodedSubBlock[ft][lod][dim]. ctxCoeffGtN[numFT][numLOD][MAX_GTN+1][numDim] is an array of contexts for decoding the syntax element diu_coeff_abs_level_gtN (N is replaced with 0, 1, 2, MAX_GTN). The arithmetic decoding unit 3051 decodes diu_coeff_abs_level_gtN of the frame type ft, detail level lod, and dimension dim of the grid displacement vector using the value of ctxCoeffGtN[ft][lod][N][dim].

[0073] The arithmetic decoding unit 3051 uses a bypass to decode the frame type ft, the detail level lod, and the diu_coeff_sign of the dimension dim of the grid displacement vector. ctxCoeffRemPrefix[numFT][numLOD][numDim] is an array of contexts used for decoding the syntax element diu_coeff_abs_level_rem. The arithmetic decoding unit 3051 decodes diu_coeff_abs_level_rem of the frame type ft, detail level lod, and dimension dim of the grid displacement vector using the value of ctxCoeffRemPrefix[ft][lod][dim].

[0074] The context initialization unit 3057 initializes the context (the probability of generating a binary signal). The context can be initialized for each frame or for a set of more than one frames (Group of Frames: GoF). When the context is initialized for each frame, there is no dependency of the context between frames, so random access to any frame can be easily performed. When the context is initialized for each GoF, the frequency of initialization is low, so the coding efficiency can be improved compared to the case of initialization for each frame. (Mesh displacement export processing)

[0075] The trellis displacement decoding unit 305 decodes the syntax elements diu_last_sig_coeff, diu_coded_block_flag, diu_coded_subblock_flag, diu_coeff_abs_level_gt0, diu_coeff_abs_level_gt1, diu_coeff_abs_level_gt2, diu_coeff_abs_level_gt3, diu_coeff_abs_level_rem, and diu_coeff_sign to derive the trellis displacement Qdisp.

[0076] Here, the lattice displacement decoding unit 305 decodes diu_last_sig_coeff in units of components, decodes diu_coded_block_flag in units of LOD (in units of blocks), and decodes diu_coded_subblock_flag in units of subBlockSize size of subblocks. When diu_coded_subblock_flag is a predetermined value, the lattice displacement coefficient in the subblock is decoded.

[0077] Here, decode() and decodeExpGolumn() are functions that use the corresponding context as an independent variable and decode into a 1-bit value or k-times Golomb code, respectively. value++ is an operation that increments the variable value by 1, value+=1, value=value+1. subBlockSize is the size of the sub-block. for represents a loop. subBlockSize can use values ​​from 16 to 4096. For example, it can be 100, 128, etc. dispCount[b] is the number of grid displacements at detail level b. decode(ctxStatic) As decode_bypass(), bypass-specific processing can be used.

[0078] The grid displacement decoding unit 305 can derive the value of the grid displacement from diu_coeff_abs_level_gt0, diu_coeff_abs_level_gt1, diu_coeff_abs_level_gt2, diu_coeff_abs_level_gt3, diu_coeff_abs_level_rem, and diu_coeff_level_sign in the following manner instead of the pseudo code method described above. The value is stored in QDisp. absCoeff = diu_coeff_abs_level_gt0 + diu_coeff_abs_level_gt1 + diu_coeff_abs_level_gt2 + diu_coeff_abs_level_gt3 + diu_coeff_abs_level_rem value = absCoeff * (1-2 * diu_coeff_sign)

[0079] Alternatively, the trellis displacement decoding unit 305 may decode the syntax elements diu_last_sig_coeff, diu_coded_block_flag, diu_coded_subblock_flag, diu_coeff_abs_level_gtN, diu_coeff_abs_level_rem, and diu_coeff_sign to derive the trellis displacement Qdisp through the following processing.

[0080] It should be noted that maxGtN is not limited to 3. For example, the syntax elements diu_coeff_abs_level_gt0, diu_coeff_abs_level_gt1, and diu_coeff_abs_level_gt2 may be encoded / decoded to set maxGtN=2, or the syntax elements diu_coeff_abs_level_gt0, diu_coeff_abs_level_gt1, diu_coeff_abs_level_gt2, diu_coeff_abs_level_gt3, and diu_coeff_abs_level_gt4 may be encoded / decoded to set maxGtN=4. (Bypass configuration)

[0081] The above description is based on an example of using context, but it is also possible to bypass-decode some syntax elements without using context. In the configuration of bypass encoding / decoding, the effect of reducing the memory and processing amount of context is achieved.

[0082] For example, the block-based syntax elements diu_last_sig_coeff and diu_coded_block_flag can be bypass-coded without using context. That is, ctxStatic can be used instead of ctxLastSigCoeff[numFT][numDim] and ctxCodedBlock[numFT][numLOD][numDim] to perform static decoding (or without using context). By bypass-coding / decoding these syntax elements, the coding efficiency is maintained and the memory and processing amount of the context are reduced.

[0083] In addition, for the syntax element diu_coeff_abs_level_rem related to rem, it is also possible to use ctxStatic (static context) (or no context) instead of bypass coding, that is, ctxCoeffRemPrefix[ft][b][k] for decoding. In this way, the effect of reducing the update operation and memory required for the context is further achieved. Here, the syntax elements diu_coeff_abs_level_gt0, diu_coeff_abs_level_gt1, diu_coeff_abs_level_gt2, diu_coeff_abs_level_gt3 (diu_coeff_abs_level_gt4, diu_coeff_abs_level_gtN) indicating whether the coefficient exceeds the specified value are not decoded using bypass coding, but using the context that needs to be updated. (Construction for limiting the number of context coding coefficients to be decoded)

[0084] Note that when using context in coeff_abs_level_gt0, diu_coeff_abs_level_gt1, coeff_abs_level_gt2, and diu_coeff_abs_level_gt3 among the subBlockSize coefficients in the sub-block, context encoding is performed on at most 4 * subBlockSize coefficients. To reduce this complexity, the number of context-encoded coefficients in the syntax elements other than (diu_coeff_abs_level_gt2, diu_coeff_abs_level_gt3) outside of coeff_abs_level_gt0 and diu_coeff_abs_level_gt1 is counted. Moreover, when its value is equal to or greater than the specified value maxContextInBlock, the decoding of diu_coeff_abs_level_gt2 and diu_coeff_abs_level_gt3 is switched from context-using decoding to context-unusing (using bypass, static context) decoding.

[0085] In addition, the number of context-encoded coefficients other than coeff_abs_level_gt0 and diu_coeff_abs_level_gt1 is counted. When its value is equal to or greater than the specified value maxContextInBlock, diu_coeff_level_rem can be decoded directly without decoding diu_coeff_abs_level_gt2 and diu_coeff_abs_level_gt3. In this case, countGT is initialized to 0 before the loop in the sub-block, and within the sub-block, countGT is incremented by 1 each time diu_coeff_abs_level_gt2 and diu_coeff_abs_level_gt3 are decoded. Moreover, diu_coeff_abs_level_gt2 and diu_coeff_abs_level_gt3 are decoded only when countGT < maxContextInBlock. The syntax table (partial excerpt) is as follows.

[0086] Furthermore, the number of times diu_coeff_abs_level_gt0, diu_coeff_abs_level_gt1, diu_coeff_abs_level_gt2, and diu_coeff_abs_level_gt3 are decoded is counted, and when the number is smaller than a predetermined value maxContextInBlock, diu_coeff_abs_level_gt2 and diu_coeff_abs_level_gt3 can be decoded. (Use context structure for part of the prefix bin)

[0087] Fig.16 (a) is an example of the grammatical structure of grid displacement. Fig.15 The difference is that it does not have the syntax of gt2 (diu_coeff_abs_level_gt2) and gt3 (diu_coeff_abs_level_gt3). If diu_coeff_abs_level_gt1 is true, the grid displacement decoding unit 305 decodes diu_coeff_abs_rem. Fig.16 (b) represents the setting of the context used by the grid displacement decoding unit 305. The grid displacement decoding unit 305 sets the context for diu_coeff_abs_level_gt0 and diu_coeff_abs_level_gt1, sets diu_coeff_sign as a bypass, sets a part of the starting point of the prefix of diu_coeff_abs_level_rem as a context, sets the part other than the prefix as a bypass, and uses the bypass to decode the suffix of diu_coeff_abs_level_rem. In particular, different contexts can be set for bin==0 and bin==1 of the prefix, and the prefix bin>=2 and later can be set as a bypass. In addition, different contexts can be set for bin==0, bin==1, and bin==2 of the prefix, and the prefix bin>=3 and later can be set as a bypass. According to the above, when the value of ExpGolomb coding becomes larger, only a maximum of 2 (or 3) contexts can be used, so the complexity can be reduced compared to the case where contexts are used for all the remaining (diu_coeff_abs_level_rem) bins. In addition, it can be more efficient than the case where bypass is used for all bins.

[0088] For example, if maxContextInBlock=subBlockSize / 4 is set, the maximum value (worst case) of the number of bins for context coding can be reduced from 4*subBlockSize to subBlockSize*(2+1 / 4).

[0089] Alternatively, the number of times diu_coeff_abs_level_gt0, diu_coeff_abs_level_gt1, diu_coeff_abs_level_gt2, and diu_coeff_abs_level_gt3 are decoded may be counted, and only when the counted number is smaller than a predetermined value maxContextInBlock, diu_coeff_abs_level_gt2 and diu_coeff_abs_level_gt3 may be decoded.

[0090] The inverse quantization unit 3053 performs inverse quantization based on the quantization level value iscale, and derives the grid displacement Tdisp after transformation (for example, wavelet transformation). Tdisp can be a Cartesian coordinate system or a local coordinate system. iscale is a value derived from the quantization parameters of each component of the grid displacement image. Tdisp[0][]=(Qdisp[0][]*iscale[0]+iscale0ffset)>>iscaleShift Tdisp[1][]=(Qdisp[1][]*iscale[1]+iscale0ffset)>>iscaleShift Tdisp[2][]=(Qdisp[2][]*iscale[2]+iscale0ffset)>>iscaleShift

[0091] Here, iscaleOffset=1<<(iscaleShift-1). iscaleShift may be a preset constant, or a value obtained by decoding the encoded data after encoding at a sequence level, a picture / frame level, a tile / patch level, etc. may be used.

[0092] The inverse transformation unit 3054 performs inverse transformation g (for example, inverse wavelet transformation) to derive the mesh displacement d. d[0][]=g(Tdisp[0][]) d[1][]=g(Tdisp[1][]) d[2][]=g(Tdisp[2][])

[0093] The coordinate system conversion unit 3055 converts the grid displacement (the coordinate system of the grid displacement) into a Cartesian coordinate system based on the value of the coordinate system conversion information displacementCoordinateSystem. Specifically, when displacementCoordinateSystem==1, the displacement of the local coordinate system is converted to the displacement of the Cartesian coordinate system. Here, d is a three-dimensional vector representing the grid displacement before the coordinate system conversion. disp is a three-dimensional vector representing the grid displacement after the coordinate system conversion, which is a Cartesian coordinate system. n_vec, t_vec, b_vec are three-dimensional vectors (of the Cartesian coordinate system) corresponding to the axes of the local coordinate system of the object area or object vertex.

[0094] The derivation method shown by the above-mentioned vector multiplication is expressed as follows when expressed by scalars alone.

[0095] It should be noted that it is also possible to adopt a configuration in which disp=d is set to assign the same variable name before and after the conversion, and the value of d is updated by coordinate conversion. Alternatively, the following configuration may be adopted.

[0096] Here, n_vec2, t_vec2, and b_vec2 are three-dimensional vectors (of a Cartesian coordinate system) corresponding to the axes of the local coordinate system of the adjacent region. In addition, the following configuration is also possible.

[0097] Here, n_vec3, t_vec3, and b_vec3 are three-dimensional vectors (in a Cartesian coordinate system) corresponding to the axes of the local coordinate system of the target area to suppress fluctuations. For example, the vector of the coordinate system for decoding is derived from the previous coordinate system and the current coordinate system as shown below: n_vec3=(w*n_vec3+(WT-w)*n_vec)>>wShi ft t_vec3=(w*t_vec3+(WT-w)*t_vec)>>wShift b_vec3=(w*b_vec3+(WT-w)*b_vec)>>wShift

[0098] Here, for example, wShift=2, 3, 4, WT=1<<wShift, w=1..WT-1. For example, when w=3, wShift=3, 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

[0099] Alternatively, the following configuration may be used in which selection can be made based on the value of the coordinate system conversion information displacementCoordinateSystem obtained by decoding the encoded data. (Reconstruction of the grid)

[0100] Figure 6 3 is a functional block diagram showing the configuration of the mesh reconfiguration unit 307. The mesh reconfiguration unit 307 is composed of a mesh division unit 3071 and a mesh deformation unit 3072.

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

[0102] Fig. 9 (a) shows a part of the basic mesh (triangle), which is composed of vertices v1, v2, and v3. v1, v2, and v3 are three-dimensional vectors. The mesh segmentation unit 3071 generates a segmented mesh by adding new vertices v12, v13, and v23 in the middle of each side of the triangle and outputs ( Fig. 9 (b)). v12=(v1+v2) / 2 v13=(v1+v3) / 2 v23=(v2+v3) / 2

[0103] In addition, it may be the following. v12=(v1+v2+1)>>1 v13=(v1+v3+1)>>1 v23=(v2+v3+1)>>1

[0104] The mesh deformation unit 3072 generates a deformed mesh by inputting the segmented mesh and mesh displacement, adding the mesh displacements d12, d13, and d23, and outputs the deformed mesh ( Fig. 9 (c)). The mesh displacement is the output of the mesh displacement decoding unit 305 (coordinate system conversion unit 3055). d12, d13, d23 are the mesh displacements corresponding to the vertices v12, v13, v23 added by the mesh segmentation unit 3071. v12'=v12+d12 v13'=v13+d13 v23'=v23+d23

[0105] It should be noted that d12=disp[0][], d23=disp[1][], d23=disp[3][] may also be true. (Configuration of 3D Data Encoding Device of First Embodiment)

[0106] Fig.10 1 is a functional block diagram showing a schematic structure of a 3D data encoding device 11 according to the first embodiment. The 3D data encoding device 11 is composed of a graph information encoding unit 101, a basic grid encoding unit 103, a basic grid decoding unit 104, a grid displacement updating unit 106, a grid displacement encoding unit 107, a grid displacement decoding unit 108, a grid reconstruction unit 109, an attribute updating unit 110, a filling unit 111, a color space conversion unit 112, an attribute encoding unit 113, a multiplexing unit 114, and a grid separation unit 115. The 3D data encoding device 11 inputs graph information, a basic grid, a grid displacement, a grid, and an attribute image as 3D data, and outputs encoded data.

[0107] The graph information encoding unit 101 encodes the graph information and outputs a graph information encoding stream.

[0108] The basic grid coding unit 103 codes the basic grid and outputs a basic grid coding stream. As a coding method, Draco or the like is used.

[0109] The basic grid decoding unit 104 is the same as the basic grid decoding unit 303 , and therefore the description thereof is omitted.

[0110] The grid displacement updating unit 106 adjusts the grid displacement based on the (original) basic grid and the decoded basic grid, and outputs the updated grid displacement.

[0111] The grid displacement encoding unit 107 encodes the updated grid displacement and outputs a grid displacement encoding stream.

[0112] The grid displacement decoding unit 108 is the same as the grid displacement decoding unit 305, so the description is omitted.

[0113] The mesh reconfiguration unit 109 is the same as the mesh reconfiguration unit 307 , and thus the description thereof is omitted.

[0114] The attribute updating unit 110 inputs the (original) mesh, the reconstructed mesh output from the mesh reconstructing 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.

[0115] The filling unit 111 inputs an attribute image and performs filling processing on a region where pixel values ​​are empty.

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

[0117] The attribute encoding unit 113 encodes the attribute image in the YCbCr format output from the color space conversion unit 112, and outputs an attribute moving image stream. As the encoding method, VVC, HEVC, etc. are used.

[0118] The multiplexing unit 114 multiplexes the atlas information coded stream, the basic grid coded stream, the grid displacement coded stream, and the attribute animation stream, and outputs them as coded data. As a multiplexing method, a byte stream format, ISOBMFF, etc. are used. (Operation of the grid separation unit)

[0119] The mesh separation unit 115 generates a basic mesh and a mesh displacement from the mesh.

[0120] Fig.13 2 is a functional block diagram showing the structure of the mesh separation unit 115. The mesh separation unit 115 is composed of a mesh thinning unit 1151, a mesh dividing unit 1152, and a mesh displacement deriving unit 1153.

[0121] The mesh thinning unit 1151 generates a basic mesh by thinning out some vertices from the mesh.

[0122] Fig.14 (a) shows a part of a mesh, and the mesh is composed of vertices v1, v2, v3, v4, v5, and v6. v1, v2, v3, v4, v5, and v6 are three-dimensional vectors. The mesh thinning unit 1151 generates a basic mesh by thinning out vertices v4, v5, and v6 and outputs ( Fig.14 (b)).

[0123] The mesh division unit 1152 divides the basic mesh to generate divided meshes ( Fig.14 (c)). v4'=(v1+v2) / 2 v5'=(v1+v3) / 2 v6'=(v2+v3) / 2

[0124] The mesh displacement deriving unit derives 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 segmented mesh, and outputs ( Fig.14 (d)). d4=v4-v4' d5=v5-v5' d6=v6-v6' (Code of the basic grid)

[0125] Fig.11 1 is a functional block diagram showing the structure of the basic grid coding unit 103. The basic grid coding unit 103 is composed of a grid coding unit 1031, a grid decoding unit 1032, a motion information coding unit 1033, a motion information decoding unit 1034, a grid motion compensation unit 1035, a reference grid memory 1036, a switch 1037, and a switch 1038. The basic grid coding unit 103 may also include a basic grid quantization unit (not shown) after the input of the basic grid. When the basic grid is encoded (intra-frame encoding) without referring to other basic grids (for example, an already encoded basic grid), the switch 1037 and the switch 3038 are connected to the side where motion compensation is not performed. Otherwise, when the basic grid is encoded (inter-frame encoding) with reference to other basic grids, it is connected to the side where motion compensation is performed.

[0126] The grid coding unit 1031 has an intra-frame coding function, performs intra-frame coding on the basic grid, and outputs a basic grid coding stream. As a coding method, Draco or the like is used.

[0127] The trellis decoding unit 1032 is the same as the trellis decoding unit 3031, and therefore the description thereof is omitted.

[0128] The motion information encoding unit 1033 has an inter-frame encoding function, performs inter-frame encoding on the basic grid, and outputs a basic grid encoding stream. Entropy encoding such as arithmetic coding is used as the encoding method.

[0129] The motion information decoding unit 1034 is the same as the motion information decoding unit 3032 , and thus the description thereof is omitted.

[0130] The mesh motion compensation unit 1035 is the same as the mesh motion compensation unit 3033 , and thus the description thereof is omitted.

[0131] The reference grid memory 1036 is the same as the reference grid memory 3034, so the description thereof is omitted. (Encoding of grid displacement)

[0132] Fig.12 107 is a functional block diagram showing the structure of the grid displacement coding unit 107. The grid displacement coding unit 107 is composed of a coordinate system conversion unit 1071, a conversion unit 1072, a quantization unit 1073, a binarization unit 1074, an arithmetic coding unit 1075, a context selection unit 1076, and a context initialization unit 1077.

[0133] The coordinate system conversion unit 1071 converts the coordinate system of the grid displacement from the Cartesian coordinate system to the coordinate system (e.g., the local coordinate system) encoding the displacement based on the value of the coordinate system conversion information displacementCoordinateSystem. Here, disp is a three-dimensional vector representing the grid displacement before the coordinate system conversion, d is a three-dimensional vector representing the grid displacement after the coordinate system conversion, and n_vec, t_vec, and b_vec are three-dimensional vectors (of the Cartesian coordinate system) representing the axes of the local coordinate system.

[0134] The grid displacement encoder 107 may update the value of displacementCoordinateSystem at a sequence level, or at a picture / frame level. The initial value is 0, which represents a Cartesian coordinate system.

[0135] To update the displacementCoordinateSystem at the sequence level, use Figure 7 The syntax of the structure is: In the case of the Cartesian coordinate system, asps_vdmc_ext_displacement_coordinate_system is set to 0, and in the case of the local coordinate system, asps_vdmc_ext_displacement_coordinate_system is set to 1.

[0136] To change the displacementCoordinateSystem at the picture / frame level, use Figure 8 When updating the coordinate system, afps_vdmc_ext_displacement_coordinate_system_enable_flag is set to 1, and when not updating the coordinate system, afps_vdmc_ext_displacement_coordinate_system_enable_flag is set to 0. In the case of a Cartesian coordinate system, afps_vdmc_ext_displacement_coordinate_system is set to 0, and in the case of a local coordinate system, afps_vdmc_ext_displacement_coordinate_system is set to 1.

[0137] The conversion unit 1072 performs conversion f (for example, wavelet conversion) and derives the grid displacement Tdisp after the conversion. Tdisp[0][]=f(d[0][]) Tdisp[1][]=f(d[1][]) Tdisp[2][]=f(d[2][])

[0138] The quantization unit 1073 performs quantization based on the quantization scale value scale derived from the quantization parameter of each component of the grid displacement, and derives the quantized grid displacement Qdisp. Qdisp[0][]=Tdisp[0][] / scale[0] Qdisp[1][]=Tdisp[1][] / scale[1] Qdisp[2][]=Tdisp[2][] / scale[2]

[0139] Alternatively, the scale value can be multiplied by a power of 2 to approximate Qdisp using the following formula. scale[i]=1<<scale2[i] Qdisp[0][]=Tdisp[0][]>>scale2[0] Qdisp[1][]=Tdisp[1][]>>scale2[1] Qdisp[2][]=Tdisp[2][]>>scale2[2]

[0140] The binarization unit 1074 encodes the quantized grid displacement Qdisp, which is a multi-value signal, into a binary signal. The binary signal may be a k-order exponential Grunt code.

[0141] The arithmetic coding unit 1075 performs arithmetic coding on the binary signal and outputs a grid displacement code stream.

[0142] Context selection unit 1076 is the same as context selection unit 3056 , and therefore description thereof is omitted.

[0143] The context initialization unit 1077 is the same as the context initialization unit 3057, and therefore the description thereof is omitted.

[0144] Here, an example using context is described, but it is also possible to bypass-code some syntax elements without using context. In the configuration of bypass coding, the effect of reducing the memory and processing amount of context is achieved.

[0145] For example, the syntax elements diu_last_sig_coeff, diu_coded_block_flag, and diu_coeff_abs_level_rem may not be used but may be bypass-coded. By bypass-coding these syntax elements, the coding efficiency is maintained while reducing the memory and processing amount of the context.

[0146] The grid displacement encoding unit 107 encodes the grid displacement Qdisp through the following processing.

[0147] Here, encode() and encodeExpGolumn() are functions that take the value and the corresponding context as independent variables, and perform arithmetic encoding on the 1-bit value and the k-times Golomb-coded binary string respectively. dispCount[b] is the number of grid displacements at detail level b. lastSig is a flag indicating whether the current coefficient is the last non-zero coefficient in the sub-block in the scan order. lastSig=0 indicates that the current coefficient is not the last non-zero coefficient in the sub-block in the scan order. lastSig=1 indicates that the current coefficient is the last non-zero coefficient in the sub-block in the scan order.

[0148] Alternatively, the grid displacement Qdisp can also be encoded by the following process.

[0149] It should be noted that maxGtN is not limited to 3. For example, maxGtN may be set to 2 and the syntax diu_coeff_abs_level_gt0, diu_coeff_abs_level_gt1, and diu_coeff_abs_level_gt2 may be encoded. Alternatively, maxGtN may be set to 4 and the syntax diu_coeff_abs_level_gt0, diu_coeff_abs_level_gt1, diu_coeff_abs_level_gt2, diu_coeff_abs_level_gt3, and diu_coeff_abs_level_gt4 may be encoded.

[0150] As mentioned above, one embodiment of the present invention has been described in detail with reference to the drawings, but the specific configuration is not limited to the above embodiment, and various design changes and the like can be made within the scope not departing from the gist of the present invention. [Application Examples]

[0151] The 3D data encoding device 11 and the 3D data decoding device 31 can be mounted on various devices for sending, receiving, recording, and reproducing 3D data. It should be noted that the 3D data can be natural 3D data captured by a camera or the like, or artificial 3D data generated by a computer or the like (including CG (Computer Graphics: computer animation) and GUI (Graphical User Interface: graphical user interface)).

[0152] The embodiments of the present invention are not limited to the above-mentioned embodiments, and various modifications can be made within the scope of the claims. That is, embodiments obtained by combining technical solutions appropriately modified within the scope of the claims are also included in the technical scope of the present invention. Industrial Applicability The embodiments of the present invention can be preferably applied to a 3D data decoding device that decodes coded data obtained by encoding 3D data and a 3D data encoding device that generates coded data obtained by encoding 3D data. In addition, the embodiments of the present invention can be preferably applied to the data structure of the coded data generated by the 3D data encoding device and referred to by the 3D data decoding device. Description of Reference Numerals 11: 3D data encoding device 101: Spectral Information Coding Department 103: Basic grid coding unit 1031: Grid Coding Department 1032: Grid decoding unit 1033: Motion information encoding unit 1034: Motion information decoding unit 1035: Mesh Motion Compensation Unit 1036: Reference grid storage 1037: Switch 1038: Switch 104: Basic grid decoding unit 106: Grid displacement update section 107: Grid displacement coding unit 1071: Coordinate system conversion unit 1072: Conversion Department 1073: Quantitative Department 1074: Binarization 1075: Arithmetic Coding Unit 1076: Context selection unit 1077: Context initialization section 108: Grid displacement decoding unit 109: Grid Reconstruction Department 110: Attribute Update Department 111: Filling 112: Color space conversion unit 113: Attribute coding unit 114: Multiplexing Department 115: Grid separation unit 1151: Grid spacing elimination section 1152: Grid segmentation 1153: Grid displacement export section 21: Network 31: 3D data decoding device 301: Demultiplexing unit 302: Spectrum information decoding unit 303: Basic grid decoding unit 3031: Grid decoding unit 3032: Motion information decoding unit 3033: Mesh Motion Compensation Department 3034: Reference grid storage 3035: Switch 3036: Switch 305: Grid displacement decoding unit 3051: Arithmetic decoding unit 3052: Multi-valued Department 3053: Inverse Quantization Department 3054: Reverse conversion unit 3055: Coordinate system conversion unit 3056: Context selection unit 3057: Context initialization section 307: Grid Reconstruction Department 306: Attribute decoding unit 3071: Mesh segmentation department 3072: Mesh Deformation Department 308: Color space conversion unit 41: 3D data display device

Claims

1. A 3D data decoding device for decoding coded data, characterized in that: The 3D data decoding device includes an arithmetic decoding unit that arithmetically decodes the grid displacement from the coded data. The arithmetic decoding unit decodes a first flag indicating whether the absolute value of the coefficient of the grid displacement is greater than 0, a second flag indicating whether the absolute value of the coefficient is greater than 1, and a third flag indicating whether the absolute value of the coefficient is greater than 2 from the encoded data.

2. The 3D data decoding device according to claim 1, characterized in that: The arithmetic decoding unit further decodes a fourth flag indicating whether the absolute value of the coefficient is greater than 3 from the encoded data.

3. The 3D data decoding device according to claim 1 or 2, characterized in that: The arithmetic decoding unit further decodes, from the encoded data, a fifth flag indicating whether a block includes a non-zero coefficient of the grid displacement and / or a first index indicating a final position of a non-zero coefficient of the grid displacement.

4. The 3D data decoding device according to claim 3, characterized in that: The arithmetic decoding section bypass-decodes the fifth flag and / or the first index.

5. A 3D data encoding device for encoding 3D data, characterized in that: The 3D data encoding device includes an arithmetic encoding unit for performing arithmetic encoding on the grid displacement. The arithmetic coding unit encodes a first flag indicating whether the absolute value of the coefficient of the grid displacement is greater than 0, a second flag indicating whether the absolute value of the coefficient is greater than 1, and a third flag indicating whether the absolute value of the coefficient is greater than 2 as encoded data.

6. The 3D data encoding device according to claim 5, characterized in that: The arithmetic coding unit further encodes a fourth flag indicating whether the absolute value of the coefficient is greater than 3 as the encoded data.

7. The 3D data encoding device according to claim 5 or 6, characterized in that: The arithmetic encoding section further encodes a fifth flag indicating whether a block includes non-zero coefficients of the grid displacement and / or a first index indicating a final position of the non-zero coefficients of the grid displacement as the encoded data.

8. The 3D data encoding device according to claim 7, characterized in that: The arithmetic coding unit bypass-codes the fifth flag and the first index.