Three-dimensional data encoding method, three-dimensional data decoding method, three-dimensional data encoding device, and three-dimensional data decoding device

By combining multiple point cloud frames with metadata for efficient decoding, the method enhances encoding efficiency and supports mixed encoding formats for network-efficient transmission of three-dimensional data.

JP2025159039APending Publication Date: 2025-10-17PANASONIC INTELLECTUAL PROPERTY CORP OF AMERICA

Patent Information

Application Number
JP2025131660
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Priority Date
2018-12-06
Filing Date
2025-08-06
Publication Date
2025-10-17

AI Technical Summary

Technical Problem

Existing three-dimensional data encoding methods are inefficient, particularly in handling large volumes of point cloud data, and lack support for mixed encoding formats and network-efficient transmission.

Method used

A method that combines multiple point cloud frames to generate encoded data with metadata for efficient decoding, utilizing first and second metadata to identify overlapping points and reduce redundancy.

Benefits of technology

Improves encoding efficiency by collectively encoding multiple point cloud data, allowing for efficient identification and reduction of redundant data, and supports mixed encoding formats for network-efficient transmission.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2025159039000001_ABST
    Figure 2025159039000001_ABST
Patent Text Reader

Abstract

To provide a three-dimensional data encoding method capable of achieving further improvements.SOLUTION: The three-dimensional data encoding method includes the following steps of: generating an encoded data of a second frame in which multiple first frames, including three-dimensional data with different time-stamps, are encoded; generating a first metadata that is used for decoding the second frame; generating a second metadata that is used after splitting the second frame into multiple first frames; and generating a bitstream including an encoded data, a first metadata, and a second metadata.SELECTED DRAWING: Figure 120
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] The present disclosure relates to a three-dimensional data encoding method, a three-dimensional data decoding method, a three-dimensional data encoding device, and a three-dimensional data 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 process of three-dimensional data, it is desirable to be able to improve the encoding efficiency.

[0008] An object of the present disclosure is to provide a three-dimensional data encoding method, a three-dimensional data decoding method, a three-dimensional data encoding device, or a three-dimensional data decoding device that can improve encoding efficiency. [Means for solving the problem]

[0009] A three-dimensional data encoding method according to one embodiment of the present disclosure generates encoded data in which a second frame is encoded by combining multiple first frames, each containing three-dimensional data at different times; generates first metadata to be used when decoding the second frame; generates second metadata to be used after dividing the second frame into the multiple first frames; and generates a bitstream including the encoded data, the first metadata, and the second metadata.

[0010] A three-dimensional data decoding method according to one embodiment of the present disclosure obtains a bitstream including encoded data in which a second frame is encoded by combining multiple first frames, each containing three-dimensional data at different times, first metadata to be used when decoding the second frame, and second metadata to be used after the second frame is divided into the multiple first frames, and decodes the encoded data using the first metadata. [Effects of the Invention]

[0011] The present disclosure can provide a three-dimensional data encoding method, a three-dimensional data decoding method, a three-dimensional data encoding device, or a three-dimensional data decoding device that can improve encoding efficiency. [Brief explanation of the drawings]

[0012] [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 diagram illustrating a basic structure of the ISOBMFF according to the second embodiment. [Figure 15] FIG. 15 is a diagram illustrating a protocol stack according to the second embodiment. [Figure 16] FIG. 16 is a diagram illustrating the configurations of an encoding unit and a multiplexing unit according to the third embodiment. [Figure 17] FIG. 17 is a diagram illustrating an example of a structure of coded data according to the third embodiment. [Figure 18] FIG. 18 is a diagram showing an example of the structure of coded data and NAL units according to the third embodiment. [Figure 19] FIG. 19 is a diagram illustrating an example of the semantics of pcc_nal_unit_type according to the third embodiment. [Figure 20] FIG. 20 is a diagram showing an example of the transmission order of NAL units according to the third embodiment. [Figure 21] FIG. 21 is a block diagram of a first encoding unit according to the fourth embodiment. [Figure 22] FIG. 22 is a block diagram of a first decoding unit according to the fourth embodiment. [Figure 23] FIG. 23 is a block diagram of a division unit according to the fourth embodiment. [Figure 24] FIG. 24 is a diagram showing an example of division into slices and tiles according to the fourth embodiment. [Figure 25] FIG. 25 is a diagram showing an example of a division pattern of slices and tiles according to the fourth embodiment. [Figure 26] FIG. 26 is a diagram illustrating an example of a dependency relationship according to the fourth embodiment. [Figure 27] FIG. 27 is a diagram showing an example of the decoding order of data according to the fourth embodiment. [Figure 28] FIG. 28 is a flowchart of the encoding process according to the fourth embodiment. [Figure 29] FIG. 29 is a block diagram of a coupling unit according to the fourth embodiment. [Figure 30] FIG. 30 is a diagram showing an example of the structure of coded data and NAL units according to the fourth embodiment. [Figure 31] FIG. 31 is a flowchart of the encoding process according to the fourth embodiment. [Figure 32] FIG. 32 is a flowchart of the decoding process according to the fourth embodiment. [Figure 33] FIG. 33 is a flowchart of the encoding process according to the fourth embodiment. [Figure 34] FIG. 34 is a flowchart of the decoding process according to the fourth embodiment. [Figure 35] FIG. 35 is a diagram showing an image of generating a tree structure and occupancy codes from point cloud data of multiple frames according to the fifth embodiment. [Figure 36] FIG. 36 is a diagram illustrating an example of frame combination according to the fifth embodiment. [Figure 37] FIG. 37 is a diagram showing an example of combining multiple frames according to the fifth embodiment. [Figure 38] FIG. 38 is a flowchart of three-dimensional data encoding processing according to the fifth embodiment. [Figure 39] FIG. 39 is a flowchart of the encoding process according to the fifth embodiment. [Figure 40] FIG. 40 is a flowchart of three-dimensional data decoding processing according to the fifth embodiment. [Figure 41] FIG. 41 is a flowchart of the decoding and division process according to the fifth embodiment. [Figure 42] FIG. 42 is a block diagram of an encoding unit according to the fifth embodiment. [Figure 43] FIG. 43 is a block diagram of a division unit according to the fifth embodiment. [Figure 44] FIG. 44 is a block diagram of a position information encoding unit according to the fifth embodiment. [Figure 45] FIG. 45 is a block diagram of an attribute information encoding unit according to the fifth embodiment. [Figure 46] FIG. 46 is a flowchart of the encoding process of point cloud data according to the fifth embodiment. [Figure 47] FIG. 47 is a flowchart of the encoding process according to the fifth embodiment. [Figure 48] FIG. 48 is a block diagram of a decoding unit according to the fifth embodiment. [Figure 49] FIG. 49 is a block diagram of a position information decoding unit according to the fifth embodiment. [Figure 50] FIG. 50 is a block diagram of an attribute information decoding unit according to the fifth embodiment. [Figure 51]FIG. 51 is a block diagram of a combining unit according to the fifth embodiment. [Figure 52] FIG. 52 is a flowchart of the decoding process of point cloud data according to the fifth embodiment. [Figure 53] FIG. 53 is a flowchart of the decoding process according to the fifth embodiment. [Figure 54] FIG. 54 is a diagram showing an example of a frame combining pattern according to the fifth embodiment. [Figure 55] FIG. 55 is a diagram illustrating an example of a configuration of a PCC frame according to the fifth embodiment. [Figure 56] FIG. 56 is a diagram showing the structure of the encoding position information according to the fifth embodiment. [Figure 57] FIG. 57 is a diagram illustrating an example of the syntax of the header of the encoding position information according to the fifth embodiment. [Figure 58] FIG. 58 is a diagram illustrating an example of the syntax of the payload of the encoded position information according to the fifth embodiment. [Figure 59] FIG. 59 is a diagram illustrating an example of leaf node information according to the fifth embodiment. [Figure 60] FIG. 60 is a diagram illustrating an example of leaf node information according to the fifth embodiment. [Figure 61] FIG. 61 is a diagram showing an example of bitmap information according to the fifth embodiment. [Figure 62] FIG. 62 is a diagram showing the structure of the encoding attribute information according to the fifth embodiment. [Figure 63] FIG. 63 is a diagram illustrating an example of the syntax of the header of the encoding attribute information according to the fifth embodiment. [Figure 64] FIG. 64 is a diagram illustrating an example of the syntax of the payload of the encoded attribute information according to the fifth embodiment. [Figure 65] FIG. 65 is a diagram showing a structure of coded data according to the fifth embodiment. [Figure 66] FIG. 66 is a diagram showing the data transmission order and data reference relationships according to the fifth embodiment. [Figure 67]FIG. 67 is a diagram showing the data transmission order and data reference relationships according to the fifth embodiment. [Figure 68] FIG. 68 is a diagram showing the data transmission order and data reference relationships according to the fifth embodiment. [Figure 69] FIG. 69 is a diagram showing an example of decoding some frames according to the fifth embodiment. [Figure 70] FIG. 70 is a diagram showing the data transmission order and data reference relationships according to the fifth embodiment. [Figure 71] FIG. 71 is a diagram showing the data transmission order and data reference relationships according to the fifth embodiment. [Figure 72] FIG. 72 is a diagram showing the data transmission order and data reference relationships according to the fifth embodiment. [Figure 73] FIG. 73 is a diagram showing the data transmission order and data reference relationships according to the fifth embodiment. [Figure 74] FIG. 74 is a flowchart of the encoding process according to the fifth embodiment. [Figure 75] FIG. 75 is a flowchart of the decoding process according to the fifth embodiment. [Figure 76] FIG. 76 is a block diagram of an encoding unit according to the sixth embodiment. [Figure 77] FIG. 77 is a block diagram of a frame index generating unit according to the sixth embodiment. [Figure 78] FIG. 78 is a block diagram of a decoding unit according to the sixth embodiment. [Figure 79] FIG. 79 is a block diagram of a frame index acquisition unit according to the sixth embodiment. [Figure 80] FIG. 80 is a block diagram of a frame index encoding unit according to the sixth embodiment. [Figure 81] FIG. 81 is a diagram illustrating an example of a leaf node and a bitmap according to the sixth embodiment. [Figure 82] FIG. 82 is a diagram showing an example of ranking according to the sixth embodiment. [Figure 83]FIG. 83 is a diagram illustrating an example of a lookup table according to the sixth embodiment. [Figure 84] FIG. 84 is a flowchart of the encoding process according to the sixth embodiment. [Figure 85] FIG. 85 is a flowchart of the coded data generation process according to the sixth embodiment. [Figure 86] FIG. 86 is a diagram illustrating an example of the syntax of the combined information according to the sixth embodiment. [Figure 87] FIG. 87 is a block diagram of a frame index acquisition unit according to the sixth embodiment. [Figure 88] FIG. 88 is a diagram showing an example of a lookup table according to the sixth embodiment. [Figure 89] FIG. 89 is a flowchart of a frame index decoding process according to the sixth embodiment. [Figure 90] FIG. 90 is a flowchart of the process of decoding common information and individual information according to the sixth embodiment. [Figure 91] FIG. 91 is a diagram illustrating a first example of the syntax of a leaf node according to the sixth embodiment. [Figure 92] FIG. 92 is a diagram illustrating a second example of the syntax of a leaf node according to the sixth embodiment. [Figure 93] FIG. 93 is a diagram illustrating a first example of the syntax of the location information according to the sixth embodiment. [Figure 94] FIG. 94 is a diagram illustrating a second example of the syntax of the location information according to the sixth embodiment. [Figure 95] FIG. 95 is a flowchart of the encoding process according to the sixth embodiment. [Figure 96] FIG. 96 is a flowchart of the decoding process according to the sixth embodiment. [Figure 97] FIG. 97 is a diagram showing an example of overlapping points when frames are combined according to the seventh embodiment. [Figure 98] FIG. 98 is a diagram illustrating an example of the syntax of a header according to the seventh embodiment. [Figure 99]FIG. 99 is a diagram illustrating an example of the syntax of node information according to the seventh embodiment. [Figure 100] FIG. 100 is a diagram showing an example of overlapping points according to the seventh embodiment. [Figure 101] FIG. 101 is a diagram showing an example of overlapping points according to the seventh embodiment. [Figure 102] FIG. 102 is a diagram showing an example of overlapping points according to the seventh embodiment. [Figure 103] FIG. 103 is a flowchart of three-dimensional data encoding processing according to the seventh embodiment. [Figure 104] FIG. 104 is a diagram illustrating an example of sorting processing according to the seventh embodiment. [Figure 105] FIG. 105 is a diagram illustrating an example of sorting processing according to the seventh embodiment. [Figure 106] FIG. 106 is a flowchart of three-dimensional data decoding processing according to the seventh embodiment. [Figure 107] FIG. 107 is a diagram illustrating an example of the syntax of node information according to the seventh embodiment. [Figure 108] FIG. 108 is a diagram showing the relationship between the bitmap information according to the seventh embodiment and num_combine_point and combine_equalzero. [Figure 109] FIG. 109 is a diagram showing the relationship between the bitmap information according to the seventh embodiment and num_combine_point and combine_idx. [Figure 110] FIG. 110 is a flowchart of three-dimensional data encoding processing according to the seventh embodiment. [Figure 111] FIG. 111 is a flowchart of three-dimensional data decoding processing according to the seventh embodiment. [Figure 112] FIG. 112 is a diagram showing an example of syntax of an SPS according to the seventh embodiment. [Figure 113] FIG. 113 is a diagram illustrating an example of syntax of the GPS according to the seventh embodiment. [Figure 114] FIG. 114 is a diagram illustrating an example of syntax of the GPS according to the seventh embodiment. [Figure 115] FIG. 115 is a diagram illustrating an example of the relationship between the ratio of coding efficiencies and whether or not frame splicing is applicable according to the seventh embodiment. In FIG. [Figure 116] FIG. 116 is a diagram illustrating an example of the relationship between the ratio of coding efficiencies and the distance between frames according to the seventh embodiment. In FIG. [Figure 117] FIG. 117 is a diagram schematically illustrating switching whether or not frame aggregation according to the seventh embodiment is applicable. [Figure 118] FIG. 118 is a flowchart of three-dimensional data encoding processing according to the seventh embodiment. [Figure 119] FIG. 119 is a flowchart of three-dimensional data encoding processing according to the seventh embodiment. [Figure 120] FIG. 120 is a block diagram of a three-dimensional data encoding device according to the seventh embodiment. [Figure 121] FIG. 121 is a block diagram of a three-dimensional data encoding device according to the seventh embodiment. [Figure 122] FIG. 122 is a diagram showing an example of the structure of coded data according to the seventh embodiment. [Figure 123] FIG. 123 is a diagram showing an example of the structure of coded data according to the seventh embodiment. [Figure 124] FIG. 124 is a flowchart of the metadata decoding process according to the seventh embodiment. [Figure 125] FIG. 125 is a flowchart of three-dimensional data encoding processing according to the seventh embodiment. [Figure 126] FIG. 126 is a flowchart of three-dimensional data decoding processing according to the seventh embodiment. DETAILED DESCRIPTION OF THE INVENTION

[0013] A three-dimensional data encoding method according to one embodiment of the present disclosure generates combined point cloud data by combining multiple point cloud data, and generates a bit stream by encoding the combined point cloud data, wherein the bit stream includes (i) first information indicating the maximum number of overlapping points that are three-dimensional points with the same position information and are included in each of the multiple point cloud data, and (ii) multiple pieces of second information that are indices assigned values ​​equal to the maximum number, correspond to each of point indexes for identifying multiple overlapping points that belong to the same point cloud data, and indicate to which of the multiple point cloud data the three-dimensional point having the corresponding point index belongs.

[0014] This allows for improved encoding efficiency by collectively encoding multiple point cloud data. Furthermore, when overlapping points exist within point cloud data and between point cloud data, the first information and the second information allow for efficient identification of overlapping points.

[0015] For example, each of the plurality of second information may include third information indicating the number of three-dimensional points having the corresponding point index, and fourth information that, in combination with the third information, can identify to which of the plurality of point cloud data the three-dimensional point having the corresponding point index belongs.

[0016] For example, when the number of the three-dimensional points indicated by the third information is equal to the number of the plurality of point cloud data, the corresponding second information does not need to include the fourth information.

[0017] This allows the amount of code in the bitstream to be reduced.

[0018] For example, each of the plurality of pieces of second information may be bitmap information having the same number of bits as the number of the plurality of point cloud data.

[0019] A three-dimensional data decoding method according to one embodiment of the present disclosure obtains, from a bit stream generated by encoding combined point cloud data in which multiple point cloud data are combined, (i) first information indicating the maximum number of overlapping points, which are three-dimensional points with the same position information, included in each of the multiple point cloud data, and (ii) multiple pieces of second information, which are indexes assigned values ​​equal to the maximum number, correspond to each of point indexes for identifying multiple overlapping points belonging to the same point cloud data, and indicate to which of the multiple point cloud data the three-dimensional point having the corresponding point index belongs, and uses the first information and the multiple pieces of second information to (i) decode the combined point cloud data from the bit stream, and (ii) generate the multiple point cloud data from the combined point cloud data.

[0020] This allows for improved encoding efficiency by collectively encoding multiple point cloud data. Furthermore, when overlapping points exist within point cloud data and between point cloud data, the first information and the second information allow for efficient identification of overlapping points.

[0021] For example, each of the plurality of second information may include third information indicating the number of three-dimensional points having the corresponding point index, and fourth information that, in combination with the third information, can identify to which of the plurality of point cloud data the three-dimensional point having the corresponding point index belongs.

[0022] For example, when the number of the three-dimensional points indicated by the third information is equal to the number of the plurality of point cloud data, the corresponding second information does not need to include the fourth information.

[0023] This allows the amount of code in the bitstream to be reduced.

[0024] For example, each of the plurality of pieces of second information may be bitmap information having the same number of bits as the number of the plurality of point cloud data.

[0025] Furthermore, a three-dimensional data encoding device according to one aspect of the present disclosure includes a processor and a memory, and the processor uses the memory to generate combined point cloud data by combining multiple point cloud data, and generates a bit stream by encoding the combined point cloud data, and the bit stream includes (i) first information indicating the maximum number of overlapping points that are three-dimensional points with the same position information and are included in each of the multiple point cloud data, and (ii) multiple pieces of second information that are indices assigned values ​​equal to the maximum number, correspond to each of the point indexes for identifying multiple overlapping points that belong to the same point cloud data, and indicate to which of the multiple point cloud data the three-dimensional point having the corresponding point index belongs.

[0026] This allows for improved encoding efficiency by collectively encoding multiple point cloud data. Furthermore, when overlapping points exist within point cloud data and between point cloud data, the first information and the second information allow for efficient identification of overlapping points.

[0027] In addition, a three-dimensional data decoding device according to one aspect of the present disclosure includes a processor and a memory, and the processor uses the memory to obtain, from a bit stream generated by encoding combined point cloud data in which multiple point cloud data are combined, (i) first information indicating the maximum number of overlapping points, which are three-dimensional points with the same position information, included in each of the multiple point cloud data, and (ii) multiple pieces of second information, which are indexes assigned values ​​equal to the maximum number, correspond to each of point indexes for identifying multiple overlapping points belonging to the same point cloud data, and indicate to which of the multiple point cloud data the three-dimensional point having the corresponding point index belongs, and (ii) uses the first information and the multiple pieces of second information to (i) decode the combined point cloud data from the bit stream, and (ii) generate the multiple point cloud data from the combined point cloud data.

[0028] This allows for improved encoding efficiency by collectively encoding multiple point cloud data. Furthermore, when overlapping points exist within point cloud data and between point cloud data, the first information and the second information allow for efficient identification of overlapping points.

[0029] 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.

[0030] 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 not recited in independent claims will be described as optional components.

[0031] (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.

[0032] 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.

[0033] 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.

[0034] 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).

[0035] 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.

[0036] 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.

[0037] 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.

[0038] 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.

[0039] 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.

[0040] 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.

[0041] 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.

[0042] 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.

[0043] 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.

[0044] 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.

[0045] 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 .

[0046] 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.

[0047] 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 .

[0048] The sensor information acquisition unit 4621 acquires sensor information from the sensor terminal 4603 .

[0049] 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.

[0050] 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.

[0051] The decoding unit 4624 reconstructs the point cloud data by decoding the encoded data.

[0052] 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.

[0053] 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.

[0054] 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.

[0055] 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.

[0056] 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.

[0057] 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.

[0058] Point cloud data contains 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.

[0059] 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.

[0060] 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.

[0061] 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.

[0062] 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.

[0063] 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.

[0064] 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.

[0065] 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.

[0066] Furthermore, there may be point cloud data of various densities, such as sparse point cloud data and dense point cloud data.

[0067] 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.

[0068] 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.

[0069] 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.

[0070] 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.

[0071] The decoding unit 4624 decodes the coded data based on a predetermined coding method to decode the point group data.

[0072] 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.

[0073] Multiplexing methods or file formats include ISOBMFF, MPEG-DASH, which is an ISOBMFF-based transmission method, MMT, MPEG-2 TS Systems, and RMP.

[0074] The demultiplexer 4623 extracts PCC encoded data, other media, time information, and the like from the multiplexed data.

[0075] 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.

[0076] 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.

[0077] 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.

[0078] As a broadcasting system, for example, DVB-T2, DVB-S2, DVB-C2, ATSC3.0, or ISDB-S3 is used.

[0079] 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.

[0080] 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).

