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

By dividing three-dimensional space into sub-spaces and applying specific movement amounts to point cloud data, the method improves encoding efficiency and facilitates effective decoding of three-dimensional data.

JP2025105670AActive Publication Date: 2025-07-10PANASONIC INTELLECTUAL PROPERTY CORP OF AMERICA
View PDF 7 Cites 0 Cited by

Patent Information

Application Number
JP2025068265
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Priority Date
2018-12-28
Filing Date
2025-04-17
Publication Date
2025-07-10
Estimated Expiration
2039-12-27

AI Technical Summary

Technical Problem

The existing methods for encoding and decoding three-dimensional data, particularly point cloud data, suffer from inefficiencies in data compression, leading to high data volume and challenges in transmission and storage.

Method used

A method involving the division of three-dimensional space into sub-spaces, where point cloud data is divided into sub-point cloud data, and each is moved by a common and individual movement amount before encoding, allowing for improved encoding efficiency through reduced position information.

Benefits of technology

This approach reduces the amount of position information required for each sub-point cloud data, enhancing encoding efficiency and enabling effective decoding using a bit stream.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2025105670000001_ABST
    Figure 2025105670000001_ABST
Patent Text Reader

Abstract

To provide a three-dimensional data encoding method and the like capable of improving encoding efficiency.SOLUTION: The three-dimensional data encoding method for encoding three-dimensional data includes the following steps: generating multiple pieces of sub-three-dimensional data, each including positional information of part of the three-dimensional data; calculating the common movement amount for the multiple pieces of sub-three-dimensional data; calculating the multiple individual movement amounts for each of the multiple pieces of the sub three-dimensional data; and encoding each of the multiple pieces of sub three-dimensional data which has been moved using the common movement amount and corresponding individual movement amount.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 apparatus, a three-dimensional data decoding apparatus, and a program.

Background Art

[0002] In the future, the spread of devices or services utilizing three-dimensional data is expected in a wide range of fields such as computer vision, map information, monitoring, infrastructure inspection, or video distribution for autonomous operation of automobiles or robots. The three-dimensional data is acquired by various methods such as a distance sensor such as a range finder, a stereo camera, or a combination of a plurality of monocular cameras.

[0003] As one of the expression methods of three-dimensional data, there is an expression method called a point cloud that represents the shape of a three-dimensional structure by a point group in a three-dimensional space. In the point cloud, the positions and colors of the point group are stored. Although the point cloud is expected to become mainstream as an expression method of three-dimensional data, the amount of data of the point group is very large. Therefore, in the accumulation or transmission of three-dimensional data, similar to two-dimensional moving images (for example, MPEG-4 AVC or HEVC standardized by MPEG), compression of the amount of data by encoding is essential.

[0004] In addition, regarding the compression of the point cloud, it is partially supported by a publicly available library (Point Cloud Library) that performs point cloud-related processing.

[0005] In addition, a technique is known for searching for and displaying facilities located around a vehicle using three-dimensional map data (see, for example, Patent Document 1).

Prior Art Documents

Patent Documents

[0006]

Patent Document 1

Summary of the Invention

Problems to be Solved by the Invention

[0007] In the encoding process and decoding process of three-dimensional data, it is desired to improve the encoding efficiency.

[0008] The present disclosure aims 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 the encoding efficiency.

Means for Solving the Problems

[0009] A three-dimensional data encoding method according to an aspect of the present disclosure is a three-dimensional data encoding method for encoding three-dimensional data, which respectively generates a plurality of sub-three-dimensional data each including position information of a part of the three-dimensional data, calculates a common movement amount for the plurality of sub-three-dimensional data, calculates a plurality of individual movement amounts respectively corresponding to the plurality of sub-three-dimensional data, moves each of the plurality of sub-three-dimensional data using the common movement amount and the corresponding individual movement amount, and encodes each of the plurality of sub-three-dimensional data moved using the common movement amount and the corresponding individual movement amount.

[0010] A three-dimensional data decoding method according to an aspect of the present disclosure obtains common movement information, a plurality of individual movement information, and a plurality of sub-three-dimensional data each including position information of a part of the three-dimensional data, decodes the plurality of sub-three-dimensional data to obtain a plurality of decoded position information, calculates a common movement amount using the common movement information, calculates an individual movement amount corresponding to each of the plurality of sub-three-dimensional data using each of the plurality of individual movement information, the plurality of sub-three-dimensional data are each moved using the common movement amount and the corresponding individual movement amount, the common movement amount is a movement of the same distance in the plurality of sub-three-dimensional data and is a movement in a direction from a first point to a second point in a three-dimensional space, the individual movement amount is a different distance in the plurality of sub-three-dimensional data and is a movement in a direction from the second point to a third point in the three-dimensional space.

[0011] A three-dimensional data encoding method according to an aspect of the present disclosure is a three-dimensional data encoding method for encoding point cloud data indicating a plurality of three-dimensional positions in a three-dimensional space, which divides the three-dimensional space into a plurality of sub-spaces to divide the point cloud data into a plurality of sub-point cloud data, calculates a common movement amount for the plurality of sub-point cloud data, the common movement amount is a movement of the same distance among the plurality of sub-point cloud data and indicates a movement in a direction toward a predetermined point in the three-dimensional space, moves the plurality of sub-point cloud data by the common movement amount, calculates a plurality of individual movement amounts corresponding to the plurality of sub-point cloud data each moved by the common movement amount, the plurality of individual movement amounts are movements of different distances among the plurality of sub-point cloud data each moved by the common movement amount and indicate a movement in a direction toward the predetermined point, for each of the plurality of sub-point cloud data each moved by the common movement amount, moves the sub-point cloud data by the individual movement amount corresponding to the sub-point cloud data, and encodes the plurality of sub-point cloud data each moved by the corresponding individual movement amount.

[0012] A three-dimensional data decoding method according to one aspect of the present disclosure is a point cloud data indicating a plurality of three-dimensional positions by dividing a three-dimensional space into a plurality of sub-spaces, and is a plurality of sub-point cloud data obtained by dividing the point cloud data, each of which is moved by a common movement amount and a corresponding individual movement amount, common movement information for calculating the common movement amount, and a plurality of individual movement information for calculating each of the plurality of individual movement amounts by which the plurality of sub-point cloud data are moved, are decoded from a bit stream, the common movement amount is a movement of the same distance among the plurality of sub-point cloud data, and indicates a movement in a direction toward a predetermined point in the three-dimensional space, the plurality of individual movement amounts by which the plurality of sub-point cloud data are moved are movements of different distances among the plurality of sub-point cloud data moved by the common movement amount, and indicate a movement in the direction toward the predetermined point, for each of the plurality of sub-point cloud data, the point cloud data is restored by moving the sub-point cloud data by an amount obtained by adding the common movement amount and the individual movement amount corresponding to the sub-point cloud data.

[0013] A three-dimensional data encoding method according to one aspect of the present disclosure is a three-dimensional data encoding method for encoding point cloud data indicating a plurality of three-dimensional positions in a three-dimensional space, the method including moving the point cloud data by a first movement amount, dividing the three-dimensional space into a plurality of sub-spaces to divide the point cloud data into a plurality of sub-point cloud data, and for each of the plurality of sub-point cloud data included in the point cloud data after being moved by the first movement amount, moving the sub-point cloud data by a second movement amount based on the position of the sub-space in which the sub-point cloud data is included, and generating a bit stream by encoding the plurality of sub-point cloud data after the movement, the bit stream including first movement information for calculating the first movement amount and a plurality of second movement information for calculating each of the plurality of second movement amounts by which the plurality of sub-point cloud data are moved.

[0014] A three-dimensional data decoding method according to one aspect of the present disclosure is point cloud data indicating a plurality of three-dimensional positions divided by dividing a three-dimensional space into a plurality of sub-spaces, each being a plurality of sub-point cloud data obtained by moving the sub-point cloud data by a first movement amount and a corresponding second movement amount, first movement information for calculating the first movement amount, and a plurality of second movement information for calculating each of the plurality of second movement amounts by which the plurality of sub-point cloud data are moved, are decoded from a bit stream, and each of the plurality of sub-point cloud data is moved by an amount obtained by adding the first movement amount and the corresponding second movement amount to restore the point cloud data.

Advantages of the Invention

[0015] The present disclosure can provide a three-dimensional data encoding method, a three-dimensional data decoding method, a three-dimensional data encoding apparatus, or a three-dimensional data decoding apparatus that can improve encoding efficiency.

Brief Description of the Drawings

[0016]

Figure 1

Figure 2

Figure 3

Figure 4

Figure 5

Figure 6

Figure 7

Figure 8

Figure 9

Figure 10

Figure 11

Figure 12

Figure 13

Figure 14

Figure 15

Figure 16

Figure 17

Figure 18

Figure 19

Figure 20

Figure 21

Figure 22

Figure 23

Figure 24

Figure 25

Figure 26

Figure 27

Figure 28

Figure 29

Figure 30

Figure 31

Figure 32

Figure 33

Figure 34

Figure 35

Figure 36

Figure 37

Figure 38

Figure 39

Figure 40

Figure 41

Figure 42

Figure 43

Figure 44

Figure 45

Figure 46

Figure 47

Figure 48

Figure 49

Figure 50

Figure 51

Figure 52

Figure 53

Figure 54

Figure 55

Figure 56

Figure 57

Figure 58

Figure 59

Figure 60

Figure 61

Figure 62

Figure 63

Figure 64

Figure 65

Figure 66

Figure 67

Figure 68

Figure 69

Figure 70

Figure 71

Figure 72

Figure 73

Figure 74

Figure 75

Figure 76

Figure 77

Figure 78

Figure 79

Figure 80

Figure 81

Figure 82

Figure 83

Figure 84

Figure 85

Figure 86

Figure 87

Figure 88

Figure 89

Figure 90

Figure 91

Figure 92

Figure 93

Figure 94

Figure 95

Figure 96

Figure 97

Figure 98

Figure 99

Figure 100

Figure 101

Figure 102

Figure 103

Figure 104

Figure 105

Figure 106

Figure 107

Figure 108

Figure 109

Figure 110

Figure 111

Figure 112

Figure 113

Figure 114

Figure 115

Figure 116

Figure 117

Figure 118

Figure 119

Figure 120

Figure 121

Mode for Carrying Out the Invention

[0017] A three-dimensional data encoding method according to one aspect of the present disclosure is a three-dimensional data encoding method for encoding point cloud data indicating a plurality of three-dimensional positions in a three-dimensional space. The method includes moving the point cloud data by a first movement amount, dividing the three-dimensional space into a plurality of sub-spaces to divide the point cloud data into a plurality of sub-point cloud data, and for each of the plurality of sub-point cloud data included in the point cloud data after being moved by the first movement amount, moving the sub-point cloud data by a second movement amount based on the position of the sub-space in which the sub-point cloud data is included, and generating a bit stream by encoding the plurality of sub-point cloud data after the movement. The bit stream includes first movement information for calculating the first movement amount and a plurality of second movement information for calculating the plurality of second movement amounts by which the plurality of sub-point cloud data are moved, respectively.

[0018] According to this, since the divided sub-point cloud data is encoded after being moved, the amount of information of the position information of each sub-point cloud data can be reduced, and the encoding efficiency can be improved.

[0019] For example, the plurality of sub-spaces may have the same size as each other, and each of the plurality of second movement information may include the number of the plurality of sub-spaces and first identification information for identifying the corresponding sub-space.

[0020] Therefore, the amount of information of the second movement information can be reduced, and the encoding efficiency can be improved.

[0021] For example, the first identification information may be a Morton order corresponding to each of the plurality of sub-spaces.

[0022] For example, each of the plurality of sub-spaces is a space obtained by dividing one three-dimensional space using an octree, and the bit stream may include second identification information indicating that the plurality of sub-spaces are spaces obtained by dividing using an octree and depth information indicating the depth of the octree.

[0023] Therefore, in order to divide the point cloud data in the three-dimensional space using an octree, the amount of information of the position information of each sub-point cloud data can be reduced, and the coding efficiency can be improved.

[0024] For example, the division may be performed after moving the point cloud data by the first movement amount.

[0025] In addition, a three-dimensional data decoding method according to an aspect of the present disclosure is a plurality of sub-point cloud data obtained by dividing point cloud data indicating a plurality of three-dimensional positions by dividing a three-dimensional space into a plurality of sub-spaces, each of which is moved by a first movement amount and a corresponding second movement amount, a first movement information for calculating the first movement amount, and a plurality of second movement information for calculating each of the plurality of second movement amounts by which the plurality of sub-point cloud data are moved, are decoded from a bit stream, and each of the plurality of sub-point cloud data may be moved by an amount obtained by adding the first movement amount and the corresponding second movement amount to restore the point cloud data.

[0026] According to this, the point cloud data can be correctly decoded using a bit stream with improved coding efficiency.

[0027] For example, the plurality of sub-spaces may have equal sizes to each other, and each of the plurality of second movement information may include the number of the plurality of sub-spaces and first identification information for identifying the corresponding sub-space.

[0028] For example, the first identification information may be a Morton order corresponding to each of the plurality of sub-spaces.

[0029] For example, each of the plurality of sub-spaces is a space obtained by dividing one three-dimensional space using an octree, and the bit stream may include second identification information indicating that the plurality of sub-spaces are spaces obtained by dividing using an octree and depth information indicating the depth of the octree.

[0030] Also, a three-dimensional data encoding device according to an aspect of the present disclosure is a three-dimensional data encoding device that encodes point cloud data indicating a plurality of three-dimensional positions in a three-dimensional space, and includes a processor and a memory. The processor uses the memory to move the point cloud data by a first movement amount, divides the three-dimensional space into a plurality of sub-spaces, thereby dividing the point cloud data into a plurality of sub-point cloud data, and for each of the plurality of sub-point cloud data included in the point cloud data after being moved by the first movement amount, moves the sub-point cloud data by a second movement amount based on the position of the sub-space in which the sub-point cloud data is included, and generates a bit stream by encoding the plurality of sub-point cloud data after the movement. The bit stream includes first movement information for calculating the first movement amount and a plurality of second movement information for calculating the plurality of second movement amounts by which the plurality of sub-point cloud data are moved, respectively.

[0031] According to this, since the divided sub-point cloud data is encoded after being moved, the amount of information of the position information of each sub-point cloud data can be reduced, and the encoding efficiency can be improved.

[0032] Further, a three-dimensional data decoding device according to an aspect of the present disclosure includes a processor and a memory. The processor uses the memory to divide a three-dimensional space into a plurality of sub-spaces, so that a plurality of sub-point cloud data into which point cloud data indicating a plurality of three-dimensional positions is divided, each of which is moved by a first movement amount and a corresponding second movement amount, and first movement information for calculating the first movement amount and a plurality of second movement information for calculating the plurality of second movement amounts by which the plurality of sub-point cloud data are moved, respectively, are decoded from a bit stream, and each of the plurality of sub-point cloud data may be moved by an amount obtained by adding the first movement amount and the corresponding second movement amount to restore the point cloud data.

[0033] According to this, the point cloud data can be correctly decoded using a bit stream with improved encoding efficiency.

[0034] Note that these general or specific aspects may be implemented in a system, method, integrated circuit, computer program, or recording medium such as a computer-readable CD-ROM, or may be implemented in any combination of a system, method, integrated circuit, computer program, and recording medium.

[0035] Hereinafter, embodiments will be specifically described with reference to the drawings. Note that all of the embodiments described below show specific examples of the present disclosure. The numerical values, shapes, materials, components, arrangement positions and connection forms of the components, steps, order of steps, etc. shown in the following embodiments are merely examples and are not intended to limit the present disclosure. In addition, among the components in the following embodiments, the components not described in the independent claims indicating the highest-level concept are described as optional components.

[0036] (Embodiment 1) When using the encoded data of the point cloud in an actual device or service, it is desirable to transmit and receive the necessary information according to the application in order to suppress the network bandwidth. However, until now, such a function has not existed in the encoding structure of three-dimensional data, and there has also been no encoding method therefor.

[0037] In the present embodiment, a three-dimensional data encoding method and a three-dimensional data encoding device for providing a function of transmitting and receiving the necessary information according to the application in the encoded data of the three-dimensional point cloud, a three-dimensional data decoding method and a three-dimensional data decoding device for decoding the encoded data, a three-dimensional data multiplexing method for multiplexing the encoded data, and a three-dimensional data transmission method for transmitting the encoded data will be described.

[0038] In particular, at present, a first encoding method and a second encoding method are being considered as encoding methods (encoding formats) for point cloud data. However, the configuration of the encoded data and the method of storing the encoded data in the system format are not defined, and there is a problem that MUX processing (multiplexing), transmission, or storage cannot be performed in the encoding unit as it is.

[0039] Also, there has been no method to support a format in which two codecs, a first encoding method and a second encoding method, are mixed, such as PCC (Point Cloud Compression).

[0040] In this embodiment, the configuration of PCC encoded data in which two codecs, a first encoding method and a second encoding method, are mixed, and the method of storing the encoded data in the system format will be described.

[0041] First, the configuration of the three-dimensional data (point cloud data) encoding / decoding system according to this embodiment will be described. FIG. 1 is a diagram showing a configuration example of the 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.

[0042] 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 a plurality of devices. Also, the three-dimensional data encoding device may include a part of a plurality of processing units included in the three-dimensional data encoding system 4601.

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

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

[0045] The presentation unit 4612 presents the sensor information or the point cloud data to the user. For example, the presentation unit 4612 displays information or an image based on the sensor information or the point cloud data.

[0046] The encoding unit 4613 encodes (compresses) the point cloud data and outputs the obtained encoded data, the control information obtained in the encoding process, and other additional information to the multiplexing unit 4614. The additional information includes, for example, the sensor information.

[0047] The multiplexing unit 4614 generates multiplexed data by multiplexing the encoded data, the control information, and the additional information input from the encoding unit 4613. The format of the multiplexed data is, for example, a file format for storage or a packet format for transmission.

[0048] The input / output unit 4615 (for example, 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 an application execution unit) controls each processing unit. That is, the control unit 4616 performs control such as encoding and multiplexing.

[0049] Note that the sensor information may be input to the encoding unit 4613 or the multiplexing unit 4614. Also, the input / output unit 4615 may output the point cloud data or the encoded data to the outside as it is.

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

[0051] 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 a system realized by a plurality of devices. Further, the three-dimensional data decoding device may include a part of a plurality of processing units included in the three-dimensional data decoding system 4602.

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

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

[0054] The input / output unit 4622 acquires the transmission signal, decodes the multiplexed data (file format or packet) from the transmission signal, and outputs the multiplexed data to the demultiplexing unit 4623.

[0055] The demultiplexing unit 4623 acquires the encoded data, control information, and additional information from the multiplexed data, and outputs the encoded data, control information, and additional information to the decoding unit 4624.

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

[0057] The presentation unit 4625 presents the point cloud data to the user. For example, the presentation unit 4625 displays information or an image based on the point cloud data. The user interface 4626 acquires an instruction based on the user's operation. The control unit 4627 (or the app execution unit) controls each processing unit. That is, the control unit 4627 performs controls such as demultiplexing, decoding, and presentation.

[0058] Note that the input / output unit 4622 may directly acquire point cloud data or encoded data from the outside. Further, the presentation unit 4625 may acquire additional information such as sensor information and present information based on the additional information. Further, the presentation unit 4625 may perform the presentation based on the user's instruction acquired by the user interface 4626.

[0059] The sensor terminal 4603 generates sensor information, which is information obtained by sensors. The sensor terminal 4603 is a terminal equipped with sensors or cameras, and examples include moving bodies such as automobiles, flying objects such as airplanes, mobile terminals, or cameras.

[0060] The sensor information that can be acquired by the sensor terminal 4603 is, for example, (1) the distance between the sensor terminal 4603 and the object or the reflectivity of the object obtained from a LIDAR, millimeter-wave radar, or infrared sensor, (2) the distance between the camera and the object or the reflectivity of the object obtained from a plurality of monocular camera images or stereo camera images, etc. Further, the sensor information may include the attitude, orientation, gyro (angular velocity), position (GPS information or altitude), speed, or acceleration of the sensor. Further, the sensor information may include temperature, atmospheric pressure, humidity, or magnetism.

[0061] 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, or broadcasting, etc.

[0062] Next, the point cloud data will be described. FIG. 2 is a diagram showing the configuration of the point cloud data. FIG. 3 is a diagram showing a configuration example of a data file in which information of the point cloud data is described.

[0063] The point cloud data includes data of a plurality of points. The data of each point includes position information (three-dimensional coordinates) and attribute information for the position information. A collection of such points is called a point cloud. For example, the point cloud represents the three-dimensional shape of an object.

[0064] Position information such as three-dimensional coordinates (Position) may also be referred to as geometry. Also, the data of each point may include attribute information (attribute) of a plurality of attribute types. The attribute types are, for example, color or reflectance.

[0065] One piece of attribute information may be associated with one piece of position information, or attribute information having a plurality of different attribute types may be associated with one piece of position information. Also, a plurality of pieces of attribute information of the same attribute type may be associated with one piece of position information.

[0066] The configuration example of the data file shown in FIG. 3 is an example where the position information and the attribute information correspond one-to-one, and shows the position information and the attribute information of N points constituting the point cloud data.

[0067] The position information is, for example, information on three axes of x, y, and z. The attribute information is, for example, RGB color information. A typical data file is a ply file or the like.

[0068] Next, the types of point cloud data will be described. FIG. 4 is a diagram showing the types of point cloud data. As shown in FIG. 4, the point cloud data includes static objects and dynamic objects.

[0069] The static object is three-dimensional point cloud data at an arbitrary time (a certain moment). The dynamic object is three-dimensional point cloud data that changes over time. Hereinafter, the three-dimensional point cloud data at a certain moment is called a PCC frame or a frame.

[0070] The object may be a point cloud with a limited area like normal video data, or a large-scale point cloud without a limited area like map information.

[0071] Also, there may be point cloud data with various densities, including sparse point cloud data and dense point cloud data.

[0072] Hereinafter, the details of each processing unit will be described. Sensor information is obtained by various methods such as a distance sensor like 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 obtained 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.

[0073] The point cloud data generation unit 4618 may process the point cloud data when generating the position information or adding the attribute information. For example, the point cloud data generation unit 4618 may reduce the data amount by deleting overlapping point clouds. Also, the point cloud data generation unit 4618 may convert the position information (such as position shift, rotation, or normalization), or render the attribute information.

[0074] Note that 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.

[0075] The encoding unit 4613 generates encoded data by encoding the point cloud data based on a predefined encoding method. There are roughly two types of encoding methods as follows. The first is an encoding method using position information, which will be described as the first encoding method hereinafter. The second is an encoding method using a video codec, which will be described as the second encoding method hereinafter.

[0076] The decoding unit 4624 decodes the point cloud data by decoding the encoded data based on a predefined encoding method.

[0077] 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, files, or reference time information. Further, the multiplexing unit 4614 may also multiplex sensor information or attribute information related to the point cloud data.

[0078] Examples of the multiplexing method or file format include ISOBMFF, MPEG-DASH which is an ISOBMFF-based transmission method, MMT, MPEG-2 TS Systems, RMP, etc.

[0079] The demultiplexing unit 4623 extracts the PCC encoded data, other media, and time information from the multiplexed data.

[0080] The input / output unit 4615 transmits the multiplexed data using a method suitable for the medium for transmission such as broadcasting or communication, or the medium for storage. The input / output unit 4615 may communicate with other devices via the Internet or communicate with a storage unit such as a cloud server.

[0081] Examples of the communication protocol include http, ftp, TCP, or UDP. A PULL-type communication method may be used, or a PUSH-type communication method may be used.

[0082] Either wired transmission or wireless transmission may be used. Examples of wired transmission include Ethernet (registered trademark), USB, RS-232C, HDMI (registered trademark), or coaxial cable. Examples of wireless transmission include wireless LAN, Wi-Fi (registered trademark), Bluetooth (registered trademark), or millimeter wave.

[0083] As the broadcasting method, for example, DVB-T2, DVB-S2, DVB-C2, ATSC3.0, or ISDB-S3 is used.

[0084] FIG. 5 is a diagram showing the configuration of a first encoding unit 4630 which is an example of an encoding unit 4613 that performs encoding according to 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 according to the first encoding method. The 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.

[0085] The first encoding unit 4630 is characterized by performing encoding while being aware of the three-dimensional structure. Also, the first encoding unit 4630 is characterized in that the attribute information encoding unit 4632 performs encoding using the information obtained from the position information encoding unit 4631. The first encoding method is also called GPCC (Geometry based PCC).

[0086] 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, attribute information, and other additional information. The position information is input to the position information encoding unit 4631, the attribute information is input to the attribute information encoding unit 4632, and the additional information is input to the additional information encoding unit 4633.

[0087] The position information encoding unit 4631 generates encoded position information (Compressed Geometry), which is encoded data, by encoding the position information. For example, the position information encoding unit 4631 encodes the position information using an N-ary tree structure such as an octree. Specifically, in the octree, the target space is divided into eight nodes (sub-spaces), and 8-bit information (occupancy code) indicating whether or not each node contains a point cloud is generated. Further, the node containing the point cloud is further divided into eight nodes, and 8-bit information indicating whether or not each of the eight nodes contains a point cloud is generated. This process is repeated until the number of point clouds included in a predetermined hierarchy or node is less than or equal to a threshold value.

