Encoding method, encoding apparatus, decoding method, and decoding apparatus
The encoding and decoding methods for three-dimensional data, utilizing data unit headers and parameter sets, address the challenge of correctly decoding attribute information, enhancing data transmission and storage efficiency.
Patent Information
- Application Number
- JP2025179823
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2018-12-26
- Filing Date
- 2025-10-24
- Publication Date
- 2026-01-23
AI Technical Summary
Existing methods for encoding and decoding three-dimensional data, particularly point clouds, struggle with correctly decoding attribute information, leading to inefficiencies in data transmission and storage.
An encoding method that generates encoded data with data unit headers and parameter sets, including quantization parameters, and a decoding method that utilizes parameter set identifiers to accurately decode attribute information, along with a bitstream structure that includes type and identification information for efficient decoding.
The proposed method enables correct and efficient decoding of attribute information in three-dimensional data, reducing data volume and improving transmission efficiency.
Smart Images

Figure 2026012241000001_ABST
Abstract
Description
[Technical Field]
[0001] The present disclosure relates to an encoding method, an encoding device, a decoding method, and a decoding device. [Background technology]
[0002] In the future, devices and services that utilize 3D data are expected to become widespread in a wide range of fields, including computer vision for autonomous operation of automobiles or robots, map information, surveillance, infrastructure inspection, video distribution, etc. 3D data can be acquired in a variety of ways, including distance sensors such as range finders, stereo cameras, or a combination of multiple monocular cameras.
[0003] One method of representing three-dimensional data is a point cloud, which represents the shape of a three-dimensional structure using a group of points in three-dimensional space. A point cloud stores the position and color of the points. Point clouds are expected to become the mainstream method of representing three-dimensional data, but point clouds require a very large amount of data. Therefore, when storing or transmitting three-dimensional data, data compression through encoding is essential, just as with two-dimensional video images (examples include MPEG-4 AVC or HEVC standardized by MPEG).
[0004] In addition, compression of point clouds is partially supported by public libraries that perform point cloud-related processing (Point Cloud Library).
[0005] Furthermore, a technique is known in which three-dimensional map data is used to search for and display facilities located around a vehicle (see, for example, Patent Document 1). [Prior art documents] [Patent documents]
[0006] [Patent Document 1] International Publication No. 2014 / 020663 Summary of the Invention [Problem to be solved by the invention]
[0007] In the encoding and decoding of three-dimensional data, it is desirable to be able to correctly decode attribute information of three-dimensional points.
[0008] An object of the present disclosure is to provide an encoding method, an encoding device, a decoding method, or a decoding device that can correctly decode attribute information of three-dimensional points. [Means for solving the problem]
[0009] An encoding method according to one aspect of the present disclosure generates encoded data including one or more data units, each including a data unit header, generates a parameter set including a first parameter related to quantization and a parameter set identifier, and generates a bitstream including the encoded data and the parameter set, wherein the data unit header of a first data unit among the one or more data units includes a second parameter related to quantization and a parameter set ID, the parameter set ID is the parameter set identifier of the parameter set referenced by the first data unit, and a quantization parameter is calculated using the first parameter and the second parameter of the parameter set referenced by the first data unit.
[0010] A decoding method according to one aspect of the present disclosure obtains, from a bitstream, encoded data including one or more data units, each including a data unit header, and a parameter set including a first parameter related to quantization and a parameter set identifier; decodes the encoded data; the data unit header of a first data unit among the one or more data units includes a second parameter related to quantization and a parameter set ID; the parameter set ID is the parameter set identifier of the parameter set referenced by the first data unit; and a quantization parameter is calculated using the first parameter and the second parameter of the parameter set referenced by the first data unit.
[0011] An encoding method according to one aspect of the present disclosure encodes one or more data groups and generates encoded data including one or more data units, each including a data unit header, and a first parameter set for the encoded data, wherein the first parameter set includes one or more data group parameters corresponding to the one or more data groups, and the data unit header of the first data unit includes a value indicating a data group parameter corresponding to the first data unit among the one or more data group parameters stored in the first parameter set.
[0012] A decoding method according to one aspect of the present disclosure includes obtaining encoded data including one or more data units, each including a data unit header, and a first parameter set for the encoded data, and decoding the one or more data units based on the first parameter set, wherein the first parameter set includes one or more data group parameters corresponding to the one or more data groups, and the data unit header of the first data unit includes a value indicating a data group parameter corresponding to the first data unit among the one or more data group parameters stored in the first parameter set.
[0013] A three-dimensional data encoding method according to one embodiment of the present disclosure encodes multiple pieces of attribute information possessed by each of multiple three-dimensional points using parameters, and generates a bitstream including the encoded multiple pieces of attribute information, control information, and multiple pieces of first attribute control information, wherein the control information includes multiple pieces of type information corresponding to the multiple pieces of attribute information and each piece of type information indicating a different type of attribute information, and the multiple pieces of first attribute control information each correspond to the multiple pieces of attribute information, and each piece of first attribute control information includes first identification information indicating that it is associated with one of the multiple pieces of type information.
[0014] A three-dimensional data decoding method according to one embodiment of the present disclosure acquires a bitstream to acquire encoded attribute information and parameters, and decodes the encoded attribute information using the parameters to decode the attribute information possessed by each of a plurality of three-dimensional points, wherein the bitstream includes control information and a plurality of first attribute control information, the control information corresponding to the plurality of attribute information and including a plurality of type information each indicating a different type of attribute information, the plurality of first attribute control information corresponding to the plurality of attribute information, respectively, and each of the plurality of first attribute control information including first identification information indicating that it is associated with one of the plurality of type information. [Effects of the Invention]
[0015] The present disclosure can provide an encoding method, an encoding device, a decoding method, or a decoding device that can correctly decode attribute information of three-dimensional points. [Brief explanation of the drawings]
[0016] [Figure 1] FIG. 1 is a diagram showing a configuration of a three-dimensional data encoding / decoding system according to the first embodiment. [Figure 2] FIG. 2 is a diagram illustrating an example of the configuration of point cloud data according to the first embodiment. [Figure 3] FIG. 3 is a diagram showing an example of the structure of a data file in which point cloud data information according to the first embodiment is described. [Figure 4] FIG. 4 is a diagram showing types of point cloud data according to the first embodiment. [Figure 5] FIG. 5 is a diagram showing a configuration of a first encoding unit according to the first embodiment. [Figure 6] FIG. 6 is a block diagram of a first encoding unit according to the first embodiment. [Figure 7] FIG. 7 is a diagram illustrating a configuration of a first decoding unit according to the first embodiment. [Figure 8] FIG. 8 is a block diagram of a first decoding unit according to the first embodiment. [Figure 9] FIG. 9 is a diagram showing a configuration of a second encoding unit according to the first embodiment. [Figure 10] FIG. 10 is a block diagram of a second encoding unit according to the first embodiment. [Figure 11] FIG. 11 is a diagram illustrating a configuration of a second decoding unit according to the first embodiment. [Figure 12] FIG. 12 is a block diagram of a second decoding unit according to the first embodiment. [Figure 13] FIG. 13 is a diagram showing a protocol stack related to PCC encoded data according to the first embodiment. [Figure 14] FIG. 14 is a block diagram of the encoding unit according to the first embodiment. [Figure 15] FIG. 15 is a block diagram of a decoding unit according to the first embodiment. [Figure 16] FIG. 16 is a flowchart of the encoding process according to the first embodiment. [Figure 17] FIG. 17 is a flowchart of the decoding process according to the first embodiment. [Figure 18] FIG. 18 is a diagram illustrating a basic structure of the ISOBMFF according to the second embodiment. [Figure 19] FIG. 19 is a diagram illustrating a protocol stack according to the second embodiment. [Figure 20] FIG. 20 is a diagram showing an example in which NAL units according to the second embodiment are stored in a file for codec 1. In FIG. [Figure 21]FIG. 21 is a diagram showing an example in which NAL units according to the second embodiment are stored in a file for codec 2. In FIG. [Figure 22] FIG. 22 is a diagram illustrating a configuration of a first multiplexing unit according to the second embodiment. [Figure 23] FIG. 23 is a diagram illustrating a configuration of a first demultiplexing unit according to the second embodiment. [Figure 24] FIG. 24 is a diagram illustrating a configuration of a second multiplexing unit according to the second embodiment. [Figure 25] FIG. 25 is a diagram illustrating a configuration of a second demultiplexing unit according to the second embodiment. [Figure 26] FIG. 26 is a flowchart of a process performed by the first multiplexing unit according to the second embodiment. [Figure 27] FIG. 27 is a flowchart of a process performed by the second multiplexing unit according to the second embodiment. [Figure 28] FIG. 28 is a flowchart of processing by the first demultiplexing unit and the first decoding unit according to the second embodiment. [Figure 29] FIG. 29 is a flowchart of processing by the second demultiplexing unit and the second decoding unit according to the second embodiment. [Figure 30] FIG. 30 is a diagram illustrating a configuration of an encoding unit and a third multiplexing unit according to the third embodiment. [Figure 31] FIG. 31 is a diagram illustrating a configuration of a third demultiplexing unit and a decoding unit according to the third embodiment. [Figure 32] FIG. 32 is a flowchart of a process performed by the third multiplexing unit according to the third embodiment. [Figure 33] FIG. 33 is a flowchart of processing by a third demultiplexing unit and a decoding unit according to the third embodiment. [Figure 34] FIG. 34 is a flowchart of processing by the three-dimensional data storage device according to the third embodiment. [Figure 35] FIG. 35 is a flowchart of the processing performed by the three-dimensional data acquisition device according to the third embodiment. [Figure 36]FIG. 36 is a diagram illustrating the configurations of an encoding unit and a multiplexing unit according to the fourth embodiment. [Figure 37] FIG. 37 is a diagram illustrating an example of a structure of coded data according to the fourth embodiment. [Figure 38] FIG. 38 is a diagram showing an example of the structure of coded data and NAL units according to the fourth embodiment. [Figure 39] FIG. 39 is a diagram illustrating an example of the semantics of pcc_nal_unit_type according to the fourth embodiment. [Figure 40] FIG. 40 is a diagram showing an example of the transmission order of NAL units according to the fourth embodiment. [Figure 41] FIG. 41 is a flowchart of processing by the three-dimensional data encoding device according to the fourth embodiment. [Figure 42] FIG. 42 is a flowchart of processing by the three-dimensional data decoding device according to the fourth embodiment. [Figure 43] FIG. 43 is a flowchart of the multiplexing process according to the fourth embodiment. [Figure 44] FIG. 44 is a flowchart of the demultiplexing process according to the fourth embodiment. [Figure 45] FIG. 45 is a flowchart of processing by the three-dimensional data encoding device according to the fourth embodiment. [Figure 46] FIG. 46 is a flowchart of processing by the three-dimensional data decoding device according to the fourth embodiment. [Figure 47] FIG. 47 is a block diagram of a division unit according to the fifth embodiment. [Figure 48] FIG. 48 is a diagram showing an example of division into slices and tiles according to the fifth embodiment. [Figure 49] FIG. 49 is a diagram showing an example of a division pattern of slices and tiles according to the fifth embodiment. [Figure 50] FIG. 50 is a block diagram of a first encoding unit according to the sixth embodiment. [Figure 51] FIG. 51 is a block diagram of a first decoding unit according to the sixth embodiment. [Figure 52]FIG. 52 is a diagram showing examples of tile shapes according to the sixth embodiment. [Figure 53] FIG. 53 is a diagram showing examples of tiles and slices according to the sixth embodiment. [Figure 54] FIG. 54 is a block diagram of a division unit according to the sixth embodiment. [Figure 55] FIG. 55 is a diagram showing an example of a map in which point cloud data according to the sixth embodiment is viewed from above. [Figure 56] FIG. 56 is a diagram showing an example of tile division according to the sixth embodiment. [Figure 57] FIG. 57 is a diagram showing an example of tile division according to the sixth embodiment. [Figure 58] FIG. 58 is a diagram showing an example of tile division according to the sixth embodiment. [Figure 59] FIG. 59 is a diagram showing an example of tile data stored in the server according to the sixth embodiment. [Figure 60] FIG. 60 is a diagram showing a system relating to tile division according to the sixth embodiment. [Figure 61] FIG. 61 is a diagram showing an example of slice division according to the sixth embodiment. [Figure 62] FIG. 62 is a diagram illustrating an example of a dependency relationship according to the sixth embodiment. [Figure 63] FIG. 63 is a diagram showing an example of the decoding order of data according to the sixth embodiment. [Figure 64] FIG. 64 is a diagram showing an example of coded data of a tile according to the sixth embodiment. [Figure 65] FIG. 65 is a block diagram of a combining unit according to the sixth embodiment. [Figure 66] FIG. 66 is a diagram showing an example of the structure of coded data and NAL units according to the sixth embodiment. [Figure 67] FIG. 67 is a flowchart of the encoding process according to the sixth embodiment. [Figure 68] FIG. 68 is a flowchart of the decoding process according to the sixth embodiment. [Figure 69]FIG. 69 is a diagram illustrating an example of the syntax of the tile additional information according to the sixth embodiment. [Figure 70] FIG. 70 is a block diagram of a coding / decoding system according to the sixth embodiment. [Figure 71] FIG. 71 is a diagram showing an example of the syntax of slice additional information according to the sixth embodiment. [Figure 72] FIG. 72 is a flowchart of the encoding process according to the sixth embodiment. [Figure 73] FIG. 73 is a flowchart of the decoding process according to the sixth embodiment. [Figure 74] FIG. 74 is a flowchart of the encoding process according to the sixth embodiment. [Figure 75] FIG. 75 is a flowchart of the decoding process according to the sixth embodiment. [Figure 76] FIG. 76 is a flowchart showing a process of re-initializing the CABAC encoding / decoding engine in accordance with the CABAC initialization flag during encoding or decoding according to the seventh embodiment. [Figure 77] FIG. 77 is a block diagram showing the configuration of a first encoding unit included in the three-dimensional data encoding device according to the seventh embodiment. [Figure 78] FIG. 78 is a block diagram showing the configuration of a dividing unit according to the seventh embodiment. [Figure 79] FIG. 79 is a block diagram showing the configurations of a position information encoding unit and an attribute information encoding unit according to the seventh embodiment. In FIG. [Figure 80] FIG. 80 is a block diagram showing a configuration of a first decoding unit according to the seventh embodiment. [Figure 81] FIG. 81 is a block diagram showing the configurations of a position information decoding unit and an attribute information decoding unit according to the seventh embodiment. [Figure 82] FIG. 82 is a flowchart showing an example of a process related to initialization of CABAC in encoding position information or encoding attribute information according to the seventh embodiment. [Figure 83]FIG. 83 is a diagram showing an example of the timing of CABAC initialization in point cloud data that has been converted into a bitstream according to the seventh embodiment. [Figure 84] FIG. 84 shows the structure of coded data according to the seventh embodiment and a method of storing the coded data in an NAL unit. [Figure 85] FIG. 85 is a flowchart showing an example of a process related to initialization of CABAC in decoding of position information or attribute information according to the seventh embodiment. [Figure 86] FIG. 86 is a flowchart of the encoding process of point group data according to the seventh embodiment. [Figure 87] FIG. 87 is a flowchart showing an example of a process for updating additional information according to the seventh embodiment. [Figure 88] FIG. 88 is a flowchart showing an example of a CABAC initialization process according to the seventh embodiment. [Figure 89] FIG. 89 is a flowchart of the decoding process of point cloud data according to the seventh embodiment. [Figure 90] FIG. 90 is a flowchart showing an example of a process for initializing the CABAC decoding unit according to the seventh embodiment. [Figure 91] FIG. 91 is a diagram showing examples of tiles and slices according to the seventh embodiment. [Figure 92] FIG. 92 is a flowchart showing an example of a method for initializing CABAC and determining a context initial value according to the seventh embodiment. [Figure 93] FIG. 93 is a diagram showing an example in which a map showing point cloud data obtained by the LiDAR according to the seventh embodiment as viewed from above is divided into tiles. [Figure 94] FIG. 94 is a flowchart showing another example of the method for CABAC initialization and determining a context initial value according to the seventh embodiment. [Figure 95] FIG. 95 is a diagram illustrating the processing of the quantization unit and the inverse quantization unit according to the eighth embodiment. [Figure 96]FIG. 96 is a diagram illustrating the default values of quantization values and quantization deltas according to the eighth embodiment. [Figure 97] FIG. 97 is a block diagram showing the configuration of a first encoding unit included in the three-dimensional data encoding device according to the eighth embodiment. [Figure 98] FIG. 98 is a block diagram showing the configuration of a dividing unit according to the eighth embodiment. [Figure 99] FIG. 99 is a block diagram showing the configurations of a position information encoding unit and an attribute information encoding unit according to the eighth embodiment. [Figure 100] FIG. 100 is a block diagram showing a configuration of a first decoding unit according to the eighth embodiment. [Figure 101] FIG. 101 is a block diagram showing the configurations of a position information decoding unit and an attribute information decoding unit according to the eighth embodiment. [Figure 102] FIG. 102 is a flowchart showing an example of a process related to determination of a quantization value in encoding position information or attribute information according to the eighth embodiment. [Figure 103] FIG. 103 is a flowchart showing an example of a decoding process of the position information and the attribute information according to the eighth embodiment. [Figure 104] FIG. 104 is a diagram illustrating a first example of a method for transmitting a quantization parameter according to the eighth embodiment. [Figure 105] FIG. 105 is a diagram illustrating a second example of a method for transmitting a quantization parameter according to the eighth embodiment. [Figure 106] FIG. 106 is a diagram illustrating a third example of a method for transmitting a quantization parameter according to the eighth embodiment. [Figure 107] FIG. 107 is a flowchart of the encoding process of point group data according to the eighth embodiment. [Figure 108] FIG. 108 is a flowchart showing an example of a process of determining a QP value and updating additional information according to the eighth embodiment. [Figure 109] FIG. 109 is a flowchart showing an example of a process of encoding a determined QP value according to the eighth embodiment. [Figure 110] FIG. 110 is a flowchart of the decoding process of point cloud data according to the eighth embodiment. [Figure 111] FIG. 111 is a flowchart showing an example of a process of obtaining a QP value according to the eighth embodiment and decoding the QP value of a slice or a tile. [Figure 112] FIG. 112 is a diagram illustrating an example of syntax of the GPS according to the eighth embodiment. [Figure 113] FIG. 113 is a diagram illustrating an example of the syntax of an APS according to the eighth embodiment. [Figure 114] FIG. 114 is a diagram illustrating an example of the syntax of the header of the location information according to the eighth embodiment. [Figure 115] FIG. 115 is a diagram illustrating an example of the syntax of the header of the attribute information according to the eighth embodiment. [Figure 116] FIG. 116 is a diagram illustrating another example of a method for transmitting a quantization parameter according to the eighth embodiment. [Figure 117] FIG. 117 is a diagram illustrating another example of a method for transmitting a quantization parameter according to the eighth embodiment. [Figure 118] FIG. 118 is a diagram illustrating a ninth example of a method for transmitting a quantization parameter according to the eighth embodiment. [Figure 119] FIG. 119 is a diagram illustrating an example of controlling the QP value according to the eighth embodiment. [Figure 120] FIG. 120 is a flowchart showing an example of a method for determining a QP value based on the quality of an object according to the eighth embodiment. [Figure 121] FIG. 121 is a flowchart showing an example of a method for determining a QP value based on rate control according to the eighth embodiment. [Figure 122] FIG. 122 is a flowchart of the encoding process according to the eighth embodiment. [Figure 123] FIG. 123 is a flowchart of the decoding process according to the eighth embodiment. [Figure 124]FIG. 124 is a diagram illustrating an example of a method for transmitting a quantization parameter according to the ninth embodiment. [Figure 125] FIG. 125 is a diagram illustrating a first example of the syntax of an APS and the syntax of a header of attribute information according to the ninth embodiment. [Figure 126] FIG. 126 is a diagram illustrating a second example of the syntax of the APS according to the ninth embodiment. [Figure 127] FIG. 127 is a diagram illustrating a second example of the syntax of the header of the attribute information according to the ninth embodiment. [Figure 128] FIG. 128 is a diagram showing the relationship between the SPS, APS, and headers of attribute information according to the ninth embodiment. [Figure 129] FIG. 129 is a flowchart of the encoding process according to the ninth embodiment. [Figure 130] FIG. 130 is a flowchart of the decoding process according to the ninth embodiment. DETAILED DESCRIPTION OF THE INVENTION
[0017] A three-dimensional data encoding method according to one embodiment of the present disclosure encodes multiple pieces of attribute information possessed by each of multiple three-dimensional points using parameters, and generates a bitstream including the encoded multiple pieces of attribute information, control information, and multiple pieces of first attribute control information, wherein the control information includes multiple pieces of type information corresponding to the multiple pieces of attribute information and each piece of type information indicating a different type of attribute information, and the multiple pieces of first attribute control information each correspond to the multiple pieces of attribute information, and each piece of first attribute control information includes first identification information indicating that it is associated with one of the multiple pieces of type information.
[0018] This generates a bitstream containing first identification information for identifying the type of attribute information to which the first attribute control information corresponds, so that a three-dimensional data decoding device that receives the bitstream can correctly and efficiently decode the attribute information of the three-dimensional point.
[0019] For example, the plurality of type information may be stored in a predetermined order in the control information, and the first identification information may indicate that the first attribute control information including the first identification information is associated with type information in one of the predetermined orders.
[0020] This allows the type information to be displayed in a predetermined order without adding information indicating the type information, thereby reducing the amount of data in the bitstream and the amount of transmission of the bitstream.
[0021] For example, the bitstream may further include a plurality of second attribute control information corresponding to the plurality of attribute information, and each of the plurality of second attribute control information may include a reference value of a parameter used in encoding the corresponding attribute information.
[0022] According to this, each of the plurality of second attribute control information includes a reference value of the parameter, and therefore, the attribute information corresponding to the second attribute control information can be coded using the reference value.
[0023] For example, the first attribute control information may include difference information that is a difference between the parameter and the reference value.
[0024] This makes it possible to improve the coding efficiency.
[0025] For example, the bitstream may further include a plurality of second attribute control information corresponding to the plurality of attribute information, and each of the plurality of second attribute control information may have second identification information indicating that it corresponds to one of the plurality of type information.
[0026] This generates a bitstream that includes second identification information for identifying the type of attribute information to which the second attribute control information corresponds, thereby making it possible to generate a bitstream that can correctly and efficiently decode the attribute information of three-dimensional points.
[0027] For example, each of the plurality of first attribute control information has N fields in which N parameters (N is 2 or more) are stored, and in a specific first attribute control information among the plurality of first attribute control information corresponding to a specific type of attribute, one of the N fields may contain a value indicating that it is invalid.
[0028] Therefore, a three-dimensional data decoding device that receives a bit stream can use the first identification information to identify the type of first attribute information and omit the decoding process in the case of specific first attribute control information, thereby being able to correctly and efficiently decode the attribute information of three-dimensional points.
[0029] For example, in the encoding, the plurality of pieces of attribute information may be quantized using a quantization parameter as the parameter.
[0030] According to this, since the parameter is expressed using the difference from the reference value, it is possible to improve the coding efficiency for quantization.
[0031] Furthermore, a three-dimensional data decoding method according to one embodiment of the present disclosure acquires a bitstream to acquire encoded attribute information and parameters, and decodes the encoded attribute information using the parameters to decode the attribute information possessed by each of a plurality of three-dimensional points, wherein the bitstream includes control information and a plurality of first attribute control information, the control information corresponding to the plurality of attribute information and including a plurality of type information indicating different types of attribute information, the plurality of first attribute control information corresponding to the plurality of attribute information, respectively, and each of the plurality of first attribute control information including first identification information indicating that it is associated with one of the plurality of type information.
[0032] This makes it possible to use the first identification information to identify the type of attribute information to which the first attribute control information corresponds, thereby enabling the attribute information of the three-dimensional point to be decoded correctly and efficiently.
[0033] For example, the plurality of type information may be stored in a predetermined order in the control information, and the first identification information may indicate that the first attribute control information including the first identification information is associated with type information in one of the predetermined orders.
[0034] This allows the type information to be displayed in a predetermined order without adding information indicating the type information, thereby reducing the amount of data in the bitstream and the amount of transmission of the bitstream.
[0035] For example, the bitstream may further include a plurality of second attribute control information corresponding to the plurality of attribute information, and each of the plurality of second attribute control information may include a reference value of a parameter used in encoding the corresponding attribute information.
[0036] According to this, the attribute information corresponding to the second attribute control information can be decoded using the reference value, and therefore the attribute information of the three-dimensional point can be decoded correctly and efficiently.
[0037] For example, the first attribute control information may include difference information that is a difference between the parameter and the reference value.
[0038] According to this, the attribute information can be decoded using the reference value and the difference information, so that the attribute information of the three-dimensional point can be decoded correctly and efficiently.
[0039] For example, the bitstream may further include a plurality of second attribute control information corresponding to the plurality of attribute information, and each of the plurality of second attribute control information may have second identification information indicating that it corresponds to one of the plurality of type information.
[0040] This makes it possible to use the second identification information to identify the type of attribute information to which the second attribute control information corresponds, thereby enabling the attribute information of the three-dimensional point to be decoded correctly and efficiently.
[0041] For example, each of the plurality of first attribute control information has a plurality of fields in which a plurality of parameters are stored, and the decoding may ignore parameters stored in a specific field of the plurality of fields of a specific first attribute control information corresponding to a specific type of attribute among the plurality of first attribute control information.
[0042] This allows the type of first attribute information to be identified using the first identification information, and the decoding process can be omitted in the case of specific first attribute control information, so that the attribute information of the three-dimensional point can be decoded correctly and efficiently.
[0043] For example, in the decoding, the encoded plurality of pieces of attribute information may be inversely quantized using a quantization parameter as the parameter.
[0044] This allows the attribute information of the three-dimensional point to be correctly decoded.
[0045] Furthermore, a three-dimensional data encoding device according to one embodiment of the present disclosure includes a processor and a memory, wherein the processor uses the memory to encode multiple pieces of attribute information possessed by each of multiple three-dimensional points using parameters, and generates a bitstream including the encoded multiple pieces of attribute information, control information, and multiple pieces of first attribute control information, wherein the control information includes multiple pieces of type information corresponding to the multiple pieces of attribute information and each piece of type information indicating a different type of attribute information, and wherein the multiple pieces of first attribute control information (i) respectively correspond to the multiple pieces of attribute information, and (ii) include first identification information indicating that it is associated with one of the multiple pieces of type information.
[0046] This generates a bitstream that includes first identification information for identifying the type of attribute information to which the first attribute control information corresponds, thereby making it possible to generate a bitstream that can correctly and efficiently decode the attribute information of three-dimensional points.
[0047] In addition, a three-dimensional data decoding device according to one embodiment of the present disclosure includes a processor and a memory, wherein the processor uses the memory to acquire a plurality of attribute information encoded by acquiring a bitstream and parameters, and decodes the encoded plurality of attribute information using the parameters, thereby decoding the plurality of attribute information possessed by each of a plurality of three-dimensional points, wherein the bitstream includes control information and a plurality of first attribute control information, wherein the control information corresponds to the plurality of attribute information and includes a plurality of type information each indicating a different type of attribute information, and wherein the plurality of first attribute control information (i) respectively corresponds to the plurality of attribute information, and (ii) includes first identification information indicating that it is associated with one of the plurality of type information.
[0048] This makes it possible to use the first identification information to identify the type of attribute information to which the first attribute control information corresponds, thereby enabling the attribute information of the three-dimensional point to be decoded correctly and efficiently.
[0049] These comprehensive or specific aspects may be realized as a system, a method, an integrated circuit, a computer program, or a computer-readable recording medium such as a CD-ROM, or may be realized as any combination of a system, a method, an integrated circuit, a computer program, and a recording medium.
[0050] Hereinafter, the embodiments will be described in detail with reference to the drawings. Note that each of the embodiments described below represents a specific example of the present disclosure. The numerical values, shapes, materials, components, component placement and connection configurations, steps, and step order shown in the following embodiments are merely examples and are not intended to limit the present disclosure. Furthermore, among the components in the following embodiments, components that are not described in an independent claim that represents a superordinate concept will be described as optional components.
[0051] (Embodiment 1) When using encoded point cloud data in an actual device or service, it is desirable to transmit and receive the information required for the application in order to reduce network bandwidth. However, until now, such a function has not existed in the encoding structure of 3D data, and no encoding method for this purpose has existed.
[0052] In this embodiment, we will describe a three-dimensional data encoding method and a three-dimensional data encoding device that provide the function of transmitting and receiving information required for the purpose in encoded data of a three-dimensional point cloud, as well as a three-dimensional data decoding method and a three-dimensional data decoding device that decodes the encoded data, a three-dimensional data multiplexing method that multiplexes the encoded data, and a three-dimensional data transmission method that transmits the encoded data.
[0053] In particular, two encoding methods (encoding schemes) are currently being considered as encoding methods (encoding systems) for point cloud data; however, the structure of the encoded data and the method for storing the encoded data in a system format have not been defined, and as things stand, there is a problem that MUX processing (multiplexing) in the encoding unit, or transmission or storage, is not possible.
[0054] Furthermore, there has been no method to date that supports a format in which two codecs, a first encoding method and a second encoding method, are mixed, such as PCC (Point Cloud Compression).
[0055] In this embodiment, a description will be given of the structure of PCC encoded data in which two codecs, a first encoding method and a second encoding method, are mixed, and a method of storing the encoded data in a system format.
[0056] First, the configuration of a three-dimensional data (point cloud data) encoding / decoding system according to this embodiment will be described. Fig. 1 is a diagram showing an example of the configuration of a three-dimensional data encoding / decoding system according to this embodiment. As shown in Fig. 1, the three-dimensional data encoding / decoding system includes a three-dimensional data encoding system 4601, a three-dimensional data decoding system 4602, a sensor terminal 4603, and an external connection unit 4604.
[0057] The three-dimensional data encoding system 4601 generates encoded data or multiplexed data by encoding point cloud data, which is three-dimensional data. Note that the three-dimensional data encoding system 4601 may be a three-dimensional data encoding device realized by a single device, or may be a system realized by multiple devices. Furthermore, the three-dimensional data encoding device may include some of the multiple processing units included in the three-dimensional data encoding system 4601.
[0058] The three-dimensional data encoding system 4601 includes a point cloud data generation system 4611, a presentation unit 4612, an encoding unit 4613, a multiplexing unit 4614, an input / output unit 4615, and a control unit 4616. The point cloud data generation system 4611 includes a sensor information acquisition unit 4617 and a point cloud data generation unit 4618.
[0059] The sensor information acquisition unit 4617 acquires sensor information from the sensor terminal 4603 and outputs the sensor information to the point cloud data generation unit 4618. The point cloud data generation unit 4618 generates point cloud data from the sensor information and outputs the point cloud data to the encoding unit 4613.
[0060] The presentation unit 4612 presents the sensor information or point cloud data to the user. For example, the presentation unit 4612 displays information or an image based on the sensor information or point cloud data.
[0061] The encoding unit 4613 encodes (compresses) the point cloud data, and outputs the obtained encoded data, control information obtained in the encoding process, and other additional information to the multiplexing unit 4614. The additional information includes, for example, sensor information.
[0062] The multiplexing unit 4614 generates multiplexed data by multiplexing the coded data input from the coding unit 4613, the control information, and the additional information. The format of the multiplexed data is, for example, a file format for storage or a packet format for transmission.
[0063] The input / output unit 4615 (e.g., a communication unit or an interface) outputs the multiplexed data to the outside. Alternatively, the multiplexed data is stored in a storage unit such as an internal memory. The control unit 4616 (or application execution unit) controls each processing unit. In other words, the control unit 4616 controls encoding, multiplexing, etc.
[0064] The sensor information may be input to the encoding unit 4613 or the multiplexing unit 4614. The input / output unit 4615 may output the point cloud data or the encoded data directly to the outside.
[0065] The transmission signal (multiplexed data) output from the three-dimensional data encoding system 4601 is input to the three-dimensional data decoding system 4602 via the external connection unit 4604 .
[0066] The three-dimensional data decoding system 4602 generates point cloud data, which is three-dimensional data, by decoding the encoded data or multiplexed data. Note that the three-dimensional data decoding system 4602 may be a three-dimensional data decoding device realized by a single device, or may be a system realized by multiple devices. Furthermore, the three-dimensional data decoding device may include some of the multiple processing units included in the three-dimensional data decoding system 4602.
[0067] The three-dimensional data decoding system 4602 includes a sensor information acquisition unit 4621 , an input / output unit 4622 , a demultiplexing unit 4623 , a decoding unit 4624 , a presentation unit 4625 , a user interface 4626 , and a control unit 4627 .
[0068] The sensor information acquisition unit 4621 acquires sensor information from the sensor terminal 4603 .
[0069] The input / output unit 4622 acquires the transmission signal, decodes the multiplexed data (file format or packets) from the transmission signal, and outputs the multiplexed data to the demultiplexer 4623.
[0070] The demultiplexing unit 4623 obtains the coded data, control information, and additional information from the multiplexed data, and outputs the coded data, control information, and additional information to the decoding unit 4624.
[0071] The decoding unit 4624 reconstructs the point cloud data by decoding the encoded data.
[0072] The presentation unit 4625 presents the point cloud data to the user. For example, the presentation unit 4625 displays information or images based on the point cloud data. The user interface 4626 acquires instructions based on user operations. The control unit 4627 (or the application execution unit) controls each processing unit. In other words, the control unit 4627 controls demultiplexing, decoding, presentation, etc.
[0073] The input / output unit 4622 may acquire point cloud data or encoded data directly from the outside. The presentation unit 4625 may acquire additional information such as sensor information and present information based on the additional information. The presentation unit 4625 may perform presentation based on a user instruction acquired by the user interface 4626.
[0074] The sensor terminal 4603 generates sensor information, which is information obtained by a sensor. The sensor terminal 4603 is a terminal equipped with a sensor or a camera, and examples thereof include a moving body such as an automobile, a flying object such as an airplane, a mobile terminal, or a camera.
[0075] The sensor information that can be acquired by the sensor terminal 4603 includes, for example, (1) the distance between the sensor terminal 4603 and an object, or the reflectance of the object, obtained from a LIDAR, millimeter-wave radar, or infrared sensor, and (2) the distance between a camera and an object, or the reflectance of the object, obtained from multiple monocular camera images or stereo camera images. The sensor information may also include the attitude, direction, gyro (angular velocity), position (GPS information or altitude), speed, acceleration, etc. of the sensor. The sensor information may also include temperature, air pressure, humidity, magnetism, etc.
[0076] The external connection unit 4604 is realized by an integrated circuit (LSI or IC), an external storage unit, communication with a cloud server via the Internet, broadcasting, or the like.
[0077] Next, point cloud data will be described. Fig. 2 is a diagram showing the configuration of point cloud data. Fig. 3 is a diagram showing an example of the configuration of a data file in which information about point cloud data is written.
[0078] Point cloud data includes data on multiple points. The data on each point includes location information (three-dimensional coordinates) and attribute information for that location information. A collection of multiple points is called a point cloud. For example, a point cloud can represent the three-dimensional shape of an object.
[0079] Position information such as three-dimensional coordinates is sometimes called geometry. Data for each point may also include attribute information of multiple attribute types. Attribute types include, for example, color or reflectance.
[0080] One piece of attribute information may be associated with one piece of location information, or multiple pieces of attribute information with different attribute types may be associated with one piece of location information, or multiple pieces of attribute information of the same attribute type may be associated with one piece of location information.
[0081] The configuration example of the data file shown in FIG. 3 is an example in which there is a one-to-one correspondence between position information and attribute information, and shows the position information and attribute information of N points that make up the point cloud data.
[0082] The position information is, for example, information on the three axes x, y, and z. The attribute information is, for example, RGB color information. A typical data file is a ply file.
[0083] Next, the types of point cloud data will be explained. Fig. 4 is a diagram showing the types of point cloud data. As shown in Fig. 4, point cloud data includes static objects and dynamic objects.
[0084] A static object is 3D point cloud data at any time (a certain time). A dynamic object is 3D point cloud data that changes over time. Hereinafter, 3D point cloud data at a certain time will be referred to as a PCC frame, or simply a frame.
[0085] The object may be a point cloud with a certain area restriction, such as ordinary video data, or a large-scale point cloud with no area restriction, such as map information.
[0086] Furthermore, there may be point cloud data of various densities, such as sparse point cloud data and dense point cloud data.
[0087] Each processing unit will be described in detail below. Sensor information is acquired by various methods, such as a distance sensor such as a LIDAR or a range finder, a stereo camera, or a combination of multiple monocular cameras. The point cloud data generation unit 4618 generates point cloud data based on the sensor information acquired by the sensor information acquisition unit 4617. The point cloud data generation unit 4618 generates position information as point cloud data, and adds attribute information for the position information to the position information.
[0088] The point cloud data generation unit 4618 may process the point cloud data when generating position information or adding attribute information. For example, the point cloud data generation unit 4618 may reduce the amount of data by deleting point clouds with overlapping positions. In addition, the point cloud data generation unit 4618 may convert (position shift, rotation, normalization, etc.) the position information or render the attribute information.
[0089] In FIG. 1, the point cloud data generation system 4611 is included in the three-dimensional data encoding system 4601, but it may be provided independently outside the three-dimensional data encoding system 4601.
[0090] The encoding unit 4613 generates encoded data by encoding the point cloud data based on a predetermined encoding method. There are two main types of encoding methods: the first is an encoding method that uses position information, and this encoding method will be referred to as the first encoding method hereinafter; and the second is an encoding method that uses a video codec, and this encoding method will be referred to as the second encoding method hereinafter.
[0091] The decoding unit 4624 decodes the coded data based on a predetermined coding method to decode the point group data.
[0092] The multiplexing unit 4614 generates multiplexed data by multiplexing the encoded data using an existing multiplexing method. The generated multiplexed data is transmitted or stored. In addition to the PCC encoded data, the multiplexing unit 4614 multiplexes other media such as video, audio, subtitles, applications, and files, or reference time information. The multiplexing unit 4614 may also multiplex attribute information related to sensor information or point cloud data.
[0093] Multiplexing methods or file formats include ISOBMFF, MPEG-DASH, which is an ISOBMFF-based transmission method, MMT, MPEG-2 TS Systems, and RMP.
[0094] The demultiplexer 4623 extracts PCC encoded data, other media, time information, and the like from the multiplexed data.
[0095] The input / output unit 4615 transmits the multiplexed data using a method suited to the transmission medium or storage medium, such as broadcasting or communication. The input / output unit 4615 may communicate with other devices via the Internet, or may communicate with a storage unit such as a cloud server.
[0096] The communication protocol used may be http, ftp, TCP, UDP, etc. A PULL type communication method or a PUSH type communication method may be used.
[0097] Either wired or wireless transmission may be used. For wired transmission, Ethernet (registered trademark), USB, RS-232C, HDMI (registered trademark), coaxial cable, etc. are used. For wireless transmission, wireless LAN, Wi-Fi (registered trademark), Bluetooth (registered trademark), millimeter waves, etc. are used.
[0098] As a broadcasting system, for example, DVB-T2, DVB-S2, DVB-C2, ATSC3.0, or ISDB-S3 is used.
[0099] Fig. 5 is a diagram showing the configuration of a first encoding unit 4630, which is an example of the encoding unit 4613 that performs encoding using the first encoding method. Fig. 6 is a block diagram of the first encoding unit 4630. The first encoding unit 4630 generates encoded data (encoded stream) by encoding point cloud data using the first encoding method. This first encoding unit 4630 includes a position information encoding unit 4631, an attribute information encoding unit 4632, an additional information encoding unit 4633, and a multiplexing unit 4634.
[0100] The first encoding unit 4630 is characterized in that it performs encoding taking into consideration a three-dimensional structure. The first encoding unit 4630 is also characterized in that the attribute information encoding unit 4632 performs encoding using information obtained from the position information encoding unit 4631. The first encoding method is also called GPCC (Geometry based PCC).
[0101] The point cloud data is PCC point cloud data such as a PLY file, or PCC point cloud data generated from sensor information, and includes position information (Position), attribute information (Attribute), and other additional information (MetaData). The position information is input to a position information encoder 4631, the attribute information is input to an attribute information encoder 4632, and the additional information is input to an additional information encoder 4633.
[0102] The position information encoding unit 4631 encodes the position information to generate encoded position information (Compressed Geometry), which is encoded data. For example, the position information encoding unit 4631 encodes the position information using an N-ary tree structure such as an octree. Specifically, in an octree, the target space is divided into eight nodes (subspaces), and 8-bit information (occupancy code) indicating whether or not a point cloud is included in each node is generated. Furthermore, the node including the point cloud is further divided into eight nodes, and 8-bit information indicating whether or not a point cloud is included in each of the eight nodes is generated. This process is repeated until the number of point clouds included in a predetermined layer or node falls below a threshold.
[0103] The attribute information encoding unit 4632 generates encoded attribute information (Compressed Attribute) that is encoded data by encoding using the configuration information generated by the position information encoding unit 4631. For example, the attribute information encoding unit 4632 determines a reference point (reference node) to be referenced when encoding a target point (target node) to be processed, based on the octree structure generated by the position information encoding unit 4631. For example, the attribute information encoding unit 4632 references a peripheral node or adjacent node whose parent node in the octree is the same as that of the target node. Note that the method of determining the reference relationship is not limited to this.
[0104] Furthermore, the encoding process of the attribute information may include at least one of a quantization process, a prediction process, and an arithmetic coding process. In this case, the reference means using a reference node to calculate a predicted value of the attribute information, or using the state of the reference node (e.g., occupancy information indicating whether the reference node includes a point group) to determine an encoding parameter. For example, the encoding parameter is a quantization parameter in a quantization process, or a context in an arithmetic coding process.
[0105] The additional information encoding unit 4633 generates encoded additional information (Compressed MetaData) that is encoded data by encoding compressible data from the additional information.
[0106] The multiplexing unit 4634 multiplexes the encoding position information, the encoding attribute information, the encoding additional information, and other additional information to generate a compressed stream, which is encoded data. The generated compressed stream is output to a processing unit in a system layer (not shown).
[0107] Next, a first decoding unit 4640, which is an example of the decoding unit 4624 that performs decoding using the first encoding method, will be described. FIG. 7 is a diagram showing the configuration of the first decoding unit 4640. FIG. 8 is a block diagram of the first decoding unit 4640. The first decoding unit 4640 generates point cloud data by decoding, using the first encoding method, coded data (coded stream) coded using the first coding method. The first decoding unit 4640 includes a demultiplexing unit 4641, a position information decoding unit 4642, an attribute information decoding unit 4643, and an additional information decoding unit 4644.
[0108] A coded stream (compressed stream) that is coded data is input to the first decoding unit 4640 from a processing unit in a system layer (not shown).
[0109] The demultiplexer 4641 separates the encoded position information (Compressed Geometry), the encoded attribute information (Compressed Attribute), the encoded additional information (Compressed MetaData), and other additional information from the encoded data.
[0110] The position information decoding unit 4642 generates position information by decoding the encoded position information. For example, the position information decoding unit 4642 restores the position information of a point group represented by three-dimensional coordinates from the encoded position information represented by an N-ary tree structure such as an octree.
[0111] The attribute information decoding unit 4643 decodes the encoded attribute information based on the configuration information generated by the position information decoding unit 4642. For example, the attribute information decoding unit 4643 determines a reference point (reference node) to be referenced in decoding the target point (target node) to be processed based on the octree structure obtained by the position information decoding unit 4642. For example, the attribute information decoding unit 4643 references a peripheral node or adjacent node whose parent node in the octree is the same as that of the target node. Note that the method of determining the reference relationship is not limited to this.
[0112] Furthermore, the attribute information decoding process may include at least one of an inverse quantization process, a prediction process, and an arithmetic decoding process. In this case, the reference means using a reference node to calculate a predicted value of the attribute information, or using the state of the reference node (e.g., occupancy information indicating whether the reference node includes a point group) to determine a decoding parameter. For example, the decoding parameter is a quantization parameter in an inverse quantization process, or a context in an arithmetic decoding process.
[0113] The additional information decoding unit 4644 generates additional information by decoding the encoded additional information. The first decoding unit 4640 uses the additional information necessary for decoding the position information and attribute information during decoding, and outputs the additional information necessary for the application to the outside.
[0114] Next, a description will be given of second encoding unit 4650, which is an example of encoding unit 4613 that performs encoding using the second encoding method. Fig. 9 is a diagram showing the configuration of second encoding unit 4650. Fig. 10 is a block diagram of second encoding unit 4650.
[0115] The second encoding unit 4650 generates encoded data (encoded stream) by encoding the point cloud data using a second encoding method. The second encoding unit 4650 includes an additional information generation unit 4651, a position image generation unit 4652, an attribute image generation unit 4653, a video encoding unit 4654, an additional information encoding unit 4655, and a multiplexing unit 4656.
[0116] The second encoding unit 4650 has a feature of generating a position image and an attribute image by projecting a three-dimensional structure onto a two-dimensional image, and encoding the generated position image and attribute image using an existing video encoding method. The second encoding method is also called VPCC (Video based PCC).
[0117] The point cloud data is PCC point cloud data such as a PLY file, or PCC point cloud data generated from sensor information, and includes position information (Position), attribute information (Attribute), and other additional information (MetaData).
[0118] The additional information generating unit 4651 generates map information of a plurality of two-dimensional images by projecting a three-dimensional structure onto the two-dimensional images.
[0119] The position image generation unit 4652 generates a position image (Geometry Image) based on the position information and the map information generated by the additional information generation unit 4651. This position image is, for example, a distance image in which distance (Depth) is indicated as a pixel value. Note that this distance image may be an image in which multiple point clouds are viewed from a single viewpoint (an image in which multiple point clouds are projected onto a single two-dimensional plane), or may be multiple images in which multiple point clouds are viewed from multiple viewpoints, or may be a single image in which these multiple images are integrated.
[0120] The attribute image generation unit 4653 generates an attribute image based on the attribute information and the map information generated by the additional information generation unit 4651. This attribute image is, for example, an image in which attribute information (for example, color (RGB)) is represented as pixel values. Note that this image may be an image in which multiple point clouds are viewed from one viewpoint (an image in which multiple point clouds are projected onto one two-dimensional plane), or multiple images in which multiple point clouds are viewed from multiple viewpoints, or a single image in which these multiple images are integrated.
[0121] The video encoding unit 4654 generates an encoded position image (Compressed Geometry Image) and an encoded attribute image (Compressed Attribute Image), which are encoded data, by encoding the position image and the attribute image using a video encoding method. Note that any known encoding method may be used as the video encoding method. For example, the video encoding method is AVC, HEVC, or the like.
[0122] The additional information encoding unit 4655 generates encoded additional information (Compressed MetaData) by encoding the additional information, map information, and the like included in the point cloud data.
[0123] The multiplexing unit 4656 multiplexes the encoding position image, the encoding attribute image, the encoding additional information, and other additional information to generate an encoded stream (Compressed Stream) that is encoded data. The generated encoded stream is output to a processing unit in a system layer (not shown).
[0124] Next, a second decoding unit 4660, which is an example of the decoding unit 4624 that performs decoding using the second encoding method, will be described. FIG. 11 is a diagram showing the configuration of the second decoding unit 4660. FIG. 12 is a block diagram of the second decoding unit 4660. The second decoding unit 4660 generates point cloud data by decoding, using the second encoding method, coded data (coded stream) coded using the second coding method. The second decoding unit 4660 includes a demultiplexing unit 4661, a video decoding unit 4662, an additional information decoding unit 4663, a position information generation unit 4664, and an attribute information generation unit 4665.
[0125] A coded stream (compressed stream) that is coded data is input to the second decoding unit 4660 from a processing unit in a system layer (not shown).
[0126] The demultiplexer 4661 separates the encoded position image (Compressed Geometry Image), the encoded attribute image (Compressed Attribute Image), the encoded additional information (Compressed MetaData), and other additional information from the encoded data.
[0127] The video decoding unit 4662 generates a position image and an attribute image by decoding the encoded position image and the encoded attribute image using a video encoding method. Note that any known encoding method may be used as the video encoding method. For example, the video encoding method is AVC or HEVC.
[0128] The additional information decoding unit 4663 decodes the encoded additional information to generate additional information including map information and the like.
[0129] The position information generating unit 4664 generates position information using the position image and map information. The attribute information generating unit 4665 generates attribute information using the attribute image and map information.
[0130] The second decoding unit 4660 uses the additional information necessary for decoding during decoding, and outputs the additional information necessary for the application to the outside.
[0131] The following describes the problems with the PCC encoding method. Fig. 13 is a diagram showing a protocol stack related to PCC encoded data. Fig. 13 shows an example in which other media data such as video (e.g., HEVC) or audio is multiplexed onto the PCC encoded data and transmitted or stored.
[0132] Multiplexing methods and file formats have the function of multiplexing various coded data and transmitting or storing them. To transmit or store coded data, the coded data must be converted into the format of the multiplexing method. For example, HEVC specifies a technology that stores coded data in a data structure called a NAL unit and stores the NAL unit in ISOBMFF.
[0133] On the other hand, currently, a first encoding method (Codec1) and a second encoding method (Codec2) are being considered as methods for encoding point cloud data, but the structure of the encoded data and the method for storing the encoded data in a system format have not been defined, which poses the problem that, as it stands, it is not possible to perform MUX processing (multiplexing) in the encoding unit, transmission, or storage.
[0134] In the following description, unless a specific encoding method is specified, it refers to either the first encoding method or the second encoding method.
[0135] A method for defining NAL units according to this embodiment will be described below. For example, in conventional codecs such as HEVC, one format of NAL units is defined for one codec. However, there has been no method so far to support a format in which two codecs, a first encoding method and a second encoding method (hereinafter referred to as PCC codec), are mixed, as in PCC.
[0136] First, we will explain the encoding unit 4670, which has the functions of both the first encoding unit 4630 and the second encoding unit 4650 described above, and the decoding unit 4680, which has the functions of both the first decoding unit 4640 and the second decoding unit 4660.
[0137] 14 is a block diagram of encoding section 4670 according to this embodiment. This encoding section 4670 includes first encoding section 4630 and second encoding section 4650 described above, and a multiplexing section 4671. Multiplexing section 4671 multiplexes the encoded data generated by first encoding section 4630 and the encoded data generated by second encoding section 4650, and outputs the obtained encoded data.
[0138] 15 is a block diagram of a decoding unit 4680 according to this embodiment. This decoding unit 4680 includes the first decoding unit 4640 and second decoding unit 4660 described above, and a demultiplexing unit 4681. The demultiplexing unit 4681 extracts, from input coded data, coded data coded using the first coding method and coded data coded using the second coding method. The demultiplexing unit 4681 outputs the coded data coded using the first coding method to the first decoding unit 4640, and outputs the coded data coded using the second coding method to the second decoding unit 4660.
[0139] With the above configuration, the encoding unit 4670 can encode point cloud data by selectively using the first encoding method or the second encoding method. Furthermore, the decoding unit 4680 can decode encoded data encoded using the first encoding method, encoded data encoded using the second encoding method, and encoded data encoded using both the first encoding method and the second encoding method.
[0140] For example, the encoding unit 4670 may switch the encoding method (the first encoding method and the second encoding method) in units of point cloud data or in units of frames. Furthermore, the encoding unit 4670 may switch the encoding method in units that can be encoded.
[0141] The encoding unit 4670 generates, for example, encoded data (encoded stream) including identification information of the PCC codec.
[0142] The demultiplexing unit 4681 included in the decoding unit 4680 identifies the data using, for example, PCC codec identification information. If the data is data coded using a first coding method, the demultiplexing unit 4681 outputs the data to the first decoding unit 4640. If the data is data coded using a second coding method, the demultiplexing unit 4681 outputs the data to the second decoding unit 4660.
[0143] In addition to the PCC codec identification information, the encoding unit 4670 may also send information indicating whether both encoding methods or one of the encoding methods was used as control information.
[0144] Next, the encoding process according to this embodiment will be described. Fig. 16 is a flowchart of the encoding process according to this embodiment. By using the PCC codec identification information, encoding process compatible with multiple codecs becomes possible.
[0145] First, the encoding unit 4670 encodes the PCC data using either one or both of the codecs of the first encoding method and the second encoding method (S4681).
[0146] If the codec used is the second encoding method (second encoding method in S4682), the encoding unit 4670 sets pcc_codec_type included in the NAL unit header to a value indicating that the data included in the payload of the NAL unit is data encoded using the second encoding method (S4683). Next, the encoding unit 4670 sets pcc_nal_unit_type in the NAL unit header to an identifier of the NAL unit for the second encoding method (S4684). Then, the encoding unit 4670 generates an NAL unit that has the set NAL unit header and includes encoded data in its payload. Then, the encoding unit 4670 transmits the generated NAL unit (S4685).
[0147] On the other hand, if the codec used is the first encoding method (first encoding method in S4682), the encoding unit 4670 sets pcc_codec_type included in the NAL unit header to a value indicating that the data included in the payload of the NAL unit is data encoded using the first encoding method (S4686). Next, the encoding unit 4670 sets pcc_nal_unit_type included in the NAL unit header to an identifier of the NAL unit for the first encoding method (S4687). Next, the encoding unit 4670 generates a NAL unit that has the set NAL unit header and includes encoded data in its payload. Then, the encoding unit 4670 transmits the generated NAL unit (S4685).
[0148] Next, the decoding process according to this embodiment will be described. Fig. 17 is a flowchart of the decoding process according to this embodiment. By using the PCC codec identification information, decoding process compatible with multiple codecs becomes possible.
[0149] First, the decoding unit 4680 receives an NAL unit (S4691). For example, this NAL unit is generated by the processing in the encoding unit 4670 described above.
[0150] Next, the decoding unit 4680 determines whether the pcc_codec_type included in the NAL unit header indicates the first encoding method or the second encoding method (S4692).
[0151] If pcc_codec_type indicates the second encoding method (second encoding method in S4692), the decoding unit 4680 determines that the data included in the payload of the NAL unit is data encoded using the second encoding method (S4693).The second decoding unit 4660 then identifies the data by determining that pcc_nal_unit_type included in the NAL unit header is an identifier of the NAL unit for the second encoding method (S4694).The decoding unit 4680 then decodes the PCC data using the decoding process for the second encoding method (S4695).
[0152] On the other hand, if pcc_codec_type indicates the first encoding method (first encoding method in S4692), the decoding unit 4680 determines that the data included in the payload of the NAL unit is data encoded using the first encoding method (S4696).The decoding unit 4680 then identifies the data by determining that pcc_nal_unit_type included in the NAL unit header is an identifier of the NAL unit for the first encoding method (S4697).The decoding unit 4680 then decodes the PCC data using the decoding process for the first encoding method (S4698).
[0153] As described above, a three-dimensional data encoding device according to one embodiment of the present disclosure generates an encoded stream by encoding three-dimensional data (e.g., point cloud data), and stores information indicating the encoding method used for the encoding, either the first encoding method or the second encoding method (e.g., codec identification information), in control information (e.g., a parameter set) of the encoded stream.
[0154] According to this, when decoding an encoded stream generated by the three-dimensional data encoding device, the three-dimensional data decoding device can determine the encoding method used for encoding using the information stored in the control information, and therefore the three-dimensional data decoding device can correctly decode the encoded stream even when multiple encoding methods are used.
[0155] For example, the three-dimensional data includes position information. In the encoding step, the three-dimensional data encoding device encodes the position information. In the storing step, the three-dimensional data encoding device stores, in control information for the position information, information indicating which of the first encoding method and the second encoding method was used to encode the position information.
[0156] For example, the three-dimensional data includes position information and attribute information. In the encoding step, the three-dimensional data encoding device encodes the position information and the attribute information. In the storing step, the three-dimensional data encoding device stores, in control information for the position information, information indicating which of the first encoding method and the second encoding method was used to encode the position information, and stores, in control information for the attribute information, information indicating which of the first encoding method and the second encoding method was used to encode the attribute information.
[0157] This allows different encoding methods to be used for the position information and the attribute information, thereby improving encoding efficiency.
[0158] For example, the three-dimensional data encoding method further stores the encoded stream in one or more units (for example, NAL units).
[0159] For example, the unit has a format common to the first encoding method and the second encoding method, and includes information indicating the type of data contained in the unit, which information has independent definitions in the first encoding method and the second encoding method (e.g., pcc_nal_unit_type).
[0160] For example, the unit has a format that is independent between the first encoding method and the second encoding method, and includes information indicating the type of data contained in the unit, which has a definition that is independent between the first encoding method and the second encoding method (e.g., codec1_nal_unit_type or codec2_nal_unit_type).
[0161] For example, the unit has a format common to the first encoding method and the second encoding method, and includes information indicating the type of data contained in the unit, which information has a definition common to the first encoding method and the second encoding method (e.g., pcc_nal_unit_type).
[0162] For example, the three-dimensional data encoding device includes a processor and a memory, and the processor performs the above-mentioned processing using the memory.
[0163] Furthermore, the three-dimensional data decoding device according to this embodiment determines the encoding method used to encode the encoded stream based on information (e.g., codec identification information) indicating which of the first and second encoding methods was used to encode the three-dimensional data, which is included in control information (e.g., a parameter set) of the encoded stream generated by encoding the three-dimensional data, and decodes the encoded stream using the determined encoding method.
[0164] According to this, when decoding an encoded stream, the three-dimensional data decoding device can determine the encoding method used for encoding using the information stored in the control information, and therefore the three-dimensional data decoding device can correctly decode the encoded stream even when multiple encoding methods are used.
[0165] For example, the three-dimensional data includes position information, and the encoded stream includes encoded data of the position information. In the determination, the three-dimensional data decoding device determines the encoding method used to encode the position information based on information indicating which of the first encoding method and the second encoding method was used to encode the position information, the information being included in control information of the position information included in the encoded stream. In the decoding, the three-dimensional data decoding device decodes the encoded data of the position information using the determined encoding method used to encode the position information.
[0166] For example, the three-dimensional data includes position information and attribute information, and the encoded stream includes encoded data of the position information and encoded data of the attribute information. In the determination, the three-dimensional data decoding device determines the encoding method used to encode the position information based on information, which of the first encoding method and the second encoding method was used to encode the position information, included in control information of the position information included in the encoded stream, and determines the encoding method used to encode the attribute information based on information, which of the first encoding method and the second encoding method was used to encode the attribute information, included in control information of the attribute information included in the encoded stream. In the decoding, the three-dimensional data decoding device decodes the encoded data of the position information using the determined encoding method used to encode the position information, and decodes the encoded data of the attribute information using the determined encoding method used to encode the attribute information.
[0167] This allows different encoding methods to be used for the position information and the attribute information, thereby improving encoding efficiency.
[0168] For example, the coded stream is stored in one or more units (for example, NAL units), and the three-dimensional data decoding device further obtains the coded stream from the one or more units.
[0169] For example, the unit has a format common to the first encoding method and the second encoding method, and includes information indicating the type of data contained in the unit, which information has independent definitions in the first encoding method and the second encoding method (e.g., pcc_nal_unit_type).
[0170] For example, the unit has a format that is independent between the first encoding method and the second encoding method, and includes information indicating the type of data contained in the unit, which has a definition that is independent between the first encoding method and the second encoding method (e.g., codec1_nal_unit_type or codec2_nal_unit_type).
[0171] For example, the unit has a format common to the first encoding method and the second encoding method, and includes information indicating the type of data contained in the unit, which information has a definition common to the first encoding method and the second encoding method (e.g., pcc_nal_unit_type).
[0172] For example, the three-dimensional data decoding device includes a processor and a memory, and the processor performs the above processing using the memory.
[0173] (Embodiment 2) In this embodiment, a method for storing NAL units in an ISOBMFF file will be described.
[0174] ISOBMFF (ISO based media file format) is a file format standard defined in ISO / IEC 14496-12. ISOBMFF is a media-independent standard that defines a format that can store multiplexed media such as video, audio, and text.
[0175] This section explains the basic structure (file) of ISOBMFF. The basic unit in ISOBMFF is a box. A box consists of type, length, and data, and a file is a collection of boxes of various types.
[0176] 18 is a diagram showing the basic structure (file) of ISOBMFF. An ISOBMFF file mainly includes boxes such as ftyp, which indicates the brand of the file using 4CC (four-character code), moov, which stores metadata such as control information, and mdat, which stores data.
[0177] Storing methods for each media type in ISOBMFF files are specified separately. For example, storage methods for AVC video and HEVC video are specified in ISO / IEC 14496-15. While it is conceivable to extend and use the functions of ISOBMFF to store or transmit PCC encoded data, there are no regulations yet for storing PCC encoded data in ISOBMFF files. Therefore, in this embodiment, a method for storing PCC encoded data in an ISOBMFF file will be described.
[0178] 19 is a diagram showing a protocol stack when NAL units common to PCC codecs are stored in an ISOBMFF file. Here, NAL units common to PCC codecs are stored in an ISOBMFF file. Although NAL units are common to PCC codecs, multiple PCC codecs are stored in the NAL unit, so it is desirable to define a storage method (Carriage of Codec1, Carriage of Codec2) according to each codec.
[0179] Next, a method for storing a common PCC NAL unit that supports multiple PCC codecs in an ISOBMFF file will be described. Fig. 20 is a diagram showing an example of storing a common PCC NAL unit in an ISOBMFF file using the storage method for codec 1 (Carriage of Codec1). Fig. 21 is a diagram showing an example of storing a common PCC NAL unit in an ISOBMFF file using the storage method for codec 2 (Carriage of Codec2).
[0180] Here, ftyp is important information for identifying the file format, and a different identifier is defined for ftyp for each codec. When PCC-encoded data encoded using a first encoding method (encoding system) is stored in a file, ftyp=pcc1 is set. When PCC-encoded data encoded using a second encoding method is stored in a file, ftyp=pcc2 is set.
[0181] Here, pcc1 indicates that PCC codec 1 (first encoding method) is used, and pcc2 indicates that PCC codec 2 (second encoding method) is used. In other words, pcc1 and pcc2 indicate that the data is PCC (coded data of three-dimensional data (point cloud data)), and also indicate the PCC codecs (first and second encoding methods).
[0182] A method for storing NAL units in an ISOBMFF file will be described below. The multiplexing unit analyzes the NAL unit header, and if pcc_codec_type=Codec1, writes pcc1 in ftyp of ISOBMFF.
[0183] Furthermore, the multiplexing unit analyzes the NAL unit header, and if pcc_codec_type=Codec2, writes pcc2 in ftyp of ISOBMFF.
[0184] Furthermore, if pcc_nal_unit_type is metadata, the multiplexing unit stores the NAL unit in a predetermined manner, for example, in moov or mdat. If pcc_nal_unit_type is data, the multiplexing unit stores the NAL unit in a predetermined manner, for example, in moov or mdat.
[0185] For example, the multiplexing unit may store the NAL unit size in the NAL unit, similar to HEVC.
[0186] This storage method enables the demultiplexer (system layer) to analyze the ftyp included in the file to determine whether the PCC-encoded data was encoded using the first encoding method or the second encoding method. Furthermore, as described above, by determining whether the PCC-encoded data was encoded using the first encoding method or the second encoding method, it is possible to extract encoded data encoded using one of the encoding methods from data containing a mixture of data encoded using both encoding methods. This reduces the amount of data transmitted when transmitting encoded data. Furthermore, this storage method allows a common data format to be used for the first encoding method and the second encoding method, without requiring different data (file) formats to be set.
[0187] In addition, when codec identification information is indicated in metadata of the system layer, such as ftyp in ISOBMFF, the multiplexing unit may store NAL units from which pcc_nal_unit_type has been deleted in an ISOBMFF file.
[0188] Next, the configuration and operation of the multiplexing unit provided in the three-dimensional data encoding system (three-dimensional data encoding device) according to this embodiment and the demultiplexing unit provided in the three-dimensional data decoding system (three-dimensional data decoding device) according to this embodiment will be described.
[0189] 22 is a diagram showing the configuration of the first multiplexing unit 4710. The first multiplexing unit 4710 includes a file conversion unit 4711 that generates multiplexed data (file) by storing the coded data and control information (NAL units) generated by the first coding unit 4630 in an ISOBMFF file. This first multiplexing unit 4710 is included in, for example, the multiplexing unit 4614 shown in FIG. 1.
[0190] 23 is a diagram showing the configuration of the first demultiplexing unit 4720. The first demultiplexing unit 4720 includes a file inverse conversion unit 4721 that acquires coded data and control information (NAL units) from multiplexed data (file) and outputs the acquired coded data and control information to the first decoding unit 4640. This first demultiplexing unit 4720 is included in the demultiplexing unit 4623 shown in FIG. 1, for example.
[0191] 24 is a diagram showing the configuration of the second multiplexing unit 4730. The second multiplexing unit 4730 includes a file conversion unit 4731 that generates multiplexed data (file) by storing the coded data and control information (NAL units) generated by the second coding unit 4650 in an ISOBMFF file. This second multiplexing unit 4730 is included in, for example, the multiplexing unit 4614 shown in FIG. 1.
[0192] 25 is a diagram showing the configuration of the second demultiplexing unit 4740. The second demultiplexing unit 4740 includes a file inverse conversion unit 4741 that acquires coded data and control information (NAL units) from multiplexed data (file) and outputs the acquired coded data and control information to the second decoding unit 4660. This second demultiplexing unit 4740 is included in, for example, the demultiplexing unit 4623 shown in FIG.
[0193] 26 is a flowchart of the multiplexing process by the first multiplexing unit 4710. First, the first multiplexing unit 4710 analyzes pcc_codec_type included in the NAL unit header to determine whether the codec being used is the first encoding method or the second encoding method (S4701).
[0194] If pcc_codec_type indicates the second encoding method (second encoding method in S4702), the first multiplexing unit 4710 does not process the NAL unit (S4703).
[0195] On the other hand, if pcc_codec_type indicates the second encoding method (first encoding method in S4702), the first multiplexing unit 4710 writes pcc1 in ftyp (S4704). In other words, the first multiplexing unit 4710 writes information in ftyp indicating that data encoded using the first encoding method is stored in the file.
[0196] Next, the first multiplexing unit 4710 analyzes the pcc_nal_unit_type included in the NAL unit header, and stores the data in a box (moov, mdat, or the like) using a predetermined method according to the data type indicated by the pcc_nal_unit_type (S4705).Then, the first multiplexing unit 4710 creates an ISOBMFF file including the ftyp and the box (S4706).
[0197] 27 is a flowchart of the multiplexing process by the second multiplexing unit 4730. First, the second multiplexing unit 4730 analyzes pcc_codec_type included in the NAL unit header to determine whether the codec being used is the first encoding method or the second encoding method (S4711).
[0198] If pcc_unit_type indicates the second encoding method (second encoding method in S4712), the second multiplexing unit 4730 writes pcc2 in ftyp (S4713). In other words, the second multiplexing unit 4730 writes information in ftyp indicating that data encoded using the second encoding method is stored in the file.
[0199] Next, the second multiplexing unit 4730 analyzes pcc_nal_unit_type included in the NAL unit header, and stores the data in a box (moov, mdat, etc.) using a predetermined method according to the data type indicated by pcc_nal_unit_type (S4714).Then, the second multiplexing unit 4730 creates an ISOBMFF file including the ftyp and the box (S4715).
[0200] On the other hand, if pcc_unit_type indicates the first encoding method (first encoding method in S4712), the second multiplexing unit 4730 does not process the NAL unit (S4716).
[0201] Note that the above process shows an example in which PCC data is encoded using either the first encoding method or the second encoding method. The first multiplexing unit 4710 and the second multiplexing unit 4730 store the desired NAL unit in a file by identifying the codec type of the NAL unit. Note that if PCC codec identification information is included in addition to the NAL unit header, the first multiplexing unit 4710 and the second multiplexing unit 4730 may identify the codec type (first encoding method or second encoding method) in steps S4701 and S4711 using the PCC codec identification information included in addition to the NAL unit header.
[0202] Furthermore, when storing data in a file in steps S4706 and S4714, the first multiplexing unit 4710 and the second multiplexing unit 4730 may delete pcc_nal_unit_type from the NAL unit header before storing the data in the file.
[0203] 28 is a flowchart showing the processing by the first demultiplexing unit 4720 and the first decoding unit 4640. First, the first demultiplexing unit 4720 analyzes ftyp included in the ISOBMFF file (S4721). If the codec indicated by ftyp is the second encoding method (pcc2) (second encoding method in S4722), the first demultiplexing unit 4720 determines that the data included in the payload of the NAL unit is data encoded using the second encoding method (S4723). The first demultiplexing unit 4720 then conveys the result of this determination to the first decoding unit 4640. The first decoding unit 4640 does not process the NAL unit (S4724).
[0204] On the other hand, if the codec indicated by ftyp is the first encoding method (pcc1) (first encoding method in S4722), the first demultiplexing unit 4720 determines that the data included in the payload of the NAL unit is data encoded using the first encoding method (S4725). In addition, the first demultiplexing unit 4720 conveys the result of this determination to the first decoding unit 4640.
[0205] The first decoding unit 4640 identifies the data by determining that the pcc_nal_unit_type included in the NAL unit header is an identifier of the NAL unit for the first encoding method (S4726).Then, the first decoding unit 4640 decodes the PCC data using the decoding process for the first encoding method (S4727).
[0206] 29 is a flowchart showing the processing by the second demultiplexing unit 4740 and the second decoding unit 4660. First, the second demultiplexing unit 4740 analyzes ftyp included in the ISOBMFF file (S4731). If the codec indicated by ftyp is the second encoding method (pcc2) (second encoding method in S4732), the second demultiplexing unit 4740 determines that the data included in the payload of the NAL unit is data encoded using the second encoding method (S4733). The second demultiplexing unit 4740 also conveys the result of this determination to the second decoding unit 4660.
[0207] The second decoding unit 4660 identifies the data by determining that the pcc_nal_unit_type included in the NAL unit header is an identifier of the NAL unit for the second encoding method (S4734).Then, the second decoding unit 4660 decodes the PCC data using the decoding process for the second encoding method (S4735).
[0208] On the other hand, if the codec indicated by ftyp is the first encoding method (pcc1) (first encoding method in S4732), the second demultiplexing unit 4740 determines that the data included in the payload of the NAL unit is data encoded using the first encoding method (S4736). The second demultiplexing unit 4740 also conveys the result of this determination to the second decoding unit 4660. The second decoding unit 4660 does not process the NAL unit (S4737).
[0209] In this way, for example, by identifying the codec type of the NAL unit in the first demultiplexing unit 4720 or the second demultiplexing unit 4740, the codec type can be identified at an early stage. Furthermore, desired NAL units can be input to the first decoding unit 4640 or the second decoding unit 4660, and unnecessary NAL units can be removed. In this case, the process of analyzing codec identification information may become unnecessary in the first decoding unit 4640 or the second decoding unit 4660. Note that the first decoding unit 4640 or the second decoding unit 4660 may again refer to the NAL unit type and perform the process of analyzing codec identification information.
[0210] In addition, if the first multiplexing unit 4710 or the second multiplexing unit 4730 removes the pcc_nal_unit_type from the NAL unit header, the first demultiplexing unit 4720 or the second demultiplexing unit 4740 may add the pcc_nal_unit_type to the NAL unit and then output it to the first decoding unit 4640 or the second decoding unit 4660.
[0211] (Embodiment 3) This embodiment will describe a multiplexing unit and a demultiplexing unit corresponding to the encoding unit 4670 and decoding unit 4680 that support multiple codecs, as described in Embodiment 1. Fig. 30 shows the configurations of the encoding unit 4670 and third multiplexing unit 4750 according to this embodiment.
[0212] The encoding unit 4670 encodes the point cloud data using either or both of a first encoding method and a second encoding method. The encoding unit 4670 may switch the encoding method (the first encoding method and the second encoding method) for each point cloud data unit or for each frame unit. The encoding unit 4670 may also switch the encoding method for each encoding unit.
[0213] The encoding unit 4670 generates encoded data (encoded stream) including identification information of the PCC codec.
[0214] The third multiplexing unit 4750 includes a file conversion unit 4751. The file conversion unit 4751 converts the NAL units output from the encoding unit 4670 into a PCC data file. The file conversion unit 4751 analyzes the codec identification information included in the NAL unit header and determines whether the PCC-encoded data is data encoded using a first encoding method, data encoded using a second encoding method, or data encoded using both methods. The file conversion unit 4751 writes a brand name that can identify the codec in ftyp. For example, to indicate that the data has been encoded using both methods, pcc3 is written in ftyp.
[0215] If the encoding unit 4670 describes PCC codec identification information outside the NAL unit, the file conversion unit 4751 may use this identification information to determine the PCC codec (encoding method).
[0216] FIG. 31 shows the configuration of the third demultiplexing unit 4760 and the decoding unit 4680 according to this embodiment.
[0217] The third demultiplexing unit 4760 includes a file inverse conversion unit 4761. The file inverse conversion unit 4761 analyzes the ftyp included in the file and determines whether the PCC encoded data is data encoded using the first encoding method, data encoded using the second encoding method, or data encoded using both methods.
[0218] When the PCC-encoded data is encoded using one of the encoding methods, the data is input to the corresponding decoding unit out of the first decoding unit 4640 and the second decoding unit 4660, and the data is not input to the other decoding unit. When the PCC-encoded data is encoded using both encoding methods, the data is input to a decoding unit 4680 that supports both methods.
[0219] The decoding unit 4680 decodes the PCC encoded data using either or both of the first encoding method and the second encoding method.
[0220] FIG. 32 is a flowchart showing processing by the third multiplexing section 4750 according to this embodiment.
[0221] First, the third multiplexing unit 4750 analyzes the pcc_codec_type included in the NAL unit header to determine whether the codec being used is the first encoding method, the second encoding method, or both the first and second encoding methods (S4741).
[0222] If the second encoding method is used (Yes in S4742 and the second encoding method in S4743), the third multiplexing unit 4750 writes pcc2 in ftyp (S4744). That is, the third multiplexing unit 4750 writes information indicating that data encoded using the second encoding method is stored in the file in ftyp.
[0223] Next, the third multiplexing unit 4750 analyzes pcc_nal_unit_type included in the NAL unit header, and stores the data in a box (moov, mdat, etc.) using a predetermined method according to the data type indicated by pcc_unit_type (S4745).Then, the third multiplexing unit 4750 creates an ISOBMFF file including the ftyp and the box (S4746).
[0224] On the other hand, if the first encoding method is used (Yes in S4742 and the first encoding method in S4743), the third multiplexing unit 4750 writes pcc1 in ftyp (S4747). That is, the third multiplexing unit 4750 writes information indicating that data encoded using the first encoding method is stored in the file in ftyp.
[0225] Next, the third multiplexing unit 4750 analyzes pcc_nal_unit_type included in the NAL unit header, and stores the data in a box (moov, mdat, or the like) using a predetermined method according to the data type indicated by pcc_unit_type (S4748).Then, the third multiplexing unit 4750 creates an ISOBMFF file including the ftyp and the box (S4746).
[0226] On the other hand, if both the first encoding method and the second encoding method are used (No in S4742), the third multiplexing unit 4750 writes pcc3 in ftyp (S4749). That is, the third multiplexing unit 4750 writes information in ftyp indicating that data encoded using both encoding methods is stored in the file.
[0227] Next, the third multiplexing unit 4750 analyzes pcc_nal_unit_type included in the NAL unit header, and stores the data in a box (moov, mdat, etc.) using a predetermined method according to the data type indicated by pcc_unit_type (S4750).Then, the third multiplexing unit 4750 creates an ISOBMFF file including the ftyp and the box (S4746).
[0228] 33 is a flowchart showing the processing by the third demultiplexing unit 4760 and the decoding unit 4680. First, the third demultiplexing unit 4760 analyzes ftyp included in the ISOBMFF file (S4761). If the codec indicated by ftyp is the second encoding method (pcc2) (Yes in S4762 and the second encoding method in S4763), the third demultiplexing unit 4760 determines that the data included in the payload of the NAL unit is data encoded using the second encoding method (S4764). The third demultiplexing unit 4760 then conveys the result of this determination to the decoding unit 4680.
[0229] The decoding unit 4680 identifies the data by determining that the pcc_nal_unit_type included in the NAL unit header is an identifier of the NAL unit for the second encoding method (S4765).The decoding unit 4680 then decodes the PCC data using the decoding process for the second encoding method (S4766).
[0230] On the other hand, if the codec indicated by ftyp is the first encoding method (pcc1) (Yes in S4762 and the first encoding method in S4763), the third demultiplexing unit 4760 determines that the data included in the payload of the NAL unit is data encoded using the first encoding method (S4767). The third demultiplexing unit 4760 also conveys the result of this determination to the decoding unit 4680.
[0231] The decoding unit 4680 identifies the data by determining that the pcc_nal_unit_type included in the NAL unit header is an identifier of the NAL unit for the first encoding method (S4768).The decoding unit 4680 then decodes the PCC data using the decoding process for the first encoding method (S4769).
[0232] On the other hand, if ftyp indicates that both encoding methods are used (pcc3) (No in S4762), the third demultiplexing unit 4760 determines that the data included in the payload of the NAL unit is data encoded using both the first encoding method and the second encoding method (S4770). The third demultiplexing unit 4760 also conveys the result of this determination to the decoding unit 4680.
[0233] The decoding unit 4680 identifies the data by determining that pcc_nal_unit_type included in the NAL unit header is an identifier of the NAL unit for the codec described in pcc_codec_type (S4771). Then, the decoding unit 4680 decodes the PCC data using the decoding processes of both encoding methods (S4772). That is, the decoding unit 4680 decodes data encoded using the first encoding method using the decoding process of the first encoding method, and decodes data encoded using the second encoding method using the decoding process of the second encoding method.
[0234] Modifications of this embodiment will be described below. As the brand type indicated in ftyp, the following types may be indicated by the identification information. Also, a combination of the following types may be indicated by the identification information.
[0235] The identification information may indicate whether the object in the original data before PCC encoding is a point cloud with a restricted area or a large-scale point cloud with an unrestricted area such as map information.
[0236] The identification information may indicate whether the original data before PCC encoding is a static object or a dynamic object.
[0237] As described above, the identification information may indicate whether the PCC encoded data is data encoded using a first encoding method or data encoded using a second encoding method.
[0238] The identification information may indicate the algorithm used in the PCC encoding, where the algorithm is, for example, an encoding method that can be used in the first encoding method or the second encoding method.
[0239] The identification information may indicate differences in the storage method of PCC-encoded data in an ISOBMFF file. For example, the identification information may indicate whether the storage method used is for storage or for real-time transmission such as dynamic streaming.
[0240] Although the second and third embodiments have been described with reference to examples in which ISOBMFF is used as the file format, other formats may also be used. For example, a method similar to that of the present embodiment may also be used when storing PCC encoded data in MPEG-2 TS Systems, MPEG-DASH, MMT, or RMP.
[0241] Although the above example shows that metadata such as identification information is stored in ftyp, this metadata may be stored in a location other than ftyp. For example, this metadata may be stored in moov.
[0242] As described above, the three-dimensional data storage device (or the three-dimensional data multiplexing device, or the three-dimensional data encoding device) performs the processing shown in FIG.
[0243] First, the three-dimensional data storage device (including, for example, the first multiplexing unit 4710, the second multiplexing unit 4730, or the third multiplexing unit 4750) acquires one or more units (for example, NAL units) in which an encoded stream in which point cloud data has been encoded is stored (S4781). Next, the three-dimensional data storage device stores the one or more units in a file (for example, an ISOBMFF file) (S4782). Furthermore, in the storing step (S4782), the three-dimensional data storage device stores information (for example, pcc1, pcc2, or pcc3) indicating that the data stored in the file is data in which point cloud data has been encoded, in the control information (for example, ftyp) of the file.
[0244] This allows a device that processes a file generated by the three-dimensional data storage device to refer to the control information of the file and quickly determine whether the data stored in the file is encoded point cloud data, thereby reducing the processing load of the device and speeding up processing.
[0245] For example, the information further indicates which of the first and second encoding methods was used to encode the point cloud data. Note that the fact that the data stored in the file is encoded point cloud data and the encoding method of the first and second encoding methods used to encode the point cloud data may be indicated by a single piece of information or by different pieces of information.
[0246] This allows a device that processes a file created by the three-dimensional data storage device to quickly determine the codec used for the data stored in the file by referencing the file's control information, thereby reducing the processing load of the device or speeding up processing.
[0247] For example, the first encoding method is a method (GPCC) in which position information representing the positions of point cloud data as an N-ary tree (N is an integer greater than or equal to 2) and attribute information is encoded using the position information, and the second encoding method is a method (VPCC) in which a two-dimensional image is generated from the point cloud data and the two-dimensional image is encoded using a video encoding method.
[0248] For example, the file conforms to ISOBMFF (ISO based media file format).
[0249] For example, the three-dimensional data storage device includes a processor and a memory, and the processor uses the memory to perform the above processing.
[0250] As described above, the three-dimensional data acquisition device (or the three-dimensional data demultiplexing device, or the three-dimensional data decoding device) performs the processing shown in FIG.
[0251] The three-dimensional data acquisition device (including, for example, the first demultiplexing unit 4720, the second demultiplexing unit 4740, or the third demultiplexing unit 4760) acquires a file (for example, an ISOBMFF file) that stores one or more units (for example, NAL units) in which an encoded stream in which point cloud data is encoded is stored (S4791). Next, the three-dimensional data acquisition device acquires one or more units from the file (S4792). In addition, the control information of the file (for example, ftyp) includes information (for example, pcc1, pcc2, or pcc3) that indicates that the data stored in the file is data in which point cloud data is encoded.
[0252] For example, the three-dimensional data acquisition device refers to the information and determines whether the data stored in the file is encoded point cloud data. Furthermore, if the three-dimensional data acquisition device determines that the data stored in the file is encoded point cloud data, it generates point cloud data by decoding the encoded point cloud data included in one or more units. Alternatively, if the three-dimensional data acquisition device determines that the data stored in the file is encoded point cloud data, it outputs (notifies) information indicating that the data included in one or more units is encoded point cloud data to a downstream processing unit (e.g., the first decoding unit 4640, the second decoding unit 4660, or the decoding unit 4680).
[0253] This allows the 3D data acquisition device to refer to the control information of the file and quickly determine whether the data stored in the file is encoded point cloud data, thereby reducing the processing load of the 3D data acquisition device or a downstream device and increasing the processing speed.
[0254] For example, the information further indicates the encoding method used for the encoding, either the first encoding method or the second encoding method. Note that the fact that the data stored in the file is data obtained by encoding point cloud data and the encoding method used for encoding the point cloud data, either the first encoding method or the second encoding method, may be indicated by a single piece of information or by different pieces of information.
[0255] This allows the 3D data acquisition device to refer to the control information of the file and quickly determine the codec used for the data stored in the file, thereby reducing the processing load of the 3D data acquisition device or a downstream device and increasing the processing speed.
[0256] For example, based on the information, the three-dimensional data acquisition device acquires data encoded using one of the encoding methods from encoded point cloud data that includes data encoded using the first encoding method and data encoded using the second encoding method.
[0257] For example, the first encoding method is a method (GPCC) in which position information representing the positions of point cloud data as an N-ary tree (N is an integer greater than or equal to 2) and attribute information is encoded using the position information, and the second encoding method is a method (VPCC) in which a two-dimensional image is generated from the point cloud data and the two-dimensional image is encoded using a video encoding method.
[0258] For example, the file conforms to ISOBMFF (ISO based media file format).
[0259] For example, the three-dimensional data acquisition device includes a processor and a memory, and the processor performs the above-mentioned processing using the memory.
[0260] (Fourth embodiment) In this embodiment, the types of coded data (position information (Geometry), attribute information (Attribute), additional information (Metadata)) generated by the first coding unit 4630 or the second coding unit 4650 described above, a method for generating the additional information (Metadata), and multiplexing processing in the multiplexing unit will be described. Note that the additional information (Metadata) may also be referred to as a parameter set or control information.
[0261] In this embodiment, the dynamic object (three-dimensional point cloud data that changes over time) described in Figure 4 will be used as an example, but a similar method may also be used in the case of a static object (three-dimensional point cloud data at any time).
[0262] 36 is a diagram showing the configurations of an encoding unit 4801 and a multiplexing unit 4802 included in the three-dimensional data encoding device according to this embodiment. The encoding unit 4801 corresponds to, for example, the first encoding unit 4630 or the second encoding unit 4650 described above. The multiplexing unit 4802 corresponds to the multiplexing unit 4634 or 46456 described above.
[0263] The encoding unit 4801 encodes point cloud data of multiple PCC (Point Cloud Compression) frames, and generates encoded data (Multiple Compressed Data) of multiple pieces of position information, attribute information, and additional information.
[0264] The multiplexing unit 4802 converts data of multiple data types (position information, attribute information, and additional information) into NAL units, thereby converting the data into a data structure that takes into account data access in the decoding device.
[0265] 37 is a diagram showing an example of the structure of coded data generated by coding unit 4801. Arrows in the diagram indicate dependencies related to the decoding of coded data, with the source of the arrow depending on the data at the end of the arrow. In other words, the decoding device decodes the data at the end of the arrow and uses the decoded data to decode the data at the end of the arrow. In other words, dependency means that the data on which the dependency is based is referenced (used) in the processing (encoding, decoding, etc.) of the data on which the dependency is based.
[0266] First, the process of generating encoded data of position information will be described. The encoding unit 4801 generates encoded position data (compressed geometry data) for each frame by encoding the position information of each frame. The encoded position data is represented by G(i), where i indicates the frame number, the time of the frame, etc.
[0267] The encoding unit 4801 also generates a position parameter set (GPS(i)) corresponding to each frame. The position parameter set includes parameters that can be used to decode the encoded position data. The encoded position data for each frame depends on the corresponding position parameter set.
[0268] Furthermore, encoded position data consisting of multiple frames is defined as a position sequence (Geometry Sequence). The encoding unit 4801 generates a position sequence parameter set (Geometry Sequence PS: also referred to as position SPS) that stores parameters commonly used in decoding processes for multiple frames in the position sequence. The position sequence depends on the position SPS.
[0269] Next, the process of generating coded data of attribute information will be described. The coding unit 4801 generates coded attribute data (Compressed Attribute Data) for each frame by coding the attribute information of each frame. The coded attribute data is represented by A(i). Also, Fig. 37 shows an example in which attribute X and attribute Y exist, and the coded attribute data of attribute X is represented by AX(i) and the coded attribute data of attribute Y is represented by AY(i).
[0270] The encoding unit 4801 also generates an attribute parameter set (APS(i)) corresponding to each frame. The attribute parameter set for attribute X is represented as AXPS(i), and the attribute parameter set for attribute Y is represented as AYPS(i). The attribute parameter set includes parameters that can be used to decode encoded attribute information. The encoded attribute data depends on the corresponding attribute parameter set.
[0271] Also, coded attribute data consisting of multiple frames is called an attribute sequence (Attribute Sequence). The encoding unit 4801 generates an attribute sequence parameter set (Attribute Sequence PS: also referred to as attribute SPS) that stores parameters commonly used in decoding processes for multiple frames in the attribute sequence. The attribute sequence depends on the attribute SPS.
[0272] Furthermore, in the first encoding method, the encoded attribute data depends on the encoded position data.
[0273] 37 shows an example in which two types of attribute information (attribute X and attribute Y) exist. When there are two types of attribute information, for example, two encoding units generate respective data and metadata. Also, for example, an attribute sequence is defined for each type of attribute information, and an attribute SPS is generated for each type of attribute information.
[0274] Note that, while FIG. 37 shows an example in which there is one type of position information and two types of attribute information, the present invention is not limited to this, and there may be one type of attribute information, or three or more types. In this case, encoded data can be generated using a similar method. Furthermore, in the case of point cloud data that does not have attribute information, the attribute information may not be necessary. In this case, the encoding unit 4801 does not need to generate a parameter set related to the attribute information.
[0275] Next, the process of generating additional information (metadata) will be described. The encoding unit 4801 generates a PCC Stream PS (also referred to as stream PS), which is a parameter set for the entire PCC stream. The encoding unit 4801 stores, in the stream PS, parameters that can be used in common for decoding processes for one or more position sequences and one or more attribute sequences. For example, the stream PS includes identification information indicating the codec for the point cloud data, information indicating the algorithm used for encoding, and the like. The position sequence and attribute sequence depend on the stream PS.
[0276] Next, the access unit and GOF will be explained. In this embodiment, the concepts of the access unit (AU) and GOF (Group of Frame) are newly introduced.
[0277] An access unit is a basic unit for accessing data during decoding, and is composed of one or more pieces of data and one or more pieces of metadata. For example, an access unit is composed of position information at the same time and one or more pieces of attribute information. A GOF is a random access unit and is composed of one or more access units.
[0278] The encoding unit 4801 generates an access unit header (AU Header) as identification information indicating the beginning of an access unit. The encoding unit 4801 stores parameters related to the access unit in the access unit header. For example, the access unit header includes the configuration or information of the coded data included in the access unit. The access unit header also includes parameters commonly used for the data included in the access unit, such as parameters related to decoding of the coded data.
[0279] Instead of an access unit header, the encoding unit 4801 may generate an access unit delimiter that does not include parameters related to the access unit. This access unit delimiter is used as identification information indicating the start of the access unit. The decoding device identifies the start of the access unit by detecting the access unit header or the access unit delimiter.
[0280] Next, the generation of identification information for the start of a GOF will be described. The encoding unit 4801 generates a GOF header as identification information that indicates the start of a GOF. The encoding unit 4801 stores parameters related to the GOF in the GOF header. For example, the GOF header includes the configuration or information of the coded data included in the GOF. The GOF header also includes parameters commonly used for the data included in the GOF, such as parameters related to the decoding of the coded data.
[0281] Instead of a GOF header, the encoding unit 4801 may generate a GOF delimiter that does not include parameters related to the GOF. This GOF delimiter is used as identification information that indicates the beginning of the GOF. The decoding device identifies the beginning of the GOF by detecting the GOF header or the GOF delimiter.
[0282] In PCC encoded data, for example, an access unit is defined as a PCC frame unit, and a decoding device accesses a PCC frame based on identification information at the beginning of the access unit.
[0283] Also, for example, GOF is defined as one random access unit. A decoding device accesses the random access unit based on the identification information at the beginning of the GOF. For example, if PCC frames are not dependent on each other and can be decoded independently, the PCC frames may be defined as the random access unit.
[0284] It should be noted that two or more PCC frames may be allocated to one access unit, and multiple random access units may be allocated to one GOF.
[0285] The encoding unit 4801 may also define and generate parameter sets or metadata other than those described above. For example, the encoding unit 4801 may generate SEI (Supplemental Enhancement Information) that stores parameters (optional parameters) that may not necessarily be used during decoding.
[0286] Next, the structure of coded data and the method of storing coded data in NAL units will be described.
[0287] For example, a data format is defined for each type of coded data. Figure 38 shows examples of coded data and NAL units.
[0288] For example, as shown in Fig. 38, the coded data includes a header and a payload. The coded data may include length information indicating the length (amount of data) of the coded data, the header, or the payload. The coded data may not include a header.
[0289] The header includes, for example, identification information for identifying the data, such as the data type or frame number.
[0290] The header includes, for example, identification information indicating a reference relationship. This identification information is stored in the header when, for example, there is a dependency relationship between data, and is information for referencing the reference destination from the reference source. For example, the header of the reference destination includes identification information for identifying the data. The header of the reference source includes identification information indicating the reference destination.
[0291] If the reference destination or the reference source can be identified or derived from other information, the identification information for specifying the data or the identification information indicating the reference relationship may be omitted.
[0292] The multiplexing unit 4802 stores the coded data in the payload of the NAL unit. The NAL unit header includes pcc_nal_unit_type, which is information identifying the coded data. Figure 39 shows an example of the semantics of pcc_nal_unit_type.
[0293] As shown in Fig. 39, when pcc_codec_type is codec 1 (Codec1: first encoding method), values 0 to 10 of pcc_nal_unit_type are assigned to the encoded position data (Geometry), encoded attribute X data (AttributeX), encoded attribute Y data (AttributeY), position PS (Geom.PS), attribute XPS (AttrX.PS), attribute YPS (AttrX.PS), position SPS (Geometry Sequence PS), attribute XSPS (AttributeX Sequence PS), attribute YSPS (AttributeY Sequence PS), AU header (AU Header), and GOF header (GOF Header) in codec 1. Values 11 and above are assigned as spares for codec 1.
[0294] When pcc_codec_type is Codec2 (Codec2: second encoding method), values 0 to 2 of pcc_nal_unit_type are assigned to codec data A (DataA), metadata A (MetaDataA), and metadata B (MetaDataB). Values 3 and above are assigned as spares for Codec2.
[0295] Next, the data transmission order will be explained. The following explains the restrictions on the transmission order of NAL units.
[0296] The multiplexing unit 4802 collectively transmits NAL units in units of GOF or AU. The multiplexing unit 4802 places a GOF header at the beginning of a GOF, and places an AU header at the beginning of an AU.
[0297] The multiplexing unit 4802 may allocate a sequence parameter set (SPS) for each AU so that the decoding device can decode from the next AU even if data is lost due to packet loss or the like.
[0298] If the coded data has a dependency relationship related to decoding, the decoding device decodes the referenced data first, and then decodes the referenced data. In order to enable the decoding device to decode the data in the order in which it was received without rearranging the data, the multiplexing unit 4802 sends the referenced data first.
[0299] 40 is a diagram showing examples of the transmission order of NAL units, and shows three examples: position information priority, parameter priority, and data integration.
[0300] The location information priority transmission order is an example in which information related to location information and information related to attribute information are transmitted together. In this transmission order, the transmission of information related to location information is completed earlier than the transmission of information related to attribute information.
[0301] For example, by using this transmission order, a decoding device that does not decode attribute information may be able to set a time during which it does not process the attribute information by ignoring the decoding of the attribute information. Also, for example, in the case of a decoding device that wants to decode position information quickly, it may be able to decode the position information more quickly by obtaining the encoded data of the position information early.
[0302] In FIG. 40, the attributes XSPS and YSPS are combined and written as the attribute SPS, but the attributes XSPS and YSPS may be arranged separately.
[0303] In the parameter set priority sending order, the parameter sets are sent first and the data is sent later.
[0304] As long as the NAL unit transmission order constraints are met as described above, the multiplexing unit 4802 may transmit NAL units in any order. For example, order identification information may be defined, and the multiplexing unit 4802 may have the function of transmitting NAL units in multiple order patterns. For example, the NAL unit order identification information may be stored in the stream PS.
[0305] The three-dimensional data decoding device may perform decoding based on the order identification information. The three-dimensional data decoding device may instruct the three-dimensional data encoding device on a desired transmission order, and the three-dimensional data encoding device (multiplexing unit 4802) may control the transmission order in accordance with the instructed transmission order.
[0306] The multiplexing unit 4802 may generate coded data that merges multiple functions, as long as the data transmission order is within the constraints of the transmission order, such as the transmission order of the integrated data. For example, as shown in Fig. 40, the GOF header and the AU header may be integrated, or the AXPS and the AYPS may be integrated. In this case, an identifier indicating that the data has multiple functions is defined in pcc_nal_unit_type.
[0307] A modified example of this embodiment will be described below. PS has levels, such as a frame-level PS, a sequence-level PS, and a PCC sequence-level PS, and if the PCC sequence level is the higher level and the frame level is the lower level, the following method may be used to store parameters.
[0308] The default PS value is indicated in the higher PS. Also, if the value of the lower PS differs from the value of the higher PS, the PS value is indicated in the lower PS. Alternatively, the PS value is not written in the higher PS, but written in the lower PS. Alternatively, information on whether the PS value is to be written in the lower PS, the higher PS, or both is written in either the lower PS or the higher PS, or both. Alternatively, the lower PS may be merged with the higher PS. Alternatively, if the lower PS and the higher PS overlap, the multiplexing unit 4802 may omit sending one of them.
[0309] The encoding unit 4801 or the multiplexing unit 4802 may divide the data into slices or tiles and transmit the divided data. The divided data includes information for identifying the divided data, and parameters used to decode the divided data are included in the parameter set. In this case, an identifier indicating that the data stores data or parameters related to tiles or slices is defined in pcc_nal_unit_type.
[0310] The processing related to the order identification information will be explained below. Fig. 41 is a flowchart of processing by the three-dimensional data encoding device (the encoding unit 4801 and the multiplexing unit 4802) related to the transmission order of NAL units.
[0311] First, the three-dimensional data encoding device determines the transmission order of NAL units (position information priority or parameter set priority) (S4801). For example, the three-dimensional data encoding device determines the transmission order based on a specification from a user or an external device (e.g., a three-dimensional data decoding device).
[0312] If the determined transmission order is positional information priority (positional information priority in S4802), the three-dimensional data encoding device sets the order identification information included in the stream PS to positional information priority (S4803). That is, in this case, the order identification information indicates that the NAL units are to be transmitted in an order that prioritizes positional information. The three-dimensional data encoding device then transmits the NAL units in positional information priority order (S4804).
[0313] On the other hand, if the determined transmission order is parameter set priority (parameter set priority in S4802), the three-dimensional data encoding device sets the order identification information included in the stream PS to parameter set priority (S4805). That is, in this case, the order identification information indicates that the NAL units will be transmitted in parameter set priority order. Then, the three-dimensional data encoding device transmits the NAL units in parameter set priority order (S4806).
[0314] 42 is a flowchart of processing by the 3D data decoding device related to the transmission order of NAL units. First, the 3D data decoding device analyzes the order identification information included in the stream PS (S4811).
[0315] If the transmission order indicated by the order identification information is position information priority (position information priority in S4812), the three-dimensional data decoding device decodes the NAL units assuming that the transmission order of the NAL units is position information priority (S4813).
[0316] On the other hand, if the transmission order indicated by the order identification information is parameter set priority (parameter set priority in S4812), the three-dimensional data decoding device decodes the NAL units assuming that the transmission order of the NAL units is parameter set priority (S4814).
[0317] For example, if the three-dimensional data decoding device does not decode attribute information, in step S4813, it may acquire NAL units related to position information without acquiring all NAL units, and decode the position information from the acquired NAL units.
[0318] Next, the processing related to the generation of AUs and GOFs will be described. Fig. 43 is a flowchart of processing by the 3D data encoding device (the multiplexing unit 4802) related to the generation of AUs and GOFs in multiplexing NAL units.
[0319] First, the three-dimensional data encoding device determines the type of encoded data (S4821). Specifically, the three-dimensional data encoding device determines whether the encoded data to be processed is the first data of an AU, the first data of a GOF, or other data.
[0320] If the coded data is data at the start of a GOF (GOF start in S4822), the three-dimensional data coding device places a GOF header and an AU header at the start of the coded data belonging to the GOF to generate a NAL unit (S4823).
[0321] If the coded data is data at the beginning of an AU (AU beginning in S4822), the three-dimensional data coding device places an AU header at the beginning of the coded data belonging to the AU and generates a NAL unit (S4824).
[0322] If the encoded data is not at the beginning of a GOF or an AU (other than the beginning of a GOF or an AU in S4822), the three-dimensional data encoding device places the encoded data after the AU header of the AU to which the encoded data belongs and generates a NAL unit (S4825).
[0323] Next, a process for accessing AUs and GOFs will be described. Fig. 44 is a flowchart of a process performed by a three-dimensional data decoding device for accessing AUs and GOFs during demultiplexing of NAL units.
[0324] First, the three-dimensional data decoding device determines the type of coded data included in the NAL unit by analyzing the nal_unit_type included in the NAL unit (S4831). Specifically, the three-dimensional data decoding device determines whether the coded data included in the NAL unit is data at the beginning of an AU, data at the beginning of a GOF, or other data.
[0325] If the encoded data contained in the NAL unit is the data at the start of the GOF (start of GOF in S4832), the three-dimensional data decoding device determines that the NAL unit is the start position of random access, accesses the NAL unit, and starts the decoding process (S4833).
[0326] On the other hand, if the coded data contained in the NAL unit is data at the beginning of an AU (AU beginning in S4832), the three-dimensional data decoding device determines that the NAL unit is the beginning of an AU, accesses the data contained in the NAL unit, and decodes the AU (S4834).
[0327] On the other hand, if the coded data included in the NAL unit is neither the start of a GOF nor the start of an AU (other than the start of a GOF or an AU in S4832), the three-dimensional data decoding device does not process the NAL unit.
[0328] As described above, the three-dimensional data encoding device performs the processing shown in Fig. 45. The three-dimensional data encoding device encodes time-series three-dimensional data (for example, point cloud data of a dynamic object). The three-dimensional data includes position information and attribute information for each time.
[0329] First, the three-dimensional data encoding device encodes position information (S4841). Next, the three-dimensional data encoding device encodes the attribute information to be processed by referring to position information at the same time as the attribute information to be processed (S4842). Here, as shown in FIG. 37, the position information at the same time and the attribute information form an access unit (AU). In other words, the three-dimensional data encoding device encodes the attribute information to be processed by referring to position information included in the same access unit as the attribute information to be processed.
[0330] This allows the three-dimensional data encoding device to easily control references during encoding using the access unit, thereby reducing the amount of processing required for encoding.
[0331] For example, a three-dimensional data encoding device generates a bitstream including encoded position information (encoded position data), encoded attribute information (encoded attribute data), and information indicating the position information referenced by the attribute information to be processed.
[0332] For example, the bitstream includes a position parameter set (position PS) including control information for position information at each time, and an attribute parameter set (attribute PS) including control information for attribute information at each time.
[0333] For example, the bitstream includes a position sequence parameter set (position SPS) that includes control information common to position information at multiple times, and an attribute sequence parameter set (attribute SPS) that includes control information common to attribute information at multiple times.
[0334] For example, the bitstream includes a stream parameter set (stream PS) that includes control information common to position information at a plurality of times and attribute information at a plurality of times.
[0335] For example, the bitstream includes an access unit header (AU header) that contains control information that is common within an access unit.
[0336] For example, a three-dimensional data encoding device encodes a group of frames (GOF), which is made up of one or more access units, so that the GOF can be decoded independently. In other words, a GOF is a random access unit.
[0337] For example, the bitstream includes a GOF header that contains control information that is common within a GOF.
[0338] For example, the three-dimensional data encoding device includes a processor and a memory, and the processor performs the above-mentioned processing using the memory.
[0339] As described above, the three-dimensional data decoding device performs the processing shown in Fig. 46. The three-dimensional data decoding device decodes time-series three-dimensional data (for example, point cloud data of a dynamic object). The three-dimensional data includes position information and attribute information for each time. Position information and attribute information for the same time constitute an access unit (AU).
[0340] First, the three-dimensional data decoding device decodes the position information from the bit stream (S4851). That is, the three-dimensional data decoding device generates the position information by decoding the coded position information (coded position data) included in the bit stream.
[0341] Next, the three-dimensional data decoding device decodes the attribute information to be processed from the bit stream by referring to position information at the same time as the attribute information to be processed (S4852). That is, the three-dimensional data decoding device generates attribute information by decoding the coded attribute information (coded attribute data) included in the bit stream. At this time, the three-dimensional data decoding device refers to the decoded position information included in the same access unit as the attribute information.
[0342] This allows the three-dimensional data decoding device to easily control references during decoding using the access unit, thereby reducing the amount of processing required for the decoding process.
[0343] For example, the three-dimensional data decoding device acquires information indicating the location information of the reference destination of the attribute information to be processed from the bit stream, and decodes the attribute information to be processed by referring to the location information of the reference destination indicated in the acquired information.
[0344] For example, the bitstream includes a position parameter set (position PS) including control information for position information at each time, and an attribute parameter set (attribute PS) including control information for attribute information at each time. That is, the three-dimensional data decoding device decodes the position information at the processing target time using the control information included in the position parameter set for the processing target time, and decodes the attribute information at the processing target time using the control information included in the attribute parameter set for the processing target time.
[0345] For example, the bitstream includes a position sequence parameter set (position SPS) including control information common to position information at multiple times, and an attribute sequence parameter set (attribute SPS) including control information common to attribute information at multiple times. That is, the three-dimensional data decoding device decodes the position information at multiple times using the control information included in the position sequence parameter set, and decodes the attribute information at multiple times using the control information included in the attribute sequence parameter set.
[0346] For example, the bitstream includes a stream parameter set (stream PS) including control information common to position information at multiple times and attribute information at multiple times. That is, the three-dimensional data decoding device decodes the position information at multiple times and attribute information at multiple times using the control information included in the stream parameter set.
[0347] For example, the bitstream includes an access unit header (AU header) that includes common control information within the access unit. That is, the 3D data decoding device decodes the position information and attribute information included in the access unit using the control information included in the access unit header.
[0348] For example, a three-dimensional data decoding device independently decodes a group of frames (GOF), which is made up of one or more access units. In other words, a GOF is a random access unit.
[0349] For example, the bitstream includes a GOF header that includes control information common within a GOF. That is, the three-dimensional data decoding device decodes the position information and attribute information included in the GOF using the control information included in the GOF header.
[0350] For example, the three-dimensional data decoding device includes a processor and a memory, and the processor performs the above processing using the memory.
[0351] (Embodiment 5) Next, it will be described how the dividing unit 4911 has a configuration. Fig. 47 is a block diagram of the dividing unit 4911. The dividing unit 4911 includes a slice dividing unit 4931 (Slice Divider), a position information tile dividing unit 4932 (Geometry Tile Divider), and an attribute information tile dividing unit 4933 (Attribute Tile Divider).
[0352] The slice division unit 4931 generates a plurality of slice position information by dividing position information (Position (Geometry)) into slices. The slice division unit 4931 also generates a plurality of slice attribute information by dividing attribute information (Attribute) into slices. The slice division unit 4931 also outputs slice additional information (SliceMetaData) including information related to the slice division and information generated in the slice division.
[0353] The position information tile dividing unit 4932 divides a plurality of slice position information pieces into tiles to generate a plurality of pieces of divided position information pieces (a plurality of pieces of tile position information pieces). The position information tile dividing unit 4932 also outputs position tile additional information (Geometry Tile MetaData) including information related to the tile division of the position information pieces and information generated in the tile division of the position information pieces.
[0354] The attribute information tile dividing unit 4933 divides a plurality of slice attribute information pieces into tiles to generate a plurality of pieces of divided attribute information (a plurality of pieces of tile attribute information). The attribute information tile dividing unit 4933 also outputs attribute tile additional information (Attribute Tile MetaData) including information related to the tile division of the attribute information and information generated during the tile division of the attribute information.
[0355] The number of slices or tiles to be divided is equal to or greater than 1. In other words, division into slices or tiles does not have to be performed.
[0356] Although an example in which tile division is performed after slice division has been shown here, slice division may be performed after tile division. Furthermore, new division types may be defined in addition to slices and tiles, and division may be performed using three or more division types.
[0357] A method for dividing point cloud data will be described below. Fig. 48 is a diagram showing an example of division into slices and tiles.
[0358] First, the method of dividing into slices will be described. The dividing unit 4911 divides the three-dimensional point cloud data into arbitrary point clouds in slice units. In dividing into slices, the dividing unit 4911 does not divide the position information and attribute information that constitute a point, but divides the position information and attribute information together. In other words, the dividing unit 4911 divides into slices so that the position information and attribute information of an arbitrary point belong to the same slice. Note that, as long as this is followed, any number of divisions and any division method may be used. Furthermore, the minimum unit of division is a point. For example, the number of divisions for the position information and the attribute information is the same. For example, the three-dimensional point corresponding to the position information after dividing into slices and the three-dimensional point corresponding to the attribute information are included in the same slice.
[0359] Furthermore, the division unit 4911 generates slice additional information, which is additional information related to the number of divisions and the division method when dividing the slices. The slice additional information is the same for position information and attribute information. For example, the slice additional information includes information indicating the reference coordinate position, size, or side length of the bounding box after division. The slice additional information also includes information indicating the number of divisions, the division type, etc.
[0360] Next, a tile division method will be described. The division unit 4911 divides the data divided into slices into slice position information (G slices) and slice attribute information (A slices), and divides each of the slice position information and slice attribute information into tiles.
[0361] Although FIG. 48 shows an example of division using an octree structure, any number of divisions and any division method may be used.
[0362] Furthermore, the dividing unit 4911 may divide the position information and the attribute information using different division methods or the same division method. Furthermore, the dividing unit 4911 may divide a plurality of slices into tiles using different division methods or the same division method.
[0363] Furthermore, the dividing unit 4911 generates tile additional information related to the number of divisions and the division method when dividing tiles. The tile additional information (position tile additional information and attribute tile additional information) is independent of position information and attribute information. For example, the tile additional information includes information indicating the reference coordinate position, size, or side length of the bounding box after division. The tile additional information also includes information indicating the number of divisions, division type, etc.
[0364] Next, an example of a method for dividing point cloud data into slices or tiles will be described. The dividing unit 4911 may use a predetermined method as the method for dividing the point cloud data into slices or tiles, or may adaptively switch the method to be used depending on the point cloud data.
[0365] When dividing into slices, the dividing unit 4911 divides the three-dimensional space collectively based on the position information and attribute information. For example, the dividing unit 4911 determines the shape of an object and divides the three-dimensional space into slices according to the shape of the object. For example, the dividing unit 4911 extracts objects such as trees or buildings and divides the space into object units. For example, the dividing unit 4911 divides the space into slices so that one or more objects are entirely included in one slice. Alternatively, the dividing unit 4911 divides one object into multiple slices.
[0366] In this case, the encoding device may change the encoding method for each slice. For example, the encoding device may use a high-quality compression method for a specific object or a specific part of an object. In this case, the encoding device may store information indicating the encoding method for each slice in additional information (metadata).
[0367] Furthermore, the dividing unit 4911 may divide the image into slices based on map information or location information so that each slice corresponds to a predetermined coordinate space.
[0368] When dividing into tiles, the dividing unit 4911 divides the position information and the attribute information independently. For example, the dividing unit 4911 divides a slice into tiles according to the amount of data or the amount of processing. For example, the dividing unit 4911 determines whether the amount of data of a slice (for example, the number of three-dimensional points included in the slice) is greater than a predetermined threshold. If the amount of data of a slice is greater than the threshold, the dividing unit 4911 divides the slice into tiles. If the amount of data of a slice is less than the threshold, the dividing unit 4911 does not divide the slice into tiles.
[0369] For example, the dividing unit 4911 divides a slice into tiles so that the processing amount or processing time in the decoding device is within a certain range (a predetermined value or less). This makes the processing amount per tile in the decoding device constant, facilitating distributed processing in the decoding device.
[0370] Furthermore, when the processing amount differs between the position information and the attribute information, for example, when the processing amount of the position information is greater than the processing amount of the attribute information, the dividing unit 4911 divides the position information into a greater number of divisions than the attribute information.
[0371] Also, for example, depending on the content, if the decoding device may decode and display the position information quickly and decode and display the attribute information later slowly, the division unit 4911 may divide the position information into a larger number of parts than the attribute information. This allows the decoding device to process a larger number of pieces of position information in parallel, thereby making it possible to process the position information faster than the attribute information.
[0372] Note that the decoding device does not necessarily need to process sliced or tiled data in parallel, and may determine whether to process them in parallel depending on the number or capabilities of the decoding processing units.
[0373] By dividing the data in the above manner, adaptive encoding according to the content or object can be realized. Also, parallel processing can be realized in the decoding process. This improves the flexibility of the point cloud encoding system or the point cloud decoding system.
[0374] Fig. 49 is a diagram showing examples of slice and tile division patterns. DU in the diagram is a data unit (DataUnit) and represents tile or slice data. Each DU includes a slice index (SliceIndex) and a tile index (TileIndex). The number in the upper right corner of the DU in the diagram indicates the slice index, and the number in the lower left corner of the DU indicates the tile index.
[0375] In pattern 1, the number of divisions and the division method are the same for G slices and A slices in slice division. In tile division, the number of divisions and the division method for G slices are different from the number of divisions and the division method for A slices. Furthermore, the same number of divisions and the division method are used among multiple G slices. The same number of divisions and the division method are used among multiple A slices.
[0376] In pattern 2, the number of divisions and the division method are the same for G slices and A slices in slice division. The number of divisions and the division method for G slices are different from the number of divisions and the division method for A slices in tile division. Furthermore, the number of divisions and the division method differ between multiple G slices. The number of divisions and the division method differ between multiple A slices.
[0377] (Embodiment 6) An example of dividing data into tiles and then into slices will be described below. In autonomous applications such as self-driving vehicles, point cloud data of the area around the vehicle or the area in the direction of travel of the vehicle is required, rather than point cloud data of the entire area. Here, tiles and slices can be used to selectively decode the original point cloud data. By dividing the 3D point cloud data into tiles and then further dividing the slices, it is possible to improve coding efficiency or achieve parallel processing. When dividing the data, additional information (metadata) is generated, and the generated additional information is sent to a multiplexing unit.
[0378] 50 is a block diagram showing the configuration of a first encoding unit 5010 included in the three-dimensional data encoding device according to this embodiment. The first encoding unit 5010 generates encoded data (encoded stream) by encoding point cloud data using a first encoding method (GPCC (Geometry based PCC)). The first encoding unit 5010 includes a division unit 5011, multiple position information encoding units 5012, multiple attribute information encoding units 5013, an additional information encoding unit 5014, and a multiplexing unit 5015.
[0379] The dividing unit 5011 divides the point cloud data to generate a plurality of divided data. Specifically, the dividing unit 5011 divides the space of the point cloud data into a plurality of subspaces to generate a plurality of divided data. Here, a subspace is one of a tile and a slice, or a combination of a tile and a slice. More specifically, the point cloud data includes position information, attribute information, and additional information. The dividing unit 5011 divides the position information into a plurality of divided position information pieces, and divides the attribute information into a plurality of divided attribute information pieces. The dividing unit 5011 also generates additional information related to the division.
[0380] For example, the dividing unit 5011 first divides the point cloud into tiles, and then further divides the obtained tiles into slices.
[0381] The position information encoding units 5012 encode the plurality of pieces of divided position information to generate a plurality of pieces of encoded position information. For example, the position information encoding units 5012 process the plurality of pieces of divided position information in parallel.
[0382] The attribute information encoding units 5013 encode the divided attribute information to generate the coded attribute information, for example, the attribute information encoding units 5013 process the divided attribute information in parallel.
[0383] The additional information encoding unit 5014 generates encoded additional information by encoding the additional information included in the point cloud data and the additional information related to the data division generated by the division unit 5011 at the time of division.
[0384] The multiplexing unit 5015 multiplexes a plurality of pieces of encoding position information, a plurality of pieces of encoding attribute information, and encoding additional information to generate encoded data (encoded stream), and transmits the generated encoded data. The encoded additional information is also used during decoding.
[0385] 50 shows an example in which there are two position information encoders 5012 and two attribute information encoders 5013, but the number of position information encoders 5012 and two attribute information encoders 5013 may each be one, or three or more. Furthermore, multiple pieces of divided data may be processed in parallel within the same chip, such as multiple cores within a CPU, or may be processed in parallel by cores on multiple chips, or may be processed in parallel by multiple cores on multiple chips.
[0386] Next, the decoding process will be described. Fig. 51 is a block diagram showing the configuration of the first decoding unit 5020. The first decoding unit 5020 restores the point cloud data by decoding coded data (coded stream) generated by coding the point cloud data using a first coding method (GPCC). The first decoding unit 5020 includes a demultiplexing unit 5021, a plurality of position information decoding units 5022, a plurality of attribute information decoding units 5023, an additional information decoding unit 5024, and a combining unit 5025.
[0387] The demultiplexing unit 5021 demultiplexes the coded data (coded stream) to generate a plurality of pieces of coding position information, a plurality of pieces of coding attribute information, and coded additional information.
[0388] The position information decoding units 5022 generate a plurality of pieces of divided position information by decoding the plurality of pieces of encoded position information. For example, the position information decoding units 5022 process the plurality of pieces of encoded position information in parallel.
[0389] The attribute information decoding units 5023 generate a plurality of pieces of divided attribute information by decoding the plurality of pieces of encoded attribute information. For example, the attribute information decoding units 5023 process the plurality of pieces of encoded attribute information in parallel.
[0390] The plurality of additional information decoders 5024 generate additional information by decoding the encoded additional information.
[0391] The combining unit 5025 generates position information by combining multiple pieces of split position information using the additional information. The combining unit 5025 generates attribute information by combining multiple pieces of split attribute information using the additional information. For example, the combining unit 5025 first generates point cloud data corresponding to a tile by combining decoded point cloud data for a slice using the slice additional information. Next, the combining unit 5025 restores the original point cloud data by combining the point cloud data corresponding to the tile using the tile additional information.
[0392] 50 shows an example in which there are two position information decoding units 5022 and two attribute information decoding units 5023, but the number of position information decoding units 5022 and two attribute information decoding units 5023 may be one, or three or more. Furthermore, multiple pieces of divided data may be processed in parallel within the same chip, such as multiple cores within a CPU, or may be processed in parallel by cores on multiple chips, or may be processed in parallel by multiple cores on multiple chips.
[0393] Next, a method for dividing point cloud data will be described. In autonomous applications such as automatic driving of vehicles, point cloud data of the area around the vehicle or the area in the direction of travel of the vehicle is required, rather than point cloud data of the entire area.
[0394] Fig. 52 is a diagram showing examples of tile shapes. As shown in Fig. 52, various shapes such as a circle, a rectangle, or an ellipse may be used as the tile shape.
[0395] Figure 53 is a diagram showing examples of tiles and slices. The configuration of slices may differ between tiles. For example, the configuration of tiles or slices may be optimized based on the amount of data. Alternatively, the configuration of tiles or slices may be optimized based on the decoding speed.
[0396] Alternatively, tile division may be performed based on position information, in which case attribute information is divided in the same manner as the corresponding position information.
[0397] Furthermore, after dividing the image into tiles, the image may be divided into slices using a method different from that used for the position information and attribute information. For example, the method for dividing the image into slices for each tile may be selected in response to a request from an application. A different method for dividing the image into slices or tiles may be used based on the request from the application.
[0398] For example, the dividing unit 5011 divides the three-dimensional point cloud data into one or more tiles based on position information such as map information in a two-dimensional shape viewed from above. Then, the dividing unit 5011 divides each tile into one or more slices.
[0399] The dividing unit 5011 may divide the position information (Geometry) and the attribute information (Attribute) into slices in the same manner.
[0400] Note that there may be one type of position information and one type of attribute information, or two or more types. In addition, in the case of point cloud data that does not have attribute information, the attribute information may not be present.
[0401] 54 is a block diagram of the dividing unit 5011. The dividing unit 5011 includes a tile dividing unit 5031 (Tile Divider), a position information slice dividing unit 5032 (Geometry Slice Divider), and an attribute information slice dividing unit 5033 (Attribute Slice Divider).
[0402] The tile division unit 5031 generates multiple pieces of tile position information by dividing position information (Position (Geometry)) into tiles. The tile division unit 5031 also generates multiple pieces of tile attribute information by dividing attribute information (Attribute) into tiles. The tile division unit 5031 also outputs tile additional information (TileMetaData) that includes information related to the tile division and information generated during the tile division.
[0403] The position information slice division unit 5032 divides the plurality of pieces of tile position information into slices to generate a plurality of pieces of divided position information (a plurality of pieces of slice position information). In addition, the position information slice division unit 5032 outputs position slice additional information (Geometry Slice MetaData) including information related to the division of the position information into slices and information generated in the division of the position information into slices.
[0404] The attribute information slice division unit 5033 divides a plurality of pieces of tile attribute information into slices to generate a plurality of pieces of divided attribute information (a plurality of pieces of slice attribute information). The attribute information slice division unit 5033 also outputs attribute slice additional information (Attribute Slice MetaData) including information related to the division of the attribute information into slices and information generated in the division of the attribute information into slices.
[0405] Next, examples of tile shapes will be described. The entire three-dimensional map (3D map) is divided into multiple tiles. Data for the multiple tiles is selectively transmitted to the three-dimensional data decoding device. Alternatively, data from the multiple tiles is transmitted to the three-dimensional data decoding device in descending order of importance. The shape of the tile may be selected from multiple shapes depending on the situation.
[0406] Fig. 55 is a diagram showing an example of a map in which point cloud data obtained by LiDAR is viewed from above. The example shown in Fig. 55 is point cloud data of a highway, and includes a flyover.
[0407] Figure 56 is a diagram showing an example in which the point cloud data shown in Figure 55 is divided into square tiles. Such division into square tiles can be easily performed by the map server. Furthermore, the tile height is set low for normal roads. At intersections, the tile height is set higher than for normal roads so that the tile encompasses the intersection.
[0408] Figure 57 is a diagram showing an example in which the point cloud data shown in Figure 55 is divided into circular tiles. In this case, adjacent tiles may overlap in a planar view. When a vehicle requires point cloud data of the surrounding area, the three-dimensional data encoding device transmits point cloud data of a cylindrical area (a circle in a top view) around the vehicle to the vehicle.
[0409] Also, as in the example of Figure 56, the tile height is set low for normal roads. At intersections, the tile height is set higher than for normal roads so that the tile encompasses the intersection.
[0410] The three-dimensional data encoding device may change the height of the tiles according to, for example, the shape or height of a road or a building. The three-dimensional data encoding device may also change the height of the tiles according to position information or area information. The three-dimensional data encoding device may also change the height of the tiles for each tile. Alternatively, the three-dimensional data encoding device may change the height of the tiles for each section that includes multiple tiles. In other words, the three-dimensional data encoding device may make the heights of multiple tiles within a section the same. Furthermore, tiles of different heights may overlap in a top view.
[0411] 58 is a diagram showing an example of tile division when tiles of various shapes, sizes, or heights are used. The tiles may have any shape, any size, or a combination thereof.
[0412] For example, in addition to the above-described examples of dividing into square tiles without overlapping and overlapping circular tiles, the three-dimensional data encoding device may also divide into overlapping square tiles. Furthermore, the shape of the tiles does not have to be square or circular, and a polygon with three or more vertices or a shape with no vertices may be used.
[0413] The tile shapes may be of two or more types, or tiles of different shapes may overlap. The tile shapes may be of one or more types, and shapes of different sizes may be combined within the same shape to be divided, or they may overlap.
[0414] For example, larger tiles are used in areas where there are no objects such as roads, etc., than in areas where there are objects. The three-dimensional data encoding device may also adaptively change the shape or size of the tiles depending on the object.
[0415] Also, for example, since the three-dimensional data encoding device is likely to need to read tiles far ahead of the automobile, which is the direction of travel of the automobile (vehicle), it may set the tiles in the direction of travel to a larger size, and since it is unlikely that the automobile will travel to the side of the automobile, it may set the tiles to a smaller size than the tiles in the direction of travel.
[0416] FIG. 59 is a diagram showing an example of tile data stored on a server. For example, point cloud data is divided into tiles and encoded in advance, and the resulting encoded data is stored on the server. A user obtains desired tile data from the server when needed. Alternatively, the server (three-dimensional data encoding device) may divide the data into tiles and encode the data so as to include the data desired by the user in accordance with the user's instructions.
[0417] For example, if the moving object (vehicle) is moving at a high speed, point cloud data covering a wider range may be required. Therefore, the server may determine the shape and size of tiles and perform tile division based on a pre-estimated vehicle speed (e.g., the road's legal speed limit, the vehicle speed that can be estimated from the road's width and shape, or a statistical speed, etc.). Alternatively, as shown in FIG. 59, the server may encode tiles of multiple shapes or sizes in advance and store the resulting data. The moving object may obtain tile data of an appropriate shape and size depending on the moving direction and speed of the moving object.
[0418] Fig. 60 is a diagram showing an example of a system related to tile division. As shown in Fig. 60, the shape and area of the tile may be determined based on the position of an antenna (base station), which is a communication means for transmitting point cloud data, or the communication area supported by the antenna. Alternatively, when point cloud data is generated by a sensor such as a camera, the shape and area of the tile may be determined based on the position of the sensor or the target range (detection range) of the sensor.
[0419] One tile may be assigned to one antenna or sensor, or one tile may be assigned to multiple antennas or sensors. Multiple tiles may be assigned to one antenna or sensor. The antennas or sensors may be fixed or movable.
[0420] For example, the coded data divided into tiles may be managed by a server connected to an antenna or a sensor for the area assigned to the tile. The server may manage the coded data for its own area and tile information for adjacent areas. A centralized management server (cloud) that manages multiple servers corresponding to each tile may manage multiple coded data for multiple tiles. Alternatively, there may be no server corresponding to each tile, and the antenna or the sensor may be directly connected to the centralized management server.
[0421] The coverage area of an antenna or sensor may vary depending on the power of radio waves, differences in equipment, and installation conditions, and the shape and size of the tiles may also vary accordingly. Based on the coverage area of an antenna or sensor, slices or PCC frames may be allocated instead of tiles.
[0422] Next, we explain how to divide tiles into slices. By assigning similar objects to the same slice, we can improve coding efficiency.
[0423] For example, the three-dimensional data encoding device may recognize objects (roads, buildings, trees, etc.) using the features of the point cloud data, and divide the point cloud into slices by clustering the point cloud for each object.
[0424] Alternatively, the three-dimensional data encoding device may divide the image into slices by grouping objects having the same attribute and allocating slices to each group. Here, the attribute refers to, for example, information about movement, and grouping is performed by classifying objects into dynamic information such as pedestrians and cars, semi-dynamic information such as accidents and congestion, semi-static information such as traffic regulations and road construction, and static information such as road surfaces and structures.
[0425] Note that data may overlap in multiple slices. For example, when dividing slices into multiple object groups, any object may belong to one object group, or to two or more object groups.
[0426] Fig. 61 is a diagram showing an example of this slice division. For example, in the example shown in Fig. 61, the tiles are rectangular parallelepipeds. Note that the tiles may be cylindrical or may have other shapes.
[0427] The points contained in a tile are grouped into object groups, such as roads, buildings, trees, etc. Then, the image is sliced so that each object group is contained in one slice, and each slice is coded separately.
[0428] Next, a method for encoding divided data will be described. A three-dimensional data encoding device (first encoding unit 5010) encodes each of the divided data. When encoding attribute information, the three-dimensional data encoding device generates dependency information as additional information, which indicates which configuration information (position information, additional information, or other attribute information) was used for encoding. That is, the dependency information indicates, for example, the configuration information of the reference destination (dependency destination). In this case, the three-dimensional data encoding device generates dependency information based on configuration information corresponding to the division shape of the attribute information. Note that the three-dimensional data encoding device may generate dependency information based on configuration information corresponding to a plurality of division shapes.
[0429] The dependency information may be generated by the three-dimensional data encoding device, and the generated dependency information may be sent to the three-dimensional data decoding device. Alternatively, the three-dimensional data decoding device may generate the dependency information, and the three-dimensional data encoding device may not send the dependency information. Furthermore, the dependency relationships used by the three-dimensional data encoding device may be determined in advance, and the three-dimensional data encoding device may not send the dependency information.
[0430] Figure 62 is a diagram showing an example of the dependency relationships of each data. The tip of the arrow in the diagram indicates the dependency destination, and the start of the arrow indicates the dependency source. The three-dimensional data decoding device decodes data in the order from the dependency destination to the dependency source. Furthermore, data shown by solid lines in the diagram is data that is actually sent, and data shown by dotted lines is data that is not sent.
[0431] Also in the figure, G indicates position information and A indicates attribute information. Gt1 indicates position information of tile number 1, and Gt2 indicates position information of tile number 2. Gt1s1 indicates position information of tile number 1 and slice number 1, Gt1s2 indicates position information of tile number 1 and slice number 2, Gt2s1 indicates position information of tile number 2 and slice number 1, and Gt2s2 indicates position information of tile number 2 and slice number 2. Similarly, At1 indicates attribute information of tile number 1, and At2 indicates attribute information of tile number 2. At1s1 indicates attribute information of tile number 1 and slice number 1, At1s2 indicates attribute information of tile number 1 and slice number 2, At2s1 indicates attribute information of tile number 2 and slice number 1, and At2s2 indicates attribute information of tile number 2 and slice number 2.
[0432] Mtile indicates tile additional information, MGslice indicates position slice additional information, and MAslice indicates attribute slice additional information. Dt1s1 indicates dependency relationship information of attribute information At1s1, and Dt2s1 indicates dependency relationship information of attribute information At2s1.
[0433] It should be noted that different tile or slice division structures may be used depending on the application, etc.
[0434] Furthermore, the three-dimensional data encoding device may rearrange the data in decoding order so that rearrangement of the data is not required in the three-dimensional data decoding device. Note that the data may be rearranged in the three-dimensional data decoding device, or the data may be rearranged in both the three-dimensional data encoding device and the three-dimensional data decoding device.
[0435] FIG. 63 is a diagram showing an example of the data decoding order. In the example of FIG. 63, decoding is performed in order from the left data. When data has a dependency relationship, the three-dimensional data decoding device decodes the dependent data first. For example, the three-dimensional data encoding device rearranges the data in advance to achieve this order before sending it. Note that any order is acceptable as long as the dependent data comes first. The three-dimensional data encoding device may also send the additional information and dependency information before the data.
[0436] Furthermore, the 3D data decoding device may selectively decode tiles based on a request from an application and information obtained from the NAL unit header. Figure 64 shows an example of coded data for tiles. For example, the tiles may be decoded in any order. In other words, there may be no dependency between tiles.
[0437] Next, a description will be given of the configuration of the combining unit 5025 included in the first decoding unit 5020. Fig. 65 is a block diagram showing the configuration of the combining unit 5025. The combining unit 5025 includes a position information slice combining unit 5041 (geometry slice combiner), an attribute information slice combining unit 5042 (attribute slice combiner), and a tile combining unit (tile combiner).
[0438] The position information slice combining unit 5041 generates a plurality of tile position information pieces by combining a plurality of pieces of divided position information pieces using the position slice additional information. The attribute information slice combining unit 5042 generates a plurality of pieces of tile attribute information pieces by combining a plurality of pieces of divided attribute information pieces using the attribute slice additional information.
[0439] The tile combining unit 5043 generates position information by combining multiple pieces of tile position information using the tile additional information. Also, the tile combining unit 5043 generates attribute information by combining multiple pieces of tile attribute information using the tile additional information.
[0440] The number of slices or tiles to be divided is equal to or greater than 1. In other words, division into slices or tiles does not necessarily have to be performed.
[0441] Next, the structure of coded data divided into slices or tiles and a method of storing the coded data in NAL units (multiplexing method) will be described. Figure 66 shows the structure of coded data and a method of storing the coded data in NAL units.
[0442] The coded data (segmentation position information and segmentation attribute information) is stored in the payload of the NAL unit.
[0443] The encoded data includes a header and a payload. The header includes identification information for identifying the data included in the payload. This identification information includes, for example, the type of slice division or tile division (slice_type, tile_type), index information for identifying a slice or tile (slice_idx, tile_idx), position information of the data (slice or tile), or the address of the data. The index information for identifying a slice is also referred to as a slice index (SliceIndex). The index information for identifying a tile is also referred to as a tile index (TileIndex). The type of division may be, for example, a method based on the object shape as described above, a method based on map information or position information, or a method based on the amount of data or processing amount.
[0444] Furthermore, the header of the encoded data includes identification information indicating a dependency relationship. That is, when there is a dependency relationship between data, the header includes identification information for referencing the dependency from the dependency source. For example, the header of the dependency data includes identification information for identifying the data. The header of the dependency source data includes identification information indicating the dependency. Note that, when the identification information for identifying data, the additional information related to slice division or tile division, and the identification information indicating the dependency relationship can be identified or derived from other information, these pieces of information may be omitted.
[0445] Next, the flow of the encoding process and decoding process of point cloud data according to this embodiment will be described. Fig. 67 is a flowchart of the encoding process of point cloud data according to this embodiment.
[0446] First, the three-dimensional data encoding device determines the division method to be used (S5011). This division method includes whether or not to perform tile division and whether or not to perform slice division. The division method may also include the number of divisions when performing tile division or slice division, and the type of division. The type of division may be a method based on the object shape as described above, a method based on map information or position information, or a method based on the amount of data or the amount of processing. The division method may be determined in advance.
[0447] If tile division is performed (Yes in S5012), the three-dimensional data encoding device generates multiple pieces of tile position information and multiple pieces of tile attribute information by dividing the position information and attribute information together (S5013). The three-dimensional data encoding device also generates tile additional information related to the tile division. Note that the three-dimensional data encoding device may divide the position information and the attribute information independently.
[0448] If slice division is performed (Yes in S5014), the three-dimensional data encoding device generates a plurality of pieces of division position information and a plurality of pieces of division attribute information by independently dividing a plurality of pieces of tile position information and a plurality of pieces of tile attribute information (or position information and attribute information) (S5015). The three-dimensional data encoding device also generates position slice additional information and attribute slice additional information related to the slice division. Note that the three-dimensional data encoding device may divide the tile position information and the tile attribute information together.
[0449] Next, the three-dimensional data encoding device generates a plurality of pieces of encoding position information and a plurality of pieces of encoding attribute information by encoding each of the plurality of pieces of division position information and the plurality of pieces of division attribute information (S5016). The three-dimensional data encoding device also generates dependency relationship information.
[0450] Next, the three-dimensional data encoding device generates encoded data (encoded stream) by combining (multiplexing) the plurality of pieces of encoding position information, the plurality of pieces of encoding attribute information, and the additional information into NAL units (S5017).The three-dimensional data encoding device also transmits the generated encoded data.
[0451] 68 is a flowchart of a decoding process of point cloud data according to this embodiment. First, the three-dimensional data decoding device determines the division method by analyzing additional information (tile additional information, position slice additional information, and attribute slice additional information) related to the division method included in the coded data (coded stream) (S5021). This division method includes whether or not to perform tile division and whether or not to perform slice division. Furthermore, the division method may include the number of divisions when performing tile division or slice division, the type of division, etc.
[0452] Next, the three-dimensional data decoding device generates split position information and split attribute information by decoding the multiple pieces of coded position information and multiple pieces of coded attribute information contained in the coded data using dependency information contained in the coded data (S5022).
[0453] If the additional information indicates that slice division has been performed (Yes in S5023), the three-dimensional data decoding device generates a plurality of pieces of tile position information and a plurality of pieces of tile attribute information by combining the plurality of pieces of division position information and the plurality of pieces of division attribute information using respective methods based on the position slice additional information and the attribute slice additional information (S5024). Note that the three-dimensional data decoding device may combine the plurality of pieces of division position information and the plurality of pieces of division attribute information using the same method.
[0454] If the additional information indicates that tile division has been performed (Yes in S5025), the three-dimensional data decoding device generates position information and attribute information by combining multiple pieces of tile position information and multiple pieces of tile attribute information (multiple pieces of division position information and multiple pieces of division attribute information) using the same method based on the tile additional information (S5026). Note that the three-dimensional data decoding device may combine multiple pieces of tile position information and multiple pieces of tile attribute information using different methods.
[0455] Next, the tile additional information will be described. The three-dimensional data encoding device generates tile additional information, which is metadata relating to the tile division method, and transmits the generated tile additional information to the three-dimensional data decoding device.
[0456] Fig. 69 is a diagram showing an example of the syntax of tile additional information (TileMetaData). As shown in Fig. 69, for example, the tile additional information includes division method information (type_of_divide), shape information (topview_shape), an overlap flag (tile_overlap_flag), overlap information (type_of_overlap), height information (tile_height), the number of tiles (tile_number), and tile position information (global_position, relative_position).
[0457] The division method information (type_of_divide) indicates the division method of the tiles. For example, the division method information indicates whether the division method of the tiles is based on map information, i.e., division based on a top view (top_view), or other (other).
[0458] Shape information (topview_shape) is included in the tile additional information, for example, when the tile division method is division based on a top view. The shape information indicates the shape of the tile when viewed from above. For example, this shape includes a square and a circle. Note that this shape may include an ellipse, a polygon other than a rectangle or a quadrangle, or may include other shapes. Note that the shape information is not limited to the shape of the tile when viewed from above, and may also indicate the three-dimensional shape of the tile (for example, a cube, a cylinder, etc.).
[0459] The overlap flag (tile_overlap_flag) indicates whether tiles overlap. For example, the overlap flag is included in the tile additional information when the tile division method is division based on a top view. In this case, the overlap flag indicates whether tiles overlap in a top view. Note that the overlap flag may also indicate whether tiles overlap in a three-dimensional space.
[0460] Overlap information (type_of_overlap) is included in the tile additional information when tiles overlap, for example. The overlap information indicates how the tiles overlap, etc. For example, the overlap information indicates the size of the overlapping area, etc.
[0461] The height information (tile_height) indicates the height of the tile. The height information may also include information indicating the shape of the tile. For example, if the shape of the tile in top view is rectangular, the information may indicate the lengths of the sides of the rectangle (vertical length and horizontal length). Furthermore, if the shape of the tile in top view is circular, the information may indicate the diameter or radius of the circle.
[0462] The height information may indicate the height of each tile, or may indicate a height common to multiple tiles. Alternatively, multiple height types, such as roads and intersections, may be set in advance, and the height information may indicate the height of each height type and the height type of each tile. Alternatively, the height of each height type may be predefined, and the height information may indicate the height type of each tile. In other words, the height of each height type does not have to be indicated by the height information.
[0463] The tile number (tile_number) indicates the number of tiles. The tile additional information may include information indicating the spacing between tiles.
[0464] The tile position information (global_position, relative_position) is information for specifying the position of each tile. For example, the tile position information indicates the absolute coordinates or relative coordinates of each tile.
[0465] Note that some or all of the above information may be provided for each tile, or for each set of tiles (for example, for each frame or for each set of frames).
[0466] The three-dimensional data encoding device may transmit the tile additional information by including it in SEI (Supplemental Enhancement Information), or may transmit the tile additional information by storing it in an existing parameter set (such as PPS, GPS, or APS).
[0467] For example, if the tile additional information changes for each frame, it may be stored in a parameter set for each frame (such as GPS or APS). If the tile additional information does not change within a sequence, it may be stored in a parameter set for each sequence (position SPS or attribute SPS). Furthermore, if the same tile division information is used for position information and attribute information, the tile additional information may be stored in a parameter set for the PCC stream (stream PS).
[0468] Furthermore, the tile additional information may be stored in any one of the above parameter sets, or in multiple parameter sets. Furthermore, the tile additional information may be stored in a header of the encoded data. Furthermore, the tile additional information may be stored in a header of an NAL unit.
[0469] Furthermore, all or part of the tile additional information may be stored in either the header of the split position information or the header of the split attribute information, but not in the other. For example, if the same tile additional information is used for the position information and the attribute information, the tile additional information may be included in the header of either the position information or the attribute information. For example, if the attribute information depends on the position information, the position information is processed first. Therefore, the tile additional information may be included in the header of the position information, but not in the header of the attribute information. In this case, the 3D data decoding device determines, for example, that the dependent attribute information belongs to the same tile as the tile of the dependent position information.
[0470] The three-dimensional data decoding device reconstructs the point cloud data divided into tiles based on the tile additional information. If there is overlapping point cloud data, the three-dimensional data decoding device identifies the overlapping multiple point cloud data and selects one of them or merges the multiple point cloud data.
[0471] The three-dimensional data decoding device may also perform decoding using tile additional information. For example, if multiple tiles overlap, the three-dimensional data decoding device may perform decoding for each tile, and then perform processing (e.g., smoothing or filtering) using the multiple decoded data to generate point cloud data. This may enable highly accurate decoding.
[0472] 70 is a diagram showing an example of the configuration of a system including a three-dimensional data encoding device and a three-dimensional data decoding device. A tile dividing unit 5051 divides point cloud data including position information and attribute information into first tiles and second tiles. The tile dividing unit 5051 also sends tile additional information related to the tile division to a decoding unit 5053 and a tile combining unit 5054.
[0473] The encoding unit 5052 generates encoded data by encoding the first tile and the second tile.
[0474] The decoding unit 5053 restores the first tile and the second tile by decoding the coded data generated by the coding unit 5052. The tile combining unit 5054 restores the point cloud data (position information and attribute information) by combining the first tile and the second tile using the tile additional information.
[0475] Next, slice additional information will be described. The three-dimensional data encoding device generates slice additional information, which is metadata related to the slice division method, and transmits the generated slice additional information to the three-dimensional data decoding device.
[0476] Fig. 71 is a diagram illustrating an example of the syntax of slice additional information (SliceMetaData). As illustrated in Fig. 71, the slice additional information includes, for example, division method information (type_of_divide), an overlap flag (slice_overlap_flag), overlap information (type_of_overlap), the number of slices (slice_number), slice position information (global_position, relative_position), and slice size information (slice_bounding_box_size).
[0477] The division method information (type_of_divide) indicates the division method of a slice. For example, the division method information indicates whether the division method of a slice is based on object information (object) as shown in FIG. 61. The slice additional information may include information indicating the object division method. For example, this information indicates whether one object is divided into multiple slices or allocated to one slice. This information may also indicate the number of divisions when one object is divided into multiple slices.
[0478] The overlap flag (slice_overlap_flag) indicates whether slices overlap. The overlap information (type_of_overlap) is included in the slice additional information, for example, when slices overlap. The overlap information indicates how slices overlap, etc. For example, the overlap information indicates the size of the overlapping area, etc.
[0479] The slice number (slice_number) indicates the number of slices.
[0480] Slice position information (global_position, relative_position) and slice size information (slice_bounding_box_size) are information related to the area of a slice. Slice position information is information for specifying the position of each slice. For example, slice position information indicates the absolute coordinates or relative coordinates of each slice. Slice size information (slice_bounding_box_size) indicates the size of each slice. For example, slice size information indicates the size of the bounding box of each slice.
[0481] The three-dimensional data encoding device may include the slice additional information in the SEI and transmit it, or may store the slice additional information in an existing parameter set (such as PPS, GPS, or APS) and transmit it.
[0482] For example, when slice additional information changes for each frame, the slice additional information may be stored in a parameter set for each frame (such as GPS or APS). When slice additional information does not change within a sequence, the slice additional information may be stored in a parameter set for each sequence (position SPS or attribute SPS). Furthermore, when the same slice division information is used for position information and attribute information, the slice additional information may be stored in a parameter set of a PCC stream (stream PS).
[0483] Furthermore, the slice additional information may be stored in any one of the above parameter sets, or in multiple parameter sets. Furthermore, the slice additional information may be stored in a header of coded data. Furthermore, the slice additional information may be stored in a header of an NAL unit.
[0484] Furthermore, all or part of the slice additional information may be stored in either the header of the division position information or the header of the division attribute information, and not in the other. For example, when the same slice additional information is used for the position information and the attribute information, the slice additional information may be included in the header of either the position information or the attribute information. For example, when the attribute information depends on the position information, the position information is processed first. Therefore, the slice additional information may be included in the header of the position information, and the slice additional information may not be included in the header of the attribute information. In this case, the three-dimensional data decoding device determines, for example, that the dependent attribute information belongs to the same slice as the slice of the dependent position information.
[0485] The three-dimensional data decoding device reconstructs the point cloud data divided into slices based on the slice additional information. If there is overlapping point cloud data, the three-dimensional data decoding device identifies the overlapping multiple point cloud data, selects one of the overlapping multiple point cloud data, or merges the multiple point cloud data.
[0486] Furthermore, the three-dimensional data decoding device may perform decoding using slice additional information. For example, when multiple slices overlap, the three-dimensional data decoding device may perform decoding for each slice, and then perform processing (e.g., smoothing or filtering) using the multiple decoded data to generate point cloud data. This may enable highly accurate decoding.
[0487] FIG. 72 is a flowchart of three-dimensional data encoding processing, including processing for generating tile additional information, performed by the three-dimensional data encoding device according to this embodiment.
[0488] First, the three-dimensional data encoding device determines a tile division method (S5031). Specifically, the three-dimensional data encoding device determines whether to use a division method based on a top view (top_view) or another method (other) as the tile division method. The three-dimensional data encoding device also determines the shape of the tile when using a division method based on a top view. The three-dimensional data encoding device also determines whether the tile overlaps with other tiles.
[0489] If the tile division method determined in step S5031 is a division method based on a top view (Yes in S5032), the three-dimensional data encoding device describes in the tile additional information that the tile division method is a division method based on a top view (top_view) (S5033).
[0490] On the other hand, if the tile division method determined in step S5031 is other than a division method based on a top view (No in S5032), the three-dimensional data encoding device describes in the tile additional information that the tile division method is other than a division method based on a top view (top_view) (S5034).
[0491] Furthermore, if the shape of the tile when viewed from above determined in step S5031 is square (square in S5035), the three-dimensional data encoding device writes in the tile additional information that the shape of the tile when viewed from above is square (S5036).On the other hand, if the shape of the tile when viewed from above determined in step S5031 is circular (circle in S5035), the three-dimensional data encoding device writes in the tile additional information that the shape of the tile when viewed from above is circular (S5037).
[0492] Next, the three-dimensional data encoding device determines whether the tile overlaps with other tiles (S5038). If the tile overlaps with other tiles (Yes in S5038), the three-dimensional data encoding device records in the tile additional information that the tile overlaps (S5039). On the other hand, if the tile does not overlap with other tiles (No in S5038), the three-dimensional data encoding device records in the tile additional information that the tile does not overlap (S5040).
[0493] Next, the three-dimensional data encoding device divides the tiles based on the tile division method determined in step S5031, encodes each tile, and transmits the generated encoded data and tile additional information (S5041).
[0494] FIG. 73 is a flowchart of three-dimensional data decoding processing using tile additional information by the three-dimensional data decoding device according to this embodiment.
[0495] First, the 3D data decoding device analyzes the tile additional information included in the bitstream (S5051).
[0496] If the tile additional information indicates that the tile does not overlap with other tiles (No in S5052), the 3D data decoding device generates point cloud data for each tile by decoding each tile (S5053). Next, the 3D data decoding device reconstructs point cloud data from the point cloud data for each tile based on the tile division method and tile shape indicated in the tile additional information (S5054).
[0497] On the other hand, if the tile additional information indicates that the tile overlaps with other tiles (Yes in S5052), the three-dimensional data decoding device generates point cloud data for each tile by decoding each tile. The three-dimensional data decoding device also identifies overlapping portions of tiles based on the tile additional information (S5055). Note that the three-dimensional data decoding device may perform decoding processing for overlapping portions using multiple pieces of overlapping information. Next, the three-dimensional data decoding device reconstructs point cloud data from the point cloud data for each tile based on the tile division method, tile shape, and overlap information indicated in the tile additional information (S5056).
[0498] Modifications regarding slices will be described below. The three-dimensional data encoding device may transmit information indicating the type of object (road, building, tree, etc.) or attribute (dynamic information, static information, etc.) as additional information. Alternatively, encoding parameters may be defined in advance depending on the object, and the three-dimensional data encoding device may notify the three-dimensional data decoding device of the encoding parameters by sending the type or attribute of the object.
[0499] The following methods may be used for the encoding order and transmission order of slice data. For example, the three-dimensional data encoding device may encode slice data in order of ease of object recognition or clustering. Alternatively, the three-dimensional data encoding device may encode slice data in order of the slice data for which clustering was completed first. Furthermore, the three-dimensional data encoding device may transmit encoded slice data in order of decreasing decoding priority in the application. For example, if the decoding priority of dynamic information is high, the three-dimensional data encoding device may transmit slice data in order of decreasing decoding priority, starting with slices grouped by dynamic information.
[0500] Furthermore, when the order of the coded data differs from the order of the decoding priorities, the three-dimensional data coding device may rearrange the coded data before transmitting it. Furthermore, when storing coded data, the three-dimensional data coding device may rearrange the coded data before storing it.
[0501] An application (a three-dimensional data decoder) requests a server (a three-dimensional data encoder) to send slices containing desired data. The server sends the slice data required by the application, but does not need to send unnecessary slice data.
[0502] An application requests the server to send tiles containing desired data. The server sends the tile data required by the application, but does not need to send unnecessary tile data.
[0503] As described above, the three-dimensional data encoding device according to this embodiment performs the processing shown in Fig. 74. First, the three-dimensional data encoding device generates a plurality of coded data by encoding a plurality of subspaces (e.g., tiles) obtained by dividing a target space including a plurality of three-dimensional points (S5061). The three-dimensional data encoding device generates a bitstream including the plurality of coded data and first information (e.g., topview_shape) indicating the shapes of the plurality of subspaces (S5062).
[0504] This allows the three-dimensional data encoding device to select any shape from a plurality of types of subspace shapes, thereby improving encoding efficiency.
[0505] For example, the shape is a two-dimensional shape or a three-dimensional shape of the plurality of subspaces. For example, the shape is a top view shape of the plurality of subspaces. That is, the first information indicates a shape of the subspace when viewed from a specific direction (for example, from above). In other words, the first information indicates a bird's-eye view shape of the subspace. For example, the shape is a rectangle or a circle.
[0506] For example, the bitstream includes second information (eg, tile_overlap_flag) indicating whether the plurality of sub-intervals overlap.
[0507] According to this, the three-dimensional data encoding device can overlap subspaces, so that subspaces can be generated without complicating the shapes of the subspaces.
[0508] For example, the bitstream includes third information (for example, type_of_divide) indicating whether the division method for the plurality of sub-sections is a division method using a top view.
[0509] For example, the bitstream includes fourth information (eg, tile_height) indicating at least one of the height, width, depth, and radius of the plurality of sub-sections.
[0510] For example, the bitstream includes fifth information (for example, global_position or relative_position) indicating the position of each of the plurality of sub-sections.
[0511] For example, the bitstream includes sixth information (eg, tile_number) indicating the number of the plurality of subintervals.
[0512] For example, the bitstream includes seventh information indicating intervals between the plurality of sub-intervals.
[0513] For example, the three-dimensional data encoding device includes a processor and a memory, and the processor performs the above-mentioned processing using the memory.
[0514] Furthermore, the three-dimensional data decoding device according to this embodiment performs the processing shown in FIG. 75. First, the three-dimensional data decoding device reconstructs a plurality of subspaces (e.g., tiles) by decoding a plurality of coded data generated by encoding a target space containing a plurality of three-dimensional points, which is included in a bitstream (S5071). The three-dimensional data decoding device reconstructs the target space by combining the plurality of subspaces using first information (e.g., topview_shape) included in the bitstream and indicating the shapes of the plurality of subspaces (S5072). For example, the three-dimensional data decoding device can recognize the shapes of the plurality of subspaces using the first information, thereby grasping the position and range of each subspace within the target space. The three-dimensional data decoding device can combine the plurality of subspaces based on the grasped positions and ranges of the plurality of subspaces. This allows the three-dimensional data decoding device to correctly combine the plurality of subspaces.
[0515] For example, the shape is a shape in two dimensions of the plurality of subspaces, or a shape in three dimensions, for example, a rectangle or a circle.
[0516] For example, the bitstream includes second information (e.g., tile_overlap_flag) indicating whether the multiple subintervals overlap. When restoring the target space, the three-dimensional data decoding device further uses the second information to combine the multiple subspaces. For example, the three-dimensional data decoding device uses the second information to determine whether the subspaces overlap. If the subspaces overlap, the three-dimensional data decoding device identifies the overlapping area and takes a predetermined action for the identified overlapping area.
[0517] For example, the bitstream includes third information (e.g., type_of_divide) indicating whether the division method of the plurality of sub-intervals is a division method using a top view. If the third information indicates that the division method of the plurality of sub-intervals is a division method using a top view, the 3D data decoding device combines the plurality of sub-spaces using the first information.
[0518] For example, the bitstream includes fourth information (e.g., tile_height) indicating at least one of the height, width, depth, and radius of the plurality of subsections. The 3D data decoding device further uses the fourth information to combine the plurality of subspaces in restoring the target space. For example, the 3D data decoding device can recognize the heights of the plurality of subspaces using the fourth information, thereby determining the position and range of each subspace within the target space. The 3D data decoding device can combine the plurality of subspaces based on the determined positions and ranges of the plurality of subspaces.
[0519] For example, the bitstream includes fifth information (e.g., global_position or relative_position) indicating the position of each of the plurality of subintervals. In restoring the target space, the three-dimensional data decoding device further uses the fifth information to combine the plurality of subspaces. For example, the three-dimensional data decoding device can recognize the positions of the plurality of subspaces using the fifth information, thereby grasping the position of each subspace within the target space. The three-dimensional data decoding device can combine the plurality of subspaces based on the grasped positions of the plurality of subspaces.
[0520] For example, the bitstream includes sixth information (e.g., tile_number) indicating the number of the plurality of subintervals. In the reconstruction of the target space, the 3D data decoding device further uses the sixth information to combine the plurality of subintervals.
[0521] For example, the bitstream includes seventh information indicating the intervals between the plurality of subintervals. The three-dimensional data decoding device further uses the seventh information to combine the plurality of subintervals in restoring the target space. For example, the three-dimensional data decoding device can recognize the intervals between the plurality of subintervals using the seventh information, thereby grasping the position and range of each subinterval within the target space. The three-dimensional data decoding device can combine the plurality of subintervals based on the grasped positions and ranges of the plurality of subintervals.
[0522] For example, the three-dimensional data decoding device includes a processor and a memory, and the processor performs the above processing using the memory.
[0523] (Embodiment 7) Dividing point cloud data into tiles and slices and efficiently encoding or decoding the divided data requires appropriate control on the encoding and decoding sides. By encoding and decoding the divided data independently without any dependency between the divided data, the divided data can be processed in parallel on each thread / core using a multi-threaded or multi-core processor, improving performance.
[0524] There are various methods for dividing point cloud data into tiles and slices, including methods for dividing based on characteristics such as the attributes of objects in the point cloud data, such as road surfaces, or color information, such as green, in the point cloud data.
[0525] CABAC is an abbreviation for Context-Based Adaptive Binary Arithmetic Coding, and is a coding method that improves the accuracy of probability by sequentially updating the context (a model that estimates the occurrence probability of input binary symbols) based on already coded information, thereby achieving arithmetic coding (entropy coding) with a high compression rate.
[0526] In order to process divided data such as tiles or slices in parallel, it is necessary to be able to encode or decode each divided data independently. However, to make CABAC independent between divided data, it is necessary to initialize CABAC at the beginning of the divided data during encoding and decoding, but there is no mechanism for doing so.
[0527] The CABAC initialization flag is used to initialize CABAC in CABAC encoding and decoding.
[0528] FIG. 76 is a flowchart showing the process of initializing CABACCABAC in accordance with the CABAC initialization flag during encoding or decoding.
[0529] The three-dimensional data encoding device or three-dimensional data decoding device determines whether the CABAC initialization flag is 1 during encoding or decoding (S5201).
[0530] If the CABAC initialization flag is 1 (Yes in S5201), the three-dimensional data encoding device or three-dimensional data decoding device initializes the CABAC encoding unit / decoding unit to the default state (S5202) and continues encoding or decoding.
[0531] If the CABAC initialization flag is not 1 (No in S5201), the three-dimensional data encoding device or three-dimensional data decoding device continues encoding or decoding without initialization.
[0532] That is, when initializing CABAC, CABAC_init_flag=1 is set, and the CABAC encoding unit or CABAC decoding unit is initialized or reinitialized. When initializing, the initial value (default state) of the context used in CABAC processing is set.
[0533] The encoding process will now be described. Fig. 77 is a block diagram showing the configuration of a first encoding unit 5200 included in the three-dimensional data encoding device according to this embodiment. Fig. 78 is a block diagram showing the configuration of a dividing unit 5201 according to this embodiment. Fig. 79 is a block diagram showing the configurations of a position information encoding unit 5202 and an attribute information encoding unit 5203 according to this embodiment.
[0534] The first encoding unit 5200 generates encoded data (encoded stream) by encoding the point cloud data using a first encoding method (GPCC (Geometry based PCC)). The first encoding unit 5200 includes a dividing unit 5201, multiple position information encoding units 5202, multiple attribute information encoding units 5203, an additional information encoding unit 5204, and a multiplexing unit 5205.
[0535] The dividing unit 5201 divides the point cloud data to generate a plurality of divided data. Specifically, the dividing unit 5201 divides the space of the point cloud data into a plurality of subspaces to generate a plurality of divided data. Here, a subspace is one of a tile and a slice, or a combination of a tile and a slice. More specifically, the point cloud data includes position information, attribute information, and additional information. The dividing unit 5201 divides the position information into a plurality of divided position information pieces, and divides the attribute information into a plurality of divided attribute information pieces. The dividing unit 5201 also generates additional information related to the division.
[0536] 78, the dividing unit 5201 includes a tile dividing unit 5211 and a slice dividing unit 5212. For example, the tile dividing unit 5211 divides a point cloud into tiles. The tile dividing unit 5211 may determine a quantization value to be used for each divided tile as tile additional information.
[0537] The slice dividing unit 5212 further divides the tiles obtained by the tile dividing unit 5211 into slices. The slice dividing unit 5212 may determine a quantization value to be used for each divided slice as slice additional information.
[0538] The position information encoding units 5202 encode the divided position information to generate the coded position information, for example, the position information encoding units 5202 process the divided position information in parallel.
[0539] As shown in FIG. 79 , the position information encoding unit 5202 includes a CABAC initialization unit 5221 and an entropy encoding unit 5222. The CABAC initialization unit 5221 initializes or re-initializes CABAC according to a CABAC initialization flag. The entropy encoding unit 5222 encodes the split position information using CABAC.
[0540] The attribute information encoding units 5203 encode the divided attribute information to generate the coded attribute information, for example, the attribute information encoding units 5203 process the divided attribute information in parallel.
[0541] As shown in Fig. 79, the attribute information encoding unit 5203 includes a CABAC initialization unit 5231 and an entropy encoding unit 5232. The CABAC initialization unit 5221 initializes or re-initializes CABAC according to a CABAC initialization flag. The entropy encoding unit 5232 encodes the divided attribute information using CABAC.
[0542] The additional information encoding unit 5204 generates encoded additional information by encoding the additional information included in the point cloud data and the additional information related to the data division generated by the division unit 5201 at the time of division.
[0543] The multiplexing unit 5205 multiplexes a plurality of pieces of encoding position information, a plurality of pieces of encoding attribute information, and encoding additional information to generate encoded data (encoded stream), and transmits the generated encoded data. The encoded additional information is also used during decoding.
[0544] 77 shows an example in which there are two position information encoding units 5202 and two attribute information encoding units 5203, but the number of position information encoding units 5202 and two attribute information encoding units 5203 may each be one, or three or more. Furthermore, multiple pieces of divided data may be processed in parallel within the same chip, such as multiple cores within a CPU, or may be processed in parallel by cores on multiple chips, or may be processed in parallel by multiple cores on multiple chips.
[0545] Next, the decoding process will be described. Fig. 80 is a block diagram showing the configuration of the first decoding unit 5240. Fig. 81 is a block diagram showing the configurations of the position information decoding unit 5242 and the attribute information decoding unit 5243.
[0546] The first decoding unit 5240 restores the point cloud data by decoding the coded data (coded stream) generated by coding the point cloud data using the first coding method (GPCC). The first decoding unit 5240 includes a demultiplexing unit 5241, a plurality of position information decoding units 5242, a plurality of attribute information decoding units 5243, an additional information decoding unit 5244, and a combining unit 5245.
[0547] The demultiplexing unit 5241 demultiplexes the coded data (coded stream) to generate a plurality of pieces of coding position information, a plurality of pieces of coding attribute information, and coded additional information.
[0548] The position information decoding units 5242 generate a plurality of pieces of quantized position information by decoding the plurality of pieces of encoded position information. For example, the position information decoding units 5242 process the plurality of pieces of encoded position information in parallel.
[0549] 81, the position information decoding unit 5242 includes a CABAC initialization unit 5251 and an entropy decoding unit 5252. The CABAC initialization unit 5251 initializes or reinitializes CABAC according to a CABAC initialization flag. The entropy decoding unit 5252 decodes the position information using CABAC.
[0550] The attribute information decoding units 5243 generate a plurality of pieces of divided attribute information by decoding the plurality of pieces of encoded attribute information. For example, the attribute information decoding units 5243 process the plurality of pieces of encoded attribute information in parallel.
[0551] As shown in Fig. 81, the attribute information decoding unit 5243 includes a CABAC initialization unit 5261 and an entropy decoding unit 5262. The CABAC initialization unit 5261 initializes or reinitializes CABAC according to a CABAC initialization flag. The entropy decoding unit 5262 decodes the attribute information using CABAC.
[0552] The plurality of additional information decoders 5244 generate additional information by decoding the coded additional information.
[0553] The combining unit 5245 generates position information by combining multiple pieces of split position information using the additional information. The combining unit 5245 generates attribute information by combining multiple pieces of split attribute information using the additional information. For example, the combining unit 5245 first generates point cloud data corresponding to a tile by combining decoded point cloud data for a slice using the slice additional information. Next, the combining unit 5245 restores the original point cloud data by combining the point cloud data corresponding to the tile using the tile additional information.
[0554] 80 shows an example in which there are two position information decoding units 5242 and two attribute information decoding units 5243, but the number of position information decoding units 5242 and two attribute information decoding units 5243 may be one, or three or more. Furthermore, multiple pieces of divided data may be processed in parallel within the same chip, such as multiple cores within a CPU, or may be processed in parallel by cores on multiple chips, or may be processed in parallel by multiple cores on multiple chips.
[0555] FIG. 82 is a flowchart showing an example of a process related to initialization of CABAC in encoding position information or encoding attribute information.
[0556] First, the three-dimensional data encoding device determines, for each slice, based on a predetermined condition, whether or not to perform CABAC initialization when encoding the position information of the slice (S5201).
[0557] When the three-dimensional data encoding device determines to perform CABAC initialization (Yes in S5202), it determines an initial context value to be used for encoding the position information (S5203). The initial context value is set to an initial value that takes into account encoding characteristics. The initial value may be a predetermined value, or may be adaptively determined according to the characteristics of the data in the slice.
[0558] Next, the three-dimensional data encoding device sets the CABAC initialization flag of the position information to 1 and sets a context initial value (S5204). When CABAC initialization is performed, the initialization process is performed using the context initial value in encoding the position information.
[0559] On the other hand, if the three-dimensional data encoding device determines not to perform CABAC initialization (No in S5202), it sets the CABAC initialization flag of the position information to 0 (S5205).
[0560] Next, the three-dimensional data encoding device determines, for each slice, based on a predetermined condition, whether or not to perform CABAC initialization when encoding the attribute information of the slice (S5206).
[0561] When it is determined that CABAC initialization is to be performed (Yes in S5207), the three-dimensional data encoding device determines an initial context value to be used for encoding the attribute information (S5208). The initial context value is set to an initial value that takes into consideration encoding characteristics. The initial value may be a predetermined value, or may be adaptively determined according to the characteristics of the data in the slice.
[0562] Next, the three-dimensional data encoding device sets the CABAC initialization flag of the attribute information to 1 and sets a context initial value (S5209). When CABAC initialization is performed, initialization processing is performed using the context initial value in encoding of the attribute information.
[0563] On the other hand, if the three-dimensional data encoding device determines not to perform CABAC initialization (No in S5207), it sets the CABAC initialization flag in the attribute information to 0 (S5210).
[0564] In the flowchart in FIG. 82, the processing relating to the position information and the processing relating to the attribute information may be performed in the opposite order, or may be performed in parallel.
[0565] Note that, although the flowchart in Figure 82 illustrates processing in units of slices as an example, processing in units of tiles or other data units can also be performed in the same manner as in units of slices. In other words, the "slice" in the flowchart in Figure 82 can be read as "tile" or other data unit.
[0566] Furthermore, the predetermined condition may be the same for the location information and the attribute information, or may be different for each.
[0567] FIG. 83 is a diagram showing an example of the timing of CABAC initialization in point cloud data converted into a bit stream.
[0568] Point cloud data includes position information and zero or more pieces of attribute information. That is, point cloud data may have no attribute information or may have multiple pieces of attribute information.
[0569] For example, one three-dimensional point may have color information as attribute information, color information and reflection information, or one or more pieces of color information each associated with one or more pieces of viewpoint information.
[0570] The method described in this embodiment can be applied to either configuration.
[0571] Next, the conditions for determining whether to initialize CABAC will be described.
[0572] If the following conditions are met, CABAC may be initialized in encoding the position information or attribute information.
[0573] For example, CABAC may be initialized with the leading data of position information or attribute information (if there is more than one, each piece of attribute information). For example, CABAC may be initialized with the leading data of a PCC frame that can be decoded independently. That is, as shown in (a) of Figure 83, if the PCC frame can be decoded frame by frame, CABAC may be initialized with the leading data of the PCC frame.
[0574] Also, for example, as shown in (b) of Figure 83, if a frame cannot be decoded independently, such as when inter-prediction is used between PCC frames, CABAC may be initialized with the first data of a random access unit (e.g., GOF).
[0575] Also, for example, as shown in (c) of FIG. 83, CABAC may be initialized at the beginning of slice data divided into one or more pieces, the beginning of tile data divided into one or more pieces, or the beginning of other divided data.
[0576] Although (c) in Figure 83 shows an example of a tile, the same applies to a slice. Initialization may or may not be required at the beginning of a tile or slice.
[0577] FIG. 84 shows the structure of coded data and a method for storing coded data in NAL units.
[0578] The initialization information may be stored in the header of the encoded data, or in the metadata. Alternatively, the initialization information may be stored in both the header and the metadata. The initialization information may be, for example, caba_init_flag, a CABAC initial value, or an index of a table that can identify the initial value.
[0579] In this embodiment, the description that the information is stored in the metadata may be interpreted as being stored in the header of the encoded data, and vice versa.
[0580] When the initialization information is stored in the header of the encoded data, it may be stored in, for example, the first NAL unit in the encoded data. The position information stores initialization information for encoding the position information, and the attribute information stores initialization information for encoding the attribute information.
[0581] The cabac_init_flag for encoding the attribute information and the cabac_init_flag for encoding the position information may be the same value or different values. If they are the same value, the cabac_init_flag for the position information and the attribute information may be the same. If they are different values, the cabac_init_flag for the position information and the attribute information will each indicate a different value.
[0582] The initialization information may be stored in metadata common to the location information and the attribute information, or may be stored in at least one of the individual metadata for the location information and the individual metadata for the attribute information, or may be stored in both the common metadata and the individual metadata. Also, a flag may be used to indicate whether the initialization information is described in the individual metadata for the location information, the individual metadata for the attribute information, or the common metadata.
[0583] FIG. 85 is a flowchart showing an example of a process related to initialization of CABAC in decoding of position information or attribute information.
[0584] The three-dimensional data decoding device analyzes the encoded data, and acquires the CABAC initialization flag of the position information, the CABAC initialization flag of the attribute information, and the context initial value (S5211).
[0585] Next, the three-dimensional data decoding device determines whether the CABAC initialization flag of the position information is 1 (S5212).
[0586] If the CABAC initialization flag of the position information is 1 (Yes in S5212), the three-dimensional data decoding device initializes CABAC decoding of the position information encoding using the context initial value of the position information encoding (S5213).
[0587] On the other hand, if the CABAC initialization flag of the position information is 0 (No in S5212), the three-dimensional data decoding device does not initialize CABAC decoding in the position information encoding (S5214).
[0588] Next, the three-dimensional data decoding device determines whether the CABAC initialization flag in the attribute information is 1 (S5215).
[0589] If the CABAC initialization flag of the attribute information is 1 (Yes in S5215), the three-dimensional data decoding device initializes the CABAC decoding of the attribute information encoding using the context initial value of the attribute information encoding (S5216).
[0590] On the other hand, if the CABAC initialization flag in the attribute information is 0 (No in S5215), the three-dimensional data decoding device does not initialize CABAC decoding in the attribute information encoding (S5217).
[0591] In the flowchart in FIG. 85, the processing order of the processing related to the position information and the processing related to the attribute information may be reversed, or may be performed in parallel.
[0592] The flowchart in FIG. 85 is applicable to both the case of slice division and the case of tile division.
[0593] Next, the flow of the encoding process and decoding process of point cloud data according to this embodiment will be described. Fig. 86 is a flowchart of the encoding process of point cloud data according to this embodiment.
[0594] First, the three-dimensional data encoding device determines the division method to be used (S5221). This division method includes whether or not to perform tile division and whether or not to perform slice division. The division method may also include the number of divisions when performing tile division or slice division, and the type of division. The type of division may be a method based on the object shape as described above, a method based on map information or position information, or a method based on the amount of data or the amount of processing. The division method may be determined in advance.
[0595] If tile division is performed (Yes in S5222), the three-dimensional data encoding device divides the position information and attribute information into tiles to generate multiple pieces of tile position information and multiple pieces of tile attribute information (S5223). The three-dimensional data encoding device also generates tile additional information related to the tile division.
[0596] If slice division is performed (Yes in S5224), the three-dimensional data encoding device divides the plurality of tile position information and the plurality of tile attribute information (or the position information and the attribute information) to generate a plurality of division position information and a plurality of division attribute information (S5225). In addition, the three-dimensional data encoding device generates position slice additional information and attribute slice additional information related to the slice division.
[0597] Next, the three-dimensional data encoding device generates a plurality of pieces of encoding position information and a plurality of pieces of encoding attribute information by encoding each of the plurality of pieces of division position information and the plurality of pieces of division attribute information (S5226). The three-dimensional data encoding device also generates dependency relationship information.
[0598] Next, the three-dimensional data encoding device generates encoded data (encoded stream) by combining (multiplexing) the plurality of pieces of encoding position information, the plurality of pieces of encoding attribute information, and the additional information into NAL units (S5227).The three-dimensional data encoding device also transmits the generated encoded data.
[0599] FIG. 87 is a flowchart showing an example of a process of determining the value of the CABAC initialization flag and updating additional information in the division into tiles (S5222) or the division into slices (S5225).
[0600] In steps S5222 and S5225, the position information and attribute information of the tiles and / or slices may be divided individually using the respective methods, or may be divided together in common, thereby generating additional information divided for each tile and / or slice.
[0601] At this time, the three-dimensional data encoding device determines whether to set the CABAC initialization flag to 1 or 0 (S5231).
[0602] Then, the three-dimensional data encoding device updates the additional information so that the determined CABAC initialization flag is included (S5232).
[0603] FIG. 88 is a flowchart showing an example of the CABAC initialization process in the encoding process (S5226).
[0604] The three-dimensional data encoding device determines whether the CABAC initialization flag is 1 (S5241).
[0605] If the CABAC initialization flag is 1 (Yes in S5241), the three-dimensional data encoding device re-initializes the CABAC encoding unit to the default state (S5242).
[0606] Then, the three-dimensional data encoding device continues the encoding process until a condition for stopping the encoding process is satisfied, for example, until there is no more data to be encoded (S5243).
[0607] 89 is a flowchart of a decoding process of point cloud data according to this embodiment. First, the three-dimensional data decoding device determines the division method by analyzing additional information (tile additional information, position slice additional information, and attribute slice additional information) related to the division method included in the coded data (coded stream) (S5251). This division method includes whether or not to perform tile division and whether or not to perform slice division. Furthermore, the division method may include the number of divisions when performing tile division or slice division, the type of division, etc.
[0608] Next, the three-dimensional data decoding device generates split position information and split attribute information by decoding the multiple pieces of coded position information and multiple pieces of coded attribute information contained in the coded data using the dependency information contained in the coded data (S5252).
[0609] If the additional information indicates that slice division has been performed (Yes in S5253), the three-dimensional data decoding device generates multiple tile position information and multiple tile attribute information by combining multiple division position information and multiple division attribute information based on the position slice additional information and attribute slice additional information (S5254).
[0610] If the additional information indicates that tile division has been performed (Yes in S5255), the three-dimensional data decoding device generates position information and attribute information by combining multiple tile position information and multiple tile attribute information (multiple division position information and multiple division attribute information) based on the tile additional information (S5256).
[0611] FIG. 90 is a flowchart showing an example of processing for initializing the CABAC decoding unit in combining information divided for each slice (S5254) or combining information divided for each tile (S5256).
[0612] The position information and attribute information of the slices or tiles may be combined using different methods or may be combined using the same method.
[0613] The three-dimensional data decoding device decodes the CABAC initialization flag from the additional information of the coded stream (S5261).
[0614] Next, the three-dimensional data decoding device determines whether the CABAC initialization flag is 1 (S5262).
[0615] If the CABAC initialization flag is 1 (Yes in S5262), the three-dimensional data decoding device re-initializes the CABAC decoding unit to the default state (S5263).
[0616] On the other hand, if the CABAC initialization flag is not 1 (No in S5262), the three-dimensional data decoding device proceeds to step S5264 without re-initializing the CABAC decoding unit.
[0617] Then, the three-dimensional data decoding device continues the decoding process until a condition for stopping the decoding process is satisfied, for example, until there is no more data to be decoded (S5264).
[0618] Next, other determination conditions for CABAC initialization will be described.
[0619] Whether to initialize the encoding of the position information or the encoding of the attribute information may be determined in consideration of the encoding efficiency of data units such as tiles or slices. In this case, CABAC may be initialized in the first data of a tile or slice that satisfies a predetermined condition.
[0620] Next, the determination conditions for CABAC initialization in encoding position information will be described.
[0621] For example, the three-dimensional data encoding device may determine the density of point cloud data for each slice, i.e., the number of points per unit area belonging to the slice, compare the data density of the slice with that of other slices, and determine that not initializing CABAC is more efficient for encoding if the change in data density does not exceed a predetermined condition, and may decide not to initialize CABAC.On the other hand, if the change in data density does not satisfy the predetermined condition, the three-dimensional data encoding device may determine that initialization is more efficient for encoding, and may decide to initialize CABAC.
[0622] Here, the other slice may be, for example, the slice immediately preceding the current slice in decoding order or a spatially adjacent slice. Furthermore, the three-dimensional data encoding device may determine whether to perform CABAC initialization depending on whether the data density of the current slice is a predetermined data density, without comparing it with the data densities of other slices.
[0623] When it is determined that CABAC initialization is to be performed, the three-dimensional data encoding device determines a context initial value to be used for encoding the position information. The context initial value is set to an initial value that has good encoding characteristics according to the data density. The three-dimensional data encoding device may store a table of initial values for each data density in advance and select an optimal initial value from the table.
[0624] The three-dimensional data encoding device may determine whether to perform CABAC initialization based on the number of points, the distribution of points, the bias of points, or the like, without being limited to the example of slice density. Alternatively, the three-dimensional data encoding device may determine whether to perform CABAC initialization based on feature amounts or the number of feature points obtained from point information, or a recognized object. In this case, the determination criteria may be stored in advance in memory as a table associated with feature amounts or the number of feature points obtained from point information, or an object recognized based on point information.
[0625] The three-dimensional data encoding device may, for example, determine an object in the location information of the map information and determine whether to perform CABAC initialization based on the object based on the location information, or may determine whether to perform CABAC initialization based on information or features of three-dimensional data projected into two dimensions.
[0626] Next, the determination conditions for CABAC initialization in encoding attribute information will be described.
[0627] The three-dimensional data encoding device may, for example, compare the color characteristics of the previous slice with the color characteristics of the current slice, and if the change in the color characteristics satisfies a predetermined condition, determine that not initializing CABAC will result in better coding efficiency, and may decide not to initialize CABAC. On the other hand, if the change in the color characteristics does not satisfy the predetermined condition, the three-dimensional data encoding device may determine that initializing CABAC will result in better coding efficiency, and may decide to initialize CABAC. Color characteristics include, for example, luminance, chromaticity, saturation, their histograms, color continuity, etc.
[0628] Here, the other slice may be, for example, the slice immediately preceding the current slice in decoding order or a spatially adjacent slice. Furthermore, the three-dimensional data encoding device may determine whether to perform CABAC initialization depending on whether the data density of the current slice is a predetermined data density, without comparing it with the data densities of other slices.
[0629] When it is determined that CABAC initialization is to be performed, the three-dimensional data encoding device determines a context initial value to be used for encoding the attribute information. The context initial value is set to an initial value that has good encoding characteristics according to the data density. The three-dimensional data encoding device may store a table of initial values for each data density in advance and select an optimal initial value from the table.
[0630] When the attribute information is reflectance, the three-dimensional data encoding device may determine whether to perform CABAC initialization according to information based on the reflectance.
[0631] When a three-dimensional point has multiple pieces of attribute information, the three-dimensional data encoding device may determine initialization information based on each piece of attribute information independently for each piece of attribute information, or may determine initialization information for multiple pieces of attribute information based on one piece of attribute information, or may determine initialization information for the multiple pieces of attribute information using multiple pieces of attribute information.
[0632] An example has been described in which the initialization information for location information is determined based on location information, and the initialization information for attribute information is determined based on attribute information, but the initialization information for location information and attribute information may also be determined based on location information, or the initialization information for location information and attribute information may also be determined based on attribute information, or the initialization information for location information and attribute information may also be determined based on both information.
[0633] The three-dimensional data encoding device may determine the initialization information based on the results of simulating the encoding efficiency in advance, for example, by setting cabac_init_flag to on or off, or by using one or more initial values from an initial value table.
[0634] When the three-dimensional data encoding device determines the method of dividing data into slices, tiles, etc. based on position information or attribute information, it may determine the initialization information based on the same information as the information used to determine the division method.
[0635] FIG. 91 is a diagram showing examples of tiles and slices.
[0636] For example, slices in a tile that have a portion of PCC data are identified as shown in the legend. The CABAC initialization flag can be used to determine whether context reinitialization is required for subsequent slices. For example, in Figure 91, if a tile contains slice data divided by object (moving object, sidewalk, building, tree, and other object), the CABAC initialization flags for the moving object, sidewalk, and tree slices are set to 1, and the CABAC initialization flags for the building and other slices are set to 0. This means that, for example, if both sidewalks and buildings are dense permanent structures and likely have similar coding efficiency, not reinitializing CABAC between sidewalk and building slices may potentially improve coding efficiency. On the other hand, if the density and coding efficiency of buildings and trees may be significantly different, initializing CABAC between building and tree slices may potentially improve coding efficiency.
[0637] FIG. 92 is a flowchart showing an example of a method for initializing CABAC and determining a context initial value.
[0638] First, the three-dimensional data encoding device divides the point cloud data into slices based on the object determined from the position information (S5271).
[0639] Next, the three-dimensional data encoding device determines, for each slice, whether to perform CABAC initialization for encoding the position information and the attribute information, based on the data density of the object in that slice (S5272). That is, the three-dimensional data encoding device determines CABAC initialization information (CABAC initialization flag) for encoding the position information and the attribute information, based on the position information. The three-dimensional data encoding device determines initialization with good encoding efficiency, for example, based on the point cloud data density. Note that the CABAC initialization information may be indicated in cabac_init_flag, which is common to both the position information and the attribute information.
[0640] Next, when it is determined that CABAC initialization is to be performed (Yes in S5273), the three-dimensional data encoding device determines the initial context value for encoding the position information (S5274).
[0641] Next, the three-dimensional data encoding device determines the initial context value for encoding the attribute information (S5275).
[0642] Next, the three-dimensional data encoding device sets the CABAC initialization flag for the position information to 1, sets a context initial value for the position information, and also sets the CABAC initialization flag for the attribute information to 1, and sets a context initial value for the attribute information (S5276). When performing CABAC initialization, the three-dimensional data encoding device performs initialization processing using the context initial value in each of encoding the position information and encoding the attribute information.
[0643] On the other hand, if the three-dimensional data encoding device determines not to perform CABAC initialization (No in S5273), it sets the CABAC initialization flag in the position information to 0 and sets the CABAC initialization flag in the attribute information to 0 (S5277).
[0644] Fig. 93 is a diagram showing an example of a map obtained by a LiDAR when viewed from above and divided into tiles. Fig. 94 is a flowchart showing another example of a method for initializing CABAC and determining a context initial value.
[0645] The three-dimensional data encoding device divides point cloud data into one or more tiles in a two-dimensional division method in a top view based on position information for large-scale map data (S5281). The three-dimensional data encoding device may divide the data into square regions, for example, as shown in FIG. 93. The three-dimensional data encoding device may also divide the point cloud data into tiles of various shapes and sizes. The division into tiles may be performed using one or more predetermined methods, or may be performed adaptively.
[0646] Next, the three-dimensional data encoding device determines, for each tile, the objects within the tile and determines whether to initialize CABAC by encoding the position information or attribute information of the tile (S5282). In the case of slice division, the three-dimensional data encoding device recognizes objects (trees, people, moving objects, buildings) and determines slice division and initial values according to the objects.
[0647] When it is determined that CABAC initialization is to be performed (Yes in S5283), the three-dimensional data encoding device determines the initial context value for encoding the position information (S5284).
[0648] Next, the three-dimensional data encoding device determines the initial value of the context for encoding the attribute information (S5285).
[0649] In steps S5284 and S5285, the initial values of tiles having specific coding characteristics may be stored as initial values, and may be used as initial values of tiles having the same coding characteristics.
[0650] Next, the three-dimensional data encoding device sets the CABAC initialization flag for the position information to 1, sets a context initial value for the position information, and also sets the CABAC initialization flag for the attribute information to 1, and sets a context initial value for the attribute information (S5286). When performing CABAC initialization, the three-dimensional data encoding device performs initialization processing using the context initial value in encoding the position information and encoding the attribute information, respectively.
[0651] On the other hand, if the three-dimensional data encoding device determines not to perform CABAC initialization (No in S5283), it sets the CABAC initialization flag in the position information to 0 and sets the CABAC initialization flag in the attribute information to 0 (S5287).
[0652] (Embodiment 8) The quantization parameters will be explained below.
[0653] Slices and tiles are used to divide point cloud data based on the characteristics and positions of the point cloud data. Depending on hardware limitations and real-time processing requirements, the quality required for each divided point cloud data may differ. For example, when dividing the data into slices for each object and encoding it, slice data containing plants is not very important, so its resolution (quality) can be reduced by quantization. On the other hand, important slice data can be given a high resolution (quality) by setting the quantization value to a low value. Quantization parameters are used to enable such control of the quantization value.
[0654] Here, the data to be quantized, the scale used for quantization, and the quantized data calculated as a result of quantization are expressed by the following (Equation G1) and (Equation G2).
[0655] Quantized data = data / scale (Equation G1)
[0656] Data = Quantized Data * Scale (Equation G2)
[0657] FIG. 95 is a diagram illustrating the processing of the quantization unit 5323 that quantizes data and the inverse quantization unit 5333 that inversely quantizes the quantized data.
[0658] The quantization unit 5323 quantizes the data using the scale, that is, performs processing using the equation G1 to calculate quantized data obtained by quantizing the data.
[0659] The inverse quantization unit 5333 inversely quantizes the quantized data using the scale, that is, performs processing using equation G2 to calculate data obtained by inversely quantizing the quantized data.
[0660] Furthermore, the scale and the quantization value (QP (Quantization Parameter) value) are expressed by the following (Equation G3).
[0661] Quantization value (QP value) = log(scale) (Equation G3)
[0662] Quantization value (QP value) = Default value (reference value) + Quantization delta (difference information) (Equation G4)
[0663] These parameters are collectively called quantization parameters.
[0664] For example, as shown in FIG. 96, the quantization value is a value based on a default value and is calculated by adding the quantization delta to the default value. If the quantization value is smaller than the default value, the quantization delta is a negative value. If the quantization value is larger than the default value, the quantization delta is a positive value. If the quantization value is equal to the default value, the quantization delta is 0. If the quantization delta is 0, the quantization delta may be omitted.
[0665] The encoding process will now be described. Fig. 97 is a block diagram showing the configuration of a first encoding unit 5300 included in the three-dimensional data encoding device according to this embodiment. Fig. 98 is a block diagram showing the configuration of a dividing unit 5301 according to this embodiment. Fig. 99 is a block diagram showing the configurations of a position information encoding unit 5302 and an attribute information encoding unit 5303 according to this embodiment.
[0666] The first encoding unit 5300 generates encoded data (encoded stream) by encoding the point cloud data using a first encoding method (GPCC (Geometry based PCC)). The first encoding unit 5300 includes a dividing unit 5301, a plurality of position information encoding units 5302, a plurality of attribute information encoding units 5303, an additional information encoding unit 5304, and a multiplexing unit 5305.
[0667] The dividing unit 5301 divides the point cloud data to generate a plurality of pieces of divided data. Specifically, the dividing unit 5301 divides the space of the point cloud data into a plurality of subspaces to generate a plurality of pieces of divided data. Here, a subspace is one of a tile and a slice, or a combination of a tile and a slice. More specifically, the point cloud data includes position information, attribute information, and additional information. The dividing unit 5301 divides the position information into a plurality of pieces of divided position information, and divides the attribute information into a plurality of pieces of divided attribute information. The dividing unit 5301 also generates additional information related to the division.
[0668] 98, the dividing unit 5301 includes a tile dividing unit 5311 and a slice dividing unit 5312. For example, the tile dividing unit 5311 divides a point cloud into tiles. The tile dividing unit 5311 may determine a quantization value to be used for each divided tile as tile additional information.
[0669] The slice dividing unit 5312 further divides the tiles obtained by the tile dividing unit 5311 into slices. The slice dividing unit 5312 may determine a quantization value to be used for each divided slice as slice additional information.
[0670] The position information encoding units 5302 encode the plurality of pieces of divided position information to generate a plurality of pieces of encoded position information. For example, the position information encoding units 5302 process the plurality of pieces of divided position information in parallel.
[0671] 99, the position information encoding unit 5302 includes a quantization value calculation unit 5321 and an entropy encoding unit 5322. The quantization value calculation unit 5321 acquires a quantization value (quantization parameter) of the divided position information to be encoded. The entropy encoding unit 5322 quantizes the divided position information using the quantization value (quantization parameter) acquired by the quantization value calculation unit 5321, thereby calculating quantized position information.
[0672] The attribute information encoding units 5303 encode the divided attribute information to generate the coded attribute information, for example, the attribute information encoding units 5303 process the divided attribute information in parallel.
[0673] 99, the attribute information encoding unit 5303 includes a quantization value calculation unit 5331 and an entropy encoding unit 5332. The quantization value calculation unit 5331 acquires a quantization value (quantization parameter) of the divided attribute information to be encoded. The entropy encoding unit 5332 quantizes the divided attribute information using the quantization value (quantization parameter) acquired by the quantization value calculation unit 5331, thereby calculating quantized attribute information.
[0674] The additional information encoding unit 5304 generates encoded additional information by encoding the additional information included in the point cloud data and the additional information related to the data division generated by the division unit 5301 at the time of division.
[0675] The multiplexing unit 5305 multiplexes a plurality of pieces of encoding position information, a plurality of pieces of encoding attribute information, and encoding additional information to generate encoded data (encoded stream), and transmits the generated encoded data. The encoded additional information is also used during decoding.
[0676] 97 shows an example in which there are two position information encoding units 5302 and two attribute information encoding units 5303, but the number of position information encoding units 5302 and two attribute information encoding units 5303 may each be one, or three or more. Furthermore, multiple pieces of divided data may be processed in parallel within the same chip, such as multiple cores within a CPU, or may be processed in parallel by cores on multiple chips, or may be processed in parallel by multiple cores on multiple chips.
[0677] Next, the decoding process will be described. Fig. 100 is a block diagram showing the configuration of the first decoding unit 5340. Fig. 101 is a block diagram showing the configurations of the position information decoding unit 5342 and the attribute information decoding unit 5343.
[0678] The first decoding unit 5340 restores the point cloud data by decoding the coded data (coded stream) generated by coding the point cloud data using the first coding method (GPCC). The first decoding unit 5340 includes a demultiplexing unit 5341, a plurality of position information decoding units 5342, a plurality of attribute information decoding units 5343, an additional information decoding unit 5344, and a combining unit 5345.
[0679] The demultiplexing unit 5341 demultiplexes the coded data (coded stream) to generate a plurality of pieces of coding position information, a plurality of pieces of coding attribute information, and coded additional information.
[0680] The position information decoding units 5342 generate a plurality of pieces of quantized position information by decoding the plurality of pieces of encoded position information. For example, the position information decoding units 5342 process the plurality of pieces of encoded position information in parallel.
[0681] 101 , the position information decoding unit 5342 includes a quantization value calculation unit 5351 and an entropy decoding unit 5352. The quantization value calculation unit 5351 obtains a quantized value of the quantized position information. The entropy decoding unit 5352 uses the quantization value obtained by the quantization value calculation unit 5351 to inverse quantize the quantized position information, thereby calculating position information.
[0682] The attribute information decoding units 5343 generate a plurality of pieces of divided attribute information by decoding the plurality of pieces of encoded attribute information. For example, the attribute information decoding units 5343 process the plurality of pieces of encoded attribute information in parallel.
[0683] 101 , the attribute information decoding unit 5343 includes a quantization value calculation unit 5361 and an entropy decoding unit 5362. The quantization value calculation unit 5361 obtains a quantized value of the quantized attribute information. The entropy decoding unit 5362 uses the quantization value obtained by the quantization value calculation unit 5361 to inverse-quantize the quantized attribute information, thereby calculating the attribute information.
[0684] The plurality of additional information decoders 5344 generate additional information by decoding the coded additional information.
[0685] The combining unit 5345 generates position information by combining multiple pieces of split position information using the additional information. The combining unit 5345 generates attribute information by combining multiple pieces of split attribute information using the additional information. For example, the combining unit 5345 first generates point cloud data corresponding to a tile by combining decoded point cloud data for a slice using the slice additional information. Next, the combining unit 5345 restores the original point cloud data by combining the point cloud data corresponding to the tile using the tile additional information.
[0686] 100 shows an example in which there are two position information decoding units 5342 and two attribute information decoding units 5343, but the number of position information decoding units 5342 and two attribute information decoding units 5343 may be one, or three or more. Furthermore, multiple pieces of divided data may be processed in parallel within the same chip, such as multiple cores within a CPU, or may be processed in parallel by cores on multiple chips, or may be processed in parallel by multiple cores on multiple chips.
[0687] [Quantization parameter determination method] FIG. 102 is a flowchart showing an example of processing related to determination of a quantization value (Quantization Parameter value: QP value) in encoding position information (Geometry) or attribute information (Attribute).
[0688] The QP value is determined, for example, for each data unit of position information constituting a PCC frame or for each data unit of attribute information, taking into consideration the coding efficiency.When the data unit is a divided tile unit or a divided slice unit, the QP value is determined for each divided data unit, taking into consideration the coding efficiency of the divided data unit.Also, the QP value may be determined for each data unit before division.
[0689] As shown in FIG. 102, the three-dimensional data encoding device determines a QP value to be used for encoding position information (S5301). The three-dimensional data encoding device may determine the QP value for each of the divided slices based on a predetermined method. Specifically, the three-dimensional data encoding device determines the QP value based on the characteristics or quality of the position information data. For example, the three-dimensional data encoding device may determine the density of point cloud data for each data unit, i.e., the number of points per unit area belonging to the slice, and determine a value corresponding to the density of the point cloud data as the QP value. Alternatively, the three-dimensional data encoding device may determine a corresponding value as the QP value based on the number of points, point distribution, or point bias of the point cloud data, or on features obtained from the point information, the number of feature points, or recognized objects. Furthermore, the three-dimensional data encoding device may determine objects in the position information of the map and determine the QP value based on the objects based on the position information, or may determine the QP value based on information or features obtained by projecting the three-dimensional point cloud onto two dimensions. The corresponding QP value may be stored in advance in a memory as a table associated with the density, number of points, distribution of points, or bias of points of the point cloud data. The corresponding QP value may also be stored in advance in a memory as a table associated with the feature amount or number of feature points obtained from point information, or with an object recognized based on point information. The corresponding QP value may also be determined based on the results of simulating the encoding rate and the like using various QP values when encoding the position information of the point cloud data.
[0690] Next, the three-dimensional data encoding device determines a reference value (default value) and difference information (quantization delta) for the QP value of the position information (S5302). Specifically, the three-dimensional data encoding device determines the reference value and difference information to be transmitted using the determined QP value and a predetermined method, and sets (adds) the determined reference value and difference information to at least one of the headers of the additional information and the data.
[0691] Next, the three-dimensional data encoding device determines a QP value to be used for encoding the attribute information (S5303). The three-dimensional data encoding device may determine the QP value for each of the divided slices based on a predetermined method. Specifically, the three-dimensional data encoding device determines the QP value based on the characteristics or quality of the attribute information data. For example, the three-dimensional data encoding device may determine the QP value for each data unit based on the characteristics of the attribute information. Examples of color characteristics include brightness, chromaticity, saturation, their histograms, and color continuity. If the attribute information is reflectance, the determination may be made based on information based on the reflectance. For example, if a face is detected as an object from point cloud data, the three-dimensional data encoding device may determine a high-quality QP value for the point cloud data constituting the object from which the face was detected. In this way, the three-dimensional data encoding device may determine a QP value for the point cloud data constituting the object depending on the type of the object.
[0692] Furthermore, when a three-dimensional point has multiple pieces of attribute information, the three-dimensional data encoding device may determine a QP value based on each piece of attribute information independently for each piece of attribute information, or may determine a QP value for multiple pieces of attribute information based on one piece of attribute information, or may determine a QP value for the multiple pieces of attribute information using multiple pieces of attribute information.
[0693] Next, the three-dimensional data encoding device determines a reference value (default value) and difference information (quantization delta) for the QP value of the attribute information (S5304). Specifically, the three-dimensional data encoding device determines the reference value and difference information to be transmitted using the determined QP value and a predetermined method, and sets (adds) the determined reference value and difference information to at least one of the headers of the additional information and the data.
[0694] Then, the three-dimensional data encoding device quantizes and encodes the position information and attribute information based on the determined QP values of the position information and attribute information, respectively (S5305).
[0695] Although the example in which the QP value of the position information is determined based on the position information and the QP value of the attribute information is determined based on the attribute information has been described, the present invention is not limited to this. For example, the QP values of the position information and the attribute information may be determined based on the position information, may be determined based on the attribute information, or may be determined based on the position information and the attribute information.
[0696] The QP values of the position information and the attribute information may be adjusted in consideration of the balance between the quality of the position information and the quality of the attribute information in the point cloud data. For example, the QP values of the position information and the attribute information may be determined so that the quality of the position information is set high and the quality of the attribute information is set lower than the quality of the position information. For example, the QP value of the attribute information may be determined so as to satisfy a restricted condition that the QP value is equal to or greater than the QP value of the position information.
[0697] Furthermore, the QP value may be adjusted so that the encoded data is encoded within a predetermined rate range. For example, when the amount of code in encoding the previous data unit is likely to exceed a predetermined rate, that is, when the difference to the predetermined rate is less than a first difference, the QP value may be adjusted to reduce the encoding quality so that the amount of code of the data unit is less than the first difference. On the other hand, when the difference to the predetermined rate is greater than a second difference that is greater than the first difference and is a sufficiently large difference, the QP value may be adjusted to improve the encoding quality of the data unit. The adjustment between data units may be, for example, between PCC frames, tiles, or slices. The QP value of the attribute information may be adjusted based on the encoding rate of the position information.
[0698] In the flowchart in FIG. 102, the processing order of the processing related to the position information and the processing related to the attribute information may be reversed, or may be performed in parallel.
[0699] Note that, although the flowchart in Figure 102 illustrates processing in units of slices as an example, processing in units of tiles or other data units can also be performed in the same manner as in units of slices. In other words, the "slice" in the flowchart in Figure 102 can be read as "tile" or other data unit.
[0700] FIG. 103 is a flowchart showing an example of a process for decoding position information and attribute information.
[0701] 103, the three-dimensional data decoding device acquires a reference value and difference information indicating the QP value of the position information, and a reference value and difference information indicating the QP value of the attribute information (S5311). Specifically, the three-dimensional data decoding device analyzes either or both of the transmitted metadata and the header of the encoded data, and acquires the reference value and difference information for deriving the QP value.
[0702] Next, the three-dimensional data decoding device derives a QP value based on a predetermined method using the acquired reference value and difference information (S5312).
[0703] Then, the three-dimensional data decoding device acquires the quantized position information, and dequantizes the quantized position information using the derived QP value, thereby decoding the position information (S5313).
[0704] Next, the three-dimensional data decoding device acquires the quantized attribute information, and dequantizes the quantized attribute information using the derived QP value, thereby decoding the attribute information (S5314).
[0705] Next, a method for transmitting the quantization parameter will be described.
[0706] Fig. 104 is a diagram illustrating a first example of a method for transmitting a quantization parameter, and (a) of Fig. 104 is a diagram illustrating an example of a relationship between QP values.
[0707] In Figure 104, Q G and Q Aand Q are the absolute values of the QP values used for encoding the position information and the attribute information, respectively. G is an example of a first quantization parameter used to quantize the position information of each of the multiple three-dimensional points. A ,Q G ) is Q A Q used to derive G This shows the difference information between Q A Q G and Δ(Q A ,Q G ) is used to derive the QP value. In this way, the QP value is transmitted separately as a reference value (absolute value) and differential information (relative value). Furthermore, during decoding, the desired QP value is derived from the transmitted reference value and differential information.
[0708] For example, in Figure 104(a), the absolute value Q G and differential information Δ(Q A ,Q G ) is transmitted, and in decoding, as shown in the following (Equation G5), Q A Q G to Δ(Q A ,Q G ) is derived by adding
[0709] Q A =Q G +Δ(Q A ,Q G ) (Formula G5)
[0710] A method for transmitting QP values when dividing point cloud data consisting of position information and attribute information into slices will be described using (b) and (c) of Figure 104. (b) of Figure 104 is a diagram showing a first example of the relationship between the reference value of each QP value and difference information. (c) of Figure 104 is a diagram showing a first example of the transmission order of QP values, position information, and attribute information.
[0711] The QP value for each position information and attribute information is broadly divided into a QP value for each frame of the PCC (frame QP) and a QP value for each data unit (data QP). The QP value for each data unit is the QP value used for encoding, determined in step S5301 of FIG. 102.
[0712] Here, the QP value Q is used to encode the position information of each PCC frame. G is used as the reference value, and the QP value of the data unit is Q G It generates and transmits differential information indicating the difference from Q G QP value for encoding location information in PCC frame. Transmitted as a reference value of "1" using GPS. Q A : QP value for encoding attribute information in PCC frame. QP is calculated using APS. G The difference information "2." is sent as the difference from Q Gs1 ,Q Gs2 : QP value for encoding position information in slice data...QP value is set using the header of the encoded data for position information. G The difference information "3." and "5." is sent as difference information from Q As1 ,Q As2 : QP value for encoding attribute information in slice data...QP value is set using the header of the encoded data of attribute information. A The difference information "4." and "6." indicating the difference from
[0713] The information used to derive the frame QP is written in the metadata (GPS, APS) related to the frame, and the information used to derive the data QP is written in the metadata related to the data (header of the encoded data).
[0714] In this way, the data QP is generated and transmitted as difference information indicating the difference from the frame QP, thereby reducing the amount of data in the data QP.
[0715] The first decoding unit 5340 refers to the metadata indicated by the arrow in (c) of Figure 104 for each piece of coded data, and acquires the reference value and difference information corresponding to the coded data. Then, the first decoding unit 5340 derives a QP value corresponding to the coded data to be decoded, based on the acquired reference value and difference information.
[0716] For example, the first decoding unit 5340 acquires the reference information "1." and the difference information "2." and "6." indicated by the arrows in (c) of FIG. 104 from the metadata or header, and adds the difference information "2." and "6." to the reference information "1." as shown in the following (Equation G6), thereby obtaining A s2 Derive the QP value.
[0717] Q AS2 =Q G +Δ(Q A ,Q G )+Δ(Q As2 ,Q A ) (Formula G6)
[0718] Point cloud data includes position information and zero or more pieces of attribute information. That is, point cloud data may have no attribute information or may have multiple pieces of attribute information.
[0719] For example, one three-dimensional point may have color information as attribute information, color information and reflection information, or one or more pieces of color information each associated with one or more pieces of viewpoint information.
[0720] Here, an example of a case where two pieces of color information and reflectance information are included will be described with reference to FIG. 105. FIG. 105 is a diagram illustrating a second example of a method for transmitting quantization parameters. (a) of FIG. 105 is a diagram illustrating a second example of the relationship between the reference value of each QP value and the difference information. (b) of FIG. 105 is a diagram illustrating a second example of the transmission order of QP values, position information, and attribute information.
[0721] Q G is an example of the first quantization parameter, similar to FIG.
[0722] The two color information are represented by luminance (luma) Y and color difference (chroma) Cb, Cr. The QP value used to encode the luminance of the first color, Y1, is Q Y1 is the reference value Q G and the difference Δ(Q Y1 , Q G ) and the luminance Y1 is an example of the first luminance, and Q Y1 is an example of a second quantization parameter used to quantize the luminance Y1 as the first luminance. Y1 , Q G ) is the difference information "2."
[0723] Also, Q is the QP value used to encode the chrominance components Cb1 and Cr1 of the first color. Cb1 , Q Cr1 are QY1 and its difference Δ(Q Cb1 ,Q Y1 ), Δ(Q Cr1 ,Q Y1 ) and the color differences Cb1 and Cr1 are examples of the first color differences, and Q Cb1 , Q Cr1 is an example of the third quantization parameter used to quantize the chrominances Cb1 and Cr1 as the first chrominances. Cb1 ,Q Y1 ) is the difference information "3.", and Δ(Q Cr1 ,Q Y1 ) is the difference information "4." Δ(Q Cb1 ,Q Y1 ) and Δ(Q Cr1 ,Q Y1 ) are each an example of a first difference.
[0724] In addition, Q Cb1 and Q Cr1 The same value may be used for each of the Q and Q, or a common value may be used. Cb1 and Q Cr1 Since it is sufficient to use one of them, the other is not necessary.
[0725] Also, Q is the QP value used to encode the luminance Y1D of the first color in the slice data. Y1D Q Y1 and the difference Δ(Q Y1D ,Q Y1 The brightness Y1D of the first color in the slice data is an example of the first brightness of one or more three-dimensional points included in the subspace, and Q Y1D is an example of a fifth quantization parameter used to quantize the luminance Y1D. Y1D ,Q Y1 ) is difference information "10." and is an example of a second difference.
[0726] Similarly, the QP value Q used to encode the chrominance Cb1D and Cr1D of the first color in the slice data is Cb1D , Q Cr1D are respectively, Q Cb1 , Q Cr1 and the difference Δ(Q Cb1D ,Q Cb1 ), Δ(Q Cr1D ,Q Cr1 ) The first color differences Cb1D and Cr1D in the slice data are examples of the first color differences of one or more three-dimensional points included in the subspace, and Q Cb1D , Q Cr1D is an example of the sixth quantization parameter used to quantize the chrominance Cb1D and Cr1D. Cb1D ,Q Cb1 ) is the difference information "11.", and Δ(Q Cr1D ,Q Cr1 ) is the difference information "12." Δ(Q Cb1D ,Q Cb1 ) and Δ(Q Cr1D ,Q Cr1 ) is an example of a third difference.
[0727] The relationship between the QP values of the first color can be similarly applied to the second color, and therefore a description thereof will be omitted.
[0728] Q is the QP value used to encode the reflectance R. R is the reference value Q Gand the difference Δ(Q R ,Q G ) and Q R is an example of a fourth quantization parameter used to quantize the reflectance R. R ,Q G ) is the difference information "8."
[0729] Also, the QP value Q used to encode the reflectance RD in the slice data is RD Q R and the difference Δ(Q RD ,Q R ) and is derived using Δ(Q RD ,Q R ) is the difference information "16."
[0730] In this way, the difference information "9." to "16." indicates the difference information between the data QP and the frame QP.
[0731] For example, if the data QP and the frame QP have the same value, the difference information may be set to 0, or the difference information may be considered to be 0 by not transmitting it.
[0732] For example, when decoding the chrominance Cr2 of the second color, the first decoding unit 5340 obtains the reference information "1." and the difference information "5.", "7.", and "15." indicated by the arrow in (b) of Figure 105 from the metadata or header, and derives the QP value of the chrominance Cr2 by adding the difference information "5.", "7.", and "15." to the reference information "1." as shown in the following (Equation G7).
[0733] Q Cr2D =Q G +Δ(Q Y2 ,Q G )+Δ(Q Cr2 ,Q Y2 )+Δ(Q Cr2D ,Q Cr2 ) (Formula G7)
[0734] Next, an example of dividing position information and attribute information into two tiles and then into two slices will be described with reference to Figure 106. Figure 106 is a diagram illustrating a third example of a method for transmitting quantization parameters. (a) of Figure 106 is a diagram illustrating a third example of the relationship between the reference value of each QP value and the difference information. (b) of Figure 106 is a diagram illustrating a third example of the transmission order of QP values, position information, and attribute information. (c) of Figure 106 is a diagram illustrating intermediate generated values of the difference information in the third example.
[0735] When dividing the image into multiple tiles and then into multiple slices, as shown in (c) of Figure 106, the QP value for each tile (Q At1 ) and differential information Δ(Q At1 ,Q A ) is generated as an intermediate value. Then, after dividing it into slices, the QP value for each slice (Q At1s1 ,Q At1s2 ) and differential information (Δ(Q At1s1 ,Q At1 ),Δ(Q At1s2 ,Q At1 )) is generated.
[0736] In this case, for example, the difference information "4." in (a) of FIG. 106 is derived by the following (Equation G8).
[0737] Δ(Q At1s1 ,Q A )=Δ(Q At1 ,Q A )+Δ(Q At1s1 ,Q At1 ) (Formula G8)
[0738] The first decoding unit 5340 decodes, for example, attribute information A of slice 1 in tile 2. t2s1 When decrypting, the base information "1." and the difference information "2." and "8." indicated by the arrows in (b) of Figure 106 are obtained from the metadata or header, and the difference information "2." and "8." are added to the base information "1." as shown in the following (Equation G9), to obtain the attribute information A t2s1Derive the QP value.
[0739] Q At2s1 =Q G +Δ(Q At2s1 ,Q A )+Δ(Q A ,Q G ) (Formula G9)
[0740] Next, the flow of the encoding process and decoding process of point cloud data according to this embodiment will be described. Fig. 107 is a flowchart of the encoding process of point cloud data according to this embodiment.
[0741] First, the three-dimensional data encoding device determines the division method to be used (S5321). This division method includes whether or not to perform tile division and whether or not to perform slice division. The division method may also include the number of divisions when performing tile division or slice division, and the type of division. The type of division may be a method based on the object shape as described above, a method based on map information or position information, or a method based on the amount of data or the amount of processing. The division method may be determined in advance.
[0742] If tile division is to be performed (Yes in S5322), the three-dimensional data encoding device divides the position information and attribute information into tiles to generate multiple pieces of tile position information and multiple pieces of tile attribute information (S5323). The three-dimensional data encoding device also generates tile additional information related to the tile division.
[0743] If slice division is performed (Yes in S5324), the three-dimensional data encoding device divides the plurality of tile position information and the plurality of tile attribute information (or the position information and the attribute information) to generate a plurality of division position information and a plurality of division attribute information (S5325). In addition, the three-dimensional data encoding device generates position slice additional information and attribute slice additional information related to the slice division.
[0744] Next, the three-dimensional data encoding device generates a plurality of pieces of encoding position information and a plurality of pieces of encoding attribute information by encoding each of the plurality of pieces of division position information and the plurality of pieces of division attribute information (S5326). The three-dimensional data encoding device also generates dependency relationship information.
[0745] Next, the three-dimensional data encoding device generates encoded data (encoded stream) by grouping (multiplexing) the plurality of pieces of encoding position information, the plurality of pieces of encoding attribute information, and the additional information into NAL units (S5327).The three-dimensional data encoding device also transmits the generated encoded data.
[0746] FIG. 108 is a flowchart showing an example of processing for determining a QP value and updating additional information in dividing into tiles (S5323) or dividing into slices (S5325).
[0747] In steps S5323 and S5325, the position information and attribute information of the tiles and / or slices may be divided individually using the respective methods, or may be divided together in common, thereby generating additional information divided for each tile and / or slice.
[0748] At this time, the three-dimensional data encoding device determines a reference value and differential information of the QP value for each divided tile and / or slice (S5331). Specifically, the three-dimensional data encoding device determines the reference value and differential information as exemplified in Figs. 104 to 106.
[0749] Then, the three-dimensional data encoding device updates the additional information so that the determined reference value and difference information are included (S5332).
[0750] FIG. 109 is a flowchart showing an example of the process of encoding the determined QP value in the encoding process (S5326).
[0751] The three-dimensional data encoding device encodes the QP value determined in step S5331 (S5341). Specifically, the three-dimensional data encoding device encodes the reference value and difference information of the QP value included in the updated additional information.
[0752] Then, the three-dimensional data encoding device continues the encoding process until a condition for stopping the encoding process is satisfied, for example, until there is no more data to be encoded (S5342).
[0753] 110 is a flowchart of a decoding process of point cloud data according to this embodiment. First, the three-dimensional data decoding device determines the division method by analyzing additional information (tile additional information, position slice additional information, and attribute slice additional information) related to the division method included in the coded data (coded stream) (S5351). This division method includes whether or not to perform tile division and whether or not to perform slice division. The division method may also include the number of divisions when performing tile division or slice division, the type of division, etc.
[0754] Next, the three-dimensional data decoding device generates split position information and split attribute information by decoding the multiple pieces of coded position information and multiple pieces of coded attribute information contained in the coded data using the dependency information contained in the coded data (S5352).
[0755] If the additional information indicates that slice division has been performed (Yes in S5353), the three-dimensional data decoding device generates multiple tile position information and multiple tile attribute information by combining multiple division position information and multiple division attribute information based on the position slice additional information and attribute slice additional information (S5354).
[0756] If the additional information indicates that tile division has been performed (Yes in S5355), the three-dimensional data decoding device generates position information and attribute information by combining multiple tile position information and multiple tile attribute information (multiple division position information and multiple division attribute information) based on the tile additional information (S5356).
[0757] Figure 111 is a flowchart showing an example of a process of obtaining a QP value and decoding the QP value of a slice or tile when combining information divided by slice (S5354) or combining information divided by tile (S5356).
[0758] The position information and attribute information of the slices or tiles may be combined using different methods or may be combined using the same method.
[0759] The three-dimensional data decoding device decodes the reference value and the difference information from the additional information of the coded stream (S5361).
[0760] Next, the three-dimensional data decoding device calculates a quantization value using the decoded reference value and difference information, and updates the QP value used for inverse quantization to the calculated QP value (S5362). This makes it possible to derive a QP value for inverse quantization of the quantization attribute information for each tile or slice.
[0761] Then, the three-dimensional data decoding device continues the decoding process until a condition for stopping the decoding process is satisfied, for example, until there is no more data to be decoded (S5363).
[0762] Fig. 112 is a diagram showing an example of GPS syntax. Fig. 113 is a diagram showing an example of APS syntax. Fig. 114 is a diagram showing an example of location information header syntax. Fig. 115 is a diagram showing an example of attribute information header syntax.
[0763] As shown in FIG. 112, for example, the GPS, which is additional information of the location information, includes a QP_value indicating an absolute value that is a reference for deriving the QP value. The QP value is, for example, the QP_value shown in FIGS. 104 to 106. G is equivalent to
[0764] Also, as shown in Figure 113, for example, when a 3D point has multiple color information from multiple viewpoints, the APS, which is additional information of the attribute information, may define a default viewpoint and always describe the information of the default viewpoint as the 0th viewpoint. For example, when a 3D data encoding device decodes or displays a single color information, it only needs to decode or display the 0th attribute information.
[0765] The APS includes QP_delta_Attribute_to_Geometry. QP_delta_Attribute_to_Geometry indicates difference information from the reference value (QP_value) described in the GPS. For example, if the attribute information is color information, this difference information is difference information from luminance.
[0766] Furthermore, the GPS may include a flag in its Geometry_header (header of location information) indicating whether or not there is difference information for calculating a QP value. Furthermore, the APS may include a flag in its Attribute_header (header of attribute information) indicating whether or not there is difference information for calculating a QP value. The flag may indicate whether or not there is difference information in the attribute information about the data QP from the frame QP for calculating the data QP.
[0767] In this way, when the first color in the attribute information is represented by the first luminance and the first chrominance, if the quantization is performed using the second quantization parameter for quantizing the first luminance and the third quantization parameter for quantizing the first chrominance, and if the quantization is performed using the fifth quantization parameter and the sixth quantization parameter, the encoded stream may include identification information (flag) indicating that the quantization was performed using the fifth quantization parameter and the sixth quantization parameter.
[0768] 114, the header of the location information may include QP_delta_data_to_frame, which indicates difference information from the reference value (QP_value) described in GPS. The header of the location information may be divided into information for each tile and / or each slice, and the corresponding QP value may be indicated for each tile and / or each slice.
[0769] Also, as shown in FIG. 115, the header of the attribute information may include QP_delta_data_to_frame, which indicates the difference information from the QP value described in the APS.
[0770] 104 to 106, the reference value of the QP value has been described as being the QP value of the position information in the PCC frame, but the present invention is not limited to this, and other values may be used as the reference value.
[0771] FIG. 116 is a diagram illustrating another example of a method for transmitting a quantization parameter.
[0772] (a) and (b) of FIG. 116 show a fourth example in which a common reference value Q is set for the QP values of the location information and attribute information in the PCC frame. In the fourth example, the reference value Q is stored in the GPS, and the QP value of the location information (Q G ) difference information is stored in the GPS, and the QP value of the attribute information (Q Y and Q R ) is stored in the APS. The reference value Q may be stored in the SPS.
[0773] (c) and (d) of FIG. 116 show a fifth example in which a reference value is set independently for each piece of location information and attribute information. In the fifth example, the reference QP values (absolute values) for the location information and attribute information are stored in the GPS and APS, respectively. In other words, the location information has a reference value Q G is set, and the color information of the attribute information is set to the reference value Q Y is set, and the reflectance of the attribute information is set to the reference value Q Rare set respe...
Claims
1. generating encoded data including one or more data units, each including a data unit header; generating a parameter set including a first parameter related to quantization and a parameter set identifier; generating a bitstream including the encoded data and the parameter set; the data unit header of a first data unit of the one or more data units includes a second parameter related to quantization and a parameter set ID; the parameter set ID is the parameter set identifier of the parameter set referenced by the first data unit, The quantization parameter is calculated using the first parameter and the second parameter of the parameter set referenced by the first data unit. Encoding method.
2. the encoded data is generated by encoding one or more data groups; each of the one or more data groups includes one or more components; The number of the second parameters included in the data unit is determined based on the number of the one or more components. The encoding method of claim 1 .
3. the encoded data is generated by encoding one or more data groups; each of the one or more data groups includes one or more components; The number of the first parameters included in the parameter set is constant. The encoding method of claim 1 .
4. a processor; a memory; The processor uses the memory to: generating encoded data including one or more data units, each including a data unit header; generating a parameter set including a first parameter related to quantization and a parameter set identifier; generating a bitstream including the encoded data and the parameter set; the data unit header of a first data unit of the one or more data units includes a second parameter related to quantization and a parameter set ID; the parameter set ID is the parameter set identifier of the parameter set referenced by the first data unit, The quantization parameter is calculated using the first parameter and the second parameter of the parameter set referenced by the first data unit. Encoding device.
5. obtaining, from the bitstream, coded data including one or more data units each including a data unit header, and a parameter set including a first parameter related to quantization and a parameter set identifier; Decoding the encoded data; the data unit header of a first data unit of the one or more data units includes a second parameter related to quantization and a parameter set ID; the parameter set ID is the parameter set identifier of the parameter set referenced by the first data unit, The quantization parameter is calculated using the first parameter and the second parameter of the parameter set referenced by the first data unit. Decryption method.
6. a processor; a memory; The processor uses the memory to: obtaining, from the bitstream, coded data including one or more data units each including a data unit header, and a parameter set including a first parameter related to quantization and a parameter set identifier; Decoding the encoded data; the data unit header of a first data unit of the one or more data units includes a second parameter related to quantization and a parameter set ID; the parameter set ID is the parameter set identifier of the parameter set referenced by the first data unit, The quantization parameter is calculated using the first parameter and the second parameter of the parameter set referenced by the first data unit. Decryption device.
Citation Information
Patent Citations
Motion-compensated compression of dynamic voxelized point clouds
US20170347120A1
Display method and display device
WO2018083999A1
Information processing device, information processing method, and program
WO2020071111A1
Map display device
WO2014020663A1