[0081] 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.

[0082] 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.

[0083] 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.

[0084] 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.

[0085] The additional information encoding unit 4633 generates encoded additional information (Compressed MetaData) that is encoded data by encoding compressible data from the additional information.

[0086] 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).

[0087] 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.

[0088] 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).

[0089] 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.

[0090] 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.

[0091] 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.

[0092] 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.

[0093] 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.

[0094] 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.

[0095] 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.

[0096] 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).

[0097] 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).

[0098] 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.

[0099] 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.

[0100] 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.

[0101] 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.

[0102] 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.

[0103] 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).

[0104] 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.

[0105] 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).

[0106] 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.

[0107] 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 may be AVC or HEVC.

[0108] The additional information decoding unit 4663 decodes the encoded additional information to generate additional information including map information and the like.

[0109] 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.

[0110] 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.

[0111] 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.

[0112] 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.

[0113] 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.

[0114] In the following description, unless a specific encoding method is specified, it refers to either the first encoding method or the second encoding method.

[0115] (Embodiment 2) In this embodiment, a method for storing NAL units in an ISOBMFF file will be described.

[0116] 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.

[0117] 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.

[0118] 14 is a diagram showing the basic structure (file) of ISOBMFF. An ISOBMFF file mainly includes boxes such as ftyp, which indicates the file brand using 4CC (four-character code), moov, which stores metadata such as control information, and mdat, which stores data.

[0119] 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.

[0120] 15 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.

[0121] (Embodiment 3) 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.

[0122] 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).

[0123] 16 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.

[0124] 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.

[0125] 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.

[0126] 17 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.

[0127] 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.

[0128] 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.

[0129] 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.

[0130] 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. 17 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).

[0131] 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.

[0132] Furthermore, encoded attribute data consisting of multiple frames is defined as an 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.

[0133] Furthermore, in the first encoding method, the encoded attribute data depends on the encoded position data.

[0134] 17 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.

[0135] 17 shows an example in which there is one type of position information and two types of attribute information, but 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.

[0136] 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.

[0137] 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.

[0138] 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.

[0139] 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.

[0140] 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.

[0141] Next, generation of identification information for the start of a GOF will be described. The encoding unit 4801 generates a GOF header as identification information indicating 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 decoding of the coded data.

[0142] 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.

[0143] 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.

[0144] 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.

[0145] 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.

[0146] 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.

[0147] Next, the structure of coded data and the method of storing coded data in NAL units will be described.

[0148] For example, a data format is defined for each type of coded data. Figure 18 shows examples of coded data and NAL units.

[0149] For example, as shown in Fig. 18, 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.

[0150] The header includes, for example, identification information for identifying the data, such as the data type or frame number.

[0151] 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.

[0152] 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.

[0153] 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 19 shows an example of the semantics of pcc_nal_unit_type.

[0154] 19, 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.

[0155] 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.

[0156] Next, the data transmission order will be explained. The following explains the restrictions on the transmission order of NAL units.

[0157] 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.

[0158] 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.

[0159] 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.

[0160] 20 is a diagram showing examples of the transmission order of NAL units, and shows three examples: position information priority, parameter priority, and data integration.

[0161] The sending order with priority given to location information is an example in which information related to location information and information related to attribute information are sent together. In this sending order, the sending of information related to location information is completed earlier than the sending of information related to attribute information.

[0162] 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.

[0163] In FIG. 20, the attributes XSPS and YSPS are combined and written as the attribute SPS, but the attributes XSPS and YSPS may be arranged separately.

[0164] In the parameter set priority sending order, the parameter sets are sent first and the data is sent later.

[0165] 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.

[0166] 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.

[0167] 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. 20, 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.

[0168] 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.

[0169] 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.

[0170] 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.

[0171] (Fourth embodiment) HEVC encoding has data division tools such as slicing or tiling to enable parallel processing in the decoding device, but PCC (Point Cloud Compression) encoding does not yet have such tools.

[0172] In PCC, various data division methods are possible depending on parallel processing, compression efficiency, and compression algorithms. This section explains the definitions of slices and tiles, the data structure, and transmission and reception methods.

[0173] 21 is a block diagram showing the configuration of a first encoding unit 4910 included in the three-dimensional data encoding device according to this embodiment. The first encoding unit 4910 generates encoded data (encoded stream) by encoding point cloud data using a first encoding method (GPCC (Geometry based PCC)). The first encoding unit 4910 includes a division unit 4911, multiple position information encoding units 4912, multiple attribute information encoding units 4913, an additional information encoding unit 4914, and a multiplexing unit 4915.

[0174] The dividing unit 4911 divides the point cloud data to generate a plurality of pieces of divided data. Specifically, the dividing unit 4911 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 4911 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 4911 also generates additional information related to the division.

[0175] The position information encoding units 4912 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 4912 process the plurality of pieces of divided position information in parallel.

[0176] The attribute information encoding units 4913 encode the divided attribute information to generate the coded attribute information For example, the attribute information encoding units 4913 process the divided attribute information in parallel.

[0177] The additional information encoding unit 4914 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 4911 at the time of division.

[0178] The multiplexing unit 4915 multiplexes multiple pieces of encoding position information, multiple pieces of encoding attribute information, and encoded additional information to generate encoded data (encoded stream), and transmits the generated encoded data. The encoded additional information is also used during decoding.

[0179] 21 shows an example in which there are two position information encoders 4912 and two attribute information encoders 4913, but the number of position information encoders 4912 and two attribute information encoders 4913 may each be one, or three or more. Furthermore, multiple pieces of divided data may be processed in parallel within the same chip, like 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.

[0180] 22 is a block diagram showing the configuration of the first decoding unit 4920. The first decoding unit 4920 restores the point cloud data by decoding coded data (coded stream) generated by coding the point cloud data using the first coding method (GPCC). The first decoding unit 4920 includes a demultiplexing unit 4921, multiple position information decoding units 4922, multiple attribute information decoding units 4923, an additional information decoding unit 4924, and a combining unit 4925.

[0181] The demultiplexing unit 4921 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.

[0182] The position information decoding units 4922 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 4922 process the plurality of pieces of encoded position information in parallel.

[0183] The attribute information decoding units 4923 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 4923 process the plurality of pieces of encoded attribute information in parallel.

[0184] The plurality of additional information decoders 4924 generate additional information by decoding the encoded additional information.

[0185] The combining unit 4925 generates position information by combining a plurality of pieces of divided position information using the additional information. The combining unit 4925 generates attribute information by combining a plurality of pieces of divided attribute information using the additional information.

[0186] 22 shows an example in which there are two position information decoding units 4922 and two attribute information decoding units 4923, but the number of position information decoding units 4922 and two attribute information decoding units 4923 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.

[0187] Next, it will be described how the dividing unit 4911 has a configuration. Fig. 23 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).

[0188] 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 (Slice MetaData) including information related to the slice division and information generated in the slice division.

[0189] 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.

[0190] 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.

[0191] 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.

[0192] 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.

[0193] A method for dividing point cloud data will be described below. Fig. 24 is a diagram showing an example of division into slices and tiles.

[0194] 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.

[0195] 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.

[0196] 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.

[0197] Although FIG. 24 shows an example of division using an octree structure, any number of divisions and any division method may be used.

[0198] 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.

[0199] 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.

[0200] 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.

[0201] 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.

[0202] 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).

[0203] 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.

[0204] 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.

[0205] 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.

[0206] 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.

[0207] 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.

[0208] 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.

[0209] 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.

[0210] 25 is a diagram showing examples of slice and tile division patterns. DU in the diagram is a data unit (DataUnit) and indicates 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.

[0211] 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.

[0212] 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.

[0213] Next, a method for encoding divided data will be described. A three-dimensional data encoding device (first encoding unit 4910) 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. In other words, 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.

[0214] 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.

[0215] Figure 26 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.

[0216] In the figure, G indicates location information, and A indicates attribute information. s1 indicates the position information of slice number 1, and G s2indicates the position information of slice number 2. G s1t1 indicates the position information of slice number 1 and tile number 1, and G s1t2 indicates the position information of slice number 1 and tile number 2, and G s2t1 indicates the position information of slice number 2 and tile number 1, and G s2t2 indicates the position information of slice number 2 and tile number 2. Similarly, A s1 indicates the attribute information of slice number 1, and A s2 indicates the attribute information of slice number 2. s1t1 indicates the attribute information of slice number 1 and tile number 1, and A s1t2 indicates the attribute information of slice number 1 and tile number 2, and A s2t1 indicates the attribute information of slice number 2 and tile number 1, and A s2t2 indicates attribute information of slice number 2 and tile number 2.

[0217] Mslice indicates slice additional information, MGtile indicates position tile additional information, and MAtile indicates attribute tile additional information. s1t1 is attribute information A s1t1 D s2t1 is attribute information A s2t1 This shows dependency information for

[0218] 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.

[0219] FIG. 27 is a diagram showing an example of the data decoding order. In the example of FIG. 27, 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 additional information and dependency information before the data.

[0220] 28 is a flowchart showing the flow of processing by the three-dimensional data encoding device. First, the three-dimensional data encoding device encodes data of multiple slices or tiles as described above (S4901). Next, the three-dimensional data encoding device rearranges the data so that the dependent data comes first, as shown in FIG. 27 (S4902). Next, the three-dimensional data encoding device multiplexes the rearranged data (into NAL units) (S4903).

[0221] Next, a description will be given of the configuration of the combining unit 4925 included in the first decoding unit 4920. Fig. 29 is a block diagram showing the configuration of the combining unit 4925. The combining unit 4925 includes a position information tile combining unit 4941 (geometry tile combiner), an attribute information tile combining unit 4942 (attribute tile combiner), and a slice combining unit (slice combiner).

[0222] The position information tile combining unit 4941 generates multiple slice position information pieces by combining multiple pieces of divided position information pieces using the position tile additional information. The attribute information tile combining unit 4942 generates multiple slice attribute information pieces by combining multiple pieces of divided attribute information pieces using the attribute tile additional information.

[0223] The slice combining unit 4943 generates position information by combining a plurality of slice position information pieces using the slice additional information. Also, the slice combining unit 4943 generates attribute information by combining a plurality of slice attribute information pieces using the slice additional information.

[0224] 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.

[0225] 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.

[0226] 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. Fig. 30 is a diagram showing the structure of coded data and a method of storing the coded data in NAL units.

[0227] The coded data (segmentation position information and segmentation attribute information) is stored in the payload of the NAL unit.

[0228] 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.

[0229] Note that all or part of the above information may be stored in either the header of the division position information or the header of the division attribute information, but not in the other. For example, if the same division method is used for the position information and the attribute information, the division type (slice_type, tile_type) and index information (slice_idx, tile_idx) are the same for the position information and the attribute information. Therefore, this 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, this information may be included in the header of the position information, but not 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 or tile as the slice or tile of the dependent position information.

[0230] Furthermore, additional information related to slice division or tile division (slice additional information, position tile additional information, or attribute tile additional information), and dependency information indicating dependency relationships may be stored in an existing parameter set (GPS, APS, position SPS, attribute SPS, etc.) and transmitted. If the division method changes for each frame, information indicating the division method may be stored in a parameter set for each frame (GPS or APS, etc.). If the division method does not change within a sequence, information indicating the division method may be stored in a parameter set for each sequence (position SPS or attribute SPS). Furthermore, if the same division method is used for position information and attribute information, information indicating the division method may be stored in a parameter set of the PCC stream (stream PS).

[0231] The above information may be stored in any one of the above parameter sets, or in multiple parameter sets. Alternatively, a parameter set for tile division or slice division may be defined, and the above information may be stored in the parameter set. Alternatively, the information may be stored in a header of the encoded data.

[0232] 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.

[0233] Next, the flow of the encoding process and decoding process of point cloud data according to this embodiment will be described. Fig. 31 is a flowchart of the encoding process of point cloud data according to this embodiment.

[0234] First, the three-dimensional data encoding device determines the division method to be used (S4911). This division method includes whether or not to perform slice division and whether or not to perform tile division. The division method may also include the number of divisions when performing slice division or tile 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.

[0235] If slice division is performed (Yes in S4912), the three-dimensional data encoding device generates a plurality of slice position information and a plurality of slice attribute information by dividing the position information and the attribute information together (S4913). The three-dimensional data encoding device also generates slice additional information related to the slice division. Note that the three-dimensional data encoding device may divide the position information and the attribute information independently.

[0236] If tile division is performed (Yes in S4914), the three-dimensional data encoding device generates multiple pieces of division position information and multiple pieces of division attribute information by independently dividing multiple pieces of slice position information and multiple pieces of slice attribute information (or position information and attribute information) (S4915). The three-dimensional data encoding device also generates position tile additional information and attribute tile additional information related to the tile division. Note that the three-dimensional data encoding device may divide the slice position information and slice attribute information together.

[0237] 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 (S4916). In addition, the three-dimensional data encoding device generates dependency relationship information.

[0238] 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 (S4917).The three-dimensional data encoding device also transmits the generated encoded data.

[0239] 32 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 related to the division method (slice additional information, position tile additional information, and attribute tile additional information) included in the coded data (coded stream) (S4921). This division method includes whether or not to perform slice division and whether or not to perform tile division. The division method may also include the number of divisions when performing slice division or tile division, the type of division, etc.

[0240] 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 (S4922).

[0241] If the additional information indicates that tile division has been performed (Yes in S4923), the three-dimensional data decoding device generates a plurality of slice position information and a plurality of slice 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 tile additional information and the attribute tile additional information (S4924). 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.

[0242] When the additional information indicates that slice division has been performed (Yes in S4925), the three-dimensional data decoding device generates position information and attribute information by combining, based on the slice additional information, a plurality of pieces of slice position information and a plurality of pieces of slice attribute information (a plurality of pieces of division position information and a plurality of pieces of division attribute information) in the same manner (S4926). Note that the three-dimensional data decoding device may combine, using different methods, a plurality of pieces of slice position information and a plurality of pieces of slice attribute information.

[0243] As described above, the three-dimensional data encoding device according to this embodiment performs the processing shown in Fig. 33. First, the three-dimensional data encoding device divides a target space containing a plurality of three-dimensional points into a plurality of divided data (e.g., tiles) contained in a plurality of divided subspaces (e.g., slices), each containing one or more three-dimensional points. Here, the divided data is one or more data aggregates contained in a subspace and containing one or more three-dimensional points. The divided data may also be a space, and may include a space that does not contain three-dimensional points. Furthermore, one subspace may contain multiple divided data, or one subspace may contain one divided data. Note that multiple subspaces may be set in the target space, or one subspace may be set in the target space.

[0244] Next, the three-dimensional data encoding device generates a plurality of coded data corresponding to each of the plurality of divided data by encoding each of the plurality of divided data (S4931). The three-dimensional data encoding device generates a bitstream including the plurality of coded data and a plurality of control information (e.g., the header shown in FIG. 30) for each of the plurality of coded data (S4932). Each of the plurality of control information stores a first identifier (e.g., slice_idx) indicating a subspace corresponding to the coded data corresponding to the control information, and a second identifier (e.g., tile_idx) indicating divided data corresponding to the coded data corresponding to the control information.

[0245] This allows a three-dimensional data decoding device that decodes a bitstream generated by a three-dimensional data encoding device to easily restore the target space by combining data from multiple divided data sets using the first identifier and the second identifier, thereby reducing the amount of processing required in the three-dimensional data decoding device.