[0088] The attribute information encoding unit 4632 generates encoded attribute information (Compressed Attribute), 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 referred to in the encoding of the 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 refers to a node in which the parent node in the octree is the same as the target node among the surrounding nodes or adjacent nodes. Note that the method for determining the reference relationship is not limited to this.

[0089] Further, the encoding process of the attribute information may include at least one of quantization processing, prediction processing, and arithmetic encoding processing. In this case, reference means using the reference node to calculate the predicted value of the attribute information, or using the state of the reference node (for example, occupancy information indicating whether or not the reference node contains a point cloud) to determine the encoding parameter. For example, the encoding parameter is a quantization parameter in quantization processing or a context in arithmetic encoding.

[0090] The additional information encoding unit 4633 generates encoded additional information (Compressed MetaData), which is encoded data, by encoding compressible data among the additional information.

[0091] The multiplexing unit 4634 generates a compressed stream, which is encoded data, by multiplexing the encoded position information, the encoded attribute information, the encoded additional information, and other additional information. The generated compressed stream is output to a processing unit in a system layer (not shown).

[0092] Next, a first decoding unit 4640, which is an example of a decoding unit 4624 that decodes 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 the encoded data (compressed stream) encoded by the first encoding method using the first encoding 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.

[0093] A compressed stream, which is encoded data, is input from a processing unit in a system layer (not shown) to the first decoding unit 4640.

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

[0095] 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 the point cloud represented by three-dimensional coordinates from the encoded position information represented by an N-ary tree structure such as an octree.

[0096] 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 referred to in decoding a 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 refers to a node among peripheral nodes or adjacent nodes whose parent node in the octree is the same as the target node. Note that the method for determining the reference relationship is not limited to this.

[0097] Further, the decoding process of the attribute information may include at least one of an inverse quantization process, a prediction process, and an arithmetic decoding process. In this case, reference means using the reference node to calculate a predicted value of the attribute information, or using the state of the reference node (for example, occupancy information indicating whether the reference node includes a point cloud) to determine a decoding parameter. For example, the decoding parameter is a quantization parameter in the inverse quantization process or a context in arithmetic decoding.

[0098] The additional information decoding unit 4644 generates additional information by decoding the encoded additional information. Further, the first decoding unit 4640 uses the additional information necessary for the decoding processes of the position information and the attribute information at the time of decoding, and outputs the additional information necessary for the application to the outside.

[0099] Next, a second encoding unit 4650, which is an example of an encoding unit 4613 that performs encoding using the second encoding method, will be described. FIG. 9 is a diagram showing the configuration of the second encoding unit 4650. FIG. 10 is a block diagram of the second encoding unit 4650.

[0100] The second encoding unit 4650 generates encoded data (encoded stream) by encoding the point cloud data using the second encoding method. This 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.

[0101] The second encoding unit 4650 is characterized by 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).

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

[0103] The additional information generation unit 4651 generates map information of a plurality of two-dimensional images by projecting a three-dimensional structure onto a two-dimensional image.

[0104] 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 shown as a pixel value. Note that this distance image may be an image of a plurality of point clouds viewed from one viewpoint (an image obtained by projecting a plurality of point clouds onto one two-dimensional plane), or a plurality of images of a plurality of point clouds viewed from a plurality of viewpoints, or an integrated image of these plurality of images.

[0105] 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 (e.g., color (RGB)) is shown as a pixel value. Note that this image may be an image of a plurality of point clouds viewed from one viewpoint (an image obtained by projecting a plurality of point clouds onto one two-dimensional plane), or a plurality of images of a plurality of point clouds viewed from a plurality of viewpoints, or an integrated image of these plurality of images.

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

[0107] The additional information encoding unit 4655 generates encoded additional information (Compressed MetaData) by encoding the additional information included in the point cloud data, map information, and the like.

[0108] The multiplexing unit 4656 generates an encoded stream (Compressed Stream), which is encoded data, by multiplexing the encoded position image, the encoded attribute image, the encoded additional information, and other additional information. The generated encoded stream is output to a processing unit of a system layer (not shown).

[0109] Next, a second decoding unit 4660, which is an example of a decoding unit 4624 that decodes 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 encoded data (encoded stream) encoded by the second encoding method using the second encoding 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.

[0110] An encoded stream (Compressed Stream), which is encoded data, is input from a processing unit of a system layer (not shown) to the second decoding unit 4660.

[0111] The inverse multiplexing unit 4661 separates from the encoded data an encoded position image (Compressed Geometry Image), an encoded attribute image (Compressed Attribute Image), encoded additional information (Compressed MetaData), and other additional information.

[0112] The video decoding unit 4662 generates a position image and an attribute image by decoding the encoded position image and the encoded attribute image using a video encoding method. Note that any known encoding method may be used as the video encoding method. For example, the video encoding method is AVC or HEVC or the like.

[0113] The additional information decoding unit 4663 generates additional information including map information and the like by decoding the encoded additional information.

[0114] The position information generation unit 4664 generates position information using the position image and the map information. The attribute information generation unit 4665 generates attribute information using the attribute image and the map information.

[0115] The second decoding unit 4660 uses additional information necessary for decoding during decoding and outputs additional information necessary for the application to the outside.

[0116] Hereinafter, problems in the PCC encoding method will be described. FIG. 13 is a diagram showing a protocol stack related to PCC encoded data. FIG. 13 shows an example in which data of other media such as video (for example, HEVC) or audio is multiplexed with the PCC encoded data and transmitted or stored.

[0117] The multiplexing method and the file format have functions for multiplexing various encoded data and transmitting or storing it. In order to transmit or store the encoded data, the encoded data must be converted into the format of the multiplexing method. For example, in HEVC, a technique is defined in which encoded data is stored in a data structure called an NAL unit and the NAL unit is stored in ISOBMFF.

[0118] On the one hand, currently, as methods for encoding point cloud data, a first encoding method (Codec1) and a second encoding method (Codec2) are being considered. However, the configuration of the encoded data and the method for storing the encoded data in the system format have not been defined, and there is a problem that MUX processing (multiplexing), transmission, and storage in the encoding unit cannot be performed as it is.

[0119] In the following, unless otherwise specified for a particular encoding method, it shall indicate either the first encoding method or the second encoding method.

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

[0121] ISOBMFF (ISO based media file format) is a file format standard defined in ISO / IEC 14496-12. ISOBMFF defines a format that can multiplex and store various media such as video, audio, and text, and it is a standard independent of the media.

[0122] The basic structure (file) of ISOBMFF will be described. The basic unit in ISOBMFF is a box. A box is composed of type, length, and data, and a file is a collection of boxes of various types combined.

[0123] FIG. 14 is a diagram showing the basic structure (file) of ISOBMFF. The ISOBMFF file mainly includes boxes such as ftyp that indicates the file brand in 4CC (4-character code), moov that stores metadata such as control information, and mdat that stores data.

[0124] The method of storing media in an ISOBMFF file is separately specified. For example, the methods of storing AVC video and HEVC video are specified in ISO / IEC 14496-15. Here, in order to store or transmit PCC encoded data, it is conceivable to extend and use the functions of ISOBMFF, but there is still no regulation on storing PCC encoded data in an ISOBMFF file. Therefore, in this embodiment, a method of storing PCC encoded data in an ISOBMFF file will be described.

[0125] FIG. 15 is a diagram showing a protocol stack when storing NAL units common to the PCC codec in an ISOBMFF file. Here, the NAL units common to the PCC codec are stored in the ISOBMFF file. Although the NAL units are common to the PCC codec, since a plurality of PCC codecs are stored in the NAL units, it is desirable to specify storage methods (Carriage of Codec1, Carriage of Codec2) according to each codec.

[0126] Next, a method of storing a common PCC NAL unit supporting a plurality of PCC codecs in an ISOBMFF file will be described. FIG. 16 is a diagram showing an example of storing a common PCC NAL unit in an ISOBMFF file with the storage method (Carriage of Codec1) of Codec 1. FIG. 17 is a diagram showing an example of storing a common PCC NAL unit in an ISOBMFF file with the storage method (Carriage of Codec2) of Codec 2.

[0127] Here, ftyp is important information for identifying the file format, and different identifiers are defined for each codec for ftyp. When PCC encoded data encoded by the first encoding method (encoding format) is stored in a file, ftyp = pcc1 is set. When PCC encoded data encoded by the second encoding method is stored in a file, ftyp = pcc2 is set.

[0128] Here, pcc1 indicates that the codec 1 of PCC (the first encoding method) is used. pcc2 indicates that the codec 2 of PCC (the second encoding method) is used. That is, pcc1 and pcc2 indicate that the data is PCC (encoded data of three-dimensional data (point cloud data)), and also indicate the PCC codec (the first encoding method and the second encoding method).

[0129] Hereinafter, a method for storing NAL units into an ISOBMFF file will be described. The multiplexing unit analyzes the NAL unit header, and when pcc_codec_type = Codec1, it describes pcc1 in the ftyp of ISOBMFF.

[0130] Also, the multiplexing unit analyzes the NAL unit header, and when pcc_codec_type = Codec2, it describes pcc2 in the ftyp of ISOBMFF.

[0131] Also, when pcc_nal_unit_type is metadata, the multiplexing unit stores the NAL unit in a predetermined method, for example, in moov or mdat. When pcc_nal_unit_type is data, the multiplexing unit stores the NAL unit in a predetermined method, for example, in moov or mdat.

[0132] For example, the multiplexing unit may store the NAL unit size in the NAL unit in the same manner as HEVC.

[0133] By the present method, it is possible to determine whether the PCC-encoded data is encoded by the first encoding method or the second encoding method by analyzing the ftyp included in the file in the demultiplexing section (system layer). Further, as described above, by determining whether the PCC-encoded data is encoded by the first encoding method or the second encoding method, the encoded data encoded by either one of the two encoding methods can be extracted from the data in which the encoded data encoded by both encoding methods is mixed. Thereby, when transmitting the encoded data, the amount of data to be transmitted can be suppressed. Also, by the present method, a common data format can be used without setting different data (file) formats for the first encoding method and the second encoding method.

[0134] Note that when codec identification information is indicated in the metadata of the system layer, such as ftyp in ISOBMFF, the multiplexing section may store the NAL unit with pcc_nal_unit_type deleted in the ISOBMFF file.

[0135] Next, the configuration and operation of the multiplexing section included in the three-dimensional data encoding system (three-dimensional data encoding apparatus) according to the present embodiment and the demultiplexing section included in the three-dimensional data decoding system (three-dimensional data decoding apparatus) according to the present embodiment will be described.

[0136] FIG. 18 is a diagram showing the configuration of the first multiplexing section 4710. The first multiplexing section 4710 includes a file conversion section 4711 that generates multiplexed data (file) by storing the encoded data and control information (NAL unit) generated by the first encoding section 4630 in an ISOBMFF file. This first multiplexing section 4710 is included in, for example, the multiplexing section 4614 shown in FIG. 1.

[0137] FIG. 19 is a diagram showing the configuration of the first demultiplexing unit 4720. The first demultiplexing unit 4720 includes a file inverse conversion unit 4721 that acquires encoded data and control information (NAL unit) from multiplexed data (file) and outputs the acquired encoded data and control information to the first decoding unit 4640. This first demultiplexing unit 4720 is included in, for example, the demultiplexing unit 4623 shown in FIG. 1.

[0138] FIG. 20 is a diagram showing the configuration of the second multiplexing unit 4730. The second multiplexing unit 4730 includes a file conversion unit 4731 that generates multiplexed data (file) by storing the encoded data and control information (NAL unit) generated by the second encoding unit 4650 in an ISOBMFF file. This second multiplexing unit 4730 is included in, for example, the multiplexing unit 4614 shown in FIG. 1.

[0139] FIG. 21 is a diagram showing the configuration of the second demultiplexing unit 4740. The second demultiplexing unit 4740 includes a file inverse conversion unit 4741 that acquires encoded data and control information (NAL unit) from multiplexed data (file) and outputs the acquired encoded data and control information to the second decoding unit 4660. This second demultiplexing unit 4740 is included in, for example, the demultiplexing unit 4623 shown in FIG. 1.

[0140] FIG. 22 is a flowchart of the multiplexing process by the first multiplexing unit 4710. First, the first multiplexing unit 4710 determines whether the codec used is the first encoding method or the second encoding method by analyzing the pcc_codec_type included in the NAL unit header (S4701).

[0141] When pcc_codec_type indicates the second encoding method (the second encoding method in S4702), the first multiplexing unit 4710 does not process the NAL unit (S4703).

[0142] On the other hand, when the pcc_codec_type indicates the second encoding method (the first encoding method in S4702), the first multiplexing unit 4710 describes pcc1 in the ftyp (S4704). That is, the first multiplexing unit 4710 describes in the ftyp information indicating that the data encoded by the first encoding method is stored in the file.

[0143] Next, the first multiplexing unit 4710 analyzes the pcc_nal_unit_type included in the NAL unit header and stores the data in a box (such as moov or mdat) in a predetermined method according to the data type indicated by the pcc_nal_unit_type (S4705). Then, the first multiplexing unit 4710 creates an ISOBMFF file including the above ftyp and the above box (S4706).

[0144] FIG. 23 is a flowchart of the multiplexing process by the second multiplexing unit 4730. First, the second multiplexing unit 4730 determines whether the codec used is the first encoding method or the second encoding method by analyzing the pcc_codec_type included in the NAL unit header (S4711).

[0145] When the pcc_unit_type indicates the second encoding method (the second encoding method in S4712), the second multiplexing unit 4730 describes pcc2 in the ftyp (S4713). That is, the second multiplexing unit 4730 describes in the ftyp information indicating that the data encoded by the second encoding method is stored in the file.

[0146] Next, the second multiplexing unit 4730 analyzes the pcc_nal_unit_type included in the NAL unit header and stores the data in a box (such as moov or mdat) in a predetermined method according to the data type indicated by the pcc_nal_unit_type (S4714). Then, the second multiplexing unit 4730 creates an ISOBMFF file including the above ftyp and the above box (S4715).

[0147] On the one hand, when the pcc_unit_type indicates the first encoding method (the first encoding method in S4712), the second multiplexing unit 4730 does not process the NAL unit (S4716).

[0148] Note that the above processing shows an example of encoding PCC data by either the first encoding method or the second encoding method. The first multiplexing unit 4710 and the second multiplexing unit 4730 store the desired NAL unit in a file by identifying the codec type of the NAL unit. In addition, when the identification information of the PCC codec is included in addition to the NAL unit header, the first multiplexing unit 4710 and the second multiplexing unit 4730 may use the identification information of the PCC codec included in addition to the NAL unit header to identify the codec type (the first encoding method or the second encoding method) in steps S4701 and S4711.

[0149] In addition, the first multiplexing unit 4710 and the second multiplexing unit 4730 may store the data in a file in steps S4706 and S4714 after deleting the pcc_nal_unit_type from the NAL unit header.

[0150] FIG. 24 is a flowchart showing the processing by the first demultiplexing unit 4720 and the first decoding unit 4640. First, the first demultiplexing unit 4720 analyzes the ftyp included in the file of ISOBMFF (S4721). When the codec indicated by the ftyp is the second encoding method (pcc2) (the second encoding method in S4722), the first demultiplexing unit 4720 determines that the data included in the payload of the NAL unit is the data encoded by the second encoding method (S4723). In addition, the first demultiplexing unit 4720 transmits the result of the determination to the first decoding unit 4640. The first decoding unit 4640 does not process the NAL unit (S4724).

[0151] On one hand, when the codec indicated by ftyp is the first encoding method (pcc1) (the first encoding method in S4722), the first demultiplexing unit 4720 determines that the data included in the payload of the NAL unit is data encoded by the first encoding method (S4725). Also, the first demultiplexing unit 4720 transmits the result of the determination to the first decoding unit 4640.

[0152] The first decoding unit 4640 identifies the data assuming that the pcc_nal_unit_type included in the NAL unit header is an identifier of the NAL unit for the first encoding method (S4726). Then, the first decoding unit 4640 decodes the PCC data using the decoding process of the first encoding method (S4727).

[0153] FIG. 25 is a flowchart showing the processing by the second demultiplexing unit 4740 and the second decoding unit 4660. First, the second demultiplexing unit 4740 analyzes the ftyp included in the ISOBMFF file (S4731). When the codec indicated by ftyp is the second encoding method (pcc2) (the second encoding method in S4732), the second demultiplexing unit 4740 determines that the data included in the payload of the NAL unit is data encoded by the second encoding method (S4733). Also, the second demultiplexing unit 4740 transmits the result of the determination to the second decoding unit 4660.

[0154] The second decoding unit 4660 identifies the data assuming that the pcc_nal_unit_type included in the NAL unit header is an identifier of the NAL unit for the second encoding method (S4734). Then, the second decoding unit 4660 decodes the PCC data using the decoding process of the second encoding method (S4735).

[0155] On one hand, when the codec indicated by ftyp is the first encoding method (pcc1) (the first encoding method in S4732), the second demultiplexing unit 4740 determines that the data included in the payload of the NAL unit is data encoded by the first encoding method (S4736). Further, the second demultiplexing unit 4740 transmits the result of the determination to the second decoding unit 4660. The second decoding unit 4660 does not process the NAL unit (S4737).

[0156] In this way, for example, in the first demultiplexing unit 4720 or the second demultiplexing unit 4740, by identifying the codec type of the NAL unit, the codec type can be identified at an early stage. Further, a desired NAL unit can be input to the first decoding unit 4640 or the second decoding unit 4660, and unnecessary NAL units can be removed. In this case, in the first decoding unit 4640 or the second decoding unit 4660, the process of analyzing the identification information of the codec may become unnecessary. Note that the process of analyzing the identification information of the codec by referring to the NAL unit type again in the first decoding unit 4640 or the second decoding unit 4660 may also be performed.

[0157] Also, when pcc_nal_unit_type is deleted from the NAL unit header in the first multiplexing unit 4710 or the second multiplexing unit 4730, the first demultiplexing unit 4720 or the second demultiplexing unit 4740 may add pcc_nal_unit_type to the NAL unit and then output it to the first decoding unit 4640 or the second decoding unit 4660.

[0158] (Embodiment 3) In this embodiment, the multiplexing unit and the demultiplexing unit corresponding to the encoding unit 4670 and the decoding unit 4680 corresponding to a plurality of codecs described in Embodiment 1 will be described. FIG. 26 is a diagram showing the configuration of the encoding unit 4670 and the third multiplexing unit 4750 according to this embodiment.

[0159] The symbolization unit 4670 symbolizes the point cloud data using either one or both of the first symbolization method and the second symbolization method. The symbolization unit 4670 may switch the symbolization method (the first symbolization method and the second symbolization method) in units of point cloud data or in units of frames. Further, the symbolization unit 4670 may switch the symbolization method in symbolizable units.

[0160] The symbolization unit 4670 generates symbolized data (symbolization stream) including the identification information of the PCC codec.

[0161] The third multiplexing unit 4750 includes a file conversion unit 4751. The file conversion unit 4751 converts the NAL unit output from the symbolization unit 4670 into a file of PCC data. The file conversion unit 4751 analyzes the codec identification information included in the NAL unit header and determines whether the PCC symbolized data is data symbolized by the first symbolization method, data symbolized by the second symbolization method, or data symbolized by both methods. The file conversion unit 4751 describes a brand name that can identify the codec in the ftyp. For example, when indicating that it is symbolized by both methods, pcc3 is described in the ftyp.

[0162] In addition, when the symbolization unit 4670 describes the identification information of the PCC codec other than the NAL unit, the file conversion unit 4751 may determine the PCC codec (symbolization method) using the identification information.

[0163] FIG. 27 is a diagram showing the configuration of the third demultiplexing unit 4760 and the decoding unit 4680 according to the present embodiment.

[0164] The third demultiplexing unit 4760 includes a file inverse conversion unit 4761. The file inverse conversion unit 4761 analyzes the ftyp included in the file and determines whether the PCC symbolized data is data symbolized by the first symbolization method, data symbolized by the second symbolization method, or data symbolized by both methods.

[0165] When the PCC encoded data is encoded by either one of the encoding methods, among the first decoder 4640 and the second decoder 4660, data is input to the corresponding decoder, and no data is input to the other decoder. When the PCC encoded data is encoded by both encoding methods, data is input to the decoder 4680 corresponding to both methods.

[0166] The decoder 4680 decodes the PCC encoded data using either one or both of the first encoding method and the second encoding method.

[0167] FIG. 28 is a flowchart showing the processing by the third multiplexing unit 4750 according to the present embodiment.

[0168] First, the third multiplexing unit 4750 analyzes the pcc_codec_type included in the NAL unit header to determine whether the codec used is the first encoding method, the second encoding method, or both the first encoding method and the second encoding method (S4741).

[0169] When the second encoding method is used (Yes in S4742 and the second encoding method in S4743), the third multiplexing unit 4750 describes pcc2 in the ftyp (S4744). That is, the third multiplexing unit 4750 describes information indicating that the data encoded by the second encoding method is stored in the file in the ftyp.

[0170] Next, the third multiplexing unit 4750 analyzes the pcc_nal_unit_type included in the NAL unit header and stores the data in a box (such as moov or mdat) in a predetermined method according to the data type indicated by the pcc_unit_type (S4745). Then, the third multiplexing unit 4750 creates an ISOBMFF file including the above ftyp and the above box (S4746).

[0171] On the one hand, when the first encoding method is used (Yes in S4742 and the first encoding method in S4743), the third multiplexing unit 4750 describes pcc1 in ftyp (S4747). That is, the third multiplexing unit 4750 describes in ftyp information indicating that data encoded by the first encoding method is stored in the file.

[0172] Next, the third multiplexing unit 4750 analyzes pcc_nal_unit_type included in the NAL unit header and stores the data in a box (such as moov or mdat) in a predetermined method according to the data type indicated by pcc_unit_type (S4748). Then, the third multiplexing unit 4750 creates an ISOBMFF file including the above ftyp and the above box (S4746).

[0173] On the other hand, when both the first encoding method and the second encoding method are used (No in S4742), the third multiplexing unit 4750 describes pcc3 in ftyp (S4749). That is, the third multiplexing unit 4750 describes in ftyp information indicating that data encoded by both encoding methods is stored in the file.

[0174] Next, the third multiplexing unit 4750 analyzes pcc_nal_unit_type included in the NAL unit header and stores the data in a box (such as moov or mdat) in a predetermined method according to the data type indicated by pcc_unit_type (S4750). Then, the third multiplexing unit 4750 creates an ISOBMFF file including the above ftyp and the above box (S4746).

[0175] FIG. 29 is a flowchart showing the processing by the third demultiplexing unit 4760 and the decoding unit 4680. First, the third demultiplexing unit 4760 analyzes the ftyp included in the ISOBMFF file (S4761). When the codec indicated by ftyp is the second encoding method (pcc2) (Yes in S4762 and the second encoding method in S4763), the third demultiplexing unit 4760 determines that the data included in the payload of the NAL unit is data encoded by the second encoding method (S4764). Also, the third demultiplexing unit 4760 transmits the result of the determination to the decoding unit 4680.

[0176] The decoding unit 4680 identifies the data assuming that the pcc_nal_unit_type included in the NAL unit header is an identifier of the NAL unit for the second encoding method (S4765). Then, the decoding unit 4680 decodes the PCC data using the decoding process of the second encoding method (S4766).

[0177] On the other hand, when the codec indicated by ftyp is the first encoding method (pcc1) (Yes in S4762 and the first encoding method in S4763), the third demultiplexing unit 4760 determines that the data included in the payload of the NAL unit is data encoded by the first encoding method (S4767). Also, the third demultiplexing unit 4760 transmits the result of the determination to the decoding unit 4680.

[0178] The decoding unit 4680 identifies the data assuming that the pcc_nal_unit_type included in the NAL unit header is an identifier of the NAL unit for the first encoding method (S4768). Then, the decoding unit 4680 decodes the PCC data using the decoding process of the first encoding method (S4769).

[0179] On the other hand, when it is shown that both encoding methods are used in ftyp (pcc3) (No in S4762), the third demultiplexing unit 4760 determines that the data included in the payload of the NAL unit is data encoded by both the first encoding method and the second encoding method (S4770). Further, the third demultiplexing unit 4760 transmits the result of the determination to the decoding unit 4680.

[0180] The decoding unit 4680 identifies the data assuming that the pcc_nal_unit_type included in the NAL unit header is an identifier of the NAL unit for the codec described in the pcc_codec_type (S4771). Then, the decoding unit 4680 decodes the PCC data using the decoding processes of both encoding methods (S4772). That is, the decoding unit 4680 decodes the data encoded by the first encoding method using the decoding process of the first encoding method, and decodes the data encoded by the second encoding method using the decoding process of the second encoding method.

