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

The proposed method addresses the large data volume challenge of three-dimensional point cloud data by dividing frames into processing units and managing duplicate points and shared quantization parameters, achieving reduced data volume and processing load.

JP2025113306AActive Publication Date: 2025-08-01PANASONIC INTELLECTUAL PROPERTY CORP OF AMERICA
View PDF 8 Cites 0 Cited by

Patent Information

Application Number
JP2025081805
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Priority Date
2018-11-16
Filing Date
2025-05-15
Publication Date
2025-08-01
Estimated Expiration
2039-11-15

AI Technical Summary

Technical Problem

The large data volume of three-dimensional point cloud data poses a challenge for efficient encoding and transmission, necessitating a method to reduce data volume while maintaining effective decoding and processing efficiency.

Method used

A three-dimensional data encoding method that divides frames into processing units, identifies duplicate points and shared quantization parameters, and includes control information in the bitstream to manage data volume and processing load.

Benefits of technology

The method effectively reduces data volume and processing load by identifying and managing duplicate points and shared quantization parameters, enhancing encoding and decoding efficiency.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2025113306000001_ABST
    Figure 2025113306000001_ABST
Patent Text Reader

Abstract

To provide a three-dimensional data encoding method capable of reducing data volume.SOLUTION: The three-dimensional data encoding method is a method of encoding multiple frames, each including multiple three-dimensional points, and generating a bit stream including multiple encoded frames. Each of the multiple frames includes multiple processing units. The bit stream includes a piece of first information representing whether there is a possibility of including the area, where two processing units overlap, which includes multiple three-dimensional points with the same position information and belonging to different processing units.SELECTED DRAWING: Figure 98
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, and a three-dimensional data decoding apparatus.

Background Art

[0002] In the future, the spread of devices or services that utilize 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. 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 methods for expressing three-dimensional data, there is a method called point cloud that represents the shape of a three-dimensional structure by a point group in a three-dimensional space. In a point cloud, the positions and colors of the point group are stored. Although point cloud is expected to become the mainstream as a method for expressing three-dimensional data, the point group has a very large data volume. Therefore, in the accumulation or transmission of three-dimensional data, as in the case of two-dimensional moving images (for example, MPEG-4 AVC or HEVC standardized by MPEG), compression of the data volume by encoding is essential.

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

[0005] Also, 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 of three-dimensional data, it is desired that the data volume can be reduced.

[0008] An object of the present disclosure is to provide a three-dimensional data encoding method, a three-dimensional data decoding method, a three-dimensional data encoding device, or a three-dimensional data decoding device capable of reducing the data volume.

Means for Solving the Problems

[0009] A three-dimensional data encoding method according to an aspect of the present disclosure encodes a plurality of frames each including a plurality of three-dimensional points, generates a bit stream including the plurality of encoded frames, each of the plurality of frames includes a plurality of processing units, and the bit stream includes first information indicating whether an overlapping region of two processing units may include a plurality of three-dimensional points having the same position information and belonging to different processing units.

[0010] A three-dimensional data decoding method according to an aspect of the present disclosure acquires a bit stream including data in which a plurality of frames each including a plurality of three-dimensional points are encoded, decodes the plurality of encoded frames from the bit stream, each of the plurality of frames includes a plurality of processing units, the bit stream includes first information indicating whether an overlapping region of two processing units may include a plurality of three-dimensional points having the same position information and belonging to different processing units, and in decoding the plurality of frames, the plurality of frames are decoded using the first information.

Advantages of the Invention

[0011] The present disclosure can provide a three-dimensional data encoding method, a three-dimensional data decoding method, a three-dimensional data encoding device, or a three-dimensional data decoding device capable of reducing the data volume.

Brief Description of the Drawings

[0012]

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

DETAILED DESCRIPTION OF THE INVENTION

[0013] A three-dimensional data encoding method according to an aspect of the present disclosure divides a target frame including a plurality of three-dimensional points into a plurality of processing units, generates a bitstream by encoding the plurality of processing units, and control information in frame units included in the bitstream is (i) whether there are duplicate points that are a plurality of three-dimensional points with the same position information in any of the plurality of processing units included in the target frame, or (ii) whether there are no such duplicate points in any of the plurality of processing units, and includes first information indicating this.

[0014] According to this, since it is possible to notify whether there are duplicate points in frame units, the data amount of the bitstream can be reduced.

[0015] For example, the encoding of the plurality of processing units includes a quantization process, and the control information in the frame unit may further include second information indicating whether the same parameter or an individual parameter is used for the plurality of processing units as a quantization parameter used in the quantization process.

[0016] According to this, since it is possible to notify whether to set a quantization parameter in frame units, the data amount of the bitstream can be reduced.

[0017] For example, the plurality of processing units include two spatially overlapping processing units, and the bitstream may include third information indicating whether there are a plurality of three-dimensional points with the same position information and belonging to different processing units in the region where the two processing units overlap.

[0018] According to this, a three-dimensional data decoding device can control the processing content according to the presence or absence of duplicate points in the region where the processing units overlap by using the third information. Therefore, the processing load in the three-dimensional data decoding device can be reduced.

[0019] A three-dimensional data decoding method according to one aspect of the present disclosure acquires a bitstream generated by encoding a plurality of processing units obtained by dividing a target frame including a plurality of three-dimensional points, decodes the plurality of processing units from the bitstream, and control information in frame units included in the bitstream includes first information indicating (i) whether there are overlapping points that are a plurality of three-dimensional points with the same position information in any of the plurality of processing units included in the target frame, or (ii) whether there are no such overlapping points in any of the plurality of processing units. In decoding the plurality of processing units, the plurality of processing units are decoded using the first information.

[0020] According to this, since it is possible to notify the presence or absence of overlapping points in frame units, the data amount of the bitstream can be reduced.

[0021] For example, decoding of the plurality of processing units includes an inverse quantization process, and the control information in the frame unit further includes second information indicating whether to use the same parameter or an individual parameter for the plurality of processing units as the quantization parameter used in the inverse quantization process.

[0022] According to this, since it is possible to notify whether to set the quantization parameter in frame units, the data amount of the bitstream can be reduced.

[0023] For example, the plurality of processing units include two spatially overlapping processing units, and the bitstream includes third information indicating whether there are a plurality of three-dimensional points with the same position information and belonging to different processing units in a region where the two processing units overlap.

[0024] According to this, the three-dimensional data decoding device can control the processing content according to the presence or absence of overlapping points in the region where the processing units overlap using the third information. Therefore, the processing load in the three-dimensional data decoding device can be reduced.

[0025] In addition, a three-dimensional data encoding device according to one aspect of the present disclosure includes a processor and a memory. The processor divides a target frame including a plurality of three-dimensional points into a plurality of processing units using the memory, generates a bitstream by encoding the plurality of processing units, and the control information in frame units included in the bitstream indicates (i) whether there are duplicate points, which are a plurality of three-dimensional points with the same position information, in any of the plurality of processing units included in the target frame, or (ii) whether there are no such duplicate points in any of the plurality of processing units, and includes first information indicating this.

[0026] According to this, since it is possible to notify the presence or absence of duplicate points in frame units, the data amount of the bitstream can be reduced.

[0027] In addition, a three-dimensional data decoding device according to one aspect of the present disclosure includes a processor and a memory. The processor acquires a bitstream generated by encoding a plurality of processing units into which a target frame including a plurality of three-dimensional points is divided using the memory, decodes the plurality of processing units from the bitstream, and the control information in frame units included in the bitstream indicates (i) whether there are duplicate points, which are a plurality of three-dimensional points with the same position information, in any of the plurality of processing units included in the target frame, or (ii) whether there are no such duplicate points in any of the plurality of processing units, and includes first information indicating this. In the decoding of the plurality of processing units, the plurality of processing units are decoded using the first information.

[0028] According to this, since it is possible to notify the presence or absence of duplicate points in frame units, the data amount of the bitstream can be reduced.

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

[0030] 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 are described as optional components.

[0031] (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 been no encoding method therefor.

[0032] 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 necessary information according to the application in the encoded data of a 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.

[0033] In particular, currently, as encoding methods (encoding formats) for point cloud data, a first encoding method and a second encoding method are being considered, but 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) in the encoding unit, or transmission or storage cannot be performed as it is.

[0034] In addition, there has been no method for supporting a format in which two codecs, a first encoding method and a second encoding method, are mixed, such as PCC (Point Cloud Compression).

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

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

[0037] The three-dimensional data encoding system 4601 generates encoded data or multiplexed data by encoding point cloud data which is three-dimensional data. Note that the three-dimensional data encoding system 4601 may be a three-dimensional data encoding device realized by a single device, or may be a system realized by a plurality of devices. Further, 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.

[0038] The three-dimensional data encoding system 4601 includes a point cloud data generation system 4611, a presentation unit 4612, an encoding unit 4613, a multiplexing unit 4614, an input / output unit 4615, and a control unit 4616. The point cloud data generation system 4611 includes a sensor information acquisition unit 4617 and a point cloud data generation unit 4618.

[0039] The sensor information acquisition unit 4617 acquires sensor information from the sensor terminal 4603 and outputs the sensor information to the point cloud data generation unit 4618. The point cloud data generation unit 4618 generates point cloud data from the sensor information and outputs the point cloud data to the encoding unit 4613.

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

[0041] The symbolization 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, sensor information.

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

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

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

[0045] The transmission signal (multiplexed data) output from the three-dimensional data encoding system 4601 is input to the three-dimensional data decoding system 4602 via the external connection unit 4604.

[0046] The three-dimensional data decoding system 4602 generates point cloud data, which is three-dimensional data, by decoding the encoded data or the 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. Also, the three-dimensional data decoding device may include a part of the plurality of processing units included in the three-dimensional data decoding system 4602.

[0047] The three-dimensional data decoding system 4602 includes a sensor information acquisition unit 4621, an input / output unit 4622, a demultiplexing unit 4623, a decoding unit 4624, a presentation unit 4625, a user interface 4626, and a control unit 4627.

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

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

[0050] The demultiplexing unit 4623 acquires 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.

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

[0052] The presentation unit 4625 presents the point cloud data to the user. For example, the presentation unit 4625 displays information or 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 application execution unit) controls each processing unit. That is, the control unit 4627 performs control such as demultiplexing, decoding, and presentation.

[0053] Note that the input / output unit 4622 may directly acquire point cloud data or encoded data from the outside. Also, 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 presentation based on the user's instruction acquired by the user interface 4626.

[0054] The sensor terminal 4603 generates sensor information, which is information obtained by the sensor. The sensor terminal 4603 is a terminal equipped with a sensor or a camera, and examples include a moving body such as an automobile, a flying object such as an airplane, a mobile terminal, or a camera.

[0055] The sensor information that can be obtained 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, etc.

[0056] The external connection unit 4604 is realized by an integrated circuit (LSI or IC), an external storage unit, communication with a cloud server via the Internet, or broadcasting, etc.

[0057] 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 the information of the point cloud data is described.

[0058] 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 these points is called a point cloud. For example, the point cloud shows the three-dimensional shape of an object.

[0059] Position information (Position) such as three-dimensional coordinates may also be called geometry. Further, the data of each point may include attribute information (attribute) of a plurality of attribute types. The attribute types are, for example, color or reflectivity, etc.

[0060] 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. Further, a plurality of pieces of attribute information of the same attribute type may be associated with one piece of position information.

[0061] The configuration example of the data file shown in FIG. 3 is an example in the case 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.

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

[0063] 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 a static object and a dynamic object.

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

[0065] The object may be a point cloud with a limited area to some extent like ordinary video data, or a large-scale point cloud with an unlimited area like map information.

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

[0067] Hereinafter, the details of each processing unit will be described. The sensor information is acquired by various methods such as a distance sensor such as LIDAR or a range finder, a stereo camera, or a combination of a plurality of 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 the point cloud data, and adds attribute information for the position information to the position information.

[0068] When generating position information or adding attribute information, the point cloud data generation unit 4618 may process the point cloud data. For example, the point cloud data generation unit 4618 may reduce the data volume 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.

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

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

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

[0072] The multiplexing unit 4614 generates multiplexed data by multiplexing the encoded data using an existing multiplexing method. The generated multiplexed data is transmitted or stored. In addition to the PCC encoded data, the multiplexing unit 4614 multiplexes other media such as video, audio, subtitles, applications, files, or reference time information. Also, the multiplexing unit 4614 may further multiplex sensor information or attribute information related to the point cloud data.

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

[0074] The inverse multiplexing unit 4623 extracts PCC-encoded data, other media, time information, etc. from the multiplexed data.

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

[0076] As the communication protocol, http, ftp, TCP, UDP, etc. are used. A PULL-type communication method may be used, or a PUSH-type communication method may be used.

[0077] Either wired transmission or wireless transmission may be used. As the wired transmission, Ethernet (registered trademark), USB, RS-232C, HDMI (registered trademark), or a coaxial cable, etc. are used. As the wireless transmission, wireless LAN, Wi-Fi (registered trademark), Bluetooth (registered trademark), or millimeter wave, etc. are used.

[0078] Also, as the broadcasting method, for example, DVB-T2, DVB-S2, DVB-C2, ATSC 3.0, or ISDB-S3, etc. are used.

[0079] FIG. 5 is a diagram showing the configuration of a first encoding unit 4630 which is an example of the encoding unit 4613 that performs encoding by 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 the point cloud data by the first encoding method. This first encoding unit 4630 includes a position information encoding unit 4631, an attribute information encoding unit 4632, an additional information encoding unit 4633, and a multiplexing unit 4634.

[0080] The first encoding unit 4630 has the feature of performing encoding while being aware of the three-dimensional structure. Also, the first encoding unit 4630 has the feature 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).

[0081] The point cloud data is PCC point cloud data such as a PLY file or PCC point cloud data generated from sensor information, and includes position information (Position), attribute information (Attribute), and other additional information (MetaData). The position information is input to 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.

[0082] 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 an octree, the target space is divided into eight nodes (sub-spaces), and 8-bit information (occupancy code) indicating whether each node contains a point cloud is generated. Also, a node containing a point cloud is further divided into eight nodes, and 8-bit information indicating whether each of the eight nodes contains a point cloud is generated. This process is repeated until it reaches a threshold of the number of point clouds included in a predetermined hierarchy or node.

[0083] 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 a target point (target node) to be processed based on the octree structure generated by the position information encoding unit 4631. For example, the attribute information encoding unit 4632 refers to a node among the 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.

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

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

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

[0087] 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 encoded data (encoded stream) encoded by the first encoding method using the first encoding method. This first decoding unit 4640 includes a demultiplexing unit 4641, a position information decoding unit 4642, an attribute information decoding unit 4643, and an additional information decoding unit 4644.

[0088] An encoded stream (Compressed Stream), which is encoded data, is input to the first decoding unit 4640 from a processing unit in a system layer (not shown).

[0089] The demultiplexing unit 4641 separates encoded position information (Compressed Geometry), encoded attribute information (Compressed Attribute), encoded additional information (Compressed MetaData), and other additional information from the encoded data.

[0090] The position information decoding unit 4642 generates position information by decoding the encoded position information. For example, the position information decoding unit 4642 restores the position information of the point cloud represented by three-dimensional coordinates from the encoded position information represented by an N-ary tree structure such as an octree.

[0091] The attribute information decoding unit 4643 decodes the encoded attribute information based on the configuration information generated by the position information decoding unit 4642. For example, the attribute information decoding unit 4643 determines a reference point (reference node) to be 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 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.

[0092] 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 a 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 a point cloud is included in the reference node) to determine a decoding parameter. For example, the decoding parameter is a quantization parameter in the inverse quantization process or a context in the arithmetic decoding, etc.

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

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

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

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

[0097] The point cloud data is PCC point cloud data such as a PLY file or PCC point cloud data generated from sensor information, and includes position information (Position), attribute information (Attribute), and other additional information (MetaData).

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

[0099] The position image generation unit 4652 generates a position image (Geometry Image) based on the position information and the map information generated by the additional information generation unit 4651. This position image is, for example, a distance image in which the distance (Depth) is indicated as a pixel value. Note that this distance image may be an image obtained by viewing a plurality of point clouds from one viewpoint (an image obtained by projecting a plurality of point clouds onto one two-dimensional plane), or may be a plurality of images obtained by viewing a plurality of point clouds from a plurality of viewpoints, or may be one image obtained by integrating these plurality of images.

