Three-dimensional data encoding method, three-dimensional data decoding method, three-dimensional data encoding device, and three-dimensional data decoding device
Patent Information
- Application Number
- JP2024223843
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2018-12-07
- Filing Date
- 2024-12-19
- Publication Date
- 2025-03-07
- Estimated Expiration
- 2039-12-06
AI Technical Summary
【0011】 本開示は、誤ったデータが生成されることを抑制できる三次元データ符号化方法、三次元データ復号方法、三次元データ符号化装置、又は三次元データ復号装置を提供できる。
Smart Images

Figure 2025031803000001_ABST
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 device, and a three-dimensional data decoding device. [Background technology]
[0002] In the future, devices and services that utilize 3D data are expected to become widespread in a wide range of fields, such as computer vision for autonomous operation of automobiles or robots, map information, monitoring, infrastructure inspection, video distribution, etc. 3D data is acquired in various ways, such as distance sensors such as range finders, stereo cameras, or a combination of multiple monocular cameras.
[0003] One method of expressing three-dimensional data is a method called a point cloud, which represents the shape of a three-dimensional structure using a group of points in a three-dimensional space. In a point cloud, the positions and colors of the points are stored. Point clouds are expected to become the mainstream method of expressing three-dimensional data, but point clouds have a very large amount of data. Therefore, when storing or transmitting three-dimensional data, it is essential to compress the amount of data by encoding, just like two-dimensional video images (examples include MPEG-4 AVC or HEVC standardized by MPEG).
[0004] In addition, compression of point clouds is partially supported by public libraries (Point Cloud Library) that perform point cloud-related processing.
[0005] Furthermore, a technique is known that uses three-dimensional map data to search for and display facilities located around a vehicle (see, for example, Patent Document 1). [Prior art documents] [Patent documents]
[0006] [Patent Document 1] International Publication No. 2014 / 020663 Summary of the Invention [Problem to be solved by the invention]
[0007] In the encoding process of three-dimensional data, it is desirable to be able to prevent erroneous data from being generated.
[0008] An object of the present disclosure is to provide a three-dimensional data encoding method, a three-dimensional data decoding method, a three-dimensional data encoding device, or a three-dimensional data decoding device that can suppress the generation of erroneous data. [Means for solving the problem]
[0009] A three-dimensional data encoding method according to one embodiment of the present disclosure acquires first point cloud frame data to be encoded, and generates a bit stream including encoded point cloud frame data obtained by encoding the first point cloud frame data to be encoded, frame identification information, and single point information, wherein the frame identification information indicates how the encoded point cloud frame data is divided into multiple point cloud frames, and the single point information is information that identifies whether the first point cloud frame data includes overlapping points, and during the generation, the frame identification information is encoded as attribute information.
[0010] A three-dimensional data decoding method according to one embodiment of the present disclosure obtains a bit stream including encoded point cloud frame data in which first point cloud frame data is encoded, frame identification information, and single point information, and decodes the bit stream, wherein the frame identification information indicates how the encoded point cloud frame data is divided into multiple point cloud frames, the single point information is information that identifies whether the first point cloud frame data includes overlapping points, and the frame identification information is encoded as attribute information in the bit stream. Effect of the Invention
[0011] The present disclosure can provide a three-dimensional data encoding method, a three-dimensional data decoding method, a three-dimensional data encoding device, or a three-dimensional data decoding device that can suppress the generation of erroneous data. [Brief description of the drawings]
[0012] [Figure 1] FIG. 1 is a diagram showing a configuration of a three-dimensional data encoding / decoding system according to the first embodiment. [Diagram 2] FIG. 2 is a diagram illustrating an example of a configuration of point cloud data according to the first embodiment. [Diagram 3] FIG. 3 is a diagram showing an example of a configuration of a data file in which point cloud data information according to the first embodiment is described. [Figure 4] FIG. 4 is a diagram showing types of point cloud data according to the first embodiment. [Diagram 5] FIG. 5 is a diagram showing a configuration of a first encoding unit according to the first embodiment. [Figure 6] FIG. 6 is a block diagram of a first encoding unit according to the first embodiment. [Figure 7] FIG. 7 is a diagram showing a configuration of a first decoding unit according to the first embodiment. [Figure 8] FIG. 8 is a block diagram of a first decoding unit according to the first embodiment. [Figure 9] FIG. 9 is a diagram showing a configuration of a second encoding unit according to the first embodiment. [Figure 10] FIG. 10 is a block diagram of a second encoding unit according to the first embodiment. [Figure 11] FIG. 11 is a diagram illustrating a configuration of a second decoding unit according to the first embodiment. [Figure 12] FIG. 12 is a block diagram of a second decoding unit according to the first embodiment. [Figure 13] FIG. 13 is a diagram showing a protocol stack related to PCC encoded data according to the first embodiment. [Figure 14] FIG. 14 is a diagram showing a basic structure of the ISOBMFF according to the second embodiment. [Figure 15]FIG. 15 is a diagram illustrating a protocol stack according to the second embodiment. [Figure 16] FIG. 16 is a diagram showing configurations of an encoding unit and a multiplexing unit according to the third embodiment. In FIG. [Figure 17] FIG. 17 is a diagram showing an example of a structure of encoded data according to the third embodiment. In FIG. [Figure 18] FIG. 18 is a diagram showing an example of the structure of coded data and an NAL unit according to the third embodiment. [Figure 19] FIG. 19 is a diagram illustrating an example of the semantics of pcc_nal_unit_type according to the third embodiment. [Figure 20] FIG. 20 is a diagram showing an example of a transmission order of NAL units according to the third embodiment. [Figure 21] FIG. 21 is a block diagram of a first encoding unit according to the fourth embodiment. [Figure 22] FIG. 22 is a block diagram of a first decoding unit according to the fourth embodiment. [Figure 23] FIG. 23 is a block diagram of a division unit according to the fourth embodiment. [Figure 24] FIG. 24 is a diagram showing an example of division into slices and tiles according to the fourth embodiment. [Diagram 25] FIG. 25 is a diagram showing an example of a division pattern of slices and tiles according to the fourth embodiment. [Figure 26] FIG. 26 is a diagram illustrating an example of a dependency relationship according to the fourth embodiment. In FIG. [Figure 27] FIG. 27 is a diagram showing an example of a data decoding order according to the fourth embodiment. [Figure 28] FIG. 28 is a flowchart of the encoding process according to the fourth embodiment. [Figure 29] FIG. 29 is a block diagram of a coupling unit according to the fourth embodiment. [Diagram 30] FIG. 30 is a diagram showing an example of the structure of coded data and an NAL unit according to the fourth embodiment. [Diagram 31] FIG. 31 is a flowchart of the encoding process according to the fourth embodiment. [Diagram 32] FIG. 32 is a flowchart of the decoding process according to the fourth embodiment. [Diagram 33] FIG. 33 is a flowchart of the encoding process according to the fourth embodiment. [Diagram 34] FIG. 34 is a flowchart of the decoding process according to the fourth embodiment. [Diagram 35] FIG. 35 is a diagram showing an image of generating a tree structure and occupancy codes from point cloud data of multiple frames according to the fifth embodiment. [Diagram 36] FIG. 36 is a diagram illustrating an example of frame combination according to the fifth embodiment. [Figure 37] FIG. 37 is a diagram showing an example of combining a plurality of frames according to the fifth embodiment. [Figure 38] FIG. 38 is a flowchart of three-dimensional data encoding processing according to the fifth embodiment. [Figure 39] FIG. 39 is a flowchart of the encoding process according to the fifth embodiment. [Diagram 40] FIG. 40 is a flowchart of three-dimensional data decoding processing according to the fifth embodiment. [Diagram 41] FIG. 41 is a flowchart of the decoding and division process according to the fifth embodiment. [Diagram 42] FIG. 42 is a block diagram of an encoding unit according to the fifth embodiment. [Diagram 43] FIG. 43 is a block diagram of a division unit according to the fifth embodiment. [Diagram 44] FIG. 44 is a block diagram of a position information encoding unit according to the fifth embodiment. As shown in FIG. [Diagram 45] FIG. 45 is a block diagram of an attribute information encoding unit according to the fifth embodiment. As shown in FIG. [Diagram 46] FIG. 46 is a flowchart of the encoding process of point cloud data according to the fifth embodiment. [Figure 47] FIG. 47 is a flowchart of the encoding process according to the fifth embodiment. [Figure 48]FIG. 48 is a block diagram of a decoding unit according to the fifth embodiment. [Figure 49] FIG. 49 is a block diagram of a position information decoding unit according to the fifth embodiment. [Figure 50] FIG. 50 is a block diagram of an attribute information decoding unit according to the fifth embodiment. [Figure 51] FIG. 51 is a block diagram of a coupling unit according to the fifth embodiment. [Figure 52] FIG. 52 is a flowchart of the point cloud data decoding process according to the fifth embodiment. [Diagram 53] FIG. 53 is a flowchart of the decoding process according to the fifth embodiment. [Figure 54] FIG. 54 is a diagram showing an example of a frame combining pattern according to the fifth embodiment. In FIG. [Figure 55] FIG. 55 is a diagram illustrating an example of a configuration of a PCC frame according to the fifth embodiment. [Figure 56] FIG. 56 is a diagram showing a structure of the encoding position information according to the fifth embodiment. In FIG. [Figure 57] FIG. 57 is a diagram illustrating an example of the syntax of a header of the encoding position information according to the fifth embodiment. [Figure 58] FIG. 58 is a diagram illustrating an example of the syntax of the payload of the encoded position information according to the fifth embodiment. [Figure 59] FIG. 59 is a diagram illustrating an example of leaf node information according to the fifth embodiment. [Figure 60] FIG. 60 is a diagram illustrating an example of leaf node information according to the fifth embodiment. [Figure 61] FIG. 61 is a diagram showing an example of bitmap information according to the fifth embodiment. In FIG. [Figure 62] FIG. 62 is a diagram showing a structure of the encoded attribute information according to the fifth embodiment. In FIG. [Figure 63] FIG. 63 is a diagram illustrating an example of the syntax of the header of the encoding attribute information according to the fifth embodiment. [Figure 64] FIG. 64 is a diagram illustrating an example of the syntax of the payload of the encoded attribute information according to the fifth embodiment. [Figure 65] FIG. 65 is a diagram showing a structure of coded data according to the fifth embodiment. In FIG. [Figure 66] FIG. 66 is a diagram showing the data transmission order and data reference relationships according to the fifth embodiment. In FIG. [Figure 67] FIG. 67 is a diagram showing the data transmission order and data reference relationships according to the fifth embodiment. In FIG. [Figure 68] FIG. 68 is a diagram showing the data transmission order and data reference relationships according to the fifth embodiment. In FIG. [Figure 69] FIG. 69 is a diagram showing an example of decoding a part of frames according to the fifth embodiment. In FIG. [Figure 70] FIG. 70 is a diagram showing the data transmission order and data reference relationships according to the fifth embodiment. [Figure 71] FIG. 71 is a diagram showing the data transmission order and data reference relationships according to the fifth embodiment. In FIG. [Figure 72] FIG. 72 is a diagram showing the data transmission order and data reference relationships according to the fifth embodiment. In FIG. [Figure 73] FIG. 73 is a diagram showing the data transmission order and data reference relationships according to the fifth embodiment. In FIG. [Figure 74] FIG. 74 is a flowchart of the encoding process according to the fifth embodiment. [Figure 75] FIG. 75 is a flowchart of the decoding process according to the fifth embodiment. [Figure 76] FIG. 76 is a diagram illustrating an example of a procedure for performing quantization before frame splicing according to the sixth embodiment. [Figure 77] FIG. 77 is a diagram showing an example of syntax of an SPS according to the sixth embodiment. [Figure 78] FIG. 78 is a diagram illustrating an example of syntax of a GPS according to the sixth embodiment. [Figure 79] FIG. 79 is a diagram illustrating an example of syntax of a GPS according to the sixth embodiment. [Figure 80] FIG. 80 is a flowchart of three-dimensional data encoding processing according to the sixth embodiment. [Figure 81] FIG. 81 is a flowchart of three-dimensional data decoding processing according to the sixth embodiment. [Figure 82] FIG. 82 is a block diagram of a three-dimensional data encoding device according to the sixth embodiment. [Figure 83] FIG. 83 is a block diagram of a three-dimensional data decoding device according to the sixth embodiment. [Figure 84] FIG. 84 is a diagram showing an example of a procedure for performing quantization after frame splicing according to the sixth embodiment. [Figure 85] FIG. 85 is a flowchart of three-dimensional data encoding processing according to the sixth embodiment. [Figure 86] FIG. 86 is a flowchart of three-dimensional data decoding processing according to the sixth embodiment. [Figure 87] FIG. 87 is a block diagram of a three-dimensional data encoding device according to the sixth embodiment. [Figure 88] FIG. 88 is a block diagram of a three-dimensional data decoding device according to the sixth embodiment. [Figure 89] FIG. 89 is a flowchart of three-dimensional data encoding processing according to the sixth embodiment. [Figure 90] FIG. 90 is a flowchart of three-dimensional data decoding processing according to the sixth embodiment. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0013] A three-dimensional data encoding method according to one embodiment of the present disclosure generates joined point cloud data by combining multiple point cloud data, and when applying joint coding to encode the joined point cloud data, sets first information indicating whether each leaf node is likely to include multiple three-dimensional points to a first value indicating that each leaf node is likely to include multiple three-dimensional points, and generates a bit stream including the set first information; when not applying the joint coding, sets the first information to the first value or a second value indicating that each leaf node is likely not to include multiple three-dimensional points, and generates a bit stream including the set first information.
[0014] According to this, the three-dimensional data encoding method can suppress generation of erroneous data.
[0015] For example, the first information may be included in frame-by-frame control information included in the bitstream.
[0016] For example, the control information for each sequence included in the bitstream may include second information, and when the joint coding is applied, the second information may be set to a third value, and when the joint coding is not applied, the second information may be set to a fourth value different from the third value.
[0017] For example, the frame-by-frame control information may include second information, and when the joint coding is applied, the second information may be set to a third value, and when the joint coding is not applied, the second information may be set to a fourth value different from the third value.
[0018] A three-dimensional data decoding method according to one embodiment of the present disclosure obtains, from a bit stream, encoded data generated by applying joint coding to generate joint point cloud data by combining multiple point cloud data and encode the joint point cloud data, first information indicating whether each leaf node is likely to include multiple three-dimensional points, the first information being set to a first value indicating that each of the leaf nodes is likely to include multiple three-dimensional points, and, when encoded data generated without applying the joint coding is obtained from the bit stream, obtains from the bit stream the first information being set to the first value or a second value indicating that each of the leaf nodes is likely to include multiple three-dimensional points.
[0019] According to this, the three-dimensional data decoding method can suppress the generation of erroneous data.
[0020] For example, the first information may be included in frame-by-frame control information included in the bitstream.
[0021] For example, the control information for sequence units included in the bitstream may include second information, and when encoded data generated by applying the joint coding is obtained from the bitstream, the second information may be set to a third value, and when encoded data generated without applying the joint coding is obtained from the bitstream, the second information may be set to a fourth value different from the third value.
[0022] For example, the frame-by-frame control information may include second information, and when encoded data generated by applying the joint coding is obtained from the bitstream, the second information may be set to a third value, and when encoded data generated without applying the joint coding is obtained from the bitstream, the second information may be set to a fourth value different from the third value.
[0023] In addition, a three-dimensional data encoding device according to one embodiment of the present disclosure includes a processor and a memory, and the processor uses the memory to generate joined point cloud data by combining multiple point cloud data, and when applying joint coding to encode the joined point cloud data, sets first information indicating whether each leaf node is likely to include multiple three-dimensional points to a first value indicating that each leaf node is likely to include multiple three-dimensional points, and generates a bit stream including the set first information, and when not applying the joint coding, sets the first information to the first value or a second value indicating that each leaf node is likely not to include multiple three-dimensional points, and generates a bit stream including the set first information.
[0024] This makes it possible for the three-dimensional data encoding device to suppress generation of erroneous data.
[0025] In addition, a three-dimensional data decoding device according to one embodiment of the present disclosure includes a processor and a memory, and the processor uses the memory to generate joint point cloud data from a bit stream by combining multiple point cloud data, and when encoded data generated by applying joint coding to encode the joint point cloud data is obtained, the processor obtains from the bit stream first information indicating whether or not each leaf node is likely to include multiple three-dimensional points, the first information being set to a first value indicating that each leaf node is likely to include multiple three-dimensional points; and when encoded data generated without applying the joint coding is obtained from the bit stream, the processor obtains from the bit stream the first information being set to the first value or a second value indicating that each leaf node is not likely to include multiple three-dimensional points.
[0026] This makes it possible for the three-dimensional data decoding device to suppress the generation of erroneous data.
[0027] These comprehensive or specific aspects may be realized as a system, a method, an integrated circuit, a computer program, or a recording medium such as a computer-readable CD-ROM, or may be realized as any combination of a system, a method, an integrated circuit, a computer program, and a recording medium.
[0028] Hereinafter, the embodiments will be described in detail 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 and connection forms of the components, steps, and order of steps shown in the following embodiments are merely examples and are not intended to limit the present disclosure. In addition, among the components in the following embodiments, components that are not described in the independent claims will be described as optional components.
[0029] (Embodiment 1) When using the encoded data of a point cloud in an actual device or service, it is desirable to transmit and receive the necessary information according to the purpose in order to reduce 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 this purpose.
[0030] In this embodiment, we describe a three-dimensional data encoding method and a three-dimensional data encoding device for providing the function of transmitting and receiving necessary information depending on the application in encoded data of a three-dimensional point cloud, as well as a three-dimensional data decoding method and a three-dimensional data decoding device 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.
[0031] In particular, the first and second encoding methods are currently being considered as methods (encoding schemes) for encoding point cloud data; however, the structure of the encoded data and the method for storing the encoded data in a system format have not been defined, and as things stand, there is a problem that MUX processing (multiplexing) in the encoding unit, or transmission or storage, is not possible.
[0032] Furthermore, there has been no method to date that supports a format in which two codecs, the first encoding method and the second encoding method, are mixed, such as PCC (Point Cloud Compression).
[0033] In this embodiment, a structure of PCC encoded data in which two codecs, a first encoding method and a second encoding method, are mixed, and a method of storing the encoded data in a system format will be described.
[0034] First, the configuration of a three-dimensional data (point cloud data) encoding / decoding system according to this embodiment will be described. Fig. 1 is a diagram showing an example of the configuration of a three-dimensional data encoding / decoding system according to this embodiment. As shown in Fig. 1, the three-dimensional data encoding / decoding system includes a three-dimensional data encoding system 4601, a three-dimensional data decoding system 4602, a sensor terminal 4603, and an external connection unit 4604.
[0035] The three-dimensional data encoding system 4601 generates encoded data or multiplexed data by encoding point cloud data, which is three-dimensional data. The three-dimensional data encoding system 4601 may be a three-dimensional data encoding device realized by a single device, or may be a system realized by multiple devices. The three-dimensional data encoding device may include some of the multiple processing units included in the three-dimensional data encoding system 4601.
[0036] 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.
[0037] 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.
[0038] The presentation unit 4612 presents the sensor information or the point cloud data to the user. For example, the presentation unit 4612 displays information or an image based on the sensor information or the point cloud data.
[0039] 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.
[0040] The multiplexing unit 4614 generates multiplexed data by multiplexing the coded data, control information, and additional information input from the coding unit 4613. The format of the multiplexed data is, for example, a file format for storage, or a packet format for transmission.
[0041] The input / output unit 4615 (e.g., a communication unit or an interface) outputs the multiplexed data to the outside. Alternatively, the multiplexed data is stored in a storage unit such as an internal memory. The control unit 4616 (or an application execution unit) controls each processing unit. In other words, the control unit 4616 controls encoding, multiplexing, etc.
[0042] The sensor information may be input to the encoding unit 4613 or the multiplexing unit 4614. Furthermore, the input / output unit 4615 may output the point cloud data or the encoded data directly to the outside.
[0043] 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.
[0044] The three-dimensional data decoding system 4602 generates point cloud data, which is three-dimensional data, by decoding the encoded data or multiplexed data. The three-dimensional data decoding system 4602 may be a three-dimensional data decoding device realized by a single device, or may be a system realized by multiple devices. The three-dimensional data decoding device may also include some of the multiple processing units included in the three-dimensional data decoding system 4602.
[0045] 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 .
[0046] The sensor information acquisition unit 4621 acquires sensor information from the sensor terminal 4603 .
[0047] The input / output unit 4622 acquires a transmission signal, decodes multiplexed data (file format or packets) from the transmission signal, and outputs the multiplexed data to the demultiplexer 4623.
[0048] The demultiplexer 4623 obtains the coded data, control information, and additional information from the multiplexed data, and outputs the coded data, control information, and additional information to the decoder 4624.
[0049] The decoding unit 4624 reconstructs the point cloud data by decoding the encoded data.
[0050] 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 a user's operation. The control unit 4627 (or the application execution unit) controls each processing unit. That is, the control unit 4627 controls demultiplexing, decoding, presentation, etc.
[0051] The input / output unit 4622 may obtain the point cloud data or the encoded data directly from the outside. The presentation unit 4625 may obtain additional information such as sensor information and present information based on the additional information. The presentation unit 4625 may present information based on a user instruction obtained by the user interface 4626.
[0052] The sensor terminal 4603 generates sensor information obtained by a sensor. The sensor terminal 4603 is a terminal equipped with a sensor or a camera, and examples of the sensor terminal include a moving body such as an automobile, a flying object such as an airplane, a mobile terminal, and a camera.
[0053] The sensor information that can be acquired by the sensor terminal 4603 is, for example, (1) the distance between the sensor terminal 4603 and an object, or the reflectance of the object, obtained from a LIDAR, millimeter wave radar, or an infrared sensor, and (2) the distance between a camera and an object, or the reflectance of the object, obtained from a plurality of monocular camera images or stereo camera images. The sensor information may also include the attitude, direction, gyro (angular velocity), position (GPS information or altitude), speed, acceleration, etc. of the sensor. The sensor information may also include temperature, air pressure, humidity, magnetism, etc.
[0054] The external connection unit 4604 is realized by an integrated circuit (LSI or IC), an external storage unit, communication with a cloud server via the Internet, broadcasting, or the like.
[0055] 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 an example of the configuration of a data file in which information on the point cloud data is written.
[0056] Point cloud data includes data on multiple points. The data on each point includes position information (three-dimensional coordinates) and attribute information for that position information. A collection of multiple points is called a point cloud. For example, a point cloud may represent the three-dimensional shape of an object.
[0057] Position information such as three-dimensional coordinates is sometimes called geometry. Data for each point may include attribute information of multiple attribute types. The attribute types may be, for example, color or reflectance.
[0058] One piece of attribute information may be associated with one piece of location information, or multiple pieces of attribute information having different attribute types may be associated with one piece of location information, or multiple pieces of attribute information of the same attribute type may be associated with one piece of location information.
[0059] The configuration example of the data file shown in FIG. 3 is an example in which position information and attribute information correspond one-to-one, and shows the position information and attribute information of N points that make up the point cloud data.
[0060] The position information is, for example, information on three axes, x, y, and z. The attribute information is, for example, RGB color information. A typical data file is a ply file.
[0061] 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, point cloud data includes static objects and dynamic objects.
[0062] A static object is 3D point cloud data at any time (a certain time). A dynamic object is 3D point cloud data that changes over time. Hereinafter, 3D point cloud data at a certain time will be referred to as a PCC frame, or a frame.
[0063] The object may be a point cloud whose area is restricted to a certain extent, such as ordinary video data, or a large-scale point cloud whose area is not restricted, such as map information.
[0064] Also, there may be point cloud data of various densities, and there may be sparse point cloud data and dense point cloud data.
[0065] The details of each processing unit will be described below. The sensor information is acquired by various methods such as a distance sensor such as a LIDAR or a range finder, a stereo camera, or a combination of multiple monocular cameras. The point cloud data generation unit 4618 generates point cloud data based on the sensor information acquired by the sensor information acquisition unit 4617. The point cloud data generation unit 4618 generates position information as point cloud data, and adds attribute information for the position information to the position information.
[0066] The point cloud data generating unit 4618 may process the point cloud data when generating the position information or adding the attribute information. For example, the point cloud data generating unit 4618 may reduce the amount of data by deleting point clouds with overlapping positions. In addition, the point cloud data generating unit 4618 may convert the position information (position shift, rotation, normalization, etc.) or render the attribute information.
[0067] In FIG. 1, the point cloud data generation system 4611 is included in the three-dimensional data encoding system 4601, but it may be provided independently outside the three-dimensional data encoding system 4601.
[0068] The encoding unit 4613 generates encoded data by encoding the point cloud data based on a predefined encoding method. There are two main types of encoding methods: the first is an encoding method using position information, and this encoding method will be referred to as the first encoding method hereinafter; the second is an encoding method using a video codec, and this encoding method will be referred to as the second encoding method hereinafter.
[0069] The decoding unit 4624 decodes the encoded data based on a predefined encoding method to decode the point cloud data.
[0070] The multiplexing unit 4614 generates multiplexed data by multiplexing the encoded data using an existing multiplexing method. The generated multiplexed data is transmitted or stored. In addition to the PCC encoded data, the multiplexing unit 4614 multiplexes other media such as video, audio, subtitles, applications, and files, or reference time information. The multiplexing unit 4614 may further multiplex attribute information related to sensor information or point cloud data.
[0071] Multiplexing methods or file formats include ISOBMFF, MPEG-DASH, which is an ISOBMFF-based transmission method, MMT, MPEG-2 TS Systems, and RMP.
[0072] The demultiplexer 4623 extracts the PCC encoded data, other media, time information, and the like from the multiplexed data.
[0073] The input / output unit 4615 transmits the multiplexed data using a method suited to a transmission medium or a storage medium, such as broadcasting or communication. The input / output unit 4615 may communicate with other devices via the Internet, or may communicate with a storage unit such as a cloud server.
[0074] The communication protocol used may be http, ftp, TCP, UDP, etc. A PULL type communication method or a PUSH type communication method may be used.
[0075] Either wired transmission or wireless transmission may be used. For wired transmission, Ethernet (registered trademark), USB, RS-232C, HDMI (registered trademark), coaxial cable, etc. are used. For wireless transmission, wireless LAN, Wi-Fi (registered trademark), Bluetooth (registered trademark), millimeter wave, etc. are used.
[0076] As a broadcasting system, for example, DVB-T2, DVB-S2, DVB-C2, ATSC3.0, or ISDB-S3 is used.
[0077] Fig. 5 is a diagram showing a configuration of a first encoding unit 4630 which is an example of the encoding unit 4613 that performs encoding using the first encoding method. Fig. 6 is a block diagram of the first encoding unit 4630. The first encoding unit 4630 generates encoded data (encoded stream) by encoding point cloud data using the first encoding method. The first encoding unit 4630 includes a position information encoding unit 4631, an attribute information encoding unit 4632, an additional information encoding unit 4633, and a multiplexing unit 4634.
[0078] The first encoding unit 4630 has a feature of performing encoding in consideration of a three-dimensional structure. Also, the first encoding unit 4630 has a feature that the attribute information encoding unit 4632 performs encoding using information obtained from the position information encoding unit 4631. The first encoding method is also called GPCC (Geometry based PCC).
[0079] The point cloud data is PCC point cloud data such as a PLY file, or PCC point cloud data generated from sensor information, and includes position information (Position), attribute information (Attribute), and other additional information (MetaData). The position information is input to a position information encoding unit 4631, the attribute information is input to an attribute information encoding unit 4632, and the additional information is input to an additional information encoding unit 4633.
[0080] The position information encoding unit 4631 generates encoded position information (Compressed Geometry) that 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 octet tree. Specifically, in the octet tree, the target space is divided into eight nodes (subspaces), and 8-bit information (occupancy code) indicating whether or not a point cloud is included in each node is generated. In addition, the node that includes the point cloud is further divided into eight nodes, and 8-bit information indicating whether or not a point cloud is included in each of the eight nodes is generated. This process is repeated until the number of point clouds included in a predetermined hierarchy or node is equal to or less than a threshold value.
[0081] The attribute information encoding unit 4632 generates encoded attribute information (Compressed Attribute) that is encoded data by encoding using the configuration information generated by the position information encoding unit 4631. For example, the attribute information encoding unit 4632 determines a reference point (reference node) to be referenced in encoding a target point (target node) to be processed based on the octree structure generated by the position information encoding unit 4631. For example, the attribute information encoding unit 4632 refers to a node, among peripheral nodes or adjacent nodes, whose parent node in the octree is the same as that of the target node. Note that the method of determining the reference relationship is not limited to this.
[0082] Furthermore, the encoding process of the attribute information may include at least one of a quantization process, a prediction process, and an arithmetic coding process. In this case, the reference means using a reference node to calculate a predicted value of the attribute information, or using a state of the reference node (e.g., occupancy information indicating whether or not a point group is included in the reference node) to determine a parameter of the encoding. For example, the parameter of the encoding is a quantization parameter in the quantization process, or a context in the arithmetic coding.
[0083] The additional information encoding unit 4633 generates encoded additional information (Compressed MetaData) that is encoded data by encoding compressible data from the additional information.
[0084] The multiplexing unit 4634 multiplexes the encoding position information, the encoding attribute information, the encoding additional information, and other additional information to generate an encoded stream (Compressed Stream) that is encoded data. The generated encoded stream is output to a processing unit of a system layer (not shown).
[0085] Next, a first decoding unit 4640 which is an example of the decoding unit 4624 that performs decoding of the first encoding method will be described. FIG. 7 is a diagram showing a configuration of the first decoding unit 4640. FIG. 8 is a block diagram of the first decoding unit 4640. The first decoding unit 4640 generates point group data by decoding, by the first encoding method, encoded data (encoded stream) encoded by the first encoding method. The first decoding unit 4640 includes a demultiplexing unit 4641, a position information decoding unit 4642, an attribute information decoding unit 4643, and an additional information decoding unit 4644.
[0086] A coded stream (compressed stream), which is coded data, is input to the first decoding unit 4640 from a processing unit in a system layer (not shown).
[0087] The demultiplexer 4641 separates the encoded position information (Compressed Geometry), the encoded attribute information (Compressed Attribute), the encoded additional information (Compressed MetaData), and other additional information from the encoded data.
[0088] The position information decoding unit 4642 generates position information by decoding the encoded position information. For example, the position information decoding unit 4642 restores the position information of a point group represented by three-dimensional coordinates from the encoded position information represented by an N-ary tree structure such as an octree.
[0089] The attribute information decoding unit 4643 decodes the encoded attribute information based on the configuration information generated by the position information decoding unit 4642. For example, the attribute information decoding unit 4643 determines a reference point (reference node) to be referenced in decoding a target point (target node) to be processed based on the octree structure obtained by the position information decoding unit 4642. For example, the attribute information decoding unit 4643 refers to a node, among peripheral nodes or adjacent nodes, whose parent node in the octree is the same as that of the target node. Note that the method of determining the reference relationship is not limited to this.
[0090] In addition, the decoding process of the attribute information may include at least one of an inverse quantization process, a prediction process, and an arithmetic decoding process. In this case, the reference means using a reference node to calculate a predicted value of the attribute information, or using a state of the reference node (e.g., occupancy information indicating whether or not a point group is included in the reference node) to determine a parameter of the decoding. For example, the parameter of the decoding is a quantization parameter in the inverse quantization process, or a context in the arithmetic decoding.
[0091] The additional information decoding unit 4644 generates additional information by decoding the encoded additional information. The first decoding unit 4640 uses the additional information required for decoding the position information and attribute information during decoding, and outputs the additional information required for an application to the outside.
[0092] Next, a second encoding unit 4650, which is an example of the encoding unit 4613 that performs encoding by the second encoding method, will be described. Fig. 9 is a diagram showing a configuration of the second encoding unit 4650. Fig. 10 is a block diagram of the second encoding unit 4650.
[0093] The second encoding unit 4650 generates encoded data (encoded stream) by encoding the point cloud data by a second encoding method. The second encoding unit 4650 includes an additional information generating unit 4651, a position image generating unit 4652, an attribute image generating unit 4653, a video encoding unit 4654, an additional information encoding unit 4655, and a multiplexing unit 4656.
[0094] The second encoding unit 4650 has a feature of generating a position image and an attribute image by projecting a three-dimensional structure onto a two-dimensional image, and encoding the generated position image and attribute image using an existing video encoding method. The second encoding method is also called VPCC (Video based PCC).
[0095] 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).
[0096] The additional information generating unit 4651 generates map information of a plurality of two-dimensional images by projecting a three-dimensional structure onto the two-dimensional images.
[0097] The position image generating unit 4652 generates a position image (Geometry Image) based on the position information and the map information generated by the additional information generating unit 4651. This position image is, for example, a distance image in which distance (Depth) is indicated as a pixel value. Note that this distance image may be an image in which a plurality of point clouds are viewed from one viewpoint (an image in which a plurality of point clouds are projected onto one two-dimensional plane), a plurality of images in which a plurality of point clouds are viewed from multiple viewpoints, or a single image in which these multiple images are integrated.
[0098] The attribute image generating unit 4653 generates an attribute image based on the attribute information and the map information generated by the additional information generating unit 4651. This attribute image is, for example, an image in which the attribute information (for example, color (RGB)) is indicated as pixel values. Note that this image may be an image in which multiple point clouds are viewed from one viewpoint (an image in which multiple point clouds are projected onto one two-dimensional plane), or multiple images in which multiple point clouds are viewed from multiple viewpoints, or a single image in which these multiple images are integrated.
[0099] The video encoding unit 4654 generates an encoded position image (Compressed Geometry Image) and an encoded attribute image (Compressed Attribute Image), which are encoded data, by encoding the position image and the attribute image using a video encoding method. Note that any known encoding method may be used as the video encoding method. For example, the video encoding method is AVC, HEVC, or the like.
[0100] The additional information encoding unit 4655 generates encoded additional information (Compressed MetaData) by encoding the additional information and map information included in the point cloud data.
[0101] The multiplexing unit 4656 multiplexes the encoding position image, the encoding attribute image, the encoding additional information, and other additional information to generate an encoded stream (Compressed Stream) that is encoded data. The generated encoded stream is output to a processing unit of a system layer (not shown).
[0102] Next, a second decoding unit 4660 which is an example of the decoding unit 4624 that performs decoding of the second encoding method will be described. FIG. 11 is a diagram showing a 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 group data by decoding, by the second encoding method, encoded data (encoded stream) encoded by the second encoding method. The second decoding unit 4660 includes a demultiplexing unit 4661, a video decoding unit 4662, an additional information decoding unit 4663, a position information generating unit 4664, and an attribute information generating unit 4665.
[0103] A compressed stream, which is encoded data, is input to the second decoding unit 4660 from a processing unit in a system layer (not shown).
[0104] The demultiplexer 4661 separates the encoded position image (Compressed Geometry Image), the encoded attribute image (Compressed Attribute Image), the encoded additional information (Compressed MetaData), and other additional information from the encoded data.
[0105] 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.
[0106] The additional information decoding unit 4663 decodes the encoded additional information to generate additional information including map information and the like.
[0107] The position information generating unit 4664 generates position information using the position image and map information. The attribute information generating unit 4665 generates attribute information using the attribute image and map information.
[0108] The second decoding unit 4660 uses the additional information necessary for decoding during decoding, and outputs the additional information necessary for an application to the outside.
[0109] The problems with the PCC encoding method will be described below. Fig. 13 is a diagram showing a protocol stack related to PCC encoded data. Fig. 13 shows an example in which other media data such as video (e.g., HEVC) or audio is multiplexed with the PCC encoded data and transmitted or stored.
[0110] The multiplexing method and file format have the function of multiplexing various encoded data and transmitting or storing them. In order to transmit or store the encoded data, the encoded data must be converted into the format of the multiplexing method. For example, HEVC specifies a technology for storing encoded data in a data structure called a NAL unit and storing the NAL unit in ISOBMFF.
[0111] Meanwhile, a first encoding method (Codec1) and a second encoding method (Codec2) are currently being considered as methods for encoding point cloud data. However, the structure of the encoded data and the method for storing the encoded data in a system format have not been defined, which poses the problem that MUX processing (multiplexing) in the encoding unit, transmission, and storage cannot be performed as is.
[0112] In the following description, unless a specific encoding method is specified, it refers to either the first encoding method or the second encoding method.
[0113] (Embodiment 2) In this embodiment, a method for storing NAL units in an ISOBMFF file will be described.
[0114] ISOBMFF (ISO based media file format) is a file format standard defined in ISO / IEC 14496-12. ISOBMFF specifies a format that can store multiplexed media such as video, audio, and text, and is a media-independent standard.
[0115] The basic structure (file) of ISOBMFF is explained. The basic unit in ISOBMFF is a box. A box consists of type, length, and data, and a file is a collection of boxes of various types.
[0116] 14 is a diagram showing the basic structure (file) of ISOBMFF. An ISOBMFF file mainly includes boxes such as ftyp, which indicates the brand of the file with 4CC (4-character code), moov, which stores metadata such as control information, and mdat, which stores data.
[0117] A method of storing each medium in an ISOBMFF file is specified separately, and for example, a method of storing AVC video and HEVC video is specified in ISO / IEC14496-15. Here, it is considered that the function of ISOBMFF is extended and used to accumulate or transmit PCC encoded data, but there is no provision yet for storing PCC encoded data in an ISOBMFF file. Therefore, in this embodiment, a method of storing PCC encoded data in an ISOBMFF file will be described.
[0118] 15 is a diagram showing a protocol stack when a NAL unit common to PCC codecs is stored in an ISOBMFF file. Here, a NAL unit common to PCC codecs is stored in an ISOBMFF file. Although the NAL unit is common to PCC codecs, since multiple PCC codecs are stored in the NAL unit, it is desirable to define a storage method (Carriage of Codec1, Carriage of Codec2) according to each codec.
[0119] (Embodiment 3) In this embodiment, the types of encoded data (position information (Geometry), attribute information (Attribute), additional information (Metadata)) generated by the above-mentioned first encoding unit 4630 or second encoding unit 4650, a generation method of the additional information (metadata), and multiplexing processing in the multiplexing unit will be described. Note that the additional information (metadata) may also be referred to as a parameter set or control information.
[0120] In this embodiment, the dynamic object (three-dimensional point cloud data that changes over time) described in Figure 4 will be used as an example, but a similar method may also be used in the case of a static object (three-dimensional point cloud data at any time).
[0121] 16 is a diagram showing configurations of an encoding unit 4801 and a multiplexing unit 4802 included in the three-dimensional data encoding device according to this embodiment. The encoding unit 4801 corresponds to, for example, the first encoding unit 4630 or the second encoding unit 4650 described above. The multiplexing unit 4802 corresponds to the multiplexing unit 4634 or 46456 described above.
[0122] The encoding unit 4801 encodes point cloud data of multiple PCC (Point Cloud Compression) frames, and generates encoded data (Multiple Compressed Data) of multiple pieces of position information, attribute information, and additional information.
[0123] The multiplexing unit 4802 converts data of multiple data types (position information, attribute information, and additional information) into NAL units, thereby converting the data into a data structure that takes into consideration data access in the decoding device.
[0124] 17 is a diagram showing an example of the structure of coded data generated by the coding unit 4801. The arrows in the diagram indicate dependencies related to the decoding of coded data, with the source of the arrow depending on the data at the tip of the arrow. In other words, the decoding device decodes the data at the tip of the arrow, and uses the decoded data to decode the data at the tip of the arrow. In other words, dependency means that the data at the destination of dependency is referenced (used) in the processing (encoding, decoding, etc.) of the data at the source of dependency.
[0125] First, the process of generating encoded data of position information will be described. The encoding unit 4801 generates encoded position data (compressed geometry data) for each frame by encoding the position information of each frame. The encoded position data is represented as G(i), where i indicates the frame number, the time of the frame, etc.
[0126] The encoding unit 4801 also generates a position parameter set (GPS(i)) corresponding to each frame. The position parameter set includes parameters that can be used to decode the encoded position data. The encoded position data for each frame depends on the corresponding position parameter set.
[0127] Moreover, encoded position data consisting of multiple frames is defined as a position sequence (Geometry Sequence). The encoding unit 4801 generates a position sequence parameter set (Geometry Sequence PS: also written as position SPS) that stores parameters commonly used in decoding processes for multiple frames in the position sequence. The position sequence depends on the position SPS.
[0128] Next, a process for generating encoded data of 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. The encoded attribute data is represented as A(i). FIG. 17 shows an example in which an attribute X and an attribute Y exist, and the encoded attribute data of attribute X is represented as AX(i) and the encoded attribute data of attribute Y is represented as AY(i).
[0129] The encoding unit 4801 also generates an attribute parameter set (APS(i)) corresponding to each frame. The attribute parameter set for attribute X is represented as AXPS(i), and the attribute parameter set for attribute Y is represented as AYPS(i). The attribute parameter set includes parameters that can be used to decode the encoded attribute information. The encoded attribute data depends on the corresponding attribute parameter set.
[0130] Moreover, encoded attribute data consisting of multiple frames is defined as an attribute sequence. The encoding unit 4801 generates an attribute sequence parameter set (Attribute Sequence PS: also referred to as attribute SPS) that stores parameters commonly used in decoding processes for multiple frames in the attribute sequence. The attribute sequence depends on the attribute SPS.
[0131] Furthermore, in the first encoding method, the encoded attribute data depends on the encoded position data.
[0132] 17 shows an example in which two types of attribute information (attribute X and attribute Y) exist. When there are two types of attribute information, for example, two encoding units generate respective data and metadata. Also, for example, an attribute sequence is defined for each type of attribute information, and an attribute SPS is generated for each type of attribute information.
[0133] 17 shows an example in which there is one type of position information and two types of attribute information, but the present invention is not limited to this example, and there may be one type of attribute information, or three or more types. In this case, the encoded data can be generated in a similar manner. In addition, in the case of point cloud data that does not have attribute information, the attribute information may not be necessary. In this case, the encoding unit 4801 does not need to generate a parameter set related to the attribute information.
[0134] Next, a process of generating additional information (metadata) will be described. The encoding unit 4801 generates a PCC stream PS (also written as stream PS), which is a parameter set for the entire PCC stream. The encoding unit 4801 stores parameters that can be commonly used in decoding processes for one or more position sequences and one or more attribute sequences in the stream PS. 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.
[0135] Next, an access unit and a GOF will be described. In this embodiment, the concept of an access unit (AU) and a group of frames (GOF) are newly introduced.
[0136] An access unit is a basic unit for accessing data during decoding, and is composed of one or more pieces of data and one or more pieces of metadata. For example, an access unit is composed of position information at the same time and one or more pieces of attribute information. A GOF is a random access unit, and is composed of one or more access units.
[0137] The encoding unit 4801 generates an access unit header (AU Header) as identification information indicating the beginning of an access unit. The encoding unit 4801 stores parameters related to the access unit in the access unit header. For example, the access unit header includes the configuration or information of the encoded data included in the access unit. The access unit header also includes parameters commonly used for data included in the access unit, such as parameters related to the decoding of the encoded data.
[0138] Alternatively, instead of an access unit header, the encoding unit 4801 may generate an access unit delimiter that does not include parameters related to the access unit. This access unit delimiter is used as identification information indicating the beginning of the access unit. The decoding device identifies the beginning of the access unit by detecting the access unit header or the access unit delimiter.
[0139] Next, generation of identification information for the start of a GOF will be described. The encoding unit 4801 generates a GOF header as identification information indicating the start of a GOF. The encoding unit 4801 stores parameters related to the GOF in the GOF header. For example, the GOF header includes the configuration or information of the encoded data included in the GOF. The GOF header also includes parameters commonly used for data included in the GOF, such as parameters related to the decoding of the encoded data.
[0140] Instead of a GOF header, the encoding unit 4801 may generate a GOF delimiter that does not include parameters related to the GOF. This GOF delimiter is used as identification information indicating the beginning of the GOF. The decoding device identifies the beginning of the GOF by detecting the GOF header or the GOF delimiter.
[0141] In PCC encoded data, for example, an access unit is defined as a PCC frame unit, and a decoding device accesses a PCC frame based on identification information at the beginning of the access unit.
[0142] Also, for example, GOF is defined as one random access unit. The decoding device accesses the random access unit based on the identification information at the beginning of the GOF. For example, if PCC frames are not dependent on each other and can be decoded independently, the PCC frames may be defined as the random access unit.
[0143] Note that two or more PCC frames may be assigned to one access unit, and multiple random access units may be assigned to one GOF.
[0144] Furthermore, 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.
[0145] Next, the structure of the coded data and the method of storing the coded data in the NAL unit will be described.
[0146] 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.
[0147] For example, as shown in Fig. 18, the encoded data includes a header and a payload. The encoded data may include length information indicating the length (amount of data) of the encoded data, the header, or the payload. The encoded data may not include a header.
[0148] The header includes, for example, identification information for identifying the data, which indicates, for example, the data type or the frame number.
[0149] The header includes, for example, identification information indicating a reference relationship. This identification information is stored in the header when, for example, there is a dependency between data, and is information for referring to the reference destination from the reference source. For example, the header of the reference destination includes identification information for identifying the data. The header of the reference source includes identification information indicating the reference destination.
[0150] In addition, when the reference destination or the reference source can be identified or derived from other information, the identification information for specifying the data or the identification information indicating the reference relationship may be omitted.
[0151] The multiplexing unit 4802 stores the encoded data in the payload of the NAL unit. The NAL unit header includes pcc_nal_unit_type, which is identification information of the encoded data. Figure 19 shows an example of the semantics of pcc_nal_unit_type.
[0152] 19, when pcc_codec_type is codec 1 (Codec1: first encoding method), values 0 to 10 of pcc_nal_unit_type are assigned to the encoded position data (Geometry), encoded attribute X data (AttributeX), encoded attribute Y data (AttributeY), position PS (Geom.PS), attribute XPS (AttrX.PS), attribute YPS (AttrX.PS), position SPS (Geometry Sequence PS), attribute XSPS (AttributeX Sequence PS), attribute YSPS (AttributeY Sequence PS), AU header (AU Header), and GOF header (GOF Header) in codec 1. Values 11 and above are assigned as spares for codec 1.
[0153] When pcc_codec_type is Codec2 (Codec2: second encoding method), values 0 to 2 of pcc_nal_unit_type are assigned to codec data A (DataA), metadata A (MetaDataA), and metadata B (MetaDataB). Values 3 and above are assigned as spares for Codec2.
[0154] Next, the data transmission order will be described. The following describes the constraints on the transmission order of NAL units.
[0155] The multiplexing unit 4802 collectively transmits NAL units in units of GOF or AU. The multiplexing unit 4802 places a GOF header at the beginning of a GOF, and places an AU header at the beginning of an AU.
[0156] The multiplexing unit 4802 may allocate a sequence parameter set (SPS) for each AU so that the decoding device can decode from the next AU even if data is lost due to packet loss or the like.
[0157] If there is a dependency relationship related to decoding in the encoded data, the decoding device decodes the reference data after decoding the reference data. In order to enable the decoding device to decode the data in the order in which it was received without rearranging the data, the multiplexing unit 4802 sends out the reference data first.
[0158] Fig. 20 is a diagram showing examples of the transmission order of NAL units, and shows three examples: position information priority, parameter priority, and data integration.
[0159] The position information priority transmission order is an example in which information related to position information and information related to attribute information are transmitted 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.
[0160] For example, by using this transmission order, a decoding device that does not decode attribute information may be able to set a time during which it does not process the attribute information by ignoring the decoding of the attribute information. Also, for example, in the case of a decoding device that wishes to decode position information quickly, it may be able to decode the position information more quickly by obtaining the encoded data of the position information quickly.
[0161] In FIG. 20, the attributes XSPS and YSPS are integrated and written as the attribute SPS, but the attributes XSPS and YSPS may be arranged separately.
[0162] In a parameter set priority sending order, the parameter sets are sent first and the data is sent later.
[0163] As described above, as long as the constraints on the NAL unit transmission order are met, the multiplexing unit 4802 may transmit the NAL units in any order. For example, order identification information may be defined, and the multiplexing unit 4802 may have a function for transmitting the NAL units in a number of different orders. For example, the NAL unit order identification information may be stored in the stream PS.
[0164] The three-dimensional data decoding device may perform decoding based on the order identification information. The three-dimensional data decoding device may instruct the three-dimensional data encoding device of a desired transmission order, and the three-dimensional data encoding device (multiplexing unit 4802) may control the transmission order according to the instructed transmission order.
[0165] The multiplexing unit 4802 may generate coded data in which multiple functions are merged, as long as the data is transmitted in accordance with the transmission order constraints, such as the transmission order of the integrated data. For example, as shown in Fig. 20, the GOF header and the AU header may be integrated, or the AXPS and the AYPS may be integrated. In this case, an identifier indicating that the data has multiple functions is defined in pcc_nal_unit_type.
[0166] A modified example of this embodiment will be described below. If the PS has levels, such as a frame-level PS, a sequence-level PS, and a PCC sequence-level PS, and the PCC sequence level is the higher level and the frame level is the lower level, the following method may be used to store parameters.
[0167] The default PS value is indicated in the higher PS. Also, if the value of the lower PS differs from the value of the higher PS, the PS value is indicated in the lower PS. Or, the PS value is not written in the higher PS, and is written in the lower PS. Or, information on whether the PS value is to be written in the lower PS, the higher PS, or both is indicated in either or both of the lower PS and the higher PS. Or, the lower PS may be merged into the higher PS. Or, if the lower PS and the higher PS overlap, the multiplexing unit 4802 may omit sending one of them.
[0168] The encoding unit 4801 or the multiplexing unit 4802 may divide data into slices or tiles, and transmit the divided data. The divided data includes information for identifying the divided data, and parameters used for decoding the divided data are included in the parameter set. In this case, an identifier indicating that the data stores data or parameters related to tiles or slices is defined in pcc_nal_unit_type.
[0169] (Embodiment 4) HEVC encoding has data division tools such as slicing or tiling to enable parallel processing in the decoding device, but PCC (Point Cloud Compression) encoding does not yet have such tools.
[0170] In PCC, various data division methods can be considered depending on parallel processing, compression efficiency, and compression algorithms. This section describes the definitions of slices and tiles, the data structure, and the transmission and reception methods.
[0171] 21 is a block diagram showing a configuration of a first encoding unit 4910 included in the three-dimensional data encoding device according to this embodiment. The first encoding unit 4910 generates encoded data (encoded stream) by encoding point cloud data using a first encoding method (GPCC (Geometry based PCC)). The first encoding unit 4910 includes a division unit 4911, 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.
[0172] 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 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. In addition, the division unit 4911 generates additional information related to the division.
[0173] The position information encoding units 4912 generate a plurality of pieces of encoded position information by encoding the plurality of pieces of divided position information. For example, the position information encoding units 4912 process the plurality of pieces of divided position information in parallel.
[0174] The attribute information encoding units 4913 generate a plurality of pieces of encoded attribute information by encoding the plurality of pieces of divided attribute information. For example, the attribute information encoding units 4913 process the plurality of pieces of divided attribute information in parallel.
[0175] The additional information encoding unit 4914 generates encoded additional information by encoding the additional information included in the point cloud data and the additional information related to the data division generated by the division unit 4911 at the time of division.
[0176] The multiplexing unit 4915 multiplexes a plurality of pieces of encoding position information, a plurality of pieces of encoding attribute information, and encoding additional information to generate encoded data (encoded stream), and transmits the generated encoded data. In addition, the encoded additional information is used during decoding.
[0177] 21 shows an example in which there are two position information encoders 4912 and two attribute information encoders 4913, but the number of position information encoders 4912 and two attribute information encoders 4913 may be one, or three or more. Furthermore, multiple pieces of divided data may be processed in parallel within the same chip, such as multiple cores in a CPU, or may be processed in parallel by cores on multiple chips, or may be processed in parallel by multiple cores on multiple chips.
[0178] 22 is a block diagram showing a configuration of the first decoding unit 4920. The first decoding unit 4920 restores the point cloud data by decoding the encoded data (encoded stream) generated by encoding the point cloud data by the first encoding method (GPCC). The 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.
[0179] The demultiplexer 4921 demultiplexes the coded data (coded stream) to generate a plurality of pieces of coding position information, a plurality of pieces of coding attribute information, and coded additional information.
[0180] The position information decoders 4922 generate a plurality of pieces of divided position information by decoding the plurality of pieces of encoded position information. For example, the position information decoders 4922 process the plurality of pieces of encoded position information in parallel.
[0181] The multiple attribute information decoding unit 4923 generates multiple pieces of divided attribute information by decoding the multiple pieces of encoded attribute information. For example, the multiple attribute information decoding unit 4923 processes the multiple pieces of encoded attribute information in parallel.
[0182] The multiple additional information decoders 4924 generate additional information by decoding the encoded additional information.
[0183] The combining unit 4925 generates position information by combining a plurality of pieces of divided position information using the additional information The combining unit 4925 generates attribute information by combining a plurality of pieces of divided attribute information using the additional information.
[0184] 22 shows an example in which the number of each of the position information decoding units 4922 and the attribute information decoding units 4923 is two, but the number of each of the position information decoding units 4922 and the attribute information decoding units 4923 may be one, or three or more. Furthermore, multiple pieces of divided data may be processed in parallel within the same chip, such as multiple cores within a CPU, or may be processed in parallel by cores on multiple chips, or may be processed in parallel by multiple cores on multiple chips.
[0185] Next, it is described how the dividing unit 4911 has a configuration. Fig. 23 is a block diagram of the dividing unit 4911. The dividing unit 4911 includes a slice dividing unit 4931, a position information tile dividing unit 4932, and an attribute information tile dividing unit 4933.
[0186] The slice division unit 4931 generates a plurality of slice position information by dividing position information (Position (Geometry)) into slices. The slice division unit 4931 also generates a plurality of slice attribute information by dividing attribute information (Attribute) into slices. The slice division unit 4931 also outputs slice additional information (Slice MetaData) including information related to slice division and information generated in the slice division.
[0187] The position information tile division unit 4932 divides a plurality of slice position information pieces into tiles to generate a plurality of pieces of divided position information pieces (a plurality of pieces of tile position information pieces). In addition, 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 pieces and information generated in the tile division of the position information pieces.
[0188] The attribute information tile division unit 4933 divides a plurality of slice attribute information pieces into tiles to generate a plurality of pieces of divided attribute information (a plurality of pieces of tile attribute information). In addition, 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.
[0189] The number of slices or tiles to be divided is equal to or greater than 1. In other words, it is not necessary to divide the slices or tiles.
[0190] Although an example in which tile division is performed after slice division has been shown here, slice division may be performed after tile division. Furthermore, a new division type may be defined in addition to slices and tiles, and division may be performed using three or more division types.
[0191] A method for dividing point cloud data will be described below. Fig. 24 is a diagram showing an example of division into slices and tiles.
[0192] First, a method of dividing into slices will be described. The dividing unit 4911 divides the three-dimensional point cloud data into arbitrary point clouds in slice units. In the slice division, the dividing unit 4911 does not divide the position information and attribute information constituting a point, but divides the position information and attribute information together. That is, the dividing unit 4911 divides into slices so that the position information and attribute information at an arbitrary point belong to the same slice. In addition, according to these, the number of divisions and the division method may be any method. In addition, the minimum unit of division is a point. For example, the number of divisions of the position information and the attribute information are the same. For example, the three-dimensional point corresponding to the position information after the slice division and the three-dimensional point corresponding to the attribute information are included in the same slice.
[0193] Furthermore, the division unit 4911 generates slice additional information, which is additional information related to the number of divisions and the division method when dividing a slice. The slice additional information is the same as 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. Furthermore, the slice additional information includes information indicating the number of divisions, the division type, etc.
[0194] Next, a tile division method will be described. The division unit 4911 divides the data divided into slices into slice position information (G slices) and slice attribute information (A slices), and divides each of the slice position information and the slice attribute information into tiles.
[0195] Although FIG. 24 shows an example of division using an octree structure, the number of divisions and the division method may be any method.
[0196] Furthermore, the division unit 4911 may divide the position information and the attribute information using different division methods or the same division method. Furthermore, the division unit 4911 may divide a plurality of slices into tiles using different division methods or the same division method.
[0197] Furthermore, the division unit 4911 generates tile additional information related to the number of divisions and the division method when dividing tiles. The tile additional information (position tile additional information and attribute tile additional information) is independent of position information and attribute information. For example, the tile additional information includes information indicating the reference coordinate position, size, or side length of the bounding box after division. The tile additional information also includes information indicating the number of divisions, the division type, etc.
[0198] Next, an example of a method for dividing the point cloud data into slices or tiles will be described. The dividing unit 4911 may use a predetermined method as a method for dividing the point cloud data into slices or tiles, or may adaptively switch the method to be used depending on the point cloud data.
[0199] When dividing into slices, the dividing unit 4911 divides the three-dimensional space collectively based on the position information and the attribute information. For example, the dividing unit 4911 determines the shape of an object and divides the three-dimensional space into slices according to the shape of the object. For example, the dividing unit 4911 extracts objects such as trees or buildings, and divides the space on an object-by-object basis. For example, the dividing unit 4911 divides the space into slices such that one or more objects are entirely included in one slice. Alternatively, the dividing unit 4911 divides one object into multiple slices.
[0200] In this case, the encoding device may change the encoding method for each slice, for example. For example, the encoding device may use a high-quality compression method for a specific object or a specific part of an object. In this case, the encoding device may store information indicating the encoding method for each slice in additional information (metadata).
[0201] Furthermore, the dividing unit 4911 may divide the image into slices based on map information or location information so that each slice corresponds to a predetermined coordinate space.
[0202] When dividing into tiles, the dividing unit 4911 divides the position information and the attribute information independently. For example, the dividing unit 4911 divides a slice into tiles according to the amount of data or the amount of processing. For example, the dividing unit 4911 determines whether the amount of data of a slice (for example, the number of three-dimensional points included in a slice) is greater than a predetermined threshold. If the amount of data of a slice is greater than the threshold, the dividing unit 4911 divides the slice into tiles. If the amount of data of a slice is less than the threshold, the dividing unit 4911 does not divide the slice into tiles.
[0203] For example, the division unit 4911 divides the slice into tiles so that the processing amount or processing time in the decoding device is within a certain range (a predetermined value or less). This makes the processing amount per tile in the decoding device constant, facilitating distributed processing in the decoding device.
[0204] Furthermore, when the processing amount differs between the position information and the attribute information, for example when the processing amount of the position information is greater than the processing amount of the attribute information, dividing section 4911 divides the position information into a greater number of parts than the attribute information.
[0205] Also, for example, in the case where the decoding device may decode and display the position information quickly and the attribute information may be decoded and displayed slowly later depending on the content, the division unit 4911 may divide the position information into a larger number of parts than the attribute information. This allows the decoding device to process the position information in parallel in a larger number, so that the position information can be processed faster than the attribute information.
[0206] Note that the decoding device does not necessarily need to process sliced or tiled data in parallel, and may determine whether to process the data in parallel depending on the number or capabilities of the decoding processing units.
[0207] By dividing the image in the above manner, it is possible to realize adaptive encoding according to the content or object. In addition, it is possible to realize parallel processing in the decoding process. This improves the flexibility of the point cloud encoding system or the point cloud decoding system.
[0208] Fig. 25 is a diagram showing an example of a division pattern of slices and tiles. DU in the diagram is a data unit (DataUnit) and indicates data of a tile or slice. Each DU includes a slice index (SliceIndex) and a tile index (TileIndex). The numerical value in the upper right of the DU in the diagram indicates the slice index, and the numerical value in the lower left of the DU indicates the tile index.
[0209] In pattern 1, the number of divisions and the division method are the same for G slices and A slices in slice division. In tile division, the number of divisions and the division method for G slices are different from the number of divisions and the division method for A slices. Furthermore, the same number of divisions and the division method are used among multiple G slices. The same number of divisions and the division method are used among multiple A slices.
[0210] In pattern 2, the number of divisions and the division method are the same for G slices and A slices in slice division. In tile division, the number of divisions and the division method for G slices are different from the number of divisions and the division method for A slices. In addition, the number of divisions and the division method are different between multiple G slices. The number of divisions and the division method are different between multiple A slices.
[0211] Next, a method for encoding divided data will be described. A three-dimensional data encoding device (first encoding unit 4910) encodes each of the divided data. When encoding attribute information, the three-dimensional data encoding device generates dependency information indicating which configuration information (position information, additional information, or other attribute information) was used for encoding as additional information. That is, the dependency information indicates, for example, the configuration information of the reference destination (dependency destination). In this case, the three-dimensional data encoding device generates dependency information based on configuration information corresponding to the division shape of the attribute information. Note that the three-dimensional data encoding device may generate dependency information based on configuration information corresponding to a plurality of division shapes.
[0212] The dependency information may be generated by the three-dimensional data encoding device, and the generated dependency information may be sent to the three-dimensional data decoding device. Alternatively, the three-dimensional data decoding device may generate the dependency information, and the three-dimensional data encoding device may not send the dependency information. 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 send the dependency information.
[0213] Fig. 26 is a diagram showing an example of the dependency relationship of each data. The tip of the arrow in the diagram indicates the dependency destination, and the start of the arrow indicates the dependency source. The three-dimensional data decoding device decodes data in the order from the dependency destination to the dependency source. Also, data shown by solid lines in the diagram is data that is actually sent, and data shown by dotted lines is data that is not sent.
[0214] In the figure, G indicates location information, and A indicates attribute information. s1 indicates the position information of slice number 1, and G s2 indicates the position information of slice number 2. s1t1 indicates the position information of slice number 1 and tile number 1, and G s1t2 indicates the position information of slice number 1 and tile number 2, and G s2t1 indicates the position information of slice number 2 and tile number 1, and G s2t2 indicates the position information of slice number 2 and tile number 2. Similarly, A s1 indicates the attribute information of slice number 1, and A s2 indicates the attribute information of slice number 2. s1t1 indicates the attribute information of slice number 1 and tile number 1, and A s1t2 indicates the attribute information of slice number 1 and tile number 2, and A s2t1 indicates the attribute information of slice number 2 and tile number 1, and A s2t2 indicates attribute information of slice number 2 and tile number 2.
[0215] Mslice indicates slice additional information, MGtile indicates position tile additional information, and MAtile indicates attribute tile additional information. s1t1 is attribute information As1t1 D s2t1 is attribute information A s2t1 This shows dependency information for
[0216] Furthermore, the three-dimensional data encoding device may rearrange the data in the decoding order so that there is no need to rearrange the data in the three-dimensional data decoding device. Note that the data may be rearranged in the three-dimensional data decoding device, or the data may be rearranged in both the three-dimensional data encoding device and the three-dimensional data decoding device.
[0217] Fig. 27 is a diagram showing an example of the data decoding order. In the example of Fig. 27, decoding is performed in order from the left data. When data has a dependency relationship, the three-dimensional data decoding device decodes the dependent data first. For example, the three-dimensional data encoding device rearranges the data in advance so as to achieve this order, and transmits the data. Any order may be used as long as the dependent data comes first. The three-dimensional data encoding device may also transmit additional information and dependency information before the data.
[0218] Fig. 28 is a flowchart showing the flow of processing by the three-dimensional data encoding device. First, the three-dimensional data encoding device encodes data of 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 (S4902), as shown in Fig. 27. Next, the three-dimensional data encoding device multiplexes (NAL unitizes) the rearranged data (S4903).
[0219] Next, a description will be given of the configuration of the combining unit 4925 included in the first decoding unit 4920. Fig. 29 is a block diagram showing the configuration of the combining unit 4925. The combining unit 4925 includes a position information tile combining unit 4941 (geometry tile combiner), an attribute information tile combining unit 4942 (attribute tile combiner), and a slice combining unit (slice combiner).
[0220] The position information tile combining unit 4941 generates a plurality of slice position information pieces by combining a plurality of pieces of divided position information pieces using the position tile additional information. The attribute information tile combining unit 4942 generates a plurality of slice attribute information pieces by combining a plurality of pieces of divided attribute information pieces using the attribute tile additional information.
[0221] The slice combining unit 4943 generates position information by combining a plurality of slice position information pieces using the slice additional information. Also, the slice combining unit 4943 generates attribute information by combining a plurality of slice attribute information pieces using the slice additional information.
[0222] The number of slices or tiles to be divided is equal to or greater than 1. In other words, the division into slices or tiles does not necessarily have to be performed.
[0223] Although an example in which tile division is performed after slice division has been shown here, slice division may be performed after tile division. Furthermore, a new division type may be defined in addition to slices and tiles, and division may be performed using three or more division types.
[0224] Next, a structure of coded data divided into slices or tiles and a method of storing the coded data in NAL units (multiplexing method) will be described. Fig. 30 is a diagram showing a structure of coded data and a method of storing the coded data in NAL units.
[0225] The encoded data (partition position information and partition attribute information) is stored in the payload of the NAL unit.
[0226] The encoded data includes a header and a payload. The header includes identification information for identifying data included in the payload. This identification information includes, for example, a type of slice division or tile division (slice_type, tile_type), index information for identifying a slice or tile (slice_idx, tile_idx), position information of data (slice or tile), or an address of data (address). The index information for identifying a slice is also referred to as a slice index (SliceIndex). The index information for identifying a tile is also referred to as a tile index (TileIndex). The type of division 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 a data amount or a processing amount.
[0227] In addition, all or part of the above information may be stored in one of the headers of the divided position information and the divided 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 division type (slice_type, tile_type) and index information (slice_idx, tile_idx) are the same for the position information and the attribute information. Therefore, 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 that the dependent attribute information belongs to the same slice or tile as the slice or tile of the dependent position information, for example.
[0228] In addition, additional information related to slice division or tile division (slice additional information, position tile additional information, or attribute tile additional information), and dependency information indicating dependency, etc. may be stored in an existing parameter set (GPS, APS, position SPS, attribute SPS, etc.) and transmitted. When the division method changes for each frame, information indicating the division method may be stored in a parameter set for each frame (GPS or APS, etc.). When the division method does not change within a sequence, information indicating the division method may be stored in a parameter set for each sequence (position SPS or attribute SPS). Furthermore, when the same division method is used for position information and attribute information, information indicating the division method may be stored in a parameter set of a PCC stream (stream PS).
[0229] The above information may be stored in any one of the above parameter sets, or in multiple parameter sets. A parameter set for tile division or slice division may be defined, and the above information may be stored in the parameter set. The information may be stored in a header of the encoded data.
[0230] Furthermore, the header of the encoded data includes identification information indicating a dependency relationship. That is, when there is a dependency relationship between data, the header includes identification information for referring to the dependency from the dependency source. For example, the header of the dependency destination data includes identification information for identifying the data. The header of the dependency source data includes identification information indicating the dependency. Note that, when the identification information for identifying the data, the additional information related to the slice division or tile division, and the identification information indicating the dependency relationship can be identified or derived from other information, these pieces of information may be omitted.
[0231] Next, a flow of the encoding process and the 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.
[0232] First, the three-dimensional data encoding device determines the division method to be used (S4911). The division method includes whether or not to perform slice division and whether or not to perform tile division. The division method may also include the number of divisions when performing slice division or tile division, and the type of division. The type of division may be a method based on the object shape as described above, a method based on map information or position information, or a method based on the amount of data or the amount of processing. The division method may be determined in advance.
[0233] When slice division is performed (Yes in S4912), the three-dimensional data encoding device generates a plurality of slice position information and a plurality of slice attribute information by dividing the position information and the attribute information together (S4913). In addition, the three-dimensional data encoding device generates slice additional information related to the slice division. Note that the three-dimensional data encoding device may divide the position information and the attribute information independently.
[0234] If tile division is performed (Yes in S4914), the three-dimensional data encoding device generates a plurality of division position information and a plurality of division attribute information by independently dividing a plurality of slice position information and a plurality of slice attribute information (or position information and attribute information) (S4915). In addition, the three-dimensional data encoding device generates position tile additional information and attribute tile additional information related to the tile division. Note that the three-dimensional data encoding device may divide the slice position information and slice attribute information together.
[0235] Next, the three-dimensional data encoding device generates a plurality of pieces of encoding position information and a plurality of pieces of encoding attribute information by encoding each of the plurality of pieces of division position information and the plurality of pieces of division attribute information (S4916). Also, the three-dimensional data encoding device generates dependency relationship information.
[0236] Next, the three-dimensional data encoding device generates encoded data (encoded stream) by forming (multiplexing) the plurality of pieces of encoding position information, the plurality of pieces of encoding attribute information, and the additional information into NAL units (S4917). In addition, the three-dimensional data encoding device transmits the generated encoded data.
[0237] 32 is a flowchart of a decoding process of point cloud data according to this embodiment. First, the three-dimensional data decoding device analyzes additional information (slice additional information, position tile additional information, and attribute tile additional information) related to the division method included in the encoded data (encoded stream) to determine the division method (S4921). This division method includes whether or not to perform slice division and whether or not to perform tile division. In addition, the division method may include the number of divisions when performing slice division or tile division, the type of division, etc.
[0238] Next, the three-dimensional data decoding device generates split position information and split attribute information by decoding the multiple pieces of encoded position information and multiple pieces of encoded attribute information contained in the encoded data using dependency information contained in the encoded data (S4922).
[0239] When the additional information indicates that tile division has been performed (Yes in S4923), the three-dimensional data decoding device generates a plurality of slice position information and a plurality of slice attribute information by combining a plurality of pieces of division position information and a plurality of pieces of division attribute information by respective methods based on the position tile additional information and the attribute tile additional information (S4924). Note that the three-dimensional data decoding device may combine a plurality of pieces of division position information and a plurality of pieces of division attribute information by the same method.
[0240] When the additional information indicates that slice division has been performed (Yes in S4925), the three-dimensional data decoding device generates position information and attribute information by combining multiple slice position information and multiple slice attribute information (multiple division position information and multiple division attribute information) in the same manner based on the slice additional information (S4926). Note that the three-dimensional data decoding device may combine multiple slice position information and multiple slice attribute information in different manners.
[0241] As described above, the three-dimensional data encoding device according to this embodiment performs the process shown in FIG. 33. First, the three-dimensional data encoding device divides a target space including a plurality of three-dimensional points into a plurality of divided data (e.g., tiles) each of which is included in a plurality of subspaces (e.g., slices) and includes one or more three-dimensional points. Here, the divided data is one or more data aggregates included in the subspace and includes one or more three-dimensional points. The divided data may also be a space, and may include a space that does not include a three-dimensional point. Furthermore, one subspace may include a plurality of divided data, or one subspace may include one divided data. Note that a plurality of subspaces may be set in the target space, or one subspace may be set in the target space.
[0242] 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 (e.g., 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 (e.g., slice_idx) indicating a subspace corresponding to the encoded data corresponding to the control information, and a second identifier (e.g., tile_idx) indicating divided data corresponding to the encoded data corresponding to the control information.
[0243] According to this, a three-dimensional data decoding device that decodes a bit stream generated by a three-dimensional data encoding device can easily restore a target space by combining data of a plurality of divided data using the first identifier and the second identifier, thereby reducing the amount of processing in the three-dimensional data decoding device.
[0244] For example, the three-dimensional data encoding device encodes position information and attribute information of a three-dimensional point included in each of the plurality of divided data. Each of the plurality of encoded data includes encoded data of the position information and encoded data of the attribute information. Each of the plurality of control information includes control information of the encoded data of the position information and 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.
[0245] For example, in a bitstream, each of the multiple pieces of control information is placed before the coded data corresponding to that control information.
[0246] In addition, a three-dimensional data encoding device may be configured such that a target space including a plurality of three-dimensional points is set to one or more subspaces, the subspace includes one or more divided data including one or more three-dimensional points, and each of the divided data is encoded to generate a plurality of encoded data corresponding to each of the plurality of divided data, and generate a bit stream including the plurality of encoded data and a plurality of control information for each of the plurality of encoded data, and each of the plurality of control information stores a first identifier indicating a 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.
[0247] For example, the three-dimensional data encoding device includes a processor and a memory, and the processor uses the memory to perform the above-mentioned processing.
[0248] Moreover, the three-dimensional data decoding device according to the present embodiment performs the process shown in FIG. 34. First, the three-dimensional data decoding device obtains a first identifier (e.g., slice_idx) indicating a subspace corresponding to the coded data corresponding to the control information and a second identifier (e.g., tile_idx) indicating the divided data corresponding to the coded data corresponding to the control information, which are stored in the plurality of control information, from a bit stream including a plurality of coded data generated by coding each of a plurality of divided data (e.g., tiles) each including one or more three-dimensional points and included in a plurality of subspaces (e.g., slices) into which a target space including a plurality of three-dimensional points is divided (S4941). Next, the three-dimensional data decoding device restores a plurality of divided data by decoding the plurality of coded data (S4942). Next, the three-dimensional data decoding device 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 device restores a plurality of subspaces by combining a plurality of divided data using the second identifier, and restores a target space (a plurality of three-dimensional points) by combining a plurality of subspaces using the first identifier. Note that the three-dimensional data decoding device may obtain coded data of a desired subspace or divided data from a bit stream using at least one of the first identifier and the second identifier, and selectively decode or preferentially decode the obtained coded data.
[0249] According to this, the three-dimensional data decoding device can easily restore the target space by combining the data of the multiple divided data using the first identifier and the second identifier, thereby reducing the amount of processing in the three-dimensional data decoding device.
[0250] For example, each of the plurality of coded data is generated by coding position information and attribute information of a three-dimensional point included in the corresponding divided data, and includes coded data of the position information and coded data of the attribute information. Each of the plurality of control information includes control information of the coded data of the position information and control information of the coded data of the attribute information. The first identifier and the second identifier are stored in the control information of the coded data of the position information.
[0251] For example, in the bitstream, the control information is placed before the corresponding encoded data.
[0252] For example, the three-dimensional data decoding device includes a processor and a memory, and the processor uses the memory to perform the above-mentioned processing.
[0253] (Embodiment 5) In position information encoding using adjacent dependency, the higher the density of the point cloud, the more likely it is that the encoding efficiency will improve. In this embodiment, the three-dimensional data encoding device combines the point cloud data of consecutive frames, thereby collectively encoding the point cloud data of consecutive frames. At this time, the three-dimensional data encoding device generates encoded data that includes information for identifying the frame to which each of the leaf nodes included in the combined point cloud data belongs.
[0254] Here, the point cloud data of successive frames is likely to be similar, so the higher level of the occupancy code is likely to be the same in successive frames. In other words, by encoding successive frames together, the higher level of the occupancy code can be shared.
[0255] Also, the distinction as to which frame a point cloud belongs is made in the leaf node by encoding the frame index.
[0256] 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 inside the arrows indicate points belonging to each PCC frame. First, a frame index for identifying the frame is assigned to each point belonging to each PCC frame.
[0257] Next, the points belonging to the N frames are converted into a tree structure, and an occupancy code is generated. Specifically, for each point, it is determined which leaf node in the tree structure the point belongs to. In the figure, the tree structure shows a set of nodes. Starting from the top node, it is determined which node the point belongs to. The determination result for each node is encoded as an occupancy code. The occupancy code is common to the N frames.
[0258] A node may contain points from different frames with different frame indices. If the resolution of the octree is small, points from the same frame with the same frame index may also exist.
[0259] In the lowest level nodes (leaf nodes), points belonging to multiple frames may be mixed (duplicated).
[0260] In the case of tree structures and occupancy codes, the higher level tree structures and occupancy codes may be common components in all frames, while the lower level tree structures and occupancy codes may be individual components for each frame, or a mixture of common and individual components.
[0261] For example, in the lowest level nodes such as leaf nodes, zero or more points with frame indexes are generated, and information indicating the number of points and frame index information for each point are generated. This information can also be said to be individual information in a frame.
[0262] Fig. 36 is a diagram showing an example of frame merging. As shown in Fig. 36(a), by merging multiple frames to generate a tree structure, the density of frame points included in the same node increases. Also, by sharing the tree structure, the amount of data in the occupancy code can be reduced. These features have the potential to improve the coding rate.
[0263] Furthermore, as shown in FIG. 36(b), the individual components of the occupancy code in the tree structure become denser, which enhances the effect of arithmetic coding, and therefore may improve the coding rate.
[0264] Hereinafter, the combination of multiple PCC frames that are different in time will be described as an example, but it can also be applied to cases where there are not multiple frames, that is, when frames are not combined (N=1). In addition, the multiple point cloud data to be combined is not limited to multiple frames, that is, point cloud data of the same object at different times. In other words, the following method can also be applied to the combination of multiple point cloud data that are different spatially or spatiotemporally. In addition, the following method can also be applied to the combination of point cloud data or point cloud files with different contents.
[0265] Fig. 37 is a diagram showing an example of combining multiple PCC frames that are different in time. Fig. 37 shows an example of acquiring point cloud data using a sensor such as LiDAR while a car is moving. The dotted lines show the sensor acquisition range for each frame, that is, the area of the point cloud data. If the sensor acquisition range is large, the range of the point cloud data will also be large.
[0266] The method of combining and encoding point cloud data is effective for point cloud data such as the following: For example, in the example shown in Fig. 37, the car is moving and frames are identified by a 360° scan around the car, i.e., the next frame, frame 2, corresponds to another 360° scan after the vehicle has moved in the X direction.
[0267] In this case, there is a possibility that frame 1 and frame 2 contain the same point cloud data because there are overlapping areas. Therefore, there is a possibility that encoding efficiency can be improved by combining and encoding frame 1 and frame 2. It is also possible to combine more frames. However, if the number of frames to be combined is increased, the number of bits required for encoding the frame index added to the leaf node increases.
[0268] Also, point cloud data may be acquired by sensors at different positions. Thus, each point cloud data acquired from each position may be used as a frame. That is, the multiple frames may be point cloud data acquired by a single sensor, or may be point cloud data acquired by multiple sensors. Also, some or all of the objects may be the same or different between the multiple frames.
[0269] Next, a flow of the three-dimensional data encoding process according to this embodiment will be described. Fig. 38 is a flowchart of the three-dimensional data encoding process. The three-dimensional data encoding device reads point cloud data of all N frames based on the number of combination frames N, which is the number of frames to be combined.
[0270] First, the three-dimensional data encoding device determines the number of combined frames N (S5401). For example, this number of combined frames N is designated by the user.
[0271] Next, the three-dimensional data encoding device acquires point cloud data (S5402) and records the frame index of the acquired point cloud data (S5403).
[0272] If N frames have not been processed (No in S5404), the three-dimensional data encoding device specifies the next point cloud data (S5405), and performs the processes in steps S5402 and after on the specified point cloud data.
[0273] On the other hand, if N frames have already been processed (Yes in S5404), the three-dimensional data encoding device combines the N frames and encodes the combined frame (S5406).
[0274] 39 is a flowchart of the encoding process (S5406). First, the three-dimensional data encoding device generates common information common to N frames (S5411). For example, the common information includes an occupancy code and information indicating the number N of combined frames.
[0275] 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.
[0276] Next, the three-dimensional data encoding device combines the common information and the individual information, and generates encoded data by encoding the combined information (S5413). Next, the three-dimensional data encoding device generates additional information (metadata) related to the frame combination, and encodes the generated additional information (S5414).
[0277] Next, the flow of the three-dimensional data decoding process according to this embodiment will be described with reference to Fig. 40, which is a flowchart of the three-dimensional data decoding process.
[0278] First, the three-dimensional data decoding device obtains the number of combined frames N from the bit stream (S5421). Next, the three-dimensional data encoding device obtains encoded data from the bit stream (S5422). Next, the three-dimensional data decoding device obtains point cloud data and frame indexes by decoding the encoded data (S5423). Finally, the three-dimensional data decoding device divides the decoded point cloud data using the frame indexes (S5424).
[0279] 41 is a flowchart of the decoding and division process (S5423 and S5424). First, the three-dimensional data decoding device decodes (obtains) the common information and individual information from the encoded data (bit stream) (S5431).
[0280] Next, the three-dimensional data decoding device determines whether to decode a single frame or multiple frames (S5432). For example, whether to decode a single frame or multiple frames may be specified from the outside. Here, the multiple frames may be all of the combined frames or a part of the frames. For example, the three-dimensional data decoding device may determine to decode a specific frame required by an application and not to decode an unnecessary frame. Alternatively, when real-time decoding is required, the three-dimensional data decoding device may determine to decode a single frame of the combined multiple frames.
[0281] When decoding a single frame (Yes in S5432), the three-dimensional data decoding device extracts individual information corresponding to the specified single frame index from the decoded individual information, and decodes the extracted individual information to restore the point cloud data of the frame corresponding to the specified frame index (S5433).
[0282] On the other hand, when decoding multiple frames (No in S5432), the three-dimensional data decoding device extracts individual information corresponding to the frame indexes of the specified multiple frames (or all frames) and decodes the extracted individual information to restore the point cloud data of the specified multiple frames (S5434). Next, the three-dimensional data decoding device divides the decoded point cloud data (individual information) based on the frame index (S5435). In other words, the three-dimensional data decoding device divides the decoded point cloud data into multiple frames.
[0283] The three-dimensional data decoding device may decode data of all the combined frames at once and divide the decoded data into each frame, or may decode an arbitrary part of all the combined frames at once and divide the decoded data into each frame. The three-dimensional data decoding device may also independently decode a predetermined unit frame consisting of multiple frames.
[0284] The configuration of the three-dimensional data encoding device according to this embodiment will be described below. Fig. 42 is a block diagram showing the configuration of an encoding unit 5410 included in the three-dimensional data encoding device according to this embodiment. The encoding unit 5410 generates encoded data (encoded stream) by encoding point group data (point cloud). This encoding unit 5410 includes a division unit 5411, a plurality of position information encoding units 5412, a plurality of attribute information encoding units 5413, an additional information encoding unit 5414, and a multiplexing unit 5415.
[0285] The dividing unit 5411 divides the point cloud data of the multiple frames to generate multiple divided data of the multiple frames. Specifically, the dividing unit 5411 divides the space of the point cloud data of each frame into multiple subspaces to generate multiple divided data. Here, the subspace is one of tiles and slices, or a combination of tiles and slices. More specifically, the point cloud data includes position information, attribute information (color, reflectance, etc.), and additional information. In addition, the dividing unit 5411 receives a frame number. The dividing unit 5411 divides the position information of each frame into multiple divided position information, and divides the attribute information of each frame into multiple divided attribute information. In addition, the dividing unit 5411 generates additional information related to the division.
[0286] For example, the dividing unit 5411 first divides the point cloud into tiles, and then further divides the obtained tiles into slices.
[0287] The position information encoding units 5412 generate multiple pieces of encoded position information by encoding the multiple pieces 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 octet tree. Specifically, in the octet tree, the target space is divided into eight nodes (subspaces), and 8-bit information (occupancy code) indicating whether or not a point group is included in each node is generated. In addition, the node including the 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 the number of point groups included in a predetermined hierarchy or node is equal to or less than a threshold value. For example, the position information encoding units 5412 process the multiple pieces of divided position information in parallel.
[0288] The attribute information encoding unit 4632 generates encoded attribute information, which is encoded data, by encoding using the configuration information generated by the position information encoding unit 4631. For example, the attribute information encoding unit 4632 determines a reference point (reference node) to be referenced in encoding a target point (target node) to be processed, based on the octree structure generated by the position information encoding unit 4631. For example, the attribute information encoding unit 4632 refers to a node, among peripheral nodes or adjacent nodes, whose parent node in the octree is the same as that of the target node. Note that the method of determining the reference relationship is not limited to this.
[0289] Furthermore, the encoding process of the position information or attribute information may include at least one of a quantization process, a prediction process, and an arithmetic coding process. In this case, the reference means using a reference node to calculate a predicted value of the attribute information, or using a state of the reference node (e.g., occupancy information indicating whether or not a point group is included in the reference node) to determine an encoding parameter. For example, the encoding parameter is a quantization parameter in a quantization process, or a context in an arithmetic coding process.
[0290] The attribute information encoding units 5413 generate a plurality of pieces of encoded attribute information by encoding the plurality of pieces of divided attribute information. For example, the attribute information encoding units 5413 process the plurality of pieces of divided attribute information in parallel.
[0291] The additional information encoding unit 5414 generates encoded additional information by encoding the additional information included in the point cloud data and the additional information related to the data division generated by the division unit 5411 at the time of division.
[0292] The multiplexing unit 5415 multiplexes a plurality of pieces of encoding position information, a plurality of pieces of encoding attribute information, and a plurality of pieces of encoding additional information for a plurality of frames to generate encoded data (encoded stream), and transmits the generated encoded data. In addition, the encoded additional information is used during decoding.
[0293] 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.
[0294] The tile division unit 5421 generates multiple pieces of tile position information by dividing each of the position information (Position (Geometry)) of multiple frames into tiles. The tile division unit 5421 also generates multiple pieces of tile attribute information by dividing each of the attribute information (Attribute) of multiple frames into tiles. The tile division unit 5421 also outputs tile additional information (Tile MetaData) including information related to the tile division and information generated in the tile division.
[0295] The slice division unit 5422 generates a plurality of pieces of division position information (a plurality of pieces of slice position information) by dividing a plurality of pieces of tile position information into slices. The slice division unit 5422 also generates a plurality of pieces of division attribute information (a plurality of pieces of slice attribute information) by dividing a plurality of pieces of tile attribute information into slices. The slice division unit 5422 also outputs slice additional information (Slice MetaData) including information related to the slice division and information generated in the slice division.
[0296] Furthermore, in the division process, the division unit 5411 uses a frame number (frame index) to indicate the origin coordinates, attribute information, and the like.
[0297] 44 is a block diagram of the positional information encoding unit 5412. The positional information encoding unit 5412 includes a frame index generation unit 5431 and an entropy encoding unit 5432.
[0298] The frame index generating unit 5431 determines a frame index value based on the frame number and adds the determined frame index to the position information. The entropy coding unit 5432 generates coding position information by entropy coding the division position information to which the frame index is added.
[0299] 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.
[0300] The frame index generating unit 5441 determines a frame index value based on the frame number and adds the determined frame index to the attribute information. The entropy coding unit 5442 generates coded attribute information by entropy coding the divided attribute information to which the frame index has been added.
[0301] Next, a flow of the encoding process and the decoding process of the point cloud data according to this embodiment will be described. Fig. 46 is a flowchart of the encoding process of the point cloud data according to this embodiment.
[0302] First, the three-dimensional data encoding device determines a division method to be used (S5441). The division method includes whether or not to perform division into slices and whether or not to perform division into tiles. The division method may also include the number of divisions when dividing into slices or tiles, the type of division, and the like.
[0303] If tile division is performed (Yes in S5442), the three-dimensional data encoding device divides the position information and the attribute information to generate a plurality of pieces of tile position information and a plurality of pieces of tile attribute information (S5443). In addition, the three-dimensional data encoding device generates tile additional information related to the tile division.
[0304] When slice division is performed (Yes in S5444), the three-dimensional data encoding device divides the plurality of tile position information and the plurality of tile attribute information (or the position information and the attribute information) to generate a plurality of division position information and a plurality of division attribute information (S5445). In addition, the three-dimensional data encoding device generates slice additional information related to the slice division.
[0305] Next, the three-dimensional data encoding device generates a plurality of pieces of encoding position information and a plurality of pieces of encoding attribute information by encoding each of the plurality of pieces of division position information and the plurality of pieces of division attribute information with a frame index (S5446). Also, the three-dimensional data encoding device generates dependency relationship information.
[0306] Next, the three-dimensional data encoding device generates encoded data (encoded stream) by forming (multiplexing) the plurality of pieces of encoding position information, the plurality of pieces of encoding attribute information, and the additional information into NAL units (S5447). In addition, the three-dimensional data encoding device transmits the generated encoded data.
[0307] 47 is a flowchart of the encoding process (S5446). First, the three-dimensional data encoding device encodes division position information (S5451). Next, the three-dimensional data encoding device encodes a frame index for the division position information (S5452).
[0308] If division attribute information exists (Yes in S5453), the three-dimensional data encoding device encodes the division attribute information (S5454), and encodes the frame index for the division attribute information (S5455). On the other hand, if division attribute information does not exist (No in S5453), the three-dimensional data encoding device does not encode the division attribute information or the frame index for the division attribute information. Note that the frame index may be stored in either or both of the division position information and the division attribute information.
[0309] The three-dimensional data encoding device may encode the attribute information using a frame index, or may encode the attribute information without using a frame index. In other words, the three-dimensional data encoding device may use a frame index to identify the frame to which each point belongs and encode the data for each frame, or may encode the points that belong to all frames without identifying the frame.
[0310] The configuration of the three-dimensional data decoding device according to this embodiment will be described below. Fig. 48 is a block diagram showing the configuration of a decoding unit 5450. The decoding unit 5450 restores the point cloud data by decoding coded data (coded stream) generated by coding the point cloud data. 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.
[0311] The demultiplexing unit 5451 demultiplexes the coded data (coded stream) to generate a plurality of pieces of coding position information, a plurality of pieces of coding attribute information, and coded additional information.
[0312] The position information decoding units 5452 generate a plurality of pieces of divided position information by decoding the plurality of pieces of encoded position information. For example, the position information decoding units 5452 process the plurality of pieces of encoded position information in parallel.
[0313] The multiple attribute information decoding units 5453 generate multiple pieces of divided attribute information by decoding the multiple pieces of encoded attribute information. For example, the multiple attribute information decoding units 5453 process the multiple pieces of encoded attribute information in parallel.
[0314] The multiple additional information decoding units 5454 generate additional information by decoding the encoded additional information.
[0315] The combining unit 5455 generates position information by combining a plurality of pieces of divided position information using the additional information. The combining unit 5455 generates attribute information by combining a plurality of pieces of divided attribute information using the additional information. The combining unit 5455 also divides the position information and attribute information into position information of a plurality of frames and attribute information of a plurality of frames using a frame index.
[0316] 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 division position information by entropy decoding the encoded position information. The frame index acquisition unit 5462 acquires a frame index from the division position information.
[0317] 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.
[0318] 51 is a diagram showing a configuration of the combining unit 5455. The combining unit 5455 generates position information by combining multiple pieces of divided position information. The combining unit 5455 generates attribute information by combining multiple pieces of divided attribute information. The combining unit 5455 also divides the position information and attribute information into position information of multiple frames and attribute information of multiple frames using a frame index.
[0319] 52 is a flowchart of a decoding process of point cloud data according to this embodiment. First, the three-dimensional data decoding device determines the division method by analyzing additional information (slice additional information and tile additional information) related to the division method included in the encoded data (encoded stream) (S5461). This division method includes whether or not to perform slice division and whether or not to perform tile division. In addition, the division method may include the number of divisions when performing slice division or tile division, the type of division, and the like.
[0320] Next, the three-dimensional data decoding device generates split position information and split attribute information by decoding the multiple pieces of encoded position information and multiple pieces of encoded attribute information contained in the encoded data using dependency information contained in the encoded data (S5462).
[0321] When the additional information indicates that slice division has been performed (Yes in S5463), the 3D data decoding device generates multiple pieces of tile position information by combining multiple pieces of division position information based on the slice additional information, and generates multiple pieces of tile attribute information by combining multiple pieces of division attribute information (S5464). Here, the multiple pieces of division position information, the multiple pieces of division attribute information, the multiple pieces of tile position information, and the multiple pieces of tile attribute information each include a frame index.
[0322] If the additional information indicates that tile division has been performed (Yes in S5465), the 3D data decoding device generates position information by combining multiple pieces of tile position information (multiple pieces of division position information) based on the tile additional information, and generates attribute information by combining multiple pieces of tile attribute information (multiple pieces of division attribute information) (S5466). Here, the multiple pieces of tile position information, the multiple pieces of tile attribute information, the position information, and the attribute information include a frame index.
[0323] 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 a frame index for the division position information (S5472).
[0324] If the split attribute information exists (Yes in S5473), the three-dimensional data decoding device decodes the split attribute information (S5474) and decodes the frame index for the split attribute information (S5475). On the other hand, if the split attribute information does not exist (No in S5473), the three-dimensional data decoding device does not decode the split attribute information or the frame index for the split attribute information.
[0325] The three-dimensional data decoding device may decode the attribute information using a frame index, or may decode the attribute information without using a frame index.
[0326] The coding unit in frame splicing will be described below. Fig. 54 is a diagram showing an example of a frame splicing pattern. The example in the figure shows a case where, for example, PCC frames are in a time series and data generation and encoding are performed in real time.
[0327] 54(a) shows a case where four frames are fixedly joined together, and the three-dimensional data encoding device waits for four frames of data to be generated before generating encoded data.
[0328] 54(b) shows a case where the number of frames changes adaptively. For example, a three-dimensional data encoding device changes the number of combined frames to adjust the amount of encoded data in rate control.
[0329] In addition, the three-dimensional data encoding device may not combine frames when there is a possibility that frame combining will have no effect. Also, the three-dimensional data encoding device may switch between combining frames and not combining frames.
[0330] Figure 54 (c) shows an example of a case where a part of the multiple frames to be combined overlaps with a part of the multiple frames to be combined next. This example is useful when real-time or low delay is required, such as sequential transmission of encoded data.
[0331] Figure 55 is a diagram showing an example of the structure of a PCC frame. The three-dimensional data encoding device may configure the frames to be combined to include at least a data unit that can be decoded independently. For example, as shown in (a) of Figure 55, when all PCC frames are intra-coded and can be decoded independently, any of the above patterns can be applied.
[0332] Also, as shown in (b) of Figure 55, when inter prediction is applied and a random access unit such as GOF (group of frames) is set, the three-dimensional data encoding device may combine data using the GOF unit as the smallest unit.
[0333] The three-dimensional data encoding device may encode the common information and the individual information together, or may encode each of them separately. Furthermore, the three-dimensional data encoding device may use a common data structure for the common information and the individual information, or may use different data structures.
[0334] Furthermore, the three-dimensional data encoding device may generate an occupancy code for each frame, and then compare the occupancy codes of the multiple frames, for example, determine whether there are many common parts between the occupancy codes of the multiple frames based on a predetermined criterion, and generate common information if there are many common parts. Alternatively, the three-dimensional data encoding device may determine whether to combine frames, which frames to combine, or the number of frames to combine, based on whether there are many common parts.
[0335] Next, the structure of the encoded position information will be described. Fig. 56 is a diagram showing the structure of the encoded position information. The encoded position information includes a header and a payload.
[0336] 57 is a diagram illustrating an example of the syntax of a header (Geometry_header) of encoded position information. The header of encoded position information includes a GPS index (gps_idx), offset information (offset), other information (other_geometry_information), a frame combination flag (combine_frame_flag), and the number of combined frames (number_of_combine_frame).
[0337] The GPS index indicates the identifier (ID) of the parameter set (GPS) corresponding to the encoded position information. The GPS is a parameter set of the encoded position information of one frame or multiple frames. If a parameter set exists for each frame, the identifiers of multiple parameter sets may be indicated in the header.
[0338] The offset information indicates an offset position for acquiring the combined data. The other information indicates other information related to the position information (e.g., a difference value of a quantization parameter (QPdelta) or the like). The frame combination flag is a flag indicating whether or not the encoded data is frame combined. The number of combined frames indicates the number of combined frames.
[0339] Some or all of the above information may be described in the SPS or GPS. The SPS is a parameter set for each sequence (multiple frames) and is used in common for the coded position information and the coded attribute information.
[0340] 58 is a diagram illustrating an example of the syntax of the payload (Geometry_data) of the encoded position information. The payload of the encoded position information includes common information and leaf node information.
[0341] The common information is data combined into one or more frames, and includes an occupancy code (occupancy_code) and the like.
[0342] Leaf node information (combine_information) is information about each leaf node. Leaf node information may be indicated for each frame as a loop of the number of frames.
[0343] As a method for indicating the frame index of a point included in a leaf node, either method 1 or method 2 can be used. Fig. 59 is a diagram showing an example of leaf node information in the case of method 1. The leaf node information shown in Fig. 59 includes the number of three-dimensional points (NumberOfPoints) indicating the number of points included in the node, and a frame index (FrameIndex) for each point.
[0344] 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) that indicates frame indexes of multiple points using a bitmap. Fig. 61 is a diagram showing an example of bitmap information. In this example, the bitmap indicates that the leaf node includes 3D points with frame indexes 1, 3, and 5.
[0345] In addition, when the quantization resolution is low, there may be duplicated points in the same frame. In this case, the number of 3D points (NumberOfPoints) may be shared, and the number of 3D points in each frame and the total number of 3D points in multiple frames may be indicated.
[0346] Furthermore, when lossy compression is used, the three-dimensional data encoding device may delete duplicate points to reduce the amount of information. The three-dimensional data encoding device may delete duplicate points before combining frames, or may delete duplicate points after combining frames.
[0347] Next, the structure of the encoded attribute information will be described. Fig. 62 is a diagram showing the structure of the encoded attribute information. The encoded attribute information includes a header and a payload.
[0348] 63 is a diagram illustrating an example of the syntax of the header (Attribute_header) of the encoding attribute information. The header of the encoding attribute information includes an APS index (aps_idx), offset information (offset), other information (other_attribute_information), a frame combination flag (combine_frame_flag), and the number of combined frames (number_of_combine_frame).
[0349] The APS index indicates the identifier (ID) of a parameter set (APS) corresponding to the coding attribute information. An APS is a parameter set of coding attribute information for one frame or multiple frames. If a parameter set exists for each frame, identifiers of multiple parameter sets may be indicated in the header.
[0350] The offset information indicates an offset position for acquiring the combined data. The other information indicates other information related to the attribute information (e.g., a difference value of a quantization parameter (QPdelta)). The frame combination flag is a flag indicating whether or not the encoded data is frame combined. The number of combined frames indicates the number of combined frames.
[0351] Some or all of the above information may be included in the SPS or APS.
[0352] 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 encoded position information. In other words, the leaf node information (frame index) may be included in the attribute information.
[0353] Also, the leaf node information (frame index) may be stored in either the encoding position information or the encoding attribute information, and not in the other. In this case, the leaf node information (frame index) stored in either the encoding position information or the encoding attribute information is referenced when the other information is decoded. Also, information indicating the reference destination may be included in the encoding position information or the encoding attribute information.
[0354] Next, an example of the transmission order and decoding order of the coded data will be described. Fig. 65 is a diagram showing the structure of the coded data. The coded data includes a header and a payload.
[0355] 66 to 68 are diagrams showing the data transmission order and the data reference relationship. In the diagrams, G(1) etc. indicate encoding position information, GPS(1) etc. indicate a parameter set for encoding position information, and SPS indicates a parameter set for a sequence (multiple frames). Numbers in parentheses indicate frame index values. The three-dimensional data encoding device may transmit data in the decoding order.
[0356] Fig. 66 is a diagram showing an example of a transmission order when frames are not combined. Fig. 67 is a diagram showing an example when frames are combined and metadata (parameter set) is added to each PCC frame. Fig. 68 is a diagram showing an example when frames are combined and metadata (parameter set) is added to each combination unit.
[0357] The header of the frame-combined data stores the identifier of the metadata to be referenced in order to obtain the metadata of the frame. As shown in Figure 68, metadata for multiple frames may be combined. Parameters common to multiple frames that are combined may be combined into one. Parameters that are not common to the frames indicate values for each frame.
[0358] The information for each frame (parameters that are not common to all frames) is, for example, a timestamp indicating the generation time, encoding time, or decoding time of the frame data, etc. The information for each frame may also include information about the sensor that acquired the frame data (sensor speed, acceleration, position information, sensor orientation, other sensor information, etc.).
[0359] Fig. 69 is a diagram showing an example of decoding some of the frames in the example shown in Fig. 67. As shown in Fig. 69, if there is no dependency between frames in the frame spliced data, the three-dimensional data decoding device can decode each data independently.
[0360] When the point cloud data has attribute information, the three-dimensional data encoding device may frame-combine the attribute information. The attribute information is encoded and decoded with reference to position information. The position information referred to may be the position information before frame-combine, or may be the position information after frame-combine. The number of combined frames of the position information and the number of combined frames of the attribute information may be the same or may be independent (different).
[0361] Fig. 70 to Fig. 73 are diagrams showing the data transmission order and the data reference relationship. Fig. 70 and Fig. 71 show an example in which position information and attribute information are both combined in four frames. In Fig. 70, metadata (parameter set) is added for each PCC frame. In Fig. 71, metadata (parameter set) is added for each combination unit. In the figures, A(1) etc. indicate encoded attribute information, and APS(1) etc. indicate a parameter set for the encoded attribute information. Also, the numbers in parentheses indicate frame index values.
[0362] Fig. 72 shows an example in which position information is combined in four frames, and attribute information is not combined. As shown in Fig. 72, position information may be combined in frames, but attribute information may not be combined in frames.
[0363] Fig. 73 shows an example of a combination of frame combining 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). In addition, the header of each tile position information includes a tile index (tile_idx) for identifying the tile.
[0364] As described above, the three-dimensional data encoding device according to this embodiment performs the process 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). In addition, the encoded data includes identification information (e.g., a frame index) indicating whether each of the multiple three-dimensional points included in the third point cloud data belongs to the first point cloud data or the second point cloud data.
[0365] According to this, the three-dimensional data encoding device can improve encoding efficiency by collectively encoding a plurality of point group data.
[0366] For example, the first point cloud data and the second point cloud data are point cloud data (e.g., PCC frames) at different times. For example, the first point cloud data and the second point cloud data are point cloud data (e.g., PCC frames) of the same object at different times.
[0367] The encoded data includes position information and attribute information of each of the multiple three-dimensional points included in the third point cloud data, and the identification information is included in the attribute information.
[0368] For example, the encoded data includes position information (eg, occupancy code) that expresses the positions of each of a plurality of three-dimensional points included in the third point cloud data using an N-ary tree (N is an integer equal to or greater than 2).
[0369] For example, the three-dimensional data encoding device includes a processor and a memory, and the processor uses the memory to perform the above-mentioned processing.
[0370] Moreover, the three-dimensional data decoding device according to this embodiment performs the process shown in Fig. 75. First, the three-dimensional data decoding device decodes the encoded data to obtain third point cloud data generated by combining the first point cloud data and the second point cloud data, and identification information indicating whether each of the multiple three-dimensional points included in the third point cloud data belongs to the first point cloud data or the second point cloud data (S5491). Next, the three-dimensional data decoding device separates the first point cloud data and the second point cloud data from the third point cloud data using the identification information (S5492).
[0371] According to this, the three-dimensional data decoding device can decode coded data with improved coding efficiency by collectively coding a plurality of point cloud data.
[0372] For example, the first point cloud data and the second point cloud data are point cloud data (e.g., PCC frames) at different times. For example, the first point cloud data and the second point cloud data are point cloud data (e.g., PCC frames) of the same object at different times.
[0373] The encoded data includes position information and attribute information of each of the multiple three-dimensional points included in the third point cloud data, and the identification information is included in the attribute information.
[0374] For example, the encoded data includes position information (eg, occupancy code) that expresses the positions of each of a plurality of three-dimensional points included in the third point cloud data using an N-ary tree (N is an integer equal to or greater than 2).
[0375] For example, the three-dimensional data decoding device includes a processor and a memory, and the processor uses the memory to perform the above-mentioned processing.
[0376] (Embodiment 6) As a method of quantizing 3D points when combining frames, there are a method of applying quantization before combining frames and a method of applying quantization after combining frames.
[0377] First, an example of a procedure for performing quantization before frame splicing will be described. Fig. 76 is a diagram showing an example of a procedure for performing quantization before frame splicing.
[0378] The three-dimensional data encoding device quantizes the position information of the three-dimensional point in each frame using the quantization parameter. For example, the three-dimensional data encoding device quantizes the position information (x, y, z) using the quantization value qs to generate (x / qs, y / qs, z / qs) as the quantized position information.
[0379] Here, there are cases where multiple three-dimensional points with the same position information after quantization are generated by quantization. The three-dimensional data encoding device may determine that the position information is the same when the distance between the three-dimensional points is less than a predetermined distance. In this case, the three-dimensional data encoding device may merge multiple three-dimensional points with the same position information. For example, when the position information of point A and point B becomes the same value or the distance between point A and point B becomes less than a predetermined distance due to quantization, the three-dimensional data encoding device may merge point A and point B into point A or point B.
[0380] In addition, when merging points A and B, if points A and B have attribute information, the average value of the attribute information of point A and the attribute information of point B may be used as the attribute information after merging. Also, either the attribute information of point A or the attribute information of point B may be assigned to the point after merging. By applying merging after quantization in this way, the number of three-dimensional points can be reduced. This allows the overall data amount of encoded data to be reduced.
[0381] Next, the three-dimensional data encoding device combines the three-dimensional points of each frame after quantization and merging to generate a three-dimensional point after frame combination. At this time, the three-dimensional data encoding device adds frame number information indicating the frame number before combination to each three-dimensional point. Then, the three-dimensional data encoding device applies frame combination encoding to the three-dimensional point after frame combination.
[0382] The three-dimensional data encoding device may encode frame number information (e.g., frame index) as attribute information of each three-dimensional point. This allows the three-dimensional data encoding device to appropriately add frame number information to the three-dimensional points after frame splicing before encoding. Therefore, after decoding the frame-spliced bit stream, the three-dimensional data decoding device can obtain the frame number of the frame to which each three-dimensional point belongs, and divide the combined frame into multiple frames before frame splicing.
[0383] Next, an example of the syntax of the coded data (bit stream) will be described. Fig. 77 is a diagram showing an example of the syntax of an SPS, which is a parameter set in sequence units (multiple frames). The SPS shown in Fig. 77 includes a frame combining application flag (combine_coding_enable_flag).
[0384] The frame combining application flag (combine_coding_enable_flag) is a flag for switching whether or not to apply frame combining at the sequence level. For example, a value of 1 indicates that frame combining is applied, and a value of 0 indicates that frame combining is not applied. For example, the three-dimensional data encoding device sets the frame combining application flag to a value of 1 when there is a possibility that frame combining is applied within a sequence, and sets the frame combining application flag to a value of 0 when frame combining is not applied. Note that the three-dimensional data encoding device may add the combining application flag to a header other than the SPS, etc.
[0385] Fig. 78 is a diagram showing an example of syntax of GPS, which is a parameter set of position information in units of frames. The GPS shown in Fig. 78 includes single point information (single_point_per_leaf) and the number of combined frames minus 1 (NumberOfCombineFrame_minus1).
[0386] The single point information (single_point_per_leaf) indicates whether each leaf node of the octree contains one point (or multiple points). For example, a value of 1 indicates that each leaf node has one point, and a value of 0 indicates that each leaf node has one or more points.
[0387] The three-dimensional data encoding device may specify whether or not each leaf node of the octet tree includes one point by the standard, or the profile or level of the standard, without adding single_point_per_leaf to the header. This allows the three-dimensional data decoding device to refer to the standard information, determine whether or not each leaf node of the octet tree includes one point, and correctly restore the bit stream.
[0388] The number of combined frames minus 1 (NumberOfCombineFrame_minus1) indicates the number of combined frames minus 1. Here, the number of combined frames is the number of frames to be combined. NumberOfCombineFrame_minus1 may be added to the bitstream when combine_coding_enable_flag is 1. NumberOfCombineFrame_minus1 may also be added to a header other than GPS.
[0389] The three-dimensional data encoding device may add a value obtained by subtracting the value 1 from NumberOfCombineFrame to the bitstream as NumberOfCombineFrame_minus1. Furthermore, the three-dimensional data encoding device may add NumberOfCombineFrame_minus1 with a value of 0 to a GPS relating to a frame to which frame combining is not applied.
[0390] As a result, the three-dimensional data decoding device can calculate NumberOfCombineFrame by adding a value of 1 to the decoded NumberOfCombineFrame_minus1. Furthermore, when NumberOfCombineFrame is 1, the three-dimensional data decoding device can determine that frame combining has not been applied to the decoded GPS-related frame. In this case, the three-dimensional data decoding device may determine that information regarding frame combining is not included in the bit stream of the corresponding frame, and may not need to decode such information. The information regarding frame combining is, for example, frame information for each three-dimensional point group, such as a frame index indicating the frame to which the point group belongs. Note that the value of NumberOfCombineFrame ranges from 1 to the maximum number of combinations, for example. Furthermore, the maximum number of combinations may be limited to a value that is a power of two.
[0391] Fig. 79 is a diagram illustrating another example of the syntax of GPS. The GPS illustrated in Fig. 79 includes a frame combining application flag (combine_coding_enable_flag), the number of combined frames minus 2 (NumberOfCombineFrame_minus2), and single point information (single_point_per_leaf).
[0392] The frame combining application flag (combine_coding_enable_flag) is a flag for switching whether or not to apply frame combining at the frame level. For example, a value of 1 indicates that frame combining is applied, and a value of 0 indicates that frame combining is not applied. When the 3D point cloud to be encoded is frame combined and encoded, the 3D data encoding device may set combine_coding_enable_flag to a value of 1, and when frame combining is not applied, the 3D data decoding device may set combine_coding_enable_flag to a value of 0. In addition, when the decoded combine_coding_enable_flag is 0, the 3D data decoding device may determine that frame combining is not applied to the decoded GPS-related frame. In this case, the 3D data decoding device may determine that information related to frame combining is not included in the bit stream of the corresponding frame, and may not decode the information. The information related to frame combining is, for example, frame information for each 3D point cloud, for example, a frame index indicating the frame to which the point cloud belongs.
[0393] The number of combined frames - 2 (NumberOfCombineFrame_minus2) indicates the number of combined frames - 2. When combine_coding_enable_flag is 1, the three-dimensional data encoding device may add NumberOfCombineFrame_minus2 to the bitstream. The three-dimensional data encoding device may add a value obtained by subtracting the value 2 from NumberOfCombineFrame as NumberOfCombineFrame_minus2 to the bitstream. In addition, the three-dimensional data decoding device may calculate NumberOfCombineFrame by adding the value 2 to the decoded NumberOfCombineFrame_minus2.
[0394] The value of NumberOfCombineFrame can range from 2 to the maximum number of combinations. The maximum number of combinations may be limited to a power of 2.
[0395] When combine_coding_enable_flag is a value of 1, since there may be two or more three-dimensional points in a leaf node, the three-dimensional data encoding device may set the value of single_point_per_leaf to 0. In other words, when frame combining is performed, the three-dimensional data encoding device may set the value of single_point_per_leaf to 0. Also, a standard or the like may restrict or stipulate that when combine_coding_enable_flag is 1, single_point_per_leaf should be set to 0. This allows the three-dimensional data decoding device to correctly decode the bitstream.
[0396] Also, it may be stipulated that a case where combine_coding_enable_flag is 1 and single_point_per_leaf is 1 is a violation of the standard. Also, when combine_coding_enable_flag is 1, the 3D data encoding device may not add single_point_per_leaf to the bitstream. If single_point_per_leaf is not added to the bitstream, the 3D data decoding device may estimate the value of single_point_per_leaf to be 0 and proceed with the decoding process. This makes it possible to reduce the amount of code.
[0397] Furthermore, when the value of NumberOfCombineFrame is 2 or more, since there is a possibility that two or more three-dimensional points exist in the leaf node, the three-dimensional data encoding device may set the value of single_point_per_leaf to 0. Furthermore, when the value of NumberOfCombineFrame is 2 or more, the standard or the like may restrict or specify that single_point_per_leaf should be set to 0. This allows the three-dimensional data decoding device to correctly decode the bitstream. Furthermore, when the value of NumberOfCombineFrame is 2 or more and single_point_per_leaf is 1, it may be specified as a violation of the standard. Furthermore, when the value of NumberOfCombineFrame is 2 or more, the three-dimensional data encoding device may not need to add single_point_per_leaf to the bitstream. When single_point_per_leaf is not added to the bitstream, the three-dimensional data decoding device may estimate the value of single_point_per_leaf to be 0 and proceed with the decoding process. This allows the amount of code to be reduced.
[0398] 80 is a flowchart of the three-dimensional data encoding process according to this embodiment. First, the three-dimensional data encoding device quantizes the three-dimensional points in each frame, and performs a merge process on the quantized three-dimensional points (S6401). Next, the three-dimensional data encoding device adds frame number information (frame index) indicating the frame number of the frame to which the three-dimensional point belongs to the three-dimensional points in each frame (S6402).
[0399] Next, the three-dimensional data encoding device performs frame combination (S6403). That is, the three-dimensional data encoding device combines a plurality of three-dimensional point clouds belonging to the inputted plurality of frames into one three-dimensional point cloud.
[0400] Next, the three-dimensional data encoding device encodes the position information (S6404). For example, the three-dimensional data encoding device encodes the position information (geometry) and frame number information (frame index) after frame splicing. For example, the three-dimensional data encoding device performs encoding using an octree representation.
[0401] The three-dimensional data encoding device may encode the frame number information of the three-dimensional point as part of the position information, or as attribute information.
[0402] In addition, if the value of combine_coding_enable_flag is 1 or the value of NumberOfCombineFrame is 2 or greater, the 3D data encoding device sets the value of single_point_per_leaf to 0, because there may be two or more 3D points in a leaf node.
[0403] Next, the three-dimensional data encoding device converts the attribute information (S6405). For example, when the position of the three-dimensional point changes due to quantization or the like after encoding the position information, the three-dimensional data encoding device reallocates the attribute information of the original three-dimensional point to the changed three-dimensional point. The three-dimensional data encoding device may perform reallocation by interpolating the value of the attribute information according to the amount of change in the position. For example, the three-dimensional data encoding device detects N three-dimensional points before the change that are close to the changed three-dimensional position, and weights and averages the values of the attribute information of the N three-dimensional points based on the distance from the changed three-dimensional position to each of the N three-dimensional points, and determines the obtained value as the value of the attribute information of the changed three-dimensional point. Furthermore, 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 after the change. However, the three-dimensional data encoding device may not apply an interpolation process or an average value assignment to the frame number information of the three-dimensional point.
[0404] Next, the three-dimensional data encoding device encodes the attribute information (S6406). For example, when encoding multiple pieces of attribute information, the three-dimensional data encoding device may encode the multiple pieces of attribute information in order. For example, when encoding frame number information, color, and reflectance as attribute information, the three-dimensional data encoding device generates a bitstream in which the encoding results of color and reflectance are added after the encoding result of frame number information. Note that the encoding results of the multiple pieces of attribute information added to the bitstream may be in any order.
[0405] Furthermore, the three-dimensional data encoding device may add information indicating the start location of the encoded data of each piece of attribute information in the bit stream to a header or the like. This allows the three-dimensional data decoding device to selectively decode attribute information that needs to be decoded, and therefore omits the decoding process of attribute information that does not need to be decoded. This reduces the amount of processing by the three-dimensional data decoding device. Furthermore, the three-dimensional data encoding device may encode multiple pieces of attribute information in parallel and integrate the encoding results into one bit stream. This allows the three-dimensional data encoding device to encode multiple pieces of attribute information at high speed.
[0406] Fig. 81 is a flowchart of the three-dimensional data decoding process according to this embodiment. First, the three-dimensional data decoding device decodes position information (geometry) from the bit stream (S6411). For example, the three-dimensional data decoding device performs decoding using an octree representation. Also, when the value of combine_coding_enable_flag is 1 or the value of NumberOfCombineFrame is 2 or more, there is a possibility that two or more three-dimensional points exist in a leaf node, so the three-dimensional data decoding device performs decoding with the value of single_point_per_leaf set to 0.
[0407] Next, the three-dimensional data decoding device decodes the attribute information (S6412). For example, when decoding a plurality of pieces of attribute information, the three-dimensional data decoding device may decode the plurality of pieces of attribute information in order. For example, when decoding frame number information, color, and reflectance as attribute information, the three-dimensional data decoding device decodes the encoding result of the frame number information, the encoding result of the color, and the encoding result of the reflectance in the order in which they are added to the bit stream. For example, in the bit stream, when the encoding result of the color and the encoding result of the reflectance are added after the encoding result of the frame number information, the three-dimensional data decoding device decodes the encoding result of the frame number information, and then decodes the encoding result of the color and the encoding result of the reflectance. Note that the three-dimensional data decoding device may decode the encoding results of the attribute information added to the bit stream in any order.
[0408] Furthermore, the three-dimensional data decoding device may obtain information indicating the start location of the encoded data of each piece of attribute information in the bit stream by decoding a header or the like. This allows the three-dimensional data decoding device to selectively decode attribute information that needs to be decoded, and therefore omits the decoding process of attribute information that does not need to be decoded. This allows the amount of processing by the three-dimensional data decoding device to be reduced. Furthermore, the three-dimensional data decoding device may decode multiple pieces of attribute information in parallel and integrate the decoding results into one three-dimensional point cloud. This allows the three-dimensional data decoding device to decode multiple pieces of attribute information at high speed.
[0409] Next, the three-dimensional data decoding device divides the decoded three-dimensional point group into a plurality of frames based on the value of the frame number information (frame index) decoded together with the position information of each three-dimensional point (S6413). 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 divides the decoded three-dimensional point group by adding the position information and attribute information of the three-dimensional point b to frame 1.
[0410] 82 is a block diagram of a three-dimensional data encoding device 6400 according to this embodiment. The three-dimensional data encoding device 6400 includes a quantization and merging unit 6401, a frame index assignment unit 6402, a frame combining unit 6403, a position information encoding unit 6404, an attribute information conversion unit 6405, and an attribute information encoding unit 6406.
[0411] The quantization and merging unit 6401 quantizes the three-dimensional points in each frame and performs a merging process. The frame index assignment unit 6402 adds frame number information to the three-dimensional points in each frame. The frame combining unit 6403 combines three-dimensional point groups of multiple frames. The position information encoding unit 6404 encodes the combined position information (geometry). The attribute information conversion unit 6405 reassigns the value of the attribute information using the encoding or decoding result of the combined position information. The attribute information encoding unit 6406 encodes the attribute information (attribute) based on the combined position information. Note that the frame number information may be encoded as part of the position information or may be encoded as the attribute information.
[0412] 83 is a block diagram of a three-dimensional data decoding device 6410 according to this embodiment. The three-dimensional data decoding device 6410 includes a position information decoding unit 6411, an attribute information decoding unit 6412, and a frame division unit 6413.
[0413] The position information decoding unit 6411 decodes the combined position information (geometry). The attribute information decoding unit 6412 decodes the attribute information (attribute) based on the combined position information. The frame division unit 6413 divides the decoded position information and attribute information of the three-dimensional point into multiple frames based on the decoded frame index. Note that the frame number information may be decoded as part of the position information or as attribute information.
[0414] Next, an example of a procedure for performing quantization after frame splicing will be described. Fig. 84 is a diagram showing an example of a procedure for performing quantization after frame splicing.
[0415] First, the three-dimensional data encoding device combines three-dimensional points of each frame to generate a three-dimensional point after the frame combination. At this time, the three-dimensional data encoding device adds frame number information indicating the frame number before the combination to each three-dimensional point. The frame number information may be added as attribute information of each three-dimensional point.
[0416] Next, the three-dimensional data encoding device quantizes the position information of the three-dimensional point after the frame splicing using the quantization parameter. For example, the three-dimensional data encoding device quantizes the position information (x, y, z) using the quantization value qs to generate (x / qs, y / qs, z / qs) as the quantized position information.
[0417] Here, there are cases where multiple three-dimensional points with the same position information after quantization are generated by quantization. The three-dimensional data encoding device may determine that the position information is the same when the distance between the three-dimensional points is less than a predetermined distance. In this case, the three-dimensional data encoding device may merge multiple three-dimensional points with the same position information. However, the three-dimensional data encoding device applies merging to multiple three-dimensional points with the same added frame number information, and does not apply merging to multiple three-dimensional points with different frame number information. For example, when the position information of point A and point B to which the same frame number information is added by quantization becomes the same value, or the distance between point A and point B becomes less than a predetermined distance, the three-dimensional data encoding device may merge point A and point B into point A or point B.
[0418] When merging points A and B, if points A and B have attribute information other than frame number information, the attribute information other than frame number information after merging may be an average value of the attribute information other than frame number information of point A and the attribute information other than frame number information of point B. Also, either the attribute information other than frame number information of point A or the attribute information other than frame number information of point B may be assigned to the point after merging.
[0419] Furthermore, even if the position information of point C and point D is the same value, or the distance between point C and point D is less than a predetermined distance, if the frame number information of point C and point D is different, the three-dimensional data encoding device does not merge point C and point D. In this way, the three-dimensional data encoding device can reduce the number of three-dimensional points by applying merging to three-dimensional points having the same frame number information after quantization. This can reduce the amount of data in the entire encoded data.
[0420] Next, the three-dimensional data encoding device applies frame splicing encoding to the three-dimensional points to which quantization and merging have been applied after frame splicing. The three-dimensional data encoding device may encode frame number information as attribute information of each three-dimensional point. This allows the three-dimensional data encoding device to appropriately add frame number information to the three-dimensional points after frame splicing and encode them. Therefore, after decoding the frame-spliced bitstream, the three-dimensional data decoding device can obtain the frame number to which each three-dimensional point belongs and divide the spliced frame into multiple frames before frame splicing.
[0421] FIG. 85 is a flowchart of the three-dimensional data encoding process according to this embodiment. First, the three-dimensional data encoding device adds frame number information (frame index) to the three-dimensional points in each frame (S6421). Next, the three-dimensional data encoding device combines a plurality of three-dimensional point groups belonging to the inputted plurality of frames into one three-dimensional point group (S6422). Next, the three-dimensional data encoding device quantizes the three-dimensional points in the combined frame, and performs a merge process on the quantized three-dimensional points (S6423). At this time, the three-dimensional data encoding device applies merging to three-dimensional points having the same frame number information, and does not apply merging to three-dimensional points having different frame number information.
[0422] Next, the three-dimensional data encoding device encodes the position information (geometry) and frame number information after the frame splicing (S6424). For example, the three-dimensional data encoding device performs encoding using an octree representation.
[0423] The three-dimensional data encoding device may encode the frame number information of the three-dimensional point as part of the position information, or as attribute information.
[0424] In addition, if the value of combine_coding_enable_flag is 1 or the value of NumberOfCombineFrame is 2 or greater, the 3D data encoding device sets the value of single_point_per_leaf to 0, because there may be two or more 3D points in a leaf node.
[0425] Next, the three-dimensional data encoding device converts the attribute information (S6425). For example, when the position of the three-dimensional point changes due to quantization or the like after encoding the position information, the three-dimensional data encoding device reallocates the attribute information of the original three-dimensional point to the changed three-dimensional point. The three-dimensional data encoding device may perform reallocation by interpolating the value of the attribute information according to the amount of change in the position. For example, the three-dimensional data encoding device detects N three-dimensional points before the change that are close to the changed three-dimensional position, and weights and averages the values of the attribute information of the N three-dimensional points based on the distance from the changed three-dimensional position to each of the N three-dimensional points, and determines the obtained value as the value of the attribute information of the changed three-dimensional point. Furthermore, 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 after the change. However, the three-dimensional data encoding device may not apply an interpolation process or an average value assignment to the frame number information of the three-dimensional point.
[0426] Next, the three-dimensional data encoding device encodes the attribute information (S6426). For example, when encoding multiple pieces of attribute information, the three-dimensional data encoding device may encode the multiple pieces of attribute information in order. For example, when encoding frame number information, color, and reflectance as attribute information, the three-dimensional data encoding device generates a bitstream in which the encoding results of color and reflectance are added after the encoding result of frame number information. Note that the encoding results of the multiple pieces of attribute information added to the bitstream may be in any order.
[0427] Furthermore, the three-dimensional data encoding device may add information indicating the start location of the encoded data of each piece of attribute information in the bit stream to a header or the like. This allows the three-dimensional data decoding device to selectively decode attribute information that needs to be decoded, and therefore omits the decoding process of attribute information that does not need to be decoded. This reduces the amount of processing by the three-dimensional data decoding device. Furthermore, the three-dimensional data encoding device may encode multiple pieces of attribute information in parallel and integrate the encoding results into one bit stream. This allows the three-dimensional data encoding device to encode multiple pieces of attribute information at high speed.
[0428] Fig. 86 is a flowchart of the three-dimensional data decoding process according to this embodiment. First, the three-dimensional data decoding device decodes position information (geometry) from the bit stream (S6431). For example, the three-dimensional data decoding device performs decoding using an octree representation. Also, when the value of combine_coding_enable_flag is 1 or the value of NumberOfCombineFrame is 2 or more, there is a possibility that two or more three-dimensional points exist in a leaf node, so the three-dimensional data decoding device performs decoding with the value of single_point_per_leaf set to 0.
[0429] Next, the three-dimensional data decoding device decodes the attribute information (S6432). For example, when decoding a plurality of pieces of attribute information, the three-dimensional data decoding device may decode the plurality of pieces of attribute information in order. For example, when decoding frame number information, color, and reflectance as attribute information, the three-dimensional data decoding device decodes the encoding result of the frame number information, the encoding result of the color, and the encoding result of the reflectance in the order in which they are added to the bit stream. For example, in the bit stream, when the encoding result of the color and the encoding result of the reflectance are added after the encoding result of the frame number information, the three-dimensional data decoding device decodes the encoding result of the frame number information, and then decodes the encoding result of the color and the encoding result of the reflectance. Note that the three-dimensional data decoding device may decode the encoding results of the attribute information added to the bit stream in any order.
[0430] Furthermore, the three-dimensional data decoding device may obtain information indicating the start location of the encoded data of each piece of attribute information in the bit stream by decoding a header or the like. This allows the three-dimensional data decoding device to selectively decode attribute information that needs to be decoded, and therefore omits the decoding process of attribute information that does not need to be decoded. This allows the amount of processing by the three-dimensional data decoding device to be reduced. Furthermore, the three-dimensional data decoding device may decode multiple pieces of attribute information in parallel and integrate the decoding results into one three-dimensional point cloud. This allows the three-dimensional data decoding device to decode multiple pieces of attribute information at high speed.
[0431] Next, the three-dimensional data decoding device divides the decoded three-dimensional point group into a plurality of frames based on the value of the frame number information (frame index) decoded together with the position information of each three-dimensional point (S6433). 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 divides the decoded three-dimensional point group by adding the position information and attribute information of the three-dimensional point b to frame 1.
[0432] 87 is a block diagram of a three-dimensional data encoding device 6420 according to this embodiment. The three-dimensional data encoding device 6420 includes a frame index assignment unit 6421, a frame combining unit 6422, a quantization and merging unit 6423, a position information encoding unit 6424, an attribute information conversion unit 6425, and an attribute information encoding unit 6426.
[0433] The frame index assigner 6421 adds frame number information to the 3D points in each frame. The frame combiner 6422 combines 3D point groups of multiple frames. The quantizer and merger 6423 quantizes the 3D points in each frame and performs a merge process.
[0434] The position information encoding unit 6424 encodes the combined position information (geometry). The attribute information conversion unit 6425 reassigns the value of the attribute information using the encoding or decoding result of the combined position information. The attribute information encoding unit 6426 encodes the attribute information (attribute) based on the combined position information. Note that the frame number information may be encoded as part of the position information or may be encoded as the attribute information.
[0435] 88 is a block diagram of a three-dimensional data decoding device 6430 according to this embodiment. The three-dimensional data decoding device 6430 includes a position information decoding unit 6431, an attribute information decoding unit 6432, and a frame division unit 6433.
[0436] The position information decoding unit 6431 decodes the combined position information (geometry). The attribute information decoding unit 6432 decodes the attribute information (attribute) based on the combined position information. The frame division unit 6433 divides the decoded position information and attribute information of the three-dimensional point into multiple frames based on the decoded frame index. Note that the frame number information may be decoded as part of the position information or as attribute information.
[0437] As described above, the three-dimensional data encoding device according to this embodiment performs the process shown in Fig. 89. When applying joint coding (for example, frame joint coding) for generating joint point group data by combining a plurality of point group data and encoding the joint point group data (Yes in S6441), the three-dimensional data encoding device sets first information (for example, single_point_per_leaf) indicating whether or not there is a possibility that each leaf node includes a plurality of three-dimensional points to a first value (for example, value 0) indicating that there is a possibility that each leaf node includes a plurality of three-dimensional points, and generates a bit stream including the set first information (S6442).
[0438] If the three-dimensional data encoding device does not apply the joint encoding (No in S6441), it sets the first information to the first value or a second value (e.g., value 1) indicating that each leaf node is unlikely to contain multiple three-dimensional points, and generates a bitstream including the set first information (S6443).
[0439] That is, when joint coding is applied, the three-dimensional data encoding device always sets the first information to a first value. In other words, when joint coding is applied, setting the first information to a second value is prohibited. When joint coding is not applied, the three-dimensional data encoding device determines whether each leaf node is likely to include multiple three-dimensional points based on a predetermined condition or an external instruction, and sets the first information to a first value or a second value based on the determination result.
[0440] This makes it possible for the three-dimensional data encoding device to suppress generation of erroneous data.
[0441] For example, the first information is included in frame-by-frame control information (eg, GPS) included in the bitstream.
[0442] For example, sequence-based control information (e.g., SPS) included in the bitstream includes second information (e.g., combine_coding_enable_flag), and when the joint coding is applied, the second information is set to a third value (e.g., value 1), and when the joint coding is not applied, the second information is set to a fourth value different from the third value (e.g., value 0).
[0443] For example, the frame-based control information (e.g., GPS) includes second information (e.g., combine_coding_enable_flag), and when the joint coding is applied, the second information is set to a third value (e.g., value 1), and when the joint coding is not applied, the second information is set to a fourth value different from the third value (e.g., value 0).
[0444] For example, the three-dimensional data encoding device includes a processor and a memory, and the processor uses the memory to perform the above-mentioned processing.
[0445] Moreover, the three-dimensional data decoding device according to the present embodiment performs the process shown in FIG. 90. When the three-dimensional data decoding device acquires encoded data generated by applying joint coding to generate joint point group data by combining a plurality of point group data from the bit stream and to code the joint point group data (Yes in S6451), the three-dimensional data decoding device acquires from the bit stream first information (e.g., single_point_per_leaf) indicating whether or not there is a possibility that each leaf node includes a plurality of three-dimensional points, and the first information is set to a first value (e.g., value 0) indicating that there is a possibility that each leaf node includes a plurality of three-dimensional points (S6452). When the three-dimensional data decoding device acquires encoded data generated without applying the joint coding from the bit stream (No in S6451), the three-dimensional data decoding device acquires from the bit stream the first value or the first information set to a second value (e.g., value 1) indicating that there is no possibility that each leaf node includes a plurality of three-dimensional points (S6453).
[0446] This makes it possible for the three-dimensional data decoding device to suppress the generation of erroneous data.
[0447] For example, the first information is included in frame-by-frame control information (eg, GPS) included in the bitstream.
[0448] For example, sequence-based control information (e.g., SPS) included in the bitstream includes second information (e.g., combine_coding_enable_flag), and when encoded data generated by applying the joint coding is obtained from the bitstream, the second information is set to a third value (e.g., value 1), and when encoded data generated without applying the joint coding is obtained from the bitstream, the second information is set to a fourth value different from the third value (e.g., value 0).
[0449] For example, the frame-based control information (e.g., GPS) includes second information (e.g., combine_coding_enable_flag), and when encoded data generated by applying the joint coding is obtained from the bit stream, the second information is set to a third value (e.g., value 1), and when encoded data generated without applying the joint coding is obtained from the bit stream, the second information is set to a fourth value different from the third value (e.g., value 0).
[0450] For example, the three-dimensional data decoding device includes a processor and a memory, and the processor uses the memory to perform the above-mentioned processing.
[0451] Although the three-dimensional data encoding device and the three-dimensional data decoding device according to the embodiments of the present disclosure have been described above, the present disclosure is not limited to these embodiments.
[0452] Furthermore, each processing unit included in the three-dimensional data encoding device and the three-dimensional data decoding device according to the above-mentioned embodiments is typically realized as an LSI, which is an integrated circuit. These may be individually implemented as single chips, or some or all of them may be included in a single chip.
[0453] The integrated circuit is not limited to an LSI, but may be realized by a dedicated circuit or a general-purpose processor. A field programmable gate array (FPGA) that can be programmed after the LSI is manufactured, or a reconfigurable processor that can reconfigure the connections and settings of the circuit cells inside the LSI may also be used.
[0454] In each of the above embodiments, each component may be implemented by dedicated hardware or by executing a software program suitable for each component. Each component may be implemented by a program execution unit such as a CPU or processor reading and executing a software program recorded on a recording medium such as a hard disk or semiconductor memory.
[0455] Furthermore, the present disclosure may be realized as a three-dimensional data encoding method or a three-dimensional data decoding method executed by a three-dimensional data encoding device, a three-dimensional data decoding device, or the like.
[0456] In addition, the division of functional blocks in the block diagram is an example, and multiple functional blocks may be realized as one functional block, one functional block may be divided into multiple blocks, or some functions may be transferred to another functional block. Furthermore, the functions of multiple functional blocks having similar functions may be processed in parallel or in a time-sharing manner by a single piece of hardware or software.
[0457] In addition, the order in which each step is performed in the flowchart is merely an example for specifically explaining the present disclosure, and an order other than the above may be used. In addition, some of the steps may be performed simultaneously (in parallel) with other steps.
[0458] Although 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, the present disclosure is not limited to these embodiments. As long as it does not deviate from the spirit of the present disclosure, various modifications conceived by a person skilled in the art to the present embodiment and forms constructed by combining components in different embodiments may also be included within the scope of one or more aspects. [Industrial Applicability]
[0459] The present disclosure is applicable to a three-dimensional data encoding device and a three-dimensional data decoding device. [Explanation of symbols]
[0460] 4601 Three-dimensional data encoding system 4602 Three-dimensional data decoding system 4603 Sensor terminal 4604 External connection part 4611 Point Cloud Data Generation System 4612 Presentation section 4613 Encoding section 4614 Multiplexer 4615 Input / output section 4616 Control Unit 4617 Sensor information acquisition unit 4618 Point Cloud Data Generation Unit 4621 Sensor Information Acquisition Unit 4622 Input / output section 4623 Demultiplexer 4624 Decoding section 4625 Presentation section 4626 User Interface 4627 Control Unit 4630 First Encoding Section 4631 Location information encoder 4632 Attribute information encoder 4633 Additional Information Encoding Unit 4634 Multiplexer 4640 First Decoding Unit 4641 Demultiplexer 4642 Location Information Decoding Unit 4643 Attribute Information Decoding Unit 4644 Additional Information Decoding Unit 4650 Second Encoding Section 4651 Additional Information Generation Unit 4652 Position image generation unit 4653 Attribute Image Generation Unit 4654 Video Encoding Unit 4655 Additional Information Encoding Unit 4656 Multiplexer 4660 Second Decryption Unit 4661 Demultiplexer 4662 Video Decoding Unit 4663 Additional Information Decoding Unit 4664 Location information generator 4665 Attribute information generation section 4801 Encoding section 4802 Multiplexer 4910 First Encoding Section 4911 Split section 4912 Location information encoder 4913 Attribute information encoder 4914 Additional information coding section 4915 Multiplexer 4920 First Decoding Unit 4921 Demultiplexer 4922 Location Information Decoding Unit 4923 Attribute Information Decoding Unit 4924 Additional Information Decoding Unit 4925 Joint 4931 Slice division section 4932 Location information tile division part 4933 Attribute information tile division part 4941 Geolocation tile combination 4942 Attribute information tile joint 4943 Slice Junction 5410 Encoding section 5411 Split section 5412 Location information encoder 5413 Attribute information encoder 5414 Additional information coding unit 5415 Multiplexer 5421 Tile division section 5422 Slice division part 5431, 5441 Frame Index Generator 5432, 5442 Entropy coding unit 5450 Decryption Unit 5451 Demultiplexer 5452 Location Information Decoding Unit 5453 Attribute Information Decoding Unit 5454 Additional Information Decoding Unit 5455 Joint 5461, 5471 Entropy Decoding Unit 5462, 5472 Frame index acquisition section 6400, 6420 3D data encoding device 6401, 6423 Quantization and Merging Unit 6402, 6421 Frame index allocation section 6403, 6422 Frame joint 6404, 6424 Location information encoder 6405, 6425 Attribute information conversion unit 6406, 6426 Attribute information encoder 6410, 6430 Three-dimensional data decoding device 6411, 6431 Location information decoding unit 6412, 6432 Attribute information decoding unit 6413, 6433 Frame division section
Claims
1. Obtaining a first point cloud frame data to be encoded; generating a bit stream including encoded point cloud frame data obtained by encoding the first point cloud frame data to be encoded, frame identification information, and single point information; the frame identification information indicates how the encoded point cloud frame data is divided into a plurality of point cloud frames; the single point information is information for identifying whether the first point cloud frame data includes a duplicate point, In the generating step, the frame identification information is encoded as attribute information. Three-dimensional data encoding method.
2. If the first point cloud frame data does not include duplicate points, each leaf node of the first point cloud frame data is composed of a single point.
2. The three-dimensional data encoding method according to claim 1.
3. The overlapping points are a plurality of points having the same position information.
2. The three-dimensional data encoding method according to claim 1.
4. The single point information is included in frame-by-frame control information included in the bitstream.
2. The three-dimensional data encoding method according to claim 1.
5. When the single point information is set to a first value, the bit stream includes leaf node information indicating the number of 3D points included in each leaf node of the first point cloud frame data.
2. The three-dimensional data encoding method according to claim 1.
6. The first point cloud frame data is point cloud frame data obtained by combining a plurality of point cloud frame data, The first point cloud frame data includes position information of each of a plurality of three-dimensional points.
2. The three-dimensional data encoding method according to claim 1.
7. The frame identification information is information for identifying a frame, and is assigned to each of the three-dimensional points included in the first point cloud frame data, If the frame identification information indicates a second point cloud frame, the 3D points are segmented into the second point cloud frame; If the frame identification information indicates a third point cloud frame, the 3D points are divided into the third point cloud frame.
2. The three-dimensional data encoding method according to claim 1.
8. Obtaining a bit stream including encoded point cloud frame data in which the first point cloud frame data is encoded, frame identification information, and single point information; Decoding the bitstream; the frame identification information indicates how the encoded point cloud frame data is divided into a plurality of point cloud frames; the single point information is information for identifying whether the first point cloud frame data includes a duplicate point, The frame identification information is encoded as attribute information in the bit stream. A method for decoding three-dimensional data.
9. If the first point cloud frame data does not include duplicate points, each leaf node of the first point cloud frame data is composed of a single point.
9. The three-dimensional data decoding method according to claim 8.
10. The overlapping points are a plurality of points having the same position information.
9. The three-dimensional data decoding method according to claim 8.
11. The single point information is included in frame-by-frame control information included in the bitstream.
9. The three-dimensional data decoding method according to claim 8.
12. When the single point information is set to a first value, the bit stream includes leaf node information indicating the number of 3D points included in each leaf node of the first point cloud frame data.
9. The three-dimensional data decoding method according to claim 8.
13. The first point cloud frame data is point cloud frame data obtained by combining a plurality of point cloud frame data, The first point cloud frame data includes position information of each of a plurality of three-dimensional points.
9. The three-dimensional data decoding method according to claim 8.
14. The frame identification information is information for identifying a frame, and is assigned to each of the three-dimensional points included in the first point cloud frame data, If the frame identification information indicates a second point cloud frame, the 3D points are segmented into the second point cloud frame; If the frame identification information indicates a third point cloud frame, the 3D points are divided into the third point cloud frame.
9. The three-dimensional data decoding method according to claim 8.
15. A processor; A memory. The processor uses the memory to: Obtaining a first point cloud frame data to be encoded; generating a bit stream including encoded point cloud frame data obtained by encoding the first point cloud frame data to be encoded, frame identification information, and single point information; the frame identification information indicates how the encoded point cloud frame data is divided into a plurality of point cloud frames; the single point information is information for identifying whether the first point cloud frame data includes a duplicate point, In the generating step, the frame identification information is encoded as attribute information. Three-dimensional data encoding device.
16. A processor; A memory. The processor uses the memory to: Obtaining a bit stream including encoded point cloud frame data in which the first point cloud frame data is encoded, frame identification information, and single point information; Decoding the bitstream; the frame identification information indicates how the encoded point cloud frame data is divided into a plurality of point cloud frames; the single point information is information for identifying whether the first point cloud frame data includes a duplicate point, The frame identification information is encoded as attribute information in the bit stream. Three-dimensional data decoding device.
Citation Information
Patent Citations
Computing device and method for processing point clouds
US20160163102A1
Three-dimensional data coding method, three-dimensional data decoding method, three-dimensional data coding device, and three-dimensional data decoding device
WO2017104115A1
Map display device
WO2014020663A1