[0181] Hereinafter, a modification example of the present embodiment will be described. As the types of brands indicated in ftyp, the following types may be indicated by identification information. Also, combinations of a plurality of the following types may be indicated by identification information.

[0182] The identification information may indicate whether the object of the original data before PCC encoding is a point cloud with a restricted area or a large-scale point cloud without a restricted area such as map information.

[0183] The identification information may indicate whether the original data before PCC encoding is a static object or a dynamic object.

[0184] As described above, the identification information may indicate whether the PCC encoded data is data encoded by the first encoding method or data encoded by the second encoding method.

[0185] The identification information may indicate the algorithm used in PCC encoding. Here, the algorithm is, for example, an encoding method that can be used in the first encoding method or the second encoding method.

[0186] The identification information may indicate the difference in the method of storing PCC-encoded data in an ISOBMFF file. For example, the identification information may indicate whether the storage method used is a storage method for accumulation or a storage method for real-time transmission such as dynamic streaming.

[0187] Also, in Embodiment 2 and Embodiment 3, an example in which ISOBMFF is used as the file format has been described, but other formats may be used. For example, when storing PCC-encoded data in MPEG-2 TS Systems, MPEG-DASH, MMT, or RMP, the same method as in this embodiment may be used.

[0188] Also, in the above, an example of storing metadata such as identification information in ftyp has been shown, but these metadata may be stored in other places than ftyp. For example, these metadata may be stored in moov.

[0189] As described above, the three-dimensional data storage device (or three-dimensional data multiplexing device, or three-dimensional data encoding device) performs the processing shown in FIG. 30.

[0190] First, the three-dimensional data storage device (for example, including the first multiplexing unit 4710, the second multiplexing unit 4730, or the third multiplexing unit 4750) acquires one or more units (for example, NAL units) in which an encoded stream obtained by encoding point cloud data is stored (S4781). Next, the three-dimensional data storage device stores the one or more units in a file (for example, an ISOBMFF file) (S4782). Also, in the storage (S4782), the three-dimensional data storage device stores information (for example, pcc1, pcc2, or pcc3) indicating that the data stored in the file is data obtained by encoding point cloud data in the control information (for example, ftyp) of the file.

[0191] According to this, in an apparatus that processes a file generated by the three-dimensional data storage device, by referring to the control information of the file, it is possible to early determine whether the data stored in the file is encoded data of point cloud data. Therefore, it is possible to reduce the processing amount or speed up the processing of the apparatus.

[0192] For example, the information further indicates the encoding method used for encoding the point cloud data among the first encoding method and the second encoding method. Note that the fact that the data stored in the file is data obtained by encoding point cloud data and the encoding method used for encoding the point cloud data among the first encoding method and the second encoding method may be indicated by a single piece of information or different pieces of information.

[0193] According to this, in an apparatus that processes a file generated by the three-dimensional data storage device, by referring to the control information of the file, it is possible to early determine the codec used for the data stored in the file. Therefore, it is possible to reduce the processing amount or speed up the processing of the apparatus.

[0194] For example, the first encoding method is a method (GPCC) of encoding position information representing the position of point cloud data in an N-ary tree (N is an integer of 2 or more) and encoding attribute information using the position information, and the second encoding method is a method (VPCC) of generating a two-dimensional image from point cloud data and encoding the two-dimensional image using a video encoding method.

[0195] For example, the file conforms to ISOBMFF (ISO based media file format).

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

[0197] Also, as described above, the three-dimensional data acquisition device (or three-dimensional data de-multiplexing device, or three-dimensional data decoding device) performs the processing shown in FIG. 31.

[0198] The three-dimensional data acquisition device (for example, including the first de-multiplexing unit 4720, the second de-multiplexing unit 4740, or the third de-multiplexing unit 4760) acquires a file (for example, an ISOBMFF file) in which one or more units (for example, NAL units) storing an encoded stream in which point cloud data is encoded are stored (S4791). Next, the three-dimensional data acquisition device acquires one or more units from the file (S4792). Further, the control information (for example, ftyp) of the file includes information (for example, pcc1, pcc2, or pcc3) indicating that the data stored in the file is data in which point cloud data is encoded.

[0199] For example, the three-dimensional data acquisition device determines whether the data stored in the file is data in which point cloud data is encoded by referring to the information. Also, when the three-dimensional data acquisition device determines that the data stored in the file is data in which point cloud data is encoded, it generates point cloud data by decoding the data in which the point cloud data included in one or more units is encoded. Or, when the three-dimensional data acquisition device determines that the data stored in the file is data in which point cloud data is encoded, it outputs (notifies) information indicating that the data included in one or more units is data in which point cloud data is encoded to a subsequent processing unit (for example, the first decoding unit 4640, the second decoding unit 4660, or the decoding unit 4680).

[0200] According to this, the three-dimensional data acquisition device can early determine whether the data stored in the file is encoded data of point cloud data by referring to the control information of the file. Therefore, it is possible to reduce the processing amount or speed up the processing of the three-dimensional data acquisition device or the subsequent device.

[0201] For example, the information further indicates the encoding method used for the encoding among the first encoding method and the second encoding method. Note that the data stored in the file being the data obtained by encoding the point cloud data, and the encoding method used for encoding the point cloud data among the first encoding method and the second encoding method may be indicated by a single piece of information or by different pieces of information.

[0202] According to this, the three-dimensional data acquisition device can quickly determine the codec used for the data stored in the file by referring to the control information of the file. Therefore, it is possible to reduce the processing amount or speed up the processing of the three-dimensional data acquisition device or the subsequent device.

[0203] For example, based on the information, the three-dimensional data acquisition device acquires data encoded by either one of the encoding methods from the encoded point cloud data including data encoded by the first encoding method and data encoded by the second encoding method.

[0204] For example, the first encoding method is a method (GPCC) that encodes position information representing the position of point cloud data using an N-ary tree (where N is an integer of 2 or more) and encodes attribute information using the position information, and the second encoding method is a method (VPCC) that generates a two-dimensional image from the point cloud data and encodes the two-dimensional image using a video encoding method.

[0205] For example, the file conforms to ISOBMFF (ISO based media file format).

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

[0207] (Embodiment 4) In this embodiment, the type of encoded data (Geometry, Attribute, Metadata) generated by the above-described first encoding unit 4630 or second encoding unit 4650, the method for generating additional information (metadata), and the multiplexing process 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.

[0208] In this embodiment, the dynamic object (three-dimensional point cloud data that changes over time) described with reference to FIG. 4 will be used as an example for explanation. However, the same method may also be used for a static object (three-dimensional point cloud data at an arbitrary time).

[0209] FIG. 32 is a diagram showing the configuration of an encoding unit 4801 and a multiplexing unit 4802 included in the three-dimensional data encoding apparatus according to this embodiment. The encoding unit 4801 corresponds to, for example, the above-described first encoding unit 4630 or second encoding unit 4650. The multiplexing unit 4802 corresponds to the above-described multiplexing unit 4634 or 4656.

[0210] The encoding unit 4801 encodes the point cloud data of a plurality of PCC (Point Cloud Compression) frames and generates encoded data (Multiple Compressed Data) of a plurality of pieces of position information, attribute information, and additional information.

[0211] The multiplexing unit 4802 converts the data into a data configuration considering data access in the decoder by NAL unitizing the data of a plurality of data types (position information, attribute information, and additional information).

[0212] FIG. 33 is a diagram showing a configuration example of encoded data generated by the encoding unit 4801. The arrows in the figure indicate the dependency relationships related to the decoding of the encoded data, and the origin of the arrow depends on the data at the tip of the arrow. That is, the decoding device decodes the data at the tip of the arrow and uses the decoded data to decode the data at the origin of the arrow. In other words, dependency means that the data at the dependency destination is referenced (used) in the processing (encoding or decoding, etc.) of the data at the dependency source.

[0213] First, the generation process of the encoded data of the 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. Also, the encoded position data is represented by G(i). Here, i indicates the frame number, the time of the frame, or the like.

[0214] In addition, the encoding unit 4801 generates a position parameter set (GPS(i)) corresponding to each frame. The position parameter set includes parameters that can be used for decoding the encoded position data. Also, the encoded position data for each frame depends on the corresponding position parameter set.

[0215] Also, the encoded position data composed of a plurality of frames is defined as a position sequence (Geometry Sequence). The encoding unit 4801 generates a position sequence parameter set (Geometry Sequence PS, also denoted as position SPS) that stores parameters commonly used for the decoding process for a plurality of frames in the position sequence. The position sequence depends on the position SPS.

[0216] Next, the generation process of the encoded data of the attribute information will be described. The encoding unit 4801 generates encoded attribute data (Compressed Attribute Data) for each frame by encoding the attribute information of each frame. Also, the encoded attribute data is represented by A(i). Further, in FIG. 33, an example in which there are attribute X and attribute Y is shown, and the encoded attribute data of attribute X is represented by AX(i), and the encoded attribute data of attribute Y is represented by AY(i).

[0217] Also, the encoding unit 4801 generates an attribute parameter set (APS(i)) corresponding to each frame. Also, the attribute parameter set of attribute X is represented by AXPS(i), and the attribute parameter set of attribute Y is represented by AYPS(i). The attribute parameter set includes parameters that can be used for decoding the encoded attribute information. The encoded attribute data depends on the corresponding attribute parameter set.

[0218] Also, the encoded attribute data consisting of a plurality of frames is defined as an attribute sequence (Attribute Sequence). The encoding unit 4801 generates an attribute sequence parameter set (Attribute Sequence PS: also denoted as attribute SPS) that stores parameters commonly used for the decoding process for a plurality of frames within the attribute sequence. The attribute sequence depends on the attribute SPS.

[0219] Also, in the first encoding method, the encoded attribute data depends on the encoding position data.

[0220] Also, FIG. 33 shows an example in the case where there are two types of attribute information (attribute X and attribute Y). When there are two types of attribute information, for example, each data and metadata are generated by two encoding units. 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.

[0221] Note that in Fig. 33, an example is shown where there is one type of position information and two types of attribute information. However, this is not the only case. The attribute information may be one type or three or more types. Even in this case, the encoded data can be generated in the same way. Also, in the case of point cloud data without attribute information, the attribute information may not be present. In that case, the encoding unit 4801 may not need to generate a parameter set related to the attribute information.