[0246] For example, the three-dimensional data encoding device encodes position information and attribute information of three-dimensional points included in each of the plurality of pieces of divided data. Each of the plurality of pieces of coded data includes coded data for the position information and coded data for the attribute information. Each of the plurality of pieces of control information includes control information for the coded data for the position information and control information for the coded data for the attribute information. The first identifier and the second identifier are stored in the control information for the coded data for the position information.

[0247] For example, in a bitstream, each of the plurality of pieces of control information is placed before the coded data corresponding to that control information.

[0248] Furthermore, a three-dimensional data encoding device may be configured such that a target space containing a plurality of three-dimensional points is set to one or more subspaces, the subspaces contain one or more divided data each containing one or more three-dimensional points, and the device generates a plurality of coded data corresponding to each of the plurality of divided data by encoding each of the divided data, and generates a bit stream including the plurality of coded data and a plurality of control information for each of the plurality of coded data, and each of the plurality of control information stores a first identifier indicating the subspace corresponding to the coded data corresponding to the control information, and a second identifier indicating the divided data corresponding to the coded data corresponding to the control information.

[0249] 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.

[0250] Moreover, the three-dimensional data decoding device according to this embodiment performs the processing shown in FIG. 34. First, the three-dimensional data decoding device acquires, from a bitstream including a plurality of coded data pieces generated by encoding a plurality of divided data pieces (e.g., tiles) each including one or more three-dimensional points and included in a plurality of subspaces (e.g., slices) obtained by dividing a target space including a plurality of three-dimensional points, and a plurality of control information pieces (e.g., a header shown in FIG. 30) for each of the coded data pieces, a first identifier (e.g., slice_idx) indicating a subspace corresponding to the coded data piece corresponding to the control information piece, and a second identifier (e.g., tile_idx) indicating divided data piece corresponding to the coded data piece corresponding to the control information piece, both of which are stored in the plurality of control information pieces (S4941). Next, the three-dimensional data decoding device restores a plurality of divided data pieces by decoding the plurality of coded data pieces (S4942). Next, the three-dimensional data decoding device restores the target space by combining the plurality of divided data pieces using the first identifier and the second identifier (S4943). For example, the three-dimensional data encoding device uses the second identifier to combine multiple divided data to restore multiple subspaces, and uses the first identifier to combine multiple subspaces to restore the target space (multiple three-dimensional points). Note that the three-dimensional data decoding device may use at least one of the first identifier and the second identifier to obtain coded data of a desired subspace or divided data from the bitstream, and selectively decode or preferentially decode the obtained coded data.

[0251] This allows the three-dimensional data decoding device to easily restore the target space by combining the data of the plurality of divided data using the first identifier and the second identifier, thereby reducing the amount of processing in the three-dimensional data decoding device.

[0252] For example, each of the plurality of coded data is generated by encoding position information and attribute information of a three-dimensional point included in the corresponding divided data, and includes coded data of the position information and coded data of the attribute information. Each of the plurality of control information includes control information for the coded data of the position information and control information for the coded data of the attribute information. The first identifier and the second identifier are stored in the control information of the coded data of the position information.

[0253] For example, in the bitstream, control information precedes the corresponding coded data.

[0254] For example, the three-dimensional data decoding device includes a processor and a memory, and the processor performs the above processing using the memory.

[0255] (Embodiment 5) In position information encoding using neighbor dependency, the higher the density of the point cloud, the more likely it is that encoding efficiency will improve. In this embodiment, the three-dimensional data encoding device combines point cloud data of consecutive frames to collectively encode the point cloud data of consecutive frames. At this time, the three-dimensional data encoding device generates encoded data that includes information for identifying the frame to which each leaf node included in the combined point cloud data belongs.

[0256] Here, the point cloud data of consecutive frames is likely to be similar. Therefore, the upper level of the occupancy code is likely to be the same for consecutive frames. In other words, by encoding consecutive frames together, the upper level of the occupancy code can be shared.

[0257] Furthermore, the frame to which a point group belongs is distinguished at the leaf node by encoding the frame index.

[0258] Fig. 35 is a diagram showing an image of generating a tree structure and an occupancy code from point cloud data of N PCC (Point Cloud Compression) frames. In the figure, points inside the arrows indicate points belonging to each PCC frame. First, a frame index for identifying the frame is assigned to each point belonging to each PCC frame.

[0259] Next, the points belonging to the N frames are converted into a tree structure, and an occupancy code is generated. Specifically, for each point, it is determined which leaf node in the tree structure the point belongs to. In the figure, the tree structure represents a set of nodes. Starting from the top node, it is determined which node the point belongs to. The determination result for each node is encoded as an occupancy code. The occupancy code is common to the N frames.

[0260] A node may contain points from different frames with different frame indices. If the octree resolution is small, points from the same frame with the same frame index may also exist.

[0261] In the lowest level nodes (leaf nodes), points belonging to multiple frames may be mixed (overlapped).

[0262] In the tree structure and occupancy code, the higher level tree structure and occupancy code may be a common component in all frames, while the lower level tree structure and occupancy code may be an individual component for each frame, or a mixture of common and individual components.

[0263] For example, in the lowest level nodes such as leaf nodes, zero or more points with frame indexes are generated, and information indicating the number of points and information on the frame index for each point are generated. This information can also be said to be individual information in a frame.

[0264] Fig. 36 is a diagram showing an example of frame merging. As shown in Fig. 36(a), by combining multiple frames to generate a tree structure, the density of frame points included in the same node increases. Furthermore, by sharing the tree structure, the amount of data for the occupancy code can be reduced. These features may improve the coding rate.

[0265] Furthermore, as shown in FIG. 36(b), the individual components of the occupancy code in the tree structure become denser, which increases the effectiveness of arithmetic coding, and therefore may improve the coding rate.

[0266] The following description will be given using an example of combining multiple PCC frames that are temporally different, but it can also be applied to cases where there are not multiple frames, i.e., when frames are not combined (N=1). Furthermore, the multiple point cloud data to be combined is not limited to multiple frames, i.e., point cloud data of the same object at different times. In other words, the following method can also be applied to combining multiple point cloud data that are spatially or spatiotemporally different. Furthermore, the following method can also be applied to combining point cloud data or point cloud files with different content.

[0267] Fig. 37 is a diagram showing an example of combining multiple PCC frames that are different in time. Fig. 37 shows an example of acquiring point cloud data using a sensor such as LiDAR while a car is moving. The dotted lines indicate the sensor's acquisition range for each frame, i.e., the area of ​​the point cloud data. If the sensor's acquisition range is large, the range of the point cloud data will also be large.

[0268] The method of combining and encoding point cloud data is effective for point cloud data such as the following: For example, in the example shown in Figure 37, a car is moving and frames are identified by scanning 360° around the car. That is, the next frame, Frame 2, corresponds to another 360° scan after the car has moved in the X direction.

[0269] In this case, there is a possibility that frame 1 and frame 2 contain the same point cloud data because there are overlapping areas. Therefore, there is a possibility that encoding efficiency can be improved by combining and encoding frame 1 and frame 2. It is also possible to combine more frames. However, increasing the number of frames to be combined increases the number of bits required to encode the frame index added to the leaf node.

[0270] Furthermore, point cloud data may be acquired by sensors at different positions. Thus, each point cloud data acquired from each position may be used as a frame. That is, the multiple frames may be point cloud data acquired by a single sensor, or may be point cloud data acquired by multiple sensors. Furthermore, some or all of the objects may be the same or different between the multiple frames.

[0271] Next, the flow of three-dimensional data encoding processing according to this embodiment will be described. Fig. 38 is a flowchart of the three-dimensional data encoding processing. The three-dimensional data encoding device reads point cloud data of all N frames based on the number of frames to be combined, N, which is the number of frames to be combined.

[0272] First, the three-dimensional data encoding device determines the number of combined frames N (S5401). For example, this number of combined frames N is specified by the user.

[0273] Next, the three-dimensional data encoding device acquires point cloud data (S5402), and then records the frame index of the acquired point cloud data (S5403).

[0274] If N frames have not been processed (No in S5404), the three-dimensional data encoding device specifies the next point cloud data (S5405) and performs the processes from step S5402 onwards on the specified point cloud data.

[0275] On the other hand, if N frames have already been processed (Yes in S5404), the three-dimensional data encoding device combines the N frames and encodes the combined frame (S5406).

[0276] 39 is a flowchart of the encoding process (S5406). First, the three-dimensional data encoding device generates common information common to N frames (S5411). For example, the common information includes an occupancy code and information indicating the number N of combined frames.

[0277] Next, the three-dimensional data encoding device generates individual information, which is information individual to each frame (S5412). For example, the individual information includes the number of points included in the leaf node and the frame index of the points included in the leaf node.

[0278] Next, the three-dimensional data encoding device combines the common information and the individual information and encodes the combined information to generate encoded data (S5413). Next, the three-dimensional data encoding device generates additional information (metadata) related to the frame combination and encodes the generated additional information (S5414).

[0279] Next, the flow of the three-dimensional data decoding process according to this embodiment will be described with reference to Fig. 40, which is a flowchart of the three-dimensional data decoding process.

[0280] First, the three-dimensional data decoding device obtains the number of spliced ​​frames N from the bitstream (S5421). Next, the three-dimensional data encoding device obtains encoded data from the bitstream (S5422). Next, the three-dimensional data decoding device obtains point cloud data and frame indices by decoding the encoded data (S5423). Finally, the three-dimensional data decoding device divides the decoded point cloud data using the frame indices (S5424).

[0281] 41 is a flowchart of the decoding and division processing (S5423 and S5424). First, the three-dimensional data decoding device decodes (obtains) the common information and individual information from the coded data (bit stream) (S5431).

[0282] Next, the 3D data decoding device determines whether to decode a single frame or multiple frames (S5432). For example, whether to decode a single frame or multiple frames may be specified externally. Here, the multiple frames may be all of the combined frames or a portion of the frames. For example, the 3D data decoding device may determine to decode specific frames required by an application and not decode frames that are not required. Alternatively, if real-time decoding is required, the 3D data decoding device may determine to decode a single frame of the combined multiple frames.

[0283] When decoding a single frame (Yes in S5432), the three-dimensional data decoding device extracts individual information corresponding to the specified single frame index from the decoded individual information, and decodes the extracted individual information to restore the point cloud data of the frame corresponding to the specified frame index (S5433).

[0284] On the other hand, when decoding multiple frames (No in S5432), the three-dimensional data decoding device extracts individual information corresponding to the frame indexes of the specified multiple frames (or all frames) and decodes the extracted individual information to restore the point cloud data of the specified multiple frames (S5434). Next, the three-dimensional data decoding device divides the decoded point cloud data (individual information) based on the frame indexes (S5435). In other words, the three-dimensional data decoding device divides the decoded point cloud data into multiple frames.

[0285] The three-dimensional data decoding device may decode the data of all the combined frames at once and divide the decoded data into individual frames, or may decode any part of all the combined frames at once and divide the decoded data into individual frames. Furthermore, the three-dimensional data decoding device may independently decode a predetermined unit frame consisting of multiple frames.

[0286] The configuration of the three-dimensional data encoding device according to this embodiment will be described below. Fig. 42 is a block diagram showing the configuration of an encoding unit 5410 included in the three-dimensional data encoding device according to this embodiment. The encoding unit 5410 generates encoded data (encoded stream) by encoding point group data (point cloud). This encoding unit 5410 includes a division unit 5411, a plurality of position information encoding units 5412, a plurality of attribute information encoding units 5413, an additional information encoding unit 5414, and a multiplexing unit 5415.

[0287] The dividing unit 5411 divides point cloud data of multiple frames to generate multiple pieces of divided data for multiple frames. Specifically, the dividing unit 5411 divides the space of the point cloud data of each frame into multiple subspaces to generate multiple 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 (color, reflectance, etc.), and additional information. In addition, a frame number is input to the dividing unit 5411. The dividing unit 5411 divides the position information of each frame into multiple pieces of divided position information and divides the attribute information of each frame into multiple pieces of divided attribute information. In addition, the dividing unit 5411 generates additional information related to the division.

[0288] For example, the dividing unit 5411 first divides the point cloud into tiles, and then further divides the obtained tiles into slices.

[0289] The multiple position information encoding units 5412 encode the multiple pieces of divided position information to generate multiple pieces of encoded position information. For example, the position information encoding unit 5412 encodes the divided 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 the 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. For example, the multiple position information encoding units 5412 process the multiple pieces of divided position information in parallel.

[0290] The attribute information encoding unit 4632 generates encoded attribute information, which 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.

[0291] Furthermore, the encoding process of the position information or 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.

[0292] The attribute information encoding units 5413 encode the divided attribute information to generate the coded attribute information, for example, the attribute information encoding units 5413 process the divided attribute information in parallel.

[0293] The additional information encoding unit 5414 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 5411 at the time of division.

[0294] The multiplexing unit 5415 multiplexes a plurality of pieces of encoding position information, a plurality of pieces of encoding attribute information, and a plurality of pieces of encoding additional information for a plurality of frames to generate encoded data (encoded stream), and transmits the generated encoded data. The encoded additional information is also used during decoding.

[0295] 43 is a block diagram of the dividing unit 5411. The dividing unit 5411 includes a tile dividing unit 5421 and a slice dividing unit 5422.

[0296] The tile dividing unit 5421 generates multiple pieces of tile position information by dividing each piece of position information (Position (Geometry)) of multiple frames into tiles. The tile dividing unit 5421 also generates multiple pieces of tile attribute information by dividing each piece of attribute information (Attribute) of multiple frames into tiles. The tile dividing unit 5421 also outputs tile additional information (Tile MetaData) including information related to the tile division and information generated during the tile division.

[0297] The slice division unit 5422 generates a plurality of pieces of division position information (a plurality of pieces of slice position information) by dividing a plurality of pieces of tile position information into slices. The slice division unit 5422 also generates a plurality of pieces of division attribute information (a plurality of pieces of slice attribute information) by dividing a plurality of pieces of tile attribute information into slices. The slice division unit 5422 also outputs slice additional information (Slice MetaData) including information related to the slice division and information generated in the slice division.

[0298] Furthermore, the dividing unit 5411 uses a frame number (frame index) to indicate the origin coordinates, attribute information, and the like in the dividing process.

[0299] 44 is a block diagram of the positional information encoding unit 5412. The positional information encoding unit 5412 includes a frame index generation unit 5431 and an entropy encoding unit 5432.

[0300] The frame index generating unit 5431 determines the value of a frame index based on the frame number and adds the determined frame index to the position information. The entropy coding unit 5432 generates coded position information by entropy coding the division position information to which the frame index has been added.

[0301] 45 is a block diagram of the attribute information encoding unit 5413. The attribute information encoding unit 5413 includes a frame index generation unit 5441 and an entropy encoding unit 5442.

[0302] The frame index generating unit 5441 determines a frame index value based on the frame number and adds the determined frame index to the attribute information. The entropy encoding unit 5442 generates encoded attribute information by entropy encoding the divided attribute information to which the frame index has been added.

[0303] Next, the flow of the encoding process and decoding process of point cloud data according to this embodiment will be described. Fig. 46 is a flowchart of the encoding process of point cloud data according to this embodiment.

[0304] First, the three-dimensional data encoding device determines the division method to be used (S5441). This division method includes whether to perform division into slices or whether to perform division into tiles. The division method may also include the number of divisions, the type of division, etc., when dividing into slices or tiles.

[0305] If tile division is to be performed (Yes in S5442), 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 the attribute information (S5443). The three-dimensional data encoding device also generates tile additional information related to the tile division.

[0306] If slice division is performed (Yes in S5444), 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 (S5445). In addition, the three-dimensional data encoding device generates slice additional information related to the slice division.

[0307] 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 with a frame index (S5446). The three-dimensional data encoding device also generates dependency relationship information.

[0308] 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 (S5447).The three-dimensional data encoding device also transmits the generated encoded data.

[0309] 47 is a flowchart of the encoding process (S5446). First, the three-dimensional data encoding device encodes the division position information (S5451). Next, the three-dimensional data encoding device encodes the frame index for the division position information (S5452).

[0310] If division attribute information exists (Yes in S5453), the three-dimensional data encoding device encodes the division attribute information (S5454) and encodes a frame index for the division attribute information (S5455). On the other hand, if division attribute information does not exist (No in S5453), the three-dimensional data encoding device does not encode the division attribute information or the frame index for the division attribute information. Note that the frame index may be stored in either or both of the division position information and the division attribute information.

[0311] The three-dimensional data encoding device may encode the attribute information using a frame index, or may encode the attribute information without using a frame index. In other words, the three-dimensional data encoding device may use a frame index to identify the frame to which each point belongs and encode the data for each frame, or may encode points belonging to all frames without identifying the frame.

[0312] The configuration of the three-dimensional data decoding device according to this embodiment will be described below. Fig. 48 is a block diagram showing the configuration of a decoding unit 5450. The decoding unit 5450 restores the point cloud data by decoding coded data (coded stream) generated by coding the point cloud data. The decoding unit 5450 includes a demultiplexing unit 5451, a plurality of position information decoding units 5452, a plurality of attribute information decoding units 5453, an additional information decoding unit 5454, and a combining unit 5455.

[0313] The demultiplexing unit 5451 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.

[0314] The position information decoding units 5452 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 5452 process the plurality of pieces of encoded position information in parallel.

[0315] The attribute information decoding units 5453 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 5453 process the plurality of pieces of encoded attribute information in parallel.

[0316] The plurality of additional information decoders 5454 generate additional information by decoding the encoded additional information.

[0317] The combining unit 5455 generates position information by combining multiple pieces of divided position information using the additional information. The combining unit 5455 generates attribute information by combining multiple pieces of divided attribute information using the additional information. The combining unit 5455 also divides the position information and attribute information into multiple frames of position information and multiple frames of attribute information using a frame index.

[0318] 49 is a block diagram of the position information decoding unit 5452. The position information decoding unit 5452 includes an entropy decoding unit 5461 and a frame index obtaining unit 5462. The entropy decoding unit 5461 generates division position information by entropy decoding the encoded position information. The frame index obtaining unit 5462 obtains a frame index from the division position information.