[0100] The attribute image generation unit 4653 generates an attribute image based on the attribute information and the map information generated by the additional information generation unit 4651. This attribute image is, for example, an image in which the attribute information (e.g., color (RGB)) is indicated as a pixel value. Note that this image may be an image obtained by viewing a plurality of point clouds from one viewpoint (an image obtained by projecting a plurality of point clouds onto one two-dimensional plane), or may be a plurality of images obtained by viewing a plurality of point clouds from a plurality of viewpoints, or may be one image obtained by integrating these plurality of images.

[0101] The video encoding unit 4654 generates an encoded position image (Compressed Geometry Image) and an encoded attribute image (Compressed Attribute Image) that 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 or HEVC, etc.

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

[0103] 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 in a system layer (not shown).

[0104] Next, a second decoding unit 4660, which is an example of a decoding unit 4624 that decodes using the second encoding method, will be described. FIG. 11 is a diagram showing the configuration of the second decoding unit 4660. FIG. 12 is a block diagram of the second decoding unit 4660. The second decoding unit 4660 generates point cloud data by decoding encoded data (encoded stream) encoded using the second encoding method using the second encoding method. This second decoding unit 4660 includes a demultiplexing unit 4661, a video decoding unit 4662, an additional information decoding unit 4663, a position information generation unit 4664, and an attribute information generation unit 4665.

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

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

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

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

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

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

[0111] Hereinafter, the 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 for transmission or storage.

[0112] The multiplexing method and the file format have functions for multiplexing various encoded data for transmission or storage. 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 the encoded data is stored in a data structure called an NAL unit, and the NAL unit is stored in ISOBMFF.

[0113] On the other hand, currently, a first encoding method (Codec1) and a second encoding method (Codec2) are being studied as encoding methods for point cloud data, but 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, and storage in the encoding unit cannot be performed as it is.

[0114] In the following, unless a specific encoding method is described, it shall indicate either the first encoding method or the second encoding method.

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

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

[0117] 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 collection of boxes of various types combined is a file.

[0118] Figure 14 is a diagram showing the basic structure (file) of ISOBMFF. The file of ISOBMFF 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.

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

[0120] Figure 15 is a diagram showing the protocol stack when storing NAL units common to the PCC codec in an ISOBMFF file. Here, 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 define storage methods (Carriage of Codec1, Carriage of Codec2) according to each codec.

[0121] Next, a method for storing a common PCC NAL unit that supports multiple PCC codecs into an ISOBMFF file will be described. FIG. 16 is a diagram showing an example of storing a common PCC NAL unit into an ISOBMFF file in the storage method of Codec1 (Carriage of Codec1). FIG. 17 is a diagram showing an example of storing a common PCC NAL unit into an ISOBMFF file in the storage method of Codec2 (Carriage of Codec2).

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

[0123] Here, pcc1 indicates that Codec1 (the first encoding method) of PCC is used. pcc2 indicates that Codec2 (the second encoding method) of PCC 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).

[0124] Hereinafter, a method for storing a NAL unit into an ISOBMFF file will be described. The multiplexing unit analyzes the NAL unit header and writes pcc1 to the ftyp of ISOBMFF when pcc_codec_type = Codec1.

[0125] Also, the multiplexing unit analyzes the NAL unit header and writes pcc2 to the ftyp of ISOBMFF when pcc_codec_type = Codec2.

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

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

[0128] By this storage method, by analyzing the ftyp included in the file in the demultiplexing unit (system layer), it becomes possible to determine whether the PCC encoded data is encoded by the first encoding method or the second encoding method. 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 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 this storage method, a common data format can be used without setting different data (file) formats for the first encoding method and the second encoding method.

[0129] In addition, when codec identification information is shown in system layer metadata such as ftyp in ISOBMFF, the multiplexing unit may store the NAL unit with the pcc_nal_unit_type removed in the ISOBMFF file.

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

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

[0132] 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 the 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.

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

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

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

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

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

[0138] Next, the first multiplexing unit 4710 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_nal_unit_type (S4705). Then, the first multiplexing unit 4710 creates an ISOBMFF file including the above ftyp and the above box (S4706).

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

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

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

[0142] On the other 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).

[0143] 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 a desired NAL unit in a file by identifying the codec type of the NAL unit. Note that when 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 identify the codec type (the first encoding method or the second encoding method) using the identification information of the PCC codec included in addition to the NAL unit header in steps S4701 and S4711.

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

[0145] 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 ISOBMFF file (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 data encoded by the second encoding method (S4723). Also, 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).

[0146] On the other hand, when the codec indicated by the 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.

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

[0148] 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 the 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.

[0149] The second decoding unit 4660 identifies data on the assumption that the pcc_nal_unit_type included in the NAL unit header is an identifier of an 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).

[0150] On the other 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).

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

[0152] Also, when the 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 the pcc_nal_unit_type to the NAL unit and then output it to the first decoding unit 4640 or the second decoding unit 4660.

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

[0154] The encoding unit 4670 encodes point cloud data using either one or both of the first encoding method and the second encoding method. The encoding unit 4670 may switch the encoding method (the first encoding method and the second encoding method) in units of point cloud data or in units of frames. Further, the encoding unit 4670 may switch the encoding method in units that can be encoded.

[0155] The encoding unit 4670 generates encoded data (encoded stream) including the identification information of the PCC codec.

[0156] The third multiplexing unit 4750 includes a file conversion unit 4751. The file conversion unit 4751 converts the NAL unit output from the encoding 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 encoded data is data encoded by the first encoding method, data encoded by the second encoding method, or data encoded 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 encoded by both methods, pcc3 is described in the ftyp.

[0157] When the encoding unit 4670 describes the identification information of the PCC codec in addition to the NAL unit, the file conversion unit 4751 may use the identification information to determine the PCC codec (encoding method).

[0158] FIG. 27 is a diagram showing the configurations of the third demultiplexing unit 4760 and the decoding unit 4680 according to this embodiment.

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

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

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

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

[0163] First, the third multiplexing unit 4750 determines whether the codec used is the first encoding method, the second encoding method, or both the first encoding method and the second encoding method by analyzing the pcc_codec_type included in the NAL unit header (S4741).

[0164] 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 data encoded by the second encoding method is stored in the file in the ftyp.

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

[0166] On the other 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 the ftyp (S4747). That is, the third multiplexing unit 4750 describes information indicating that the data encoded by the first encoding method is stored in the file in the ftyp.

[0167] 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 (S4748). Then, the third multiplexing unit 4750 creates an ISOBMFF file including the above ftyp and the above box (S4746).

[0168] 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 the ftyp (S4749). That is, the third multiplexing unit 4750 describes information indicating that the data encoded by both encoding methods is stored in the file in the ftyp.

[0169] 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 (S4750). Then, the third multiplexing unit 4750 creates an ISOBMFF file including the above ftyp and the above box (S4746).

[0170] Figure 29 is a flowchart showing the processing by the third de-multiplexing unit 4760 and the decoding unit 4680. First, the third de-multiplexing unit 4760 analyzes the ftyp included in the ISOBMFF file (S4761). When the codec indicated by the ftyp is the second encoding method (pcc2) (Yes in S4762 and the second encoding method in S4763), the third de-multiplexing 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 de-multiplexing unit 4760 transmits the result of the determination to the decoding unit 4680.

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

[0172] On the other hand, when the codec indicated by the ftyp is the first encoding method (pcc1) (Yes in S4762 and the first encoding method in S4763), the third de-multiplexing 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 de-multiplexing unit 4760 transmits the result of the determination to the decoding unit 4680.

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

[0174] On the other hand, when it is shown that both encoding methods are used in the 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.

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

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

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

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

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

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

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

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

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

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

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

[0186] According to this, in an apparatus that processes a file generated by the three-dimensional data storage device, it is possible to 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 of the apparatus or speed up the processing.

[0187] 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 the encoded data of 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 single information or different information.

[0188] According to this, in an apparatus that processes a file generated by the three-dimensional data storage device, it is possible to early 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 of the apparatus or speed up the processing.

[0189] For example, the first encoding method is a method (GPCC) of encoding position information representing the position of point cloud data by 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.

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

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

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

[0193] 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). Also, 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.

[0194] For example, the three-dimensional data acquisition device refers to the information to determine whether the data stored in the file is data in which point cloud data is encoded. 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).

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

[0196] 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 whether 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 by different pieces of information.

[0197] According to this, the three-dimensional data acquisition device can early 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.

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

[0199] For example, the first encoding method is a method (GPCC) that encodes position information representing the position of point cloud data in 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.

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

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

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

[0203] 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, but the same method may also be used for a static object (three-dimensional point cloud data at an arbitrary time).

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

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

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

[0207] FIG. 33 is a diagram showing a configuration example of the 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 source of the arrow depends on the data at the destination of the arrow. That is, the decoding device decodes the data at the destination of the arrow and uses the decoded data to decode the data at the source of the arrow. In other words, to depend means that the data at the destination is referenced (used) in the processing (such as encoding or decoding) of the data at the source of the dependency.

[0208] 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, or the time of the frame, etc.

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

[0210] Also, the encoded position data consisting 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 within the position sequence. The position sequence depends on the position SPS.

[0211] 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). In FIG. 33, an example where there are attribute X and attribute Y is shown, 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).

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

[0213] Also, the encoded attribute data composed of a plurality of frames is defined as an 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 of a plurality of frames in the attribute sequence. The attribute sequence depends on the attribute SPS.

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

[0215] Also, FIG. 33 shows an example where there are two types of attribute information (attribute X and attribute Y). When there are two types of attribute information, for example, two encoding units generate their respective data and metadata. Also, for example, an attribute sequence is defined for each type of attribute information, and an attribute SPS is generated for each type of attribute information.

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

[0217] Next, the generation process of additional information (metadata) will be described. The encoding unit 4801 generates a PCC stream PS (also referred to as stream PS), which is a parameter set for the entire PCC stream. The encoding unit 4801 stores in the stream PS parameters that can be 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.

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

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

[0220] 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. Also, the access unit header includes parameters commonly used for the data included in the access unit, such as parameters related to the decoding of the encoded data.

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

[0222] Next, the generation of the 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. Also, the GOP header includes parameters commonly used for the data included in the GOP, such as parameters related to the decoding of the encoded data.

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

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

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

[0226] Note that two or more PCC frames may be assigned to one access unit, or multiple random access units may be assigned to one GOF.

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

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

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

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

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

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

[0233] Note that when the destination or 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.

[0234] 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 for the encoded data. FIG. 35 is a diagram showing an example of the semantics of pcc_nal_unit_type.

[0235] As shown in FIG. 35, when pcc_codec_type is 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. Also, the values 11 and later are assigned for reserve in Codec1.

[0236] 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 later are assigned for the reserve of Codec2.

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

[0238] The multiplexing unit 4802 transmits NAL units in units of GOF or AU. The multiplexing unit 4802 arranges a GOF header at the head of the GOF and an AU header at the head of the AU.

[0239] 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 decoder can decode from the next AU.

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

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

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

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

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

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

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

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

[0248] 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 of following 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 the pcc_nal_unit_type.

[0249] Hereinafter, a modification example of the present embodiment will be described. 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.

[0250] 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. Or, 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. Or, 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 one or both of the lower-level PS and the higher-level PS. Or, the lower-level PS may be merged into the higher-level PS. Or, when the lower-level PS and the higher-level PS overlap, the multiplexing unit 4802 may omit the transmission of either one.

[0251] Note that the encoding unit 4801 or the multiplexing unit 4802 may divide the data into slices or tiles, etc., and transmit the divided data. The divided data includes information for identifying the divided data, and the 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.

[0252] (Embodiment 5) Hereinafter, a method for dividing point cloud data will be described. FIG. 37 is a diagram showing an example of slice and tile division.

[0253] 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 attribute information that constitute a point, but divides the position information and attribute information together. That is, the three-dimensional data encoding device performs slice division so that the position information and attribute information at any 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 points corresponding to the position information after slice division and the three-dimensional points corresponding to the attribute information are included in the same slice.

[0254] Also, the three-dimensional data encoding device generates slice additional information, which is additional information related to the number of divisions and the division method during 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.

[0255] Next, the method of tile division will be described. The three-dimensional data encoding device divides the data divided by slice 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.

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

[0257] Also, 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.

[0258] 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. In addition, the tile addition information includes information indicating the number of divisions, the division type, and the like.

[0259] 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 to be used according to the point cloud data.

[0260] 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 objects. 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.

[0261] 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 addition information (metadata).

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

[0263] 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 greater than a predetermined threshold value. When the data volume of the slice is greater 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.

[0264] 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 (not exceeding a predetermined value). Thereby, the processing volume per tile in the decoding device becomes constant, and parallel processing in the decoding device becomes easy.

[0265] 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 greater than the processing volume of the attribute information, the number of divisions of the position information is made larger than the number of divisions of the attribute information.

[0266] Also, for example, when, depending on the content, it is possible to quickly decode and display the position information and then slowly decode and display the attribute information in the decoding device, 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 for the position information, so that the processing of the position information can be speeded up compared to the processing of the attribute information.

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

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

[0269] FIG. 38 is a diagram showing an example of a pattern of slice and tile division. DU in the figure is a data unit (DataUnit) and indicates the 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.

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

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

[0272] (Embodiment 6) An example of performing slice division after tile division will be described below. In an autonomous application such as automatic driving of a vehicle, point cloud data of an area around the vehicle or an area in the traveling direction of the vehicle is required, rather than point cloud data of all areas. 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.

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

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

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

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

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

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

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

[0280] Note that in FIG. 39, examples where the number of the position information encoding units 5012 and the attribute information encoding units 5013 is two each are shown, but the number of the position information encoding units 5012 and the attribute information encoding units 5013 may each be one, 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.

[0281] Next, the decoding process will be described. FIG. 40 is a block diagram showing the configuration of a 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.

[0282] 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 the encoded data (encoded stream).

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

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

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

[0286] 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 generates point cloud data corresponding to a tile by combining the decoded point cloud data for a slice using the slice additional information. Next, the combining unit 5025 restores the original point cloud data by combining the point cloud data corresponding to the tile using the tile additional information.

[0287] Note that in FIG. 39, examples in which the numbers of the position information decoding unit 5022 and the attribute information decoding unit 5023 are each two are shown, but the numbers of the position information decoding unit 5022 and the attribute information decoding unit 5023 may each be one, 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.

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

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

[0290] FIG. 42 is a diagram showing an example of a tile and a slice. The configuration of the slice may be different between tiles. For example, the configuration of the tile or the slice may be optimized based on the data amount. Or, the configuration of the tile or the slice may be optimized based on the decoding speed.

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

[0292] 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 an application, different methods of slice division or methods of tile division may be used.

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

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

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

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

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

[0298] The position information slice division 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 division 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.

[0299] The attribute information slice division 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 division 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.

[0300] 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, the data of the plurality of tiles is transmitted to the three-dimensional data decoding device in order from the data with high importance among the data of the plurality of tiles. The tile shape may be selected from a plurality of shapes according to the situation.

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

[0302] 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. In the flyover part, the height of the tile is set higher than that of ordinary roads so that the tile includes the flyover part.

[0303] 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 top view. When the vehicle needs the point cloud data of the surrounding area, the three-dimensional data encoding device transmits the point cloud data of the area of the cylinder (circle in top view) around the vehicle to the vehicle.

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

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

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

[0307] For example, not only the example of dividing with square tiles without overlapping as described above and the example of dividing with overlapping circular tiles, but the three-dimensional data encoding device may also 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.

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

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

[0310] 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 is highly likely that the tiles in the forward direction are set to a large size, and since it is less likely that the vehicle will move to the side of the automobile, the side tiles may be set to a size smaller than the tiles in the forward direction.

[0311] 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 an instruction from the user.

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

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

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

[0315] 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, without providing a server corresponding to the tile, the antenna or sensor may be directly connected to the centralized management server.

[0316] Note that the target range of the antenna or sensor may vary depending on the power of the radio wave, the difference in equipment, 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 or PCC frames may be assigned instead of tiles.

[0317] Next, a method of dividing a tile into slices will be described. The encoding efficiency can be improved by assigning similar objects to the same slice.

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

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

[0320] Note that data may overlap in multiple 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.

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

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