[0222] Next, the generation process of additional information (metadata) will be described. The encoding unit 4801 generates a PCC stream PS (PCC Stream PS, also denoted 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 commonly used for the decoding process of one or more position sequences and one or more attribute sequences. For example, the stream PS includes identification information indicating the codec of the point cloud data, information indicating the algorithm used for encoding, and the like. The position sequence and the attribute sequence depend on the stream PS.

[0223] Next, the access unit and GOF will be described. In this embodiment, the concepts of a new access unit (Access Unit: AU) and GOF (Group of Frame) are introduced.

[0224] The access unit is a basic unit for accessing data during decoding and is composed of one or more data and one or more metadata. For example, the access unit is composed of position information at the same time and one or more attribute information. The GOF is a random access unit and is composed of one or more access units.

[0225] The symbolization unit 4801 generates an access unit header (AU Header) as identification information indicating the start of an access unit. The symbolization 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 encoded data included in the access unit. Further, the access unit header includes parameters commonly used for the data included in the access unit, for example, parameters related to decoding of the encoded data, and the like.

[0226] Note that the symbolization unit 4801 may generate an access unit delimiter that does not include parameters related to the access unit instead of the access unit header. 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.

[0227] Next, generation of identification information at the start of a GOP will be described. The symbolization unit 4801 generates a GOP header (GOP Header) as identification information indicating the start of a GOP. The symbolization unit 4801 stores parameters related to the GOP in the GOP header. For example, the GOP header includes the configuration or information of the encoded data included in the GOP. Further, the GOP header includes parameters commonly used for the data included in the GOP, for example, parameters related to decoding of the encoded data, and the like.

[0228] Note that the symbolization unit 4801 may generate a GOP delimiter that does not include parameters related to the GOP instead of the GOP header. This GOP delimiter is used as identification information indicating the start of the GOP. The decoding device identifies the start of the GOP by detecting the GOP header or the GOP delimiter.

[0229] In the PCC encoded data, for example, an access unit is defined in units of PCC frames. The decoding device accesses the PCC frame based on the identification information at the start of the access unit.

[0230] Also, for example, a GOF is defined as one random access unit. The decoding device accesses the random access unit based on the identification information at the head of the GOF. For example, if PCC frames are independent of each other and can be decoded alone, the PCC frames may be defined as random access units.

[0231] Note that two or more PCC frames may be assigned to one access unit, or a plurality of random access units may be assigned to one GOF.

[0232] Also, the encoding unit 4801 may 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.

[0233] Next, the configuration of the encoded data and the method of storing the encoded data in the NAL unit will be described.

[0234] For example, a data format is defined for each type of encoded data. FIG. 34 is a diagram showing an example of encoded data and NAL units.

[0235] For example, as shown in FIG. 34, the encoded data includes a header and a payload. Note that the encoded data may include length information indicating the length (data amount) of the encoded data, the header, or the payload. Also, the encoded data may not include a header.

[0236] The header includes, for example, identification information for identifying the data. This identification information indicates, for example, the data type or the frame number.

[0237] The header includes, for example, identification information indicating a reference relationship. This identification information is, for example, stored in the header when there is a dependency relationship between data, and is information for referring from a reference source to a reference destination. For example, the header of the reference destination includes identification information for specifying the data. The header of the reference source includes identification information indicating the reference destination.

[0238] Note that when 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.

[0239] The multiplexing unit 4802 stores the encoded data in the payload of the NAL unit. The NAL unit header includes pcc_nal_unit_type, which is identification information of the encoded data. FIG. 35 is a diagram showing an example of the semantics of pcc_nal_unit_type.

[0240] As shown in FIG. 35, when pcc_codec_type is Codec1 (Codec1: the first encoding method), the 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 Codec1. Further, the values 11 and later are assigned to the reserve of Codec1.

[0241] When the pcc_codec_type is Codec2 (the second encoding method), the values 0 to 2 of pcc_nal_unit_type are assigned to Data A, MetaData A, and MetaData B of the codec. Also, values 3 and above are assigned to the reserve of Codec2.

[0242] Next, the data transmission order will be described. Hereinafter, the constraints on the transmission order of NAL units will be described.

[0243] The multiplexing unit 4802 transmits NAL units in units of GOF or AU. The multiplexing unit 4802 places a GOF header at the beginning of the GOF and an AU header at the beginning of the AU.

[0244] Even when data is lost due to packet loss or the like, the multiplexing unit 4802 may arrange the sequence parameter set (SPS) for each AU so that the decoding device can decode from the next AU.

[0245] When there is a dependency relationship related to decoding in the encoded data, the decoding device decodes the reference data first and then decodes the reference source data. In the decoding device, in order to be able to decode in the received order without rearranging the data, the multiplexing unit 4802 transmits the reference data first.

[0246] FIG. 36 is a diagram showing an example of the transmission order of NAL units. FIG. 36 shows three examples: position information priority, parameter priority, and data integration.

[0247] The transmission order of position information priority is an example of transmitting information related to position information and information related to attribute information together. In this transmission order, the transmission of information related to position information is completed earlier than the transmission of information related to attribute information.

[0248] For example, by using this transmission order, a decoder that does not decrypt the attribute information may be able to provide a processing-free time by ignoring the decryption of the attribute information. Also, for example, in the case of a decoder that wants to quickly decrypt the position information, it may be possible to decrypt the position information earlier by obtaining the encoded data of the position information earlier.

[0249] Note that in FIG. 36, the attribute XSPS and the attribute YSPS are integrated and described as the attribute SPS, but the attribute XSPS and the attribute YSPS may be arranged individually.

[0250] In the transmission order with parameter set priority, the parameter set is transmitted first and the data is transmitted later.

[0251] As described above, according to the constraints of the NAL unit transmission order, the multiplexing unit 4802 may transmit the NAL units in any order. For example, order identification information is defined, and the multiplexing unit 4802 may have a function of transmitting the NAL units in a plurality of pattern orders. For example, the order identification information of the NAL unit is stored in the stream PS.

[0252] The three-dimensional data decoder may perform decoding based on the order identification information. A desired transmission order is instructed from the three-dimensional data decoder to the three-dimensional data encoder, and the three-dimensional data encoder (multiplexing unit 4802) may control the transmission order according to the instructed transmission order.

[0253] Note that the multiplexing unit 4802 may generate encoded data in which a plurality of functions are merged as long as it is within the range that follows the constraints of the transmission order, such as the transmission order of data integration. For example, as shown in FIG. 36, 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 a plurality of functions is defined for pcc_nal_unit_type.

[0254] The following describes a modification example of the present embodiment. PS has levels such as frame-level PS, sequence-level PS, and PCC sequence-level PS. If the PCC sequence level is the upper level and the frame level is the lower level, the following method may be used for the parameter storage method.

[0255] The value of the default PS is indicated by the higher-level PS. Also, when the value of the lower-level PS is different from the value of the higher-level PS, the value of the PS is indicated by the lower-level PS. Alternatively, the value of the PS is not described at the higher level, and the value of the PS is described in the lower-level PS. Alternatively, information indicating whether the value of the PS is indicated by the lower-level PS, the higher-level PS, or both is indicated in either or both of the lower-level PS and the higher-level PS. Alternatively, the lower-level PS may be merged into the higher-level PS. Alternatively, when the lower-level PS and the higher-level PS overlap, the multiplexing unit 4802 may omit the transmission of either one.

[0256] Note that 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 for decoding the divided data are included in the parameter set. In this case, an identifier indicating that the pcc_nal_unit_type is data storing data or parameters related to tiles or slices is defined.

[0257] (Embodiment 5) The following describes a method for dividing point cloud data. FIG. 37 is a diagram showing an example of slice and tile division.

[0258] First, the method of slice division will be described. The three-dimensional data encoding device divides the three-dimensional point cloud data into arbitrary point clouds in units of slices. In slice division, the three-dimensional data encoding device does not divide the position information and the attribute information that constitute a point, but divides the position information and the attribute information together. That is, the three-dimensional data encoding device performs slice division so that the position information and the attribute information at an arbitrary point belong to the same slice. Note that according to these, the number of divisions and the division method may be any method. Also, the minimum unit of division is a point. For example, the number of divisions of the position information and the attribute information is the same. For example, the three-dimensional point corresponding to the position information after slice division and the three-dimensional point corresponding to the attribute information are included in the same slice.

[0259] In addition, the three-dimensional data encoding device generates slice additional information, which is additional information related to the number of divisions and the division method at the time of slice division. The slice additional information is the same for the position information and the 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. Also, the slice additional information includes information indicating the number of divisions, the division type, and the like.

[0260] Next, the method of tile division will be described. The three-dimensional data encoding device divides the slice-divided data into slice position information (G slice) and slice attribute information (A slice), and divides the slice position information and the slice attribute information into tiles respectively.

[0261] Note that FIG. 37 shows an example of division in an octree structure, but the number of divisions and the division method may be any method.

[0262] In addition, the three-dimensional data encoding device may divide the position information and the attribute information by different division methods or by the same division method. Also, the three-dimensional data encoding device may divide a plurality of slices into tiles by different division methods or by the same division method.

[0263] In addition, the three-dimensional data encoding device generates tile addition information related to the number of divisions and the division method during tile division. The tile addition information (position tile addition information and attribute tile addition information) is independent of the position information and the attribute information. For example, the tile addition information includes information indicating the reference coordinate position, size, or side length of the bounding box after division. The tile addition information also includes information indicating the number of divisions, the division type, and the like.

[0264] Next, an example of a method for dividing point cloud data into slices or tiles will be described. The three-dimensional data encoding device may use a predetermined method as the method for slice or tile division, or may adaptively switch the method used according to the point cloud data.

[0265] During slice division, the three-dimensional data encoding device divides the three-dimensional space all at once for the position information and the attribute information. For example, the three-dimensional data encoding device determines the shape of the object and divides the three-dimensional space into slices according to the shape of the object. For example, the three-dimensional data encoding device extracts an object such as a tree or a building and performs division in units of the object. For example, the three-dimensional data encoding device performs slice division so that the whole of one or more objects is included in one slice. Or, the three-dimensional data encoding device divides one object into a plurality of slices.

[0266] In this case, the encoding device may change the encoding method for each slice, for example. For example, the encoding device may use a high-quality compression method for a specific object or a specific part of the object. In this case, the encoding device may store information indicating the encoding method for each slice in the additional information (metadata).

[0267] In addition, the three-dimensional data encoding device may perform slice division so that each slice corresponds to a predetermined coordinate space based on the map information or the position information.

[0268] When performing tile division, the three-dimensional data encoding device independently divides the position information and the attribute information. For example, the three-dimensional data encoding device divides a slice into tiles according to the data volume or the processing volume. For example, the three-dimensional data encoding device determines whether the data volume of a slice (for example, the number of three-dimensional points included in the slice) is more than a predetermined threshold value. When the data volume of the slice is more than the threshold value, the three-dimensional data encoding device divides the slice into tiles. When the data volume of the slice is less than the threshold value, the three-dimensional data encoding device does not divide the slice into tiles.

[0269] For example, the three-dimensional data encoding device divides a slice into tiles so that the processing volume or the processing time in the decoding device falls within a certain range (equal to or less than a predetermined value). Thereby, the processing volume per tile in the decoding device becomes constant, and parallel processing in the decoding device becomes easy.

[0270] Also, when the processing volumes of the position information and the attribute information are different in the three-dimensional data encoding device, for example, when the processing volume of the position information is more than the processing volume of the attribute information, the three-dimensional data encoding device makes the number of divisions of the position information larger than the number of divisions of the attribute information.

[0271] Also, for example, when, depending on the content, in the decoding device, the position information may be decoded and displayed quickly, and the attribute information may be decoded and displayed slowly later, the three-dimensional data encoding device may also make the number of divisions of the position information larger than the number of divisions of the attribute information. Thereby, the decoding device can increase the number of parallel processes of the position information, so that the processing of the position information can be made faster than the processing of the attribute information.

[0272] Note that the decoding device does not necessarily have to perform parallel processing on the sliced or tiled data, and may determine whether to perform parallel processing on these according to the number or the capabilities of the decoding processing units.

[0273] By dividing in the above-described manner, adaptive encoding according to the content or object can be realized. Also, parallel processing in the decoding process can be realized. As a result, the flexibility of the point cloud encoding system or the point cloud decoding system is improved.

[0274] FIG. 38 is a diagram showing an example of a pattern of slice and tile division. In the figure, DU is a data unit (DataUnit) and indicates data of a tile or a slice. Each DU includes a slice index (SliceIndex) and a tile index (TileIndex). The numerical value in the upper right of the DU in the figure indicates the slice index, and the numerical value in the lower left of the DU indicates the tile index.

[0275] In Pattern 1, in slice division, the number of divisions and the division method are the same for the G slice and the A slice. In tile division, the number of divisions and the division method for the G slice are different from those for the A slice. Also, the same number of divisions and the same division method are used among multiple G slices. The same number of divisions and the same division method are used among multiple A slices.

[0276] In Pattern 2, in slice division, the number of divisions and the division method are the same for the G slice and the A slice. In tile division, the number of divisions and the division method for the G slice are different from those for the A slice. Also, the number of divisions and the division method are different among multiple G slices. The number of divisions and the division method are different among multiple A slices.

[0277] (Embodiment 6) An example of performing slice division after tile division will be described below. In an autonomous application such as autonomous driving of a vehicle, point cloud data in all regions is not required, but point cloud data in the region around the vehicle or in the region in the traveling direction of the vehicle is necessary. Here, tiles and slices can be used to selectively decode the original point cloud data. By dividing the three-dimensional point cloud data into tiles and further into slices, improvement in encoding efficiency or parallel processing can be achieved. When dividing the data, additional information (metadata) is generated, and the generated additional information is sent to the multiplexing unit.

[0278] FIG. 39 is a block diagram showing the configuration of a first encoding unit 5010 included in the three-dimensional data encoding apparatus according to the present embodiment. The first encoding unit 5010 generates encoded data (encoded stream) by encoding point cloud data by a first encoding method (GPCC (Geometry based PCC)). The first encoding unit 5010 includes a division unit 5011, a plurality of position information encoding units 5012, a plurality of attribute information encoding units 5013, an additional information encoding unit 5014, and a multiplexing unit 5015.

[0279] The division unit 5011 generates a plurality of divided data by dividing the point cloud data. Specifically, the division unit 5011 generates a plurality of divided data by dividing the space of the point cloud data into a plurality of subspaces. Here, the 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 division unit 5011 divides the position information into a plurality of divided position information and divides the attribute information into a plurality of divided attribute information. The division unit 5011 also generates additional information regarding the division.

[0280] For example, the division unit 5011 first divides the point cloud into tiles. Next, the division unit 5011 further divides the obtained tiles into slices.

[0281] A plurality of position information encoding units 5012 generate a plurality of encoded position information by encoding a plurality of divided position information. For example, the plurality of position information encoding units 5012 process the plurality of divided position information in parallel.

[0282] A plurality of attribute information encoding units 5013 generate a plurality of encoded attribute information by encoding a plurality of divided attribute information. For example, the plurality of attribute information encoding units 5013 process the plurality of divided attribute information in parallel.

[0283] The additional information encoding unit 5014 generates encoded additional information by encoding the additional information included in the point cloud data and the additional information regarding data division generated during division by the division unit 5011.

[0284] The multiplexing unit 5015 generates encoded data (encoded stream) by multiplexing the plurality of encoded position information, the plurality of encoded attribute information, and the encoded additional information, and transmits the generated encoded data. Also, the encoded additional information is used during decoding.

[0285] Note that in FIG. 39, examples where the number of the position information encoding unit 5012 and the attribute information encoding unit 5013 is two each are shown, but the number of the position information encoding unit 5012 and the attribute information encoding unit 5013 may be one each, or may be three or more. Also, the plurality of divided data may be processed in parallel within the same chip like a plurality of cores in a CPU, may be processed in parallel by cores of a plurality of chips, or may be processed in parallel by a plurality of cores of a plurality of chips.

[0286] Next, the decoding process will be described. FIG. 40 is a block diagram showing the configuration of the first decoding unit 5020. The first decoding unit 5020 restores the point cloud data by decoding the encoded data (encoded stream) generated by encoding the point cloud data by the first encoding method (GPCC). This first decoding unit 5020 includes a demultiplexing unit 5021, a plurality of position information decoding units 5022, a plurality of attribute information decoding units 5023, an additional information decoding unit 5024, and a combining unit 5025.

[0287] The inverse multiplexing unit 5021 generates a plurality of encoded position information, a plurality of encoded attribute information, and encoded additional information by inverse multiplexing encoded data (encoded stream).

[0288] The plurality of position information decoding units 5022 generate a plurality of divided position information by decoding the plurality of encoded position information. For example, the plurality of position information decoding units 5022 perform parallel processing on the plurality of encoded position information.

[0289] The plurality of attribute information decoding units 5023 generate a plurality of divided attribute information by decoding the plurality of encoded attribute information. For example, the plurality of attribute information decoding units 5023 perform parallel processing on the plurality of encoded attribute information.

[0290] The plurality of additional information decoding units 5024 generate additional information by decoding the encoded additional information.

[0291] The combining unit 5025 generates position information by combining the plurality of divided position information using the additional information. The combining unit 5025 generates attribute information by combining the plurality of divided attribute information using the additional information. For example, the combining unit 5025 first combines the decoded point cloud data for slices using the slice additional information to generate point cloud data corresponding to tiles. Next, the combining unit 5025 restores the original point cloud data by combining the point cloud data corresponding to the tiles using the tile additional information.

[0292] Note that in FIG. 39, an example is shown in which the number of the position information decoding units 5022 and the attribute information decoding units 5023 is two each, but the number of the position information decoding units 5022 and the attribute information decoding units 5023 may be one each or three or more. Also, the plurality of divided data may be processed in parallel within the same chip like a plurality of cores in a CPU, or may be processed in parallel by cores of a plurality of chips, or may be processed in parallel by a plurality of cores of a plurality of chips.

[0293] Next, a method for dividing point cloud data will be described. In autonomous applications such as autonomous driving of vehicles, point cloud data for areas around the vehicle or areas in the traveling direction of the vehicle, rather than point cloud data for all areas, is required.

[0294] FIG. 41 is a diagram showing an example of the shape of a tile. As shown in FIG. 41, various shapes such as a circle, a rectangle, or an ellipse may be used as the shape of the tile.

[0295] FIG. 42 is a diagram showing an example of a tile and a slice. The configuration of the slice may differ between tiles. For example, the configuration of the tile or the slice may be optimized based on the data volume. Alternatively, the configuration of the tile or the slice may be optimized based on the decoding speed.

[0296] Also, tile division may be performed based on position information. In this case, the attribute information is divided in the same way as the corresponding position information.

[0297] Also, in slice division after tile division, the position information and the attribute information may be divided into slices by different methods. For example, the method of slice division in each tile may be selected according to a request from an application. Based on a request from the application, different methods of slice division or methods of tile division may be used.

[0298] For example, the dividing unit 5011 divides the point cloud data into one or more tiles based on position information such as map information in a two-dimensional shape when viewing the three-dimensional point cloud data from above. Then, the dividing unit 5011 divides each tile into one or more slices.

[0299] Note that the dividing unit 5011 may divide the position information (Geometry) and the attribute information (Attribute) into slices in the same way.

[0300] Note that the position information and the attribute information may each be of one type or two or more types. Also, in the case of point cloud data without attribute information, the attribute information may be absent.

[0301] FIG. 43 is a block diagram of the dividing unit 5011. The dividing unit 5011 includes a tile dividing unit 5031 (Tile Divider), a position information slice dividing unit 5032 (Geometry Slice Divider), and an attribute information slice dividing unit 5033 (Attribute Slice Divider).

[0302] The tile dividing unit 5031 generates a plurality of tile position information by dividing the position information (Position(Geometry)) into tiles. Also, the tile dividing unit 5031 generates a plurality of tile attribute information by dividing the attribute information (Attribute) into tiles. Further, the tile dividing unit 5031 outputs tile additional information (TileMetaData) including information related to the tile division and information generated in the tile division.

[0303] The position information slice dividing unit 5032 generates a plurality of divided position information (a plurality of slice position information) by dividing the plurality of tile position information into slices. Also, the position information slice dividing unit 5032 outputs position slice additional information (Geometry Slice MetaData) including information related to the slice division of the position information and information generated in the slice division of the position information.

[0304] The attribute information slice dividing unit 5033 generates a plurality of divided attribute information (a plurality of slice attribute information) by dividing the plurality of tile attribute information into slices. Also, the attribute information slice dividing unit 5033 outputs attribute slice additional information (Attribute Slice MetaData) including information related to the slice division of the attribute information and information generated in the slice division of the attribute information.

[0305] Next, examples of the tile shapes will be described. The entire three-dimensional map (3D map) is divided into a plurality of tiles. The data of the plurality of tiles is selectively transmitted to the three-dimensional data decoding device. Or, among the data of the plurality of tiles, the data with high importance is transmitted to the three-dimensional data decoding device in order. The shape of the tile may be selected from a plurality of shapes according to the situation.

[0306] FIG. 44 is a diagram showing an example of a map when viewing the point cloud data obtained by LiDAR from above. The example shown in FIG. 44 is the point cloud data of a highway and includes a flyover.

[0307] FIG. 45 is a diagram showing an example of dividing the point cloud data shown in FIG. 44 into square tiles. Such a square division can be easily performed in the map server. Also, for ordinary roads, the height of the tile is set low. At the flyover, the height of the tile is set higher than that of ordinary roads so that the tile includes the flyover.

[0308] FIG. 46 is a diagram showing an example of dividing the point cloud data shown in FIG. 44 into circular tiles. In this case, adjacent tiles may overlap in plan view. When the vehicle needs the point cloud data of the peripheral area, the three-dimensional data encoding device transmits the point cloud data of the area of the cylinder (circle in plan view) around the vehicle to the vehicle.

[0309] Also, similar to the example of FIG. 45, for ordinary roads, the height of the tile is set low. At the flyover, the height of the tile is set higher than that of ordinary roads so that the tile includes the flyover.

[0310] The three-dimensional data encoding device may change the height of the tile according to, for example, the shape or height of a road or a building. Further, the three-dimensional data encoding device may change the height of the tile according to position information or area information. Further, the three-dimensional data encoding device may change the height of the tile for each tile. Alternatively, the three-dimensional data encoding device may change the height of the tile for each section including a plurality of tiles. That is, the three-dimensional data encoding device may make the heights of a plurality of tiles within a section the same. Also, tiles of different heights may overlap in top view.

[0311] FIG. 47 is a diagram showing an example of tile division when using tiles of various shapes, sizes or heights. The shape of the tile may be any shape, any size, or a combination thereof.

[0312] For example, in addition to the example of dividing with square tiles without overlapping as described above and the example of dividing with overlapping circular tiles, the three-dimensional data encoding device may perform division with overlapping square tiles. Also, the shape of the tile does not have to be square and circular, and a polygon having 3 or more vertices may be used, or a shape having no vertices may be used.

[0313] Also, the shape of the tile may be two or more types, and tiles of different shapes may overlap. Also, the number of types of tile shapes is 1 or more, and in the same shape to be divided, shapes of different sizes may be combined, or they may overlap.

[0314] For example, in an area where there is no object such as a road, larger tiles are used than in an area where an object exists. Further, the three-dimensional data encoding device may adaptively change the shape or size of the tile according to the object.

[0315] Also, for example, since the three-dimensional data encoding device needs to read tiles far ahead in the forward direction of the vehicle (automobile), it may set the tiles in the forward direction to a larger size. Since the possibility of the vehicle moving to the side of the automobile is low, the side tiles may be set to a smaller size than the tiles in the forward direction.

[0316] FIG. 48 is a diagram showing an example of tile data stored in a server. For example, point cloud data is previously tile-divided and encoded, and the obtained encoded data is stored in the server. The user acquires the data of a desired tile from the server when necessary. Alternatively, the server (three-dimensional data encoding device) may perform tile division and encoding so as to include the data desired by the user in response to the user's instruction.

[0317] For example, when the moving speed of the moving body (vehicle) is high, it is considered that a wider range of point cloud data is required. Therefore, the server may determine the shape and size of the tiles based on the speed of the vehicle estimated in advance (for example, the legal speed of the road, the speed of the vehicle that can be estimated from the width and shape of the road, or the statistical speed, etc.), and perform tile division. Alternatively, as shown in FIG. 48, the server may previously encode tiles of a plurality of shapes or sizes and store the obtained data. The moving body may acquire the data of tiles of an appropriate shape and size according to the traveling direction and speed of the moving body.

[0318] FIG. 49 is a diagram showing an example of a system related to tile division. As shown in FIG. 49, the shape and area of the tiles may be determined based on the position of the antenna (base station), which is a communication means for transmitting point cloud data, or the communication area supported by the antenna. Alternatively, when the point cloud data is generated by a sensor such as a camera, the shape and area of the tiles may be determined based on the position of the sensor or the target range (detection range) of the sensor.

[0319] One tile may be assigned to one antenna or sensor, or one tile may be assigned to a plurality of antennas or sensors. A plurality of tiles may be assigned to one antenna or sensor. The antenna or sensor may be fixed or movable.

[0320] For example, the encoded data divided into tiles may be managed by a server connected to an antenna or sensor for the area assigned to the tile. The server may manage the encoded data of its own area and the tile information of adjacent areas. In a centralized management server (cloud) that manages a plurality of servers corresponding to each tile, a plurality of encoded data of a plurality of tiles may be managed. Alternatively, a server corresponding to the tile may not be provided, and the antenna or sensor may be directly connected to the centralized management server.

[0321] Note that the target range of the antenna or sensor may vary depending on the power of the radio wave, the difference in devices, and the installation conditions, and the shape and size of the tile may also change accordingly. Based on the target range of the antenna or sensor, slices instead of tiles may be assigned, or a PCC frame may be assigned.

[0322] Next, a method for dividing a tile into slices will be described. Encoding efficiency can be improved by assigning similar objects to the same slice.

[0323] For example, the three-dimensional data encoding device may recognize objects (such as roads, buildings, trees, etc.) using the characteristics of the point cloud data, and perform slice division by clustering the point clouds for each object.

[0324] Alternatively, the three-dimensional data encoding device may perform slice division by grouping objects having the same attribute and assigning slices to each group. Here, the attribute is, for example, information related to movement, and grouping is performed by classifying objects into dynamic information such as pedestrians and vehicles, quasi-dynamic information such as accidents and traffic jams, quasi-static information such as traffic regulations and road construction, and static information such as road surfaces and structures.

[0325] Note that data may overlap in a plurality of slices. For example, when performing slice division for each of a plurality of object groups, any object may belong to one object group or may belong to two or more object groups.

[0326] FIG. 50 is a diagram showing an example of this slice division. For example, in the example shown in FIG. 50, the tile is a rectangular parallelepiped. Note that the tile may be cylindrical or may have other shapes.

[0327] The point cloud included in the tile is grouped into object groups such as roads, buildings, and trees, for example. Then, slicing is performed so that each object group is included in one slice. Then, each slice is encoded individually.

[0328] Next, a method for encoding the divided data will be described. The three-dimensional data encoding device (the first encoding unit 5010) encodes the divided data respectively. When encoding the attribute information, the three-dimensional data encoding device generates dependency relationship information indicating based on which configuration information (position information, additional information, or other attribute information) the encoding is performed as additional information. That is, the dependency relationship information indicates, for example, the configuration information of the reference destination (dependency destination). In this case, the three-dimensional data encoding device generates dependency relationship information based on the configuration information corresponding to the divided shape of the attribute information. Note that the three-dimensional data encoding device may generate dependency relationship information based on the configuration information corresponding to a plurality of divided shapes.

[0329] Dependency relationship information is generated by the three-dimensional data encoding device, and the generated dependency relationship information may be sent to the three-dimensional data decoding device. Alternatively, the three-dimensional data decoding device may generate the dependency relationship information, and the three-dimensional data encoding device does not have to send the dependency relationship information. Also, the dependency relationships used by the three-dimensional data encoding device are determined in advance, and the three-dimensional data encoding device does not have to send the dependency relationship information.

[0330] FIG. 51 is a diagram showing an example of the dependency relationship of each data. The tip of the arrow in the figure indicates the dependency destination, and the base of the arrow indicates the dependency source. The three-dimensional data decoding device decodes the data in the order from the dependency destination to the dependency source. Also, the data shown by the solid line in the figure is the data actually sent, and the data shown by the dotted line is the data not sent.

[0331] Also, in the same figure, G indicates position information, and A indicates attribute information. G t1 indicates the position information of tile number 1, G t2 indicates the position information of tile number 2. G t1s1 indicates the position information of tile number 1 and slice number 1, G t1s2 indicates the position information of tile number 1 and slice number 2, G t2s1 indicates the position information of tile number 2 and slice number 1, G t2s2 indicates the position information of tile number 2 and slice number 2. Similarly, A t1 indicates the attribute information of tile number 1, A t2 indicates the attribute information of tile number 2. A t1s1 indicates the attribute information of tile number 1 and slice number 1, A t1s2 indicates the attribute information of tile number 1 and slice number 2, A t2s1 indicates the attribute information of tile number 2 and slice number 1, A t2s2 indicates the attribute information of tile number 2 and slice number 2.

[0332] Mtile indicates tile additional information, MGslice indicates position slice additional information, and MAslice indicates attribute slice additional information. D t1s1 is the attribute information At1s1 shows the dependency information of D t2s1 and D represents the attribute information A t2s1 shows the dependency information.

[0333] Note that depending on the application or the like, different tile division or slice division structures may be used.

[0334] In addition, the three-dimensional data encoding device may rearrange the data in the decoding order so that the three-dimensional data decoding device does not need to rearrange the data. 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.

[0335] FIG. 52 is a diagram showing an example of the decoding order of data. In the example of FIG. 52, decoding is performed in order from the left data. The three-dimensional data decoding device decodes the dependent data first among the dependent data. For example, the three-dimensional data encoding device rearranges the data in advance and sends it out in this order. Note that any order may be used as long as the dependent data comes first. In addition, the three-dimensional data encoding device may send out the additional information and the dependency information before the data.

[0336] In addition, the three-dimensional data decoding device may selectively decode tiles based on requests from the application and information obtained from the NAL unit header. FIG. 53 is a diagram showing an example of the encoded data of the tiles. For example, the decoding order of the tiles is arbitrary. That is, there may be no dependency between the tiles.

[0337] Next, the configuration of the combining unit 5025 included in the first decoding unit 5020 will be described. FIG. 54 is a block diagram showing the configuration of the combining unit 5025. The combining unit 5025 includes a position information slice combining unit 5041 (Geometry Slice Combiner), an attribute information slice combining unit 5042 (Attribute Slice Combiner), and a tile combining unit (Tile Combiner).

[0338] The position information slice combiner 5041 generates a plurality of tile position information by combining a plurality of divided position information using the position slice additional information. The attribute information slice combiner 5042 generates a plurality of tile attribute information by combining a plurality of divided attribute information using the attribute slice additional information.

[0339] The tile combiner 5043 generates position information by combining a plurality of tile position information using the tile additional information. Also, the tile combiner 5043 generates attribute information by combining a plurality of tile attribute information using the tile additional information.

[0340] Note that the number of slices or tiles to be divided is 1 or more. That is, the slicing or tiling of slices or tiles may not be performed.

[0341] Next, the configuration of the sliced or tiled encoded data and the method of storing the encoded data in the NAL unit (multiplexing method) will be described. FIG. 55 is a diagram showing the configuration of the encoded data and the method of storing the encoded data in the NAL unit.

[0342] The encoded data (divided position information and divided attribute information) is stored in the payload of the NAL unit.

[0343] 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 (slice_idx, tile_idx) for identifying a slice or a tile, 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). Also, the type of division is, for example, a method based on an 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, etc.

[0344] In addition, the header of the encoded data includes identification information indicating a dependency relationship. That is, when there is a dependency relationship between the data, the header includes identification information for referring from the source of the dependency to the destination of the dependency. For example, the header of the destination data includes identification information for identifying the data. The header of the source data includes identification information indicating the destination. Note that if the identification information for identifying the 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 information may be omitted.

[0345] Next, the flow of the encoding process and the decoding process of the point cloud data according to the present embodiment will be described. FIG. 56 is a flowchart of the encoding process of the point cloud data according to the present embodiment.

[0346] First, the three-dimensional data encoding device determines the splitting method to be used (S5011). This splitting method includes whether to perform tile splitting or slice splitting. Further, the splitting method may include the number of splits when performing tile splitting or slice splitting, the type of splitting, and the like. The type of splitting is 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 data volume or processing volume. Note that the splitting method may be predetermined.

[0347] When tile splitting is performed (Yes in S5012), the three-dimensional data encoding device generates a plurality of tile position information and a plurality of tile attribute information by splitting the position information and the attribute information together (S5013). Further, the three-dimensional data encoding device generates tile addition information related to tile splitting. Note that the three-dimensional data encoding device may split the position information and the attribute information independently.

[0348] When slice splitting is performed (Yes in S5014), the three-dimensional data encoding device generates a plurality of split position information and a plurality of split attribute information by independently splitting a plurality of tile position information and a plurality of tile attribute information (or position information and attribute information) (S5015). Further, the three-dimensional data encoding device generates position slice addition information and attribute slice addition information related to slice splitting. Note that the three-dimensional data encoding device may split the tile position information and the tile attribute information together.

[0349] Next, the three-dimensional data encoding device generates a plurality of encoded position information and a plurality of encoded attribute information by encoding each of the plurality of split position information and the plurality of split attribute information (S5016). Further, the three-dimensional data encoding device generates dependency relationship information.

[0350] Next, the three-dimensional data encoding device generates encoded data (encoded stream) by NAL unitizing (multiplexing) the plurality of encoded position information, the plurality of encoded attribute information, and the addition information (S5017). Further, the three-dimensional data encoding device transmits the generated encoded data.

[0351] Figure 57 is a flowchart of the decoding process of the point cloud data according to the present embodiment. First, the three-dimensional data decoding device determines the splitting method (S5021) by analyzing the additional information (tile additional information, position slice additional information, and attribute slice additional information) related to the splitting method included in the encoded data (encoded stream). This splitting method includes whether to perform tile splitting or not, and whether to perform slice splitting or not. Further, the splitting method may include the number of splits and the type of split when performing tile splitting or slice splitting.

[0352] Next, the three-dimensional data decoding device generates the split position information and the split attribute information by decoding the plurality of encoded position information and the plurality of encoded attribute information included in the encoded data using the dependency information included in the encoded data (S5022).

[0353] When it is shown by the additional information that slice splitting is performed (Yes in S5023), the three-dimensional data decoding device generates a plurality of tile position information and a plurality of tile attribute information by combining the plurality of split position information and the plurality of split attribute information based on the position slice additional information and the attribute slice additional information, respectively, in each method (S5024). Note that the three-dimensional data decoding device may combine the plurality of split position information and the plurality of split attribute information in the same method.

[0354] When it is shown by the additional information that tile splitting is performed (Yes in S5025), the three-dimensional data decoding device generates the position information and the attribute information by combining the plurality of tile position information and the plurality of tile attribute information (the plurality of split position information and the plurality of split attribute information) in the same method based on the tile additional information (S5026). Note that the three-dimensional data decoding device may combine the plurality of tile position information and the plurality of tile attribute information in different methods.

[0355] Next, the tile additional information will be described. The three-dimensional data encoding device generates tile additional information, which is metadata regarding the tile division method, and transmits the generated tile additional information to the three-dimensional data decoding device.

[0356] FIG. 58 is a diagram showing an example syntax of tile additional information (TileMetaData). As shown in FIG. 58, for example, the tile additional information includes division method information (type_of_divide), shape information (topview_shape), overlap flag (tile_overlap_flag), overlap information (type_of_overlap), height information (tile_height), number of tiles (tile_number), tile position information (global_position, relative_position).

[0357] The division method information (type_of_divide) indicates the tile division method. For example, the division method information indicates whether the tile division method is division based on map information, that is, division based on top view (top_view), or other.

[0358] The shape information (topview_shape) is included in the tile additional information, for example, when the tile division method is division based on top view. The shape information indicates the shape of the tile in top view. For example, this shape includes a square and a circle. Note that this shape may include a polygon other than an ellipse, rectangle or quadrilateral, or other shapes. Note that the shape information is not limited to the shape of the tile in top view, and may indicate the three-dimensional shape of the tile (for example, a cube and a cylinder, etc.).

[0359] The overlap flag (tile_overlap_flag) indicates whether the tiles overlap. For example, the overlap flag is included in the tile additional information when the tile division method is division based on top view. In this case, the overlap flag indicates whether the tiles overlap in top view. Note that the overlap flag may indicate whether the tiles overlap in three-dimensional space.

[0360] Overlap information (type_of_overlap) is included in the tile additional information when, for example, tiles overlap. The overlap information indicates how the tiles overlap. For example, the overlap information indicates the size of the overlapping area, etc.

[0361] Height information (tile_height) indicates the height of the tile. Note that the height information may include information indicating the shape of the tile. For example, when the shape of the tile in a top view is a rectangle, this information may indicate the lengths of the sides of the rectangle (vertical length and horizontal length). Also, when the shape of the tile in a top view is a circle, this information may indicate the diameter or radius of the circle.

[0362] Also, the height information may indicate the height of each tile, or may indicate a common height for a plurality of tiles. Also, a plurality of height types such as roads and intersections may be set in advance, and the height information may indicate the height of each height type and the height type of each tile. Alternatively, the height of each height type may be defined in advance, and the height information may indicate the height type of each tile. That is, the height of each height type may not be indicated by the height information.

[0363] The number of tiles (tile_number) indicates the number of tiles. Note that the tile additional information may include information indicating the interval between tiles.

[0364] Tile position information (global_position, relative_position) is information for specifying the position of each tile. For example, the tile position information indicates the absolute coordinates or relative coordinates of each tile.

[0365] Note that some or all of the above information may be provided for each tile, or may be provided for every plurality of tiles (for example, for each frame or for every plurality of frames).

[0366] The three-dimensional data encoding device may send the tile addition information included in SEI (Supplemental Enhancement Information). Or, the three-dimensional data encoding device may store the tile addition information in an existing parameter set (PPS, GPS, or APS, etc.) and then send it.

[0367] For example, when the tile addition information changes for each frame, the tile addition information may be stored in a parameter set (such as GPS or APS) for each frame. When the tile addition information does not change within a sequence, the tile addition information may be stored in a parameter set (position SPS or attribute SPS) for each sequence. Further, when the same tile division information is used for position information and attribute information, the tile addition information may be stored in a parameter set (stream PS) of the PCC stream.

[0368] Also, the tile addition information may be stored in any one of the above parameter sets, or may be stored in a plurality of parameter sets. Also, the tile addition information may be stored in the header of the encoded data. Also, the tile addition information may be stored in the header of the NAL unit.

[0369] Also, all or part of the tile addition information may be stored in one of the headers of the division position information and the division attribute information, and may not be stored in the other. For example, when the same tile addition information is used for position information and attribute information, the tile addition information may be included in one of the headers of the position information and the attribute information. For example, when the attribute information depends on the position information, the position information is processed first. Therefore, these tile addition information may be included in the header of the position information, and the tile addition information may not be included in the header of the attribute information. In this case, the three-dimensional data decoding device determines, for example, that the attribute information of the dependency source belongs to the same tile as the tile of the position information of the dependency destination.

[0370] The three-dimensional data decoding device reconstructs the tile-divided point cloud data based on the tile addition information. When there is overlapping point cloud data, the three-dimensional data decoding device identifies the multiple overlapping point cloud data and selects any one of them or merges the multiple point cloud data.

[0371] Alternatively, the three-dimensional data decoding device may perform decoding using the tile addition information. For example, when multiple tiles overlap, the three-dimensional data decoding device performs decoding for each tile, performs processing (such as smoothing or filtering) using the multiple decoded data, and may generate point cloud data. This may enable highly accurate decoding.