[0319] 50 is a block diagram of the attribute information decoding unit 5453. The attribute information decoding unit 5453 includes an entropy decoding unit 5471 and a frame index obtaining unit 5472. The entropy decoding unit 5471 generates divided attribute information by entropy decoding the encoded attribute information. The frame index obtaining unit 5472 obtains a frame index from the divided attribute information.

[0320] 51 is a diagram showing the configuration of the combining unit 5455. The combining unit 5455 generates position information by combining multiple pieces of divided position information. The combining unit 5455 generates attribute information by combining multiple pieces of divided attribute information. The combining unit 5455 also uses a frame index to divide the position information and attribute information into multiple frames of position information and multiple frames of attribute information.

[0321] 52 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 (slice additional information and tile additional information) related to the division method included in the coded data (coded stream) (S5461). This division method includes whether or not to perform slice division and whether or not to perform tile division. The division method may also include the number of divisions when performing slice division or tile division, the type of division, etc.

[0322] 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 (S5462).

[0323] If the additional information indicates that slice division has been performed (Yes in S5463), the 3D data decoding device generates multiple pieces of tile position information by combining multiple pieces of division position information, and generates multiple pieces of tile attribute information by combining multiple pieces of division attribute information, based on the slice additional information (S5464). Here, the multiple pieces of division position information, the multiple pieces of division attribute information, the multiple pieces of tile position information, and the multiple pieces of tile attribute information each include a frame index.

[0324] If the additional information indicates that tile division has been performed (Yes in S5465), the 3D data decoding device generates position information by combining multiple pieces of tile position information (multiple pieces of division position information) based on the tile additional information, and generates attribute information by combining multiple pieces of tile attribute information (multiple pieces of division attribute information) (S5466). Here, the multiple pieces of tile position information, the multiple pieces of tile attribute information, the position information, and the attribute information include a frame index.

[0325] 53 is a flowchart of the decoding process (S5464 or S5466). First, the three-dimensional data decoding device decodes the division position information (slice position information) (S5471). Next, the three-dimensional data decoding device decodes the frame index for the division position information (S5472).

[0326] If the split attribute information exists (Yes in S5473), the three-dimensional data decoding device decodes the split attribute information (S5474) and decodes the frame index for the split attribute information (S5475). On the other hand, if the split attribute information does not exist (No in S5473), the three-dimensional data decoding device does not decode the split attribute information or the frame index for the split attribute information.

[0327] The three-dimensional data decoding device may decode the attribute information using a frame index, or may decode the attribute information without using a frame index.

[0328] The coding unit for frame splicing will be described below. Figure 54 is a diagram showing an example of a frame splicing pattern. The example in the figure shows a case where, for example, PCC frames are in time series and data generation and encoding are performed in real time.

[0329] 54(a) shows a case where four frames are fixedly joined together, and the three-dimensional data encoding device waits for four frames of data to be generated before generating encoded data.

[0330] 54(b) shows a case where the number of frames changes adaptively. For example, a three-dimensional data encoding device changes the number of combined frames to adjust the amount of encoded data in rate control.

[0331] The three-dimensional data encoding device may not combine frames if there is a possibility that combining frames will not be effective. Also, the three-dimensional data encoding device may switch between combining frames and not combining frames.

[0332] Figure 54(c) shows an example where a portion of the frames to be combined overlaps with a portion of the next frames to be combined. This example is useful when real-time or low-delay processing is required, such as transmitting frames in order of encoding.

[0333] Figure 55 is a diagram showing an example of the structure of a PCC frame. The three-dimensional data encoding device may configure the frames to be combined so that they include at least data units that can be decoded independently. For example, as shown in (a) of Figure 55, if all PCC frames are intra-coded and can be decoded independently, any of the above patterns can be applied.

[0334] Also, as shown in (b) of Figure 55, when inter prediction is applied and a random access unit such as GOF (group of frames) is set, the three-dimensional data encoding device may combine data using the GOF unit as the smallest unit.

[0335] The three-dimensional data encoding device may encode the common information and the individual information together, or may encode each separately. Furthermore, the three-dimensional data encoding device may use a common data structure for the common information and the individual information, or may use different data structures.

[0336] Furthermore, the three-dimensional data encoding device may generate an occupancy code for each frame, and then compare the occupancy codes of multiple frames, determine whether there are many common parts between the occupancy codes of the multiple frames based on a predetermined criterion, and generate common information if there are many common parts. Alternatively, the three-dimensional data encoding device may determine whether to combine frames, which frames to combine, or the number of frames to combine based on whether there are many common parts.

[0337] Next, the structure of the encoded position information will be described. Figure 56 shows the structure of the encoded position information. The encoded position information includes a header and a payload.

[0338] 57 is a diagram illustrating an example of the syntax of the header (Geometry_header) of the encoded position information. The header of the encoded position information includes a GPS index (gps_idx), offset information (offset), other information (other_geometry_information), a frame combination flag (combine_frame_flag), and the number of combined frames (number_of_combine_frame).

[0339] The GPS index indicates the identifier (ID) of the parameter set (GPS) corresponding to the coded position information. A GPS is a parameter set for coded position information of one frame or multiple frames. If a parameter set exists for each frame, the identifiers of multiple parameter sets may be indicated in the header.

[0340] The offset information indicates an offset position for acquiring the combined data. The other information indicates other information related to the position information (for example, a quantization parameter difference value (QPdelta)). The frame combining flag indicates whether the encoded data is frame combined. The number of combined frames indicates the number of combined frames.

[0341] Note that some or all of the above information may be described in the SPS or GPS. Note that the SPS is a parameter set for each sequence (multiple frames) and is a parameter set that is used in common for the coded position information and the coded attribute information.

[0342] 58 is a diagram illustrating an example of the syntax of the payload (Geometry_data) of the encoded position information. The payload of the encoded position information includes common information and leaf node information.

[0343] The common information is data combined into one or more frames, and includes an occupancy code (occupancy_Code) and the like.

[0344] The leaf node information (combine_information) is information about each leaf node. The leaf node information may be indicated for each frame as a loop of the frame number.

[0345] As a method for indicating the frame index of a point included in a leaf node, either Method 1 or Method 2 can be used. Fig. 59 is a diagram showing an example of leaf node information in the case of Method 1. The leaf node information shown in Fig. 59 includes the number of three-dimensional points (NumberOfPoints) indicating the number of points included in the node, and a frame index (FrameIndex) for each point.

[0346] FIG. 60 is a diagram showing an example of leaf node information for Method 2. In the example shown in FIG. 60, the leaf node information includes bitmap information (bitmapIsFramePointsFlag) that indicates the frame indexes of multiple points using a bitmap. FIG. 61 is a diagram showing an example of bitmap information. In this example, the bitmap indicates that the leaf node includes 3D points with frame indexes 1, 3, and 5.

[0347] Note that if the quantization resolution is low, there may be duplicate points in the same frame. In this case, the number of 3D points (NumberOfPoints) may be shared, and the number of 3D points in each frame and the total number of 3D points across multiple frames may be indicated.

[0348] Furthermore, when lossy compression is used, the three-dimensional data encoding device may delete duplicated points to reduce the amount of information. The three-dimensional data encoding device may delete duplicated points before combining frames, or may delete duplicated points after combining frames.

[0349] Next, the structure of the encoded attribute information will be described. Fig. 62 shows the structure of the encoded attribute information. The encoded attribute information includes a header and a payload.

[0350] 63 is a diagram illustrating an example of the syntax of the header (Attribute_header) of the encoding attribute information. The header of the encoding attribute information includes an APS index (aps_idx), offset information (offset), other information (other_attribute_information), a frame combination flag (combine_frame_flag), and the number of combined frames (number_of_combine_frame).

[0351] The APS index indicates the identifier (ID) of the parameter set (APS) corresponding to the coding attribute information. An APS is a parameter set of coding attribute information for one frame or multiple frames. If there is a parameter set for each frame, the identifiers of multiple parameter sets may be indicated in the header.

[0352] The offset information indicates an offset position for acquiring the combined data. The other information indicates other information related to the attribute information (for example, a quantization parameter difference value (QPdelta)). The frame combination flag indicates whether the encoded data is frame combined. The number of combined frames indicates the number of combined frames.

[0353] Note that some or all of the above information may be included in the SPS or APS.

[0354] FIG. 64 is a diagram showing an example of the syntax of the payload (Attribute_data) of the encoded attribute information. The payload of the encoded attribute information includes leaf node information (combine_information). For example, the configuration of this leaf node information is the same as that of the leaf node information included in the payload of the encoded position information. In other words, the leaf node information (frame index) may be included in the attribute information.

[0355] Furthermore, the leaf node information (frame index) may be stored in either the encoding position information or the encoding attribute information, but not in the other. In this case, the leaf node information (frame index) stored in either the encoding position information or the encoding attribute information is referenced when the other information is decoded. Furthermore, information indicating the reference destination may be included in the encoding position information or the encoding attribute information.

[0356] Next, an example of the transmission order and decoding order of coded data will be described. Figure 65 is a diagram showing the structure of coded data. Coded data includes a header and a payload.

[0357] 66 to 68 are diagrams showing the data transmission order and the data reference relationship. In the diagrams, G(1) etc. indicate encoding position information, GPS(1) etc. indicate a parameter set for encoding position information, and SPS indicates a parameter set for a sequence (multiple frames). Furthermore, the numbers in parentheses indicate the frame index values. Note that the three-dimensional data encoding device may also transmit data in decoding order.

[0358] Fig. 66 is a diagram showing an example of a transmission order when frames are not combined. Fig. 67 is a diagram showing an example when frames are combined and metadata (parameter set) is added to each PCC frame. Fig. 68 is a diagram showing an example when frames are combined and metadata (parameter set) is added to each combination unit.

[0359] The header of the frame-combined data stores the identifier of the referenced metadata to obtain the metadata for that frame. As shown in Figure 68, metadata for multiple frames may be combined. Parameters that are common to multiple frames may be combined into one. Parameters that are not common to the frames indicate values ​​for each frame.

[0360] The information for each frame (parameters not common to all frames) is, for example, a timestamp indicating the time when the frame data was generated, encoded, or decoded. The information for each frame may also include information about the sensor that acquired the frame data (sensor speed, acceleration, position information, sensor orientation, other sensor information, etc.).

[0361] Figure 69 is a diagram showing an example of decoding some frames in the example shown in Figure 67. As shown in Figure 69, if there is no dependency between frames in the frame-spliced ​​data, the three-dimensional data decoding device can decode each piece of data independently.

[0362] When the point cloud data has attribute information, the three-dimensional data encoding device may frame-combine the attribute information. The attribute information is encoded and decoded with reference to position information. The referenced position information may be the position information before frame-combine, or the position information after frame-combine. The number of frames for combining the position information and the number of frames for combining the attribute information may be the same (the same), or may be independent (different).

[0363] 70 to 73 are diagrams showing the data transmission order and data reference relationships. FIGS. 70 and 71 show examples in which position information and attribute information are combined in four frames. In FIG. 70, metadata (parameter set) is added to each PCC frame. In FIG. 71, metadata (parameter set) is added for each combination unit. In these figures, A(1) etc. indicates coding attribute information, and APS(1) etc. indicates a parameter set of the coding attribute information. Also, the numbers in parentheses indicate frame index values.

[0364] Fig. 72 shows an example in which the position information is combined in four frames, but the attribute information is not combined. As shown in Fig. 72, the position information may be combined in frames, but the attribute information may not be combined in frames.

[0365] Fig. 73 shows an example of combining frame combining and tile division. When tile division is performed as shown in Fig. 73, the header of each tile position information includes information such as a GPS index (gps_idx) and the number of combined frames (number_of_combine_frame). In addition, the header of each tile position information includes a tile index (tile_idx) for identifying the tile.

[0366] 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 third point cloud data by combining the first point cloud data and the second point cloud data (S5481). Next, the three-dimensional data encoding device generates encoded data by encoding the third point cloud data (S5482). Furthermore, the encoded data includes identification information (e.g., a frame index) indicating whether each of the multiple three-dimensional points included in the third point cloud data belongs to the first point cloud data or the second point cloud data.

[0367] According to this, the three-dimensional data encoding device can improve encoding efficiency by encoding a plurality of point group data collectively.

[0368] For example, the first point cloud data and the second point cloud data are point cloud data (e.g., PCC frames) at different times. For example, the first point cloud data and the second point cloud data are point cloud data (e.g., PCC frames) of the same object at different times.

[0369] The encoded data includes position information and attribute information of each of the plurality of three-dimensional points included in the third point cloud data, and the identification information is included in the attribute information.

[0370] For example, the encoded data includes position information (for example, occupancy code) that represents the position of each of a plurality of three-dimensional points included in the third point cloud data using an N-ary tree (N is an integer equal to or greater than 2).

[0371] 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.

[0372] 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 decodes the encoded data to obtain third point cloud data generated by combining the first point cloud data and the second point cloud data, and identification information indicating whether each of the multiple three-dimensional points included in the third point cloud data belongs to the first point cloud data or the second point cloud data (S5491). Next, the three-dimensional data decoding device separates the first point cloud data and the second point cloud data from the third point cloud data using the identification information (S5492).

[0373] According to this, the three-dimensional data decoding device can decode coded data with improved coding efficiency by collectively coding a plurality of point cloud data.

[0374] For example, the first point cloud data and the second point cloud data are point cloud data (e.g., PCC frames) at different times. For example, the first point cloud data and the second point cloud data are point cloud data (e.g., PCC frames) of the same object at different times.

[0375] The encoded data includes position information and attribute information of each of the plurality of three-dimensional points included in the third point cloud data, and the identification information is included in the attribute information.

[0376] For example, the encoded data includes position information (for example, occupancy code) that represents the position of each of a plurality of three-dimensional points included in the third point cloud data using an N-ary tree (N is an integer equal to or greater than 2).

[0377] For example, the three-dimensional data decoding device includes a processor and a memory, and the processor performs the above processing using the memory.

[0378] (Embodiment 6) The above describes a method for indicating frame index information for points in a leaf node. As a method for indicating frame index information, the above describes a method for indicating the number of points included in the node and the frame index value for each point, and a method for indicating it using a bitmap.

[0379] Below, we will explain a three-dimensional data coding method that can be expected to further improve the coding rate. By using the three-dimensional data coding method described below, it is possible to reduce the coded data (the number of coded data bits) after arithmetic coding, and it is possible to enhance the effect of improving coding efficiency by frame splicing.

[0380] Fig. 76 is a block diagram of an encoding unit according to this embodiment. Specifically, Fig. 76 is a block diagram showing an encoding unit that encodes frame index values ​​(hereinafter simply referred to as frame indexes). The encoding unit included in the three-dimensional data encoding device according to this embodiment has a position information encoding unit 5510 and an attribute information encoding unit 5520. The position information encoding unit 5510 has a frame index generation unit 5511 and an entropy encoding unit 5512.

[0381] The frame index generating unit 5511 determines and converts the frame index (an identifier that is a value indicating to which of a plurality of frames (three-dimensional data) the position information of a three-dimensional point belongs) of the three-dimensional point.

[0382] The entropy coding unit 5512 entropy codes the frame index converted by the frame index generation unit 5511. The entropy coding unit 5512 generates and outputs a bitstream including coded data including the coded frame index. More specifically, the entropy coding unit 5512 outputs a position information bitstream including coded data including the coded frame index and coded position information.

[0383] The attribute information encoding unit 5520 includes a frame index generating unit 5521 and an entropy encoding unit 5522 .

[0384] The frame index generating unit 5521 determines and converts the frame index of the attribute information.

[0385] The entropy coding unit 5522 entropy codes the frame index converted by the frame index generation unit 5521. The entropy coding unit 5522 outputs a bitstream including coded data including the coded frame index. More specifically, the entropy coding unit 5522 outputs an attribute information bitstream including coded data including the coded frame index and coded attribute information.

[0386] FIG. 77 is a block diagram of a frame index generation unit 5511 according to the sixth embodiment.

[0387] The frame index generation unit 5511 includes a frame combining unit 5550 , a frame index encoding unit 5560 , and a combined data generation unit 5570 .

[0388] The frame combining unit 5550 acquires multiple frames and combines the acquired multiple frames to generate combined three-dimensional data. Specifically, the frame combining unit 5550 generates frame data in which a frame index is associated with each of the multiple frames, in other words, combined three-dimensional data including the frame index. The frame combining unit 5550 outputs information indicating the number of combined frames (hereinafter also referred to as the number of combined frames), information indicating the number of overlapping points present in the leaf node (hereinafter also referred to as the number of overlapping points), and frame data including the frame index value (hereinafter also referred to as the combined three-dimensional data).

[0389] Note that overlapping points present in a leaf node refer to three-dimensional points present in the leaf node, and are three-dimensional points included in the same unit space.

[0390] The frame index encoding unit 5560 acquires the number of combinations, the number of overlapping points, and the frame data including the frame index output by the frame combining unit 5550. The frame index encoding unit 5560 converts the frame index into a rank (also referred to as a ranking or a transformation code), which is a numerical value expressed as 0 or a positive integer, using a predetermined method. For example, the frame index encoding unit 5560 generates a bitmap indicating to which of the multiple pieces of three-dimensional data a three-dimensional point included in a leaf node (unit space) in combined three-dimensional data obtained by combining multiple pieces of three-dimensional data belongs. The bitmap is digital data expressed as 0 and 1. There is a one-to-one correspondence between the bitmap, the transformation code, and the number of three-dimensional points included in the unit space. The frame index encoding unit 5560 converts the generated bitmap into a rank, or in other words, generates a rank from the generated bitmap, using, for example, a lookup table described below. The frame index encoding unit 5560 outputs the number of bits of the rank (also referred to as rank bits) and the rank to the combined data generating unit 5570.

[0391] The combined data generating unit 5570 generates combined data by combining the frame data with a rank of a size corresponding to the number of bits of the acquired rank.

[0392] The processing related to the frame index described above may be performed by either the position information encoding unit 5510 or the attribute information encoding unit 5520. In other words, the frame combining unit 5550, the frame index encoding unit 5560, and the combined data generation unit 5570 may be included in the frame index generation unit 5521.

[0393] Fig. 78 is a block diagram of a decoding unit according to Embodiment 6. Specifically, Fig. 78 is a block diagram showing a decoding unit provided in the three-dimensional data decoding device according to this embodiment, which decodes and acquires coded frame indexes. The decoding unit includes a position information decoding unit 5530 and an attribute information decoding unit 5540.

