Three-dimensional data encoding method, three-dimensional data decoding method, three-dimensional data encoding device, three-dimensional data decoding device, and program
By dividing three-dimensional data into sub-units and applying specific movement amounts, the method addresses inefficiencies in existing encoding, achieving reduced data volume and improved encoding efficiency for three-dimensional data.
Patent Information
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Filing Date
- 2025-04-17
- Publication Date
- 2026-03-04
AI Technical Summary
Existing three-dimensional data encoding methods are inefficient, leading to high data volume requirements for storing or transmitting three-dimensional data, particularly in the form of point clouds.
A method that divides three-dimensional data into sub-data units, applies a common movement amount followed by individual movement amounts, and encodes these sub-data units, utilizing techniques like octree division to reduce positional information, thereby improving encoding efficiency.
The method significantly reduces the amount of positional information required for encoding, enhancing encoding efficiency and enabling effective data compression and transmission.
Smart Images

Figure 0007824462000001 
Figure 0007824462000002 
Figure 0007824462000003
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, a three-dimensional data decoding device, and a program. [Background technology]
[0002] In the future, devices and services that utilize 3D data are expected to become widespread in a wide range of fields, including computer vision for autonomous operation of automobiles or robots, map information, surveillance, infrastructure inspection, video distribution, etc. 3D data can be acquired in a variety of ways, including distance sensors such as range finders, stereo cameras, or a combination of multiple monocular cameras.
[0003] One method of representing three-dimensional data is a point cloud, which represents the shape of a three-dimensional structure using a group of points in three-dimensional space. A point cloud stores the position and color of the points. Point clouds are expected to become the mainstream method of representing three-dimensional data, but point clouds require a very large amount of data. Therefore, when storing or transmitting three-dimensional data, data compression through encoding is essential, just as with 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 that perform point cloud-related processing (Point Cloud Library).
[0005] Furthermore, a technique is known in which three-dimensional map data is used 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 and decoding of three-dimensional data, it is desirable to be able to improve the encoding efficiency.
[0008] An object of the present disclosure is to provide a three-dimensional data encoding method, a three-dimensional data decoding method, a three-dimensional data encoding device, a three-dimensional data decoding device, or the like that can improve encoding efficiency. [Means for solving the problem]
[0009] A three-dimensional data encoding method according to one aspect of the present disclosure is a three-dimensional data encoding method for encoding three-dimensional data, which generates three-dimensional data into a plurality of sub-three-dimensional data, each of which includes positional information of a portion of the three-dimensional data, calculates a common movement amount for the plurality of sub-three-dimensional data, calculates a plurality of individual movement amounts corresponding to the plurality of sub-three-dimensional data, moves each of the plurality of sub-three-dimensional data using the common movement amount and the corresponding individual movement amount, and encodes each of the plurality of sub-three-dimensional data moved using the common movement amount and the corresponding individual movement amount.
[0010] A three-dimensional data decoding method according to one embodiment of the present disclosure acquires common movement information, a plurality of individual movement information, and a plurality of sub-three-dimensional data, each of which includes position information of a portion of the three-dimensional data, decodes the plurality of sub-three-dimensional data to acquire a plurality of decoded position information, calculates a common movement amount using the common movement information, and calculates an individual movement amount corresponding to each of the plurality of sub-three-dimensional data using each of the plurality of individual movement information, each of the plurality of sub-three-dimensional data being moved using the common movement amount and the corresponding individual movement amount, wherein the common movement amount is a movement of the same distance in the plurality of sub-three-dimensional data and is a movement in the direction from a first point to a second point in three-dimensional space, and the individual movement amount is a different distance in the plurality of sub-three-dimensional data and is a movement in the direction from the second point to a third point in three-dimensional space.
[0011] a common movement amount for the plurality of sub-point cloud data, the common movement amount being a movement of the same distance among the plurality of sub-point cloud data and indicating a movement in a direction toward a predetermined point in the three-dimensional space; moving the plurality of sub-point cloud data by the common movement amount; calculating a plurality of individual movement amounts corresponding to the plurality of sub-point cloud data moved by the common movement amount; the plurality of individual movement amounts being a movement of different distances among the plurality of sub-point cloud data moved by the common movement amount and indicating a movement in a direction toward the predetermined point; for each of the plurality of sub-point cloud data moved by the common movement amount, moving the sub-point cloud data by the individual movement amount corresponding to the sub-point cloud data; and encoding the plurality of sub-point cloud data each moved by the corresponding individual movement amount.
[0012] A three-dimensional data decoding method according to one aspect of the present disclosure decodes, from a bitstream, a plurality of sub-point cloud data obtained by dividing point cloud data indicating a plurality of three-dimensional positions by dividing a three-dimensional space into a plurality of subspaces, each of the sub-point cloud data being moved by a common movement amount and a corresponding individual movement amount, common movement information for calculating the common movement amount, and a plurality of individual movement information for calculating each of the plurality of individual movement amounts obtained by moving the plurality of sub-point cloud data, wherein the common movement amount is a movement of the same distance among the plurality of sub-point cloud data and indicates a movement in a direction toward a specified point in the three-dimensional space, and the plurality of individual movement amounts obtained by moving the plurality of sub-point cloud data are movement of different distances among the plurality of sub-point cloud data moved by the common movement amount and indicate a movement in a direction toward the specified point, and restores the point cloud data by moving each of the plurality of sub-point cloud data by an amount obtained by adding the common movement amount and the individual movement amount corresponding to the sub-point cloud data.
[0013] A three-dimensional data encoding method according to one embodiment of the present disclosure is a three-dimensional data encoding method for encoding point cloud data indicating multiple three-dimensional positions in a three-dimensional space, which comprises: moving the point cloud data by a first movement amount; dividing the three-dimensional space into multiple subspaces to divide the point cloud data into multiple sub-point cloud data; moving each of the multiple sub-point cloud data included in the point cloud data after moving the first movement amount by a second movement amount based on the position of the subspace in which the sub-point cloud data is included; and encoding the multiple sub-point cloud data after movement to generate a bit stream, wherein the bit stream includes first movement information for calculating the first movement amount and multiple second movement information for calculating each of the multiple second movement amounts obtained by moving the multiple sub-point cloud data.
[0014] A three-dimensional data decoding method according to one embodiment of the present disclosure decodes from a bitstream a plurality of sub-point cloud data, each of which is point cloud data indicating a plurality of three-dimensional positions divided by dividing a three-dimensional space into a plurality of subspaces, wherein the sub-point cloud data is each moved by a first movement amount and a corresponding second movement amount, first movement information for calculating the first movement amount, and second movement information for calculating the second movement amounts by which the plurality of sub-point cloud data has been moved, and restores the point cloud data by moving each of the plurality of sub-point cloud data by an amount obtained by adding the first movement amount and the corresponding second movement amount. [Effects of the Invention]
[0015] The present disclosure can provide a three-dimensional data encoding method, a three-dimensional data decoding method, a three-dimensional data encoding device, or a three-dimensional data decoding device that can improve encoding efficiency. [Brief explanation of the drawings]
[0016] [Figure 1] FIG. 1 is a diagram showing a configuration of a three-dimensional data encoding / decoding system according to the first embodiment. [Figure 2] FIG. 2 is a diagram illustrating an example of the configuration of point cloud data according to the first embodiment. [Figure 3] FIG. 3 is a diagram showing an example of the structure 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. [Figure 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 illustrating 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 illustrating 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 an example in which NAL units according to the second embodiment are stored in a file for codec 1. In FIG. [Figure 17] FIG. 17 is a diagram showing an example in which NAL units according to the second embodiment are stored in a file for codec 2. In FIG. [Figure 18] FIG. 18 is a diagram illustrating a configuration of a first multiplexing unit according to the second embodiment. [Figure 19] FIG. 19 is a diagram illustrating a configuration of a first demultiplexing unit according to the second embodiment. [Figure 20] FIG. 20 is a diagram illustrating a configuration of a second multiplexing unit according to the second embodiment. [Figure 21] FIG. 21 is a diagram illustrating a configuration of a second demultiplexing unit according to the second embodiment. [Figure 22] FIG. 22 is a flowchart of a process performed by the first multiplexing unit according to the second embodiment. [Figure 23] FIG. 23 is a flowchart of a process performed by the second multiplexing unit according to the second embodiment. [Figure 24] FIG. 24 is a flowchart of processing by the first demultiplexing unit and the first decoding unit according to the second embodiment. [Figure 25]FIG. 25 is a flowchart of processing by the second demultiplexing unit and the second decoding unit according to the second embodiment. [Figure 26] FIG. 26 is a diagram illustrating a configuration of an encoding unit and a third multiplexing unit according to the third embodiment. [Figure 27] FIG. 27 is a diagram illustrating a configuration of a third demultiplexing unit and a decoding unit according to the third embodiment. [Figure 28] FIG. 28 is a flowchart of a process performed by a third multiplexing unit according to the third embodiment. [Figure 29] FIG. 29 is a flowchart of processing by a third demultiplexing unit and a decoding unit according to the third embodiment. [Figure 30] FIG. 30 is a flowchart of processing by the three-dimensional data storage device according to the third embodiment. [Figure 31] FIG. 31 is a flowchart of the process performed by the three-dimensional data acquisition device according to the third embodiment. [Figure 32] FIG. 32 is a diagram illustrating the configurations of an encoding unit and a multiplexing unit according to the fourth embodiment. [Figure 33] FIG. 33 is a diagram illustrating an example of a structure of coded data according to the fourth embodiment. [Figure 34] FIG. 34 is a diagram showing an example of the structure of coded data and NAL units according to the fourth embodiment. [Figure 35] FIG. 35 is a diagram illustrating an example of the semantics of pcc_nal_unit_type according to the fourth embodiment. [Figure 36] FIG. 36 is a diagram showing an example of the transmission order of NAL units according to the fourth embodiment. [Figure 37] FIG. 37 is a diagram showing an example of division into slices and tiles according to the fifth embodiment. [Figure 38] FIG. 38 is a diagram showing an example of a division pattern of slices and tiles according to the fifth embodiment. [Figure 39] FIG. 39 is a block diagram of a first encoding unit according to the sixth embodiment. [Figure 40]FIG. 40 is a block diagram of a first decoding unit according to the sixth embodiment. [Figure 41] FIG. 41 is a diagram showing examples of tile shapes according to the sixth embodiment. [Figure 42] FIG. 42 is a diagram showing examples of tiles and slices according to the sixth embodiment. [Figure 43] FIG. 43 is a block diagram of a division unit according to the sixth embodiment. [Figure 44] FIG. 44 is a diagram showing an example of a map in which point cloud data according to the sixth embodiment is viewed from above. [Figure 45] FIG. 45 is a diagram showing an example of tile division according to the sixth embodiment. [Figure 46] FIG. 46 is a diagram showing an example of tile division according to the sixth embodiment. [Figure 47] FIG. 47 is a diagram showing an example of tile division according to the sixth embodiment. [Figure 48] FIG. 48 is a diagram showing an example of tile data stored in the server according to the sixth embodiment. [Figure 49] FIG. 49 is a diagram showing a system relating to tile division according to the sixth embodiment. [Figure 50] FIG. 50 is a diagram showing an example of slice division according to the sixth embodiment. [Figure 51] FIG. 51 is a diagram illustrating an example of a dependency relationship according to the sixth embodiment. [Figure 52] FIG. 52 is a diagram showing an example of the decoding order of data according to the sixth embodiment. [Figure 53] FIG. 53 is a diagram illustrating an example of coded data of a tile according to the sixth embodiment. [Figure 54] FIG. 54 is a block diagram of a combining unit according to the sixth embodiment. [Figure 55] FIG. 55 is a diagram showing an example of the structure of coded data and NAL units according to the sixth embodiment. [Figure 56] FIG. 56 is a flowchart of the encoding process according to the sixth embodiment. [Figure 57]FIG. 57 is a flowchart of the decoding process according to the sixth embodiment. [Figure 58] FIG. 58 is a diagram illustrating an example of the syntax of the tile additional information according to the sixth embodiment. [Figure 59] FIG. 59 is a block diagram of a coding / decoding system according to the sixth embodiment. [Figure 60] FIG. 60 is a diagram showing an example of the syntax of slice additional information according to the sixth embodiment. [Figure 61] FIG. 61 is a flowchart of the encoding process according to the sixth embodiment. [Figure 62] FIG. 62 is a flowchart of the decoding process according to the sixth embodiment. [Figure 63] FIG. 63 is a flowchart of the encoding process according to the sixth embodiment. [Figure 64] FIG. 64 is a flowchart of the decoding process according to the sixth embodiment. [Figure 65] FIG. 65 is a diagram illustrating an example of a division method according to the seventh embodiment. [Figure 66] FIG. 66 is a diagram illustrating an example of division of point cloud data according to the seventh embodiment. [Figure 67] FIG. 67 is a diagram illustrating an example of the syntax of the tile additional information according to the seventh embodiment. [Figure 68] FIG. 68 is a diagram showing an example of index information according to the seventh embodiment. [Figure 69] FIG. 69 is a diagram illustrating an example of a dependency relationship according to the seventh embodiment. [Figure 70] FIG. 70 is a diagram illustrating an example of transmission data according to the seventh embodiment. [Figure 71] FIG. 71 is a diagram showing an example of the structure of an NAL unit according to the seventh embodiment. [Figure 72] FIG. 72 is a diagram illustrating an example of a dependency relationship according to the seventh embodiment. [Figure 73] FIG. 73 is a diagram showing an example of the decoding order of data according to the seventh embodiment. [Figure 74]FIG. 74 is a diagram illustrating an example of a dependency relationship according to the seventh embodiment. [Figure 75] FIG. 75 is a diagram showing an example of the decoding order of data according to the seventh embodiment. [Figure 76] FIG. 76 is a flowchart of the encoding process according to the seventh embodiment. [Figure 77] FIG. 77 is a flowchart of the decoding process according to the seventh embodiment. [Figure 78] FIG. 78 is a flowchart of the encoding process according to the seventh embodiment. [Figure 79] FIG. 79 is a flowchart of the encoding process according to the seventh embodiment. [Figure 80] FIG. 80 is a diagram illustrating an example of transmission data and reception data according to the seventh embodiment. [Figure 81] FIG. 81 is a flowchart of the decoding process according to the seventh embodiment. [Figure 82] FIG. 82 is a diagram illustrating an example of transmission data and reception data according to the seventh embodiment. [Figure 83] FIG. 83 is a flowchart of the decoding process according to the seventh embodiment. [Figure 84] FIG. 84 is a flowchart of the encoding process according to the seventh embodiment. [Figure 85] FIG. 85 is a diagram showing an example of index information according to the seventh embodiment. [Figure 86] FIG. 86 is a diagram illustrating an example of a dependency relationship according to the seventh embodiment. [Figure 87] FIG. 87 is a diagram illustrating an example of transmission data according to the seventh embodiment. [Figure 88] FIG. 88 is a diagram illustrating an example of transmission data and reception data according to the seventh embodiment. [Figure 89] FIG. 89 is a flowchart of the decoding process according to the seventh embodiment. [Figure 90] FIG. 90 is a flowchart of the encoding process according to the seventh embodiment. [Figure 91]FIG. 91 is a flowchart of the decoding process according to the seventh embodiment. [Figure 92] FIG. 92 is a block diagram showing an example of the configuration of a three-dimensional data encoding device according to the eighth embodiment. [Figure 93] FIG. 93 is a diagram for explaining an outline of the encoding method performed by the three-dimensional data encoding device according to the eighth embodiment. [Figure 94] FIG. 94 is a diagram for explaining a first example of the position shift according to the eighth embodiment. [Figure 95] FIG. 95 is a diagram for explaining a second example of the position shift according to the eighth embodiment. [Figure 96] FIG. 96 is a flowchart showing an example of a coding method according to the eighth embodiment. [Figure 97] FIG. 97 is a flowchart showing an example of a decoding method according to the eighth embodiment. [Figure 98] FIG. 98 is a diagram illustrating a third example of the position shift according to the eighth embodiment. [Figure 99] FIG. 99 is a flowchart showing an example of a coding method according to the eighth embodiment. [Figure 100] FIG. 100 is a flowchart showing an example of a decoding method according to the eighth embodiment. [Figure 101] FIG. 101 is a diagram illustrating a fourth example of the position shift according to the eighth embodiment. [Figure 102] FIG. 102 is a flowchart showing an example of a coding method according to the eighth embodiment. [Figure 103] FIG. 103 is a diagram illustrating a fifth example of the position shift according to the eighth embodiment. [Figure 104] FIG. 104 is a diagram illustrating the coding method according to the eighth embodiment. [Figure 105] FIG. 105 is a diagram illustrating an example of the syntax of the GPS according to the eighth embodiment. [Figure 106] FIG. 106 is a diagram illustrating an example of the syntax of the header of the location information according to the eighth embodiment. [Figure 107] FIG. 107 is a flowchart showing an example of a coding method for switching processes according to the eighth embodiment. [Figure 108] FIG. 108 is a flowchart showing an example of a decoding method for switching processes according to the eighth embodiment. [Figure 109] FIG. 109 is a diagram showing an example of a data structure of a bitstream according to the eighth embodiment. [Figure 110] FIG. 110 shows an example in which the divided data of FIG. 109 according to the eighth embodiment is organized into frames. [Figure 111] FIG. 111 is a diagram showing another example of divided regions according to the eighth embodiment. [Figure 112] FIG. 112 is a diagram showing another example of divided regions according to the eighth embodiment. [Figure 113] FIG. 113 is a diagram showing another example of divided regions according to the eighth embodiment. [Figure 114] FIG. 114 is a diagram showing another example of divided regions according to the eighth embodiment. [Figure 115] FIG. 115 is a diagram showing another example of a data structure according to the eighth embodiment. [Figure 116] FIG. 116 is a diagram showing another example of a data structure according to the eighth embodiment. [Figure 117] FIG. 117 is a diagram showing another example of a data structure according to the eighth embodiment. [Figure 118] FIG. 118 is a diagram showing another example of a data structure according to the eighth embodiment. [Figure 119] FIG. 119 is a diagram showing another example of a data structure according to the eighth embodiment. [Figure 120] FIG. 120 is a flowchart of the encoding process according to the eighth embodiment. [Figure 121] FIG. 121 is a flowchart of the decoding process according to the eighth embodiment. DETAILED DESCRIPTION OF THE INVENTION
[0017] A three-dimensional data encoding method according to one embodiment of the present disclosure is a three-dimensional data encoding method for encoding point cloud data indicating multiple three-dimensional positions in a three-dimensional space, which comprises: moving the point cloud data by a first movement amount; dividing the three-dimensional space into multiple subspaces to divide the point cloud data into multiple sub-point cloud data; moving each of the multiple sub-point cloud data included in the point cloud data after moving the first movement amount by a second movement amount based on the position of the subspace in which the sub-point cloud data is included; and encoding the multiple sub-point cloud data after movement to generate a bit stream, wherein the bit stream includes first movement information for calculating the first movement amount and multiple second movement information for calculating each of the multiple second movement amounts obtained by moving the multiple sub-point cloud data.
[0018] According to this, since the divided sub-point cloud data is moved and then encoded, the amount of information of the position information of each sub-point cloud data can be reduced, and encoding efficiency can be improved.
[0019] For example, the plurality of subspaces may have equal sizes, and each of the plurality of second movement information may include the number of the plurality of subspaces and first identification information for identifying the corresponding subspace.
[0020] This makes it possible to reduce the amount of information in the second movement information, thereby improving coding efficiency.
[0021] For example, the first identification information may be a Morton order corresponding to each of the plurality of subspaces.
[0022] For example, each of the multiple subspaces may be a space obtained by dividing a single three-dimensional space using an octree, and the bitstream may include second identification information indicating that the multiple subspaces are spaces divided using an octree, and depth information indicating the depth of the octree.
[0023] Therefore, since the point cloud data in the three-dimensional space is divided using an octree, the amount of information of the position information of each sub-point cloud data can be reduced, and the coding efficiency can be improved.
[0024] For example, the division may be performed after the point cloud data is moved by the first movement amount.
[0025] In addition, a three-dimensional data decoding method according to one embodiment of the present disclosure may decode from a bitstream a plurality of sub-point cloud data into which point cloud data indicating a plurality of three-dimensional positions is divided by dividing a three-dimensional space into a plurality of subspaces, each of which has been moved by a first movement amount and a corresponding second movement amount, first movement information for calculating the first movement amount, and a plurality of second movement information for calculating each of the plurality of second movement amounts by which the plurality of sub-point cloud data has been moved, and restore the point cloud data by moving each of the plurality of sub-point cloud data by an amount obtained by adding the first movement amount and the corresponding second movement amount.
[0026] This allows the point group data to be correctly decoded using a bitstream with improved coding efficiency.
[0027] For example, the plurality of subspaces may have equal sizes, and each of the plurality of second movement information may include the number of the plurality of subspaces and first identification information for identifying the corresponding subspace.
[0028] For example, the first identification information may be a Morton order corresponding to each of the plurality of subspaces.
[0029] For example, each of the multiple subspaces may be a space obtained by dividing a single three-dimensional space using an octree, and the bitstream may include second identification information indicating that the multiple subspaces are spaces divided using an octree, and depth information indicating the depth of the octree.
[0030] Furthermore, a three-dimensional data encoding device according to one aspect of the present disclosure is a three-dimensional data encoding device that encodes point cloud data indicating a plurality of three-dimensional positions in a three-dimensional space, and includes a processor and a memory. The processor uses the memory to move the point cloud data by a first movement amount, and divides the three-dimensional space into a plurality of sub-spaces to divide the point cloud data into a plurality of sub-point cloud data. For each of the plurality of sub-point cloud data included in the point cloud data after moving by the first movement amount, the sub-point cloud data is moved by a second movement amount based on the position of the sub-space in which the sub-point cloud data is included. A bit stream is generated by encoding the plurality of sub-point cloud data after moving, and the bit stream includes first movement information for calculating the first movement amount and a plurality of second movement information for calculating each of the plurality of second movement amounts obtained by moving the plurality of sub-point cloud data.
[0031] According to this, since the divided sub-point cloud data is moved and then encoded, the amount of information of the position information of each sub-point cloud data can be reduced, and encoding efficiency can be improved.
[0032] In addition, a three-dimensional data decoding device according to one aspect of the present disclosure includes a processor and a memory, and the processor may use the memory to decode from a bitstream a plurality of sub-point cloud data, each of which is obtained by dividing point cloud data indicating a plurality of three-dimensional positions by dividing a three-dimensional space into a plurality of subspaces, the plurality of sub-point cloud data being moved by a first movement amount and a corresponding second movement amount, first movement information for calculating the first movement amount, and a plurality of second movement information for calculating the second movement amounts by which the plurality of sub-point cloud data have been moved, and restore the point cloud data by moving each of the plurality of sub-point cloud data by an amount obtained by adding the first movement amount and the corresponding second movement amount.
[0033] This allows the point group data to be correctly decoded using a bitstream with improved coding efficiency.
[0034] These comprehensive or specific aspects may be realized as a system, a method, an integrated circuit, a computer program, or a computer-readable recording medium such as a CD-ROM, or may be realized as any combination of a system, a method, an integrated circuit, a computer program, and a recording medium.
[0035] Hereinafter, the embodiments will be described in detail with reference to the drawings. Note that each of the embodiments described below represents a specific example of the present disclosure. The numerical values, shapes, materials, components, component placement and connection configurations, steps, and step order shown in the following embodiments are merely examples and are not intended to limit the present disclosure. Furthermore, among the components in the following embodiments, components that are not described in an independent claim that represents a superordinate concept will be described as optional components.
[0036] (Embodiment 1) When using encoded point cloud data in an actual device or service, it is desirable to transmit and receive the information required for the application in order to reduce network bandwidth. However, until now, such a function has not existed in the encoding structure of 3D data, and no encoding method for this purpose has existed.
[0037] In this embodiment, we will describe a three-dimensional data encoding method and a three-dimensional data encoding device that provide the function of transmitting and receiving information required for the purpose 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 that decodes the encoded data, a three-dimensional data multiplexing method that multiplexes the encoded data, and a three-dimensional data transmission method that transmits the encoded data.
[0038] In particular, two encoding methods (encoding schemes) are currently being considered as encoding methods (encoding systems) for 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.
[0039] Furthermore, there has been no method to date that supports a format in which two codecs, a first encoding method and a second encoding method, are mixed, such as PCC (Point Cloud Compression).
[0040] In this embodiment, a description will be given of the 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.
[0041] 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.
[0042] The three-dimensional data encoding system 4601 generates encoded data or multiplexed data by encoding point cloud data, which is three-dimensional data. Note that the three-dimensional data encoding system 4601 may be a three-dimensional data encoding device realized by a single device, or may be a system realized by multiple devices. Furthermore, the three-dimensional data encoding device may include some of the multiple processing units included in the three-dimensional data encoding system 4601.
[0043] The three-dimensional data encoding system 4601 includes a point cloud data generation system 4611, a presentation unit 4612, an encoding unit 4613, a multiplexing unit 4614, an input / output unit 4615, and a control unit 4616. The point cloud data generation system 4611 includes a sensor information acquisition unit 4617 and a point cloud data generation unit 4618.
[0044] The sensor information acquisition unit 4617 acquires sensor information from the sensor terminal 4603 and outputs the sensor information to the point cloud data generation unit 4618. The point cloud data generation unit 4618 generates point cloud data from the sensor information and outputs the point cloud data to the encoding unit 4613.
[0045] The presentation unit 4612 presents the sensor information or point cloud data to the user. For example, the presentation unit 4612 displays information or an image based on the sensor information or point cloud data.
[0046] 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.
[0047] The multiplexing unit 4614 generates multiplexed data by multiplexing the coded data input from the coding unit 4613, the control information, and the additional information. The format of the multiplexed data is, for example, a file format for storage or a packet format for transmission.
[0048] The input / output unit 4615 (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 application execution unit) controls each processing unit. In other words, the control unit 4616 controls encoding, multiplexing, etc.
[0049] The sensor information may be input to the encoding unit 4613 or the multiplexing unit 4614. The input / output unit 4615 may output the point cloud data or the encoded data directly to the outside.
[0050] The transmission signal (multiplexed data) output from the three-dimensional data encoding system 4601 is input to the three-dimensional data decoding system 4602 via the external connection unit 4604 .
[0051] The three-dimensional data decoding system 4602 generates point cloud data, which is three-dimensional data, by decoding the encoded data or multiplexed data. Note that the three-dimensional data decoding system 4602 may be a three-dimensional data decoding device realized by a single device, or may be a system realized by multiple devices. Furthermore, the three-dimensional data decoding device may include some of the multiple processing units included in the three-dimensional data decoding system 4602.
[0052] The three-dimensional data decoding system 4602 includes a sensor information acquisition unit 4621 , an input / output unit 4622 , a demultiplexing unit 4623 , a decoding unit 4624 , a presentation unit 4625 , a user interface 4626 , and a control unit 4627 .
[0053] The sensor information acquisition unit 4621 acquires sensor information from the sensor terminal 4603 .
[0054] The input / output unit 4622 acquires the transmission signal, decodes the multiplexed data (file format or packets) from the transmission signal, and outputs the multiplexed data to the demultiplexer 4623.
[0055] The demultiplexing unit 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 decoding unit 4624.
[0056] The decoding unit 4624 reconstructs the point cloud data by decoding the encoded data.
[0057] The presentation unit 4625 presents the point cloud data to the user. For example, the presentation unit 4625 displays information or images based on the point cloud data. The user interface 4626 acquires instructions based on user operations. The control unit 4627 (or the application execution unit) controls each processing unit. In other words, the control unit 4627 controls demultiplexing, decoding, presentation, etc.
[0058] The input / output unit 4622 may acquire point cloud data or encoded data directly from the outside. The presentation unit 4625 may acquire additional information such as sensor information and present information based on the additional information. The presentation unit 4625 may perform presentation based on a user instruction acquired by the user interface 4626.
[0059] The sensor terminal 4603 generates sensor information, which is information obtained by a sensor. The sensor terminal 4603 is a terminal equipped with a sensor or a camera, and examples thereof include a moving body such as an automobile, a flying object such as an airplane, a mobile terminal, or a camera.
[0060] The sensor information that can be acquired by the sensor terminal 4603 includes, 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 infrared sensor, and (2) the distance between a camera and an object, or the reflectance of the object, obtained from multiple 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.
[0061] The external connection unit 4604 is realized by an integrated circuit (LSI or IC), an external storage unit, communication with a cloud server via the Internet, broadcasting, or the like.
[0062] Next, point cloud data will be described. Fig. 2 is a diagram showing the configuration of point cloud data. Fig. 3 is a diagram showing an example of the configuration of a data file in which information about point cloud data is written.
[0063] Point cloud data includes data on multiple points. The data on each point includes location information (three-dimensional coordinates) and attribute information for that location information. A collection of multiple points is called a point cloud. For example, a point cloud can represent the three-dimensional shape of an object.
[0064] Position information such as three-dimensional coordinates is sometimes called geometry. Data for each point may also include attribute information of multiple attribute types. Attribute types include, for example, color or reflectance.
[0065] One piece of attribute information may be associated with one piece of location information, or multiple pieces of attribute information with 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.
[0066] The configuration example of the data file shown in FIG. 3 is an example in which there is a one-to-one correspondence between position information and attribute information, and shows the position information and attribute information of N points that make up the point cloud data.
[0067] The position information is, for example, information on the three axes x, y, and z. The attribute information is, for example, RGB color information. A typical data file is a ply file.
[0068] Next, the types of point cloud data will be explained. 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.
[0069] 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 simply a frame.
[0070] The object may be a point cloud with a certain area restriction, such as ordinary video data, or a large-scale point cloud with no area restriction, such as map information.
[0071] Furthermore, there may be point cloud data of various densities, such as sparse point cloud data and dense point cloud data.
[0072] Each processing unit will be described in detail below. 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.
[0073] The point cloud data generation unit 4618 may process the point cloud data when generating position information or adding attribute information. For example, the point cloud data generation unit 4618 may reduce the amount of data by deleting point clouds with overlapping positions. In addition, the point cloud data generation unit 4618 may convert (position shift, rotation, normalization, etc.) the position information or render the attribute information.
[0074] In FIG. 1, the point cloud data generation system 4611 is included in the three-dimensional data encoding system 4601, but it may be provided independently outside the three-dimensional data encoding system 4601.
[0075] The encoding unit 4613 generates encoded data by encoding the point cloud data based on a predetermined encoding method. There are two main types of encoding methods: the first is an encoding method that uses position information, and this encoding method will be referred to as the first encoding method hereinafter; and the second is an encoding method that uses a video codec, and this encoding method will be referred to as the second encoding method hereinafter.
[0076] The decoding unit 4624 decodes the coded data based on a predetermined coding method to decode the point group data.
[0077] The multiplexing unit 4614 generates multiplexed data by multiplexing the encoded data using an existing multiplexing method. The generated multiplexed data is transmitted or stored. In addition to the PCC encoded data, the multiplexing unit 4614 multiplexes other media such as video, audio, subtitles, applications, and files, or reference time information. The multiplexing unit 4614 may also multiplex attribute information related to sensor information or point cloud data.
[0078] Multiplexing methods or file formats include ISOBMFF, MPEG-DASH, which is an ISOBMFF-based transmission method, MMT, MPEG-2 TS Systems, and RMP.
[0079] The demultiplexer 4623 extracts PCC encoded data, other media, time information, and the like from the multiplexed data.
[0080] The input / output unit 4615 transmits the multiplexed data using a method suited to the transmission medium or 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.
[0081] 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.
[0082] Either wired 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 waves, etc. are used.
[0083] As a broadcasting system, for example, DVB-T2, DVB-S2, DVB-C2, ATSC3.0, or ISDB-S3 is used.
[0084] Fig. 5 is a diagram showing the configuration of a first encoding unit 4630, which is an example of 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. This first encoding unit 4630 includes a position information encoding unit 4631, an attribute information encoding unit 4632, an additional information encoding unit 4633, and a multiplexing unit 4634.
[0085] The first encoding unit 4630 is characterized in that it performs encoding taking into consideration a three-dimensional structure. The first encoding unit 4630 is also characterized in 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).
[0086] The point cloud data is PCC point cloud data such as a PLY file, or PCC point cloud data generated from sensor information, and includes position information (Position), attribute information (Attribute), and other additional information (MetaData). The position information is input to a position information encoder 4631, the attribute information is input to an attribute information encoder 4632, and the additional information is input to an additional information encoder 4633.
[0087] The position information encoding unit 4631 encodes the position information to generate encoded position information (Compressed Geometry), which is encoded data. For example, the position information encoding unit 4631 encodes the position information using an N-ary tree structure such as an octree. Specifically, in an octree, the target space is divided into eight nodes (subspaces), and 8-bit information (occupancy code) indicating whether or not a point cloud is included in each node is generated. Furthermore, the node including 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 layer or node falls below a threshold.
[0088] 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 when 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 references a peripheral node or adjacent node 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.
[0089] 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 the state of the reference node (e.g., occupancy information indicating whether the reference node includes a point group) 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.
[0090] The additional information encoding unit 4633 generates encoded additional information (Compressed MetaData) that is encoded data by encoding compressible data from the additional information.
[0091] The multiplexing unit 4634 multiplexes the encoding position information, the encoding attribute information, the encoding additional information, and other additional information to generate a compressed stream, which is encoded data. The generated compressed stream is output to a processing unit in a system layer (not shown).
[0092] Next, a first decoding unit 4640, which is an example of the decoding unit 4624 that performs decoding using the first encoding method, will be described. FIG. 7 is a diagram showing the configuration of the first decoding unit 4640. FIG. 8 is a block diagram of the first decoding unit 4640. The first decoding unit 4640 generates point cloud data by decoding, using the first encoding method, coded data (coded stream) coded using the first coding method. The first decoding unit 4640 includes a demultiplexing unit 4641, a position information decoding unit 4642, an attribute information decoding unit 4643, and an additional information decoding unit 4644.
[0093] A coded stream (compressed stream) that is coded data is input to the first decoding unit 4640 from a processing unit in a system layer (not shown).
[0094] 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.
[0095] The position information decoding unit 4642 generates position information by decoding the encoded position information. For example, the position information decoding unit 4642 restores the position information of a point group represented by three-dimensional coordinates from the encoded position information represented by an N-ary tree structure such as an octree.
[0096] The attribute information decoding unit 4643 decodes the encoded attribute information based on the configuration information generated by the position information decoding unit 4642. For example, the attribute information decoding unit 4643 determines a reference point (reference node) to be referenced in decoding the 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 references a peripheral node or adjacent node 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.
[0097] Furthermore, the attribute information decoding process 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 the state of the reference node (e.g., occupancy information indicating whether the reference node includes a point group) to determine a decoding parameter. For example, the decoding parameter is a quantization parameter in an inverse quantization process, or a context in an arithmetic decoding process.
[0098] The additional information decoding unit 4644 generates additional information by decoding the encoded additional information. The first decoding unit 4640 uses the additional information necessary for decoding the position information and attribute information during decoding, and outputs the additional information necessary for the application to the outside.
[0099] Next, a description will be given of second encoding unit 4650, which is an example of encoding unit 4613 that performs encoding using the second encoding method. Fig. 9 is a diagram showing the configuration of second encoding unit 4650. Fig. 10 is a block diagram of second encoding unit 4650.
[0100] The second encoding unit 4650 generates encoded data (encoded stream) by encoding the point cloud data using a second encoding method. The second encoding unit 4650 includes an additional information generation unit 4651, a position image generation unit 4652, an attribute image generation unit 4653, a video encoding unit 4654, an additional information encoding unit 4655, and a multiplexing unit 4656.
[0101] The second encoding unit 4650 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).
[0102] The point cloud data is PCC point cloud data such as a PLY file, or PCC point cloud data generated from sensor information, and includes position information (Position), attribute information (Attribute), and other additional information (MetaData).
[0103] The additional information generating unit 4651 generates map information of a plurality of two-dimensional images by projecting a three-dimensional structure onto the two-dimensional images.
[0104] The position image generation unit 4652 generates a position image (Geometry Image) based on the position information and the map information generated by the additional information generation unit 4651. This position image is, for example, a distance image in which distance (Depth) is indicated as a pixel value. Note that this distance image may be an image in which multiple point clouds are viewed from a single viewpoint (an image in which multiple point clouds are projected onto a single two-dimensional plane), or may be multiple images in which multiple point clouds are viewed from multiple viewpoints, or may be a single image in which these multiple images are integrated.
[0105] The attribute image generation unit 4653 generates an attribute image based on the attribute information and the map information generated by the additional information generation unit 4651. This attribute image is, for example, an image in which attribute information (for example, color (RGB)) is represented 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.
[0106] The video encoding unit 4654 generates an encoded position image (Compressed Geometry Image) and an encoded attribute image (Compressed Attribute Image), which are encoded data, by encoding the position image and the attribute image using a video encoding method. Note that any known encoding method may be used as the video encoding method. For example, the video encoding method is AVC, HEVC, or the like.
[0107] The additional information encoding unit 4655 generates encoded additional information (Compressed MetaData) by encoding the additional information, map information, and the like included in the point cloud data.
[0108] 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 in a system layer (not shown).
[0109] Next, a second decoding unit 4660, which is an example of the decoding unit 4624 that performs decoding using the second encoding method, will be described. FIG. 11 is a diagram showing the configuration of the second decoding unit 4660. FIG. 12 is a block diagram of the second decoding unit 4660. The second decoding unit 4660 generates point cloud data by decoding, using the second encoding method, coded data (coded stream) coded using the second coding method. The second decoding unit 4660 includes a demultiplexing unit 4661, a video decoding unit 4662, an additional information decoding unit 4663, a position information generation unit 4664, and an attribute information generation unit 4665.
[0110] A coded stream (compressed stream) that is coded data is input to the second decoding unit 4660 from a processing unit in a system layer (not shown).
[0111] 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.
[0112] The video decoding unit 4662 generates a position image and an attribute image by decoding the encoded position image and the encoded attribute image using a video encoding method. Note that any known encoding method may be used as the video encoding method. For example, the video encoding method may be AVC or HEVC.
[0113] The additional information decoding unit 4663 decodes the encoded additional information to generate additional information including map information and the like.
[0114] 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.
[0115] The second decoding unit 4660 uses the additional information necessary for decoding during decoding, and outputs the additional information necessary for the application to the outside.
[0116] The following describes the problems with the PCC encoding method. 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 onto the PCC encoded data and transmitted or stored.
[0117] Multiplexing methods and file formats have the function of multiplexing various coded data and transmitting or storing them. To transmit or store coded data, the coded data must be converted into the format of the multiplexing method. For example, HEVC specifies a technology that stores coded data in a data structure called a NAL unit and stores the NAL unit in ISOBMFF.
[0118] On the other hand, currently, a first encoding method (Codec1) and a second encoding method (Codec2) are being considered as methods for encoding point cloud data, but 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, as it stands, it is not possible to perform MUX processing (multiplexing) in the encoding unit, transmission, or storage.
[0119] In the following description, unless a specific encoding method is specified, it refers to either the first encoding method or the second encoding method.
[0120] (Embodiment 2) In this embodiment, a method for storing NAL units in an ISOBMFF file will be described.
[0121] ISOBMFF (ISO based media file format) is a file format standard defined in ISO / IEC 14496-12. ISOBMFF is a media-independent standard that defines a format that can store multiplexed media such as video, audio, and text.
[0122] This section explains the basic structure (file) of ISOBMFF. 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.
[0123] 14 is a diagram showing the basic structure (file) of ISOBMFF. An ISOBMFF file mainly includes boxes such as ftyp, which indicates the file brand using 4CC (four-character code), moov, which stores metadata such as control information, and mdat, which stores data.
[0124] Storing methods for each media type in ISOBMFF files are specified separately. For example, storage methods for AVC video and HEVC video are specified in ISO / IEC 14496-15. While it is conceivable to extend and use the functions of ISOBMFF to store or transmit PCC encoded data, there are no regulations yet for storing PCC encoded data in ISOBMFF files. Therefore, in this embodiment, a method for storing PCC encoded data in an ISOBMFF file will be described.
[0125] 15 is a diagram showing a protocol stack when NAL units common to PCC codecs are stored in an ISOBMFF file. Here, NAL units common to PCC codecs are stored in an ISOBMFF file. Although NAL units are common to PCC codecs, multiple PCC codecs are stored in the NAL unit, so it is desirable to define a storage method (Carriage of Codec1, Carriage of Codec2) according to each codec.
[0126] Next, a method for storing a common PCC NAL unit that supports multiple PCC codecs in an ISOBMFF file will be described. Fig. 16 is a diagram showing an example of storing a common PCC NAL unit in an ISOBMFF file using the storage method for codec 1 (Carriage of Codec1). Fig. 17 is a diagram showing an example of storing a common PCC NAL unit in an ISOBMFF file using the storage method for codec 2 (Carriage of Codec2).
[0127] Here, ftyp is important information for identifying the file format, and a different identifier is defined for ftyp for each codec. When PCC-encoded data encoded using a first encoding method (encoding system) is stored in a file, ftyp=pcc1 is set. When PCC-encoded data encoded using a second encoding method is stored in a file, ftyp=pcc2 is set.
[0128] Here, pcc1 indicates that PCC codec 1 (first encoding method) is used, and pcc2 indicates that PCC codec 2 (second encoding method) is used. In other words, pcc1 and pcc2 indicate that the data is PCC (coded data of three-dimensional data (point cloud data)), and also indicate the PCC codecs (first and second encoding methods).
[0129] A method for storing NAL units in an ISOBMFF file will be described below. The multiplexing unit analyzes the NAL unit header, and if pcc_codec_type=Codec1, writes pcc1 in ftyp of ISOBMFF.
[0130] Furthermore, the multiplexing unit analyzes the NAL unit header, and if pcc_codec_type=Codec2, writes pcc2 in ftyp of ISOBMFF.
[0131] Furthermore, if pcc_nal_unit_type is metadata, the multiplexing unit stores the NAL unit in a predetermined manner, for example, in moov or mdat. If pcc_nal_unit_type is data, the multiplexing unit stores the NAL unit in a predetermined manner, for example, in moov or mdat.
[0132] For example, the multiplexing unit may store the NAL unit size in the NAL unit, similar to HEVC.
[0133] This storage method enables the demultiplexer (system layer) to analyze the ftyp included in the file to determine whether the PCC-encoded data was encoded using the first encoding method or the second encoding method. Furthermore, as described above, by determining whether the PCC-encoded data was encoded using the first encoding method or the second encoding method, it is possible to extract encoded data encoded using one of the encoding methods from data containing a mixture of data encoded using both encoding methods. This reduces the amount of data transmitted when transmitting encoded data. Furthermore, this storage method allows a common data format to be used for the first encoding method and the second encoding method, without requiring different data (file) formats to be set.
[0134] In addition, when codec identification information is indicated in metadata of the system layer, such as ftyp in ISOBMFF, the multiplexing unit may store NAL units from which pcc_nal_unit_type has been deleted in an ISOBMFF file.
[0135] Next, the configuration and operation of the multiplexing unit provided in the three-dimensional data encoding system (three-dimensional data encoding device) according to this embodiment and the demultiplexing unit provided in the three-dimensional data decoding system (three-dimensional data decoding device) according to this embodiment will be described.
[0136] 18 is a diagram showing the configuration of the first multiplexing unit 4710. The first multiplexing unit 4710 includes a file conversion unit 4711 that generates multiplexed data (file) by storing the coded data and control information (NAL units) generated by the first coding unit 4630 in an ISOBMFF file. This first multiplexing unit 4710 is included in, for example, the multiplexing unit 4614 shown in FIG.
[0137] 19 is a diagram showing the configuration of the first demultiplexing unit 4720. The first demultiplexing unit 4720 includes a file inverse conversion unit 4721 that acquires coded data and control information (NAL units) from multiplexed data (file) and outputs the acquired coded data and control information to the first decoding unit 4640. This first demultiplexing unit 4720 is included in the demultiplexing unit 4623 shown in FIG. 1, for example.
[0138] 20 is a diagram showing the configuration of the second multiplexing unit 4730. The second multiplexing unit 4730 includes a file conversion unit 4731 that generates multiplexed data (file) by storing the coded data and control information (NAL units) generated by the second coding unit 4650 in an ISOBMFF file. This second multiplexing unit 4730 is included in, for example, the multiplexing unit 4614 shown in FIG. 1.
[0139] 21 is a diagram showing the configuration of the second demultiplexing unit 4740. The second demultiplexing unit 4740 includes a file inverse conversion unit 4741 that acquires coded data and control information (NAL units) from multiplexed data (file) and outputs the acquired coded data and control information to the second decoding unit 4660. This second demultiplexing unit 4740 is included in, for example, the demultiplexing unit 4623 shown in FIG.
[0140] 22 is a flowchart of the multiplexing process by the first multiplexing unit 4710. First, the first multiplexing unit 4710 analyzes pcc_codec_type included in the NAL unit header to determine whether the codec being used is the first encoding method or the second encoding method (S4701).
[0141] If pcc_codec_type indicates the second encoding method (second encoding method in S4702), the first multiplexing unit 4710 does not process the NAL unit (S4703).
[0142] On the other hand, if pcc_codec_type indicates the second encoding method (first encoding method in S4702), the first multiplexing unit 4710 writes pcc1 in ftyp (S4704). In other words, the first multiplexing unit 4710 writes information in ftyp indicating that data encoded using the first encoding method is stored in the file.
[0143] Next, the first multiplexing unit 4710 analyzes the pcc_nal_unit_type included in the NAL unit header, and stores the data in a box (moov, mdat, or the like) using a predetermined method according to the data type indicated by the pcc_nal_unit_type (S4705).Then, the first multiplexing unit 4710 creates an ISOBMFF file including the ftyp and the box (S4706).
[0144] 23 is a flowchart of the multiplexing process by the second multiplexing unit 4730. First, the second multiplexing unit 4730 analyzes pcc_codec_type included in the NAL unit header to determine whether the codec being used is the first encoding method or the second encoding method (S4711).
[0145] If pcc_unit_type indicates the second encoding method (second encoding method in S4712), the second multiplexing unit 4730 writes pcc2 in ftyp (S4713). In other words, the second multiplexing unit 4730 writes information in ftyp indicating that data encoded using the second encoding method is stored in the file.
[0146] Next, the second multiplexing unit 4730 analyzes pcc_nal_unit_type included in the NAL unit header, and stores the data in a box (moov, mdat, etc.) using a predetermined method according to the data type indicated by pcc_nal_unit_type (S4714).Then, the second multiplexing unit 4730 creates an ISOBMFF file including the ftyp and the box (S4715).
[0147] On the other hand, if pcc_unit_type indicates the first encoding method (first encoding method in S4712), the second multiplexing unit 4730 does not process the NAL unit (S4716).
[0148] Note that the above process shows an example in which PCC data is encoded using either the first encoding method or the second encoding method. The first multiplexing unit 4710 and the second multiplexing unit 4730 store the desired NAL unit in a file by identifying the codec type of the NAL unit. Note that if PCC codec identification information is included in addition to the NAL unit header, the first multiplexing unit 4710 and the second multiplexing unit 4730 may identify the codec type (first encoding method or second encoding method) in steps S4701 and S4711 using the PCC codec identification information included in addition to the NAL unit header.
[0149] Furthermore, when storing data in a file in steps S4706 and S4714, the first multiplexing unit 4710 and the second multiplexing unit 4730 may delete pcc_nal_unit_type from the NAL unit header before storing the data in the file.
[0150] 24 is a flowchart showing the processing by the first demultiplexing unit 4720 and the first decoding unit 4640. First, the first demultiplexing unit 4720 analyzes ftyp included in the ISOBMFF file (S4721). If the codec indicated by ftyp is the second encoding method (pcc2) (second encoding method in S4722), the first demultiplexing unit 4720 determines that the data included in the payload of the NAL unit is data encoded using the second encoding method (S4723). The first demultiplexing unit 4720 also conveys the result of this determination to the first decoding unit 4640. The first decoding unit 4640 does not process the NAL unit (S4724).
[0151] On the other hand, if the codec indicated by ftyp is the first encoding method (pcc1) (first encoding method in S4722), the first demultiplexing unit 4720 determines that the data included in the payload of the NAL unit is data encoded using the first encoding method (S4725). In addition, the first demultiplexing unit 4720 conveys the result of this determination to the first decoding unit 4640.
[0152] The first decoding unit 4640 identifies the data by determining that the pcc_nal_unit_type included in the NAL unit header is an identifier of the NAL unit for the first encoding method (S4726).Then, the first decoding unit 4640 decodes the PCC data using the decoding process for the first encoding method (S4727).
[0153] 25 is a flowchart showing the processing by the second demultiplexing unit 4740 and the second decoding unit 4660. First, the second demultiplexing unit 4740 analyzes ftyp included in the ISOBMFF file (S4731). If the codec indicated by ftyp is the second encoding method (pcc2) (second encoding method in S4732), the second demultiplexing unit 4740 determines that the data included in the payload of the NAL unit is data encoded using the second encoding method (S4733). The second demultiplexing unit 4740 also conveys the result of this determination to the second decoding unit 4660.
[0154] The second decoding unit 4660 identifies the data by determining that the pcc_nal_unit_type included in the NAL unit header is an identifier of the NAL unit for the second encoding method (S4734).Then, the second decoding unit 4660 decodes the PCC data using the decoding process for the second encoding method (S4735).
[0155] On the other hand, if the codec indicated by ftyp is the first encoding method (pcc1) (first encoding method in S4732), the second demultiplexing unit 4740 determines that the data included in the payload of the NAL unit is data encoded using the first encoding method (S4736). The second demultiplexing unit 4740 also conveys the result of this determination to the second decoding unit 4660. The second decoding unit 4660 does not process the NAL unit (S4737).
[0156] In this way, for example, by identifying the codec type of the NAL unit in the first demultiplexing unit 4720 or the second demultiplexing unit 4740, the codec type can be identified at an early stage. Furthermore, desired NAL units can be input to the first decoding unit 4640 or the second decoding unit 4660, and unnecessary NAL units can be removed. In this case, the process of analyzing codec identification information may become unnecessary in the first decoding unit 4640 or the second decoding unit 4660. Note that the first decoding unit 4640 or the second decoding unit 4660 may again refer to the NAL unit type and perform the process of analyzing codec identification information.
[0157] In addition, if the first multiplexing unit 4710 or the second multiplexing unit 4730 removes the pcc_nal_unit_type from the NAL unit header, the first demultiplexing unit 4720 or the second demultiplexing unit 4740 may add the pcc_nal_unit_type to the NAL unit and then output it to the first decoding unit 4640 or the second decoding unit 4660.
[0158] (Embodiment 3) This embodiment will describe a multiplexing unit and a demultiplexing unit corresponding to the encoding unit 4670 and decoding unit 4680 that support multiple codecs, as described in Embodiment 1. Figure 26 shows the configurations of the encoding unit 4670 and third multiplexing unit 4750 according to this embodiment.
[0159] The encoding unit 4670 encodes the point cloud data using either or both of a first encoding method and a second encoding method. The encoding unit 4670 may switch the encoding method (the first encoding method and the second encoding method) for each point cloud data unit or for each frame unit. The encoding unit 4670 may also switch the encoding method for each encoding unit.
[0160] The encoding unit 4670 generates encoded data (encoded stream) including identification information of the PCC codec.
[0161] The third multiplexing unit 4750 includes a file conversion unit 4751. The file conversion unit 4751 converts the NAL units output from the encoding unit 4670 into a PCC data file. The file conversion unit 4751 analyzes the codec identification information included in the NAL unit header and determines whether the PCC-encoded data is data encoded using a first encoding method, data encoded using a second encoding method, or data encoded using both methods. The file conversion unit 4751 writes a brand name that can identify the codec in ftyp. For example, to indicate that the data has been encoded using both methods, pcc3 is written in ftyp.
[0162] If the encoding unit 4670 describes PCC codec identification information outside the NAL unit, the file conversion unit 4751 may use this identification information to determine the PCC codec (encoding method).
[0163] FIG. 27 shows the configuration of third demultiplexing section 4760 and decoding section 4680 according to this embodiment.
[0164] The third demultiplexing unit 4760 includes a file inverse conversion unit 4761. The file inverse conversion unit 4761 analyzes the ftyp included in the file and determines whether the PCC encoded data is data encoded using the first encoding method, data encoded using the second encoding method, or data encoded using both methods.
[0165] When the PCC-encoded data is encoded using one of the encoding methods, the data is input to the corresponding decoding unit out of the first decoding unit 4640 and the second decoding unit 4660, and the data is not input to the other decoding unit. When the PCC-encoded data is encoded using both encoding methods, the data is input to a decoding unit 4680 that supports both methods.
[0166] The decoding unit 4680 decodes the PCC encoded data using either or both of the first encoding method and the second encoding method.
[0167] FIG. 28 is a flowchart showing processing by the third multiplexing section 4750 according to this embodiment.
[0168] First, the third multiplexing unit 4750 analyzes the pcc_codec_type included in the NAL unit header to determine whether the codec being used is the first encoding method, the second encoding method, or both the first and second encoding methods (S4741).
[0169] If the second encoding method is used (Yes in S4742 and the second encoding method in S4743), the third multiplexing unit 4750 writes pcc2 in ftyp (S4744). That is, the third multiplexing unit 4750 writes information indicating that data encoded using the second encoding method is stored in the file in ftyp.
[0170] Next, the third multiplexing unit 4750 analyzes pcc_nal_unit_type included in the NAL unit header, and stores the data in a box (moov, mdat, etc.) using a predetermined method according to the data type indicated by pcc_unit_type (S4745).Then, the third multiplexing unit 4750 creates an ISOBMFF file including the ftyp and the box (S4746).
[0171] On the other hand, if the first encoding method is used (Yes in S4742 and the first encoding method in S4743), the third multiplexing unit 4750 writes pcc1 in ftyp (S4747). That is, the third multiplexing unit 4750 writes information indicating that data encoded using the first encoding method is stored in the file in ftyp.
[0172] Next, the third multiplexing unit 4750 analyzes pcc_nal_unit_type included in the NAL unit header, and stores the data in a box (moov, mdat, or the like) using a predetermined method according to the data type indicated by pcc_unit_type (S4748).Then, the third multiplexing unit 4750 creates an ISOBMFF file including the ftyp and the box (S4746).
[0173] On the other hand, if both the first encoding method and the second encoding method are used (No in S4742), the third multiplexing unit 4750 writes pcc3 in ftyp (S4749). That is, the third multiplexing unit 4750 writes information in ftyp indicating that data encoded using both encoding methods is stored in the file.
[0174] Next, the third multiplexing unit 4750 analyzes pcc_nal_unit_type included in the NAL unit header, and stores the data in a box (moov, mdat, etc.) using a predetermined method according to the data type indicated by pcc_unit_type (S4750).Then, the third multiplexing unit 4750 creates an ISOBMFF file including the ftyp and the box (S4746).
[0175] 29 is a flowchart showing the processing by the third demultiplexing unit 4760 and the decoding unit 4680. First, the third demultiplexing unit 4760 analyzes ftyp included in the ISOBMFF file (S4761). If the codec indicated by ftyp is the second encoding method (pcc2) (Yes in S4762 and the second encoding method in S4763), the third demultiplexing unit 4760 determines that the data included in the payload of the NAL unit is data encoded using the second encoding method (S4764). The third demultiplexing unit 4760 then conveys the result of this determination to the decoding unit 4680.
[0176] The decoding unit 4680 identifies the data by determining that the pcc_nal_unit_type included in the NAL unit header is an identifier of the NAL unit for the second encoding method (S4765).The decoding unit 4680 then decodes the PCC data using the decoding process for the second encoding method (S4766).
[0177] On the other hand, if the codec indicated by ftyp is the first encoding method (pcc1) (Yes in S4762 and the first encoding method in S4763), the third demultiplexing unit 4760 determines that the data included in the payload of the NAL unit is data encoded using the first encoding method (S4767). The third demultiplexing unit 4760 also conveys the result of this determination to the decoding unit 4680.
[0178] The decoding unit 4680 identifies the data by determining that the pcc_nal_unit_type included in the NAL unit header is an identifier of the NAL unit for the first encoding method (S4768).The decoding unit 4680 then decodes the PCC data using the decoding process for the first encoding method (S4769).
[0179] On the other hand, if ftyp indicates that both encoding methods are used (pcc3) (No in S4762), the third demultiplexing unit 4760 determines that the data included in the payload of the NAL unit is data encoded using both the first encoding method and the second encoding method (S4770). The third demultiplexing unit 4760 also conveys the result of this determination to the decoding unit 4680.
[0180] The decoding unit 4680 identifies the data by determining that pcc_nal_unit_type included in the NAL unit header is an identifier of the NAL unit for the codec described in pcc_codec_type (S4771). Then, the decoding unit 4680 decodes the PCC data using the decoding processes of both encoding methods (S4772). That is, the decoding unit 4680 decodes data encoded using the first encoding method using the decoding process of the first encoding method, and decodes data encoded using the second encoding method using the decoding process of the second encoding method.
[0181] Modifications of this embodiment will be described below. As the brand type indicated in ftyp, the following types may be indicated by the identification information. Also, a combination of the following types may be indicated by the identification information.
[0182] The identification information may indicate whether the object in the original data before PCC encoding is a point cloud with a restricted area or a large-scale point cloud with an unrestricted area such as map information.
[0183] The identification information may indicate whether the original data before PCC encoding is a static object or a dynamic object.
[0184] As described above, the identification information may indicate whether the PCC encoded data is data encoded using a first encoding method or data encoded using a second encoding method.
[0185] The identification information may indicate the algorithm used in the PCC encoding, where the algorithm is, for example, an encoding method that can be used in the first encoding method or the second encoding method.
[0186] The identification information may indicate differences in the storage method of PCC-encoded data in an ISOBMFF file. For example, the identification information may indicate whether the storage method used is for storage or for real-time transmission such as dynamic streaming.
[0187] Although the second and third embodiments have been described with reference to examples in which ISOBMFF is used as the file format, other formats may also be used. For example, a method similar to that of the present embodiment may also be used when storing PCC encoded data in MPEG-2 TS Systems, MPEG-DASH, MMT, or RMP.
[0188] Although the above example shows that metadata such as identification information is stored in ftyp, this metadata may be stored in a location other than ftyp. For example, this metadata may be stored in moov.
[0189] As described above, the three-dimensional data storage device (or the three-dimensional data multiplexing device, or the three-dimensional data encoding device) performs the processing shown in FIG.
[0190] First, the three-dimensional data storage device (including, for example, the first multiplexing unit 4710, the second multiplexing unit 4730, or the third multiplexing unit 4750) acquires one or more units (for example, NAL units) in which an encoded stream in which point cloud data has been encoded is stored (S4781). Next, the three-dimensional data storage device stores the one or more units in a file (for example, an ISOBMFF file) (S4782). Furthermore, in the storing step (S4782), the three-dimensional data storage device stores information (for example, pcc1, pcc2, or pcc3) indicating that the data stored in the file is data in which point cloud data has been encoded, in the control information (for example, ftyp) of the file.
[0191] This allows a device that processes a file generated by the three-dimensional data storage device to refer to the control information of the file and quickly determine whether the data stored in the file is encoded point cloud data, thereby reducing the processing load of the device and speeding up processing.
[0192] For example, the information further indicates which of the first and second encoding methods was used to encode the point cloud data. Note that the fact that the data stored in the file is encoded point cloud data and the encoding method of the first and second encoding methods used to encode the point cloud data may be indicated by a single piece of information or by different pieces of information.
[0193] This allows a device that processes a file created by the three-dimensional data storage device to quickly determine the codec used for the data stored in the file by referencing the file's control information, thereby reducing the processing load of the device or speeding up processing.
[0194] For example, the first encoding method is a method (GPCC) in which position information representing the positions of point cloud data as an N-ary tree (N is an integer greater than or equal to 2) and attribute information is encoded using the position information, and the second encoding method is a method (VPCC) in which a two-dimensional image is generated from the point cloud data and the two-dimensional image is encoded using a video encoding method.
[0195] For example, the file conforms to ISOBMFF (ISO based media file format).
[0196] For example, the three-dimensional data storage device includes a processor and a memory, and the processor uses the memory to perform the above processing.
[0197] As described above, the three-dimensional data acquisition device (or the three-dimensional data demultiplexing device, or the three-dimensional data decoding device) performs the processing shown in FIG.
[0198] The three-dimensional data acquisition device (including, for example, the first demultiplexing unit 4720, the second demultiplexing unit 4740, or the third demultiplexing unit 4760) acquires a file (for example, an ISOBMFF file) that stores one or more units (for example, NAL units) in which an encoded stream in which point cloud data is encoded is stored (S4791). Next, the three-dimensional data acquisition device acquires one or more units from the file (S4792). In addition, the control information of the file (for example, ftyp) includes information (for example, pcc1, pcc2, or pcc3) that indicates that the data stored in the file is data in which point cloud data is encoded.
[0199] For example, the three-dimensional data acquisition device refers to the information and determines whether the data stored in the file is encoded point cloud data. Furthermore, if the three-dimensional data acquisition device determines that the data stored in the file is encoded point cloud data, it generates point cloud data by decoding the encoded point cloud data included in one or more units. Alternatively, if the three-dimensional data acquisition device determines that the data stored in the file is encoded point cloud data, it outputs (notifies) information indicating that the data included in one or more units is encoded point cloud data to a downstream processing unit (e.g., the first decoding unit 4640, the second decoding unit 4660, or the decoding unit 4680).
[0200] This allows the 3D data acquisition device to refer to the control information of the file and quickly determine whether the data stored in the file is encoded point cloud data, thereby reducing the processing load of the 3D data acquisition device or a downstream device and increasing the processing speed.
[0201] For example, the information further indicates the encoding method used for the encoding, either the first encoding method or the second encoding method. Note that the fact that the data stored in the file is data obtained by encoding point cloud data and the encoding method used for encoding the point cloud data, either the first encoding method or the second encoding method, may be indicated by a single piece of information or by different pieces of information.
[0202] This allows the 3D data acquisition device to refer to the control information of the file and quickly determine the codec used for the data stored in the file, thereby reducing the processing load of the 3D data acquisition device or a downstream device and increasing the processing speed.
[0203] For example, based on the information, the three-dimensional data acquisition device acquires data encoded using one of the encoding methods from encoded point cloud data that includes data encoded using the first encoding method and data encoded using the second encoding method.
[0204] For example, the first encoding method is a method (GPCC) in which position information representing the positions of point cloud data as an N-ary tree (N is an integer greater than or equal to 2) and attribute information is encoded using the position information, and the second encoding method is a method (VPCC) in which a two-dimensional image is generated from the point cloud data and the two-dimensional image is encoded using a video encoding method.
[0205] For example, the file conforms to ISOBMFF (ISO based media file format).
[0206] For example, the three-dimensional data acquisition device includes a processor and a memory, and the processor performs the above-mentioned processing using the memory.
[0207] (Fourth embodiment) In this embodiment, the types of coded data (position information (Geometry), attribute information (Attribute), additional information (Metadata)) generated by the first coding unit 4630 or the second coding unit 4650 described above, a method for generating 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.
[0208] 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).
[0209] 32 is a diagram showing the 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 4656 described above.
[0210] 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.
[0211] 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 account data access in the decoding device.
[0212] 33 is a diagram showing an example of the structure of coded data generated by coding unit 4801. 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 end of the arrow. In other words, the decoding device decodes the data at the end of the arrow and uses the decoded data to decode the data at the end of the arrow. In other words, dependency means that the data on which the dependency is based is referenced (used) in the processing (encoding, decoding, etc.) of the data on which the dependency is based.
[0213] 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 by G(i), where i indicates the frame number, the time of the frame, etc.
[0214] 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.
[0215] Furthermore, 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 referred to 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.
[0216] Next, the process of generating coded data of attribute information will be described. The coding unit 4801 generates coded attribute data (Compressed Attribute Data) for each frame by coding the attribute information of each frame. The coded attribute data is represented by A(i). Also, Fig. 33 shows an example in which attribute X and attribute Y exist, and the coded attribute data of attribute X is represented by AX(i) and the coded attribute data of attribute Y is represented by AY(i).
[0217] 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 encoded attribute information. The encoded attribute data depends on the corresponding attribute parameter set.
[0218] Also, coded attribute data consisting of multiple frames is called an attribute sequence (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.
[0219] Furthermore, in the first encoding method, the encoded attribute data depends on the encoded position data.
[0220] 33 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.
[0221] Note that, while FIG. 33 shows an example in which there is one type of position information and two types of attribute information, the present invention is not limited to this, and there may be one type of attribute information, or three or more types. In this case, encoded data can be generated using a similar method. Furthermore, 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.
[0222] Next, the process of generating additional information (metadata) will be described. The encoding unit 4801 generates a PCC Stream PS (also referred to as stream PS), which is a parameter set for the entire PCC stream. The encoding unit 4801 stores, in the stream PS, parameters that can be used in common for decoding processes for one or more position sequences and one or more attribute sequences. For example, the stream PS includes identification information indicating the codec for the point cloud data, information indicating the algorithm used for encoding, and the like. The position sequence and attribute sequence depend on the stream PS.
[0223] Next, the access unit and GOF will be explained. In this embodiment, the concepts of the access unit (AU) and GOF (Group of Frame) are newly introduced.
[0224] 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.
[0225] 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 coded data included in the access unit. The access unit header also includes parameters commonly used for the data included in the access unit, such as parameters related to decoding of the coded data.
[0226] 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 start of the access unit. The decoding device identifies the start of the access unit by detecting the access unit header or the access unit delimiter.
[0227] Next, the generation of identification information for the start of a GOF will be described. The encoding unit 4801 generates a GOF header as identification information that indicates 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 coded data included in the GOF. The GOF header also includes parameters commonly used for the data included in the GOF, such as parameters related to the decoding of the coded data.
[0228] 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 that indicates the beginning of the GOF. The decoding device identifies the beginning of the GOF by detecting the GOF header or the GOF delimiter.
[0229] 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.
[0230] Also, for example, GOF is defined as one random access unit. A 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.
[0231] It should be noted that two or more PCC frames may be allocated to one access unit, and multiple random access units may be allocated to one GOF.
[0232] The encoding unit 4801 may also define and generate parameter sets or metadata other than those described above. For example, the encoding unit 4801 may generate SEI (Supplemental Enhancement Information) that stores parameters (optional parameters) that may not necessarily be used during decoding.
[0233] Next, the structure of coded data and the method of storing coded data in NAL units will be described.
[0234] For example, a data format is defined for each type of coded data. Figure 34 shows examples of coded data and NAL units.
[0235] For example, as shown in Fig. 34, the coded data includes a header and a payload. The coded data may include length information indicating the length (amount of data) of the coded data, the header, or the payload. The coded data may not necessarily include a header.
[0236] The header includes, for example, identification information for identifying the data, such as the data type or frame number.
[0237] 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 relationship between data, and is information for referencing 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.
[0238] If the reference destination or the reference source can be identified or derived from other information, the identification information for specifying the data or the identification information indicating the reference relationship may be omitted.
[0239] The multiplexing unit 4802 stores the coded data in the payload of the NAL unit. The NAL unit header includes pcc_nal_unit_type, which is information identifying the coded data. Figure 35 shows an example of the semantics of pcc_nal_unit_type.
[0240] As shown in Fig. 35, 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.
[0241] 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.
[0242] Next, the data transmission order will be explained. The following explains the restrictions on the transmission order of NAL units.
[0243] 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.
[0244] 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.
[0245] If the coded data has a dependency relationship related to decoding, the decoding device decodes the referenced data first, and then decodes the referenced 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 the referenced data first.
[0246] 36 is a diagram showing examples of the transmission order of NAL units, showing three examples: position information priority, parameter priority, and data integration.
[0247] The sending order with priority given to location information is an example in which information related to location information and information related to attribute information are sent together. In this sending order, the sending of information related to location information is completed earlier than the sending of information related to attribute information.
[0248] 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 wants 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 early.
[0249] In FIG. 36, the attributes XSPS and YSPS are combined and written as the attribute SPS, but the attributes XSPS and YSPS may be arranged separately.
[0250] In the parameter set priority sending order, the parameter sets are sent first and the data is sent later.
[0251] As long as the NAL unit transmission order constraints are met as described above, the multiplexing unit 4802 may transmit NAL units in any order. For example, order identification information may be defined, and the multiplexing unit 4802 may have the function of transmitting NAL units in multiple order patterns. For example, the NAL unit order identification information may be stored in the stream PS.
[0252] 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 on a desired transmission order, and the three-dimensional data encoding device (multiplexing unit 4802) may control the transmission order in accordance with the instructed transmission order.
[0253] The multiplexing unit 4802 may generate coded data that merges multiple functions, as long as the data transmission order conforms to transmission order constraints. For example, as shown in FIG. 36, the GOF header and the AU header may be merged, or the AXPS and the AYPS may be merged. In this case, an identifier indicating that the data has multiple functions is defined in pcc_nal_unit_type.
[0254] A modified example of this embodiment will be described below. PS has levels, such as a frame-level PS, a sequence-level PS, and a PCC sequence-level PS, and if 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.
[0255] 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. Alternatively, the PS value is not written in the higher PS, but written in the lower PS. Alternatively, information on whether the PS value is to be written in the lower PS, the higher PS, or both is written in either the lower PS or the higher PS, or both. Alternatively, the lower PS may be merged with the higher PS. Alternatively, if the lower PS and the higher PS overlap, the multiplexing unit 4802 may omit sending one of them.
[0256] The encoding unit 4801 or the multiplexing unit 4802 may divide the data into slices or tiles and transmit the divided data. The divided data includes information for identifying the divided data, and parameters used to decode 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.
[0257] (Embodiment 5) A method for dividing point cloud data will be described below. Fig. 37 is a diagram showing an example of division into slices and tiles.
[0258] First, the method of dividing into slices will be described. The three-dimensional data encoding device divides three-dimensional point cloud data into arbitrary point clouds in slice units. When dividing into slices, the three-dimensional data encoding device does not divide the position information and attribute information that make up a point, but divides the position information and attribute information together. In other words, the three-dimensional data encoding device divides into slices so that the position information and attribute information of an arbitrary point belong to the same slice. Note that, as long as these are followed, any number of divisions and any division method may be used. Furthermore, the smallest division unit is a point. For example, the number of divisions for position information and attribute information is the same. For example, after dividing into slices, the three-dimensional point corresponding to the position information and the three-dimensional point corresponding to the attribute information are included in the same slice.
[0259] Furthermore, the 3D data encoding device generates slice additional information, which is additional information related to the number of divisions and the division method when dividing the slice. The slice additional information is the same as position information and attribute information. For example, the slice additional information includes information indicating the reference coordinate position, size, or side length of the bounding box after division. The slice additional information also includes information indicating the number of divisions, the division type, etc.
[0260] Next, a tile division method will be described. The three-dimensional data encoding device divides the sliced data into slice position information (G slices) and slice attribute information (A slices), and divides each of the slice position information and slice attribute information into tiles.
[0261] Although FIG. 37 shows an example of division using an octree structure, any number of divisions and any division method may be used.
[0262] Furthermore, the three-dimensional data encoding device may divide the position information and the attribute information using different division methods or the same division method. Furthermore, the three-dimensional data encoding device may divide multiple slices into tiles using different division methods or the same division method.
[0263] Furthermore, the 3D data encoding device generates tile additional information relating to the number of divisions and the division method when dividing the tile. 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, division type, etc.
[0264] Next, an example of a method for dividing point cloud data into slices or tiles will be described. The three-dimensional data encoding device may use a predetermined method 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.
[0265] When dividing into slices, the three-dimensional data encoding device divides the three-dimensional space based on the position information and attribute information all at once. For example, the three-dimensional data encoding device determines the shape of an object and divides the three-dimensional space into slices according to the shape of the object. For example, the three-dimensional data encoding device extracts objects such as trees or buildings and divides the space into slices on an object-by-object basis. For example, the three-dimensional data encoding device divides the space into slices so that one or more objects are entirely contained in one slice. Alternatively, the three-dimensional data encoding device divides one object into multiple slices.
[0266] In this case, the encoding device may change the encoding method for each slice. For example, the encoding device may use a high-quality compression method for a specific object or a specific part of an object. In this case, the encoding device may store information indicating the encoding method for each slice in additional information (metadata).
[0267] Furthermore, the three-dimensional data encoding device may divide the image into slices based on map information or location information so that each slice corresponds to a predetermined coordinate space.
[0268] When dividing into tiles, the three-dimensional data encoding device divides the position information and the attribute information independently. For example, the three-dimensional data encoding device divides a slice into tiles according to the amount of data or the amount of processing. For example, the three-dimensional data encoding device determines whether the amount of data of a slice (e.g., the number of three-dimensional points included in the slice) is greater than a predetermined threshold. If the amount of data of the slice is greater than the threshold, the three-dimensional data encoding device divides the slice into tiles. If the amount of data of the slice is less than the threshold, the three-dimensional data encoding device does not divide the slice into tiles.
[0269] For example, a three-dimensional data encoding device divides slices into tiles so that the processing amount or processing time in a 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.
[0270] In addition, 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, the three-dimensional data encoding device increases the number of divisions of the position information to be greater than the number of divisions of the attribute information.
[0271] Furthermore, for example, in cases where, depending on the content, the decoding device may decode and display the position information quickly and the attribute information later slowly, the three-dimensional data encoding device may divide the position information into a larger number of parts than the attribute information. This allows the decoding device to process a larger number of pieces of position information in parallel, thereby making it possible to process the position information faster than the attribute information.
[0272] Note that the decoding device does not necessarily need to process sliced or tiled data in parallel, and may determine whether to process them in parallel depending on the number or capabilities of the decoding processing units.
[0273] By dividing the data in the above manner, adaptive encoding according to the content or object can be realized. Also, parallel processing can be realized in the decoding process. This improves the flexibility of the point cloud encoding system or the point cloud decoding system.
[0274] Fig. 38 is a diagram showing examples of slice and tile division patterns. DU in the diagram is a data unit (DataUnit) and indicates tile or slice data. Each DU includes a slice index (SliceIndex) and a tile index (TileIndex). The number in the upper right corner of the DU in the diagram indicates the slice index, and the number in the lower left corner of the DU indicates the tile index.
[0275] 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.
[0276] In pattern 2, the number of divisions and the division method are the same for G slices and A slices in slice 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 tile division. Furthermore, the number of divisions and the division method differ between multiple G slices. The number of divisions and the division method differ between multiple A slices.
[0277] (Sixth embodiment) An example of dividing data into tiles and then into slices will be described below. In autonomous applications such as self-driving vehicles, point cloud data of the area around the vehicle or the area in the direction of travel of the vehicle is required, rather than point cloud data of the entire area. Here, tiles and slices can be used to selectively decode the original point cloud data. By dividing the 3D point cloud data into tiles and then further dividing the slices, it is possible to improve coding efficiency or achieve parallel processing. When dividing the data, additional information (metadata) is generated, and the generated additional information is sent to a multiplexing unit.
[0278] 39 is a block diagram showing the configuration of a first encoding unit 5010 included in the three-dimensional data encoding device according to this embodiment. The first encoding unit 5010 generates encoded data (encoded stream) by encoding point cloud data using a first encoding method (GPCC (Geometry based PCC)). The first encoding unit 5010 includes a dividing unit 5011, multiple position information encoding units 5012, multiple attribute information encoding units 5013, an additional information encoding unit 5014, and a multiplexing unit 5015.
[0279] The dividing unit 5011 divides the point cloud data to generate a plurality of divided data. Specifically, the dividing unit 5011 divides the space of the point cloud data into a plurality of subspaces to generate a plurality of divided data. Here, a subspace is one of a tile and a slice, or a combination of a tile and a slice. More specifically, the point cloud data includes position information, attribute information, and additional information. The dividing unit 5011 divides the position information into a plurality of divided position information pieces, and divides the attribute information into a plurality of divided attribute information pieces. The dividing unit 5011 also generates additional information related to the division.
[0280] For example, the dividing unit 5011 first divides the point cloud into tiles, and then further divides the obtained tiles into slices.
[0281] The position information encoding units 5012 encode the plurality of pieces of divided position information to generate a plurality of pieces of encoded position information. For example, the position information encoding units 5012 process the plurality of pieces of divided position information in parallel.
[0282] The attribute information encoding units 5013 encode the divided attribute information to generate the coded attribute information, for example, the attribute information encoding units 5013 process the divided attribute information in parallel.
[0283] The additional information encoding unit 5014 generates encoded additional information by encoding the additional information included in the point cloud data and the additional information related to the data division generated by the division unit 5011 at the time of division.
[0284] The multiplexing unit 5015 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. The encoded additional information is also used during decoding.
[0285] 39 shows an example in which there are two position information encoders 5012 and two attribute information encoders 5013, but the number of position information encoders 5012 and two attribute information encoders 5013 may each be one, or three or more. Furthermore, multiple pieces of divided data may be processed in parallel within the same chip, like 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.
[0286] Next, the decoding process will be described. Fig. 40 is a block diagram showing the configuration of the first decoding unit 5020. The first decoding unit 5020 restores the point cloud data by decoding coded data (coded stream) generated by coding the point cloud data using a first coding method (GPCC). The first decoding unit 5020 includes a demultiplexing unit 5021, a plurality of position information decoding units 5022, a plurality of attribute information decoding units 5023, an additional information decoding unit 5024, and a combining unit 5025.
[0287] The demultiplexing unit 5021 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.
[0288] The position information decoding units 5022 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 5022 process the plurality of pieces of encoded position information in parallel.
[0289] The attribute information decoding units 5023 generate a plurality of pieces of divided attribute information by decoding the plurality of pieces of encoded attribute information. For example, the attribute information decoding units 5023 process the plurality of pieces of encoded attribute information in parallel.
[0290] The plurality of additional information decoders 5024 generate additional information by decoding the encoded additional information.
[0291] The combining unit 5025 generates position information by combining multiple pieces of split position information using the additional information. The combining unit 5025 generates attribute information by combining multiple pieces of split attribute information using the additional information. For example, the combining unit 5025 first generates point cloud data corresponding to a tile by combining decoded point cloud data for a slice using the slice additional information. Next, the combining unit 5025 restores the original point cloud data by combining the point cloud data corresponding to the tile using the tile additional information.
[0292] 39 shows an example in which there are two position information decoding units 5022 and two attribute information decoding units 5023, but the number of position information decoding units 5022 and two attribute information decoding units 5023 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.
[0293] Next, a method for dividing point cloud data will be described. In autonomous applications such as automatic driving of vehicles, point cloud data of the area around the vehicle or the area in the direction of travel of the vehicle is required, rather than point cloud data of the entire area.
[0294] Fig. 41 is a diagram showing examples of tile shapes. As shown in Fig. 41, various shapes such as a circle, a rectangle, or an ellipse may be used as the tile shape.
[0295] 42 is a diagram showing examples of tiles and slices. The configuration of slices may differ between tiles. For example, the configuration of tiles or slices may be optimized based on the amount of data. Alternatively, the configuration of tiles or slices may be optimized based on the decoding speed.
[0296] Alternatively, tile division may be performed based on position information, in which case attribute information is divided in the same manner as the corresponding position information.
[0297] Furthermore, after dividing the image into tiles, the image may be divided into slices using a method different from that used for the position information and attribute information. For example, the method for dividing the image into slices for each tile may be selected in response to a request from an application. A different method for dividing the image into slices or tiles may be used based on the request from the application.
[0298] For example, the dividing unit 5011 divides the three-dimensional point cloud data into one or more tiles based on position information such as map information in a two-dimensional shape viewed from above. Then, the dividing unit 5011 divides each tile into one or more slices.
[0299] The dividing unit 5011 may divide the position information (Geometry) and the attribute information (Attribute) into slices in the same manner.
[0300] Note that there may be one type of position information and one type of attribute information, or two or more types. In addition, in the case of point cloud data that does not have attribute information, the attribute information may not be present.
[0301] 43 is a block diagram of the dividing unit 5011. The dividing unit 5011 includes a tile dividing unit 5031 (Tile Divider), a position information slice dividing unit 5032 (Geometry Slice Divider), and an attribute information slice dividing unit 5033 (Attribute Slice Divider).
[0302] The tile division unit 5031 generates multiple pieces of tile position information by dividing position information (Position (Geometry)) into tiles. The tile division unit 5031 also generates multiple pieces of tile attribute information by dividing attribute information (Attribute) into tiles. The tile division unit 5031 also outputs tile additional information (TileMetaData) that includes information related to the tile division and information generated during the tile division.
[0303] The position information slice division unit 5032 divides the plurality of pieces of tile position information into slices to generate a plurality of pieces of divided position information (a plurality of pieces of slice position information). In addition, the position information slice division unit 5032 outputs position slice additional information (Geometry Slice MetaData) including information related to the division of the position information into slices and information generated in the division of the position information into slices.
[0304] The attribute information slice division unit 5033 divides a plurality of pieces of tile attribute information into slices to generate a plurality of pieces of divided attribute information (a plurality of pieces of slice attribute information). The attribute information slice division unit 5033 also outputs attribute slice additional information (Attribute Slice MetaData) including information related to the division of the attribute information into slices and information generated in the division of the attribute information into slices.
[0305] Next, examples of tile shapes will be described. The entire three-dimensional map (3D map) is divided into multiple tiles. Data for the multiple tiles is selectively transmitted to the three-dimensional data decoding device. Alternatively, data from the multiple tiles is transmitted to the three-dimensional data decoding device in descending order of importance. The shape of the tile may be selected from multiple shapes depending on the situation.
[0306] Fig. 44 is a diagram showing an example of a map in which point cloud data obtained by LiDAR is viewed from above. The example shown in Fig. 44 is point cloud data of a highway, and includes a flyover.
[0307] FIG. 45 is a diagram showing an example in which the point cloud data shown in FIG. 44 is divided into square tiles. Such division into square tiles can be easily performed by the map server. Furthermore, the tile height is set low for normal roads. At intersections, the tile height is set higher than for normal roads so that the tile encompasses the intersection.
[0308] Fig. 46 is a diagram showing an example in which the point cloud data shown in Fig. 44 is divided into circular tiles. In this case, adjacent tiles may overlap in a planar view. When a vehicle requires point cloud data of the surrounding area, the three-dimensional data encoding device transmits point cloud data of a cylindrical area (a circle in a top view) around the vehicle to the vehicle.
[0309] Also, as in the example of Figure 45, the tile height is set low for normal roads. At intersections, the tile height is set higher than for normal roads so that the tile encompasses the intersection.
[0310] The three-dimensional data encoding device may change the height of the tiles according to, for example, the shape or height of a road or a building. The three-dimensional data encoding device may also change the height of the tiles according to position information or area information. The three-dimensional data encoding device may also change the height of the tiles for each tile. Alternatively, the three-dimensional data encoding device may change the height of the tiles for each section that includes multiple tiles. In other words, the three-dimensional data encoding device may make the heights of multiple tiles within a section the same. Furthermore, tiles of different heights may overlap in a top view.
[0311] 47 is a diagram showing an example of tile division when tiles of various shapes, sizes, or heights are used. The tile shapes may be any shape, any size, or a combination thereof.
[0312] For example, in addition to the above-described examples of dividing into square tiles without overlapping and overlapping circular tiles, the three-dimensional data encoding device may also divide into overlapping square tiles. Furthermore, the shape of the tiles does not have to be square or circular, and a polygon with three or more vertices or a shape with no vertices may be used.
[0313] The tile shapes may be of two or more types, or tiles of different shapes may overlap. The tile shapes may be of one or more types, and shapes of different sizes may be combined within the same shape to be divided, or they may overlap.
[0314] For example, larger tiles are used in areas where there are no objects such as roads, etc., than in areas where there are objects. The three-dimensional data encoding device may also adaptively change the shape or size of the tiles depending on the object.
[0315] Also, for example, since the three-dimensional data encoding device is likely to need to read tiles far ahead of the automobile, which is the direction of travel of the automobile (vehicle), it may set the tiles in the direction of travel to a larger size, and since it is unlikely that the automobile will travel to the side of the automobile, it may set the tiles to a smaller size than the tiles in the direction of travel.
[0316] FIG. 48 is a diagram showing an example of tile data stored on a server. For example, point cloud data is divided into tiles and encoded in advance, and the resulting encoded data is stored on the server. A user obtains desired tile data from the server when needed. Alternatively, the server (three-dimensional data encoding device) may divide the data into tiles and encode the data so as to include the data desired by the user in accordance with the user's instructions.
[0317] For example, if the moving speed of a moving object (vehicle) is high, point cloud data covering a wider range may be required. Therefore, the server may determine the shape and size of tiles and divide the tiles based on a pre-estimated vehicle speed (e.g., the road's legal speed limit, the vehicle speed that can be estimated from the road's width and shape, or a statistical speed). Alternatively, as shown in FIG. 48, the server may encode tiles of multiple shapes or sizes in advance and store the resulting data. The moving object may obtain tile data of an appropriate shape and size depending on the moving direction and speed of the moving object.
[0318] Fig. 49 is a diagram showing an example of a system related to tile division. As shown in Fig. 49, the shape and area of the tile may be determined based on the position of an antenna (base station), which is a communication means for transmitting point cloud data, or the communication area supported by the antenna. Alternatively, when point cloud data is generated by a sensor such as a camera, the shape and area of the tile may be determined based on the position of the sensor or the target range (detection range) of the sensor.
[0319] One tile may be assigned to one antenna or sensor, or one tile may be assigned to multiple antennas or sensors. Multiple tiles may be assigned to one antenna or sensor. The antennas or sensors may be fixed or movable.
[0320] For example, the coded data divided into tiles may be managed by a server connected to an antenna or a sensor for the area assigned to the tile. The server may manage the coded data for its own area and tile information for adjacent areas. A centralized management server (cloud) that manages multiple servers corresponding to each tile may manage multiple coded data for multiple tiles. Alternatively, there may be no server corresponding to each tile, and the antenna or the sensor may be directly connected to the centralized management server.
[0321] The coverage area of an antenna or sensor may vary depending on the power of radio waves, differences in equipment, and installation conditions, and the shape and size of the tiles may also vary accordingly. Based on the coverage area of an antenna or sensor, slices or PCC frames may be allocated instead of tiles.
[0322] Next, we explain how to divide tiles into slices. By assigning similar objects to the same slice, we can improve coding efficiency.
[0323] For example, the three-dimensional data encoding device may recognize objects (roads, buildings, trees, etc.) using the features of the point cloud data, and divide the point cloud into slices by clustering the point cloud for each object.
[0324] Alternatively, the three-dimensional data encoding device may divide the image into slices by grouping objects having the same attribute and allocating slices to each group. Here, the attribute refers to, for example, information about movement, and grouping is performed by classifying objects into dynamic information such as pedestrians and cars, semi-dynamic information such as accidents and congestion, semi-static information such as traffic regulations and road construction, and static information such as road surfaces and structures.
[0325] Note that data may overlap in multiple slices. For example, when dividing slices into multiple object groups, any object may belong to one object group, or to two or more object groups.
[0326] Fig. 50 is a diagram showing an example of this slice division. For example, in the example shown in Fig. 50, the tiles are rectangular parallelepipeds. Note that the tiles may be cylindrical or may have other shapes.
[0327] The points contained in a tile are grouped into object groups, such as roads, buildings, trees, etc. Then, the image is sliced so that each object group is contained in one slice, and each slice is coded separately.
[0328] Next, a method for encoding divided data will be described. A three-dimensional data encoding device (first encoding unit 5010) encodes each of the divided data. When encoding attribute information, the three-dimensional data encoding device generates dependency information as additional information, which indicates which configuration information (position information, additional information, or other attribute information) was used for encoding. 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.
[0329] 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. Furthermore, 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.
[0330] Figure 51 is a diagram showing an example of the dependency relationships of each piece of 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. Furthermore, 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.
[0331] In the figure, G indicates location information, and A indicates attribute information. t1 indicates the location information of tile number 1, and G t2 indicates the position information of tile number 2. G t1s1 indicates the position information of tile number 1 and slice number 1, and G t1s2 indicates the position information of tile number 1 and slice number 2, and G t2s1 indicates the position information of tile number 2 and slice number 1, and G t2s2 indicates the position information of tile number 2 and slice number 2. Similarly, A t1 indicates the attribute information of tile number 1, and A t2 indicates the attribute information of tile number 2. t1s1 indicates the attribute information of tile number 1 and slice number 1, and A t1s2 indicates the attribute information of tile number 1 and slice number 2, and A t2s1 indicates the attribute information of tile number 2 and slice number 1, and A t2s2 indicates the attribute information of tile number 2 and slice number 2.
[0332] Mtile indicates tile additional information, MGslice indicates position slice additional information, and MAslice indicates attribute slice additional information. t1s1 is attribute information At1s1 D t2s1 is attribute information A t2s1 This shows dependency information for
[0333] It should be noted that different tile or slice division structures may be used depending on the application, etc.
[0334] Furthermore, the three-dimensional data encoding device may rearrange the data in decoding order so that rearrangement of the data is not required 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.
[0335] FIG. 52 is a diagram showing an example of the data decoding order. In the example of FIG. 52, 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 to achieve this order before sending it. Note that any order is acceptable as long as the dependent data comes first. The three-dimensional data encoding device may also send the additional information and dependency information before the data.
[0336] Furthermore, the 3D data decoding device may selectively decode tiles based on a request from an application and information obtained from the NAL unit header. Figure 53 is a diagram showing an example of coded data for tiles. For example, the tiles may be decoded in any order. In other words, there may be no dependency between tiles.
[0337] Next, a description will be given of the configuration of the combining unit 5025 included in the first decoding unit 5020. Fig. 54 is a block diagram showing the configuration of the combining unit 5025. The combining unit 5025 includes a position information slice combining unit 5041 (geometry slice combiner), an attribute information slice combining unit 5042 (attribute slice combiner), and a tile combining unit (tile combiner).
[0338] The position information slice combining unit 5041 generates a plurality of tile position information pieces by combining a plurality of pieces of divided position information pieces using the position slice additional information. The attribute information slice combining unit 5042 generates a plurality of pieces of tile attribute information pieces by combining a plurality of pieces of divided attribute information pieces using the attribute slice additional information.
[0339] The tile combining unit 5043 generates position information by combining multiple pieces of tile position information using the tile additional information. Also, the tile combining unit 5043 generates attribute information by combining multiple pieces of tile attribute information using the tile additional information.
[0340] The number of slices or tiles to be divided is equal to or greater than 1. In other words, division into slices or tiles does not necessarily have to be performed.
[0341] Next, the 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. Figure 55 shows the structure of coded data and a method of storing the coded data in NAL units.
[0342] The coded data (segmentation position information and segmentation attribute information) is stored in the payload of the NAL unit.
[0343] The encoded data includes a header and a payload. The header includes identification information for identifying the data included in the payload. This identification information includes, for example, the type of slice division or tile division (slice_type, tile_type), index information for identifying a slice or tile (slice_idx, tile_idx), position information of the data (slice or tile), or the address of the data. The index information for 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 may be, for example, 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 processing amount.
[0344] 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 referencing the dependency from the dependency source. For example, the header of the dependency 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 data, the additional information related to slice division or tile division, and the identification information indicating the dependency relationship can be identified or derived from other information, these pieces of information may be omitted.
[0345] Next, the flow of the encoding process and decoding process of point cloud data according to this embodiment will be described. Fig. 56 is a flowchart of the encoding process of point cloud data according to this embodiment.
[0346] First, the three-dimensional data encoding device determines the division method to be used (S5011). This division method includes whether or not to perform tile division and whether or not to perform slice division. The division method may also include the number of divisions when performing tile division or slice 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.
[0347] If tile division is performed (Yes in S5012), the three-dimensional data encoding device generates multiple pieces of tile position information and multiple pieces of tile attribute information by dividing the position information and attribute information together (S5013). The three-dimensional data encoding device also generates tile additional information related to the tile division. Note that the three-dimensional data encoding device may divide the position information and the attribute information independently.
[0348] If slice division is performed (Yes in S5014), the three-dimensional data encoding device generates a plurality of pieces of division position information and a plurality of pieces of division attribute information by independently dividing a plurality of pieces of tile position information and a plurality of pieces of tile attribute information (or position information and attribute information) (S5015). The three-dimensional data encoding device also generates position slice additional information and attribute slice additional information related to the slice division. Note that the three-dimensional data encoding device may divide the tile position information and the tile attribute information together.
[0349] 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 (S5016). The three-dimensional data encoding device also generates dependency relationship information.
[0350] Next, the three-dimensional data encoding device generates encoded data (encoded stream) by combining (multiplexing) the plurality of pieces of encoding position information, the plurality of pieces of encoding attribute information, and the additional information into NAL units (S5017).The three-dimensional data encoding device also transmits the generated encoded data.
[0351] 57 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 (tile additional information, position slice additional information, and attribute slice additional information) related to the division method included in the coded data (coded stream) (S5021). This division method includes whether or not to perform tile division and whether or not to perform slice division. Furthermore, the division method may include the number of divisions when performing tile division or slice division, the type of division, etc.
[0352] Next, the three-dimensional data decoding device generates split position information and split attribute information by decoding the multiple pieces of coded position information and multiple pieces of coded attribute information contained in the coded data using dependency information contained in the coded data (S5022).
[0353] If the additional information indicates that slice division has been performed (Yes in S5023), the three-dimensional data decoding device generates a plurality of pieces of tile position information and a plurality of pieces of tile attribute information by combining the plurality of pieces of division position information and the plurality of pieces of division attribute information using respective methods based on the position slice additional information and the attribute slice additional information (S5024). Note that the three-dimensional data decoding device may combine the plurality of pieces of division position information and the plurality of pieces of division attribute information using the same method.
[0354] If the additional information indicates that tile division has been performed (Yes in S5025), the three-dimensional data decoding device generates position information and attribute information by combining multiple pieces of tile position information and multiple pieces of tile attribute information (multiple pieces of division position information and multiple pieces of division attribute information) using the same method based on the tile additional information (S5026). Note that the three-dimensional data decoding device may combine multiple pieces of tile position information and multiple pieces of tile attribute information using different methods.
[0355] Next, the tile additional information will be described. The three-dimensional data encoding device generates tile additional information, which is metadata relating to the tile division method, and transmits the generated tile additional information to the three-dimensional data decoding device.
[0356] Fig. 58 is a diagram showing an example of the syntax of tile additional information (TileMetaData). As shown in Fig. 58, for example, the tile additional information includes division method information (type_of_divide), shape information (topview_shape), an overlap flag (tile_overlap_flag), overlap information (type_of_overlap), height information (tile_height), the number of tiles (tile_number), and tile position information (global_position, relative_position).
[0357] The division method information (type_of_divide) indicates the division method of the tiles. For example, the division method information indicates whether the division method of the tiles is based on map information, i.e., division based on a top view (top_view), or other (other).
[0358] Shape information (topview_shape) is included in the tile additional information, for example, when the tile division method is division based on a top view. The shape information indicates the shape of the tile when viewed from above. For example, this shape includes a square and a circle. Note that this shape may include an ellipse, a polygon other than a rectangle or a quadrangle, or may include other shapes. Note that the shape information is not limited to the shape of the tile when viewed from above, and may also indicate the three-dimensional shape of the tile (for example, a cube, a cylinder, etc.).
[0359] The overlap flag (tile_overlap_flag) indicates whether tiles overlap. For example, the overlap flag is included in the tile additional information when the tile division method is division based on a top view. In this case, the overlap flag indicates whether tiles overlap in a top view. Note that the overlap flag may also indicate whether tiles overlap in a three-dimensional space.
[0360] Overlap information (type_of_overlap) is included in the tile additional information when tiles overlap, for example. The overlap information indicates how the tiles overlap, etc. For example, the overlap information indicates the size of the overlapping area, etc.
[0361] The height information (tile_height) indicates the height of the tile. The height information may also include information indicating the shape of the tile. For example, if the shape of the tile in top view is rectangular, the information may indicate the lengths of the sides of the rectangle (vertical length and horizontal length). Furthermore, if the shape of the tile in top view is circular, the information may indicate the diameter or radius of the circle.
[0362] The height information may indicate the height of each tile, or may indicate a height common to multiple tiles. Alternatively, multiple height types, such as roads and intersections, may be set in advance, and the height information may indicate the height of each height type and the height type of each tile. Alternatively, the height of each height type may be predefined, and the height information may indicate the height type of each tile. In other words, the height of each height type does not have to be indicated by the height information.
[0363] The tile number (tile_number) indicates the number of tiles. The tile additional information may include information indicating the spacing between tiles.
[0364] The tile position information (global_position, relative_position) is information for specifying the position of each tile. For example, the tile position information indicates the absolute coordinates or relative coordinates of each tile.
[0365] Note that some or all of the above information may be provided for each tile, or for each set of tiles (for example, for each frame or for each set of frames).
[0366] The three-dimensional data encoding device may transmit the tile additional information by including it in SEI (Supplemental Enhancement Information), or may transmit the tile additional information by storing it in an existing parameter set (such as PPS, GPS, or APS).
[0367] For example, if the tile additional information changes for each frame, it may be stored in a parameter set for each frame (such as GPS or APS). If the tile additional information does not change within a sequence, it may be stored in a parameter set for each sequence (position SPS or attribute SPS). Furthermore, if the same tile division information is used for position information and attribute information, the tile additional information may be stored in a parameter set for the PCC stream (stream PS).
[0368] Furthermore, the tile additional information may be stored in any one of the above parameter sets, or in multiple parameter sets. Furthermore, the tile additional information may be stored in a header of the encoded data. Furthermore, the tile additional information may be stored in a header of an NAL unit.
[0369] Furthermore, all or part of the tile additional information may be stored in either the header of the split position information or the header of the split attribute information, but not in the other. For example, if the same tile additional information is used for the position information and the attribute information, the tile additional information may be included in the header of either the position information or the attribute information. For example, if the attribute information depends on the position information, the position information is processed first. Therefore, the tile additional information may be included in the header of the position information, but not in the header of the attribute information. In this case, the 3D data decoding device determines, for example, that the dependent attribute information belongs to the same tile as the tile of the dependent position information.
[0370] The three-dimensional data decoding device reconstructs the point cloud data divided into tiles based on the tile additional information. If there is overlapping point cloud data, the three-dimensional data decoding device identifies the overlapping multiple point cloud data and selects one of them or merges the multiple point cloud data.
[0371] The three-dimensional data decoding device may also perform decoding using tile additional information. For example, if multiple tiles overlap, the three-dimensional data decoding device may perform decoding for each tile, and then perform processing (e.g., smoothing or filtering) using the multiple decoded data to generate point cloud data. This may enable highly accurate decoding.
[0372] 59 is a diagram showing an example of the configuration of a system including a three-dimensional data encoding device and a three-dimensional data decoding device. A tile dividing unit 5051 divides point cloud data including position information and attribute information into first tiles and second tiles. The tile dividing unit 5051 also sends tile additional information related to the tile division to a decoding unit 5053 and a tile combining unit 5054.
[0373] The encoding unit 5052 generates encoded data by encoding the first tile and the second tile.
[0374] The decoding unit 5053 restores the first tile and the second tile by decoding the coded data generated by the coding unit 5052. The tile combining unit 5054 restores the point cloud data (position information and attribute information) by combining the first tile and the second tile using the tile additional information.
[0375] Next, slice additional information will be described. The three-dimensional data encoding device generates slice additional information, which is metadata related to the slice division method, and transmits the generated slice additional information to the three-dimensional data decoding device.
[0376] Fig. 60 is a diagram illustrating an example of the syntax of slice additional information (SliceMetaData). As illustrated in Fig. 60, for example, the slice additional information includes division method information (type_of_divide), an overlap flag (slice_overlap_flag), overlap information (type_of_overlap), the number of slices (slice_number), slice position information (global_position, relative_position), and slice size information (slice_bounding_box_size).
[0377] The division method information (type_of_divide) indicates the division method of a slice. For example, the division method information indicates whether the division method of a slice is based on object information (object) as shown in FIG. 50. The slice additional information may include information indicating the object division method. For example, this information indicates whether one object is divided into multiple slices or allocated to one slice. This information may also indicate the number of divisions when one object is divided into multiple slices.
[0378] The overlap flag (slice_overlap_flag) indicates whether slices overlap. The overlap information (type_of_overlap) is included in the slice additional information, for example, when slices overlap. The overlap information indicates how slices overlap, etc. For example, the overlap information indicates the size of the overlapping area, etc.
[0379] The slice number (slice_number) indicates the number of slices.
[0380] Slice position information (global_position, relative_position) and slice size information (slice_bounding_box_size) are information related to the area of a slice. Slice position information is information for specifying the position of each slice. For example, slice position information indicates the absolute coordinates or relative coordinates of each slice. Slice size information (slice_bounding_box_size) indicates the size of each slice. For example, slice size information indicates the size of the bounding box of each slice.
[0381] The three-dimensional data encoding device may include the slice additional information in the SEI and transmit it, or may store the slice additional information in an existing parameter set (such as PPS, GPS, or APS) and transmit it.
[0382] For example, when slice additional information changes for each frame, the slice additional information may be stored in a parameter set for each frame (such as GPS or APS). When slice additional information does not change within a sequence, the slice additional information may be stored in a parameter set for each sequence (position SPS or attribute SPS). Furthermore, when the same slice division information is used for position information and attribute information, the slice additional information may be stored in a parameter set of a PCC stream (stream PS).
[0383] Furthermore, the slice additional information may be stored in any one of the above parameter sets, or in multiple parameter sets. Furthermore, the slice additional information may be stored in a header of coded data. Furthermore, the slice additional information may be stored in a header of an NAL unit.
[0384] Furthermore, all or part of the slice additional information may be stored in either the header of the division position information or the header of the division attribute information, and not in the other. For example, when the same slice additional information is used for the position information and the attribute information, the slice additional information may be included in the header of either the position information or the attribute information. For example, when the attribute information depends on the position information, the position information is processed first. Therefore, the slice additional information may be included in the header of the position information, and the slice additional information may not be included in the header of the attribute information. In this case, the three-dimensional data decoding device determines, for example, that the dependent attribute information belongs to the same slice as the slice of the dependent position information.
[0385] The three-dimensional data decoding device reconstructs the point cloud data divided into slices based on the slice additional information. If there is overlapping point cloud data, the three-dimensional data decoding device identifies the overlapping multiple point cloud data, selects one of the overlapping multiple point cloud data, or merges the multiple point cloud data.
[0386] Furthermore, the three-dimensional data decoding device may perform decoding using slice additional information. For example, when multiple slices overlap, the three-dimensional data decoding device may perform decoding for each slice, and then perform processing (e.g., smoothing or filtering) using the multiple decoded data to generate point cloud data. This may enable highly accurate decoding.
[0387] FIG. 61 is a flowchart of three-dimensional data encoding processing, including processing for generating tile additional information, performed by the three-dimensional data encoding device according to this embodiment.
[0388] First, the three-dimensional data encoding device determines a tile division method (S5031). Specifically, the three-dimensional data encoding device determines whether to use a division method based on a top view (top_view) or another method (other) as the tile division method. The three-dimensional data encoding device also determines the shape of the tile when using a division method based on a top view. The three-dimensional data encoding device also determines whether the tile overlaps with other tiles.
[0389] If the tile division method determined in step S5031 is a division method based on a top view (Yes in S5032), the three-dimensional data encoding device describes in the tile additional information that the tile division method is a division method based on a top view (top_view) (S5033).
[0390] On the other hand, if the tile division method determined in step S5031 is other than a division method based on a top view (No in S5032), the three-dimensional data encoding device describes in the tile additional information that the tile division method is other than a division method based on a top view (top_view) (S5034).
[0391] Furthermore, if the shape of the tile when viewed from above determined in step S5031 is square (square in S5035), the three-dimensional data encoding device writes in the tile additional information that the shape of the tile when viewed from above is square (S5036).On the other hand, if the shape of the tile when viewed from above determined in step S5031 is circular (circle in S5035), the three-dimensional data encoding device writes in the tile additional information that the shape of the tile when viewed from above is circular (S5037).
[0392] Next, the three-dimensional data encoding device determines whether the tile overlaps with other tiles (S5038). If the tile overlaps with other tiles (Yes in S5038), the three-dimensional data encoding device records in the tile additional information that the tile overlaps (S5039). On the other hand, if the tile does not overlap with other tiles (No in S5038), the three-dimensional data encoding device records in the tile additional information that the tile does not overlap (S5040).
[0393] Next, the three-dimensional data encoding device divides the tiles based on the tile division method determined in step S5031, encodes each tile, and transmits the generated encoded data and tile additional information (S5041).
[0394] FIG. 62 is a flowchart of three-dimensional data decoding processing using tile additional information by the three-dimensional data decoding device according to this embodiment.
[0395] First, the 3D data decoding device analyzes the tile additional information included in the bitstream (S5051).
[0396] If the tile additional information indicates that the tile does not overlap with other tiles (No in S5052), the 3D data decoding device generates point cloud data for each tile by decoding each tile (S5053). Next, the 3D data decoding device reconstructs point cloud data from the point cloud data for each tile based on the tile division method and tile shape indicated in the tile additional information (S5054).
[0397] On the other hand, if the tile additional information indicates that the tile overlaps with other tiles (Yes in S5052), the three-dimensional data decoding device generates point cloud data for each tile by decoding each tile. The three-dimensional data decoding device also identifies overlapping portions of tiles based on the tile additional information (S5055). Note that the three-dimensional data decoding device may perform decoding processing for overlapping portions using multiple pieces of overlapping information. Next, the three-dimensional data decoding device reconstructs point cloud data from the point cloud data for each tile based on the tile division method, tile shape, and overlap information indicated in the tile additional information (S5056).
[0398] Modifications regarding slices will be described below. The three-dimensional data encoding device may transmit information indicating the type of object (road, building, tree, etc.) or attribute (dynamic information, static information, etc.) as additional information. Alternatively, encoding parameters may be defined in advance depending on the object, and the three-dimensional data encoding device may notify the three-dimensional data decoding device of the encoding parameters by sending the type or attribute of the object.
[0399] The following methods may be used for the encoding order and transmission order of slice data. For example, the three-dimensional data encoding device may encode slice data in order of ease of object recognition or clustering. Alternatively, the three-dimensional data encoding device may encode slice data in order of the slice data for which clustering was completed first. Furthermore, the three-dimensional data encoding device may transmit encoded slice data in order of decreasing decoding priority in the application. For example, if the decoding priority of dynamic information is high, the three-dimensional data encoding device may transmit slice data in order of decreasing decoding priority, starting with slices grouped by dynamic information.
[0400] Furthermore, when the order of the coded data differs from the order of the decoding priorities, the three-dimensional data coding device may rearrange the coded data before transmitting it. Furthermore, when storing coded data, the three-dimensional data coding device may rearrange the coded data before storing it.
[0401] An application (a three-dimensional data decoder) requests a server (a three-dimensional data encoder) to send slices containing desired data. The server sends the slice data required by the application, but does not need to send unnecessary slice data.
[0402] An application requests the server to send tiles containing desired data. The server sends the tile data required by the application, but does not need to send unnecessary tile data.
[0403] As described above, the three-dimensional data encoding device according to this embodiment performs the processing shown in Fig. 63. First, the three-dimensional data encoding device generates a plurality of coded data by encoding a plurality of subspaces (e.g., tiles) obtained by dividing a target space including a plurality of three-dimensional points (S5061). The three-dimensional data encoding device generates a bitstream including the plurality of coded data and first information (e.g., topview_shape) indicating the shapes of the plurality of subspaces (S5062).
[0404] This allows the three-dimensional data encoding device to select any shape from a plurality of types of subspace shapes, thereby improving encoding efficiency.
[0405] For example, the shape is a two-dimensional shape or a three-dimensional shape of the plurality of subspaces. For example, the shape is a top view shape of the plurality of subspaces. That is, the first information indicates a shape of the subspace when viewed from a specific direction (for example, from above). In other words, the first information indicates a bird's-eye view shape of the subspace. For example, the shape is a rectangle or a circle.
[0406] For example, the bitstream includes second information (eg, tile_overlap_flag) indicating whether the plurality of sub-intervals overlap.
[0407] According to this, the three-dimensional data encoding device can overlap subspaces, so that subspaces can be generated without complicating the shapes of the subspaces.
[0408] For example, the bitstream includes third information (for example, type_of_divide) indicating whether the division method for the plurality of sub-sections is a division method using a top view.
[0409] For example, the bitstream includes fourth information (eg, tile_height) indicating at least one of the height, width, depth, and radius of the plurality of sub-sections.
[0410] For example, the bitstream includes fifth information (for example, global_position or relative_position) indicating the position of each of the plurality of sub-sections.
[0411] For example, the bitstream includes sixth information (eg, tile_number) indicating the number of the plurality of subintervals.
[0412] For example, the bitstream includes seventh information indicating intervals between the plurality of sub-intervals.
[0413] For example, the three-dimensional data encoding device includes a processor and a memory, and the processor performs the above-mentioned processing using the memory.
[0414] Furthermore, the three-dimensional data decoding device according to this embodiment performs the processing shown in FIG. 64. First, the three-dimensional data decoding device reconstructs a plurality of subspaces (e.g., tiles) by decoding a plurality of coded data generated by encoding a target space containing a plurality of three-dimensional points, which is included in a bitstream (S5071). The three-dimensional data decoding device reconstructs the target space by combining the plurality of subspaces using first information (e.g., topview_shape) included in the bitstream and indicating the shapes of the plurality of subspaces (S5072). For example, the three-dimensional data decoding device can recognize the shapes of the plurality of subspaces using the first information, thereby grasping the position and range of each subspace within the target space. The three-dimensional data decoding device can combine the plurality of subspaces based on the grasped positions and ranges of the plurality of subspaces. This allows the three-dimensional data decoding device to correctly combine the plurality of subspaces.
[0415] For example, the shape is a shape in two dimensions of the plurality of subspaces, or a shape in three dimensions, for example, a rectangle or a circle.
[0416] For example, the bitstream includes second information (e.g., tile_overlap_flag) indicating whether the multiple subintervals overlap. When restoring the target space, the three-dimensional data decoding device further uses the second information to combine the multiple subspaces. For example, the three-dimensional data decoding device uses the second information to determine whether the subspaces overlap. If the subspaces overlap, the three-dimensional data decoding device identifies the overlapping area and takes a predetermined action for the identified overlapping area.
[0417] For example, the bitstream includes third information (e.g., type_of_divide) indicating whether the division method of the plurality of sub-intervals is a division method using a top view. If the third information indicates that the division method of the plurality of sub-intervals is a division method using a top view, the 3D data decoding device combines the plurality of sub-spaces using the first information.
[0418] For example, the bitstream includes fourth information (e.g., tile_height) indicating at least one of the height, width, depth, and radius of the plurality of subsections. The 3D data decoding device further uses the fourth information to combine the plurality of subspaces in restoring the target space. For example, the 3D data decoding device can recognize the heights of the plurality of subspaces using the fourth information, thereby determining the position and range of each subspace within the target space. The 3D data decoding device can combine the plurality of subspaces based on the determined positions and ranges of the plurality of subspaces.
[0419] For example, the bitstream includes fifth information (e.g., global_position or relative_position) indicating the position of each of the plurality of subintervals. In restoring the target space, the three-dimensional data decoding device further uses the fifth information to combine the plurality of subspaces. For example, the three-dimensional data decoding device can recognize the positions of the plurality of subspaces using the fifth information, thereby grasping the position of each subspace within the target space. The three-dimensional data decoding device can combine the plurality of subspaces based on the grasped positions of the plurality of subspaces.
[0420] For example, the bitstream includes sixth information (e.g., tile_number) indicating the number of the plurality of subintervals. In the reconstruction of the target space, the 3D data decoding device further uses the sixth information to combine the plurality of subintervals.
[0421] For example, the bitstream includes seventh information indicating the intervals between the plurality of subintervals. The three-dimensional data decoding device further uses the seventh information to combine the plurality of subintervals in restoring the target space. For example, the three-dimensional data decoding device can recognize the intervals between the plurality of subintervals using the seventh information, thereby grasping the position and range of each subinterval within the target space. The three-dimensional data decoding device can combine the plurality of subintervals based on the grasped positions and ranges of the plurality of subintervals.
[0422] For example, the three-dimensional data decoding device includes a processor and a memory, and the processor performs the above processing using the memory.
[0423] (Embodiment 7) In this embodiment, processing of division units (for example, tiles or slices) that do not include points will be described. First, a method for dividing point cloud data will be described.
[0424] In video coding standards such as HEVC, data exists for every pixel in a two-dimensional image, so even if a two-dimensional space is divided into multiple data regions, data exists in every data region. On the other hand, in coding of three-dimensional point cloud data, the points that are elements of the point cloud data are themselves data, and there is a possibility that data does not exist in some regions.
[0425] There are various methods for spatially dividing point cloud data, but the division methods can be classified according to whether the division unit (for example, tile or slice), which is the divided data unit, always contains one or more point data.
[0426] A division method in which each of the division units contains one or more point data is called a first division method. For example, a first division method is a method in which point cloud data is divided with consideration for the encoding processing time or the size of the encoded data. In this case, the number of points in each division unit is roughly equal.
[0427] Figure 65 is a diagram showing an example of a division method. For example, as a first division method, a method of dividing points belonging to the same space into two identical spaces may be used, as shown in (a) of Figure 65. Alternatively, as shown in (b) of Figure 65, a space may be divided into a plurality of subspaces (division units) so that each division unit contains a point.
[0428] These methods are point-aware divisions, so every division unit always contains at least one point.
[0429] A division method in which multiple division units may contain one or more division units that do not contain point data is called a second division method. For example, as the second division method, a method of equally dividing space can be used, as shown in Figure 65(c). In this case, points may not necessarily exist in the division units. In other words, there may be cases in which no points exist in the division units.
[0430] When dividing point cloud data, the three-dimensional data encoding device may indicate in division additional information (metadata) related to the division (e.g., tile additional information or slice additional information) whether (1) a division method was used in which all of the multiple division units include one or more point data, (2) a division method was used in which the multiple division units have one or more division units that do not include point data, or (3) a division method was used in which the multiple division units may have one or more division units that do not include point data, and send out the division additional information.
[0431] The three-dimensional data encoding device may indicate the above information as the type of division method. Alternatively, the three-dimensional data encoding device may perform division using a predetermined division method and not transmit division additional information. In this case, the three-dimensional data encoding device will indicate in advance whether the division method is the first division method or the second division method.
[0432] Below, an example of the second division method and generation and transmission of encoded data will be described. Note that, although tile division will be described as an example of a method of dividing a three-dimensional space, the following technique can also be applied to a division method using a division unit other than tiles. For example, tile division may be read as slice division.
[0433] Fig. 66 is a diagram showing an example of dividing point cloud data into six tiles. Fig. 66 shows an example in which the smallest unit is a point, and shows an example in which position information (Geometry) and attribute information (Attribute) are divided together. Note that the same applies when position information and attribute information are divided using different division methods or division numbers, when there is no attribute information, and when there are multiple pieces of attribute information.
[0434] In the example shown in Figure 66, after tile division, there are tiles (#1, #2, #4, #6) that contain points and tiles (#3, #5) that do not contain points. Tiles that do not contain points are called null tiles.
[0435] Note that the division is not limited to six tiles, and any division method may be used. For example, the division unit may be a cube, or may be a non-cubic shape such as a rectangular parallelepiped or a cylinder. The multiple division units may have the same shape, or may include different shapes. Furthermore, a predetermined division method may be used, or a different method may be used for each predetermined unit (for example, PCC frame).
[0436] In this division method, when point cloud data is divided into tiles, if there is no data in a tile, a bitstream is generated that includes information indicating that the tile is a null tile.
[0437] Hereinafter, a method for transmitting null tiles and a method for signaling null tiles will be described. The three-dimensional data encoding device may generate, for example, the following information as additional information (metadata) related to data division, and transmit the generated information. Fig. 67 is a diagram showing an example of the syntax of tile additional information (TileMetaData). The tile additional information includes division method information (type_of_divide), division method null information (type_of_divide_null), number of tile divisions (number_of_tiles), and tile null flag (tile_null_flag).
[0438] The division method information (type_of_divide) is information related to the division method or division type. For example, the division method information indicates one or more division methods or division types. For example, division methods include top view division and equal division. Note that if there is only one division method defined, the division method information does not need to be included in the tile additional information.
[0439] The division method null information (type_of_divide_null) is information that indicates whether the division method used is the first division method or the second division method described below. Here, the first division method is a division method in which all of the multiple division units always contain one or more point data. The second division method is a division method in which the multiple division units include one or more division units that do not contain point data, or a division method in which the multiple division units may include one or more division units that do not contain point data.
[0440] The tile additional information may include, as division information for the entire tile, at least one of: (1) information indicating the number of divisions of the tile (number_of_tiles) or information for specifying the number of divisions of the tile, (2) information indicating the number of null tiles or information for specifying the number of null tiles, and (3) information indicating the number of tiles other than null tiles or information for specifying the number of tiles other than null tiles. The tile additional information may also include, as division information for the entire tile, information indicating the shape of the tile or whether tiles overlap.
[0441] Furthermore, the tile additional information indicates the division information for each tile in order. For example, the order of tiles is predetermined for each division method and is known to the three-dimensional data encoding device and the three-dimensional data decoding device. Note that if the order of tiles is not predetermined, the three-dimensional data encoding device may send information indicating the order to the three-dimensional data decoding device.
[0442] The division information for each tile includes a tile null flag (tile_null_flag) that indicates whether or not data (points) exist in the tile. If there is no data in the tile, the tile null flag may be included as tile division information.
[0443] Furthermore, if the tile is not a null tile, the tile additional information includes division information for each tile (position information (e.g., coordinates of the origin (origin_x, origin_y, origin_z)) and height information for the tile, etc.). Furthermore, if the tile is a null tile, the tile additional information does not include division information for each tile.
[0444] For example, when the slice division information for each tile is stored in the division information for each tile, the three-dimensional data encoding device does not need to store slice division information for null tiles in the additional information.
[0445] In this example, the number of tile divisions (number_of_tiles) indicates the number of tiles including null tiles. Fig. 68 is a diagram showing an example of tile index information (idx). In the example shown in Fig. 68, index information is also assigned to null tiles.
[0446] Next, the data structure and transmission method of coded data including null tiles will be described. Figures 69 to 71 are diagrams showing data structures when position information and attribute information are divided into six tiles and there is no data in the third and fifth tiles.
[0447] FIG. 69 is a diagram showing an example of the dependency relationship of each data. The tip of the arrow in the figure indicates the dependency destination, and the base of the arrow indicates the dependency source. tn (n is 1 to 6) indicates the position information of tile number n, and A tn indicates the attribute information of tile number n. tile indicates additional tile information.
[0448] Fig. 70 is a diagram showing an example of the structure of transmission data, which is encoded data transmitted from a three-dimensional data encoding device, and Fig. 71 is a diagram showing the structure of encoded data and a method of storing the encoded data in an NAL unit.
[0449] As shown in FIG. 71, the headers of the data of the position information (division position information) and attribute information (division attribute information) each include tile index information (tile_idx).
[0450] Furthermore, as shown in Structure 1 in Fig. 70, the three-dimensional data encoding device does not have to transmit position information or attribute information constituting a null tile. Alternatively, as shown in Structure 2 in Fig. 70, the three-dimensional data encoding device may transmit, as null tile data, information indicating that the tile is a null tile. For example, the three-dimensional data encoding device may indicate that the type of the data is a null tile in the tile_type stored in the header of the NAL unit or in the header in the payload (nal_unit_payload) of the NAL unit, and transmit the header. Note that the following description will be given assuming Structure 1.
[0451] In structure 1, when a null tile exists, the values of the tile index information (tile_idx) included in the header of the position information data or attribute information data in the transmitted data are not consecutive and have gaps.
[0452] Furthermore, if there is a dependency between data, the three-dimensional data encoding device transmits the data so that the referenced data can be decoded before the referenced data. Note that the attribute information tiles have a dependency on the position information tiles. The attribute information and position information that have a dependency relationship are assigned the same tile index number.
[0453] Note that tile additional information related to tile division may be stored in both the parameter set for location information (GPS) and the parameter set for attribute information (APS), or may be stored in either one of them. When tile additional information is stored in one of the GPS and the APS, reference information indicating the referenced GPS or APS may be stored in the other of the GPS and the APS. Furthermore, when the tile division method differs between the location information and the attribute information, different tile additional information is stored in the GPS and the APS, respectively. Furthermore, when the tile division method is the same for a sequence (multiple PCC frames), the tile additional information may be stored in the GPS, the APS, or the SPS (sequence parameter set).
[0454] For example, when tile additional information is stored in both the GPS and the APS, the tile additional information for location information is stored in the GPS, and the tile additional information for attribute information is stored in the APS. Also, when tile additional information is stored in common information such as the SPS, tile additional information commonly used for location information and attribute information may be stored, or the tile additional information for location information and the tile additional information for attribute information may be stored separately.
[0455] The combination of tile division and slice division will be described below. First, the data structure and data transmission when tile division is performed after slice division will be described.
[0456] 72 is a diagram showing an example of the dependency relationships of each piece of data when dividing into slices and then dividing into tiles. The tip of the arrow in the diagram indicates the dependency destination, and the base of the arrow indicates the dependency source. Data indicated by solid lines in the diagram is data that is actually transmitted, and data indicated by dotted lines is data that is not transmitted.
[0457] 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. G s1t1 indicates the position information of slice number 1 and tile number 1, and G s2t2 indicates the position information of slice number 2 and tile number 2. Similarly, A s1 indicates the attribute information of slice number 1, and A s2 indicates the attribute information of slice number 2. s1t1 indicates the attribute information of slice number 1 and tile number 1, and A s2t1 indicates the attribute information of slice number 2 and tile number 1.
[0458] Mslice indicates slice additional information, MGtile indicates position tile additional information, and MAtile indicates attribute tile additional information. s1t1 is attribute information A s1t1 D s2t1 is attribute information As2t1 This shows dependency information for
[0459] The three-dimensional data encoding device does not need to generate and transmit position information and attribute information related to null tiles.
[0460] Furthermore, even if the number of tile divisions is the same for all slices, the number of tiles generated and transmitted between slices may differ. For example, if the number of tile divisions differs between the position information and the attribute information, there may be null tiles in either the position information or the attribute information, but not in the other. In the example shown in Figure 72, the position information (G s1 ) is G s1t1 and G s1t2 It is divided into two tiles, G s1t2 is a null tile. On the other hand, the attribute information of slice 1 (A s1 ) is not divided into one A s1t1 exists and there is no null tile.
[0461] Furthermore, the three-dimensional data encoding device generates and transmits dependency information for the attribute information when data exists at least in the tile of the attribute information, regardless of whether the slice of the position information includes a null tile. For example, when the three-dimensional data encoding device stores slice division information for each tile in division information for each slice included in slice additional information related to slice division, it stores information on whether the tile is a null tile in this information.
[0462] FIG. 73 is a diagram showing an example of the data decoding order. In the example of FIG. 73, 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 to achieve this order before sending it. Note that any order is acceptable as long as the dependent data comes first. The three-dimensional data encoding device may also send the additional information and dependency information before the data.
[0463] Next, the data structure and data transmission when dividing into slices after dividing into tiles will be described.
[0464] 74 is a diagram showing an example of the dependency relationships of each piece of data when dividing into slices after dividing into tiles. The tip of the arrow in the diagram indicates the dependency destination, and the base of the arrow indicates the dependency source. Data indicated by solid lines in the diagram is data that is actually transmitted, and data indicated by dotted lines is data that is not transmitted.
[0465] In the figure, G indicates location information, and A indicates attribute information. t1 indicates the position information of tile number 1. G t1s1 indicates the position information of tile number 1 and slice number 1, and G t1s2 indicates the position information of tile number 1 and slice number 2. Similarly, A t1 indicates the attribute information of tile number 1, and A t1s1 indicates the attribute information of tile number 1 and slice number 1.
[0466] Mtile indicates tile additional information, MGslice indicates position slice additional information, and MAslice indicates attribute slice additional information. t1s1 is attribute information A t1s1 D t2s1 is attribute information A t2s1 This shows dependency information for
[0467] The three-dimensional data encoding device does not divide null tiles into slices, and does not need to generate or transmit position information, attribute information, and attribute information dependency information related to null tiles.
[0468] FIG. 75 is a diagram showing an example of the data decoding order. In the example of FIG. 75, 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 to achieve this order before sending it. Note that any order is acceptable as long as the dependent data comes first. The three-dimensional data encoding device may also send the additional information and dependency information before the data.
[0469] Next, the flow of the division process and the joining process of the point cloud data will be explained. Note that although the example of tile division and slice division will be explained here, similar techniques can be applied to other spatial divisions.
[0470] 76 is a flowchart of three-dimensional data encoding processing including data division processing by a three-dimensional data encoding device. First, the three-dimensional data encoding device determines the division method to be used (S5101). Specifically, the three-dimensional data encoding device determines whether to use the first division method or the second division method. For example, the three-dimensional data encoding device may determine the division method based on a specification from a user or an external device (e.g., a three-dimensional data decoding device), or may determine the division method according to input point cloud data. The division method to be used may also be predetermined.
[0471] Here, the first division method is a division method in which all of the multiple division units (tiles or slices) always contain one or more point data, and the second division method is a division method in which the multiple division units include one or more division units that do not include point data, or a division method in which the multiple division units may include one or more division units that do not include point data.
[0472] If the determined division method is the first division method (first division method in S5102), the three-dimensional data encoding device describes that the division method used is the first division method in division additional information (e.g., tile additional information or slice additional information), which is metadata related to data division (S5103).The three-dimensional data encoding device then encodes all division units (S5104).
[0473] On the other hand, if the determined division method is the second division method (second division method in S5102), the three-dimensional data encoding device describes in the division additional information that the division method used is the second division method (S5105).Then, the three-dimensional data encoding device encodes the division units, excluding division units that do not include point data (for example, null tiles), from among the multiple division units (S5106).
[0474] 77 is a flowchart of three-dimensional data decoding processing including data splicing processing by a three-dimensional data decoding device. First, the three-dimensional data decoding device references the partitioning additional information included in the bitstream and determines whether the partitioning method used is the first partitioning method or the second partitioning method (S5111).
[0475] If the division method used is the first division method (first division method in S5112), the three-dimensional data decoding device receives the encoded data of all division units and generates decoded data for all division units by decoding the received encoded data (S5113). Next, the three-dimensional data decoding device reconstructs a three-dimensional point cloud using the decoded data of all division units (S5114). For example, the three-dimensional data decoding device reconstructs a three-dimensional point cloud by combining multiple division units.
[0476] On the other hand, if the division method used is the second division method (second division method in S5112), the three-dimensional data decoding device receives encoded data of division units including point data and encoded data of division units not including point data, and generates decoded data by decoding the received encoded data of the division units (S5115). Note that if a division unit not including point data has not been sent, the three-dimensional data decoding device does not need to receive and decode a division unit not including point cloud data. Next, the three-dimensional data decoding device reconstructs a three-dimensional point cloud using the decoded data of the division units including point data (S5116). For example, the three-dimensional data decoding device reconstructs a three-dimensional point cloud by combining multiple division units.
[0477] Other methods for dividing point cloud data will be described below. When dividing a space evenly, as shown in (c) of Figure 65, there may be cases where no points exist in the divided spaces. In this case, the three-dimensional data encoding device combines the space where no points exist with another space where points exist. In this way, the three-dimensional data encoding device can form multiple division units so that all division units contain one or more points.
[0478] 78 is a flowchart of data division in this case. First, the three-dimensional data encoding device divides the data using a specific method (S5121). For example, the specific method is the second division method described above.
[0479] Next, the three-dimensional data encoding device determines whether or not a point is included in the target division unit, which is the division unit to be processed (S5122). If a point is included in the target division unit (Yes in S5122), the three-dimensional data encoding device encodes the target division unit (S5123). On the other hand, if a point is not included in the target division unit (No in S5122), the three-dimensional data encoding device combines the target division unit with other division units that include points, and encodes the combined division unit (S5124). In other words, the three-dimensional data encoding device encodes the target division unit together with other division units that include points.
[0480] Although the example described here is one in which the determination and combination are performed for each division unit, the processing method is not limited to this. For example, the three-dimensional data encoding device may determine whether or not each of a plurality of division units includes a point, combine the division units so that there are no division units that do not include a point, and then encode each of the plurality of division units after combination.
[0481] Next, a method for transmitting data including null tiles will be described. If the target tile to be processed is a null tile, the three-dimensional data encoding device does not transmit the data of the target tile. Figure 79 is a flowchart of the data transmission process.
[0482] First, the three-dimensional data encoding device determines a tile division method, and divides the point cloud data into tiles using the determined division method (S5131).
[0483] Next, the three-dimensional data encoding device determines whether the target tile is a null tile (S5132), that is, whether there is no data in the target tile.
[0484] If the target tile is a null tile (Yes in S5132), the three-dimensional data encoding device indicates that the target tile is a null tile in the tile additional information, and does not indicate information about the target tile (such as the tile's position and size) (S5133).In addition, the three-dimensional data encoding device does not send the target tile (S5134).
[0485] On the other hand, if the target tile is not a null tile (No in S5132), the three-dimensional data encoding device indicates in the tile additional information that the target tile is not a null tile and indicates information for each tile (S5135).The three-dimensional data encoding device also transmits the target tile (S5136).
[0486] In this way, by not including information about null tiles in the tile additional information, the amount of information in the tile additional information can be reduced.
[0487] A method for decoding coded data containing null tiles will now be described. First, a process for when there is no packet loss will be described.
[0488] 80 is a diagram showing an example of transmission data, which is encoded data transmitted from a three-dimensional data encoding device, and received data input to a three-dimensional data decoding device. Note that this assumes a system environment with no packet loss, and the received data is the same as the transmission data.
[0489] In a system environment without packet loss, the three-dimensional data decoding device receives all of the transmitted data. Figure 81 is a flowchart of the processing by the three-dimensional data decoding device.
[0490] First, the three-dimensional data decoding device refers to the tile additional information (S5141), and determines whether each tile is a null tile (S5142).
[0491] If the tile additional information indicates that the target tile is not a null tile (No in S5142), the 3D data decoding device determines that the target tile is not a null tile and decodes the target tile (S5143). Next, the 3D data decoding device obtains tile information (tile position information (origin coordinates, etc.) and size, etc.) from the tile additional information and reconstructs 3D data by combining multiple tiles using the obtained information (S5144).
[0492] On the other hand, if the tile additional information indicates that the target tile is not a null tile (Yes in S5142), the three-dimensional data decoding device determines that the target tile is a null tile and does not decode the target tile (S5145).
[0493] The three-dimensional data decoding device may determine that missing data are null tiles by sequentially analyzing index information indicated in the header of the encoded data. The three-dimensional data decoding device may also combine a determination method using tile additional information and a determination method using index information.
[0494] Next, processing in the case of packet loss will be described. Figure 82 is a diagram showing an example of transmission data sent from a three-dimensional data encoding device and received data input to a three-dimensional data decoding device. Here, a system environment with packet loss is assumed.
[0495] In a system environment with packet loss, the 3D data decoder may not be able to receive all of the transmitted data. t2 and A t2 packets are lost.
[0496] 83 is a flowchart of the processing of the three-dimensional data decoding device in this case. First, the three-dimensional data decoding device analyzes the continuity of the index information indicated in the header of the encoded data (S5151), and determines whether or not the index number of the target tile exists (S5152).
[0497] If the index number of the target tile exists (Yes in S5152), the 3D data decoding device determines that the target tile is not a null tile and performs decoding processing for the target tile (S5153). Next, the 3D data decoding device obtains tile information (tile position information (origin coordinates, etc.) and size, etc.) from the tile additional information, and reconstructs 3D data by combining multiple tiles using the obtained information (S5154).
[0498] On the other hand, if there is no index information for the target tile (No in S5152), the three-dimensional data decoding device determines whether the target tile is a null tile by referring to the tile additional information (S5155).
[0499] If the target tile is not a null tile (No in S5156), the three-dimensional data decoding device determines that the target tile has been lost (packet loss) and performs error decoding processing (S5157). Error decoding processing is, for example, processing that attempts to decode the original data assuming that the data was present. In this case, the three-dimensional data decoding device may reproduce the three-dimensional data and reconstruct the three-dimensional data (S5154).
[0500] On the other hand, if the target tile is a null tile (Yes in S5156), the three-dimensional data decoding device assumes that the target tile is a null tile and does not perform the decoding process or reconstruct the three-dimensional data (S5158).
[0501] Next, a coding method when null tiles are not explicitly indicated will be described. The three-dimensional data coding device may generate coded data and additional information in the following manner.
[0502] The three-dimensional data encoder does not include information about null tiles in the tile additional information. The three-dimensional data encoder adds index numbers of tiles other than null tiles to the data header. The three-dimensional data encoder does not send null tiles.
[0503] In this case, the number of tile divisions (number_of_tiles) indicates the number of divisions excluding null tiles. Note that the three-dimensional data encoding device may store information indicating the number of null tiles separately in the bitstream. Furthermore, the three-dimensional data encoding device may indicate information about null tiles in the additional information, or may indicate some information about null tiles.
[0504] 84 is a flowchart of the three-dimensional data encoding process performed by the three-dimensional data encoding device in this case. First, the three-dimensional data encoding device determines a tile division method, and divides the point cloud data into tiles using the determined division method (S5161).
[0505] Next, the three-dimensional data encoding device determines whether the target tile is a null tile (S5162), that is, whether there is no data in the target tile.
[0506] If the target tile is not a null tile (No in S5162), the three-dimensional data encoding device adds index information of tiles other than null tiles to the data header (S5163), and then transmits the target tile (S5164).
[0507] On the other hand, if the target tile is a null tile (Yes in S5162), the three-dimensional data encoding device does not add index information of the target tile to the data header, and does not transmit the target tile.
[0508] Fig. 85 is a diagram showing an example of index information (idx) added to a data header. As shown in Fig. 85, index information for null tiles is not added, and consecutive numbers are added to tiles other than null tiles.
[0509] FIG. 86 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 base of the arrow indicates the dependency source. tn (n is 1 to 4) indicates the position information of tile number n, and A tn indicates the attribute information of tile number n. tile indicates additional tile information.
[0510] FIG. 87 is a diagram showing an example of the structure of transmission data, which is encoded data transmitted from the three-dimensional data encoding device.
[0511] Below, we will explain the decoding method when null tiles are not explicitly indicated. Figure 88 is a diagram showing an example of transmission data sent from a three-dimensional data encoding device and received data input to a three-dimensional data decoding device. Here, we assume a system environment with packet loss.
[0512] 89 is a flowchart of the processing of the three-dimensional data decoding device in this case. First, the three-dimensional data decoding device analyzes the tile index information indicated in the header of the encoded data and determines whether the index number of the target tile exists. The three-dimensional data decoding device also obtains the number of divisions of the tile from the tile additional information (S5171).
[0513] If the index number of the target tile exists (Yes in S5172), the 3D data decoding device performs decoding processing for the target tile (S5173). Next, the 3D data decoding device acquires tile information (tile position information (origin coordinates, etc.) and size, etc.) from the tile additional information, and reconstructs 3D data by combining multiple tiles using the acquired information (S5175).
[0514] On the other hand, if the index number of the target tile does not exist (No in S5172), the three-dimensional data decoding device determines that the target tile is a packet loss and performs error decoding processing (S5174).In addition, the three-dimensional data decoding device determines that space that does not exist in the data is a null tile and reconstructs the three-dimensional data.
[0515] Furthermore, by explicitly indicating null tiles, the three-dimensional data encoding device can properly determine that no points exist within the tile, rather than that there is data loss due to measurement error or data processing, or packet loss.
[0516] The three-dimensional data encoding device may use both a method of explicitly indicating null packets and a method of not explicitly indicating null packets. In this case, the three-dimensional data encoding device may indicate information indicating whether or not null packets are to be explicitly indicated in the tile additional information. Alternatively, whether or not null packets are to be explicitly indicated may be determined in advance depending on the type of division method, and the three-dimensional data encoding device may indicate whether or not null packets are to be explicitly indicated by indicating the type of division method.
[0517] Also, in Figure 67 and other figures, an example is shown in which the tile additional information indicates information related to all tiles, but the tile additional information may indicate information about only some of the tiles among the multiple tiles, or may indicate information about null tiles among the multiple tiles.
[0518] Also, although an example has been described in which information about segment data, such as information about whether or not segment data (tiles) exists, is stored in the tile additional information, some or all of this information may be stored in a parameter set or as data. When this information is stored as data, for example, nal_unit_type, which means information indicating whether or not segment data exists, may be defined, and this information may be stored in the NAL unit. Also, this information may be stored in both the additional information and the data.
[0519] As described above, the three-dimensional data encoding device according to this embodiment performs the processing shown in Fig. 90. First, the three-dimensional data encoding device generates a plurality of coded data by encoding a plurality of subspaces (e.g., tiles or slices) obtained by dividing a target space including a plurality of three-dimensional points (S5181). The three-dimensional data encoding device generates a bitstream including the plurality of coded data and first information (e.g., tile_null_flag) corresponding to each of the plurality of subspaces (S5182). Each of the plurality of first information indicates whether or not second information indicating the structure of the corresponding subspace is included in the bitstream.
[0520] According to this, for example, the second information can be omitted for subspaces that do not include points, and therefore the data amount of the bitstream can be reduced.
[0521] For example, the second information includes information indicating the coordinates of the origin of the corresponding subspace. For example, the second information includes information indicating at least one of the height, width, and depth of the corresponding subspace.
[0522] This allows the three-dimensional data encoding device to reduce the amount of data in the bitstream.
[0523] 78, the three-dimensional data encoding device may divide a target space containing a plurality of three-dimensional points into a plurality of subspaces (e.g., tiles or slices), combine the plurality of subspaces according to the number of three-dimensional points contained in each subspace, and encode the combined subspaces. For example, the three-dimensional data encoding device may combine the plurality of subspaces so that the number of three-dimensional points contained in each of the combined subspaces is equal to or greater than a predetermined number. For example, the three-dimensional data encoding device may combine a subspace that does not contain three-dimensional points with a subspace that does contain three-dimensional points.
[0524] This allows the three-dimensional data encoding device to prevent subspaces with a small number of points or no points from being generated, thereby improving encoding efficiency.
[0525] For example, the three-dimensional data encoding device includes a processor and a memory, and the processor performs the above-mentioned processing using the memory.
[0526] Furthermore, the three-dimensional data decoding device according to this embodiment performs the processing shown in FIG. 91. First, the three-dimensional data decoding device acquires from the bitstream a plurality of pieces of first information (e.g., tile_null_flag), each of which corresponds to a plurality of subspaces (e.g., tiles or slices) obtained by dividing a target space including a plurality of three-dimensional points and indicates whether second information indicating the structure of the corresponding subspace is included in the bitstream (S5191). The three-dimensional data decoding device uses the plurality of pieces of first information to (i) reconstruct the plurality of subspaces by decoding a plurality of coded data generated by encoding the plurality of subspaces included in the bitstream, and (ii) reconstruct the target space by combining the plurality of subspaces (S5192). For example, the three-dimensional data decoding device uses the first information to determine whether second information is included in the bitstream, and if the second information is included in the bitstream, combines the decoded plurality of subspaces using the second information.
[0527] According to this, for example, the second information can be omitted for subspaces that do not include points, and therefore the data amount of the bitstream can be reduced.
[0528] For example, the second information includes information indicating the coordinates of the origin of the corresponding subspace. For example, the second information includes information indicating at least one of the height, width, and depth of the corresponding subspace.
[0529] This allows the three-dimensional data decoding device to reduce the amount of data in the bitstream.
[0530] Furthermore, the three-dimensional data decoding device may divide a target space containing a plurality of three-dimensional points into a plurality of subspaces (e.g., tiles or slices), combine the plurality of subspaces according to the number of three-dimensional points contained in each subspace, encode the combined subspaces, receive encoded data generated by the combination, and decode the received encoded data. For example, the encoded data may be generated by combining a plurality of subspaces such that the number of three-dimensional points contained in each of the combined subspaces is equal to or greater than a predetermined number. For example, the three-dimensional data may be generated by combining a subspace that does not contain three-dimensional points with a subspace that does contain three-dimensional points.
[0531] This allows the three-dimensional data device to decode coded data with improved coding efficiency by suppressing the generation of subspaces with a small number of points or no points.
[0532] For example, the three-dimensional data decoding device includes a processor and a memory, and the processor performs the above processing using the memory.
[0533] (Embodiment 8) Fig. 92 is a block diagram showing an example of the configuration of a three-dimensional data encoding device according to this embodiment. Fig. 93 is a diagram for explaining an outline of the encoding method performed by the three-dimensional data encoding device according to this embodiment.
[0534] The three-dimensional data encoding device 6800 generates split data obtained by dividing point cloud data into multiple pieces, such as tiles or slices, and encodes each of the multiple pieces of split data. The split data is also called sub-point cloud data. Point cloud data is data that indicates multiple three-dimensional positions in a three-dimensional space. The multiple pieces of split data are multiple sub-point cloud data obtained by dividing the three-dimensional space in which the point cloud data is located into multiple subspaces. The number of divisions, i.e., the number of split data, may be 1, indicating no division, or may be 2 or more.
[0535] In Fig. 92, the configuration of a three-dimensional data encoding device 6800 that divides into two will be described as an example. In Fig. 93, an example of dividing point cloud data into four will be shown. In Fig. 93, the divided space will be described as a two-dimensional space as an example, but it may be a one-dimensional space or a three-dimensional space.
[0536] The three-dimensional data encoding device 6800 includes a division method determination unit 6801, a division unit 6802, quantization units 6803a and 6803b, shift amount calculation units 6804a and 6804b, common position shift units 6805a and 6805b, individual position shift units 6806a and 6806b, and encoding units 6807a and 6807b.
[0537] The division method determination unit 6801 determines a division method for the point cloud data. The division method determination unit 6801 outputs division method information indicating the division method to the division unit 6802 and the shift amount calculation units 6804a and 6804b. Specific examples of division methods will be described later. The three-dimensional data encoding device 6800 does not necessarily have to include the division method determination unit 6801. In this case, the three-dimensional data encoding device 6800 may divide the point cloud data into a plurality of divided data using a predetermined division method.
[0538] The dividing unit 6802 divides the point cloud data into multiple pieces of divided data in accordance with the division method determined by the division method determination unit 6801. The multiple pieces of divided data divided by the division unit 6802 are processed individually. For this reason, the three-dimensional data encoding device 6800 includes a processing unit that performs subsequent processing for each piece of divided data. Specifically, the three-dimensional data encoding device 6800 includes a quantization unit 6803a, a shift amount calculation unit 6804a, a common position shift unit 6805a, an individual position shift unit 6806a, and an encoding unit 6807a for processing the first piece of divided data. Furthermore, the three-dimensional data encoding device 6800 includes a quantization unit 6803b, a shift amount calculation unit 6804b, a common position shift unit 6805b, an individual position shift unit 6806b, and an encoding unit 6807b for processing the second piece of divided data. This allows the three-dimensional data encoding device 6800 to process each of the multiple pieces of data in parallel. Note that, although Fig. 92 shows an example of the three-dimensional data encoding device 6800 having a processing unit that processes two pieces of data in parallel, the three-dimensional data encoding device 6800 may have a processing unit that processes three or more pieces of data in parallel. Furthermore, the three-dimensional data encoding device may be configured to process each of the multiple pieces of data in a single processing unit.
[0539] Each of the quantization units 6803a and 6803b performs scaling (dividing the position information by an arbitrary value) and quantization on the corresponding divided data. When multiple points overlap, each of the quantization units 6803a and 6803b may delete at least one of the overlapping points, or may not process the at least one point.
[0540] Each of the shift amount calculation units 6804a and 6804b calculates at least one of a common position shift amount and an individual position shift amount for shifting, that is, moving, the position of the corresponding divided data in accordance with the division method determined by the division method determination unit 6801. Depending on the division method, the shift amount calculation units 6804a and 6804b calculate only the common position shift amount out of the common position shift amount and the individual position shift amount, calculate only the individual position shift amount, or calculate both the common position shift amount and the individual position shift amount.
[0541] The common position shift amount is a shift amount (movement amount) by which the positions of multiple divided data are commonly moved. In other words, the common position shift amount is the same for multiple divided data. The common position shift amount includes a direction in which the positions of the multiple divided data are moved and a distance by which they are moved. The common position shift amount is an example of a first movement amount.
[0542] The individual position shift amount is a shift amount (movement amount) by which the position of each of the plurality of divided data is moved individually. The individual position shift amount is a shift amount determined in one-to-one correspondence with each of the plurality of divided data, and in many cases differs among the plurality of divided data. The individual position shift amount includes a direction and a distance by which the position of the corresponding divided data is moved. The individual position shift amount is an example of a second movement amount.
[0543] The common position shift units 6805a and 6805b execute position shifts on the corresponding divided data by the common position shift amounts calculated by the shift amount calculation units 6804a and 6804b, respectively. As a result, the multiple divided data 6811 to 6814 obtained by dividing the point cloud data 6810 shown in (a) of Fig. 93 move in the direction and by the distance indicated by the common position shift amounts, as shown in (b) of Fig. 93.
[0544] The individual position shifters 6806a and 6806b execute position shifts on the corresponding divided data by the individual position shift amounts calculated by the shift amount calculators 6804a and 6804b, respectively, causing the divided data 6811 to 6814 shown in (c) of Fig. 93 to move in the directions and by the distances indicated by the corresponding individual shift amounts.
[0545] The encoding units 6807a and 6807b encode the corresponding divided data among the plurality of divided data shifted by the individual position shift units 6806a and 6806b, respectively.
[0546] The processing order of the dividing unit 6802, quantizing units 6803a and 6803b, shift amount calculation units 6804a and 6804b, common position shift units 6805a and 6805b, and individual position shift units 6806a and 6806b may be reversed. For example, the shift amount calculation units 6804a and 6804b and common position shift units 6805a and 6805b may perform processing before the dividing unit 6802. In this case, the shift amount calculation units 6804a and 6804b may be merged into a single processing unit, and the common position shift units 6805a and 6805b may be merged into a single processing unit. In this case, it is sufficient that the shift amount calculation units 6804a and 6804b calculate at least the common position shift amount of the common position shift amount and the individual position shift amount before the common position shift units 6805a and 6805b, and the individual position shift amount is calculated before the processing of the individual position shift units 6806a and 6806b. In other words, a configuration may be adopted in which the processing unit that calculates the common position shift amount is separate from the processing unit that calculates the individual position shift amount and calculates the common position shift amount before the common position shift unit. Also, any two or more processing units among the above-mentioned multiple processing units may be merged.
[0547] Next, a calculation example of the common position shift amount and the individual position shift amount will be described with reference to Fig. 94. Fig. 94 is a diagram for explaining a first example of position shift. The first example is an example in which point cloud data 6810 is shifted by the common position shift amount, and then multiple divided data 6811 to 6814 are shifted by the individual position shift amounts corresponding to each of them.
[0548] As shown in (a) of FIG. 94, the three-dimensional data encoding device generates a bounding box 6820 of a size that includes all of the divided data 6811 to 6814 of the point cloud data 6810, and calculates the minimum point of the generated bounding box 6820. The three-dimensional data encoding device then calculates the direction and distance of a vector indicated by the difference between the calculated minimum point and the origin as the common position shift amount. Note that since the origin is 0, the difference is indicated by the coordinates of the minimum point. The origin may be a predetermined reference point other than 0. The bounding box 6820 may be a rectangular area of the smallest size that surrounds all of the divided data 6811 to 6814. The minimum point of the bounding box 6820 is the point in the bounding box 6820 that is closest to the origin. The bounding box 6820 is also referred to as a common bounding box. The bounding box is also referred to as an encoding bounding box.
[0549] The three-dimensional data encoding device moves the plurality of divided data 6811 to 6814 by the calculated common position shift amount, as shown in (b) of Figure 94. Note that the three-dimensional data encoding device may also move the point cloud data 6810 before division by the common position shift amount.
[0550] Next, as shown in (b) of Fig. 94, for each of the plurality of divided data 6811-6814 after the common position shift, the three-dimensional data encoding device generates bounding boxes 6821-6824 of a size that includes the divided data 6811-6814, and calculates the minimum point of each of the generated bounding boxes 6821-6824. Then, for each of the plurality of divided data 6811-6814, the three-dimensional data encoding device calculates the distance between the origin and the minimum point of the bounding box corresponding to that divided data as the individual position shift amount for that divided data. Each of the bounding boxes 6821-6824 may be a rectangular area of the smallest size that surrounds the corresponding divided data 6811-6814. The minimum point of the bounding boxes 6821-6824 is the point closest to the origin in each of the bounding boxes 6821-6824. Each of the bounding boxes 6821 to 6824 is also called an individual bounding box.
[0551] As shown in FIG. 94(c), the three-dimensional data encoding device moves each of the plurality of divided data 6811 to 6814 by the calculated corresponding individual position shift amount.
[0552] The three-dimensional data encoding device generates a bitstream by encoding each of the multiple data segments 6811-6814 moved by the individual position shift amounts using the corresponding bounding boxes 6821-6824. At this time, the three-dimensional data encoding device stores second bounding box information indicating the position and size of the minimum-value point of each of the bounding boxes 6821-6824 in metadata included in the bitstream. Note that, hereinafter, the bounding boxes are also referred to as encoded bounding boxes (encoded BBs).
[0553] The common position shift amount and first bounding box information indicating the position and size of the minimum point of the bounding box 6820 are stored in the SPS in the data configuration of the bitstream shown in (e) of Figure 94. The individual position shift amount is stored in the header of the position information of the corresponding segmented data. The second bounding box information of the bounding boxes 6821-6824 used in encoding each of the segmented data 6811-6814 is stored in the header of the position information of the corresponding segmented data.
[0554] Here, if the common position shift amount is Shift_A and the individual position shift amount is Shift_B(i) (i is the index of the divided data), the shift amount Shift(i) of the divided data(i) can be calculated using the following formula.
[0555] Shift(i) = Shift_A + Shift_B(i)
[0556] That is, as shown in FIG. 94(d), the total shift amount for each divided data can be calculated by adding the common position shift amount and the corresponding individual position shift amount.
[0557] Before encoding the point cloud data, the three-dimensional data encoding device shifts the position of the point cloud data of the i-th divided data by subtracting Shift(i).
[0558] The three-dimensional data decoding device obtains Shift_A and Shift_B(i) from the SPS and the header of the divided data, calculates Shift(i), and then adds Shift(i) to the decoded divided data(i) to return the divided data to its original position. This allows multiple divided data to be correctly restored.
[0559] Next, a second example of position shifting in which common position shifting is performed but individual position shifting is not performed will be explained with reference to Figure 95. In the second example, the amount of individual position shifting is not transmitted, so the amount of information in the bitstream can be reduced.
[0560] 95 is a diagram for explaining a second example of position shifting. In the second example, the position of the point cloud data 6810 is shifted by the common position shift amount, and the positions of the divided data 6811 to 6814 are not shifted by the individual position shift amount.
[0561] 95(a), the three-dimensional data encoding device generates a bounding box 6820 of a size that includes all of the divided data 6811 to 6814 of the point cloud data 6810, and calculates the common position shift amount using the generated bounding box 6820. The method for calculating the common position shift amount is the same as the method described using FIG.
[0562] As shown in (b) of Figure 95, the three-dimensional data encoding device moves multiple divided data 6811 to 6814 by the calculated common position shift amount, and encodes using a bounding box 6820 that includes all of the divided data 6811 to 6814 after the common position shift.
[0563] As described above, in the second example, after dividing the point cloud data 6810, individual position shift amounts or bounding box information for each of the plurality of divided data 6811-6814 are not calculated. Note that in the second example, the three-dimensional data encoding device shifts the positions of the plurality of divided data 6811-6814 by a common position shift amount and encodes them using a common bounding box, but this is not limited to this. For example, the three-dimensional data encoding device may shift the positions of the plurality of divided data 6811-6814 by a common position shift amount and encode them using individual bounding boxes for each of the divided data 6811-6814. Alternatively, the three-dimensional data encoding device may shift each of the divided data 6811-6814 by an individual position shift amount and encode them using a common bounding box.
[0564] As shown in FIG. 95(c), the total shift amount of each divided data is a common position shift amount.
[0565] In addition, the first bounding box information indicating the common position shift amount and the position and size of the minimum point of the bounding box 6820 including all the split data is stored in the SPS of the bitstream data structure shown in (d) of Figure 95.
[0566] On the other hand, the header of the position information of the corresponding data segment does not store the individual position shift amount and the second bounding box information used in encoding each data segment.
[0567] In addition, a flag (identification information) indicating that encoding was performed using a common position shift amount and a bounding box including all of the split data 6811 to 6814, and a flag (identification information) indicating that the individual position shift amount and the size information of the bounding box used to encode the split data are not stored in the header of the position information for each split data are stored in the SPS or GPS.
[0568] Based on the above flag stored in the SPS or GPS, the three-dimensional data decoding device determines whether the data was encoded using common information or individual information, and calculates the location information and bounding box size to be used for decoding.
[0569] In the following, BB indicates a bounding box. Common information refers to a common position shift amount and first BB information that are common to multiple data segments. The common position shift amount may be indicated by the minimum point of the common bounding box. Individual information refers to an individual position shift amount for each data segment and second BB information of the bounding box for each data segment used for encoding. The individual position shift amount may be indicated by the minimum point of the bounding box for each data segment. Partition area information is information that indicates a partition boundary in space when partitioning data, and may include BB information that indicates the minimum point of the BB and the size of the BB.
[0570] Fig. 96 is a flowchart showing an example of an encoding method when switching between the first example and the second example. Fig. 97 is a flowchart showing an example of a decoding method when switching between the first example and the second example.
[0571] As shown in FIG. 96, the three-dimensional data encoding device determines the common position shift amount of the point cloud data 6810 and the size of the common BB surrounding the point cloud data 6810 (S6801).
[0572] The three-dimensional data encoding device determines whether or not to individually shift each of the divided data 6811 to 6814 using the individual position shift amount (S6802). The three-dimensional data encoding device may make this determination based on the amount of header information reduction or the result of calculating the encoding efficiency.
[0573] If the divided data 6811-6814 are not to be shifted individually (No in S6802), the three-dimensional data encoding device determines to send the common position shift amount and the common BB size (S6803), and determines not to send the individual position shift amount and the common BB size (S6804). As a result, the three-dimensional data encoding device generates a bit stream that includes the common position shift amount and the common BB size, but does not include the individual position shift amount and the individual BB size. Identification information indicating that individual shifts are not performed may be stored in the bit stream.
[0574] On the other hand, when shifting each of the divided data 6811-6814 individually (Yes in S6802), the three-dimensional data encoding device determines to send the common position shift amount and the size of the common BB (S6805), and also determines to send the individual position shift amount and the size of the individual BB (S6806). As a result, the three-dimensional data encoding device generates a bit stream including the common position shift amount and the size of the common BB, and also including the individual position shift amount and the size of the individual BB. Identification information indicating that individual shifting is performed may be stored in the bit stream. Note that the three-dimensional data encoding device may calculate the individual position shift amount and the individual BB size of each of the divided data 6811-6814 in step S6806.
[0575] As shown in FIG. 97, the three-dimensional data decoding device acquires the bit stream to obtain identification information indicating whether or not an individual shift has been performed (S6811).
[0576] The three-dimensional data decoding device uses the identification information to determine whether or not an individual shift was performed during encoding (S6812).
[0577] When it is determined that individual shifts have not been performed on the divided data 6811 to 6814 (No in S6812), the three-dimensional data decoding device acquires the common position shift amount and the size of the common BB from the bit stream (S6813).
[0578] On the other hand, if the three-dimensional data decoding device determines that individual shifts have been performed on each of the divided data 6811 to 6814 (Yes in S6812), it obtains the common position shift amount and the size of the common BB from the bitstream (S6814), and also obtains the individual position shift amount and the size of the individual BB (S6815).
[0579] Next, a third example of shifting the position by a position shift amount determined using a divided area of the space where point cloud data exists will be described with reference to Fig. 98. In the third example, the amount of information of the position shift amount can be further reduced.
[0580] 98 is a diagram for explaining a third example of position shifting. In the third example, the total shift amount of each of the divided data 6811 to 6814 is expressed as three levels of shift amount.
[0581] As shown in (a) of Fig. 98, the three-dimensional data encoding device calculates the common position shift amount using a bounding box 6820. The method of calculating the common position shift amount is the same as the method described with reference to Fig. 94. At this time, the three-dimensional data encoding device determines a plurality of divided regions 6831 to 6834 ((b) of Fig. 98) for dividing the point cloud data 6810 into a plurality of divided data 6811 to 6814 in accordance with the determined plurality of divided regions 6831 to 6834. The plurality of divided regions 6831 to 6834 are regions corresponding to the plurality of divided data 6811 to 6814, respectively. The plurality of divided regions 6831 to 6834 are also referred to as divided region bounding boxes.
[0582] The three-dimensional data encoding device calculates the direction and distance of the vector indicated by the difference between the minimum point of the bounding box 6820 containing all the divided data and the minimum point of each divided area 6831 to 6834 as the position shift amount of the divided area, as shown in (b) of Figure 98.
[0583] 98(c), for each of the plurality of divided data 6811-6814, the three-dimensional data encoding device generates a bounding box 6821-6824 of a size that includes the divided data 6811-6814, and calculates the minimum point of each of the generated bounding boxes 6821-6824. Then, for each of the plurality of divided data 6811-6814, the three-dimensional data encoding device calculates the direction and distance of a vector indicated by the difference between the minimum point of the bounding box corresponding to the divided data and the minimum point of the corresponding divided area, as the individual position shift amount of the divided data.
[0584] The three-dimensional data encoding device stores the common position shift amount, the individual position shift amount for each divided data, and bounding box information indicating the size of the bounding box 6820 in the bitstream.
[0585] The common position shift amount and first bounding box information indicating the position and size of the minimum point of the bounding box 6820 are stored in the SPS in the data configuration of the bitstream shown in (e) of Figure 98. The individual position shift amount is stored in the header of the position information of the corresponding segment data. Segment region information including the position shift amount for each segment is stored, for example, in a parameter set in which segment metadata is stored. Second bounding box information of the bounding boxes 6821-6824 used in encoding each of the segment data 6811-6814 is stored in the header of the position information of the corresponding segment data. Here, each of the bounding boxes 6821-6824 used in encoding each of the segment data 6811-6814 is included in each of the segment regions 6831-6834.
[0586] Here, if the common position shift amount is Shift_A, the individual position shift amount is Shift_B(i), and the position shift amount of the divided area is Shift_C(i) (i is the index of the divided data), the shift amount Shift(i) of the divided data (i) can be calculated using the following formula.
[0587] Shift(i) = Shift_A + Shift_B(i) + Shift_C(i)
[0588] That is, as shown in (d) of Figure 98, the total shift amount for each divided data can be calculated by adding together three shift amounts: the common position shift amount, the position shift amount for the divided area, and the individual position shift amount.
[0589] Before encoding the point cloud data, the three-dimensional data encoding device shifts the position of the point cloud data of the i-th divided data by subtracting Shift(i).
[0590] The three-dimensional data decoding device obtains Shift_A, Shift_B(i), and Shift_C(i) from the SPS and the headers of the divided data, calculates Shift(i), and then adds Shift(i) to the decoded divided data(i) to return the divided data to its original position. This allows multiple divided data to be correctly decoded.
[0591] This method has the effect of reducing the amount of information on the shift amount for each divided data by indicating the individual position shift amount as a difference from the divided area when dividing area information is sent.
[0592] Depending on whether or not divided area information is sent, the individual position shift amount may be switched between the difference between the minimum value point of the common bounding box and the minimum value point of each individual bounding box, or the difference between the minimum value point for each divided area and the minimum value point of each individual bounding box. In the latter case, the individual position shift amount is expressed as the sum of the position shift amount for the divided area and the calculated difference.
[0593] Fig. 99 is a flowchart showing an example of an encoding method in which the first example and the third example are switched when performing individual position shifting. Fig. 100 is a flowchart showing an example of a decoding method in which the first example and the third example are switched when performing individual position shifting.
[0594] The three-dimensional data encoding device determines a division method for the point cloud data 6810 (S6821), as shown in Fig. 99. Specifically, the three-dimensional data encoding device determines whether to shift the position of the point cloud data in the first example or in the third example.
[0595] The three-dimensional data encoding device determines whether the determined division method is the third example method that uses divided regions (S6822).
[0596] If the three-dimensional data encoding device determines that the first example method is being used (No in S6822), it sets the individual position shift amount to the difference between the minimum value point of the common BB and the minimum value point of the individual BB (S6823).
[0597] The three-dimensional data encoding device generates a bitstream including the common information and the individual information (S6824). The bitstream may contain identification information indicating that it is the method of the first example.
[0598] If the three-dimensional data encoding device determines that the third example method is being used (Yes in S6822), it sets the individual position shift amount to the difference between the minimum value point of the divided area BB and the minimum value point of the individual BB (S6825).
[0599] The three-dimensional data encoding device transmits a bitstream including the common information, the individual information, and the divided region information (S6826). The bitstream may contain identification information indicating that it is the method of the third example.
[0600] As shown in FIG. 100, the three-dimensional data decoding device acquires a bitstream and determines whether the bitstream includes segmented region information (S6831). As a result, the three-dimensional data decoding device determines whether the acquired bitstream includes point cloud data encoded in the first example or in the third example. Specifically, if the bitstream includes segmented region information, the three-dimensional data decoding device determines that the bitstream includes point cloud data encoded in the third example; if the bitstream does not include segmented region information, the three-dimensional data decoding device determines that the bitstream includes point cloud data encoded in the first example. The three-dimensional data decoding device may also acquire identification information included in the bitstream to determine whether the bitstream was encoded in the first example or in the third example.
[0601] If the bitstream does not contain split area information (No in S6831), that is, if it is encoded in the first example, the three-dimensional data decoding device obtains common information and individual information from the bitstream (S6832).
[0602] Based on the acquired common information and individual information, the three-dimensional data decoding device calculates the position shift amount for each divided data, i.e., the position shift amount Shift(i), common BB, and individual BB in the first example, and decodes the point cloud data using this information (S6833).
[0603] If the bitstream contains split area information (Yes in S6831), that is, if it is encoded in the third example, the three-dimensional data decoding device obtains common information, individual information, and split area information from the bitstream (S6834).
[0604] Based on the acquired common information, individual information, and divided area information, the three-dimensional data decoding device calculates the position shift amount for each divided data, i.e., the position shift amount Shift(i), common BB, individual BB, and divided area in the third example, and decodes the point cloud data using this information (S6835).
[0605] Next, a fourth example in which divided areas of a space where point cloud data exists are shifted by a position shift amount determined as a bounding box for encoding will be described with reference to Fig. 101. In the fourth example, the divided areas and the individual bounding boxes match, so the amount of information in the bounding boxes can be reduced compared to the third example.
[0606] 101 is a diagram for explaining a fourth example of position shifting. In the fourth example, the total shift amount of each of the divided data 6811 to 6814 is expressed in two stages: a common position shift amount and a position shift amount of the divided area.
[0607] As shown in (a) of Figure 101, the three-dimensional data encoding device calculates the common position shift amount using a bounding box 6820. The method of calculating the common position shift amount is the same as the method described using Figure 94. At this time, the three-dimensional data encoding device divides point cloud data 6810 into a plurality of divided data 6811 to 6814. The method of dividing the point cloud data 6810 is the same as the method described using (a) of Figure 98.
[0608] The three-dimensional data encoding device calculates the amount of position shift of the divided region as shown in (b) of Fig. 101. The method for calculating the amount of position shift of the divided region is the same as the method explained using (b) of Fig. 98.
[0609] The three-dimensional data encoding device calculates the position shift amount of the divided region as an individual position shift amount for each of the divided data 6811 to 6814. For this reason, the three-dimensional data encoding device stores in the bitstream the common position shift amount, the individual position shift amount (position shift amount of the divided region), and bounding box information indicating the size of the bounding box (divided region).
[0610] The common position shift amount and the first bounding box information indicating the position and size of the minimum point of the bounding box 6820 are stored in the SPS in the bitstream data configuration shown in (d) of FIG.
[0611] Furthermore, the individual position shift amounts are stored in at least one of the header of the position information of the corresponding split data and the split metadata. When the individual position shift amounts are stored in one of the header of the position information and the split metadata, identification information indicating that the individual position shift amounts are stored in the header of the position information of the split data or in the split metadata may be stored in the GPS or SPS. Alternatively, the individual position shift amounts may be stored, for example, in the header of the split data, and identification information (flags) indicating whether the position shift amounts and bounding box information stored in the header of the split data match the split areas may be stored in the GPS or SPS. This allows the three-dimensional data decoding device to determine, based on the flag, that the split area information is stored in the header of the split data and use the position shift amounts and bounding box information stored in the header of the split data as information about the split area. Alternatively, the flag may be stored in the split metadata, and the three-dimensional data decoding device may acquire the split area information by referencing the header of the split data when the flag indicates 1, i.e., when the split area information is stored in the header of the split data.
[0612] Here, if the common position shift amount is Shift_A, the individual position shift amount is Shift_B(i), and the position shift amount of the divided area is Shift_C(i) (i is the index of the divided data), the shift amount Shift(i) of the divided data (i) can be calculated using the following formula.
[0613] Shift_B(i) = Shift_C(i)
[0614] Shift(i) = Shift_A + Shift_B(i)
[0615] That is, as shown in FIG. 101(c), the total shift amount of each divided data can be calculated by adding the common position shift amount and the position shift amount of the divided area (that is, the individual position shift amount).
[0616] Before encoding the point cloud data, the three-dimensional data encoding device shifts the position of the point cloud data of the i-th divided data by subtracting Shift(i).
[0617] The three-dimensional data decoding device obtains Shift_A, Shift_B(i), or Shift_C(i) from the SPS and the header of the divided data, calculates Shift(i), and then adds Shift(i) to the decoded divided data(i) to return the divided data to its original position. This allows multiple divided data to be correctly decoded.
[0618] This method has the effect of reducing the amount of information by using the individual position shift amount as the position shift amount for the divided area, so that even if divided area information needs to be sent, new divided area information does not need to be sent.
[0619] Depending on whether or not the divided region information is sent, it may be possible to switch between using the bounding box information of the individual bounding box of each divided data or the divided region information as the individual position shift amount.
[0620] FIG. 102 is a flowchart showing an example of an encoding method in which the third example and the fourth example are switched when storing divided region information.
[0621] 102, the three-dimensional data encoding device determines a division method for the point cloud data 6810 (S6841). Specifically, the three-dimensional data encoding device determines whether to shift the position of the point cloud data in the third example or in the fourth example. The three-dimensional data encoding device may make this determination based on the amount of header information reduction or the result of calculating the encoding efficiency.
[0622] The three-dimensional data encoding device determines whether to perform position shifting using individual bounding boxes based on the determined division method (S6842). That is, the three-dimensional data encoding device determines whether to use the method in the third example or the method in the fourth example.
[0623] If the three-dimensional data encoding device determines that the third example method is being used (Yes in S6842), it sets the individual position shift amount to the difference between the minimum value point of the divided area BB and the minimum value point of the individual BB (S6843).
[0624] The three-dimensional data encoding device generates a bitstream including the common information, the individual information, and the division area information (S6844). The bitstream may contain identification information indicating that it is the method of the third example.
[0625] If the three-dimensional data encoding device determines that the fourth example method is being used (No in S6842), it sets the individual position shift amount to the difference between the minimum value point of the common BB and the minimum value point of the divided area BB (S6845).
[0626] The three-dimensional data encoding device transmits a bitstream including the common information and the division region information (S6846). The bitstream may contain identification information indicating that it is the method of the fourth example.
[0627] Next, a fifth example of position shifting by a position shift amount determined using a divided area of a space where point cloud data exists will be described with reference to Fig. 103. In the fifth example, the amount of information on the shift amount can be reduced.
[0628] 103 is a diagram illustrating a fifth example of the position shift. The fifth example is different from the third example in that the divided areas of the third example are equally divided areas.
[0629] As shown in (a) of FIG. 103, the three-dimensional data encoding device calculates the common position shift amount using a bounding box 6820. The method for calculating the common position shift amount is the same as the method described with reference to FIG. 94. In this case, the three-dimensional data encoding device determines a plurality of divided regions 6841 to 6844 ((b) of FIG. 103) for dividing the point cloud data 6810 into a plurality of regions, for example, according to a predetermined rule based on the bounding box 6820. For example, when dividing the bounding box 6820 into N equal parts, where N=4, the three-dimensional data encoding device can generate four divided regions 6841 to 6844 of equal size. Here, for example, if region numbers are defined in Morton order as identifiers identifying the divided regions 6841 to 6844, the divided regions have the same size, and therefore the position shift amount of the divided region can be calculated from the number of divisions and the region number of the region. For this reason, the three-dimensional data encoding device may transmit the number of divisions and identification information for identifying the region instead of transmitting the position shift amount of the divided region. As described above, the identification information is the Morton order corresponding to each of the plurality of divided areas 6841 to 6844.
[0630] The example of (c) in Figure 103 is an example in which the coding area is an individual bounding box for each of multiple divided data. In this case, the position shift amount for each divided data is represented by the sum of the common position shift amount, the position shift amount for the corresponding divided area, and the individual position shift amount from the reference position (position of the smallest point) of the corresponding divided area. In this case, the corresponding divided area does not need to include the entire coding area (i.e., individual BB).
[0631] The example of (d) in Figure 103 is an example in which the coding area of each divided data is matched with each divided area. In this case, the position shift amount of each divided data is indicated by the sum of the common position shift amount and the position shift amount of the corresponding divided area. In this case, the corresponding divided area matches the coding area (i.e., individual BB), and therefore includes the coding area.
[0632] In this way, the three-dimensional data encoding device may or may not match the encoding area of each divided data with the divided area when dividing the point cloud data. When the encoding area of each divided data is matched with the divided area, either method (c) or (d) of Figure 103 can be used. When the encoding area of each divided data is not matched with the divided area, method (c) of Figure 103 can be used.
[0633] 103(c) and 103(d) are used, the bounding box information indicating the common position shift amount and the position and size of the minimum point of the bounding box 6820 is stored in the SPS of the bitstream data structure. Also, information on the division method and the number of divisions as divided area information is stored in the SPS or GPS as information common to all divided data, and the number (identification information) of each divided area in a predetermined order (Morton order) is stored in the header of the position information of the divided data as information for each divided area.
[0634] The individual position shift amount is stored in the header of the position information of the corresponding divided data. In the case of (c) of Figure 103, the individual position shift amount is also stored in the header of the position information of the divided data.
[0635] When matching a divided area with divided data (i.e., matching a divided area with an individual bounding box of the divided data), the number of the divided data (tile ID) included in the header of the position information of the divided data may be treated as a number in a predetermined order for each divided area. In this way, by indicating the individual position shift amount with identification information for each data (a number in a predetermined order), the amount of information in the header can be reduced.
[0636] In addition, when the three-dimensional data encoding device uses the division method of the fifth example, it uses a division method that divides a common bounding box equally and in a predetermined order, and indicates the position shift amount of the divided area using area information including the number of divisions and identification information of the divided area, and when using a different division method, it may switch to indicating the position shift amount using a method that does not use the above-mentioned area information.
[0637] Here, if the common position shift amount is Shift_A, the individual position shift amount is Shift_B(i), and the position shift amount of the divided area is Shift_D(i) (i is the index of the divided data), the shift amount Shift(i) of the divided data (i) can be calculated using the following formula.
[0638] Shift(i) = Shift_A + Shift_B(i) + Shift_D(i)
[0639] That is, the total shift amount for each divided data can be calculated by adding together three shift amounts: the common position shift amount, the position shift amount for the divided area, and the individual position shift amount.
[0640] Before encoding the point cloud data, the three-dimensional data encoding device shifts the position of the point cloud data of the i-th divided data by subtracting Shift(i).
[0641] The three-dimensional data decoding device acquires Shift_A and Shift_B(i) from the SPS and the headers of the divided data, and further acquires division area information, such as information on the division method, the number of divisions, and a number for each divided area in a predetermined order, derives the position shift amount Shift_D(i) using a predetermined method, calculates Shift(i), and then adds Shift(i) to the decoded divided data(i) to return the divided data to its original position. This allows multiple divided data to be correctly decoded.
[0642] A specific example of reducing the rules and header size when dividing point cloud data using an octree will be described below. Fig. 104 is a diagram for explaining an encoding method when dividing a three-dimensional space using an octree.
[0643] First, the three-dimensional data encoding device may offset (shift or move) point cloud data in three-dimensional space by a common position shift amount, and then divide the data using an octtree. The three-dimensional data encoding device divides a bounding box 6850 of the point cloud data into eight divided regions using an octtree, and sets the number of divisions using the depth of the octtree. For example, the number of divisions for depth is given by N = 2^(Depth * 3), where the number of divisions is 8 when depth = 1 and 64 when depth = 2. The order of the divided regions is Morton order. The position information of the divided regions can be calculated from the Morton order by applying the fifth example to three-dimensional space. Note that the Morton order has the advantage of being able to be calculated using a predetermined method from the position information of the divided regions.
[0644] The bounding box information of the point cloud data is stored in the SPS or GPS, which contains metadata common to multiple segmented data. The bounding box information includes the minimum point (initial position) and size of the bounding box.
[0645] The three-dimensional data encoding device stores identification information indicating that the division method was an octtree, and if the division method was an octtree, depth information indicating the depth of the octtree, in the SPS or GPS of the bitstream data configuration shown in (e) of Figure 104. The header of each divided data stores a number in Morton order as the divided data number. Furthermore, if the division method is an octtree, the position shift amount of the divided data and the encoding bounding box information are assumed to be derived from Morton order, and are not stored in the bitstream.
[0646] That is, as shown in (f) of Figure 104, the three-dimensional data encoding device uses a predetermined method to calculate identification information indicating that the data has been divided into an octtree, the depth of the octtree, and the Morton order of the octtree, based on the position information of each of the multiple divided areas obtained by dividing the data into octtrees. As shown in (g) of Figure 104, the three-dimensional data decoding device obtains the identification information indicating that the data has been divided into an octtree, the depth of the octtree, and the Morton order, and restores the position information of each of the multiple divided areas obtained by dividing the data into octtrees using a predetermined method.
[0647] If there is no point cloud data in a divided area, the divided area information may not be necessary. For example, if there is no point cloud data in the area with divided data number = 2, the divided data number is not sent, so the order of divided data numbers skips 2 and becomes 1, 3, 4.
[0648] The division metadata may store a division data number or may store information about all division areas, including division areas that do not have point cloud data. In this case, the division area information may indicate whether or not the division area has point cloud data.
[0649] FIG. 105 is a diagram showing an example of GPS syntax.
[0650] The octree_partition_flag is a flag indicating whether the point cloud data is divided by octree partitioning.
[0651] Depth indicates the depth of division of the octree when dividing point cloud data into octrees.
[0652] gheader_BBmin_present_flag is a flag indicating whether or not the position information field of the bounding box for encoding point cloud data is present in the header of the position information.
[0653] gheader_BBsize_present_flag is a flag indicating whether or not the size information field of the bounding box for encoding point cloud data is present in the header of the position information.
[0654] When octree_partition_flag=1, gheader_BBmin_present_flag and gheader_BBsize_present_flag are set to 0.
[0655] FIG. 106 is a diagram showing an example of the syntax of the header of the location information.
[0656] The partition_id indicates the identification information of the divided data. In the case of octree division, the partition_id indicates a unique position in the Morton order.
[0657] BBmin indicates the amount of shift when encoding data or divided data.
[0658] BBsize indicates the size of the bounding box when encoding the data or divided data.
[0659] Although the octree division has been described as an example, this method can be applied to other division methods by defining a predetermined division method, the order of divided data, and the method for calculating position information. For example, when viewing point cloud data from above and dividing it at equal intervals on the xy plane, by determining and transmitting the division method, the number of divisions or the size and order of divisions, the position information and the position shift amount can be calculated by both the 3D data encoding device and the 3D data decoding device based on this information. By not transmitting the position information, the amount of data can be reduced. It is also possible to divide the data using an octree, or to transmit information on the plane to be divided and information on the quadtree division.
[0660] Fig. 107 is a flowchart showing an example of an encoding method that switches processing depending on whether or not octree division is performed. Fig. 108 is a flowchart showing an example of a decoding method that switches processing depending on whether or not octree division is performed.
[0661] As shown in FIG. 107, the three-dimensional data encoding device determines a division method for the point cloud data (S6851).
[0662] The three-dimensional data encoding device determines whether or not to perform octree division based on the determined division method (S6852).
[0663] If the three-dimensional data encoding device determines that octree division is not to be performed (No in S6852), it determines the individual position shift amount to be the smallest point of the individual BB for each divided data, shifts the position of the divided data, and encodes the divided data using the individual BB (S6853).
[0664] The three-dimensional data encoding device stores information about the common BB in the common metadata (S6854).
[0665] The three-dimensional data encoding device stores the individual position shift amount for each divided data in the header of the divided data (S6855).
[0666] If the three-dimensional data encoding device determines that octree division is to be performed (Yes in S6852), it determines the individual position shift amount to be the smallest point of the octree divided divided area, shifts the position of the divided data, and encodes the divided data using the octree divided area (S6856).
[0667] The three-dimensional data encoding device stores the common BB information, identification information indicating that the octree division has been performed, and depth information in the common metadata (S6857).
[0668] The three-dimensional data encoding device stores, in the header of the divided data, sequence information indicating the order of the Morton order for identifying the individual position shift amount for each divided data (S6858).
[0669] The three-dimensional data decoding device acquires information indicating the division method of the point cloud data from the common metadata (S6861).
[0670] The three-dimensional data decoding device determines whether the division method is octtree division or not based on the acquired information indicating the division method (S6862). Specifically, the three-dimensional data decoding device determines whether the division method is octtree or not based on the identification information indicating whether octtree division has been performed or not.
[0671] If the division method is not octree division (No in S6862), the three-dimensional data decoding device acquires the information on the common BB, the individual position shift amount, and the information on the individual BB, and decodes the point cloud data (S6863).
[0672] If the division method is octree division (Yes in S6862), the three-dimensional data decoding device obtains common BB information, depth information and individual order information, calculates individual position shift amounts and encoded BB information, and decodes the point cloud data (S6864).
[0673] Any of the methods described in the present embodiment is expected to be able to reduce the amount of code. A predetermined method may be used to switch to one of the methods.
[0674] For example, the three-dimensional data encoding device may calculate the code amount and determine to use a first method among the above-mentioned multiple methods under predetermined conditions according to the calculated code amount. Alternatively, in the case of lossy compression, if the quantization coefficient is larger than a predetermined value, if the number of data divisions is larger than a predetermined number, or if the number of point groups is smaller than a predetermined number, the device may switch from the first method to the second method among the above-mentioned multiple methods if there is a possibility that the overhead will change.
[0675] In addition, although the header of each split data stores the difference from the common information as individual information corresponding to the split data, this is not limited to this, and the difference from the individual information of the split data immediately before the split data may also be stored as individual information of the split data.
[0676] Fig. 109 is a diagram showing an example of the data structure of a bitstream when divided data is classified into randomly accessible data A and inaccessible data B. Fig. 110 shows an example when the divided data of Fig. 109 is organized into frames.
[0677] In this case, that is, when there are one or more random access units, different information may be stored in the data header of the data A and the data header of the data B. For example, individual difference information from the common information stored in the GPS may be stored in the divided data of the data A, and difference information from the data A in the random access unit may be stored in the divided data of the data B. Note that when multiple divided data of the data B are included in the random access unit, difference information from the data A may be stored in each of the multiple divided data of the data B included in the same random access unit, or difference information from the data A or B immediately before the B data may be stored in the multiple divided data of the data B.
[0678] The above description is given for divided data, but the same applies to frames.
[0679] In this embodiment, the division areas or division boundaries in data division have mainly been described using an example (Figure 111) in which the BBs of all divided data are targeted and the area is divided, but even if the division area is other than this, by using the method of this embodiment, a similar effect of reducing the amount of code can be expected.
[0680] When dividing a BB including all divided data as shown in Fig. 111, the three-dimensional data encoding device may shift the position of the BB based on the minimum value of the BB, and may use the point cloud data after the position shift as the division target. Furthermore, if the point cloud data has been scaled or quantized, the three-dimensional data encoding device may use the point cloud data after scaling or quantization as the division target, or may use the point cloud data before scaling or quantization as the division target.
[0681] As shown in Fig. 112, the three-dimensional data encoding device may set the divided regions in the coordinate system of the input data of the point cloud data. In this case, the three-dimensional data encoding device does not shift the point with the minimum value of BB of the point cloud data.
[0682] As shown in Fig. 113, the three-dimensional data encoding device may set the divided regions in a coordinate system higher than the point cloud data. For example, the three-dimensional data encoding device may set the divided regions based on GPS coordinates of map data or the like.
[0683] In this case, the three-dimensional data encoding device may store relative position information of the point cloud coordinate system with respect to the higher-level coordinate system in the bit stream and transmit it. For example, when a sensor such as an in-vehicle Lidar senses point cloud data while moving, the three-dimensional data encoding device may transmit sensor position information (GPS coordinates, acceleration, speed, and movement distance) as relative position information. Furthermore, in the case of point cloud data having a time-series frame structure, the three-dimensional data encoding device may store time-series sensor position information for each frame in the bit stream and transmit it. Note that the higher-level coordinate system may be absolute coordinates or relative coordinates based on absolute coordinates. The higher-level coordinate system may also be a coordinate system even higher than the higher-level coordinate system.
[0684] As shown in Figure 114, the three-dimensional data encoding device may determine the divided regions based on the object or data attributes of the point cloud data. For example, the three-dimensional data encoding device may determine the divided regions based on the image recognition results. In this case, the divided regions may include overlapping regions. The three-dimensional data encoding device may cluster each point of the point cloud based on a predetermined attribute, may divide the data based on the number of points, or may divide the regions so that each point cloud has an approximately equal number of points.
[0685] The three-dimensional data encoding device may signal the number of points to be encoded, and the three-dimensional data decoding device may use the number of points to decode the point cloud data.
[0686] The encoding target is set for each frame or for each data segment obtained by dividing one frame, and the number of points to be encoded is basically stored in each data header. The number of points to be encoded to be signaled may be signaled by storing a reference value in common metadata, and information on the difference from the reference value may be stored in the data header.
[0687] For example, as shown in FIG. 115, the three-dimensional data encoding device stores the number of reference points A (i.e., the reference value) in the GPS or SPS, and stores the number of points B(i) which is the difference from the number of reference points A. (i is the index of the divided data) may be stored in each data header. The number of points in divided data (i) is obtained by adding number A to number B(i). Therefore, the three-dimensional data decoding device calculates A+B(i) and decodes the calculated value as the number of points in divided data (i).
[0688] Alternatively, as shown in Figure 116, the three-dimensional data encoding device may store, in each data header, information on the difference in the number of points of a data segment from the previous data segment. In this case, the number of points of data segment (i) is obtained by adding the numbers B(1) to B(i) of the first data segment to number A.
[0689] Furthermore, for example, in the case of time-series point cloud data having a multiple frame structure as shown in Figure 117, the three-dimensional data encoding device may store a reference value for the number of points to be encoded in a common SPS, and store the relative value of each frame with respect to the reference value in the GPS or data header. The three-dimensional data encoding device may also store the difference (relative value) with respect to the reference value stored in the SPS in the GPS, and further store the difference (relative value) from the sum of the SPS reference value and the GPS difference value in the data header. This is expected to reduce the overhead coding amount.
[0690] It should be noted that one possible method for dividing point cloud data is to divide it so that the number of points is approximately equal. In that case, the same method as in Figure 115 can be used.
[0691] For example, as shown in Figure 118, in a method of dividing data so that the difference between the points contained in the divided data is within 1, Δ may be represented by 1-bit data, or if Δ=0, the difference information may not be represented.
[0692] For example, as shown in Fig. 119, it may be data that basically uses the reference value recorded in the GPS as the division number and data that is composed of the remainder. When Δ=0, the difference information does not need to be displayed.
[0693] Whichever method shown in FIGS. 115 to 119 is used, it is possible to expect a reduction in the amount of overhead information.
[0694] As described above, the three-dimensional data encoding device according to this embodiment performs the process shown in FIG. 120. The three-dimensional data encoding device encodes point cloud data indicating multiple three-dimensional positions in a three-dimensional space. The three-dimensional data encoding device moves the point cloud data by a first movement amount (S6871). Next, the three-dimensional data encoding device divides the point cloud data into multiple sub-point cloud data by dividing the three-dimensional space into multiple sub-spaces (S6872). For each of multiple sub-point cloud data included in the point cloud data after moving by the first movement amount, the three-dimensional data encoding device moves the sub-point cloud data by a second movement amount based on the position of the sub-space to which the sub-point cloud data belongs (S6873). The three-dimensional data encoding device generates a bit stream by encoding the multiple sub-point cloud data after moving (S6874). The bit stream includes first movement information for calculating the first movement amount and multiple second movement information for calculating multiple second movement amounts obtained by moving the multiple sub-point cloud data. According to this, since the divided sub-point cloud data is moved and then encoded, the amount of information of the position information of each sub-point cloud data can be reduced, and encoding efficiency can be improved.
[0695] For example, the multiple subspaces have equal sizes. Each of the multiple pieces of second movement information includes the number of the multiple subspaces and first identification information for identifying the corresponding subspace. This reduces the amount of information in the second movement information, thereby improving coding efficiency.
[0696] For example, the first identification information is a Morton order corresponding to each of the plurality of subspaces.
[0697] For example, each of the subspaces is a space obtained by dividing a single three-dimensional space using an octree. The bitstream includes second identification information indicating that the subspaces are spaces divided using an octree and depth information indicating the depth of the octree. Therefore, because the point cloud data in the three-dimensional space is divided using an octree, the amount of information for the position information of each subpoint cloud data can be reduced, thereby improving coding efficiency.
[0698] For example, the division is performed after the point cloud data is moved by a first movement amount.
[0699] For example, the three-dimensional data encoding device includes a processor and a memory, and the processor performs the above-mentioned processing using the memory.
[0700] Furthermore, the three-dimensional data decoding device according to this embodiment performs the processing shown in FIG. 121. The three-dimensional data decoding device decodes, from a bitstream, a plurality of sub-point cloud data obtained by dividing point cloud data indicating a plurality of three-dimensional positions by dividing a three-dimensional space into a plurality of subspaces, the plurality of sub-point cloud data being each moved by a first movement amount and a corresponding second movement amount, first movement information for calculating the first movement amount, and a plurality of second movement information for calculating a plurality of second movement amounts by which the plurality of sub-point cloud data has been moved (S6881). The three-dimensional data decoding device restores the point cloud data by moving each of the plurality of sub-point cloud data by an amount obtained by adding the first movement amount and the corresponding second movement amount (S6882). This allows the point cloud data to be correctly decoded using a bitstream with improved encoding efficiency.
[0701] For example, the multiple subspaces have equal sizes. Each of the multiple pieces of second movement information includes the number of the multiple subspaces and first identification information for identifying the corresponding subspace. This reduces the amount of information in the second movement information, thereby improving coding efficiency.
[0702] For example, the first identification information is a Morton order corresponding to each of the plurality of subspaces.
[0703] For example, each of the subspaces is a space obtained by dividing a single three-dimensional space using an octree. The bitstream includes second identification information indicating that the subspaces are spaces divided using an octree and depth information indicating the depth of the octree. Therefore, because the point cloud data in the three-dimensional space is divided using an octree, the amount of information for the position information of each subpoint cloud data can be reduced, thereby improving coding efficiency.
[0704] For example, the three-dimensional data decoding device includes a processor and a memory, and the processor performs the above processing using the memory.
[0705] 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.
[0706] Furthermore, each processing unit included in the three-dimensional data encoding device and three-dimensional data decoding device according to the above embodiments is typically realized as an LSI, which is an integrated circuit. These may be individually implemented as single chips, or some or all of them may be integrated into a single chip.
[0707] Furthermore, the integration is not limited to LSI, but may be realized by dedicated circuits or general-purpose processors. FPGAs (Field Programmable Gate Arrays), which can be programmed after LSI fabrication, or reconfigurable processors, which allow the connections and settings of circuit cells within LSIs to be reconfigured, may also be used.
[0708] In each of the above embodiments, each component may be configured with dedicated hardware, or may be realized by executing a software program suitable for each component. Each component may be realized by a program execution unit such as a CPU or processor reading and executing a software program recorded on a recording medium such as a hard disk or semiconductor memory.
[0709] 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.
[0710] The division of functional blocks in the block diagram is an example, and multiple functional blocks may be realized as a single functional block, one functional block may be divided into multiple blocks, or some functions may be moved to another functional block.Furthermore, the functions of multiple functional blocks having similar functions may be processed in parallel or in time-sharing by a single piece of hardware or software.
[0711] The order in which the steps in the flowchart are executed is merely an example for specifically explaining the present disclosure, and other orders may be used. Some of the steps may be executed simultaneously (in parallel) with other steps.
[0712] While the three-dimensional data encoding device and three-dimensional data decoding device according to one or more aspects have been described above based on the embodiments, the present disclosure is not limited to these embodiments. As long as they do not deviate from the spirit of the present disclosure, various modifications conceivable by those skilled in the art to the present embodiments, and configurations constructed by combining components of different embodiments, may also be included within the scope of one or more aspects. [Industrial Applicability]
[0713] The present disclosure is applicable to a three-dimensional data encoding device and a three-dimensional data decoding device. [Explanation of symbols]
[0714] 2400 3D data encoding device 2401 Quantization section 2402, 2411 8-ary tree generation part 2403 Merge Decision Unit 2404 Entropy coding unit 2410 Three-dimensional data decoding device 2412 Merge information decoding unit 2413 Entropy Decoding Unit 2414 Inverse quantization section 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 Unit 4625 Presentation section 4626 User Interface 4627 Control Unit 4630 First Encoding Section 4631 Location information encoder 4632 Attribute information encoder 4633 Additional information coding 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 coding unit 4656 Multiplexer 4660 Second Decoding Unit 4661 Demultiplexer 4662 Video Decoding Unit 4663 Additional information decoding unit 4664 Location information generator 4665 Attribute information generation section 4670 Encoding section 4680 Decoding Unit 4710 First Multiplexing Unit 4711 File Conversion Unit 4720 First Demultiplexer 4721 File Reverse Conversion Unit 4730 Second Multiplexing Unit 4731 File Conversion Unit 4740 Second Demultiplexer 4741 File Reverse Conversion Unit 4750 Third Multiplexer 4751 File Conversion Unit 4760 Third Demultiplexer 4761 File Reverse Conversion Unit 4801 Encoding section 4802 Multiplexer 5010 First encoding unit 5011 Split section 5012 Location information encoder 5013 Attribute information encoder 5014 Additional information encoding unit 5015 Multiplexer 5020 First Decryption Unit 5021 Demultiplexer 5022 Location information decoding unit 5023 Attribute Information Decoding Unit 5024 Additional information decoding unit 5025 Joint 5031 Tile division section 5032 Position information slice division part 5033 Attribute Information Slice Division 5041 Position Information Slice Combination 5042 Attribute information slice combination part 5043 Tile joint 5051 Tile division section 5052 Encoding section 5053 Decryption Unit 5054 Tile joint 6800 3D data encoding device 6801 Division method determination section 6802 Split section 6803a, 6803b quantization section 6804a, 6804b Shift amount calculation unit 6805a, 6805b Common position shift part 6806a, 6806b Individual position shifting section 6807a, 6807b encoding section
Claims
1. A three-dimensional data encoding method for encoding three-dimensional data, which is executed by a three-dimensional data encoding device, comprising: generating a plurality of sub-three-dimensional data, each of which includes position information of a part of the three-dimensional data; Calculating a common movement amount for the plurality of sub three-dimensional data; calculating a plurality of individual movement amounts corresponding to the plurality of sub three-dimensional data; moving each of the plurality of sub three-dimensional data using the common movement amount and the corresponding individual movement amount; encoding each of the plurality of sub-three-dimensional data moved using the common movement amount and the corresponding individual movement amount; Three-dimensional data encoding method.
2. generating common movement information relating to the common movement amount and individual movement information relating to each of the plurality of individual movement amounts; generating a bitstream including the common motion information and a plurality of the individual motion information; The three-dimensional data encoding method according to claim 1 .
3. A three-dimensional data decoding method executed by a three-dimensional data decoding device, comprising: Acquire common movement information, a plurality of individual movement information, and a plurality of sub-three-dimensional data each including position information of a portion of the three-dimensional data; Decoding the plurality of sub-three-dimensional data to obtain a plurality of decoded position information; Calculating a common movement amount using the common movement information; calculating an individual movement amount corresponding to each of the plurality of sub three-dimensional data using each of the plurality of individual movement information; the plurality of sub three-dimensional data are moved using the common movement amount and the corresponding individual movement amount, the common movement amount is a movement of the same distance in the plurality of sub three-dimensional data, and is a movement in a direction from a first point to a second point in three-dimensional space; The individual movement amount is a distance that differs among the plurality of sub three-dimensional data, and is a movement in a direction from the second point to a third point in the three-dimensional space. Three-dimensional data decoding method.
4. The common movement amount and the corresponding individual movement amount are used to move each of the plurality of sub three-dimensional data, and position information of the three-dimensional data is restored. The three-dimensional data decoding method according to claim 3.
5. A three-dimensional data encoding device that encodes three-dimensional data, a processor; a memory; The processor uses the memory to: generating a plurality of sub-three-dimensional data, each of which includes position information of a part of the three-dimensional data; Calculating a common movement amount for the plurality of sub three-dimensional data; calculating a plurality of individual movement amounts corresponding to the plurality of sub three-dimensional data; moving each of the plurality of sub three-dimensional data using the common movement amount and the corresponding individual movement amount; encoding each of the plurality of sub-three-dimensional data moved using the common movement amount and the corresponding individual movement amount; Three-dimensional data encoding device.
6. a processor; a memory; The processor uses the memory to: Acquire common movement information, a plurality of individual movement information, and a plurality of sub-three-dimensional data each including position information of a portion of the three-dimensional data; Decoding the plurality of sub-three-dimensional data to obtain a plurality of decoded position information; Calculating a common movement amount using the common movement information; calculating an individual movement amount corresponding to each of the plurality of sub three-dimensional data using each of the plurality of individual movement information; the plurality of sub three-dimensional data are moved using the common movement amount and the corresponding individual movement amount, the common movement amount is a movement of the same distance in the plurality of sub three-dimensional data, and is a movement in a direction from a first point to a second point in three-dimensional space; The individual movement amount is a distance that differs among the plurality of sub three-dimensional data, and is a movement in a direction from the second point to a third point in the three-dimensional space. Three-dimensional data decoding device.
7. 3. A program for causing a computer to execute the three-dimensional data encoding method according to claim 1.
8. 5. A program for causing a computer to execute the three-dimensional data decoding method according to claim 3 or 4.
Citation Information
Patent Citations
High-throughput acquisition method and device for three-dimensional point cloud data of plants
CN109035286A
Apparatus and method for processing video data
JP2008514136A
Encoder and control method therefor
JP2017126890A
Method and apparatus for encoding and decoding omnidirectional video
JP2019534616A
Methods and systems for moving object velocity determination
US20180341263A1