[0372] FIG. 59 is a diagram showing a configuration example of a system including a three-dimensional data encoding device and a three-dimensional data decoding device. The tile division unit 5051 divides the point cloud data including position information and attribute information into a first tile and a second tile. The tile division unit 5051 also sends tile addition information related to the tile division to the decoding unit 5053 and the tile combination unit 5054.

[0373] The encoding unit 5052 generates encoded data by encoding the first tile and the second tile.

[0374] The decoding unit 5053 restores the first tile and the second tile by decoding the encoded data generated by the encoding unit 5052. The tile combination unit 5054 restores the point cloud data (position information and attribute information) by combining the first tile and the second tile using the tile addition information.

[0375] Next, the slice addition information will be described. The three-dimensional data encoding device generates slice addition information, which is metadata regarding the slice division method, and sends the generated slice addition information to the three-dimensional data decoding device.

[0376] FIG. 60 is a diagram showing an example of the syntax of slice additional information (SliceMetaData). As shown in FIG. 60, for example, the slice additional information includes division method information (type_of_divide), an overlap flag (slice_overlap_flag), overlap information (type_of_overlap), the number of slices (slice_number), slice position information (global_position, relative_position), and slice size information (slice_bounding_box_size).

[0377] The division method information (type_of_divide) indicates the division method of the slice. For example, the division method information indicates whether the division method of the slice is division based on object information as shown in FIG. 50 (object). Note that the slice additional information may include information indicating the method of object division. For example, this information indicates whether to divide one object into multiple slices or assign it to one slice. Further, this information may indicate the number of divisions when dividing one object into multiple slices, etc.

[0378] The overlap flag (slice_overlap_flag) indicates whether the slices overlap. The overlap information (type_of_overlap) is included in the slice additional information, for example, when the slices overlap. The overlap information indicates how the slices overlap. For example, the overlap information indicates the size of the overlapping region, etc.

[0379] The number of slices (slice_number) indicates the number of slices.

[0380] Slice position information (global_position, relative_position), and slice size information (slice_bounding_box_size) are information regarding the region of a slice. The slice position information is information for specifying the position of each slice. For example, the slice position information indicates the absolute coordinates or relative coordinates of each slice. The slice size information (slice_bounding_box_size) indicates the size of each slice. For example, the slice size information indicates the size of the bounding box of each slice.

[0381] The three-dimensional data encoding device may send out the slice additional information included in the SEI. Alternatively, the three-dimensional data encoding device may store the slice additional information in an existing parameter set (PPS, GPS, or APS, etc.) and send it out.

[0382] For example, when the slice additional information changes for each frame, the slice additional information may be stored in a parameter set (GPS or APS, etc.) for each frame. When the slice additional information does not change within a sequence, the slice additional information may be stored in a parameter set (position SPS or attribute SPS) for each sequence. Furthermore, when the same slice division information is used for the position information and the attribute information, the slice additional information may be stored in a parameter set (stream PS) of the PCC stream.

[0383] Also, the slice additional information may be stored in any one of the above parameter sets, or may be stored in a plurality of parameter sets. Also, the slice additional information may be stored in the header of the encoded data. Also, the slice additional information may be stored in the header of the NAL unit.

[0384] In addition, all or part of the slice addition information may be stored in one of the headers of the division position information and the division attribute information, and may not be stored in the other. For example, when the same slice addition information is used for the position information and the attribute information, the slice addition information may be included in one of the headers of the position information and the attribute information. For example, when the attribute information depends on the position information, the position information is processed first. Therefore, these slice addition information may be included in the header of the position information, and the slice addition information may not be included in the header of the attribute information. In this case, the three-dimensional data decoding device determines, for example, that the attribute information of the dependency source belongs to the same slice as the slice of the position information of the dependency destination.

[0385] The three-dimensional data decoding device reconstructs the point cloud data sliced based on the slice addition information. When there is duplicate point cloud data, the three-dimensional data decoding device identifies the plurality of duplicate point cloud data and selects any one of them or merges the plurality of point cloud data.

[0386] In addition, the three-dimensional data decoding device may perform decoding using the slice addition information. For example, when a plurality of slices overlap, the three-dimensional data decoding device performs decoding for each slice and performs processing (for example, smoothing or filtering) using the plurality of decoded data to generate point cloud data. This may enable highly accurate decoding.

[0387] FIG. 61 is a flowchart of three-dimensional data encoding processing including tile addition information generation processing by the three-dimensional data encoding device according to the present embodiment.

[0388] First, the three-dimensional data encoding device determines a tile division method (S5031). Specifically, the three-dimensional data encoding device determines whether to use a division method based on a top view (top_view) or another method (other) as the tile division method. In addition, the three-dimensional data encoding device determines the shape of the tile when using the division method based on the top view. In addition, the three-dimensional data encoding device determines whether the tile overlaps with other tiles.

[0389] If the tile splitting method determined in step S5031 is a splitting method based on a top view (Yes in S5032), the three-dimensional data encoding device describes in the tile additional information that the tile splitting method is a splitting method based on a top view (top_view) (S5033).

[0390] On the other hand, if the tile splitting method determined in step S5031 is other than the splitting method based on a top view (No in S5032), the three-dimensional data encoding device describes in the tile additional information that the tile splitting method is other than the splitting method based on a top view (top_view) (S5034).

[0391] Also, if the shape of the tile in top view determined in step S5031 is a square (square in S5035), the three-dimensional data encoding device describes in the tile additional information that the shape of the tile in top view is a square (S5036). On the other hand, if the shape of the tile in top view determined in step S5031 is a circle (circle in S5035), the three-dimensional data encoding device describes in the tile additional information that the shape of the tile in top view is a circle (S5037).

[0392] Next, the three-dimensional data encoding device determines whether the tile overlaps with other tiles (S5038). If the tile overlaps with other tiles (Yes in S5038), the three-dimensional data encoding device describes in the tile additional information that the tile overlaps (S5039). On the other hand, if the tile does not overlap with other tiles (No in S5038), the three-dimensional data encoding device describes in the tile additional information that the tile does not overlap (S5040).

[0393] Next, the three-dimensional data encoding device splits the tile based on the tile splitting method determined in step S5031, encodes each tile, and sends out the generated encoded data and tile additional information (S5041).

[0394] FIG. 62 is a flowchart of three-dimensional data decoding processing using tile addition information by the three-dimensional data decoding apparatus according to the present embodiment.

[0395] First, the three-dimensional data decoding apparatus analyzes the tile addition information included in the bitstream (S5051).

[0396] When it is shown by the tile addition information that the tile does not overlap with other tiles (No in S5052), the three-dimensional data decoding apparatus generates point cloud data for each tile by decoding each tile (S5053). Next, the three-dimensional data decoding apparatus reconstructs the point cloud data from the point cloud data of each tile based on the tile division method and the tile shape indicated by the tile addition information (S5054).

[0397] On the other hand, when it is shown by the tile addition information that the tile overlaps with other tiles (Yes in S5052), the three-dimensional data decoding apparatus generates point cloud data for each tile by decoding each tile. Further, the three-dimensional data decoding apparatus identifies the overlapping portion of the tiles based on the tile addition information (S5055). Note that the three-dimensional data decoding apparatus may perform decoding processing using a plurality of overlapping pieces of information for the overlapping portion. Next, the three-dimensional data decoding apparatus reconstructs the point cloud data from the point cloud data of each tile based on the tile division method, the tile shape, and the overlapping information indicated by the tile addition information (S5056).

[0398] Hereinafter, a modification example and the like regarding the slice will be described. The three-dimensional data encoding apparatus may transmit information indicating the type of object (road, building, tree, etc.) or attribute (dynamic information, static information, etc.) as addition information. Alternatively, encoding parameters may be defined in advance according to the object, and the three-dimensional data encoding apparatus may notify the three-dimensional data decoding apparatus of the encoding parameters by sending out the type or attribute of the object.

[0399] The following methods may be used for the encoding order and transmission order of slice data. For example, the three-dimensional data encoding device may encode slice data in order from data that is easy to recognize or cluster objects. Or, the three-dimensional data encoding device may perform encoding in order from the slice data for which clustering has ended quickly. Also, the three-dimensional data encoding device may transmit the encoded slice data in order. Or, the three-dimensional data encoding device may transmit the slice data in order of the highest decoding priority in the application. For example, when the decoding priority of dynamic information is high, the three-dimensional data encoding device may transmit the slice data in order from the slices grouped by dynamic information.

[0400] Also, when the order of the encoded data and the order of the decoding priority are different, the three-dimensional data encoding device may transmit the encoded data after rearranging it. Also, when accumulating the encoded data, the three-dimensional data encoding device may accumulate the encoded data after rearranging it.

[0401] The application (three-dimensional data decoding device) requests the server (three-dimensional data encoding device) to transmit the slices containing the desired data. The server may transmit the slice data required by the application and may not transmit the unnecessary slice data.

[0402] The application requests the server to transmit the tiles containing the desired data. The server may transmit the tile data required by the application and may not transmit the unnecessary tile data.

[0403] As described above, the three-dimensional data encoding device according to the present embodiment performs the processing shown in FIG. 63. First, the three-dimensional data encoding device generates a plurality of encoded data by encoding a plurality of subspaces (for example, tiles) obtained by dividing a target space including a plurality of three-dimensional points (S5061). The three-dimensional data encoding device generates a bitstream including the plurality of encoded data and first information (for example, topview_shape) indicating the shapes of the plurality of subspaces (S5062).

[0404] According to this, since the three-dimensional data encoding device can select an arbitrary shape from a plurality of types of subspace shapes, the encoding efficiency can be improved.

[0405] For example, the shape is a two-dimensional shape or a three-dimensional shape of the plurality of subspaces. For example, the shape is a shape obtained by viewing the plurality of subspaces from above. That is, the first information indicates the shape of the subspace viewed from a specific direction (for example, the upward direction). In other words, the first information indicates the shape of the subspace viewed from above. For example, the shape is a rectangle or a circle.

[0406] For example, the bitstream includes second information (for example, tile_overlap_flag) indicating whether or not the plurality of subintervals overlap.

[0407] According to this, since the three-dimensional data encoding device can overlap subspaces, it can generate subspaces without complicating the shape of the subspaces.

[0408] For example, the bitstream includes third information (for example, type_of_divide) indicating whether the division method of the plurality of subintervals is a division method using a top view.

[0409] For example, the bitstream includes fourth information (for example, tile_height) indicating at least one of the height, width, depth, and radius of the plurality of subintervals.

[0410] For example, the bitstream includes fifth information (e.g., global_position or relative_position) indicating the position of each of the plurality of subintervals.

[0411] For example, the bitstream includes sixth information (e.g., tile_number) indicating the number of the plurality of subintervals.

[0412] For example, the bitstream includes seventh information indicating the interval between the plurality of subintervals.

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

[0414] In addition, the three-dimensional data decoding device according to the present embodiment performs the processing shown in FIG. 64. First, the three-dimensional data decoding device restores the plurality of subspaces by decoding the plurality of encoded data generated by encoding a plurality of subspaces (e.g., tiles) obtained by dividing the target space including a plurality of three-dimensional points included in the bitstream (S5071). The three-dimensional data decoding device restores the target space by combining the plurality of subspaces using first information (e.g., topview_shape) indicating the shape of the plurality of subspaces included in the bitstream (S5072). For example, the three-dimensional data decoding device can grasp the position and range of each subspace in the target space by recognizing the shape of the plurality of subspaces using the first information. The three-dimensional data decoding device can combine the plurality of subspaces based on the grasped positions and ranges of the plurality of subspaces. Thereby, the three-dimensional data decoding device can correctly combine the plurality of subspaces.

[0415] For example, the shape is a two-dimensional shape or a three-dimensional shape of the plurality of subspaces. For example, the shape is a rectangle or a circle.

[0416] For example, the bitstream includes second information (e.g., tile_overlap_flag) indicating whether the plurality of sub-intervals overlap. In the restoration of the target space, the three-dimensional data decoding device further uses the second information to combine the plurality of sub-spaces. For example, the three-dimensional data decoding device uses the second information to determine whether the sub-spaces overlap. If the sub-spaces overlap, the three-dimensional data decoding device identifies the overlapping region and performs a predetermined correspondence for the identified overlapping region.

[0417] For example, the bitstream includes third information (e.g., type_of_divide) indicating whether the division method of the plurality of sub-intervals is a division method using a top view. When the third information indicates that the division method of the plurality of sub-intervals is a division method using a top view, the three-dimensional data decoding device combines the plurality of sub-spaces using the first information.

[0418] For example, the bitstream includes fourth information (e.g., tile_height) indicating at least one of the height, width, depth, and radius of the plurality of sub-intervals. In the restoration of the target space, the three-dimensional data decoding device further uses the fourth information to combine the plurality of sub-spaces. For example, the three-dimensional data decoding device can grasp the position and range of each sub-space within the target space by recognizing the height of the plurality of sub-spaces using the fourth information. The three-dimensional data decoding device can combine the plurality of sub-spaces based on the grasped positions and ranges of the plurality of sub-spaces.

[0419] For example, the bitstream includes fifth information (e.g., global_position or relative_position) indicating the position of each of the plurality of sub-intervals. In the restoration of the target space, the three-dimensional data decoding device further uses the fifth information to combine the plurality of sub-spaces. For example, the three-dimensional data decoding device can grasp the position of each sub-space within the target space by recognizing the positions of the plurality of sub-spaces using the fifth information. The three-dimensional data decoding device can combine the plurality of sub-spaces based on the grasped positions of the plurality of sub-spaces.

[0420] For example, the bit stream includes sixth information (e.g., tile_number) indicating the number of the plurality of sub-intervals. In restoring the target space, the three-dimensional data decoding device further uses the sixth information to combine the plurality of sub-spaces.

[0421] For example, the bit stream includes seventh information indicating the intervals of the plurality of sub-intervals. In restoring the target space, the three-dimensional data decoding device further uses the seventh information to combine the plurality of sub-spaces. For example, the three-dimensional data decoding device can recognize the intervals of the plurality of sub-spaces by using the seventh information, thereby grasping the positions and ranges of the plurality of sub-spaces within the target space. The three-dimensional data decoding device can combine the plurality of sub-spaces based on the grasped positions and ranges of the plurality of sub-spaces.

[0422] For example, the three-dimensional data decoding device includes a processor and a memory, and the processor uses the memory to perform the above processing.

[0423] (Embodiment 7) In this embodiment, the processing of a division unit (e.g., tile or slice) that does not include points will be described. First, the method for dividing point cloud data will be described.

[0424] In video coding standards such as HEVC, since data exists for all pixels of a two-dimensional image, even when the two-dimensional space is divided into a plurality of data regions, data exists in all data regions. On the other hand, in the coding of three-dimensional point cloud data, the points themselves, which are elements of the point cloud data, are data, and there is a possibility that data does not exist in some regions.

[0425] There are various methods for spatially dividing point cloud data, and the division methods can be classified according to whether the division unit (e.g., tile or slice), which is the divided data unit, always includes one or more point data.

[0426] A division method in which all of a plurality of divided units contain one or more point data is called a first division method. As the first division method, for example, there is a method of dividing point cloud data while being aware of the encoding processing time or the size of the encoded data. In this case, the number of points in each divided unit is approximately equal.

[0427] FIG. 65 is a diagram showing an example of a division method. For example, as the first division method, as shown in FIG. 65(a), a method of dividing points belonging to the same space into two identical spaces may be used. Also, as shown in FIG. 65(b), the space may be divided into a plurality of sub-spaces (divided units) so that each divided unit contains points.

[0428] Since these methods are divisions that are aware of points, one or more points are always included in all divided units.

[0429] A division method in which there may be one or more divided units that do not contain point data among a plurality of divided units is called a second division method. For example, as the second division method, as shown in FIG. 65(c), a method of evenly dividing the space can be used. In this case, points do not necessarily exist in the divided unit. That is, there may be a case where no points exist in the divided unit.

[0430] When the three-dimensional data encoding device divides point cloud data, it indicates whether (1) a division method in which all of a plurality of divided units contain one or more point data is used, (2) a division method in which there is one or more divided units that do not contain point data among a plurality of divided units is used, or (3) a division method in which there may be one or more divided units that do not contain point data among a plurality of divided units is used, in division additional information (metadata), which is additional information related to the division (for example, tile additional information or slice additional information), and may send out the division additional information.

[0431] Note that the three-dimensional data encoding device may indicate the above information as the type of splitting method. Further, the three-dimensional data encoding device may perform splitting by a predetermined splitting method without sending out split additional information. In that case, the three-dimensional data encoding device explicitly indicates in advance whether the splitting method is the first splitting method or the second splitting method.

[0432] Hereinafter, an example of the second splitting method and generation and transmission of encoded data will be described. Note that hereinafter, tile splitting will be described as an example of the splitting method of the three-dimensional space, but it may not be tile splitting, and the following method can also be applied to a splitting method with a splitting unit different from a tile. For example, tile splitting may be read as slice splitting.

[0433] FIG. 66 is a diagram showing an example of splitting point cloud data into six tiles. FIG. 66 shows an example where the minimum unit is a point, and shows an example of splitting position information (Geometry) and attribute information (Attribute) together. Note that the same applies to the case where the position information and the attribute information are split by different splitting methods or numbers of splits, the case where there is no attribute information, and the case where there are multiple pieces of attribute information.