[0394] The position information decoding unit 5530 includes an entropy decoding unit 5531 and a frame index acquisition unit 5532 .

[0395] The entropy decoding unit 5531 acquires a bit stream (more specifically, a position information bit stream) containing the coded data entropy coded by the entropy coding unit 5512 (coded data including the number of connections, the number of overlapping points, and the combined data), and decodes the coded data.

[0396] The frame index acquisition unit 5532 acquires a frame index from the coded data decoded by the entropy decoding unit 5531 .

[0397] The attribute information decoding unit 5540 includes an entropy decoding unit 5541 and a frame index obtaining unit 5542 .

[0398] The entropy decoding unit 5541 acquires a bit stream (more specifically, an attribute information bit stream) containing the coded data entropy coded by the entropy coding unit 5522 (coded data including the number of combinations, the number of overlapping points, and the combined data), and decodes the coded data.

[0399] The frame index acquisition unit 5542 acquires a frame index included in the coded data decoded by the entropy decoding unit 5541 .

[0400] FIG. 79 is a block diagram of a frame index acquisition unit 5532 according to the sixth embodiment.

[0401] The frame index acquisition unit 5532 acquires a frame index using a predetermined method. Specifically, the frame index acquisition unit 5532 acquires a frame index using a predetermined method from the combined data including the number of combinations, the number of overlapping points, and the rank, which are acquired from the frame combination unit 5550 and the frame index encoding unit 5560. The frame index acquisition unit 5532 outputs frame data that includes the value of the frame index.

[0402] The above-described processing related to the frame index may be executed by either the position information decoding unit 5530 or the attribute information decoding unit 5540. In other words, the processing executed by the frame index obtaining unit 5532 may be executed by the frame index obtaining unit 5542.

[0403] Next, a lookup table (LUT) for obtaining the rank from the bitmap will be described.

[0404] FIG. 80 is a block diagram of a frame index encoding unit 5560 according to the sixth embodiment.

[0405] The frame index encoding unit 5560 generates and encodes individual information (individual information for each frame).

[0406] The frame index encoding unit 5560 includes a bitmap generation unit 5561 , a lookup table reference unit 5562 , and a bit number acquisition unit 5563 .

[0407] First, the bitmap generation unit 5561 generates a bitmap based on the number of connections, the number of overlapping points, and the frame index for each point (three-dimensional point). The number of connections is determined, for example, using the coding unit method for frame connection described above. Furthermore, when dividing the tree structure, the bitmap generation unit 5561 counts the number of overlapping points present in each leaf node and converts them into a bitmap based on the frame index associated with the overlapping points, for example, using the method shown in FIG. 81.

[0408] FIG. 81 is a diagram illustrating an example of a leaf node and a bitmap according to the sixth embodiment.

[0409] For example, suppose a bitmap indicates that it contains 3D points with frame index values ​​of 1, 3, and 5.

[0410] For example, it is assumed that the bitmap generation unit 5561 has acquired information indicating the leaf node shown in (a) of Fig. 81 (in other words, information indicating that the frame index values ​​include three-dimensional points of 1, 3, and 5). In this case, the bitmap generation unit 5561 generates the bitmap shown in (b) of Fig. 81.

[0411] Next, the lookup table reference unit 5562 converts the bitmap into a rank using a predetermined lookup table. In other words, the lookup table reference unit 5562 generates a rank from the bitmap using the lookup table. The lookup table is a table that indicates the correspondence between the value of the bitmap and the rank. The lookup table reference unit 5562 has, for example, a memory that stores the lookup table.

[0412] FIG. 82 is a diagram showing an example of ranks according to the sixth embodiment.

[0413] The rank is a numerical value indicating the index or order within a group into which the bitmap is classified according to the number of 1s contained in the bitmap shown in FIG. 82, indicated by N.

[0414] Fig. 83 is a diagram showing an example of a lookup table used by the lookup table reference unit 5562 according to Embodiment 6. Specifically, Fig. 83 is a diagram showing a lookup table used when converting a bitmap into a rank.

[0415] For example, among No. 0 to No. 7, the bitmaps containing one 1 are No. 1, No. 2, and No. 4. The ranks are 0, 1, and 2, respectively.

[0416] Note that Figure 83 illustrates a lookup table when the bitmap is 8 bits, and is a table that corresponds to a combination number of 8 or less. If the combination number is less than 8, a portion of the lookup table shown in Figure 83 may be used, and if the combination number of frames is greater than 8, the lookup table may be extended in a similar manner. For example, the lookup table only needs to include information indicating the correspondence between the bitmap and the rank, and does not need to include information indicating the correspondence between the bitmap and the number of overlapping points.

[0417] The bit number acquisition unit 5563 acquires the number of bits for the rank from the number of connections and the number of overlapping points. The number of bits required for the rank (the number of bits required to express the rank in binary), determined from the maximum number of ranks, is a number uniquely determined from the number of connections and the number of overlapping points. The three-dimensional data encoding device generates information indicating the number of bits for the rank (rank information) in the bit number acquisition unit 5563, and calculates and encodes it in a stage subsequent to the bit number acquisition unit 5563 (not shown).

[0418] Note that the bit number acquisition unit 5563 may not send rank information if the rank value is 0. Also, the bit number acquisition unit 5563 may encode a value of rank −1 if the rank is not 0. Alternatively, the bit number acquisition unit 5563 may output a value of rank −1 as rank information if the rank is not 0.

[0419] The lookup table may be stored in advance in the three-dimensional data encoding device, or may be calculated each time by the lookup table reference unit 5562 using a predetermined calculation formula, for example.

[0420] Alternatively, the maximum number of connections may be predetermined, and a lookup table corresponding to the maximum number of connections may be stored in both the three-dimensional data encoding device and the three-dimensional data decoding device, and the same lookup table may be used even when the number of connections is smaller than the maximum.

[0421] Furthermore, the three-dimensional data decoding device may previously store a lookup table corresponding to the lookup table stored in the three-dimensional data encoding device. Alternatively, the three-dimensional data decoding device may store lookup tables having different correspondence relationships between bitmaps and ranks. In this case, for example, the three-dimensional data encoding device may send additional information (metadata) regarding the type of lookup table. In this case, the three-dimensional data decoding device may determine the type of lookup table to use for decoding based on the additional information.

[0422] Next, the encoding process of the frame index will be described.

[0423] FIG. 84 is a flowchart of the encoding process according to the sixth embodiment.

[0424] First, the three-dimensional data encoding device generates common information (frame common information) that is information common to multiple frames (S5501). The common information is information that is common to multiple frames, and includes, for example, an occupancy code, a coupling number, etc.

[0425] Next, the three-dimensional data encoding device generates individual information (frame individual information) that is information that is individual for each of the multiple frames (S5502). The individual information is information that is individually associated with each of the multiple frames, and is information that includes, for example, the number of overlapping points and the frame index in the leaf node.

[0426] Next, the three-dimensional data encoding device combines the common information and the individual information to generate encoded data (S5503).

[0427] Next, the three-dimensional data encoding device generates and encodes additional information related to frame splicing (S5504).

[0428] 85 is a flowchart of the coded data generation process according to Embodiment 6. Specifically, this is a flowchart showing details of step S5502 and step S5503 shown in FIG.

[0429] First, the three-dimensional data encoding device generates a bitmap indicating the number of overlapping points and the frame index (S5511).

[0430] Next, the three-dimensional data encoding device acquires the rank using a predetermined method (S5512). In this embodiment, the three-dimensional data encoding device acquires the rank by converting the bitmap into a rank using a lookup table.

[0431] Next, the three-dimensional data encoding device obtains the number of bits of the rank that needs to be encoded (S5513).

[0432] Next, the three-dimensional data encoding device encodes the occupancy code, the number of connections, the number of overlapping points, and the rank (S5514). That is, the three-dimensional data encoding device generates encoded data including the encoded occupancy code, the number of connections, the number of overlapping points, and the rank.

[0433] FIG. 86 is a diagram illustrating an example of the syntax of the connection information (information indicating the number of connections) according to the sixth embodiment.

[0434] The number of bits for the rank is determined by the number of overlapping points and the number of connections. For example, if the number of connections is 8, that is, the combined data (combined three-dimensional data) is made up of eight frames, and the number of overlapping points is 7, the maximum number of bits for the rank is 8.

[0435] The three-dimensional data decoding device needs the number of overlapping points to obtain the number of bits of the rank, so the three-dimensional data encoding device may describe the number of overlapping points and the rank in that order (include the data in the bitstream).

[0436] Next, a lookup table that the three-dimensional data decoding device uses to obtain a bitmap from a rank will be described.

[0437] FIG. 87 is a block diagram of a frame index acquisition unit 5532 according to the sixth embodiment.

[0438] The frame index acquisition unit 5532 decodes the individual information.

[0439] The frame index acquisition unit 5532 includes a bit number acquisition unit 5581 , a rank acquisition unit 5582 , a lookup table reference unit 5583 , and a frame division unit 5584 .

[0440] The bit number obtaining unit 5581 decodes the number of connections from the coded additional information included in the coded data, and further extracts the number of overlapping points for each leaf node from the coded data. Next, the bit number obtaining unit 5581 obtains the number of bits of the rank from the number of connections and the number of overlapping points.

[0441] The maximum number of ranks and the number of bits required for a rank are numbers that are uniquely determined from the number of connections and the number of overlapping points. Also, the processing of the bit number acquisition unit 5581 is the same as the processing in encoding (more specifically, the processing of the bit number acquisition unit 5563).

[0442] The rank acquisition unit 5582 acquires ranks for the number of bits acquired above from the various data decoded by the bit number acquisition unit 5581.

[0443] The lookup table reference unit 5583 obtains a bitmap from the overlapping points and rank of the leaf node using a predetermined lookup table.

[0444] FIG. 88 is a diagram showing an example of a lookup table used by the lookup table reference unit 5583 according to the sixth embodiment.

[0445] The lookup table shown in Fig. 88 is, for example, a table corresponding to the lookup table used by the three-dimensional data encoding device. More specifically, the lookup table shown in Fig. 88 is the same lookup table as the lookup table used by the lookup table reference unit 5562. The lookup table reference unit 5583 obtains frame indices of overlapping three-dimensional points in the combined three-dimensional data from the bitmap using, for example, the lookup table shown in Fig. 88.

[0446] The three-dimensional data decoding device reconstructs a plurality of three-dimensional data from the combined three-dimensional data using the data of the desired frame index thus obtained.

[0447] It should be noted that the number of indexes in the lookup table may differ between the lookup table of the three-dimensional data encoding device and the lookup table of the three-dimensional data decoding device. For example, the three-dimensional data encoding device may store eight different lookup tables so as to be able to support 1 bit to 8 bits. In this case, the three-dimensional data decoding device may store eight different lookup tables so as to be able to support 1 bit to 4 bits. This may reduce the number of lookup tables required for the three-dimensional data decoding device.

[0448] The frame dividing unit 5584 divides the combined data into a plurality of frames of data based on the frame index, and generates and outputs the frame data.

[0449] Next, the decoding process of the coded frame index will be described.

[0450] FIG. 89 is a flowchart of a frame index decoding process according to the sixth embodiment.

[0451] First, the three-dimensional data decoding device decodes and acquires the common information and individual information (S5521).

[0452] Next, the three-dimensional data decoding device determines whether to decode a single frame (S5522). For example, the three-dimensional data decoding device determines whether to decode a single frame or any number of frames.

[0453] If the three-dimensional data decoding device determines that a single frame is to be decoded (Yes in S5522), it extracts and decodes the individual information associated with the specified frame index (i.e., the above-mentioned single frame index) (S5523).

[0454] On the other hand, if the three-dimensional data decoding device determines not to decode a single frame, that is, to decode multiple frames (No in S5522), it extracts and decodes each individual piece of information corresponding to the multiple frame indexes (S5524).

[0455] Next, the three-dimensional data decoding device divides the data based on the frame index (S5525). That is, when the three-dimensional data decoding device decodes combined three-dimensional data consisting of multiple three-dimensional data (No in S5522), in step S5525, it divides the combined three-dimensional data into multiple frames based on the frame index.

[0456] 90 is a flowchart of the process of decoding common information and individual information according to Embodiment 6. Specifically, Fig. 90 is a flowchart showing details of step S5521 shown in Fig. 89.

[0457] First, the three-dimensional data decoding device decodes the encoded data to decode the acquired encoded number of connections and the acquired encoded number of overlapping points (S5531).

[0458] Next, the three-dimensional data decoding device obtains the number of bits of the rank using a predetermined method (S5532).

[0459] Next, the three-dimensional data decoding device obtains the rank (S5533).

[0460] Next, the three-dimensional data decoding device acquires a bitmap using a predetermined method (S5534). In this embodiment, the three-dimensional data decoding device acquires a bitmap by converting the rank into a bitmap using a lookup table.

[0461] Next, the three-dimensional data decoding device obtains a frame index using the bitmap (S5535).

[0462] Next, a method for determining the number of overlapping points will be described.

[0463] In leaf nodes, there are cases where 3D points overlap when there are two or more 3D points in the leaf node of one frame originally, and when there are two or more 3D points with different frame indices in the leaf node of the combined 3D data combined by frame combining.

[0464] A method for illustrating the above overlapping points and coding constraints when applying frame splicing will now be described.

[0465] Fig. 91 is a diagram showing a first example of syntax for a leaf node according to Embodiment 6. Specifically, Fig. 91 shows an example of syntax in which the number of overlapping points in one frame and the number of overlapping points in multiple frames resulting from frame splicing are indicated using the same field.

[0466] The three-dimensional data encoding device may set the field indicating the number of overlapping points for each leaf node to, for example, 1, and calculate the number of overlapping points only when "there are no overlapping points within one frame" and "two or more frames are combined," or when "there are overlapping points within one frame" and "frame combining is not performed." Furthermore, for example, when combining two or more frames, if there are overlapping points within one frame, the three-dimensional data encoding device may delete the overlapping points within the frame and combine them into one. Alternatively, for example, if there are overlapping points within one frame, the three-dimensional data encoding device may not perform frame combining using that one frame.

[0467] Fig. 92 is a diagram showing a second example of syntax for a leaf node according to Embodiment 6. Specifically, Fig. 92 shows a syntax example in which overlapping points within one frame and the number of overlapping points across multiple frames resulting from frame splicing are indicated using separate fields.

[0468] As shown in Figure 92, the three-dimensional data encoding device indicates overlapping points within one frame when "frame combining is not performed" and "there are overlapping points within one frame," and indicates overlapping points due to frame combining when "frame combining is performed," and may further indicate the number of overlapping points per frame when "there are overlapping points within one frame."

[0469] FIG. 93 is a diagram illustrating a first example of the syntax of the location information according to the sixth embodiment.

[0470] As shown in FIG. 93, the leaf node information may be looped to indicate the leaf node information for each frame.

[0471] Next, the node information will be described.

[0472] In tree division such as Octree division, there is a method of not dividing down to the leaf nodes in the lowest layer, but instead showing information about the nodes at the division depth instead of the leaf node information. Node information can be, for example, the coordinates of each 3D point belonging to the node, that is, information that directly indicates the position of the voxel. In this case, the node information is controlled by the directflag shown in Figure 94.

[0473] Next, the signaling method and coding constraints when the above-mentioned method using directflag and frame splicing are applied will be described.

[0474] FIG. 94 is a diagram illustrating a second example of the syntax of the location information according to the sixth embodiment.

[0475] As shown in FIG. 94, when the number of frames to be combined is greater than 1, that is, when multiple frames are to be combined, the three-dimensional data encoding device sets directflag to 0 and does not need to apply the above method.

[0476] On the other hand, for example, the three-dimensional data encoding device may set directflag to 1 when the number of frames to be combined is 1.

[0477] As a result, when combining frames, if the number of frames to be combined is greater than 1, i.e., when combining multiple frames, the three-dimensional data encoding device may be able to further improve the effectiveness of frame combination by setting directflag to 0 and not using the method that utilizes directflag.

[0478] Furthermore, the directflag and the number of connections are stored in, for example, a GPS (Geometry Parameter Set).

[0479] As described above, the three-dimensional data encoding device according to this embodiment performs the processing shown in FIG.

[0480] FIG. 95 is a flowchart of the encoding process according to the sixth embodiment.

[0481] First, the three-dimensional data encoding device generates a bitmap indicating to which of the plurality of three-dimensional data a three-dimensional point included in a unit space in combined three-dimensional data obtained by combining a plurality of three-dimensional data (frames) belongs (S5541). For example, the three-dimensional data encoding device generates a bitmap indicating to which of the plurality of three-dimensional data a three-dimensional point included in a leaf node in the combined three-dimensional data belongs.

[0482] The bitmap is, for example, the number of digits of the number of the combined three-dimensional data, and is information (map information) that indicates a sequence of numbers expressed by 0 or 1. For example, in the case of combined three-dimensional data in which eight three-dimensional data, from the first three-dimensional data to the eighth three-dimensional data, are combined, the bitmap has eight digits. Each digit of the bitmap is individually associated with one of the first three-dimensional data to the eighth three-dimensional data.

[0483] For example, if a three-dimensional point belonging to the first three-dimensional data and a three-dimensional point belonging to the second three-dimensional data are located in a predetermined unit space, and a three-dimensional point belonging to any of the three-dimensional data from the third three-dimensional data to the eighth three-dimensional data is not included in the predetermined unit space, the three-dimensional data encoding device generates a bitmap of "00000011".

[0484] Alternatively, for example, if a three-dimensional point belonging to the first three-dimensional data, a three-dimensional point belonging to the fifth three-dimensional data, and a three-dimensional point belonging to the seventh three-dimensional data are located in a predetermined unit space, and a three-dimensional point belonging to any of the second three-dimensional data, third three-dimensional data, fourth three-dimensional data, sixth three-dimensional data, and eighth three-dimensional data is not included in the predetermined unit space, the three-dimensional data encoding device generates a bitmap of "01050001".

[0485] The three-dimensional data encoding device may generate combined three-dimensional data by combining multiple pieces of three-dimensional data before executing step S5551. The number of pieces of three-dimensional data that the three-dimensional data encoding device combines is not particularly limited.

[0486] Next, the three-dimensional data encoding device generates a conversion code using the bitmap (S5542). The conversion code is a value indicating the rank described above. The three-dimensional data encoding device generates the rank from the bitmap using, for example, a lookup table.