[0323] 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 the 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 the dependency relationship information based on the configuration information corresponding to a plurality of divided shapes.

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

[0325] 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 origin 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.

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

[0327] 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 shows the dependency information of attribute information A t2s1

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

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

[0330] 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 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. In addition, the three-dimensional data encoding device may send out the additional information and the dependency information before the data.

[0331] 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 tiles. For example, the decoding order of tiles is arbitrary. That is, there may be no dependency between tiles.

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

[0333] ​ The position information slice combiner 5041 generates a plurality of tile position information by combining a plurality of divided position information using 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 attribute slice additional information.

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

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

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

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

[0338] The encoded data includes a header and a payload. The header includes identification information for specifying the data included in the payload. This identification information includes, for example, the type of slice division or tile division (slice_type, tile_type), index information for specifying a slice or tile (slice_idx, tile_idx), position information of the data (slice or tile), or the address of the data. The index information for specifying a slice is also referred to as a slice index (SliceIndex). The index information for specifying 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.

[0339] Also, 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 dependency to the destination of dependency. For example, the header of the destination data includes identification information for specifying the data. The header of the source data includes identification information indicating the destination. Note that if the identification information for specifying the data, 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.

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

[0341] 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, and the type of splitting, etc. 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 data volume or processing volume, etc. Note that the splitting method may be predetermined.

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

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

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

[0345] 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 sends out the generated encoded data.

[0346] FIG. 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 slice splitting. Further, the splitting method may include the number of splits and the type of split when performing tile splitting or slice splitting.

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

[0348] 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 (S5024) by combining the plurality of split position information and the plurality of split attribute information in their respective methods based on the position slice additional information and the attribute slice additional information. 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.

[0349] When it is shown by the additional information that tile splitting is performed (Yes in S5025), the three-dimensional data decoding device generates position information and attribute information (S5026) 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. 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.

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

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

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

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

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

[0355] Overlap information (type_of_overlap) is included in tile addition 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.

[0356] 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, the 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, the information may indicate the diameter or radius of the circle.

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

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

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

[0360] 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 every plurality of frames).

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

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

[0363] Also, the tile 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 tile additional information may be stored in the header of the encoded data. Also, the tile additional information may be stored in the header of the NAL unit.

[0364] Also, all or part of the tile additional 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 additional information is used for position information and attribute information, the tile additional 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 additional information may be included in the header of the position information, and the tile additional information may not be included in the header of the attribute information. In this case, the three-dimensional data decoding device determines, for example, that the attribute information of the dependency source belongs to the same tile as the tile of the position information of the dependency destination.

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

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

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

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

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

[0370] 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 transmits the generated slice addition information to the three-dimensional data decoding device.

[0371] 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), overlap flag (slice_overlap_flag), overlap information (type_of_overlap), number of slices (slice_number), slice position information (global_position, relative_position), and slice size information (slice_bounding_box_size).

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

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

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

[0375] Slice position information (global_position, relative_position) and slice size information (slice_bounding_box_size) are information regarding the area 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.

[0376] 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 then send it out.

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

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

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

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

[0381] 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, performs processing (for example, smoothing or filtering) using the plurality of decoded data, and may generate point cloud data. This may enable highly accurate decoding.

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

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

[0384] If the tile splitting method determined in step S5031 is a splitting method based on the 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 the top view (top_view) (S5033).

[0385] On the other hand, if the tile splitting method determined in step S5031 is other than the splitting method based on the 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 the top view (top_view) (S5034).

[0386] Also, if the shape of the tile viewed from the top 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 viewed from the top is a square (S5036). On the other hand, if the shape of the tile viewed from the top 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 viewed from the top is a circle (S5037).

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

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

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

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

[0391] 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 point cloud data from the point cloud data for each tile based on the tile division method and the tile shape indicated by the tile addition information (S5054).

[0392] 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 specifies 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 point cloud data from the point cloud data for each tile based on the tile division method, the tile shape, and the overlapping information indicated by the tile addition information (S5056).

[0393] Hereinafter, a modification example related to a slice and the like 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 additional 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.

[0394] 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 finished early. 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 priority of decoding in the application. For example, when the priority of decoding dynamic information is high, the three-dimensional data encoding device may transmit the slice data in order from the slices grouped by dynamic information.

[0395] Also, when the order of the encoded data and the order of the priority of decoding 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.

[0396] The application (three-dimensional data decoding device) requests the server (three-dimensional data encoding device) to transmit the slice including the desired data. The server transmits the slice data required by the application and does not have to transmit unnecessary slice data.

[0397] The application requests the server to transmit the tile including the desired data. The server transmits the tile data required by the application and does not have to transmit unnecessary tile data.