[0434] In the example shown in FIG. 66, after tile splitting, there are tiles (#1, #2, #4, #6) that contain points within the tile and tiles (#3, #5) that do not contain points within the tile. Tiles that do not contain points within the tile are called null tiles.

[0435] Note that the method is not limited to splitting into six tiles, and any splitting method may be used. For example, the splitting unit may be a cube, or may be a shape other than a cube such as a rectangular parallelepiped or a cylinder. The plurality of splitting units may have the same shape, or may include different shapes. Further, as the splitting method, a predetermined method may be used, or different methods may be used for each predetermined unit (for example, a PCC frame).

[0436] In this segmentation method, when point cloud data is segmented into tiles, if there is no data in a tile, a bitstream including information indicating that the tile is a null tile is generated.

[0437] Hereinafter, the method for sending null tiles and the signaling method for null tiles will be described. The three-dimensional data encoding device may generate, for example, the following information as additional information (metadata) related to data segmentation, and send the generated information. FIG. 67 is a diagram showing an example of the syntax of tile additional information (TileMetaData). The tile additional information includes segmentation method information (type_of_divide), segmentation method null information (type_of_divide_null), number of tile segments (number_of_tiles), and tile null flag (tile_null_flag).

[0438] The segmentation method information (type_of_divide) is information regarding the segmentation method or segmentation type. For example, the segmentation method information indicates one or more segmentation methods or segmentation types. For example, as the segmentation method, there are top_view segmentation and equal segmentation. Note that if there is only one definition of the segmentation method, the segmentation method information may not be included in the tile additional information.

[0439] The segmentation method null information (type_of_divide_null) is information indicating whether the segmentation method used is the following first segmentation method or the second segmentation method. Here, the first segmentation method is a segmentation method in which each of a plurality of segmentation units always includes one or more point data. The second segmentation method is a segmentation method in which there is one or more segmentation units that do not include point data among a plurality of segmentation units, or a segmentation method in which there may be one or more segmentation units that do not include point data among a plurality of segmentation units.

[0440] In addition, the tile additional information may include at least one of the following as the division information of the entire tile: (1) information indicating the number of tile divisions (number_of_tiles), or information for specifying the number of tile divisions; (2) information indicating the number of null tiles, or information for specifying the number of null tiles; and (3) information indicating the number of tiles other than null tiles, or information for specifying the number of tiles other than null tiles. Further, the tile additional information may include information indicating the shape of the tile or whether the tiles overlap as the division information of the entire tile.

[0441] In addition, the tile additional information sequentially indicates the division information for each tile. For example, the order of the tiles is predetermined for each division method and is known in the three-dimensional data encoding device and the three-dimensional data decoding device. If the order of the tiles is not predetermined, the three-dimensional data encoding device may send information indicating the order to the three-dimensional data decoding device.

[0442] The division information for each tile includes a tile null flag (tile_null_flag) which is a flag indicating whether data (points) exist in the tile. In the case where there is no data in the tile, the tile null flag may be included as the tile division information.

[0443] In addition, when the tile is not a null tile, the tile additional information includes the division information for each tile (position information (e.g., coordinates of the origin (origin_x, origin_y, origin_z)), and height information of the tile, etc.). When the tile is a null tile, the tile additional information does not include the division information for each tile.

[0444] For example, when storing the slice division information for each tile in the division information for each tile, the three-dimensional data encoding device may not store the slice division information of the null tile in the additional information.

[0445] Note that in this example, the number of tiles (number_of_tiles) indicates the number of tiles including null tiles. FIG. 68 is a diagram showing an example of tile index information (idx). In the example shown in FIG. 68, the index information is also assigned to null tiles.

[0446] Next, the data structure and transmission method of encoded data including null tiles will be described. FIGS. 69 to 71 are diagrams showing the data structure when position information and attribute information are divided into six tiles and there is no data in the third and fifth tiles.

[0447] FIG. 69 is a diagram showing an example of the dependency relationship of each data. The end of the arrow in the figure indicates the dependency destination, and the origin of the arrow indicates the dependency source. Also, in the same figure, G tn (n is from 1 to 6) indicates the position information of tile number n, and A tn indicates the attribute information of tile number n. M tile indicates tile addition information.

[0448] FIG. 70 is a diagram showing a configuration example of transmission data which is encoded data sent from a three-dimensional data encoding device. Also, FIG. 71 is a diagram showing the configuration of encoded data and the method of storing the encoded data in a NAL unit.

[0449] As shown in FIG. 71, tile index information (tile_idx) is included in the headers of the data of position information (division position information) and attribute information (division attribute information), respectively.

[0450] Also, as shown in Structure 1 of FIG. 70, the three-dimensional data encoding device may not send the position information or attribute information that constitutes the null tile. Or, as shown in Structure 2 of FIG. 70, the three-dimensional data encoding device may send information indicating that the tile is a null tile as the data of the null tile. For example, the three-dimensional data encoding device may describe that the data type is a null tile in the tile_type stored in the header of the NAL unit or the header within the nal_unit_payload of the NAL unit, and send the header. Hereinafter, the description will be made on the premise of Structure 1.

[0451] In Structure 1, when there is a null tile, in the transmitted data, the value of the tile index information (tile_idx) included in the header of the position information data or the attribute information data is missing and not continuous.

[0452] Also, when there is a dependency relationship between data, the three-dimensional data encoding device sends the data so that the referenced data can be decoded earlier than the referencing data. Note that the tile of the attribute information has a dependency relationship with the tile of the position information. The same tile index number is added to the attribute information and the position information with a dependency relationship.

[0453] Note that the tile addition information related to tile division may be stored in both the parameter set (GPS) of the position information and the parameter set (APS) of the attribute information, or may be stored in either one of them. When the tile addition information is stored in one of GPS and APS, reference information indicating the referenced GPS or APS may be stored in the other of GPS and APS. Also, when the tile division methods are different between the position information and the attribute information, different tile addition information is stored in each of GPS and APS. Also, when the tile division method is the same in a sequence (multiple PCC frames), the tile addition information may be stored in GPS, APS, or SPS (sequence parameter set).

[0454] For example, when tile addition information is stored in both GPS and APS, the tile addition information of the position information is stored in GPS, and the tile addition information of the attribute information is stored in APS. Also, when tile addition information is stored in common information such as SPS, the tile addition information commonly used in the position information and the attribute information may be stored, or the tile addition information of the position information and the tile addition information of the attribute information may be stored respectively.

[0455] Hereinafter, the combination of tile division and slice division will be described. First, the data configuration and data transmission when tile division is performed after slice division will be described.

[0456] FIG. 72 is a diagram showing an example of the dependency relationship of each data when tile division is performed after slice division. The tip of the arrow in the figure indicates the dependent destination, and the origin of the arrow indicates the dependent source. Also, the data indicated by the solid line in the figure is the data actually transmitted, and the data indicated by the dotted line is the data not transmitted.

[0457] Also, in the same figure, G indicates position information, and A indicates attribute information. G s1 indicates the position information of slice number 1, and G s2 indicates the position information of slice number 2. G s1t1 indicates the position information of slice number 1 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. A s1t1 indicates the attribute information of slice number 1 and tile number 1, and A s2t1 indicates the attribute information of slice number 2 and tile number 1.

[0458] Mslice indicates slice addition information, MGtile indicates position tile addition information, and MAtile indicates attribute tile addition information. D s1t1 indicates the dependency relationship information of the attribute information A s1t1 and D s2t1 indicates the attribute information As2t1 Shows the dependency information.

[0459] The three-dimensional data encoding device may not generate and send the position information and attribute information related to the null tile.

[0460] Also, even when the number of tile divisions is the same in all slices, the number of tiles generated and sent between slices may be different. For example, when the number of tile divisions for the position information and the attribute information is different, there may be a null tile in either the position information or the attribute information and not in the other. In the example shown in FIG. 72, the position information (G s1 ) of slice 1 is divided into two tiles, G s1t1 and G s1t2 , and among them, G s1t2 is the null tile. On the other hand, the attribute information (A s1 ) of slice 1 is not divided and there is one A s1t1 and there is no null tile.

[0461] Also, regardless of whether the slice of the position information contains a null tile or not, when there is data in at least the tile of the attribute information, the three-dimensional data encoding device generates and sends the dependency information of the attribute information. For example, when the three-dimensional data encoding device stores the slice division information for each tile in the slice addition information related to the slice division, this information stores information on whether the tile is a null tile or not.

[0462] FIG. 73 is a diagram showing an example of the decoding order of data. In the example of FIG. 73, decoding is performed in order from the left data. The three-dimensional data decoding device decodes the data that is the dependency destination first among the data in the dependency relationship. For example, the three-dimensional data encoding device rearranges and sends the data in advance so as to be in this order. Note that any order may be used as long as the data that is the dependency destination comes first. Also, the three-dimensional data encoding device may send the additional information and the dependency information before the data.

[0463] Next, the data structure and data transmission in the case of performing slice division after tile division will be described.

[0464] FIG. 74 is a diagram showing an example of the dependency relationship of each data in the case of performing slice division after tile division. The tip of the arrow in the figure indicates the dependency destination, and the origin of the arrow indicates the dependency source. Also, the data indicated by the solid line in the figure is the data actually transmitted, and the data indicated by the dotted line is the data not transmitted.

[0465] Also, in the same figure, G indicates position information, and A indicates attribute information. G t1 indicates the position information of tile number 1. G t1s1 indicates the position information of tile number 1 and slice number 1, and G t1s2 indicates the position information of tile number 1 and slice number 2. Similarly, A t1 indicates the attribute information of tile number 1, and A t1s1 indicates the attribute information of tile number 1 and slice number 1.

[0466] Mtile indicates tile additional information, MGslice indicates position slice additional information, and MAslice indicates attribute slice additional information. D t1s1 is the dependency relationship information of the attribute information A t1s1 and D t2s1 is the dependency relationship information of the attribute information A t2s1 and indicates the dependency relationship information.

[0467] The three-dimensional data encoding device does not perform slice division on null tiles. Also, it is not necessary to generate and transmit the position information, attribute information, and dependency relationship information of the attribute information related to the null tiles.

[0468] FIG. 75 is a diagram showing an example of the decoding order of data. In the example of FIG. 75, decoding is performed in order from the left data. For the three-dimensional data decoding device, among the data in a dependency relationship, decoding is performed first from the dependent data. For example, the three-dimensional data encoding device rearranges the data in advance and sends it out so as to be in this order. Note that any order may be used as long as the dependent data comes first. Further, the three-dimensional data encoding device may send out the additional information and the dependency relationship information before the data.

[0469] Next, the flow of the point cloud data splitting process and the combining process will be described. Here, examples of tile splitting and slice splitting will be described, but the same method can be applied to other spatial splittings.

[0470] FIG. 76 is a flowchart of a three-dimensional data encoding process including a data splitting process by a three-dimensional data encoding device. First, the three-dimensional data encoding device determines the splitting method to be used (S5101). Specifically, the three-dimensional data encoding device determines whether to use the first splitting method or the second splitting method. For example, the three-dimensional data encoding device may determine the splitting method based on a designation from a user or an external device (for example, a three-dimensional data decoding device), or may determine the splitting method according to the input point cloud data. Further, the splitting method to be used may be predetermined.

[0471] Here, the first splitting method is a splitting method in which each of a plurality of splitting units (tiles or slices) always contains one or more point data. The second splitting method is a splitting method in which there is one or more splitting units that do not contain point data among a plurality of splitting units, or a splitting method in which there may be one or more splitting units that do not contain point data among a plurality of splitting units.

[0472] When the determined segmentation method is the first segmentation method (the first segmentation method in S5102), the three-dimensional data encoding device describes that the segmentation method used in the segmentation additional information (for example, tile additional information or slice additional information), which is metadata related to data segmentation, is the first segmentation method (S5103). Then, the three-dimensional data encoding device encodes all the segmentation units (S5104).

[0473] On the other hand, when the determined segmentation method is the second segmentation method (the second segmentation method in S5102), the three-dimensional data encoding device describes that the segmentation method used in the segmentation additional information is the second segmentation method (S5105). Then, the three-dimensional data encoding device encodes the segmentation units excluding the segmentation units that do not contain point data (for example, null tiles) among the plurality of segmentation units (S5106).

[0474] FIG. 77 is a flowchart of three-dimensional data decoding processing including data combination processing by the three-dimensional data decoding device. First, the three-dimensional data decoding device refers to the segmentation additional information included in the bitstream and determines whether the used segmentation method is the first segmentation method or the second segmentation method (S5111).

[0475] When the used segmentation method is the first segmentation method (the first segmentation method in S5112), the three-dimensional data decoding device receives the encoded data of all the segmentation units and generates the decoded data of all the segmentation units by decoding the received encoded data (S5113). Next, the three-dimensional data decoding device reconstructs the three-dimensional point cloud using the decoded data of all the segmentation units (S5114). For example, the three-dimensional data decoding device reconstructs the three-dimensional point cloud by combining a plurality of segmentation units.

[0476] On the other hand, when the used splitting method is the second splitting method (the second splitting method in S5112), the three-dimensional data decoding device receives the encoded data of the splitting unit including the point data and the encoded data of the splitting unit not including the point data, and generates decoded data by decoding the received encoded data of the splitting unit (S5115). Note that when the splitting unit not including the point data is not transmitted, the three-dimensional data decoding device may not receive and decode the splitting unit not including the point cloud data. Next, the three-dimensional data decoding device reconstructs the three-dimensional point cloud using the decoded data of the splitting unit including the point data (S5116). For example, the three-dimensional data decoding device reconstructs the three-dimensional point cloud by combining a plurality of splitting units.

[0477] Hereinafter, other methods for splitting point cloud data will be described. When the space is evenly split as shown in Fig. 65(c), there may be a case where no points exist in the split space. In this case, the three-dimensional data encoding device combines the space where no points exist with other spaces where points exist. Thereby, the three-dimensional data encoding device can form a plurality of splitting units such that all splitting units include one or more points.

[0478] Fig. 78 is a flowchart of data splitting in this case. First, the three-dimensional data encoding device splits the data by a specific method (S5121). For example, the specific method is the second splitting method described above.

[0479] Next, the three-dimensional data encoding device determines whether the target splitting unit, which is the splitting unit to be processed, includes points (S5122). If the target splitting unit includes points (Yes in S5122), the three-dimensional data encoding device encodes the target splitting unit (S5123). On the other hand, if the target splitting unit does not include points (No in S5122), the three-dimensional data encoding device combines the target splitting unit with another splitting unit including points, and encodes the combined splitting unit (S5124). That is, the three-dimensional data encoding device encodes the target splitting unit together with another splitting unit including points.

[0480] Note that, in the above description, an example of performing determination and combination for each division unit has been described, but the processing method is not limited to this. For example, the three-dimensional data encoding device may determine whether each of a plurality of division units contains points, perform combination so that there are no division units that do not contain points, and encode each of the combined plurality of division units.

[0481] Next, a method for transmitting data including null tiles will be described. When the target tile, which is the tile to be processed, is a null tile, the three-dimensional data encoding device does not transmit the data of the target tile. FIG. 79 is a flowchart of the data transmission process.

[0482] First, the three-dimensional data encoding device determines a tile division method, and divides the point cloud data into tiles using the determined division method (S5131).

[0483] Next, the three-dimensional data encoding device determines whether the target tile is a null tile (S5132). That is, the three-dimensional data encoding device determines whether there is no data in the target tile.

[0484] If the target tile is a null tile (Yes in S5132), the three-dimensional data encoding device indicates in the tile additional information that the target tile is a null tile, and does not indicate the information of the target tile (such as the position and size of the tile) (S5133). Also, the three-dimensional data encoding device does not transmit the target tile (S5134).

[0485] On the other hand, if the target tile is not a null tile (No in S5132), the three-dimensional data encoding device indicates in the tile additional information that the target tile is not a null tile, and indicates the information for each tile (S5135). Also, the three-dimensional data encoding device transmits the target tile (S5136).

[0486] In this way, by not including the information of the null tile in the tile additional information, the amount of information of the tile additional information can be reduced.

[0487] The following describes a method for decrypting encoded data including null tiles. First, the processing in the case of no packet loss will be described.

[0488] FIG. 80 is a diagram showing an example of transmission data which is encoded data sent from a three-dimensional data encoding device and reception data input to a three-dimensional data decoding device. Here, it is assumed that the system environment has no packet loss, and the reception data is the same as the transmission data.

[0489] In the case of a system environment with no packet loss, the three-dimensional data decoding device receives all of the transmission data. FIG. 81 is a flowchart of the processing by the three-dimensional data decoding device.

[0490] First, the three-dimensional data decoding device refers to the tile addition information (S5141) and determines whether each tile is a null tile (S5142).

[0491] If it is shown in the tile addition information that the target tile is not a null tile (No in S5142), the three-dimensional data decoding device determines that the target tile is not a null tile and decrypts the target tile (S5143). Next, the three-dimensional data decoding device acquires tile information (tile position information (such as origin coordinates) and size, etc.) from the tile addition information, and reconstructs the three-dimensional data by combining a plurality of tiles using the acquired information (S5144).

[0492] On the other hand, if it is shown in the tile addition information that the target tile is a null tile (Yes in S5142), the three-dimensional data decoding device determines that the target tile is a null tile and does not decrypt the target tile (S5145).

[0493] Note that the three-dimensional data decoding device may determine that the missing data is a null tile by sequentially analyzing the index information shown in the header of the encoded data. Further, the three-dimensional data decoding device may combine the determination method using the tile addition information and the determination method using the index information.

[0494] Next, the processing in the case of packet loss will be described. FIG. 82 is a diagram showing an example of transmission data sent from the three-dimensional data encoding device and reception data input to the three-dimensional data decoding device. Here, a system environment with packet loss is assumed.

[0495] In the case of a system environment with packet loss, the three-dimensional data decoding device may not be able to receive all of the transmission data. In this example, the packets of G t2 and A t2 are lost.

[0496] FIG. 83 is a flowchart of the processing of the three-dimensional data decoding device in this case. First, the three-dimensional data decoding device analyzes the continuity of the index information indicated in the header of the encoded data (S5151), and determines whether the index number of the target tile exists (S5152).

[0497] If the index number of the target tile exists (Yes in S5152), the three-dimensional data decoding device determines that the target tile is not a null tile, and performs the decoding process of the target tile (S5153). Next, the three-dimensional data decoding device acquires tile information (tile position information (origin coordinates, etc.) and size, etc.) from the tile addition information, and reconstructs the three-dimensional data by combining a plurality of tiles using the acquired information (S5154).

[0498] On the other hand, if the index information of the target tile does not exist (No in S5152), the three-dimensional data decoding device determines whether the target tile is a null tile by referring to the tile addition information (S5155).

[0499] When the target tile is not a null tile (No in S5156), the three-dimensional data decoding device determines that the target tile has been lost (packet loss) and performs error decoding processing (S5157). The error decoding processing is, for example, a process of attempting to decode the original data as if there was data. In this case, the three-dimensional data decoding device may reproduce the three-dimensional data and perform reconstruction of the three-dimensional data (S5154).

[0500] On the other hand, when the target tile is a null tile (Yes in S5156), the three-dimensional data decoding device does not perform decoding processing and reconstruction of the three-dimensional data, assuming that the target tile is a null tile (S5158).

[0501] Next, an encoding method when null tiles are not explicitly indicated will be described. The three-dimensional data encoding device may generate encoded data and additional information by the following method.

[0502] The three-dimensional data encoding device does not indicate information on null tiles in the tile additional information. The three-dimensional data encoding device assigns the index numbers of tiles excluding null tiles to the data header. The three-dimensional data encoding device does not send out null tiles.

[0503] In this case, the number of tile divisions (number_of_tiles) indicates the number of divisions excluding null tiles. Note that the three-dimensional data encoding device may separately store information indicating the number of null tiles in the bit stream. Also, the three-dimensional data encoding device may indicate information regarding null tiles in the additional information, or may indicate some of the information regarding null tiles.

[0504] FIG. 84 is a flowchart of three-dimensional data encoding processing by the three-dimensional data encoding device in this case. First, the three-dimensional data encoding device determines a tile division method and divides the point cloud data into tiles using the determined division method (S5161).

[0505] Next, the three-dimensional data encoding device determines whether the target tile is a null tile (S5162). That is, the three-dimensional data encoding device determines whether there is no data in the target tile.

[0506] If the target tile is not a null tile (No in S5162), the three-dimensional data encoding device adds index information of tiles excluding the null tile to the data header (S5163). Then, the three-dimensional data encoding device sends out the target tile (S5164).

[0507] On the other hand, if the target tile is a null tile (Yes in S5162), the three-dimensional data encoding device does not add the index information of the target tile to the data header and does not send out the target tile.

[0508] FIG. 85 is a diagram showing an example of the index information (idx) added to the data header. As shown in FIG. 85, the index information of the null tile is not added, and consecutive numbers are added to tiles other than the null tile.

[0509] FIG. 86 is a diagram showing an example of the dependency relationship of each data. The tip of the arrow in the figure indicates the dependent destination, and the origin of the arrow indicates the dependent source. Also, in the same figure, G tn (n is 1 to 4) indicates the position information of tile number n, and A tn indicates the attribute information of tile number n. M tile indicates the tile addition information.

[0510] FIG. 87 is a diagram showing a configuration example of the transmission data which is the encoded data sent out from the three-dimensional data encoding device.

[0511] Hereinafter, a decoding method when the null tile is not explicitly shown will be described. FIG. 88 is a diagram showing an example of the transmission data sent out from the three-dimensional data encoding device and the reception data input to the three-dimensional data decoding device. Here, a system environment with packet loss is assumed.

[0512] Figure 89 is a flowchart of the processing of the three-dimensional data decoding device in this case. First, the three-dimensional data decoding device analyzes the index information of the tile indicated in the header of the encoded data, and determines whether the index number of the target tile exists. Also, the three-dimensional data decoding device acquires the number of tile divisions from the tile additional information (S5171).

[0513] When the index number of the target tile exists (Yes in S5172), the three-dimensional data decoding device performs the decoding process of the target tile (S5173). Next, the three-dimensional data decoding device acquires the tile information (tile position information (such as origin coordinates) and size, etc.) from the tile additional information, and reconstructs the three-dimensional data by combining a plurality of tiles using the acquired information (S5175).

[0514] On the other hand, when the index number of the target tile does not exist (No in S5172), the three-dimensional data decoding device determines that the target tile is a packet loss, and performs error decoding processing (S5174). Also, the three-dimensional data decoding device determines that the space that does not exist in the data is a null tile, and reconstructs the three-dimensional data.

[0515] Also, the three-dimensional data encoding device can appropriately determine that there are no points in the tile, rather than measurement errors, data loss due to data processing, etc., or packet loss, by explicitly indicating the null tile.

[0516] Note that the three-dimensional data encoding device may use a method of explicitly indicating null packets and a method of not explicitly indicating null packets in combination. In that case, the three-dimensional data encoding device may indicate in the tile additional information the information indicating whether to explicitly indicate null packets. Also, depending on the type of division method, it may be determined in advance whether to explicitly indicate null packets, and the three-dimensional data encoding device may indicate whether to explicitly indicate null packets by indicating the type of division method.

[0517] Also, in FIG. 67 and the like, an example in which information related to all tiles is shown in the tile additional information has been shown. However, in the tile additional information, information on some of the plurality of tiles may be shown, or information on null tiles of some of the plurality of tiles may be shown.

[0518] Also, an example in which information related to the split data, such as information on whether there is split data (tiles), is stored in the tile additional information has been described. However, some or all of these information may be stored in the parameter set, or may be stored as data. When these information are stored as data, for example, nal_unit_type that means information indicating whether there is split data may be defined, and these information may be stored in the NAL unit. Also, these information may be stored in both the additional information and the data.

[0519] As described above, the three-dimensional data encoding device according to the present embodiment performs the processing shown in FIG. 90. First, the three-dimensional data encoding device generates a plurality of encoded data by encoding a plurality of subspaces (for example, tiles or slices) obtained by dividing the target space including a plurality of three-dimensional points (S5181). The three-dimensional data encoding device generates a bitstream including a plurality of encoded data and first information (for example, tile_null_flag) corresponding to each of the plurality of subspaces (S5182). Each of the plurality of first information indicates whether second information indicating the structure of the corresponding subspace is included in the bitstream.

[0520] According to this, for example, since the second information can be omitted for a subspace that does not include points, the data amount of the bitstream can be reduced.

[0521] For example, the second information includes information indicating the coordinates of the origin of the corresponding subspace. For example, the second information includes information indicating at least one of the height, width, and depth of the corresponding subspace.

[0522] According to this, the three-dimensional data encoding device can reduce the data amount of the bitstream.

[0523] Also, as shown in FIG. 78, the three-dimensional data encoding device may divide a target space including a plurality of three-dimensional points into a plurality of sub-spaces (for example, tiles or slices), combine the plurality of sub-spaces according to the number of three-dimensional points included in each sub-space, and encode the combined sub-spaces. For example, the three-dimensional data encoding device may combine a plurality of sub-spaces so that the number of three-dimensional points included in each of the combined plurality of sub-spaces is equal to or greater than a predetermined number. For example, the three-dimensional data encoding device may combine a sub-space that does not include three-dimensional points with a sub-space that includes three-dimensional points.

[0524] According to this, the three-dimensional data encoding device can suppress the generation of sub-spaces with a small number of points or no points, so that the encoding efficiency can be improved.

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

[0526] Also, the three-dimensional data decoding device according to the present embodiment performs the processing shown in FIG. 91. First, the three-dimensional data decoding device obtains a plurality of first information (for example, tile_null_flag) each indicating whether second information indicating the structure of the corresponding sub-space is included in the bit stream for each of a plurality of sub-spaces (for example, tiles or slices) obtained by dividing a target space including a plurality of three-dimensional points from the bit stream (S5191). The three-dimensional data decoding device uses the plurality of first information to (i) restore a plurality of sub-spaces by decoding a plurality of encoded data generated by encoding the plurality of sub-spaces included in the bit stream, and (ii) restore the target space by combining the plurality of sub-spaces (S5192). For example, the three-dimensional data decoding device determines whether the second information is included in the bit stream using the first information, and when the second information is included in the bit stream, combines the decoded plurality of sub-spaces using the second information.

[0527] According to this, for example, since the second information can be omitted for a subspace that does not contain points, the data amount of the bit stream can be reduced.

[0528] For example, the second information includes information indicating the coordinates of the origin of the corresponding subspace. For example, the second information includes information indicating at least one of the height, width, and depth of the corresponding subspace.

[0529] According to this, the three-dimensional data decoding device can reduce the data amount of the bit stream.

[0530] Further, the three-dimensional data decoding device divides a target space including a plurality of three-dimensional points into a plurality of subspaces (for example, tiles or slices), combines the plurality of subspaces according to the number of three-dimensional points included in each subspace, and receives encoded data generated by encoding the combined subspaces, and may decode the received encoded data. For example, the encoded data may be generated by combining a plurality of subspaces so that the number of three-dimensional points included in each of the combined plurality of subspaces is equal to or greater than a predetermined number. For example, the three-dimensional data may be generated by combining a subspace that does not contain three-dimensional points with a subspace that contains three-dimensional points.

[0531] According to this, the three-dimensional data device can decode encoded data with improved encoding efficiency by suppressing the generation of subspaces with a small number of points or no points.

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

[0533] (Embodiment 8) FIG. 92 is a block diagram showing an example of the configuration of a three-dimensional data encoding device according to the present embodiment. FIG. 93 is a diagram for explaining an outline of an encoding method by the three-dimensional data encoding device according to the present embodiment.

[0534] The three-dimensional data encoding device 6800 generates divided data in which point cloud data is divided into a plurality of parts, such as tiles and slices, and encodes each of the plurality of divided data. The divided data is also referred to as sub-point cloud data. The point cloud data is data indicating a plurality of three-dimensional positions in a three-dimensional space. Further, the plurality of divided data are a plurality of sub-point cloud data in which the point cloud data is divided into a plurality of parts by dividing the three-dimensional space in which the point cloud data is arranged into a plurality of sub-spaces. Note that the number of divisions, that is, the number of divided data, may be 1 indicating no division, or may be 2 or more.

[0535] Note that in FIG. 92, the configuration of the three-dimensional data encoding device 6800 that divides into two parts will be described as an example. In FIG. 93, an example of dividing the point cloud data into four parts is shown. In FIG. 93, the space to be divided will be described by taking a two-dimensional space as an example, but it may be a one-dimensional space or a three-dimensional space.

[0536] The three-dimensional data encoding device 6800 includes a division method determination unit 6801, a division unit 6802, quantization units 6803a and 6803b, shift amount calculation units 6804a and 6804b, common position shift units 6805a and 6805b, individual position shift units 6806a and 6806b, and encoding units 6807a and 6807b.

[0537] The division method determination unit 6801 determines the division method of the point cloud data. The division method determination unit 6801 outputs division method information indicating the division method to the division unit 6802 and the shift amount calculation units 6804a and 6804b. Specific examples of the division method will be described later. The three-dimensional data encoding device 6800 may not have the division method determination unit 6801. In this case, the three-dimensional data encoding device 6800 may divide the point cloud data into a plurality of divided data by a predetermined division method.

[0538] The splitting unit 6802 splits the point cloud data into a plurality of split data according to the splitting method determined by the splitting method determination unit 6801. The plurality of split data split by the splitting unit 6802 are processed individually. Therefore, the three-dimensional data encoding device 6800 includes a processing unit that executes subsequent processing for each split data. Specifically, the three-dimensional data encoding device 6800 includes a quantization unit 6803a, a shift amount calculation unit 6804a, a common position shift unit 6805a, an individual position shift unit 6806a, and an encoding unit 6807a for processing the first split data. Further, the three-dimensional data encoding device 6800 includes a quantization unit 6803b, a shift amount calculation unit 6804b, a common position shift unit 6805b, an individual position shift unit 6806b, and an encoding unit 6807b for processing the second split data. Thereby, the three-dimensional data encoding device 6800 can execute processing for each of the plurality of split data in parallel. Note that in FIG. 92, the three-dimensional data encoding device 6800 shows an example of a processing unit that processes two split data in parallel, but it may have a processing unit that processes three or more split data in parallel. Further, the three-dimensional data encoding device may be configured to process a plurality of split data with individual processing units respectively.

[0539] Each of the quantization units 6803a and 6803b performs scaling (dividing position information by an arbitrary value) and quantization on the corresponding split data. Each of the quantization units 6803a and 6803b may delete at least one of the plurality of overlapping points or may not process the at least one point when a plurality of points overlap.

[0540] Each of the shift amount calculation units 6804a and 6804b calculates at least one of a common position shift amount and an individual position shift amount for shifting, that is, moving, the positions of the corresponding divided data according to the division method determined by the division method determination unit 6801. The shift amount calculation units 6804a and 6804b calculate only the common position shift amount among the common position shift amount and the individual position shift amount, only the individual position shift amount, or both the common position shift amount and the individual position shift amount according to the division method.

[0541] The common position shift amount is a shift amount (movement amount) for commonly moving the positions of a plurality of divided data. That is, the common position shift amount is the same among a plurality of divided data. The common position shift amount includes the direction in which the positions of a plurality of divided data are moved and the distance to be moved. The common position shift amount is an example of the first movement amount.

[0542] The individual position shift amount is a shift amount (movement amount) for individually moving the positions of each of a plurality of divided data. The individual position shift amount is a shift amount determined in a one-to-one correspondence with each of a plurality of divided data and is often different from each other among a plurality of divided data. The individual position shift amount includes the direction in which the position of the corresponding divided data is moved and the distance to be moved. The individual position shift amount is an example of the second movement amount.

[0543] Each of the common position shift units 6805a and 6805b performs a position shift on the corresponding divided data by the common position shift amount calculated by the shift amount calculation units 6804a and 6804b. As a result, the plurality of divided data 6811 to 6814 obtained by dividing the point group data 6810 shown in FIG. 93(a) move in the direction and distance indicated by the common position shift amount as shown in FIG. 93(b).

[0544] Each of the individual position shift units 6806a and 6806b performs a position shift on the corresponding divided data by the individual position shift amounts calculated by the shift amount calculation units 6804a and 6804b. As a result, the plurality of divided data 6811 to 6814 shown in FIG. 93(c) move in the directions and distances indicated by the corresponding individual shift amounts, respectively.

[0545] Each of the encoding units 6807a and 6807b encodes the corresponding divided data among the plurality of divided data moved by the individual position shift units 6806a and 6806b.

[0546] Note that the processing order of the dividing unit 6802, the quantization units 6803a and 6803b, the shift amount calculation units 6804a and 6804b, the common position shift units 6805a and 6805b, and the individual position shift units 6806a and 6806b may be interchanged. For example, the shift amount calculation units 6804a and 6804b and the common position shift units 6805a and 6805b may perform processing before the dividing unit 6802. In this case, the shift amount calculation units 6804a and 6804b may be merged into one processing unit, or the common position shift units 6805a and 6805b may be merged into one processing unit. Also in this case, the shift amount calculation units 6804a and 6804b only need to calculate at least the common position shift amount among the common position shift amount and the individual position shift amount before the common position shift units 6805a and 6805b, and the individual position shift amount only needs to be calculated before the processing of the individual position shift units 6806a and 6806b. That is, the configuration may be such that the processing unit that calculates the common position shift amount calculates the common position shift amount before the processing unit that calculates the individual position shift amount, separately from the processing unit that calculates the individual position shift amount. Also, any two or more of the above plurality of processing units may be merged.

[0547] Next, an example of calculating the common position shift amount and the individual position shift amount will be described with reference to FIG. 94. FIG. 94 is a diagram for explaining the first example of position shift. The first example is an example in which, after shifting the point cloud data 6810 by the common position shift amount, a plurality of divided data 6811 to 6814 are shifted by the corresponding individual position shift amounts.

[0548] As shown in FIG. 94(a), the three-dimensional data encoding device generates a bounding box 6820 sized to include all of the divided data 6811 to 6814 of the point cloud data 6810, and calculates the point with the minimum value of the generated bounding box 6820. Then, the three-dimensional data encoding device calculates, as the common position shift amount, the direction and distance of the vector indicated by the difference between the calculated point with the minimum value and the origin. Since the origin is 0, the difference is indicated by the coordinates of the point with the minimum value. The origin may be a predetermined reference point that is not 0. The bounding box 6820 may be a rectangular region of the minimum size that encloses all of the divided data 6811 to 6814. The point with the minimum value of the bounding box 6820 is the point closest to the origin in the region of the bounding box 6820. The bounding box 6820 is also referred to as a common bounding box. Also, the bounding box is also referred to as an encoding bounding box.

[0549] As shown in FIG. 94(b), the three-dimensional data encoding device moves the plurality of divided data 6811 to 6814 by the calculated common position shift amount. Note that the three-dimensional data encoding device may move the point cloud data 6810 before division by the common position shift amount.

[0550] Next, as shown in Fig. 94(b), for each of the plurality of divided data 6811 to 6814 after the common position shift, the three-dimensional data encoding device generates bounding boxes 6821 to 6824 of a size including the divided data 6811 to 6814, and calculates the points of the minimum values of the generated bounding boxes 6821 to 6824. Then, for each of the plurality of divided data 6811 to 6814, the three-dimensional data encoding device calculates the distance between the point of the minimum value of the bounding box corresponding to the divided data and the origin as the individual position shift amount of the divided data. Each of the bounding boxes 6821 to 6824 may be a rectangular region of the minimum size surrounding the corresponding divided data 6811 to 6814. The point of the minimum value of the bounding boxes 6821 to 6824 is the point closest to the origin in each region of the bounding boxes 6821 to 6824. Each of the bounding boxes 6821 to 6824 is also referred to as an individual bounding box.

[0551] As shown in Fig. 94(c), the three-dimensional data encoding device moves each of the plurality of divided data 6811 to 6814 by the calculated corresponding individual position shift amount.

[0552] The three-dimensional data encoding device generates a bitstream by encoding each of the plurality of divided data 6811 to 6814 moved by the individual position shift amount using the corresponding bounding boxes 6821 to 6824. At this time, the three-dimensional data encoding device stores the second bounding box information indicating the position and size of the point of the minimum value of each of the bounding boxes 6821 to 6824 in the metadata included in the bitstream. Hereinafter, the bounding box is also referred to as an encoding bounding box (encoding BB).

[0553] Note that the first bounding box information indicating the common position shift amount, and the position and size of the point with the minimum value of the bounding box 6820 are stored in the SPS of the data configuration of the bit stream shown in (e) of FIG. 94. Further, the individual position shift amount is stored in the header of the position information of the corresponding divided data. Further, the second bounding box information of the bounding boxes 6821 to 6824 used for encoding each of the divided data 6811 to 6814 is stored in the header of the position information of the corresponding divided data.

[0554] Here, assuming that the common position shift amount is Shift_A and the individual position shift amount is Shift_B(i) (i is the index of the divided data), the shift amount Shift(i) of the divided data (i) can be calculated using the following formula.

[0555] Shift(i) = Shift_A + Shift_B(i)

[0556] That is, as shown in (d) of FIG. 94, the total shift amount of each divided data can be calculated by adding the common position shift amount and the corresponding individual position shift amount.

[0557] Before encoding the point cloud data, the three-dimensional data encoding device performs a position shift on the point cloud data of the i-th divided data by subtracting Shift(i).

[0558] The three-dimensional data decoding device can obtain Shift_A and Shift_B(i) from the SPS and the header of the divided data, calculate Shift(i), and then add Shift(i) to the decoded divided data (i) to return the divided data to its original position. Thereby, a plurality of divided data can be correctly restored.

[0559] Next, a second example of the position shift that performs the common position shift and does not perform the individual position shift will be described with reference to FIG. 95. In the second example, since the individual position shift amount is not transmitted, the amount of information in the bit stream can be reduced.

[0560] FIG. 95 is a diagram for explaining a second example of position shift. In the second example, the point cloud data 6810 is position-shifted by a common position shift amount, and the respective divided data 6811 to 6814 are not position-shifted by individual position shift amounts.

[0561] As shown in FIG. 95(a), the three-dimensional data encoding device generates a bounding box 6820 sized to include all the divided data 6811 to 6814 of the point cloud data 6810, and calculates a common position shift amount using the generated bounding box 6820. The method for calculating the common position shift amount is the same as the method described with reference to FIG. 94.

[0562] As shown in FIG. 95(b), the three-dimensional data encoding device moves the plurality of divided data 6811 to 6814 by the calculated common position shift amount, and encodes using the bounding box 6820 that includes all the divided data 6811 to 6814 after the common position shift.

[0563] As described above, in the second example, after dividing the point cloud data 6810, the individual position shift amounts or bounding box information of each of the plurality of divided data 6811 to 6814 are not calculated. In the second example, the three-dimensional data encoding device positions the plurality of divided data 6811 to 6814 by a common position shift amount and encodes using a common bounding box, but the present invention is not limited to this. For example, the three-dimensional data encoding device may position the plurality of divided data 6811 to 6814 by a common position shift amount and encode using individual bounding boxes of each of the divided data 6811 to 6814. Further, the three-dimensional data encoding device may shift each of the divided data 6811 to 6814 by an individual position shift amount and encode using a common bounding box.

[0564] As shown in FIG. 95(c), the total shift amount of each divided data is the common position shift amount.

[0565] The first bounding box information indicating the common position shift amount and the position and size of the point of the minimum value of the bounding box 6820 including all the divided data is stored in the SPS in the data configuration of the bit stream shown in Fig. 95(d).

[0566] On the other hand, the individual position shift amount and the second bounding box information used for encoding each divided data are not stored in the header of the position information of the corresponding divided data.

[0567] Also, a flag (identification information) indicating that encoding was performed using the common position shift amount and the bounding box including all the divided data 6811 to 6814, the individual position shift amount, and a flag (identification information) indicating that the size information of the bounding box used for encoding the divided data is not stored in the header of the position information for each divided data are stored in the SPS or the GPS.

[0568] The three-dimensional data decoder determines whether encoding was performed using common information or individual information based on the above flags stored in the SPS or the GPS, and calculates the position information and the size of the bounding box used for decoding.

[0569] Hereinafter, BB indicates a bounding box. The common information is the common position shift amount and the first BB information common to a plurality of divided data. The common position shift amount may be indicated by the point of the minimum value of the common bounding box. The individual information is the individual position shift amount for each divided data and the second BB information of the bounding box for each divided data used for encoding. The individual position shift amount may be indicated by the point of the minimum value of the bounding box for each divided data. The divided region information is information indicating the division boundary in the space when dividing the data, and may include the point of the minimum value of the BB and the BB information indicating the size of the BB.

[0570] FIG. 96 is a flowchart showing an example of an encoding method when switching between the first example and the second example. FIG. 97 is a flowchart showing an example of a decoding method when switching between the first example and the second example.

[0571] As shown in FIG. 96, the three-dimensional data encoding device determines the common position shift amount of the point cloud data 6810 and the size of the common BB surrounding the point cloud data 6810 (S6801).

[0572] The three-dimensional data encoding device determines whether to individually shift each of the divided data 6811 to 6814 using individual position shift amounts (S6802). The three-dimensional data encoding device may determine based on the reduction amount of the header information or the result obtained by calculating the encoding efficiency.

[0573] When the three-dimensional data encoding device does not individually shift each of the divided data 6811 to 6814 (No in S6802), it determines to send the common position shift amount and the size of the common BB (S6803), and determines not to send the individual position shift amount and the size of the common BB (S6804). Thereby, the three-dimensional data encoding device generates a bit stream that includes the common position shift amount and the size of the common BB and does not include the individual position shift amount and the size of the individual BB. Identification information indicating that the data is not individually shifted may be stored in the bit stream.

[0574] On the other hand, when the three-dimensional data encoding device individually shifts each of the divided data 6811 to 6814 (Yes in S6802), it determines to send out the common position shift amount and the size of the common BB (S6805), and also determines to send out the individual position shift amount and the size of the individual BB (S6806). Thereby, the three-dimensional data encoding device generates a bit stream including the common position shift amount and the size of the common BB, and also including the individual position shift amount and the size of the individual BB. Identification information indicating individual shifting may be stored in the bit stream. Note that the three-dimensional data encoding device may calculate the individual position shift amount and the size of the individual BB for each of the divided data 6811 to 6814 in step S6806.

[0575] As shown in FIG. 97, the three-dimensional data decoding device acquires identification information indicating whether individual shifting has been performed by acquiring a bit stream (S6811).

[0576] The three-dimensional data decoding device determines whether individual shifting was performed during encoding using the identification information (S6812).

[0577] When the three-dimensional data decoding device determines that no individual shifting has been performed for each of the divided data 6811 to 6814 (No in S6812), it acquires the common position shift amount and the size of the common BB from the bit stream (S6813).

[0578] On the other hand, when the three-dimensional data decoding device determines that individual shifting has been performed for each of the divided data 6811 to 6814 (Yes in S6812), it acquires the common position shift amount and the size of the common BB from the bit stream (S6814), and also acquires the individual position shift amount and the size of the individual BB (S6815).

[0579] Next, a third example of position shifting using the divided region of the space in which the point cloud data exists and determined by the position shift amount will be described with reference to FIG. 98. In the third example, furthermore, the amount of information of the position shift amount can be reduced.

[0580] FIG. 98 is a diagram for explaining a third example of the position shift. In the third example, the shift amounts of all of the divided data 6811 to 6814 are represented by shift amounts in three levels.

[0581] As shown in FIG. 98(a), the three-dimensional data encoding device calculates a common position shift amount using a bounding box 6820. The method for calculating the common position shift amount is the same as the method described with reference to FIG. 94. At this time, the three-dimensional data encoding device determines a plurality of divided regions 6831 to 6834 (FIG. 98(b)) for dividing the point group data 6810 into a plurality, and divides the point group data 6810 into a plurality of divided data 6811 to 6814 according to the determined plurality of divided regions 6831 to 6834. The plurality of divided regions 6831 to 6834 are regions corresponding to the plurality of divided data 6811 to 6814, respectively. Note that the plurality of divided regions 6831 to 6834 are also referred to as divided region bounding boxes.

[0582] As shown in FIG. 98(b), the three-dimensional data encoding device calculates, as the position shift amount of the divided region, the direction and distance of a vector indicated by the difference between the point of the minimum value of the bounding box 6820 including all of the divided data and the points of the minimum values of the respective divided regions 6831 to 6834.

[0583] As shown in FIG. 98(c), for each of the plurality of divided data 6811 to 6814, the three-dimensional data encoding device generates bounding boxes 6821 to 6824 having sizes including the corresponding divided data 6811 to 6814, and calculates the points of the minimum values of the generated bounding boxes 6821 to 6824. Then, for each of the plurality of divided data 6811 to 6814, the three-dimensional data encoding device calculates, as the individual position shift amount of the corresponding divided data, the direction and distance of a vector indicated by the difference between the point of the minimum value of the bounding box corresponding to the divided data and the point of the minimum value of the corresponding divided region.

[0584] The three-dimensional data encoding device stores the common position shift amount, the individual position shift amount for each divided data, and the bounding box information indicating the size of the bounding box 6820 in the bit stream.

[0585] Note that the common position shift amount, and the first bounding box information indicating the position and size of the minimum point of the bounding box 6820 are stored in the SPS in the data configuration of the bit stream shown in (e) of FIG. 98. Also, the individual position shift amount is stored in the header of the position information of the corresponding divided data. Also, the divided region information including the position shift amount for each divided region is stored in, for example, the parameter set in which the divided metadata is stored. Also, the second bounding box information of the bounding boxes 6821 to 6824 used for encoding each of the divided data 6811 to 6814 is stored in the header of the position information of the corresponding divided data. Here, each of the bounding boxes 6821 to 6824 used for encoding each of the divided data 6811 to 6814 is included in each of the divided regions 6831 to 6834.

[0586] Here, assuming that the common position shift amount is Shift_A, the individual position shift amount is Shift_B(i), and the position shift amount of the divided region is Shift_C(i) (i is the index of the divided data), the shift amount Shift(i) of the divided data (i) can be calculated using the following formula.

[0587] Shift(i) = Shift_A + Shift_B(i) + Shift_C(i)

[0588] That is, as shown in (d) of FIG. 98, the total shift amount of each divided data can be calculated by adding the three shift amounts of the common position shift amount, the position shift amount of the divided region, and the individual position shift amount.

[0589] Before encoding the point cloud data, the three-dimensional data encoding device performs a position shift on the point cloud data of the i-th divided data by subtracting Shift(i).

[0590] The three-dimensional data decoding device can obtain Shift_A, Shift_B(i), and Shift_C(i) from the SPS and the header of the divided data, calculate Shift(i), and then add Shift(i) to the decoded divided data (i) to return the divided data to its original position. Thereby, a plurality of divided data can be correctly decoded.

[0591] This method has the effect of reducing the amount of information of the shift amount for each divided data by showing the individual position shift amount as the difference from the divided area when sending the divided area information.

[0592] Note that depending on whether to send the divided area information or not, the individual position shift amount may be switched to be the difference between the point of the minimum value of the common bounding box and the point of the minimum value of the individual bounding box, or the difference between the point of the minimum value for each divided area and the point of the minimum value of the individual bounding box. In the latter case, the individual position shift amount is represented by the sum of the position shift amount of the divided area and the calculated difference.

[0593] FIG. 99 is a flowchart showing an example of an encoding method when switching between the first example and the third example in the case of individually performing position shifting. FIG. 100 is a flowchart showing an example of a decoding method when switching between the first example and the third example in the case of individually performing position shifting.

[0594] As shown in FIG. 99, the three-dimensional data encoding device determines the division method of the point cloud data 6810 (S6821). Specifically, the three-dimensional data encoding device determines whether to perform position shifting on the point cloud data in the first example or the third example.

[0595] The three-dimensional data encoding device determines whether it is the method of the third example using the divided area based on the determined division method (S6822).

[0596] When it is determined that the method is the first example (No in S6822), the three-dimensional data encoding device sets the individual position shift amount to the difference between the minimum value point of the common BB and the minimum value point of the individual BB (S6823).

[0597] The three-dimensional data encoding device generates a bit stream including common information and individual information (S6824). The bit stream may store identification information indicating that the method is the first example.

[0598] When it is determined that the method is the third example (Yes in S6822), the three-dimensional data encoding device sets the individual position shift amount to the difference between the minimum value point of the divided region BB and the minimum value point of the individual BB (S6825).

[0599] The three-dimensional data encoding device transmits a bit stream including common information, individual information, and divided region information (S6826). The bit stream may store identification information indicating that the method is the third example.

[0600] As shown in FIG. 100, the three-dimensional data decoding device determines whether the bit stream includes divided region information by acquiring the bit stream (S6831). Thereby, the three-dimensional data decoding device determines whether the acquired bit stream includes point cloud data encoded in the first example or point cloud data encoded in the third example. Specifically, if the bit stream includes divided region information, it is determined that the bit stream includes point cloud data encoded in the third example, and if not, it is determined that the bit stream includes point cloud data encoded in the first example. Note that the three-dimensional data decoding device may determine whether the bit stream is encoded in the first example or the third example by acquiring the identification information included in the bit stream.

[0601] When the divided region information is not included in the bit stream (No in S6831), that is, when encoded in the first example, the three-dimensional data decoding device acquires common information and individual information from the bit stream (S6832).

[0602] Based on the acquired common information and individual information, the three-dimensional data decoding device calculates the position shift amount for each divided data, that is, the position shift amount Shift(i) in the first example, the common BB, and the individual BB, and decodes the point cloud data using these pieces of information (S6833).

[0603] When the divided region information is included in the bit stream (Yes in S6831), that is, when encoded in the third example, the three-dimensional data decoding device acquires common information, individual information, and divided region information from the bit stream (S6834).

[0604] Based on the acquired common information, individual information, and divided region information, the three-dimensional data decoding device calculates the position shift amount for each divided data, that is, the position shift amount Shift(i) in the third example, the common BB, the individual BB, and the divided region, and decodes the point cloud data using these pieces of information (S6835).

[0605] Next, a fourth example in which the divided region of the space where the point cloud data exists is position-shifted by the determined position shift amount as the bounding box for encoding will be described with reference to FIG. 101. In the fourth example, since the divided region and the individual bounding boxes match, the amount of information of the bounding box can be reduced as compared with the third example.

[0606] FIG. 101 is a diagram for explaining a fourth example of the position shift. In the fourth example, the total shift amounts of each of the divided data 6811 to 6814 are represented by a two-stage shift amount of the common position shift amount and the position shift amount of the divided region.

[0607] As shown in Fig. 101(a), the three-dimensional data encoding device calculates the common position shift amount using the bounding box 6820. The method for calculating the common position shift amount is the same as the method described with reference to Fig. 94. At this time, the three-dimensional data encoding device divides the point cloud data 6810 into a plurality of divided data 6811 to 6814. The method for dividing the point cloud data 6810 is the same as the method described with reference to Fig. 98(a).

[0608] As shown in Fig. 101(b), the three-dimensional data encoding device calculates the position shift amount of the divided region. The method for calculating the position shift amount of the divided region is the same as the method described with reference to Fig. 98(b).

[0609] The three-dimensional data encoding device calculates the position shift amount of the divided region as the individual position shift amounts of the respective divided data 6811 to 6814. Therefore, the three-dimensional data encoding device stores the bounding box information indicating the common position shift amount, the individual position shift amounts (the position shift amount of the divided region), and the size of the bounding box (divided region) in the bit stream.

[0610] Note that the common position shift amount and the first bounding box information indicating the position and size of the minimum point of the bounding box 6820 are stored in the SPS in the data configuration of the bit stream shown in Fig. 101(d).

[0611] Further, the individual position shift amount is stored in at least one of the header of the position information of the corresponding divided data and the divided metadata. When the individual position shift amount is stored in one of the header of the position information and the divided metadata, identification information indicating that the individual position shift amount is stored in the header of the position information of the divided data, or identification information indicating that it is stored in the divided metadata may be stored in GPS or SPS. Alternatively, the individual position shift amount is stored in, for example, the header of the divided data, and identification information (flag) indicating whether the position shift amount and the bounding box information stored in the header of the divided data match the divided region may be stored in GPS or SPS. Thereby, the three-dimensional data decoding device can determine, based on the above flag, that the divided region information is stored in the header of the divided data, and can use the position shift amount and the bounding box information stored in the header of the divided data as the information of the divided region. Alternatively, the above flag may be stored in the divided metadata, and when the above flag indicates 1, that is, when it indicates that the divided region information is stored in the header of the divided data, the three-dimensional data decoding device may obtain the divided region information by referring to the header of the divided data.

[0612] Here, assuming that the common position shift amount is Shift_A, the individual position shift amount is Shift_B(i), and the position shift amount of the divided region is Shift_C(i) (i is the index of the divided data), the shift amount Shift(i) of the divided data (i) can be calculated using the following formula.

[0613] Shift_B(i) = Shift_C(i)

[0614] Shift(i) = Shift_A + Shift_B(i)

[0615] That is, as shown in (c) of FIG. 101, the total shift amount of each divided data can be calculated by adding the common position shift amount and the position shift amount of the divided region (that is, the individual position shift amount).

[0616] Before encoding the point cloud data, the three-dimensional data encoding device performs a position shift on the point cloud data of the i-th divided data by subtracting Shift(i).

[0617] The three-dimensional data decoding device can obtain Shift_A, Shift_B(i), or Shift_C(i) from the SPS and the header of the divided data, calculate Shift(i), and then add Shift(i) to the decoded divided data (i) to return the divided data to its original position. As a result, a plurality of divided data can be correctly decoded.

[0618] By using the individual position shift amount as the position shift amount of the divided region, even when it is necessary to send the divided region information, it is not necessary to newly send the divided region information, which has the effect of reducing the amount of information.

[0619] Note that depending on whether to send the divided region information or not, the individual position shift amount may be switched between the bounding box information of the individual bounding boxes of each divided data and the divided region information.

[0620] FIG. 102 is a flowchart showing an example of an encoding method when switching between the third example and the fourth example when storing the divided region information.

[0621] As shown in FIG. 102, the three-dimensional data encoding device determines the division method of the point cloud data 6810 (S6841). Specifically, the three-dimensional data encoding device determines whether to perform a position shift on the point cloud data according to the third example or the fourth example. The three-dimensional data encoding device may make a determination based on the reduction amount of the header information or the result obtained by calculating the encoding efficiency.

[0622] The three-dimensional data encoding device determines whether to perform a position shift using an individual bounding box based on the determined division method (S6842). That is, the three-dimensional data encoding device determines whether to use the method of the third example or the method of the fourth example.

[0623] When the three-dimensional data encoding device determines that it is the method of the third example (Yes in S6842), it sets the individual position shift amount to the difference between the point of the minimum value of the divided region BB and the point of the minimum value of the individual BB (S6843).

[0624] The three-dimensional data encoding device generates a bit stream including common information, individual information, and divided region information (S6844). Identification information indicating that it is the method of the third example may be stored in the bit stream.

[0625] When the three-dimensional data encoding device determines that it is the method of the fourth example (No in S6842), it sets the individual position shift amount to the difference between the point of the minimum value of the common BB and the point of the minimum value of the divided region BB (S6845).

[0626] The three-dimensional data encoding device transmits a bit stream including common information and divided region information (S6846). Identification information indicating that it is the method of the fourth example may be stored in the bit stream.

[0627] Next, a fifth example of position shifting using the divided region of the space in which the point cloud data exists and determined by the position shift amount will be described with reference to FIG. 103. In the fifth example, the amount of information of the shift amount can be reduced.

[0628] FIG. 103 is a diagram for explaining a fifth example of position shifting. In the fifth example, compared with the third example, the difference is that the divided region of the third example is an equally divided region.

[0629] As shown in Fig. 103(a), the three-dimensional data encoding device calculates the common position shift amount using the bounding box 6820. The method for calculating the common position shift amount is the same as the method described with reference to Fig. 94. At this time, the three-dimensional data encoding device determines a plurality of division regions 6841 to 6844 (Fig. 103(b)) for dividing the point cloud data 6810 into a plurality of parts, for example, according to a predetermined rule based on the bounding box 6820. For example, when the bounding box 6820 is divided into N equal parts and N = 4, the three-dimensional data encoding device can generate four division regions 6841 to 6844 of equal size. Here, for example, if it is determined that the region numbers are defined in Morton order as identifiers for identifying each of the division regions 6841 to 6844, since the sizes of the respective division regions are equal, the position shift amount of the division region can be calculated from the number of division regions and the region numbers. Therefore, instead of sending out the position shift amount of the division region, the three-dimensional data encoding device may send out the number of division regions and the identification information for identifying the regions. As described above, the identification information is the Morton order corresponding to each of the plurality of division regions 6841 to 6844.

[0630] The example in Fig. 103(c) is an example in which the encoding regions are individual bounding boxes for each of the plurality of divided data. In this case, the position shift amount of each divided data is represented by the sum of the common position shift amount, the position shift amount of the corresponding division region, and the individual position shift amount from the reference position (position of the minimum point) of the corresponding division region. In this case, the corresponding division region may not include the entire region of the encoding region (i.e., the individual BB).

[0631] The example in Fig. 103(d) is an example in which the encoding region of each divided data coincides with each division region. In this case, the position shift amount of each divided data is represented by the sum of the common position shift amount and the position shift amount of the corresponding division region. In this case, since the corresponding division region coincides with the encoding region (i.e., the individual BB), it includes the encoding region.

[0632] In this way, the three-dimensional data encoding device may or may not match the encoding area of each divided data with the division area when dividing the point cloud data. When matching the encoding area of each divided data with the division area, either the method of (c) in FIG. 103 or the method of (d) in FIG. 103 can be used. When not matching the encoding area of each divided data with the division area, the method of (c) in FIG. 103 can be used.

[0633] When using the methods of (c) and (d) in FIG. 103, the common position shift amount, the position of the minimum point of the bounding box 6820, and the bounding box information indicating the size are stored in the SPS in the data configuration of the bitstream. Also, information regarding the division method and the number of divisions as division area information are stored in the SPS, GPS, etc. as information common to all divided data, and the number (identification information) in a predetermined order (Morton order) of each division area is stored in the header of the position information of the divided data as information of each division area.

[0634] Also, the individual position shift amount is stored in the header of the position information of the corresponding divided data. Also, in the case of (c) in FIG. 103, the individual position shift amount is further stored in the header of the position information of the divided data.

[0635] Note that when matching the division area with the divided data (that is, when matching the division area with the individual bounding box of the divided data), the number (tile ID) of the divided data included in the header of the position information of the divided data may be treated as the number in a predetermined order for each division area. In this way, by indicating the individual position shift amount with the identification information (number in a predetermined order) for each data, there is an effect of reducing the amount of information in the header.

[0636] Note that when the three-dimensional data encoding device uses the splitting method of the fifth example, it indicates the position shift amount of the split region by using a splitting method that equally divides the common bounding box and a predetermined order, and the region information including the number of splits and the identification information of the split region. When using another splitting method, it may be switched so that the position shift amount is indicated by a method that does not use the above region information.

[0637] Here, assuming that the common position shift amount is Shift_A, the individual position shift amount is Shift_B(i), and the position shift amount of the split region is Shift_D(i) (i is the index of the split data), the shift amount Shift(i) of the split data (i) can be calculated using the following formula.

[0638] Shift(i) = Shift_A + Shift_B(i) + Shift_D(i)

[0639] That is, the total shift amount of each split data can be calculated by adding three shift amounts: the common position shift amount, the position shift amount of the split region, and the individual position shift amount.

[0640] Before encoding the point cloud data, the three-dimensional data encoding device performs a position shift on the point cloud data of the i-th split data by subtracting Shift(i).

[0641] The three-dimensional data decoding device obtains Shift_A and Shift_B(i) from the SPS and the header of the split data. Further, as the split region information, it obtains information regarding the splitting method, the number of splits, and the number in the predetermined order for each split region, derives the position shift amount Shift_D(i) by a predetermined method, calculates Shift(i), and then adds Shift(i) to the decoded split data (i) to return the split data to its original position. Thereby, a plurality of split data can be correctly decoded.

[0642] Describe a specific example of reducing rules and header amounts when dividing point cloud data with an octree. FIG. 104 is a diagram for explaining an encoding method when dividing a three-dimensional space with an octree.

[0643] First, the three-dimensional data encoding device may offset (position shift, move) the point cloud data on the three-dimensional space by a common position shift amount and then divide it with an octree. The three-dimensional data encoding device divides the bounding box 6850 of the point cloud data into eight divided regions with an octree and sets the number of divisions according to the Depth (depth) of the octree. For example, the number of divisions for Depth is given by N = 2^(Depth * 3). When Depth = 1, the number of divisions is 8, and when Depth = 2, the number of divisions is 64. Also, the order of the divided regions is the Morton order. The position information of the divided regions can be calculated from the Morton order by applying the fifth example to the three-dimensional space. Note that the Morton order is characterized in that it can be calculated by a predetermined method from the position information of the divided regions.

[0644] The bounding box information of the point cloud data is stored in the SPS or GPS that contains common metadata for multiple divided data. The bounding box information includes the point (initial position) of the minimum value of the bounding box and the size.

[0645] The three-dimensional data encoding device stores identification information indicating that the division method is divided using an octree, and Depth information (depth information) indicating the Depth (depth) of the octree in the SPS or GPS of the data configuration of the bit stream shown in FIG. 104(e) when the division is by an octree. In the header of each divided data, a number in Morton order as the divided data number is stored. Also, when the division method is an octree, it is assumed that the position shift amount of the divided data and the bounding box information of the encoding are derived from the Morton order and are not stored in the bit stream.

[0646] That is, as shown in Fig. 104(f), the three-dimensional data encoding device calculates the identification information indicating that it is divided by an octree, the Depth of the octree, and the Morton order for the position information of each of the plurality of divided regions divided by the octree using a predetermined method. In the three-dimensional data decoding device, as shown in Fig. 104(g), the identification information indicating that it is divided by an octree, the Depth of the octree, and the Morton order are acquired, and the position information of each of the plurality of divided regions divided by the octree is restored by a predetermined method.

[0647] In addition, when there is no point cloud data in the divided region, the divided region information may not be necessary. For example, when there is no point cloud data in the region with the divided data number = 2, since the divided data number is not sent out, the order of the divided data numbers skips 2 and becomes 1, 3, 4.

[0648] In addition, the divided metadata may store the divided data number, or may store all the divided region information including the divided regions without point cloud data. In this case, whether there is point cloud data in the divided region may be indicated by the divided region information.

[0649] Fig. 105 is a diagram showing an example of the syntax of GPS.

[0650] octree_partition_flag is a flag indicating whether the division method of the point cloud data is octree division.

[0651] depth indicates the depth of the octree division when the point cloud data is divided by an octree.

[0652] gheader_BBmin_present_flag is a flag indicating whether the position information field of the bounding box for the encoding of the point cloud data exists in the header of the position information.

[0653] The gheader_BBsize_present_flag is a flag indicating whether the size information field of the bounding box for encoding point cloud data exists in the header of the position information.

[0654] Note that when octree_partition_flag = 1, gheader_BBmin_present_flag and gheader_BBsize_present_flag shall be set to 0.

[0655] Figure 106 is a diagram showing an example of the syntax of the header of the position information.

[0656] The partition_id indicates the identification information of the divided data. In the case of octree partitioning, the partition_id indicates a unique position in the order of Morton order.

[0657] BBmin indicates the shift amount when encoding data or divided data.

[0658] BBsize indicates the size of the bounding box when encoding data or divided data.

[0659] Although the octree division has been described as an example, the present method can be applied in the same way by determining a predetermined division method, the order of divided data, and the calculation method of position information for other division methods. For example, when the point cloud data is viewed from above and divided at equal intervals in the x-y plane, by determining that the division method is the above division method, the number or size of divisions, and the order, and transmitting the information, the position information and the position shift amount can be calculated by both the three-dimensional data encoding device and the three-dimensional data decoding device based on the information, and the data amount can be reduced by not transmitting the position information. Information on whether to divide by an octree, the information of the plane to be divided, or the information of dividing by a quadtree may also be transmitted.

[0660] FIG. 107 is a flowchart showing an example of an encoding method that switches processing according to whether or not to perform octree partitioning. FIG. 108 is a flowchart showing an example of a decoding method that switches processing according to whether or not octree partitioning has been performed.

[0661] As shown in FIG. 107, the three-dimensional data encoding device determines a method for partitioning point cloud data (S6851).

[0662] The three-dimensional data encoding device determines whether or not to perform octree partitioning based on the determined partitioning method (S6852).

[0663] When the three-dimensional data encoding device determines not to perform octree partitioning (No in S6852), it determines the individual position shift amount to the point of the minimum value of the individual BB for each divided data, shifts the divided data in position, and encodes the divided data using the individual BB (S6853).

[0664] The three-dimensional data encoding device stores information on the common BB in the common metadata (S6854).

[0665] The three-dimensional data encoding device stores the individual position shift amount for each divided data in the header of the divided data (S6855).

[0666] When the three-dimensional data encoding device determines to perform octree partitioning (Yes in S6852), it determines the individual position shift amount to the point of the minimum value of the divided region after octree partitioning, shifts the divided data in position, and encodes the divided data using the divided region of the octree (S6856).

[0667] The three-dimensional data encoding device stores information on the common BB, identification information indicating that octree partitioning has been performed, and Depth information in the common metadata (S6857).

[0668] The three-dimensional data encoding device stores order information indicating the order of Morton order for specifying the individual position shift amount for each divided data in the header of the divided data (S6858).

[0669] The three-dimensional data decoding device acquires information indicating a method for dividing point cloud data from common metadata (S6861).

[0670] The three-dimensional data decoding device determines whether the division method is an octree division based on the acquired information indicating the division method (S6862). Specifically, the three-dimensional data decoding device determines whether the division method is an octree based on identification information indicating whether octree division has been performed or not.

[0671] When the division method is not an octree division (No in S6862), the three-dimensional data decoding device acquires information on the common BB, the individual position shift amount, and information on the individual BB, and decodes the point cloud data (S6863).

[0672] When the division method is an octree division (Yes in S6862), the three-dimensional data decoding device acquires information on the common BB, Depth information, and individual order information, calculates the individual position shift amount and the encoded BB information, and decodes the point cloud data (S6864).

[0673] It is expected that the amount of code can be reduced by using any of the methods of the plurality of examples described in this embodiment. You may switch to any of the methods of the plurality of examples by a predetermined method.

[0674] For example, the three-dimensional data encoding device may calculate the amount of code and determine to perform the first method among the above-described plurality of methods under a predetermined condition according to the calculated amount of code. Alternatively, in the case of irreversible compression, when the quantization coefficient is larger than a predetermined value, when the number of data divisions is larger than a predetermined number, or when the number of point clouds is smaller than a predetermined number, it is determined that there is a possibility that the overhead changes, and the method may be switched from the first method to the second method among the above-described plurality of methods.

[0675] Also, although the differences from the common information are stored as individual information corresponding to the respective divided data in the headers of the divided data, this is not the only way, and the differences from the individual information of the immediately preceding divided data of the divided data may be stored as the individual information of the divided data.

[0676] FIG. 109 is a diagram showing an example of the data configuration of a bit stream when the divided data is classified into randomly accessible A data and non-randomly accessible B data. FIG. 110 is an example when the divided data of FIG. 109 is used as a frame.

[0677] In this case, that is, when there are one or more random access units, different information may be stored in the data headers of the A data and the B data, respectively. For example, the divided data of the A data may store individual difference information from the common information stored in the GPS, and the divided data of the B data may store difference information from the A data in the random access unit. When a plurality of divided data of the B data are included in a random access unit, difference information from the A data may be stored in each of the plurality of divided data of the B data included in the same random access unit, or difference information from the immediately preceding A data or B data of the B data may be stored in the plurality of divided data of the B data.

[0678] In the above description, the divided data has been described, but the same applies to the frame.

[0679] In the present embodiment, mainly, the division regions or division boundaries in data division have been described using an example (FIG. 111) in which the BBs of all the divided data are targeted and the regions are divided. However, even when the division regions are other cases, by using the method of the present embodiment, a similar effect of code amount reduction can be expected.

[0680] When dividing the BB that contains all the divided data as shown in FIG. 111, the three-dimensional data encoding device may use the minimum value of the BB as a reference for position shifting, and use the point cloud data after the position shift as the object to be divided. Also, when the point cloud data has been scaled or quantized, the three-dimensional data encoding device may use the point cloud data after scaling or quantization as the object to be divided, or may use the point cloud data before scaling or quantization as the object to be divided.

[0681] As shown in FIG. 112, the three-dimensional data encoding device may set the division region in the coordinate system of the input data of the point cloud data. In this case, the three-dimensional data encoding device does not shift the point of the minimum value of the BB of the point cloud data.

[0682] As shown in FIG. 113, the three-dimensional data encoding device may set the division region in the upper coordinate system of the point cloud data. For example, the three-dimensional data encoding device may set the division region based on GPS coordinates such as map data.

[0683] In this case, the three-dimensional data encoding device may store and transmit the relative position information of the coordinate system of the point cloud with respect to the upper coordinate system in the bit stream. For example, when a sensor such as an in-vehicle Lidar senses point cloud data while moving, the three-dimensional data encoding device may transmit the position information of the sensor (GPS coordinates, acceleration, speed, moving distance) as the relative position information. Also, for point cloud data having a time-series frame structure, the three-dimensional data encoding device may store and transmit the time-series sensor position information for each frame in the bit stream. Note that the upper coordinate system may be an absolute coordinate, or a relative coordinate based on the absolute coordinate. The upper coordinate system may be an even higher-level coordinate system of the upper coordinate system.

[0684] As shown in FIG. 114, the three-dimensional data encoding device may determine a divided area based on an object or data attribute of point cloud data. For example, the three-dimensional data encoding device may determine a divided area based on an image recognition result. In this case, the divided area may include overlapping areas. The three-dimensional data encoding device may cluster each point of the point cloud based on a predetermined attribute, may divide the data based on the number of points, or may divide the area so as to have point clouds with approximately equal numbers.

[0685] The three-dimensional data encoding device may signal the number of points to be encoded, and the three-dimensional data decoding device may decode the point cloud data using the number of points.

[0686] The encoding target is set for each frame or for each divided data obtained by dividing one frame, and the number of points to be encoded is basically stored in each data header. The number of points to be encoded that is signaled may have a reference value stored in common metadata, and difference information from the reference value may be stored in the data header.

[0687] For example, as shown in FIG. 115, the three-dimensional data encoding device stores a reference number of points A (i.e., the reference value) in GPS or SPS, and the number of points B(i) (where i is the index of the divided data) may be stored in each data header. The number of points in the divided data (i) is obtained by adding the number B(i) to the number A. Therefore, the three-dimensional data decoding device calculates A + B(i) and decodes the calculated value as the number of points in the divided data (i).

[0688] Alternatively, as shown in FIG. 116, the three-dimensional data encoding device may store difference information from the number of points in the previous divided data of the divided data in each data header. In this case, the number of points in the divided data (i) is obtained by adding the numbers B(1) to B(i) of the first divided data to the number A.

[0689] Also, for example, in the case of time-series point cloud data having a plurality of frame structures as shown in FIG. 117, the three-dimensional data encoding device may store a reference value of the number of points to be encoded in a common SPS, and store relative values of respective frames with respect to the reference value in the GPS or the data header. Further, the three-dimensional data encoding device may store a difference (relative value) with respect to the reference value stored in the SPS in the GPS, and further store a difference (relative value) from the added value of the reference value of the SPS and the difference value of the GPS in the data header. Thereby, an effect of reducing the amount of overhead code can be expected.

[0690] Note that, as a method of dividing the point cloud data, a method of dividing so that the number of points becomes substantially equal can be considered. In that case, the same method as in FIG. 115 can be used.

[0691] For example, as shown in FIG. 118, in the method of dividing so that the difference between points included in the divided data is within 1, Δ may be indicated by 1-bit data, and when Δ = 0, the difference information may not be indicated.

[0692] For example, as shown in FIG. 119, basically, data having a reference value described in the GPS as the number of divisions and data composed of the remaining number may be used. When Δ = 0, the difference information may not be indicated.

[0693] An effect of reducing the amount of overhead information can be expected by using any of the methods of FIGS. 115 to 119 described above.

[0694] As described above, the three-dimensional data encoding device according to the present embodiment performs the processing shown in FIG. 120. The three-dimensional data encoding device is a device that encodes point cloud data indicating a plurality of three-dimensional positions in a three-dimensional space. The three-dimensional data encoding device moves the point cloud data by a first movement amount (S6871). Next, the three-dimensional data encoding device divides the point cloud data into a plurality of sub-point cloud data by dividing the three-dimensional space into a plurality of sub-spaces (S6872). For each of the plurality of sub-point cloud data included in the point cloud data after being moved by the first movement amount, the three-dimensional data encoding device moves the sub-point cloud data by a second movement amount based on the position of the sub-space in which the sub-point cloud data is included (S6873). The three-dimensional data encoding device generates a bit stream by encoding the plurality of sub-point cloud data after the movement (S6874). The bit stream includes first movement information for calculating the first movement amount and a plurality of second movement information for calculating the plurality of second movement amounts by which the plurality of sub-point cloud data are moved, respectively. According to this, since the sub-point cloud data after division is moved and then encoded, the amount of information of the position information of each sub-point cloud data can be reduced, and the encoding efficiency can be improved.

[0695] For example, the plurality of sub-spaces have the same size as each other. Each of the plurality of second movement information includes the number of the plurality of sub-spaces and first identification information for identifying the corresponding sub-space. Therefore, the amount of information of the second movement information can be reduced, and the encoding efficiency can be improved.

[0696] For example, the first identification information is a Morton order corresponding to each of the plurality of sub-spaces.

[0697] For example, each of the plurality of sub-spaces is a space obtained by dividing one three-dimensional space using an octree. The bit stream includes second identification information indicating that the plurality of sub-spaces are spaces divided using an octree and depth information indicating the depth of the octree. Therefore, since the point cloud data on the three-dimensional space is divided using the octree, the amount of information of the position information of each sub-point cloud data can be reduced, and the encoding efficiency can be improved.

[0698] For example, the division is performed after moving the point cloud data by the first movement amount.

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

[0700] In addition, the three-dimensional data decoding device according to the present embodiment performs the processing shown in FIG. 121. The three-dimensional data decoding device is a plurality of sub-point cloud data obtained by dividing point cloud data indicating a plurality of three-dimensional positions by dividing a three-dimensional space into a plurality of sub-spaces, each of which is moved by a first movement amount and a corresponding second movement amount, first movement information for calculating the first movement amount, and a plurality of second movement information for calculating each of the plurality of second movement amounts by which the plurality of sub-point cloud data are moved are decoded from the bit stream (S6881). The three-dimensional data decoding device restores the point cloud data by moving each of the plurality of sub-point cloud data by a movement amount obtained by adding the first movement amount and the corresponding second movement amount (S6882). According to this, the point cloud data can be correctly decoded using a bit stream with improved encoding efficiency.

[0701] For example, the plurality of sub-spaces have the same size as each other. Each of the plurality of second movement information includes the number of the plurality of sub-spaces and first identification information for identifying the corresponding sub-space. Therefore, the amount of information of the second movement information can be reduced, and the encoding efficiency can be improved.

[0702] For example, the first identification information is a Morton order corresponding to each of the plurality of sub-spaces.

[0703] For example, each of the plurality of subspaces is a space obtained by dividing one three-dimensional space using an octree. The bitstream includes second identification information indicating that the plurality of subspaces are spaces obtained by dividing using an octree, and depth information indicating the depth of the octree. Therefore, in order to divide the point cloud data on the three-dimensional space using the octree, the amount of information of the position information of each sub-point cloud data can be reduced, and the encoding efficiency can be improved.

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

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

[0706] In addition, each processing unit included in the three-dimensional data encoding device and the 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 formed into one chip, or may be formed into one chip so as to include some or all of them.

[0707] In addition, the integration into an integrated circuit is not limited to an LSI, and it may be realized by a dedicated circuit or a general-purpose processor. An FPGA (Field Programmable Gate Array) that can be programmed after manufacturing the LSI, or a reconfigurable processor that can reconfigure the connection and setting of circuit cells inside the LSI may be used.

[0708] In addition, in each of the above embodiments, each component may be configured by 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 a processor reading and executing a software program recorded on a recording medium such as a hard disk or a semiconductor memory.

[0709] Further, the present disclosure may be implemented 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.

[0710] Also, the division of functional blocks in the block diagram is an example, and a plurality of functional blocks may be realized as one functional block, one functional block may be divided into a plurality, or some functions may be transferred to other functional blocks. Further, the functions of a plurality of functional blocks having similar functions may be processed by a single piece of hardware or software in parallel or in a time-sharing manner.

[0711] Also, the order in which each step in the flowchart is executed is for illustration in order to specifically describe the present disclosure, and may be an order other than the above. Also, some of the above steps may be executed simultaneously (in parallel) with other steps.

[0712] As described above, the three-dimensional data encoding device and the three-dimensional data decoding device according to one or more aspects have been described based on the embodiments, but the present disclosure is not limited to these embodiments. Without departing from the spirit of the present disclosure, various modifications conceived by those skilled in the art applied to these embodiments or forms constructed by combining components in different embodiments may also be included within the scope of one or more aspects.

Industrial Applicability

[0713] The present disclosure can be applied to a three-dimensional data encoding device and a three-dimensional data decoding device.

Explanation of Signs

[0714] 2400 Three-dimensional data encoding device 2401 Quantization unit 2402, 2411 Octree generation unit 2403 Merge determination unit 2404 Entropy encoding unit 2410 Three-dimensional data decoding device 2412 Merge information decoding unit 2413 Entropy Decoding Unit 2414 Inverse Quantization Unit 4601 3D Data Encoding System 4602 3D Data Decoding System 4603 Sensor Terminal 4604 External Connection Unit 4611 Point Group Data Generation System 4612 Presentation Unit 4613 Encoding Unit 4614 Multiplexing Unit 4615 Input / Output Unit 4616 Control Unit 4617 Sensor Information Acquisition Unit 4618 Point Group Data Generation Unit 4621 Sensor Information Acquisition Unit 4622 Input / Output Unit 4623 Demultiplexing Unit 4624 Decoding Unit 4625 Presentation Unit 4626 User Interface 4627 Control Unit 4630 First Encoding Unit 4631 Location Information Encoding Unit 4632 Attribute Information Encoding Unit 4633 Additional Information Encoding Unit 4634 Multiplexing Unit 4640 First Decoding Unit 4641 Demultiplexing Unit 4642 Location Information Decoding Unit 4643 Attribute Information Decoding Unit 4644 Additional Information Decoding Unit 4650 Second...

Claims

1. A three - dimensional data encoding method for encoding three - dimensional data, which is executed by a three - dimensional data encoding device, comprising: generating a plurality of sub - three - dimensional data, each of which includes position information of a part of the three - dimensional data; calculating a common movement amount for the plurality of sub - three - dimensional data; calculating a plurality of individual movement amounts corresponding to the plurality of sub - three - dimensional data respectively; moving each of the plurality of sub - three - dimensional data by using the common movement amount and the corresponding individual movement amount; encoding each of the plurality of sub - three - dimensional data moved by using the common movement amount and the corresponding individual movement amount A three - dimensional data encoding method.

2. generating common movement information regarding the common movement amount and individual movement information regarding each of the plurality of individual movement amounts; generating a bit stream including the common movement information and the plurality of individual movement information The three - dimensional data encoding method according to Claim 1.

3. A three - dimensional data decoding method executed by a three - dimensional data decoding device, comprising: obtaining common movement information, a plurality of individual movement information, and a plurality of sub - three - dimensional data, each of which includes position information of a part of the three - dimensional data; decoding the plurality of sub - three - dimensional data to obtain a plurality of decoded position information; calculating a common movement amount by using the common movement information; calculating an individual movement amount corresponding to each of the plurality of sub - three - dimensional data by using each of the plurality of individual movement information; each of the plurality of sub - three - dimensional data is moved by using the common movement amount and the corresponding individual movement amount; the common movement amount is a movement of the same distance in the plurality of sub - three - dimensional data and is a movement in a direction from a first point to a second point in three - dimensional space; the individual movement amount is a movement of different distances in the plurality of sub - three - dimensional data and is a movement in a direction from the second point to a third point in the three - dimensional space A three - dimensional data decoding method.

4. moving each of the plurality of sub - three - dimensional data by using the common movement amount and the corresponding individual movement amount to restore the position information of the three - dimensional data The three - dimensional data decoding method according to Claim 3.

5. A three - dimensional data encoding device for encoding three - dimensional data, comprising: a processor; a memory, and the processor uses the memory to generate a plurality of sub - three - dimensional data, each of which includes position information of a part of the three - dimensional data; Calculate a common movement amount for the plurality of sub-three-dimensional data, calculate a plurality of individual movement amounts respectively corresponding to the plurality of sub-three-dimensional data, move each of the plurality of sub-three-dimensional data by using the common movement amount and the corresponding individual movement amount, encode each of the plurality of sub-three-dimensional data moved by using the common movement amount and the corresponding individual movement amount Three-dimensional data encoding device.

6. A processor and, a memory, comprising: The processor uses the memory to acquire common movement information, a plurality of individual movement information, and a plurality of sub-three-dimensional data each including position information of a part of three-dimensional data, decode the plurality of sub-three-dimensional data to acquire a plurality of decoded position information, calculate a common movement amount by using the common movement information, calculate an individual movement amount corresponding to each of the plurality of sub-three-dimensional data by using each of the plurality of individual movement information, each of the plurality of sub-three-dimensional data is moved by using the common movement amount and the corresponding individual movement amount, the common movement amount is a movement of the same distance in the plurality of sub-three-dimensional data and is a movement in a direction from a first point to a second point in three-dimensional space, the individual movement amount is a different distance in the plurality of sub-three-dimensional data and is a movement in a direction from the second point to a third point in the three-dimensional space Three-dimensional data decoding device.

7. A program for causing a computer to execute the three-dimensional data encoding method according to claim 1 or 2.

8. A program for causing a computer to execute the three-dimensional data decoding method according to claim 3 or 4.

Citation Information

Patent Citations

  • High-throughput acquisition method and device for three-dimensional point cloud data of plants

    CN109035286A

  • Apparatus and method for processing video data

    JP2008514136A

  • Encoder and control method therefor

    JP2017126890A

  • Method and apparatus for encoding and decoding omnidirectional video

    JP2019534616A

  • Methods and systems for moving object velocity determination

    US20180341263A1