Three-dimensional data encoding method, three-dimensional data decoding method, three-dimensional data encoding device, and three-dimensional data decoding device
The method improves encoding efficiency and enables correct decoding of three-dimensional data by using multiple quantization parameters and defining a standardized format for multiplexing and storing data, addressing inefficiencies in existing point cloud data encoding and decoding methods.
Patent Information
- Application Number
- JP2024060582
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2018-09-14
- Filing Date
- 2024-04-04
- Publication Date
- 2025-07-08
- Estimated Expiration
- 2039-09-10
AI Technical Summary
Existing methods for encoding and decoding three-dimensional data, particularly point cloud data, face inefficiencies in terms of encoding efficiency and lack of standardized methods for multiplexing and storing data using multiple codecs.
A method that quantizes various elements of three-dimensional data using multiple quantization parameters and generates a bit stream with this information, allowing for improved encoding efficiency and the ability to decode using different encoding methods, while also defining a standardized format for storing and multiplexing data using ISOBMFF.
Enhances encoding efficiency and enables correct decoding of three-dimensional data even when multiple encoding methods are used, facilitating standardized storage and transmission of point cloud data.
Smart Images

Figure 0007704922000001 
Figure 0007704922000002 
Figure 0007704922000003
Abstract
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 representing three-dimensional data, there is a representation method called a 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 the point cloud is expected to become mainstream as a method for representing three-dimensional data, the point group has a very large amount of data. 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 amount by encoding is essential.
[0004] Also, regarding the compression of the point cloud, it is partially supported by a publicly available library (Point Cloud Library) that performs point cloud-related processing.
[0005] Also, a technique for searching for and displaying facilities located around a vehicle using three-dimensional map data is known (see, for example, Patent Document 1).
Prior Art Documents
Patent Documents
[0006]
Patent Document 1
Summary of the Invention
Problems to be Solved by the Invention
[0007] In the encoding process and decoding process of three-dimensional data, it is desired to improve the encoding efficiency.
[0008] 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 apparatus, or a three-dimensional data decoding apparatus capable of improving the encoding efficiency.
Means for Solving the Problems
[0009] A three-dimensional data encoding method according to an aspect of the present disclosure quantizes a first element that constitutes at least a part of the attribute information of each of a plurality of three-dimensional points using a first quantization parameter, and quantizes a second element that constitutes at least a part of the attribute information of each of the plurality of three-dimensional points using a second quantization parameter, and generates a bit stream including the quantized first element, the quantized second element, the first quantization parameter, a first difference between the first quantization parameter and the second quantization parameter, a second difference between the first quantization parameter and a third quantization parameter available for quantization of the first element, and a third difference between the second quantization parameter and a fourth quantization parameter available for quantization of the second element.
[0010] A three-dimensional data decoding method according to one aspect of the present disclosure obtains, from a bit stream, a quantized first element, a quantized second element, a first quantization parameter, a second quantization parameter, a first difference between the first quantization parameter and the second quantization parameter, a second difference between the first quantization parameter and a third quantization parameter that can be used for inverse quantization of the first element, and a third difference between the second quantization parameter and a fourth quantization parameter that can be used for inverse quantization of the second element, calculates the first element that constitutes at least a part of the attribute information of each of a plurality of three-dimensional points by inverse quantizing the quantized first element using the first quantization parameter, and calculates the second element that constitutes at least a part of the attribute information of each of the plurality of three-dimensional points by inverse quantizing the quantized second element using the second quantization parameter.
[0011] A three-dimensional data encoding method according to one aspect of the present disclosure quantizes the position information of each of a plurality of three-dimensional points using a first quantization parameter, quantizes the first luminance indicating the first color among the attribute information of each of the plurality of three-dimensional points and a first color difference using a second quantization parameter, and quantizes the first color difference using a third quantization parameter, and generates a bit stream including the quantized position information, the quantized first luminance, the quantized first color difference, the first quantization parameter, the second quantization parameter, and a first difference between the second quantization parameter and the third quantization parameter.
[0012] A three-dimensional data decoding method according to an aspect of the present disclosure obtains quantized position information, quantized first luminance, quantized first color difference, a first quantization parameter, a second quantization parameter, and a first difference between the second quantization parameter and a third quantization parameter by obtaining a bitstream, calculates position information of a plurality of three-dimensional points by inverse quantizing the quantized position information using the first quantization parameter, calculates the first luminance among the first luminance and the first color difference indicating the first color of the plurality of three-dimensional points by inverse quantizing the quantized first luminance using the second quantization parameter, and calculates the first color difference by inverse quantizing the quantized first color difference using the third quantization parameter obtained from the second quantization parameter and the first difference.
Advantages of the Invention
[0013] The present disclosure can provide a three-dimensional data encoding method, a three-dimensional data decoding method, a three-dimensional data encoding device, or a three-dimensional data decoding device that can improve encoding efficiency.
Brief Description of the Drawings
[0014]
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
DETAILED DESCRIPTION OF THE INVENTION
[0015] A three-dimensional data encoding method according to an aspect of the present disclosure quantizes the position information of each of a plurality of three-dimensional points using a first quantization parameter, and for a first luminance indicating a first color and a first color difference among the attribute information of each of the plurality of three-dimensional points, quantizes the first luminance using a second quantization parameter, and quantizes the first color difference using a third quantization parameter, and generates a bit stream including the quantized position information, the quantized first luminance, the quantized first color difference, the first quantization parameter, the second quantization parameter, and a first difference between the second quantization parameter and the third quantization parameter.
[0016] According to this, in the bit stream, since the third quantization parameter is indicated by the first difference from the second quantization parameter, the encoding efficiency can be improved in the three-dimensional data encoding method.
[0017] For example, further, the reflectance among the attribute information of each of the plurality of three-dimensional points may be quantized using a fourth quantization parameter, and in the generation, a bit stream further including the quantized reflectance and the fourth quantization parameter may be generated.
[0018] For example, in quantization using the second quantization parameter, when quantizing the first luminance of one or more three-dimensional points included in each of a plurality of subspaces obtained by dividing a target space including the plurality of three-dimensional points, the first luminance of one or more three-dimensional points included in the subspace may be further quantized using a fifth quantization parameter. In quantization using the third quantization parameter, when quantizing the first color difference of the one or more three-dimensional points, the first color difference of the one or more three-dimensional points may be further quantized using a sixth quantization parameter. In the generation, a bit stream further including a second difference between the second quantization parameter and the fifth quantization parameter and a third difference between the third quantization parameter and the sixth quantization parameter may be generated.
[0019] According to this, in the three-dimensional data encoding method, in the bit stream, since the fifth quantization parameter is indicated by the second difference from the second quantization parameter and the sixth quantization parameter is indicated by the third difference from the third quantization parameter, the encoding efficiency can be improved.
[0020] For example, in the generation, in quantization using the second quantization parameter and quantization using the third quantization parameter, when quantizing using the fifth quantization parameter and the sixth quantization parameter, a bit stream further including identification information indicating that quantization has been performed using the fifth quantization parameter and the sixth quantization parameter may be generated.
[0021] According to this, a three-dimensional data decoding device that has acquired the bit stream can determine that quantization has been performed using the fifth quantization parameter and the sixth quantization parameter using the identification information, and thus the processing load of the decoding process can be reduced.
[0022] For example, further, for a second luminance and a second color difference indicating a second color among the attribute information of each of the plurality of three-dimensional points, the second luminance is quantized using a seventh quantization parameter, and the second color difference is quantized using an eighth quantization parameter. In the generation, a bit stream further including the quantized second luminance, the quantized second color difference, the seventh quantization parameter, and a fourth difference between the seventh quantization parameter and the eighth quantization parameter may be further generated.
[0023] According to this, in the three-dimensional data encoding method, since the eighth quantization parameter is indicated by the fourth difference from the seventh quantization parameter in the bit stream, the encoding efficiency can be improved. Also, two types of color information can be included in the attribute information of the three-dimensional points.
[0024] Also, a three-dimensional data decoding method according to one aspect of the present disclosure acquires quantized position information, quantized first luminance, quantized first color difference, a first quantization parameter, a second quantization parameter, and a first difference between the second quantization parameter and a third quantization parameter by acquiring a bit stream, calculates the position information of a plurality of three-dimensional points by inverse quantizing the quantized position information using the first quantization parameter, calculates the first luminance among the first luminance and the first color difference indicating the first color of the plurality of three-dimensional points by inverse quantizing the quantized first luminance using the second quantization parameter, and calculates the first color difference by inverse quantizing the quantized first color difference using the third quantization parameter obtained from the second quantization parameter and the first difference.
[0025] Therefore, the three-dimensional data decoding method can correctly decode the position information and the attribute information of the three-dimensional points.
[0026] For example, in the acquisition, by acquiring the bitstream, a further quantized reflectance and a fourth quantization parameter are acquired, and the three-dimensional data decoding method may further calculate the reflectances of the plurality of three-dimensional points by inverse quantizing the quantized reflectance using the fourth quantization parameter.
[0027] Therefore, the three-dimensional data decoding method can correctly decode the reflectances of the three-dimensional points.
[0028] For example, in the acquisition, by acquiring the bitstream, a second difference between the second quantization parameter and the fifth quantization parameter and a third difference between the third quantization parameter and the sixth quantization parameter are further acquired. In the calculation of the first luminance, when the quantized first luminance is the luminance obtained by quantizing the first luminance of one or more three-dimensional points included in each of the plurality of subspaces obtained by dividing the target space including the plurality of three-dimensional points, the quantized first luminance is inverse quantized using the second quantization parameter and the fifth quantization parameter obtained from the second difference to calculate the first luminance of the one or more three-dimensional points. In the calculation of the first color difference, when the quantized first color difference is the color difference obtained by quantizing the first color difference of the one or more three-dimensional points, the quantized first color difference is inverse quantized using the third quantization parameter and the sixth quantization parameter obtained from the third difference to calculate the first color difference of the one or more three-dimensional points.
[0029] For example, in the acquisition, by acquiring the bitstream, further acquire identification information indicating quantization using the fifth quantization parameter and the sixth quantization parameter. In the calculation of the first luminance, when the identification information indicates quantization using the fifth quantization parameter and the sixth quantization parameter, it is determined that the quantized first luminance is the luminance obtained by quantizing the first luminance of the one or more three-dimensional points. In the calculation of the first color difference, when the identification information indicates quantization using the fifth quantization parameter and the sixth quantization parameter, it may be determined that the quantized first color difference is the color difference obtained by quantizing the first color difference of the one or more three-dimensional points.
[0030] According to this, the three-dimensional data decoding method can determine quantization using the fifth quantization parameter and the sixth quantization parameter using the identification information, so the processing load of the decoding process can be reduced.
[0031] For example, in the acquisition, by acquiring the bitstream, further acquire the quantized second luminance, the quantized second color difference, the seventh quantization parameter, and the fourth difference between the seventh quantization parameter and the eighth quantization parameter. The three-dimensional data decoding method further calculates the second luminance among the second luminance and the second color difference indicating the second color of the plurality of three-dimensional points by inverse quantizing the quantized second luminance using the seventh quantization parameter, and calculates the second color difference by inverse quantizing the quantized second color difference using the eighth quantization parameter obtained from the seventh quantization parameter and the fourth difference.
[0032] Therefore, the three-dimensional data decoding method can correctly decode the second color of the three-dimensional points.
[0033] In addition, a three-dimensional data encoding device according to an aspect of the present disclosure includes a processor and a memory. The processor uses the memory to quantize the position information of each of a plurality of three-dimensional points using a first quantization parameter, and for a first luminance indicating a first color and a first color difference among the attribute information of each of the plurality of three-dimensional points, quantize the first luminance using a second quantization parameter, and quantize the first color difference using a third quantization parameter, and generate a bit stream including the quantized position information, the quantized first luminance, the quantized first color difference, the first quantization parameter, the second quantization parameter, and a first difference between the second quantization parameter and the third quantization parameter.
[0034] According to this, since the three-dimensional data encoding device indicates the third quantization parameter by the first difference from the second quantization parameter, the encoding efficiency can be improved.
[0035] In addition, a three-dimensional data decoding device according to an aspect of the present disclosure includes a processor and a memory. The processor uses the memory to obtain the quantized position information, the quantized first luminance, the quantized first color difference, the first quantization parameter, the second quantization parameter, and the first difference between the second quantization parameter and the third quantization parameter by obtaining a bit stream, calculates the position information of a plurality of three-dimensional points by inverse quantizing the quantized position information using the first quantization parameter, calculates the first luminance among the first luminance and the first color difference indicating the first color of the plurality of three-dimensional points by inverse quantizing the quantized first luminance using the second quantization parameter, and calculates the first color difference by inverse quantizing the quantized first color difference using the third quantization parameter obtained from the second quantization parameter and the first difference.
[0036] Therefore, the three-dimensional data decoding device can correctly decode the position information and the attribute information of the three-dimensional points.
[0037] These general or specific aspects may be implemented in 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 in any combination of a system, a method, an integrated circuit, a computer program, and a recording medium.
[0038] Hereinafter, embodiments will be specifically described with reference to the drawings. Note that the embodiments described below are all 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, components not described in the independent claims indicating the most general concept are described as optional components.
[0039] (Embodiment 1) When using the encoded data of a point cloud in an actual device or service, it is desirable to transmit and receive the information necessary according to the application in order to suppress the network bandwidth. However, until now, such a function has not existed in the encoding structure of three-dimensional data, and there has also been no encoding method therefor.
[0040] In the present embodiment, a three-dimensional data encoding method and a three-dimensional data encoding apparatus for providing a function of transmitting and receiving information necessary 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 apparatus 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.
[0041] In particular, currently, a first encoding method and a second encoding method are being considered as encoding methods for point cloud data (encoding formats), 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), or transmission or storage, cannot be performed in the encoding unit as it is.
[0042] Also, there has been no method to support a format in which two codecs, a first encoding method and a second encoding method, are mixed, such as PCC (Point Cloud Compression).
[0043] In this embodiment, the configuration of PCC encoded data in which two codecs, a first encoding method and a second encoding method, are mixed and the method of storing the encoded data in the system format will be described.
[0044] First, the configuration of the three-dimensional data (point cloud data) encoding / decoding system according to this embodiment will be described. FIG. 1 is a diagram showing a configuration example of the three-dimensional data encoding / decoding system according to this embodiment. As shown in FIG. 1, the three-dimensional data encoding / decoding system includes a three-dimensional data encoding system 4601, a three-dimensional data decoding system 4602, a sensor terminal 4603, and an external connection unit 4604.
[0045] The three-dimensional data encoding system 4601 generates encoded data or multiplexed data by encoding point cloud data, which is three-dimensional data. Note that the three-dimensional data encoding system 4601 may be a three-dimensional data encoding device realized by a single device, or may be a system realized by a plurality of devices. Also, the three-dimensional data encoding device may include a part of a plurality of processing units included in the three-dimensional data encoding system 4601.
[0046] 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.
[0047] 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.
[0048] The presentation unit 4612 presents the sensor information or the point cloud data to the user. For example, the presentation unit 4612 displays information or an image based on the sensor information or the point cloud data.
[0049] The encoding unit 4613 encodes (compresses) the point cloud data and outputs the obtained encoded data, the control information obtained in the encoding process, and other additional information to the multiplexing unit 4614. The additional information includes, for example, sensor information.
[0050] The multiplexing unit 4614 generates multiplexed data by multiplexing the encoded data, the control information, and the additional information input from the encoding unit 4613. The format of the multiplexed data is, for example, a file format for storage or a packet format for transmission.
[0051] The input / output unit 4615 (for example, a communication unit or an interface) outputs the multiplexed data to the outside. Alternatively, the multiplexed data is stored in a storage unit such as an internal memory. The control unit 4616 (or an application execution unit) controls each processing unit. That is, the control unit 4616 performs control such as encoding and multiplexing.
[0052] Note that the sensor information may be input to the encoding unit 4613 or the multiplexing unit 4614. Also, the input / output unit 4615 may output the point cloud data or the encoded data as it is to the outside.
[0053] 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.
[0054] The three-dimensional data decoding system 4602 generates point cloud data, which is three-dimensional data, by decoding the encoded data or multiplexed data. Note that the three-dimensional data decoding system 4602 may be a three-dimensional data decoding device realized by a single device, or a system realized by a plurality of devices. Further, the three-dimensional data decoding device may include a part of a plurality of processing units included in the three-dimensional data decoding system 4602.
[0055] 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.
[0056] The sensor information acquisition unit 4621 acquires sensor information from the sensor terminal 4603.
[0057] The input / output unit 4622 acquires the transmission signal, decodes the multiplexed data (file format or packet) from the transmission signal, and outputs the multiplexed data to the demultiplexing unit 4623.
[0058] The demultiplexing unit 4623 acquires the encoded data, control information, and additional information from the multiplexed data, and outputs the encoded data, control information, and additional information to the decoding unit 4624.
[0059] The decoding unit 4624 reconstructs the point cloud data by decoding the encoded data.
[0060] 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 controls such as demultiplexing, decoding, and presentation.
[0061] Note that the input / output unit 4622 may directly acquire point cloud data or encoded data from the outside. Further, the presentation unit 4625 may acquire additional information such as sensor information and present information based on the additional information. Further, the presentation unit 4625 may perform presentation based on the user's instruction acquired by the user interface 4626.
[0062] The sensor terminal 4603 generates sensor information which is information obtained by sensors. The sensor terminal 4603 is a terminal equipped with sensors 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.
[0063] The sensor information that can be acquired by the sensor terminal 4603 is, for example, (1) the distance between the sensor terminal 4603 and an object or the reflectivity of the object obtained from LIDAR, millimeter-wave radar, or an 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.
[0064] 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.
[0065] Next, the point cloud data will be described. FIG. 2 is a diagram showing the configuration of the point cloud data. FIG. 3 is a diagram showing a configuration example of a data file in which information of the point cloud data is described.
[0066] 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 corresponding to the position information. A collection of such points is called a point cloud. For example, the point cloud represents the three-dimensional shape of an object.
[0067] Position information such as three-dimensional coordinates (Position) may also be referred to as 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.
[0068] One piece of attribute information may be associated with one piece of position information, or attribute information having a plurality of different attribute types may be associated with one piece of position information. Also, a plurality of pieces of attribute information of the same attribute type may be associated with one piece of position information.
[0069] 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.
[0070] The position information is, for example, information on three axes of x, y, and z. The attribute information is, for example, RGB color information. A typical data file is a ply file or the like.
[0071] Next, the types of point cloud data will be described. FIG. 4 is a diagram showing the types of point cloud data. As shown in FIG. 4, the point cloud data includes static objects and dynamic objects.
[0072] 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 called a PCC frame or a frame.
[0073] The object may be a point cloud with a limited area like normal video data, or a large-scale point cloud with an unlimited area like map information.
[0074] Also, there may be point cloud data of various densities, including sparse point cloud data and dense point cloud data.
[0075] Hereinafter, the details of each processing unit will be described. Sensor information is obtained by various methods such as a distance sensor such as a 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.
[0076] The point cloud data generation unit 4618 may process the point cloud data when generating the position information or adding the attribute information. For example, the point cloud data generation unit 4618 may reduce the data amount by deleting overlapping points in the point cloud. 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.
[0077] Note that in FIG. 1, the point cloud data generation system 4611 is included in the three-dimensional data encoding system 4601, but may be provided independently outside the three-dimensional data encoding system 4601.
[0078] 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 hereinafter as the first encoding method. The second is an encoding method using a video codec, which will be described hereinafter as the second encoding method.
[0079] The decoding unit 4624 decodes the point cloud data by decoding the encoded data based on a predefined encoding method.
[0080] 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, etc., or reference time information. Further, the multiplexing unit 4614 may also multiplex sensor information or attribute information related to the point cloud data.
[0081] 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.
[0082] The demultiplexing unit 4623 extracts the PCC encoded data, other media, and time information, etc. from the multiplexed data.
[0083] The input / output unit 4615 transmits the multiplexed data using a method suitable for the medium for transmission such as broadcasting or communication, or the medium for storage. The input / output unit 4615 may communicate with other devices via the Internet, or may communicate with a storage unit such as a cloud server.
[0084] Examples of the communication protocol include http, ftp, TCP, or UDP, etc. A PULL-type communication method may be used, or a PUSH-type communication method may be used.
[0085] Either wired transmission or wireless transmission may be used. Examples of wired transmission include Ethernet (registered trademark), USB, RS-232C, HDMI (registered trademark), or coaxial cable, etc. Examples of wireless transmission include wireless LAN, Wi-Fi (registered trademark), Bluetooth (registered trademark), or millimeter wave, etc.
[0086] As the broadcasting method, for example, DVB-T2, DVB-S2, DVB-C2, ATSC3.0, or ISDB-S3 is used.
[0087] FIG. 5 is a diagram showing the configuration of a first encoding unit 4630, which is an example of an encoding unit 4613 that performs encoding according to a first encoding method. FIG. 6 is a block diagram of the first encoding unit 4630. The first encoding unit 4630 generates encoded data (encoded stream) by encoding point cloud data according to the first encoding method. The first encoding unit 4630 includes a position information encoding unit 4631, an attribute information encoding unit 4632, an additional information encoding unit 4633, and a multiplexing unit 4634.
[0088] The first encoding unit 4630 is characterized by performing encoding while being aware of the three-dimensional structure. Further, the first encoding unit 4630 is characterized in that the attribute information encoding unit 4632 performs encoding using the information obtained from the position information encoding unit 4631. The first encoding method is also called GPCC (Geometry based PCC).
[0089] 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.
[0090] The position information encoding unit 4631 generates encoded position information (Compressed Geometry), which is encoded data, by encoding the position information. For example, the position information encoding unit 4631 encodes the position information using an N-ary tree structure such as an octree. Specifically, in the octree, the target space is divided into eight nodes (sub-spaces), and 8-bit information (occupancy code) indicating whether or not each node contains a point cloud is generated. Further, the nodes containing the point cloud are further divided into eight nodes, and 8-bit information indicating whether or not each of the eight nodes contains a point cloud is generated. This process is repeated until the number of point clouds contained in a predetermined hierarchy or node is equal to or less than a threshold value.
[0091] The attribute information encoding unit 4632 generates encoded attribute information (Compressed Attribute), which is encoded data, by encoding using the configuration information generated by the position information encoding unit 4631. For example, the attribute information encoding unit 4632 determines a reference point (reference node) to be referred to in the encoding of the target point (target node) to be processed based on the octree structure generated by the position information encoding unit 4631. For example, the attribute information encoding unit 4632 refers to a node in which the parent node in the octree is the same as the target node among the surrounding nodes or adjacent nodes. Note that the method for determining the reference relationship is not limited to this.
[0092] Further, the encoding process of the attribute information may include at least one of quantization processing, prediction processing, and arithmetic encoding processing. In this case, reference means using the reference node to calculate the predicted value of the attribute information, or using the state of the reference node (for example, occupancy information indicating whether or not the reference node contains a point cloud) to determine the encoding parameter. For example, the encoding parameter is a quantization parameter in quantization processing or a context in arithmetic encoding.
[0093] The additional information encoding unit 4633 generates encoded additional information (Compressed MetaData), which is encoded data, by encoding compressible data among the additional information.
[0094] The multiplexing unit 4634 generates a compressed stream, which is encoded data, by multiplexing the encoded position information, the encoded attribute information, the encoded additional information, and other additional information. The generated compressed stream is output to a processing unit in a system layer (not shown).
[0095] Next, a first decoder 4640, which is an example of a decoder 4624 that decodes the first encoding method, will be described. FIG. 7 is a diagram showing the configuration of the first decoder 4640. FIG. 8 is a block diagram of the first decoder 4640. The first decoder 4640 generates point cloud data by decoding encoded data (compressed stream) encoded by the first encoding method using the first encoding method. The first decoder 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.
[0096] A compressed stream, which is encoded data, is input from a processing unit in a system layer (not shown) to the first decoder 4640.
[0097] The demultiplexing unit 4641 separates the encoded position information (compressed geometry), the encoded attribute information (compressed attribute), the encoded additional information (compressed metadata), and other additional information from the encoded data.
[0098] 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.
[0099] The attribute information decoding unit 4643 decodes the encoded attribute information based on the configuration information generated by the position information decoding unit 4642. For example, the attribute information decoding unit 4643 determines a reference point (reference node) to be referred to in decoding a target point (target node) to be processed based on the octree structure obtained by the position information decoding unit 4642. For example, the attribute information decoding unit 4643 refers to a node among peripheral nodes or adjacent nodes whose parent node in the octree is the same as the target node. Note that the method for determining the reference relationship is not limited to this.
[0100] Also, the decoding process of the attribute information may include at least one of an inverse quantization process, a prediction process, and an arithmetic decoding process. In this case, reference means using the reference node to calculate the predicted value of the attribute information, or using the state of the reference node (for example, occupancy information indicating whether the reference node includes a point cloud) to determine the decoding parameter. For example, the decoding parameter is a quantization parameter in the inverse quantization process or a context in the arithmetic decoding.
[0101] 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 required for the decoding processes of the position information and the attribute information during decoding and outputs the additional information required for the application to the outside.
[0102] 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.
[0103] 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.
[0104] 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).
[0105] 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).
[0106] The additional information generation unit 4651 generates map information of a plurality of two-dimensional images by projecting a three-dimensional structure onto a two-dimensional image.
[0107] 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 depth image in which distance (Depth) is indicated as a pixel value. Note that this depth image may be an image of a plurality of point clouds viewed from one viewpoint (an image obtained by projecting a plurality of point clouds onto one two-dimensional plane), or a plurality of images of a plurality of point clouds viewed from a plurality of viewpoints, or a single image obtained by integrating these plurality of images.
[0108] The attribute image generation unit 4653 generates an attribute image based on the attribute information and the map information generated by the additional information generation unit 4651. This attribute image is, for example, an image in which attribute information (e.g., color (RGB)) is indicated as a pixel value. Note that this image may be an image of a plurality of point clouds viewed from one viewpoint (an image obtained by projecting a plurality of point clouds onto one two-dimensional plane), or a plurality of images of a plurality of point clouds viewed from a plurality of viewpoints, or a single image obtained by integrating these plurality of images.
[0109] The video encoding unit 4654 generates an encoded position image (Compressed Geometry Image) and an encoded attribute image (Compressed Attribute Image), which are encoded data, by encoding the position image and the attribute image using a video encoding method. Note that any known encoding method may be used as the video encoding method. For example, the video encoding method may be AVC, HEVC, or the like.
[0110] The additional information encoding unit 4655 generates encoded additional information (Compressed MetaData) by encoding the additional information included in the point cloud data and map information or the like.
[0111] The multiplexing unit 4656 generates an encoded stream (Compressed Stream), which is encoded data, by multiplexing the encoded position image, the encoded attribute image, the encoded additional information, and other additional information. The generated encoded stream is output to a processing unit of a system layer (not shown).
[0112] Next, a second decoding unit 4660, which is an example of a decoding unit 4624 that decodes the second encoding method, will be described. FIG. 11 is a diagram showing the configuration of the second decoding unit 4660. FIG. 12 is a block diagram of the second decoding unit 4660. The second decoding unit 4660 generates point cloud data by decoding encoded data (encoded stream) encoded by the second encoding method using the second encoding method. The second decoding unit 4660 includes a demultiplexing unit 4661, a video decoding unit 4662, an additional information decoding unit 4663, a position information generation unit 4664, and an attribute information generation unit 4665.
[0113] An encoded stream (Compressed Stream), which is encoded data, is input from a processing unit of a system layer (not shown) to the second decoding unit 4660.
[0114] The inverse multiplexing 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.
[0115] The video decoding unit 4662 generates a position image and an attribute image by decoding the encoded position image and the encoded attribute image using a video encoding method. Note that any known encoding method may be used as the video encoding method. For example, the video encoding method is AVC or HEVC or the like.
[0116] The additional information decoding unit 4663 generates additional information including map information and the like by decoding the encoded additional information.
[0117] 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.
[0118] The second decoding unit 4660 uses the additional information required for decoding during decoding and outputs the additional information required for the application to the outside.
[0119] Hereinafter, problems in the PCC encoding method will be described. FIG. 13 is a diagram showing a protocol stack related to PCC encoded data. FIG. 13 shows an example in which data of other media such as video (for example, HEVC) or audio is multiplexed with the PCC encoded data and transmitted or stored.
[0120] The multiplexing method and the file format have functions for multiplexing various encoded data and transmitting or storing it. In order to transmit or store the encoded data, the encoded data must be converted into the format of the multiplexing method. For example, in HEVC, a technique of storing the encoded data in a data structure called a NAL unit and storing the NAL unit in ISOBMFF is defined.
[0121] On the one hand, currently, as encoding methods for point cloud data, a first encoding method (Codec1) and a second encoding method (Codec2) are being considered. However, the configuration of the encoded data and the method of storing the encoded data into 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.
[0122] Note that hereinafter, unless otherwise specified for a particular encoding method, it shall indicate either the first encoding method or the second encoding method.
[0123] Hereinafter, the method for defining NAL units according to this embodiment will be described. For example, in conventional codecs such as HEVC, for one codec, one format of NAL unit is defined. However, there has been no method to support a format in which two codecs (hereinafter referred to as PCC codecs), namely the first encoding method and the second encoding method, coexist like PCC.
[0124] First, an encoding unit 4670 having the functions of both the above-described first encoding unit 4630 and second encoding unit 4650, and a decoding unit 4680 having the functions of both the first decoding unit 4640 and second decoding unit 4660 will be described.
[0125] FIG. 14 is a block diagram of the encoding unit 4670 according to this embodiment. This encoding unit 4670 includes the above-described first encoding unit 4630 and second encoding unit 4650, and a multiplexing unit 4671. The multiplexing unit 4671 multiplexes the encoded data generated by the first encoding unit 4630 and the encoded data generated by the second encoding unit 4650, and outputs the obtained encoded data.
[0126] FIG. 15 is a block diagram of a decoding unit 4680 according to the present embodiment. This decoding unit 4680 includes the above-described first decoding unit 4640 and second decoding unit 4660, and a de-multiplexing unit 4681. The de-multiplexing unit 4681 extracts encoded data using the first encoding method and encoded data using the second encoding method from the input encoded data. The de-multiplexing unit 4681 outputs the encoded data using the first encoding method to the first decoding unit 4640 and outputs the encoded data using the second encoding method to the second decoding unit 4660.
[0127] With the above configuration, the encoding unit 4670 can encode point cloud data by selectively using the first encoding method and the second encoding method. Further, the decoding unit 4680 can decode encoded data encoded using the first encoding method, encoded data encoded using the second encoding method, and encoded data encoded using both the first encoding method and the second encoding method.
[0128] For example, the encoding unit 4670 may switch the encoding method (the first encoding method and the second encoding method) in units of point cloud data or in units of frames. Further, the encoding unit 4670 may switch the encoding method in units that can be encoded.
[0129] The encoding unit 4670 generates, for example, encoded data (encoding stream) including identification information of a PCC codec.
[0130] The de-multiplexing unit 4681 included in the decoding unit 4680 identifies data using, for example, the identification information of the PCC codec. When the data is data encoded by the first encoding method, the de-multiplexing unit 4681 outputs the data to the first decoding unit 4640, and when the data is data encoded by the second encoding method, the de-multiplexing unit 4681 outputs the data to the second decoding unit 4660.
[0131] Note that, in addition to the identification information of the PCC codec, the encoding unit 4670 may also send, as control information, information indicating whether both encoding methods are used or only one of the encoding methods is used.
[0132] Next, the encoding process according to this embodiment will be described. FIG. 16 is a flowchart of the encoding process according to this embodiment. By using the identification information of the PCC codec, encoding processes corresponding to multiple codecs can be performed.
[0133] First, the encoding unit 4670 encodes the PCC data using either one or both of the first encoding method and the second encoding method (S4681).
[0134] When the codec used is the second encoding method (the second encoding method in S4682), the encoding unit 4670 sets the pcc_codec_type included in the NAL unit header to a value indicating that the data included in the payload of the NAL unit is data encoded by the second encoding method (S4683). Next, the encoding unit 4670 sets the identifier of the NAL unit for the second encoding method to the pcc_nal_unit_type of the NAL unit header (S4684). Then, the encoding unit 4670 generates a NAL unit having the set NAL unit header and including the encoded data in the payload. Then, the encoding unit 4670 transmits the generated NAL unit (S4685).
[0135] On the other hand, when the used codec is the first encoding method (the first encoding method in S4682), the encoding unit 4670 sets the pcc_codec_type included in the NAL unit header to a value indicating that the data included in the payload of the NAL unit is data encoded by the first encoding method (S4686). Next, the encoding unit 4670 sets the identifier of the NAL unit for the first encoding method in the pcc_nal_unit_type included in the NAL unit header (S4687). Next, the encoding unit 4670 generates a NAL unit having the set NAL unit header and including encoded data in the payload. Then, the encoding unit 4670 transmits the generated NAL unit (S4685).
[0136] Next, the decoding process according to this embodiment will be described. FIG. 17 is a flowchart of the decoding process according to this embodiment. By using the identification information of the PCC codec, the decoding process corresponding to a plurality of codecs becomes possible.
[0137] First, the decoding unit 4680 receives a NAL unit (S4691). For example, this NAL unit is generated by the processing in the above-described encoding unit 4670.
[0138] Next, the decoding unit 4680 determines whether the pcc_codec_type included in the NAL unit header indicates the first encoding method or the second encoding method (S4692).
[0139] When the pcc_codec_type indicates the second encoding method (the second encoding method in S4692), the decoding unit 4680 determines that the data included in the payload of the NAL unit is data encoded by the second encoding method (S4693). Then, the second decoding unit 4660 identifies the data assuming that the pcc_nal_unit_type included in the NAL unit header is the identifier of the NAL unit for the second encoding method (S4694). Then, the decoding unit 4680 decodes the PCC data using the decoding process of the second encoding method (S4695).
[0140] On the one hand, when the pcc_codec_type indicates the first encoding method (the first encoding method in S4692), the decoding unit 4680 determines that the data included in the payload of the NAL unit is the data encoded by the first encoding method (S4696). Then, the decoding unit 4680 identifies the data assuming that the pcc_nal_unit_type included in the NAL unit header is the identifier of the NAL unit for the first encoding method (S4697). Then, the decoding unit 4680 decodes the PCC data using the decoding process of the first encoding method (S4698).
[0141] As described above, the three-dimensional data encoding apparatus according to one aspect of the present disclosure generates an encoded stream by encoding three-dimensional data (for example, point cloud data), and stores information indicating the encoding method used for the encoding (for example, codec identification information) in the control information (for example, parameter set) of the encoded stream, among the first encoding method and the second encoding method.
[0142] According to this, when the three-dimensional data decoding apparatus decodes the encoded stream generated by the three-dimensional data encoding apparatus, it can determine the encoding method used for the encoding using the information stored in the control information. Therefore, the three-dimensional data decoding apparatus can correctly decode the encoded stream even when a plurality of encoding methods are used.
[0143] For example, the three-dimensional data includes position information. The three-dimensional data encoding apparatus encodes the position information in the encoding. The three-dimensional data encoding apparatus stores, in the control information of the position information, information indicating the encoding method used for encoding the position information, among the first encoding method and the second encoding method.
[0144] For example, the three-dimensional data includes position information and attribute information. In the encoding, the three-dimensional data encoding device encodes the position information and the attribute information. In the storage, the three-dimensional data encoding device stores, in the control information of the position information, information indicating the encoding method used for encoding the position information among the first encoding method and the second encoding method, and stores, in the control information of the attribute information, information indicating the encoding method used for encoding the attribute information among the first encoding method and the second encoding method.
[0145] According to this, different encoding methods can be used for the position information and the attribute information, so that the encoding efficiency can be improved.
[0146] For example, the three-dimensional data encoding method further stores the encoding stream in one or more units (for example, NAL units).
[0147] For example, the unit has a format common to the first encoding method and the second encoding method, and includes information indicating the type of data included in the unit, and information having independent definitions in the first encoding method and the second encoding method (for example, pcc_nal_unit_type).
[0148] For example, the unit has a format independent of the first encoding method and the second encoding method, and includes information indicating the type of data included in the unit, and information having independent definitions in the first encoding method and the second encoding method (for example, codec1_nal_unit_type or codec2_nal_unit_type).
[0149] For example, the unit has a format common to the first encoding method and the second encoding method, and includes information indicating the type of data included in the unit, and information having common definitions in the first encoding method and the second encoding method (for example, pcc_nal_unit_type).
[0150] For example, the three-dimensional data encoding device includes a processor and a memory, and the processor performs the above processing using the memory.
[0151] In addition, the three-dimensional data decoding device according to the present embodiment determines the encoding method used for encoding the encoded stream based on information (for example, codec identification information) indicating the encoding method used for encoding the three-dimensional data, among the first encoding method and the second encoding method included in the control information (for example, parameter set) of the encoded stream generated by encoding the three-dimensional data, and decodes the encoded stream using the determined encoding method.
[0152] According to this, the three-dimensional data decoding device can determine the encoding method used for encoding using the information stored in the control information when decoding the encoded stream. Therefore, the three-dimensional data decoding device can correctly decode the encoded stream even when a plurality of encoding methods are used.
[0153] For example, the three-dimensional data includes position information, and the encoded stream includes encoded data of the position information. In the determination, the three-dimensional data decoding device determines the encoding method used for encoding the position information based on information indicating the encoding method used for encoding the position information, among the first encoding method and the second encoding method, included in the control information of the position information included in the encoded stream. In the decoding, the three-dimensional data decoding device decodes the encoded data of the position information using the determined encoding method used for encoding the position information.
[0154] For example, the three-dimensional data includes position information and attribute information, and the encoded stream includes encoded data of the position information and encoded data of the attribute information. In the determination, the three-dimensional data decoding apparatus determines the encoding method used for encoding the position information based on information indicating the encoding method used for encoding the position information, which is included in the control information of the position information included in the encoded stream, among the first encoding method and the second encoding method. The three-dimensional data decoding apparatus determines the encoding method used for encoding the attribute information based on information indicating the encoding method used for encoding the attribute information, which is included in the control information of the attribute information included in the encoded stream, among the first encoding method and the second encoding method. In the decoding, the three-dimensional data decoding apparatus decodes the encoded data of the position information using the encoding method determined for encoding the position information, and decodes the encoded data of the attribute information using the encoding method determined for encoding the attribute information.
[0155] According to this, different encoding methods can be used for the position information and the attribute information, so that the encoding efficiency can be improved.
[0156] For example, the encoded stream is stored in one or more units (for example, NAL units), and the three-dimensional data decoding apparatus further acquires the encoded stream from the one or more units.
[0157] For example, the unit has a format common to the first encoding method and the second encoding method, and includes information indicating the type of data included in the unit, and information (for example, pcc_nal_unit_type) having independent definitions in the first encoding method and the second encoding method.
[0158] For example, the unit has independent formats for the first encoding method and the second encoding method, and includes information indicating the type of data included in the unit, the information having an independent definition for the first encoding method and the second encoding method (for example, codec1_nal_unit_type or codec2_nal_unit_type).
[0159] For example, the unit has a common format for the first encoding method and the second encoding method, and includes information indicating the type of data included in the unit, the information having a common definition for the first encoding method and the second encoding method (for example, pcc_nal_unit_type).
[0160] For example, the three-dimensional data decoding device includes a processor and a memory, and the processor performs the above processing using the memory.
[0161] (Embodiment 2) In this embodiment, a method for storing NAL units in an ISOBMFF file will be described.
[0162] 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 is a standard independent of media.
[0163] 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 set of boxes of various types combined is a file.
[0164] FIG. 18 is a diagram showing the basic structure (file) of ISOBMFF. The file of ISOBMFF mainly includes a ftyp that indicates the file brand in 4CC (4-character code), a moov that stores metadata such as control information, and boxes such as an mdat that stores data.
[0165] The storage method for each media in the ISOBMFF file is separately specified. For example, the storage methods for AVC video and HEVC video are specified in ISO / IEC 14496-15. Here, in order to accumulate or transmit PCC-encoded data, it is conceivable to expand and use the functions of ISOBMFF, but there is still no regulation on storing PCC-encoded data in the ISOBMFF file. Therefore, in this embodiment, a method for storing PCC-encoded data in the ISOBMFF file will be described.
[0166] FIG. 19 is a diagram showing a protocol stack when storing NAL units common to the PCC codec in the 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 specify storage methods (Carriage of Codec1, Carriage of Codec2) according to each codec.
[0167] Next, a method for storing a common PCC NAL unit that supports a plurality of PCC codecs in the ISOBMFF file will be described. FIG. 20 is a diagram showing an example of storing a common PCC NAL unit in an ISOBMFF file with the storage method (Carriage of Codec1) of Codec 1. FIG. 21 is a diagram showing an example of storing a common PCC NAL unit in an ISOBMFF file with the storage method (Carriage of Codec2) of Codec 2.
[0168] Here, ftyp is important information for identifying the file format, and different identifiers are defined for each codec for ftyp. When PCC encoded data encoded by the first encoding method (encoding format) is stored in a file, ftyp is set to pcc1. When PCC encoded data encoded by the second encoding method is stored in a file, ftyp is set to pcc2.
[0169] Here, pcc1 indicates that codec 1 (the first encoding method) of PCC is used. pcc2 indicates that codec 2 (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).
[0170] Hereinafter, a method of storing NAL units into an ISOBMFF file will be described. The multiplexing unit analyzes the NAL unit header, and when pcc_codec_type = Codec1, it describes pcc1 in the ftyp of ISOBMFF.
[0171] Also, the multiplexing unit analyzes the NAL unit header, and when pcc_codec_type = Codec2, it describes pcc2 in the ftyp of ISOBMFF.
[0172] Also, when pcc_nal_unit_type is metadata, the multiplexing unit stores the NAL unit in a predetermined method, for example, in moov or mdat. When pcc_nal_unit_type is data, the multiplexing unit stores the NAL unit in a predetermined method, for example, in moov or mdat.
[0173] For example, the multiplexing unit may store the NAL unit size in the NAL unit in the same way as HEVC.
[0174] By using the Benner method, it is possible to determine whether the PCC-encoded data is encoded by the first encoding method or the second encoding method by analyzing the ftyp included in the file in the inverse multiplexing section (system layer). Further, as described above, by determining whether the PCC-encoded data is encoded by the first encoding method or the second encoding method, it is possible to extract the encoded data encoded by either one of the encoding methods 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 using the Benner method, a common data format can be used without setting different data (file) formats for the first encoding method and the second encoding method.
[0175] Note that when codec identification information is indicated in the metadata of the system layer, such as ftyp in ISOBMFF, the multiplexing section may store the NAL unit with pcc_nal_unit_type removed in the ISOBMFF file.
[0176] Next, the configuration and operation of the multiplexing section included in the three-dimensional data encoding system (three-dimensional data encoding apparatus) according to the present embodiment, and the inverse multiplexing section included in the three-dimensional data decoding system (three-dimensional data decoding apparatus) according to the present embodiment will be described.
[0177] FIG. 22 is a diagram showing the configuration of the first multiplexing section 4710. The first multiplexing section 4710 includes a file conversion section 4711 that generates multiplexed data (file) by storing the encoded data and control information (NAL unit) generated by the first encoding section 4630 in an ISOBMFF file. This first multiplexing section 4710 is included, for example, in the multiplexing section 4614 shown in FIG. 1.
[0178] FIG. 23 is a diagram showing the configuration of the first demultiplexing unit 4720. The first demultiplexing unit 4720 includes a file inverse conversion unit 4721 that acquires encoded data and control information (NAL unit) from multiplexed data (file) and outputs the acquired encoded data and control information to the first decoding unit 4640. This first demultiplexing unit 4720 is included in, for example, the demultiplexing unit 4623 shown in FIG. 1.
[0179] FIG. 24 is a diagram showing the configuration of the second multiplexing unit 4730. The second multiplexing unit 4730 includes a file conversion unit 4731 that generates multiplexed data (file) by storing the 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.
[0180] FIG. 25 is a diagram showing the configuration of the second demultiplexing unit 4740. The second demultiplexing unit 4740 includes a file inverse conversion unit 4741 that acquires encoded data and control information (NAL unit) from multiplexed data (file) and outputs the acquired encoded data and control information to the second decoding unit 4660. This second demultiplexing unit 4740 is included in, for example, the demultiplexing unit 4623 shown in FIG. 1.
[0181] FIG. 26 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).
[0182] When pcc_codec_type indicates the second encoding method (second encoding method in S4702), the first multiplexing unit 4710 does not process the NAL unit (S4703).
[0183] On the other hand, when the pcc_codec_type indicates the second encoding method (the first encoding method in S4702), the first multiplexing unit 4710 describes pcc1 in the ftyp (S4704). That is, the first multiplexing unit 4710 describes in the ftyp information indicating that the data encoded by the first encoding method is stored in the file.
[0184] Next, the first multiplexing unit 4710 analyzes the pcc_nal_unit_type included in the NAL unit header and stores the data in a box (such as moov or mdat) in a predetermined method according to the data type indicated by the pcc_nal_unit_type (S4705). Then, the first multiplexing unit 4710 creates an ISOBMFF file including the above ftyp and the above box (S4706).
[0185] FIG. 27 is a flowchart of the multiplexing process by the second multiplexing unit 4730. First, the second multiplexing unit 4730 determines whether the codec used is the first encoding method or the second encoding method by analyzing the pcc_codec_type included in the NAL unit header (S4711).
[0186] When the pcc_unit_type indicates the second encoding method (the second encoding method in S4712), the second multiplexing unit 4730 describes pcc2 in the ftyp (S4713). That is, the second multiplexing unit 4730 describes in the ftyp information indicating that the data encoded by the second encoding method is stored in the file.
[0187] 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).
[0188] 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).
[0189] Note that the above processing shows an example of encoding PCC data by either the first encoding method or the second encoding method. The first multiplexing unit 4710 and the second multiplexing unit 4730 store the desired NAL unit in a file by identifying the codec type of the NAL unit. 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.
[0190] 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.
[0191] FIG. 28 is a flowchart showing the processing by the first demultiplexing unit 4720 and the first decoding unit 4640. First, the first demultiplexing unit 4720 analyzes the ftyp included in the file of the ISOBMFF (S4721). When the codec indicated by the ftyp is the second encoding method (pcc2) (the second encoding method in S4722), the first demultiplexing unit 4720 determines that the data included in the payload of the NAL unit is 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).
[0192] On the one hand, when the codec indicated by ftyp is the first encoding method (pcc1) (the first encoding method in S4722), the first demultiplexing unit 4720 determines that the data included in the payload of the NAL unit is data encoded by the first encoding method (S4725). Further, the first demultiplexing unit 4720 transmits the result of the determination to the first decoding unit 4640.
[0193] 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).
[0194] FIG. 29 is a flowchart showing the processing by the second demultiplexing unit 4740 and the second decoding unit 4660. First, the second demultiplexing unit 4740 analyzes the ftyp included in the ISOBMFF file (S4731). When the codec indicated by ftyp is the second encoding method (pcc2) (the second encoding method in S4732), the second demultiplexing unit 4740 determines that the data included in the payload of the NAL unit is data encoded by the second encoding method (S4733). Further, the second demultiplexing unit 4740 transmits the result of the determination to the second decoding unit 4660.
[0195] The second decoding unit 4660 identifies the data assuming that the pcc_nal_unit_type included in the NAL unit header is an identifier of the NAL unit for the second encoding method (S4734). Then, the second decoding unit 4660 decodes the PCC data using the decoding process of the second encoding method (S4735).
[0196] On the one hand, when the codec indicated by ftyp is the first encoding method (pcc1) (the first encoding method in S4732), the second demultiplexing unit 4740 determines that the data included in the payload of the NAL unit is data encoded by the first encoding method (S4736). Further, the second demultiplexing unit 4740 transmits the result of the determination to the second decoding unit 4660. The second decoding unit 4660 does not process the NAL unit (S4737).
[0197] In this way, for example, in the first demultiplexing unit 4720 or the second demultiplexing unit 4740, by identifying the codec type of the NAL unit, the codec type can be identified at an early stage. Further, a desired NAL unit can be input to the first decoding unit 4640 or the second decoding unit 4660, and unnecessary NAL units can be removed. In this case, in the first decoding unit 4640 or the second decoding unit 4660, the process of analyzing the identification information of the codec may become unnecessary. Note that the process of analyzing the identification information of the codec by referring to the NAL unit type again in the first decoding unit 4640 or the second decoding unit 4660 may also be performed.
[0198] Also, when pcc_nal_unit_type is deleted from the NAL unit header in the first multiplexing unit 4710 or the second multiplexing unit 4730, the first demultiplexing unit 4720 or the second demultiplexing unit 4740 may attach pcc_nal_unit_type to the NAL unit and then output it to the first decoding unit 4640 or the second decoding unit 4660.
[0199] (Embodiment 3) In this embodiment, the multiplexing unit and the demultiplexing unit corresponding to the encoding unit 4670 and the decoding unit 4680 corresponding to a plurality of codecs described in Embodiment 1 will be described. FIG. 30 is a diagram showing the configuration of the encoding unit 4670 and the third multiplexing unit 4750 according to this embodiment.
[0200] The symbolization unit 4670 symbolizes the point cloud data using either one or both of the first symbolization method and the second symbolization method. The symbolization unit 4670 may switch the symbolization method (the first symbolization method and the second symbolization method) in units of point cloud data or in units of frames. Also, the symbolization unit 4670 may switch the symbolization method in symbolizable units.
[0201] The symbolization unit 4670 generates encoded data (encoded stream) including the identification information of the PCC codec.
[0202] The third multiplexing unit 4750 includes a file conversion unit 4751. The file conversion unit 4751 converts the NAL unit output from the symbolization unit 4670 into a file of PCC data. The file conversion unit 4751 analyzes the codec identification information included in the NAL unit header, and determines whether the PCC encoded data is data encoded by the first symbolization method, data encoded by the second symbolization 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.
[0203] Note that when the symbolization unit 4670 describes the identification information of the PCC codec in addition to the NAL unit, the file conversion unit 4751 may determine the PCC codec (symbolization method) using the identification information.
[0204] FIG. 31 is a diagram showing the configuration of the third demultiplexing unit 4760 and the decoding unit 4680 according to the present embodiment.
[0205] 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 symbolization method, data encoded by the second symbolization method, or data encoded by both methods.
[0206] When the PCC encoded data is encoded by either one of the encoding methods, among the first decoder 4640 and the second decoder 4660, data is input to the corresponding decoder, and no data is input to the other decoder. When the PCC encoded data is encoded by both encoding methods, data is input to the decoder 4680 corresponding to both methods.
[0207] The decoder 4680 decodes the PCC encoded data using either one or both of the first encoding method and the second encoding method.
[0208] FIG. 32 is a flowchart showing the processing by the third multiplexing unit 4750 according to the present embodiment.
[0209] 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).
[0210] When the second encoding method is used (Yes in S4742 and the second encoding method in S4743), the third multiplexing unit 4750 describes pcc2 in the ftyp (S4744). That is, the third multiplexing unit 4750 describes information indicating that the data encoded by the second encoding method is stored in the file in the ftyp.
[0211] 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).
[0212] 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 data encoded by the first encoding method is stored in the file in the ftyp.
[0213] Next, the third multiplexing unit 4750 analyzes pcc_nal_unit_type included in the NAL unit header and stores the data in a box (such as moov or mdat) in a predetermined method according to the data type indicated by pcc_unit_type (S4748). Then, the third multiplexing unit 4750 creates an ISOBMFF file including the above ftyp and the above box (S4746).
[0214] 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 data encoded by both encoding methods is stored in the file in the ftyp.
[0215] Next, the third multiplexing unit 4750 analyzes pcc_nal_unit_type included in the NAL unit header and stores the data in a box (such as moov or mdat) in a predetermined method according to the data type indicated by pcc_unit_type (S4750). Then, the third multiplexing unit 4750 creates an ISOBMFF file including the above ftyp and the above box (S4746).
[0216] FIG. 33 is a flowchart showing the processing by the third demultiplexing unit 4760 and the decoding unit 4680. First, the third demultiplexing unit 4760 analyzes 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 demultiplexing unit 4760 determines that the data included in the payload of the NAL unit is data encoded by the second encoding method (S4764). Further, the third demultiplexing unit 4760 transmits the result of the determination to the decoding unit 4680.
[0217] 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).
[0218] 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 demultiplexing unit 4760 determines that the data included in the payload of the NAL unit is data encoded by the first encoding method (S4767). Further, the third demultiplexing unit 4760 transmits the result of the determination to the decoding unit 4680.
[0219] 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).
[0220] On the other hand, when it is shown that both encoding methods are used in ftyp (pcc3) (No in S4762), the third demultiplexing unit 4760 determines that the data included in the payload of the NAL unit is data encoded by both the first encoding method and the second encoding method (S4770). Further, the third demultiplexing unit 4760 transmits the result of the determination to the decoding unit 4680.
[0221] 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.
[0222] Hereinafter, a modification example of the present embodiment will be described. As the types of brands indicated in ftyp, the following types may be indicated by identification information. Also, combinations of the following multiple types may be indicated by identification information.
[0223] 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.
[0224] The identification information may indicate whether the original data before PCC encoding is a static object or a dynamic object.
[0225] 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.
[0226] 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.
[0227] 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.
[0228] 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.
[0229] Also, in the above, an example in which metadata such as identification information is stored 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.
[0230] As described above, the three-dimensional data storage device (or three-dimensional data multiplexing device, or three-dimensional data encoding device) performs the processing shown in FIG. 34.
[0231] 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.
[0232] 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 or speed up the processing of the apparatus.
[0233] For example, the information further indicates an encoding method used for encoding the point cloud data among the first encoding method and the second encoding method. Note that the fact that the data stored in the file is data obtained by encoding point cloud data and the encoding method used for encoding the point cloud data among the first encoding method and the second encoding method may be indicated by single information or different information.
[0234] 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 or speed up the processing of the apparatus.
[0235] 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.
[0236] For example, the file conforms to ISOBMFF (ISO based media file format).
[0237] For example, the three-dimensional data storage device includes a processor and a memory, and the processor performs the above processing using the memory.
[0238] Further, as described above, the three-dimensional data acquisition device (or three-dimensional data demultiplexing device, or three-dimensional data decoding device) performs the process shown in FIG. 35.
[0239] The three-dimensional data acquisition device (for example, including the first demultiplexing unit 4720, the second demultiplexing unit 4740, or the third demultiplexing unit 4760) acquires a file (for example, an ISOBMFF file) in which one or more units (for example, NAL units) storing an encoded stream in which point cloud data is encoded are stored (S4791). Next, the three-dimensional data acquisition device acquires one or more units from the file (S4792). Further, the control information (for example, ftyp) of the file includes information (for example, pcc1, pcc2, or pcc3) indicating that the data stored in the file is data in which point cloud data is encoded.
[0240] For example, the three-dimensional data acquisition device determines whether the data stored in the file is data in which point cloud data is encoded by referring to the information. Further, 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. Alternatively, 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).
[0241] 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.
[0242] 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 whether the encoding method used for encoding the point cloud data among the first encoding method and the second encoding method is indicated by a single piece of information or different pieces of information may vary.
[0243] According to this, the three-dimensional data acquisition device can quickly determine the codec used for the data stored in the file by referring to the control information of the file. Therefore, it is possible to reduce the processing amount or speed up the processing of the three-dimensional data acquisition device or the subsequent device.
[0244] For example, based on the information, the three-dimensional data acquisition device acquires data encoded by 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.
[0245] For example, the first encoding method is a method (GPCC) that encodes position information representing the positions 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.
[0246] For example, the file conforms to ISOBMFF (ISO based media file format).
[0247] For example, the three-dimensional data acquisition device includes a processor and a memory, and the processor performs the above processing using the memory.
[0248] (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.
[0249] In this embodiment, the dynamic object (three-dimensional point cloud data that changes over time) described with reference to FIG. 4 will be described as an example, but the same method may be used for a static object (three-dimensional point cloud data at an arbitrary time).
[0250] FIG. 36 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 46456.
[0251] 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.
[0252] 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).
[0253] FIG. 37 is a diagram showing a configuration example of encoded data generated by the encoding unit 4801. The arrows in the figure indicate the dependency relationships related to the decoding of the encoded data, and the 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, dependency means that the data at the destination is referenced (used) in the processing (encoding or decoding, etc.) of the data at the source.
[0254] 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.
[0255] 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.
[0256] Furthermore, 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 of a plurality of frames within the position sequence. The position sequence depends on the position SPS.
[0257] Next, the generation process of the encoded data of the attribute information will be described. The encoding unit 4801 generates encoded attribute data (Compressed Attribute Data) for each frame by encoding the attribute information of each frame. Also, the encoded attribute data is represented by A(i). Further, in FIG. 37, an example where there are attribute X and attribute Y is shown, and the encoded attribute data of attribute X is represented by AX(i), and the encoded attribute data of attribute Y is represented by AY(i).
[0258] 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.
[0259] Also, the encoded attribute data consisting of a plurality of frames is defined as an attribute sequence. The encoding unit 4801 generates an attribute sequence parameter set (also denoted as Attribute Sequence PS: Attribute SPS) that stores parameters commonly used for the decoding process for a plurality of frames within the attribute sequence. The attribute sequence depends on the Attribute SPS.
[0260] Also, in the first encoding method, the encoded attribute data depends on the encoding position data.
[0261] Also, FIG. 37 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.
[0262] Note that, in FIG. 37, 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. Also in this case, encoded data can be generated in the same way. Further, 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 generate a parameter set related to the attribute information.
[0263] Next, the generation process of additional information (metadata) will be described. The encoding unit 4801 generates a PCC stream PS (also denoted as stream PS), which is a parameter set for the entire PCC stream. The encoding unit 4801 stores in the stream PS parameters that can be commonly used for the decoding process of one or more position sequences and one or more attribute sequences. For example, the stream PS includes identification information indicating the codec of the point cloud data, information indicating the algorithm used for encoding, and the like. The position sequence and the attribute sequence depend on the stream PS.
[0264] Next, the access unit and the GOF will be described. In the present embodiment, the concepts of a new access unit (Access Unit: AU) and a GOF (Group of Frame) are introduced.
[0265] 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.
[0266] 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.
[0267] 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 an access unit. The decoding device identifies the start of an access unit by detecting the access unit header or the access unit delimiter.
[0268] Next, the generation of the identification information at the start of a GOP is 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.
[0269] 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 a GOP. The decoding device identifies the start of a GOP by detecting the GOP header or the GOP delimiter.
[0270] In the PCC encoded data, for example, an access unit is defined as a PCC frame unit. The decoding device accesses the PCC frame based on the identification information at the start of the access unit.
[0271] 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, a PCC frame may be defined as a random access unit.
[0272] Note that two or more PCC frames may be assigned to one access unit, or a plurality of random access units may be assigned to one GOF.
[0273] 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.
[0274] Next, the configuration of the encoded data and the method of storing the encoded data in the NAL unit will be described.
[0275] For example, a data format is defined for each type of encoded data. FIG. 38 is a diagram showing an example of encoded data and NAL units.
[0276] For example, as shown in FIG. 38, 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.
[0277] The header includes, for example, identification information for specifying the data. This identification information indicates, for example, the data type or the frame number.
[0278] 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.
[0279] 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.
[0280] 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. 39 is a diagram showing an example of the semantics of pcc_nal_unit_type.
[0281] As shown in FIG. 39, 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 to the reserve of Codec1.
[0282] 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 to the reserve of Codec2.
[0283] Next, the data transmission order will be described. Hereinafter, the constraints on the transmission order of NAL units will be described.
[0284] The multiplexing unit 4802 transmits NAL units in groups of GOF or AU. The multiplexing unit 4802 places a GOF header at the head of the GOF and an AU header at the head of the AU.
[0285] Even if data is lost due to packet loss or the like, the multiplexing unit 4802 may arrange the sequence parameter set (SPS) for each AU so that the decoding device can decode from the next AU.
[0286] When there is a dependency relationship related to decoding in the encoded data, the decoding device decodes the reference destination data and then decodes the reference source data. In the decoding device, in order to be able to decode in the received order without rearranging the data, the multiplexing unit 4802 transmits the reference destination data first.
[0287] Figure 40 is a diagram showing an example of the transmission order of NAL units. Figure 40 shows three examples: position information priority, parameter priority, and data integration.
[0288] 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.
[0289] For example, by using this transmission order, a decoder that does not decrypt the attribute information may be able to provide a time for not processing by ignoring the decryption of the attribute information. Also, for example, in the case of a decoder that wants to quickly decrypt the position information, it may be possible to more quickly decrypt the position information by obtaining the encoded data of the position information earlier.
[0290] Note that in FIG. 40, 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 separately arranged.
[0291] In the transmission order with parameter set priority, the parameter set is transmitted first and the data is transmitted later.
[0292] 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 units is stored in the stream PS.
[0293] The three-dimensional data decoder may perform decoding based on the order identification information. A desired transmission order is instructed from the three-dimensional data decoder to the three-dimensional data encoder, and the three-dimensional data encoder (multiplexing unit 4802) may control the transmission order according to the instructed transmission order.
[0294] Note that the multiplexing unit 4802 may generate encoded data by merging a plurality of functions 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. 40, the GOF header and the AU header may be integrated, or the AXPS and the AYPS may be integrated. In this case, an identifier indicating that the data has a plurality of functions is defined in the pcc_nal_unit_type.
[0295] 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. When 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.
[0296] The value of the default PS is indicated by the higher-level PS. Also, when the value of the lower-level PS is different from the value of the higher-level PS, the value of the PS is indicated by the lower-level PS. Alternatively, the value of the PS is not described at the higher level, and the value of the PS is described in the lower-level PS. Alternatively, information indicating whether the value of the PS is indicated by the lower-level PS, the higher-level PS, or both is indicated in either or both of the lower-level PS and the higher-level PS. Alternatively, the lower-level PS may be merged into the higher-level PS. Alternatively, when the lower-level PS and the higher-level PS overlap, the multiplexing unit 4802 may omit the transmission of either one.
[0297] 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 for storing data or parameters related to tiles or slices is defined.
[0298] Hereinafter, the processing related to the order identification information will be described. FIG. 41 is a flowchart of the processing by the three-dimensional data encoding device (encoding unit 4801 and multiplexing unit 4802) related to the transmission order of the NAL unit.
[0299] First, the three-dimensional data encoding device determines the transmission order (position information priority or parameter set priority) of the NAL unit (S4801). For example, the three-dimensional data encoding device determines the transmission order based on a specification from a user or an external device (e.g., a three-dimensional data decoding device).
[0300] When the determined transmission order is position information priority (position information priority in S4802), the three-dimensional data encoding device sets the order identification information included in the stream PS to position information priority (S4803). That is, in this case, the order identification information indicates that the NAL units are transmitted in the order of position information priority. Then, the three-dimensional data encoding device transmits the NAL units in the order of position information priority (S4804).
[0301] On the other hand, when the determined transmission order is parameter set priority (parameter set priority in S4802), the three-dimensional data encoding device sets the order identification information included in the stream PS to parameter set priority (S4805). That is, in this case, the order identification information indicates that the NAL units are transmitted in the order of parameter set priority. Then, the three-dimensional data encoding device transmits the NAL units in the order of parameter set priority (S4806).
[0302] FIG. 42 is a flowchart of the processing by the three-dimensional data decoding device regarding the transmission order of the NAL units. First, the three-dimensional data decoding device analyzes the order identification information included in the stream PS (S4811).
[0303] When the transmission order indicated by the order identification information is position information priority (position information priority in S4812), the three-dimensional data decoding device decodes the NAL units assuming that the transmission order of the NAL units is position information priority (S4813).
[0304] On the other hand, when the transmission order indicated by the order identification information is parameter set priority (parameter set priority in S4812), the three-dimensional data decoding device decodes the NAL units assuming that the transmission order of the NAL units is parameter set priority (S4814).
[0305] For example, when the three-dimensional data decoding device does not decode the attribute information, in step S4813, instead of acquiring all NAL units, it may acquire the NAL units related to the position information and decode the position information from the acquired NAL units.
[0306] Next, the processing related to the generation of AUs and GOFs will be described. FIG. 43 is a flowchart of the processing by the three-dimensional data encoding device (multiplexing unit 4802) related to the generation of AUs and GOFs in the multiplexing of NAL units.
[0307] First, the three-dimensional data encoding device determines the type of the encoded data (S4821). Specifically, the three-dimensional data encoding device determines whether the encoded data to be processed is the data at the head of an AU, the data at the head of a GOF, or other data.
[0308] When the encoded data is the data at the head of a GOF (GOF head in S4822), the three-dimensional data encoding device generates an NAL unit by arranging the GOF header and the AU header at the head of the encoded data belonging to the GOF (S4823).
[0309] When the encoded data is the data at the head of an AU (AU head in S4822), the three-dimensional data encoding device generates an NAL unit by arranging the AU header at the head of the encoded data belonging to the AU (S4824).
[0310] When the encoded data is neither at the head of a GOF nor at the head of an AU (neither GOF head nor AU head in S4822), the three-dimensional data encoding device generates an NAL unit by arranging the encoded data after the AU header of the AU to which the encoded data belongs (S4825).
[0311] Next, the processing related to the access to AUs and GOFs will be described. FIG. 44 is a flowchart of the processing of the three-dimensional data decoding device related to the access to AUs and GOFs in the demultiplexing of NAL units.
[0312] First, the three-dimensional data decoding device determines the type of encoded data included in the NAL unit by analyzing the nal_unit_type included in the NAL unit (S4831). Specifically, the three-dimensional data decoding device determines whether the encoded data included in the NAL unit is data at the head of an AU, data at the head of a GOP, or other data.
[0313] When the encoded data included in the NAL unit is data at the head of a GOP (GOP head in S4832), the three-dimensional data decoding device determines that the NAL unit is the start position of random access, accesses the NAL unit, and starts the decoding process (S4833).
[0314] On the other hand, when the encoded data included in the NAL unit is data at the head of an AU (AU head in S4832), the three-dimensional data decoding device determines that the NAL unit is at the head of an AU, accesses the data included in the NAL unit, and decodes the AU (S4834).
[0315] On the other hand, when the encoded data included in the NAL unit is neither at the head of a GOP nor at the head of an AU (neither GOP head nor AU head in S4832), the three-dimensional data decoding device does not process the NAL unit.
[0316] As described above, the three-dimensional data encoding device performs the processing shown in FIG. 45. The three-dimensional data encoding device encodes time-series three-dimensional data (for example, point cloud data of a dynamic object). The three-dimensional data includes position information and attribute information for each time.
[0317] First, the three-dimensional data encoding device encodes the position information (S4841). Next, the three-dimensional data encoding device encodes the attribute information of the processing target with reference to the position information at the same time as the attribute information of the processing target (S4842). Here, as shown in FIG. 37, the position information and the attribute information at the same time constitute an access unit (AU). That is, the three-dimensional data encoding device encodes the attribute information of the processing target with reference to the position information included in the same access unit as the attribute information of the processing target.
[0318] According to this, the three-dimensional data encoding device can facilitate the control of reference in encoding using the access unit. Therefore, the three-dimensional data encoding device can reduce the processing amount of the encoding process.
[0319] For example, the three-dimensional data encoding device generates a bit stream including the encoded position information (encoded position data), the encoded attribute information (encoded attribute data), and information indicating the reference destination position information of the attribute information of the processing target.
[0320] For example, the bit stream includes a position parameter set (position PS) including control information of the position information at each time and an attribute parameter set (attribute PS) including control information of the attribute information at each time.
[0321] For example, the bit stream includes a position sequence parameter set (position SPS) including control information common to the position information at a plurality of times and an attribute sequence parameter set (attribute SPS) including control information common to the attribute information at a plurality of times.
[0322] For example, the bit stream includes a stream parameter set (stream PS) including control information common to the position information at a plurality of times and the attribute information at a plurality of times.
[0323] For example, the bit stream includes an access unit header (AU header) including control information common within the access unit.
[0324] For example, a three-dimensional data encoding device encodes a GOF (Group of Frames) composed of one or more access units so that it can be independently decoded. That is, the GOF is a random access unit.
[0325] For example, a bit stream includes a GOF header that contains common control information within the GOF.
[0326] For example, a three-dimensional data encoding device includes a processor and a memory, and the processor uses the memory to perform the above processing.
[0327] Also, as described above, a three-dimensional data decoding device performs the processing shown in FIG. 46. The three-dimensional data decoding device decodes time-series three-dimensional data (for example, point cloud data of a dynamic object). The three-dimensional data includes position information and attribute information for each time. The position information and the attribute information at the same time constitute an access unit (AU).
[0328] First, the three-dimensional data decoding device decodes position information from the bit stream (S4851). That is, the three-dimensional data decoding device generates position information by decoding the encoded position information (encoded position data) included in the bit stream.
[0329] Next, the three-dimensional data decoding device decodes the attribute information to be processed from the bit stream with reference to the position information at the same time as the attribute information to be processed (S4852). That is, the three-dimensional data decoding device generates attribute information by decoding the encoded attribute information (encoded attribute data) included in the bit stream. At this time, the three-dimensional data decoding device refers to the decoded position information included in the same access unit as the attribute information.
[0330] According to this, the three-dimensional data decoding device can facilitate the control of reference in decoding using the access unit. Therefore, the three-dimensional data decoding method can reduce the processing amount of the decoding process.
[0331] For example, a three-dimensional data decoding device acquires information indicating the position information of the reference destination of the attribute information to be processed from a bit stream, and decodes the attribute information to be processed by referring to the position information of the reference destination indicated by the acquired information.
[0332] For example, the bit stream includes a position parameter set (position PS) including control information of position information at each time, and an attribute parameter set (attribute PS) including control information of attribute information at each time. That is, the three-dimensional data decoding device decodes the position information at the processing target time using the control information included in the position parameter set at the processing target time, and decodes the attribute information at the processing target time using the control information included in the attribute parameter set at the processing target time.
[0333] For example, the bit stream includes a position sequence parameter set (position SPS) including control information common to the position information at a plurality of times, and an attribute sequence parameter set (attribute SPS) including control information common to the attribute information at a plurality of times. That is, the three-dimensional data decoding device decodes the position information at a plurality of times using the control information included in the position sequence parameter set, and decodes the attribute information at a plurality of times using the control information included in the attribute sequence parameter set.
[0334] For example, the bit stream includes a stream parameter set (stream PS) including control information common to the position information at a plurality of times and the attribute information at a plurality of times. That is, the three-dimensional data decoding device decodes the position information at a plurality of times and the attribute information at a plurality of times using the control information included in the stream parameter set.
[0335] For example, the bit stream includes an access unit header (AU header) including control information common within the access unit. That is, the three-dimensional data decoding device decodes the position information and the attribute information included in the access unit using the control information included in the access unit header.
[0336] For example, the three-dimensional data decoder independently decodes a GOF (Group of Frames) composed of one or more access units. That is, the GOF is a random access unit.
[0337] For example, the bitstream includes a GOF header containing common control information within the GOF. That is, the three-dimensional data decoder decodes the position information and attribute information included in the GOF using the control information included in the GOF header.
[0338] For example, the three-dimensional data decoder includes a processor and a memory, and the processor performs the above processing using the memory.
[0339] (Embodiment 5) Next, the configuration of the division unit 4911 will be described. FIG. 47 is a block diagram of the division unit 4911. The division unit 4911 includes a slice division unit 4931 (Slice Divider), a position information tile division unit 4932 (Geometry Tile Divider), and an attribute information tile division unit 4933 (Attribute Tile Divider).
[0340] The slice division unit 4931 generates a plurality of slice position information by dividing the position information (Position(Geometry)) into slices. Also, the slice division unit 4931 generates a plurality of slice attribute information by dividing the attribute information (Attribute) into slices. Further, the slice division unit 4931 outputs slice additional information (SliceMetaData) including information related to slice division and information generated in slice division.
[0341] The position information tile division unit 4932 generates a plurality of divided position information (a plurality of tile position information) by dividing the plurality of slice position information into tiles. Also, the position information tile division unit 4932 outputs position tile additional information (Geometry Tile MetaData) including information related to the tile division of the position information and information generated in the tile division of the position information.
[0342] The attribute information tile division unit 4933 generates a plurality of divided attribute information (a plurality of tile attribute information) by dividing a plurality of slice attribute information into tiles. Further, the attribute information tile division unit 4933 outputs attribute tile additional information (Attribute Tile MetaData) including information related to the tile division of the attribute information and information generated in the tile division of the attribute information.
[0343] Note that the number of slices or tiles to be divided is 1 or more. That is, it is not necessary to perform slicing or tiling.
[0344] Also, here, an example in which tile division is performed after slice division is shown, but slice division may be performed after tile division. Further, in addition to slices and tiles, a new division type may be defined, and division may be performed with three or more division types.
[0345] Hereinafter, a method for dividing point cloud data will be described. FIG. 48 is a diagram showing an example of slice and tile division.
[0346] First, a method for slice division will be described. The division unit 4911 divides the three-dimensional point cloud data into arbitrary point clouds in slice units. The division unit 4911 does not divide the position information and the attribute information that constitute the points in the slice division, but divides the position information and the attribute information together. That is, the division unit 4911 performs slice division so that the position information and the attribute information at an arbitrary point belong to the same slice. Note that according to these, the number of divisions and the division method may be any method. Also, the minimum unit of division is a point. For example, the number of divisions of the position information and the attribute information is the same. For example, the three-dimensional point corresponding to the position information after slice division and the three-dimensional point corresponding to the attribute information are included in the same slice.
[0347] Further, the splitting unit 4911 generates slice additional information, which is additional information related to the number of splits and the splitting method during slice splitting. The slice additional information is identical in terms of position information and attribute information. For example, the slice additional information includes information indicating the reference coordinate position, size, or side length of the bounding box after splitting. The slice additional information also includes information indicating the number of splits, the split type, and the like.
[0348] Next, the method of tile splitting will be described. The splitting unit 4911 splits the slice-split data into slice position information (G-slice) and slice attribute information (A-slice), and splits the slice position information and the slice attribute information into tile units respectively.
[0349] Note that in FIG. 48, an example of splitting in an octree structure is shown, but the number of splits and the splitting method may be any method.
[0350] Further, the splitting unit 4911 may split the position information and the attribute information by different splitting methods or by the same splitting method. Also, the splitting unit 4911 may split a plurality of slices into tiles by different splitting methods or by the same splitting method.
[0351] Also, the splitting unit 4911 generates tile additional information related to the number of splits and the splitting method during tile splitting. The tile additional information (position tile additional information and attribute tile additional information) is independent of the position information and the attribute information. For example, the tile additional information includes information indicating the reference coordinate position, size, or side length of the bounding box after splitting. The tile additional information also includes information indicating the number of splits, the split type, and the like.
[0352] Next, an example of a method for splitting point cloud data into slices or tiles will be described. The splitting unit 4911 may use a predetermined method as the method of slice or tile splitting, or may adaptively switch the method used according to the point cloud data.
[0353] At the time of slice division, the dividing unit 4911 divides the three-dimensional space all at once with respect to the position information and the attribute information. For example, the dividing unit 4911 determines the shape of the object, and divides the three-dimensional space into slices according to the shape of the object. For example, the dividing unit 4911 extracts an object such as a tree or a building, and performs division in units of objects. For example, the dividing unit 4911 performs slice division so that the whole of one or a plurality of objects is included in one slice. Or, the dividing unit 4911 divides one object into a plurality of slices.
[0354] 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 additional information (metadata).
[0355] Also, the dividing unit 4911 may perform slice division so that each slice corresponds to a predetermined coordinate space based on the map information or the position information.
[0356] At the time of tile division, the dividing unit 4911 divides the position information and the attribute information independently. For example, the dividing unit 4911 divides the slices into tiles according to the data amount or the processing amount. For example, the dividing unit 4911 determines whether the data amount of the slice (for example, the number of three-dimensional points included in the slice) is more than a predetermined threshold value. The dividing unit 4911 divides the slice into tiles when the data amount of the slice is more than the threshold value. The dividing unit 4911 does not divide the slice into tiles when the data amount of the slice is less than the threshold value.
[0357] For example, the dividing unit 4911 divides the slices into tiles so that the processing amount or the processing time in the decoding device is within a certain range (equal to or less than a predetermined value). Thereby, the processing amount per tile in the decoding device becomes constant, and distributed processing in the decoding device becomes easy.
[0358] In addition, when the processing amounts differ between the position information and the attribute information, for example, when the processing amount of the position information is larger than that of the attribute information, the splitting unit 4911 increases the number of splits of the position information compared to the number of splits of the attribute information.
[0359] Also, for example, when the content allows the decoding device to quickly decode and display the position information and then slowly decode and display the attribute information later, the splitting unit 4911 may increase the number of splits of the position information compared to the number of splits of the attribute information. As a result, 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.
[0360] Note that the decoding device does not necessarily have to perform parallel processing on the sliced or tiled data, and may determine whether to perform parallel processing on them according to the number or capabilities of the decoding processing units.
[0361] By splitting 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.
[0362] FIG. 49 is a diagram showing an example of a pattern of slice and tile splitting. 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.
[0363] In Pattern 1, in slice splitting, the number of splits and the splitting method are the same for the G slice and the A slice. In tile splitting, the number of splits and the splitting method for the G slice are different from those for the A slice. Also, the same number of splits and the same splitting method are used among multiple G slices. The same number of splits and the same splitting method are used among multiple A slices.
[0364] 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.
[0365] (Embodiment 6) In order to divide point cloud data into tiles and slices and efficiently encode or decode the divided data, it is necessary to appropriately control on the encoding side and the decoding side. By making the encoding and decoding of the divided data independent without dependencies between the divided data, a multi-thread or multi-core processor can be used to process the divided data in parallel in each thread / core, improving performance.
[0366] There are various methods for dividing point cloud data into tiles and slices. For example, there is a method of dividing based on attributes of an object of the point cloud data such as a road surface or characteristics such as color information such as the green of the point cloud data.
[0367] CABAC is an abbreviation for Context-Based Adaptive Binary Arithmetic Coding, which is an encoding method that improves the accuracy of probability by sequentially updating a context (a model for estimating the occurrence probability of an input binary symbol) based on the encoded information, and realizes arithmetic coding (entropy coding) with a high compression rate.
[0368] In order to perform parallel processing on divided data such as tiles or slices, it is necessary to be able to encode or decode each divided data independently. However, in order to make CABAC independent between the divided data, it is necessary to initialize CABAC at the beginning of the divided data in encoding and decoding, but there is no such mechanism.
[0369] The CABAC initialization flag is used to initialize CABAC in CABAC encoding and decoding.
[0370] FIG. 50 is a flowchart showing the process of initializing CABAC in encoding or decoding according to the CABAC initialization flag.
[0371] The three-dimensional data encoding device or the three-dimensional data decoding device determines whether the CABAC initialization flag is 1 in encoding or decoding (S5201).
[0372] When the CABAC initialization flag is 1 (Yes in S5201), the three-dimensional data encoding device or the three-dimensional data decoding device initializes the CABAC encoding / decoding unit to the default state (S5202) and continues the encoding or decoding.
[0373] When the CABAC initialization flag is not 1 (No in S5201), the three-dimensional data encoding device or the three-dimensional data decoding device continues the encoding or decoding without initialization.
[0374] That is, when initializing CABAC, set CABAC_init_flag = 1 and initialize or re-initialize the CABAC encoding unit or the CABAC decoding unit. When initializing, set the initial value (default state) of the context used for the CABAC process.
[0375] The encoding process will be described. FIG. 51 is a block diagram showing the configuration of the first encoding unit 5200 included in the three-dimensional data encoding device according to the present embodiment. FIG. 52 is a block diagram showing the configuration of the dividing unit 5201 according to the present embodiment. FIG. 53 is a block diagram showing the configuration of the position information encoding unit 5202 and the attribute information encoding unit 5203 according to the present embodiment.
[0376] The first encoding unit 5200 generates encoded data (encoded stream) by encoding point cloud data using a first encoding method (GPCC (Geometry based PCC)). This first encoding unit 5200 includes a splitting unit 5201, a plurality of position information encoding units 5202, a plurality of attribute information encoding units 5203, an additional information encoding unit 5204, and a multiplexing unit 5205.
[0377] The splitting unit 5201 generates a plurality of split data by splitting the point cloud data. Specifically, the splitting unit 5201 generates a plurality of split data by splitting the space of the point cloud data into a plurality of sub-spaces. Here, the sub-space is either 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 splitting unit 5201 splits the position information into a plurality of split position information, and splits the attribute information into a plurality of split attribute information. Also, the splitting unit 5201 generates additional information regarding the splitting.
[0378] As shown in FIG. 52, the splitting unit 5201 includes a tile splitting unit 5211 and a slice splitting unit 5212. For example, the tile splitting unit 5211 splits the point cloud into tiles. The tile splitting unit 5211 may determine quantization values to be used for each split tile as tile additional information.
[0379] The slice splitting unit 5212 further splits the tiles obtained by the tile splitting unit 5211 into slices. The slice splitting unit 5212 may determine quantization values to be used for each split slice as slice additional information.
[0380] The plurality of position information encoding units 5202 generate a plurality of encoded position information by encoding the plurality of split position information. For example, the plurality of position information encoding units 5202 perform parallel processing on the plurality of split position information.
[0381] As shown in FIG. 53, the position information encoding unit 5202 includes a CABAC initialization unit 5221 and an entropy encoding unit 5222. The CABAC initialization unit 5221 initializes or re-initializes CABAC according to the CABAC initialization flag. The entropy encoding unit 5222 encodes the divided position information by CABAC.
[0382] The plurality of attribute information encoding units 5203 generate a plurality of encoded attribute information by encoding the plurality of divided attribute information. For example, the plurality of attribute information encoding units 5203 perform parallel processing on the plurality of divided attribute information.
[0383] As shown in FIG. 53, the attribute information encoding unit 5203 includes a CABAC initialization unit 5231 and an entropy encoding unit 5232. The CABAC initialization unit 5221 initializes or re-initializes CABAC according to the CABAC initialization flag. The entropy encoding unit 5232 encodes the divided attribute information by CABAC.
[0384] The additional information encoding unit 5204 generates encoded additional information by encoding the additional information included in the point cloud data and the additional information regarding data division generated during division by the division unit 5201.
[0385] The multiplexing unit 5205 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 sends out the generated encoded data. Also, the encoded additional information is used at the time of decoding.
[0386] Note that in FIG. 51, examples are shown where the numbers of the position information encoding unit 5202 and the attribute information encoding unit 5203 are each two, but the numbers of the position information encoding unit 5202 and the attribute information encoding unit 5203 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 the 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.
[0387] Next, the decoding process will be described. FIG. 54 is a block diagram showing the configuration of the first decoding unit 5240. FIG. 55 is a block diagram showing the configurations of the position information decoding unit 5242 and the attribute information decoding unit 5243.
[0388] The first decoding unit 5240 restores the point cloud data by decoding the encoded data (encoded stream) generated by encoding the point cloud data using the first encoding method (GPCC). This first decoding unit 5240 includes a de-multiplexing unit 5241, a plurality of position information decoding units 5242, a plurality of attribute information decoding units 5243, an additional information decoding unit 5244, and a combining unit 5245.
[0389] The de-multiplexing unit 5241 generates a plurality of encoded position information, a plurality of encoded attribute information, and encoded additional information by de-multiplexing the encoded data (encoded stream).
[0390] The plurality of position information decoding units 5242 generate a plurality of quantized position information by decoding the plurality of encoded position information. For example, the plurality of position information decoding units 5242 process the plurality of encoded position information in parallel.
[0391] As shown in FIG. 55, the position information decoding unit 5242 includes a CABAC initialization unit 5251 and an entropy decoding unit 5252. The CABAC initialization unit 5251 initializes or re-initializes CABAC according to the CABAC initialization flag. The entropy decoding unit 5252 decodes the position information by CABAC.
[0392] The plurality of attribute information decoding units 5243 generate a plurality of divided attribute information by decoding the plurality of encoded attribute information. For example, the plurality of attribute information decoding units 5243 process the plurality of encoded attribute information in parallel.
[0393] As shown in FIG. 55, the attribute information decoding unit 5243 includes a CABAC initialization unit 5261 and an entropy decoding unit 5262. The CABAC initialization unit 5261 initializes or re-initializes CABAC according to the CABAC initialization flag. The entropy decoding unit 5262 decodes the attribute information by CABAC.
[0394] The plurality of additional information decoding units 5244 generate additional information by decoding the encoded additional information.
[0395] The combining unit 5245 generates position information by combining a plurality of split position information using the additional information. The combining unit 5245 generates attribute information by combining a plurality of split attribute information using the additional information. For example, the combining unit 5245 first generates point cloud data corresponding to a tile by combining the decoded point cloud data for a slice using the slice additional information. Next, the combining unit 5245 restores the original point cloud data by combining the point cloud data corresponding to the tile using the tile additional information.
[0396] Note that in FIG. 54, examples where the numbers of the position information decoding unit 5242 and the attribute information decoding unit 5243 are both two are shown, but the numbers of the position information decoding unit 5242 and the attribute information decoding unit 5243 may each be one, or may be three or more. Also, the plurality of split data may be processed in parallel within the same chip, such as in 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.
[0397] FIG. 56 is a flowchart showing an example of processing related to the initialization of CABAC in the encoding of position information or the encoding of attribute information.
[0398] First, the three-dimensional data encoding device determines whether to perform CABAC initialization in the encoding of the position information of the slice based on a predetermined condition for each slice (S5201).
[0399] When the three-dimensional data encoding device determines to perform CABAC initialization (Yes in S5202), it determines the initial context value to be used for encoding the position information (S5203). The initial context value is set to an initial value considering the encoding characteristics. The initial value may be a predefined value or may be adaptively determined according to the characteristics of the data within the slice.
[0400] Next, the three-dimensional data encoding device sets the CABAC initialization flag of the position information to 1 and sets the initial context value (S5204). When performing CABAC initialization, in the encoding of the position information, initialization processing is executed using the initial context value.
[0401] On the other hand, when the three-dimensional data encoding device determines not to perform CABAC initialization (No in S5202), it sets the CABAC initialization flag of the position information to 0 (S5205).
[0402] Next, for each slice, the three-dimensional data encoding device determines whether to perform CABAC initialization in the encoding of the attribute information of the slice based on a predetermined condition (S5206).
[0403] When the three-dimensional data encoding device determines to perform CABAC initialization (Yes in S5207), it determines the initial context value to be used for encoding the attribute information (S5208). The initial context value is set to an initial value considering the encoding characteristics. The initial value may be a predefined value or may be adaptively determined according to the characteristics of the data within the slice.
[0404] Next, the three-dimensional data encoding device sets the CABAC initialization flag of the attribute information to 1 and sets the initial context value (S5209). When performing CABAC initialization, in the encoding of the attribute information, initialization processing is executed using the initial context value.
[0405] On the other hand, when the three-dimensional data encoding device determines not to perform CABAC initialization (No in S5207), it sets the CABAC initialization flag of the attribute information to 0 (S5210).
[0406] In the flowchart shown in FIG. 56, the processing order of the processing related to the position information and the processing related to the attribute information may be reversed or parallel.
[0407] In the flowchart shown in FIG. 56, 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 slice in the flowchart of FIG. 56 can be read as a tile or other data unit.
[0408] Also, the predetermined conditions may be the same conditions for the position information and the attribute information, or different conditions.
[0409] FIG. 57 is a diagram showing an example of the timing of CABAC initialization in point cloud data as a bit stream.
[0410] The point cloud data includes position information and attribute information of 0 or more. That is, the point cloud data may have no attribute information or may have a plurality of attribute information.
[0411] For example, for one three-dimensional point, as attribute information, there are cases where it has color information, cases where it has color information and reflection information, and cases where it has one or more color information respectively associated with one or more viewpoint information.
[0412] In any configuration case, the method described in this embodiment is applicable.
[0413] Next, the determination conditions for CABAC initialization will be described.
[0414] When the following conditions are satisfied, CABAC in the encoding of the position information or the attribute information may be initialized.
[0415] For example, CABAC may be initialized with the leading data of position information or attribute information (if there is a plurality of attribute information, each attribute information). For example, CABAC may be initialized at the beginning of data constituting a PCC frame that can be decoded independently. That is, as shown in FIG. 57(a), if the PCC frame is decodable on a frame-by-frame basis, CABAC may be initialized with the leading data of the PCC frame.
[0416] Also, for example, as shown in FIG. 57(b), when inter prediction is used between PCC frames and thus the frames cannot be decoded independently, CABAC may be initialized with the leading data of a random access unit (e.g., GOF).
[0417] Also, for example, as shown in FIG. 57(c), CABAC may be initialized with the leading data of slice data divided into one or more parts, the leading data of tile data divided into one or more parts, or the leading data of other divided data.
[0418] FIG. 57(c) shows an example of a tile, but the same applies to slices. At the beginning of a tile or slice, it may be always initialized, or it may not necessarily be initialized.
[0419] FIG. 58 is a diagram showing the configuration of encoded data and the method of storing the encoded data in a NAL unit.
[0420] The initialization information may be stored in the header of the encoded data or in the metadata. Also, the initialization information may be stored in both the header and the metadata. The initialization information is, for example, caba_init_flag, the initial value of CABAC, or the index of a table that can specify the initial value.
[0421] The part described as being stored in the metadata in this embodiment may be read as being stored in the header of the encoded data, and vice versa.
[0422] When the initialization information is stored in the header of the encoded data, for example, it may be stored in the first NAL unit in the encoded data. The position information stores the initialization information for the encoding of the position information, and the attribute information stores the initialization information for the encoding of the attribute information.
[0423] The cabac_init_flag for the encoding of the attribute information and the cabac_init_flag for the encoding of the position information may have the same value or different values. When they have the same value, the cabac_init_flag for the position information and the attribute information may be made common. Also, when they have different values, the cabac_init_flag for the position information and the attribute information indicate different values respectively.
[0424] The initialization information may be stored in common metadata for the position information and the attribute information, or may be stored in at least one of the individual metadata for the position information and the individual metadata for the attribute information, or may be stored in both the common metadata and the individual metadata. Also, a flag indicating whether it is described in any of the individual metadata for the position information, the individual metadata for the attribute information, and the common metadata may be used.
[0425] FIG. 59 is a flowchart showing an example of a process related to the initialization of CABAC in the decoding of position information or attribute information.
[0426] The three-dimensional data decoding device analyzes the encoded data and obtains the CABAC initialization flag for the position information, the CABAC initialization flag for the attribute information, and the context initial value (S5211).
[0427] Next, the three-dimensional data decoding device determines whether the CABAC initialization flag for the position information is 1 (S5212).
[0428] When the CABAC initialization flag for the position information is 1 (Yes in S5212), the 3D data decoding device initializes the CABAC decoding for the position information encoding using the context initial value of the position information encoding (S5213).
[0429] On the other hand, when the CABAC initialization flag for the position information is 0 (No in S5212), the 3D data decoding device does not initialize the CABAC decoding in the position information encoding (S5214).
[0430] Next, the 3D data decoding device determines whether the CABAC initialization flag for the attribute information is 1 (S5215).
[0431] When the CABAC initialization flag for the attribute information is 1 (Yes in S5215), the 3D data decoding device initializes the CABAC decoding for the attribute information encoding using the context initial value of the attribute information encoding (S5216).
[0432] On the other hand, when the CABAC initialization flag for the attribute information is 0 (No in S5215), the 3D data decoding device does not initialize the CABAC decoding in the attribute information encoding (S5217).
[0433] Note that in the flowchart in FIG. 59, the processing order of the processing related to the position information and the processing related to the attribute information may be reversed or parallel.
[0434] Note that the flowchart in FIG. 59 is applicable to both the case of slice division and the case of tile division.
[0435] Next, the flow of the encoding process and the decoding process of the point cloud data according to the present embodiment will be described. FIG. 60 is a flowchart of the encoding process of the point cloud data according to the present embodiment.
[0436] First, the three-dimensional data encoding device determines the splitting method to be used (S5221). This splitting method includes whether to perform tile splitting or slice splitting. Further, the splitting method may include the number of splits when performing tile splitting or slice splitting, the type of splitting, and the like. The type of splitting is a method based on the object shape as described above, a method based on map information or position information, or a method based on the data volume or processing volume. Note that the splitting method may be predetermined.
[0437] When tile splitting is performed (Yes in S5222), 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 in tile units (S5223). Further, the three-dimensional data encoding device generates tile addition information related to tile splitting.
[0438] When slice splitting is performed (Yes in S5224), the three-dimensional data encoding device generates a plurality of split position information and a plurality of split attribute information by splitting a plurality of tile position information and a plurality of tile attribute information (or position information and attribute information) (S5225). Further, the three-dimensional data encoding device generates position slice addition information and attribute slice addition information related to slice splitting.
[0439] 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 (S5226). Further, the three-dimensional data encoding device generates dependency relationship information.
[0440] 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 (S5227). Further, the three-dimensional data encoding device transmits the generated encoded data.
[0441] FIG. 61 is a flowchart showing an example of a process of determining the value of a CABAC initialization flag and updating additional information in tile division (S5222) or slice division (S5225).
[0442] In steps S5222 and S5225, the position information and attribute information of tiles and / or slices may be individually divided independently by their respective methods, or may be commonly divided in a batch. As a result, additional information divided for each tile and / or each slice is generated.
[0443] At this time, the three-dimensional data encoding device determines whether to set the CABAC initialization flag to 1 or 0 (S5231).
[0444] Then, the three-dimensional data encoding device updates the additional information so that the determined CABAC initialization flag is included (S5232).
[0445] FIG. 62 is a flowchart showing an example of a process of initializing CABAC in the encoding process (S5226).
[0446] The three-dimensional data encoding device determines whether the CABAC initialization flag is 1 (S5241).
[0447] When the CABAC initialization flag is 1 (Yes in S5241), the three-dimensional data encoding device re-initializes the CABAC encoding unit to the default state (S5242).
[0448] Then, the three-dimensional data encoding device continues the encoding process until the stop condition of the encoding process is satisfied, for example, until there is no more data to be encoded (S5243).
[0449] FIG. 63 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 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) (S5251). 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.
[0450] Next, the three-dimensional data decoding device generates the split position information and the split attribute information by decoding the plurality of encoded position information and the plurality of encoded attribute information included in the encoded data using the dependency information included in the encoded data (S5252).
[0451] When it is shown by the additional information that slice splitting is performed (Yes in S5253), the three-dimensional data decoding device generates a plurality of tile position information and a plurality of tile attribute information by combining the plurality of split position information and the plurality of split attribute information based on the position slice additional information and the attribute slice additional information (S5254).
[0452] When it is shown by the additional information that tile splitting is performed (Yes in S5255), the three-dimensional data decoding device generates the position information and the attribute information by combining the plurality of tile position information and the plurality of tile attribute information (the plurality of split position information and the plurality of split attribute information) based on the tile additional information (S5256).
[0453] FIG. 64 is a flowchart showing an example of the process of initializing the CABAC decoding unit in the combination of the information split for each slice (S5254) or the combination of the information split for each tile (S5256).
[0454] The position information and the attribute information of the slice or the tile may be combined using respective methods or may be combined using the same method.
[0455] The three-dimensional data decoding device decodes the CABAC initialization flag from the additional information of the encoded stream (S5261).
[0456] Next, the three-dimensional data decoding device determines whether the CABAC initialization flag is 1 (S5262).
[0457] When the CABAC initialization flag is 1 (Yes in S5262), the three-dimensional data decoding device re-initializes the CABAC decoding unit to the default state (S5263).
[0458] On the other hand, when the CABAC initialization flag is not 1 (No in S5262), the three-dimensional data decoding device proceeds to step S5264 without re-initializing the CABAC decoding unit.
[0459] Then, the three-dimensional data decoding device continues the decoding process until the stop condition of the decoding process is satisfied, for example, until there is no data to be decoded (S5264).
[0460] Next, other determination conditions for CABAC initialization will be described.
[0461] Whether to initialize the encoding of the position information or the encoding of the attribute information may be determined in consideration of the encoding efficiency of data units such as tiles or slices. In this case, CABAC may be initialized in the leading data of a tile or slice that satisfies a predetermined condition.
[0462] Next, the determination conditions for CABAC initialization in the encoding of the position information will be described.
[0463] The three-dimensional data encoding device determines, for example, for each slice, the density of the point cloud data, that is, the number of points per unit area belonging to the slice, compares the data density of the slice with the data densities of other slices, and if the change in data density does not exceed a predetermined condition, it may be determined that not initializing CABAC results in better encoding efficiency, and it may be determined not to initialize CABAC. On the other hand, if the change in data density does not satisfy a predetermined condition, the three-dimensional data encoding device may determine that initializing results in better encoding efficiency and may determine to initialize CABAC.
[0464] Here, the other slice may be, for example, the slice immediately before in the decoding process order or a spatially adjacent slice. Also, the three-dimensional data encoding device may determine whether to initialize CABAC according to whether the data density of the slice is a predetermined data density without comparing it with the data densities of other slices.
[0465] When the three-dimensional data encoding device determines to initialize CABAC, it determines the context initial value used for encoding the position information. The context initial value is set to an initial value with good encoding characteristics according to the data density. The three-dimensional data encoding device may hold an initial value table for data density in advance and select an optimal initial value from the table.
[0466] Note that the three-dimensional data encoding device may determine whether to initialize CABAC not only based on the example of the slice density but also based on the number of points, the distribution of points, the bias of points, etc. Alternatively, the three-dimensional data encoding device may determine whether to initialize CABAC based on the feature amount obtained from the point information, the number of feature points, or the recognized object. In that case, the determination criteria may be held in the memory in advance as a table associated with the feature amount or the number of feature points obtained from the point information, or the object recognized based on the point information.
[0467] The three-dimensional data encoding device may, for example, determine an object in the position information of map information, and determine whether to perform CABAC initialization based on the object based on the position information, or may determine whether to perform CABAC initialization based on information or feature amounts obtained by projecting the three-dimensional data onto a two-dimensional plane.
[0468] Next, the determination conditions for CABAC initialization in the encoding of attribute information will be described.
[0469] The three-dimensional data encoding device, for example, compares the color characteristics of the previous slice with the color characteristics of the current slice, and if the change in the color characteristics satisfies a predetermined condition, it may determine that not performing CABAC initialization results in better encoding efficiency and decide not to perform CABAC initialization. On the other hand, if the change in the color characteristics does not satisfy the predetermined condition, the three-dimensional data encoding device may determine that performing CABAC initialization results in better encoding efficiency and decide to perform initialization. The color characteristics are, for example, luminance, chrominance, saturation, their histograms, color continuity, and the like.
[0470] Here, the other slice may be, for example, the previous slice in the decoding process order, or a spatially adjacent slice. Also, the three-dimensional data encoding device may determine whether to perform CABAC initialization according to whether the data density of the current slice is a predetermined data density without comparing it with the data density of other slices.
[0471] When the three-dimensional data encoding device determines to perform CABAC initialization, it determines the context initial value used for encoding the attribute information. The context initial value is set to an initial value with good encoding characteristics according to the data density. The three-dimensional data encoding device may hold an initial value table for data density in advance and select the optimal initial value from the table.
[0472] When the attribute information is reflectivity, the three-dimensional data encoding device may also determine whether to perform CABAC initialization according to the information based on the reflectivity.
[0473] When there is a plurality of attribute information for three-dimensional points, the three-dimensional data encoding device may independently determine initialization information based on each piece of attribute information for each piece of attribute information, or may determine initialization information for the plurality of attribute information based on any one piece of attribute information, or may determine initialization information for the plurality of attribute information using the plurality of attribute information.
[0474] Although an example in which the initialization information of the position information is determined based on the position information and the initialization information of the attribute information is determined based on the attribute information has been described, the initialization information of the position information and the attribute information may be determined based on the position information, or the initialization information of the position information and the attribute information may be determined based on the attribute information, or the initialization information of the position information and the attribute information may be determined based on both pieces of information.
[0475] The three-dimensional data encoding device may determine the initialization information based on the result of simulating the encoding efficiency in advance, for example, by setting cabac_init_flag to on or off or by using one or more initial values from the initial value table.
[0476] When the three-dimensional data encoding device determines a data division method into slices or tiles or the like based on the position information or the attribute information, the initialization information may be determined based on the same information as the information on which the determination of the division method is based.
[0477] FIG. 65 is a diagram showing examples of tiles and slices.
[0478] For example, slices in one tile having a part of PCC data are identified as shown in the legend. The CABAC initialization flag can be used to determine whether context re-initialization is necessary in consecutive slices. For example, in FIG. 65, when slice data divided for each object (moving object, sidewalk, building, tree, other object) is included in one tile, the CABAC initialization flag for the slices of the moving object, sidewalk, and tree is set to 1, and the CABAC initialization flag for the slices of the building and other objects is set to 0. This is because, for example, when the sidewalk and the building are both dense permanent structures and may have similar coding efficiencies, there may be a possibility of improving the coding efficiency by not re-initializing CABAC between the slices of the sidewalk and the building. On the other hand, when there may be a large difference in density and coding efficiency between the building and the tree, there may be a possibility of improving the coding efficiency by initializing CABAC between the slices of the building and the tree.
[0479] FIG. 66 is a flowchart showing an example of a method for initializing CABAC and determining the initial value of the context.
[0480] First, the three-dimensional data encoding device divides the point cloud data into slices based on the object determined from the position information (S5271).
[0481] Next, for each slice, the three-dimensional data encoding device determines whether to initialize CABAC for the encoding of the position information and the encoding of the attribute information based on the data density of the object in the slice (S5272). That is, the three-dimensional data encoding device determines the CABAC initialization information (CABAC initialization flag) for the encoding of the position information and the encoding of the attribute information based on the position information. The three-dimensional data encoding device determines, for example, good initialization of the coding efficiency based on the point cloud data density. Note that the CABAC initialization information may be indicated by a common cabac_init_flag for the position information and the attribute information.
[0482] Next, when the three-dimensional data encoding device determines to perform CABAC initialization (Yes in S5273), it determines the context initial value for encoding the position information (S5274).
[0483] Next, the three-dimensional data encoding device determines the context initial value for encoding the attribute information (S5275).
[0484] Next, the three-dimensional data encoding device sets the CABAC initialization flag for the position information to 1, sets the context initial value for the position information, sets the CABAC initialization flag for the attribute information to 1, and sets the context initial value for the attribute information (S5276). When performing CABAC initialization, the three-dimensional data encoding device performs the initialization process using the context initial value in each of the encoding of the position information and the encoding of the attribute information.
[0485] On the other hand, when the three-dimensional data encoding device determines not to perform CABAC initialization (No in S5273), it sets the CABAC initialization flag for the position information to 0 and sets the CABAC initialization flag for the attribute information to 0 (S5277).
[0486] FIG. 67 is a diagram showing an example when a map obtained by top-down viewing of point cloud data obtained by LiDAR is divided into tiles. FIG. 68 is a flowchart showing another example of the CABAC initialization and the method of determining the context initial value.
[0487] The three-dimensional data encoding device divides the point cloud data into one or more tiles in a two-dimensional division method in top-down view based on the position information in the large-scale map data (S5281). The three-dimensional data encoding device may divide, for example, in a square area as shown in FIG. 67. Also, the three-dimensional data encoding device may divide the point cloud data into tiles of various shapes and sizes. The division of the tiles may be performed by one or more predetermined methods or may be performed adaptively.
[0488] Next, for each tile, the three-dimensional data encoding device determines the objects within the tile, and determines whether to perform CABAC initialization by encoding the position information or the attribute information of the tile (S5282). Note that in the case of slice division, the three-dimensional data encoding device recognizes objects (trees, people, moving objects, buildings), and performs slice division and determination of initial values according to the objects.
[0489] If the three-dimensional data encoding device determines to perform CABAC initialization (Yes in S5283), it determines the context initial value for encoding the position information (S5284).
[0490] Next, the three-dimensional data encoding device determines the context initial value for encoding the attribute information (S5285).
[0491] In steps S5284 and S5285, as the initial value, the initial value of a tile with specific encoding characteristics may be stored and used as the initial value of tiles with the same encoding characteristics.
[0492] Next, the three-dimensional data encoding device sets the CABAC initialization flag for the position information to 1, sets the context initial value for the position information, sets the CABAC initialization flag for the attribute information to 1, and sets the context initial value for the attribute information (S5286). Note that when performing CABAC initialization, the three-dimensional data encoding device performs initialization processing using the context initial value in each of the encoding of the position information and the encoding of the attribute information.
[0493] On the other hand, if the three-dimensional data encoding device determines not to perform CABAC initialization (No in S5283), it sets the CABAC initialization flag for the position information to 0 and sets the CABAC initialization flag for the attribute information to 0 (S5287).
[0494] (Embodiment 7) Hereinafter, the quantization parameter will be described.
[0495] 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 slicing and encoding for each object, slice data containing plants may not be so important, so the resolution (quality) can be reduced by quantization. On the other hand, important slice data can be set to 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.
[0496] Here, the data to be quantized, the scale used for quantization, and the quantization data that is the result calculated by quantization are represented by the following (Equation G1) and (Equation G2).
[0497] Quantization data = Data / Scale (Equation G1)
[0498] Data = Quantization data * Scale (Equation G2)
[0499] FIG. 69 is a diagram for explaining the processing of a quantization unit 5323 that quantizes data and an inverse quantization unit 5333 that inverse quantizes quantization data.
[0500] The quantization unit 5323 quantizes data using a scale, that is, by performing a process using Equation G1, calculates quantization data in which the data is quantized.
[0501] The inverse quantization unit 5333 inverse quantizes quantization data using a scale, that is, by performing a process using Equation G2, calculates data in which the quantization data is inverse quantized.
[0502] Also, the scale and the quantization value (QP (Quantization Parameter) value) are represented by the following (Equation G3).
[0503] Quantization value (QP value) = log(scale) (Equation G3)
[0504] Quantization value (QP value) = Default value (reference value) + Quantization delta (differential information) (Equation G4)
[0505] These parameters are collectively referred to as the quantization parameter (Quantization Parameter).
[0506] For example, as shown in FIG. 70, the quantization value is a value based on the default value, and is calculated by adding the 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 not be present.
[0507] The encoding process will be described. FIG. 71 is a block diagram showing the configuration of the first encoding unit 5300 included in the three-dimensional data encoding apparatus according to the present embodiment. FIG. 72 is a block diagram showing the configuration of the division unit 5301. FIG. 73 is a block diagram showing the configurations of the position information encoding unit 5302 and the attribute information encoding unit 5303 according to the present embodiment.
[0508] The first encoding unit 5300 generates encoded data (encoded stream) by encoding the point cloud data using the first encoding method (GPCC (Geometry based PCC)). This first encoding unit 5300 includes a division 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.
[0509] The splitting unit 5301 generates a plurality of split data by splitting the point cloud data. Specifically, the splitting unit 5301 generates a plurality of split data by splitting the space of the point cloud data into a plurality of sub-spaces. Here, the sub-space is either 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 splitting unit 5301 splits the position information into a plurality of split position information and splits the attribute information into a plurality of split attribute information. Also, the splitting unit 5301 generates additional information regarding the splitting.
[0510] As shown in FIG. 72, 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.
[0511] 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.
[0512] A plurality of position information encoding units 5302 generate a plurality of encoded position information by encoding the 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.
[0513] As shown in FIG. 73, 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 the quantization value (quantization parameter) of the split position information to be encoded. The entropy encoding unit 5322 calculates the quantized position information by quantizing the split position information using the quantization value (quantization parameter) acquired by the quantization value calculation unit 5321.
[0514] A plurality of attribute information encoding units 5303 generate a plurality of encoded attribute information by encoding a plurality of divided attribute information. For example, the plurality of attribute information encoding units 5303 perform parallel processing on the plurality of divided attribute information.
[0515] As shown in FIG. 73, the attribute information encoding unit 5303 includes a quantization value calculation unit 5331 and an entropy encoding unit 5332. The quantization value calculation unit 5331 acquires a quantization value (quantization parameter) of the divided attribute information to be encoded. The entropy encoding unit 5332 calculates quantized attribute information by quantizing the divided attribute information using the quantization value (quantization parameter) acquired by the quantization value calculation unit 5331.
[0516] 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 at the time of division by the division unit 5301.
[0517] 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 transmits the generated encoded data. The encoded additional information is used at the time of decoding.
[0518] In FIG. 71, examples in which the numbers of the position information encoding unit 5302 and the attribute information encoding unit 5303 are each two are shown, but the numbers 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 such as 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.
[0519] Next, the decoding process will be described. FIG. 74 is a block diagram showing the configuration of the first decoding unit 5340. FIG. 75 is a block diagram showing the configurations of the position information decoding unit 5342 and the attribute information decoding unit 5343.
[0520] The first decoding unit 5340 restores the point cloud data by decoding the encoded data (encoded stream) generated by encoding the point cloud data using 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.
[0521] The demultiplexing unit 5341 generates a plurality of encoded position information, a plurality of encoded attribute information, and encoded additional information by demultiplexing the encoded data (encoded stream).
[0522] The 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 perform parallel processing on the plurality of encoded position information.
[0523] As shown in FIG. 75, 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.
[0524] The 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 perform parallel processing on the plurality of encoded attribute information.
[0525] As shown in FIG. 75, 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.
[0526] The plurality of additional information decoding units 5344 generate additional information by decoding the encoded additional information.
[0527] The combining unit 5345 generates position information by combining a plurality of divided position information using additional information. The combining unit 5345 generates attribute information by combining a plurality of divided attribute information using 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 the 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.
[0528] Note that in FIG. 74, examples in which the number of the position information decoding unit 5342 and the attribute information decoding unit 5343 is two are shown, but the number of the position information decoding unit 5342 and the attribute information decoding unit 5343 may be one or three or more. Further, the plurality of divided data may be processed in parallel within the same chip such as 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.
[0529] [Method for Determining Quantization Parameter] FIG. 76 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).
[0530] 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.
[0531] As shown in FIG. 76, 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 based on a predetermined method for each of a plurality of divided slices. 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 in 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 onto a two-dimensional plane. 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 encoding rate or the like with various QP values when encoding the position information of the point cloud data.
[0532] 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 difference information to at least one of the additional information and the header of the data.
[0533] 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 based on a predetermined method for each of the plurality of divided slices. 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, for example, determine the QP value based on the characteristics of the attribute information for each data unit. The characteristics of color are, for example, luminance, chrominance, saturation, their histograms, color continuity, etc. 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 good-quality QP value for the point cloud data constituting the object detected as the face. Thus, 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.
[0534] Also, when there is a plurality of attribute information for a three-dimensional point, the three-dimensional data encoding device may independently determine the QP value based on each attribute information for each attribute information, or may determine the QP values of the plurality of attribute information based on any one of the attribute information, or may determine the QP values of the plurality of attribute information using the plurality of attribute information.
[0535] Next, the three-dimensional data encoding device determines the reference value (default value) and the differential information (quantization delta) of the QP value of the attribute information (S5304). Specifically, the three-dimensional data encoding device determines the reference value and the differential information to be transmitted using the determined QP value and a predetermined method, and sets (adds) the determined reference value and the differential information to at least one of the additional information and the header of the data.
[0536] 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).
[0537] 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 the position information and the attribute information.
[0538] 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 greater than the QP value of the position information.
[0539] Also, the QP value may be adjusted so that the encoded data is encoded so as to fall within a range of a predetermined rate. 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 greater than the second difference greater 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.
[0540] Note that in the flowchart in FIG. 76, 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.
[0541] Note that in the flowchart shown in FIG. 76, although the processing in units of slices is taken as an example, the processing in units of tiles or other data units can be performed in the same way as the processing in units of slices. That is, the slices in the flowchart of FIG. 76 can be read as tiles or other data units.
[0542] FIG. 77 is a flowchart showing an example of the decoding process of position information and attribute information.
[0543] As shown in FIG. 77, 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 a reference value and difference information for deriving the QP value.
[0544] 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).
[0545] 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).
[0546] 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).
[0547] Next, the method for transmitting the quantization parameter will be described.
[0548] FIG. 78 is a diagram for explaining a first example of the method for transmitting the quantization parameter. (a) of FIG. 78 is a diagram showing an example of the relationship of QP values.
[0549] In FIG. 78, 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.
[0550] For example, in FIG. 78(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 G , Q A , Q G ) to Q
[0551] Q A = Q G + Δ(Q A , Q G ) (Equation G5)
[0552] 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. 78(b) and 78(c) will be described. FIG. 78(b) is a diagram showing a first example of the relationship between the reference value and the difference information of each QP value. FIG. 78(c) is a diagram showing a first example of the transmission order of the QP value, the position information, and the attribute information.
[0553] The QP value is roughly divided into a QP value for each frame of the PCC (frame QP) and a QP value for each data unit (data QP) for each piece of location information and each piece of attribute information. The QP value for each data unit is the QP value used for encoding, which was determined in step S5301 of FIG. 76.
[0554] Here, Q G is used as a reference value, and the QP value for each data unit is generated and transmitted as difference information indicating the difference from Q G .
[0555] Q G : QP value for encoding location information in the PCC frame... transmitted as a reference value "1." using GPS Q A : QP value for encoding attribute information in the PCC frame... transmitted as difference information "2." indicating the difference from Q G . Q Gs1 , Q Gs2 : QP value for encoding location information in slice data... transmitted as difference information "3." and "5." indicating the difference from Q G using the header of the encoded data for location information Q As1 , Q As2 : QP value for encoding attribute information in slice data... transmitted as difference information "4." and "6." indicating the difference from Q A using the header of the encoded data for attribute information
[0556] Note that the information used to derive the frame QP is described in the metadata (GPS, APS) related to the frame, and the information used to derive the data QP is described in the metadata (header of the encoded data) related to the data.
[0557] 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.
[0558] The first decoding unit 5340 refers to the metadata indicated by the arrow in Fig. 78(c) in each encoded data, and acquires the reference value and the difference information corresponding to the encoded data. Then, based on the acquired reference value and difference information, the first decoding unit 5340 derives the QP value corresponding to the encoded data to be decoded.
[0559] The first decoding unit 5340 acquires, for example, the reference information "1." and the difference information "2.", "6." indicated by the arrow in Fig. 78(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 s2 derive the QP value of A.
[0560] Q AS2 = Q G + Δ(Q A , Q G ) + Δ(Q As2 , Q A ) (Equation G6)
[0561] The point cloud data includes position information and attribute information of 0 or more. That is, the point cloud data may have no attribute information or may have a plurality of attribute information.
[0562] For example, for one three-dimensional point, as the attribute information, there are cases where it has color information, cases where it has color information and reflection information, and cases where it has one or more color information respectively associated with one or more viewpoint information.
[0563] Here, an example of the case of having two pieces of color information and reflection information will be described with reference to Fig. 79. Fig. 79 is a diagram for explaining a second example of the method for transmitting quantization parameters. Fig. 79(a) is a diagram showing a second example of the relationship between the reference value and the difference information of each QP value. Fig. 79(b) is a diagram showing a second example of the transmission order of the QP value, the position information, and the attribute information.
[0564] Q G is an example of the first quantization parameter, similar to Fig. 78.
[0565] Each of the two color information is represented by a luminance (luma) Y and color differences (chroma) Cb and Cr. Q, which is the QP value used for encoding the luminance Y1 of the first color Y1 is the reference value Q G and the difference Δ(Q Y1 , Q G ) are used for derivation. The luminance Y1 is an example of the first luminance, and Q Y1 is an example of the second quantization parameter used for quantizing the luminance Y1 as the first luminance. Δ(Q Y1 , Q G ) is the difference information "2.".
[0566] Also, Q Cb1 , Q Cr1 which are the QP values used for encoding the color differences Cb1 and Cr1 of the first color, are respectively QY1 and the differences Δ(Q Cb1 , Q Y1 ), Δ(Q Cr1 , Q Y1 ) and are used for derivation. The color differences Cb1 and Cr1 are examples of the first color differences, and Q Cb1 , Q Cr1 are examples of the third quantization parameters used for quantizing the color differences Cb1 and Cr1 as the first color differences. Δ(Q Cb1 , Q Y1 ) is the difference information "3.", and Δ(Q Cr1 , Q Y1 ) is the difference information "4.". Δ(Q Cb1 , Q Y1 ) and Δ(Q Cr1 , Q Y1 ) are respectively examples of the first differences.
[0567] Note that Q Cb1 and Q Cr1 may use the same value as each other, or a common value may be used. When a common value is used, since only one of Q Cb1 and Q Cr1 needs to be used, the other may not be necessary.
[0568] Also, Q which is the QP value used for encoding the luminance Y1D of the first color in the slice data Y1D is Q Y1 and is derived using that and Δ(Q Y1D ,Q Y1 ). The luminance Y1D of the first color in the slice data is an example of the first luminance of one or more three-dimensional points included in the subspace, and Q Y1D is an example of the fifth quantization parameter used for quantizing the luminance Y1D. Δ(Q Y1D ,Q Y1 ) is the difference information "10.", and is an example of the second difference.
[0569] Similarly, Q which is the QP value used for encoding the color differences Cb1D and Cr1D of the first color in the slice data Cb1D ,Q Cr1D are derived using Q Cb1 ,Q Cr1 respectively, and Δ(Q Cb1D ,Q Cb1 ), Δ(Q Cr1D ,Q Cr1 ). The color differences Cb1D and Cr1D of the first color in the slice data are examples of the first color differences of one or more three-dimensional points included in the subspace, and Q Cb1D ,Q Cr1D are examples of the sixth quantization parameters used for quantizing the color differences Cb1D and Cr1D. Δ(Q Cb1D ,Q Cb1 ) is the difference information "11.", and Δ(Q Cr1D ,Q Cr1 ) is the difference information "12.". Δ(Q Cb1D ,Q Cb1 ) and Δ(Q Cr1D ,Q Cr1 ) are examples of the third difference.
[0570] Since the relationship of the QP values for the first color also holds for the second color, the explanation is omitted.
[0571] Q which is the QP value used for encoding the reflectance R R is the reference value Q Gand Δ(Q R , Q G ), which are used for derivation. Q R is an example of the fourth quantization parameter used for quantizing the reflectance R. Δ(Q R , Q G ) is the difference information "8.".
[0572] Also, Q RD , which is the QP value used for encoding the reflectance RD in the slice data, is derived using Q R and Δ(Q RD , Q R ). Δ(Q RD , Q R ) is the difference information "16.".
[0573] Thus, the difference information "9." to "16." indicates the difference information between the data QP and the frame QP.
[0574] Note that, for example, when the values of the data QP and the frame QP are the same, the difference information may be set to 0, or it may be regarded as 0 by not sending the difference information.
[0575] When decoding the color difference Cr2 of the second color, for example, the first decoding unit 5340 acquires the reference information "1." and the difference information "5.", "7.", and "15." indicated by the arrows in FIG. 79(b) from the metadata or the header, and derives the QP value of the color difference Cr2 by adding the difference information "5.", "7.", and "15." to the reference information "1." as shown in the following (Equation G7).
[0576] Q Cr2D = Q G + Δ(Q Y2 , Q G ) + Δ(Q Cr2 , Q Y2 ) + Δ(Q Cr2D , Q Cr2 ) (Equation G7)
[0577] Next, an example of dividing into slices after dividing the position information and the attribute information into two tiles will be described with reference to FIG. 80. FIG. 80 is a diagram for explaining a third example of the method for transmitting quantization parameters. (a) of FIG. 80 is a diagram showing a third example of the relationship between the reference value of each QP value and the difference information. (b) of FIG. 80 is a diagram showing a third example of the transmission order of the QP value, the position information, and the attribute information. (c) of FIG. 80 is a diagram for explaining the intermediate generated value of the difference information in the third example.
[0578] When further dividing into a plurality of slices after dividing into a plurality of tiles, as shown in (c) of FIG. 80, 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 , Q At1 ), Δ(Q At1s2 , Q At1 ) for each slice are generated.
[0579] In this case, for example, the difference information "4." in (a) of FIG. 80 is derived by the following (Equation G8).
[0580] Δ(Q At1s1 , Q A ) = Δ(Q At1 , Q A ) + Δ(Q At1s1 , Q At1 ) (Equation G8)
[0581] When the first decoding unit 5340 decodes the attribute information A t2s1 of slice 1 in tile 2, for example, the reference information "1." and the difference information "2.", "8." indicated by the arrows in (b) of FIG. 80 are obtained from the metadata or the header, and as shown in the following (Equation G9), the QP value of the attribute information A t2s1 is derived by adding the difference information "2.", "8." to the reference information "1.".
[0582] Q At2s1 = Q G + Δ(Q At2s1 , Q A ) + Δ(Q A , Q G ) (Formula G9)
[0583] Next, the flow of the encoding process and decoding process of the point cloud data according to the present embodiment will be described. FIG. 81 is a flowchart of the encoding process of the point cloud data according to the present embodiment.
[0584] First, the three-dimensional data encoding device determines the splitting method to be used (S5321). 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. The type of split 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. Note that the splitting method may be predetermined.
[0585] When tile splitting is performed (Yes in S5322), 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 in tile units (S5323). In addition, the three-dimensional data encoding device generates tile addition information related to tile splitting.
[0586] When slice splitting is performed (Yes in S5324), the three-dimensional data encoding device generates a plurality of split position information and a plurality of split attribute information by splitting a plurality of tile position information and a plurality of tile attribute information (or position information and attribute information) (S5325). In addition, the three-dimensional data encoding device generates position slice addition information and attribute slice addition information related to slice splitting.
[0587] 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 division position information and the plurality of division attribute information (S5326). Further, the three-dimensional data encoding device generates dependency information.
[0588] 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 additional information (S5327). Further, the three-dimensional data encoding device transmits the generated encoded data.
[0589] FIG. 82 is a flowchart showing an example of a process of determining a QP value and updating additional information in tile division (S5323) or slice division (S5325).
[0590] In steps S5323 and S5325, the position information and attribute information of tiles and / or slices may be independently and individually divided by their respective methods, or may be commonly divided in a batch. Thereby, additional information divided for each tile and / or each slice is generated.
[0591] At this time, the three-dimensional data encoding device determines a reference value of the QP value and difference information for each divided tile and / or each slice (S5331). Specifically, the three-dimensional data encoding device determines a reference value and difference information as exemplified in FIGS. 78 to 80.
[0592] Then, the three-dimensional data encoding device updates the additional information so as to include the determined reference value and difference information (S5332).
[0593] FIG. 83 is a flowchart showing an example of a process of encoding the determined QP value in the encoding process (S5326).
[0594] The three-dimensional data encoding device encodes the QP value determined in step S5331 (S5341). Specifically, the three-dimensional data encoding device encodes the reference value and the difference information of the QP value included in the updated additional information.
[0595] Then, the three-dimensional data encoding device continues the encoding process until the stop condition of the encoding process is satisfied, for example, until there is no more data to be encoded (S5342).
[0596] FIG. 84 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 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) (S5351). This splitting method includes whether to perform tile splitting or not, and whether to perform slice splitting or not. Further, the splitting method may include the number of splits when performing tile splitting or slice splitting, and the type of splitting, etc.
[0597] Next, the three-dimensional data decoding device generates the split position information and the split attribute information by decoding the plurality of encoded position information and the plurality of encoded attribute information included in the encoded data using the dependency relationship information included in the encoded data (S5352).
[0598] When it is shown by the additional information that slice splitting is performed (Yes in S5353), the three-dimensional data decoding device generates a plurality of tile position information and a plurality of tile attribute information by combining the plurality of split position information and the plurality of split attribute information based on the position slice additional information and the attribute slice additional information (S5354).
[0599] When it is shown by the additional information that tile splitting is performed (Yes in S5355), the three-dimensional data decoding device generates the position information and the attribute information by combining the plurality of tile position information and the plurality of tile attribute information (the plurality of split position information and the plurality of split attribute information) based on the tile additional information (S5356).
[0600] FIG. 85 is a flowchart showing an example of a process of obtaining a QP value and decoding the QP value of a slice or a tile in the combination of information divided for each slice (S5354) or the combination of information divided for each tile (S5356).
[0601] The position information and the attribute information of the slice or the tile may be combined using respective methods or may be combined using the same method.
[0602] The three-dimensional data decoding device decodes a reference value and difference information from the additional information of the encoded stream (S5361).
[0603] Next, the three-dimensional data decoding device calculates a quantization value using the decoded reference value and difference information, and updates the QP value used for inverse quantization with the calculated QP value (S5362). Thereby, a QP value for inverse quantizing the quantization attribute information for each tile or each slice can be derived.
[0604] Then, the three-dimensional data decoding device continues the decoding process until the stop condition of the decoding process is satisfied, for example, until there is no data to be decoded (S5363).
[0605] FIG. 86 is a diagram showing a syntax example of GPS. FIG. 87 is a diagram showing a syntax example of APS. FIG. 88 is a diagram showing a syntax example of the header of the position information. FIG. 89 is a diagram showing a syntax example of the header of the attribute information.
[0606] As shown in FIG. 86, for example, GPS, which is additional information of the position information, includes a QP_value indicating an absolute value serving as a reference for deriving a QP value. The QP value corresponds to, for example, Q exemplified in FIGS. 78 to 80. G corresponds to.
[0607] Also, as shown in FIG. 87, for example, when there is color information of a plurality of viewpoints at a three-dimensional point for APS which is additional information of attribute information, a default viewpoint may be defined, and it may be assumed that the 0th always describes information of the default viewpoint. For example, when the three-dimensional data encoding device decodes or displays single color information, it may decode or display the 0th attribute information.
[0608] APS includes QP_delta_Attribute_to_Geometry. QP_delta_Attribute_to_Geometry indicates difference information from a reference value (QP_value) described in GPS. This difference information is, for example, difference information from luminance when the attribute information is color information.
[0609] Also, GPS may include a flag indicating whether there is difference information for calculating a QP value in a Geometry_header (header of position information). Also, APS may include a flag indicating whether there is difference information for calculating a QP value in an Attribute_header (header of attribute information). The flag may indicate whether there is difference information of data QP from frame QP for calculating data QP in the attribute information.
[0610] Thus, in the case where the first color among the attribute information is indicated by the first luminance and the first color difference in the encoded stream, quantization using a second quantization parameter for quantizing the first luminance, and quantization using a third quantization parameter for quantizing the first color difference, when quantized using a fifth quantization parameter and a sixth quantization parameter, identification information (flag) indicating that quantization has been performed using the fifth quantization parameter and the sixth quantization parameter may be included.
[0611] Also, as shown in FIG. 88, the header of the position information may include QP_delta_data_to_frame indicating the difference information from the reference value (QP_value) described in the GPS. Also, the header of the position information may be divided into information for each tile and / or each slice, and the corresponding QP value may be shown for each tile and / or each slice.
[0612] Also, as shown in FIG. 89, the header of the attribute information may include QP_delta_data_to_frame indicating the difference information from the QP value described in the APS.
[0613] In FIGS. 78 to 80, the reference value of the QP value was described as the QP value of the position information in the PCC frame, but it is not limited to this, and other values may be used as the reference value.
[0614] FIG. 90 is a diagram for explaining another example of the method for transmitting quantization parameters.
[0615] FIGS. 90(a) and (b) show a fourth example in which a common reference value Q is set for the QP values of the position information and the attribute information in the PCC frame. In the fourth example, the reference value Q is stored in the GPS, and the difference information of the QP value (Q G ) of the position information from the reference value Q is stored in the GPS, and the difference information of the QP values (Q Y and Q R ) of the attribute information is stored in the APS. Note that the reference value Q may be stored in the SPS.
[0616] FIGS. 90(c) and (d) show a fifth example in which reference values are set independently for each of the position information and the attribute information. In the fifth example, the reference QP values (absolute values) of the position information and the attribute information are stored in the GPS and the APS, respectively. That is, the reference value Q G is set for the position information, the reference value Q Y is set for the color information of the attribute information, and the reference value Q Rare each set. In this way, a reference value of the QP value may be set for each of the position information and the plurality of types of attribute information. Note that the fifth example may be combined with other examples. That is, Q in the first example A , Q in the second example Y1 , Q Y2 , Q R may be the reference value of the QP value.
[0617] Figures 90(e) and (f) show a sixth example of setting a common reference value Q in a plurality of PCC frames when there are a plurality of PCC frames. In the sixth example, the reference value Q is stored in the SPS or GSPS, and the difference information between the QP value of the position information of each PCC frame and the reference value is stored in the GPS. Note that, for example, within the range of a random access unit such as GOF, for example, using the first frame of the random access unit as the reference value, the difference information between PCC frames (for example, Δ(Q G(1) , Q G(0) )) may be transmitted.
[0618] Note that even when a tile or a slice is further divided, the difference information from the QP value of the division unit is stored in the data header and transmitted in the same way.
[0619] Figure 91 is a diagram for explaining another example of the method for transmitting quantization parameters.
[0620] Figures 91(a) and (b) show a seventh example of setting a common reference value Q G for the position information and the attribute information in the PCC frame. In the seventh example, the reference value Q G is stored in the GPS, and the difference information from the position information or the attribute information is stored in each data header. The reference value Q G may be stored in the SPS.
[0621] Also, Figures 91(c) and (d) show an eighth example in which the QP value of the attribute information is indicated by the difference information from the QP value of the position information belonging to the same slice and tile. In the eighth example, the reference value Q GIt may be stored in the SPS.
[0622] FIG. 92 is a diagram for explaining a ninth example of a method for transmitting quantization parameters.
[0623] (a) and (b) of FIG. 92 are ninth examples showing difference information from the QP value of position information and difference information from the QP value common to attribute information, respectively, by resolving the QP value common to the attribute information.
[0624] FIG. 93 is a diagram for explaining a control example of the QP value.
[0625] The lower the value of the quantization parameter, the better the quality, but more bits are required, so the coding efficiency decreases.
[0626] For example, when three-dimensional point cloud data is divided into tiles and encoded, if the point cloud data included in the tile is a main road, it is encoded using the QP value of pre-defined attribute information. On the other hand, since the surrounding tiles are not important information, it may be possible to reduce the data quality and improve the coding efficiency by setting the difference information of the QP value to a positive value.
[0627] Furthermore, when the three-dimensional point cloud data divided into tiles is further divided into slices and encoded, sidewalks, trees, and buildings are important for position estimation (localization and mapping) in autonomous driving, so the QP value is set to a negative value, while the moving body and others are set to a positive value because they are less important.
[0628] FIG. 93(b) shows an example of deriving difference information when the quantization delta value is set in advance based on the objects included in the tiles or slices. For example, if the slice data of a "building" included in a tile where the divided data is a "main road" is considered, the quantization delta value 0 of the tile where the "main road" is located is added to the quantization delta value -5 of the slice data of the "building", and the difference information is derived as -5.
[0629] FIG. 94 is a flowchart showing an example of a method for determining a QP value based on the quality of an object.
[0630] The three-dimensional data encoding device divides the point cloud data into one or more tiles based on the map information, and determines the objects included in each of the one or more tiles (S5371). Specifically, the three-dimensional data encoding device performs object recognition processing to recognize what the object is using, for example, a learning model obtained by machine learning.
[0631] Next, the three-dimensional data encoding device determines whether to encode the tile to be processed with high quality (S5372). Encoding with high quality means, for example, encoding at a bit rate larger than a predetermined rate.
[0632] Next, when the three-dimensional data encoding device encodes the tile to be processed with high quality (Yes in S5372), it sets the QP value of the tile so that the encoding quality becomes high (S5373).
[0633] On the other hand, when the three-dimensional data encoding device does not encode the tile to be processed with high quality (No in S5372), it sets the QP value of the tile so that the encoding quality becomes low (S5374).
[0634] After step S5373 or step S5374, the three-dimensional data encoding device determines the objects in the tile and divides them into one or more slices (S5375).
[0635] Next, the three-dimensional data encoding device determines whether to encode the slice to be processed with high quality (S5376).
[0636] Next, when the three-dimensional data encoding device encodes the slice to be processed with high quality (Yes in S5376), it sets the QP value of the slice so that the encoding quality becomes high (S5377).
[0637] On the other hand, if the three-dimensional data encoding device does not encode the slice to be processed with high quality (No in S5376), it sets the QP value of the slice so that the encoding quality deteriorates (S5378).
[0638] Next, the three-dimensional data encoding device determines a reference value and differential information to be transmitted in a predetermined method based on the set QP value, and stores the determined reference value and differential information in at least one of the additional information and the header of the data (S5379).
[0639] Next, the three-dimensional data encoding device quantizes and encodes the position information and the attribute information based on the determined QP value (S5380).
[0640] FIG. 95 is a flowchart showing an example of a method for determining a QP value based on rate control.
[0641] The three-dimensional data encoding device encodes the point cloud data in order (S5381).
[0642] Next, the three-dimensional data encoding device determines the rate control status related to the encoding process from the amount of encoded data and the occupancy of the encoding buffer, and determines the quality of the next encoding (S5382).
[0643] Next, the three-dimensional data encoding device determines whether to increase the encoding quality (S5383).
[0644] Next, when the three-dimensional data encoding device increases the encoding quality (Yes in S5383), it sets the QP value of the tile so that the encoding quality improves (S5384).
[0645] On the other hand, if the three-dimensional data encoding device does not increase the encoding quality (No in S5383), it sets the QP value of the tile so that the encoding quality deteriorates (S5385).
[0646] Next, the three-dimensional data encoding device determines a reference value and difference information to be transmitted in a predetermined manner based on the set QP value, and stores the determined reference value and difference information in at least one of additional information and the header of the data (S5386).
[0647] Next, the three-dimensional data encoding device quantizes and encodes position information and attribute information based on the determined QP value (S5387).
[0648] As described above, the three-dimensional data encoding device according to the present embodiment performs the processing shown in FIG. 96. First, the three-dimensional data encoding device quantizes the position information of each of a plurality of three-dimensional points using a first quantization parameter (S5391). The three-dimensional data encoding device quantizes the first luminance indicating the first color among the attribute information of each of the plurality of three-dimensional points using a second quantization parameter, and quantizes the first color difference using a third quantization parameter (S5392). The three-dimensional data encoding device generates a bit stream including the quantized position information, the quantized first luminance, the quantized first color difference, the first quantization parameter, the second quantization parameter, and a first difference between the second quantization parameter and the third quantization parameter (S5393).
[0649] According to this, in the bit stream, since the third quantization parameter is indicated by the first difference from the second quantization parameter, the encoding efficiency can be improved.
[0650] For example, the three-dimensional data encoding device further quantizes the reflectance among the attribute information of each of the plurality of three-dimensional points using a fourth quantization parameter. Further, in the generation, a bit stream further including the quantized reflectance and the fourth quantization parameter is generated.
[0651] For example, in quantization using the second quantization parameter, when quantizing the first luminance of one or more three-dimensional points included in a sub-space obtained by dividing a target space including the plurality of three-dimensional points, the first luminance of the one or more three-dimensional points included in the sub-space is further quantized using a fifth quantization parameter. In quantization using the third quantization parameter, when quantizing the first color difference of the one or more three-dimensional points, the first color difference of the one or more three-dimensional points is further quantized using a sixth quantization parameter. In the generation, a bit stream further including a second difference between the second quantization parameter and the fifth quantization parameter, and a third difference between the third quantization parameter and the sixth quantization parameter is generated.
[0652] According to this, in the bit stream, since the fifth quantization parameter is indicated by the second difference from the second quantization parameter and the sixth quantization parameter is indicated by the third difference from the third quantization parameter, the coding efficiency can be improved.
[0653] For example, in the generation, in quantization using the second quantization parameter and quantization using the third quantization parameter, when quantizing using the fifth quantization parameter and the sixth quantization parameter, a bit stream further including identification information indicating that quantization has been performed using the fifth quantization parameter and the sixth quantization parameter is generated.
[0654] According to this, since a three-dimensional data decoding device that has acquired the bit stream can determine that quantization has been performed using the fifth quantization parameter and the sixth quantization parameter using the identification information, the processing load of the decoding process can be reduced.
[0655] For example, the three-dimensional data encoding device further quantizes the second luminance indicating the second color among the attribute information of each of the plurality of three-dimensional points using a seventh quantization parameter, and quantizes the second color difference using an eighth quantization parameter. In the generation, a bit stream further including the quantized second luminance, the quantized second color difference, the seventh quantization parameter, and a fourth difference between the seventh quantization parameter and the eighth quantization parameter is further generated.
[0656] According to this, in the bit stream, since the eighth quantization parameter is indicated by the fourth difference from the seventh quantization parameter, the encoding efficiency can be improved. In addition, two types of color information can be included in the attribute information of the three-dimensional points.
[0657] For example, the three-dimensional data encoding device includes a processor and a memory, and the processor performs the above processing using the memory.
[0658] In addition, the three-dimensional data decoding device according to the present embodiment performs the processing shown in FIG. 97. First, the three-dimensional data decoding device acquires the quantized position information, the quantized first luminance, the quantized first color difference, the first quantization parameter, the second quantization parameter, and a first difference between the second quantization parameter and the third quantization parameter by acquiring a bit stream (S5394). The three-dimensional data decoding device calculates the position information of a plurality of three-dimensional points by inverse quantizing the quantized position information using the first quantization parameter (S5395). The three-dimensional data decoding device calculates the first luminance among the first luminance and the first color difference indicating the first color of the plurality of three-dimensional points by inverse quantizing the quantized first luminance using the second quantization parameter (S5396). The three-dimensional data decoding device calculates the first color difference by inverse quantizing the quantized first color difference using the third quantization parameter obtained from the second quantization parameter and the first difference (S5397).
[0659] Therefore, the three-dimensional data decoding device can correctly decode the position information and attribute information of the three-dimensional points.
[0660] For example, in the acquisition, by acquiring the bit stream, the reflectance further quantized and the fourth quantization parameter are acquired. The three-dimensional data decoding device further calculates the reflectance of the plurality of three-dimensional points by inverse quantizing the quantized reflectance using the fourth quantization parameter.
[0661] Therefore, the three-dimensional data decoding device can correctly decode the reflectance of the three-dimensional points.
[0662] For example, in the acquisition, by acquiring the bit stream, the second difference between the second quantization parameter and the fifth quantization parameter and the third difference between the third quantization parameter and the sixth quantization parameter are further acquired. In the calculation of the first luminance, when the quantized first luminance is the luminance obtained by quantizing the first luminance of one or more three-dimensional points included in each of the plurality of subspaces obtained by dividing the target space including the plurality of three-dimensional points, the quantized first luminance is inverse quantized using the second quantization parameter and the fifth quantization parameter obtained from the second difference to calculate the first luminance of the one or more three-dimensional points. In the calculation of the first color difference, when the quantized first color difference is the color difference obtained by quantizing the first color difference of the one or more three-dimensional points, the quantized first color difference is inverse quantized using the third quantization parameter and the sixth quantization parameter obtained from the third difference to calculate the first color difference of the one or more three-dimensional points.
[0663] For example, in the obtaining, by obtaining the bitstream, identification information indicating quantization using the fifth quantization parameter and the sixth quantization parameter is further obtained. In the calculation of the first luminance, when the identification information indicates quantization using the fifth quantization parameter and the sixth quantization parameter, it is determined that the quantized first luminance is the luminance obtained by quantizing the first luminance of the one or more three-dimensional points. In the calculation of the first color difference, when the identification information indicates quantization using the fifth quantization parameter and the sixth quantization parameter, it is determined that the quantized first color difference is the color difference obtained by quantizing the first color difference of the one or more three-dimensional points.
[0664] According to this, since the three-dimensional data decoding device can determine quantization using the fifth quantization parameter and the sixth quantization parameter using the identification information, the processing load of the decoding process can be reduced.
[0665] For example, in the obtaining, by obtaining the bitstream, the quantized second luminance, the quantized second color difference, the seventh quantization parameter, and the fourth difference between the seventh quantization parameter and the eighth quantization parameter are further obtained. The three-dimensional data decoding device further calculates the second luminance among the second luminance and the second color difference indicating the second color of the plurality of three-dimensional points by inverse quantizing the quantized second luminance using the seventh quantization parameter. Further, the three-dimensional data decoding device calculates the second color difference by inverse quantizing the quantized second color difference using the eighth quantization parameter obtained from the seventh quantization parameter and the fourth difference.
[0666] Therefore, the three-dimensional data decoding device can correctly decode the second color of the three-dimensional point.
[0667] For example, the three-dimensional data decoding device includes a processor and a memory, and the processor performs the above processing using the memory.
[0668] As described above, the three-dimensional data encoding device, the three-dimensional data decoding device, and the like according to the embodiments of the present disclosure have been described. However, the present disclosure is not limited to these embodiments.
[0669] Moreover, each processing unit included in the three-dimensional data encoding device, the three-dimensional data decoding device, and the like according to the above-described embodiment is typically realized as an LSI which is an integrated circuit. These may be individually formed into one chip, or may be formed into one chip so as to include some or all of them.
[0670] 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) which can be programmed after manufacturing the LSI, or a reconfigurable processor which can reconfigure the connection and setting of circuit cells inside the LSI may be used.
[0671] Also, in each of the above-described 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.
[0672] Also, the present disclosure may be realized as a three-dimensional data encoding method, a three-dimensional data decoding method, or the like executed by a three-dimensional data encoding device, a three-dimensional data decoding device, and the like.
[0673] 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. Also, the functions of a plurality of functional blocks having similar functions may be processed by a single piece of hardware or software in parallel or in a time-sharing manner.
[0674] Also, the order in which each step in the flowchart is executed is for illustrative purposes to specifically describe the present disclosure, and other orders may be used. Also, some of the above steps may be executed simultaneously (in parallel) with other steps.
[0675] 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. However, the present disclosure is not limited to these embodiments. Without departing from the spirit of the present disclosure, various modifications conceived by those skilled in the art applied to these embodiments, or forms constructed by combining components in different embodiments, may also be included within the scope of one or more aspects.
Industrial Applicability
[0676] The present disclosure can be applied to a three-dimensional data encoding device and a three-dimensional data decoding device.
Explanation of Signs
[0677] 4601 Three-dimensional data encoding system 4602 Three-dimensional data decoding system 4603 Sensor terminal 4604 External connection part 4611 Point cloud data generation system 4612 Presentation part 4613 Encoding part 4614 Multiplexing part 4615 Input / output part 4616 Control part 4617 Sensor information acquisition part 4618 Point cloud data generation part 4621 Sensor information acquisition part 4622 Input / output part 4623 Demultiplexing part 4624 Decoding part 4625 Presentation part 4626 User interface 4627 Control part 4630 First encoding part 4631 Location Information Encoding Unit 4632 Attribute Information Encoding Unit 4633 Additional Information Encoding Unit 4634 Multiplexing Unit 4640 First Decoding Unit 4641 Demultiplexing Unit 4642 Location Information Decoding Unit 4643 Attribute Information Decoding Unit 4644 Additional Information Decoding Unit 4650 Second Encoding Unit 4651 Additional Information Generation Unit 4652 Location 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 Location Information Generation Unit 4665 Attribute Information Generation Unit 4670 Encoding Unit 4671 Multiplexing Unit 4680 Decoding Unit 4681 Demultiplexing 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 4911 Splitting Unit 4931 Slice Division Unit 4932 Position Information Tile Division Unit 4933 Attribute Information Tile Division Unit 5200 First Encoding Unit 5201 Division Unit 5202 Position Information Encoding Unit 5203 Attribute Information Encoding Unit 5204 Additional Information Encoding Unit 5205 Multiplexing Unit 5211 Tile Division Unit 5212 Slice Division Unit 5221, 5231, 5251, 5261 CABAC Initialization Unit 5222, 5232 Entropy Encoding Unit 5240 First Decoding Unit 5241 Demultiplexing Unit 5242 Position Information Decoding Unit 5243 Attribute Information Decoding Unit 5244 Additional Information Decoding Unit 5245 Combining Unit 5252, 5262 Entropy Decoding Unit 5300 First Encoding Unit 5301 Division Unit 5302 Position 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 Position Information Decoding Unit 5343 Attribute Information Decoding Unit 5344 Additional Information Decoding Unit 5345 Combining Unit 5352, 5362 Entropy Decoding Unit
Claims
1. Quantize a first element that constitutes at least a part of the attribute information of each of a plurality of three-dimensional points using a first quantization parameter, quantize a second element that constitutes at least a part of the attribute information of each of the plurality of three-dimensional points using a second quantization parameter, generate a bit stream including the quantized first element, the quantized second element, the first quantization parameter, a first difference between the first quantization parameter and the second quantization parameter, a second difference between the first quantization parameter and a third quantization parameter available for quantization of the first element, and a third difference between the second quantization parameter and a fourth quantization parameter available for quantization of the second element A three-dimensional data encoding method.
2. The first element includes luminance, and the second element includes color difference The three-dimensional data encoding method according to claim 1.
3. In the quantization of the first element, when a predetermined condition is satisfied, further use the third quantization parameter to quantize the first element The three-dimensional data encoding method according to claim 1.
4. The predetermined condition is a case where the first element of one or more three-dimensional points included in each of a plurality of subspaces obtained by dividing the target space including the plurality of three-dimensional points is quantized The three-dimensional data encoding method according to claim 3.
5. In the quantization of the second element, when a predetermined condition is satisfied, further use the fourth quantization parameter to quantize the second element The three-dimensional data encoding method according to claim 1.
6. The predetermined condition is a case where the second element of one or more three-dimensional points included in each of a plurality of subspaces obtained by dividing the target space including the plurality of three-dimensional points is quantized The three-dimensional data encoding method according to claim 5.
7. Obtain from the bit stream the quantized first element, the quantized second element, the first quantization parameter, the second quantization parameter, the first difference between the first quantization parameter and the second quantization parameter, the second difference between the first quantization parameter and the third quantization parameter available for inverse quantization of the first element, and the third difference between the second quantization parameter and the fourth quantization parameter available for inverse quantization of the second element, By inverse quantizing the quantized first element using the first quantization parameter, a first element that constitutes at least a part of the attribute information of each of the plurality of three-dimensional points is calculated. By inverse quantizing the quantized second element using the second quantization parameter, the second element that constitutes at least a part of the attribute information of each of the plurality of three-dimensional points is calculated. Three-dimensional data decoding method.
8. The first element includes luminance, and the second element includes color difference. The three-dimensional data decoding method according to claim 7.
9. In the calculation of the first element, when a predetermined condition is satisfied, the quantized first element further quantized using the third quantization parameter is inverse quantized. The three-dimensional data decoding method according to claim 7.
10. The predetermined condition is a case where the quantized first element of one or more three-dimensional points included in each of the plurality of subspaces obtained by dividing the target space including the plurality of three-dimensional points is inverse quantized. The three-dimensional data decoding method according to claim 9.
11. In the calculation of the second element, when a predetermined condition is satisfied, the quantized second element further quantized using the fourth quantization parameter is inverse quantized. The three-dimensional data decoding method according to claim 7.
12. The predetermined condition is a case where the quantized second element of one or more three-dimensional points included in each of the plurality of subspaces obtained by dividing the target space including the plurality of three-dimensional points is inverse quantized. The three-dimensional data decoding method according to claim 11.
13. A processor and a memory, The processor uses the memory to quantize a first element that constitutes at least a part of the attribute information of each of the plurality of three-dimensional points using a first quantization parameter, quantize a second element that constitutes at least a part of the attribute information of each of the plurality of three-dimensional points using a second quantization parameter, generate a bit stream including the quantized first element, the quantized second element, the first quantization parameter, a first difference between the first quantization parameter and the second quantization parameter, a second difference between the first quantization parameter and a third quantization parameter available for quantization of the first element, and a third difference between the second quantization parameter and a fourth quantization parameter available for quantization of the second element. Three-dimensional data encoding device.
14. A processor and a memory, The processor uses the memory to obtain from the bitstream a quantized first element, a quantized second element, a first quantization parameter, a second quantization parameter, a first difference between the first quantization parameter and the second quantization parameter, a second difference between the first quantization parameter and a third quantization parameter usable for inverse quantization of the first element, and a third difference between the second quantization parameter and a fourth quantization parameter usable for inverse quantization of the second element; calculate a first element that constitutes at least a part of the attribute information of each of the plurality of three-dimensional points by inverse quantizing the quantized first element using the first quantization parameter; calculate the second element that constitutes at least a part of the attribute information of each of the plurality of three-dimensional points by inverse quantizing the quantized second element using the second quantization parameter Three-dimensional data decoding device.
Citation Information
Patent Citations
Coding method and apparatus for image signal
JP2006108792A
Image encoding device, image encoding method and program, image decoding device and image decoding method and program
JP2014116733A
Data coding method, data coding device, and data coding program
JP2018078503A
Image processing device and method
WO2013108688A1
Map display device
WO2014020663A1