[0487] A lookup table is a table showing the correspondence between bitmap values ​​and conversion codes. Each bitmap value corresponds to each combination of the conversion code and the number of 3D points included in the unit space. For example, as shown in FIG. 83, when the bitmap is "00000001," the 3D data encoding device generates the bitmap with a rank (i.e., conversion code) of 0. In addition, in the lookup table, the bitmap corresponding to the combination where the rank is 0 and the number of 3D points included in the unit space (the number of overlapping points shown in FIG. 83) is 1 is "00000001." In this way, in the lookup table, there is one bitmap corresponding to the rank, the number of 3D points included in the unit space, and the combination. For example, in the lookup table, each bitmap value corresponds to each combination of the conversion code and the number of 3D points included in the unit space in a one-to-one correspondence.

[0488] Next, the three-dimensional data encoding device generates encoded data including overlap point information indicating the number of three-dimensional points included in the unit space and conversion code information indicating the conversion code (S5543). Note that in this embodiment, the generation of the bitmap and the generation of the conversion code are also referred to as encoding.

[0489] As described above, each bitmap value corresponds to each combination of the conversion code and the number of three-dimensional points included in the unit space.

[0490] This allows the amount of coded data to be reduced compared to when the bitmap values ​​are directly included in the coded data, for example, by converting the bitmap into a rank using a lookup table.

[0491] Furthermore, for example, the encoded data includes position information and attribute information of the three-dimensional points, and the transform code information and overlapping point information are included in the position information. The three-dimensional data encoding device generates, as bit streams, a position information bit stream including the position information and an attribute information bit stream including the attribute information. The transform code information and overlapping point information are included in the position information bit stream.

[0492] Moreover, for example, the coded data further includes data number information indicating the number of multiple pieces of three-dimensional data combined in the combined three-dimensional data.

[0493] Furthermore, for example, the conversion code is 0 or a positive integer. For example, when the conversion code is not 0, the three-dimensional data encoding device generates coded data including conversion code information that is a number obtained by subtracting 1 from the conversion code. On the other hand, when the conversion code is 0, for example, the three-dimensional data encoding device generates coded data that does not include conversion code information.

[0494] According to this, when the conversion code is 0, the conversion code is not included in the coded data, so that the amount of coded data can be further reduced.

[0495] Furthermore, 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.

[0496] Moreover, the three-dimensional data decoding device according to this embodiment performs the processing shown in FIG.

[0497] FIG. 96 is a flowchart of the decoding process according to the sixth embodiment.

[0498] First, the three-dimensional data decoding device decodes the encoded data to obtain overlapping point information indicating the number of three-dimensional points included in a unit space in combined three-dimensional data generated by combining multiple three-dimensional data, and conversion code information indicating a conversion code (S5551). For example, the three-dimensional data decoding device obtains a bit stream including the encoded data, and decodes the encoded data included in the obtained bit stream.

[0499] Next, the three-dimensional data decoding device uses the overlapping point information and the transformation code information to generate a bitmap indicating to which of the plurality of three-dimensional data the three-dimensional points included in the unit space belong (S5552).

[0500] Next, the three-dimensional data decoding device uses the bitmap to determine to which of the multiple three-dimensional data the three-dimensional points included in the unit space belong (S5553). That is, the three-dimensional data decoding device obtains the above-mentioned frame index from the bitmap.

[0501] For example, the three-dimensional data decoding device then divides the combined three-dimensional data into multiple three-dimensional data using the obtained frame index.

[0502] As described above, each bitmap value corresponds to each combination of the conversion code and the number of three-dimensional points included in the unit space.

[0503] This allows, for example, a lookup table to be used to generate a bitmap from the ranks, and a frame index to be obtained from the generated bitmap. In other words, a bitmap indicating the correspondence between the multiple pieces of three-dimensional data and the 3D points in the combined 3D data can be appropriately obtained from the number of 3D points included in the unit space and the conversion code. Furthermore, the multiple pieces of three-dimensional data included in the combined 3D data can be divided using ranks, which have a smaller data volume than the bitmap. This allows the combined 3D data to be appropriately divided into the multiple pieces of pre-combined 3D data while reducing the data volume of the encoded data.

[0504] Also, for example, the coded data includes position information and attribute information of the three-dimensional points, and the conversion code information and overlapping point information are included in the position information.

[0505] Moreover, for example, the coded data further includes data number information indicating the number of multiple pieces of three-dimensional data combined in the combined three-dimensional data.

[0506] Furthermore, for example, the conversion code is 0 or a positive integer. For example, when the encoded data includes conversion code information, the three-dimensional data decoding device acquires the conversion code by adding 1 to the conversion code information. On the other hand, for example, when the encoded data does not include conversion code information, the three-dimensional data decoding device acquires 0 as the conversion code.

[0507] Furthermore, for example, the three-dimensional data decoding device includes a processor and a memory, and the processor performs the above-mentioned processing using the memory.

[0508] (Embodiment 7) In this embodiment, a method for supporting overlapping points in a combined frame is described. Using a combined frame allows multiple consecutive frames to be coded together. This increases the density of point cloud data. Furthermore, the occupancy status of upper levels of the occupancy code's occupancy tree can be shared, improving coding efficiency. Furthermore, a bitmap code or a rank code pattern is used to indicate the frame to which each node belongs.

[0509] When using a combined frame, a problem occurs if one of the frames before combining contains duplicate points. In other words, a method is required to identify the frame to which the duplicate points belong. For example, in encoding and decoding three-dimensional data, the number of duplicate points is indicated by the parameter num_point. For example, a value of num_point of 3 indicates that there are three points with the same position information in that frame. A method for solving the above problem is described in detail below.

[0510] 97 is a diagram showing an example of overlapping points when frames are spliced ​​together. The figure shows an example of frame splicing between frame 0 and frame 1.

[0511] If there are two or more 3D points in a leaf node in a frame before merging, they are called intra-frame duplicated points. Duplicated points generated in a leaf node by frame merging are called inter-frame duplicated points. In addition, intra-frame duplicated points and inter-frame duplicated points may be mixed in the same leaf node.

[0512] When multiple frames are combined, empty leaf nodes are not coded, and all leaf nodes that contain at least one point from frame 0 or frame 1 must be coded. For leaf nodes that contain duplicate points, the maximum number of duplicate points must be coded in the same way as nodes from other frames.

[0513] Next, an example of syntax for indicating overlapping points using a bitmap coding pattern will be described. Figure 98 is a diagram showing an example of the syntax of a header included in a bitstream. The header shown in Figure 98 includes single point information (single_point_per_leaf) and the number of combined frames (NumberOfCombineFrame).

[0514] The single point information (single_point_per_leaf) indicates whether each leaf node of the octree contains one point (or multiple points). For example, a value of 1 indicates that each leaf node has one point, and a value of 0 indicates that each leaf node has one or more points.

[0515] The three-dimensional data encoding device may specify whether or not each leaf node of the octtree includes one point based on the standard, or the profile or level of the standard, without adding single_point_per_leaf to the header. This allows the three-dimensional data decoding device to refer to the standard information, determine whether or not each leaf node of the octtree includes one point, and correctly restore the bitstream.

[0516] The number of combined frames (NumberOfCombineFrame) indicates the number of frames to be combined.

[0517] 99 is a diagram showing an example of the syntax of node information (node(depth, index)), which is information about each node included in an octree. The node information includes an occupancy code (occupancy_code), a three-dimensional point count (num_point), and bitmap information (combine_bit).

[0518] The occupancy code (occupancy_code) indicates whether the child nodes of a node are occupied (including 3D points). In the case of an octree, the occupancy_code is represented by 8 bits, and each bit indicates whether each of the 8 child nodes is occupied.

[0519] In addition, whether a node's child node is a leaf node or not is determined by whether the node belongs to the hierarchy one level above the lowest level of the tree structure. This eliminates the need to encode a flag indicating whether the child node is a leaf node or not, thereby reducing the amount of code required for the header.

[0520] num_leaf, which indicates the number of leaf nodes that contain a point, may be calculated from occupancy_code. For example, if occupancy_code=3 in an occupancy tree, num_leaf=2 is calculated.

[0521] The number of three-dimensional points (num_point) indicates the number of three-dimensional points contained in a leaf node. num_point is encoded when single_point_per_leaf==0. When performing frame splicing, the three-dimensional data encoding device may encode the maximum value of intra-frame overlap points of each frame in the leaf node as the value of num_point. For example, in a certain leaf node, if the number of intra-frame overlap points in frame 1 is 2 and the number of intra-frame overlap points in frame 2 is 1, num_point is set to the value 2.

[0522] The bitmap information (combine_bit) indicates whether the i-th in-frame overlap point of a leaf node exists in the j-th frame. For example, a value of 1 indicates that an in-frame overlap point exists, and a value of 0 indicates that an in-frame overlap point does not exist.

[0523] For example, if combine_bit[0][0][0]=1 and combine_bit[0][0][1]=1, the 0th intra-frame overlap point of leaf node 0 exists in frame 0 and frame 1, and is an inter-frame overlap point. Other examples of bitmap information will be described later.

[0524] The three-dimensional data encoding device may entropy encode num_point. Furthermore, the three-dimensional data encoding device may switch between multiple encoding tables during encoding. For example, the three-dimensional data encoding device may arithmetically encode the first bit using encoding table A, and arithmetically encode the remaining bits using encoding table B.

[0525] The three-dimensional data encoding device may entropy-encode combine_bit. For example, the three-dimensional data encoding device may binarize the value and then arithmetically encode it.

[0526] The parameter num_point is used when encoding overlapping points in normal PCC encoding without frame splicing. In contrast, in frame splicing, the parameter num_point is used as information indicating the maximum number of overlapping points within a frame, rather than the number of overlapping points between frames.

[0527] FIG. 100 is a diagram showing an example of overlapping points. In this example, frame 0 has intra-frame overlapping points 0 and 1. Frame 1 has intra-frame overlapping point 0. Therefore, the maximum number of intra-frame overlapping points is 2 for frame 0, and num_point is 2. As a result, num_point_minus2 is set to 0. Here, num_point_minus2 indicates the value obtained by subtracting 2 from num_point.

[0528] The overlapping points of the leaf node are also indicated by bitmap information. A value of 1 for each bit of the bitmap indicates occupied, and a value of 0 indicates empty. Each bit of the bitmap information is expressed as combine_bit[in-frame overlapping point number][frame number]. Therefore, the example shown in Figure 100 is expressed as combine_bit[0][0]=1, combine_bit[0][1]=1, combine_bit[1][0]=1, and combine_bit[1][1]=0.

[0529] Note that the order of the array indexes may be changed, such as combine_bit[frame number][intra-frame overlap point number].

[0530] A specific example using bitmap information will be explained below. Figures 101 and 102 are diagrams showing examples of overlapping points of a certain leaf node. In the example shown in the figures, the position information of the leaf node is (3, 8, 6). Also, the frame column shown in Figures 101 and 102 indicates the frame number of the pre-combined frame to which the overlapping point belongs.

[0531] In the example shown in FIG. 101, frame 0 contains three overlapping points, and frame 1 contains one overlapping point. Therefore, the maximum number of overlapping points within a frame is three, which is frame 0. In other words, num_point is 3.

[0532] Also, combine_bit[0][0]=1, combine_bit[0][1]=1, combine_bit[1][0]=1, combine_bit[1][1]=0, combine_bit[2][0]=1, combine_bit[2][1]=0.

[0533] Here, the maximum value of the in-frame overlap point number is equal to num_point. Also, the maximum value of the frame number is equal to the number of combined frames. Therefore, each overlap point is identified by a combination of the in-frame overlap point number and the frame number. Also, a bitmap (combine_bit[in-frame overlap point number][frame number]) having a number of bits equal to num_point x the number of combined frames is generated.

[0534] In the example shown in FIG. 102, frame 0 contains three overlapping points, frame 1 contains two overlapping points, frame 2 contains four overlapping points, and frame 3 contains one overlapping point. Therefore, the maximum number of overlapping points within a frame is four, which is frame 2. In other words, num_point is 4.

[0535] Also, combine_bit[0][0]=1, combine_bit[0][1]=1, combine_bit[0][2]=1, combine_bit[0][3]=1, combine_bit[1][0]=1, combine_bit[1][1]=1, combine_bit[1][2]=1, combine_bit[1][3]=0, combine_bit[2][0]=1, combine_bit[2][1]=0, combine_bit[2][2]=1, combine_bit[2][3]=0, combine_bit[3][0]=0, combine_bit[3][1]=0, combine_bit[3][2]=1, combine_bit[3][3]=0.

[0536] Next, the flow of the three-dimensional data encoding process will be explained. Fig. 103 is a flowchart of the three-dimensional data encoding process. The process shown in Fig. 103 is repeatedly performed for each node.

[0537] First, the three-dimensional data encoding device determines whether the child node is a leaf node (S6301). If the child node is a leaf node (Yes in S6301), the three-dimensional data encoding device calculates the number of intra-frame overlap points for each frame in the leaf node (S6302). Next, the three-dimensional data encoding device adds num_point[leaf], which indicates the maximum value of the intra-frame overlap points calculated for each frame, to the header (S6303). In other words, num_point is added to the header for each leaf node.

[0538] Next, the three-dimensional data encoding device sorts the overlapping points in the leaf node (S6304). Details of this process will be described later.

[0539] Next, the three-dimensional data encoding device sets i to 0 (S6305). Here, i is the in-frame duplicate point number. Next, the three-dimensional data encoding device determines whether i < num_point[leaf] is satisfied (S6306). If i < num_point[leaf] is satisfied (Yes in S6306), the three-dimensional data encoding device sets j to 0 (S6307). Here, j is the frame number.

[0540] Next, the three-dimensional data encoding device determines whether j < NumberOfCombineFrame is satisfied (S6308). Here, NumberOfCombineFrame indicates the number of frames in which frames are combined (number of combined frames).

[0541] If j < NumberOfCombineFrame is satisfied (Yes in S6308), the three-dimensional data encoding device determines whether the i-th duplicate point exists in frame j (S6309). If the i-th duplicate point exists in frame j (Yes in S6309), the three-dimensional data encoding device sets combine_bit[i][j] to 1 (S6310). On the other hand, if the i-th duplicate point does not exist in frame j (No in S6309), the three-dimensional data encoding device sets combine_bit[i][j] to 0 (S6311).

[0542] After step S6310 or S6311, the three-dimensional data encoding device increments j by 1 (S6312) and performs the processing after step S6308 again.

[0543] On the other hand, in step S6308, if j < NumberOfCombineFrame is not satisfied (No in S6308), the three-dimensional data encoding device increments i by 1 (S6313) and performs the processing after step S6306 again.

[0544] Also, in step S6306, if i < num_point[leaf] is not satisfied (No in S6306), the three-dimensional data encoding device determines whether the processing of all leaf nodes has been completed (S6314). If the processing of all leaf nodes has not been completed (No in S6314), the three-dimensional data encoding device performs the processing after step S6302 on the next leaf node. If the processing of all leaf nodes has been completed (Yes in S6314), the three-dimensional data encoding device ends the processing.

[0545] Next, the sorting process performed in step S6304 described above will be explained. FIGS. 104 and 105 are diagrams showing examples of the sorting process.

[0546] When the three-dimensional data encoding device encodes overlapping points in a leaf node, it may sort and encode the overlapping points in the leaf node as shown in FIGS. 104 and 105.

[0547] For example, the three-dimensional data encoding device may sort the inter-frame overlapping points and their attribute information in ascending order of frame number. For example, when the inter-frame overlapping points exist in frame 0 and frame 1, the three-dimensional data encoding device sorts so as to encode the overlapping points of frame 0 first and then the overlapping points of frame 1.

[0548] Also, when there are a plurality of inter-frame overlapping points, the three-dimensional data encoding device may sort so that the three-dimensional points belonging to the same inter-frame overlapping points are encoded in order.

[0549] As described above, the three-dimensional data decoding device can add frame numbers to the inter-frame overlapping points according to the decoding order, so that the load of the decoding process can be reduced. Also, the three-dimensional data decoding device can correctly decode the attribute information belonging to the three-dimensional points.

[0550] FIG. 106 is a flowchart of the three-dimensional data decoding process. The process shown in FIG. 106 is repeatedly performed for each node.

[0551] First, the three-dimensional data decoder determines whether the child node is a leaf node (S6321). If the child node is a leaf node (Yes in S6321), the three-dimensional data decoder decodes num_point[leaf] from the header included in the bit stream (S6322).

[0552] Next, the three-dimensional data decoder sets i to 0 (S6323). Here, i is the in-frame duplicate point number. Next, the three-dimensional data decoder determines whether i < num_point[leaf] is satisfied (S6324).

[0553] If i < num_point[leaf] is satisfied (Yes in S6324), the three-dimensional data decoder sets j to 0 (S6325). Here, j is the frame number. Next, the three-dimensional data decoder determines whether j < NumberOfCombineFrame is satisfied (S6326). Here, NumberOfCombineFrame indicates the number of frames combined, for example, included in the bit stream.

[0554] If j < NumberOfCombineFrame is satisfied (Yes in S6326), the three-dimensional data decoder decodes combine_bit[i][j] from the bit stream (S6327). Next, the three-dimensional data decoder determines whether the decoded combine_bit[i][j] is 1 or 0 (S6328).

[0555] If combine_bit[i][j] is 1 (Yes in S6328), the three-dimensional data decoder generates the i-th in-frame duplicate point having the position information (x, y, z) corresponding to the position of the leaf node being decoded and belonging to the j-th frame as the decoded result of the three-dimensional point (S6329).

[0556] After step S6329 or when combine_bit[i][j] is 0 (No in S6328), the three-dimensional data decoding device increments j by 1 (S6330) and performs the processing after step S6326 again.

[0557] Also, in step S6326, when j < NumberOfCombineFrame is not satisfied (No in S6326), the three-dimensional data decoding device increments i by 1 (S6331) and performs the processing after step S6324 again.

[0558] Also, in step S6324, when i < num_point[leaf] is not satisfied (No in S6324), the three-dimensional data decoding device determines whether the processing of all leaf nodes has been completed (S6332). If the processing of all leaf nodes has not been completed (No in S6332), the three-dimensional data decoding device performs the processing after step S6322 for the next leaf node. If the processing of all leaf nodes has been completed (Yes in S6332), the three-dimensional data decoding device ends the processing.