[0398] 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 sub-spaces (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 bit stream including the plurality of encoded data and first information (for example, topview_shape) indicating the shapes of the plurality of sub-spaces (S5062).

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

[0400] For example, the shape is a two-dimensional shape or a three-dimensional shape of the plurality of sub-spaces. For example, the shape is the shape of the plurality of sub-spaces viewed from above. That is, the first information indicates the shape of the sub-space viewed from a specific direction (for example, the upward direction). In other words, the first information indicates the shape of the sub-space viewed from above. For example, the shape is a rectangle or a circle.

[0401] For example, the bit stream includes second information (for example, tile_overlap_flag) indicating whether or not the plurality of sub-intervals overlap.

[0402] According to this, since the three-dimensional data encoding device can overlap the sub-spaces, the sub-spaces can be generated without complicating the shapes of the sub-spaces.

[0403] For example, the bit stream includes third information (for example, type_of_divide) indicating whether the dividing method of the plurality of sub-intervals uses a top view.

[0404] For example, the bit stream includes fourth information (for example, tile_height) indicating at least one of the height, width, depth, and radius of the plurality of sub-intervals.

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

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

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

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

[0409] Also, 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.

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

[0411] For example, the bitstream includes second information (e.g., tile_overlap_flag) indicating whether the plurality of subintervals overlap. In restoring the target space, the three-dimensional data decoding device further uses the second information to combine the plurality of subspaces. For example, the three-dimensional data decoding device uses the second information to determine whether the subspaces overlap. When the subspaces overlap, the three-dimensional data decoding device identifies the overlapping region and performs a predetermined correspondence on the identified overlapping region.

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

[0413] 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 subintervals. In restoring the target space, the three-dimensional data decoding device further uses the fourth information to combine the plurality of subspaces. For example, the three-dimensional data decoding device can grasp the position and range of each subspace in the target space by recognizing the height of the plurality of subspaces using the fourth 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.

[0414] For example, the bitstream includes fifth information (e.g., global_position or relative_position) indicating the position of each of the plurality of subintervals. In restoring the target space, the three-dimensional data decoding device further uses the fifth information to combine the plurality of subspaces. For example, the three-dimensional data decoding device can grasp the position of each subspace in the target space by recognizing the positions of the plurality of subspaces using the fifth information. The three-dimensional data decoding device can combine the plurality of subspaces based on the grasped positions of the plurality of subspaces.

[0415] For example, the bitstream includes sixth information (e.g., tile_number) indicating the number of the plurality of subintervals. In restoring the target space, the three-dimensional data decoding device further uses the sixth information to combine the plurality of subspaces.

[0416] For example, the bitstream includes seventh information indicating the interval between the plurality of subintervals. In restoring the target space, the three-dimensional data decoding device further uses the seventh information to combine the plurality of subspaces. For example, the three-dimensional data decoding device can recognize the interval between the plurality of subspaces by using the seventh information, thereby grasping the position and range of each subspace within the target space. The three-dimensional data decoding device can combine the plurality of subspaces based on the grasped positions and ranges of the plurality of subspaces.

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

[0418] (Embodiment 7) Hereinafter, quantization parameters will be described.

[0419] Slices and tiles are used to divide point cloud data based on the characteristics and positions of the point cloud data. Here, due to hardware limitations and real-time processing requirements, the quality required for each divided point cloud data may be different. For example, when dividing and encoding by slices for each object, slice data including plants is not so important, so the resolution (quality) can be reduced by quantization. On the other hand, important slice data can have a high resolution (quality) by setting the quantization value to a low value. A quantization parameter is used to enable such control of the quantization value.

[0420] Here, the data to be quantized, the scale used for quantization, and the quantized data which is the result calculated by quantization are represented by the following (Equation G1) and (Equation G2).

[0421] Quantized data = data / scale (Equation G1)

[0422] Data = quantized data * scale (Equation G2)

[0423] FIG. 65 is a diagram for explaining the processing of a quantization unit 5323 that quantizes data and an inverse quantization unit 5333 that inverse quantizes the quantized data.

[0424] The quantization unit 5323 quantizes data using a scale, that is, calculates quantized data in which the data is quantized by performing a process using Equation G1.

[0425] The inverse quantization unit 5333 inverse quantizes the quantized data using a scale, that is, calculates data in which the quantized data is inverse quantized by performing a process using Equation G2.

[0426] Also, the scale and the quantization value (QP (Quantization Parameter) value) are represented by the following (Equation G3).

[0427] Quantization value (QP value) = log(scale) (Equation G3)

[0428] Quantization value (QP value) = default value (reference value) + quantization delta (difference information) (Equation G4)

[0429] Also, these parameters are collectively referred to as quantization parameters (Quantization Parameter).

[0430] For example, as shown in FIG. 66, the quantization value is a value based on a default value, and is calculated by adding a quantization delta to the default value. When the quantization value is smaller than the default value, the quantization delta is a negative value. When the quantization value is larger than the default value, the quantization delta is a positive value. When the quantization value is equal to the default value, the quantization delta is 0. When the quantization delta is 0, the quantization delta may be omitted.

[0431] The encoding process will be described. FIG. 67 is a block diagram showing the configuration of a first encoding unit 5300 included in the three-dimensional data encoding apparatus according to the present embodiment. FIG. 68 is a block diagram showing the configuration of a dividing unit 5301. FIG. 69 is a block diagram showing the configurations of a position information encoding unit 5302 and an attribute information encoding unit 5303 according to the present embodiment.

[0432] The first encoding unit 5300 generates encoded data (encoded stream) by encoding point cloud data by a first encoding method (GPCC (Geometry based PCC)). The first encoding unit 5300 includes a dividing unit 5301, a plurality of position information encoding units 5302, a plurality of attribute information encoding units 5303, an additional information encoding unit 5304, and a multiplexing unit 5305.

[0433] The dividing unit 5301 generates a plurality of divided data by dividing the point cloud data. Specifically, the dividing unit 5301 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 dividing unit 5301 divides the position information into a plurality of divided position information, and divides the attribute information into a plurality of divided attribute information. Further, the dividing unit 5301 generates additional information regarding the division.

[0434] As shown in FIG. 68, the splitting unit 5301 includes a tile splitting unit 5311 and a slice splitting unit 5312. For example, the tile splitting unit 5311 splits the point cloud into tiles. The tile splitting unit 5311 may determine quantization values to be used for each of the split tiles as tile additional information.

[0435] The slice splitting unit 5312 further splits the tiles obtained by the tile splitting unit 5311 into slices. The slice splitting unit 5312 may determine quantization values to be used for each of the split slices as slice additional information.

[0436] The plurality of position information encoding units 5302 generate a plurality of encoded position information by encoding a plurality of split position information. For example, the plurality of position information encoding units 5302 perform parallel processing on the plurality of split position information.

[0437] As shown in FIG. 69, the position information encoding unit 5302 includes a quantization value calculation unit 5321 and an entropy encoding unit 5322. The quantization value calculation unit 5321 acquires a quantization value (quantization parameter) of the split position information to be encoded. The entropy encoding unit 5322 calculates quantization position information by quantizing the split position information using the quantization value (quantization parameter) acquired by the quantization value calculation unit 5321.

[0438] The plurality of attribute information encoding units 5303 generate a plurality of encoded attribute information by encoding a plurality of split attribute information. For example, the plurality of attribute information encoding units 5303 perform parallel processing on the plurality of split attribute information.

[0439] As shown in FIG. 69, the attribute information encoding unit 5303 includes a quantization value calculation unit 5331 and an entropy encoding unit 5332. The quantization value calculation unit 5331 acquires a quantization value (quantization parameter) of the split attribute information to be encoded. The entropy encoding unit 5332 calculates quantization attribute information by quantizing the split attribute information using the quantization value (quantization parameter) acquired by the quantization value calculation unit 5331.

[0440] The additional information encoding unit 5304 generates encoded additional information by encoding the additional information included in the point cloud data and the additional information regarding data division generated during division by the division unit 5301.

[0441] The multiplexing unit 5305 generates encoded data (encoded stream) by multiplexing a plurality of encoded position information, a plurality of encoded attribute information, and the encoded additional information, and sends out the generated encoded data. The encoded additional information is used during decoding.

[0442] Note that in FIG. 67, examples where the number of the position information encoding unit 5302 and the attribute information encoding unit 5303 is two each are shown, but the number of the position information encoding unit 5302 and the attribute information encoding unit 5303 may each be one, 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 the CPU, or may be processed in parallel by the cores of a plurality of chips, or may be processed in parallel by the plurality of cores of a plurality of chips.

[0443] Next, the decoding process will be described. FIG. 70 is a block diagram showing the configuration of the first decoding unit 5340. FIG. 71 is a block diagram showing the configurations of the position information decoding unit 5342 and the attribute information decoding unit 5343.

[0444] The first decoding unit 5340 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 5340 includes a demultiplexing unit 5341, a plurality of position information decoding units 5342, a plurality of attribute information decoding units 5343, an additional information decoding unit 5344, and a combining unit 5345.

[0445] The demultiplexing unit 5341 generates a plurality of encoded position information, a plurality of encoded attribute information, and the encoded additional information by demultiplexing the encoded data (encoded stream).

[0446] A plurality of position information decoding units 5342 generate a plurality of quantized position information by decoding the plurality of encoded position information. For example, the plurality of position information decoding units 5342 process the plurality of encoded position information in parallel.

[0447] As shown in FIG. 71, the position information decoding unit 5342 includes a quantization value calculation unit 5351 and an entropy decoding unit 5352. The quantization value calculation unit 5351 acquires the quantization value of the quantized position information. The entropy decoding unit 5352 calculates the position information by inverse quantizing the quantized position information using the quantization value acquired by the quantization value calculation unit 5351.

[0448] A plurality of attribute information decoding units 5343 generate a plurality of divided attribute information by decoding the plurality of encoded attribute information. For example, the plurality of attribute information decoding units 5343 process the plurality of encoded attribute information in parallel.

[0449] As shown in FIG. 71, the attribute information decoding unit 5343 includes a quantization value calculation unit 5361 and an entropy decoding unit 5362. The quantization value calculation unit 5361 acquires the quantization value of the quantized attribute information. The entropy decoding unit 5362 calculates the attribute information by inverse quantizing the quantized attribute information using the quantization value acquired by the quantization value calculation unit 5361.

[0450] A plurality of additional information decoding units 5344 generate additional information by decoding the encoded additional information.

[0451] The combining unit 5345 generates position information by combining a plurality of divided position information using the additional information. The combining unit 5345 generates attribute information by combining a plurality of divided attribute information using the additional information. For example, the combining unit 5345 first generates point cloud data corresponding to a tile by combining the decoded point cloud data for a slice using the slice additional information. Next, the combining unit 5345 restores the original point cloud data by combining the point cloud data corresponding to the tile using the tile additional information.

[0452] Note that, in FIG. 70, an example in which the numbers of the position information decoding unit 5342 and the attribute information decoding unit 5343 are each two is shown. However, the numbers of the position information decoding unit 5342 and the attribute information decoding unit 5343 may each be one, or may be three or more. Further, the plurality of divided data may be processed in parallel within the same chip like a plurality of cores in the CPU, may be processed in parallel by the cores of a plurality of chips, or may be processed in parallel by the plurality of cores of a plurality of chips.

[0453] [Method for Determining Quantization Parameter] FIG. 72 is a flowchart showing an example of a process related to the determination of a quantization value (Quantization Parameter value: QP value) in the encoding of position information (Geometry) or attribute information (Attribute).

[0454] The QP value is determined in consideration of the encoding efficiency for each data unit of the position information or each data unit of the attribute information constituting the PCC frame, for example. When the data unit is a divided tile unit or a divided slice unit, the QP value is determined for the divided data unit in consideration of the encoding efficiency of the divided data unit. Further, the QP value may be determined for the data unit before division.

[0455] As shown in FIG. 72, the three-dimensional data encoding device determines a QP value to be used for encoding position information (S5301). The three-dimensional data encoding device may determine the QP value for each of a plurality of divided slices based on a predetermined method. Specifically, the three-dimensional data encoding device determines the QP value based on the characteristics or quality of the position information data. For example, the three-dimensional data encoding device may determine, for each data unit, the density of the point cloud data, that is, the number of points per unit area belonging to the slice, and determine a value corresponding to the density of the point cloud data as the QP value. Alternatively, the three-dimensional data encoding device may determine a corresponding value as the QP value based on the number of points, the distribution of points, the bias of points, or a feature amount obtained from the point information, the number of feature points, or the recognized object of the point cloud data. Further, the three-dimensional data encoding device may determine an object in the position information of the map and determine the QP value based on the object based on the position information, or may determine the QP value based on information or a feature amount obtained by projecting the three-dimensional point cloud into two dimensions. The corresponding QP value may be stored in the memory in advance as a table associated with the density of the point cloud data, the number of points, the distribution of points, or the bias of points. Further, the corresponding QP value may be stored in the memory in advance as a table associated with a feature amount or the number of feature points obtained from the point information, or an object recognized based on the point information. Further, the corresponding QP value may be determined based on the result of simulating the coding rate and the like with various QP values when encoding the position information of the point cloud data.

[0456] Next, the three-dimensional data encoding device determines a reference value (default value) and difference information (quantization delta) of the QP value of the position information (S5302). Specifically, the three-dimensional data encoding device determines the reference value and the difference information to be transmitted using the determined QP value and a predetermined method, and sets (adds) the determined reference value and the difference information to at least one of the additional information and the header of the data.

[0457] Next, the three-dimensional data encoding device determines the QP value to be used for encoding the attribute information (S5303). The three-dimensional data encoding device may determine the QP value for each of the plurality of divided slices based on a predetermined method. Specifically, the three-dimensional data encoding device determines the QP value based on the characteristics or quality of the data of the attribute information. The three-dimensional data encoding device may determine the QP value based on the characteristics of the attribute information for each data unit, for example. The characteristics of color include, for example, luminance, chromaticity, saturation, their histograms, color continuity, and the like. When the attribute information is reflectance, it may be determined according to the information based on the reflectance. For example, when the three-dimensional data encoding device detects a face as an object from the point cloud data, it may determine a QP value of good quality for the point cloud data constituting the object detected as the face. In this way, the three-dimensional data encoding device may determine the QP value for the point cloud data constituting the object according to the type of the object.

[0458] Also, when there is a plurality of pieces of attribute information for a three-dimensional point, the three-dimensional data encoding device may independently determine the QP value based on each piece of attribute information for each piece of attribute information, or may determine the QP values of the plurality of pieces of attribute information based on any one of the pieces of attribute information, or may determine the QP values of the plurality of pieces of attribute information using the plurality of pieces of attribute information.

[0459] Next, the three-dimensional data encoding device determines a reference value (default value) and difference information (quantization delta) of the QP value of the attribute information (S5304). Specifically, the three-dimensional data encoding device determines the reference value and difference information to be transmitted using the determined QP value and a predetermined method, and sets (adds) the determined reference value and difference information to at least one of the additional information and the header of the data.

[0460] Then, the three-dimensional data encoding device quantizes and encodes the position information and the attribute information based on the determined position information and the QP value of the attribute information, respectively (S5305).

[0461] Note that, although an example in which the QP value of the position information is determined based on the position information and the QP value of the attribute information is determined based on the attribute information has been described, the present invention is not limited thereto. For example, the QP values of the position information and the attribute information may be determined based on the position information, may be determined based on the attribute information, or may be determined based on both the position information and the attribute information.

[0462] Note that the QP values of the position information and the attribute information may be adjusted in consideration of the balance between the quality of the position information and the quality of the attribute information in the point cloud data. For example, the QP values of the position information and the attribute information may be determined such that the quality of the position information is set high and the quality of the attribute information is set lower than the quality of the position information. For example, the QP value of the attribute information may be determined so as to satisfy a restricted condition that the QP value of the attribute information is equal to or higher than the QP value of the position information.

[0463] Also, the QP value may be adjusted so that the encoded data is encoded to fall within a predetermined rate range. For example, when the amount of encoded data is likely to exceed the predetermined rate in the encoding of the previous data unit, that is, when the difference to the predetermined rate is less than the first difference, the encoding quality may be adjusted so that the amount of encoded data of the data unit is less than the first difference. On the other hand, when the difference to the predetermined rate is larger than the second difference which is larger than the first difference and there is a sufficiently large difference, the encoding quality of the data unit may be adjusted to be improved. The adjustment between data units may be, for example, between PCC frames, between tiles, or between slices. The adjustment of the QP value of the attribute information may be adjusted based on the encoding rate of the position information.

[0464] Note that, in the flowchart in FIG. 72, the processing order of the processing related to the position information and the processing related to the attribute information may be reversed or may be parallel.

[0465] Note that in the flowchart of FIG. 72, the processing in units of slices is taken as an example, but in the case of processing in units of tiles or other data units, the processing can be performed in the same manner as in units of slices. That is, the slices in the flowchart of FIG. 72 can be read as tiles or other data units.

[0466] FIG. 73 is a flowchart showing an example of the decoding process of the position information and the attribute information.

[0467] As shown in FIG. 73, the three-dimensional data decoding device acquires a reference value and difference information indicating the QP value of the position information, and a reference value and difference information indicating the QP value of the attribute information (S5311). Specifically, the three-dimensional data decoding device analyzes either one or both of the transmitted metadata and the header of the encoded data to acquire the reference value and difference information for deriving the QP value.

[0468] Next, the three-dimensional data decoding device derives the QP value based on a predetermined method using the acquired reference value and difference information (S5312).

[0469] Then, the three-dimensional data decoding device acquires the quantized position information, and decodes the position information by inverse quantizing the quantized position information using the derived QP value (S5313).

[0470] Next, the three-dimensional data decoding device acquires the quantized attribute information, and decodes the attribute information by inverse quantizing the quantized attribute information using the derived QP value (S5314).

[0471] Next, the transmission method of the quantization parameter will be described.

[0472] FIG. 74 is a diagram for explaining a first example of the transmission method of the quantization parameter. (a) of FIG. 74 is a diagram showing an example of the relationship of the QP values.

[0473] In FIG. 74, Q G and Q Arepresents the absolute value of the QP value used for encoding the position information and the absolute value of the QP value used for encoding the attribute information, respectively. Q G is an example of a first quantization parameter used to quantize the position information of each of a plurality of three-dimensional points. Also, Δ(Q A , Q G ) represents the difference information indicating the difference from Q A used in the derivation of Q G . That is, Q A is derived using Q G and Δ(Q A , Q G ). In this way, the QP value is transmitted separately as a reference value (absolute value) and difference information (relative value). Also, in decoding, the desired QP value is derived from the transmitted reference value and difference information.

[0474] For example, in FIG. 74(a), the absolute value Q G and the difference information Δ(Q A , Q G ) are transmitted, and in decoding, as shown in the following (Equation G5), Q A is derived by adding Δ(Q A , Q G ) to Q G

[0475] Q A = Q G + Δ(Q A , Q G ) (Equation G5)

[0476] The method of transmitting the QP value when slicing and dividing the point cloud data composed of the position information and the attribute information using FIGS. 74(b) and (c) will be described. FIG. 74(b) is a diagram showing a first example of the relationship between the reference value and the difference information of each QP value. FIG. 74(c) is a diagram showing a first example of the transmission order of the QP value, the position information, and the attribute information.

[0477] ​The QP value is roughly divided into the QP value at the PCC frame unit (frame QP) and the QP value at the data unit (data QP) for each piece of position information and each piece of attribute information. The QP value at the data unit is the QP value used for encoding determined in step S5301 of FIG. 72.

[0478] Here, Q G , which is the QP value used for encoding the position information in the PCC frame unit, G is used as a reference value, and the QP value at the data unit is generated and transmitted as difference information indicating the difference from Q

[0479] Q G : The QP value for encoding the position information in the PCC frame... is transmitted as the reference value "1." using GPS. Q A : The QP value for encoding the attribute information in the PCC frame... is transmitted as difference information "2." indicating the difference from Q G using APS. Q Gs1 , Q Gs2 : The QP value for encoding the position information in the slice data... is transmitted as difference information "3." and "5." indicating the difference from Q G using the header of the encoded data of the position information. Q As1 , Q As2 : The QP value for encoding the attribute information in the slice data... is transmitted as difference information "4." and "6." indicating the difference from Q A using the header of the encoded data of the attribute information.

[0480] Note that the information used for deriving the frame QP is described in the metadata (GPS, APS) related to the frame, and the information used for deriving the data QP is described in the metadata (header of the encoded data) related to the data.

[0481] In this way, the data QP is generated and transmitted as difference information indicating the difference from the frame QP. Therefore, the data volume of the data QP can be reduced.

[0482] The first decoding unit 5340 refers to the metadata indicated by the arrow in Fig. 74(c) in each encoded data, and acquires the reference value and the difference information corresponding to the encoded data. Then, the first decoding unit 5340 derives the QP value corresponding to the encoded data to be decoded based on the acquired reference value and difference information.

[0483] The first decoding unit 5340 acquires, for example, the reference information "1." and the difference information "2.", "6." indicated by the arrow in Fig. 74(c) from the metadata or the header, and adds the difference information "2." and "6." to the reference information "1." as shown in the following (Equation G6) to derive s2 the QP value of A.

[0484] Q AS2 =Q G +Δ(Q A ,Q G )+Δ(Q As2 ,Q A ) (Equation G6)

[0485] Next, an example of dividing into slices after dividing the position information and the attribute information into two for each tile will be described with reference to Fig. 75. Fig. 75 is a diagram for explaining a second example of the method for transmitting quantization parameters. Fig. 75(a) is a diagram showing a second example of the relationship between the reference value and the difference information of each QP value. Fig. 75(b) is a diagram showing a second example of the transmission order of the QP value, the position information, and the attribute information. Fig. 75(c) is a diagram for explaining the intermediate generated value of the difference information in the second example.

[0486] When dividing into a plurality of slices after dividing into a plurality of tiles, as shown in Fig. 75(c), after dividing into tiles, the QP value (Q At1 ) and the difference information Δ(Q At1 ,Q A ) for each tile are generated as intermediate generated values. Then, after dividing into slices, the QP value (Q At1s1 ,Q At1s2 ) and the difference information (Δ(Q At1s1 ,QAt1 ), Δ(Q At1s2 , Q At1 ) is generated.

[0487] In this case, for example, the difference information "4." in Fig. 75(a) is derived by the following (Equation G8).

[0488] Δ(Q At1s1 , Q A ) = Δ(Q At1 , Q A ) + Δ(Q At1s1 , Q At1 ) (Equation G8)

[0489] The first decoding unit 5340, for example, when decoding the attribute information A of slice 1 in tile 2, obtains the reference information "1." and the difference information "2.", "8." indicated by the arrows in Fig. 75(b) from the metadata or the header, and adds the difference information "2.", "8." to the reference information "1." as shown in the following (Equation G9) to derive the QP value of the attribute information A t2s1 . t2s1

[0490] Q At2s1 = Q G + Δ(Q At2s1 , Q A ) + Δ(Q A , Q G ) (Equation G9)

[0491] (Embodiment 8) In this embodiment, the three-dimensional data encoding device applies quantization to the three-dimensional position information of the input three-dimensional point cloud and encodes it in an octree structure. At this time, due to quantization, point clouds with the same three-dimensional position but different attribute information such as color or reflectance (hereinafter referred to as duplicated points) are generated. The three-dimensional data encoding device adds information for controlling how to encode such duplicated points as leaf information of the octree to the header. As a result, the three-dimensional data decoding device can correctly decode the leaf information. Here, the fact that the three-dimensional positions are the same due to quantization means that, as in the case of points A and B shown in FIG. 76, the original three-dimensional positions are in close positions, and the values of the three-dimensional positions become the same after the three-dimensional position information is quantized.

[0492] For example, the three-dimensional data encoding device adds a duplicated point merge flag (MergeDuplicatedPointFlag), which is a flag for controlling whether to merge duplicated points, to the header information. FIG. 77 is a diagram schematically showing the processing according to the duplicated point merge flag.

[0493] When the duplicated point merge flag is 1, the three-dimensional data encoding device merges the duplicated points into one point and encodes them. Here, merging means, for example, when points A and B are duplicated points, leaving point A and deleting point B, or vice versa. At this time, the three-dimensional data encoding device may calculate new attribute information from the attribute information such as the color or reflectance of points A and B, and assign the calculated attribute information to the point after merging. For example, the three-dimensional data encoding device may assign the average value of the attribute information of points A and B to the point after merging.

[0494] Also, when the duplicated point merge flag is 1, since each leaf when encoding in the octree contains only one point, the three-dimensional data encoding device does not have to encode information indicating how many three-dimensional points a leaf contains as leaf information. Also, the three-dimensional data encoding device may encode the three-dimensional position information of one point in the leaf and information related to attribute information such as color or reflectance.

[0495] Thus, when duplicate points are unnecessary after decoding, the three-dimensional data encoding device sets the duplicate point merge flag to 1, adds it to the stream, and merges and encodes the duplicate points. Thereby, the data amount of unnecessary duplicate points can be reduced, and the encoding efficiency can be improved.

[0496] When the duplicate point merge flag is 0, the three-dimensional data encoding device encodes the information of the duplicate points as leaf information. For example, since each leaf may contain one or more duplicate points, the three-dimensional data encoding device encodes information indicating how many three-dimensional points the leaf contains. Further, the three-dimensional data encoding device may encode each attribute information of the duplicate points. For example, when point A and point B exist as duplicate points in a leaf, the three-dimensional data encoding device may encode information indicating that two points exist in the leaf. Further, the three-dimensional data encoding device may encode the respective attribute information of point A and point B.

[0497] Thus, when duplicate points are necessary after decoding, the three-dimensional data encoding device sets the duplicate point merge flag to 0, adds it to the stream, and encodes the duplicate points. Thereby, the three-dimensional data decoding device can correctly decode information related to the duplicate points.

[0498] For example, as quantization of the three-dimensional position, the three-dimensional data encoding device calculates the quantized position (x / qx, y / qy, z / qz) by dividing the three-dimensional position (x, y, z) by the quantization parameters (qx, qy, qz), for example.

[0499] The duplicate point merge flag may be included in the header information of the bit stream. For example, the duplicate point merge flag is included in the header of a bit stream such as WLD, SPC, or VLM.

[0500] Note that in the above, color or reflectance is given as an example of the attribute information, but the attribute information is not necessarily limited to this. For example, the attribute information may include a normal vector of a point, information representing the importance of a point, a three-dimensional feature amount of a point, or position information such as latitude, longitude, and altitude of a point.

[0501] Also, merging means integrating two or more points into one point. Also, merging may mean integrating M or more points into N points (M > N).

[0502] As described above, due to quantization, duplicate points with the same coordinates of the three-dimensional point group but different attribute information such as color or reflectance occur. For example, before quantization, the three-dimensional positions of point A and point B are different, but due to quantization, the three-dimensional positions of point A and point B become the same, and a case where the attribute information is different occurs. That is, point A and point B are duplicate points.

[0503] Note that not only in quantization, but also by acquiring the three-dimensional position and attribute information of the point group of the same object with a sensor such as LiDAR while changing the time or direction, there may be a case where duplicate points occur.

[0504] Also, the three-dimensional positions being the same does not only refer to the case where the three-dimensional positions completely match. For example, when the difference in the three-dimensional positions of point A and point B is equal to or less than a predetermined threshold α, the three-dimensional data encoding device may consider that the three-dimensional positions of point A and point B are the same, and may determine that point A and point B are duplicate points. Also, the three-dimensional data encoding device may add the threshold α to the stream and inform the three-dimensional data decoding device that points with a threshold α or less are treated as duplicate points.

[0505] Also, the three-dimensional data encoding device may use the three-dimensional position of point A as the three-dimensional position of the duplicate point. Or, the three-dimensional data encoding device may use the three-dimensional position of point B as the three-dimensional position of the duplicate point. Or, the three-dimensional data encoding device may use the three-dimensional position calculated from the three-dimensional positions of point A and point B as the three-dimensional position of the duplicate point. For example, the three-dimensional data encoding device may use the average value of the three-dimensional positions of point A and point B.

[0506] Also, for points among the duplicate points that have the same three-dimensional position and also have the same attribute information, regardless of the value of the duplicate point merge flag, the three-dimensional data encoding device may perform merging or may delete one of the points.

[0507] Also, when the duplicate point merge flag is 1, the three-dimensional data encoding device may merge M points in the leaf into N points (M > N). In this case, the three-dimensional data encoding device may encode the three-dimensional position information and attribute information of the N points as leaf information, respectively. Also, the three-dimensional data encoding device may calculate the N pieces of attribute information using the M pieces of attribute information.

[0508] Also, the three-dimensional data encoding device may add the number (N) of points in the leaf after merging to the header to notify the three-dimensional data decoding device. Also, the value of N may be preset as a fixed value in a standard or the like. Thereby, it is not necessary to add the information of N for each leaf, and the generated encoding amount can be suppressed. As described above, the three-dimensional data decoding device can correctly decode the N points.

[0509] When the duplicate point merge flag is 1, the duplicate points are merged into one point. For example, the three-dimensional data encoding device may merge point A and point B into point C having the same three-dimensional position information. Note that the three-dimensional data encoding device may assign the average value of the attribute information such as the color or reflectance of point A and point B to point C. Also, the three-dimensional data encoding device may merge point B into point A, or may merge point A into point B.

[0510] Next, a syntax example of the duplicate point merge flag will be described. FIG. 78 is a diagram showing a syntax example of header information. FIG. 79 is a diagram showing a syntax example of node information.

[0511] As shown in FIG. 78, the header information includes a duplicate point merge flag (MergeDuplicatedPointFlag). The duplicate point merge flag is information indicating whether to merge duplicate points. For example, a value 1 of the duplicate point merge flag indicates that duplicate points are to be merged, and a value 0 indicates that duplicate points are not to be merged.

[0512] Note that the three-dimensional data encoding device may specify whether to merge duplicate points according to a standard, or a profile or level of a standard, without adding a duplicate point merge flag to the header. Thereby, the three-dimensional data decoding device can correctly restore the bitstream by referring to the standard information to determine whether the duplicate points are included in the stream.

[0513] As shown in FIG. 79, the information of the node includes isleaf and num_point_per_leaf. isleaf is a flag indicating whether the target node is a leaf. The value 1 indicates that the target node is a leaf, and the value 0 indicates that the target node is not a leaf but a node. Note that the information indicating whether the node is a leaf may not be added to the header. In this case, the three-dimensional data decoding device determines whether the node is a leaf by another method. For example, the three-dimensional data decoding device may determine whether each node of the octree has been divided to a size that cannot be divided any further, and if so, determine that the node is a leaf. Thereby, it is not necessary to encode the flag indicating whether the node is a leaf, and the amount of encoding of the header can be reduced.

[0514] num_point_per_leaf is leaf information indicating the number of three-dimensional points included in the leaf. This num_point_per_leaf is encoded when the duplicate point merge flag is 0. Also, when the duplicate point merge flag is 1, since the number of points in the leaf is 1, num_point_per_leaf is not encoded. Thereby, the amount of encoding can be reduced.

[0515] Here, an example is shown in which whether to directly encode leaf information is switched according to the duplicate point merge flag, but whether to indirectly encode leaf information may also be switched. For example, the three-dimensional data encoding device may switch single_point_per_leaf according to the duplicate point merge flag and switch whether to encode leaf information based on the syntax. That is, when the duplicate point merge flag is 1, the three-dimensional data encoding device may set single_point_per_leaf to 1, and when the duplicate point merge flag is 0, the three-dimensional data encoding device may set single_point_per_leaf to 0. Also, in this case, the three-dimensional data encoding device may not add the duplicate point merge flag to the bitstream.

[0516] In addition, the three-dimensional data encoding device may encode num_point_per_leaf by entropy encoding. Also, in that case, the three-dimensional data encoding device may perform encoding while switching between a plurality of encoding tables. For example, the three-dimensional data encoding device may perform arithmetic encoding on the leading bit using encoding table A and perform arithmetic encoding on the remaining bits using encoding table B.

[0517] As described above, the three-dimensional data encoding device adds information indicating whether to merge duplicate points to the header of the bitstream and switches whether to merge duplicate points according to the value. Also, when the three-dimensional data encoding device merges duplicate points, it may not encode the number of points included in the leaf as leaf information. Also, when the three-dimensional data encoding device does not merge duplicate points, it may encode the number of points included in the leaf as leaf information.

[0518] In addition, the three-dimensional data encoding device may entropy-encode isleaf, MergeDuplicatedPointFlag, and num_point_per_leaf generated by the above method. For example, the three-dimensional data encoding device may binarize each value and perform arithmetic encoding.

[0519] In addition, although the present embodiment has shown an octree structure as an example, it is not necessarily limited to this, and the above method may be applied to an N-ary tree (N is an integer of 2 or more) such as a quadtree and a 16-ary tree, or other tree structures.

[0520] When encoded with the duplicate point merge flag = 1, if the original input three-dimensional point cloud or the quantized three-dimensional point cloud contains duplicate points, it becomes lossy coding, and the amount of code can be reduced. Further, the three-dimensional data encoding device may be encoded with the duplicate point merge flag = 1 when the original input three-dimensional point cloud does not contain duplicate points and is encoded by lossless coding (skipping quantization for encoding). Thereby, while maintaining lossless coding, the amount of code corresponding to not encoding num_point_per_leaf can be reduced.

[0521] In addition, when the three-dimensional data encoding device encodes two or more duplicate points in the same leaf as leaf information, the attribute information (such as color or reflectance) of each point may also be encoded respectively. In this case, the attribute information of each point may be associated in the encoding order of each point. For example, when the three-dimensional data encoding device encodes two points A and B in the same leaf as leaf information, the attribute information of both points A and B may also be encoded and added to the bit stream. Also, the attribute information may be associated in the encoding order of the two points A and B. For example, when encoding each three-dimensional position in the order of point A and point B, it is conceivable to encode and associate the respective attribute information in the order of point A and point B.

[0522] In addition, when the three-dimensional data encoding device merges M or more point clouds in the same leaf and encodes them as N points (M > N), the M or more attribute information of the M or more point clouds may be smoothed by, for example, averaging to generate the attribute information of N points and encode them. For example, when the three-dimensional data encoding device merges two points A and B in the same leaf and encodes them as one point, the attribute information of the two points A and B may be smoothed by, for example, averaging to calculate the attribute information of one point, and the calculated attribute information may be encoded.

[0523] Further, the three-dimensional data encoding device may switch the calculation method of the attribute information according to the importance or feature amount of the points. For example, the three-dimensional data encoding device may calculate a weighted average value by attaching a high weight to the attribute information of points with high importance or large feature amounts, and use the calculated value as the attribute information after merging. Also, the three-dimensional data encoding device may change the weight according to the amount of change in the three-dimensional position before and after quantization. For example, a weighted average value may be calculated by attaching a higher weight as the amount of change is smaller, and the calculated value may be used as the attribute information after merging.

[0524] Next, the flow of the three-dimensional data encoding process by the three-dimensional data encoding device will be described. FIGS. 80 and 81 are flowcharts of the three-dimensional data encoding process by the three-dimensional data encoding device.

[0525] First, the three-dimensional data encoding device determines whether to merge and encode duplicate points (S2401). For example, when prioritizing encoding efficiency, the three-dimensional data encoding device may determine to merge duplicate points. Also, if duplicate points are necessary in the three-dimensional data decoding device, the three-dimensional data encoding device may determine not to merge them. Further, when there are no duplicate points in the input three-dimensional point cloud and lossless encoding (reversible encoding), that is, when quantization is not applied, the three-dimensional data encoding device may set the duplicate point merge flag to 1. As a result, since the number of points in the leaf is not encoded as leaf information, the amount of code can be reduced.

[0526] When merging and encoding duplicate points (Yes in S2401), the three-dimensional data encoding device sets the duplicate point merge flag to 1 and adds the duplicate point merge flag to the header (S2402).

[0527] When not merging and encoding duplicate points (No in S2401), the three-dimensional data encoding device sets the duplicate point merge flag to 0 and adds the duplicate point merge flag to the header (S2403).

[0528] Next, the three-dimensional data encoding device quantizes the three-dimensional positions of the input three-dimensional point cloud (S2404). As the quantization of the three-dimensional positions, for example, the three-dimensional data encoding device calculates the quantized positions (x / qx, y / qy, z / qz) by dividing the three-dimensional positions (x, y, z) by the quantization parameters (qx, qy, qz). Further, the three-dimensional data encoding device may add the quantization parameters to the header, and the three-dimensional data decoding device may perform inverse quantization using the quantization parameters. Note that the three-dimensional data encoding device may skip the quantization process during lossless encoding.

[0529] Next, the three-dimensional data encoding device determines whether the duplicate point merge flag is 1 (S2405). If the duplicate point merge flag is 1 (Yes in S2405), the three-dimensional data encoding device merges the duplicate points among the quantized three-dimensional point cloud (S2406). Note that the three-dimensional data encoding device may skip this process when performing lossless encoding and when the input three-dimensional point cloud does not include duplicate points.

[0530] Also, if the duplicate point merge flag is 0 (No in S2405), the three-dimensional data encoding device does not perform the duplicate point merging process.

[0531] Next, the three-dimensional data encoding device divides the nodes into octrees (S2411). For example, the three-dimensional data encoding device may perform octree division from the large space (root node) including the quantized three-dimensional point cloud, sequentially calculate the occupancy codes of each node of the octree, and encode the calculated occupancy codes. Further, the three-dimensional data encoding device may repeatedly apply octree division and encode the leaf information when octree division can no longer be applied. Note that the three-dimensional data encoding device may calculate the occupancy codes and leaf information of all the nodes in advance and then encode that information.

[0532] Next, the three-dimensional data encoding device determines whether the next node (target node) is a leaf (S2412). For example, the three-dimensional data encoding device may determine whether the octree has been divided to a size that cannot be divided any further, and if true, determine that the node is a leaf.

[0533] If the target node is a leaf (Yes in S2412), the three-dimensional data encoding device determines whether the duplicate point merge flag is 0 (S2413). If the duplicate point merge flag is 0 (Yes in S2413), the three-dimensional data encoding device encodes the number of three-dimensional points (num_point_per_leaf) included in the leaf (S2414). If the duplicate point merge flag is 1 (No in S2413), the three-dimensional data encoding device does not encode the number of three-dimensional points (num_point_per_leaf) included in the leaf.

[0534] Also, if the target node is not a leaf (No in S2412), the three-dimensional data encoding device encodes the occupancy code of the target node (S2415).

[0535] Next, the three-dimensional data encoding device determines whether the processing of all nodes has been completed (S2416). If the processing of all nodes has not been completed (No in S2416), the three-dimensional data encoding device performs the processing from step S2412 onwards on the next node.

[0536] If the processing of all nodes has been completed (Yes in S2416), the three-dimensional data encoding device encodes the attribute information related to the encoded three-dimensional points (S2417).

[0537] Note that the three-dimensional data encoding device may adjust the size of the large space (root node) along the x-axis, y-axis, or z-axis to a power of 2 so that it can always be evenly divided into two for each axis. Also, the three-dimensional data encoding device may adjust the size of the large space so that the divided nodes always form cubes. For example, when the three-dimensional positions of the three-dimensional point cloud range from 0 to 256 on the x-axis, 0 to 120 on the y-axis, and 0 to 62 on the z-axis, first, the three-dimensional data encoding device compares the minimum and maximum values of each axis and calculates the minimum and maximum values of the coordinates of all the point clouds. In this case, the minimum value is 0 and the maximum value is 256. Next, it calculates a value that includes the calculated minimum and maximum values and where the size of the large space is a power of 2. In this case, the size is 512, the minimum value of the coordinates in the space is 0, and the maximum value is 511. Thus, the point cloud in the range of 0 to 256 can be included. Also, in this case, the three-dimensional data encoding device starts the octree division from a large space with a size of 512×512×512.

[0538] Next, the flow of the three-dimensional data decoding process by the three-dimensional data decoding device will be described. FIG. 82 is a flowchart of the three-dimensional data decoding process by the three-dimensional data decoding device. First, the three-dimensional data decoding device decodes the duplicate point merge flag in the header of the bit stream (S2421).

[0539] Next, the three-dimensional data decoding device divides the node into an octree (S2422). For example, the three-dimensional data decoding device uses the header information of the bit stream, etc., to generate an octree of a certain space (node). For example, the three-dimensional data decoding device uses the sizes in the x-axis, y-axis, and z-axis directions of a certain space added to the header information to generate a large space (root node), and divides that space into two in the x-axis, y-axis, and z-axis directions respectively to generate eight small spaces A (nodes A0 to A7) and generate an octree. Also, the three-dimensional data decoding device similarly divides each of nodes A0 to A7 into eight further small spaces. In this way, through the processing of this flow, the three-dimensional data decoding device sequentially performs the decoding of the occupancy code of each node and the decoding of the leaf information.

[0540] Next, the three-dimensional data decoder determines whether the next node (target node) is a leaf (S2423). If the target node is a leaf (Yes in S2423), the three-dimensional data decoder determines whether the duplicate point merge flag is 0 (S2424). If the duplicate point merge flag is 0 (Yes in S2424), the three-dimensional data decoder decodes the number of three-dimensional points (num_point_per_leaf) included in the leaf from the bit stream (S2425). On the other hand, if the duplicate point merge flag is 1 (No in S2424), the three-dimensional data decoder does not decode the number of three-dimensional points (num_point_per_leaf) included in the leaf from the bit stream.

[0541] Also, if the next node is not a leaf (No in S2423), the three-dimensional data decoder decodes the occupancy code of the target node from the bit stream (S2426).

[0542] Next, the three-dimensional data decoder calculates the three-dimensional position of the leaf using the decoded occupancy code and information such as the number of divisions of the octree (S2427). For example, when the size of the large space is 8×8×8, applying the octree division three times results in a node size of 1×1×1. This size (1×1×1) is the smallest unit (leaf) that can be divided. Also, the three-dimensional data decoder determines whether each leaf contains points from the decoded occupancy code of the parent node of the leaf. Thereby, the three-dimensional data decoder can calculate the three-dimensional position of each leaf.

[0543] Next, the three-dimensional data decoder inverse-quantizes the calculated three-dimensional position (S2428). Specifically, the three-dimensional data decoder performs inverse quantization using the quantization parameters decoded from the header to calculate the three-dimensional positions of the point cloud. For example, as inverse quantization of the three-dimensional position, the three-dimensional data decoder calculates the inverse quantization position (x × qx, y × qy, z × qz) by multiplying the quantization parameters (qx, qy, qz) with the three-dimensional position (x, y, z) before inverse quantization. Note that the three-dimensional data decoder may skip the inverse quantization process during lossless encoding. Also, even when it is not lossless encoding (irreversible encoding), the three-dimensional data decoder may skip the inverse quantization process if it is not necessary to return the scale to the original scale. For example, the three-dimensional data decoder may skip the inverse quantization process if relative positional relationships rather than absolute positional relationships of the three-dimensional points are required.

[0544] Next, the three-dimensional data decoder determines whether the processing of all nodes has been completed (S2429). If the processing of all nodes has not been completed (No in S2429), the three-dimensional data decoder performs the processing from step S2423 onward for the next node.

[0545] If the processing of all nodes has been completed (Yes in S2429), the three-dimensional data decoder decodes the attribute information related to the decoded three-dimensional points from the bit stream (S2430). Note that when the duplicate point merge flag is 1, one piece of attribute information is associated with each point having a different decoded three-dimensional position after decoding. Also, when the duplicate point merge flag is 0, a plurality of different pieces of attribute information are decoded and associated with a plurality of points having the same decoded three-dimensional position.

[0546] Next, a configuration example of the three-dimensional data encoder will be described. FIG. 83 is a block diagram of a three-dimensional data encoder 2400 according to the present embodiment. The three-dimensional data encoder 2400 includes a quantization unit 2401, an octree generation unit 2402, a merge determination unit 2403, and an entropy encoding unit 2404.

[0547] The quantization unit 2401 quantizes the input three-dimensional points (point cloud). Note that in the case of reversible encoding, the quantization process may be omitted.

[0548] The octree generation unit 2402 generates, for example, an octree from the input three-dimensional points (point cloud), and generates occupancy codes and leaf information for each node of the octree.

[0549] The merge determination unit 2403 determines whether to merge and encode duplicate points, and sets the value of the duplicate point merge flag based on the determination result. For example, the merge determination unit 2403 determines the value of the duplicate point merge flag using the information of the three-dimensional point group after quantization. For example, the merge determination unit 2403 determines the value of the duplicate point merge flag based on whether the three-dimensional point group after quantization contains duplicate points.

[0550] The entropy encoding unit 2404 generates a bitstream by encoding the leaf information according to the duplicate point merge flag. The entropy encoding unit 2404 may add the duplicate point merge flag to the bitstream. Further, the entropy encoding unit 2404 may encode the occupancy code. Further, the entropy encoding unit 2404 may encode the attribute information related to the encoded three-dimensional points.

[0551] Next, a configuration example of the three-dimensional data decoding device will be described. FIG. 84 is a block diagram of the three-dimensional data decoding device 2410 according to the present embodiment. The three-dimensional data decoding device 2410 includes an octree generation unit 2411, a merge information decoding unit 2412, an entropy decoding unit 2413, and an inverse quantization unit 2414.

[0552] The octree generation unit 2411 generates an octree for a certain space (node) using the header information of the bitstream and the like. For example, the octree generation unit 2411 generates a large space (root node) using the sizes in the x-axis, y-axis, and z-axis directions of a certain space added to the header information, and divides the space into eight small spaces A (nodes A0 to A7) by dividing it into two in the x-axis, y-axis, and z-axis directions respectively to generate an octree. Further, the octree generation unit 2411 similarly divides each of the nodes A0 to A7 into eight smaller spaces. In this way, the octree generation unit 2411 repeats the generation of the octree.

[0553] The merge information decoding unit 2412 decodes the duplicate point merge flag from the header information of the bitstream. Note that the merge information decoding unit 2412 may be included in the entropy decoding unit 2413.

[0554] The entropy decoding unit 2413 decodes the leaf information according to the information of the decoded duplicate point merge flag and generates a three-dimensional point cloud (three-dimensional positions). Note that the entropy decoding unit 2413 may also decode the attribute information related to the decoded three-dimensional points.

[0555] The inverse quantization unit 2414 applies inverse quantization to the three-dimensional positions of the decoded point cloud to generate an output three-dimensional point cloud. Note that in the case of reversible coding, the inverse quantization process may be omitted. Also, in the case of the three-dimensional data encoding device, even in the case of irreversible coding, if it is not necessary to return the scale to the original scale, the inverse quantization process may be omitted. For example, when the relative positional relationship rather than the absolute positional relationship of the three-dimensional points is required, the inverse quantization process may be omitted.

[0556] Next, a modified example of the three-dimensional data encoding process by the three-dimensional data encoding device will be described. FIG. 85 is a flowchart of a modified example of the three-dimensional data encoding process.

[0557] First, the three-dimensional data encoding device quantizes the three-dimensional positions of the input three-dimensional point cloud (S2441). For example, as the quantization of the three-dimensional positions, the three-dimensional data encoding device calculates the quantized positions (x / qx, y / qy, z / qz) by dividing the three-dimensional positions (x, y, z) by the quantization parameters (qx, qy, qz), for instance. Also, the three-dimensional data encoding device may add the quantization parameters to the header, and the three-dimensional data decoding device may perform inverse quantization using the quantization parameters. Note that the three-dimensional data encoding device may skip the quantization process during lossless encoding.

[0558] Next, the three-dimensional data encoding device determines whether the quantized three-dimensional point cloud contains duplicate points (S2442). For example, the three-dimensional data encoding device compares the three-dimensional position information of all the three-dimensional point clouds to determine whether there are identical values. Alternatively, the three-dimensional data encoding device may calculate the differences between all the three-dimensional position information, and if the absolute value of the difference is greater than a predetermined threshold, it may determine that no duplicate points are included.

[0559] If the three-dimensional point cloud contains duplicate points (Yes in S2442), the three-dimensional data encoding device determines whether to merge and encode the duplicate points (S2443). For example, if the three-dimensional data encoding device prioritizes the encoding efficiency, it may decide to merge the duplicate points. Also, if the three-dimensional data decoding device requires the duplicate points, the three-dimensional data encoding device may decide not to merge them.

[0560] If the three-dimensional point cloud does not contain duplicate points (No in S2442), or if the duplicate points are merged (Yes in S2443), the three-dimensional data encoding device sets the duplicate point merge flag to 1 and adds the duplicate point merge flag to the header (S2444). On the other hand, if the duplicate points are not merged (No in S2443), the three-dimensional data encoding device sets the duplicate point merge flag to 0 and adds the duplicate point merge flag to the header (S2445).

[0561] Next, the three-dimensional data encoding device determines whether the duplicate point merge flag is 1 (S2446). If the duplicate point merge flag is 1 (Yes in S2446), the three-dimensional data encoding device merges the duplicate points included in the three-dimensional point group after quantization (S2447). Note that the three-dimensional data encoding device may skip this process if it is lossless encoding and the input three-dimensional point group does not include duplicate points. Also, if the duplicate point merge flag is 0 (No in S2446), the three-dimensional data encoding device does not merge the duplicate points included in the three-dimensional point group after quantization. The subsequent processing is the same as the processing shown in FIG. 81.

[0562] (Embodiment 9) The configurations of the three-dimensional data encoding device and the three-dimensional data decoding device according to this embodiment will be described. FIG. 86 is a block diagram showing the configurations of the three-dimensional data encoding device 6200 and the three-dimensional data decoding device 6210 according to this embodiment. In the figure, among the processing units included in the three-dimensional data encoding device 6200 and the three-dimensional data decoding device 6210, the processing units related to the encoding of the position information are extracted and described.

[0563] Here, when dividing point cloud data into data units such as tiles or slices, it is conceivable to perform quantization in units of divided data (tiles or slices).

[0564] As shown in FIG. 86, the three-dimensional data encoding device 6200 includes a dividing unit 6201, a plurality of quantization units 6202, a plurality of encoding units 6203, and a multiplexing unit 6204.

[0565] The dividing unit 6201 generates a plurality of divided data by dividing the point cloud data into one or more data units such as tiles or slices. The plurality of quantization units 6202 generate a plurality of quantized data by quantizing each of the plurality of divided data.

[0566] A plurality of encoding units 6203 generate a plurality of encoded data by encoding each of the plurality of quantized data. The multiplexing unit 6204 generates a bit stream by multiplexing the plurality of encoded data.

[0567] The three-dimensional data decoder 6210 includes a demultiplexing unit 6211, a plurality of decoding units 6212, and a reconstruction unit 6213. The demultiplexing unit 6211 generates a plurality of encoded data by demultiplexing the bit stream.

[0568] The plurality of decoding units 6212 generate a plurality of decoded data by decoding each of the plurality of encoded data. The reconstruction unit 6213 reconstructs the point cloud data by reconstructing the plurality of decoded data.

[0569] Next, the details of the quantization unit 6202 will be described. FIG. 87 is a block diagram showing the configuration of the quantization unit 6202. The quantization unit 6202 includes a minimum position shift unit 6221, a position information quantization unit 6222, and a duplicate point merge unit 6223.

[0570] The minimum position shift unit 6221 shifts the entire point cloud so that the minimum point with the smallest coordinate value in the point cloud is shifted to the origin. FIG. 88 is a diagram showing an example of the quantization process. In the figure, the black circles indicate the points after this shift.

[0571] The position information quantization unit 6222 quantizes the position information. As a result, as shown in FIG. 88, the black circle points are shifted to the white circle points. Due to this quantization, there may be a case where a plurality of points overlap. In that case, the duplicate point merge unit 6223 merges the duplicate points. Specifically, a plurality of points belonging to the same position information are regarded as one point, and the attribute information corresponding to that point is integrated (merged). For example, the duplicate point merge unit 6223 determines any one of the plurality of attribute information as the merged attribute information. Or, the duplicate point merge unit 6223 calculates the merged attribute information by performing a predetermined operation (for example, an average value operation) on the plurality of attribute information.

[0572] At this time, the overlapping points generated by quantization and the overlapping points originally existing in the point cloud data are merged simultaneously. Thus, in the quantization of point cloud data, accurate position information and the number of points are lost. Furthermore, attribute information (such as color information) is also merged.

[0573] On the other hand, when quantization is not performed, quantization and merging of overlapping points are not carried out. Therefore, although there are no overlapping points generated by quantization, the overlapping points originally existing in the original point cloud data also remain without being merged.

[0574] The encoding unit 6203 converts, for example, the information of the point cloud into an occupancy code. When there are overlapping points, the overlapping points exist in the leaf node. The encoding unit 6203 generates encoded data by arithmetically encoding the number of overlapping points and the attribute information for each point.

[0575] Hereinafter, the process of performing quantization for each tile will be described. FIG. 89 is a diagram schematically showing the quantization process for each tile.

[0576] The three-dimensional data encoding device divides the point cloud data into a plurality of data units that can be independently encoded and decoded, such as tiles, and performs quantization for each of the divided data obtained by the division.

[0577] By using the following method, quantization and merging of overlapping points are performed during tile division, thereby improving the encoding efficiency of the quantized data.

[0578] When the three-dimensional data encoding device performs quantization for each divided data, for each tile, it quantizes the position information of the points belonging to the tile and merges the overlapping points into one point. Thereafter, for each tile, the three-dimensional data encoding device converts the position information of the point cloud data into an occupancy code and arithmetically encodes the occupancy code.

[0579] For example, the three-dimensional data encoding device may merge point A and point B into point C having the same three-dimensional position information. Note that the three-dimensional data encoding device may assign the average value of the attribute information such as the color or reflectance of point A and point B to point C. Further, the three-dimensional data encoding device may merge point B into point A, or may merge point A into point B.

[0580] When performing merging, the three-dimensional data encoding device sets MergeDuplicatedPointFlag to 1. Due to this MergeDuplicatedPointFlag, duplicate points within the tile are merged, indicating that there are no duplicate points within the tile. The three-dimensional data encoding device stores MergeDuplicatedPointFlag as metadata (additional information) in the parameter set.

[0581] When MergeDuplicatedPointFlag is 1, each leaf node in the occupancy code for each tile contains one point. Therefore, the three-dimensional data encoding device may not need to encode information indicating the number of points included in the leaf node as the information of the leaf node. Further, the three-dimensional data encoding device may encode the three-dimensional position information of one point and the attribute information such as color and reflectance.

[0582] When MergeDuplicatedPointFlag is 1, the three-dimensional data encoding device may merge M duplicate points into N (M > N) points. At this time, the three-dimensional data encoding device may add information indicating the value N to the header or the like. Alternatively, the value N may be defined by a standard or the like. Thereby, the three-dimensional data encoding device does not need to add information indicating the value N for each leaf node, and the generated encoding amount can be suppressed.

[0583] When the three-dimensional data encoding device does not quantize the point cloud data divided into tiles, it sets MergeDuplicatedPointFlag to 0. When MergeDuplicatedPointFlag is 0, the three-dimensional data encoding device encodes information about duplicate points included in the leaf nodes within a tile as the information of the leaf nodes. For example, each leaf node may contain one or more duplicate points. Therefore, the three-dimensional data encoding device may encode information indicating how many points a leaf node contains. Also, the three-dimensional data encoding device may encode each attribute information of the duplicate points respectively.

[0584] As described above, the three-dimensional data encoding device may change the encoded data structure based on MergeDuplicatedPointFlag.

[0585] The three-dimensional data encoding device may describe MergeDuplicatedPointFlag in GPS which is a parameter set for each frame. In this case, for example, a flag indicating whether at least one of all tiles except null tiles contains duplicate points is used. The flag may be added for each frame, or the same flag may be applied to all or a plurality of frames. When the same flag is applied to all or a plurality of frames, the three-dimensional data encoding device may describe the flag in SPS and not necessarily in GPS. Thereby, the transmission data amount can be reduced. Here, SPS is a parameter set in units of sequences (multiple frames).

[0586] Note that the three-dimensional data encoding device may change the quantization parameter for each tile, or may change whether to quantize according to the tile.

[0587] In addition, when the three-dimensional data encoding device determines whether to quantize or merge for each tile, it stores a flag for each tile (e.g., MergeDuplicatedPointFlag) in the GPS. Alternatively, the three-dimensional data encoding device stores MergeDuplicatedPointFlag in the header of the data for each tile and uses MergeDuplicatedPointFlag as a flag indicating whether there are duplicate points within the tile. In this case, the three-dimensional data encoding device describes in the GPS a flag indicating that the flag is stored in the header of the data. Note that the three-dimensional data encoding device does not have to store the flag when the tile is a null tile.

[0588] Next, the data structure will be described. FIG. 90 is a diagram showing a syntax example of the GPS which is a parameter set of position information in frame units. The GPS includes at least one of gps_idx indicating the frame number and sps_idx indicating the sequence number.

[0589] In addition, the GPS includes a duplicate point merge flag (MergeDuplicatedPointFlag) and tile information (tile_information).

[0590] When MergeDuplicatedPointFlag = 1 and the tile is not divided, it indicates that duplicate points in the point cloud data are merged and there are no duplicate points. When MergeDuplicatedPointFlag = 1 and the tile is divided, it indicates that duplicate points within the tile are merged and there are no duplicate points in all tiles except the null tiles that make up the point cloud data.

[0591] When MergeDuplicatedPointFlag = 0 and tile splitting is not performed, duplicate points in the point cloud data are not merged, indicating that there may be duplicate points. When MergeDuplicatedPointFlag = 0 and tile splitting is performed, in all tiles except null tiles that make up the point cloud data, duplicate points within the tile are not merged, indicating that there may be duplicate points within any tile.

[0592] Tile information (tile_information) indicates information related to tile splitting. Specifically, tile information indicates the type of tile splitting, the number of splits, the coordinates (position) of each tile, the size of each tile, etc. Further, tile information may indicate quantization parameters, null tile information, etc. Also, in the three-dimensional data decoding device, when the coordinates or size of each tile are known or derivable, the information indicating the coordinates or size of each tile may be omitted. Thereby, the amount of code can be reduced.

[0593] FIG. 91 is a diagram showing a syntax example of tile information (tile_information). Tile information includes an independent quantization flag (independent_quantization_flag). The independent quantization flag (independent_quantization_flag) is a flag indicating whether to unify quantization parameters for the entire plurality of tiles or to set them individually for each tile.

[0594] For example, independent_quantization_flag = 1 indicates that quantization parameters are unified for the entire plurality of tiles. In this case, MergeDuplicatedPointFlag and QP_value are shown in the GPS, and these pieces of information are used. Here, QP_value is the quantization parameter used for the plurality of tiles.

[0595] For example, independent_quantization_flag = 2 indicates that quantization parameters are set for each tile. In this case, if the tile is not a null tile, within the loop process for each tile, TileMergeDuplicatedPointFlag and qp_value are shown. Alternatively, TileMergeDuplicatedPointFlag and qp_value are shown in the header of the position information. Here, TileMergeDuplicatedPointFlag is a flag indicating whether to merge duplicate points in the target tile which is the tile to be processed. qp_value is the quantization parameter used for the target tile.

[0596] Note that a flag indicating whether to unify MergeDuplicatedPointFlag across all tiles or set it individually for each tile, and a flag indicating whether to unify the value of QP (quantization parameter) across all tiles or set it individually for each tile may be provided separately. Or, a flag indicating whether to show MergeDuplicatedPointFlag or the value of QP in the GPS or in the header of the position information may be provided. Thus, quantization parameters can be set independently for each tile.

[0597] FIG. 92 is a diagram showing a syntax example of node information (node(depth, index)) included in the position information data. The node information includes information (num_point_per_leaf) indicating the number of duplicate points of the leaf node when MergeDuplicatedPointFlag = 0. Also, the corresponding number of attribute information is shown in the leaf node information included in the attribute information data.

[0598] Hereinafter, the three-dimensional data encoding process according to the present embodiment will be described. FIG. 93 is a flowchart of the three-dimensional data encoding process according to the present embodiment.

[0599] First, the three-dimensional data encoding device determines whether to divide the tiles and whether to merge the duplicate points (S6201, S6202, S6214). For example, the three-dimensional data encoding device determines whether to divide the tiles and whether to merge the duplicate points based on an instruction from the outside.

[0600] When not performing tile division and merging the duplicate points (No in S6201 and Yes in S6202), the three-dimensional data encoding device sets MergeDuplicatedPointFlag = 1 indicating that the output point cloud does not contain duplicate points, and stores MergeDuplicatedPointFlag in the metadata (additional information) (S6203).

[0601] Next, the three-dimensional data encoding device quantizes the position information of the point cloud (S6204), merges the duplicate points based on the quantized position information (S6205). Next, the three-dimensional data encoding device encodes the occupancy code (S6206). Next, the three-dimensional data encoding device encodes the attribute information for the points without duplicate points (S6208).

[0602] On the other hand, when not performing tile division and not merging the duplicate points (No in S6201 and No in S6202), the three-dimensional data encoding device sets MergeDuplicatedPointFlag = 0 indicating that the output point cloud may contain duplicate points, and stores MergeDuplicatedPointFlag in the metadata (additional information) (S6209).

[0603] Next, the three-dimensional data encoding device quantizes the position information of the point cloud (S6210), encodes the occupancy code (S6211). Also, the three-dimensional data encoding device encodes the information indicating the number of three-dimensional points included in each leaf node for all leaf nodes (S6212). Next, the three-dimensional data encoding device encodes the attribute information for the points with duplicate points (S6213).

[0604] On the one hand, when performing tile division and merging duplicate points (Yes in S6201 and Yes in S6214), the three-dimensional data encoding device sets MergeDuplicatedPointFlag = 1 indicating that there are no duplicate points within the tile for all the output tiles, and stores MergeDuplicatedPointFlag in the metadata (additional information) (S6215). Next, the three-dimensional data encoding device divides the point cloud into tiles (S6216).

[0605] Next, the three-dimensional data encoding device quantizes the position information of the point cloud within the target tile to be processed (S6217), and merges the duplicate points within the target tile based on the quantized position information (S6218). Next, the three-dimensional data encoding device encodes the occupancy code (S6219) and encodes the attribute information for the points without duplicate points (S6220).

[0606] If the processing of all tiles is not completed (No in S6221), the processing from step S6217 onward is performed on the next tile. If the processing of all tiles is completed (Yes in S6221), the three-dimensional data encoding device terminates the processing.

[0607] On the other hand, when performing tile division and not merging duplicate points (Yes in S6201 and No in S6214), the three-dimensional data encoding device sets MergeDuplicatedPointFlag = 0 indicating that the output tile may contain duplicate points, and stores MergeDuplicatedPointFlag in the metadata (additional information) (S6222). Next, the three-dimensional data encoding device divides the point cloud into tiles (S6223).

[0608] Next, the three-dimensional data encoding device quantizes the position information of the point cloud within the target tile (S6224) and encodes the occupancy code (S6225). Next, the three-dimensional data encoding device encodes the information indicating the number of three-dimensional points included in each leaf node for all the leaf nodes (S6226). Next, the three-dimensional data encoding device encodes the attribute information for the points with duplicate points (S6227).

[0609] If the processing of all tiles is not completed (No in S6228), the processing from step S6224 onward is performed on the next tile. If the processing of all tiles is completed (Yes in S6228), the three-dimensional data encoding device terminates the processing.

[0610] In the configuration of the encoding unit, a quantization unit may be arranged before the tile division unit. That is, tile division may be performed after quantizing all the point cloud data. The point cloud data is shifted in position by quantization, and then duplicate points are merged. There may be cases where duplicate points are not merged.

[0611] In the case of this configuration, a flag (independent_quantization_flag) indicating whether to unify the quantization parameters for the entire tile or set them individually is specified with the value 1 (unify for the whole).

[0612] FIG. 94 is a flowchart of the three-dimensional data encoding process in this case. Note that the process shown in FIG. 94 has a different order between the tile division process and the quantization process when tile division is performed (Yes in S6201) compared to the process shown in FIG. 93. The differences will be mainly described below.

[0613] When performing tile division and merging duplicate points (Yes in S6201 and Yes in S6214), the three-dimensional data encoding device sets MergeDuplicatedPointFlag = 1 (S6215) and quantizes the position information of the point cloud (S6217A). Next, the three-dimensional data encoding device merges the duplicate points based on the quantized position information (S6218A). Next, the three-dimensional data encoding device divides the merged point cloud into tiles (S6216A).

[0614] On the one hand, when performing tile division without merging duplicate points (Yes in S6201 and No in S6214), the three-dimensional data encoding device sets MergeDuplicatedPointFlag = 0 (S6222) and quantizes the position information of the point cloud (S6224A). Next, the three-dimensional data encoding device divides the quantized point cloud into tiles (S6223A).

[0615] Next, the three-dimensional data decoding process according to the present embodiment will be described. FIG. 95 is a flowchart of the three-dimensional data decoding process according to the present embodiment.

[0616] First, the three-dimensional data decoding device decodes MergeDuplicatedPointFlag from the metadata included in the bitstream (S6231). Next, the three-dimensional data decoding device determines whether tile division has been performed (S6232). For example, the three-dimensional data decoding device determines whether tile division has been performed based on the information included in the bitstream.

[0617] When tile division has not been performed (No in S6232), the three-dimensional data decoding device decodes the occupancy code from the bitstream (S6233). Specifically, the three-dimensional data decoding device generates an octree of a certain space (node) using the header information and the like included in the bitstream. For example, the three-dimensional data decoding device generates a large space (root node) using the sizes in the x-axis, y-axis, and z-axis directions of a certain space added to the header information, and divides the space into 8 small spaces A (nodes A0 to A7) by dividing it into 2 in the x-axis, y-axis, and z-axis directions respectively to generate an octree. Similarly, the three-dimensional data decoding device further divides each of nodes A0 to A7 into 8 small spaces, and through the processing of this flow, sequentially decodes the occupancy code of each node and the leaf information.

[0618] When MergeDuplicatedPointFlag is 0 (Yes in S6234), the three-dimensional data decoding device decodes information indicating the number of three-dimensional points included in each leaf node for all leaf nodes (S6235). For example, when the large space is 8×8×8, applying the octree division three times results in nodes of 1×1×1. If this size is the smallest unit (leaf) that can be divided, the three-dimensional data decoding device determines whether points are included in each leaf node from the decoded occupancy code of the leaf node's parent node and calculates the three-dimensional position of each leaf node.

[0619] After step S6235, or when MergeDuplicatedPointFlag is 1 (No in S6234), the three-dimensional data decoding device calculates the position information (three-dimensional position) of the leaf node using information such as the decoded occupancy code and the number of octree divisions (S6236). Next, the three-dimensional data decoding device inverse-quantizes the position information (S6237).

[0620] Specifically, the three-dimensional data decoding device performs inverse quantization using the quantization parameters decoded from the header to calculate the position information (three-dimensional position) of the point cloud. For example, the three-dimensional data decoding device calculates the inverse quantization position (x×qx, y×qy, z×qz) by multiplying the quantization parameters (qx, qy, qz) by the three-dimensional position (x, y, z) before inverse quantization. Note that the inverse quantization process may be skipped during lossless coding.

[0621] Next, the three-dimensional data decoding device decodes the attribute information related to the three-dimensional points for which the position information has been decoded (S6238). When MergeDuplicatedPointFlag = 1, one piece of attribute information is associated with each point having a different decoded three-dimensional position after decoding. When MergeDuplicatedPointFlag = 0, multiple different pieces of attribute information are decoded and associated with multiple points having the same decoded three-dimensional position.

[0622] On the other hand, when tile division is performed (Yes in S6232), the three-dimensional data decoding device decodes the occupancy code for each tile (S6239). When MergeDuplicatedPointFlag is 0 (Yes in S6240), the three-dimensional data decoding device decodes information indicating the number of three-dimensional points included in each leaf node for all leaf nodes within the tile (S6241).

[0623] After step S6241, or when MergeDuplicatedPointFlag is 1 (No in S6240), the three-dimensional data decoding device calculates the position information (three-dimensional position) of the leaf nodes using the decoded occupancy code, information such as the number of divisions of the octree, etc. (S6242).

[0624] Next, the three-dimensional data decoding device inverse quantizes the position information (three-dimensional position) of the point cloud within the tile (S6243), and decodes the attribute information related to the three-dimensional points for which the position information has been decoded (S6244).

[0625] If the processing of all tiles is not completed (No in S6245), the processing from step S6239 onward is performed for the next tile. If the processing of all tiles is completed (Yes in S6245), the three-dimensional data encoding device ends the processing.

[0626] Hereinafter, an example in which three-dimensional points overlap between tiles and its encoding method will be described. As cases where overlapping points occur between tiles, there are the following cases. FIGS. 96 and 97 are diagrams showing examples of tile division.

[0627] As shown in FIG. 96, when dividing the point cloud into tiles in the division section, when dividing so that the tile regions indicated by solid lines overlap, after division, there are points that overlap between tiles within the region indicated by the broken line. Also, as shown in FIG. 97, when dividing so that the tile regions do not overlap, there are no overlapping points between the tiles after division.

[0628] Also, in the quantization of the position information for each tile, the positions of the respective points are shifted. As a result, overlapping points may occur within and between tiles. Through subsequent in-tile merging processing for each tile, the overlapping points within an individual tile are merged into one point. On the other hand, the overlapping points between tiles remain.

[0629] In the example of FIG. 96, in addition to the area where the tile regions overlap, new overlapping points may occur near the tile boundaries. In the example of FIG. 97, overlapping points may occur near the tile boundaries.

[0630] When there are overlapping points between tiles, when reconstructing the tiles in the three-dimensional data decoding device, overlapping points occur in the point cloud data. As a result, when the overlapping points are unnecessary for the three-dimensional data decoding device, extra processing becomes necessary.

[0631] Therefore, the three-dimensional data encoding device stores in the bit stream a MergeDuplicatedPointFlag or a TileMergeDuplicatedPointFlag indicating whether there are overlapping points within a tile, and also stores in the bit stream a UniqueBetweenTilesFlag, which is a flag indicating whether there are overlapping points between tiles. Thereby, when UniqueBetweenTilesFlag = 0, the three-dimensional data decoding device can reduce the number of points to be processed and reduce the processing load by deleting or merging the overlapping points.

[0632] Also, in tile division or quantization, when overlapping points occur between tiles, the three-dimensional data encoding device may subsequently delete or merge the overlapping points between tiles. In this case, the three-dimensional data encoding device stores UniqueBetweenTilesFlag = 1, which indicates that no overlapping points occur between tiles, in the bit stream. The three-dimensional data decoding device can determine based on UniqueBetweenTilesFlag that merging of overlapping points is not necessary.

[0633] When the three-dimensional data encoding device performs tile division so that tile regions overlap, or when each tile is quantized, etc., when there may be overlapping points between tiles, the UniqueBetweenTilesFlag is set to 0. Note that even when tile regions overlap, if there are no points in the overlapping region originally, no overlapping points will occur. In that case as well, the three-dimensional data encoding device may set the UniqueBetweenTilesFlag to 0. Also, when the three-dimensional data encoding device performs quantization, even if the situation is such that overlapping points do not necessarily occur, when there is a possibility that overlapping points may occur, the UniqueBetweenTilesFlag may be set to 0.

[0634] FIG. 98 is a flowchart of three-dimensional data encoding processing. First, the three-dimensional data encoding device determines whether tile regions overlap (S6251). If the tile regions do not overlap (No in S6252), the three-dimensional data encoding device determines whether to quantize the tiles individually and perform merging (S6252). If the tile regions overlap (Yes in S6251), or if the tiles are quantized individually and merged (Yes in S6252), the three-dimensional data encoding device determines whether to merge overlapping points between the divided data (S6253).

[0635] When the tiles are not quantized individually and merged (No in S6252), or when the overlapping points between the divided data are merged (Yes in S6253), the three-dimensional data encoding device sets UniqueBetweenTilesFlag = 1 indicating that there are no overlapping points between the tiles (S6254).

[0636] When the overlapping points between the divided data are not merged (No in S6253), the three-dimensional data encoding device sets UniqueBetweenTilesFlag = 0 indicating that there are overlapping points between the tiles (S6255).

[0637] Note that processes other than the process shown in FIG. 98 may be used. For example, the three-dimensional data encoding device may actually reconfigure the tiles after quantization and search for overlapping points between the tiles to determine whether there are overlapping points, and set the UniqueBetweenTilesFlag according to the determination result.

[0638] In addition, the three-dimensional data encoding device may store metadata regarding overlapping regions or ranges in the bitstream. For example, this metadata may indicate that there may be overlapping points at the tile boundaries between the tiles. Thereby, the three-dimensional data decoding device can search the tile boundaries to remove the overlapping points, so that the processing load can be reduced.

[0639] FIG. 99 is a block diagram showing the configuration of the three-dimensional data encoding device. As shown in FIG. 99, the three-dimensional data encoding device includes a division unit 6231, a plurality of quantization units 6232A and 6232B, an overlapping point merge unit 6233 between the divided data, and a plurality of encoding units 6234A and 6234B.

[0640] The division unit 6231 generates a plurality of divided data by dividing the point cloud data into a plurality of tiles. The plurality of quantization units 6232A and 6232B generate a plurality of quantized data by quantizing the plurality of divided data.

[0641] Each of the plurality of quantization units 6232A and 6232B includes a minimum position shift unit 6241, a position information quantization unit 6242, and an overlapping point merge unit 6243 within the divided data.

[0642] The minimum position shift unit 6241 shifts the point cloud so that the minimum point with the smallest coordinate value in the point cloud is shifted to the origin. The position information quantization unit 6242 quantizes the position information. The overlapping point merge unit 6243 within the divided data merges the overlapping points within the tile.

[0643] The overlapping point merging unit 6233 between divided data merges the overlapping points between tiles. The plurality of encoding units 6234A and 6234B generate a plurality of encoded data by encoding the plurality of quantized data after the overlapping points between tiles are merged.

[0644] Further, a configuration in which a quantization unit is arranged before the division unit may be used. That is, the three-dimensional data encoding device may perform tile division after performing quantization on all point cloud data. In this case, no overlap between tiles occurs during quantization.

[0645] FIG. 100 is a diagram showing a syntax example of GPS. As shown in FIG. 100, GPS includes a UniqueBetweenTilesFlag (tile - to - tile overlapping point flag). The tile - to - tile overlapping point flag is a flag indicating whether there may be overlapping points between tiles.

[0646] FIG. 101 is a flowchart of three - dimensional data decoding processing. First, the three - dimensional data decoding device decodes the UniqueBetweenTilesFlag and the MergeDuplicatedPointFlag from the metadata included in the bitstream (S6261). Next, the three - dimensional data decoding device decodes the position information and the attribute information for each tile and reconstructs the point cloud (S6262).

[0647] Next, the three - dimensional data decoding device determines whether merging of overlapping points is necessary (S6263). For example, the three - dimensional data decoding device determines whether merging is necessary according to whether the application can handle overlapping points or whether it is better to merge the overlapping points. Or, the three - dimensional data decoding device may smooth or filter the plurality of attribute information corresponding to the overlapping points and determine to merge the overlapping points for the purpose of removing noise or improving the estimation accuracy.

[0648] When merging of duplicate points is necessary (Yes in S6263), the three-dimensional data decoding device determines whether there is duplication between tiles (whether there are duplicate points) (S6264). For example, the three-dimensional data decoding device may determine the presence or absence of duplication between tiles based on the decoding results of UniqueBetweenTilesFlag and MergeDuplicatedPointFlag. This eliminates the need to search for duplicate points in the three-dimensional data decoding device, reducing the processing load of the three-dimensional data decoding device. Note that the three-dimensional data decoding device may determine whether there are duplicate points by searching for duplicate points after reconstructing the tiles.

[0649] When there is duplication between tiles (Yes in S6264), the three-dimensional data decoding device merges the duplicate points between the tiles (S6265). Next, the three-dimensional data decoding device merges a plurality of duplicate attribute information (S6266).

[0650] After step S6266, or when there is no duplication between tiles (No in S6264), the three-dimensional data decoding device executes an application using the point cloud without duplicate points (S6267).

[0651] On the other hand, when merging of duplicate points is not necessary (No in S6263), the three-dimensional data decoding device does not perform merging of duplicate points and executes an application using the point cloud in which duplicate points exist (S6268).

[0652] Hereinafter, examples of applications will be described. First, an example of an application using a point cloud without duplicate points will be described.

[0653] FIG. 102 is a diagram showing an example of an application. The example shown in FIG. 102 shows a use case in which a moving object traveling from the area of tile A to the area of tile B downloads map point clouds from a server in real time. The server stores encoded data of map point clouds of a plurality of overlapping areas. The moving object has already acquired the map information of tile A and requests the server to acquire the map information of tile B located in the moving direction.

[0654] At this time, the mobile body determines that the data of the overlapping part between tile A and tile B is unnecessary, and sends an instruction to the server to delete the overlapping part between tile B and tile A included in tile B. The server deletes the overlapping part from tile B and distributes the deleted tile B to the mobile body. Thereby, reduction of the transmission data amount and reduction of the load of the decoding process can be realized.

[0655] Note that the mobile body may confirm that there are no overlapping points based on the flag. Also, if the mobile body has not acquired tile A, it requests the server for data that does not delete the overlapping part. Further, when the server does not have a function to delete overlapping points or when it is not known whether there are overlapping points, the mobile body checks the distributed data to determine whether there are overlapping points, and if there are overlapping points, it may perform merging.

[0656] Next, an example of an application using a point cloud with overlapping points will be described. The mobile body uploads the map point cloud data acquired by LiDAR to the server in real time. For example, the mobile body uploads the data acquired for each tile to the server. In this case, although there is an area where tile A and tile B overlap, the mobile body on the encoding side does not merge the overlapping points between the tiles, and sends the data to the server together with a flag indicating that there is an overlap between the tiles. The server accumulates the received data as it is without merging the overlapping data included in the received data.

[0657] Also, when transmitting or accumulating the point cloud data using a system such as ISOBMFF, MPEG-DASH / MMT, or MPEG-TS, the device may replace a flag indicating whether there are overlapping points within a tile or whether there are overlapping points between tiles, which is included in GPS, with a descriptor or metadata in the system layer and store it in an SI, MPD, moov, or moof box, etc. Thereby, the application can utilize the functions of the system.

[0658] Further, as shown in FIG. 103, the three-dimensional data encoding device may divide, for example, tile B into a plurality of slices based on the overlapping regions with other tiles. In the example shown in FIG. 103, slice 1 is a region that does not overlap with any tile, slice 2 is a region that overlaps with tile A, and slice 3 is a region that overlaps with tile C. This facilitates the separation of the desired data from the encoded data.

[0659] Also, the map information may be point cloud data or mesh data. The point cloud data may be tiled for each region and stored in the server.

[0660] FIG. 104 is a flowchart showing the processing flow in the above system. First, the terminal (e.g., a mobile body) detects the movement from region A to region B of the terminal (S6271). Next, the terminal starts acquiring the map information of region B (S6272).

[0661] If the terminal has already downloaded the information of region A (Yes in S6273), the terminal instructs the server to acquire the data of region B that does not include the overlapping points with region A (S6274). The server deletes region A from region B and transmits the data of region B after deletion to the terminal (S6275). Note that the server may encode and transmit the data of region B in real time so that no overlapping points occur in response to the instruction from the terminal.

[0662] Next, the terminal merges (combines) the map information of region B with the map information of region A and displays the merged map information (S6276).

[0663] On the other hand, if the terminal has not downloaded the information of region A (No in S6273), the terminal instructs the server to acquire the data of region B that includes the overlapping points with region A (S6277). The server transmits the data of region B to the terminal (S6278). Next, the terminal displays the map information of region B that includes the overlapping points with region A (S6279).

[0664] Figure 105 is a flowchart showing another operation example in the system. The transmission device (three-dimensional data encoding device) transmits the data of the tiles in order (S6281). Further, the transmission device adds a flag indicating whether the tile of the data to be transmitted overlaps with the tile of the data transmitted one tile before the tile to be transmitted, and transmits the data (S6282).

[0665] The receiving device (three-dimensional data decoding device) determines whether the tile of the received data overlaps with the tile of the previously received data based on the flag added to the data (S6283). When the tile of the received data overlaps with the tile of the previously received data (Yes in S6283), the receiving device deletes or merges the overlapping points (S6284). On the other hand, when the tile of the received data does not overlap with the tile of the previously received data (No in S6283), the receiving device does not perform the process of deleting or merging the overlapping points and ends the process. Thereby, reduction of the processing load of the receiving device and improvement of the estimation accuracy of the attribute information can be realized. Note that the receiving device does not have to perform the merge if the merge of the overlapping points is not necessary.

[0666] As described above, the three-dimensional data encoding device according to the present embodiment performs the process shown in FIG. 106. The three-dimensional data encoding device divides a target frame including a plurality of three-dimensional points into a plurality of processing units (for example, tiles or slices) (S6291). The three-dimensional data encoding device generates a bit stream by encoding a plurality of processing units (S6292). The control information (for example, GPS) in frame units included in the bit stream includes first information (for example, MergeDuplicatedPointFlag) indicating (i) whether there are overlapping points that are a plurality of three-dimensional points having the same position information in any of the plurality of processing units included in the target frame, and (ii) whether there are no overlapping points in any of the plurality of processing units.

[0667] According to this, since it is possible to notify the presence or absence of overlapping points in frame units, the data amount of the bit stream can be reduced.

[0668] For example, the encoding of a plurality of processing units includes quantization processing. The control information (e.g., GPS) in frame units further includes second information (e.g., independent_quantization_flag) indicating whether to use the same parameter or individual parameters for the plurality of processing units as the quantization parameters used in the quantization processing.

[0669] According to this, it is possible to notify whether to set quantization parameters in frame units, so that the data amount of the bit stream can be reduced.

[0670] For example, the plurality of processing units includes two spatially overlapping processing units. The bit stream includes third information (e.g., UniqueBetweenTilesFlag) indicating whether there are a plurality of three-dimensional points with the same position information in the overlapping region of the two processing units and whether there are a plurality of three-dimensional points belonging to different processing units.

[0671] According to this, the three-dimensional data decoding device can control the processing content according to the presence or absence of overlapping points in the overlapping region of the processing units by using the third information. Therefore, the processing load in the three-dimensional data decoding device can be reduced.

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

[0673] In addition, the three-dimensional data decoding apparatus according to the present embodiment performs the process shown in FIG. 107. The three-dimensional data decoding apparatus acquires a bitstream generated by encoding a plurality of processing units (for example, tiles or slices) into which a target frame including a plurality of three-dimensional points is divided (S6296). The three-dimensional data decoding apparatus decodes a plurality of processing units from the bitstream (S6297). The frame unit control information (for example, GPS) included in the bitstream includes first information (for example, MergeDuplicatedPointFlag) indicating (i) whether there are duplicate points, which are a plurality of three-dimensional points having the same position information, in any of the plurality of processing units included in the target frame, or (ii) whether there are no duplicate points in any of the plurality of processing units. In decoding the plurality of processing units (S6297), the three-dimensional data decoding apparatus decodes the plurality of processing units using the first information. For example, when it is indicated by the first information that duplicate points are included in any of the plurality of processing units included in the target frame, the three-dimensional data decoding apparatus performs a process of deleting or merging the duplicate points. When it is indicated by the first information that no duplicate points are included in any of the plurality of processing units included in the target frame, the three-dimensional data decoding apparatus does not perform a process of deleting or merging the duplicate points.

[0674] According to this, since it is possible to notify the presence or absence of duplicate points in frame units, the data amount of the bitstream can be reduced.

[0675] For example, decoding of a plurality of processing units includes an inverse quantization process. The frame unit control information further includes second information (for example, independent_quantization_flag) indicating whether to use the same parameter or individual parameters for the plurality of processing units as quantization parameters used in the inverse quantization process.

[0676] According to this, since it is possible to notify whether to set quantization parameters in frame units, the data amount of the bitstream can be reduced.

[0677] For example, the plurality of processing units includes two spatially overlapping processing units. The bit stream includes third information (e.g., UniqueBetweenTilesFlag) indicating whether there are a plurality of three-dimensional points with the same position information and belonging to different processing units in the region where the two processing units overlap.

[0678] According to this, the three-dimensional data decoding device can control the processing content according to the presence or absence of overlapping points in the region where the processing units overlap by using the third information. Therefore, the processing load in the three-dimensional data decoding device can be reduced.

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

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

[0681] Also, 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 part or all of them.

[0682] Also, 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.

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

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

[0685] 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 time-division.

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

[0687] 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. As long as the gist of the present disclosure is not deviated from, 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

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

Explanation of Signs

[0689] 2400 3D Data Encoder 2401 Quantization Unit 2402, 2411 Octree Generation Unit 2403 Merge Decision Unit 2404 Entropy Encoder 2410 3D Data Decoder 2412 Merge Information Decoder 2413 Entropy Decoder 2414 Inverse Quantization Unit 4601 3D Data Encoding System 4602 3D Data Decoding System 4603 Sensor Terminal 4604 External Connection Unit 4611 Point Cloud Data Generation System 4612 Presentation Unit 4613 Encoder 4614 Multiplexing Unit 4615 Input / Output Unit 4616 Control Unit 4617 Sensor Information Acquisition Unit 4618 Point Cloud Data Generation Unit 4621 Sensor Information Acquisition Unit 4622 Input / Output Unit 4623 Demultiplexing Unit 4624 Decoder 4625 Presentation Unit 4626 User Interface 4627 Control Unit 4630 First Encoder 4631 Location Information Encoder 4632 Attribute Information Encoder 4633 Additional Information Encoder 4634 Multiplexing Unit 4640 First Decoder 4641 Demultiplexing Unit 4642 Location Information Decoder 4643 Attribute Information Decoder 4644 Additional Information Decoder 4650 Second Encoder 4651 Additional Information Generation Unit 4652 Position Image Generation Unit 4653 Attribute Image Generation Unit 4654 Video Encoding Unit 4655 Additional Information Encoding Unit 4656 Multiplexing Unit 4660 Second Decoding Unit 4661 Demultiplexing Unit 4662 Video Decoding Unit 4663 Additional Information Decoding Unit 4664 Position Information Generation Unit 4665 Attribute Information Generation Unit 4670 Encoding Unit 4680 Decoding Unit 4710 First Multiplexing Unit 4711 File Conversion Unit 4720 First Demultiplexing Unit 4721 File Inverse Conversion Unit 4730 Second Multiplexing Unit 4731 File Conversion Unit 4740 Second Demultiplexing Unit 4741 File Inverse Conversion Unit 4750 Third Multiplexing Unit 4751 File Conversion Unit 4760 Third Demultiplexing Unit 4761 File Inverse Conversion Unit 4801 Encoding Unit 4802 Multiplexing Unit 5010 First Encoding Unit 5011 Splitting Unit 5012 Position Information Encoding Unit 5013 Attribute Information Encoding Unit 5014 Additional Information Encoding Unit 5015 Multiplexing Unit 5020 First Decoding Unit 5021 Demultiplexing Unit 5022 Position Information Decoding Unit 5023 Attribute Information Decoding Unit 5024 Additional Information Decoding Unit 5025 Combining Unit 5031 Tile Splitting Unit 5032 Location Information Slice Division Unit 5033 Attribute Information Slice Division Unit 5041 Location Information Slice Combining Unit 5042 Attribute Information Slice Combining Unit 5043 Tile Combining Unit 5051 Tile Division Unit 5052 Encoding Unit 5053 Decoding Unit 5054 Tile Combining Unit 5300 First Encoding Unit 5301 Division Unit 5302 Location Information Encoding Unit 5303 Attribute Information Encoding Unit 5304 Additional Information Encoding Unit 5305 Multiplexing Unit 5311 Tile Division Unit 5312 Slice Division Unit 5321, 5331, 5351, 5361 Quantization Value Calculation Unit 5322, 5332 Entropy Encoding Unit 5323 Quantization Unit 5333 Inverse Quantization Unit 5340 First Decoding Unit 5341 Demultiplexing Unit 5342 Location Information Decoding Unit 5343 Attribute Information Decoding Unit 5344 Additional Information Decoding Unit 5345 Combining Unit 5352, 5362 Entropy Decoding Unit 6200 Three-Dimensional Data Encoding Device 6201, 6231 Division Unit 6202, 6232A, 6232B Quantization Unit 6203, 6234A, 6234B Encoding Unit 6204 Multiplexing Unit 6210 Three-Dimensional Data Decoding Device 6211 Demultiplexing Unit 6212 Decoding Unit 6213 Reconstruction Unit 6221, 6241 Minimum Location Shift Unit 6222 and 6242 Location Information Quantization Unit 6223 Duplicate Point Merging Unit 6233 Duplicate Point Merging Unit between Split Data 6243 Duplicate Point Merging Unit within Split Data

Claims

1. Encoding a plurality of frames each including a plurality of three-dimensional points, Generating a bitstream including the encoded plurality of frames, Each of the plurality of frames includes a plurality of processing units, The bitstream includes first information indicating whether an overlapping area of two processing units may include a plurality of three-dimensional points having the same position information and belonging to different processing units. Three-dimensional data encoding method.

2. In the encoding of the plurality of frames, each of the plurality of frames is divided into the plurality of processing units, and the plurality of processing units are encoded. The encoding of the plurality of processing units includes a quantization process. The frame unit control information included in the bitstream Includes second information indicating whether to use the same parameter or individual parameters for the plurality of processing units as the quantization parameter used in the quantization process. The three-dimensional data encoding method according to Claim 1.

3. In the encoding of the plurality of frames, each of the plurality of frames is divided into the plurality of processing units, and the plurality of processing units are encoded. The bitstream includes third information indicating whether a plurality of three-dimensional points belonging to different processing units within the same frame may have the same position information. The three-dimensional data encoding method according to Claim 1.

4. Obtaining a bitstream including data in which a plurality of frames each including a plurality of three-dimensional points are encoded, Decoding the encoded plurality of frames from the bitstream, Each of the plurality of frames includes a plurality of processing units, The bitstream includes first information indicating whether an overlapping area of two processing units may include a plurality of three-dimensional points having the same position information and belonging to different processing units. In the decoding of the plurality of frames, the plurality of frames are decoded using the first information. Three-dimensional data decoding method.

5. The bitstream includes data in which the plurality of processing units into which each of the plurality of frames is divided are encoded. In the decoding of the plurality of frames, the plurality of processing units are decoded. The decoding of the plurality of processing units includes an inverse quantization process. The frame unit control information included in the bitstream including second information indicating whether to use the same parameter or individual parameters for the plurality of processing units as the quantization parameter used in the inverse quantization process The three-dimensional data decoding method according to claim 4.

6. The bitstream includes encoded data of the plurality of processing units obtained by dividing each of the plurality of frames, In decoding the plurality of frames, the plurality of processing units are decoded, The bitstream includes third information indicating whether a plurality of three-dimensional points belonging to different processing units within the same frame may have the same position information The three-dimensional data decoding method according to claim 4.

7. A processor and, A memory, The processor uses the memory to Encode a plurality of frames each including a plurality of three-dimensional points, Generate a bitstream including the encoded plurality of frames, Each of the plurality of frames includes a plurality of processing units, The bitstream includes first information indicating whether an overlapping region of two processing units may include a plurality of three-dimensional points having the same position information and belonging to different processing units Three-dimensional data encoding device.

8. A processor and, A memory, The processor uses the memory to Obtain a bitstream including encoded data of a plurality of frames each including a plurality of three-dimensional points, Decode the encoded plurality of frames from the bitstream, Each of the plurality of frames includes a plurality of processing units, The bitstream includes first information indicating whether an overlapping region of two processing units may include a plurality of three-dimensional points having the same position information and belonging to different processing units, In decoding the plurality of frames, the plurality of frames are decoded using the first information Three-dimensional data decoding device.

Citation Information

Patent Citations

  • Device for encoding outline

    JP1998222682A

  • Method and apparatus for dynamic transmission of 3D image data

    JP2012501029A

  • Location coding based on spatial trees with overlapping points

    JP2015505389A

  • Voxel processing method, voxel processing program, and information processing apparatus

    JP2017068808A

  • Monitoring device

    JP2018159578A