Data Encoding Method and Data Decoding Method
By dividing point group frames and using control information to identify frame indices, the method addresses inefficiencies in three-dimensional data processing, achieving reduced processing amounts and improved efficiency.
Patent Information
- Application Number
- JP2024139267
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2018-10-09
- Filing Date
- 2024-08-20
- Publication Date
- 2025-08-04
- Estimated Expiration
- 2039-10-09
AI Technical Summary
Existing three-dimensional data encoding and decoding processes are inefficient, leading to high processing demands.
A method that encodes three-dimensional data by dividing point group frames into frames with the same attribute type, using control information to identify frame indices, and decodes data by determining attribute information from control information, thereby reducing processing amounts.
The method significantly reduces processing amounts in three-dimensional data encoding and decoding, enhancing efficiency.
Smart Images

Figure 0007717924000005 
Figure 0007717924000006 
Figure 0007717924000007
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 distance sensors such as lidar, stereo cameras, or combinations of multiple monocular cameras.
[0003] As one of the methods for expressing three-dimensional data, there is a method called point cloud that represents the shape of a three-dimensional structure by a point group in a three-dimensional space. In a point cloud, the positions and colors of the point group are stored. Although the point cloud is expected to become mainstream as a method for expressing three-dimensional data, the point group has a very large amount of data. Therefore, in the storage or transmission of three-dimensional data, compression of the data amount by encoding is essential, similar to two-dimensional moving images (for example, MPEG-4 AVC or HEVC standardized by MPEG).
[0004] Also, regarding the compression of point clouds, it is partially supported by public libraries (Point Cloud Library) that perform 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 or decoding process of three-dimensional data, it is desired to reduce the processing amount.
[0008] An object of the present disclosure is to provide a three-dimensional data encoding method, a three-dimensional data decoding method, a three-dimensional data encoding device, or a three-dimensional data decoding device capable of reducing the processing amount.
Means for Solving the Problems
[0009] A data encoding method according to an aspect of the present disclosure encodes a first point group frame including a plurality of first three-dimensional points, generates a bit stream including encoded data and control information, the encoded data includes attribute values of the plurality of first three-dimensional points, the control information includes an identifier of an attribute type of the attribute value, the identifier of the attribute type indicates that the attribute type of the attribute value is a frame index, the frame index indicates how to divide the plurality of first three-dimensional points included in the first point group frame into one or more second point group frames, each of the one or more second point group frames is composed of a plurality of three-dimensional points having the same frame index, and the plurality of three-dimensional points are included in the plurality of first three-dimensional points.
[0010] A data decoding method according to one aspect of the present disclosure acquires encoded data including attribute values of a plurality of first three-dimensional points included in a first point cloud frame from a bit stream, and acquires an identifier of an attribute type of the attribute value included in control information included in the bit stream. The identifier of the attribute type indicates that the attribute type of the attribute value is a frame index. The frame index indicates how to divide the plurality of first three-dimensional points included in the first point cloud frame into one or more second point cloud frames. Each of the one or more second point cloud frames is composed of a plurality of three-dimensional points having the same frame index, and the plurality of three-dimensional points are included in the plurality of first three-dimensional points.
Advantages of the Invention
[0011] The present disclosure can provide a three-dimensional data encoding method, a three-dimensional data decoding method, a three-dimensional data encoding device, or a three-dimensional data decoding device capable of reducing the processing amount.
Brief Description of the Drawings
[0012]
Figure 1
Figure 2
Figure 3
Figure 4
Figure 5
Figure 6
Figure 7
Figure 8
Figure 9
Figure 10
Figure 11
Figure 12
Figure 13
Figure 14
Figure 15
Figure 16
Figure 17
Figure 18
Figure 19
Figure 20
Figure 21
Figure 22
Figure 23
Figure 24
Figure 25
Figure 26
Figure 27
Figure 28
Figure 29
Figure 30
Figure 31
Figure 32
Figure 33
Figure 34
Figure 35
Figure 36
Figure 37
Figure 38
Figure 39
Figure 40
Figure 41
Figure 42
Figure 43
Figure 44
Figure 45
Figure 46
Figure 47
Figure 48
Figure 49
Figure 50
Figure 51
Figure 52
Figure 53
Figure 54
Figure 55
Figure 56
Figure 57
Figure 58
Figure 59
Figure 60
Figure 61
Figure 62
Figure 63
Figure 64
Figure 65
Figure 66
Figure 67
Figure 68
Figure 69
Figure 70
Figure 71
Figure 72
Figure 73
Figure 74
Figure 75
Figure 76
Figure 77
Figure 78
Figure 79
Figure 80
Figure 81
Figure 82
Figure 83
Figure 84
Figure 85
Figure 86
Figure 87
Figure 88
Figure 89
Figure 90
Figure 91
Figure 92
Figure 93
Figure 94
Figure 95
Figure 96
Figure 97
Figure 98
Figure 99
Figure 100
Figure 101
Figure 102
Figure 103
Figure 104
Figure 105
Figure 106
Figure 107
Figure 108
DETAILED DESCRIPTION OF THE INVENTION
[0013] A three-dimensional data encoding method according to an aspect of the present disclosure generates encoded data by encoding third point group data in which first point group data and second point group data are combined, generates a bit stream including the encoded data and control information, the encoded data includes position information of each of a plurality of three-dimensional points included in the third point group data and a plurality of attribute information, one of the plurality of attribute information includes first information indicating to which of the first point group data and the second point group data a corresponding three-dimensional point belongs, and the control information includes second information indicating the attribute information including the first information among the plurality of attribute information.
[0014] According to this, a three-dimensional data decoding apparatus that decodes a bit stream generated by the three-dimensional data encoding method can easily determine the attribute information including the first information using the second information included in the control information when the first information is included in any of the plurality of attribute information. Therefore, the three-dimensional data encoding method can reduce the processing amount of the three-dimensional data decoding apparatus.
[0015] For example, the control information may be control information common to a plurality of frames.
[0016] For example, the attribute information including the first information may be encoded using a reversible encoding method.
[0017] For example, quantization parameters may be set so that the reversible encoding method is used.
[0018] For example, using movement information indicating the movement between the first point cloud data and the second point cloud data, correct the positions of the point clouds included in the second point cloud data, and generate the third point cloud data by integrating the first point cloud data and the corrected second point cloud data. The encoded data may include the movement information.
[0019] According to this, since the three-dimensional data encoding method can bring the positions of the point clouds to be combined closer, the encoding efficiency can be improved.
[0020] A three-dimensional data decoding method according to an aspect of the present disclosure acquires encoded data including position information and a plurality of attribute information of each of a plurality of three-dimensional points included in third point cloud data in which first point cloud data and second point cloud data are combined from a bit stream, and from control information included in the bit stream, among the plurality of attribute information, acquires second information indicating attribute information including first information indicating to which of the first point cloud data and the second point cloud data the corresponding three-dimensional point belongs, and acquires the first information using the second information.
[0021] According to this, when the first information is included in any of the plurality of attribute information, the three-dimensional data decoding method can easily determine the attribute information including the first information using the second information included in the control information. Therefore, the three-dimensional data decoding method can reduce the processing amount.
[0022] For example, the control information may be control information common to a plurality of frames.
[0023] For example, the attribute information including the first information may be encoded using a reversible encoding method.
[0024] For example, quantization parameters may be set so that the reversible encoding method is used.
[0025] For example, the first point cloud data and the second point cloud data may be separated from the third point cloud data using the first information.
[0026] For example, motion information indicating the motion between the first point cloud data and the second point cloud data may be obtained from the bit stream, and the position of the point cloud included in the second point cloud data may be corrected using the motion information.
[0027] According to this, the three-dimensional data decoding method can decode a bit stream with improved encoding efficiency by bringing the positions of the point clouds to be combined closer.
[0028] Further, a three-dimensional data encoding apparatus according to an aspect of the present disclosure includes a processor and a memory. The processor generates encoded data by encoding third point cloud data in which first point cloud data and second point cloud data are combined using the memory, and generates a bit stream including the encoded data and control information. The encoded data includes position information of each of a plurality of three-dimensional points included in the third point cloud data and a plurality of attribute information. One of the plurality of attribute information includes first information indicating to which of the first point cloud data and the second point cloud data the corresponding three-dimensional point belongs. The control information includes second information indicating the attribute information including the first information among the plurality of attribute information.
[0029] According to this, a three-dimensional data decoding apparatus that decodes the bit stream generated by the three-dimensional data encoding apparatus can easily determine the attribute information including the first information using the second information included in the control information when the first information is included in any of the plurality of attribute information. Therefore, the three-dimensional data encoding apparatus can reduce the processing amount of the three-dimensional data decoding apparatus.
[0030] Also, 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, from a bit stream, encoded data including position information of each of a plurality of three-dimensional points and a plurality of attribute information included in third point group data in which first point group data and second point group data are combined. From control information included in the bit stream, second information indicating attribute information including first information indicating which of the first point group data and the second point group data a corresponding three-dimensional point belongs to among the plurality of attribute information is obtained, and the first information is obtained using the second information.
[0031] According to this, when the first information is included in any of the plurality of attribute information, the three-dimensional data decoding device can easily determine the attribute information including the first information using the second information included in the control information. Therefore, the three-dimensional data decoding device can reduce the processing amount.
[0032] These general or specific aspects may be implemented in a system, method, integrated circuit, computer program, or recording medium such as a computer-readable CD-ROM, or may be implemented in any combination of a system, method, integrated circuit, computer program, and recording medium.
[0033] Hereinafter, embodiments will be specifically described with reference to the drawings. Note that each of the embodiments described below shows a specific example 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 examples and are not intended to limit the present disclosure. In addition, among the components in the following embodiments, the components not described in the independent claims are described as optional components.
[0034] (Embodiment 1) When using the encoded data of point clouds in an actual device or service, it is desirable to transmit and receive the necessary information according to the application in order to suppress the network bandwidth. However, until now, such a function has not existed in the encoding structure of three-dimensional data, and there has been no encoding method for it.
[0035] In this embodiment, a three-dimensional data encoding method and a three-dimensional data encoding device for providing a function of transmitting and receiving the necessary information according to the application in the encoded data of three-dimensional point clouds, a three-dimensional data decoding method and a three-dimensional data decoding device for decoding the encoded data, a three-dimensional data multiplexing method for multiplexing the encoded data, and a three-dimensional data transmission method for transmitting the encoded data will be described.
[0036] In particular, currently, as encoding methods (encoding formats) for point cloud data, a first encoding method and a second encoding method are being studied, but the configuration of the encoded data and the method of storing the encoded data in the system format are not defined, and there is a problem that MUX processing (multiplexing) in the encoding unit, or transmission or storage cannot be performed as it is.
[0037] 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).
[0038] 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.
[0039] 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.
[0040] The three-dimensional data encoding system 4601 generates encoded data or multiplexed data by encoding point cloud data, which is three-dimensional data. Note that the three-dimensional data encoding system 4601 may be a three-dimensional data encoding device realized by a single device, or may be a system realized by a plurality of devices. Further, the three-dimensional data encoding device may include a part of a plurality of processing units included in the three-dimensional data encoding system 4601.
[0041] 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.
[0042] 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.
[0043] The presentation unit 4612 presents sensor information or point cloud data to the user. For example, the presentation unit 4612 displays information or an image based on the sensor information or point cloud data.
[0044] The encoding unit 4613 encodes (compresses) the point cloud data and outputs the obtained encoded data, control information obtained in the encoding process, and other additional information to the multiplexing unit 4614. The additional information includes, for example, sensor information.
[0045] The multiplexing unit 4614 generates multiplexed data by multiplexing the encoded data input from the encoding unit 4613, control information, and additional information. The format of the multiplexed data is, for example, a file format for storage or a packet format for transmission.
[0046] 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 application execution unit) controls each processing unit. That is, the control unit 4616 performs control such as encoding and multiplexing.
[0047] Note that sensor information may be input to the encoding unit 4613 or the multiplexing unit 4614. Also, the input / output unit 4615 may output the point cloud data or the encoded data to the outside as it is.
[0048] 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.
[0049] The three-dimensional data decoding system 4602 generates point cloud data, which is three-dimensional data, by decoding the encoded data or the multiplexed data. Note that the three-dimensional data decoding system 4602 may be a three-dimensional data decoding device realized by a single device, or may be a system realized by a plurality of devices. Also, the three-dimensional data decoding device may include a part of the plurality of processing units included in the three-dimensional data decoding system 4602.
[0050] 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.
[0051] The sensor information acquisition unit 4621 acquires sensor information from the sensor terminal 4603.
[0052] The input / output unit 4622 acquires a transmission signal, decodes multiplexed data (file format or packet) from the transmission signal, and outputs the multiplexed data to the demultiplexing unit 4623.
[0053] The demultiplexing unit 4623 acquires encoded data, control information, and additional information from the multiplexed data, and outputs the encoded data, control information, and additional information to the decoding unit 4624.
[0054] The decoding unit 4624 reconstructs point cloud data by decoding the encoded data.
[0055] 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 app execution unit) controls each processing unit. That is, the control unit 4627 performs controls such as demultiplexing, decoding, and presentation.
[0056] Note that the input / output unit 4622 may directly acquire point cloud data or encoded data from the outside. Also, the presentation unit 4625 may acquire additional information such as sensor information and present information based on the additional information. Further, the presentation unit 4625 may perform presentation based on an instruction obtained by the user interface 4626 from the user.
[0057] The sensor terminal 4603 generates sensor information, which is information obtained by a sensor. The sensor terminal 4603 is a terminal equipped with a sensor or a camera, and examples include a moving body such as an automobile, a flying object such as an airplane, a mobile terminal, or a camera.
[0058] The sensor information that can be obtained by the sensor terminal 4603 is, for example, (1) the distance between the sensor terminal 4603 and the object, or the reflectivity of the object, obtained from a LIDAR, millimeter-wave radar, or infrared sensor, (2) the distance between the camera and the object or the reflectivity of the object obtained from a plurality of monocular camera images or stereo camera images, etc. Further, the sensor information may include the attitude, orientation, gyro (angular velocity), position (GPS information or altitude), speed, or acceleration, etc. of the sensor. Further, the sensor information may include temperature, atmospheric pressure, humidity, or magnetism, etc.
[0059] 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.
[0060] Next, the point cloud data will be described. FIG. 2 is a diagram showing the configuration of the point cloud data. FIG. 3 is a diagram showing a configuration example of a data file in which the information of the point cloud data is described.
[0061] The point cloud data includes data of a plurality of points. The data of each point includes position information (three-dimensional coordinates) and attribute information for the position information. A collection of these points is called a point cloud. For example, the point cloud shows the three-dimensional shape of an object.
[0062] Position information (Position) such as three-dimensional coordinates may also be called geometry. Further, the data of each point may include attribute information (attribute) of a plurality of attribute types. The attribute types are, for example, color or reflectivity, etc.
[0063] One piece of attribute information may be associated with one piece of position information, or attribute information having a plurality of different attribute types may be associated with one piece of position information. Further, a plurality of pieces of attribute information of the same attribute type may be associated with one piece of position information.
[0064] 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.
[0065] The position information is, for example, information on three axes of x, y, and z. The attribute information is, for example, color information of RGB. A typical data file includes a ply file or the like.
[0066] Next, the types of point cloud data will be described. FIG. 4 is a diagram showing the types of point cloud data. As shown in FIG. 4, the point cloud data includes a static object and a dynamic object.
[0067] The static object is three-dimensional point cloud data at an arbitrary time (a certain time). The dynamic object is three-dimensional point cloud data that changes over time. Hereinafter, the three-dimensional point cloud data at a certain time is referred to as a PCC frame or a frame.
[0068] The object may be a point cloud with a limited area like ordinary video data, or a large-scale point cloud with an unlimited area like map information.
[0069] Also, there is point cloud data with various densities, and there may be sparse point cloud data and dense point cloud data.
[0070] Hereinafter, the details of each processing unit will be described. The sensor information is obtained by various methods such as a distance sensor such as LIDAR or a range finder, a stereo camera, or a combination of a plurality of monocular cameras. The point cloud data generation unit 4618 generates point cloud data based on the sensor information obtained by the sensor information acquisition unit 4617. The point cloud data generation unit 4618 generates position information as the point cloud data, and adds attribute information for the position information to the position information.
[0071] When generating position information or adding attribute information, the point cloud data generation unit 4618 may process the point cloud data. For example, the point cloud data generation unit 4618 may reduce the data volume by deleting overlapping point clouds. Also, the point cloud data generation unit 4618 may convert the position information (such as position shift, rotation, or normalization), or may render the attribute information.
[0072] 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.
[0073] The encoding unit 4613 generates encoded data by encoding the point cloud data based on a predefined encoding method. There are roughly two types of encoding methods as follows. The first is an encoding method using position information, which will be described as the first encoding method hereinafter. The second is an encoding method using a video codec, which will be described as the second encoding method hereinafter.
[0074] The decoding unit 4624 decodes the point cloud data by decoding the encoded data based on a predefined encoding method.
[0075] 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. The multiplexing unit 4614 multiplexes, in addition to the PCC encoded data, other media such as video, audio, subtitles, applications, files, or reference time information. Also, the multiplexing unit 4614 may further multiplex sensor information or attribute information related to the point cloud data.
[0076] 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.
[0077] The inverse multiplexing unit 4623 extracts PCC encoded data, other media, time information, etc. from the multiplexed data.
[0078] 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.
[0079] As the communication protocol, http, ftp, TCP, UDP, etc. are used. A PULL type communication method may be used or a PUSH type communication method may be used.
[0080] Either wired transmission or wireless transmission may be used. As the wired transmission, Ethernet (registered trademark), USB, RS-232C, HDMI (registered trademark), or coaxial cable, etc. are used. As the wireless transmission, wireless LAN, Wi-Fi (registered trademark), Bluetooth (registered trademark), or millimeter wave, etc. are used.
[0081] Also, as the broadcasting method, for example, DVB-T2, DVB-S2, DVB-C2, ATSC 3.0, or ISDB-S3, etc. are used.
[0082] FIG. 5 is a diagram showing the configuration of a first encoding unit 4630 which is an example of the encoding unit 4613 that performs encoding by the first encoding method. FIG. 6 is a block diagram of the first encoding unit 4630. The first encoding unit 4630 generates encoded data (encoded stream) by encoding the point cloud data by the first encoding method. This first encoding unit 4630 includes a position information encoding unit 4631, an attribute information encoding unit 4632, an additional information encoding unit 4633, and a multiplexing unit 4634.
[0083] 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).
[0084] The point cloud data is PCC point cloud data such as a PLY file or PCC point cloud data generated from sensor information, and includes position information, attribute information, and other additional information (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.
[0085] The position information encoding unit 4631 generates encoded position information (Compressed Geometry), which is encoded data, by encoding the position information. For example, the position information encoding unit 4631 encodes the position information using an N-ary tree structure such as an octree. Specifically, in an octree, the target space is divided into eight nodes (sub-spaces), and 8-bit information (occupancy code) indicating whether each node contains a point cloud is generated. Further, the nodes containing the point cloud are divided into eight nodes, and 8-bit information indicating whether each of the eight nodes contains a point cloud is generated. This process is repeated until the number of point clouds included in a predetermined hierarchy or node is less than or equal to a threshold value.
[0086] 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 among the peripheral nodes or adjacent nodes whose parent node in the octree is the same as the target node. Note that the method for determining the reference relationship is not limited to this.
[0087] Also, the encoding process of the attribute information may include at least one of quantization processing, prediction processing, and arithmetic encoding processing. In this case, reference means using the reference node to calculate the predicted value of the attribute information, or using the state of the reference node (for example, occupancy information indicating whether the reference node includes 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.
[0088] The additional information encoding unit 4633 generates encoded additional information (Compressed MetaData), which is encoded data, by encoding compressible data among the additional information.
[0089] The multiplexing unit 4634 generates an encoded stream (Compressed Stream), which is encoded data, by multiplexing the encoded position information, encoded attribute information, encoded additional information, and other additional information. The generated encoded stream is output to a processing unit in a system layer (not shown).
[0090] 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 (encoded stream) encoded by the first encoding method using the first encoding method. This 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.
[0091] An encoded stream (Compressed Stream), which is encoded data, is input to the first decoder 4640 from a processing unit in a system layer (not shown).
[0092] The demultiplexing unit 4641 separates encoded position information (Compressed Geometry), encoded attribute information (Compressed Attribute), encoded additional information (Compressed MetaData), and other additional information from the encoded data.
[0093] 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.
[0094] The attribute information decoding unit 4643 decodes the encoded attribute information based on the configuration information generated by the position information decoding unit 4642. For example, the attribute information decoding unit 4643 determines a reference point (reference node) to be referred to in decoding a target point (target node) to be processed based on the octree structure obtained by the position information decoding unit 4642. For example, the attribute information decoding unit 4643 refers to a node in which the parent node in the octree is the same as the target node among the surrounding nodes or adjacent nodes. Note that the method for determining the reference relationship is not limited to this.
[0095] Further, the decoding process of the attribute information may include at least one of inverse quantization processing, prediction processing, and arithmetic decoding processing. In this case, reference means using a reference node to calculate a predicted value of the attribute information, or using the state of the reference node (for example, occupancy information indicating whether a point cloud is included in the reference node) to determine the decoding parameters. For example, the decoding parameters are quantization parameters in inverse quantization processing or contexts in arithmetic decoding, etc.
[0096] 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.
[0097] 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.
[0098] 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.
[0099] 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).
[0100] 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).
[0101] The additional information generation unit 4651 generates map information of a plurality of two-dimensional images by projecting the three-dimensional structure onto a two-dimensional image.
[0102] The position image generation unit 4652 generates a position image (Geometry Image) based on the position information and the map information generated by the additional information generation unit 4651. This position image is, for example, a distance image in which the distance (Depth) is indicated as a pixel value. Note that this distance image may be an image obtained by viewing a plurality of point clouds from one viewpoint (an image obtained by projecting a plurality of point clouds onto one two-dimensional plane), or may be a plurality of images obtained by viewing a plurality of point clouds from a plurality of viewpoints, or may be one image obtained by integrating these plurality of images.
[0103] 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 obtained by viewing a plurality of point clouds from one viewpoint (an image obtained by projecting a plurality of point clouds onto one two-dimensional plane), or may be a plurality of images obtained by viewing a plurality of point clouds from a plurality of viewpoints, or may be one image obtained by integrating these plurality of images.
[0104] 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 or HEVC or the like.
[0105] The additional information encoding unit 4655 generates encoded additional information (Compressed MetaData) by encoding the additional information included in the point cloud data, the map information, and the like.
[0106] The multiplexing unit 4656 generates an encoded stream (Compressed Stream), which is encoded data, by multiplexing the encoded position image, the encoded attribute image, the encoded additional information, and other additional information. The generated encoded stream is output to a processing unit in a system layer (not shown).
[0107] Next, a second decoding unit 4660, which is an example of a decoding unit 4624 that decodes using the second encoding method, will be described. FIG. 11 is a diagram showing the configuration of the second decoding unit 4660. FIG. 12 is a block diagram of the second decoding unit 4660. The second decoding unit 4660 generates point cloud data by decoding encoded data (encoded stream) encoded using the second encoding method with the second encoding method. This second decoding unit 4660 includes a demultiplexing unit 4661, a video decoding unit 4662, an additional information decoding unit 4663, a position information generation unit 4664, and an attribute information generation unit 4665.
[0108] An encoded stream (Compressed Stream), which is encoded data, is input to the second decoding unit 4660 from a processing unit in a system layer (not shown).
[0109] The demultiplexing unit 4661 separates the encoded position image (Compressed Geometry Image), the encoded attribute image (Compressed Attribute Image), the encoded additional information (Compressed MetaData), and other additional information from the encoded data.
[0110] The video decoding unit 4662 generates a position image and an attribute image by decoding the encoded position image and the encoded attribute image using a video encoding method. Note that any known encoding method may be used as the video encoding method. For example, the video encoding method is AVC or HEVC, etc.
[0111] The additional information decoding unit 4663 generates additional information including map information and the like by decoding the encoded additional information.
[0112] 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.
[0113] The second decoding unit 4660 uses the additional information necessary for decoding during decoding and outputs the additional information necessary for the application to the outside.
[0114] Hereinafter, the problems in the PCC encoding method will be described. FIG. 13 is a diagram showing a protocol stack related to PCC encoded data. FIG. 13 shows an example in which data of other media such as video (for example, HEVC) or audio is multiplexed with the PCC encoded data for transmission or storage.
[0115] The multiplexing method and the file format have functions for multiplexing various encoded data for transmission or storage. In order to transmit or store the encoded data, the encoded data must be converted into the format of the multiplexing method. For example, in HEVC, a technique is defined in which the encoded data is stored in a data structure called a NAL unit, and the NAL unit is stored in ISOBMFF.
[0116] On the other hand, currently, a first encoding method (Codec1) and a second encoding method (Codec2) are being considered as encoding methods for point cloud data, but the configuration of the encoded data and the method of storing the encoded data in the system format are not defined, and there is a problem that MUX processing (multiplexing), transmission, and storage in the encoding unit cannot be performed as it is.
[0117] In the following, unless otherwise specified, either the first encoding method or the second encoding method is assumed.
[0118] (Embodiment 2) In this embodiment, a method of storing the NAL unit in an ISOBMFF file will be described.
[0119] 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 media-independent standard.
[0120] The basic structure (file) of ISOBMFF will be described. The basic unit in ISOBMFF is a box. A box is composed of type, length, and data, and a collection of boxes of various types combined is a file.
[0121] Figure 14 is a diagram showing the basic structure (file) of ISOBMFF. The file of ISOBMFF mainly includes boxes such as ftyp that indicates the file brand in 4CC (4-character code), moov that stores metadata such as control information, and mdat that stores data.
[0122] The storage method for each media in the ISOBMFF file is separately defined. For example, the storage methods for AVC video and HEVC video are defined in ISO / IEC 14496-15. Here, in order to accumulate or transmit PCC encoded data, it is conceivable to extend and use the functions of ISOBMFF, but there is 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.
[0123] Figure 15 is a diagram showing the protocol stack when storing NAL units common to the PCC codec in the ISOBMFF file. Here, the NAL units common to the PCC codec are stored in the ISOBMFF file. Although the NAL units are common to the PCC codec, since a plurality of PCC codecs are stored in the NAL units, it is desirable to define storage methods (Carriage of Codec1, Carriage of Codec2) corresponding to each codec.
[0124] (Embodiment 3) 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 generation method of 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.
[0125] 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).
[0126] FIG. 16 is a diagram showing the configuration of an encoding unit 4801 and a multiplexing unit 4802 included in the three-dimensional data encoding apparatus according to this embodiment. The encoding unit 4801 corresponds to, for example, the above-described first encoding unit 4630 or second encoding unit 4650. The multiplexing unit 4802 corresponds to the above-described multiplexing unit 4634 or 4656.
[0127] 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.
[0128] The multiplexing unit 4802 converts the data into a data configuration considering data access in the decoder by NAL unitizing the data of a plurality of data types (position information, attribute information, and additional information).
[0129] FIG. 17 is a diagram showing a configuration example of encoded data generated by an encoding unit 4801. The arrows in the figure indicate the dependency relationships related to the decoding of the encoded data, and the source of the arrow depends on the data at the destination of the arrow. That is, the decoding device decodes the data at the destination of the arrow and uses the decoded data to decode the data at the source of the arrow. In other words, to depend means that the data at the destination is referenced (used) in the processing (such as encoding or decoding) of the data at the source of the dependency.
[0130] 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.
[0131] 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.
[0132] Furthermore, the encoded position data composed of a plurality of frames is defined as a geometry sequence. The encoding unit 4801 generates a geometry 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 geometry sequence. The geometry sequence depends on the position SPS.
[0133] Next, the generation process of the encoded data of the attribute information will be described. The encoding unit 4801 generates encoded attribute data (Compressed Attribute Data) for each frame by encoding the attribute information of each frame. Also, the encoded attribute data is represented by A(i). In FIG. 17, 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).
[0134] 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.
[0135] 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 (Attribute Sequence PS: also denoted as attribute SPS) that stores parameters commonly used for the decoding process for a plurality of frames within the attribute sequence. The attribute sequence depends on the attribute SPS.
[0136] Also, in the first encoding method, the encoded attribute data depends on the encoding position data.
[0137] Also, FIG. 17 shows an example in the case where there are two types of attribute information (attribute X and attribute Y). When there are two types of attribute information, for example, two encoding units generate respective data and metadata. Also, for example, an attribute sequence is defined for each type of attribute information, and an attribute SPS is generated for each type of attribute information.
[0138] Note that in FIG. 17, an example is shown where there is one type of position information and two types of attribute information. However, this is not the only case. The attribute information may be one type or three or more types. Even in this case, encoded data can be generated in the same way. Also, in the case of point cloud data without attribute information, the attribute information may not be present. In that case, the encoding unit 4801 does not have to generate a parameter set related to the attribute information.
[0139] Next, the generation process of additional information (metadata) will be described. The encoding unit 4801 generates a PCC stream PS (also referred to as stream PS), which is a parameter set for the entire PCC stream. The encoding unit 4801 stores in the stream PS parameters that can be commonly used for the decoding process of one or more position sequences and one or more attribute sequences. For example, the stream PS includes identification information indicating the codec of the point cloud data, information indicating the algorithm used for encoding, and the like. The position sequence and the attribute sequence depend on the stream PS.
[0140] Next, the access unit and GOF will be described. In this embodiment, the concepts of a new access unit (Access Unit: AU) and GOF (Group of Frame) are introduced.
[0141] The access unit is the 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.
[0142] 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.
[0143] Note that the symbolization unit 4801 may generate an access unit delimiter that does not include parameters related to the access unit instead of the access unit header. This access unit delimiter is used as identification information indicating the start of the access unit. The decoding device identifies the start of the access unit by detecting the access unit header or the access unit delimiter.
[0144] Next, the generation of the identification information at the start of a group of pictures (GOF) will be described. The symbolization unit 4801 generates a GOF header as identification information indicating the start of a GOF. The symbolization unit 4801 stores parameters related to the GOF in the GOF header. For example, the GOF header includes the configuration or information of the encoded data included in the GOF. Also, the GOF header includes parameters commonly used for the data included in the GOF, such as parameters related to the decoding of the encoded data.
[0145] Note that the symbolization unit 4801 may generate a GOF delimiter that does not include parameters related to the GOF instead of the GOF header. This GOF delimiter is used as identification information indicating the start of the GOF. The decoding device identifies the start of the GOF by detecting the GOF header or the GOF delimiter.
[0146] In the PCC encoded data, for example, an access unit is defined in units of PCC frames. The decoding device accesses the PCC frame based on the identification information at the start of the access unit.
[0147] Also, for example, a GOF is defined as one random access unit. The decoding device accesses the random access unit based on the identification information at the head of the GOF. For example, if PCC frames are independent of each other and can be decoded alone, the PCC frames may be defined as random access units.
[0148] 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.
[0149] 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.
[0150] Next, the configuration of the encoded data and the method of storing the encoded data in the NAL unit will be described.
[0151] For example, a data format is defined for each type of encoded data. FIG. 18 is a diagram showing an example of encoded data and NAL units.
[0152] For example, as shown in FIG. 18, 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.
[0153] The header includes, for example, identification information for specifying the data. This identification information indicates, for example, the data type or the frame number.
[0154] 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.
[0155] 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.
[0156] 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. 19 is a diagram showing an example of the semantics of pcc_nal_unit_type.
[0157] As shown in FIG. 19, 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.
[0158] When the pcc_codec_type is Codec2 (the second encoding method), the values 0 to 2 of pcc_nal_unit_type are assigned to the codec's Data A, MetaData A, and MetaData B. Also, values 3 and later are assigned to the reserve of Codec2.
[0159] Next, the data transmission order will be described. Hereinafter, the constraints on the transmission order of NAL units will be described.
[0160] The multiplexing unit 4802 transmits NAL units in groups of GOF or AU. The multiplexing unit 4802 places a GOF header at the beginning of the GOF and an AU header at the beginning of the AU.
[0161] Even if data is lost due to packet loss or the like, the multiplexing unit 4802 may place the sequence parameter set (SPS) for each AU so that the decoder can decode from the next AU.
[0162] When there is a dependency relationship related to decoding in the encoded data, the decoder decodes the reference destination data first and then the reference source data. In the decoder, in order to be able to decode in the received order without reordering the data, the multiplexing unit 4802 transmits the reference destination data first.
[0163] Figure 20 is a diagram showing an example of the transmission order of NAL units. Figure 20 shows three examples: position information priority, parameter priority, and data integration.
[0164] 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.
[0165] 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.
[0166] Note that in FIG. 20, the attribute XSPS and the attribute YSPS are integrated and described as the attribute SPS, but the attribute XSPS and the attribute YSPS may be arranged individually.
[0167] In the transmission order with parameter set priority, the parameter set is transmitted first and the data is transmitted later.
[0168] As described above, according to the constraints of the NAL unit transmission order, the multiplexing unit 4802 may transmit the NAL units in any order. For example, order identification information is defined, and the multiplexing unit 4802 may have a function of transmitting the NAL units in a plurality of pattern orders. For example, the order identification information of the NAL unit is stored in the stream PS.
[0169] 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.
[0170] Note that the multiplexing unit 4802 may generate encoded data in which a plurality of functions are merged as long as it is within the range of following the constraints of the transmission order, such as the transmission order of data integration. For example, as shown in FIG. 20, the GOF header and the AU header may be integrated, or the AXPS and the AYPS may be integrated. In this case, an identifier indicating that the data has a plurality of functions is defined for pcc_nal_unit_type.
[0171] Hereinafter, a modification example of the present embodiment will be described. PS has levels such as frame-level PS, sequence-level PS, and PCC sequence-level PS. If the PCC sequence level is set as the upper level and the frame level is set as the lower level, the following method may be used for the parameter storage method.
[0172] 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.
[0173] 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, for pcc_nal_unit_type, an identifier indicating that it is data storing data or parameters related to tiles or slices is defined.
[0174] (Embodiment 4) In HEVC encoding, there are data division tools such as slices or tiles to enable parallel processing in the decoding device, but there is no such thing in PCC (Point Cloud Compression) encoding yet.
[0175] In PCC, various data division methods can be considered depending on parallel processing, compression efficiency, and compression algorithms. Here, the definitions of slices and tiles, data structures, and transmission / reception methods will be described.
[0176] FIG. 21 is a block diagram showing the configuration of a first encoding unit 4910 included in the three-dimensional data encoding apparatus according to the present embodiment. The first encoding unit 4910 generates encoded data (encoded stream) by encoding point cloud data using a first encoding method (GPCC (Geometry based PCC)). The first encoding unit 4910 includes a division unit 4911, a plurality of position information encoding units 4912, a plurality of attribute information encoding units 4913, an additional information encoding unit 4914, and a multiplexing unit 4915.
[0177] The division unit 4911 generates a plurality of divided data by dividing the point cloud data. Specifically, the division unit 4911 generates a plurality of divided data by dividing the space of the point cloud data into a plurality of subspaces. Here, the subspace 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 division unit 4911 divides the position information into a plurality of divided position information, and divides the attribute information into a plurality of divided attribute information. Further, the division unit 4911 generates additional information regarding the division.
[0178] The plurality of position information encoding units 4912 generate a plurality of encoded position information by encoding the plurality of divided position information. For example, the plurality of position information encoding units 4912 perform parallel processing on the plurality of divided position information.
[0179] The plurality of attribute information encoding units 4913 generate a plurality of encoded attribute information by encoding the plurality of divided attribute information. For example, the plurality of attribute information encoding units 4913 perform parallel processing on the plurality of divided attribute information.
[0180] The additional information encoding unit 4914 generates encoded additional information by encoding the additional information included in the point cloud data and the additional information regarding data division generated at the time of division by the division unit 4911.
[0181] The multiplexing unit 4915 generates encoded data (encoded stream) by multiplexing a plurality of encoded position information, a plurality of encoded attribute information, and encoded additional information, and transmits the generated encoded data. The encoded additional information is used during decoding.
[0182] Note that in FIG. 21, an example where the number of the position information encoding units 4912 and the number of the attribute information encoding units 4913 are both two are shown, but the number of the position information encoding units 4912 and the number of the attribute information encoding units 4913 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, 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.
[0183] FIG. 22 is a block diagram showing the configuration of the first decoding unit 4920. The first decoding unit 4920 restores point cloud data by decoding the encoded data (encoded stream) generated by encoding the point cloud data by the first encoding method (GPCC). This first decoding unit 4920 includes a demultiplexing unit 4921, a plurality of position information decoding units 4922, a plurality of attribute information decoding units 4923, an additional information decoding unit 4924, and a combining unit 4925.
[0184] The demultiplexing unit 4921 generates a plurality of encoded position information, a plurality of encoded attribute information, and encoded additional information by demultiplexing the encoded data (encoded stream).
[0185] The plurality of position information decoding units 4922 generate a plurality of divided position information by decoding the plurality of encoded position information. For example, the plurality of position information decoding units 4922 process the plurality of encoded position information in parallel.
[0186] The plurality of attribute information decoding units 4923 generate a plurality of divided attribute information by decoding the plurality of encoded attribute information. For example, the plurality of attribute information decoding units 4923 process the plurality of encoded attribute information in parallel.
[0187] The plurality of additional information decoding units 4924 generate additional information by decoding the encoded additional information.
[0188] The combining unit 4925 generates position information by combining a plurality of split position information using the additional information. The combining unit 4925 generates attribute information by combining a plurality of split attribute information using the additional information.
[0189] In FIG. 22, examples are shown where the number of the position information decoding unit 4922 and the attribute information decoding unit 4923 is two each, but the number of the position information decoding unit 4922 and the attribute information decoding unit 4923 may be one each or three or more. Also, the plurality of split data may be processed in parallel within the same chip like a plurality of cores in the CPU, may be processed in parallel by the cores of a plurality of chips, or may be processed in parallel by the plurality of cores of a plurality of chips.
[0190] Next, the configuration of the splitting unit 4911 will be described. FIG. 23 is a block diagram of the splitting unit 4911. The splitting unit 4911 includes a slice splitting unit 4931 (Slice Divider), a position information tile splitting unit 4932 (Geometry Tile Divider), and an attribute information tile splitting unit 4933 (Attribute Tile Divider).
[0191] The slice splitting unit 4931 generates a plurality of slice position information by splitting the position information (Position(Geometry)) into slices. Also, the slice splitting unit 4931 generates a plurality of slice attribute information by splitting the attribute information (Attribute) into slices. Further, the slice splitting unit 4931 outputs slice additional information (Slice MetaData) including information related to the slice splitting and information generated in the slice splitting.
[0192] The position information tile division unit 4932 generates a plurality of divided position information (a plurality of tile position information) by dividing a plurality of slice position information into tiles. Further, 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.
[0193] 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.
[0194] Note that the number of slices or tiles to be divided is 1 or more. That is, it is not necessary to perform the division of slices or tiles.
[0195] 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.
[0196] Hereinafter, a method for dividing point cloud data will be described. FIG. 24 is a diagram showing an example of slice and tile division.
[0197] First, the method of slice division will be described. The division unit 4911 divides the three-dimensional point cloud data into arbitrary point clouds in slice units. In slice division, the division unit 4911 does not divide the position information and the attribute information that constitute the points, 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 points corresponding to the position information after slice division and the three-dimensional points corresponding to the attribute information are included in the same slice.
[0198] In addition, the division unit 4911 generates slice additional information, which is additional information related to the number of divisions and the division method during slice division. The slice additional information is the same for the position information and the attribute information. For example, the slice additional information includes information indicating the reference coordinate position, size, or side length of the bounding box after division. The slice additional information also includes information indicating the number of divisions, the division type, and the like.
[0199] Next, the method of tile division will be described. The division unit 4911 divides the data divided by slice into slice position information (G slice) and slice attribute information (A slice), and divides the slice position information and the slice attribute information into tile units respectively.
[0200] Note that FIG. 24 shows an example of division in an octree structure, but the number of divisions and the division method may be any method.
[0201] In addition, the division unit 4911 may divide the position information and the attribute information by different division methods, or may divide them by the same division method. Also, the division unit 4911 may divide a plurality of slices into tiles by different division methods, or may divide them into tiles by the same division method.
[0202] Further, the splitting unit 4911 generates tile addition information related to the number of splits and the splitting method during tile splitting. The tile addition information (position tile addition information and attribute tile addition information) is independent of the position information and the attribute information. For example, the tile addition information includes information indicating the reference coordinate position, size, or side length of the bounding box after splitting. Also, the tile addition information includes information indicating the number of splits and the split type, etc.
[0203] 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 for slice or tile splitting, or may adaptively switch the method to be used according to the point cloud data.
[0204] During slice splitting, the splitting unit 4911 divides the three-dimensional space all at once for the position information and the attribute information. For example, the splitting 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 splitting unit 4911 extracts an object such as a tree or a building and performs splitting in object units. For example, the splitting unit 4911 performs slice splitting so that the whole of one or a plurality of objects is included in one slice. Or, the splitting unit 4911 divides one object into a plurality of slices.
[0205] In this case, the encoding device may, for example, change the encoding method for each slice. For example, the encoding device may use a high-quality compression method for a specific object or a specific part of an object. In this case, the encoding device may store information indicating the encoding method for each slice in the additional information (metadata).
[0206] Further, the splitting unit 4911 may perform slice splitting so that each slice corresponds to a predetermined coordinate space based on the map information or the position information.
[0207] When performing tile division, the division unit 4911 divides the position information and the attribute information independently. For example, the division unit 4911 divides a slice into tiles according to the data volume or the processing volume. For example, the division unit 4911 determines whether the data volume of the slice (for example, the number of three-dimensional points included in the slice) is more than a predetermined threshold value. When the data volume of the slice is more than the threshold value, the division unit 4911 divides the slice into tiles. When the data volume of the slice is less than the threshold value, the division unit 4911 does not divide the slice into tiles.
[0208] For example, the division unit 4911 divides a slice into tiles so that the processing volume or the processing time in the decoding device falls within a certain range (not more than a predetermined value). Thereby, the processing volume per tile in the decoding device becomes constant, and parallel processing in the decoding device becomes easy.
[0209] Also, when the processing volumes of the position information and the attribute information are different in the division unit 4911, for example, when the processing volume of the position information is more than the processing volume of the attribute information, the division number of the position information is made larger than the division number of the attribute information.
[0210] Also, for example, when, depending on the content, it is possible in the decoding device to decode and display the position information quickly and then decode and display the attribute information slowly later, the division unit 4911 may also make the division number of the position information larger than the division number of the attribute information. Thereby, the decoding device can increase the parallel number of the position information, so that the processing of the position information can be made faster than the processing of the attribute information.
[0211] Note that the decoding device does not necessarily need to perform parallel processing on the sliced or tiled data, and may determine whether to perform parallel processing on these according to the number or the capabilities of the decoding processing units.
[0212] By dividing in the above-described manner, adaptive encoding according to the content or the object can be realized. Also, parallel processing in the decoding process can be realized. Thereby, the flexibility of the point cloud encoding system or the point cloud decoding system is improved.
[0213] FIG. 25 is a diagram showing an example of a pattern of slice and tile division. In the figure, DU is a data unit (DataUnit) and represents the data of a tile or a slice. Each DU also includes a slice index (SliceIndex) and a tile index (TileIndex). The numerical value at the upper right of the DU in the figure indicates the slice index, and the numerical value at the lower left of the DU indicates the tile index.
[0214] In Pattern 1, in slice division, the number of divisions and the division method are the same between the G slice and the A slice. In tile division, the number of divisions and the division method for the G slice are different from those for the A slice. Also, the same number of divisions and the same division method are used among multiple G slices. The same number of divisions and the same division method are used among multiple A slices.
[0215] In Pattern 2, in slice division, the number of divisions and the division method are the same between 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.
[0216] Next, the encoding method of the divided data will be described. The three-dimensional data encoding device (the first encoding unit 4910) encodes the divided data respectively. When encoding the attribute information, the three-dimensional data encoding device generates dependency relationship information indicating based on which configuration information (position information, additional information, or other attribute information) the encoding is performed as additional information. That is, the dependency relationship information indicates, for example, the configuration information of the reference destination (dependency destination). In this case, the three-dimensional data encoding device generates the dependency relationship information based on the configuration information corresponding to the division shape of the attribute information. Note that the three-dimensional data encoding device may generate the dependency relationship information based on the configuration information corresponding to a plurality of division shapes.
[0217] Dependency relationship information is generated by a three-dimensional data encoding device, and the generated dependency relationship information may be sent to a three-dimensional data decoding device. Alternatively, the three-dimensional data decoding device may generate the dependency relationship information, and the three-dimensional data encoding device may not need to send the dependency relationship information. Also, the dependency relationships used by the three-dimensional data encoding device may be determined in advance, and the three-dimensional data encoding device may not need to send the dependency relationship information.
[0218] FIG. 26 is a diagram showing an example of the dependency relationship of each data. The tip of the arrow in the figure indicates the dependency destination, and the origin of the arrow indicates the dependency source. The three-dimensional data decoding device decodes the data in the order from the dependency destination to the dependency source. Also, the data shown by the solid line in the figure is the data actually sent, and the data shown by the dotted line is the data not sent.
[0219] Also, in the same figure, G indicates position information, and A indicates attribute information. G s1 indicates the position information of slice number 1, G s2 indicates the position information of slice number 2. G s1t1 indicates the position information of slice number 1 and tile number 1, G s1t2 indicates the position information of slice number 1 and tile number 2, G s2t1 indicates the position information of slice number 2 and tile number 1, G s2t2 indicates the position information of slice number 2 and tile number 2. Similarly, A s1 indicates the attribute information of slice number 1, A s2 indicates the attribute information of slice number 2. A s1t1 indicates the attribute information of slice number 1 and tile number 1, A s1t2 indicates the attribute information of slice number 1 and tile number 2, A s2t1 indicates the attribute information of slice number 2 and tile number 1, A s2t2 indicates the attribute information of slice number 2 and tile number 2.
[0220] Mslice indicates slice addition information, MGtile indicates position tile addition information, and MAtile indicates attribute tile addition information. D s1t1 is the attribute information As1t1 shows the dependency information of D s2t1 and D is the attribute information A s2t1 shows the dependency information of.
[0221] In addition, the three-dimensional data encoding device may rearrange the data in the decoding order so that the three-dimensional data decoding device does not need to rearrange the data. Note that the data may be rearranged in the three-dimensional data decoding device, or the data may be rearranged in both the three-dimensional data encoding device and the three-dimensional data decoding device.
[0222] FIG. 27 is a diagram showing an example of the decoding order of data. In the example of FIG. 27, decoding is performed in order from the left data. The three-dimensional data decoding device decodes the dependent data first from the dependent data. For example, the three-dimensional data encoding device rearranges and sends out the data in advance so as to be in this order. Note that any order may be used as long as the dependent data comes first. In addition, the three-dimensional data encoding device may send out the additional information and the dependency information before the data.
[0223] FIG. 28 is a flowchart showing the processing flow by the three-dimensional data encoding device. First, the three-dimensional data encoding device encodes the data of a plurality of slices or tiles as described above (S4901). Next, the three-dimensional data encoding device rearranges the data so that the dependent data comes first as shown in FIG. 27 (S4902). Next, the three-dimensional data encoding device multiplexes (NAL unitizes) the rearranged data (S4903).
[0224] Next, the configuration of the combining unit 4925 included in the first decoding unit 4920 will be described. FIG. 29 is a block diagram showing the configuration of the combining unit 4925. The combining unit 4925 includes a position information tile combining unit 4941 (Geometry Tile Combiner), an attribute information tile combining unit 4942 (Attribute Tile Combiner), and a slice combining unit (Slice Combiner).
[0225] The position information tile junction 4941 generates a plurality of slice position information by combining a plurality of divided position information using position tile additional information. The attribute information tile junction 4942 generates a plurality of slice attribute information by combining a plurality of divided attribute information using attribute tile additional information.
[0226] The slice junction 4943 generates position information by combining a plurality of slice position information using slice additional information. Also, the slice junction 4943 generates attribute information by combining a plurality of slice attribute information using slice additional information.
[0227] Note that the number of slices or tiles to be divided is 1 or more. That is, the slicing or tiling may not be performed.
[0228] Also, here, an example in which tile division is performed after slice division is shown, but slice division may be performed after tile division. Also, in addition to slices and tiles, a new division type may be defined, and division may be performed with three or more division types.
[0229] Next, the configuration of the sliced or tiled encoded data and the method of storing the encoded data in the NAL unit (multiplexing method) will be described. FIG. 30 is a diagram showing the configuration of the encoded data and the method of storing the encoded data in the NAL unit.
[0230] The encoded data (divided position information and divided attribute information) is stored in the payload of the NAL unit.
[0231] The symbolized data includes a header and a payload. The header includes identification information for specifying the data included in the payload. This identification information includes, for example, the type of slice division or tile division (slice_type, tile_type), index information (slice_idx, tile_idx) for specifying a slice or a tile, position information of the data (slice or tile), or the address of the data. The index information for specifying a slice is also referred to as a slice index (SliceIndex). The index information for specifying a tile is also referred to as a tile index (TileIndex). Further, the type of division is, for example, a method based on an object shape as described above, a method based on map information or position information, or a method based on the amount of data or the amount of processing, etc.
[0232] Note that all or part of the above information may be stored in one of the header of the division position information and the header of the division attribute information, and may not be stored in the other. For example, when the same division method is used for the position information and the attribute information, the type of division (slice_type, tile_type) and the index information (slice_idx, tile_idx) are the same for the position information and the attribute information. Therefore, these information may be included in the header of one of the position information and the attribute information. For example, when the attribute information depends on the position information, the position information is processed first. Therefore, these information may be included in the header of the position information, and may not be included in the header of the attribute information. In this case, the three-dimensional data decoding device determines, for example, that the attribute information of the dependency source belongs to the same slice or tile as the slice or tile of the position information of the dependency destination.
[0233] In addition, the additional information related to slice division or tile division (slice additional information, position tile additional information, or attribute tile additional information), and the dependency information indicating the dependency relationship, etc. may be stored in and transmitted by an existing parameter set (such as GPS, APS, position SPS, or attribute SPS). When the division method changes for each frame, information indicating the division method may be stored in the parameter set for each frame (such as GPS or APS). When the division method does not change within a sequence, information indicating the division method may be stored in the parameter set for each sequence (position SPS or attribute SPS). Furthermore, when the same division method is used for position information and attribute information, information indicating the division method may be stored in the parameter set of the PCC stream (stream PS).
[0234] Also, the above information may be stored in any of the above parameter sets, or may be stored in a plurality of parameter sets. Also, a parameter set for tile division or slice division may be defined, and the above information may be stored in the parameter set. Also, these information may be stored in the header of the encoded data.
[0235] Also, the header of the encoded data includes identification information indicating the dependency relationship. That is, when there is a dependency relationship between the data, the header includes identification information for referring from the dependent source to the dependent destination. For example, the header of the dependent destination data includes identification information for specifying the data. The header of the dependent source data includes identification information indicating the dependent destination. Note that when the identification information for specifying the data, the additional information related to slice division or tile division, and the identification information indicating the dependency relationship can be identified or derived from other information, these information may be omitted.
[0236] Next, the flow of the encoding process and decoding process of the point cloud data according to this embodiment will be described. FIG. 31 is a flowchart of the encoding process of the point cloud data according to this embodiment.
[0237] First, the three-dimensional data encoding device determines the splitting method to be used (S4911). This splitting method includes whether to perform slice splitting or tile splitting. Further, the splitting method may include the number of splits when performing slice splitting or tile splitting, and the type of splitting, etc. The type of splitting is a method based on the object shape as described above, a method based on map information or position information, or a method based on data volume or processing volume, etc. Note that the splitting method may be predetermined.
[0238] When slice splitting is performed (Yes in S4912), the three-dimensional data encoding device generates a plurality of slice position information and a plurality of slice attribute information by splitting the position information and the attribute information together (S4913). Further, the three-dimensional data encoding device generates slice addition information related to the slice splitting. Note that the three-dimensional data encoding device may split the position information and the attribute information independently.
[0239] When tile splitting is performed (Yes in S4914), the three-dimensional data encoding device generates a plurality of split position information and a plurality of split attribute information by independently splitting a plurality of slice position information and a plurality of slice attribute information (or position information and attribute information) (S4915). Further, the three-dimensional data encoding device generates position tile addition information and attribute tile addition information related to the tile splitting. Note that the three-dimensional data encoding device may split the slice position information and the slice attribute information together.
[0240] 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 (S4916). Further, the three-dimensional data encoding device generates dependency relationship information.
[0241] 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 (S4917). Further, the three-dimensional data encoding device transmits the generated encoded data.
[0242] Figure 32 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 (S4921) by analyzing the additional information related to the splitting method (slice additional information, position tile additional information, and attribute tile additional information) included in the encoded data (encoded stream). This splitting method includes whether to perform slice splitting or tile splitting. Further, the splitting method may include the number of splits and the type of split when performing slice splitting or tile splitting.
[0243] Next, the three-dimensional data decoding device generates split position information and split attribute information (S4922) by decoding a plurality of encoded position information and a plurality of encoded attribute information included in the encoded data using the dependency information included in the encoded data.
[0244] When it is shown by the additional information that tile splitting is performed (Yes in S4923), the three-dimensional data decoding device generates a plurality of slice position information and a plurality of slice attribute information (S4924) by combining the plurality of split position information and the plurality of split attribute information in their respective methods based on the position tile additional information and the attribute tile additional information. Note that the three-dimensional data decoding device may combine the plurality of split position information and the plurality of split attribute information in the same method.
[0245] When it is shown by the additional information that slice splitting is performed (Yes in S4925), the three-dimensional data decoding device generates position information and attribute information (S4926) by combining the plurality of slice position information and the plurality of slice attribute information (the plurality of split position information and the plurality of split attribute information) in the same method based on the slice additional information. Note that the three-dimensional data decoding device may combine the plurality of slice position information and the plurality of slice attribute information in different methods.
[0246] As described above, the three-dimensional data encoding device according to the present embodiment performs the processing shown in FIG. 33. First, the three-dimensional data encoding device divides the target space including a plurality of three-dimensional points into a plurality of divided data (for example, tiles) each included in a plurality of sub-spaces (for example, slices) into which the target space is divided, where each of the divided data includes one or more three-dimensional points. Here, the divided data is a data aggregate including one or more three-dimensional points included in a sub-space. Also, the divided data is a space and may include a space that does not include three-dimensional points. Further, a plurality of divided data may be included in one sub-space, or one divided data may be included in one sub-space. Note that a plurality of sub-spaces may be set in the target space, or one sub-space may be set in the target space.
[0247] Next, the three-dimensional data encoding device generates a plurality of encoded data corresponding to each of the plurality of divided data by encoding each of the plurality of divided data (S4931). The three-dimensional data encoding device generates a bit stream including the plurality of encoded data and a plurality of control information (for example, the header shown in FIG. 30) for each of the plurality of encoded data (S4932). Each of the plurality of control information stores a first identifier (for example, slice_idx) indicating the sub-space corresponding to the encoded data corresponding to the control information, and a second identifier (for example, tile_idx) indicating the divided data corresponding to the encoded data corresponding to the control information.
[0248] According to this, the three-dimensional data decoding device that decodes the bit stream generated by the three-dimensional data encoding device can easily restore the target space by combining the data of the plurality of divided data using the first identifier and the second identifier. Therefore, the processing amount in the three-dimensional data decoding device can be reduced.
[0249] For example, in the three-dimensional data encoding device, in the encoding, the position information and the attribute information of the three-dimensional points included in each of the plurality of divided data are encoded. Each of the plurality of encoded data includes the encoded data of the position information and the encoded data of the attribute information. Each of the plurality of control information includes the control information of the encoded data of the position information and the control information of the encoded data of the attribute information. The first identifier and the second identifier are stored in the control information of the encoded data of the position information.
[0250] For example, in the bitstream, each of the plurality of control information is arranged before the encoded data corresponding to the control information.
[0251] Further, in the three-dimensional data encoding device, a target space including a plurality of three-dimensional points is set to one or more subspaces, and one or more divided data including one or more three-dimensional points in the subspace are included. By encoding each of the divided data, a plurality of encoded data corresponding to each of the plurality of divided data are generated, and a bitstream including the plurality of encoded data and a plurality of control information for each of the plurality of encoded data is generated. Each of the plurality of control information may store a first identifier indicating the subspace corresponding to the encoded data corresponding to the control information and a second identifier indicating the divided data corresponding to the encoded data corresponding to the control information.
[0252] For example, the three-dimensional data encoding device includes a processor and a memory, and the processor performs the above processing using the memory.
[0253] Also, the three-dimensional data decoding apparatus according to the present embodiment performs the processing shown in FIG. 34. First, the three-dimensional data decoding apparatus is included in a plurality of subspaces (for example, slices) obtained by dividing a target space including a plurality of three-dimensional points, and each of a plurality of divided data (for example, tiles) each including one or more three-dimensional points is generated by being encoded. From a bit stream including a plurality of encoded data and a plurality of control information (for example, the header shown in FIG. 30) for each of the plurality of encoded data, a first identifier (for example, slice_idx) indicating a subspace corresponding to the encoded data corresponding to the control information stored in the plurality of control information is obtained, and a second identifier (for example, tile_idx) indicating the divided data corresponding to the encoded data corresponding to the control information is obtained (S4941). Next, the three-dimensional data decoding apparatus restores a plurality of divided data by decoding the plurality of encoded data (S4942). Next, the three-dimensional data decoding apparatus restores the target space by combining the plurality of divided data using the first identifier and the second identifier (S4943). For example, the three-dimensional data encoding apparatus restores a plurality of subspaces by combining a plurality of divided data using the second identifier, and restores the target space (a plurality of three-dimensional points) by combining the plurality of subspaces using the first identifier. Note that the three-dimensional data decoding apparatus may obtain the encoded data of a desired subspace or divided data from the bit stream using at least one of the first identifier and the second identifier, and selectively decode or preferentially decode the obtained encoded data.
[0254] According to this, the three-dimensional data decoding apparatus can easily restore the target space by combining the data of the plurality of divided data using the first identifier and the second identifier. Therefore, the processing amount in the three-dimensional data decoding apparatus can be reduced.
[0255] For example, each of a plurality of encoded data is generated by encoding the position information and the attribute information of the three-dimensional points included in the corresponding divided data, and includes the encoded data of the position information and the encoded data of the attribute information. Each of the plurality of control information includes the control information of the encoded data of the position information and the control information of the encoded data of the attribute information. The first identifier and the second identifier are stored in the control information of the encoded data of the position information.
[0256] For example, in a bit stream, the control information is arranged before the corresponding encoded data.
[0257] For example, a three-dimensional data decoding device includes a processor and a memory, and the processor performs the above processing using the memory.
[0258] (Embodiment 5) In the position information encoding using adjacent dependency, the higher the density of the point cloud, the more likely the encoding efficiency is improved. In this embodiment, the three-dimensional data encoding device combines the point cloud data of consecutive frames, and encodes the point cloud data of consecutive frames together. At this time, the three-dimensional data encoding device generates encoded data with information added for identifying the frame to which each leaf node included in the combined point cloud data belongs.
[0259] Here, the point cloud data of consecutive frames is likely to be similar. Therefore, in consecutive frames, the upper levels of the occupancy codes are likely to be the same. That is, by encoding consecutive frames together, the upper levels of the occupancy codes can be shared.
[0260] Also, the distinction of which frame the point cloud belongs to is made at the leaf node by encoding the index of the frame.
[0261] FIG. 35 is a diagram showing an image of generating a tree structure and an occupancy code from point cloud data of N PCC (Point Cloud Compression) frames. In the figure, the points in the arrows indicate the points belonging to each PCC frame. First, a frame index for specifying a frame is assigned to the points belonging to each PCC frame.
[0262] Next, the points belonging to the N frames are converted into a tree structure, and an occupancy code is generated. Specifically, for each point, it is determined to which leaf node in the tree structure the point belongs. In the figure, the tree structure shows a set of nodes. Starting from the upper nodes in order, it is determined to which node the point belongs. The determination result for each node is encoded as an occupancy code. The occupancy code is common to the N frames.
[0263] Nodes may have points from different frames with different frame indexes assigned. Note that when the resolution of the octree is small, points from the same frame with the same frame index may also be mixed.
[0264] At the bottom - most nodes (leaf nodes), points belonging to multiple frames may be mixed (duplicated).
[0265] In the tree structure and the occupancy code, the tree structure and the occupancy code at the upper levels may be common components in all frames, and the tree structure and the occupancy code at the lower levels may be individual components for each frame, or a mixture of common components and individual components.
[0266] For example, at the bottom - most nodes such as leaf nodes, 0 or more points with frame indexes are generated, and information indicating the number of points and information on the frame indexes for each point are generated. These information can be said to be individual information for each frame.
[0267] FIG. 36 is a diagram showing an example of frame combination. As shown in FIG. 36(a), by generating a tree structure by grouping a plurality of frames together, the point density of the frames included in the same node increases. Also, by sharing the tree structure, the data amount of the occupancy code can be reduced. Thereby, there is a possibility of improving the coding rate.
[0268] Also, as shown in FIG. 36(b), since the arithmetic coding effect is enhanced by making the individual components of the occupancy code in the tree structure denser, there is a possibility of improving the coding rate.
[0269] Hereinafter, the combination of a plurality of temporally different PCC frames will be described as an example, but it is also applicable when there are not a plurality of frames, that is, when frames are not combined (N = 1). Also, the plurality of point cloud data to be combined is not limited to a plurality of frames, that is, point cloud data at different times of the same object. That is, the following method is also applicable to the combination of a plurality of spatially or spatio-temporally different point cloud data. Also, the following method is also applicable to the combination of point cloud data or point cloud files with different contents.
[0270] FIG. 37 is a diagram showing an example of the combination of a plurality of temporally different PCC frames. FIG. 37 shows an example of acquiring point cloud data with a sensor such as LiDAR while an automobile is moving. The dotted line indicates the acquisition range of the sensor for each frame, that is, the area of the point cloud data. When the acquisition range of the sensor is large, the range of the point cloud data also becomes large.
[0271] The method of combining and encoding point cloud data is effective for the following types of point cloud data. For example, in the example shown in FIG. 37, the automobile is moving, and the frame is identified by a 360° scan around the automobile. That is, frame 2, which is the next frame, corresponds to another 360° scan after the vehicle has moved in the X direction.
[0272] In this case, since there are overlapping regions between Frame 1 and Frame 2, there is a possibility that they contain the same point cloud data. Therefore, it may be possible to improve the encoding efficiency by combining and encoding Frame 1 and Frame 2. Note that it is also conceivable to combine more frames. However, increasing the number of frames to be combined increases the number of bits required for encoding the frame indices added to the leaf nodes.
[0273] Also, point cloud data may be acquired by sensors at different positions. Accordingly, each point cloud data acquired from each position may be used as a frame. That is, the plurality of frames may be point cloud data acquired by a single sensor, or may be point cloud data acquired by a plurality of sensors. Also, among the plurality of frames, some or all of the objects may be the same or different.
[0274] Next, the flow of the three-dimensional data encoding process according to the present embodiment will be described. FIG. 38 is a flowchart of the three-dimensional data encoding process. The three-dimensional data encoding device reads the point cloud data of all N frames based on the number of frames to be combined, which is the number of combined frames N.
[0275] First, the three-dimensional data encoding device determines the number of combined frames N (S5401). For example, this number of combined frames N is specified by the user.
[0276] Next, the three-dimensional data encoding device acquires the point cloud data (S5402). Next, the three-dimensional data encoding device records the frame index of the acquired point cloud data (S5403).
[0277] If the N frames have not been processed (No in S5404), the three-dimensional data encoding device designates the next point cloud data (S5405), and performs the processing from step S5402 onward on the designated point cloud data.
[0278] On the other hand, when the N frames have been processed (Yes in S5404), the three-dimensional data encoding device combines the N frames and encodes the combined frame (S5406).
[0279] FIG. 39 is a flowchart of the encoding process (S5406). First, the three-dimensional data encoding device generates common information common to the N frames (S5411). For example, the common information includes an occupancy code and information indicating the number of combined frames N.
[0280] Next, the three-dimensional data encoding device generates individual information, which is individual information for each frame (S5412). For example, the individual information includes the number of points included in the leaf node and the frame index of the points included in the leaf node.
[0281] Next, the three-dimensional data encoding device combines the common information and the individual information, and generates encoded data by encoding the combined information. Next, the three-dimensional data encoding device generates additional information (metadata) related to frame combination, and encodes the generated additional information (S5414).
[0282] Next, the flow of the three-dimensional data decoding process according to the present embodiment will be described. FIG. 40 is a flowchart of the three-dimensional data decoding process.
[0283] First, the three-dimensional data decoding device acquires the number of combined frames N from the bit stream (S5421). Next, the three-dimensional data encoding device acquires the encoded data from the bit stream (S5422). Next, the three-dimensional data decoding device acquires the point cloud data and the frame index by decoding the encoded data (S5423). Finally, the three-dimensional data decoding device divides the decoded point cloud data using the frame index (S5424).
[0284] Figure 41 is a flowchart of the decoding and splitting processes (S5423 and S5424). First, the three-dimensional data decoding device decodes (acquires) common information and individual information from the encoded data (bitstream) (S5431).
[0285] Next, the three-dimensional data decoding device determines whether to decode a single frame or a plurality of frames (S5432). For example, whether to decode a single frame or a plurality of frames may be specified from the outside. Here, the plurality of frames may be all the frames of the combined frames or some of the frames. For example, the three-dimensional data decoding device may determine to decode a specific frame required by the application and determine not to decode the frames that are not required. Or, when real-time decoding is required, the three-dimensional data decoding device may determine to decode a single frame among the plurality of combined frames.
[0286] When decoding a single frame (Yes in S5432), the three-dimensional data decoding device extracts the individual information corresponding to the specified single frame index from the decoded individual information, and restores the point cloud data of the frame corresponding to the specified frame index by decoding the extracted individual information (S5433).
[0287] On the other hand, when decoding a plurality of frames (No in S5432), the three-dimensional data decoding device extracts the individual information corresponding to the frame indexes of the specified plurality of frames (or all frames), and restores the point cloud data of the specified plurality of frames by decoding the extracted individual information (S5434). Next, the three-dimensional data decoding device divides the decoded point cloud data (individual information) based on the frame indexes (S5435). That is, the three-dimensional data decoding device divides the decoded point cloud data into a plurality of frames.
[0288] Note that the three-dimensional data decoding device may decode the data of all the combined frames at once and divide the decoded data into each frame, or may decode any partial frames of all the combined frames at once and divide the decoded data into each frame. Also, the three-dimensional data decoding device may decode a predetermined unit frame composed of a plurality of frames alone.
[0289] Hereinafter, the configuration of the three-dimensional data encoding device according to the present embodiment will be described. FIG. 42 is a block diagram showing the configuration of an encoding unit 5410 included in the three-dimensional data encoding device according to the present embodiment. The encoding unit 5410 generates encoded data (encoded stream) by encoding point cloud data (point cloud). The encoding unit 5410 includes a dividing unit 5411, a plurality of position information encoding units 5412, a plurality of attribute information encoding units 5413, an additional information encoding unit 5414, and a multiplexing unit 5415.
[0290] The dividing unit 5411 generates a plurality of divided data of a plurality of frames by dividing the point cloud data of the plurality of frames. Specifically, the dividing unit 5411 generates a plurality of divided data by dividing the space of the point cloud data of each frame into a plurality of subspaces. Here, the subspace 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 (such as color or reflectance), and additional information. Also, a frame number is input to the dividing unit 5411. The dividing unit 5411 divides the position information of each frame into a plurality of divided position information, and divides the attribute information of each frame into a plurality of divided attribute information. Also, the dividing unit 5411 generates additional information regarding the division.
[0291] For example, the dividing unit 5411 first divides the point cloud into tiles. Next, the dividing unit 5411 further divides the obtained tiles into slices.
[0292] The plurality of position information encoding units 5412 generate a plurality of encoded position information by encoding a plurality of divided position information. For example, the position information encoding unit 5412 encodes the divided position information using an N-ary tree structure such as an octree. Specifically, in an octree, the target space is divided into eight nodes (sub-spaces), and 8-bit information (occupancy code) indicating whether or not a point group is included in each node is generated. Further, a node containing a point group is further divided into eight nodes, and 8-bit information indicating whether or not a point group is included in each of the eight nodes is generated. This process is repeated until it becomes less than or equal to a threshold value of the number of point groups included in a predetermined layer or node. For example, the plurality of position information encoding units 5412 perform parallel processing on the plurality of divided position information.
[0293] The attribute information encoding unit 4632 generates encoded attribute information, which is encoded data, by encoding using the configuration information generated by the position information encoding unit 4631. For example, the attribute information encoding unit 4632 determines a reference point (reference node) to be 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 peripheral nodes or adjacent nodes. Note that the method for determining the reference relationship is not limited to this.
[0294] Further, the encoding process of the position information or the attribute information may include at least one of a quantization process, a prediction process, and an arithmetic encoding process. In this case, the 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 a point group is included in the reference node) to determine the encoding parameter. For example, the encoding parameter is a quantization parameter in the quantization process or a context in the arithmetic encoding.
[0295] The plurality of attribute information encoding units 5413 generate a plurality of encoded attribute information by encoding a plurality of divided attribute information. For example, the plurality of attribute information encoding units 5413 perform parallel processing on the plurality of divided attribute information.
[0296] The additional information encoding unit 5414 generates encoded additional information by encoding the additional information included in the point cloud data and the additional information regarding data division generated during division by the division unit 5411.
[0297] The multiplexing unit 5415 generates encoded data (encoded stream) by multiplexing the plurality of encoded position information, the plurality of encoded attribute information, and the encoded additional information of a plurality of frames, and transmits the generated encoded data. Also, the encoded additional information is used at the time of decoding.
[0298] FIG. 43 is a block diagram of the division unit 5411. The division unit 5411 includes a tile division unit 5421 and a slice division unit 5422.
[0299] The tile division unit 5421 generates a plurality of tile position information by dividing each of the position information (Position(Geometry)) of a plurality of frames into tiles. Also, the tile division unit 5421 generates a plurality of tile attribute information by dividing each of the attribute information (Attribute) of a plurality of frames into tiles. Also, the tile division unit 5421 outputs tile additional information (Tile MetaData) including information related to tile division and information generated in tile division.
[0300] The slice division unit 5422 generates a plurality of division position information (a plurality of slice position information) by dividing the plurality of tile position information into slices. Also, the slice division unit 5422 generates a plurality of division attribute information (a plurality of slice attribute information) by dividing the plurality of tile attribute information into slices. Also, the slice division unit 5422 outputs slice additional information (Slice MetaData) including information related to slice division and information generated in slice division.
[0301] Also, the division unit 5411 uses a frame number (frame index) in order to indicate the origin coordinates, the attribute information, etc. in the division process.
[0302] FIG. 44 is a block diagram of the position information encoding unit 5412. The position information encoding unit 5412 includes a frame index generation unit 5431 and an entropy encoding unit 5432.
[0303] The frame index generation unit 5431 determines the value of the frame index based on the frame number and adds the determined frame index to the position information. The entropy encoding unit 5432 generates encoded position information by entropy-encoding the divided position information to which the frame index is added.
[0304] FIG. 45 is a block diagram of the attribute information encoding unit 5413. The attribute information encoding unit 5413 includes a frame index generation unit 5441 and an entropy encoding unit 5442.
[0305] The frame index generation unit 5441 determines the value of the frame index based on the frame number and adds the determined frame index to the attribute information. The entropy encoding unit 5442 generates encoded attribute information by entropy-encoding the divided attribute information to which the frame index is added.
[0306] Next, the flow of the encoding process and decoding process of the point cloud data according to the present embodiment will be described. FIG. 46 is a flowchart of the encoding process of the point cloud data according to the present embodiment.
[0307] First, the three-dimensional data encoding device determines the division method to be used (S5441). This division method includes whether to perform slice division or not, and whether to perform tile division or not. Further, the division method may include the number of divisions in the case of performing slice division or tile division, and the type of division, etc.
[0308] When tile splitting is performed (Yes in S5442), 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 (S5443). Further, the three-dimensional data encoding device generates tile addition information related to the tile splitting.
[0309] When slice splitting is performed (Yes in S5444), the three-dimensional data encoding device generates a plurality of split position information and a plurality of split attribute information by splitting the plurality of tile position information and the plurality of tile attribute information (or the position information and the attribute information) (S5445). Further, the three-dimensional data encoding device generates slice addition information related to the slice splitting.
[0310] 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 with a frame index (S5446). Further, the three-dimensional data encoding device generates dependency information.
[0311] 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 (S5447). Further, the three-dimensional data encoding device transmits the generated encoded data.
[0312] FIG. 47 is a flowchart of the encoding process (S5446). First, the three-dimensional data encoding device encodes the split position information (S5451). Next, the three-dimensional data encoding device encodes the frame index for the split position information (S5452).
[0313] When there is segmentation attribute information (Yes in S5453), the three-dimensional data encoding device encodes the segmentation attribute information (S5454) and encodes the frame index for the segmentation attribute information (S5455). On the other hand, when there is no segmentation attribute information (No in S5453), the three-dimensional data encoding device does not perform the encoding of the segmentation attribute information and the encoding of the frame index for the segmentation attribute information. Note that the frame index may be stored in either or both of the segmentation position information and the segmentation attribute information.
[0314] Note that the three-dimensional data encoding device may encode the attribute information using the frame index or may encode it without using the frame index. That is, the three-dimensional data encoding device may use the frame index to identify the frame to which each point belongs and encode each frame, or may encode the points belonging to all frames without identifying the frames.
[0315] Hereinafter, the configuration of the three-dimensional data decoding device according to the present embodiment will be described. FIG. 48 is a block diagram showing the configuration of the decoding unit 5450. The decoding unit 5450 restores the point cloud data by decoding the encoded data (encoded stream) generated by encoding the point cloud data. This decoding unit 5450 includes a demultiplexing unit 5451, a plurality of position information decoding units 5452, a plurality of attribute information decoding units 5453, an additional information decoding unit 5454, and a combining unit 5455.
[0316] The demultiplexing unit 5451 generates a plurality of encoded position information, a plurality of encoded attribute information, and encoded additional information by demultiplexing the encoded data (encoded stream).
[0317] The plurality of position information decoding units 5452 generate a plurality of segmentation position information by decoding the plurality of encoded position information. For example, the plurality of position information decoding units 5452 perform parallel processing on the plurality of encoded position information.
[0318] The plurality of attribute information decoding units 5453 generate a plurality of divided attribute information by decoding the plurality of encoded attribute information. For example, the plurality of attribute information decoding units 5453 perform parallel processing on the plurality of encoded attribute information.
[0319] The plurality of additional information decoding units 5454 generate additional information by decoding the encoded additional information.
[0320] The combining unit 5455 generates position information by combining a plurality of divided position information using the additional information. The combining unit 5455 generates attribute information by combining a plurality of divided attribute information using the additional information. Further, the combining unit 5455 divides the position information and the attribute information into position information of a plurality of frames and attribute information of a plurality of frames using the frame index.
[0321] FIG. 49 is a block diagram of the position information decoding unit 5452. The position information decoding unit 5452 includes an entropy decoding unit 5461 and a frame index acquisition unit 5462. The entropy decoding unit 5461 generates divided position information by entropy decoding the encoded position information. The frame index acquisition unit 5462 acquires a frame index from the divided position information.
[0322] FIG. 50 is a block diagram of the attribute information decoding unit 5453. The attribute information decoding unit 5453 includes an entropy decoding unit 5471 and a frame index acquisition unit 5472. The entropy decoding unit 5471 generates divided attribute information by entropy decoding the encoded attribute information. The frame index acquisition unit 5472 acquires a frame index from the divided attribute information.
[0323] FIG. 51 is a diagram showing the configuration of the combining unit 5455. The combining unit 5455 generates position information by combining a plurality of divided position information. The combining unit 5455 generates attribute information by combining a plurality of divided attribute information. Further, the combining unit 5455 divides the position information and the attribute information into position information of a plurality of frames and attribute information of a plurality of frames using the frame index.
[0324] Figure 52 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 (slice additional information and tile additional information) related to the splitting method included in the encoded data (encoded stream) (S5461). This splitting method includes whether to perform slice splitting or tile splitting. Further, the splitting method may include the number of splits and the type of split when performing slice splitting or tile splitting.
[0325] Next, the three-dimensional data decoding device generates split position information and split attribute information by decoding a plurality of encoded position information and a plurality of encoded attribute information included in the encoded data using the dependency information included in the encoded data (S5462).
[0326] When it is shown by the additional information that slice splitting is performed (Yes in S5463), the three-dimensional data decoding device generates a plurality of tile position information by combining the plurality of split position information and generates a plurality of tile attribute information by combining the plurality of split attribute information based on the slice additional information (S5464). Here, the plurality of split position information, the plurality of split attribute information, the plurality of tile position information, and the plurality of tile attribute information include frame indexes.
[0327] When it is shown by the additional information that tile splitting is performed (Yes in S5465), the three-dimensional data decoding device generates position information by combining the plurality of tile position information (plurality of split position information) and generates attribute information by combining the plurality of tile attribute information (plurality of split attribute information) based on the tile additional information (S5466). Here, the plurality of tile position information, the plurality of tile attribute information, the position information, and the attribute information include frame indexes.
[0328] FIG. 53 is a flowchart of the decoding process (S5464 or S5466). First, the three-dimensional data decoding device decodes the division position information (slice position information) (S5471). Next, the three-dimensional data decoding device decodes the frame index for the division position information (S5472).
[0329] When the division attribute information exists (Yes in S5473), the three-dimensional data decoding device decodes the division attribute information (S5474) and decodes the frame index for the division attribute information (S5475). On the other hand, when the division attribute information does not exist (No in S5473), the three-dimensional data decoding device does not decode the division attribute information and does not decode the frame index for the division attribute information.
[0330] Note that the three-dimensional data decoding device may decode the attribute information using the frame index or may decode it without using the frame index.
[0331] Hereinafter, the encoding unit in frame combination will be described. FIG. 54 is a diagram showing an example of a frame combination pattern. The example in the figure is an example when, for example, the PCC frames are in time series and data generation and encoding are performed in real time.
[0332] FIG. 54(a) shows the case of fixedly combining 4 frames. The three-dimensional data encoding device generates the encoded data after waiting for the generation of data for 4 frames.
[0333] FIG. 54(b) shows the case where the number of frames changes adaptively. For example, the three-dimensional data encoding device changes the number of combined frames in order to adjust the amount of code of the encoded data in rate control.
[0334] Note that the three-dimensional data encoding device may not combine the frames when there is a possibility that there is no effect by frame combination. Also, the three-dimensional data encoding device may switch between the case of combining the frames and the case of not combining the frames.
[0335] Figure 54(c) is an example in which a part of a plurality of frames to be combined overlaps with a part of a plurality of frames to be combined next. This example is useful when real-time performance or low latency is required, such as when sequentially transmitting what has been encoded.
[0336] Figure 55 is a diagram showing a configuration example of a PCC frame. The three-dimensional data encoding device may be configured such that the frames to be combined include at least data units that can be decoded independently. For example, as shown in Figure 55(a), when all PCC frames are intra-encoded and the PCC frames can be decoded independently, any of the above patterns can be applied.
[0337] Also, as shown in Figure 55(b), when a random access unit such as a GOF (Group of Frames) is set, such as when inter prediction is applied, the three-dimensional data encoding device may combine the data with the GOF unit as the minimum unit.
[0338] Note that the three-dimensional data encoding device may encode the common information and the individual information together, or may encode them separately. Also, the three-dimensional data encoding device may use a common data structure for the common information and the individual information, or may use different data structures.
[0339] Also, after generating an occupancy code for each frame, the three-dimensional data encoding device compares the occupancy codes of a plurality of frames, and for example, determines whether there is a large common part between the occupancy codes of the plurality of frames based on a predetermined criterion. If there is a large common part, common information may be generated. Alternatively, the three-dimensional data encoding device may determine whether to combine frames, which frames to combine, or the number of combined frames based on whether there is a large common part.
[0340] Next, the configuration of the encoding position information will be described. Figure 56 is a diagram showing the configuration of the encoding position information. The encoding position information includes a header and a payload.
[0341] FIG. 57 is a diagram showing an example of the syntax of the header (Geometry_header) of the encoded position information. The header of the encoded position information includes a GPS index (gps_idx), an offset information (offset), other information (other_geometry_information), a frame combination flag (combine_frame_flag), and the number of combined frames (number_of_combine_frame).
[0342] The GPS index indicates the identifier (ID) of the parameter set (GPS) corresponding to the encoded position information. GPS is a parameter set of the encoded position information for one frame or a plurality of frames. In addition, when there is a parameter set for each frame, the identifiers of a plurality of parameter sets may be shown in the header.
[0343] The offset information indicates the offset position for obtaining the combined data. The other information indicates other information related to the position information (for example, the difference value of the quantization parameter (QPdelta), etc.). The frame combination flag is a flag indicating whether the encoded data is frame-combined. The number of combined frames indicates the number of combined frames.
[0344] In addition, some or all of the above information may be described in the SPS or GPS. Note that the SPS is a parameter set in units of a sequence (a plurality of frames), and is a parameter set commonly used for both the encoded position information and the encoded attribute information.
[0345] FIG. 58 is a diagram showing an example of the syntax of the payload (Geometry_data) of the encoded position information. The payload of the encoded position information includes common information and leaf node information.
[0346] The common information is data combined by one or more frames and includes an occupancy code (occupancy_Code), etc.
[0347] Leaf node information (combine_information) is information of each leaf node. As a loop of the number of frames, leaf node information may be shown for each frame.
[0348] As a method for indicating the frame index of points included in a leaf node, either Method 1 or Method 2 can be used. FIG. 59 is a diagram showing an example of leaf node information in the case of Method 1. The leaf node information shown in FIG. 59 includes the three-dimensional number of points (NumberOfPoints) indicating the number of points included in the node and the frame index (FrameIndex) for each point.
[0349] FIG. 60 is a diagram showing an example of leaf node information in the case of Method 2. In the example shown in FIG. 60, the leaf node information includes bitmap information (bitmapIsFramePointsFlag) indicating the frame indices of a plurality of points by a bitmap. FIG. 61 is a diagram showing an example of the bitmap information. In this example, it is shown by the bitmap that the leaf node includes three-dimensional points with frame indices 1, 3, and 5.
[0350] Note that when the quantization resolution is low, there may be duplicate points in the same frame. In this case, the three-dimensional number of points (NumberOfPoints) may be shared, and the number of three-dimensional points in each frame and the total number of three-dimensional points in a plurality of frames may be shown.
[0351] Also, when irreversible compression is used, the three-dimensional data encoding device may delete duplicate points and reduce the amount of information. The three-dimensional data encoding device may delete duplicate points before frame combination or after frame combination.
[0352] Next, the configuration of the encoding attribute information will be described. FIG. 62 is a diagram showing the configuration of the encoding attribute information. The encoding attribute information includes a header and a payload.
[0353] FIG. 63 is a diagram showing an example of the syntax of the header (Attribute_header) of the encoded attribute information. The header of the encoded attribute information includes an APS index (aps_idx), offset information (offset), other information (other_attribute_information), a frame combination flag (combine_frame_flag), and the number of combined frames (number_of_combine_frame).
[0354] The APS index indicates the identifier (ID) of the parameter set (APS) corresponding to the encoded attribute information. The APS is a parameter set of the encoded attribute information for one frame or a plurality of frames. Note that when there is a parameter set for each frame, identifiers of a plurality of parameter sets may be indicated in the header.
[0355] The offset information indicates the offset position for acquiring combined data. The other information indicates other information regarding the attribute information (for example, the difference value of the quantization parameter (QPdelta), etc.). The frame combination flag is a flag indicating whether the encoded data is frame-combined. The number of combined frames indicates the number of combined frames.
[0356] Note that some or all of the above information may be described in the SPS or APS.
[0357] FIG. 64 is a diagram showing an example of the syntax of the payload (Attribute_data) of the encoded attribute information. The payload of the encoded attribute information includes leaf node information (combine_information). For example, the configuration of this leaf node information is the same as the leaf node information included in the payload of the encoding position information. That is, the leaf node information (frame index) may be included in the attribute information.
[0358] Also, the leaf node information (frame index) may be stored in either the encoding position information or the encoding attribute information, and may not be stored in the other. In this case, the leaf node information (frame index) stored in either the encoding position information or the encoding attribute information is referred to when decoding the other information. Also, information indicating the reference destination may be included in the encoding position information or the encoding attribute information.
[0359] Next, an example of the transmission order and decoding order of the encoded data will be described. FIG. 65 is a diagram showing the configuration of the encoded data. The encoded data includes a header and a payload.
[0360] FIGS. 66 to 68 are diagrams showing the transmission order of the data and the reference relationship of the data. In the figure, G(1) etc. indicate the encoding position information, GPS(1) etc. indicate the parameter set of the encoding position information, and SPS indicates the parameter set of the sequence (multiple frames). Also, the number in parentheses indicates the value of the frame index. Note that the three-dimensional data encoding device may transmit the data in the decoding order.
[0361] FIG. 66 is a diagram showing an example of the transmission order when the frames are not combined. FIG. 67 is a diagram showing an example when the frames are combined and metadata (parameter set) is added for each PCC frame. FIG. 68 is a diagram showing an example when the frames are combined and metadata (parameter set) is added in units of combination.
[0362] In the header of the data with combined frames, an identifier of the metadata of the reference destination is stored in order to obtain the metadata of the frame. As shown in FIG. 68, the metadata for each of a plurality of frames may be grouped together. The parameters common to the plurality of combined frames may be grouped into one. The parameters not common to the frames indicate values for each frame.
[0363] The information for each frame (parameters not common to frames) is, for example, a time stamp indicating the generation time, encoding time, or decoding time of the frame data. Further, the information for each frame may include information on the sensor that acquired the frame data (such as the speed of the sensor, acceleration, position information, orientation of the sensor, and other sensor information).
[0364] FIG. 69 is a diagram showing an example of decoding some frames in the example shown in FIG. 67. As shown in FIG. 69, in the frame combined data, if there is no dependency between frames, the three-dimensional data decoding device can decode each data independently.
[0365] When the point cloud data has attribute information, the three-dimensional data encoding device may perform frame combination of the attribute information. The attribute information is encoded and decoded with reference to the position information. The position information to be referred to may be the position information before frame combination or the position information after frame combination. The number of combined frames of the position information and the number of combined frames of the attribute information may be the same or independent (different).
[0366] FIGS. 70 to 73 are diagrams showing the transmission order of data and the reference relationship of data. FIGS. 70 and 71 show an example of combining position information and attribute information in 4 frames. In FIG. 70, metadata (parameter set) is added for each PCC frame. In FIG. 71, metadata (parameter set) is added in units of combination. In the figure, A(1) etc. indicate encoded attribute information, and APS(1) etc. indicate parameter sets of the encoded attribute information. Also, the numbers in parentheses indicate the values of the frame indices.
[0367] FIG. 72 shows an example in which position information is combined in 4 frames and attribute information is not combined. As shown in FIG. 72, it is not necessary to perform frame combination of the position information and frame combination of the attribute information.
[0368] FIG. 73 shows an example of combining frame combination and tile division. When performing tile division as shown in FIG. 73, the header of each tile position information includes information such as a GPS index (gps_idx) and the number of combined frames (number_of_combine_frame). Further, the header of each tile position information includes a tile index (tile_idx) for identifying the tile.
[0369] As described above, the three-dimensional data encoding device according to the present embodiment performs the processing shown in FIG. 74. First, the three-dimensional data encoding device generates third point cloud data by combining the first point cloud data and the second point cloud data (S5481). Next, the three-dimensional data encoding device generates encoded data by encoding the third point cloud data (S5482). The encoded data includes identification information (for example, a frame index) indicating to which of the first point cloud data and the second point cloud data each of the plurality of three-dimensional points included in the third point cloud data belongs.
[0370] According to this, the three-dimensional data encoding device can improve the encoding efficiency by encoding a plurality of point cloud data together.
[0371] For example, the first point cloud data and the second point cloud data are point cloud data (for example, PCC frames) at different times. For example, the first point cloud data and the second point cloud data are point cloud data (for example, PCC frames) at different times of the same object.
[0372] The encoded data includes the position information and attribute information of each of the plurality of three-dimensional points included in the third point cloud data, and the identification information is included in the attribute information.
[0373] For example, the encoded data includes position information (for example, occupancy code) representing the position of each of the plurality of three-dimensional points included in the third point cloud data using an N-ary tree (where N is an integer of 2 or more).
[0374] For example, the three-dimensional data encoding device includes a processor and a memory, and the processor performs the above processing using the memory.
[0375] Further, the three-dimensional data decoding device according to the present embodiment performs the processing shown in FIG. 75. First, the three-dimensional data decoding device decodes the encoded data to obtain the third point cloud data generated by combining the first point cloud data and the second point cloud data, and the identification information indicating to which of the first point cloud data and the second point cloud data each of the plurality of three-dimensional points included in the third point cloud data belongs (S5491). Next, the three-dimensional data decoding device separates the first point cloud data and the second point cloud data from the third point cloud data using the identification information (S5492).
[0376] According to this, the three-dimensional data decoding device can decode the encoded data with improved encoding efficiency by encoding a plurality of point cloud data together.
[0377] For example, the first point cloud data and the second point cloud data are point cloud data (for example, PCC frames) at different times. For example, the first point cloud data and the second point cloud data are point cloud data (for example, PCC frames) at different times of the same object.
[0378] The encoded data includes the position information and attribute information of each of the plurality of three-dimensional points included in the third point cloud data, and the identification information is included in the attribute information.
[0379] For example, the encoded data includes position information (for example, occupancy code) representing the position of each of the plurality of three-dimensional points included in the third point cloud data using an N-ary tree (where N is an integer of 2 or more).
[0380] For example, the three-dimensional data decoding device includes a processor and a memory, and the processor performs the above processing using the memory.
[0381] (Embodiment 6) The information of the three-dimensional point cloud includes position information (geometry) and attribute information (attribute). The position information includes coordinates (x coordinate, y coordinate, z coordinate) based on a certain point. When encoding the position information, instead of directly encoding the coordinates of each three-dimensional point, a method is used to reduce the amount of code by representing the position of each three-dimensional point in an octree representation and encoding the information of the octree.
[0382] On the other hand, the attribute information includes information indicating color information (such as RGB, YUV), reflectivity, and normal vector of each three-dimensional point. For example, the three-dimensional data encoding device can encode the attribute information using an encoding method different from the position information.
[0383] In this embodiment, an encoding method for attribute information when encoding by combining point cloud data of a plurality of frames of position information will be described. Note that in this embodiment, an integer value is used as the value of the attribute information for description. For example, when each color component of color information RGB or YUV has 8-bit accuracy, each color component takes an integer value from 0 to 255. When the value of the reflectivity has 10-bit accuracy, the value of the reflectivity takes an integer value from 0 to 1023. Note that when the bit accuracy of the attribute information is a fractional accuracy in the three-dimensional data encoding device, the value may be multiplied by a scale value and then rounded to an integer value so that the value of the attribute information becomes an integer value. Note that the three-dimensional data encoding device may add this scale value to the header of the bit stream or the like.
[0384] As an encoding method for attribute information when encoding the position information of each three-dimensional point cloud by combining point cloud data of a plurality of frames, for example, it is conceivable to encode the attribute information corresponding to each position information using the combined position information. Here, the combined position information may include the position information of the three-dimensional point cloud and the frame_index (frame index) to which the three-dimensional point cloud belongs. Also, when encoding the attribute information of the first three-dimensional point among the three-dimensional point clouds, not only the position information or attribute information of the three-dimensional point cloud included in the frame to which the first three-dimensional point belongs, but also the position information or attribute information of the three-dimensional point cloud included in a frame different from the frame to which the first three-dimensional point belongs may be used.
[0385] Each of the plurality of frames includes point cloud data. The first point cloud data belonging to the first frame among the plurality of frames and the second point cloud data belonging to the second frame are point cloud data at different times. Also, the first point cloud data and the second point cloud data are, for example, point cloud data of the same object at different times. The first point cloud data includes a frame index indicating that the three-dimensional point cloud included in the first point cloud data belongs to the first point cloud data. The second point cloud data includes a frame index indicating that the three-dimensional point cloud included in the second point cloud data belongs to the second point cloud data. The frame index is identification information indicating to which point cloud data the three-dimensional point cloud included in the combined point cloud data, in which a plurality of point cloud data belonging to different frames are combined, belongs. Note that the three-dimensional point cloud is also referred to as a plurality of three-dimensional points.
[0386] As a method for encoding the attribute information of the three-dimensional point, it is conceivable to calculate the predicted value of the attribute information of the three-dimensional point and encode the difference (prediction residual) between the value of the original attribute information and the predicted value. For example, when the value of the attribute information of the three-dimensional point p is Ap and the predicted value is Pp, the three-dimensional data encoding device encodes the absolute value of the difference Diffp = |Ap - Pp|. In this case, if the predicted value Pp can be generated with high accuracy, the value of the absolute value of the difference Diffp becomes small. Therefore, for example, the amount of code can be reduced by entropy encoding the absolute value of the difference Diffp using a coding table in which the number of generated bits becomes smaller as the value becomes smaller.
[0387] As a method for generating a predicted value of attribute information, it is conceivable to use the attribute information of a reference three-dimensional point, which is another three-dimensional point around the target three-dimensional point to be encoded. In this way, the three-dimensional data encoding device may encode the attribute information of the first three-dimensional point using the attribute information of the surrounding three-dimensional points. Here, another surrounding three-dimensional point around the three-dimensional point to be encoded may exist within the frame to which the target three-dimensional point to be encoded belongs, or may exist within a frame different from the frame to which the target three-dimensional point to be encoded belongs. That is, the attribute information of the target three-dimensional point includes a first frame index indicating that the target three-dimensional point belongs to the first point cloud data, and the attribute information of the surrounding three-dimensional point may include a second frame index indicating that the surrounding three-dimensional point belongs to the second point cloud data. Thereby, by also referring to the attribute information of three-dimensional points other than the frame to which the three-dimensional point to be encoded belongs, a highly accurate predicted value Pp can be generated, and the encoding efficiency can be improved.
[0388] Here, the reference three-dimensional point is a three-dimensional point within a predetermined distance range from the target three-dimensional point. For example, when there exist a target three-dimensional point p = (x1, y1, z1) and a three-dimensional point q = (x2, y2, z2), the three-dimensional data encoding device calculates the Euclidean distance d(p, q) between the three-dimensional point p and the three-dimensional point q shown in (Equation H1).
[0389]
Number
[0390] When the Euclidean distance d(p, q) is smaller than a predetermined threshold THd, the three-dimensional data encoding device determines that the position of the three-dimensional point q is close to the position of the target three-dimensional point p, and determines to use the value of the attribute information of the three-dimensional point q to generate the predicted value of the attribute information of the target three-dimensional point p. Note that the distance calculation method may be another method, for example, the Mahalanobis distance or the like may be used. Also, the three-dimensional data encoding device may determine not to use three-dimensional points outside a predetermined distance range from the target three-dimensional point for prediction processing. For example, when there is a three-dimensional point r and the distance d(p, r) between the target three-dimensional p and the three-dimensional point r is equal to or greater than the threshold THd, the three-dimensional data encoding device may determine not to use the three-dimensional point r for prediction. Note that the three-dimensional data encoding device may add information indicating the threshold THd to the header of the bit stream or the like. Note that when the three-dimensional data encoding device encodes by combining the point group data of a plurality of frames for each position information of the three-dimensional point group, it may calculate the distance between each three-dimensional point from the combined three-dimensional point group. That is, the three-dimensional data encoding device may calculate the distance between two three-dimensional points belonging to different frames, or may calculate the distance between two three-dimensional points belonging to the same frame.
[0391] FIG. 76 is a diagram showing an example of three-dimensional points. In this example, the distance d(p, q) between the target three-dimensional point p and the three-dimensional point q is smaller than the threshold THd. Therefore, the three-dimensional data encoding device determines that the three-dimensional point q is the reference three-dimensional point of the target three-dimensional point p, and determines to use the value of the attribute information Aq of the three-dimensional point q to generate the predicted value Pp of the attribute information Ap of the target three-dimensional p.
[0392] On the other hand, the distance d(p, r) between the target three-dimensional point p and the three-dimensional point r is equal to or greater than the threshold THd. Therefore, the three-dimensional data encoding device determines that the three-dimensional point r is not the reference three-dimensional point of the target three-dimensional point p, and determines not to use the value of the attribute information Ar of the three-dimensional point r to generate the predicted value Pp of the attribute information Ap of the target three-dimensional point p.
[0393] Here, the three-dimensional point p belongs to the frame indicated by the frame index (frame_idx = 0), the three-dimensional point q belongs to the frame indicated by the frame index (frame_idx = 1), and the three-dimensional point r belongs to the frame indicated by the frame index (frame_idx = 0). The three-dimensional encoding device may calculate the distance between the three-dimensional point p and the three-dimensional point r, which are indicated by the frame index to belong to the same frame, or may calculate the distance between the three-dimensional point p and the three-dimensional point q, which are indicated by the frame index to belong to different frames.
[0394] In addition, when the three-dimensional data encoding device encodes the attribute information of the target three-dimensional point using the predicted value, it uses the three-dimensional point for which the attribute information has already been encoded and decoded as the reference three-dimensional point. Similarly, when the three-dimensional data decoding device decodes the attribute information of the target three-dimensional point to be decoded using the predicted value, it uses the three-dimensional point for which the attribute information has already been decoded as the reference three-dimensional point. Thereby, since the same predicted value can be generated at the time of encoding and decoding, the bit stream of the three-dimensional point generated by encoding can be correctly decoded on the decoding side.
[0395] Note that another surrounding three-dimensional point around the target three-dimensional point to be encoded may exist within the frame to which the target three-dimensional point to be encoded belongs, or may exist within a frame different from the frame to which the target three-dimensional point to be encoded belongs. However, it is not necessarily limited to this. For example, a three-dimensional point existing within a frame different from the frame to which the target three-dimensional point to be encoded belongs may be determined not to be around the target three-dimensional point to be encoded and may not be used as a predicted value. Thereby, when the attribute information of each three-dimensional point in a plurality of frames to be combined is significantly different, for example, the three-dimensional data encoding device can improve the encoding efficiency by combining and encoding the position information across frames and performing predictive encoding of the attribute information using the attribute information of other surrounding three-dimensional points within the same frame. Note that when encoding the attribute information of the target three-dimensional point during encoding by frame combination, the three-dimensional data encoding device may add information indicating whether to encode the attribute information of the target three-dimensional point using the attribute information of the surrounding three-dimensional points within the same frame or using the attribute information of the surrounding three-dimensional points within and outside the same frame to the header of the encoded data and switch between them. Thereby, the three-dimensional data decoding device can determine whether to decode the attribute information of the target three-dimensional point using the attribute information of the surrounding three-dimensional points within the same frame or within and outside the same frame when decoding the encoded data by frame combination, and can switch which decoding method to use, so that the bitstream can be appropriately decoded.
[0396] Also, when encoding the attribute information of the three-dimensional points after combining a plurality of frames, it is conceivable to classify each three-dimensional point into a plurality of hierarchies using the position information of the three-dimensional points belonging to the same frame or different frames and then perform encoding. Here, each classified hierarchy is called LoD (Level of Detail). The method for generating LoD will be described with reference to FIG. 77.
[0397] First, the three-dimensional data encoding device selects an initial point a0 from the combined three-dimensional point cloud and assigns it to LoD0. Next, the three-dimensional data encoding device extracts a point a1 whose distance from the point a0 is greater than the threshold Thres_LoD[0] of LoD0 and assigns it to LoD0. Next, the three-dimensional data encoding device extracts a point a2 whose distance from the point a1 is greater than the threshold Thres_LoD[0] of LoD0 and assigns it to LoD0. In this way, the three-dimensional data encoding device configures LoD0 such that the distance between each point within LoD0 is greater than the threshold Thres_LoD[0]. Note that the three-dimensional data encoding device may calculate the distance between two three-dimensional points by the same process regardless of whether they belong to the same frame or different frames. For example, the point a0 and the point a1 may belong to the same frame or to different frames from each other. Therefore, the distance between the point a0 and the point a1 is calculated by the same process whether they belong to the same frame or to different frames from each other.
[0398] Next, the three-dimensional data encoding device selects a point b0 for which LoD has not yet been assigned and assigns it to LoD1. Next, the three-dimensional data encoding device extracts a point b1 whose distance from the point b0 is greater than the threshold Thres_LoD[1] of LoD1 and for which LoD has not yet been assigned, and assigns it to LoD1. Next, the three-dimensional data encoding device extracts a point b2 whose distance from the point b1 is greater than the threshold Thres_LoD[1] of LoD1 and for which LoD has not yet been assigned, and assigns it to LoD1. In this way, the three-dimensional data encoding device configures LoD1 such that the distance between each point within LoD1 is greater than the threshold Thres_LoD[1].
[0399] Next, the three-dimensional data encoding device selects a point c0 for which the LoD has not yet been assigned and assigns it to LoD2. Next, the three-dimensional data encoding device extracts a point c1 whose distance from the point c0 is greater than the threshold Thres_LoD[2] of LoD2 and for which the LoD has not been assigned, and assigns it to LoD2. Next, the three-dimensional data encoding device extracts a point c2 whose distance from the point c1 is greater than the threshold Thres_LoD[2] of LoD2 and for which the LoD has not been assigned, and assigns it to LoD2. In this way, the three-dimensional data encoding device configures LoD2 so that the distance between each point within LoD2 is greater than the threshold Thres_LoD[2]. For example, as shown in FIG. 78, the thresholds Thres_LoD[0], Thres_LoD[1], and Thres_LoD[2] for each LoD are set.
[0400] Also, the three-dimensional data encoding device may add information indicating the threshold of each LoD to the header of the bit stream or the like. For example, in the case of the example shown in FIG. 78, the three-dimensional data encoding device may add the thresholds Thres_LoD[0], Thres_LoD[1], and Thres_LoD[2] to the header.
[0401] Also, the three-dimensional data encoding device may assign all the three-dimensional points for which the LoD has not been assigned to the bottom layer of the LoD. In this case, the three-dimensional data encoding device can reduce the amount of code in the header by not adding the threshold of the bottom layer of the LoD to the header. For example, in the case of the example shown in FIG. 78, the three-dimensional data encoding device adds the thresholds Thres_LoD[0] and Thres_LoD[1] to the header and does not add Thres_LoD[2] to the header. In this case, the three-dimensional data decoding device may estimate the value of Thres_LoD[2] to be 0. Also, the three-dimensional data encoding device may add the number of layers of the LoD to the header. Thereby, the three-dimensional data decoding device can determine the bottom layer LoD using the number of layers of the LoD.
[0402] Also, by setting the threshold values of each layer of LoD to be larger for higher layers as shown in FIG. 78, the higher layer (the layer closer to LoD0) becomes a sparse point group with a greater distance between three-dimensional points, and the lower layer becomes a dense point group with a closer distance between three-dimensional points. In the example shown in FIG. 78, LoD0 is the topmost layer.
[0403] Also, the method of selecting the initial three-dimensional points when setting each LoD may depend on the encoding order during position information encoding. For example, the three-dimensional data encoding device selects, as the initial point a0 of LoD0, the three-dimensional point that was first encoded during position information encoding, and based on the initial point a0, selects points a1 and a2 to form LoD0. Then, the three-dimensional data encoding device may select, as the initial point b0 of LoD1, the three-dimensional point among the three-dimensional points not belonging to LoD0 for which the position information was encoded earliest. That is, the three-dimensional data encoding device may select, as the initial point n0 of LoDn, the three-dimensional point among the three-dimensional points not belonging to the upper layer (LoD0 to LoDn - 1) of LoDn for which the position information was encoded earliest. Thereby, the three-dimensional data decoding device can configure the same LoD as during encoding by using the same initial point selection method during decoding, and thus can appropriately decode the bit stream. Specifically, the three-dimensional data decoding device selects, as the initial point n0 of LoDn, the three-dimensional point among the three-dimensional points not belonging to the upper layer of LoDn for which the position information was decoded earliest.
[0404] Hereinafter, a method for generating a predicted value of the attribute information of three-dimensional points using LoD information will be described. For example, when the three-dimensional data encoding device encodes in order from the three-dimensional points included in LoD0, it generates the target three-dimensional points included in LoD1 using the encoded and decoded (hereinafter, also simply referred to as "encoded") attribute information included in LoD0 and LoD1. In this way, the three-dimensional data encoding device generates a predicted value of the attribute information of the three-dimensional points included in LoDn using the encoded attribute information included in LoDn' (n' <= n). That is, the three-dimensional data encoding device does not use the attribute information of the three-dimensional points included in the lower layer of LoDn to calculate the predicted value of the attribute information of the three-dimensional points included in LoDn.
[0405] For example, the three-dimensional data encoding device generates a predicted value of the attribute information of a three-dimensional point by calculating the average of the attribute values of N or fewer three-dimensional points among the encoded three-dimensional points around the target three-dimensional point to be encoded. Further, the three-dimensional data encoding device may add the value of N to the header of the bit stream or the like. Note that the three-dimensional data encoding device may change the value of N for each three-dimensional point and add the value of N for each three-dimensional point. Thereby, since an appropriate N can be selected for each three-dimensional point, the accuracy of the predicted value can be improved. Thus, the prediction residual can be reduced. Further, the three-dimensional data encoding device may add the value of N to the header of the bit stream and fix the value of N within the bit stream. Thereby, since it is not necessary to encode or decode the value of N for each three-dimensional point, the processing amount can be reduced. Further, the three-dimensional data encoding device may separately encode the value of N for each LoD. Thereby, the encoding efficiency can be improved by selecting an appropriate N for each LoD.
[0406] Alternatively, the three-dimensional data encoding device may calculate a predicted value of the attribute information of a three-dimensional point by a weighted average value of the attribute information of N surrounding encoded three-dimensional points. For example, the three-dimensional data encoding device calculates a weight using the distance information between the target three-dimensional point and each of the N surrounding three-dimensional points.
[0407] When the three-dimensional data encoding device separately encodes the value of N for each LoD, for example, the value of N is set larger for the upper layer of the LoD and smaller for the lower layer of the LoD. Since the distance between the three-dimensional points belonging to the upper layer of the LoD is farther, there is a possibility that the prediction accuracy can be improved by setting a large value of N and selecting and averaging a plurality of surrounding three-dimensional points. Further, since the distance between the three-dimensional points belonging to the lower layer of the LoD is close, it is possible to perform efficient prediction while suppressing the processing amount of averaging by setting a small value of N.
[0408] FIG. 79 is a diagram showing an example of attribute information used for a predicted value. As described above, the predicted value of the point P included in the LoDN is generated using the encoded surrounding points P' included in the LoDN’ (N’<=N). Here, the surrounding point P' is selected based on the distance from the point P. For example, the predicted value of the attribute information of the point b2 shown in FIG. 79 is generated using the attribute information of the points a0, a1, a2, b0, and b1.
[0409] According to the value of N described above, the selected surrounding points change. For example, when N = 5, a0, a1, a2, b0, and b1 are selected as the surrounding points of the point b2. When N = 4, a0, a1, a2, and b1 are selected based on the distance information.
[0410] The predicted value is calculated by a distance-dependent weighted average. For example, in the example shown in FIG. 79, the predicted value a2p of the point a2 is calculated by the weighted average of the attribute information of the points a0 and a1, as shown in (Equation H2) and (Equation H3). Note that A i is the value of the attribute information of the point ai.
[0411]
Equation
[0412] Also, the predicted value b2p of the point b2 is calculated by the weighted average of the attribute information of the points a0, a1, a2, b0, and b1, as shown in (Equation H4) to (Equation H6). Note that B i is the value of the attribute information of the point bi.
[0413]
Equation
[0414] Further, the three-dimensional data encoding device may calculate a difference value (prediction residual) between the value of the attribute information of the three-dimensional point and the predicted value generated from the surrounding points, and quantize the calculated prediction residual. For example, the three-dimensional data encoding device performs quantization by dividing the prediction residual by a quantization scale (also referred to as a quantization step). In this case, the smaller the quantization scale, the smaller the error (quantization error) that can occur due to quantization. Conversely, the larger the quantization scale, the larger the quantization error.
[0415] Note that the three-dimensional data encoding device may change the quantization scale used for each LoD. For example, the three-dimensional data encoding device makes the quantization scale smaller for higher layers and larger for lower layers. Since the value of the attribute information of the three-dimensional points belonging to the upper layer may be used as the predicted value of the attribute information of the three-dimensional points belonging to the lower layer, by making the quantization scale of the upper layer smaller and suppressing the quantization error that can occur in the upper layer, and improving the accuracy of the predicted value, the encoding efficiency can be improved. Note that the three-dimensional data encoding device may add the quantization scale used for each LoD to a header or the like. Thereby, the three-dimensional data decoding device can correctly decode the quantization scale, so that the bitstream can be appropriately decoded.
[0416] Further, the three-dimensional data encoding device may convert the signed integer value (signed quantization value), which is the predicted residual after quantization, into an unsigned integer value (unsigned quantization value). Thereby, when entropy-encoding the prediction residual, it is not necessary to consider the occurrence of negative integers. Note that the three-dimensional data encoding device does not necessarily need to convert the signed integer value into an unsigned integer value. For example, the sign bit may be entropy-encoded separately.
[0417] The prediction residual is calculated by subtracting the predicted value from the original value. For example, the prediction residual a2r of point a2 is calculated by subtracting the predicted value a2p of point a2 from the value A2 of the attribute information of point a2, as shown in (Equation H7). The prediction residual b2r of point b2 is calculated by subtracting the predicted value b2p of point b2 from the value B2 of the attribute information of point b2, as shown in (Equation H8).
[0418] a2r = A2 - a2p ··· (Equation H7) b2r = B2 - b2p ··· (Equation H8)
[0419] Also, the prediction residual is quantized by being divided by QS (Quantization Step). For example, the quantized value a2q of point a2 is calculated by (Equation H9). The quantized value b2q of point b2 is calculated by (Equation H10). Here, QS_LoD0 is the QS for LoD0, and QS_LoD1 is the QS for LoD1. That is, the QS may be changed according to the LoD.
[0420] a2q = a2r / QS_LoD0 ··· (Equation H9) b2q = b2r / QS_LoD1 ··· (Equation H10)
[0421] Also, the three-dimensional data encoding device converts the signed integer value, which is the quantized value as described above, into an unsigned integer value as follows. When the signed integer value a2q is less than 0, the three-dimensional data encoding device sets the unsigned integer value a2u to -1 - (2 × a2q). When the signed integer value a2q is 0 or more, the three-dimensional data encoding device sets the unsigned integer value a2u to 2 × a2q.
[0422] Similarly, when the signed integer value b2q is less than 0, the three-dimensional data encoding device sets the unsigned integer value b2u to -1 - (2 × b2q). When the signed integer value b2q is 0 or more, the three-dimensional data encoding device sets the unsigned integer value b2u to 2 × b2q.
[0423] Also, the three-dimensional data encoding device may encode the quantized prediction residual (unsigned integer value) by entropy encoding. For example, after binarizing the unsigned integer value, binary arithmetic coding may be applied.
[0424] Note that, in this case, the three-dimensional data encoding device may switch the binarization method according to the value of the prediction residual. For example, when the prediction residual pu is smaller than the threshold R_TH, the three-dimensional data encoding device binarizes the prediction residual pu with the number of fixed bits required to represent the threshold R_TH. Also, when the prediction residual pu is greater than or equal to the threshold R_TH, the three-dimensional data encoding device binarizes the binarized data of the threshold R_TH and the value (pu - R_TH) using, for example, Exponential-Golomb.
[0425] For example, when the threshold R_TH is 63 and the prediction residual pu is smaller than 63, the three-dimensional data encoding device binarizes the prediction residual pu with 6 bits. Also, when the prediction residual pu is 63 or more, the three-dimensional data encoding device performs arithmetic encoding by binarizing the binary data (111111) of the threshold R_TH and (pu - 63) using Exponential-Golomb.
[0426] In a more specific example, when the prediction residual pu is 32, the three-dimensional data encoding device generates 6-bit binary data (100000) and arithmetic-encodes this bit sequence. Also, when the prediction residual pu is 66, the three-dimensional data encoding device generates the binary data (111111) of the threshold R_TH and the bit sequence (00100) representing the value 3 (66 - 63) in Exponential-Golomb, and arithmetic-encodes this bit sequence (111111 + 00100).
[0427] In this way, by switching the binarization method according to the magnitude of the prediction residual, the three-dimensional data encoding device can perform encoding while suppressing a sharp increase in the number of binarized bits when the prediction residual becomes large. Note that the three-dimensional data encoding device may add the threshold R_TH to the header of the bit stream or the like.
[0428] For example, when encoding is performed at a high bit rate, that is, when the quantization scale is small, the quantization error is small, the prediction accuracy is high, and as a result, the prediction residual may not increase. Therefore, in this case, the three-dimensional data encoding device sets the threshold R_TH to be large. As a result, the possibility of encoding the binary data of the threshold R_TH becomes low, and the encoding efficiency is improved. Conversely, when encoding is performed at a low bit rate, that is, when the quantization scale is large, the quantization error is large, the prediction accuracy is poor, and as a result, the prediction residual may increase. Therefore, in this case, the three-dimensional data encoding device sets the threshold R_TH to be small. This can prevent a rapid increase in the bit length of the binary data.
[0429] In addition, the three-dimensional data encoding device may switch the threshold R_TH for each LoD and add the threshold R_TH for each LoD to a header or the like. That is, the three-dimensional data encoding device may switch the binary method for each LoD. For example, in the upper layer, since the distance between three-dimensional points is far, the prediction accuracy may be poor and as a result, the prediction residual may increase. Therefore, the three-dimensional data encoding device sets the threshold R_TH to be small for the upper layer to prevent a rapid increase in the bit length of the binary data. Also, in the lower layer, since the distance between three-dimensional points is close, the prediction accuracy is high and as a result, the prediction residual may be small. Therefore, the three-dimensional data encoding device sets the threshold R_TH to be large for the layer to improve the encoding efficiency.
[0430] FIG. 80 is a diagram showing an example of an exponential Golomb code, and is a diagram showing the relationship between the value (multi-value) before binarization and the bit (code) after binarization. Note that 0 and 1 shown in FIG. 80 may be inverted.
[0431] In addition, the three-dimensional data encoding device applies arithmetic coding to the binarized data of the prediction residual. Thereby, the encoding efficiency can be improved. When applying arithmetic coding, among the binarized data, the n-bit code, which is the part binarized with n bits, and the remaining code, which is the part binarized using exponential Golomb, may have different tendencies in the occurrence probabilities of 0 and 1 for each bit. Therefore, the three-dimensional data encoding device may switch the application method of arithmetic coding between the n-bit code and the remaining code.
[0432] For example, for the n-bit code, the three-dimensional data encoding device performs arithmetic coding using a different coding table (probability table) for each bit. At this time, the three-dimensional data encoding device may change the number of coding tables used for each bit. For example, for the first bit b0 of the n-bit code, the three-dimensional data encoding device performs arithmetic coding using one coding table. Also, for the next bit b1, the three-dimensional data encoding device uses two coding tables. Further, the three-dimensional data encoding device switches the coding table used for the arithmetic coding of bit b1 according to the value (0 or 1) of b0. Similarly, for the next bit b2, the three-dimensional data encoding device uses four coding tables. Also, the three-dimensional data encoding device switches the coding table used for the arithmetic coding of bit b2 according to the values (0 to 3) of b0 and b1.
[0433] In this way, when the three-dimensional data encoding device arithmetically encodes each bit bn-1 of the n-bit code, it uses n-1 two coding tables. Also, the three-dimensional data encoding device switches the coding table to be used according to the values (occurrence patterns) of the bits before bn-1. Thereby, since the three-dimensional data encoding device can use an appropriate coding table for each bit, the encoding efficiency can be improved.
[0434] Note that the three-dimensional data encoding device may reduce the number of encoding tables used for each bit. For example, when arithmetic-encoding each bit bn-1, the three-dimensional data encoding device may switch between two encoding tables according to the value (occurrence pattern) of m bits (m < n-1) before bn-1. This can improve the encoding efficiency while suppressing the number of encoding tables used for each bit. Note that the three-dimensional data encoding device may update the occurrence probabilities of 0 and 1 in each encoding table according to the value of the actually generated binarized data. Also, the three-dimensional data encoding device may fix the occurrence probabilities of 0 and 1 in the encoding tables of some bits. This can suppress the number of updates of the occurrence probabilities and thus reduce the processing amount. m For example, when the n-bit code is b0b1b2…bn-1, the encoding table for b0 is one (CTb0). The encoding tables for b1 are two (CTb10, CTb11). Also, the encoding table to be used is switched according to the value (0 to 1) of b0. The encoding tables for b2 are four (CTb20, CTb21, CTb22, CTb23). Also, the encoding table to be used is switched according to the values (0 to 3) of b0 and b1. The encoding tables for bn-1 are two
[0435] (CTbn0, CTbn1, …, CTbn(2 n-1 -1)). Also, the encoding table to be used is switched according to the value (0 to 2 n-1 -1) of b0b1…bn-2. n-1
[0436] Note that the three-dimensional data encoding device may apply m-ary arithmetic encoding (m = 2 n ) that sets values from 0 to 2 n -1 without binarization to the n-bit code. Also, when the three-dimensional data encoding device arithmetic-encodes the n-bit code in m-ary, the three-dimensional data decoding device may also restore the n-bit code by m-ary arithmetic decoding.
[0437] FIG. 81 is a diagram for explaining the process when the remaining code is an exponential Golomb code. The remaining code, which is the binarized part using the exponential Golomb code, includes a prefix part and a suffix part as shown in FIG. 81. For example, the three-dimensional data encoding device switches the encoding table between the prefix part and the suffix part. That is, the three-dimensional data encoding device arithmetically encodes each bit included in the prefix part using the encoding table for the prefix, and arithmetically encodes each bit included in the suffix part using the encoding table for the suffix.
[0438] Note that the three-dimensional data encoding device may update the occurrence probabilities of 0 and 1 in each encoding table according to the value of the actually generated binarized data. Or, the three-dimensional data encoding device may fix the occurrence probabilities of 0 and 1 in either one of the encoding tables. Thereby, the number of update times of the occurrence probability can be suppressed, so the processing amount can be reduced. For example, the three-dimensional data encoding device may update the occurrence probability for the prefix part and fix the occurrence probability for the suffix part.
[0439] Also, the three-dimensional data encoding device decodes the quantized prediction residual by inverse quantization and reconstruction, and uses the decoded value, which is the decoded prediction residual, for the prediction after the three-dimensional point to be encoded. Specifically, the three-dimensional data encoding device calculates the inverse quantization value by multiplying the quantized prediction residual (quantized value) by the quantization scale, and obtains the decoded value (reconstructed value) by adding the inverse quantization value and the predicted value.
[0440] For example, the inverse quantization value a2iq of point a2 is calculated by (Equation H11) using the quantization value a2q of point a2. The inverse quantization value b2iq of point b2 is calculated by (Equation H12) using the quantization value b2q of point b2. Here, QS_LoD0 is the QS for LoD0, and QS_LoD1 is the QS for LoD1. That is, the QS may be changed according to the LoD.
[0441] a2iq = a2q × QS_LoD0 ···(Equation H11) b2iq = b2q × QS_LoD1 ···(Equation H12)
[0442] For example, the decoded value a2rec of point a2 is calculated by adding the predicted value a2p of point a2 to the inverse quantization value a2iq of point a2, as shown in (Equation H13). The decoded value b2rec of point b2 is calculated by adding the predicted value b2p of point b2 to the inverse quantization value b2iq of point b2, as shown in (Equation H14).
[0443] a2rec = a2iq + a2p ···(Equation H13) b2rec = b2iq + b2p ···(Equation H14)
[0444] Hereinafter, a syntax example of the bitstream according to the present embodiment will be described. FIG. 82 is a diagram showing a syntax example of an attribute header according to the present embodiment. The attribute header is header information of attribute information. As shown in FIG. 82, the attribute header includes the number of levels information (NumLoD), the three-dimensional point number information (NumOfPoint[i]), the level threshold (Thres_Lod[i]), the surrounding point number information (NumNeighborPoint[i]), the prediction threshold (THd[i]), the quantization scale (QS[i]), and the binarization threshold (R_TH[i]).
[0445] The number of levels information (NumLoD) indicates the number of levels of LoD used.
[0446] The three-dimensional point number information (NumOfPoint[i]) indicates the number of three-dimensional points belonging to level i. Note that the three-dimensional data encoding device may add the total three-dimensional point number information (AllNumOfPoint) indicating the total number of three-dimensional points to another header. In this case, the three-dimensional data encoding device does not have to add NumOfPoint[NumLoD - 1] indicating the number of three-dimensional points belonging to the lowest level to the header. In this case, the three-dimensional data decoding device can calculate NumOfPoint[NumLoD - 1] by (Equation H15). Thereby, the amount of code of the header can be reduced.
[0447] [Number]
[0448] The hierarchical threshold (Thres_Lod[i]) is the threshold used for the setting of layer i. The three-dimensional data encoding device and the three-dimensional data decoding device configure LoDi such that the distance between each point in LoDi is greater than the threshold Thres_LoD[i]. Also, the three-dimensional data encoding device may not add the value of Thres_Lod[NumLoD-1] (the bottom layer) to the header. In this case, the three-dimensional data decoding device estimates the value of Thres_Lod[NumLoD-1] as 0. Thereby, the amount of code of the header can be reduced.
[0449] The number of surrounding points information (NumNeighorPoint[i]) indicates the upper limit value of the number of surrounding points used for generating the predicted value of the three-dimensional points belonging to layer i. When the number of surrounding points M is less than NumNeighorPoint[i] (M < NumNeighorPoint[i]), the three-dimensional data encoding device may calculate the predicted value using M surrounding points. Also, when it is not necessary for the three-dimensional data encoding device to divide the value of NumNeighorPoint[i] for each LoD, the three-dimensional data encoding device may add one piece of surrounding points information (NumNeighorPoint) used for all LoDs to the header.
[0450] The prediction threshold (THd[i]) indicates the upper limit value of the distance between the surrounding three-dimensional points and the target three-dimensional point used for predicting the target three-dimensional point to be encoded or decoded at layer i. The three-dimensional data encoding device and the three-dimensional data decoding device do not use the three-dimensional points whose distance from the target three-dimensional point is farther than THd[i] for prediction. Note that when it is not necessary for the three-dimensional data encoding device to divide the value of THd[i] for each LoD, the three-dimensional data encoding device may add one prediction threshold (THd) used for all LoDs to the header.
[0451] The quantization scale (QS[i]) indicates the quantization scale used for quantization and inverse quantization of layer i.
[0452] The binary threshold (R_TH[i]) is a threshold for switching the binary method of the prediction residuals of the three-dimensional points belonging to hierarchy i. For example, when the prediction residual is smaller than the threshold R_TH, the three-dimensional data encoding device binary-encodes the prediction residual pu with a fixed number of bits. When the prediction residual is greater than or equal to the threshold R_TH, the binary data of the threshold R_TH and the value of (pu - R_TH) are binary-encoded using exponential Golomb. Note that when it is not necessary to switch the value of R_TH[i] at each LoD, the three-dimensional data encoding device may add one binary threshold (R_TH) used for all LoDs to the header.
[0453] Note that R_TH[i] may be the maximum value representable by nbit. For example, when n = 6 bit, R_TH = 63, and when n = 8 bit, R_TH = 255. Also, instead of encoding the maximum value representable by nbit as the binary threshold, the three-dimensional data encoding device may encode the number of bits. For example, when R_TH[i] = 63, the three-dimensional data encoding device may add the value 6 to the header, and when R_TH[i] = 255, it may add the value 8 to the header. Further, the three-dimensional data encoding device may define the minimum value (minimum number of bits) of the number of bits representing R_TH[i] and add the relative number of bits from the minimum value to the header. For example, when R_TH[i] = 63 and the minimum number of bits is 6, the three-dimensional data encoding device may add the value 0 to the header, and when R_TH[i] = 255 and the minimum number of bits is 6, it may add the value 2 to the header.
[0454] Also, the three-dimensional data encoding device may entropy-encode at least one of NumLoD, Thres_Lod[i], NumNeighborPoint[i], THd[i], QS[i], and R_TH[i] and add it to the header. For example, the three-dimensional data encoding device may binary-encode each value and then perform arithmetic encoding. Also, the three-dimensional data encoding device may encode each value with a fixed length in order to reduce the processing amount.
[0455] Also, the three-dimensional data encoding device may not add at least one of NumLoD, Thres_Lod[i], NumNeighborPoint[i], THd[i], QS[i], and R_TH[i] to the header. For example, at least one of these values may be defined by a profile such as a standard or a level. As a result, the bit amount of the header can be reduced.
[0456] FIG. 83 is a diagram showing a syntax example of attribute data according to the present embodiment. This attribute data includes encoded data of attribute information of a plurality of three-dimensional points. As shown in FIG. 83, the attribute data includes an n-bit code and a remaining code.
[0457] The n-bit code is encoded data of a prediction residual of the value of the attribute information or a part thereof. The bit length of the n-bit code depends on the value of R_TH[i]. For example, when the value indicated by R_TH[i] is 63, the n-bit code is 6 bits, and when the value indicated by R_TH[i] is 255, the n-bit code is 8 bits.
[0458] The remaining code is encoded data encoded by exponential Golomb among the encoded data of the prediction residual of the value of the attribute information. This remaining code is encoded or decoded when the n-bit code is the same as R_TH[i]. Also, the three-dimensional data decoding device adds the value of the n-bit code and the value of the remaining code to decode the prediction residual. Note that when the n-bit code is not the same value as R_TH[i], the remaining code may not be encoded or decoded.
[0459] Hereinafter, the flow of processing in the three-dimensional data encoding device will be described. FIG. 84 is a flowchart of three-dimensional data encoding processing by the three-dimensional data encoding device.
[0460] First, the three-dimensional data encoding device combines a plurality of frames (S5601). For example, the three-dimensional data encoding device combines a plurality of three-dimensional point clouds belonging to the input plurality of frames into one three-dimensional point cloud. Note that, at the time of combination, the three-dimensional data encoding device adds a frame index indicating the frame to which each three-dimensional point cloud belongs to each three-dimensional point cloud.
[0461] Next, the three-dimensional data encoding device encodes the position information (geometry) after frame combination (S5602). For example, the three-dimensional data encoding performs encoding using an octree representation.
[0462] After encoding the position information, when the positions of the three-dimensional points change due to quantization or the like, the three-dimensional data encoding device reassigns the attribute information of the original three-dimensional points to the changed three-dimensional points (S5603). For example, the three-dimensional data encoding device performs reallocation by interpolating the value of the attribute information according to the amount of change in position. For example, the three-dimensional data encoding device detects N three-dimensional points before the change that are close to the three-dimensional position after the change, and performs weighted averaging on the values of the attribute information of the N three-dimensional points. For example, the three-dimensional data encoding device determines the weight based on the distance from the three-dimensional position after the change to each of the N three-dimensional points in the weighted averaging. Then, the three-dimensional data encoding device determines the value obtained by weighted averaging as the value of the attribute information of the three-dimensional point after the change. Also, when two or more three-dimensional points change to the same three-dimensional position due to quantization or the like, the three-dimensional data encoding device may assign the average value of the attribute information of the two or more three-dimensional points before the change as the value of the attribute information of the three-dimensional point after the change.
[0463] Next, the three-dimensional data encoding device encodes the attribute information after reallocation (S5604). Here, for each of the plurality of three-dimensional points, the three-dimensional data encoding device encodes the frame index of the three-dimensional point as the attribute information of the three-dimensional point. Also, for example, when the three-dimensional data encoding device encodes a plurality of types of attribute information, the plurality of types of attribute information may be encoded in order. For example, when the three-dimensional data encoding device encodes color, reflectance, and frame index as attribute information, it may generate a bit stream in which the encoding result of reflectance is added after the encoding result of color, and the encoding result of the frame index is added after the encoding result of reflectance. Note that the order of the plurality of encoding results of the attribute information added to the bit stream is not limited to this order and may be any order. Also, the three-dimensional data encoding device encodes the frame index as attribute information in the same data format as other attribute information different from the frame index, such as color or reflectance. Therefore, the encoded data includes the frame index in the same data format as other attribute information different from the frame index.
[0464] Also, the three-dimensional data encoding device may add information indicating the start position of the encoded data of each attribute information in the bit stream to a header or the like. Thereby, the three-dimensional data decoding device can selectively decode the attribute information that needs to be decoded, so that the decoding process of the attribute information that does not need to be decoded can be omitted. Therefore, the processing amount of the three-dimensional data decoding device can be reduced. Also, the three-dimensional data encoding device may encode a plurality of types of attribute information in parallel and integrate the encoding results into one bit stream. Thereby, the three-dimensional data encoding device can encode a plurality of types of attribute information at high speed.
[0465] FIG. 85 is a flowchart of the attribute information encoding process (S5604). First, the three-dimensional data encoding device sets the LoD (S5611). That is, the three-dimensional data encoding device assigns each three-dimensional point to any one of a plurality of LoDs.
[0466] Next, the three-dimensional data encoding device starts a loop for each LoD (S5612). That is, the three-dimensional data encoding device repeats the processes of steps S5613 to S5621 for each LoD.
[0467] Next, the three-dimensional data encoding device starts a loop for each three-dimensional point (S5613). That is, the three-dimensional data encoding device repeats the processes of steps S5614 to S5620 for each three-dimensional point.
[0468] First, the three-dimensional data encoding device searches for a plurality of surrounding points, which are three-dimensional points existing around the target three-dimensional point, to be used for calculating the predicted value of the target three-dimensional point to be processed (S5614). Next, the three-dimensional data encoding device calculates the weighted average of the values of the attribute information of the plurality of surrounding points, and sets the obtained value as the predicted value P (S5615). Next, the three-dimensional data encoding device calculates the prediction residual, which is the difference between the attribute information of the target three-dimensional point and the predicted value (S5616). Next, the three-dimensional data encoding device calculates the quantization value by quantizing the prediction residual (S5617). Next, the three-dimensional data encoding device arithmetic-codes the quantization value (S5618).
[0469] Also, the three-dimensional data encoding device calculates the inverse quantization value by inverse-quantizing the quantization value (S5619). Next, the three-dimensional data encoding device generates the decoded value by adding the predicted value to the inverse quantization value (S5620). Next, the three-dimensional data encoding device ends the loop for each three-dimensional point (S5621). Also, the three-dimensional data encoding device ends the loop for each LoD (S5622).
[0470] Hereinafter, the three-dimensional data decoding process in the three-dimensional data decoding device that decodes the bit stream generated by the above three-dimensional data encoding device will be described.
[0471] The three-dimensional data decoding device generates the decoded binary data by performing arithmetic decoding on the binary data of the attribute information in the bit stream generated by the three-dimensional data encoding device in the same manner as the three-dimensional data encoding device. Note that in the three-dimensional data encoding device, when the application method of arithmetic coding is switched between the part binary-coded with n bits (n-bit code) and the part binary-coded using exponential Golomb (remaining code), the three-dimensional data decoding device performs decoding accordingly when applying arithmetic decoding.
[0472] For example, in the arithmetic decoding method of the n-bit code, the three-dimensional data decoding device performs arithmetic decoding using a different coding table (decoding table) for each bit. At this time, the three-dimensional data decoding device may change the number of coding tables used for each bit. For example, for the leading bit b0 of the n-bit code, arithmetic decoding is performed using one coding table. Also, for the next bit b1, the three-dimensional data decoding device uses two coding tables. Further, the three-dimensional data decoding device switches the coding table used for the arithmetic decoding of bit b1 according to the value (0 or 1) of b0. Similarly, for the next bit b2, the three-dimensional data decoding device uses four coding tables. Also, the three-dimensional data decoding device switches the coding table used for the arithmetic decoding of bit b2 according to the values (0 to 3) of b0 and b1.
[0473] In this way, when the three-dimensional data decoding device performs arithmetic decoding on each bit bn-1 of the n-bit code, it uses 2 n-1 coding tables. Also, the three-dimensional data decoding device switches the coding table to be used according to the values (occurrence patterns) of the bits before bn-1. Thereby, the three-dimensional data decoding device can appropriately decode the bit stream with improved coding efficiency by using an appropriate coding table for each bit.
[0474] Note that the three-dimensional data decoding device may reduce the number of coding tables used for each bit. For example, when the three-dimensional data decoding device performs arithmetic decoding on each bit bn-1, it uses 2 according to the values (occurrence patterns) of the m bits (m < n-1) before bn-1.m It is possible to switch individual encoding tables. As a result, the three-dimensional data decoding device can appropriately decode a bit stream with improved encoding efficiency while suppressing the number of encoding tables used for each bit. Note that the three-dimensional data decoding device may update the occurrence probabilities of 0 and 1 in each encoding table according to the value of the binarized data that has actually occurred. Also, the three-dimensional data decoding device may fix the occurrence probabilities of 0 and 1 in the encoding tables of some bits. Thereby, the number of updates of the occurrence probability can be suppressed, so the processing amount can be reduced.
[0475] For example, when the n-bit code is b0b1b2…bn-1, the number of encoding tables for b0 is 1 (CTb0). The number of encoding tables for b1 is 2 (CTb10, CTb11). Also, the encoding table is switched according to the value of b0 (0 to 1). The number of encoding tables for b2 is 4 (CTb20, CTb21, CTb22, CTb23). Also, the encoding table is switched according to the values of b0 and b1 (0 to 3). The number of encoding tables for bn-1 is 2 n-1 pieces (CTbn0, CTbn1, …, CTbn(2 n-1 -1)). Also, the encoding table is switched according to the values of b0b1…bn-2 (0 to 2 n-1 -1).
[0476] FIG. 86 is a diagram for explaining the processing when the remaining code is, for example, an exponential Golomb code. The portion (remaining code) binarized and encoded by the three-dimensional data encoding device using the exponential Golomb includes a prefix portion and a suffix portion as shown in FIG. 86. For example, the three-dimensional data decoding device switches the encoding table between the prefix portion and the suffix portion. That is, the three-dimensional data decoding device arithmetically decodes each bit included in the prefix portion using the encoding table for the prefix, and arithmetically decodes each bit included in the suffix portion using the encoding table for the suffix.
[0477] Note that the three-dimensional data decoding device may update the occurrence probabilities of 0 and 1 in each encoding table according to the value of the binarized data generated during decoding. Alternatively, the three-dimensional data decoding device may fix the occurrence probabilities of 0 and 1 in either encoding table. Thereby, the number of times of updating the occurrence probability can be suppressed, so that the processing amount can be reduced. For example, the three-dimensional data decoding device may update the occurrence probability for the prefix part and fix the occurrence probability for the suffix part.
[0478] Also, the three-dimensional data decoding device decodes the quantized prediction residual (unsigned integer value) by multi-valuing the binarized data of the arithmetic-decoded prediction residual according to the encoding method used in the three-dimensional data encoding device. The three-dimensional data decoding device first calculates the value of the decoded n-bit code by arithmetically decoding the binarized data of the n-bit code. Next, the three-dimensional data decoding device compares the value of the n-bit code with the value of R_TH.
[0479] When the value of the n-bit code matches the value of R_TH, the three-dimensional data decoding device determines that the bits encoded by exponential Golomb exist next, and arithmetically decodes the remaining code, which is the binarized data encoded by exponential Golomb. Then, the three-dimensional data decoding device calculates the value of the remaining code using an inverse lookup table showing the relationship between the remaining code and its value. FIG. 87 is a diagram showing an example of an inverse lookup table showing the relationship between the remaining code and its value. Next, the three-dimensional data decoding device obtains the multi-valued quantized prediction residual by adding the obtained value of the remaining code to R_TH.
[0480] On the other hand, when the value of the n-bit code does not match the value of R_TH (the value is smaller than R_TH), the three-dimensional data decoding device determines the value of the n-bit code as it is for the multi-valued quantized prediction residual. Thereby, the three-dimensional data decoding device can appropriately decode the bit stream generated by switching the binarization method according to the value of the prediction residual in the three-dimensional data encoding device.
[0481] In addition, when the threshold value R_TH is added to the header or the like of the bit stream, the three-dimensional data decoding device may decode the value of the threshold value R_TH from the header and switch the decoding method using the decoded value of the threshold value R_TH. Further, when the threshold value R_TH is added to the header or the like for each LoD, the three-dimensional data decoding device switches the decoding method using the threshold value R_TH decoded for each LoD.
[0482] For example, when the threshold value R_TH is 63 and the value of the decoded n-bit code is 63, the three-dimensional data decoding device obtains the value of the remaining code by decoding the remaining code using exponential Golomb. For example, in the example shown in FIG. 87, the remaining code is 00100, and 3 is obtained as the value of the remaining code. Next, the three-dimensional data decoding device obtains the value 66 of the prediction residual by adding the value 63 of the threshold value R_TH and the value 3 of the remaining code.
[0483] Also, when the value of the decoded n-bit code is 32, the three-dimensional data decoding device sets the value 32 of the n-bit code as the value of the prediction residual.
[0484] In addition, the three-dimensional data decoding device converts the decoded prediction residual after quantization into a signed integer value from an unsigned integer value by, for example, a process reverse to the process in the three-dimensional data encoding device. Thereby, when the three-dimensional data decoding device entropy-encodes the prediction residual, it can appropriately decode the bit stream generated without considering the occurrence of negative integers. Note that the three-dimensional data decoding device does not necessarily need to convert the unsigned integer value into a signed integer value. For example, when decoding a bit stream generated by separately entropy-encoding the sign bit, the sign bit may be decoded.
[0485] The three-dimensional data decoding device generates a decoded value by decoding the quantized prediction residual converted into a signed integer value through inverse quantization and reconstruction. Further, the three-dimensional data decoding device uses the generated decoded value for prediction after the three-dimensional point to be decoded. Specifically, the three-dimensional data decoding device calculates an inverse quantization value by multiplying the quantized prediction residual by the decoded quantization scale, and obtains a decoded value by adding the inverse quantization value and the predicted value.
[0486] The decoded unsigned integer value (unsigned quantization value) is converted into a signed integer value by the following process. When the least significant bit (LSB) of the decoded unsigned integer value a2u is 1, the three-dimensional data decoding device sets the signed integer value a2q to -((a2u + 1) >> 1). When the LSB of the unsigned integer value a2u is not 1, the three-dimensional data decoding device sets the signed integer value a2q to (a2u >> 1).
[0487] Similarly, when the LSB of the decoded unsigned integer value b2u is 1, the three-dimensional data decoding device sets the signed integer value b2q to -((b2u + 1) >> 1). When the LSB of the unsigned integer value n2u is not 1, the three-dimensional data decoding device sets the signed integer value b2q to (b2u >> 1).
[0488] Also, the details of the inverse quantization and reconstruction processing by the three-dimensional data decoding device are the same as those of the inverse quantization and reconstruction processing in the three-dimensional data encoding device.
[0489] Hereinafter, the processing flow in the three-dimensional data decoding device will be described. FIG. 88 is a flowchart of the three-dimensional data decoding process by the three-dimensional data decoding device. First, the three-dimensional data decoding device decodes position information (geometry) from the bit stream (S5631). For example, the three-dimensional data decoding device performs decoding using an octree representation.
[0490] Next, the three-dimensional data decoder decodes the attribute information (Attribute) from the bitstream (S5632). For example, when the three-dimensional data decoder decodes multiple types of attribute information, it may decode the multiple types of attribute information in order. For example, when the three-dimensional data decoder decodes color, reflectance, and frame index as attribute information, it decodes the encoded result of color, the encoded result of reflectance, and the encoded result of frame index in the order added to the bitstream. For example, if the encoded result of reflectance is added after the encoded result of color in the bitstream, the three-dimensional data decoder decodes the encoded result of color and then decodes the encoded result of reflectance. Also, if the encoded result of frame index is added after the encoded result of reflectance in the bitstream, the three-dimensional data decoder decodes the encoded result of frame index after decoding the encoded result of reflectance. Note that the three-dimensional data decoder may decode the encoded results of the attribute information added to the bitstream in any order.
[0491] In addition, the three-dimensional data decoder may obtain information indicating the start location of the encoded data of each attribute information in the bitstream by decoding a header or the like. Thereby, the three-dimensional data decoder can selectively decode the attribute information that needs to be decoded, so that the decoding process of the attribute information that is not necessary can be omitted. Therefore, the processing amount of the three-dimensional data decoder can be reduced. Also, the three-dimensional data decoder may decode multiple types of attribute information in parallel and integrate the decoding results into one three-dimensional point cloud. Thereby, the three-dimensional data decoder can decode multiple types of attribute information at high speed.
[0492] Next, the three-dimensional data decoding device divides the decoded three-dimensional point cloud into a plurality of frames based on the value of the frame index decoded together with the position information of each three-dimensional point (S5633). For example, when the frame index of the decoded three-dimensional point a is 0, the three-dimensional data decoding device adds the position information and attribute information of the three-dimensional point a to frame 0, and when the frame index of the decoded three-dimensional point b is 1, the three-dimensional data decoding device adds the position information and attribute information of the three-dimensional point b to frame 1, thereby dividing the three-dimensional point cloud obtained by decoding into a plurality of three-dimensional point clouds belonging to different frames respectively.
[0493] FIG. 89 is a flowchart of the attribute information decoding process (S5632). First, the three-dimensional data decoding device sets the LoD (S5641). That is, the three-dimensional data decoding device assigns each of the plurality of three-dimensional points having the decoded position information to any one of the plurality of LoDs. For example, this assignment method is the same as the assignment method used in the three-dimensional data encoding device.
[0494] Next, the three-dimensional data decoding device starts a loop for each LoD (S5642). That is, the three-dimensional data decoding device repeats the processes of steps S5643 to S5649 for each LoD.
[0495] Next, the three-dimensional data decoding device starts a loop for each three-dimensional point (S5643). That is, the three-dimensional data decoding device repeats the processes of steps S5644 to S5648 for each three-dimensional point.
[0496] First, the three-dimensional data decoding device searches for a plurality of surrounding points, which are three-dimensional points existing around the target three-dimensional point, used for calculating the predicted value of the target three-dimensional point to be processed (S5644). Next, the three-dimensional data decoding device calculates the weighted average of the values of the attribute information of the plurality of surrounding points, and sets the obtained value as the predicted value P (S5645). Note that these processes are the same as the processes in the three-dimensional data encoding device.
[0497] Next, the three-dimensional data decoding device arithmetically decodes quantization values from the bitstream (S5646). Further, the three-dimensional data decoding device calculates inverse quantization values by inverse quantizing the decoded quantization values (S5647). Next, the three-dimensional data decoding device generates decoded values by adding predicted values to the inverse quantization values (S5648). Next, the three-dimensional data decoding device ends the loop for each three-dimensional point (S5649). Further, the three-dimensional data decoding device ends the loop for each LoD (S5650).
[0498] Next, the configurations of the three-dimensional data encoding device and the three-dimensional data decoding device according to this embodiment will be described. FIG. 90 is a block diagram showing the configuration of the three-dimensional data encoding device 5600 according to this embodiment. This three-dimensional data encoding device 5600 includes a frame combining unit 5601, a position information encoding unit 5602, an attribute information reallocation unit 5603, and an attribute information encoding unit 5604.
[0499] The frame combining unit 5601 combines a plurality of frames. The position information encoding unit 5602 encodes the position information (geometry) of a plurality of three-dimensional points included in the input point cloud. The attribute information reallocation unit 5603 reallocates the values of the attribute information of a plurality of three-dimensional points included in the input point cloud by using the encoding and decoding results of the position information. The attribute information encoding unit 5604 encodes the reallocated attribute information (attribute). Further, the three-dimensional data encoding device 5600 generates a bitstream including the encoded position information and the encoded attribute information.
[0500] FIG. 91 is a block diagram showing the configuration of the three-dimensional data decoding device 5610 according to this embodiment. This three-dimensional data decoding device 5610 includes a position information decoding unit 5611, an attribute information decoding unit 5612, and a frame splitting unit 5613.
[0501] The position information decoding unit 5611 decodes the position information (geometry) of a plurality of three-dimensional points from the bit stream. The attribute information decoding unit 5612 decodes the attribute information (attribute) of a plurality of three-dimensional points from the bit stream. The frame splitting unit 5613 splits the decoded three-dimensional point cloud into a plurality of frames based on the value of the frame index decoded together with the position information of each three-dimensional point. Further, the three-dimensional data decoding device 5610 generates an output point cloud by combining the decoded position information and the decoded attribute information.
[0502] FIG. 92 is a diagram showing the configuration of the attribute information. FIG. 92(a) is a diagram showing the configuration of the compressed attribute information, FIG. 92(b) is a diagram showing an example of the syntax of the header of the attribute information, and FIG. 92(c) is a diagram showing an example of the syntax of the payload (data) of the attribute information.
[0503] As shown in FIG. 92(b), the syntax of the header of the attribute information will be described. apx_idx indicates the ID of the corresponding parameter set. In apx_idx, when there is a parameter set for each frame, a plurality of IDs may be indicated. offset indicates the offset position for obtaining the combined data. other_attribute_information indicates other attribute data, such as QP delta indicating the difference value of the quantization parameter. combine_frame_flag is a flag indicating whether the encoded data is frame-combined. number_of _combine_frame indicates the number N of the combined frames. number_of _combine_frame may be included in the SPS or APS.
[0504] refer_different_frame is a flag indicating whether to encode / decode the attribute information of the target three-dimensional point to be encoded / decoded using the attribute information of the surrounding three-dimensional points belonging to the same frame or the same frame and other frames. For example, the following value assignments are conceivable. When refer_different_frame is 0, the three-dimensional data encoding device or the three-dimensional data decoding device encodes / decodes the attribute information of the target three-dimensional point using the attribute information of the surrounding three-dimensional points within the same frame as the target three-dimensional point. In this case, the three-dimensional data encoding device or the three-dimensional data decoding device does not encode / decide the attribute information of the target three-dimensional point using the attribute information of the surrounding three-dimensional points in a frame different from the target three-dimensional point.
[0505] On the other hand, when refer_different_frame is 1, the three-dimensional data encoding device or the three-dimensional data decoding device encodes / decodes the attribute information of the target three-dimensional point using the attribute information of the surrounding three-dimensional points in the same frame and other frames as the frame to which the target three-dimensional point belongs. That is, the three-dimensional data encoding device or the three-dimensional data decoding device encodes / decodes the attribute information of the target three-dimensional point using the attribute information of the surrounding three-dimensional points regardless of whether they belong to the same frame as the frame to which the target three-dimensional point belongs.
[0506] As an example of encoding the color information or reflectance information as the attribute information of the target three-dimensional point using the attribute information of the surrounding three-dimensional points, the frame index of the target three-dimensional point may be encoded using the frame index of the surrounding three-dimensional points. The three-dimensional data encoding device may, for example, use the frame index added to each three-dimensional point when combining a plurality of frames as the attribute information of each three-dimensional point and encode it using the prediction encoding method described in the present disclosure. For example, the three-dimensional data encoding device may calculate the predicted value of the frame index of the three-dimensional point A from the values of the frame indices of the surrounding three-dimensional points B, C, and D of the three-dimensional point A and encode the prediction residual. Thereby, the three-dimensional data encoding device can reduce the amount of bits for encoding the frame index and improve the encoding efficiency.
[0507] FIG. 93 is a diagram for explaining encoded data.
[0508] When the point cloud data includes attribute information, the attribute information may be frame-combined. The attribute information is encoded or decoded with reference to the position information. The position information to be referred to may be the position information before frame combination or the position information after frame combination. The number of combined frames of the position information and the number of combined frames of the attribute information may be the same, independent, or different.
[0509] The numerical values in parentheses in FIG. 93 indicate frames. For example, in the case of 1, it indicates the information of frame 1, and in the case of 1-4, it indicates the information of the combined frames 1 to 4. Also, G indicates the position information, and A indicates the attribute information. Frame_idx1 is the frame index of frame 1.
[0510] FIG. 93(a) shows an example when refer_different_frame is 1. When refer_different_frame is 1, the three-dimensional data encoding device or the three-dimensional data decoding device encodes or decodes A(1-4) based on the information of G(1-4). The three-dimensional data decoding device, at the time of decoding, divides G(1-4) and A(1-4) into Frame1-4 using Frame_idx1-4 decoded together with G(1-4). When encoding or decoding A(1-4), the three-dimensional data encoding device or the three-dimensional data decoding device may refer to other attribute information of A(1-4). That is, when encoding or decoding A(1), the three-dimensional data encoding device or the three-dimensional data decoding device may refer to other A(1) or A(2-4). Also, the arrows indicate the reference source and the reference destination of the information. The origin of the arrow indicates the reference source, and the tip of the arrow indicates the reference destination.
[0511] Fig. 93(b) shows an example when refer_different_frame is 0. When refer_different_frame is 0, unlike when refer_different_frame is 1, the three-dimensional data encoding device or the three-dimensional data decoding device does not refer to the attribute information of different frames. That is, when the three-dimensional data encoding device or the three-dimensional data decoding device encodes or decodes A(1), it refers to other A(1) and does not refer to A(2 - 4).
[0512] Fig. 93(c) shows another example when refer_different_frame is 0. In this case, the position information is encoded in the combined frame, but the attribute information is encoded for each frame. Therefore, when the three-dimensional data encoding device or the three-dimensional data decoding device encodes or decodes A(1), it refers to other A(1). Similarly, when encoding or decoding the attribute information, it refers to other attribute information belonging to the same frame. Note that A(1 - 4) may each have an APS added to the header.
[0513] As described above, the three-dimensional data encoding device according to this embodiment performs the processing shown in Fig. 94. The three-dimensional data encoding device acquires third point cloud data in which first point cloud data and second point cloud data are combined, the third point cloud data including position information of each of a plurality of three-dimensional points included in the third point cloud data and identification information indicating to which of the first point cloud data and the second point cloud data each of the plurality of three-dimensional points belongs (S5661). Next, the three-dimensional data encoding device generates encoded data by encoding the acquired third point cloud data (S5662). In generating the encoded data, the three-dimensional data encoding device encodes the identification information of each of the plurality of three-dimensional points as the attribute information of the three-dimensional point.
[0514] According to this, the three-dimensional data encoding method can improve the encoding efficiency by encoding a plurality of point cloud data together.
[0515] For example, in the generation of encoded data (S5662), the attribute information of the first three-dimensional point among a plurality of three-dimensional points is used to encode the attribute information of the first three-dimensional point.
[0516] For example, the attribute information of the first three-dimensional point includes first identification information indicating that the first three-dimensional point belongs to the first point group data. Further, the attribute information of the second three-dimensional point includes second identification information indicating that the second three-dimensional point belongs to the second point group data.
[0517] For example, in the generation of encoded data (S5662), a predicted value of the attribute information of the first three-dimensional point is calculated using the attribute information of the second three-dimensional point, a prediction residual that is the difference between the attribute information of the first three-dimensional point and the predicted value is calculated, and encoded data including the prediction residual is generated.
[0518] For example, in acquisition (S5661), the third point group data is acquired by generating the third point group data by combining the first point group data and the second point group data.
[0519] For example, the encoded data includes identification information in the same data format as other attribute information different from the identification information.
[0520] For example, the three-dimensional data encoding device includes a processor and a memory, and the processor performs the above processing using the memory.
[0521] Further, the three-dimensional data decoding device according to the present embodiment performs the processing shown in FIG. 95. The three-dimensional data decoding device acquires encoded data (S5671). Next, the three-dimensional data decoding device decodes the encoded data to acquire the position information and attribute information of each of a plurality of three-dimensional points included in the third point group data in which the first point group data and the second point group data are combined (S5672). Note that the attribute information includes identification information indicating to which of the first point group data and the second point group data the three-dimensional point corresponding to the attribute information belongs.
[0522] According to this, the three-dimensional data decoding device can decode encoded data with improved encoding efficiency by collectively encoding a plurality of point cloud data.
[0523] For example, in acquisition (S5671), the attribute information of the first three-dimensional point is decoded using the attribute information of the second three-dimensional points around the first three-dimensional point among the plurality of three-dimensional points.
[0524] For example, the attribute information of the first three-dimensional point includes first identification information indicating that the first three-dimensional point belongs to the first point cloud data. Also, the attribute information of the second three-dimensional point includes second identification information indicating that the second three-dimensional point belongs to the second point cloud data.
[0525] For example, the encoded data includes a prediction residual. And in the decoding of the encoded data (S5672), a predicted value of the attribute information of the first three-dimensional point is calculated using the attribute information of the second three-dimensional points, and the attribute information of the first three-dimensional point is calculated by adding the predicted value and the prediction residual.
[0526] For example, the three-dimensional data decoding device further divides the third three-dimensional point cloud data into the first point cloud data and the second point cloud data using identification information.
[0527] For example, the encoded data includes the identification information in the same data format as other attribute information different from the identification information.
[0528] For example, the three-dimensional data decoding device includes a processor and a memory, and the processor performs the above-described processing using the memory.
[0529] (Embodiment 7) As described above, in the case of storing the frame index (frame_idx) added to each three-dimensional point when combining a plurality of frames as new attribute information instead of the position information of each three-dimensional point, a specific example of a method of performing encoding using the predictive encoding method described in the present disclosure will be described.
[0530] FIG. 96 is a diagram showing an example of encoded data (bit stream) according to the present embodiment. For example, as shown in FIG. 96, when the three-dimensional data encoding apparatus applies frame combination in the case where the point cloud data has position information G (Geometry) and first attribute information A1 (Attribute) (for example, color), the frame index is encoded as second attribute information A2. Further, the three-dimensional data encoding apparatus stores identification information indicating that the type of the attribute information is a frame index in the SPS (Sequence Parameter Set). That is, the identification information indicates the attribute information including the frame index (indicating the frame index) among the plurality of attribute information. In other words, the identification information indicates whether each of the plurality of attribute information is the attribute information including the frame index.
[0531] The SPS is a parameter set common to a plurality of frames (a plurality of combined frames), and is a parameter set common to the position information and the attribute information. Note that the identification information may be included in control information (metadata) other than the SPS. For example, the identification information may be included in APS or the like.
[0532] Note that FIG. 96 shows an example of encoded data obtained by encoding a combined frame obtained by combining four frames of frames 1 to 4. G(1-4) in the figure is the position information of the combined frame. A1(1-4) is the first attribute information of the combined frame, and is, for example, color information. A2(1-4) is the second attribute information, and indicates the frame index related to frames 1 to 4.
[0533] Further, GPS(1-4) is a parameter set of G(1-4), APS1(1-4) is a parameter set of A1(1-4), and APS2(1-4) is a parameter set of A2(1-4).
[0534] For example, A1(1-4) is encoded or decoded using the information of G(1-4). Note that A1(1-4) may refer to each other. Also, at the time of decoding, G(1-4) and A(1-4) are divided into frames 1 to 4 using the frame indices 1 to 4 decoded together with G(1-4).
[0535] Note that when transmitting the frame index as attribute information, it may be determined that a reversible encoding method is always used. For example, a reversible encoding method is an encoding method that does not perform quantization. Also, when the frame index is attribute information, constraints may be imposed on the quantization parameters so that reversible encoding is achieved. Note that the three-dimensional data encoding device may store information indicating the encoding method or quantization parameters used in the bit stream.
[0536] Note that the three-dimensional data encoding device may use a reversible encoding method or an irreversible encoding method for some or all of the position information and attribute information other than the frame index.
[0537] Note that the three-dimensional data encoding device may transmit information for each frame as second attribute information in addition to the frame index. For example, the information for each frame is a time stamp indicating the generation time, encoding time, or decoding time of the frame data. Or, the information for each frame is sensor information when the frame data is acquired. The sensor information includes the speed, acceleration, position information, or orientation of the sensor, etc.
[0538] Next, an example of compressing a three-dimensional point cloud that does not have attribute information such as color or reflectance will be described. FIG. 97 is a diagram showing an example of the encoded data in this case.
[0539] When performing frame combination, the three-dimensional data encoding device generates attribute information A1 and transmits the encoded data including the generated attribute information A1. Here, the attribute information A1 indicates the frame index.
[0540] In addition, when the number of combined frames is variable, the three-dimensional data encoding device does not need to generate a frame index when the number of combined frames is 1. In this case, when there is no attribute information indicating the frame index, the three-dimensional data decoding device may determine that the number of combined frames is 1.
[0541] Hereinafter, a three-dimensional data encoding device that performs motion compensation will be described. For example, when one or more point cloud data at different times are acquired using a LiDAR (Light Detection and Ranging) or the like of a moving object, the object constituting the first point cloud and the object constituting the second point cloud may move. When combining such different PCC point clouds or point cloud frames, if the movement of the object in the point cloud is slow, it is highly likely that an octree can be shared, and if the movement of the object is fast, it is highly likely that the octree cannot be shared.
[0542] Therefore, the three-dimensional data encoding device predicts the movement between different frames, corrects the point cloud based on the movement, and then combines the point clouds. FIG. 98 is a flowchart of the three-dimensional data encoding process in this case.
[0543] First, the three-dimensional data encoding device calculates a motion vector (motion information) indicating the motion between frames by predicting the motion between frames through motion prediction (S5801). For example, the three-dimensional data encoding device generates a motion vector by comparing the point cloud of the current frame with the point cloud of the past frame. Specifically, the three-dimensional data encoding device detects the positions of the same object included in the two frames and determines the motion based on the difference in the detected positions. Note that the three-dimensional data encoding device may use a part of the point cloud included in the frame or all of the point cloud in the comparison of the point clouds. In addition, the three-dimensional data encoding device may extract feature points using position information or attribute information and predict the motion of the feature points.
[0544] Next, the three-dimensional data encoding device performs motion compensation using the calculated motion vectors (S5802). FIG. 99 is a diagram showing an example of this motion compensation and frame combination. (a) of the figure is an example when motion compensation is not performed, and (b) of the figure is an example when motion compensation is performed. For example, as shown in (b) of the figure, the three-dimensional data encoding device predicts the motion of the point cloud from frame 1 to frame 2, and corrects the position of the point cloud in frame 2 by moving the position of the point cloud in frame 2 by the amount of motion.
[0545] Next, the three-dimensional data encoding device generates a combined frame by combining frame 1 and the corrected frame 2 (S5803). Next, the three-dimensional data encoding device encodes the position information of the combined frame (S5804).
[0546] Next, the three-dimensional data encoding device converts the attribute information (S5805) and encodes the converted attribute information (S5806). In the conversion of the attribute information, for example, when the position of the three-dimensional point changes due to quantization or the like, a process of reassigning the attribute information of the original three-dimensional point to the changed three-dimensional point is performed.
[0547] Next, a three-dimensional data decoding device that performs motion compensation will be described. FIG. 100 is a diagram showing an example of transmission of motion vectors from the three-dimensional data encoding device 5800 to the three-dimensional data decoding device 5810. FIG. 101 is a diagram showing an example of encoded data (bit stream).
[0548] The three-dimensional data encoding device 5800 stores the motion vectors in frame-by-frame control information (metadata) such as GPS and sends them out. Note that the three-dimensional data encoding device 5800 may store the motion vectors in the header of the position information or in the payload of the position information. Alternatively, the three-dimensional data encoding device 5800 may store the motion vectors in other control information such as SPS or APS. For example, as shown in FIG. 101, the three-dimensional data encoding device 5800 stores the motion vectors for each frame to be combined in GPS.
[0549] FIG. 102 is a block diagram showing the configuration of a three-dimensional data decoding device 5810 according to the present embodiment. The three-dimensional data decoding device 5810 includes a position information decoding unit 5811, an attribute information decoding unit 5812, a frame splitting unit 5813, and a motion compensation unit 5814.
[0550] The position information decoding unit 5811 decodes position information from the bit stream. The attribute information decoding unit 5812 decodes attribute information from the bit stream. The frame splitting unit 5813 splits the decoded combined frame (position information and attribute information) into a plurality of frames. The motion compensation unit 5814 generates point cloud data of a plurality of frames by correcting the plurality of split frames using motion vectors. That is, the motion compensation unit 5814 performs a process of returning the position of the shifted point in the three-dimensional data encoding device to the original position using the motion vector.
[0551] Next, an example of a method for calculating a motion vector will be described. FIG. 103 is a diagram showing an example of a method for calculating a motion vector. The dotted frame in FIG. 103 indicates a group of frames to be combined with the frame.
[0552] For example, as shown in (a) of the figure, the three-dimensional data encoding device may compare the current frame with the frame immediately preceding the current frame to derive and send out a motion vector. In this case, for example, the three-dimensional data encoding device does not derive and send out a motion vector for the first frame. Alternatively, as shown in (c) of the figure, the three-dimensional data encoding device may also derive and send out a motion vector by comparing the first frame with the previous frame. Further, the three-dimensional data encoding device may derive and send out a motion vector by comparing the current frame with the first frame of the group of frames to be combined, as shown in (b) of the figure.
[0553] FIG. 104 is a diagram showing an example of a method for calculating a motion vector when inter prediction is applied. When inter prediction is applied, the three-dimensional data encoding device may, for example, compare the current frame with the frame at the head of the GOP and derive a motion vector. Further, the three-dimensional data encoding device may derive a motion vector between the heads of the GOPs. Here, the GOP is a processing unit including a plurality of frames, and is, for example, a random access unit including an I frame.
[0554] Note that the three-dimensional data encoding device may generate a motion vector from the point cloud information, or may calculate it based on any one or a plurality of information such as the position information, speed, and acceleration of the sensor when the point cloud is acquired.
[0555] Next, the case of using tile division will be described. When dividing a large-scale point cloud into tiles, the magnitude of the motion vector between frames may be different for each tile.
[0556] Therefore, the three-dimensional data encoding device may determine whether to apply a motion vector for each tile. The three-dimensional data encoding device may change the method for deriving or compensating the motion vector for each tile. For example, by deriving a motion vector for each tile, the three-dimensional data encoding device can apply appropriate motion compensation even when there are tiles with a large motion vector and tiles with a small motion vector.
[0557] Further, the three-dimensional data encoding device may store in the bit stream a signal indicating whether a motion vector has been applied to each tile, the method for deriving the motion vector, or the compensation method.
[0558] Note that when performing motion compensation, the area of the set of point clouds may increase due to the position offset. In that case, the three-dimensional data encoding device may expand the bounding box, or may convert the position of the point cloud to a position within the existing bounding box without expanding the bounding box.
[0559] FIG. 105 is a diagram showing an example of encoded data in this case. As shown in FIG. 105, for example, the motion vectors of each tile may be stored in a GPS or the like.
[0560] FIG. 106 is a diagram showing an example of a tile to which motion compensation is applied. As shown in FIG. 106, for example, the three-dimensional data encoding device does not apply motion compensation to tiles close to a moving object such as a vehicle, and applies motion compensation to tiles away from the moving object.
[0561] As described above, the three-dimensional data encoding device according to the present embodiment performs the processing shown in FIG. 107. First, the three-dimensional data encoding device generates encoded data by encoding third point cloud data in which first point cloud data and second point cloud data are combined (S5811). The three-dimensional data encoding device generates a bit stream including the encoded data and control information (S5812). The encoded data includes position information of each of a plurality of three-dimensional points included in the third point cloud data and a plurality of attribute information. One of the plurality of attribute information includes first information (for example, a frame index) indicating to which of the first point cloud data and the second point cloud data the corresponding three-dimensional point belongs. The control information includes second information (for example, identification information) indicating the attribute information including the first information among the plurality of attribute information.
[0562] According to this, a three-dimensional data decoding device that decodes the bit stream generated by the three-dimensional data encoding device can easily determine the attribute information including the first information using the second information included in the control information when the first information is included in any of the plurality of attribute information. Therefore, the three-dimensional data encoding device can reduce the processing amount of the three-dimensional data decoding device.
[0563] For example, the control information is control information (for example, SPS) common to a plurality of frames. For example, the third point cloud data is a plurality of point cloud data at a plurality of times, and the control information is control information common to the plurality of point cloud data.
[0564] For example, the three-dimensional data encoding device encodes the attribute information including the first information using a reversible encoding method. For example, the three-dimensional data encoding device sets quantization parameters so that a reversible encoding method is used. For example, the three-dimensional data encoding device stores information indicating the set quantization parameters in a bit stream.
[0565] For example, the three-dimensional data encoding device corrects the positions of the point groups included in the second point group data using motion information (e.g., a motion vector) indicating the motion between the first point group data and the second point group data, and generates third point group data by integrating the first point group data and the corrected second point group data, and the encoded data includes the motion information.
[0566] According to this, the three-dimensional data encoding device can bring the positions of the point groups to be combined closer, so the encoding efficiency can be improved.
[0567] For example, the three-dimensional data encoding device includes a processor and a memory, and the processor performs the above processing using the memory.
[0568] Also, the three-dimensional data decoding device according to the present embodiment performs the processing shown in FIG. 108. First, the three-dimensional data decoding device acquires encoded data including the position information of each of a plurality of three-dimensional points and a plurality of attribute information included in the third point group data in which the first point group data and the second point group data are combined from a bit stream (S5821). The three-dimensional data decoding device acquires second information (e.g., identification information) indicating attribute information including first information (e.g., a frame index) indicating to which of the first point group data and the second point group data the corresponding three-dimensional point belongs among the plurality of attribute information from the control information included in the bit stream (S5822). The three-dimensional data decoding device acquires the first information using the second information (S5823). For example, the three-dimensional data decoding device specifies the attribute information including the first information using the second information, and acquires the first information from the specified attribute information.
[0569] According to this, when the first information is included in any of the plurality of attribute information, the three-dimensional data decoding device can easily determine the attribute information including the first information by using the second information included in the control information. Therefore, the three-dimensional data decoding device can reduce the processing amount.
[0570] For example, the control information is control information (e.g., SPS) common to a plurality of frames.
[0571] For example, the attribute information including the first information is encoded using a reversible encoding method. For example, the three-dimensional data decoding device decodes the attribute information encoded using the reversible encoding method by using a decoding method corresponding to the reversible encoding method.
[0572] For example, the quantization parameter is set so that a reversible encoding method is used. For example, the three-dimensional data decoding device acquires information indicating the quantization parameter set so that a reversible encoding method is used from the bit stream, and uses the quantization parameter to decode the attribute information by using the above decoding method.
[0573] For example, the three-dimensional data decoding device separates the first point group data and the second point group data from the third point group data by using the first information.
[0574] For example, the three-dimensional data decoding device acquires motion information indicating the motion between the first point group data and the second point group data from the bit stream, and corrects the position of the point group included in the second point group data by using the motion information.
[0575] According to this, the three-dimensional data decoding device can decode a bit stream with improved encoding efficiency by bringing the positions of the point groups to be combined closer.
[0576] For example, the three-dimensional data decoding device includes a processor and a memory, and the processor performs the above processing by using the memory.
[0577] 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.
[0578] In addition, 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 embodiments is typically realized as an LSI which is an integrated circuit. These may be individually formed into one chip, or may be formed into one chip so as to include some or all of them.
[0579] In addition, the integration into an integrated circuit is not limited to an LSI, and may be realized by a dedicated circuit or a general-purpose processor. An FPGA (Field Programmable Gate Array) that can be programmed after manufacturing the LSI, or a reconfigurable processor that can reconfigure the connection and setting of circuit cells inside the LSI may be used.
[0580] 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.
[0581] In addition, 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.
[0582] In addition, the division of the 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 time division.
[0583] Also, the order in which each step in the flowchart is executed is for illustrative purposes to specifically describe the present disclosure, and it may be in an order other than the above. Also, some of the above steps may be executed simultaneously (in parallel) with other steps.
[0584] 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. As long as the gist of the present disclosure is not deviated from, various modifications conceived by those skilled in the art applied to these embodiments, or forms constructed by combining components in different embodiments may also be included within the scope of one or more aspects.
Industrial Applicability
[0585] The present disclosure can be applied to a three-dimensional data encoding device and a three-dimensional data decoding device.
Explanation of Signs
[0586] 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 4801 Encoding Unit 4802 Multiplexing Unit 4910 First Encoding Unit 4911 Splitting Unit 4912 Location Information Encoding Unit 4913 Attribute Information Encoding Unit 4914 Additional Information Encoding Unit 4915 Multiplexing Unit 4920 First Decoding Unit 4921 Demultiplexing Unit 4922 Location Information Decoding Unit 4923 Attribute Information Decoding Unit 4924 Additional Information Decoding Unit 4925 Combining Unit 4931 Slice Splitting Unit 4932 Location Information Tile Splitting Unit 4933 Attribute Information Tile Splitting Unit 4941 Location Information Tile Combining Unit 4942 Attribute Information Tile Combining Unit 4943 Slice combining section 5410 Encoding section 5411 Division section 5412 Position information encoding section 5413 Attribute information encoding section 5414 Additional information encoding section 5415 Multiplexing section 5421 Tile division section 5422 Slice division section 5431, 5441 Frame index generation section 5432, 5442 Entropy encoding section 5450 Decoding section 5451 Demultiplexing section 5452 Position information decoding section 5453 Attribute information decoding section 5454 Additional information decoding section 5455 Combining section 5461, 5471 Entropy decoding section 5462, 5472 Frame index acquisition section 5600 3D data encoding device 5601 Frame combining section 5602 Position information encoding section 5603 Attribute information reassignment section 5604 Attribute information encoding section 5610 3D data decoding device 5611 Position information decoding section 5612 Attribute information decoding section 5613 Frame division section 5800 3D data encoding device 5810 3D data decoding device 5811 Position information decoding section 5812 Attribute information decoding section 5813 Frame division section 5814 Motion compensation section
Claims
1. Encode a first point cloud frame including a plurality of first three-dimensional points, generate a bitstream including encoded data and control information, wherein the encoded data includes attribute values of the plurality of first three-dimensional points, the control information includes an identifier of an attribute type of the attribute value, the identifier of the attribute type indicates that the attribute type of the attribute value is a frame index, the frame index indicates how to divide the plurality of first three-dimensional points included in the first point cloud frame into one or more second point cloud frames, each of the one or more second point cloud frames is composed of a plurality of three-dimensional points having the same frame index, and the plurality of three-dimensional points are included in the plurality of first three-dimensional points A data encoding method.
2. The control information is control information common to a plurality of frames The data encoding method according to Claim 1.
3. The control information is included in a sequence parameter set The data encoding method according to Claim 1.
4. The attribute value includes a color value The data encoding method according to Claim 1.
5. The attribute value includes a reflectance value The data encoding method according to Claim 1.
6. The density of the points in the first point cloud frame is higher than the density of the points in each of the one or more second point cloud frames The data encoding method according to Claim 1.
7. Obtain encoded data including attribute values of a plurality of first three-dimensional points included in a first point cloud frame from a bitstream, obtain an identifier of an attribute type of the attribute value included in the control information included in the bitstream, the identifier of the attribute type indicates that the attribute type of the attribute value is a frame index, the frame index indicates how to divide the plurality of first three-dimensional points included in the first point cloud frame into one or more second point cloud frames, each of the one or more second point cloud frames is composed of a plurality of three-dimensional points having the same frame index, and the plurality of three-dimensional points are included in the plurality of first three-dimensional points A data decoding method.
8. The control information is control information common to a plurality of frames The data decoding method according to Claim 7.
9. The control information is included in a sequence parameter set The data decoding method according to Claim 7.
10. The attribute value includes a color value The data decoding method according to Claim 7.
11. The attribute value includes a reflectance value The data decoding method according to claim 7
12. The density of the points in the first point group frame is higher than the density of the points in each of the one or more second point group frames The data decoding method according to claim 7
Citation Information
Patent Citations
Method and device for generating and restoring 3D compressed data
JP2008537830A
Creating 3D graphics data
JP2010510558A
Map display device
WO2014020663A1