[0559] Next, an example using the rank code pattern will be described. FIG. 107 is a diagram showing a syntax example of node information (node(depth, index)) when using the rank code pattern. The configuration of the header is, for example, the same as that in FIG. 98.

[0560] The node information includes an occupancy code (occupancy_code), the number of three-dimensional points (num_point), the number of overlapping points (num_combine_point), frame 0 information (combine_equalzero), and a combination index (combine_idx).

[0561] Note that occupancy_code, num_point, and num_leaf are the same as those in FIG. 99.

[0562] The number of overlapping points (num_combine_point) represents the number of inter-frame overlapping points related to the i-th intra-frame overlapping point. For example, if frame 0 and frame 1 include the 0-th intra-frame overlapping point, num_combine_point[i] is set to 2. This value corresponds to the number of overlapping points shown in Figure 83.

[0563] Combine_equalzero indicates whether the i-th overlapping point in the frame included in the leaf node exists in frame 0. For example, a value of 1 indicates that the i-th overlapping point in the frame exists in frame 0, and a value of 0 indicates that the i-th overlapping point in the frame does not exist in frame 0 (it exists in frame 1).

[0564] When NumberOfCombineFrame=2 and num_combine_point[i]=2, it is clear that there are inter-frame overlapping points in frame 0 and frame 1, so the 3D data encoding device does not need to include combine_equalzero in the bitstream. This reduces the amount of bits. In this case, the 3D data decoding device may determine that the overlapping point decoded first belongs to frame 0, and the overlapping point decoded later belongs to frame 1. Furthermore, when there are inter-frame overlapping points, the 3D data encoding device may sort the encoding order so that 3D points belonging to frame 0 are encoded before 3D points belonging to frame 1. This allows 3D points and their attribute values ​​to be encoded and decoded appropriately.

[0565] The combined index (combine_idx) is information indicating the rank of the ith overlapped point in the frame, and corresponds to the ranks shown in Fig. 83. In other words, bitmap information is uniquely associated with the combination of the number of overlapped points (num_combine_point) and the combined index (combine_idx).

[0566] The three-dimensional data encoding device may entropy encode num_point and num_combine_point. Furthermore, in this case, the three-dimensional data encoding device may perform encoding while switching between multiple encoding tables. For example, the three-dimensional data encoding device may arithmetically encode the first bit using encoding table A, and arithmetically encode the remaining bits using encoding table B.

[0567] Since num_combine_point is always 1 or greater, the three-dimensional data encoding device may encode num_combine_point_minus1 (=num_combine_point-1) instead of num_combine_point.

[0568] Furthermore, the three-dimensional data encoding device may entropy-encode combine_equalzero and combine_idx. For example, the three-dimensional data encoding device may binarize the values ​​and then arithmetically encode them.

[0569] Next, a case where a rank code pattern is used in the example shown in Fig. 100 will be described. In the example shown in Fig. 100, frame 0 has intra-frame overlap points 0 and 1. Frame 1 has intra-frame overlap point 0. Therefore, the maximum number of intra-frame overlap points is 2 for frame 0, and num_point is 2. As a result, num_point_minus2 is set to 0. Here, num_point_minus2 indicates the value obtained by subtracting 2 from num_point.

[0570] The num_combine_point of overlap point 0 is 2, and the num_combine_point of overlap point 1 is 1.

[0571] Furthermore, combine_equalzero is provided individually for each overlap point. Overlap point 0 is included in both frame 0 and frame 1. Therefore, combine_equalzero for overlap point 0 is not coded. Overlap point 1 is included in frame 0, but not in frame 1. Therefore, combine_equalzero for overlap point 0 is set to 1 and coded into the bitstream.

[0572] Below, we will explain the case where a rank code pattern is used in the example shown in Figures 101 and 102. In the example shown in Figures 101 and 102, the position information of the leaf node is (3, 8, 6). Also, the frame column shown in Figures 101 and 102 indicates the number of the original frame to which the overlapping point belongs.

[0573] In the example shown in FIG. 101, frame 0 contains three overlapping points, and frame 1 contains one overlapping point. Therefore, the maximum number of overlapping points within a frame is three, which is frame 0. In other words, num_point is 3.

[0574] Also, num_combine_point[0]=2, and combine_equalzero[0] is not coded. num_combine_point[1]=1, and combine_equalzero[1]=1. num_combine_point[2]=1, and combine_equalzero[2]=1.

[0575] Moreover, Figure 108 is a diagram showing the relationship between the occupancy status (bitmap information) of frames 0 and 1 and num_combine_point and combine_equalzero in the example shown in Figure 101. As shown in Figure 108, the occupancy status (bitmap information) of frames 0 and 1 is uniquely identified by the combination of num_combine_point and combine_equalzero.

[0576] In the example shown in Figure 102, frame 0 contains three overlapping points, frame 1 contains two overlapping points, frame 2 contains four overlapping points, and frame 3 contains one overlapping point. Therefore, the maximum number of overlapping points within a frame is four, which is frame 2. In other words, num_port is 4.

[0577] Also, num_combine_point[0]=4 and combine_idx[0]=0. Note that combine_idx[0] does not need to be coded. num_combine_point[1]=3 and combine_idx[1]=3. num_combine_point[2]=2 and combine_idx[2]=4. num_combine_point[3]=1 and combine_idx[3]=1.

[0578] Also, Figure 109 is a diagram showing the relationship between the occupancy status (bitmap information) of frames 0 to 3 and num_combine_point and combine_idx in the example shown in Figure 102. As shown in Figure 109, the occupancy status (bitmap information) of frames 0 to 3 is uniquely identified by the combination of num_combine_point and combine_idx.

[0579] Next, the flow of three-dimensional data encoding processing using a rank code pattern will be described. Fig. 110 is a flowchart of three-dimensional data encoding processing using a rank code pattern. The processing shown in Fig. 110 is repeatedly performed for each node. Note that the processing of steps S6301 to S6306 and step S6314 is the same as in Fig. 103, and description thereof will be omitted.

[0580] In step S6306, when i < num_point[leaf] is satisfied (Yes in S6306), the three-dimensional data encoding device encodes num_combine_point[leaf][i] (S6307A). Next, the three-dimensional data encoding device determines whether NumberOfCombineFrame == 2 and num_combine_point[leaf][i] == 1 are satisfied (S6308A).

[0581] When NumberOfCombineFrame == 2 and num_combine_point[leaf][i] == 1 are satisfied (Yes in S6308A), the three-dimensional data encoding device encodes combine_equalzero[leaf][i] (S6309A).

[0582] On the other hand, when NumberOfCombineFrame == 2 and num_combine_point[leaf][i] == 1 are not satisfied (No in S6308A), the three-dimensional data encoding device determines whether NumberOfCombineFrame > 2 is satisfied (S6310A).

[0583] When NumberOfCombineFrame > 2 is satisfied (Yes in S6310A), the three-dimensional data encoding device encodes combine_idx[leaf][i] (S6311A).

[0584] After step S6309A or step S6311A, or when NumberOfCombineFrame > 2 is not satisfied in step S6310A (No in S6310A), the three-dimensional data encoding device increments i by 1 (S6312A) and performs the processing after step S6306 again.

[0585] FIG. 111 is a flowchart of three-dimensional data decoding processing using a rank code pattern. The processing shown in FIG. 111 is repeated for each node. The processing of steps S6321 to S6324 and step S6332 is the same as that in FIG. 106, and the description thereof is omitted.

[0586] In step S6324, when i < num_point[leaf] is satisfied (Yes in S6324), the three-dimensional data decoding device decodes num_combine_point[leaf][i] from the bit stream (S6325A).

[0587] Next, the three-dimensional data decoding device determines whether NumberOfCombineFrame == 2 and num_combine_point[leaf][i] == 1 are satisfied (S6326A). Here, NumberOfCombineFrame indicates the number of frames combined by frame combination, and is included in the bit stream, for example.

[0588] When NumberOfCombineFrame == 2 and num_combine_point[leaf][i] == 1 are satisfied (Yes in S6326A), the three-dimensional data decoding device decodes combine_equalzero[leaf][i] from the bit stream (S6327A).

[0589] Note that when NumberOfCombineFrame = 2 and num_combine_point[i] = ۲, it can be seen that there are inter-frame overlapping points in frame ժ and frame ۱. Therefore, the three-dimensional data decoding device does not have to decode combine_equalzero. At that time, the three-dimensional data decoding device determines that the previously decoded overlapping point belongs to frame ժ and the subsequently decoded overlapping point belongs to frame ۱.

[0590] [[ID=十九]] On the other hand, if NumberOfCombineFrame==2 and num_combine_point[leaf][i]==1 are not satisfied (No in S6326A), the three-dimensional data decoding device determines whether NumberOfCombineFrame>2 is satisfied (S6328A). If NumberOfCombineFrame>2 is satisfied (Yes in S6328A), the three-dimensional data decoding device decodes combine_idx[leaf][i] from the bitstream (S6329A).

[0591] After step S6327A or S6329A, or if NumberOfCombineFrame>2 is not satisfied in step S6328A (No in S6328A), the 3D data decoding device calculates which frame the inter-frame overlap point is included in from the values ​​of num_combine_point and combine_equalzero or combine_idx. The 3D data decoding device also decodes 3D points by adding position information (x, y, z) corresponding to the position of the leaf node being decoded to each overlap point (S6330A). At this time, the 3D data decoding device may add the smallest frame number to the first 3D point, and then add frame numbers in ascending order thereafter.

[0592] Next, the three-dimensional data decoding device increments i by 1 (S6331A) and performs the processes from step S6324 onwards again.

[0593] An example syntax of various flags used in joint coding will be described below. Fig. 112 is a diagram showing an example syntax of SPS, which is a parameter set for each sequence (each multiple frames). The SPS shown in Fig. 112 includes a frame combining application flag (combine_coding_enable_flag).

[0594] The frame combining application flag (combine_coding_enable_flag) is a flag for switching whether or not to apply frame combining at the sequence level. For example, a value of 1 indicates that frame combining is applied, and a value of 0 indicates that frame combining is not applied.

[0595] If there is a possibility that frame splicing will be applied within the sequence, the three-dimensional data encoding device may set the frame splicing application flag to the value 1, and if there is no possibility that frame splicing will be applied, the three-dimensional data encoding device may set the frame splicing application flag to the value 0. The three-dimensional data encoding device may add the frame splicing application flag to a header other than the SPS, etc.

[0596] Fig. 113 is a diagram showing an example of the syntax of GPS, which is a parameter set for each frame and is a parameter set for location information. The GPS shown in Fig. 113 includes the number of combined frames minus 1 (NumberOfCombineFrame_minus1).

[0597] The number of combined frames minus 1 (NumberOfCombineFrame_minus1) is information indicating the number of combined frames minus 1. NumberOfCombineFrame_minus1 may be added to the bitstream when combine_coding_enable_flag is 1. NumberOfCombineFrame_minus1 may also be added to a header other than GPS.

[0598] The three-dimensional data encoding device may add a value obtained by subtracting the value 1 from NumberOfCombineFrame to the bitstream as NumberOfCombineFrame_minus1. Furthermore, the three-dimensional data encoding device may add NumberOfCombineFrame_minus1 with a value of 0 to GPS related to frames to which frame combining is not applied.

[0599] This allows the three-dimensional data decoding device to calculate NumberOfCombineFrame by adding the value 1 to the decoded NumberOfCombineFrame_minus1. Furthermore, if NumberOfCombineFrame is 1, the three-dimensional data decoding device can determine that frame combining has not been applied to the decoded GPS-related frame. In this case, the three-dimensional data decoding device may determine that information regarding frame combining (e.g., frame information for each three-dimensional point cloud (e.g., a frame index indicating the frame to which the point cloud belongs)) is not included in the bit stream of the corresponding frame, and may not need to decode such information. Note that the value of NumberOfCombineFrame ranges from 1 to the maximum number of combinations, for example. Furthermore, the maximum number of combinations may be limited to a value that is a power of two.

[0600] Fig. 114 is a diagram illustrating another example of the syntax of GPS. The GPS illustrated in Fig. 114 includes a frame combining application flag (combine_coding_enable_flag) and the number of combined frames minus 2 (NumberOfCombineFrame_minus2).

[0601] The frame combining application flag (combine_coding_enable_flag) is a flag for switching whether or not to apply frame combining at the frame level. For example, a value of 1 indicates that frame combining is applied, and a value of 0 indicates that frame combining is not applied. The three-dimensional data encoding device may set the frame combining application flag to 1 if the three-dimensional point cloud to be encoded has been frame combined and coded, or may set the frame combining application flag to 0 if frame combining is not applied. Furthermore, if the decoded combine_coding_enable_flag is 1, the three-dimensional data decoding device may determine that frame combining has not been applied to the decoded GPS-related frame. In this case, the three-dimensional data decoding device may determine that information regarding frame combining (e.g., frame information for each three-dimensional point cloud (e.g., a frame index indicating the frame to which the point cloud belongs)) is not included in the bitstream of the corresponding frame, and may not decode such information.

[0602] The number of combined frames - 2 (NumberOfCombineFrame_minus2) indicates the number of combined frames - 2. When combine_coding_enable_flag is 1, the three-dimensional data encoding device may add NumberOfCombineFrame_minus2 to the bitstream. The three-dimensional data encoding device may add a value obtained by subtracting the value 2 from NumberOfCombineFrame to the bitstream as NumberOfCombineFrame_minus2. Furthermore, the three-dimensional data decoding device may calculate NumberOfCombineFrame by adding the value 2 to the decoded NumberOfCombineFrame_minus2.

[0603] The value of NumberOfCombineFrame ranges from 2 to the maximum number of combinations. The maximum number of combinations may be limited to a value that is a power of 2.

[0604] The three-dimensional data encoding device may entropy-encode combine_coding_enable_flag, NumberOfCombineFrame_minus1, or NumberOfCombineFrame_minus2. For example, the three-dimensional data encoding device may binarize the values ​​and then arithmetically encode them. Alternatively, the three-dimensional data encoding device may encode these pieces of information in a fixed length.

[0605] In addition, when the three-dimensional data encoding device encodes frame information (for example, a frame index indicating the frame to which the point group belongs) to be added to a three-dimensional point as attribute information, the maximum value that the attribute information can take may be set as the maximum combination number of NumberOfCombine.

[0606] The following describes how to switch whether or not to apply frame splicing. By setting frame splicing to be inapplicable to some frames, it is possible to improve coding efficiency. There are three methods for determining whether or not to apply frame splicing: a method that uses the distance between frames to be spliced, a method that uses external information, and a method that compares the results when frame splicing is used with those when it is not used.

[0607] Here, the external information includes, for example, speedometer or accelerometer data. In the method comparing with and without frame combining, a test compression is performed to see if the combined coding is beneficial.

[0608] For example, the three-dimensional data encoding device determines whether the vehicle body is stationary from a speedometer or an acceleration sensor, and applies frame combining if the vehicle body is stationary, and does not apply frame combining if the vehicle body is stationary. The three-dimensional data encoding device may also apply frame combining if the vehicle speed is below a predetermined speed, and not apply frame combining if the vehicle speed is below a predetermined speed. This allows frame combining to be applied to scenes where frame combining is effective, thereby improving encoding efficiency.

[0609] FIG. 115 is a diagram showing an example of the relationship between the ratio of the coding efficiency when frame splicing is performed to the coding efficiency when frame splicing is not performed, and whether frame splicing is applicable. The vertical axis in the diagram indicates the value obtained by dividing the coding efficiency when frame splicing is performed by the coding efficiency when frame splicing is not performed. In other words, when the value exceeds 1, the coding efficiency when frame splicing is not performed is higher than when frame splicing is performed. Therefore, frame splicing is set to not be applied in areas where the ratio on the vertical axis exceeds 1, and frame splicing is set to be applied in other areas.

[0610] Figure 116 is a diagram showing the relationship between the above-mentioned ratio of coding efficiency and the distance between frames to be spliced. As shown in the figure, there is a correlation between the above-mentioned ratio of coding efficiency and the distance between frames. Therefore, the three-dimensional data encoding device can switch whether or not to apply frame splicing using the distance between frames.

[0611] For example, the three-dimensional data encoding device calculates the distance dist between frames using the following (Equation I1).

[0612]

number

[0613] Furthermore, when encoding multiple frames, the three-dimensional data encoding device may determine not to combine frames if the remaining number of frames to be encoded is less than the number of GOPs. Furthermore, the three-dimensional data encoding device may change the number of frames included in a GOP to match the remaining number of frames to be encoded. This allows all frames to be encoded appropriately.

[0614] Fig. 117 is a diagram showing a schematic diagram of switching whether or not to apply frame splicing. As shown in Fig. 117, whether or not to apply frame splicing is adaptively switched.

[0615] 118 is a flowchart of three-dimensional data encoding processing. First, the three-dimensional data encoding device acquires input frame data (S6341). Next, the three-dimensional data encoding device determines whether frame splicing is available (S6342). For example, this determination may be made based on an external instruction or the like, or any of the determinations described above may be used.

[0616] If frame splicing is available (Yes in S6342), the three-dimensional data encoding device determines whether or not to use frame splicing (S6343). For example, this determination may be made using any of the methods described above.

[0617] If it is determined that frame splicing is to be used (Yes in S6343), the three-dimensional data encoding device performs frame splicing (S6344) and encodes the spliced ​​frame (S6345).

[0618] On the other hand, if frame splicing is not available (No in S6342), or if it is determined that frame splicing will not be used (No in S6343), the three-dimensional data encoding device encodes the input frame without performing frame splicing (S6345).

[0619] Fig. 119 is a diagram showing a specific example of the three-dimensional data encoding process shown in Fig. 118. The process shown in Fig. 119 includes steps S6343A and S6343B instead of step S6343 shown in Fig. 118.

[0620] If frame splicing is available (Yes in S6342), the three-dimensional data encoding device calculates the distance diff between the frames to be spliced ​​(S6343A). Next, the three-dimensional data encoding device determines whether the distance diff is greater than a predetermined threshold th (S6343B). If the distance diff is equal to or less than the threshold th (No in S6343B), the three-dimensional data encoding device performs frame splicing (S6344) and encodes the spliced ​​frame (S6345). On the other hand, if the distance diff is greater than the threshold th (Yes in S6343B), the three-dimensional data encoding device does not perform frame splicing and encodes the input frame (S6345).

