Encoding method, decoding method, encoding device, and decoding device
By generating multi-layer coefficient values and quantizing and inverse quantization using layer parameters, the problem of low encoding efficiency of three-dimensional data in the prior art is solved, and appropriate encoding and transmission efficiency is achieved.
Patent Information
- Application Number
- JP2025010021
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2019-04-25
- Filing Date
- 2025-01-23
- Publication Date
- 2025-04-11
- Estimated Expiration
- 2040-04-24
AI Technical Summary
The prior art is difficult to achieve effective encoding during the three-dimensional data encoding process, resulting in large data volume and low transmission efficiency.
By generating coefficient values for multiple layers, these coefficient values are quantified, and a bit stream containing layer parameters is generated. During the quantization and inverse quantization process, the quantization step is determined using the layer parameters or the layer parameters of the last layer.
Appropriate three-dimensional data encoding is realized, reducing the amount of data and improving transmission efficiency.
Smart Images

Figure 2025061776000001_ABST
Abstract
Description
[Technical field]
[0001] The present disclosure relates to an encoding method, a decoding method, an encoding device, and a decoding device. [Background technology]
[0002] In the future, devices and services that utilize 3D data are expected to become widespread in a wide range of fields, such as computer vision for autonomous operation of automobiles or robots, map information, monitoring, infrastructure inspection, video distribution, etc. 3D data is acquired in various ways, such as distance sensors such as range finders, stereo cameras, or a combination of multiple monocular cameras.
[0003] One method of expressing three-dimensional data is a method called a point cloud, which represents the shape of a three-dimensional structure using a group of points in a three-dimensional space. In a point cloud, the positions and colors of the points are stored. Point clouds are expected to become the mainstream method of expressing three-dimensional data, but point clouds have a very large amount of data. Therefore, when storing or transmitting three-dimensional data, it is essential to compress the amount of data by encoding, just like two-dimensional video images (examples include MPEG-4 AVC or HEVC standardized by MPEG).
[0004] In addition, compression of point clouds is partially supported by public libraries (Point Cloud Library) that perform point cloud-related processing.
[0005] Furthermore, a technique is known that uses three-dimensional map data to search for and display facilities located around a vehicle (see, for example, Patent Document 1). [Prior art documents] [Patent documents]
[0006] [Patent Document 1] International Publication No. 2014 / 020663 Summary of the Invention [Problem to be solved by the invention]
[0007] In the encoding process of three-dimensional data, it is desirable to perform the encoding appropriately.
[0008] An object of the present disclosure is to provide an encoding method, a decoding method, an encoding device, or a decoding device that can perform appropriate encoding. [Means for solving the problem]
[0009] An encoding method according to one aspect of the present disclosure is an encoding method executed by an encoding device, which generates a plurality of coefficient values belonging to any of a plurality of hierarchical layers, quantizes the plurality of coefficient values, generates a plurality of quantized values, and generates a bitstream including information indicating the total number of a plurality of hierarchical layers to which hierarchical parameters are notified, and the hierarchical parameters, and in the quantization, when quantizing coefficient values belonging to a hierarchical layer to which the hierarchical parameters are notified, a quantization step is derived using the hierarchical parameters, and when quantizing coefficient values belonging to a hierarchical layer to which the hierarchical parameters are not notified, a quantization step is derived using the hierarchical parameters of the last hierarchical layer to which the hierarchical parameters are not notified.
[0010] A decoding method according to one aspect of the present disclosure is a decoding method executed by a decoding device, which obtains information indicating the total number of hierarchical layers to which hierarchical parameters are notified, and the hierarchical parameters, performs inverse quantization on a plurality of quantization values to generate a plurality of coefficient values, and in the inverse quantization, derives a quantization step using the hierarchical parameters when inverse quantizing coefficient values belonging to a hierarchical layer to which the hierarchical parameters are notified, and derives a quantization step using the hierarchical parameters of the last hierarchical layer to which the hierarchical parameters are notified.
[0011] A three-dimensional data encoding method according to one aspect of the present disclosure calculates a plurality of coefficient values from a plurality of attribute information of a plurality of three-dimensional points included in point cloud data, generates a plurality of quantized values by quantizing each of the plurality of coefficient values, and generates a bit stream including the plurality of quantized values, wherein the plurality of coefficient values belong to any of a plurality of hierarchies, and each of a predetermined number of hierarchies among the plurality of hierarchies is assigned a quantization parameter for that hierarchical layer, and in the quantization, each of the plurality of coefficient values is quantized (i) using the quantization parameter if the quantization parameter is assigned to the hierarchical layer to which the coefficient value belongs, and (ii) using the quantization parameter assigned to one of the predetermined number of hierarchical layers if the quantization parameter is not assigned to the hierarchical layer to which the coefficient value belongs.
[0012] In addition, a three-dimensional data encoding method according to another aspect of the present disclosure calculates a plurality of coefficient values from a plurality of attribute information of a plurality of three-dimensional points included in point cloud data, quantizes each of the plurality of coefficient values to generate a plurality of quantized values, and generates a bit stream including the plurality of quantized values, wherein each of the plurality of coefficient values belongs to one of a plurality of groups by being classified into one of a plurality of three-dimensional spaces to which a three-dimensional point including the attribute information on which the coefficient value was calculated belongs, among a plurality of three-dimensional spaces, and in the quantization, each of the plurality of coefficient values is quantized using a quantization parameter for the group to which the coefficient value belongs.
[0013] A three-dimensional data decoding method according to one embodiment of the present disclosure generates a plurality of coefficient values by inverse quantizing each of a plurality of quantization values included in a bitstream, and calculates a plurality of attribute information of a plurality of three-dimensional points included in point cloud data from the plurality of coefficient values, the plurality of quantization values belonging to one of a plurality of hierarchies, and each of a predetermined number of hierarchies among the plurality of hierarchies is assigned a quantization parameter for that hierarchical layer, and in the inverse quantization, each of the plurality of quantization values is inverse quantized using the quantization parameter (i) if the quantization parameter is assigned to the hierarchical layer to which the quantization value belongs, and (ii) if the quantization parameter is not assigned to the hierarchical layer to which the quantization value belongs, inverse quantized using the quantization parameter assigned to one of the predetermined number of hierarchical layers.
[0014] In addition, a three-dimensional data decoding method according to another aspect of the present disclosure generates a plurality of coefficient values by inverse quantizing each of a plurality of quantization values included in a bitstream, and calculates a plurality of attribute information of a plurality of three-dimensional points included in point cloud data from the plurality of coefficient values, and the plurality of quantization values belong to one of a plurality of groups by being classified for each three-dimensional space among a plurality of three-dimensional spaces to which a three-dimensional point including the attribute information on which the quantization value was calculated belongs, and each of a predetermined number of hierarchies in the plurality of hierarchies is assigned a quantization parameter for that hierarchical layer, and in the inverse quantization, each of the plurality of quantization values is inverse quantized using the quantization parameter for the hierarchical layer to which the quantization value belongs. Effect of the Invention
[0015] The present disclosure can provide an encoding method, a decoding method, an encoding device, or a decoding device that can perform appropriate encoding. [Brief description of the drawings]
[0016] [Figure 1] FIG. 1 is a diagram showing a structure of encoded three-dimensional data according to the first embodiment. [Diagram 2]FIG. 2 is a diagram showing an example of a prediction structure between SPCs belonging to the lowest layer of a GOS according to the first embodiment. [Diagram 3] FIG. 3 is a diagram showing an example of an inter-layer prediction structure according to the first embodiment. [Figure 4] FIG. 4 is a diagram showing an example of the coding order of GOS according to the first embodiment. [Diagram 5] FIG. 5 is a diagram showing an example of the coding order of GOS according to the first embodiment. [Figure 6] FIG. 6 is a diagram showing an example of meta information according to the first embodiment. [Figure 7] FIG. 7 is a schematic diagram showing transmission and reception of three-dimensional data between vehicles according to the second embodiment. [Figure 8] FIG. 8 is a diagram illustrating an example of three-dimensional data transmitted between vehicles according to the second embodiment. [Figure 9] FIG. 9 is a diagram for explaining a transmission process of three-dimensional data according to the third embodiment. [Figure 10] FIG. 10 is a diagram showing a configuration of a system according to the fourth embodiment. [Figure 11] FIG. 11 is a block diagram of a client device according to the fourth embodiment. [Figure 12] FIG. 12 is a block diagram of a server according to the fourth embodiment. [Figure 13] FIG. 13 is a flowchart of a three-dimensional data creation process by a client device according to the fourth embodiment. [Figure 14] FIG. 14 is a flowchart of a sensor information transmission process by a client device according to the fourth embodiment. [Figure 15] FIG. 15 is a flowchart of three-dimensional data creation processing by the server according to the fourth embodiment. [Figure 16] FIG. 16 is a flowchart of a three-dimensional map transmission process performed by the server according to the fourth embodiment. [Figure 17] FIG. 17 is a diagram showing a configuration of a modified example of the system according to the fourth embodiment. In FIG. [Figure 18]FIG. 18 is a diagram showing configurations of a server and a client device according to the fourth embodiment. [Figure 19] FIG. 19 is a diagram illustrating the configurations of a server and a client device according to the fifth embodiment. [Figure 20] FIG. 20 is a flowchart of a process performed by the client device according to the fifth embodiment. [Figure 21] FIG. 21 is a diagram illustrating a configuration of a sensor information collecting system according to the fifth embodiment. As shown in FIG. [Figure 22] FIG. 22 is a diagram illustrating an example of a volume according to the sixth embodiment. [Figure 23] FIG. 23 is a diagram showing an example of an octree representation of a volume according to the sixth embodiment. [Figure 24] FIG. 24 is a diagram showing an example of a bit string of a volume according to the sixth embodiment. [Diagram 25] FIG. 25 is a diagram showing an example of an octree representation of a volume according to the sixth embodiment. [Figure 26] FIG. 26 is a diagram illustrating an example of a volume according to the sixth embodiment. [Figure 27] FIG. 27 is a diagram showing an example of three-dimensional points according to the seventh embodiment. [Figure 28] FIG. 28 is a diagram showing an example of setting the LoD according to the seventh embodiment. [Figure 29] FIG. 29 is a diagram showing an example of threshold values used for setting the LoD according to the seventh embodiment. [Diagram 30] FIG. 30 is a diagram showing an example of attribute information used for a predicted value according to the seventh embodiment. [Diagram 31] FIG. 31 is a diagram illustrating an example of an exponential-Golomb code according to the seventh embodiment. [Diagram 32] FIG. 32 is a diagram illustrating a process for an exponential-Golomb code according to the seventh embodiment. [Diagram 33] FIG. 33 is a diagram illustrating an example of the syntax of the attribute header according to the seventh embodiment. [Diagram 34] FIG. 34 is a diagram illustrating an example of the syntax of attribute data according to the seventh embodiment. [Diagram 35] FIG. 35 is a flowchart of three-dimensional data encoding processing according to the seventh embodiment. [Diagram 36] FIG. 36 is a flowchart of the attribute information encoding process according to the seventh embodiment. [Figure 37] FIG. 37 is a diagram illustrating a process for an exponential-Golomb code according to the seventh embodiment. [Figure 38] FIG. 38 is a diagram showing an example of a reverse lookup table showing the relationship between the remaining codes and their values according to the seventh embodiment. [Figure 39] FIG. 39 is a flowchart of three-dimensional data decoding processing according to the seventh embodiment. [Diagram 40] FIG. 40 is a flowchart of the attribute information decoding process according to the seventh embodiment. [Diagram 41] FIG. 41 is a block diagram of a three-dimensional data encoding device according to the seventh embodiment. [Diagram 42] FIG. 42 is a block diagram of a three-dimensional data encoding device according to the seventh embodiment. [Diagram 43] FIG. 43 is a diagram for explaining encoding of attribute information using RAHT according to the eighth embodiment. [Diagram 44] FIG. 44 is a diagram showing an example of setting a quantization scale for each layer according to the eighth embodiment. In FIG. [Diagram 45] FIG. 45 is a diagram showing examples of the first code string and the second code string according to the eighth embodiment. In FIG. [Figure 46] FIG. 46 is a diagram showing an example of a truncated unary code according to the eighth embodiment. In FIG. [Figure 47] FIG. 47 is a diagram for explaining the inverse Haar transform according to the eighth embodiment. [Figure 48] FIG. 48 is a diagram illustrating an example of the syntax of attribute information according to the eighth embodiment. [Figure 49] FIG. 49 is a diagram showing an example of coding coefficients and ZeroCnt according to the eighth embodiment. [Figure 50]FIG. 50 is a flowchart of three-dimensional data encoding processing according to the eighth embodiment. [Figure 51] FIG. 51 is a flowchart of the attribute information encoding process according to the eighth embodiment. [Figure 52] FIG. 52 is a flowchart of the coding coefficient coding process according to the eighth embodiment. [Diagram 53] FIG. 53 is a flowchart of three-dimensional data decoding processing according to the eighth embodiment. [Figure 54] FIG. 54 is a flowchart of the attribute information decoding process according to the eighth embodiment. [Figure 55] FIG. 55 is a flowchart of the coding coefficient decoding process according to the eighth embodiment. [Figure 56] FIG. 56 is a block diagram of an attribute information encoding unit according to the eighth embodiment. As shown in FIG. [Figure 57] FIG. 57 is a block diagram of an attribute information decoding unit according to the eighth embodiment. As shown in FIG. [Figure 58] FIG. 58 is a diagram showing an example of a first code string and a second code string according to a modification of the eighth embodiment. In FIG. [Figure 59] FIG. 59 is a diagram illustrating an example of the syntax of attribute information according to the modification of the eighth embodiment. [Figure 60] FIG. 60 is a diagram showing examples of coding coefficients, ZeroCnt, and TotalZeroCnt according to a modification of the eighth embodiment. [Figure 61] FIG. 61 is a flowchart of a coding coefficient coding process according to a modification of the eighth embodiment. [Figure 62] FIG. 62 is a flowchart of a coding coefficient decoding process according to a modification of the eighth embodiment. [Figure 63] FIG. 63 is a diagram illustrating an example of the syntax of attribute information according to the modification of the eighth embodiment. [Figure 64] FIG. 64 is a block diagram showing a configuration of a three-dimensional data encoding device according to the ninth embodiment. [Figure 65] FIG. 65 is a block diagram showing a configuration of a three-dimensional data decoding device according to the ninth embodiment. [Figure 66] FIG. 66 is a diagram showing an example of setting the LoD according to the ninth embodiment. In FIG. [Figure 67] FIG. 67 is a diagram showing an example of a hierarchical structure of a RAHT according to the ninth embodiment. [Figure 68] FIG. 68 is a block diagram of a three-dimensional data encoding device according to the ninth embodiment. [Figure 69] FIG. 69 is a block diagram of a division unit according to the ninth embodiment. [Figure 70] FIG. 70 is a block diagram of an attribute information encoding unit according to the ninth embodiment. As shown in FIG. [Figure 71] FIG. 71 is a block diagram of a three-dimensional data decoding device according to the ninth embodiment. [Figure 72] FIG. 72 is a block diagram of an attribute information decoding unit according to the ninth embodiment. As shown in FIG. [Figure 73] FIG. 73 is a diagram showing an example of setting the quantization parameters in tile and slice division according to the ninth embodiment. In FIG. [Figure 74] FIG. 74 is a diagram showing an example of setting the quantization parameter according to the ninth embodiment. In FIG. [Figure 75] FIG. 75 is a diagram showing an example of setting the quantization parameter according to the ninth embodiment. In FIG. [Figure 76] FIG. 76 is a diagram illustrating an example of the syntax of an attribute information header according to the ninth embodiment. [Figure 77] FIG. 77 is a diagram illustrating an example of the syntax of an attribute information header according to the ninth embodiment. [Figure 78] FIG. 78 is a diagram showing an example of setting the quantization parameter according to the ninth embodiment. In FIG. [Figure 79] FIG. 79 is a diagram illustrating an example of the syntax of an attribute information header according to the ninth embodiment. [Figure 80] FIG. 80 is a diagram illustrating an example of the syntax of the attribute information header according to the ninth embodiment. [Figure 81] FIG. 81 is a flowchart of three-dimensional data encoding processing according to the ninth embodiment. [Figure 82]FIG. 82 is a flowchart of the attribute information encoding process according to the ninth embodiment. [Figure 83] FIG. 83 is a flowchart of a ΔQP determination process according to the ninth embodiment. [Figure 84] FIG. 84 is a flowchart of three-dimensional data decoding processing according to the ninth embodiment. [Figure 85] FIG. 85 is a flowchart of the attribute information decoding process according to the ninth embodiment. [Figure 86] FIG. 86 is a block diagram of an attribute information encoding unit according to the ninth embodiment. As shown in FIG. [Figure 87] FIG. 87 is a block diagram of an attribute information decoding unit according to the ninth embodiment. As shown in FIG. [Figure 88] FIG. 88 is a diagram showing an example of setting the quantization parameter according to the ninth embodiment. In FIG. [Figure 89] FIG. 89 is a diagram illustrating an example of the syntax of the attribute information header according to the ninth embodiment. [Figure 90] FIG. 90 is a diagram illustrating an example of the syntax of the attribute information header according to the ninth embodiment. [Figure 91] FIG. 91 is a flowchart of three-dimensional data encoding processing according to the ninth embodiment. [Figure 92] FIG. 92 is a flowchart of the attribute information encoding process according to the ninth embodiment. [Figure 93] FIG. 93 is a flowchart of three-dimensional data decoding processing according to the ninth embodiment. [Figure 94] FIG. 94 is a flowchart of the attribute information decoding process according to the ninth embodiment. [Figure 95] FIG. 95 is a block diagram of an attribute information encoding unit according to the ninth embodiment. As shown in FIG. [Figure 96] FIG. 96 is a block diagram of an attribute information decoding unit according to the ninth embodiment. [Figure 97] FIG. 97 is a diagram illustrating an example of the syntax of an attribute information header according to the ninth embodiment. [Figure 98]FIG. 98 is a graph showing the relationship between the coding bit rate and time of the bit stream according to the tenth embodiment. [Figure 99] FIG. 99 is a diagram showing the hierarchical structure of a 3D point group according to embodiment 10 and the number of 3D points belonging to each layer. [Figure 100] FIG. 100 is a diagram showing a first example of classifying a 3D point cloud of one layer into sub layers with a specified number of 3D points according to the tenth embodiment. [Figure 101] FIG. 101 is a diagram showing a second example of classifying a 3D point cloud of one layer into sub layers with a fixed number of 3D points according to the tenth embodiment. [Figure 102] FIG. 102 illustrates an example of the syntax of the header of the attribute information in the second example according to the tenth embodiment. [Figure 103] FIG. 103 shows another example of the syntax of the attribute information in the second example according to the tenth embodiment. [Figure 104] FIG. 104 is a diagram showing a third example of classifying a one-level 3D point cloud into sub-levels having a number different from a predetermined number according to the tenth embodiment. [Figure 105] FIG. 105 illustrates an example of the syntax of the header of the attribute information in the third example according to the tenth embodiment. [Fig. 106] FIG. 106 illustrates another example of the syntax of the header of the attribute information in the third example according to the tenth embodiment. [Figure 107] FIG. 107 is a diagram showing a fourth example of classifying a 3D point cloud of one layer into sub layers according to the tenth embodiment, using the number of 3D points specified by a ratio (percentage). [Figure 108] FIG. 108 illustrates an example of the syntax of the header of the attribute information in the fourth example according to the tenth embodiment. [Fig. 109] FIG. 109 is a diagram showing a fifth example of classifying a 3D point cloud of one hierarchy into sub-hierarchies by Morton's index according to the tenth embodiment. [Figure 110] FIG. 110 illustrates an example of the syntax of the header of attribute information in the fifth example according to the tenth embodiment. [Figure 111] FIG. 111 is a diagram showing a sixth example of classifying a 3D point cloud of one hierarchy into sub-hierarchies by Morton's index according to the tenth embodiment. [Figure 112] FIG. 112 is a diagram showing a sixth example of classifying a 3D point cloud of one layer into sub layers by Morton's index according to the tenth embodiment. [Figure 113] FIG. 113 is a diagram showing a seventh example of classifying a 3D point cloud of one layer into sub layers using residuals or delta values according to the tenth embodiment. [Fig. 114] FIG. 114 is a diagram showing an arrangement of three-dimensional points when arranged in two-dimensional Morton order according to the tenth embodiment. [Figure 115] FIG. 115 illustrates an example of the syntax of the header of the attribute information in the seventh example according to the tenth embodiment. [Fig. 116] FIG. 116 shows an example of the syntax of the residual bitstream according to the tenth embodiment. [Fig. 117] FIG. 117 shows a formula for calculating the encoding cost according to the tenth embodiment. [Figure 118] FIG. 118 is a graph showing the relationship between BPP (bits per point) and time according to the tenth embodiment. [Figure 119] FIG. 119 is a diagram showing that the QP value applied to encoding of the attribute information according to the tenth embodiment is set for each sub-layer. [Figure 120] FIG. 120 is a diagram showing an eighth example of classifying a 3D point group into sub-hierarchies using the Morton code according to the tenth embodiment. [Figure 121] FIG. 121 illustrates an example of the syntax of the header of the attribute information in the eighth example according to the tenth embodiment. [Figure 122] FIG. 122 is a flowchart of three-dimensional data encoding processing according to the tenth embodiment. [Figure 123] FIG. 123 is a flowchart of three-dimensional data decoding processing according to the tenth embodiment. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0017] A three-dimensional data encoding method according to one aspect of the present disclosure calculates a plurality of coefficient values from a plurality of attribute information of a plurality of three-dimensional points included in point cloud data, generates a plurality of quantized values by quantizing each of the plurality of coefficient values, and generates a bit stream including the plurality of quantized values, wherein the plurality of coefficient values belong to any of a plurality of hierarchies, and each of a predetermined number of hierarchies among the plurality of hierarchies is assigned a quantization parameter for that hierarchical layer, and in the quantization, each of the plurality of coefficient values is quantized (i) using the quantization parameter if the quantization parameter is assigned to the hierarchical layer to which the coefficient value belongs, and (ii) using the quantization parameter assigned to one of the predetermined number of hierarchical layers if the quantization parameter is not assigned to the hierarchical layer to which the coefficient value belongs.
[0018] According to this, the three-dimensional data encoding method can switch the quantization parameter for each layer, thereby enabling appropriate encoding.
[0019] For example, the one hierarchical level may be the last hierarchical level of the predetermined number of hierarchical levels.
[0020] For example, in the quantization, if the number of the multiple hierarchical layers is less than the predetermined number, the quantization parameters assigned to the predetermined number of hierarchical layers that do not correspond to the multiple hierarchical layers may not be used.
[0021] For example, the bitstream may include first information indicating a reference quantization parameter, and a plurality of second information for calculating a plurality of quantization parameters for the plurality of layers from the reference quantization parameter.
[0022] Moreover, the three-dimensional data encoding method can improve encoding efficiency by encoding first information indicating a reference quantization parameter and a plurality of pieces of second information for calculating a plurality of quantization parameters from the reference quantization parameter.
[0023] In addition, a three-dimensional data encoding method according to another aspect of the present disclosure calculates a plurality of coefficient values from a plurality of attribute information of a plurality of three-dimensional points included in point cloud data, quantizes each of the plurality of coefficient values to generate a plurality of quantized values, and generates a bit stream including the plurality of quantized values, wherein each of the plurality of coefficient values belongs to one of a plurality of groups by being classified into one of a plurality of three-dimensional spaces to which a three-dimensional point including the attribute information on which the coefficient value was calculated belongs, among a plurality of three-dimensional spaces, and in the quantization, each of the plurality of coefficient values is quantized using a quantization parameter for the group to which the coefficient value belongs.
[0024] According to this, the three-dimensional data encoding method can switch the quantization parameter for each layer, thereby enabling appropriate encoding.
[0025] A three-dimensional data decoding method according to one embodiment of the present disclosure generates a plurality of coefficient values by inverse quantizing each of a plurality of quantization values included in a bitstream, and calculates a plurality of attribute information of a plurality of three-dimensional points included in point cloud data from the plurality of coefficient values, the plurality of quantization values belonging to one of a plurality of hierarchies, and each of a predetermined number of hierarchies among the plurality of hierarchies is assigned a quantization parameter for that hierarchical layer, and in the inverse quantization, each of the plurality of quantization values is inverse quantized using the quantization parameter (i) if the quantization parameter is assigned to the hierarchical layer to which the quantization value belongs, and (ii) if the quantization parameter is not assigned to the hierarchical layer to which the quantization value belongs, inverse quantized using the quantization parameter assigned to one of the predetermined number of hierarchical layers.
[0026] According to this, the three-dimensional data decoding method can switch the quantization parameter for each layer, thereby enabling appropriate decoding.
[0027] For example, the one hierarchical level may be the last hierarchical level of the predetermined number of hierarchical levels.
[0028] For example, in the inverse quantization, if the number of the multiple hierarchical layers is less than the predetermined number, the quantization parameters assigned to the predetermined number of hierarchical layers that do not correspond to the multiple hierarchical layers may not be used.
[0029] For example, the bitstream may include first information indicating a reference quantization parameter, and a plurality of second information for calculating a plurality of quantization parameters for the plurality of layers from the reference quantization parameter.
[0030] In addition, the three-dimensional data decoding method can appropriately decode a bitstream with improved coding efficiency by using first information indicating a reference quantization parameter and multiple pieces of second information for calculating multiple quantization parameters from the reference quantization parameter.
[0031] In addition, a three-dimensional data decoding method according to another aspect of the present disclosure generates a plurality of coefficient values by inverse quantizing each of a plurality of quantization values included in a bitstream, and calculates a plurality of attribute information of a plurality of three-dimensional points included in point cloud data from the plurality of coefficient values, and the plurality of quantization values belong to one of a plurality of groups by being classified for each three-dimensional space among a plurality of three-dimensional spaces to which a three-dimensional point including the attribute information on which the quantization value was calculated belongs, and each of a predetermined number of hierarchies in the plurality of hierarchies is assigned a quantization parameter for that hierarchical layer, and in the inverse quantization, each of the plurality of quantization values is inverse quantized using the quantization parameter for the hierarchical layer to which the quantization value belongs.
[0032] According to this, the three-dimensional data decoding method can switch the quantization parameter for each layer, thereby enabling appropriate decoding.
[0033] These comprehensive or specific aspects may be realized as a system, a method, an integrated circuit, a computer program, or a recording medium such as a computer-readable CD-ROM, or may be realized as any combination of a system, a method, an integrated circuit, a computer program, and a recording medium.
[0034] Hereinafter, the embodiments will be described in detail with reference to the drawings. Note that each of the embodiments described below shows a specific example of the present disclosure. The numerical values, shapes, materials, components, arrangement and connection forms of the components, steps, and order of steps shown in the following embodiments are merely examples and are not intended to limit the present disclosure. In addition, among the components in the following embodiments, components that are not described in the independent claims will be described as optional components.
[0035] (Embodiment 1) First, the data structure of encoded three-dimensional data (hereinafter, also referred to as encoded data) according to this embodiment will be described. Fig. 1 is a diagram showing the structure of encoded three-dimensional data according to this embodiment.
[0036] In this embodiment, the three-dimensional space is divided into spaces (SPC) corresponding to pictures in video coding, and the three-dimensional data is coded using the spaces as units. The space is further divided into volumes (VLM) corresponding to macroblocks in video coding, and prediction and conversion are performed using the VLM as units. The volume includes a plurality of voxels (VXL), which are the smallest units to which position coordinates are associated. Note that prediction refers to, as with prediction performed on two-dimensional images, generating predicted three-dimensional data similar to the processing unit to be processed by referring to other processing units, and coding the difference between the predicted three-dimensional data and the processing unit to be processed. In addition, this prediction includes not only spatial prediction that refers to other prediction units at the same time, but also temporal prediction that refers to prediction units at different times.
[0037] For example, when a three-dimensional data encoding device (hereinafter also referred to as an encoding device) encodes a three-dimensional space represented by point cloud data such as a point cloud, it encodes each point of the point cloud or a group of points contained in a voxel according to the size of the voxel. By subdividing the voxel, the three-dimensional shape of the point cloud can be expressed with high accuracy, and by increasing the size of the voxel, the three-dimensional shape of the point cloud can be expressed roughly.
[0038] In the following, an example will be described in which the three-dimensional data is a point cloud; however, the three-dimensional data is not limited to a point cloud, and may be three-dimensional data in any format.
[0039] Also, voxels with a hierarchical structure may be used. In this case, in the nth layer, it may be indicated in order whether a sample point exists in the n-1th or lower layer (a layer below the nth layer). For example, when decoding only the nth layer, if a sample point exists in the n-1th or lower layer, the sample point can be decoded by considering it to exist at the center of the voxel in the nth layer.
[0040] In addition, the encoding device acquires the point cloud data using a distance sensor, a stereo camera, a monocular camera, a gyro, an inertial sensor, or the like.
[0041] As in video coding, the space is classified into at least three prediction structures, including an independently decodable intra space (I-SPC), a unidirectionally referable predictive space (P-SPC), and a bidirectionally referable bidirectional space (B-SPC). The space also has two types of time information: the decoding time and the display time.
[0042] As shown in Fig. 1, there is a random access unit called a Group Of Space (GOS) which is a processing unit including multiple spaces. Furthermore, there is a World (WLD) which is a processing unit including multiple GOS.
[0043] The spatial region that the world occupies is associated with an absolute position on the earth by GPS or latitude and longitude information, etc. This position information is stored as meta information. Note that the meta information may be included in the encoded data or may be transmitted separately from the encoded data.
[0044] Furthermore, within a GOS, all SPCs may be three-dimensionally adjacent, or there may be SPCs that are not three-dimensionally adjacent to other SPCs.
[0045] In the following, the process of encoding, decoding, referencing, etc. of three-dimensional data included in a processing unit such as a GOS, SPC, or VLM will also be simply referred to as encoding, decoding, referencing, etc. of a processing unit. Also, the three-dimensional data included in a processing unit includes at least one pair of a spatial position such as three-dimensional coordinates and a characteristic value such as color information.
[0046] Next, the prediction structure of SPCs in a GOS will be explained. Multiple SPCs in the same GOS, or multiple VLMs in the same SPC, occupy different spaces from each other, but have the same time information (decoding time and display time).
[0047] In addition, the first SPC in a GOS in decoding order is the I-SPC. There are two types of GOS: closed GOS and open GOS. A closed GOS is a GOS in which all SPCs in the GOS can be decoded when decoding starts from the first I-SPC. In an open GOS, some SPCs in the GOS whose display time precedes the first I-SPC refer to a different GOS, and cannot be decoded using only that GOS.
[0048] In addition, in coded data such as map information, the WLD may be decoded in the reverse order from the coding order, and if there is a dependency between the GOS, reverse playback is difficult. Therefore, in such cases, closed GOS is basically used.
[0049] Furthermore, the GOS has a layer structure in the height direction, and encoding or decoding is performed in order starting from the SPC in the lower layer.
[0050] Fig. 2 is a diagram showing an example of a prediction structure between SPCs belonging to the lowest layer of a GOS, and Fig. 3 is a diagram showing an example of a prediction structure between layers.
[0051] There are one or more I-SPCs in a GOS. Objects such as humans, animals, cars, bicycles, traffic lights, and landmark buildings exist in a three-dimensional space, and it is effective to encode small objects as I-SPCs. For example, a three-dimensional data decoding device (hereinafter also referred to as a decoding device) decodes only the I-SPCs in the GOS when decoding the GOS with low processing load or at high speed.
[0052] Furthermore, the encoding device may switch the encoding interval or occurrence frequency of I-SPC depending on the density of objects in the WLD.
[0053] In addition, in the configuration shown in Fig. 3, the encoding device or decoding device encodes or decodes multiple layers in order from the lower layer (layer 1). This allows, for example, an autonomous vehicle to increase the priority of data near the ground, which contains more information.
[0054] In addition, in the case of encoded data used by drones, etc., encoding or decoded may be performed in order from the SPC of the upper layer in the height direction within the GOS.
[0055] Alternatively, the encoding device or decoding device may encode or decode multiple layers so that the decoding device can roughly grasp the GOS and gradually increase the resolution. For example, the encoding device or decoding device may encode or decode layers 3, 8, 1, 9, etc. in that order.
[0056] Next, how to handle static and dynamic objects will be described.
[0057] In a three-dimensional space, there exist static objects or scenes such as buildings or roads (hereinafter collectively referred to as static objects), and dynamic objects such as cars or people (hereinafter referred to as dynamic objects). Object detection is performed separately by extracting feature points from point cloud data or camera images such as a stereo camera. Here, an example of a method for encoding dynamic objects will be described.
[0058] The first method is to encode the static objects without distinguishing between the static objects and the dynamic objects, and the second method is to distinguish between the static objects and the dynamic objects by using identification information.
[0059] For example, a GOS is used as an identification unit. In this case, a GOS including SPCs constituting static objects and a GOS including SPCs constituting dynamic objects are distinguished by identification information stored in the coded data or separately from the coded data.
[0060] Alternatively, the SPC may be used as the identification unit. In this case, the SPC including the VLM constituting the static object and the SPC including the VLM constituting the dynamic object are distinguished by the above-mentioned identification information.
[0061] Alternatively, the VLM or VXL may be used as the identification unit. In this case, the VLM or VXL including a static object is distinguished from the VLM or VXL including a dynamic object by the above-mentioned identification information.
[0062] The encoding device may also encode a dynamic object as one or more VLMs or SPCs, and encode a VLM or SPC including a static object and an SPC including a dynamic object as different GOSs. In addition, when the size of the GOS varies depending on the size of the dynamic object, the encoding device stores the size of the GOS separately as meta information.
[0063] The encoding device may also encode the static object and the dynamic object independently of each other, and overlay the dynamic object on the world composed of the static objects. In this case, the dynamic object is composed of one or more SPCs, and each SPC is associated with one or more SPCs constituting the static object on which the SPC is overlaid. Note that the dynamic object may be represented by one or more VLMs or VXLs instead of SPCs.
[0064] The encoding device may also encode static objects and dynamic objects as different streams.
[0065] The encoding device may also generate a GOS including one or more SPCs that constitute a dynamic object. Furthermore, the encoding device may set the GOS including the dynamic object (GOS_M) and the GOS of the static object corresponding to the spatial area of GOS_M to the same size (occupy the same spatial area). This allows the superimposition process to be performed on a GOS-by-GOS basis.
[0066] A P-SPC or B-SPC constituting a dynamic object may refer to an SPC included in a different encoded GOS. In cases where the position of a dynamic object changes over time and the same dynamic object is encoded as a GOS at a different time, referencing across GOS is effective in terms of compression ratio.
[0067] Also, the first method and the second method may be switched depending on the use of the encoded data. For example, when the encoded three-dimensional data is used as a map, it is desirable to be able to separate dynamic objects, so the encoding device uses the second method. On the other hand, when encoding three-dimensional data of an event such as a concert or sporting event, if there is no need to separate dynamic objects, the encoding device uses the first method.
[0068] Furthermore, the decode time and display time of the GOS or SPC can be stored in the encoded data or as meta information. Furthermore, all time information of static objects may be the same. In this case, the actual decode time and display time may be determined by the decoding device. Alternatively, a different value may be assigned as the decode time for each GOS or SPC, and the same value may be assigned as the display time for all. Furthermore, a model may be introduced in which the decoder has a buffer of a predetermined size, and guarantees that decoding can be performed without failure if a bitstream is read at a predetermined bit rate according to the decode time, as in a decoder model in video coding such as the HRD (Hypothetical Reference Decoder) of HEVC.
[0069] Next, the arrangement of GOS in the world will be described. The coordinates of the three-dimensional space in the world are expressed by three mutually orthogonal coordinate axes (x-axis, y-axis, z-axis). By setting a predetermined rule for the coding order of GOS, coding can be performed so that spatially adjacent GOS are continuous in the coded data. For example, in the example shown in FIG. 4, GOS in the xz plane are coded continuously. After coding of all GOS in a certain xz plane is completed, the value of the y axis is updated. In other words, as coding progresses, the world extends in the y axis direction. Also, the index numbers of GOS are set in the coding order.
[0070] Here, the three-dimensional space of the world is associated one-to-one with absolute geographical coordinates such as GPS or latitude and longitude. Alternatively, the three-dimensional space may be expressed by a relative position from a preset reference position. The directions of the x-axis, y-axis, and z-axis of the three-dimensional space are expressed as direction vectors determined based on the latitude and longitude, and the direction vectors are stored as meta information together with the encoded data.
[0071] Moreover, the size of the GOS is fixed, and the encoding device stores the size as meta information. The size of the GOS may be switched depending on, for example, whether it is an urban area or not, or whether it is indoors or outdoors. That is, the size of the GOS may be switched depending on the amount or nature of objects that have information value. Alternatively, the encoding device may adaptively switch the size of the GOS or the interval of I-SPCs in the GOS depending on the density of objects within the same world. For example, the higher the density of objects, the smaller the size of the GOS and the shorter the interval of I-SPCs in the GOS.
[0072] In the example of Figure 5, the third to tenth GOS areas have a high density of objects, so the GOS are subdivided to achieve fine-grained random access. Note that the seventh to tenth GOS are located behind the third to sixth GOS, respectively.
[0073] (Embodiment 2) In this embodiment, a method for transmitting and receiving three-dimensional data between vehicles will be described.
[0074] FIG. 7 is a schematic diagram showing the transmission and reception of three-dimensional data 607 between a vehicle 600 and a nearby vehicle 601.
[0075] When acquiring three-dimensional data using a sensor (such as a distance sensor such as a range finder, a stereo camera, or a combination of multiple monocular cameras) mounted on the vehicle 600, an area where three-dimensional data cannot be created (hereinafter, this area is referred to as an occlusion area 604) occurs, even though it is within the sensor detection range 602 of the vehicle 600, due to obstacles such as surrounding vehicles 601. Furthermore, the accuracy of autonomous operation increases as the space for acquiring three-dimensional data becomes larger, but the sensor detection range of the vehicle 600 alone is limited.
[0076] A sensor detection range 602 of the host vehicle 600 includes an area 603 from which three-dimensional data can be acquired and an occlusion area 604. The area from which the host vehicle 600 wishes to acquire three-dimensional data includes the sensor detection range 602 of the host vehicle 600 and other areas. In addition, a sensor detection range 605 of a nearby vehicle 601 includes the occlusion area 604 and an area 606 that is not included in the sensor detection range 602 of the host vehicle 600.
[0077] The surrounding vehicle 601 transmits information detected by the surrounding vehicle 601 to the host vehicle 600. The host vehicle 600 can acquire three-dimensional data 607 of an occlusion region 604 and a region 606 outside the sensor detection range 602 of the host vehicle 600 by acquiring information detected by the surrounding vehicle 601 such as a vehicle ahead. The host vehicle 600 uses the information acquired by the surrounding vehicle 601 to complement the three-dimensional data of the occlusion region 604 and the region 606 outside the sensor detection range.
[0078] The three-dimensional data in the autonomous operation of a vehicle or a robot is used for self-location estimation, detection of surrounding conditions, or both. For example, for self-location estimation, three-dimensional data generated by the vehicle 600 based on sensor information of the vehicle 600 is used. For detection of surrounding conditions, in addition to the three-dimensional data generated by the vehicle 600, three-dimensional data acquired from a surrounding vehicle 601 is also used.
[0079] The surrounding vehicle 601 that transmits the three-dimensional data 607 to the host vehicle 600 may be determined according to the state of the host vehicle 600. For example, the surrounding vehicle 601 is a vehicle ahead when the host vehicle 600 travels straight, an oncoming vehicle when the host vehicle 600 turns right, and a vehicle behind when the host vehicle 600 reverses. Also, the driver of the host vehicle 600 may directly specify the surrounding vehicle 601 that transmits the three-dimensional data 607 to the host vehicle 600.
[0080] Furthermore, the vehicle 600 may search for a surrounding vehicle 601 that possesses three-dimensional data of an area that is included in the space in which the three-dimensional data 607 is to be acquired but cannot be acquired by the vehicle 600. The area that the vehicle 600 cannot acquire is an occlusion area 604 or an area 606 outside the sensor detection range 602, etc.
[0081] Furthermore, the host vehicle 600 may identify the occlusion region 604 based on sensor information of the host vehicle 600. For example, the host vehicle 600 identifies a region included in the sensor detection range 602 of the host vehicle 600, for which three-dimensional data cannot be created, as the occlusion region 604.
[0082] An example of operation will be described below when it is the vehicle ahead that transmits the three-dimensional data 607. Fig. 8 is a diagram showing an example of the three-dimensional data transmitted in this case.
[0083] 8, the three-dimensional data 607 transmitted from the vehicle in front is, for example, a sparse world of point cloud (SWLD). That is, the vehicle in front creates three-dimensional data (point cloud) of the WLD from information detected by the sensor of the vehicle in front, and creates three-dimensional data of the SWLD (point cloud) by extracting data whose feature amount is equal to or greater than a threshold value from the three-dimensional data of the WLD. Then, the vehicle in front transmits the created three-dimensional data of the SWLD to the vehicle 600.
[0084] The host vehicle 600 receives the SWLD and merges the received SWLD with the point cloud created by the host vehicle 600.
[0085] The transmitted SWLD has information on absolute coordinates (the position of the SWLD in the coordinate system of the three-dimensional map). The vehicle 600 can realize the merging process by overwriting the point cloud generated by the vehicle 600 based on the absolute coordinates.
[0086] The SWLD transmitted from the nearby vehicle 601 may be the SWLD of an area 606 outside the sensor detection range 602 of the host vehicle 600 and within the sensor detection range 605 of the nearby vehicle 601, or the SWLD of an occlusion area 604 for the host vehicle 600, or both. In addition, the transmitted SWLD may be the SWLD of an area used by the nearby vehicle 601 to detect the surrounding situation among the above SWLDs.
[0087] Furthermore, the surrounding vehicle 601 may change the density of the transmitted point cloud according to the available communication time based on the speed difference between the vehicle itself 600 and the surrounding vehicle 601. For example, when the speed difference is large and the available communication time is short, the surrounding vehicle 601 may lower the density (amount of data) of the point cloud by extracting three-dimensional points with large feature values from the SWLD.
[0088] In addition, detecting the surrounding conditions means determining the presence or absence of people, vehicles, road construction equipment, etc., identifying their types, and detecting their positions, movement direction, movement speed, etc.
[0089] Furthermore, the host vehicle 600 may acquire braking information of the surrounding vehicle 601 instead of or in addition to the three-dimensional data 607 generated by the surrounding vehicle 601. Here, the braking information of the surrounding vehicle 601 is, for example, information indicating that the accelerator or brake of the surrounding vehicle 601 has been depressed or the degree of depression.
[0090] In addition, in the point cloud generated by each vehicle, the three-dimensional space is subdivided into random access units in consideration of low-latency communication between vehicles. On the other hand, in the case of three-dimensional maps, which are map data downloaded from a server, the three-dimensional space is divided into larger random access units compared to the case of vehicle-to-vehicle communication.
[0091] Data for areas that are likely to become occlusion areas, such as the area in front of a leading vehicle or the area behind a trailing vehicle, is divided into small random access units as data for low latency.
[0092] Since the importance of the view in front increases when driving at high speeds, each vehicle creates SWLDs with a narrower field of view in fine random access units when driving at high speeds.
[0093] If the SWLD created by the vehicle in front for transmission includes an area from which the vehicle 600 can acquire point clouds, the vehicle in front may reduce the amount of transmission by removing the point clouds from that area.
[0094] (Embodiment 3) In this embodiment, a method of transmitting three-dimensional data to a following vehicle, etc. will be described. Fig. 9 is a diagram showing an example of a target space of three-dimensional data to be transmitted to a following vehicle, etc.
[0095] Vehicle 801 transmits three-dimensional data such as a point cloud (group of points) contained in a rectangular space 802 of width W, height H, and depth D at a distance L from the vehicle 801 in front of the vehicle 801 to a traffic monitoring cloud that monitors road conditions or a following vehicle at time intervals of Δt.
[0096] If a change occurs in the three-dimensional data contained in the space 802 that has been previously transmitted, such as when a vehicle or person enters the space 802 from the outside, the vehicle 801 also transmits the three-dimensional data of the space where the change has occurred.
[0097] Although FIG. 9 shows an example in which the shape of the space 802 is a rectangular parallelepiped, the space 802 does not necessarily have to be a rectangular parallelepiped as long as it includes the space on the road ahead that is in a blind spot for following vehicles.
[0098] It is desirable to set the distance L to a distance at which the following vehicle that has received the three-dimensional data can safely stop. For example, the distance L is set to the sum of the distance the following vehicle travels while it takes to receive the three-dimensional data, the distance the following vehicle travels before it starts to decelerate in response to the received data, and the distance the following vehicle requires to safely stop after starting to decelerate. Since these distances change depending on the speed, the distance L may change depending on the speed V of the vehicle, such as L = a x V + b (a and b are constants).
[0099] The width W is set to a value at least larger than the width of the lane in which the vehicle 801 is traveling. More desirably, the width W is set to a size that includes adjacent spaces such as left and right lanes or side strips.
[0100] The depth D may be a fixed value, or may vary according to the vehicle speed V, such as D=c×V+d (c and d are constants). By setting D so that D>V×Δt, the space to be transmitted can overlap with the space that has already been transmitted in the past. This allows the vehicle 801 to more reliably transmit the space on the road to the following vehicles, etc. without omissions.
[0101] In this way, by limiting the three-dimensional data transmitted by vehicle 801 to a space that is useful for following vehicles, the volume of three-dimensional data to be transmitted can be effectively reduced, thereby achieving low communication latency and low cost.
[0102] (Embodiment 4) In the third embodiment, an example has been described in which a client device such as a vehicle transmits three-dimensional data to another vehicle or a server such as a traffic monitoring cloud. In the present embodiment, the client device transmits sensor information obtained by a sensor to the server or another client device.
[0103] First, the configuration of the system according to this embodiment will be described. Fig. 10 is a diagram showing the configuration of a transmission / reception system for a 3D map and sensor information according to this embodiment. This system includes a server 901 and client devices 902A and 902B. When there is no particular need to distinguish between the client devices 902A and 902B, they are also referred to as client devices 902.
[0104] The client device 902 is, for example, an in-vehicle device mounted on a moving object such as a vehicle. The server 901 is, for example, a traffic monitoring cloud or the like, and is capable of communicating with a plurality of client devices 902.
[0105] The server 901 transmits a three-dimensional map composed of a point cloud to the client device 902. Note that the composition of the three-dimensional map is not limited to a point cloud, and may represent other three-dimensional data such as a mesh structure.
[0106] The client device 902 transmits sensor information acquired by the client device 902 to the server 901. The sensor information includes, for example, at least one of LiDAR acquisition information, a visible light image, an infrared image, a depth image, sensor position information, and speed information.
[0107] Data transmitted between the server 901 and the client device 902 may be compressed to reduce data, or may be left uncompressed to maintain data accuracy. When compressing data, a three-dimensional compression method based on an octree structure, for example, can be used for the point cloud. Also, a two-dimensional image compression method can be used for the visible light image, the infrared image, and the depth image. The two-dimensional image compression method is, for example, MPEG-4 AVC or HEVC standardized by MPEG.
[0108] Furthermore, the server 901 transmits the three-dimensional map managed by the server 901 to the client device 902 in response to a transmission request for the three-dimensional map from the client device 902. Note that the server 901 may transmit the three-dimensional map without waiting for a transmission request for the three-dimensional map from the client device 902. For example, the server 901 may broadcast the three-dimensional map to one or more client devices 902 in a predetermined space. Furthermore, the server 901 may transmit a three-dimensional map suitable for the position of the client device 902 at regular intervals to the client device 902 that has received a transmission request once. Furthermore, the server 901 may transmit the three-dimensional map to the client device 902 every time the three-dimensional map managed by the server 901 is updated.
[0109] The client device 902 issues a request for transmitting a three-dimensional map to the server 901. For example, when the client device 902 wants to estimate its own position while driving, the client device 902 transmits a request for transmitting a three-dimensional map to the server 901.
[0110] In the following cases, the client device 902 may issue a transmission request for a three-dimensional map to the server 901. If the three-dimensional map held by the client device 902 is old, the client device 902 may issue a transmission request for a three-dimensional map to the server 901. For example, if a certain period of time has passed since the client device 902 acquired the three-dimensional map, the client device 902 may issue a transmission request for a three-dimensional map to the server 901.
[0111] The client device 902 may issue a request to send a three-dimensional map to the server 901 a certain time before the client device 902 leaves the space shown in the three-dimensional map held by the client device 902. For example, when the client device 902 is within a predetermined distance from the boundary of the space shown in the three-dimensional map held by the client device 902, the client device 902 may issue a request to send a three-dimensional map to the server 901. In addition, when the movement route and movement speed of the client device 902 are known, the time when the client device 902 will leave the space shown in the three-dimensional map held by the client device 902 may be predicted based on these.
[0112] If the error in aligning the three-dimensional data created by the client device 902 from sensor information with the three-dimensional map is equal to or greater than a certain level, the client device 902 may issue a request to the server 901 to transmit the three-dimensional map.
[0113] The client device 902 transmits the sensor information to the server 901 in response to a request to transmit the sensor information transmitted from the server 901. The client device 902 may transmit the sensor information to the server 901 without waiting for a request to transmit the sensor information from the server 901. For example, once the client device 902 receives a request to transmit the sensor information from the server 901, the client device 902 may transmit the sensor information to the server 901 periodically for a certain period of time. In addition, when an error occurs in aligning three-dimensional data created by the client device 902 based on the sensor information with the three-dimensional map obtained from the server 901, the client device 902 may determine that a change may have occurred in the three-dimensional map around the client device 902 and transmit a message to that effect along with the sensor information to the server 901.
[0114] The server 901 issues a transmission request for sensor information to the client device 902. For example, the server 901 receives location information of the client device 902, such as a GPS, from the client device 902. When the server 901 determines, based on the location information of the client device 902, that the client device 902 is approaching a space with little information in the three-dimensional map managed by the server 901, it issues a transmission request for sensor information to the client device 902 in order to generate a new three-dimensional map. The server 901 may also issue a transmission request for sensor information when it is desired to update the three-dimensional map, when it is desired to check road conditions such as during snowfall or a disaster, when it is desired to check traffic congestion conditions, or when it is desired to check incident and accident conditions, etc.
[0115] Furthermore, the client device 902 may set the amount of data of the sensor information to be transmitted to the server 901 depending on the communication state or bandwidth at the time of receiving a request to transmit the sensor information from the server 901. Setting the amount of data of the sensor information to be transmitted to the server 901 means, for example, increasing or decreasing the amount of the data itself or appropriately selecting a compression method.
[0116] 11 is a block diagram showing an example of the configuration of a client device 902. The client device 902 receives a three-dimensional map composed of a point cloud or the like from the server 901, and estimates the self-position of the client device 902 from three-dimensional data created based on sensor information of the client device 902. In addition, the client device 902 transmits the acquired sensor information to the server 901.
[0117] The client device 902 includes a data receiving unit 1011, a communication unit 1012, a reception control unit 1013, a format conversion unit 1014, multiple sensors 1015, a three-dimensional data creation unit 1016, a three-dimensional image processing unit 1017, a three-dimensional data storage unit 1018, a format conversion unit 1019, a communication unit 1020, a transmission control unit 1021, and a data transmission unit 1022.
[0118] The data receiving unit 1011 receives a three-dimensional map 1031 from the server 901. The three-dimensional map 1031 is data including a point cloud such as a WLD or a SWLD. The three-dimensional map 1031 may include either compressed data or uncompressed data.
[0119] The communication unit 1012 communicates with the server 901, and transmits data transmission requests (for example, requests to transmit a three-dimensional map) to the server 901.
[0120] The reception control unit 1013 exchanges information such as compatible formats with the communication destination via the communication unit 1012, and establishes communication with the communication destination.
[0121] The format conversion unit 1014 generates a three-dimensional map 1032 by performing format conversion and the like on the three-dimensional map 1031 received by the data receiving unit 1011. Furthermore, if the three-dimensional map 1031 is compressed or encoded, the format conversion unit 1014 performs decompression or decoding processing. Note that if the three-dimensional map 1031 is uncompressed data, the format conversion unit 1014 does not perform decompression or decoding processing.
[0122] The multiple sensors 1015 are a group of sensors, such as LiDAR, a visible light camera, an infrared camera, or a depth sensor, that acquire information about the outside of the vehicle in which the client device 902 is mounted, and generate sensor information 1033. For example, when the sensor 1015 is a laser sensor such as LiDAR, the sensor information 1033 is three-dimensional data such as a point cloud (point cloud data). Note that the number of sensors 1015 does not need to be multiple.
[0123] The three-dimensional data creation unit 1016 creates three-dimensional data 1034 of the surroundings of the vehicle based on the sensor information 1033. For example, the three-dimensional data creation unit 1016 creates point cloud data with color information of the surroundings of the vehicle using information acquired by the LiDAR and a visible light image acquired by a visible light camera.
[0124] The three-dimensional image processing unit 1017 performs self-position estimation processing of the vehicle using a three-dimensional map 1032 such as a received point cloud and three-dimensional data 1034 of the surroundings of the vehicle generated from the sensor information 1033. The three-dimensional image processing unit 1017 may generate three-dimensional data 1035 of the surroundings of the vehicle by combining the three-dimensional map 1032 and the three-dimensional data 1034, and perform self-position estimation processing using the generated three-dimensional data 1035.
[0125] The three-dimensional data storage unit 1018 stores a three-dimensional map 1032, three-dimensional data 1034, and three-dimensional data 1035, and the like.
[0126] The format conversion unit 1019 generates sensor information 1037 by converting the sensor information 1033 into a format supported by the receiving side. The format conversion unit 1019 may reduce the amount of data by compressing or encoding the sensor information 1037. Furthermore, the format conversion unit 1019 may omit processing when format conversion is not necessary. Furthermore, the format conversion unit 1019 may control the amount of data to be transmitted in accordance with a designated transmission range.
[0127] The communication unit 1020 communicates with the server 901, and receives data transmission requests (sensor information transmission requests) and the like from the server 901.
[0128] The transmission control unit 1021 exchanges information such as compatible formats with the communication destination via the communication unit 1020, and establishes communication.
[0129] The data transmission unit 1022 transmits the sensor information 1037 to the server 901. The sensor information 1037 includes information acquired by a plurality of sensors 1015, such as information acquired by a LiDAR, a luminance image acquired by a visible light camera, an infrared image acquired by an infrared camera, a depth image acquired by a depth sensor, sensor position information, and speed information.
[0130] Next, the configuration of the server 901 will be described. Fig. 12 is a block diagram showing an example of the configuration of the server 901. The server 901 receives sensor information transmitted from the client device 902, and creates three-dimensional data based on the received sensor information. The server 901 uses the created three-dimensional data to update a three-dimensional map managed by the server 901. In addition, the server 901 transmits the updated three-dimensional map to the client device 902 in response to a transmission request for the three-dimensional map from the client device 902.
[0131] The server 901 includes a data receiving unit 1111, a communication unit 1112, a receiving control unit 1113, a format conversion unit 1114, a three-dimensional data creation unit 1116, a three-dimensional data synthesis unit 1117, a three-dimensional data storage unit 1118, a format conversion unit 1119, a communication unit 1120, a transmission control unit 1121, and a data transmission unit 1122.
[0132] The data receiving unit 1111 receives sensor information 1037 from the client device 902. The sensor information 1037 includes, for example, information acquired by a LiDAR, a luminance image acquired by a visible light camera, an infrared image acquired by an infrared camera, a depth image acquired by a depth sensor, sensor position information, and speed information.
[0133] The communication unit 1112 communicates with the client device 902 and transmits a data transmission request (for example, a request to transmit sensor information) to the client device 902 .
[0134] The reception control unit 1113 exchanges information such as compatible formats with the communication destination via the communication unit 1112, and establishes communication.
[0135] When the received sensor information 1037 is compressed or encoded, the format conversion unit 1114 performs decompression or decoding processing to generate the sensor information 1132. Note that, when the sensor information 1037 is non-compressed data, the format conversion unit 1114 does not perform decompression or decoding processing.
[0136] The three-dimensional data creation unit 1116 creates three-dimensional data 1134 of the periphery of the client device 902 based on the sensor information 1132. For example, the three-dimensional data creation unit 1116 creates point cloud data with color information of the periphery of the client device 902 using information acquired by the LiDAR and visible light images acquired by a visible light camera.
[0137] A three-dimensional data synthesis unit 1117 synthesizes three-dimensional data 1134 created based on the sensor information 1132 with a three-dimensional map 1135 managed by the server 901, thereby updating the three-dimensional map 1135.
[0138] The three-dimensional data storage unit 1118 stores a three-dimensional map 1135 and the like.
[0139] The format conversion unit 1119 generates the three-dimensional map 1031 by converting the three-dimensional map 1135 into a format supported by the receiving side. The format conversion unit 1119 may reduce the amount of data by compressing or encoding the three-dimensional map 1135. Furthermore, the format conversion unit 1119 may omit processing when format conversion is not necessary. Furthermore, the format conversion unit 1119 may control the amount of data to be transmitted in accordance with a designated transmission range.
[0140] The communication unit 1120 communicates with the client device 902 and receives a data transmission request (a request to transmit a three-dimensional map) or the like from the client device 902 .
[0141] A transmission control unit 1121 exchanges information such as compatible formats with a communication destination via a communication unit 1120, and establishes communication.
[0142] The data transmission unit 1122 transmits the three-dimensional map 1031 to the client device 902. The three-dimensional map 1031 is data including a point cloud such as a WLD or a SWLD. The three-dimensional map 1031 may include either compressed data or uncompressed data.
[0143] Next, a description will be given of the operation flow of the client device 902. Fig. 13 is a flowchart showing the operation of the client device 902 when acquiring a three-dimensional map.
[0144] First, the client device 902 requests the server 901 to transmit a three-dimensional map (such as a point cloud) (S1001). At this time, the client device 902 may also transmit position information of the client device 902 obtained by GPS or the like, thereby requesting the server 901 to transmit a three-dimensional map related to the position information.
[0145] Next, the client device 902 receives the three-dimensional map from the server 901 (S1002). If the received three-dimensional map is compressed data, the client device 902 decodes the received three-dimensional map to generate an uncompressed three-dimensional map (S1003).
[0146] Next, the client device 902 creates three-dimensional data 1034 of the periphery of the client device 902 from sensor information 1033 obtained by the multiple sensors 1015 (S1004). Next, the client device 902 estimates its own position using the three-dimensional map 1032 received from the server 901 and the three-dimensional data 1034 created from the sensor information 1033 (S1005).
[0147] 14 is a flowchart showing an operation of the client device 902 when transmitting sensor information. First, the client device 902 receives a request to transmit sensor information from the server 901 (S1011). The client device 902 that has received the transmission request transmits sensor information 1037 to the server 901 (S1012). Note that, when the sensor information 1033 includes a plurality of pieces of information obtained by a plurality of sensors 1015, the client device 902 may generate the sensor information 1037 by compressing each piece of information using a compression method suitable for each piece of information.
[0148] Next, the operation flow of the server 901 will be described. Fig. 15 is a flowchart showing the operation when the server 901 acquires sensor information. First, the server 901 requests the client device 902 to transmit sensor information (S1021). Next, the server 901 receives the sensor information 1037 transmitted from the client device 902 in response to the request (S1022). Next, the server 901 creates three-dimensional data 1134 using the received sensor information 1037 (S1023). Next, the server 901 reflects the created three-dimensional data 1134 in the three-dimensional map 1135 (S1024).
[0149] 16 is a flowchart showing the operation of the server 901 when transmitting a three-dimensional map. First, the server 901 receives a request to transmit a three-dimensional map from the client device 902 (S1031). The server 901 that has received the request to transmit the three-dimensional map transmits a three-dimensional map 1031 to the client device 902 (S1032). At this time, the server 901 may extract a three-dimensional map of the vicinity according to the position information of the client device 902, and transmit the extracted three-dimensional map. The server 901 may also compress the three-dimensional map composed of a point cloud, for example, using a compression method based on an octet tree structure, and transmit the compressed three-dimensional map.
[0150] A modification of this embodiment will now be described.
[0151] The server 901 creates three-dimensional data 1134 of the vicinity of the position of the client device 902 using the sensor information 1037 received from the client device 902. Next, the server 901 calculates the difference between the three-dimensional data 1134 and the three-dimensional map 1135 by matching the created three-dimensional data 1134 with a three-dimensional map 1135 of the same area managed by the server 901. If the difference is equal to or greater than a predetermined threshold, the server 901 determines that some abnormality has occurred in the vicinity of the client device 902. For example, when ground subsidence or the like occurs due to a natural disaster such as an earthquake, it is considered that a large difference occurs between the three-dimensional map 1135 managed by the server 901 and the three-dimensional data 1134 created based on the sensor information 1037.
[0152] The sensor information 1037 may include information indicating at least one of the type of sensor, the performance of the sensor, and the model number of the sensor. In addition, a class ID or the like according to the performance of the sensor may be added to the sensor information 1037. For example, when the sensor information 1037 is information acquired by LiDAR, it is possible to assign an identifier to the performance of the sensor, such as class 1 for a sensor that can acquire information with an accuracy of several millimeters, class 2 for a sensor that can acquire information with an accuracy of several centimeters, and class 3 for a sensor that can acquire information with an accuracy of several meters. In addition, the server 901 may estimate the performance information of the sensor from the model number of the client device 902. For example, when the client device 902 is mounted on a vehicle, the server 901 may determine the spec information of the sensor from the model of the vehicle. In this case, the server 901 may acquire information on the model of the vehicle in advance, or the information may be included in the sensor information. In addition, the server 901 may use the acquired sensor information 1037 to switch the degree of correction for the three-dimensional data 1134 created using the sensor information 1037. For example, when the sensor performance is high accuracy (class 1), the server 901 does not perform correction on the three-dimensional data 1134. When the sensor performance is low accuracy (class 3), the server 901 applies correction according to the accuracy of the sensor to the three-dimensional data 1134. For example, the server 901 increases the degree (strength) of correction as the accuracy of the sensor decreases.
[0153] The server 901 may simultaneously issue requests to send sensor information to multiple client devices 902 in a certain space. When the server 901 receives multiple pieces of sensor information from multiple client devices 902, the server 901 does not need to use all of the sensor information to create the three-dimensional data 1134, and may select the sensor information to be used according to the performance of the sensor, for example. For example, when updating the three-dimensional map 1135, the server 901 may select high-precision sensor information (class 1) from the multiple pieces of sensor information received, and create the three-dimensional data 1134 using the selected sensor information.
[0154] The server 901 is not limited to a server such as a traffic monitoring cloud, but may be another client device (mounted in a vehicle). Fig. 17 is a diagram showing the system configuration in this case.
[0155] For example, client device 902C issues a request to send sensor information to nearby client device 902A and acquires the sensor information from client device 902A. Client device 902C then creates three-dimensional data using the acquired sensor information of client device 902A and updates the three-dimensional map of client device 902C. This allows client device 902C to generate a three-dimensional map of the space that can be acquired from client device 902A by taking advantage of the performance of client device 902C. For example, it is considered that such a case occurs when client device 902C has high performance.
[0156] In this case, the client device 902A that provided the sensor information is given the right to obtain the high-precision 3D map generated by the client device 902C. The client device 902A receives the high-precision 3D map from the client device 902C in accordance with the right.
[0157] In addition, the client device 902C may issue a request to transmit sensor information to multiple nearby client devices 902 (client device 902A and client device 902B). If the sensor of the client device 902A or the client device 902B is high performance, the client device 902C can create three-dimensional data using the sensor information obtained by the high performance sensor.
[0158] 18 is a block diagram showing the functional configuration of a server 901 and a client device 902. The server 901 includes, for example, a 3D map compression / decoding processing unit 1201 that compresses and decodes a 3D map, and a sensor information compression / decoding processing unit 1202 that compresses and decodes sensor information.
[0159] The client device 902 includes a three-dimensional map decoding processing unit 1211 and a sensor information compression processing unit 1212. The three-dimensional map decoding processing unit 1211 receives encoded data of the compressed three-dimensional map and decodes the encoded data to obtain the three-dimensional map. The sensor information compression processing unit 1212 compresses the sensor information itself instead of the three-dimensional data created from the acquired sensor information, and transmits the encoded data of the compressed sensor information to the server 901. With this configuration, the client device 902 only needs to internally hold a processing unit (device or LSI) that performs processing to decode the three-dimensional map (point cloud, etc.), and does not need to internally hold a processing unit that performs processing to compress the three-dimensional data of the three-dimensional map (point cloud, etc.). This makes it possible to reduce the cost and power consumption of the client device 902.
[0160] As described above, the client device 902 according to this embodiment is mounted on a moving body, and creates three-dimensional data 1034 of the surroundings of the moving body from sensor information 1033 indicating the surrounding conditions of the moving body, obtained by a sensor 1015 mounted on the moving body. The client device 902 estimates the self-position of the moving body using the created three-dimensional data 1034. The client device 902 transmits the acquired sensor information 1033 to the server 901 or another moving body 902.
[0161] According to this, the client device 902 transmits the sensor information 1033 to the server 901 or the like. This may reduce the amount of data to be transmitted compared to the case of transmitting three-dimensional data. Also, since the client device 902 does not need to perform processing such as compression or encoding of the three-dimensional data, the amount of processing by the client device 902 can be reduced. Therefore, the client device 902 can reduce the amount of data to be transmitted or simplify the device configuration.
[0162] Moreover, the client device 902 further transmits a request to the server 901 to transmit a three-dimensional map, and receives a three-dimensional map 1031 from the server 901. The client device 902 estimates its own location using the three-dimensional data 1034 and the three-dimensional map 1032.
[0163] The sensor information 1033 includes at least one of information obtained by a laser sensor, a luminance image, an infrared image, a depth image, sensor position information, and sensor speed information.
[0164] Furthermore, the sensor information 1033 includes information indicating the performance of the sensor.
[0165] Furthermore, the client device 902 encodes or compresses the sensor information 1033, and transmits the encoded or compressed sensor information 1037 to the server 901 or another mobile body 902. This allows the client device 902 to reduce the amount of data to be transmitted.
[0166] For example, the client device 902 includes a processor and a memory, and the processor uses the memory to perform the above-mentioned processing.
[0167] Furthermore, the server 901 according to this embodiment is capable of communicating with a client device 902 mounted on the mobile object, and receives sensor information 1037 indicating the surrounding conditions of the mobile object, obtained by a sensor 1015 mounted on the mobile object, from the client device 902. The server 901 creates three-dimensional data 1134 of the surroundings of the mobile object from the received sensor information 1037.
[0168] According to this, the server 901 creates three-dimensional data 1134 using the sensor information 1037 transmitted from the client device 902. This may reduce the amount of data transmitted compared to when the client device 902 transmits three-dimensional data. In addition, since the client device 902 does not need to perform processing such as compression or encoding of the three-dimensional data, the amount of processing by the client device 902 can be reduced. Therefore, the server 901 can reduce the amount of data transmitted or simplify the device configuration.
[0169] Moreover, the server 901 further transmits a request to the client device 902 to transmit the sensor information.
[0170] Furthermore, the server 901 further updates a three-dimensional map 1135 using the created three-dimensional data 1134 , and transmits the three-dimensional map 1135 to the client device 902 in response to a transmission request for the three-dimensional map 1135 from the client device 902 .
[0171] The sensor information 1037 includes at least one of information obtained by a laser sensor, a luminance image, an infrared image, a depth image, sensor position information, and sensor speed information.
[0172] Additionally, the sensor information 1037 includes information indicating the performance of the sensor.
[0173] Moreover, the server 901 further corrects the three-dimensional data in accordance with the performance of the sensor, thereby enabling the three-dimensional data creation method to improve the quality of the three-dimensional data.
[0174] Furthermore, in receiving the sensor information, the server 901 receives a plurality of pieces of sensor information 1037 from a plurality of client devices 902, and selects the sensor information 1037 to be used for creating the three-dimensional data 1134 based on a plurality of pieces of information indicating the performance of the sensors included in the plurality of pieces of sensor information 1037. This allows the server 901 to improve the quality of the three-dimensional data 1134.
[0175] Furthermore, the server 901 decodes or expands the received sensor information 1037, and creates three-dimensional data 1134 from the decoded or expanded sensor information 1132. This allows the server 901 to reduce the amount of data to be transmitted.
[0176] For example, the server 901 includes a processor and a memory, and the processor uses the memory to perform the above-mentioned processing.
[0177] (Embodiment 5) In this embodiment, a modification of the above-mentioned embodiment 4 will be described. Fig. 19 is a diagram showing a configuration of a system according to this embodiment. The system shown in Fig. 19 includes a server 2001, a client device 2002A, and a client device 2002B.
[0178] Client device 2002A and client device 2002B are mounted on a moving object such as a vehicle, and transmit sensor information to server 2001. Server 2001 transmits a three-dimensional map (point cloud) to client device 2002A and client device 2002B.
[0179] The client device 2002A includes a sensor information acquisition unit 2011, a storage unit 2012, and a data transmission permission determination unit 2013. The client device 2002B has a similar configuration. In the following description, the client device 2002A and the client device 2002B will also be referred to as the client device 2002 when there is no need to distinguish between them.
[0180] FIG. 20 is a flowchart showing the operation of client device 2002 according to the present embodiment.
[0181] The sensor information acquisition unit 2011 acquires various sensor information using a sensor (sensor group) mounted on the moving object. That is, the sensor information acquisition unit 2011 acquires sensor information indicating the surrounding situation of the moving object, acquired by a sensor (sensor group) mounted on the moving object. The sensor information acquisition unit 2011 also stores the acquired sensor information in the storage unit 2012. This sensor information includes at least one of LiDAR acquisition information, a visible light image, an infrared image, and a depth image. The sensor information may also include at least one of sensor position information, speed information, acquisition time information, and acquisition location information. The sensor position information indicates the position of the sensor that acquired the sensor information. The speed information indicates the speed of the moving object when the sensor acquired the sensor information. The acquisition time information indicates the time when the sensor information was acquired by the sensor. The acquisition location information indicates the position of the moving object or the sensor when the sensor information was acquired by the sensor.
[0182] Next, the data transmission possibility determination unit 2013 determines whether the mobile object (client device 2002) is in an environment where it can transmit sensor information to the server 2001 (S2002). For example, the data transmission possibility determination unit 2013 may use information such as GPS to identify the location and time of the client device 2002 and determine whether data can be transmitted. The data transmission possibility determination unit 2013 may also determine whether data can be transmitted based on whether it can connect to a specific access point.
[0183] When the client device 2002 determines that the moving object is in an environment in which it can transmit sensor information to the server 2001 (Yes in S2002), it transmits the sensor information to the server 2001 (S2003). That is, when the client device 2002 is in a situation in which it can transmit the sensor information to the server 2001, the client device 2002 transmits the sensor information it holds to the server 2001. For example, a millimeter wave access point capable of high-speed communication is installed at an intersection or the like. When the client device 2002 enters the intersection, it transmits the sensor information it holds to the server 2001 at high speed using millimeter wave communication.
[0184] Next, the client device 2002 deletes the sensor information already transmitted to the server 2001 from the storage unit 2012 (S2004). The client device 2002 may delete the sensor information when the sensor information not transmitted to the server 2001 satisfies a predetermined condition. For example, the client device 2002 may delete the sensor information from the storage unit 2012 when the acquisition time of the sensor information held by the client device 2002 becomes older than a certain time before the current time. That is, the client device 2002 may delete the sensor information from the storage unit 2012 when the difference between the time when the sensor information was acquired by the sensor and the current time exceeds a predetermined time. The client device 2002 may also delete the sensor information from the storage unit 2012 when the acquisition location of the sensor information held by the client device 2002 becomes more distant from the current location by a certain distance. That is, the client device 2002 may delete the sensor information from the storage unit 2012 when the difference between the position of the moving object or the sensor when the sensor information was acquired by the sensor and the current position of the moving object or the sensor exceeds a predetermined distance. This makes it possible to reduce the capacity of the storage unit 2012 of the client device 2002 .
[0185] If the client device 2002 has not finished acquiring the sensor information (No in S2005), the client device 2002 performs the processes from step S2001 onward again. If the client device 2002 has finished acquiring the sensor information (Yes in S2005), the client device 2002 ends the process.
[0186] Furthermore, the client device 2002 may select the sensor information to be transmitted to the server 2001 in accordance with the communication conditions. For example, when high-speed communication is possible, the client device 2002 transmits sensor information having a large size stored in the storage unit 2012 (e.g., LiDAR acquisition information, etc.) with priority. When high-speed communication is difficult, the client device 2002 transmits sensor information having a small size stored in the storage unit 2012 with high priority (e.g., visible light image). This allows the client device 2002 to efficiently transmit the sensor information stored in the storage unit 2012 to the server 2001 in accordance with the network conditions.
[0187] Furthermore, the client device 2002 may acquire time information indicating the current time and location information indicating the current location from the server 2001. Furthermore, the client device 2002 may determine the acquisition time and acquisition location of the sensor information based on the acquired time information and location information. That is, the client device 2002 may acquire time information from the server 2001 and generate acquisition time information using the acquired time information. Furthermore, the client device 2002 may acquire location information from the server 2001 and generate acquisition location information using the acquired location information.
[0188] For example, regarding time information, the server 2001 and the client device 2002 perform time synchronization using a mechanism such as NTP (Network Time Protocol) or PTP (Precision Time Protocol). This allows the client device 2002 to obtain accurate time information. In addition, since time can be synchronized between the server 2001 and multiple client devices, the time in the sensor information obtained by the different client devices 2002 can be synchronized. Therefore, the server 2001 can handle the sensor information indicating the synchronized time. Note that the time synchronization mechanism may be any method other than NTP or PTP. Furthermore, GPS information may be used as the above-mentioned time information and location information.
[0189] The server 2001 may acquire sensor information from a plurality of client devices 2002 by specifying a time or a location. For example, when an accident occurs, the server 2001 broadcasts a sensor information transmission request to a plurality of client devices 2002 by specifying the time and location of the accident in order to search for a client who was in the vicinity. Then, the client device 2002 having the sensor information of the corresponding time and location transmits the sensor information to the server 2001. That is, the client device 2002 receives a sensor information transmission request including designation information designating a location and time from the server 2001. When the client device 2002 determines that the sensor information obtained at the location and time indicated by the designation information is stored in the storage unit 2012 and that the mobile object is in an environment in which the sensor information can be transmitted to the server 2001, the client device 2002 transmits the sensor information obtained at the location and time indicated by the designation information to the server 2001. In this way, the server 2001 can acquire sensor information related to the occurrence of an accident from a plurality of client devices 2002 and use it for accident analysis, etc.
[0190] Note that the client device 2002 may refuse to transmit the sensor information when receiving a sensor information transmission request from the server 2001. Also, the client device 2002 may set in advance which of a plurality of pieces of sensor information is transmittable. Alternatively, the server 2001 may inquire of the client device 2002 each time whether or not the sensor information can be transmitted.
[0191] Also, points may be given to the client device 2002 that transmits the sensor information to the server 2001. The points may be used to pay for, for example, gasoline purchase costs, EV (Electric Vehicle) charging costs, highway tolls, rental car costs, and the like. Also, after acquiring the sensor information, the server 2001 may delete information for identifying the client device 2002 that transmitted the sensor information. For example, this information is information such as the network address of the client device 2002. This allows the sensor information to be anonymized, so that the user of the client device 2002 can transmit the sensor information from the client device 2002 to the server 2001 with peace of mind. Also, the server 2001 may be composed of multiple servers. For example, by sharing the sensor information among multiple servers, even if one server breaks down, the other servers can communicate with the client device 2002. This makes it possible to avoid a service interruption due to a server failure.
[0192] Furthermore, the designated location specified in the sensor information transmission request indicates the location where an accident occurred, etc., and may differ from the location of the client device 2002 at the designated time specified in the sensor information transmission request. Therefore, the server 2001 can request information acquisition from the client device 2002 that exists within the designated location by specifying a range, such as within XX m of the surrounding area. Similarly, for the designated time, the server 2001 may specify a range, such as within N seconds before and after a certain time. This allows the server 2001 to acquire sensor information from the client device 2002 that exists in "location: within XX m from absolute position S at time: tN to t+N." When transmitting three-dimensional data such as LiDAR data, the client device 2002 may transmit data generated immediately after time t.
[0193] Furthermore, the server 2001 may separately specify, as the specified location, information indicating the location of the client device 2002 from which sensor information is to be acquired and a location from which sensor information is desired. For example, the server 2001 specifies that sensor information including at least a range of YYm from the absolute position S is to be acquired from the client device 2002 that exists within XXm from the absolute position S. When selecting three-dimensional data to be transmitted, the client device 2002 selects one or more randomly accessible units of three-dimensional data so as to include at least the sensor information in the specified range. Furthermore, when transmitting a visible light image, the client device 2002 may transmit a plurality of temporally consecutive image data including at least a frame immediately before or after time t.
[0194] When the client device 2002 can use multiple physical networks, such as 5G or WiFi, or multiple modes in 5G, for transmitting sensor information, the client device 2002 may select a network to be used according to the priority order notified by the server 2001. Alternatively, the client device 2002 itself may select a network that can secure an appropriate bandwidth based on the size of the transmission data. Alternatively, the client device 2002 may select a network to be used based on the cost of data transmission, etc. Also, the transmission request from the server 2001 may include information indicating a transmission deadline, such as "transmission will be performed if the client device 2002 can start transmission by time T." The server 2001 may issue a transmission request again if sufficient sensor information cannot be acquired within the deadline.
[0195] The sensor information may include header information indicating characteristics of the sensor data along with compressed or uncompressed sensor data. The client device 2002 may transmit the header information to the server 2001 via a physical network or communication protocol different from that of the sensor data. For example, the client device 2002 transmits the header information to the server 2001 prior to transmitting the sensor data. The server 2001 determines whether to acquire the sensor data of the client device 2002 based on an analysis result of the header information. For example, the header information may include information indicating the point cloud acquisition density, elevation angle, or frame rate of the LiDAR, or the resolution, signal-to-noise ratio, or frame rate of the visible light image. This allows the server 2001 to acquire the sensor information from the client device 2002 having the sensor data of the determined quality.
[0196] As described above, the client device 2002 is mounted on a moving object, acquires sensor information indicating the surrounding conditions of the moving object obtained by a sensor mounted on the moving object, and stores the sensor information in the storage unit 2012. The client device 2002 determines whether the moving object is in an environment where the sensor information can be transmitted to the server 2001, and transmits the sensor information to the server 2001 when it is determined that the moving object is in an environment where the sensor information can be transmitted to the server.
[0197] Furthermore, the client device 2002 further creates three-dimensional data of the surroundings of the moving object from the sensor information, and estimates the self-position of the moving object using the created three-dimensional data.
[0198] Moreover, the client device 2002 further transmits a request to the server 2001 to transmit a three-dimensional map, and receives the three-dimensional map from the server 2001. The client device 2002 estimates its own location using the three-dimensional data and the three-dimensional map.
[0199] The above-described processing by client device 2002 may be realized as an information transmission method in client device 2002.
[0200] The client device 2002 may also include a processor and a memory, and the processor may use the memory to perform the above-mentioned processes.
[0201] Next, a sensor information collection system according to the present embodiment will be described. FIG. 21 is a diagram showing the configuration of the sensor information collection system according to the present embodiment. As shown in FIG. 21, the sensor information collection system according to the present embodiment includes a terminal 2021A, a terminal 2021B, a communication device 2022A, a communication device 2022B, a network 2023, a data collection server 2024, a map server 2025, and a client device 2026. When the terminal 2021A and the terminal 2021B are not particularly distinguished from each other, they are also referred to as the terminal 2021. When the communication device 2022A and the communication device 2022B are not particularly distinguished from each other, they are also referred to as the communication device 2022.
[0202] The data collection server 2024 collects data such as sensor data obtained by a sensor included in the terminal 2021 as position-related data associated with a position in a three-dimensional space.
[0203] The sensor data is, for example, data acquired by using a sensor provided in the terminal 2021, such as the state of the surroundings of the terminal 2021 or the state of the inside of the terminal 2021. The terminal 2021 transmits to the data collection server 2024 sensor data collected from one or more sensor devices that are located in positions that can directly communicate with the terminal 2021 or can communicate with the terminal 2021 via one or more relay devices using the same communication method.
[0204] The data included in the location-related data may include, for example, information indicating the operating state of the terminal itself or a device included in the terminal, an operating log, a service usage status, etc. Furthermore, the data included in the location-related data may include information associating an identifier of the terminal 2021 with the location or a movement route of the terminal 2021, etc.
[0205] The information indicating a position included in the position-related data is associated with information indicating a position in three-dimensional data such as three-dimensional map data, etc. The information indicating a position will be described in detail later.
[0206] The position related data may include at least one of the above-mentioned time information and information indicating an attribute of the data included in the position related data or the type of the sensor that generated the data (e.g., model number, etc.) in addition to the position information that indicates a position. The position information and the time information may be stored in a header area of the position related data or a header area of a frame that stores the position related data. In addition, the position information and the time information may be transmitted and / or stored separately from the position related data as metadata associated with the position related data.
[0207] The map server 2025 is connected to the network 2023, for example, and transmits three-dimensional data such as three-dimensional map data in response to a request from another device such as the terminal 2021. As described in the above-mentioned embodiments, the map server 2025 may also have a function of updating the three-dimensional data using sensor information transmitted from the terminal 2021.
[0208] The data collection server 2024 is connected to the network 2023, for example, and collects location-related data from other devices such as the terminal 2021, and stores the collected location-related data in a storage device inside the server or in another server. The data collection server 2024 also transmits the collected location-related data or metadata of three-dimensional map data generated based on the location-related data to the terminal 2021 in response to a request from the terminal 2021.
[0209] The network 2023 is a communication network such as the Internet. The terminal 2021 is connected to the network 2023 via a communication device 2022. The communication device 2022 communicates with the terminal 2021 by switching one communication method or a plurality of communication methods. The communication device 2022 is, for example, (1) a base station such as LTE (Long Term Evolution), (2) an access point (AP) such as WiFi or millimeter wave communication, (3) a gateway of an LPWA (Low Power Wide Area) Network such as SIGFOX, LoRaWAN, or Wi-SUN, or (4) a communication satellite that communicates by using a satellite communication method such as DVB-S2.
[0210] In addition, the base station may communicate with the terminal 2021 using a method classified as LPWA, such as NB-IoT (Narrow Band-IoT) or LTE-M, or may communicate with the terminal 2021 by switching between these methods.
[0211] Here, the terminal 2021 has a function of communicating with a communication device 2022 using two types of communication methods, and communicates with the map server 2025 or the data collection server 2024 using one of these communication methods, or by switching between these multiple communication methods and the communication device 2022 that is the direct communication partner, but the configuration of the sensor information collection system and the terminal 2021 is not limited to this. For example, the terminal 2021 may not have a communication function for multiple communication methods, but may have a function of communicating using any one of the communication methods. The terminal 2021 may also support three or more communication methods. Each terminal 2021 may support a different communication method.
[0212] The terminal 2021 has, for example, the configuration of the client device 902 shown in Fig. 11. The terminal 2021 performs position estimation such as its own position using the received three-dimensional data. The terminal 2021 also generates position-related data by associating sensor data acquired from a sensor with position information obtained by position estimation processing.
[0213] The location information added to the location-related data indicates, for example, a location in a coordinate system used in three-dimensional data. For example, the location information is a coordinate value expressed by latitude and longitude values. At this time, the terminal 2021 may include, in the location information, information indicating the coordinate system that is the reference for the coordinate value together with the coordinate value and the three-dimensional data used for the location estimation. The coordinate value may also include altitude information.
[0214] The position information may also be associated with a data unit or a space unit that can be used to encode the above-mentioned three-dimensional data. The unit may be, for example, WLD, GOS, SPC, VLM, or VXL. In this case, the position information is expressed by an identifier for identifying a data unit such as an SPC corresponding to the position-related data. Note that the position information may include, in addition to an identifier for identifying a data unit such as an SPC, information indicating three-dimensional data obtained by encoding a three-dimensional space including the data unit such as the SPC, or information indicating a detailed position within the SPC. The information indicating the three-dimensional data may be, for example, a file name of the three-dimensional data.
[0215] In this way, the system generates location-related data associated with location information based on location estimation using three-dimensional data, and thereby can add location information to the sensor information with higher accuracy than when location information based on the self-location of the client device (terminal 2021) acquired using GPS is added to the sensor information. As a result, even when the location-related data is used by another device for another service, it may be possible to more accurately identify the location corresponding to the location-related data in real space by performing location estimation based on the same three-dimensional data.
[0216] In the present embodiment, the data transmitted from the terminal 2021 is location-related data, but the data transmitted from the terminal 2021 may be data that is not associated with location information. That is, the three-dimensional data or sensor data described in the other embodiments may be transmitted and received via the network 2023 described in the present embodiment.
[0217] Next, different examples of location information indicating a position in a three-dimensional or two-dimensional real space or map space will be described. The location information added to the location-related data may be information indicating a relative position with respect to a feature point in the three-dimensional data. Here, the feature point serving as the reference of the location information is, for example, a feature point encoded as SWLD and notified to the terminal 2021 as three-dimensional data.
[0218] The information indicating the relative position with respect to the feature point may be, for example, represented by a vector from the feature point to the point indicated by the position information, and may be information indicating the direction and distance from the feature point to the point indicated by the position information. Alternatively, the information indicating the relative position with respect to the feature point may be information indicating the amount of displacement on each of the X-axis, Y-axis, and Z-axis from the feature point to the point indicated by the position information. Furthermore, the information indicating the relative position with respect to the feature point may be information indicating the distance from each of three or more feature points to the point indicated by the position information. Note that the relative position may not be the relative position of the point indicated by the position information expressed with each feature point as a reference, but may be the relative position of each feature point expressed with the point indicated by the position information as a reference. An example of the position information based on the relative position with respect to the feature point includes information for identifying the reference feature point and information indicating the relative position of the point indicated by the position information with respect to the feature point. Furthermore, when the information indicating the relative position with respect to the feature point is provided separately from the three-dimensional data, the information indicating the relative position with respect to the feature point may include the coordinate axis used to derive the relative position, information indicating the type of three-dimensional data, and / or information indicating the size per unit amount (such as scale) of the value of the information indicating the relative position.
[0219] Furthermore, the position information may include information indicating a relative position with respect to each of a plurality of feature points. When the position information is expressed as a relative position with respect to a plurality of feature points, the terminal 2021 that attempts to identify a position indicated by the position information in the real space may calculate a candidate point of the position indicated by the position information from the position of the feature point estimated from the sensor data for each feature point, and may determine that a point obtained by averaging the calculated candidate points is the point indicated by the position information. According to this configuration, the influence of an error when estimating the position of the feature point from the sensor data can be reduced, so that the estimation accuracy of the point indicated by the position information in the real space can be improved. Furthermore, when the position information includes information indicating a relative position with respect to a plurality of feature points, even if there is a feature point that cannot be detected due to restrictions such as the type or performance of the sensor provided in the terminal 2021, it is possible to estimate the value of the point indicated by the position information as long as any one of the plurality of feature points can be detected.
[0220] A point that can be identified from sensor data can be used as a feature point. An example of a point that can be identified from sensor data is a point or a point within an area that satisfies a predetermined condition for detecting a feature point, such as the above-mentioned three-dimensional feature amount or the feature amount of visible light data being equal to or greater than a threshold value.
[0221] Also, markers installed in the real space may be used as feature points. In this case, the markers may be detected and their positions specified from data acquired using a sensor such as LiDAR or a camera. For example, the markers are expressed by changes in color or brightness (reflectance), or three-dimensional shapes (such as unevenness). Also, coordinate values indicating the position of the marker, or two-dimensional codes or barcodes generated from the identifiers of the markers may be used.
[0222] Also, a light source that transmits an optical signal may be used as a marker. When a light source of an optical signal is used as a marker, not only information for acquiring a position such as a coordinate value or an identifier, but also other data may be transmitted by the optical signal. For example, the optical signal may include information indicating the content of a service corresponding to the position of the marker, an address such as a URL for acquiring the content, or an identifier of a wireless communication device for receiving the service, and a wireless communication method for connecting to the wireless communication device. By using an optical communication device (light source) as a marker, it becomes easier to transmit data other than information indicating a position, and it becomes possible to dynamically switch the data.
[0223] The terminal 2021 grasps the correspondence between feature points between different data by using, for example, an identifier commonly used between the data, or information or a table indicating the correspondence between feature points between the data. Furthermore, when there is no information indicating the correspondence between feature points, the terminal 2021 may determine that the feature points that are closest when the coordinates of a feature point in one three-dimensional data are converted to a position in the three-dimensional data space of the other are corresponding feature points.
[0224] When using the position information based on the relative positions described above, even between terminals 2021 or services using different three-dimensional data, it is possible to identify or estimate the position indicated by the position information based on common feature points included in or associated with each three-dimensional data. As a result, it is possible to identify or estimate the same position with higher accuracy between terminals 2021 or services using different three-dimensional data.
[0225] Furthermore, even when using map data or three-dimensional data expressed using different coordinate systems, the effect of errors associated with coordinate system conversion can be reduced, making it possible to link services based on more accurate location information.
[0226] Below, an example of a function provided by the data collection server 2024 will be described. The data collection server 2024 may transfer the received location-related data to another data server. When there are multiple data servers, the data collection server 2024 determines to which data server the received location-related data should be transferred, and transfers the location-related data to the data server determined as the transfer destination.
[0227] The data collection server 2024 determines the destination of transfer, for example, based on a determination rule for the destination server that is set in advance in the data collection server 2024. The determination rule for the destination server is set, for example, in a transfer destination table that associates an identifier associated with each terminal 2021 with a destination data server.
[0228] The terminal 2021 adds an identifier associated with the terminal 2021 to the location related data to be transmitted, and transmits the data to the data collection server 2024. The data collection server 2024 identifies a destination data server corresponding to the identifier added to the location related data based on a destination server determination rule using a destination table or the like, and transmits the location related data to the identified data server. The destination server determination rule may be specified by a determination condition using the time or place at which the location related data was acquired. Here, the identifier associated with the above-mentioned transmission source terminal 2021 is, for example, an identifier unique to each terminal 2021, or an identifier indicating a group to which the terminal 2021 belongs.
[0229] In addition, the destination table does not have to directly associate the identifier associated with the terminal of the source with the data server of the destination. For example, the data collection server 2024 holds a management table storing tag information given to each unique identifier of the terminal 2021, and a destination table in which the tag information is associated with the data server of the destination. The data collection server 2024 may determine the data server of the destination based on the tag information using the management table and the destination table. Here, the tag information is, for example, control information for management or control information for providing services given to the type, model number, owner, group to which the terminal 2021 corresponding to the identifier, or other identifiers. In addition, the destination table may use an identifier unique to each sensor instead of the identifier associated with the terminal 2021 of the source. In addition, the determination rule of the destination server may be set from the client device 2026.
[0230] The data collection server 2024 may determine a plurality of data servers as transfer destinations and transfer the received location-related data to the plurality of data servers. With this configuration, for example, when the location-related data is automatically backed up, or when the location-related data needs to be sent to a data server for providing each service in order to use the location-related data in common for different services, the data can be transferred as intended by changing the settings for the data collection server 2024. As a result, compared to the case where the destination of the location-related data is set in each individual terminal 2021, the number of steps required for building and modifying the system can be reduced.
[0231] In response to a transfer request signal received from a data server, the data collection server 2024 may register the data server specified in the transfer request signal as a new transfer destination, and transfer subsequently received location-related data to that data server.
[0232] The data collection server 2024 may store the location-related data received from the terminal 2021 in a recording device, and in response to a transmission request signal received from the terminal 2021 or the data server, may transmit the location-related data specified in the transmission request signal to the requesting terminal 2021 or data server.
[0233] The data collection server 2024 may determine whether or not to provide the location-related data to the requesting data server or terminal 2021, and if it is determined that the location-related data can be provided, may transfer or transmit the location-related data to the requesting data server or terminal 2021.
[0234] When a request for current location-related data is received from client device 2026, even if it is not the timing for terminal 2021 to transmit location-related data, data collection server 2024 may request terminal 2021 to transmit location-related data, and terminal 2021 may transmit the location-related data in response to the transmission request.
[0235] In the above explanation, it is described that the terminal 2021 transmits location information data to the data collection server 2024. However, the data collection server 2024 may be provided with a function necessary for collecting location-related data from the terminal 2021, such as a function for managing the terminal 2021, or a function used when collecting location-related data from the terminal 2021.
[0236] The data collection server 2024 may have a function of transmitting a data request signal to the terminal 2021 to request the transmission of location information data, and collecting location-related data.
[0237] Management information such as an address for communicating with the terminal 2021 from which data is to be collected or an identifier unique to the terminal 2021 is registered in advance in the data collection server 2024. The data collection server 2024 collects location-related data from the terminal 2021 based on the registered management information. The management information may include information such as the type of sensor included in the terminal 2021, the number of sensors included in the terminal 2021, and a communication method supported by the terminal 2021.
[0238] The data collection server 2024 may collect information from the terminal 2021, such as the operating status or current location of the terminal 2021.
[0239] The management information may be registered from the client device 2026, or the terminal 2021 may transmit a registration request to the data collection server 2024 to start the registration process. The data collection server 2024 may have a function of controlling communication with the terminal 2021.
[0240] The communication between the data collection server 2024 and the terminal 2021 may be a dedicated line provided by a service provider such as an MNO (Mobile Network Operator) or an MVNO (Mobile Virtual Network Operator), or a virtual dedicated line configured by a VPN (Virtual Private Network). With this configuration, the communication between the terminal 2021 and the data collection server 2024 can be performed safely.
[0241] The data collection server 2024 may have a function of authenticating the terminal 2021 or a function of encrypting data transmitted and received between the terminal 2021. Here, the authentication process of the terminal 2021 or the encryption process of the data is performed using an identifier unique to the terminal 2021 or an identifier unique to a terminal group including a plurality of terminals 2021, which is shared in advance between the data collection server 2024 and the terminal 2021. This identifier is, for example, an International Mobile Subscriber Identity (IMSI), which is a unique number stored in a Subscriber Identity Module (SIM) card. The identifier used in the authentication process and the identifier used in the data encryption process may be the same or different.
[0242] The authentication or data encryption process between the data collection server 2024 and the terminal 2021 can be provided if both the data collection server 2024 and the terminal 2021 have a function for performing the process, and does not depend on the communication method used by the relay communication device 2022. Therefore, a common authentication or encryption process can be used without considering the communication method used by the terminal 2021, improving the convenience of the user's system construction. However, not depending on the communication method used by the relay communication device 2022 means that it is not necessary to change depending on the communication method. In other words, for the purpose of improving transmission efficiency or ensuring safety, the authentication or data encryption process between the data collection server 2024 and the terminal 2021 may be switched depending on the communication method used by the relay device.
[0243] The data collection server 2024 may provide the client device 2026 with a UI for managing data collection rules such as the type of location-related data to be collected from the terminal 2021 and the schedule for data collection. This allows the user to specify the terminal 2021 from which data is to be collected using the client device 2026, as well as the time and frequency of data collection. The data collection server 2024 may also specify an area on a map from which data is to be collected, and collect location-related data from the terminal 2021 included in that area.
[0244] When managing data collection rules for each terminal 2021, the client device 2026 presents, for example, a list of the terminals 2021 or sensors to be managed on a screen. The user sets the necessity of data collection or a collection schedule for each item in the list.
[0245] When specifying an area on a map from which data is to be collected, the client device 2026 presents, for example, a two-dimensional or three-dimensional map of the area to be managed on a screen. The user selects an area from which data is to be collected on the displayed map. The area selected on the map may be a circular or rectangular area centered on a point specified on the map, or may be a circular or rectangular area that can be specified by a dragging operation. The client device 2026 may also select an area in a preset unit such as a city, an area within a city, a block, or a major road. Instead of specifying an area using a map, an area may be set by inputting numerical values of latitude and longitude, or an area may be selected from a list of candidate areas derived based on input text information. The text information is, for example, the name of a region, a city, or a landmark.
[0246] Furthermore, the user may specify one or more terminals 2021 and set conditions such as within a range of 100 meters around the terminal 2021, so that data collection may be performed while dynamically changing the specified area.
[0247] Also, when the client device 2026 is equipped with a sensor such as a camera, an area on a map may be specified based on the position of the client device 2026 in real space obtained from the sensor data. For example, the client device 2026 may estimate its own position using the sensor data, and specify an area within a predetermined distance from a point on the map corresponding to the estimated position or a distance specified by the user as an area for collecting data. Also, the client device 2026 may specify a sensing area of the sensor, i.e., an area corresponding to the acquired sensor data, as an area for collecting data. Alternatively, the client device 2026 may specify an area based on a position corresponding to the sensor data specified by the user as an area for collecting data. The area on the map or the position corresponding to the sensor data may be estimated by the client device 2026 or the data collection server 2024.
[0248] When designating an area on a map, the data collection server 2024 may identify the terminal 2021 in the designated area by collecting current position information of each terminal 2021, and may request the identified terminal 2021 to transmit position-related data. Alternatively, instead of the data collection server 2024 identifying the terminal 2021 in the area, the data collection server 2024 may transmit information indicating the designated area to the terminal 2021, and the terminal 2021 may determine whether or not it is within the designated area, and transmit the position-related data if it is determined that it is within the designated area.
[0249] The data collection server 2024 transmits data such as a list or a map for providing the above-mentioned UI (User Interface) in an application executed by the client device 2026 to the client device 2026. The data collection server 2024 may transmit not only data such as a list or a map but also an application program to the client device 2026. The above-mentioned UI may be provided as content created in HTML or the like that can be displayed in a browser. Note that some data such as map data may be provided from a server other than the data collection server 2024, such as a map server 2025.
[0250] When the user presses a setting button or performs other input to notify completion of input, the client device 2026 transmits the input information as setting information to the data collection server 2024. The data collection server 2024 transmits a signal to each terminal 2021, based on the setting information received from the client device 2026, requesting location-related data or notifying a collection rule for location-related data, and collects location-related data.
[0251] Next, an example of controlling the operation of the terminal 2021 based on additional information added to three-dimensional or two-dimensional map data will be described.
[0252] In this configuration, object information indicating the position of a power supply unit such as a wireless power supply antenna or a power supply coil buried in a road or parking lot is included in or associated with the three-dimensional data and provided to a terminal 2021, such as a car or a drone.
[0253] The vehicle or drone that has acquired the object information for charging moves the vehicle's own position by autonomous driving so that the position of the charging part, such as a charging antenna or charging coil, equipped on the vehicle faces the area indicated by the object information, and starts charging. In the case of a vehicle or drone that does not have an autonomous driving function, the direction to move or the operation to be performed is presented to the driver or operator using images or audio displayed on the screen. Then, when it is determined that the position of the charging part calculated based on the estimated self-position is within the area indicated by the object information or within a predetermined distance from the area, the image or audio presented is switched to one that stops driving or operation, and charging starts.
[0254] In addition, the object information may not be information indicating the position of the power supply unit, but may be information indicating an area in which a charging efficiency equal to or higher than a predetermined threshold can be obtained when the charging unit is placed in the area. The position of the object information may be represented by a point at the center of the area indicated by the object information, or may be represented by an area or line in a two-dimensional plane, or an area, line, or plane in a three-dimensional space.
[0255] According to this configuration, the position of the power supply antenna, which cannot be grasped by the sensing data of the LiDER or the image captured by the camera, can be grasped, so that the position of the wireless charging antenna equipped in the terminal 2021 such as a car and the wireless power supply antenna buried in the road or the like can be aligned with high accuracy. As a result, the charging speed during wireless charging can be shortened and the charging efficiency can be improved.
[0256] The object information may be an object other than the power supply antenna. For example, the three-dimensional data includes the position of an AP for millimeter wave wireless communication as object information. This allows the terminal 2021 to know the position of the AP in advance, and therefore the terminal 2021 can start communication by directing the beam direction in the direction of the object information. As a result, it is possible to improve communication quality, such as improving the transmission speed, shortening the time until communication starts, and extending the period during which communication is possible.
[0257] The object information may include information indicating a type of object corresponding to the object information. The object information may also include information indicating a process to be performed by the terminal 2021 when the terminal 2021 is included in an area in real space corresponding to the position of the object information in the three-dimensional data, or within a predetermined distance from the area.
[0258] The object information may be provided from a server different from the server providing the three-dimensional data. When the object information is provided separately from the three-dimensional data, object groups in which object information used in the same service is stored may be provided as separate data according to the type of target service or target device.
[0259] The three-dimensional data used in combination with the object information may be point cloud data of the WLD or feature point data of the SWLD.
[0260] (Embodiment 6) The octree representation and the voxel scan order will be described below. The volume is converted (octreeized) into an octree structure and then encoded. The octree structure is composed of nodes and leaves. Each node has eight nodes or leaves, and each leaf has voxel (VXL) information. FIG. 22 is a diagram showing an example of the structure of a volume including a plurality of voxels. FIG. 23 is a diagram showing an example of the volume shown in FIG. 22 converted into an octree structure. Here, among the leaves shown in FIG. 23, leaves 1, 2, and 3 respectively represent voxels VXL1, VXL2, and VXL3 shown in FIG. 22, and represent a VXL including a point cloud (hereinafter, effective VXL).
[0261] An octree is represented by a binary sequence of, for example, 0 and 1. For example, if a node or a valid VXL is set to value 1 and the rest to value 0, then the binary sequence shown in FIG. 23 is assigned to each node and leaf. Then, this binary sequence is scanned according to the scan order of breadth-first or depth-first. For example, when breadth-first scanning is performed, the binary sequence shown in FIG. 24A is obtained. When depth-first scanning is performed, the binary sequence shown in FIG. 24B is obtained. The binary sequence obtained by this scan is coded by entropy coding to reduce the amount of information.
[0262] Next, the depth information in the octree representation will be explained. The depth in the octree representation is used to control the granularity of the point cloud information contained in the volume to be retained. If the depth is set large, the point cloud information can be reproduced to a finer level, but the amount of data required to represent the nodes and leaves increases. Conversely, if the depth is set small, the amount of data decreases, but since multiple point cloud information with different positions and colors is considered to be in the same position and with the same color, the information contained in the original point cloud information will be lost.
[0263] For example, Fig. 25 is a diagram showing an example in which the octree with depth=2 shown in Fig. 23 is expressed as an octree with depth=1. The octree shown in Fig. 25 has a smaller amount of data than the octree shown in Fig. 23. In other words, the octree shown in Fig. 25 has a smaller number of bits after binary string conversion than the octree shown in Fig. 25. Here, leaf 1 and leaf 2 shown in Fig. 23 are expressed as leaf 1 shown in Fig. 24. In other words, the information that leaf 1 and leaf 2 shown in Fig. 23 were in different positions is lost.
[0264] Fig. 26 is a diagram showing a volume corresponding to the octree shown in Fig. 25. VXL1 and VXL2 shown in Fig. 22 correspond to VXL12 shown in Fig. 26. In this case, the three-dimensional data encoding device generates color information of VXL12 shown in Fig. 26 from color information of VXL1 and VXL2 shown in Fig. 22. For example, the three-dimensional data encoding device calculates an average value, a median value, a weighted average value, or the like of the color information of VXL1 and VXL2 as the color information of VXL12. In this way, the three-dimensional data encoding device may control the reduction of the amount of data by changing the depth of the octree.
[0265] The three-dimensional data encoding device may set the depth information of the octree in any unit of world, space, or volume. In addition, in this case, the three-dimensional data encoding device may add the depth information to the header information of the world, the header information of the space, or the header information of the volume. Also, the same value may be used as the depth information for all worlds, spaces, and volumes of different times. In this case, the three-dimensional data encoding device may add the depth information to the header information that manages the worlds of all times.
[0266] (Embodiment 7) The information of the 3D point cloud includes position information (geometry) and attribute information (attribute). The position information includes coordinates (x-coordinate, y-coordinate, z-coordinate) based on a certain point. When encoding the position information, instead of directly encoding the coordinates of each 3D point, a method is used in which the position of each 3D point is expressed in an octree representation and the octree information is encoded to reduce the amount of code.
[0267] On the other hand, the attribute information includes information indicating color information (RGB, YUV, etc.) of each three-dimensional point, reflectance, normal vector, etc. For example, the three-dimensional data encoding device can encode the attribute information using an encoding method different from that for the position information.
[0268] In this embodiment, a method for encoding attribute information will be described. Note that in this embodiment, an integer value is used as the value of attribute information. For example, when each color component of color information RGB or YUV has 8-bit precision, each color component takes an integer value of 0 to 255. When the reflectance value has 10-bit precision, the reflectance value takes an integer value of 0 to 1023. Note that, when the bit precision of attribute information is decimal precision, the three-dimensional data encoding device may multiply the value by a scale value and then round the attribute information to an integer value so that the value becomes an integer value. Note that the three-dimensional data encoding device may add this scale value to the header of the bit stream, etc.
[0269] As a method of encoding attribute information of a three-dimensional point, it is possible to calculate a predicted value of the attribute information of the three-dimensional point, and encode the difference (prediction residual) between the value of the original attribute information and the predicted value. For example, when the value of the attribute information of a three-dimensional point p is Ap and the predicted value is Pp, the three-dimensional data encoding device encodes the absolute difference Diffp=|Ap-Pp|. In this case, if the predicted value Pp can be generated with high accuracy, the value of the absolute difference Diffp becomes small. Therefore, for example, the amount of code can be reduced by entropy encoding the absolute difference Diffp using an encoding table in which the smaller the value, the smaller the number of generated bits.
[0270] A method for generating a predicted value of attribute information may be to use attribute information of a reference 3D point, which is another 3D point around the target 3D point to be encoded. Here, the reference 3D point is a 3D point within a predetermined distance range from the target 3D point. For example, when a target 3D point p=(x1,y1,z1) and a 3D point q=(x2,y2,z2) exist, the 3D data encoding device calculates the Euclidean distance d(p,q) between the 3D points p and q shown in (Equation A1).
[0271]
number
[0272] When the Euclidean distance d(p, q) is smaller than a predetermined threshold THd, the three-dimensional data encoding device determines that the position of the three-dimensional point q is close to the position of the target three-dimensional point p, and determines that the value of the attribute information of the three-dimensional point q is used to generate a predicted value of the attribute information of the target three-dimensional point p. Note that the distance calculation method may be another method, for example, Mahalanobis distance, etc. may be used. The three-dimensional data encoding device may also determine that a three-dimensional point outside a predetermined distance range from the target three-dimensional point is not used in the prediction process. For example, when a three-dimensional point r exists and the distance d(p, r) between the target three-dimensional point p and the three-dimensional point r is equal to or greater than the threshold THd, the three-dimensional data encoding device may determine that the three-dimensional point r is not used for prediction. Note that the three-dimensional data encoding device may add information indicating the threshold THd to a header of a bit stream, etc.
[0273] 27 is a diagram showing an example of a three-dimensional point. In this example, the distance d(p, q) between the target three-dimensional point p and the three-dimensional point q is smaller than the threshold value THd. Therefore, the three-dimensional data encoding device determines that the three-dimensional point q is a reference three-dimensional point of the target three-dimensional point p, and determines that the value of the attribute information Aq of the three-dimensional point q is used to generate the predicted value Pp of the attribute information Ap of the target three-dimensional point p.
[0274] On the other hand, the distance d(p, r) between the target 3D point p and the 3D point r is equal to or greater than the threshold THd. Therefore, the 3D data encoding device determines that the 3D point r is not a reference 3D point of the target 3D point p, and determines not to use the value of the attribute information Ar of the 3D point r to generate the predicted value Pp of the attribute information Ap of the target 3D point p.
[0275] Furthermore, when the three-dimensional data encoding device encodes attribute information of a target three-dimensional point using a predicted value, it uses a three-dimensional point whose attribute information has already been encoded and decoded as a reference three-dimensional point. Similarly, when the three-dimensional data decoding device decodes attribute information of a target three-dimensional point to be decoded using a predicted value, it uses a three-dimensional point whose attribute information has already been decoded as a reference three-dimensional point. This allows the same predicted value to be generated at the time of encoding and decoding, so that the bit stream of the three-dimensional point generated by encoding can be correctly decoded on the decoding side.
[0276] In addition, when encoding attribute information of 3D points, it is possible to classify each 3D point into multiple layers using the position information of the 3D point and then encode it. Here, each classified layer is called LoD (Level of Detail). A method of generating LoD will be described with reference to FIG. 28.
[0277] First, the three-dimensional data encoding device selects an initial point a0 and assigns it to LoD0. Next, the three-dimensional data encoding device extracts a1 whose distance from point a0 is greater than the threshold Thres_LoD[0] of LoD0 and assigns it to LoD0. Next, the three-dimensional data encoding device extracts a2 whose distance from point a1 is greater than the threshold Thres_LoD[0] of LoD0 and assigns it to LoD0. In this way, the three-dimensional data encoding device configures LoD0 so that the distance between each point in LoD0 is greater than the threshold Thres_LoD[0].
[0278] Next, the three-dimensional data encoding device selects point b0, which has not yet been assigned a LoD, and assigns it to LoD1. Next, the three-dimensional data encoding device extracts point b1, whose distance from point b0 is greater than the threshold Thres_LoD[1] of LoD1 and whose LoD has not been assigned, and assigns it to LoD1. Next, the three-dimensional data encoding device extracts point b2, whose distance from point b1 is greater than the threshold Thres_LoD[1] of LoD1 and whose LoD has not been assigned, and assigns it to LoD1. In this way, the three-dimensional data encoding device configures LoD1 so that the distance between each point in LoD1 is greater than the threshold Thres_LoD[1].
[0279] Next, the three-dimensional data encoding device selects point c0 to which LoD is not yet assigned, and assigns it to LoD2. Next, the three-dimensional data encoding device extracts point c1 whose distance from point c0 is greater than the threshold Thres_LoD[2] of LoD2 and whose LoD is not assigned, and assigns it to LoD2. Next, the three-dimensional data encoding device extracts point c2 whose distance from point c1 is greater than the threshold Thres_LoD[2] of LoD2 and whose LoD is not assigned, and assigns it to LoD2. In this way, the three-dimensional data encoding device configures LoD2 so that the distance between each point in LoD2 is greater than the threshold Thres_LoD[2]. For example, as shown in FIG. 29, the thresholds Thres_LoD[0], Thres_LoD[1], and Thres_LoD[2] of each LoD are set.
[0280] Furthermore, the three-dimensional data encoding device may add information indicating the threshold value of each LoD to the header of the bit stream, etc. For example, in the case of the example shown in Fig. 29, the three-dimensional data encoding device may add threshold values Thres_LoD[0], Thres_LoD[1], and Thres_LoD[2] to the header.
[0281] Furthermore, the three-dimensional data encoding device may assign all three-dimensional points to which LoD is not assigned to the lowest layer of the LoD. In this case, the three-dimensional data encoding device can reduce the amount of code of the header by not adding the threshold of the lowest layer of the LoD to the header. For example, in the example shown in FIG. 29, the three-dimensional data encoding device adds thresholds Thres_LoD[0] and Thres_LoD[1] to the header, and does not add Thres_LoD[2] to the header. In this case, the three-dimensional data decoding device may estimate the value of Thres_LoD[2] to be 0. Furthermore, the three-dimensional data encoding device may add the number of layers of the LoD to the header. This allows the three-dimensional data decoding device to determine the LoD of the lowest layer using the number of layers of the LoD.
[0282] In addition, by setting the threshold value of each LoD layer larger for higher layers as shown in Fig. 29, the higher layers (layers closer to LoD0) become sparser with 3D points farther apart, and the lower layers become denser with 3D points closer together. In the example shown in Fig. 29, LoD0 is the top layer.
[0283] In addition, the method of selecting the initial 3D point when setting each LoD may depend on the encoding order when encoding the position information. For example, the 3D data encoding device selects the 3D point that was encoded first when encoding the position information as the initial point a0 of LoD0, and configures LoD0 by selecting points a1 and a2 with the initial point a0 as the base point. Then, the 3D data encoding device may select the 3D point whose position information is encoded earliest among the 3D points that do not belong to LoD0 as the initial point b0 of LoD1. That is, the 3D data encoding device may select the 3D point whose position information is encoded earliest among the 3D points that do not belong to the upper layer (LoD0 to LoDn-1) of LoDn as the initial point n0 of LoDn. In this way, the 3D data decoding device can configure the same LoD as that at the time of encoding by using the same initial point selection method at the time of decoding, and therefore can appropriately decode the bit stream. Specifically, the 3D data decoding device selects the 3D point whose position information is decoded earliest among the 3D points that do not belong to the upper layer of LoDn as the initial point n0 of LoDn.
[0284] Hereinafter, a method of generating a predicted value of attribute information of a three-dimensional point using LoD information will be described. For example, when encoding three-dimensional points included in LoD0 in order, a three-dimensional data encoding device generates a target three-dimensional point included in LoD1 using encoded and decoded (hereinafter, simply referred to as "encoded") attribute information included in LoD0 and LoD1. In this way, the three-dimensional data encoding device generates a predicted value of attribute information of a three-dimensional point included in LoDn using encoded attribute information included in LoDn' (n'<=n). In other words, the three-dimensional data encoding device does not use attribute information of a three-dimensional point included in a lower layer of LoDn to calculate a predicted value of attribute information of a three-dimensional point included in LoDn.
[0285] For example, the three-dimensional data encoding device generates a predicted value of attribute information of a three-dimensional point by calculating an average of attribute values of N or less three-dimensional points among the encoded three-dimensional points around the target three-dimensional point to be encoded. The three-dimensional data encoding device may also add the value of N to the header of the bit stream or the like. The three-dimensional data encoding device may also change the value of N for each three-dimensional point and add the value of N to each three-dimensional point. This allows an appropriate N to be selected for each three-dimensional point, thereby improving the accuracy of the predicted value. Therefore, the prediction residual can be reduced. The three-dimensional data encoding device may also add the value of N to the header of the bit stream and fix the value of N in the bit stream. This eliminates the need to encode or decode the value of N for each three-dimensional point, thereby reducing the amount of processing. The three-dimensional data encoding device may also encode the value of N separately for each LoD. This allows an appropriate N to be selected for each LoD, thereby improving the encoding efficiency.
[0286] Alternatively, the three-dimensional data encoding device may calculate a predicted value of attribute information of a three-dimensional point by a weighted average value of attribute information of N surrounding encoded three-dimensional points. For example, the three-dimensional data encoding device calculates the weight using distance information between the target three-dimensional point and each of the N surrounding three-dimensional points.
[0287] When the three-dimensional data encoding device encodes the value of N separately for each LoD, for example, the higher the LoD layer, the larger the value of N is set, and the lower the layer, the smaller the value of N is set. Since the distance between 3D points belonging to the higher LoD layers is greater, it may be possible to improve prediction accuracy by setting the value of N to a large value and selecting and averaging multiple surrounding 3D points. Also, since the distance between 3D points belonging to the lower LoD layers is closer, it is possible to perform efficient prediction by setting the value of N to a small value and reducing the amount of averaging processing.
[0288] Fig. 30 is a diagram showing an example of attribute information used for a predicted value. As described above, a predicted value of a point P included in LoDN is generated using encoded surrounding points P' included in LoDN' (N'<=N). Here, the surrounding points P' are selected based on the distance from the point P. For example, a predicted value of attribute information of a point b2 shown in Fig. 30 is generated using attribute information of points a0, a1, a2, b0, and b1.
[0289] The surrounding points selected change depending on the value of N mentioned above. For example, when N=5, a0, a1, a2, b0, and b1 are selected as surrounding points of point b2. When N=4, points a0, a1, a2, and b1 are selected based on distance information.
[0290] The predicted value is calculated by a distance-dependent weighted average. For example, in the example shown in FIG. 30, the predicted value a2p of the point a2 is calculated by a weighted average of the attribute information of the points a0 and a1, as shown in (Equation A2) and (Equation A3). i is the value of the attribute information of point ai.
[0291]
number
[0292] In addition, the predicted value b2p of the point b2 is calculated by the weighted average of the attribute information of the points a0, a1, a2, b0, and b1, as shown in (Equation A4) to (Equation A6). i is the value of the attribute information of point bi.
[0293]
number
[0294] Furthermore, the three-dimensional data encoding device may calculate a difference value (prediction residual) between the value of the attribute information of the three-dimensional point and a predicted value generated from the surrounding points, and quantize the calculated prediction residual. For example, the three-dimensional data encoding device performs quantization by dividing the prediction residual by a quantization scale (also called a quantization step). In this case, the smaller the quantization scale, the smaller the error (quantization error) that may occur due to quantization. Conversely, the larger the quantization scale, the larger the quantization error.
[0295] The three-dimensional data encoding device may change the quantization scale used for each LoD. For example, the three-dimensional data encoding device may reduce the quantization scale for higher layers and increase the quantization scale for lower layers. Since the value of the attribute information of the three-dimensional points belonging to the higher layers may be used as a predicted value of the attribute information of the three-dimensional points belonging to the lower layers, the quantization scale for the higher layers may be reduced to suppress the quantization error that may occur in the higher layers, and the accuracy of the predicted value may be increased, thereby improving the encoding efficiency. The three-dimensional data encoding device may add the quantization scale used for each LoD to a header or the like. This allows the three-dimensional data decoding device to correctly decode the quantization scale, and therefore to appropriately decode the bit stream.
[0296] Furthermore, the three-dimensional data encoding device may convert a signed integer value (signed quantization value), which is a prediction residual after quantization, into an unsigned integer value (unsigned quantization value). This makes it unnecessary to consider the occurrence of negative integers when entropy encoding the prediction residual. Note that the three-dimensional data encoding device does not necessarily need to convert a signed integer value into an unsigned integer value, and for example, the sign bit may be separately entropy encoded.
[0297] The prediction residual is calculated by subtracting a predicted value from an original value. For example, the prediction residual a2r of point a2 is calculated by subtracting a predicted value a2p of point a2 from the value A2 of the attribute information of point a2 as shown in (Equation A7). The prediction residual b2r of point b2 is calculated by subtracting a predicted value b2p of point b2 from the value B2 of the attribute information of point b2 as shown in (Equation A8).
[0298] a2r=A2-a2p (Eq. A7) b2r=B2-b2p (Eq. A8)
[0299] Furthermore, the prediction residual is quantized by dividing it by QS (Quantization Step). For example, the quantized value a2q of point a2 is calculated by (Equation A9). The quantized value b2q of point b2 is calculated by (Equation A10). Here, QS_LoD0 is the QS for LoD0, and QS_LoD1 is the QS for LoD1. That is, the QS may be changed according to the LoD.
[0300] a2q=a2r / QS_LoD0 (Equation A9) b2q=b2r / QS_LoD1 (Formula A10)
[0301] Furthermore, the three-dimensional data encoding device converts the signed integer value, which is the quantized value, into an unsigned integer value as follows: If the signed integer value a2q is smaller than 0, the three-dimensional data encoding device sets the unsigned integer value a2u to -1-(2×a2q). If the signed integer value a2q is 0 or greater, the three-dimensional data encoding device sets the unsigned integer value a2u to 2×a2q.
[0302] Similarly, the three-dimensional data encoding device sets the unsigned integer value b2u to -1-(2×b2q) when the signed integer value b2q is less than 0. The three-dimensional data encoding device sets the unsigned integer value b2u to 2×b2q when the signed integer value b2q is 0 or greater.
[0303] Furthermore, the three-dimensional data encoding device may encode the prediction residuals (unsigned integer values) after quantization by entropy encoding. For example, the unsigned integer values may be binarized and then binary arithmetic encoding may be applied.
[0304] In this case, the three-dimensional data encoding device may switch the binarization method according to the value of the prediction residual. For example, when the prediction residual pu is smaller than the threshold R_TH, the three-dimensional data encoding device binarizes the prediction residual pu with a fixed number of bits required to express the threshold R_TH. When the prediction residual pu is equal to or larger than the threshold R_TH, the three-dimensional data encoding device binarizes the binarized data of the threshold R_TH and the value of (pu-R_TH) using Exponential-Golomb or the like.
[0305] For example, the three-dimensional data encoding device binarizes the prediction residual pu in 6 bits when the threshold value R_TH is 63 and the prediction residual pu is smaller than 63. Furthermore, when the prediction residual pu is 63 or greater, the three-dimensional data encoding device performs arithmetic encoding by binarizing the binary data of the threshold value R_TH (111111) and (pu-63) using the exponential Golomb algorithm.
[0306] In a more specific example, when the prediction residual pu is 32, the three-dimensional data encoding device generates 6-bit binary data (100000) and arithmetically codes this bit string. When the prediction residual pu is 66, the three-dimensional data encoding device generates binary data (111111) of the threshold R_TH and a bit string (00100) that expresses the value 3 (66-63) in Exponential Golomb notation and arithmetically codes this bit string (111111+00100).
[0307] In this way, the three-dimensional data encoding device can perform encoding while suppressing a sudden increase in the number of binarization bits when the prediction residual becomes large, by switching the binarization method according to the size of the prediction residual. Note that the three-dimensional data encoding device may add the threshold value R_TH to the header of the bit stream, etc.
[0308] For example, when encoding is performed at a high bit rate, that is, when the quantization scale is small, the quantization error is small and the prediction accuracy is high, and as a result, the prediction residual may not be large. Therefore, in this case, the three-dimensional data encoding device sets the threshold value R_TH to a large value. This reduces the possibility of encoding the binarized data of the threshold value R_TH, and improves the encoding efficiency. Conversely, when encoding is performed at a low bit rate, that is, when the quantization scale is large, the quantization error is large and the prediction accuracy is poor, and as a result, the prediction residual may be large. Therefore, in this case, the three-dimensional data encoding device sets the threshold value R_TH to a small value. This makes it possible to prevent a sudden increase in the bit length of the binarized data.
[0309] Also, the three-dimensional data encoding device may switch the threshold R_TH for each LoD and add the threshold R_TH for each LoD to a header or the like. That is, the three-dimensional data encoding device may switch the binarization method for each LoD. For example, since the distance between three-dimensional points is far in the upper layer, the prediction accuracy is poor and the prediction residual may be large as a result. Therefore, the three-dimensional data encoding device prevents a sudden increase in the bit length of the binarized data by setting the threshold R_TH small for the upper layer. Also, since the distance between three-dimensional points is close in the lower layer, the prediction accuracy is high and the prediction residual may be small as a result. Therefore, the three-dimensional data encoding device improves the encoding efficiency by setting the threshold R_TH large for the layer.
[0310] Fig. 31 is a diagram showing an example of exponential Golomb code, and shows the relationship between values (multiple values) before binarization and bits (codes) after binarization. Note that 0 and 1 shown in Fig. 31 may be inverted.
[0311] Furthermore, the three-dimensional data encoding device applies arithmetic coding to the binary data of the prediction residual. This can improve the encoding efficiency. When applying arithmetic coding, the tendency of the occurrence probability of 0 and 1 for each bit may be different between an n-bit code, which is a portion of the binary data binarized with n bits, and a remaining code, which is a portion binarized using the exponential Golomb algorithm. Therefore, the three-dimensional data encoding device may switch the application method of arithmetic coding between the n-bit code and the remaining code.
[0312] For example, the three-dimensional data encoding device performs arithmetic coding for an n-bit code using a different coding table (probability table) for each bit. In this case, the three-dimensional data encoding device may change the number of coding tables used for each bit. For example, the three-dimensional data encoding device performs arithmetic coding for the first bit b0 of an n-bit code using one coding table. The three-dimensional data encoding device also uses two coding tables for the next bit b1. The three-dimensional data encoding device also switches the coding table used for the arithmetic coding of bit b1 according to the value of b0 (0 or 1). Similarly, the three-dimensional data encoding device also uses four coding tables for the next bit b2. The three-dimensional data encoding device also switches the coding table used for the arithmetic coding of bit b2 according to the values of b0 and b1 (0 to 3).
[0313] In this way, the three-dimensional data encoding device performs arithmetic encoding on each bit bn-1 of the n-bit code. n-1 The three-dimensional data encoding device uses coding tables. Also, the three-dimensional data encoding device switches the coding table to be used depending on the value (occurrence pattern) of the bit before bn-1. This allows the three-dimensional data encoding device to use an appropriate coding table for each bit, thereby improving the coding efficiency.
[0314] Note that the three-dimensional data encoding device may reduce the number of encoding tables used for each bit. For example, when arithmetic-encoding each bit bn-1, the three-dimensional data encoding device may switch between two encoding tables according to the values (occurrence patterns) of the m bits (m < n-1) before bn-1. This can improve the encoding efficiency while suppressing the number of encoding tables used for each bit. Note that the three-dimensional data encoding device may update the occurrence probabilities of 0 and 1 in each encoding table according to the value of the actually generated binarized data. Also, the three-dimensional data encoding device may fix the occurrence probabilities of 0 and 1 in the encoding tables of some bits. This can suppress the number of updates of the occurrence probabilities and thus reduce the processing amount. m For example, when the n-bit code is b0b1b2…bn-1, the encoding table for b0 is one (CTb0). The encoding table for b1 is two (CTb10, CTb11). Also, the encoding table to be used is switched according to the value (0 to 1) of b0. The encoding table for b2 is four (CTb20, CTb21, CTb22, CTb23). Also, the encoding table to be used is switched according to the values (0 to 3) of b0 and b1. The encoding table for bn-1 is two
[0315] (CTbn0, CTbn1, …, CTbn(2 n-1 -1)). Also, the encoding table to be used is switched according to the value (0 to 2 n-1 -1) of b0b1…bn-2. n-1 Note that the three-dimensional data encoding device may apply m-ary arithmetic encoding (m = 2
[0316] n n n n ) that sets values from 0 to 2
[0317] Fig. 32 is a diagram for explaining a process in the case where the remaining code is an exponential Golomb code, for example. The remaining code, which is a portion binarized using the exponential Golomb code, includes a prefix part and a suffix part as shown in Fig. 32. For example, the three-dimensional data encoding device switches the encoding table between the prefix part and the suffix part. That is, the three-dimensional data encoding device arithmetically encodes each bit included in the prefix part using the encoding table for the prefix, and arithmetically encodes each bit included in the suffix part using the encoding table for the suffix.
[0318] The three-dimensional data encoding device may update the occurrence probability of 0 and 1 in each encoding table according to the value of the binary data that has actually occurred. Alternatively, the three-dimensional data encoding device may fix the occurrence probability of 0 and 1 in one of the encoding tables. This reduces the number of updates to the occurrence probability, thereby reducing the amount of processing. For example, the three-dimensional data encoding device may update the occurrence probability for the prefix part and fix the occurrence probability for the suffix part.
[0319] Furthermore, the three-dimensional data encoding device decodes the prediction residual after quantization by inverse quantization and reconstruction, and uses the decoded value, which is the decoded prediction residual, for prediction of the three-dimensional point to be encoded and thereafter. Specifically, the three-dimensional data encoding device calculates an inverse quantization value by multiplying the prediction residual after quantization (quantization value) by the quantization scale, and obtains a decoded value (reconstruction value) by adding the inverse quantization value and the prediction value.
[0320] For example, the inverse quantization value a2iq of point a2 is calculated by (Equation A11) using the quantization value a2q of point a2. The inverse quantization value b2iq of point b2 is calculated by (Equation A12) using the quantization value b2q of point b2. Here, QS_LoD0 is the QS for LoD0, and QS_LoD1 is the QS for LoD1. That is, the QS may be changed according to the LoD.
[0321] a2iq=a2q×QS_LoD0 (Formula A11) b2iq=b2q×QS_LoD1 (Formula A12)
[0322] For example, the decoded value a2rec of point a2 is calculated by adding the predicted value a2p of point a2 to the inverse quantized value a2iq of point a2 as shown in (Equation A13). The decoded value b2rec of point b2 is calculated by adding the predicted value b2p of point b2 to the inverse quantized value b2iq of point b2 as shown in (Equation A14).
[0323] a2rec=a2iq+a2p (formula A13) b2rec=b2iq+b2p (formula A14)
[0324] An example of the syntax of a bitstream according to this embodiment will be described below. Fig. 33 is a diagram showing an example of the syntax of an attribute header (attribute_header) according to this embodiment. The attribute header is header information of attribute information. As shown in Fig. 33, the attribute header includes hierarchical number information (NumLoD), three-dimensional point number information (NumOfPoint[i]), hierarchical threshold (Thres_Lod[i]), surrounding point number information (NumNeighorPoint[i]), prediction threshold (THd[i]), quantization scale (QS[i]), and binarization threshold (R_TH[i]).
[0325] The number of layers information (NumLoD) indicates the number of layers of the LoD to be used.
[0326] The three-dimensional point number information (NumOfPoint[i]) indicates the number of three-dimensional points belonging to layer i. The three-dimensional data encoding device may add three-dimensional point total number information (AllNumOfPoint) indicating the total number of three-dimensional points to another header. In this case, the three-dimensional data encoding device does not need to add NumOfPoint[NumLoD-1] indicating the number of three-dimensional points belonging to the lowest layer to the header. In this case, the three-dimensional data decoding device can calculate NumOfPoint[NumLoD-1] by (Equation A15). This allows the amount of code in the header to be reduced.
[0327]
Number
[0328] The hierarchical threshold (Thres_Lod[i]) is the threshold used for the setting of layer i. The three-dimensional data encoding device and the three-dimensional data decoding device configure LoDi such that the distance between each point in LoDi is greater than the threshold Thres_LoD[i]. Also, the three-dimensional data encoding device may not add the value of Thres_Lod[NumLoD-1] (the bottom layer) to the header. In this case, the three-dimensional data decoding device estimates the value of Thres_Lod[NumLoD-1] as 0. Thereby, the amount of code of the header can be reduced.
[0329] The number of surrounding points information (NumNeighorPoint[i]) indicates the upper limit value of the number of surrounding points used for generating the predicted value of the three-dimensional points belonging to layer i. When the number of surrounding points M is less than NumNeighorPoint[i] (M < NumNeighorPoint[i]), the three-dimensional data encoding device may calculate the predicted value using M surrounding points. Also, when the three-dimensional data encoding device does not need to divide the value of NumNeighorPoint[i] for each LoD, it may add one piece of surrounding points information (NumNeighorPoint) used for all LoDs to the header.
[0330] The prediction threshold (THd[i]) indicates the upper limit value of the distance between the surrounding three-dimensional points and the target three-dimensional point used for predicting the target three-dimensional point to be encoded or decoded at layer i. The three-dimensional data encoding device and the three-dimensional data decoding device do not use the three-dimensional points whose distance from the target three-dimensional point is farther than THd[i] for prediction. Note that when the three-dimensional data encoding device does not need to divide the value of THd[i] for each LoD, it may add one prediction threshold (THd) used for all LoDs to the header.
[0331] The quantization scale (QS[i]) indicates the quantization scale used for quantization and inverse quantization of layer i.
[0332] The binarization threshold (R_TH[i]) is a threshold for switching the binarization method of the prediction residual of a 3D point belonging to layer i. For example, when the prediction residual is smaller than the threshold R_TH, the 3D data encoding device binarizes the prediction residual pu with a fixed number of bits, and when the prediction residual is equal to or larger than the threshold R_TH, the binarized data of the threshold R_TH and the value (pu-R_TH) are binarized using the exponential Golomb algorithm. If it is not necessary to switch the value of R_TH[i] for each LoD, the 3D data encoding device may add one binarization threshold (R_TH) used for all LoDs to the header.
[0333] Note that R_TH[i] may be the maximum value that can be expressed in n bits. For example, R_TH is 63 in 6 bits, and R_TH is 255 in 8 bits. The three-dimensional data encoding device may also encode the number of bits instead of encoding the maximum value that can be expressed in n bits as the binarization threshold. For example, the three-dimensional data encoding device may add a value of 6 to the header when R_TH[i]=63, and a value of 8 to the header when R_TH[i]=255. The three-dimensional data encoding device may also define a minimum value (minimum number of bits) of the number of bits that represents R_TH[i], and add a relative number of bits from the minimum value to the header. For example, the three-dimensional data encoding device may add a value of 0 to the header when R_TH[i]=63 and the minimum number of bits is 6, and add a value of 2 to the header when R_TH[i]=255 and the minimum number of bits is 6.
[0334] The three-dimensional data encoding device may also entropy-encode at least one of NumLod, Thres_Lod[i], NumNeighborPoint[i], THd[i], QS[i], and R_TH[i] and add the result to the header. For example, the three-dimensional data encoding device may binarize each value and arithmetically encode it. The three-dimensional data encoding device may also encode each value in a fixed length to reduce the amount of processing.
[0335] Furthermore, the three-dimensional data encoding device may not add at least one of NumLod, Thres_Lod[i], NumNeighborPoint[i], THd[i], QS[i], and R_TH[i] to the header. For example, at least one of these values may be specified by a profile or level of a standard, etc. This allows the amount of bits in the header to be reduced.
[0336] Fig. 34 is a diagram showing an example of the syntax of attribute data (attribute_data) according to this embodiment. This attribute data includes encoded data of attribute information of a plurality of three-dimensional points. As shown in Fig. 34, the attribute data includes an n-bit code and a remaining code.
[0337] An n-bit code is the coded data of the prediction residual of the attribute information value or a part of it. The bit length of the n-bit code depends on the value of R_TH[i]. For example, when the value indicated by R_TH[i] is 63, the n-bit code is 6 bits, and when the value indicated by R_TH[i] is 255, the n-bit code is 8 bits.
[0338] The remaining code is the coded data of the prediction residual of the attribute information value that is coded by exponential Golomb coding. This remaining code is coded or decoded when the n-bit code is the same as R_TH[i]. In addition, the three-dimensional data decoding device adds the value of the n-bit code and the value of the remaining code to decode the prediction residual. Note that if the n-bit code is not the same value as R_TH[i], the remaining code does not need to be coded or decoded.
[0339] The flow of processing in the three-dimensional data encoding device will be described below. Fig. 35 is a flowchart of three-dimensional data encoding processing by the three-dimensional data encoding device.
[0340] First, the three-dimensional data encoding device encodes position information (geometry) (S3001). For example, the three-dimensional data is encoded using an octree representation.
[0341] When the position of the three-dimensional point is changed by quantization or the like after encoding the position information, the three-dimensional data encoding device reallocates the attribute information of the original three-dimensional point to the changed three-dimensional point (S3002). For example, the three-dimensional data encoding device performs reallocation by interpolating the value of the attribute information according to the amount of change in the position. For example, the three-dimensional data encoding device detects N three-dimensional points before the change that are close to the changed three-dimensional position, and calculates a weighted average of the attribute information values of the N three-dimensional points. For example, the three-dimensional data encoding device determines a weight in the weighted average based on the distance from the changed three-dimensional position to each of the N three-dimensional points. Then, the three-dimensional data encoding device determines the value obtained by the weighted average as the value of the attribute information of the changed three-dimensional point. In addition, when two or more three-dimensional points are changed to the same three-dimensional position by quantization or the like, the three-dimensional data encoding device may assign the average value of the attribute information of the two or more three-dimensional points before the change as the value of the attribute information of the changed three-dimensional point.
[0342] Next, the three-dimensional data encoding device encodes the reallocated attribute information (Attribute) (S3003). For example, when encoding multiple types of attribute information, the three-dimensional data encoding device may encode the multiple types of attribute information in order. For example, when encoding color and reflectance as attribute information, the three-dimensional data encoding device may generate a bit stream in which the encoding result of reflectance is added after the encoding result of color. Note that the order of the encoding results of the multiple attribute information added to the bit stream is not limited to this order and may be any order.
[0343] Furthermore, the three-dimensional data encoding device may add information indicating the start location of the encoded data of each piece of attribute information in the bit stream to a header or the like. This allows the three-dimensional data decoding device to selectively decode attribute information that needs to be decoded, and therefore omits the decoding process of attribute information that does not need to be decoded. This reduces the amount of processing by the three-dimensional data decoding device. Furthermore, the three-dimensional data encoding device may encode multiple types of attribute information in parallel and integrate the encoding results into one bit stream. This allows the three-dimensional data encoding device to encode multiple types of attribute information at high speed.
[0344] 36 is a flowchart of the attribute information encoding process (S3003). First, the three-dimensional data encoding device sets the LoD (S3011). That is, the three-dimensional data encoding device assigns each three-dimensional point to one of a plurality of LoDs.
[0345] Next, the three-dimensional data encoding device starts a loop for each LoD (S3012). That is, the three-dimensional data encoding device repeats the process of steps S3013 to S3021 for each LoD.
[0346] Next, the three-dimensional data encoding device starts a loop for each three-dimensional point (S3013). That is, the three-dimensional data encoding device repeatedly performs the processes of steps S3014 to S3020 for each three-dimensional point.
[0347] First, the three-dimensional data encoding device searches for a plurality of surrounding points, which are three-dimensional points existing around the target three-dimensional point to be processed, to be used in calculating a predicted value of the target three-dimensional point (S3014). Next, the three-dimensional data encoding device calculates a weighted average of the values of attribute information of the plurality of surrounding points, and sets the obtained value as the predicted value P (S3015). Next, the three-dimensional data encoding device calculates a prediction residual, which is the difference between the attribute information of the target three-dimensional point and the predicted value (S3016). Next, the three-dimensional data encoding device calculates a quantized value by quantizing the prediction residual (S3017). Next, the three-dimensional data encoding device arithmetically encodes the quantized value (S3018).
[0348] The three-dimensional data encoding device also calculates an inverse quantized value by inverse quantizing the quantized value (S3019). Next, the three-dimensional data encoding device generates a decoded value by adding a predicted value to the inverse quantized value (S3020). Next, the three-dimensional data encoding device ends the loop in three-dimensional point units (S3021). Furthermore, the three-dimensional data encoding device ends the loop in LoD units (S3022).
[0349] Hereinafter, a three-dimensional data decoding process in a three-dimensional data decoding device that decodes a bit stream generated by the above-mentioned three-dimensional data encoding device will be described.
[0350] The three-dimensional data decoding device generates decoded binary data by arithmetically decoding the binary data of the attribute information in the bit stream generated by the three-dimensional data encoding device in the same manner as the three-dimensional data encoding device. Note that, in the three-dimensional data encoding device, when the application method of arithmetic coding is switched between the part binarized with n bits (n-bit code) and the part binarized using the exponential Golomb algorithm (remaining code), the three-dimensional data decoding device performs decoding accordingly when applying arithmetic decoding.
[0351] For example, in an arithmetic decoding method for an n-bit code, the three-dimensional data decoding device performs arithmetic decoding using a different coding table (decoding table) for each bit. In this case, the three-dimensional data decoding device may change the number of coding tables used for each bit. For example, the first bit b0 of the n-bit code is arithmetically decoded using one coding table. The three-dimensional data decoding device uses two coding tables for the next bit b1. The three-dimensional data decoding device switches the coding table used for arithmetic decoding of bit b1 according to the value of b0 (0 or 1). Similarly, the three-dimensional data decoding device uses four coding tables for the next bit b2. The three-dimensional data decoding device switches the coding table used for arithmetic decoding of bit b2 according to the values of b0 and b1 (0 to 3).
[0352] Thus, when the three-dimensional data decoding device arithmetically decodes each bit bn-1 of the n-bit code, it uses n-1 two encoding tables. Also, the three-dimensional data decoding device switches the encoding table to be used according to the values (occurrence patterns) of the bits before bn-1. Thereby, the three-dimensional data decoding device can appropriately decode a bit stream with improved encoding efficiency by using an appropriate encoding table for each bit.
[0353] Note that the three-dimensional data decoding device may reduce the number of encoding tables used for each bit. For example, when the three-dimensional data decoding device arithmetically decodes each bit bn-1, it may switch two m encoding tables according to the values (occurrence patterns) of the m bits (m < n-1) before bn-1. Thereby, the three-dimensional data decoding device can appropriately decode a bit stream with improved encoding efficiency while suppressing the number of encoding tables used for each bit. Note that the three-dimensional data decoding device may update the occurrence probabilities of 0 and 1 in each encoding table according to the values of the actually generated binarized data. Also, the three-dimensional data decoding device may fix the occurrence probabilities of 0 and 1 in the encoding tables of some bits. Thereby, the number of updates of the occurrence probabilities can be suppressed, so the processing amount can be reduced.
[0354] For example, when the n-bit code is b0b1b2…bn-1, the encoding table for b0 is one (CTb0). The encoding tables for b1 are two (CTb10, CTb11). Also, the encoding table is switched according to the value (0 to 1) of b0. The encoding tables for b2 are four (CTb20, CTb21, CTb22, CTb23). Also, the encoding table is switched according to the values (0 to 3) of b0 and b1. The encoding tables for bn-1 are n-1 two (CTbn0, CTbn1, …, CTbn(2 n-1 -1)). Also, the encoding table is switched according to the values (0 to 2 n-1 -1) of b0b1…bn-2.
[0355] Fig. 37 is a diagram for explaining a process when the remaining code is an exponential Golomb code, for example. The part (the remaining code) binarized and encoded by the three-dimensional data encoding device using the exponential Golomb includes a prefix part and a suffix part as shown in Fig. 37. For example, the three-dimensional data decoding device switches the encoding table between the prefix part and the suffix part. That is, the three-dimensional data decoding device arithmetically decodes each bit included in the prefix part using the encoding table for the prefix, and arithmetically decodes each bit included in the suffix part using the encoding table for the suffix.
[0356] The three-dimensional data decoding device may update the occurrence probability of 0 and 1 in each encoding table according to the value of the binarized data generated during decoding. Alternatively, the three-dimensional data decoding device may fix the occurrence probability of 0 and 1 in one of the encoding tables. This reduces the number of updates to the occurrence probability, thereby reducing the amount of processing. For example, the three-dimensional data decoding device may update the occurrence probability for the prefix part and fix the occurrence probability for the suffix part.
[0357] Furthermore, the three-dimensional data decoding device decodes the quantized prediction residual (unsigned integer value) by multi-valuing the binary data of the arithmetically decoded prediction residual in accordance with the encoding method used in the three-dimensional data encoding device. The three-dimensional data decoding device first calculates the value of the decoded n-bit code by arithmetically decoding the binary data of the n-bit code. Next, the three-dimensional data decoding device compares the value of the n-bit code with the value of R_TH.
[0358] When the value of the n-bit code and the value of R_TH match, the three-dimensional data decoding device determines that a bit encoded by exponential Golomb exists next, and arithmetically decodes the remaining code, which is binary data encoded by exponential Golomb.Then, the three-dimensional data decoding device calculates the value of the remaining code from the decoded remaining code using a reverse lookup table showing the relationship between the remaining code and its value. FIG. 38 is a diagram showing an example of a reverse lookup table showing the relationship between the remaining code and its value.The three-dimensional data decoding device then adds the value of the obtained remaining code to R_TH to obtain a multi-valued quantized prediction residual.
[0359] On the other hand, when the value of the n-bit code does not match the value of R_TH (the value is smaller than R_TH), the three-dimensional data decoding device determines the value of the n-bit code as the multi-valued post-quantization prediction residual as is. This allows the three-dimensional data decoding device to properly decode the bit stream generated by the three-dimensional data encoding device by switching the binarization method according to the value of the prediction residual.
[0360] When the threshold value R_TH is added to the header of the bit stream or the like, the three-dimensional data decoding device may decode the value of the threshold value R_TH from the header and switch the decoding method using the decoded threshold value R_TH. When the threshold value R_TH is added to the header or the like for each LoD, the three-dimensional data decoding device switches the decoding method using the decoded threshold value R_TH for each LoD.
[0361] For example, when the threshold value R_TH is 63 and the value of the decoded n-bit code is 63, the three-dimensional data decoding device obtains the value of the remaining code by decoding the remaining code using the exponential Golomb method. For example, in the example shown in FIG. 38, the remaining code is 00100, and the value of the remaining code is obtained as 3. Next, the three-dimensional data decoding device obtains the value of the prediction residual, 66, by adding the value of the threshold value R_TH, 63, and the value of the remaining code, 3.
[0362] Furthermore, if the value of the decoded n-bit code is 32, the three-dimensional data decoding device sets the value of the n-bit code, 32, as the value of the prediction residual.
[0363] Furthermore, the three-dimensional data decoding device converts the decoded quantized prediction residual from an unsigned integer value to a signed integer value, for example, by a process that is the reverse of the process in the three-dimensional data encoding device. This allows the three-dimensional data decoding device to appropriately decode the generated bit stream without considering the occurrence of negative integers when entropy encoding the prediction residual. Note that the three-dimensional data decoding device does not necessarily need to convert the unsigned integer value to a signed integer value, and may decode the sign bit, for example, when decoding a bit stream generated by separately entropy encoding the sign bit.
[0364] The three-dimensional data decoding device generates a decoded value by decoding the quantized prediction residual converted into a signed integer value through inverse quantization and reconstruction. The three-dimensional data decoding device also uses the generated decoded value for prediction of the three-dimensional point to be decoded and thereafter. Specifically, the three-dimensional data decoding device calculates an inverse quantization value by multiplying the quantized prediction residual by the decoded quantization scale, and obtains the decoded value by adding the inverse quantization value and the prediction value.
[0365] The decoded unsigned integer value (unsigned quantized value) is converted to a signed integer value by the following process. If the LSB (least significant bit) of the decoded unsigned integer value a2u is 1, the three-dimensional data decoding device sets the signed integer value a2q to -((a2u+1)>>1). If the LSB of the unsigned integer value a2u is not 1, the three-dimensional data decoding device sets the signed integer value a2q to (a2u>>1).
[0366] Similarly, if the LSB of the decoded unsigned integer value b2u is 1, the three-dimensional data decoding device sets the signed integer value b2q to -((b2u+1)>>1). If the LSB of the unsigned integer value n2u is not 1, the three-dimensional data decoding device sets the signed integer value b2q to (b2u>>1).
[0367] Moreover, the details of the inverse quantization and reconstruction processing by the three-dimensional data decoding device are similar to those of the inverse quantization and reconstruction processing by the three-dimensional data encoding device.
[0368] The flow of processing in the three-dimensional data decoding device will be described below. Fig. 39 is a flowchart of three-dimensional data decoding processing by the three-dimensional data decoding device. First, the three-dimensional data decoding device decodes position information (geometry) from the bit stream (S3031). For example, the three-dimensional data decoding device performs decoding using an octree representation.
[0369] Next, the three-dimensional data decoding device decodes attribute information (Attribute) from the bit stream (S3032). For example, when decoding multiple types of attribute information, the three-dimensional data decoding device may decode the multiple types of attribute information in order. For example, when decoding color and reflectance as attribute information, the three-dimensional data decoding device decodes the encoding result of color and the encoding result of reflectance according to the order in which they are added to the bit stream. For example, when the encoding result of reflectance is added after the encoding result of color in the bit stream, the three-dimensional data decoding device decodes the encoding result of color, and then decodes the encoding result of reflectance. Note that the three-dimensional data decoding device may decode the encoding results of attribute information added to the bit stream in any order.
[0370] Furthermore, the three-dimensional data decoding device may obtain information indicating the start location of the encoded data of each piece of attribute information in the bit stream by decoding a header or the like. This allows the three-dimensional data decoding device to selectively decode attribute information that needs to be decoded, and therefore omits the decoding process of attribute information that does not need to be decoded. This reduces the amount of processing by the three-dimensional data decoding device. Furthermore, the three-dimensional data decoding device may decode multiple types of attribute information in parallel and integrate the decoding results into one three-dimensional point cloud. This allows the three-dimensional data decoding device to decode multiple types of attribute information at high speed.
[0371] 40 is a flowchart of the attribute information decoding process (S3032). First, the three-dimensional data decoding device sets the LoD (S3041). That is, the three-dimensional data decoding device assigns each of the multiple three-dimensional points having the decoded position information to one of the multiple LoDs. For example, this assignment method is the same as the assignment method used in the three-dimensional data encoding device.
[0372] Next, the three-dimensional data decoding device starts a loop for each LoD (S3042). That is, the three-dimensional data decoding device repeats the process of steps S3043 to S3049 for each LoD.
[0373] Next, the three-dimensional data decoding device starts a loop for each three-dimensional point (S3043). That is, the three-dimensional data decoding device repeatedly performs the processes of steps S3044 to S3048 for each three-dimensional point.
[0374] First, the three-dimensional data decoding device searches for a plurality of surrounding points, which are three-dimensional points existing around the target three-dimensional point to be processed, and are used to calculate a predicted value of the target three-dimensional point (S3044). Next, the three-dimensional data decoding device calculates a weighted average of the values of the attribute information of the plurality of surrounding points, and sets the obtained value as the predicted value P (S3045). Note that these processes are similar to those in the three-dimensional data encoding device.
[0375] Next, the three-dimensional data decoding device arithmetically decodes the quantized value from the bit stream (S3046). The three-dimensional data decoding device also calculates an inverse quantized value by inverse quantizing the decoded quantized value (S3047). Next, the three-dimensional data decoding device generates a decoded value by adding a predicted value to the inverse quantized value (S3048). Next, the three-dimensional data decoding device ends the loop in three-dimensional point units (S3049). The three-dimensional data decoding device also ends the loop in LoD units (S3050).
[0376] Next, the configurations of a three-dimensional data encoding device and a three-dimensional data decoding device according to this embodiment will be described. Fig. 41 is a block diagram showing the configuration of a three-dimensional data encoding device 3000 according to this embodiment. This three-dimensional data encoding device 3000 includes a position information encoding unit 3001, an attribute information reallocation unit 3002, and an attribute information encoding unit 3003.
[0377] The attribute information encoding unit 3003 encodes position information (geometry) of a plurality of three-dimensional points included in the input point cloud. The attribute information reallocation unit 3002 reallocates values of attribute information of a plurality of three-dimensional points included in the input point cloud using the encoded and decoded results of the position information. The attribute information encoding unit 3003 encodes the reallocated attribute information. Furthermore, the three-dimensional data encoding device 3000 generates a bit stream including the encoded position information and the encoded attribute information.
[0378] 42 is a block diagram showing the configuration of a three-dimensional data decoding device 3010 according to this embodiment. The three-dimensional data decoding device 3010 includes a position information decoding unit 3011 and an attribute information decoding unit 3012.
[0379] The position information decoding unit 3011 decodes position information (geometry) of multiple 3D points from the bit stream. The attribute information decoding unit 3012 decodes attribute information (attribute) of multiple 3D points from the bit stream. In addition, the 3D data decoding device 3010 generates an output point group by combining the decoded position information and the decoded attribute information.
[0380] (Embodiment 8) Hereinafter, a method using RAHT (Region Adaptive Hierarchical Transform) will be described as another method for encoding attribute information of three-dimensional points. Fig. 43 is a diagram for explaining encoding of attribute information using RAHT.
[0381] First, the three-dimensional data encoding device generates a Morton code based on the position information of the three-dimensional point, and sorts the attribute information of the three-dimensional point in the order of the Morton code. For example, the three-dimensional data encoding device may sort in ascending order of the Morton code. Note that the sorting order is not limited to the Morton code order, and other orders may be used.
[0382] Next, the three-dimensional data encoding device applies a Haar transform to the attribute information of two adjacent three-dimensional points in the Morton code order to generate high-frequency components and low-frequency components of layer L. For example, the three-dimensional data encoding device may use a 2×2 matrix Haar transform. The generated high-frequency components are included in the encoding coefficients as high-frequency components of layer L, and the generated low-frequency components are used as input values for layer L+1, which is a layer above layer L.
[0383] After generating high-frequency components for layer L using the attribute information for layer L, the three-dimensional data encoding device continues to process layer L+1. In processing layer L+1, the three-dimensional data encoding device generates high-frequency and low-frequency components for layer L+1 by applying a Haar transform to two low-frequency components obtained by the Haar transform of the attribute information for layer L. The generated high-frequency components are included in the encoding coefficients as the high-frequency components for layer L+1, and the generated low-frequency components are used as input values for layer L+2, which is higher than layer L+1.
[0384] The three-dimensional data encoding device repeats such hierarchical processing, and when only one low-frequency component is input to the hierarchy, it determines that the highest hierarchy Lmax has been reached. The three-dimensional data encoding device includes the low-frequency component of hierarchy Lmax-1 input to hierarchy Lmax in the encoding coefficients. The values of the low-frequency or high-frequency components included in the encoding coefficients are then quantized and encoded using entropy encoding or the like.
[0385] In addition, when only one three-dimensional point exists as two adjacent three-dimensional points when applying the Haar transform, the three-dimensional data encoding device may use the value of the attribute information of the one existing three-dimensional point as the input value of the higher hierarchy.
[0386] In this way, the three-dimensional data encoding device applies a hierarchical Haar transform to the input attribute information to generate high-frequency and low-frequency components of the attribute information, and performs encoding by applying quantization, etc., which will be described later. This makes it possible to improve the encoding efficiency.
[0387] When the attribute information is N-dimensional, the three-dimensional data encoding device may apply a Haar transform to each dimension independently and calculate each encoding coefficient. For example, when the attribute information is color information (RGB or YUV, etc.), the three-dimensional data encoding device applies a Haar transform to each component and calculates each encoding coefficient.
[0388] The three-dimensional data encoding device may apply the Haar transform in the order of layer L, L+1, ..., layer Lmax. The closer to layer Lmax, the more encoding coefficients are generated that contain low-frequency components of the input attribute information.
[0389] w0 and w1 shown in Fig. 43 are weights assigned to each three-dimensional point. For example, the three-dimensional data encoding device may calculate the weight based on distance information between two adjacent three-dimensional points to which the Haar transform is applied. For example, the three-dimensional data encoding device may increase the weight as the distance becomes closer, thereby improving the encoding efficiency. Note that the three-dimensional data encoding device may calculate this weight by a different method, or may not use a weight.
[0390] In the example shown in Fig. 43, the input attribute information is a0, a1, a2, a3, a4, and a5. Among the coding coefficients after Haar transform, Ta1, Ta5, Tb1, Tb3, Tc1, and d0 are coded. The other coding coefficients (b0, b2, c0, etc.) are intermediate values and are not coded.
[0391] Specifically, in the example shown in Fig. 43, a0 and a1 are subjected to Haar transform to generate a high frequency component Ta1 and a low frequency component b0. Here, when the weights w0 and w1 are equal, the low frequency component b0 is the average value of a0 and a1, and the high frequency component Ta1 is the difference between a0 and a1.
[0392] Since there is no attribute information paired with a2, a2 is used as b1 as is. Similarly, since there is no attribute information paired with a3, a3 is used as b2 as is. Furthermore, a4 and a5 are subjected to Haar transform to generate a high frequency component Ta5 and a low frequency component b3.
[0393] In layer L+1, a high frequency component Tb1 and a low frequency component c0 are generated by performing a Haar transform on b0 and b1. Similarly, a high frequency component Tb3 and a low frequency component c1 are generated by performing a Haar transform on b2 and b3.
[0394] In the layer Lmax-1, a Haar transform is performed on c0 and c1 to generate a high-frequency component Tc1 and a low-frequency component d0.
[0395] The three-dimensional data encoding device may quantize the encoding coefficients after applying the Haar transform before encoding. For example, the three-dimensional data encoding device performs quantization by dividing the encoding coefficients by a quantization scale (also called a quantization step (QS (Quantization Step))). In this case, the smaller the quantization scale, the smaller the error (quantization error) that may occur due to quantization. Conversely, the larger the quantization scale, the larger the quantization error.
[0396] The three-dimensional data encoding device may change the value of the quantization scale for each layer. FIG. 44 is a diagram showing an example of setting the quantization scale for each layer. For example, the three-dimensional data encoding device sets a smaller quantization scale for higher layers and a larger quantization scale for lower layers. The coding coefficients of three-dimensional points belonging to higher layers contain more low-frequency components than lower layers, and are therefore likely to be important components in terms of human visual characteristics, etc. Therefore, by reducing the quantization scale for higher layers and suppressing quantization errors that may occur in higher layers, visual deterioration can be suppressed and coding efficiency can be improved.
[0397] The three-dimensional data encoding device may add a quantization scale for each layer to a header, etc. This allows the three-dimensional data decoding device to correctly decode the quantization scale and appropriately decode the bit stream.
[0398] Furthermore, the three-dimensional data encoding device may adaptively switch the value of the quantization scale according to the importance of the target three-dimensional point to be encoded. For example, the three-dimensional data encoding device may use a small quantization scale for a three-dimensional point with high importance, and a large quantization scale for a three-dimensional point with low importance. For example, the three-dimensional data encoding device may calculate the importance from the weighting during Haar transform, etc. For example, the three-dimensional data encoding device may calculate the quantization scale using the sum of w0 and w1. In this way, by reducing the quantization scale of a three-dimensional point with high importance, the quantization error is reduced, and the encoding efficiency can be improved.
[0399] In addition, the value of QS may be made smaller in higher layers, which increases the value of QW in higher layers and improves prediction efficiency by suppressing the quantization error of the 3D points.
[0400] Here, the coding coefficient Ta1q after quantization of the coding coefficient Ta1 of the attribute information a1 is expressed as Ta1 / QS_L. Note that QS may be the same value in all layers or in some layers.
[0401] QW (Quantization Weight) is a value that indicates the importance of the 3D point to be coded. For example, the sum of the above-mentioned w0 and w1 may be used as QW. This makes the value of QW larger in the higher layers, and the prediction efficiency can be improved by suppressing the quantization error of the 3D point.
[0402] For example, the three-dimensional data encoding device may first initialize the QW values of all three-dimensional points to 1, and update the QW of each three-dimensional point using the values of w0 and w1 at the time of Haar transformation. Alternatively, the three-dimensional data encoding device may change the initial value according to the layer, without initializing the QW of all three-dimensional points to the value 1. For example, the quantization scale of the upper layer is reduced by setting the initial value of QW larger for the higher layer. This makes it possible to suppress prediction errors in the upper layer, thereby improving the prediction accuracy of the lower layer and improving the encoding efficiency. It should be noted that the three-dimensional data encoding device does not necessarily have to use the QW.
[0403] When QW is used, the quantized value Ta1q of Ta1 is calculated by (Equation K1) and (Equation K2).
[0404]
number
[0405] In addition, the three-dimensional data encoding device scans and encodes the quantized encoding coefficients (unsigned integer values) in a certain order. For example, the three-dimensional data encoding device encodes a plurality of three-dimensional points from the three-dimensional points included in the upper layer toward the lower layer.
[0406] For example, in the case of the example shown in Fig. 43, the three-dimensional data encoding device encodes a plurality of three-dimensional points in the order of d0q, Tc1q, Tb1q, Tb3q, Ta1q, and Ta5q included in the upper layer Lmax. Here, the lower the layer L, the more likely the encoding coefficients after quantization are to become 0. The following factors can be cited as reasons for this.
[0407] The coding coefficients of the lower layer L show higher frequency components than those of the upper layer, and therefore tend to be 0 depending on the target 3D point. Also, due to the switching of the quantization scale according to the importance level and the like described above, the quantization scale becomes larger in the lower layer, and the coding coefficients after quantization tend to be 0.
[0408] In this way, the lower the layer, the more likely it is that the coding coefficient after quantization will be 0, and the more likely it is that consecutive 0s will occur in the first code string. Fig. 45 is a diagram showing examples of the first code string and the second code string.
[0409] The three-dimensional data encoding device counts the number of times the value 0 occurs in the first code string, and encodes the number of times the value 0 occurs in succession, instead of consecutive values of 0. In other words, the three-dimensional data encoding device generates a second code string by replacing the encoding coefficients of consecutive values of 0 in the first code string with the number of consecutive 0s (ZeroCnt). As a result, when the encoding coefficients after quantization have consecutive values of 0, encoding the number of consecutive 0s can improve encoding efficiency rather than encoding a large number of 0s.
[0410] Also, the three-dimensional data encoding device may entropy-encode the value of ZeroCnt. For example, the three-dimensional data encoding device binarizes the value of ZeroCnt with a truncated unary code with a total number T of encoded three-dimensional points, and arithmetically encodes each bit after binarization. FIG. 46 is a diagram showing an example of a truncated unary code when the total number of encoded three-dimensional points is T. In this case, the three-dimensional data encoding device may improve the encoding efficiency by using a different encoding table for each bit. For example, the three-dimensional data encoding device uses encoding table 1 for the first bit, encoding table 2 for the second bit, and encoding table 3 for the bits thereafter. In this way, the three-dimensional data encoding device can improve the encoding efficiency by switching the encoding table for each bit.
[0411] Furthermore, the three-dimensional data encoding device may perform arithmetic coding after binarizing ZeroCnt using Exponential-Golomb. This can improve efficiency compared to binarized arithmetic coding using truncated unary code when the value of ZeroCnt is likely to become large. The three-dimensional data encoding device may add a flag to the header for switching between using truncated unary code or exponential-Golomb. This allows the three-dimensional data encoding device to improve encoding efficiency by selecting an optimal binarization method. Furthermore, the three-dimensional data decoding device can switch binarization methods by referring to the flag included in the header, and correctly decode the bit stream.
[0412] The three-dimensional data decoding device may convert the decoded quantized coding coefficients from unsigned integer values to signed integer values in a manner opposite to that performed by the three-dimensional data encoding device. This allows the three-dimensional data decoding device to properly decode the generated bit stream without considering the occurrence of negative integers when the coding coefficients are entropy coded. Note that the three-dimensional data decoding device does not necessarily need to convert the coding coefficients from unsigned integer values to signed integer values. For example, when decoding a bit stream including coding bits that have been separately entropy coded, the three-dimensional data decoding device may decode the code bits.
[0413] The three-dimensional data decoding device decodes the quantized coding coefficients converted into signed integer values by inverse quantization and inverse Haar transform. The three-dimensional data decoding device also uses the decoded coding coefficients for prediction of the three-dimensional point to be decoded and thereafter. Specifically, the three-dimensional data decoding device calculates an inverse quantized value by multiplying the quantized coding coefficients by the decoded quantization scale. Next, the three-dimensional data decoding device obtains a decoded value by applying an inverse Haar transform, which will be described later, to the inverse quantized value.
[0414] For example, the three-dimensional data decoding device converts the decoded unsigned integer value into a signed integer value in the following manner: If the LSB (least significant bit) of the decoded unsigned integer value a2u is 1, then the signed integer value Ta1q is set to -((a2u+1)>>1). If the LSB of the decoded unsigned integer value a2u is not 1 (is 0), then the signed integer value Ta1q is set to (a2u>>1).
[0415] The inverse quantization value of Ta1 is expressed as Ta1q×QS_L, where Ta1q is the quantization value of Ta1, and QS_L is the quantization step of the layer L.
[0416] Also, the QS may be the same value for all layers or for some layers. Also, the three-dimensional data encoding device may add information indicating the QS to a header, etc. This allows the three-dimensional data decoding device to perform correct inverse quantization using the same QS as that used by the three-dimensional data encoding device.
[0417] Next, the inverse Haar transform will be described. Fig. 47 is a diagram for explaining the inverse Haar transform. The three-dimensional data decoding device decodes the attribute values of the three-dimensional points by applying the inverse Haar transform to the coding coefficients after the inverse quantization.
[0418] First, the three-dimensional data decoding device generates a Morton code based on the position information of the three-dimensional points, and sorts the three-dimensional points in the order of the Morton codes. For example, the three-dimensional data decoding device may sort the three-dimensional points in the ascending order of the Morton codes. Note that the sorting order is not limited to the Morton code order, and other orders may be used.
[0419] Next, the three-dimensional data decoding device applies an inverse Haar transform to the coding coefficients including low-frequency components of layer L+1 and the coding coefficients including high-frequency components of layer L to restore attribute information of adjacent three-dimensional points in Morton code order in layer L. For example, the three-dimensional data decoding device may use an inverse Haar transform of a 2×2 matrix. The restored attribute information of layer L is used as an input value for the lower layer L−1.
[0420] The three-dimensional data decoding device repeats such hierarchical processing, and ends the processing when all the attribute information in the lowest layer is decoded. Note that, when applying the inverse Haar transform, if only one three-dimensional point exists as two adjacent three-dimensional points in layer L-1, the three-dimensional data decoding device may substitute the value of the coding component of layer L for the attribute value of the one existing three-dimensional point. In this way, the three-dimensional data decoding device can apply the Haar transform to all values of the input attribute information, and correctly decode a bitstream with improved coding efficiency.
[0421] When the attribute information is N-dimensional, the three-dimensional data decoding device may apply an inverse Haar transform to each dimension independently to decode each encoding coefficient. For example, when the attribute information is color information (RGB or YUV, etc.), the three-dimensional data decoding device applies an inverse Haar transform to the encoding coefficient for each component to decode each attribute value.
[0422] The three-dimensional data decoding device may apply the inverse Haar transform in the order of layers Lmax, L+1, ..., layer L. Furthermore, w0 and w1 shown in FIG. 47 are weights assigned to each three-dimensional point. For example, the three-dimensional data decoding device may calculate a weight based on distance information between two adjacent three-dimensional points to which the inverse Haar transform is applied. For example, the three-dimensional data encoding device may decode a bitstream with improved encoding efficiency by increasing the weight as the distance becomes closer.
[0423] In the example shown in FIG. 47, the coding coefficients after inverse quantization are Ta1, Ta5, Tb1, Tb3, Tc1, and d0, and the decoded values obtained are a0, a1, a2, a3, a4, and a5.
[0424] 48 is a diagram illustrating an example of the syntax of attribute information (attribute_data). The attribute information (attribute_data) includes the number of consecutive zeros (ZeroCnt), the number of attribute dimensions (attribute_dimension), and the coding coefficient (value[j][i]).
[0425] The number of consecutive zeros (ZeroCnt) indicates the number of consecutive values of 0 in the coding coefficient after quantization. Note that the three-dimensional data coding device may binarize ZeroCnt and then perform arithmetic coding.
[0426] Also, as shown in Fig. 48, the three-dimensional data encoding device may determine whether a layer L (layer L) to which the encoding coefficient belongs is equal to or greater than a predetermined threshold TH_layer, and may switch information to be added to the bit stream depending on the determination result. For example, if the determination result is true, the three-dimensional data encoding device may add all the encoding coefficients of the attribute information to the bit stream. Also, if the determination result is false, the three-dimensional data encoding device may add some of the encoding coefficients to the bit stream.
[0427] Specifically, if the determination result is true, the three-dimensional data encoding device adds the encoding result of the three-dimensional information of RGB or YUV of the color information to the bit stream. If the determination result is false, the three-dimensional data encoding device adds some of the color information, such as G or Y, to the bit stream, and does not need to add other components to the bit stream. In this way, the three-dimensional data encoding device can improve encoding efficiency by not adding some of the encoding coefficients of a layer (a layer smaller than TH_layer) that includes encoding coefficients indicating high-frequency components whose degradation is less noticeable visually to the bit stream.
[0428] The number of attribute dimensions (attribute_dimension) indicates the number of dimensions of the attribute information. For example, if the attribute information is color information (RGB or YUV, etc.) of a three-dimensional point, the number of attribute dimensions is set to a value of 3 since color information is three-dimensional. If the attribute information is reflectance, the number of attribute dimensions is set to a value of 1 since reflectance is one-dimensional. Note that the number of attribute dimensions may be added to the header of the attribute information of the bitstream, etc.
[0429] The coding coefficient (value[j][i]) indicates the coding coefficient after quantization of the j-th dimension attribute information of the i-th 3D point. For example, if the attribute information is color information, value
[99] [1] indicates the coding coefficient of the second dimension (e.g., G value) of the 100th 3D point. Also, if the attribute information is reflectance information, value
[0119] [0] indicates the coding coefficient of the first dimension (e.g., reflectance) of the 120th 3D point.
[0430] If the following condition is satisfied, the three-dimensional data encoding device may subtract the value 1 from value[j][i] and entropy encode the resulting value. In this case, the three-dimensional data decoding device restores the encoding coefficient by adding the value 1 to value[j][i] after entropy decoding.
[0431] The above conditions are (1) when attribute_dimension = 1, or (2) when attribute_dimension is 1 or greater and all dimension values are equal. For example, when the attribute information is reflectance, attribute_dimension = 1, so the three-dimensional data encoding device subtracts the value 1 from the encoding coefficient to calculate the value, and encodes the calculated value. The three-dimensional data decoding device adds the value 1 to the decoded value to calculate the encoding coefficient.
[0432] More specifically, for example, when the encoding coefficient of reflectance is 10, the three-dimensional data encoding device encodes the value 9 obtained by subtracting the value 1 from the encoding coefficient value 10. The three-dimensional data decoding device adds the value 1 to the decoded value 9 to calculate the encoding coefficient value 10.
[0433] Furthermore, since attribute_dimension=3 when the attribute information is color, for example, if the coding coefficients after quantization of each component of R, G, and B are the same, the three-dimensional data coding device subtracts a value of 1 from each coding coefficient and codes the obtained value. The three-dimensional data decoding device adds a value of 1 to the decoded value. More specifically, for example, if the coding coefficients of R, G, and B=(1, 1, 1), the three-dimensional data coding device codes (0, 0, 0). The three-dimensional data decoding device adds 1 to each component of (0, 0, 0) to calculate (1, 1, 1). Also, if the coding coefficients of R, G, and B=(2, 1, 2), the three-dimensional data coding device codes (2, 1, 2) as it is. The three-dimensional data decoding device uses the decoded (2, 1, 2) as it is as a coding coefficient.
[0434] In this way, by providing ZeroCnt, a pattern in which all dimensions of value are 0 is not generated, so that the value obtained by subtracting 1 from the value of value can be coded. This improves coding efficiency.
[0435] Also, value[0][i] shown in Fig. 48 indicates the coding coefficient after quantization of the first-dimension attribute information of the i-th three-dimensional point. If the layer L (layerL) to which the coding coefficient belongs is smaller than the threshold TH_layer as shown in Fig. 48, the first-dimension attribute information may be added to the bit stream (attribute information of the second or subsequent dimensions is not added to the bit stream) to reduce the amount of code.
[0436] The three-dimensional data encoding device may switch the calculation method of the value of ZeroCnt depending on the value of attribute_dimension. For example, when attribute_dimension=3, the three-dimensional data encoding device may count the number of times that the values of the encoding coefficients of all components (dimensions) become 0. FIG. 49 is a diagram showing an example of the encoding coefficients and ZeroCnt in this case. For example, in the case of the color information shown in FIG. 49, the three-dimensional data encoding device counts the number of consecutive encoding coefficients in which the R, G, and B components are all 0, and adds the counted number to the bit stream as ZeroCnt. This makes it unnecessary to encode ZeroCnt for each component, and can reduce overhead. Therefore, it is possible to improve the encoding efficiency. Note that the three-dimensional data encoding device may calculate ZeroCnt for each dimension even when attribute_dimension is 2 or more, and add the calculated ZeroCnt to the bit stream.
[0437] 50 is a flowchart of a three-dimensional data encoding process according to this embodiment. First, the three-dimensional data encoding device encodes position information (geometry) (S6601). For example, the three-dimensional data encoding device performs encoding using an octree representation.
[0438] Next, the three-dimensional data encoding device converts the attribute information (S6602). For example, when the position of the three-dimensional point changes due to quantization or the like after encoding the position information, the three-dimensional data encoding device reallocates the attribute information of the original three-dimensional point to the changed three-dimensional point. The three-dimensional data encoding device may perform reallocation by interpolating the value of the attribute information according to the amount of change in the position. For example, the three-dimensional data encoding device detects N three-dimensional points before the change that are close to the changed three-dimensional position, and weights and averages the values of the attribute information of the N three-dimensional points based on the distance from the changed three-dimensional position to each of the N three-dimensional points, and sets the obtained value as the value of the attribute information of the changed three-dimensional point. Furthermore, when two or more three-dimensional points change to the same three-dimensional position due to quantization or the like, the three-dimensional data encoding device may assign the average value of the attribute information of the two or more three-dimensional points before the change as the value of the attribute information after the change.
[0439] Next, the three-dimensional data encoding device encodes the attribute information (S6603). For example, when encoding multiple pieces of attribute information, the three-dimensional data encoding device may encode the multiple pieces of attribute information in order. For example, when encoding color and reflectance as attribute information, the three-dimensional data encoding device generates a bitstream in which the encoding result of reflectance is added after the encoding result of color. Note that the encoding results of the multiple pieces of attribute information added to the bitstream may be in any order.
[0440] Furthermore, the three-dimensional data encoding device may add information indicating the start location of the encoded data of each piece of attribute information in the bit stream to a header or the like. This allows the three-dimensional data decoding device to selectively decode attribute information that needs to be decoded, and therefore omits the decoding process of attribute information that does not need to be decoded. This reduces the amount of processing by the three-dimensional data decoding device. Furthermore, the three-dimensional data encoding device may encode multiple pieces of attribute information in parallel and integrate the encoding results into one bit stream. This allows the three-dimensional data encoding device to encode multiple pieces of attribute information at high speed.
[0441] 51 is a flowchart of the attribute information encoding process (S6603). First, the three-dimensional data encoding device generates encoding coefficients from the attribute information by Haar transform (S6611). Next, the three-dimensional data encoding device applies quantization to the encoding coefficients (S6612). Next, the three-dimensional data encoding device generates encoded attribute information (bit stream) by encoding the quantized encoding coefficients (S6613).
[0442] In addition, the three-dimensional data encoding device applies inverse quantization to the quantized coding coefficients (S6614). Next, the three-dimensional data decoding device decodes the attribute information by applying an inverse Haar transform to the inverse quantized coding coefficients (S6615). For example, the decoded attribute information is referred to in subsequent encoding.
[0443] FIG. 52 is a flowchart of the coding coefficient coding process (S6613). First, the three-dimensional data coding device converts the coding coefficient from a signed integer value to an unsigned integer value (S6621). For example, the three-dimensional data coding device converts the signed integer value to an unsigned integer value as follows. If the signed integer value Ta1q is smaller than 0, the unsigned integer value is set to -1-(2×Ta1q). If the signed integer value Ta1q is 0 or greater, the unsigned integer value is set to 2×Ta1q. Note that if the coding coefficient does not become a negative value, the three-dimensional data coding device may code the coding coefficient as it is as an unsigned integer value.
[0444] If all the coding coefficients have not been processed (No in S6622), the three-dimensional data coding device determines whether the value of the coding coefficient to be processed is zero (S6623). If the value of the coding coefficient to be processed is zero (Yes in S6623), the three-dimensional data coding device increments ZeroCnt by 1 (S6624) and returns to step S6622.
[0445] If the value of the coding coefficient to be processed is not zero (No in S6623), the three-dimensional data coding device codes ZeroCnt and resets ZeroCnt to 0 (S6625). The three-dimensional data coding device also arithmetically codes the coding coefficient to be processed (S6626) and returns to step S6622. For example, the three-dimensional data coding device performs binary arithmetic coding. The three-dimensional data coding device may also subtract a value of 1 from the coding coefficient and code the obtained value.
[0446] Furthermore, the processes of steps S6623 to S6626 are repeated for each coding coefficient. If all coding coefficients have been processed (Yes in S6622), the three-dimensional data coding device ends the process.
[0447] 53 is a flowchart of a three-dimensional data decoding process according to this embodiment. First, the three-dimensional data decoding device decodes position information (geometry) from the bit stream (S6631). For example, the three-dimensional data decoding device performs decoding using an octree representation.
[0448] Next, the three-dimensional data decoding device decodes the attribute information from the bit stream (S6632). For example, when decoding a plurality of pieces of attribute information, the three-dimensional data decoding device may decode the plurality of pieces of attribute information in order. For example, when decoding color and reflectance as attribute information, the three-dimensional data decoding device decodes the encoding result of color and the encoding result of reflectance in the order in which they are added to the bit stream. For example, when the encoding result of reflectance is added after the encoding result of color in the bit stream, the three-dimensional data decoding device decodes the encoding result of color, and then decodes the encoding result of reflectance. Note that the three-dimensional data decoding device may decode the encoding results of the attribute information added to the bit stream in any order.
[0449] Furthermore, the three-dimensional data decoding device may obtain information indicating the start location of the encoded data of each piece of attribute information in the bit stream by decoding a header or the like. This allows the three-dimensional data decoding device to selectively decode attribute information that needs to be decoded, and therefore omits the decoding process of attribute information that does not need to be decoded. This allows the amount of processing by the three-dimensional data decoding device to be reduced. Furthermore, the three-dimensional data decoding device may decode multiple pieces of attribute information in parallel and integrate the decoding results into one three-dimensional point cloud. This allows the three-dimensional data decoding device to decode multiple pieces of attribute information at high speed.
[0450] 54 is a flowchart of the attribute information decoding process (S6632). First, the three-dimensional data decoding device decodes the coding coefficients from the bit stream (S6641). Next, the three-dimensional data decoding device applies inverse quantization to the coding coefficients (S6642). Next, the three-dimensional data decoding device decodes the attribute information by applying an inverse Haar transform to the coding coefficients after the inverse quantization (S6643).
[0451] 55 is a flowchart of the coding coefficient decoding process (S6641). First, the three-dimensional data decoding device decodes ZeroCnt from the bit stream (S6651). If all coding coefficients have not been processed (No in S6652), the three-dimensional data decoding device determines whether ZeroCnt is greater than 0 (S6653).
[0452] If ZeroCnt is greater than zero (Yes in S6653), the three-dimensional data decoding device sets the coding coefficient to be processed to 0 (S6654). Next, the three-dimensional data decoding device subtracts 1 from ZeroCnt (S6655) and returns to step S6652.
[0453] If ZeroCnt is zero (No in S6653), the three-dimensional data decoding device decodes the coding coefficient to be processed (S6656). For example, the three-dimensional data decoding device uses binary arithmetic decoding. In addition, the three-dimensional data decoding device may add a value of 1 to the decoded coding coefficient.
[0454] Next, the three-dimensional data decoding device decodes ZeroCnt, sets the obtained value to ZeroCnt (S6657), and returns to step S6652.
[0455] Furthermore, the processes of steps S6653 to S6657 are repeated for each coding coefficient. Furthermore, if all coding coefficients have been processed (Yes in S6652), the three-dimensional data decoding device converts the decoded coding coefficients from unsigned integer values to signed integer values (S6658). For example, the three-dimensional data decoding device may convert the decoded coding coefficients from unsigned integer values to signed integer values as follows. If the LSB (least significant bit) of the decoded unsigned integer value Ta1u is 1, the signed integer value Ta1q is set to -((Ta1u+1)>>1). If the LSB of the decoded unsigned integer value Ta1u is not 1 (is 0), the signed integer value Ta1q is set to (Ta1u>>1). Note that if the coding coefficient does not become a negative value, the three-dimensional data decoding device may use the decoded coding coefficient as it is as a signed integer value.
[0456] 56 is a block diagram of an attribute information encoding unit 6600 included in the three-dimensional data encoding device. The attribute information encoding unit 6600 includes a sorting unit 6601, a Haar transform unit 6602, a quantization unit 6603, an inverse quantization unit 6604, an inverse Haar transform unit 6605, a memory 6606, and an arithmetic encoding unit 6607.
[0457] The sorting unit 6601 generates a Morton code using the position information of the 3D points, and sorts the multiple 3D points in Morton code order. The Haar transform unit 6602 generates coding coefficients by applying a Haar transform to the attribute information. The quantization unit 6603 quantizes the coding coefficients of the attribute information.
[0458] The inverse quantization unit 6604 inversely quantizes the quantized coding coefficients. The inverse Haar transform unit 6605 applies an inverse Haar transform to the coding coefficients. The memory 6606 stores values of attribute information of multiple decoded 3D points. For example, the attribute information of the decoded 3D points stored in the memory 6606 may be used for predicting uncoded 3D points.
[0459] The arithmetic coding unit 6607 calculates ZeroCnt from the coding coefficients after quantization, and arithmetically codes the ZeroCnt. Furthermore, the arithmetic coding unit 6607 arithmetically codes the non-zero coding coefficients after quantization. The arithmetic coding unit 6607 may binarize the coding coefficients before arithmetic coding. Furthermore, the arithmetic coding unit 6607 may generate and code various header information.
[0460] 57 is a block diagram of the attribute information decoding unit 6610 included in the three-dimensional data decoding device. The attribute information decoding unit 6610 includes an arithmetic decoding unit 6611, an inverse quantization unit 6612, an inverse Haar transform unit 6613, and a memory 6614.
[0461] The arithmetic decoding unit 6611 arithmetically decodes the ZeroCnt and the coding coefficients included in the bit stream. Note that the arithmetic decoding unit 6611 may also decode various types of header information.
[0462] The inverse quantization unit 6612 inverse quantizes the arithmetically decoded coding coefficients. The inverse Haar transform unit 6613 applies an inverse Haar transform to the coding coefficients after the inverse quantization. The memory 6614 stores values of attribute information of multiple decoded 3D points. For example, the attribute information of the decoded 3D points stored in the memory 6614 may be used to predict undecoded 3D points.
[0463] In the above embodiment, the example of coding 3D points from lower layer to upper layer is shown, but the coding order is not necessarily limited to this.For example, the coding coefficient after Haar transform may be scanned from upper layer to lower layer.In this case, the 3D data coding device may also code the number of consecutive values of 0 as ZeroCnt.
[0464] In addition, the three-dimensional data encoding device may switch whether or not to use the encoding method using ZeroCnt described in the present embodiment on a WLD, SPC, or volume basis. In this case, the three-dimensional data encoding device may add information indicating whether or not the encoding method using ZeroCnt has been applied to the header information. This allows the three-dimensional data decoding device to perform appropriate decoding. As an example of the switching method, for example, the three-dimensional data encoding device counts the number of occurrences of an encoding coefficient with a value of 0 for one volume. If the count value exceeds a predetermined threshold, the three-dimensional data encoding device applies the method using ZeroCnt to the next volume, and if the count value is equal to or less than the threshold, does not apply the method using ZeroCnt to the next volume. This allows the three-dimensional data encoding device to switch whether or not to apply the encoding method using ZeroCnt appropriately according to the characteristics of the three-dimensional point to be encoded, thereby improving encoding efficiency.
[0465] Another method (variation) of this embodiment will be described below. The three-dimensional data encoding device scans and encodes the quantized encoding coefficients (unsigned integer values) in a certain order. For example, the three-dimensional data encoding device encodes a plurality of three-dimensional points in order from the three-dimensional points included in the lower layer toward the upper layer.
[0466] Fig. 58 is a diagram showing an example of the first code string and the second code string when this technique is used for the attribute information shown in Fig. 43. In this example, the three-dimensional data encoding device encodes multiple coding coefficients in the order of Ta1q to Ta5q, Tb1q, Tb3q, Tc1q, and d0q included in the lower layer L. Here, the lower the layer, the more likely the coding coefficients after quantization are to become 0. The following factors can be cited as reasons for this.
[0467] The coding coefficients of the lower layer L show higher frequency components than those of the upper layer, and therefore tend to be 0 depending on the 3D point to be coded. Also, due to the switching of the quantization scale according to the importance level and the like described above, the quantization scale becomes larger in the lower layer, and the coding coefficients after quantization tend to be 0.
[0468] In this way, the lower the layer, the more likely it is that the coding coefficient after quantization will be 0, and the more likely it is that the value 0 will occur consecutively in the first code string. The three-dimensional data coding device counts the number of times the value 0 occurs in the first code string, and encodes the number of times the value 0 occurs consecutively (ZeroCnt) instead of consecutive values of 0. This makes it possible to improve coding efficiency when the coding coefficient after quantization has consecutive values of 0 by coding the number of consecutive 0s rather than coding a large number of 0s.
[0469] Furthermore, the three-dimensional data encoding device may encode information indicating the total number of occurrences of the value 0. This can reduce the overhead of encoding ZeroCnt and improve encoding efficiency.
[0470] For example, the three-dimensional data encoding device encodes the total number of encoding coefficients with a value of 0 as TotalZeroCnt. As a result, in the example shown in FIG. 58, when the three-dimensional data decoding device decodes the second ZeroCnt (value 1) included in the second code string, the total number of decoded ZeroCnt becomes N+1 (=TotalZeroCnt). Therefore, the three-dimensional data decoding device can grasp that no more 0s will be generated. Therefore, the three-dimensional data encoding device does not need to encode ZeroCnt for each value thereafter, and the amount of code can be reduced.
[0471] Furthermore, the three-dimensional data encoding device may entropy-encode TotalZeroCnt. For example, the three-dimensional data encoding device binarizes the value of TotalZeroCnt using a truncated unary code of the total number T of encoded three-dimensional points, and arithmetically encodes each bit after binarization. At this time, the three-dimensional data encoding device may improve the encoding efficiency by using a different encoding table for each bit. For example, the three-dimensional data encoding device uses encoding table 1 for the first bit, encoding table 2 for the second bit, and encoding table 3 for the bits thereafter. In this way, the three-dimensional data encoding device can improve the encoding efficiency by switching the encoding table for each bit.
[0472] Furthermore, the three-dimensional data encoding device may perform arithmetic coding after binarizing TotalZeroCnt using exponential Golomb. This can improve efficiency compared to binarized arithmetic coding using truncated unary code when the value of TotalZeroCnt is likely to become large. The three-dimensional data encoding device may add a flag to the header for switching between using truncated unary code or exponential Golomb. This allows the three-dimensional data encoding device to improve encoding efficiency by selecting an optimal binarization method. Furthermore, the three-dimensional data decoding device can switch binarization methods by referring to the flag included in the header, and correctly decode the bit stream.
[0473] Fig. 59 is a diagram showing an example of the syntax of attribute information (attribute_data) in this modification. The attribute information (attribute_data) shown in Fig. 59 further includes a total number of zeros (TotalZeroCnt) in addition to the attribute information shown in Fig. 48. Note that other information is the same as in Fig. 48. The total number of zeros (TotalZeroCnt) indicates the total number of coding coefficients with a value of 0 after quantization.
[0474] Also, the three-dimensional data encoding device may switch the calculation method of the values of TotalZereCnt and ZeroCnt depending on the value of attribute_dimension. For example, when attribute_dimension=3, the three-dimensional data encoding device may count the number of times that the values of the encoding coefficients of all components (dimensions) become 0. FIG. 60 is a diagram showing an example of the encoding coefficients, ZeroCnt, and TotalZeroCnt in this case. For example, in the case of the color information shown in FIG. 60, the three-dimensional data encoding device counts the number of consecutive encoding coefficients in which the R, G, and B components are all 0, and adds the counted numbers to the bitstream as TotalZeroCnt and ZeroCnt. This eliminates the need to encode TotalZeroCnt and ZeroCnt for each component, and can reduce overhead. This can improve the encoding efficiency. Note that the three-dimensional data encoding device may calculate TotalZeoCnt and ZeroCnt for each dimension even when attribute_dimension is 2 or more, and add the calculated TotalZeoCnt and ZeroCnt to the bitstream.
[0475] 61 is a flowchart of the coding coefficient coding process (S6613) in this modified example. First, the three-dimensional data coding device converts the coding coefficient from a signed integer value to an unsigned integer value (S6661). Next, the three-dimensional data coding device codes TotalZeroCnt (S6662).
[0476] If all the coding coefficients have not been processed (No in S6663), the three-dimensional data coding device determines whether the value of the coding coefficient to be processed is zero (S6664). If the value of the coding coefficient to be processed is zero (Yes in S6664), the three-dimensional data coding device increments ZeroCnt by 1 (S6665) and returns to step S6663.
[0477] If the value of the coding coefficient to be processed is not zero (No in S6664), the three-dimensional data coding device determines whether TotalZeroCnt is greater than 0 (S6666). If TotalZeroCnt is greater than 0 (Yes in S6666), the three-dimensional data coding device codes ZeroCnt and sets TotalZeroCnt to TotalZeroCnt-ZeroCnt (S6667).
[0478] After step S6667, or if TotalZeroCnt is 0 (No in S6666), the three-dimensional data encoding device encodes the encoding coefficients, resets ZeroCnt to 0 (S6668), and returns to step S6663. For example, the three-dimensional data encoding device performs binary arithmetic encoding. Alternatively, the three-dimensional data encoding device may subtract a value of 1 from the encoding coefficients and encode the obtained value.
[0479] Furthermore, the processes of steps S6664 to S6668 are repeated for each coding coefficient. If all coding coefficients have been processed (Yes in S6663), the three-dimensional data coding device ends the process.
[0480] 62 is a flowchart of the coding coefficient decoding process (S6641) in this modified example. First, the three-dimensional data decoding device decodes TotalZeroCnt from the bit stream (S6671). Next, the three-dimensional data decoding device decodes ZeroCnt from the bit stream and sets TotalZeroCnt to TotalZeroCnt-ZeroCnt (S6672).
[0481] If all the encoding coefficients have not been processed (No in S6673), the three-dimensional data encoding device determines whether ZeroCnt is greater than 0 (S6674).
[0482] If ZeroCnt is greater than zero (Yes in S6674), the three-dimensional data decoding device sets the coding coefficient to be processed to 0 (S6675). Next, the three-dimensional data decoding device subtracts 1 from ZeroCnt (S6676) and returns to step S6673.
[0483] If ZeroCnt is zero (No in S6674), the three-dimensional data decoding device decodes the coding coefficient to be processed (S6677). For example, the three-dimensional data decoding device uses binary arithmetic decoding. Also, the three-dimensional data decoding device may add a value of 1 to the decoded coding coefficient.
[0484] Next, the three-dimensional data decoding device judges whether TotalZeroCnt is greater than 0 (S6678). If TotalZeroCnt is greater than 0 (Yes in S6678), the three-dimensional data decoding device decodes ZeroCnt, sets the obtained value to ZeroCnt, sets TotalZeroCnt to TotalZeroCnt-ZeroCnt (S6679), and returns to step S6673. If TotalZeroCnt is 0 (No in S6678), the three-dimensional data decoding device returns to step S6673.
[0485] Furthermore, the processes of steps S6674 to S6679 are repeated for each coding coefficient. Furthermore, if all coding coefficients have been processed (Yes in S6673), the three-dimensional data coding device converts the decoded coding coefficients from unsigned integer values to signed integer values (S6680).
[0486] Fig. 63 is a diagram showing another syntax example of attribute information (attribute_data). The attribute information (attribute_data) shown in Fig. 63 includes value[j][i]_greater_zero_flag, value[j][i]_greater_one_flag, and value[j][i] instead of the coding coefficient (value[j][i]) shown in Fig. 48. Note that other information is the same as that in Fig. 48.
[0487] Value[j][i]_greater_zero_flag indicates whether the value of the coding coefficient (value[j][i]) is greater than 0 (is greater than or equal to 1). In other words, value[j][i]_greater_zero_flag indicates whether the value of the coding coefficient (value[j][i]) is 0 or not.
[0488] For example, if the value of the coding coefficient is greater than 0, value[j][i]_greater_zero_flag is set to the value 1, and if the value of the coding coefficient is 0, value[j][i]_greater_zero_flag is set to the value 0. If the value of value[j][i]_greater_zero_flag is 0, the three-dimensional data coding device may not add value[j][i] to the bitstream. In this case, the three-dimensional data decoding device may determine that the value of value[j][i] is 0. This makes it possible to reduce the amount of coding.
[0489] Value[j][i]_greater_one_flag indicates whether the value of the coding coefficient (value[j][i]) is greater than 1 (2 or more). In other words, value[j][i]_greater_one_flag indicates whether the value of the coding coefficient (value[j][i]) is 1 or not.
[0490] For example, if the value of the coding coefficient is greater than 1, value[j][i]_greater_one_flag is set to the value 1. Otherwise (if the value of the coding coefficient is 1 or less), value[j][i]_greater_one_flag is set to the value 0. If the value of value[j][i]_greater_one_flag is 0, the three-dimensional data coding device may not add value[j][i] to the bitstream. In this case, the three-dimensional data decoding device may determine that the value of value[j][i] is 1.
[0491] value[j][i] indicates the quantized coding coefficient of the j-th attribute information of the i-th 3D point. For example, if the attribute information is color information, value
[99] [1] indicates the coding coefficient of the second dimension (e.g., G value) of the 100th 3D point. Also, if the attribute information is reflectance information, value
[0119] [0] indicates the coding coefficient of the first dimension (e.g., reflectance) of the 120th 3D point.
[0492] The three-dimensional data encoding device may add value[j][i] to the bitstream when value[j][i]_greater_zero_flag=1 and value[j][i]_greater_one_flag=1. The three-dimensional data encoding device may also add a value obtained by subtracting 2 from value[j][i] to the bitstream. In this case, the three-dimensional data decoding device calculates the encoding coefficient by adding the value 2 to the decoded value[j][i].
[0493] The three-dimensional data encoding device may entropy-encode value[j][i]_greater_zero_flag and value[j][i]_greater_one_flag. For example, binary arithmetic encoding and binary arithmetic decoding may be used. This can improve the encoding efficiency.
[0494] (Embodiment 9) In order to achieve high compression, attribute information included in PCC (Point Cloud Compression) data is transformed using multiple methods such as Lifting, RAHT (Region Adaptive Hierarchical Transform), or other transformation methods. Here, Lifting is one of the transformation methods using LoD (Level of Detail).
[0495] Since important signal information tends to be contained in low frequency components, the amount of code is reduced by quantizing high frequency components. In other words, the transform process has strong energy compaction properties. Also, quantization causes loss of precision depending on the size of the quantization parameter.
[0496] 64 is a block diagram showing the configuration of a three-dimensional data encoding device according to this embodiment. This three-dimensional data encoding device includes a subtraction unit 7001, a transformation unit 7002, a transformation matrix storage unit 7003, a quantization unit 7004, a quantization control unit 7005, and an entropy encoding unit 7006.
[0497] The subtraction unit 7001 calculates a coefficient value that is a difference between input data and reference data. For example, the input data is attribute information included in the point cloud data, and is a predicted value of the attribute information with the reference data.
[0498] The conversion unit 7002 performs a conversion process on the coefficient values. For example, this conversion process is a process of classifying a plurality of pieces of attribute information into LoD. This conversion process may be a Haar conversion or the like. The conversion matrix holding unit 7003 holds a conversion matrix used in the conversion process by the conversion unit 7002. For example, this conversion matrix is a Haar conversion matrix. Note that, although an example is shown here in which the three-dimensional data encoding device has a function of performing both a conversion process using LoD and a conversion process such as a Haar conversion, the three-dimensional data encoding device may have either one of the functions. The three-dimensional data encoding device may selectively use these two types of conversion processes. The three-dimensional data encoding device may also switch the conversion process to be used for each predetermined processing unit.
[0499] The quantization unit 7004 generates a quantized value by quantizing the coefficient value. The quantization control unit 7005 controls a quantization parameter used by the quantization unit 7004 for quantization. For example, the quantization control unit 7005 may switch the quantization parameter (or the quantization step) according to the hierarchical structure of the encoding. This allows the amount of generated code to be controlled for each layer by selecting an appropriate quantization parameter for each hierarchical structure. In addition, the quantization control unit 7005 sets the quantization parameter for a certain layer or lower, including a frequency component that has little effect on the subjective image quality, to a maximum value, and sets the quantization coefficient for the layer or lower to 0. This allows the amount of generated code to be reduced while suppressing deterioration of the subjective image quality. In addition, the quantization control unit 7005 can control the subjective image quality and the amount of generated code more finely. Here, the layer refers to a layer (depth in a tree structure) in LoD or RAHT (Haar transform).
[0500] The entropy coding unit 7006 generates a bit stream by entropy coding (for example, arithmetic coding) the quantization coefficients. The entropy coding unit 7006 also codes the quantization parameters for each layer set by the quantization control unit 7005.
[0501] 65 is a block diagram showing the configuration of a three-dimensional data decoding device according to this embodiment. This three-dimensional data decoding device includes an entropy decoding unit 7011, an inverse quantization unit 7012, a quantization control unit 7013, an inverse transformation unit 7014, a transformation matrix holding unit 7015, and an addition unit 7016.
[0502] The entropy decoding unit 7011 decodes the quantization coefficients and the quantization parameters for each layer from the bit stream. The inverse quantization unit 7012 generates coefficient values by inverse quantizing the quantization coefficients. The quantization control unit 7013 controls the quantization parameters used by the inverse quantization unit 7012 for inverse quantization based on the quantization parameters for the layers obtained by the entropy decoding unit 7011.
[0503] The inverse transform unit 7014 inversely transforms the coefficient values. For example, the inverse transform unit 7014 performs an inverse Haar transform on the coefficient values. The transform matrix holding unit 7015 holds a transform matrix used in the inverse transform process by the inverse transform unit 7014. For example, this transform matrix is an inverse Haar transform matrix.
[0504] The adder 7016 generates output data by adding the reference data to the coefficient values. For example, the output data is attribute information included in the point cloud data, and is a predicted value of the attribute information with the reference data.
[0505] Next, an example of setting the quantization parameter for each layer will be described. In encoding attribute information such as Predicting / Lifting, different quantization parameters are applied based on the layer of LoD. For example, the quantization parameter for the lower layer is made small to increase the accuracy of the lower layer. This can improve the prediction accuracy of the higher layer. Also, the amount of data can be reduced by making the quantization parameter for the higher layer large. In this way, the quantization tree value (Qt) can be set individually for each LoD according to the user's usage policy. Here, the quantization tree value is, for example, a quantization parameter.
[0506] Fig. 66 is a diagram showing an example of setting LoD. For example, Qt0 to Qt2 are set independently for LoD0 to LoD2 as shown in Fig. 66.
[0507] Furthermore, when encoding attribute information using RAHT, different quantization parameters are applied based on the depth of the tree structure. For example, the quantization parameters for lower layers are made smaller to increase the accuracy of the lower layers. This improves the prediction accuracy of higher layers. Also, by making the quantization parameters for higher layers larger, the amount of data can be reduced. In this way, the quantization tree value (Qt) can be set individually for each depth of the tree structure according to the user's usage policy.
[0508] Fig. 67 is a diagram showing an example of a hierarchical structure (tree structure) of the RAHT. For example, as shown in Fig. 67, independent Qt0 to Qt2 are set for each depth of the tree structure.
[0509] The configuration of the three-dimensional data encoding device according to this embodiment will be described below. Fig. 68 is a block diagram showing the configuration of a three-dimensional data encoding device 7020 according to this embodiment. The three-dimensional data encoding device 7020 generates encoded data (encoded stream) by encoding point group data (point cloud). This three-dimensional data encoding device 7020 includes a division unit 7021, a plurality of position information encoding units 7022, a plurality of attribute information encoding units 7023, an additional information encoding unit 7024, and a multiplexing unit 7025.
[0510] The dividing unit 7021 divides the point cloud data to generate a plurality of divided data. Specifically, the dividing unit 7021 divides the space of the point cloud data into a plurality of subspaces to generate a plurality of divided data. Here, the subspace is one of a tile and a slice, or a combination of a tile and a slice. More specifically, the point cloud data includes position information, attribute information (color, reflectance, etc.), and additional information. The dividing unit 7021 divides the position information to generate a plurality of divided position information, and divides the attribute information to generate a plurality of divided attribute information. In addition, the dividing unit 7021 generates additional information related to the division.
[0511] For example, the dividing unit 7021 first divides the point cloud into tiles, and then further divides the obtained tiles into slices.
[0512] The position information encoding units 7022 generate multiple pieces of encoded position information by encoding the multiple pieces of divided position information. For example, the position information encoding unit 7022 encodes the divided position information using an N-ary tree structure such as an octet tree. Specifically, in the octet tree, the target space is divided into eight nodes (subspaces), and 8-bit information (occupancy code) indicating whether or not a point group is included in each node is generated. In addition, the node including the point group is further divided into eight nodes, and 8-bit information indicating whether or not a point group is included in each of the eight nodes is generated. This process is repeated until the number of point groups included in a predetermined hierarchy or node is equal to or less than a threshold value. For example, the position information encoding units 7022 process the multiple pieces of divided position information in parallel.
[0513] The attribute information encoding unit 7023 generates encoded attribute information, which is encoded data, by encoding attribute information using the configuration information generated by the position information encoding unit 7022. For example, the attribute information encoding unit 7023 determines a reference point (reference node) to be referenced in encoding a target point (target node) to be processed, based on the octree structure generated by the position information encoding unit 7022. For example, the attribute information encoding unit 7023 refers to a node, among peripheral nodes or adjacent nodes, whose parent node in the octree is the same as that of the target node. Note that the method of determining the reference relationship is not limited to this.
[0514] Furthermore, the encoding process of the position information or attribute information may include at least one of a quantization process, a prediction process, and an arithmetic coding process. In this case, the reference means using a reference node to calculate a predicted value of the attribute information, or using a state of the reference node (e.g., occupancy information indicating whether or not a point group is included in the reference node) to determine an encoding parameter. For example, the encoding parameter is a quantization parameter in a quantization process, or a context in an arithmetic coding process.
[0515] The additional information encoding unit 7024 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 7021 at the time of division.
[0516] The multiplexing unit 7025 multiplexes a plurality of pieces of encoding position information, a plurality of pieces of encoding attribute information, and encoding additional information to generate encoded data (encoded stream), and transmits the generated encoded data. In addition, the encoded additional information is used during decoding.
[0517] 69 is a block diagram of the division unit 7021. The division unit 7021 includes a tile division unit 7031 and a slice division unit 7032.
[0518] The tile division unit 7031 generates multiple pieces of tile position information by dividing position information (Position (Geometry)) into tiles. The tile division unit 7031 also generates multiple pieces of tile attribute information by dividing attribute information (Attribute) into tiles. The tile division unit 7031 also outputs tile additional information (Tile MetaData) including information related to the tile division and information generated in the tile division.
[0519] The slice division unit 7032 divides a plurality of pieces of tile position information into slices to generate a plurality of pieces of division position information (a plurality of pieces of slice position information).The slice division unit 7032 also divides a plurality of pieces of tile attribute information into slices to generate a plurality of pieces of division attribute information (a plurality of pieces of slice attribute information).The slice division unit 7032 also outputs slice additional information (Slice MetaData) including information related to the slice division and information generated in the slice division.
[0520] Furthermore, the tile division unit 7031 and the slice division unit 7032 determine quantization tree values (quantization parameters) based on the generated additional information.
[0521] 70 is a block diagram of the attribute information encoding unit 7023. The attribute information encoding unit 7023 includes a transform unit 7035, a quantization unit 7036, and an entropy encoding unit 7037.
[0522] The conversion unit 7035 classifies the split attribute information into hierarchical levels such as LoD, and generates coefficient values (difference values) by calculating the difference between the split attribute information and the predicted value. Note that the conversion unit 7035 may generate coefficient values by performing a Haar transform on the split attribute information.
[0523] The quantization unit 7036 quantizes the coefficient value to generate a quantized value. Specifically, the quantization unit 7036 divides the coefficient by a quantization step based on the quantization parameter. The entropy coding unit 7037 entropy codes the quantized value to generate coding attribute information.
[0524] The configuration of the three-dimensional data decoding device according to this embodiment will be described below. Fig. 71 is a block diagram showing the configuration of a three-dimensional data decoding device 7040. The three-dimensional data decoding device 7040 restores point cloud data by decoding coded data (coded stream) generated by coding point cloud data. This three-dimensional data decoding device 7040 includes a demultiplexing unit 7041, a plurality of position information decoding units 7042, a plurality of attribute information decoding units 7043, an additional information decoding unit 7044, and a combining unit 7045.
[0525] The demultiplexer 7041 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.
[0526] The position information decoders 7042 generate a plurality of pieces of divided position information by decoding the plurality of pieces of encoded position information. For example, the position information decoders 7042 process the plurality of pieces of encoded position information in parallel.
[0527] The multiple attribute information decoding units 7043 generate multiple pieces of divided attribute information by decoding the multiple pieces of encoded attribute information. For example, the multiple attribute information decoding units 7043 process the multiple pieces of encoded attribute information in parallel.
[0528] The multiple additional information decoders 7044 generate additional information by decoding the encoded additional information.
[0529] The combining unit 7045 generates position information by combining a plurality of pieces of divided position information using the additional information The combining unit 7045 generates attribute information by combining a plurality of pieces of divided attribute information using the additional information.
[0530] FIG. 72 is a block diagram of the attribute information decoding unit 7043. The attribute information decoding unit 7043 includes an entropy decoding unit 7051, an inverse quantization unit 7052, and an inverse transform unit 7053. The entropy decoding unit 7051 generates a quantized value by entropy decoding the encoded attribute information. The inverse quantization unit 7052 generates a coefficient value by inverse quantizing the quantized value. Specifically, the coefficient value is multiplied by a quantization step based on a quantization tree value (quantization parameter) acquired from the bit stream. The inverse transform unit 7053 generates split attribute information by inverse transforming the coefficient value. Here, the inverse transform is, for example, a process of adding a predicted value to a coefficient value. Alternatively, the inverse transform is an inverse Haar transform.
[0531] An example of a method for determining a quantization parameter will be described below. Figure 73 is a diagram showing an example of setting a quantization parameter in tile and slice division.
[0532] A small quantization parameter value tends to preserve the original information. For example, the default value of the quantization parameter is 1. For example, in an encoding process using tiles of PCC data, the quantization parameter of the tiles of the main road is set to a small value to maintain the data quality. On the other hand, the quantization parameter of the tiles of the surrounding area is set to a large value. This reduces the data quality of the surrounding area, but improves the encoding efficiency.
[0533] Similarly, in the coding process using slices of PCC data, the quantization parameters of slices of sidewalks, trees, and buildings are set to small values because they are important in localization and mapping, while the quantization parameters of slices of moving objects and other data are set to high values because the importance of moving objects and other data is low.
[0534] Furthermore, when using ΔQP (DeltaQP) described later, the three-dimensional data encoding device may perform encoding so as to reduce the quantization error by setting a negative value to the value of ΔQP in order to reduce the quantization parameter when encoding three-dimensional points belonging to important areas such as main roads. This allows the attribute values after decoding of three-dimensional points belonging to important areas to approach the values before encoding. Furthermore, the three-dimensional data encoding device may reduce the amount of information by setting a positive value to the value of ΔQP in order to increase the quantization parameter when encoding three-dimensional points belonging to unimportant areas such as peripheral areas. This allows the overall amount of code to be reduced while maintaining the amount of information in important areas.
[0535] An example of information indicating the quantization parameter for each layer will be described below. When quantizing and encoding attribute information of a three-dimensional point, in addition to the quantization parameter QPbase for a frame, slice, or tile, a mechanism for controlling the quantization parameter in finer units is introduced. For example, when encoding attribute information using LoD, a three-dimensional data encoding device provides Delta_Layer for each LoD and performs encoding while changing the value of the quantization parameter by adding Delta_Layer to the value of QPbase for each LoD. In addition, the three-dimensional data encoding device adds Delta_Layer used for encoding to the header of the bit stream, etc. As a result, the three-dimensional data encoding device can encode the attribute information of a three-dimensional point while changing the quantization parameter for each LoD according to, for example, the target code amount and the generated code amount, so that a bit stream with a code amount close to the target code amount can be generated. In addition, the three-dimensional data decoding device can appropriately decode the bit stream by decoding QPbase and Delta_Layer included in the header to generate the quantization parameter used by the three-dimensional data encoding device.
[0536] FIG. 74 is a diagram showing an example of a case where attribute information of all three-dimensional points is coded using a quantization parameter QPbase. FIG. 75 is a diagram showing an example of a case where coding is performed by switching the quantization parameter for each LoD layer. In the example shown in FIG. 75, the quantization parameter of the first LoD is calculated by adding the Delta_Layer of the first LoD to the QPbase. In the second and subsequent LoDs, the quantization parameter of the LoD to be processed is calculated by adding the Delta_Layer of the LoD to the quantization parameter of the immediately preceding LoD. For example, the first quantization parameter QP3 of LoD3 is calculated as QP3=QP2+Delta_Layer[3].
[0537] In addition, Delta_Layer[i] of each LoD may indicate a difference value from QPbase. In other words, the quantization parameter QPi of the i-th LoDi is expressed as QPi=QPbase+Delta_Layer[i]. For example, QP1 is expressed as QPbase+Delta_Layer[1], and QP2 is expressed as QPbase+Delta_Layer[2].
[0538] Fig. 76 is a diagram showing an example of the syntax of an attribute information header. Here, the attribute information header is, for example, a header for each frame, slice, or tile, and is a header of attribute information. As shown in Fig. 76, the attribute information header includes QPbase (base quantization parameter), NumLayer (number of layers), and Delta_Layer[i] (differential quantization parameter).
[0539] QPbase indicates a reference quantization parameter value in a frame, slice, tile, etc. NumLayer indicates the number of layers of LoD or RAHT. In other words, NumLayer indicates the number of Delta_Layer[i] included in the attribute information header.
[0540] Delta_Layer[i] indicates the value of ΔQP of layer i. Here, ΔQP is the value obtained by subtracting the quantization parameter of layer i from the quantization parameter of layer i-1. Note that ΔQP may be the value obtained by subtracting the quantization parameter of layer i from QPbase. Also, ΔQP may take a positive or negative value. Note that Delta_Layer[0] does not need to be added to the header. In this case, the quantization parameter of layer 0 is equal to QPbase. This allows the header code amount to be reduced.
[0541] Fig. 77 is a diagram illustrating another example of the syntax of the attribute header information. The attribute header illustrated in Fig. 77 further includes delta_Layer_present_flag in addition to the attribute header illustrated in Fig. 76.
[0542] The delta_Layer_present_flag is a flag indicating whether or not the Delta_Layer is included in the bitstream. For example, a value of 1 indicates that the Delta_Layer is included in the bitstream, and a value of 0 indicates that the Delta_Layer is not included in the bitstream. When the delta_Layer_present_flag is 0, the three-dimensional data decoding device performs the subsequent decoding process with the Delta_Layer set to 0, for example.
[0543] Although an example in which the quantization parameter is indicated by QPbase and Delta_Layer has been described here, the quantization step may be indicated by QPbase and Delta_Layer. The quantization step is calculated from the quantization parameter by using a predetermined formula or table. The three-dimensional data encoding device divides the coefficient value by the quantization step in the quantization process. The three-dimensional data decoding device restores the coefficient value by multiplying the quantization value by the quantization step in the inverse quantization process.
[0544] Next, an example of controlling the quantization parameter in a finer unit will be described. Fig. 78 is a diagram showing an example of controlling the quantization parameter in a finer unit than the LoD.
[0545] For example, when the three-dimensional data encoding device encodes attribute information using LoD, in addition to Delta_Layer for each LoD layer, it defines ADelta_QP and NumPointADelta, which represents the position information of the three-dimensional point to which ADelta_QP is added. The three-dimensional data encoding device performs encoding while changing the value of the quantization parameter based on Delta_Layer, ADelta_QP, and NumPointADelta.
[0546] Furthermore, the three-dimensional data encoding device may add ADelta and NumPointADelta used in the encoding to the header of the bitstream, etc. This allows the three-dimensional data encoding device to encode attribute information of multiple three-dimensional points while changing the quantization parameter for each three-dimensional point according to the target code amount and the generated code amount, for example. This allows the three-dimensional data encoding device to ultimately generate a bitstream with a code amount close to the target code amount. Furthermore, the three-dimensional data decoding device can appropriately decode the bitstream by decoding QPbase, Delta_Layer, and ADelta included in the header to generate the quantization parameter used by the three-dimensional data encoding device.
[0547] For example, as shown in FIG. 78, the quantized value QP4 of the N0th attribute information is calculated as QP4=QP3+ADelta_QP[0].
[0548] Also, the encoding / decoding order may be reversed from the encoding / decoding order shown in Fig. 78. For example, encoding / decoding may be performed in the order of LoD3, LoD2, LoD1, and LoD0.
[0549] Fig. 79 is a diagram showing an example of the syntax of the attribute header information when using the example shown in Fig. 78. The attribute information header shown in Fig. 79 further includes NumADelta, NumPointADelta[i], and ADelta_QP[i] in addition to the attribute information header shown in Fig. 76.
[0550] NumADelta indicates the number of ADelta_QP included in the bitstream. NumPointADelta[i] indicates the identification number of 3D point A to which ADelta_QP[i] is applied. For example, NumPointADelta[i] indicates the number of 3D points from the first 3D point to 3D point A in the encoding / decoding order. NumPointADelta[i] may also indicate the number of 3D points from the first 3D point to 3D point A in the LoD to which 3D point A belongs.
[0551] Alternatively, NumPointADelta[i] may indicate the difference between the identification number of the 3D point indicated by NumPointADelta[i-1] and the identification number of the 3D point A. This allows the value of NumPointADelta[i] to be small, thereby reducing the amount of code.
[0552] ADelta_QP[i] indicates the value of ΔQP of the 3D point indicated by NumPointADelta[i]. In other words, ADelta_QP[i] indicates the difference between the quantization parameter of the 3D point indicated by NumPointADelta[i] and the quantization parameter of the 3D point immediately preceding the 3D point.
[0553] Fig. 80 is a diagram showing another syntax example of the attribute header information when using the example shown in Fig. 78. The attribute information header shown in Fig. 80 further includes delta_Layer_present_flag and additional_delta_QP_present_flag in addition to the attribute information header shown in Fig. 79, and includes NumADelta_minus1 instead of NumADelta.
[0554] The delta_Layer_present_flag is the same as that already explained with reference to FIG.
[0555] The additional_delta_QP_present_flag is a flag indicating whether or not ADelta_QP is included in the bitstream. For example, a value of 1 indicates that ADelta_QP is included in the bitstream, and a value of 0 indicates that ADelta_QP is not included in the bitstream. When the additional_delta_QP_present_flag is 0, the three-dimensional data decoding device performs the subsequent decoding process with ADelta_QP set to 0, for example.
[0556] NumADelta_minus1 indicates the number of ADelta_QP included in the bitstream minus 1. In this way, the amount of header code can be reduced by adding a value obtained by subtracting 1 from the number of ADelta_QP to the header. For example, the three-dimensional data decoding device calculates NumADelta=NumADelta_minus1+1. ADelta_QP[i] indicates the value of the i-th ADelta_QP. Note that not only positive values but also negative values may be set to ADelta_QP[i].
[0557] 81 is a flowchart of a three-dimensional data encoding process according to this embodiment. First, the three-dimensional data encoding device encodes position information (geometry) (S7001). For example, the three-dimensional data encoding device performs encoding using an octree representation.
[0558] Next, the three-dimensional data encoding device converts the attribute information (S7002). For example, when the position of the three-dimensional point changes due to quantization or the like after encoding the position information, the three-dimensional data encoding device reallocates the attribute information of the original three-dimensional point to the changed three-dimensional point. The three-dimensional data encoding device may perform reallocation by interpolating the value of the attribute information according to the amount of change in the position. For example, the three-dimensional data encoding device detects N three-dimensional points before the change that are close to the changed three-dimensional position, and weights and averages the values of the attribute information of the N three-dimensional points based on the distance from the changed three-dimensional position to each of the N three-dimensional points, and determines the obtained value as the value of the attribute information of the changed three-dimensional point. Furthermore, when two or more three-dimensional points change to the same three-dimensional position due to quantization or the like, the three-dimensional data encoding device may assign the average value of the attribute information of the two or more three-dimensional points before the change as the value of the attribute information after the change.
[0559] Next, the three-dimensional data encoding device encodes the attribute information (S7003). For example, when encoding multiple pieces of attribute information, the three-dimensional data encoding device may encode the multiple pieces of attribute information in order. For example, when encoding color and reflectance as attribute information, the three-dimensional data encoding device generates a bitstream in which the encoding result of reflectance is added after the encoding result of color. Note that the encoding results of the multiple pieces of attribute information added to the bitstream may be in any order.
[0560] Furthermore, the three-dimensional data encoding device may add information indicating the start location of the encoded data of each piece of attribute information in the bit stream to a header or the like. This allows the three-dimensional data decoding device to selectively decode attribute information that needs to be decoded, and therefore omits the decoding process of attribute information that does not need to be decoded. This reduces the amount of processing by the three-dimensional data decoding device. Furthermore, the three-dimensional data encoding device may encode multiple pieces of attribute information in parallel and integrate the encoding results into one bit stream. This allows the three-dimensional data encoding device to encode multiple pieces of attribute information at high speed.
[0561] 82 is a flowchart of the attribute information encoding process (S7003). First, the three-dimensional data encoding device sets the LoD (S7011). That is, the three-dimensional data encoding device assigns each three-dimensional point to one of a plurality of LoDs.
[0562] Next, the three-dimensional data encoding device starts a loop for each LoD (S7012). That is, the three-dimensional data encoding device repeats the process of steps S7013 to S7021 for each LoD.
[0563] Next, the three-dimensional data encoding device starts a loop for each three-dimensional point (S7013). That is, the three-dimensional data encoding device repeatedly performs the processes of steps S7014 to S7020 for each three-dimensional point.
[0564] First, the three-dimensional data encoding device searches for a plurality of surrounding points, which are three-dimensional points existing around the target three-dimensional point, to be used in calculating a predicted value of the target three-dimensional point to be processed (S7014). Next, the three-dimensional data encoding device calculates a weighted average of the values of attribute information of the plurality of surrounding points, and sets the obtained value to the predicted value P (S7015). Next, the three-dimensional data encoding device calculates a prediction residual, which is a difference between the attribute information of the target three-dimensional point and the predicted value (S7016). Next, the three-dimensional data encoding device calculates a quantized value by quantizing the prediction residual (S7017). Next, the three-dimensional data encoding device arithmetically codes the quantized value (S7018). Next, the three-dimensional data encoding device determines ΔQP (S7019). The determined ΔQP is used to determine a quantization parameter to be used in the subsequent quantization of the prediction residual.
[0565] The three-dimensional data encoding device also calculates an inverse quantized value by inverse quantizing the quantized value (S7020). Next, the three-dimensional data encoding device generates a decoded value by adding a predicted value to the inverse quantized value (S7021). Next, the three-dimensional data encoding device ends the loop in three-dimensional point units (S7022). Furthermore, the three-dimensional data encoding device ends the loop in LoD units (S7023).
[0566] 83 is a flowchart of the ΔQP determination process (S7019). First, the 3D data encoding device calculates the layer i to which the target 3D point A to be next encoded belongs and the encoding order N (S7031). Layer i represents, for example, the LoD layer or the RAHT layer.
[0567] Next, the three-dimensional data encoding device adds the generated code amount to the cumulative code amount (S7032). Here, the cumulative code amount is the cumulative code amount for one frame, one slice, or one tile of the target three-dimensional point. Note that the cumulative code amount may be the cumulative code amount obtained by adding up the code amounts for multiple frames, multiple slices, or multiple tiles. In addition, the cumulative code amount of attribute information may be used, or the cumulative code amount obtained by adding up both position information and attribute information may be used.
[0568] Next, the three-dimensional data encoding device judges whether the cumulative code amount is greater than the target code amount×TH1 (S7033). Here, the target code amount is the target code amount for one frame, one slice, or one tile of the target three-dimensional point. The target code amount may be the target code amount obtained by adding up multiple frames, multiple slices, or multiple tiles. In addition, the target code amount of the attribute information may be used, or the target code amount obtained by adding up both the position information and the attribute information may be used.
[0569] If the cumulative code amount is equal to or less than the target code amount×TH1 (No in S7033), the three-dimensional data encoding device determines whether or not the cumulative code amount is greater than the target code amount×TH2 (S7036).
[0570] Here, the thresholds TH1 and TH2 are set to values ranging from 0.0 to 1.0, for example. Also, TH1>TH2. For example, when the accumulated code amount exceeds the value of the target code amount×TH1 (Yes in S7033), the three-dimensional data encoding device determines that it is necessary to suppress the code amount immediately, and sets ADelta_QP to a value α in order to increase the quantization parameter of the next three-dimensional point N. Also, the three-dimensional data encoding device sets NumPointADelta to a value N, and increments j by 1 (S7034). Next, the three-dimensional data encoding device adds ADelta_QP=α and NumPointADelta=N to the header (S7035). Note that the value α may be a fixed value or a variable value. For example, the three-dimensional data encoding device may determine the value of α according to the magnitude of the difference between the accumulated code amount and the target code amount×TH1. For example, the three-dimensional data encoding device sets the value of α to a larger value as the difference between the accumulated code amount and the target code amount×TH1 increases. This allows the three-dimensional data encoding device to control the quantization parameter so that the accumulated code amount does not exceed the target code amount.
[0571] Furthermore, if the cumulative code amount exceeds the value of the target code amount x TH2 (Yes in S7036), the three-dimensional data encoding device sets Delta_Layer to the value β in order to increase the quantization parameter of the layer i to which the target three-dimensional point A belongs or the next layer i+1 (S7037). For example, if the target three-dimensional point A is at the top of layer i, the three-dimensional data encoding device sets Delta_Layer[i] of layer i to the value β, and if the target three-dimensional point A is not at the top of layer i, sets Delta_Layer[i+1] of layer i+1 to the value β.
[0572] The three-dimensional data encoding device also adds Delta_Layer=β for layer i or layer i+1 to the header (S7038). The value β may be a fixed value or a variable value. For example, the three-dimensional data encoding device may determine the value of β based on the magnitude of the difference between the accumulated code amount and the target code amount×TH2. For example, the three-dimensional data encoding device sets the value of β to a larger value as the difference between the accumulated code amount and the target code amount×TH2 increases. This allows the three-dimensional data encoding device to control the quantization parameter so that the accumulated code amount does not exceed the target code amount.
[0573] Furthermore, when the accumulated code amount exceeds or is likely to exceed the target code amount, the three-dimensional data encoding device may set the value of ADelta_QP or Delta_Layer so that the quantization parameter becomes the maximum value supported by the standard, etc. In this way, the three-dimensional data encoding device can suppress an increase in the generated code amount by setting the quantization coefficients from three-dimensional point A onwards, or from layer i onwards, to 0, thereby controlling the accumulated code amount so as not to exceed the target code amount.
[0574] Furthermore, if the accumulated code amount is smaller than the target code amount×TH3, the three-dimensional data encoding device may lower the quantization parameter so that the generated code amount increases. For example, the three-dimensional data encoding device may lower the quantization parameter by setting a negative value for Delta_Layer or Adelta_QP according to the difference between the accumulated code amount and the target code amount. This allows the three-dimensional data encoding device to generate a bitstream close to the target code amount.
[0575] 84 is a flowchart of a three-dimensional data decoding process according to this embodiment. First, the three-dimensional data decoding device decodes position information (geometry) from the bit stream (S7005). For example, the three-dimensional data decoding device performs decoding using an octree representation.
[0576] Next, the three-dimensional data decoding device decodes the attribute information from the bit stream (S7006). For example, when decoding a plurality of pieces of attribute information, the three-dimensional data decoding device may decode the plurality of pieces of attribute information in order. For example, when decoding color and reflectance as attribute information, the three-dimensional data decoding device decodes the encoding result of color and the encoding result of reflectance in the order in which they are added to the bit stream. For example, when the encoding result of reflectance is added after the encoding result of color in the bit stream, the three-dimensional data decoding device decodes the encoding result of color, and then decodes th...
Claims
1. 1. An encoding method performed by an encoding device, comprising: generating a plurality of coefficient values belonging to any of a plurality of hierarchical levels; quantizing the plurality of coefficient values to generate a plurality of quantized values; generating a bitstream including information indicating a total number of a plurality of hierarchical layers for which hierarchical parameters are to be notified and the hierarchical parameters; In the quantization, deriving a quantization step using the layer parameter in quantizing coefficient values belonging to the layer to which the layer parameter is notified; In quantizing coefficient values belonging to a layer to which the layer parameters are not notified, a quantization step is derived using the layer parameters of the last layer to which the layer parameters are notified. Encoding method.
2. A decoding method performed by a decoding device, comprising: Acquire information indicating the total number of hierarchical layers for which hierarchical parameters are to be notified, and the hierarchical parameters; performing inverse quantization on the plurality of quantized values to generate a plurality of coefficient values; In the inverse quantization, deriving a quantization step using the layer parameter in inverse quantization of coefficient values belonging to the layer to which the layer parameter is notified; In the inverse quantization of coefficient values belonging to a layer to which the layer parameters are not notified, a quantization step is derived using the layer parameters of the last layer to which the layer parameters are notified. Decryption method.
3. A processor; A memory. The processor uses the memory to: generating a plurality of coefficient values belonging to any of a plurality of hierarchical levels; quantizing the plurality of coefficient values to generate a plurality of quantized values; generating a bitstream including information indicating a total number of a plurality of hierarchical layers for which hierarchical parameters are to be notified and the hierarchical parameters; In the quantization, deriving a quantization step using the layer parameter in quantizing coefficient values belonging to the layer to which the layer parameter is notified; In quantizing coefficient values belonging to a layer to which the layer parameters are not notified, a quantization step is derived using the layer parameters of the last layer to which the layer parameters are notified. Encoding device.
4. A processor; A memory. The processor uses the memory to: Acquire information indicating the total number of hierarchical layers for which hierarchical parameters are to be notified, and the hierarchical parameters; performing inverse quantization on the plurality of quantized values to generate a plurality of coefficient values; In the inverse quantization, deriving a quantization step using the layer parameter in inverse quantization of coefficient values belonging to the layer to which the layer parameter is notified; In the inverse quantization of coefficient values belonging to a layer to which the layer parameters are not notified, a quantization step is derived using the layer parameters of the last layer to which the layer parameters are notified. Decryption device.
Citation Information
Patent Citations
Coding method and apparatus for image signal
JP2006108792A
Image encoding device, image encoding method, and image encoding program
JP2017076979A
Data coding method, data coding device, and data coding program
JP2018078503A
Scalable point cloud compression with transform, and corresponding decompression
US20170347122A1
Three-dimensional data coding method, three-dimensional data decoding method, three-dimensional data coding device, and three-dimensional data decoding device
WO2017104115A1