[0621] Fig. 120 is a block diagram of a three-dimensional data encoding device according to this embodiment. A three-dimensional data encoding device 6300 shown in Fig. 120 includes an I / O module 6301, a joint determination unit 6302, a joint encoding unit 6303, an encoding unit 6304, and an I / O module 6305.

[0622] The I / O module 6301 acquires point cloud data. The combination determination unit 6302 determines whether to apply frame combination. For example, the combination determination unit 6302 determines whether to apply frame combination using any of the above-mentioned methods: a method using the distance between frames to be combined, a method using external information, and a method comparing cases where frame combination is used and cases where it is not used.

[0623] If it is determined that frame splicing is to be applied, the spliced ​​coding unit 6303 performs frame splicing and encodes the spliced ​​frame. If it is determined that frame splicing is not to be applied, the coding unit 6304 encodes the input frame without performing frame splicing. The I / O module 6305 outputs the bitstream generated by the spliced ​​coding unit 6303 or the coding unit 6304.

[0624] Fig. 121 is a diagram showing a specific example of the splicing determination unit 6302. The three-dimensional data encoding device 6300A shown in Fig. 121 includes a distance calculation unit 6302A instead of the splicing determination unit 6302 shown in Fig. 120. The distance calculation unit 6302A calculates the distance diff between the frames to be spliced. If the distance diff is greater than a predetermined threshold th, the distance calculation unit 6302A determines not to apply frame splicing, and if the distance diff is equal to or less than the threshold th, determines to apply frame splicing.

[0625] An example of sending metadata (additional information) will be described below. When a three-dimensional data encoding device performs frame splicing, it may store metadata used to decode the spliced ​​frames in the GPS or APS. For example, this metadata may be information common to the spliced ​​frames, such as the number of spliced ​​frames or information for identifying the frames to be spliced. Note that the APS is, for example, a parameter set of attribute information for each frame.

[0626] On the other hand, the three-dimensional data encoding device may store information that is not essential for decoding or information that can be used by an application after decoding in metadata such as SEI (Supplemental Enhancement Information) for each frame and display it for each frame. For example, this metadata may include a timestamp indicating the generation time, encoding time, decoding time, or playback time of the frame data. This metadata may also include sensor information used when the frame data was acquired. The sensor information may include, for example, the speed, acceleration, position information, or orientation of the sensor. Note that the sensor information may also include information obtained by other sensors.

[0627] In other words, the three-dimensional data encoding device consolidates the metadata used to decode the combined frame and indicates the data to be used for each frame after dividing the combined frame, which may eliminate the need for the three-dimensional data decoding device to integrate or divide information for each frame.

[0628] The three-dimensional data encoding device may write an index of GPS, APS, or SPS in which information about the frame corresponding to the SEI is written, thereby allowing the three-dimensional data decoding device to refer to the corresponding information.

[0629] Also, for example, the SEI may be specified as being transmitted after the GPS or APS, and the three-dimensional data decoding device may determine that the GPS or APS transmitted before the SEI corresponds to the SEI.

[0630] Fig. 122 is a diagram showing an example of the structure of coded data (bitstream). As shown in Fig. 122, the metadata used when decoding a combined frame is stored as information on all frames. Furthermore, the metadata used after dividing the combined frame is stored for each frame.

[0631] Furthermore, although the three-dimensional data encoding device is not essential for decoding, it may store metadata that can be used for decoding in the SEI as information for all frames, and store data to be used by the application after decoding for each frame. By grouping the data to be used for decoding, it is possible to reduce the encoding overhead and input the data to be used by the application directly to the subsequent stage.

[0632] Fig. 123 is a diagram showing an example of the structure of coded data (bitstream). As shown in Fig. 123, the metadata used when decoding a spliced ​​frame stores information about all frames together. The metadata that is not essential for decoding but can be used for decoding stores information about all frames together.

[0633] Although the above describes an example in which information on all frames of a combined frame is stored in the metadata and an example in which information on each frame is stored, information on some frames may also be stored in the metadata. For example, if some frames do not contain sensor information, the metadata may indicate information on the remaining frames that contain sensor information.

[0634] Next, the metadata decoding process will be described. FIG. 124 is a flowchart of the metadata decoding process. First, the three-dimensional data decoding device receives the metadata (S6351). Next, the three-dimensional data decoding device determines whether the metadata includes information on two or more frames (S6352). That is, the three-dimensional data decoding device determines whether the metadata stores information on all frames of the combined frame or information for each frame. Whether the metadata stores information on all frames of the combined frame or information for each frame may be specified in advance based on the type of metadata or the type of SEI. Alternatively, information indicating whether the metadata stores information on all frames of the combined frame or information for each frame may be stored. Based on this, the three-dimensional data decoding device can determine the number of frames included in the metadata and perform processing.

[0635] If the metadata includes information on two or more frames (Yes in S6352), the three-dimensional data decoding device analyzes the information on the two or more frames and uses the obtained information for the decoding process (S6353). Next, the three-dimensional data decoding device converts the information on the two or more frames into information for each frame and inputs the information for each frame to the subsequent system layer (S6354).

[0636] On the other hand, if the metadata does not include information on two or more frames (No in S6352), the three-dimensional data decoding device does not use the information in the decoding, and inputs the information into the system layer (S6355).

[0637] As described above, the three-dimensional data encoding device according to this embodiment performs the processing shown in FIG. 125. The three-dimensional data encoding device generates joined point cloud data by combining multiple point cloud data (e.g., multiple frames) (S6361). Next, the three-dimensional data encoding device generates a bit stream by encoding the joined point cloud data (S6362). The bit stream includes: (i) first information (e.g., num_point) indicating the maximum number of overlapping points, which are 3D points with the same position information, included in each of the multiple point cloud data; and (ii) multiple pieces of second information (e.g., (1) combine_bit[i][j], (2) num_combine_point[i] and combine_equalzero[i], or (3) num_combine_pint[i] and combine_idx[i]), which are indices assigned values ​​equal to the maximum number, correspond to each of point indices (e.g., "i") for identifying multiple overlapping points belonging to the same point cloud data, and indicate to which of the multiple point cloud data the 3D point having the corresponding point index belongs.

[0638] This allows for improved encoding efficiency by collectively encoding multiple point cloud data. Furthermore, when overlapping points exist within point cloud data and between point cloud data, the first information and the second information allow for efficient identification of overlapping points. For example, the amount of data can be reduced compared to adding the total number of overlapping points included in the target node, information indicating the point cloud data to which each overlapping point belongs, and an identifier for each overlapping point.

[0639] For example, each of the plurality of second information includes third information (e.g., num_combine_point[i]) indicating the number of 3D points having a corresponding point index, and fourth information (e.g., combine_equalzero[i] or combine_idx[i]) that, in combination with the third information, can identify to which of the plurality of point cloud data the 3D point having the corresponding point index belongs. In other words, the combination of the third information and the fourth information uniquely associates each pattern indicated by the bitmap information. Furthermore, the bitmap information has the same number of bits as the number of the plurality of point cloud data. The plurality of bits correspond one-to-one to the plurality of point cloud data, and each bit indicates whether or not a 3D point (overlapping point) belonging to the corresponding point cloud data exists in the target node.

[0640] For example, when the number of 3D points indicated by the third information is equal to the number of the plurality of point cloud data, the corresponding second information does not include the fourth information, which can reduce the amount of code in the bitstream.

[0641] For example, each of the plurality of pieces of second information is bitmap information (for example, combine_bit[i][j]) having the same number of bits as the number of pieces of point cloud data.

[0642] 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.

[0643] Moreover, the three-dimensional data decoding device according to this embodiment performs the processing shown in Fig. 126. The three-dimensional data decoding device acquires, from a bit stream generated by encoding combined point cloud data in which a plurality of point cloud data are combined, (i) first information (e.g., num_point) indicating the maximum number of overlapping points, which are three-dimensional points with the same position information and are included in each of the plurality of point cloud data, and (ii) a plurality of pieces of second information (e.g., (1) combine_bit[i][j], (2) num_combine_point[i] and combine_equalzero[i], or (3) num_combine_pint[i] and combine_idx[i]), which are indices assigned values ​​equal to the maximum number, correspond to each of point indices (e.g., "i") for identifying a plurality of overlapping points belonging to the same point cloud data, and indicate to which of the plurality of point cloud data the three-dimensional point having the corresponding point index belongs (S6371). The three-dimensional data decoding device uses the first information and the plurality of pieces of second information to (i) decode spliced ​​point cloud data from the bit stream, and (ii) generate a plurality of point cloud data from the spliced ​​point cloud data (S6372). For example, the three-dimensional data decoding device uses the first information and the plurality of pieces of second information to determine the number of three-dimensional points (overlapping points) included in the target node and the point cloud data to which each three-dimensional point belongs. The three-dimensional data decoding device decodes the spliced ​​point cloud data based on the number of three-dimensional points (overlapping points) included in the target node, and separates the plurality of point cloud data from the spliced ​​point cloud data based on the point cloud data to which each three-dimensional point belongs.

[0644] This allows for improved encoding efficiency by collectively encoding multiple point cloud data. Furthermore, when overlapping points exist within point cloud data and between point cloud data, the first information and the second information allow for efficient identification of overlapping points.

[0645] For example, each of the multiple second information includes third information (e.g., num_combine_point[i]) indicating the number of three-dimensional points having the corresponding point index, and fourth information (e.g., combine_equalzero[i] or combine_idx[i]) that, in combination with the third information, can identify to which of the multiple point cloud data the three-dimensional point having the corresponding point index belongs.

[0646] For example, when the number of 3D points indicated by the third information is equal to the number of the plurality of point cloud data, the corresponding second information does not include the fourth information, which can reduce the amount of code in the bitstream.

[0647] For example, each of the plurality of pieces of second information is bitmap information (for example, combine_bit[i][j]) having the same number of bits as the number of pieces of point cloud data.

[0648] For example, the three-dimensional data decoding device includes a processor and a memory, and the processor performs the above processing using the memory.

[0649] Although the three-dimensional data encoding device and the three-dimensional data decoding device according to the embodiments of the present disclosure have been described above, the present disclosure is not limited to these embodiments.

[0650] Furthermore, each processing unit included in the three-dimensional data encoding device and three-dimensional data decoding device according to the above embodiments is typically realized as an LSI, which is an integrated circuit. These may be individually implemented as single chips, or some or all of them may be integrated into a single chip.

[0651] Furthermore, the integration is not limited to LSI, but may be realized by dedicated circuits or general-purpose processors. FPGAs (Field Programmable Gate Arrays), which can be programmed after LSI fabrication, or reconfigurable processors, which allow the connections and settings of circuit cells within LSIs to be reconfigured, may also be used.

[0652] In each of the above embodiments, each component may be configured with dedicated hardware, or may be realized by executing a software program suitable for each component. Each component may be realized by a program execution unit such as a CPU or processor reading and executing a software program recorded on a recording medium such as a hard disk or semiconductor memory.

[0653] Furthermore, the present disclosure may be realized as a three-dimensional data encoding method or a three-dimensional data decoding method executed by a three-dimensional data encoding device, a three-dimensional data decoding device, or the like.

[0654] The division of functional blocks in the block diagram is an example, and multiple functional blocks may be realized as a single functional block, one functional block may be divided into multiple blocks, or some functions may be moved to another functional block.Furthermore, the functions of multiple functional blocks having similar functions may be processed in parallel or in time-sharing by a single piece of hardware or software.

[0655] The order in which the steps in the flowchart are executed is merely an example for specifically explaining the present disclosure, and an order other than the above may be used. Also, some of the steps may be executed simultaneously (in parallel) with other steps.

[0656] While the three-dimensional data encoding device and three-dimensional data decoding device according to one or more aspects have been described above based on the embodiments, the present disclosure is not limited to these embodiments. As long as they do not deviate from the spirit of the present disclosure, various modifications conceivable by those skilled in the art to the present embodiments, and configurations constructed by combining components of different embodiments, may also be included within the scope of one or more aspects. [Industrial Applicability]

[0657] The present disclosure is applicable to a three-dimensional data encoding device and a three-dimensional data decoding device. [Explanation of symbols]

[0658] 4601 Three-dimensional data encoding system 4602 Three-dimensional data decoding system 4603 Sensor Terminal 4604 External connection part 4611 Point Cloud Data Generation System 4612 Presentation section 4613 Encoding section 4614 Multiplexer 4615 Input / output section 4616 Control Unit 4617 Sensor information acquisition unit 4618 Point Cloud Data Generation Unit 4621 Sensor Information Acquisition Unit 4622 Input / output section 4623 Demultiplexer 4624 Decoding Unit 4625 Presentation section 4626 User Interface 4627 Control Unit 4630 First Encoding Section 4631 Location information encoder 4632 Attribute information encoder 4633 Additional information coding unit 4634 Multiplexer 4640 First Decoding Unit 4641 Demultiplexer 4642 Location Information Decoding Unit 4643 Attribute Information Decoding Unit 4644 Additional information decoding unit 4650 Second Encoding Section 4651 Additional Information Generation Unit 4652 Position image generation unit 4653 Attribute Image Generation Unit 4654 Video Encoding Unit 4655 Additional information coding unit 4656 Multiplexer 4660 Second Decoding Unit 4661 Demultiplexer 4662 Video Decoding Unit 4663 Additional information decoding unit 4664 Location information generator 4665 Attribute information generation section 4801 Encoding section 4802 Multiplexer 4910 First Encoding Section 4911 Split section 4912 Location information encoder 4913 Attribute information encoder 4914 Additional information coding unit 4915 Multiplexer 4920 First Decoding Unit 4921 Demultiplexer 4922 Location Information Decoding Unit 4923 Attribute Information Decoding Unit 4924 Additional information decoding unit 4925 Joint 4931 Slice division part 4932 Location information tile division part 4933 Attribute information tile division part 4941 Location information tile joint 4942 Attribute information tile combination 4943 Slice Junction 5410 Encoding section 5411 Split section 5412 Location information encoder 5413 Attribute information encoder 5414 Additional information coding unit 5415 Multiplexer 5421 Tile division section 5422 Slice division part 5431, 5441 Frame index generation unit 5432, 5442 Entropy coding unit 5450 Decryption Unit 5451 Demultiplexer 5452 Location Information Decoding Unit 5453 Attribute Information Decoding Unit 5454 Additional information decoding unit 5455 Joint 5461, 5471 Entropy Decoding Unit 5462, 5472 Frame index acquisition section 5510 Location information encoder 5511, 5521 Frame index generation unit 5512, 5522 Entropy coding unit 5520 Attribute information encoder 5530 Location Information Decoding Unit 5531, 5541 Entropy Decoding Unit 5532, 5542 Frame index acquisition section 5540 Attribute Information Decoding Unit 5550 Frame joint 5560 Frame Index Encoding Unit 5561 Bitmap Generator 5562, 5583 Lookup table reference section 5563, 5581 Bit number acquisition section 5570 Combined Data Generation Unit 5582 Rank Acquisition Department 5584 Frame division part 6300, 6300A 3D Data Encoding Device 6301, 6305 I / O Modules 6302 Connection determination unit 6302A Distance Calculation Unit 6303 Combined encoder 6304 Encoding section

Claims

1. generating coded data in which a second frame is coded by combining a plurality of first frames each including three-dimensional data at different times; generating first metadata to be used when decoding the second frame; generating second metadata to be used after dividing the second frame into the plurality of first frames; generating a bitstream including the encoded data, the first metadata, and the second metadata; Three-dimensional data encoding method.

2. The first metadata is stored in a location information parameter set or an attribute information parameter set. The three-dimensional data encoding method according to claim 1 .

3. The first metadata includes the number of frames to be combined or information for identifying frames to be combined.

3. The three-dimensional data encoding method according to claim 1 or 2.

4. The second metadata is stored in Supplemental Enhancement Information. The three-dimensional data encoding method according to any one of claims 1 to 3.

5. The second metadata includes time information of each of the plurality of first frames. The three-dimensional data encoding method according to any one of claims 1 to 3.

6. The time information indicates a generation time, an encoding time, or a decoding time of the first frame.

6. The three-dimensional data encoding method according to claim 5.

7. The second metadata includes sensor information that acquired the data of the plurality of first frames. The three-dimensional data encoding method according to any one of claims 1 to 6.

8. The second frame is a coding unit. The three-dimensional data encoding method according to any one of claims 1 to 7.

9. obtaining a bitstream including coded data in which a second frame is coded by combining a plurality of first frames, each of which includes three-dimensional data at different times; first metadata to be used when decoding the second frame; and second metadata to be used after dividing the second frame into the plurality of first frames; Decoding the encoded data using the first metadata. Three-dimensional data decoding method.

10. The first metadata is stored in a location information parameter set or an attribute information parameter set. The three-dimensional data decoding method according to claim 9.

11. The first metadata includes the number of frames to be combined or information for identifying frames to be combined.

11. The three-dimensional data decoding method according to claim 9 or 10.

12. The second metadata is stored in Supplemental Enhancement Information. The three-dimensional data decoding method according to any one of claims 9 to 11.

13. The second metadata includes time information of each of the plurality of first frames. The three-dimensional data decoding method according to any one of claims 9 to 12.

14. The time information indicates a generation time, an encoding time, or a decoding time of the first frame. The three-dimensional data decoding method according to claim 13.

15. The second metadata includes sensor information that acquired the data of the plurality of first frames. The three-dimensional data decoding method according to any one of claims 9 to 14.

16. The second frame is a coding unit. The three-dimensional data decoding method according to any one of claims 9 to 15.

17. a processor; a memory; The processor uses the memory to: generating coded data in which a second frame is coded by combining a plurality of first frames each including three-dimensional data at different times; generating first metadata to be used when decoding the second frame; generating second metadata to be used after dividing the second frame into the plurality of first frames; generating a bitstream including the encoded data, the first metadata, and the second metadata; Three-dimensional data encoding device.

18. a processor; a memory; The processor uses the memory to: obtaining a bitstream including coded data in which a second frame is coded by combining a plurality of first frames, each of which includes three-dimensional data at different times; first metadata to be used when decoding the second frame; and second metadata to be used after dividing the second frame into the plurality of first frames; Decoding the encoded data using the first metadata. Three-dimensional data decoding device.

Citation Information

Patent Citations

  • Map display device

    WO2014020663A1

Cited By

  • Method for adhering cured rubber components

    US12623424B2